mirror of
https://github.com/cc65/cc65.git
synced 2024-08-17 03:29:15 +00:00
Certain scenarios (e.g. not running any Applesoft program at all since booting DOS 3.3) can make DOS 3.3 consider cc65 device input (e.g. getchar()) that reads a CR interpreting the command in the keyboard buffer. Setting the hibyte of the Applesoft currently executed line number to some value <> $FF (beside setting the input prompt to some value <> ']') makes DOS 3.3 understand that we're not in intermediate mode and that therefore I/O not preceded with ctrl-d mustn't be fiddled with (see DOS 3.3 routine at $A65E).
88 lines
3.2 KiB
PHP
88 lines
3.2 KiB
PHP
|
|
;-----------------------------------------------------------------------------
|
|
; Zero page
|
|
|
|
WNDLFT := $20 ; Text window left
|
|
WNDWDTH := $21 ; Text window width
|
|
WNDTOP := $22 ; Text window top
|
|
WNDBTM := $23 ; Text window bottom+1
|
|
CH := $24 ; Cursor horizontal position
|
|
CV := $25 ; Cursor vertical position
|
|
BASL := $28 ; Text base address low
|
|
BASH := $29 ; Text base address high
|
|
INVFLG := $32 ; Normal/inverse(/flash)
|
|
PROMPT := $33 ; Used by GETLN
|
|
RNDL := $4E ; Random counter low
|
|
RNDH := $4F ; Random counter high
|
|
HIMEM := $73 ; Highest available memory address+1
|
|
CURLIN := $75 ; Current line number being executed
|
|
|
|
;-----------------------------------------------------------------------------
|
|
; Vectors
|
|
|
|
DOSWARM := $03D0 ; DOS warmstart vector
|
|
BRKVec := $03F0 ; Break vector
|
|
SOFTEV := $03F2 ; Vector for warm start
|
|
PWREDUP := $03F4 ; This must be = EOR #$A5 of SOFTEV+1
|
|
|
|
;-----------------------------------------------------------------------------
|
|
; Hardware
|
|
|
|
; Keyboard input
|
|
KBD := $C000 ; Read keyboard
|
|
KBDSTRB := $C010 ; Clear keyboard strobe
|
|
|
|
; 80 column video
|
|
CLR80COL:= $C000 ; Disable 80 column store
|
|
SET80COL:= $C001 ; Enable 80 column store
|
|
RD80COL := $C018 ; >127 if 80 column store enabled
|
|
RD80VID := $C01F ; >127 if 80 column video enabled
|
|
|
|
; Character set
|
|
CLRALTCHAR := $C00E ; Normal Apple II char set
|
|
SETALTCHAR := $C00F ; Norm/inv LC, no flash
|
|
ALTCHARSET := $C01E ; >127 if alt charset switched in
|
|
|
|
; Language card
|
|
RDLCBNK2:= $C011 ; >127 if LC bank 2 in use
|
|
RDLCRAM := $C012 ; >127 if LC is read enabled
|
|
ROMIN := $C081 ; Swap in D000-FFFF ROM
|
|
LCBANK2 := $C083 ; Swap in LC bank 2
|
|
LCBANK1 := $C08B ; Swap in LC bank 1
|
|
|
|
; Vertical blanking
|
|
RDVBLBAR := $C019 ; >127 if not vertical blanking
|
|
RDVBLMSK := $C041 ; >127 if VBL interrupts enabled
|
|
DISVBL := $C05A ; Disable VBL interrupts
|
|
ENVBL := $C05B ; Enable VBL interrupts
|
|
|
|
; Video mode
|
|
TXTCLR := $C050 ; Display graphics
|
|
TXTSET := $C051 ; Display text
|
|
MIXCLR := $C052 ; Disable 4 lines of text
|
|
MIXSET := $C053 ; Enable 4 lines of text
|
|
LOWSCR := $C054 ; Page 1
|
|
HISCR := $C055 ; Page 2
|
|
LORES := $C056 ; Lores graphics
|
|
HIRES := $C057 ; Hires graphics
|
|
DHIRESON := $C05E ; Enable double-width graphics
|
|
DHIRESOFF := $C05F ; Disable double-width graphics
|
|
|
|
; Game controller
|
|
TAPEIN := $C060 ; Read casette input / Switch input 3
|
|
BUTN0 := $C061 ; Switch input 0 / Open-Apple key
|
|
BUTN1 := $C062 ; Switch input 1 / Closed-Apple key
|
|
BUTN2 := $C063 ; Switch input 2 / Shift key
|
|
PADDL0 := $C064 ; Analog input 0
|
|
PADDL1 := $C065 ; Analog input 1
|
|
PADDL2 := $C066 ; Analog input 2
|
|
PADDL3 := $C067 ; Analog input 3
|
|
PTRIG := $C070 ; Analog input reset
|
|
|
|
; Input/Output Unit
|
|
IOUDISON := $C07E ; Disable IOU
|
|
IOUDISOFF := $C07F ; Enable IOU
|
|
|
|
; Control Your Apple
|
|
CYAREG := $C036 ; Bits 0-3=disk detect 4=shadow all banks 7=fast
|