MGTK: Start using structs

This commit is contained in:
Joshua Bell 2018-05-25 18:39:43 -07:00
parent 94e02e4a72
commit 8b3d056d7f
5 changed files with 68 additions and 52 deletions

View File

@ -1432,7 +1432,7 @@ base: .word 10 ; vertical text offset (to baseline)
jmp endif
else: MGTK_CALL MGTK::DrawText, prop_str
endif: ldx #MGTK::mapinfo_size - 1
endif: ldx #.sizeof(MGTK::MapInfo) - 1
loop: lda default_port,x
sta winfo::port,x
dex

View File

@ -2549,11 +2549,11 @@ L5464: lda active_window_id
lda active_window_id
jsr window_lookup
stax $06
ldy #MGTK::winfo_offset_port+MGTK::grafport_offset_maprect
ldy #MGTK::winfo_offset_port+MGTK::GrafPort::maprect
L5479: lda ($06),y
sta rect_E230-(MGTK::winfo_offset_port+MGTK::grafport_offset_maprect),y
sta rect_E230-(MGTK::winfo_offset_port+MGTK::GrafPort::maprect),y
iny
cpy #MGTK::winfo_offset_port+MGTK::grafport_offset_maprect+8
cpy #MGTK::winfo_offset_port+MGTK::GrafPort::maprect+8
bne L5479
ldx #$00
L5485: cpx cached_window_icon_count
@ -4002,21 +4002,21 @@ L6112: ldy #$14
lda ($06),y
sec
sbc port_copy+MGTK::grafport_offset_viewloc_xcoord
sbc port_copy+MGTK::GrafPort::viewloc+MGTK::Point::xcoord
sta L6197
iny
lda ($06),y
sbc port_copy+MGTK::grafport_offset_viewloc_xcoord+1
sbc port_copy+MGTK::GrafPort::viewloc+MGTK::Point::xcoord+1
sta L6197+1
iny
lda ($06),y
sec
sbc port_copy+MGTK::grafport_offset_viewloc_ycoord
sbc port_copy+MGTK::GrafPort::viewloc+MGTK::Point::ycoord
sta L6199
iny
lda ($06),y
sbc port_copy+MGTK::grafport_offset_viewloc_ycoord+1
sbc port_copy+MGTK::GrafPort::viewloc+MGTK::Point::ycoord+1
sta L6199+1
ldx active_window_id
@ -4394,7 +4394,7 @@ L650D: .word 0
lda active_window_id
jsr window_lookup
stax ptr
ldy #MGTK::winfo_offset_port + MGTK::grafport_offset_maprect + 7
ldy #MGTK::winfo_offset_port + MGTK::GrafPort::maprect + 7
ldx #7
: lda grafport2::cliprect,x
sta (ptr),y
@ -8216,7 +8216,7 @@ addr: .addr 0
;;; ============================================================
port_copy:
.res MGTK::grafport_size+1
.res .sizeof(MGTK::GrafPort)+1
.proc copy_window_portbits
ptr := $6
@ -8232,7 +8232,7 @@ port_copy:
sta port_copy,x
iny
inx
cpx #MGTK::grafport_size
cpx #.sizeof(MGTK::GrafPort)
bne :-
jsr pop_zp_addrs
rts
@ -8252,7 +8252,7 @@ port_copy:
sta (ptr),y
iny
inx
cpx #MGTK::grafport_size
cpx #.sizeof(MGTK::GrafPort)
bne :-
jsr pop_zp_addrs
rts
@ -8277,7 +8277,7 @@ port_copy:
stax winfo_ptr
;; Screen space
ldy #MGTK::winfo_offset_port + MGTK::grafport_offset_viewloc + 3
ldy #MGTK::winfo_offset_port + MGTK::GrafPort::viewloc + 3
ldx #3
: lda (winfo_ptr),y
sta pos_screen,x
@ -8286,7 +8286,7 @@ port_copy:
bpl :-
;; Window space
ldy #MGTK::winfo_offset_port + MGTK::grafport_offset_maprect + 3
ldy #MGTK::winfo_offset_port + MGTK::GrafPort::maprect + 3
ldx #3
: lda (winfo_ptr),y
sta pos_win,x
@ -8370,7 +8370,7 @@ pos_win: .word 0, 0
jsr window_lookup
stax winfo_ptr
ldy #MGTK::winfo_offset_port + MGTK::grafport_offset_viewloc + 3
ldy #MGTK::winfo_offset_port + MGTK::GrafPort::viewloc + 3
ldx #3
: lda (winfo_ptr),y
sta pos_screen,x
@ -8378,7 +8378,7 @@ pos_win: .word 0, 0
dex
bpl :-
ldy #MGTK::winfo_offset_port + MGTK::grafport_offset_maprect + 3
ldy #MGTK::winfo_offset_port + MGTK::GrafPort::maprect + 3
ldx #3
: lda (winfo_ptr),y
sta pos_win,x

View File

