WeeGUI/memory.s

174 lines
3.6 KiB
ArmAsm

;
; memory.s
; Memory mapping information
;
; Created by Quinn Dunki on 8/15/14.
; Copyright (c) 2014 One Girl, One Laptop Productions. All rights reserved.
;
; Constants
CHAR_NORMAL = $ff
CHAR_INVERSE = $3f
CHAR_FLASH = $7f
VIEW_STYLE_STEALTH = $00
VIEW_STYLE_PLAIN = $01
VIEW_STYLE_FANCY = $02
VIEW_STYLE_PROGRESS = $03
VIEW_STYLE_CHECK = $04
VIEW_STYLE_BUTTON = $05
VIEW_STYLE_RADIO = $06
VIEW_STYLE_TAKESFOCUS = $04 ; Styles >= this one are selectable
VIEW_STYLE_APPLESOFT = $80 ; High nybble flag bit for views created from Applesoft
VIEW_STYLE_RAWTITLE = $40 ; High nybble flag bit for views with raw titles
IRQVECTORL = $03fe
IRQVECTORH = $03ff
MEMBITMAP = $bf58 ; ProDOS 8 system memory allocation bitmap
; ROM entry points
COUT = $fded
BASCALC = $fbc1
PRBYTE = $fdda
RDKEY = $fd0c
BELL = $fbdd
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; System state
;
WG_CURSORX: ; In screenspace
.byte 0
WG_CURSORY:
.byte 0
WG_LOCALCURSORX: ; In current viewspace
.byte 0
WG_LOCALCURSORY:
.byte 0
WG_ACTIVEVIEW:
.byte 0
WG_FOCUSVIEW:
.byte 0
WG_PENDINGACTIONVIEW:
.byte 0
WG_GOSUB: ; Set if an Applesoft gosub was generated by a view action
.byte 0
WG_GOSUBLINE: ; Line number for the pending GOSUB
.byte 0,0
WG_VIEWCLIP:
; X0,Y0,X1,Y1. Edges of current window, in view space, right span
.byte 0,0,0,0,0
WG_VIEWRECORDS:
; 0 1 2 3 4 5 6 7 8 9 10 11 12 13
; X, Y, Screen Width, Screen Height, Style, X Offset, Y Offset, View Width, View Height, State, CallbackL, CallbackH, TitleL, TitleH
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
WG_STRINGS: ; Fixed-size block allocator for strings (view titles, mainly)
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
WG_SCRATCHA:
.byte 0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Lookup tables
;
; Video memory
TEXTLINES_H:
.byte $04 ;0
.byte $04 ;1
.byte $05 ;2
.byte $05 ;3
.byte $06 ;4
.byte $06 ;5
.byte $07 ;6
.byte $07 ;7
.byte $04 ;8
.byte $04 ;9
.byte $05 ;10
.byte $05 ;11
.byte $06 ;12
.byte $06 ;13
.byte $07 ;14
.byte $07 ;15
.byte $04 ;16
.byte $04 ;17
.byte $05 ;18
.byte $05 ;19
.byte $06 ;20
.byte $06 ;21
.byte $07 ;22
.byte $07 ;23
TEXTLINES_L:
.byte $00 ;0
.byte $80 ;1
.byte $00 ;2
.byte $80 ;3
.byte $00 ;4
.byte $80 ;5
.byte $00 ;6
.byte $80 ;7
.byte $28 ;8
.byte $a8 ;9
.byte $28 ;10
.byte $a8 ;11
.byte $28 ;12
.byte $a8 ;13
.byte $28 ;14
.byte $a8 ;15
.byte $50 ;16
.byte $d0 ;17
.byte $50 ;18
.byte $d0 ;19
.byte $50 ;20
.byte $d0 ;21
.byte $50 ;22
.byte $d0 ;23