mirror of
https://github.com/bobbimanners/Applecorn.git
synced 2025-01-16 01:31:08 +00:00
Merge pull request #216 from jgharston/main
Moved soft key stuff to CHARIO.
This commit is contained in:
commit
b06ff0d5f1
221
auxmem.chario.s
221
auxmem.chario.s
@ -54,79 +54,13 @@ FXESCEFFECT EQU BYTEVARBASE+230
|
|||||||
FX200VAR EQU BYTEVARBASE+200
|
FX200VAR EQU BYTEVARBASE+200
|
||||||
FXSOFTLEN EQU BYTEVARBASE+216
|
FXSOFTLEN EQU BYTEVARBASE+216
|
||||||
FXSOFTOK EQU BYTEVARBASE+244
|
FXSOFTOK EQU BYTEVARBASE+244
|
||||||
|
SOFTKEYOFF EQU $03FF ; *TEMP*
|
||||||
|
|
||||||
FX254VAR EQU BYTEVARBASE+254
|
FX254VAR EQU BYTEVARBASE+254
|
||||||
FX2VAR EQU BYTEVARBASE+$B1
|
FX2VAR EQU BYTEVARBASE+$B1
|
||||||
FX3VAR EQU BYTEVARBASE+$EC
|
FX3VAR EQU BYTEVARBASE+$EC
|
||||||
FX4VAR EQU BYTEVARBASE+$ED
|
FX4VAR EQU BYTEVARBASE+$ED
|
||||||
|
|
||||||
KEYBUF EQU $400 ; *KEY buffer from $400-$7FF
|
|
||||||
; Beware of the screen holes!
|
|
||||||
KEYBUFFREE EQU KEYBUF + $20 ; Free space word
|
|
||||||
|
|
||||||
* *KEY <num> <GSTRANS string>
|
|
||||||
* ---------------------------
|
|
||||||
STARKEY LDA FXSOFTLEN
|
|
||||||
BNE ERRKEYUSED ; Key being expanded
|
|
||||||
JSR SCANDEC
|
|
||||||
CMP #$10
|
|
||||||
BCC STARKEY1
|
|
||||||
ERRBADKEY BRK
|
|
||||||
DB $FB
|
|
||||||
ASC 'Bad key'
|
|
||||||
ERRKEYUSED BRK
|
|
||||||
DB $FA
|
|
||||||
ASC 'Key in use'
|
|
||||||
BRK
|
|
||||||
STARKEY1 ASL A ; Key num * 2
|
|
||||||
PHA ; Preserve for later
|
|
||||||
JSR SKIPCOMMA
|
|
||||||
LDA KEYBUFFREE+0 ; Free space LS byte
|
|
||||||
STA OSTEXT+0
|
|
||||||
PLX ; Recover key num * 2
|
|
||||||
PHX
|
|
||||||
STA KEYBUF,X ; Store LS byte start address
|
|
||||||
LDA KEYBUFFREE+1 ; Free space MS byte
|
|
||||||
STA OSTEXT+1
|
|
||||||
PLX ; Recover key num * 2
|
|
||||||
STA KEYBUF+1,X ; Store MS byte start address
|
|
||||||
:L1 LDA (OSLPTR),Y ; Read char from input
|
|
||||||
STA (OSTEXT) ; Store in buffer
|
|
||||||
PHA
|
|
||||||
INY ; Advance source index
|
|
||||||
JSR INCKEYPTR ; Advance dest pointer
|
|
||||||
PLA
|
|
||||||
CMP #$0D ; Carriage return?
|
|
||||||
BNE :L1
|
|
||||||
:S1 LDA OSTEXT+0
|
|
||||||
STA KEYBUFFREE+0 ; Free space LS byte
|
|
||||||
LDA OSTEXT+1
|
|
||||||
STA KEYBUFFREE+1 ; Free space MS byte
|
|
||||||
RTS
|
|
||||||
|
|
||||||
|
|
||||||
* Increment OSTEXT, skipping over screen holes
|
|
||||||
* Screen holes are $478-$47F, $4F8-$4FF
|
|
||||||
* $578-$57F, $5F8-$5FF
|
|
||||||
* $678-$67F, $6F8-$6FF
|
|
||||||
* $778-$77F, $7F8-$7FF
|
|
||||||
INCKEYPTR LDA OSTEXT+0 ; Least significant byte
|
|
||||||
INC A
|
|
||||||
STA OSTEXT+0
|
|
||||||
AND #$F8
|
|
||||||
CMP #$78 ; If $78 to $7F
|
|
||||||
BEQ :HOLE78
|
|
||||||
CMP #$F8 ; If $F8 to $FF
|
|
||||||
BEQ :HOLEF8
|
|
||||||
RTS
|
|
||||||
:HOLE78 LDA #$80
|
|
||||||
STA OSTEXT+0
|
|
||||||
RTS
|
|
||||||
:HOLEF8 STZ OSTEXT+0
|
|
||||||
INC OSTEXT+1
|
|
||||||
RTS
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
* OSWRCH handler
|
* OSWRCH handler
|
||||||
****************
|
****************
|
||||||
@ -181,6 +115,7 @@ KBDINIT LDX #DEFBYTEEND-DEFBYTE-1
|
|||||||
STA BYTEVARBASE+DEFBYTELOW,X
|
STA BYTEVARBASE+DEFBYTELOW,X
|
||||||
DEX
|
DEX
|
||||||
BPL :KBDINITLP
|
BPL :KBDINITLP
|
||||||
|
JSR SOFTKEYCHK ; Clear soft keys
|
||||||
LDX #$C0
|
LDX #$C0
|
||||||
STX FX254VAR ; b7-b4=default KBD map, b3-b0=default MODE
|
STX FX254VAR ; b7-b4=default KBD map, b3-b0=default MODE
|
||||||
BIT SETV ; Set V
|
BIT SETV ; Set V
|
||||||
@ -327,6 +262,149 @@ NEGCALL >>> XF2MAIN,MACHRD ; Try to read Machine ID
|
|||||||
* KERNEL/KEYBOARD.S
|
* KERNEL/KEYBOARD.S
|
||||||
*******************
|
*******************
|
||||||
|
|
||||||
|
|
||||||
|
* SOFT KEY PROCESSING
|
||||||
|
=====================
|
||||||
|
|
||||||
|
* *KEY <num> <GSTRANS string>
|
||||||
|
* ---------------------------
|
||||||
|
STARKEY LDA FXSOFTLEN
|
||||||
|
BNE ERRKEYUSED ; Key being expanded
|
||||||
|
JSR SCANDEC
|
||||||
|
CMP #$10
|
||||||
|
BCC STARKEY1
|
||||||
|
ERRBADKEY BRK
|
||||||
|
DB $FB
|
||||||
|
ASC 'Bad key'
|
||||||
|
ERRKEYUSED BRK
|
||||||
|
DB $FA
|
||||||
|
ASC 'Key in use'
|
||||||
|
BRK
|
||||||
|
* A slightly fiddly procedure, as we need to check the new
|
||||||
|
* definition is valid before we insert it, we can't bomb
|
||||||
|
* out halfway through inserting a string, and we mustn't
|
||||||
|
* have mainmem paged in while parsing the string as the
|
||||||
|
* string might be "underneath" the memory we've paged in,
|
||||||
|
* we don't know how long the new definition is and if
|
||||||
|
* it will fit into memory until after we've parsed it, so
|
||||||
|
* we either have to store it to a temp area or parse it
|
||||||
|
* twice.
|
||||||
|
*
|
||||||
|
* All this, and we need a structure that is reasonably coded,
|
||||||
|
* but with the priority to be easy for KEYREAD to extract
|
||||||
|
* from (as called more often), even if at expense of storing
|
||||||
|
* being more complex.
|
||||||
|
*
|
||||||
|
* Optimisations:
|
||||||
|
* BBC doesn't care if the new definition is valid, it removes
|
||||||
|
* the current definition before parsing, so a parse error
|
||||||
|
* results in the definition being cleared.
|
||||||
|
* eg *KEY 1 HELLO, *KEY 1 "X gives Bad string and key 1=""
|
||||||
|
*
|
||||||
|
* BBC uses (simplified):
|
||||||
|
* SOFTBUF+key+0 -> start of definition
|
||||||
|
* SOFTBUF+key+1 -> after last byte of definition
|
||||||
|
* SOFTBUF+16 -> free space after end of last definition
|
||||||
|
* definitions stored in order of creation
|
||||||
|
*
|
||||||
|
* Master uses:
|
||||||
|
* SOFTBUF+key -> lo.start of definition
|
||||||
|
* SOFTBUF+key+17 -> hi.start of definition
|
||||||
|
* SOFTBUF+key+1 -> lo.after last byte definition
|
||||||
|
* SOFTBUF+key+18 -> hi.after last byte definition
|
||||||
|
* SOFTBUF+16/33 -> free space after last byte last definition
|
||||||
|
* definitions stored in key order
|
||||||
|
*
|
||||||
|
* Bobbi's initial layout:
|
||||||
|
* 00/01 - 1E/1F -> pointers to start of each string
|
||||||
|
* 20/21 -> pointer to end of all strings
|
||||||
|
*
|
||||||
|
* Bobbi's initial scheme:
|
||||||
|
KEYBUF EQU $400 ; *KEY buffer from $400-$7FF
|
||||||
|
; Beware of the screen holes!
|
||||||
|
KEYBUFFREE EQU KEYBUF + $20 ; Free space word
|
||||||
|
|
||||||
|
STARKEY1
|
||||||
|
ASL A ; Key num * 2
|
||||||
|
PHA ; Preserve for later
|
||||||
|
JSR SKIPCOMMA
|
||||||
|
LDA KEYBUFFREE+0 ; Free space LS byte
|
||||||
|
STA OSTEXT+0
|
||||||
|
PLX ; Recover key num * 2
|
||||||
|
PHX
|
||||||
|
STA KEYBUF,X ; Store LS byte start address
|
||||||
|
LDA KEYBUFFREE+1 ; Free space MS byte
|
||||||
|
STA OSTEXT+1
|
||||||
|
PLX ; Recover key num * 2
|
||||||
|
STA KEYBUF+1,X ; Store MS byte start address
|
||||||
|
:L1 LDA (OSLPTR),Y ; Read char from input
|
||||||
|
STA (OSTEXT) ; Store in buffer
|
||||||
|
PHA
|
||||||
|
INY ; Advance source index
|
||||||
|
JSR INCKEYPTR ; Advance dest pointer
|
||||||
|
PLA
|
||||||
|
CMP #$0D ; Carriage return?
|
||||||
|
BNE :L1
|
||||||
|
:S1 LDA OSTEXT+0
|
||||||
|
STA KEYBUFFREE+0 ; Free space LS byte
|
||||||
|
LDA OSTEXT+1
|
||||||
|
STA KEYBUFFREE+1 ; Free space MS byte
|
||||||
|
RTS
|
||||||
|
|
||||||
|
|
||||||
|
* Increment OSTEXT, skipping over screen holes
|
||||||
|
* Screen holes are $478-$47F, $4F8-$4FF
|
||||||
|
* $578-$57F, $5F8-$5FF
|
||||||
|
* $678-$67F, $6F8-$6FF
|
||||||
|
* $778-$77F, $7F8-$7FF
|
||||||
|
INCKEYPTR LDA OSTEXT+0 ; Least significant byte
|
||||||
|
INC A
|
||||||
|
STA OSTEXT+0
|
||||||
|
AND #$F8
|
||||||
|
CMP #$78 ; If $78 to $7F
|
||||||
|
BEQ :HOLE78
|
||||||
|
CMP #$F8 ; If $F8 to $FF
|
||||||
|
BEQ :HOLEF8
|
||||||
|
RTS
|
||||||
|
:HOLE78 LDA #$80
|
||||||
|
STA OSTEXT+0
|
||||||
|
RTS
|
||||||
|
:HOLEF8 STZ OSTEXT+0
|
||||||
|
INC OSTEXT+1
|
||||||
|
RTS
|
||||||
|
|
||||||
|
* OSBYTE &12 - Clear soft keys
|
||||||
|
* ----------------------------
|
||||||
|
SOFTKEYCHK LDA FXSOFTOK
|
||||||
|
BEQ BYTE12OK ; Soft keys ok, exit
|
||||||
|
BYTE12 LDX #120 ; 120 bytes in each half page
|
||||||
|
STX FXSOFTOK ; Soft keys being updated
|
||||||
|
|
||||||
|
* Bobbi's initial scheme
|
||||||
|
PHP
|
||||||
|
SEI ; Prevent IRQs while writing
|
||||||
|
STZ WRMAINRAM ; Write to main mem
|
||||||
|
BYTE12LP STZ $0400-1,X ; Could be more efficient
|
||||||
|
STZ $0480-1,X
|
||||||
|
STZ $0500-1,X
|
||||||
|
STZ $0580-1,X
|
||||||
|
STZ $0600-1,X
|
||||||
|
STZ $0680-1,X
|
||||||
|
STZ $0700-1,X
|
||||||
|
STZ $0780-1,X
|
||||||
|
DEX
|
||||||
|
BNE BYTE12LP
|
||||||
|
LDA #<KEYBUFFREE+2 ; Initialize start of *KEY free-space
|
||||||
|
STA KEYBUFFREE+0
|
||||||
|
LDA #>KEYBUFFREE
|
||||||
|
STA KEYBUFFREE+1
|
||||||
|
STA WRCARDRAM ; Restore writing to aux
|
||||||
|
PLP ; And restore IRQs
|
||||||
|
*
|
||||||
|
STX FXSOFTOK ; Soft keys updated
|
||||||
|
BYTE12OK RTS
|
||||||
|
|
||||||
|
|
||||||
* KEYREAD
|
* KEYREAD
|
||||||
************************
|
************************
|
||||||
* Test for and read from input,
|
* Test for and read from input,
|
||||||
@ -345,12 +423,14 @@ KEYREAD LDY FXEXEC ; See if EXEC file is open
|
|||||||
KEYREAD1
|
KEYREAD1
|
||||||
*
|
*
|
||||||
* TO DO: expand current soft key
|
* TO DO: expand current soft key
|
||||||
* LDA SOFTKEYLEN
|
* LDA FXSOFTLEN
|
||||||
* BEQ KEYREAD2
|
* BEQ KEYREAD2
|
||||||
* LDX SOFTKEYOFF
|
* LDX SOFTKEYOFF
|
||||||
|
* page in main memory
|
||||||
* LDA SOFTKEYS,X
|
* LDA SOFTKEYS,X
|
||||||
|
* page out main memory
|
||||||
* INC SOFTKEYOFF
|
* INC SOFTKEYOFF
|
||||||
* DEC SOFTKEYLEN
|
* DEC FXSOFTLEN
|
||||||
* CLC
|
* CLC
|
||||||
* RTS
|
* RTS
|
||||||
* KEYREAD2
|
* KEYREAD2
|
||||||
@ -524,8 +604,9 @@ BYTE7E STA KBDACK ; Flush keyboard
|
|||||||
BEQ BYTE7E2
|
BEQ BYTE7E2
|
||||||
CLI ; Allow IRQs while flushing
|
CLI ; Allow IRQs while flushing
|
||||||
STX FXLINES ; Clear scroll counter
|
STX FXLINES ; Clear scroll counter
|
||||||
|
STX FXSOFTLEN ; Cancel soft key expansion
|
||||||
JSR CMDEXEC0 ; Close any EXEC file
|
JSR CMDEXEC0 ; Close any EXEC file
|
||||||
* JSR BUFFLUSHALL ; Flush all buffers
|
* JSR BUFFLUSHALL ; Flush all buffers (this should do FXSOFTLEN)
|
||||||
BYTE7E2 LDX #$FF ; X=$FF, Escape was pending
|
BYTE7E2 LDX #$FF ; X=$FF, Escape was pending
|
||||||
BYTE7C CLC ; &7C = clear escape condition
|
BYTE7C CLC ; &7C = clear escape condition
|
||||||
BYTE7D ROR ESCFLAG ; $7D = set escape condition
|
BYTE7D ROR ESCFLAG ; $7D = set escape condition
|
||||||
|
141
auxmem.init.s
141
auxmem.init.s
@ -55,26 +55,106 @@ MOSINIT SEI ; Ensure IRQs disabled
|
|||||||
BRA :NORELOC
|
BRA :NORELOC
|
||||||
|
|
||||||
:RELOC LDA #<AUXMOS1 ; Source
|
:RELOC LDA #<AUXMOS1 ; Source
|
||||||
STA OSLPTR+0
|
STA A1L
|
||||||
LDA #>AUXMOS1
|
LDA #>AUXMOS1
|
||||||
STA OSLPTR+1
|
STA A1H
|
||||||
LDA #<AUXMOS ; Dest
|
LDA #<AUXMOS ; Dest
|
||||||
STA OSTEXT+0
|
STA A2L
|
||||||
LDA #>AUXMOS
|
LDA #>AUXMOS
|
||||||
STA OSTEXT+1 ; Y=0 from earlier
|
STA A2H ; Y=0 from earlier
|
||||||
:L1 LDA (OSLPTR),Y ; Copy from source
|
:L1 LDA (A1L),Y ; Copy from source
|
||||||
STA (OSTEXT),Y ; to dest
|
STA (A2L),Y ; to dest
|
||||||
INY
|
INY
|
||||||
BNE :L1 ; Do 256 bytes
|
BNE :L1 ; Do 256 bytes
|
||||||
INC OSLPTR+1 ; Update source
|
INC A1H ; Update source
|
||||||
INC OSTEXT+1 ; Update dest
|
INC A2H ; Update dest
|
||||||
BMI :L1 ; Loop until wrap past &FFFF
|
BMI :L1 ; Loop until wrap past &FFFF
|
||||||
|
*
|
||||||
:L2 LDA MOSVEND-AUXMOS+AUXMOS1-256,Y
|
:L2 LDA MOSVEND-AUXMOS+AUXMOS1-256,Y
|
||||||
STA $FF00,Y ; Copy MOS API and vectors
|
STA $FF00,Y ; Copy MOS API and vectors
|
||||||
INY ; to proper place
|
INY ; to proper place
|
||||||
BNE :L2
|
BNE :L2
|
||||||
|
|
||||||
|
*:S4 LDA #<MOSVEC-MOSINIT+AUXMOS1
|
||||||
|
* STA A1L
|
||||||
|
* LDA #>MOSVEC-MOSINIT+AUXMOS1
|
||||||
|
* STA A1H
|
||||||
|
* LDA #<MOSVEND-MOSINIT+AUXMOS1
|
||||||
|
* STA A2L
|
||||||
|
* LDA #>MOSVEND-MOSINIT+AUXMOS1
|
||||||
|
* STA A2H
|
||||||
|
* LDA #<MOSAPI
|
||||||
|
* STA A4L
|
||||||
|
* LDA #>MOSAPI
|
||||||
|
* STA A4H
|
||||||
|
*:L2 LDA (A1L)
|
||||||
|
* STA (A4L)
|
||||||
|
* LDA A1H
|
||||||
|
* CMP A2H
|
||||||
|
* BNE :S5
|
||||||
|
* LDA A1L
|
||||||
|
* CMP A2L
|
||||||
|
* BNE :S5
|
||||||
|
|
||||||
|
* LDA #<AUXMOS1 ; Relocate MOS shim
|
||||||
|
* STA A1L
|
||||||
|
* LDA #>AUXMOS1
|
||||||
|
* STA A1H
|
||||||
|
* LDA #<EAUXMOS1
|
||||||
|
* STA A2L
|
||||||
|
* LDA #>EAUXMOS1
|
||||||
|
* STA A2H
|
||||||
|
* LDA #<AUXMOS
|
||||||
|
* STA A4L
|
||||||
|
* LDA #>AUXMOS
|
||||||
|
* STA A4H
|
||||||
|
*:L1 LDA (A1L)
|
||||||
|
* STA (A4L)
|
||||||
|
* LDA A1H
|
||||||
|
* CMP A2H
|
||||||
|
* BNE :S1
|
||||||
|
* LDA A1L
|
||||||
|
* CMP A2L
|
||||||
|
* BNE :S1
|
||||||
|
* BRA :S4
|
||||||
|
*:S1 INC A1L
|
||||||
|
* BNE :S2
|
||||||
|
* INC A1H
|
||||||
|
*:S2 INC A4L
|
||||||
|
* BNE :S3
|
||||||
|
* INC A4H
|
||||||
|
*:S3 BRA :L1
|
||||||
|
*
|
||||||
|
*:S4 LDA #<MOSVEC-MOSINIT+AUXMOS1
|
||||||
|
* STA A1L
|
||||||
|
* LDA #>MOSVEC-MOSINIT+AUXMOS1
|
||||||
|
* STA A1H
|
||||||
|
* LDA #<MOSVEND-MOSINIT+AUXMOS1
|
||||||
|
* STA A2L
|
||||||
|
* LDA #>MOSVEND-MOSINIT+AUXMOS1
|
||||||
|
* STA A2H
|
||||||
|
* LDA #<MOSAPI
|
||||||
|
* STA A4L
|
||||||
|
* LDA #>MOSAPI
|
||||||
|
* STA A4H
|
||||||
|
*:L2 LDA (A1L)
|
||||||
|
* STA (A4L)
|
||||||
|
* LDA A1H
|
||||||
|
* CMP A2H
|
||||||
|
* BNE :S5
|
||||||
|
* LDA A1L
|
||||||
|
* CMP A2L
|
||||||
|
* BNE :S5
|
||||||
|
* BRA :S8
|
||||||
|
*:S5 INC A1L
|
||||||
|
* BNE :S6
|
||||||
|
* INC A1H
|
||||||
|
*:S6 INC A4L
|
||||||
|
* BNE :S7
|
||||||
|
* INC A4H
|
||||||
|
*:S7 BRA :L2
|
||||||
|
|
||||||
|
:S8
|
||||||
LDA #$EA ; NOP opcode
|
LDA #$EA ; NOP opcode
|
||||||
STA :MODBRA+0 ; Next time around, we're already
|
STA :MODBRA+0 ; Next time around, we're already
|
||||||
STA :MODBRA+1 ; in high memory
|
STA :MODBRA+1 ; in high memory
|
||||||
@ -91,39 +171,30 @@ MOSINIT SEI ; Ensure IRQs disabled
|
|||||||
MOSHIGH SEI ; Ensure IRQs disabled
|
MOSHIGH SEI ; Ensure IRQs disabled
|
||||||
LDX #$FF
|
LDX #$FF
|
||||||
TXS ; Initialise stack
|
TXS ; Initialise stack
|
||||||
INX ; X=$00
|
PHY ; Stack ResetType
|
||||||
LDA FXLANG ; Y=ResetType, A=Language
|
LDA FXLANG ; A=Language
|
||||||
|
LDY FXSOFTOK ; A=Language, Y=Soft Keys Ok
|
||||||
|
|
||||||
|
INX ; X=$00
|
||||||
:SCLR STZ $0000,X ; Clear Kernel memory
|
:SCLR STZ $0000,X ; Clear Kernel memory
|
||||||
STZ $0200,X
|
STZ $0200,X
|
||||||
STZ $0300,X
|
STZ $0300,X
|
||||||
INX
|
INX
|
||||||
BNE :SCLR
|
BNE :SCLR
|
||||||
:KCLR STZ $0400,X ; Clear *KEY buffer (avoid scrn holes)
|
|
||||||
STZ $0500,X
|
|
||||||
STZ $0600,X
|
|
||||||
STZ $0700,X
|
|
||||||
STZ $0480,X
|
|
||||||
STZ $0580,X
|
|
||||||
STZ $0680,X
|
|
||||||
STZ $0780,X
|
|
||||||
INX
|
|
||||||
CPX #$78
|
|
||||||
BNE :KCLR
|
|
||||||
|
|
||||||
LDA #<KEYBUFFREE+2 ; Initialize start of *KEY free-space
|
|
||||||
STA KEYBUFFREE+0
|
|
||||||
LDA #>KEYBUFFREE
|
|
||||||
STA KEYBUFFREE+1
|
|
||||||
|
|
||||||
STY FXRESET ; Set ResetType
|
|
||||||
STA FXLANG ; Current language
|
STA FXLANG ; Current language
|
||||||
|
STY FXSOFTOK ; Soft key validity
|
||||||
|
PLA
|
||||||
|
STA FXRESET ; Set ResetType
|
||||||
|
BEQ :INITPG2 ; Soft Reset, preserve settings
|
||||||
|
DEX ; X=$FF
|
||||||
|
STX FXLANG ; Current language=none
|
||||||
|
STX FXSOFTOK ; Invalidate soft keys
|
||||||
|
|
||||||
LDX #ENDVEC-DEFVEC-1
|
:INITPG2 LDX #ENDVEC-DEFVEC-1
|
||||||
:INITPG2 LDA DEFVEC,X ; Set up vectors
|
:INITPG2LP LDA DEFVEC,X ; Set up vectors
|
||||||
STA $200,X
|
STA $200,X
|
||||||
DEX
|
DEX
|
||||||
BPL :INITPG2
|
BPL :INITPG2LP
|
||||||
|
|
||||||
LDA CYAREG ; GS speed register
|
LDA CYAREG ; GS speed register
|
||||||
AND #$80 ; Speed bit only
|
AND #$80 ; Speed bit only
|
||||||
@ -138,10 +209,8 @@ MOSHIGH SEI ; Ensure IRQs disabled
|
|||||||
BEQ :INITSOFT ; Soft reset, skip past
|
BEQ :INITSOFT ; Soft reset, skip past
|
||||||
LDA #7 ; Beep on HardReset/PowerReset
|
LDA #7 ; Beep on HardReset/PowerReset
|
||||||
JSR OSWRCH
|
JSR OSWRCH
|
||||||
LDA #$FF
|
|
||||||
STA FXLANG ; Current language=none
|
|
||||||
*
|
*
|
||||||
* AppleII MOS beeps anyway, so always get a Beep
|
* AppleII MOS beeps anyway, so we always get a Beep
|
||||||
* APPLECORN startup -> BBC Beep
|
* APPLECORN startup -> BBC Beep
|
||||||
* Press Ctrl-Reset -> AppleII Beep
|
* Press Ctrl-Reset -> AppleII Beep
|
||||||
*
|
*
|
||||||
@ -227,7 +296,7 @@ BYTE00 BEQ BYTE00A ; OSBYTE 0,0 - generate error
|
|||||||
RTS ; %000x1xxx host type, 'A'pple
|
RTS ; %000x1xxx host type, 'A'pple
|
||||||
BYTE00A BRK
|
BYTE00A BRK
|
||||||
DB $F7
|
DB $F7
|
||||||
HELLO ASC 'Applecorn MOS 2022-12-07'
|
HELLO ASC 'Applecorn MOS 2022-11-08'
|
||||||
DB $00 ; Unify MOS messages
|
DB $00 ; Unify MOS messages
|
||||||
* TO DO: Move into RAM
|
* TO DO: Move into RAM
|
||||||
GSSPEED DB $00 ; $80 if GS is fast, $00 for slow
|
GSSPEED DB $00 ; $80 if GS is fast, $00 for slow
|
||||||
|
Loading…
x
Reference in New Issue
Block a user