Merged in JGH's Sept 9 VDU driver update.

This commit is contained in:
Bobbi Webber-Manners 2021-09-09 16:01:32 -04:00
parent 980376bf71
commit 8a39a760fd
4 changed files with 593 additions and 484 deletions

Binary file not shown.

View File

@ -3,9 +3,10 @@
*
* Applecorn OSBYTE and OSWORD handlers
*
* 15-Aug-2021 Added 'set variable' OSBYTEs 1-6
* 02-Sep-2021 OSWORD 5 can read from Main Memory ROM
* 04-Sep-2021 Extended VDU table to add $75 and $A0 for VDU driver
* 15-Aug-2021 Added 'set variable' OSBYTEs 1-6.
* 02-Sep-2021 OSWORD 5 can read from Main Memory ROM.
* 04-Sep-2021 Extended VDU table to add $75 and $A0 for VDU driver.
* 09-Sep-2021 Moved keyboard and VDU OSBYTEs to Keyboard and VDU.
XC ; 65c02
@ -14,7 +15,8 @@
* OSBYTE DISPATCH TABLE *
*************************
BYTEVARBASE EQU $190 ; Base of OSBYTE variables
* Moved to AUXMEM.VDU.S for benefit of Merlin-8/-16
*BYTEVARBASE EQU $190 ; Base of OSBYTE variables
BYTWRDADDR DW BYTE00XX ; OSBYTE 0 - Machine host
DW BYTE01 ; OSBYTE 1 - User flag
@ -29,9 +31,9 @@ BYTWRDADDR DW BYTE00XX ; OSBYTE 0 - Machine host
DW BYTENULL ; OSBYTE 10 - Flash period mark
DW BYTENULL ; OSBYTE 11 - Autorepeat delay
DW BYTENULL ; OSBYTE 12 - Autorepeat repeat
DW BYTENULL ; OSBYTE 13 - Disable events
DW BYTENULL ; OSBYTE 14 - Enable events
DW BYTENULL ; OSBYTE 15 - Flush sel buf class
DW BYTENULL ; OSBYTE 13 - Disable event
DW BYTENULL ; OSBYTE 14 - Enable event
DW BYTENULL ; OSBYTE 15 - Flush buffer
BYTWRDLOW
BYTESZLO EQU BYTWRDLOW-BYTWRDADDR
BYTELOW EQU BYTESZLO/2-1 ; Maximum low OSBYTE
@ -230,8 +232,10 @@ BYTFAIL0 PHX ; *DEBUG*
CMP #$01
PLA ; *DEBUG*
BCC BYTWRDEXIT ; Claimed, return
BIT $E0 ; *DEBUG*
BVC BYTEFAIL1 ; Debug turned off
JSR UNSUPBYTWRD ; *DEBUG*
LDX #$FF ; X=&FF if unclaimed
BYTEFAIL1 LDX #$FF ; X=&FF if unclaimed
PLP ; Restore original flags and IRQs
PLA ; Restore A
BIT SETV ; Set V = Not actioned
@ -426,18 +430,18 @@ BYTEVAR TAY ; offset to variable
LDA BYTEVARBASE+1,Y
TAY ; Y=next value
* Unimplemented
BYTE89 ; *MOTOR
BYTE8A ; Buffer insert
BYTE8C ; *TAPE
BYTE8D ; *ROM
*BYTE89 ; *MOTOR
*BYTE8A ; Buffer insert
*BYTE8C ; *TAPE
*BYTE8D ; *ROM
RTS
* Memory layout
BYTE82 ; $82 = read high order address
* LDY #$00
* LDX #$00 ; $0000 for language processor
* Should return $0000, but BCPL and Lisp try to move up to $F800
* overwriting Apple II stuff
* Should return $0000, but BCPL, Lisp and View try to move
* up to $F800 overwriting Apple II stuff
LDY #$FF ; $FFFF for I/O processor
LDX #$FF
RTS
@ -451,19 +455,12 @@ BYTE84 LDY #$80 ; $84 = read top of user mem
LDX #$00
RTS
* Move to keyboard stuff
************************
BYTE7E LDX #$00 ; $7E = ack detection of ESC
BIT ESCFLAG
BPL BYTE7DOK ; No Escape pending
* TO DO: process escape effects
DEX ; X=$FF, Escape was pending
BYTE7C CLC ; &7C = clear escape condition
BYTE7D ROR ESCFLAG ; $7D = set escape condition
BYTE7DOK RTS
* Passed on to filing system
BYTE8B LDA #$00 ; &00 -> &00 - *OPT
BYTE8B CPX #$FF ; *DEBUG*
BNE BYTE8BA ; *DEBUG*
STY $E0 ; *DEBUG*
RTS ; *DEBUG*
BYTE8BA LDA #$00 ; &00 -> &00 - *OPT
BYTE7F AND #$01 ; &7F -> &01 - EOF
CALLFSCV JMP (FSCV) ; Hand over to filing system
@ -533,13 +530,3 @@ OSWORDM ASC 'OSWORD($'
OSBM2 ASC ').'
DB $00