@ -236,7 +236,7 @@ rts2: rts
;;; Copy port params (36 bytes) to/from active port addr
.proc apply_active_port_to_port
ldy #MGTK::grafport_size-1
ldy #.sizeof(MGTK::GrafPort)-1
: lda (active_port),y
sta current_grafport,y
dey
@ -245,7 +245,7 @@ rts2: rts
.endproc
.proc apply_port_to_active_port
ldy #MGTK::grafport_size-1
ldy #.sizeof(MGTK::GrafPort)-1
: lda current_grafport,y
sta (active_port),y
dey
@ -3758,7 +3758,7 @@ poly_maxima_xh_table:
jsr SetSwitchesImpl
;; Initialize port
ldx #MGTK::grafport_size-1
ldx #.sizeof(MGTK::GrafPort)-1
loop: lda standard_port,x
sta $8A,x
sta current_grafport,x
@ -3864,7 +3864,7 @@ store_xa_at_y:
;;; InitPort
.proc InitPortImpl
ldy #MGTK::grafport_size-1 ; Store 36 bytes at params
ldy #.sizeof(MGTK::GrafPort)-1 ; Store 36 bytes at params
loop: lda standard_port,y
sta (params_addr),y
dey
@ -4938,7 +4938,7 @@ stack_ptr_save:
lda stack_ptr_save
sta stack_ptr_stash
ldy #MGTK::grafport_size-1
ldy #.sizeof(MGTK::GrafPort)-1
: lda ($82),y
sta current_grafport,y
dey
@ -6913,7 +6913,7 @@ get_from_ax:
bpl :-
; copy first 16 bytes of grafport to $B7
ldy #MGTK::winfo_offset_port + MGTK::grafport_offset_pattern-1
ldy #MGTK::winfo_offset_port + MGTK::GrafPort::pattern-1
: lda (window),y
sta current_winport - MGTK::winfo_offset_port,y
dey
@ -7712,7 +7712,7 @@ previous_port:
.res 2
update_port:
.res MGTK::grafport_size
.res .sizeof(MGTK::GrafPort)
.proc BeginUpdateImpl
jsr window_by_id_or_exit
@ -7794,7 +7794,7 @@ win_port: .addr 0
jsr prepare_winport
bcc err_obscured
ldy #MGTK::grafport_size-1
ldy #.sizeof(MGTK::GrafPort)-1
: lda current_grafport,y
sta (params_addr),y
dey
@ -7824,7 +7824,7 @@ win_port: .addr 0
: lda (window),y
sta current_grafport - MGTK::winfo_offset_port,y
iny
cpy #MGTK::winfo_offset_port + MGTK::grafport_size
cpy #MGTK::winfo_offset_port + .sizeof(MGTK::GrafPort)
bne :-
ldx #2
@ -7887,7 +7887,7 @@ win_port: .addr 0
bcc :+
inc ptr+1
: ldy #MGTK::grafport_size-1
: ldy #.sizeof(MGTK::GrafPort)-1
loop: lda ($82),y
sta (ptr),y
dey
@ -10047,7 +10047,7 @@ out_of_boundsl:
not_left:
sta set_input_key
ldx #MGTK::grafport_size-1
ldx #.sizeof(MGTK::GrafPort)-1
: lda $A7,x
sta $0600,x
dex
@ -10057,7 +10057,7 @@ not_left:
jsr kbd_menu_by_shortcut
php
ldx #MGTK::grafport_size-1
ldx #.sizeof(MGTK::GrafPort)-1
: lda $0600,x
sta $A7,x
dex

View File

@ -182,14 +182,14 @@ LD134: .byte 0
.byte 0
.byte 0
grafport: .res MGTK::grafport_size, 0
grafport: .res .sizeof(MGTK::GrafPort), 0
.proc getwinport_params
window_id: .byte 0
port: .addr grafport_win
.endproc
grafport_win: .res MGTK::grafport_size, 0
grafport_win: .res .sizeof(MGTK::GrafPort), 0
asl $EA
.byte 0

View File

@ -571,29 +571,45 @@ inpoly_outside := $00
;;; ============================================================
;;; Offsets
mapinfo_offset_viewloc := 0
mapinfo_offset_viewloc_xcoord := 0
mapinfo_offset_viewloc_ycoord := 2
mapinfo_offset_mapbits := 4
mapinfo_offset_mapwidth := 6
mapinfo_offset_maprect := 8
mapinfo_size := 16
.struct Point
xcoord .word
ycoord .word
.endstruct
grafport_offset_viewloc := 0
grafport_offset_viewloc_xcoord := 0
grafport_offset_viewloc_ycoord := 2
grafport_offset_mapbits := 4
grafport_offset_mapwidth := 6
grafport_offset_maprect := 8
grafport_offset_pattern := 16
grafport_offset_colormasks := 24
grafport_offset_penloc := 26
grafport_offset_penwidth := 30
grafport_offset_penheight := 31
grafport_offset_penmode := 32
grafport_offset_textback := 33
grafport_offset_textfont := 34
grafport_size := 36
.struct Rect
x1 .word
y1 .word
x2 .word
y2 .word
.endstruct
.struct Pattern
bits .res 8
.endstruct
.struct MapInfo
viewloc .tag Point
mapbits .word
mapwidth .byte
reserved .byte
maprect .tag Rect
.endstruct
.struct GrafPort
viewloc .tag Point
mapbits .addr
mapwidth .byte
reserved .byte
maprect .tag Rect
pattern .tag Pattern
colormasks .byte 2
penloc .tag Point
penwidth .byte
penheight .byte
penmode .byte
textback .byte
textfont .addr
.endstruct
winfo_offset_window_id := 0
winfo_offset_options := 1