View File

@ -22,15 +22,16 @@
* The three separate cursors can be set seperately.
* 02-Sep-2021 INKEY-256 tests Apple IIe vs IIc.
* 05-Sep-2021 KBDINIT returns startup value to pass to VDUINT.
* 09-Sep-2021 Moved keyboard OSBYTEs to here.
* TEMP, move to VDU.S
FLASHER EQU $290
CURSOR EQU $291
CURSORED EQU $292
CURSORCP EQU $293
OLDCHAR EQU $294
COPYCHAR EQU $295
** Moved to VDU.S
*FLASHER EQU $290
*CURSOR EQU $291
*CURSORED EQU $292
*CURSORCP EQU $293
*OLDCHAR EQU $294
*COPYCHAR EQU $295
FXEXEC EQU BYTEVARBASE+198
FXSPOOL EQU BYTEVARBASE+199
@ -64,6 +65,11 @@ WRCHHND PHA
*
JSR OUTCHAR
* TO DO Check any printer output
* BCC WRCHHND2
* TSX
* LDA $103,X
* JSR PRNCHAR
* WRCHHND2
PLY
PLX
PLA
@ -226,7 +232,7 @@ NEGINKEY CPX #$01
LDX #$00 ; Unimplemented
BCS NEGINKEY0
JSR NEGCALL
JSR NEGCALL ; Read machine ID from aux
LDX #$2C
TAY
BEQ NEGINKEY0 ; $00 = Apple IIc -> INKEY-256 = $2C
@ -234,23 +240,6 @@ NEGINKEY CPX #$01
AND #$0F
BEQ NEGINKEY0 ; $x0 = Apple IIe -> INKEY-256 = $2E
LDX #$2A ; else = Apple IIgs INKEY-256 = $2A
* LDX #$2A
* ; 6502 A 65C02 A 65816 B A
* LDA #$00 ; 00 00 zz 00
* DB #$EB ; SBC NOP 00 XBA 00 zz
* DB #$3A ; #$3A C5 DEC A FF DEC A 00 yy
* DB #$EB ; SBC NOP FF XBA yy 00
* DB #$EA ; #$EA DA NOP FF NOP yy 00
* BEQ NEGINKEY0 ; INKEY-256 = $2A - AppleIIgs
* LDA #$C0
* LDY #$FB
* JSR WORD05IO1 ; Read from $FBC0 in main ROM
* LDX #$2C
* TAY
* BEQ NEGINKEY0 ; INKEY-256 = $2C = Apple IIc
* LDX #$2E ; INKEY-256 = $2E = Apple IIe
NEGINKEY0 LDY #$00
CLC
RTS
@ -437,13 +426,22 @@ KBDNOESC TXA ; A=keycode
CLC ; CLC=Ok
KBDDONE RTS
* Process pending Escape state
BYTE7E LDX #$00 ; $7E = ack detection of ESC
BIT ESCFLAG
BPL BYTE7DOK ; No Escape pending
LDA FXESCEFFECT ; Process Escape effects
BEQ BYTE7E2
CLI ; Allow IRQs while flushing
STA FXLINES ; Clear scroll counter
* JSR STAREXEC0 ; Close any EXEC file
* JSR FLUSHALL ; Flush all buffers
BYTE7E2 LDX #$FF ; X=$FF, Escape was pending
BYTE7C CLC ; &7C = clear escape condition
BYTE7D ROR ESCFLAG ; $7D = set escape condition
BYTE7DOK RTS
BYTE76 LDX #$00 ; Update LEDs and return X=SHIFT
RTS ; Not possible with Apple

File diff suppressed because it is too large Load Diff