mirror of
https://github.com/bobbimanners/Applecorn.git
synced 2025-01-03 22:30:09 +00:00
Merge PR 140 'More fsc updates'
This commit is contained in:
parent
5d7f8cd0c6
commit
38bcf9b4dd
BIN
applecorn.po
BIN
applecorn.po
Binary file not shown.
@ -14,7 +14,7 @@
|
||||
*************************
|
||||
* OSBYTE DISPATCH TABLE *
|
||||
*************************
|
||||
BYTWRDADDR DW BYTE00XX ; OSBYTE 0 - Machine host
|
||||
BYTWRDADDR DW BYTE00 ; OSBYTE 0 - Machine host - INIT.s
|
||||
DW BYTE01 ; OSBYTE 1 - User flag
|
||||
DW BYTE02 ; OSBYTE 2 - OSRDCH source
|
||||
DW BYTE03 ; OSBYTE 3 - OSWRCH dest
|
||||
@ -248,14 +248,14 @@ WORD00 IF MAXLEN-OSTEXT-2
|
||||
BPL :WORD00LP2
|
||||
INY ; Initial line length = zero
|
||||
ELSE
|
||||
LDA (OSCTRL),Y ; Copy control block
|
||||
STA OSTEXT,Y ; 0,1 => text
|
||||
INY ; 2 = MAXLEN
|
||||
CPY #$05 ; 3 = MINCHAR
|
||||
BCC WORD00 ; 4 = MAXCHAR
|
||||
LDY #$00 ; Initial line length = zero
|
||||
LDY #$04 ; Copy control block
|
||||
:WORD00LP3 LDA (OSCTRL),Y ; 0,1 => text
|
||||
STA OSTEXT,Y ; 2 = MAXLEN
|
||||
DEY ; 3 = MINCHAR
|
||||
BPL :WORD00LP3 ; 4 = MAXCHAR
|
||||
INY ; Initial line length = zero
|
||||
FIN
|
||||
* STY FXLINES ; Reset line counter
|
||||
* STY FXLINES ; Reset line counter
|
||||
CLI
|
||||
BEQ :WORD00LP ; Enter main loop
|
||||
|
||||
@ -467,38 +467,3 @@ OSWORDM ASC 'OSWORD($'
|
||||
DB $00
|
||||
OSBM2 ASC ').'
|
||||
DB $00
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -26,10 +26,8 @@
|
||||
* 09-Sep-2021 Moved keyboard OSBYTEs to here.
|
||||
* 12-Sep-2021 COPY calls new VDU entry point.
|
||||
* 15-Sep-2021 INKEY(0) tests once and returns immediately.
|
||||
* TO DO: CHKESC should go through translations before testing.
|
||||
|
||||
* TO DO: move these to VDU
|
||||
* OLDCHAR EQU OSKBD1 ; *TEMP* ; character under cursor
|
||||
* COPYCHAR EQU OSKBD2 ; *TEMP* ; character under copy cursor
|
||||
|
||||
FLASHER EQU BYTEVARBASE+176 ; VSync counter for flashing cursor
|
||||
FXEXEC EQU BYTEVARBASE+198
|
||||
@ -56,6 +54,7 @@ WRCHHND PHA
|
||||
PHX
|
||||
PHY
|
||||
* TO DO Check any output redirections
|
||||
* PHA
|
||||
|
||||
JSR OUTCHAR
|
||||
* TO DO Check any printer output
|
||||
@ -444,33 +443,3 @@ BYTE7DOK RTS
|
||||
|
||||
BYTE76 LDX #$00 ; Update LEDs and return X=SHIFT
|
||||
RTS ; Not possible with Apple
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
1713
auxmem.hostfs.s
1713
auxmem.hostfs.s
File diff suppressed because it is too large
Load Diff
@ -7,6 +7,8 @@
|
||||
* BBC Micro 'virtual machine' in Apple //e aux memory
|
||||
***********************************************************
|
||||
|
||||
MAXROM EQU $F9 ; Max sideways ROM number
|
||||
|
||||
ZP1 EQU $90 ; $90-$9f are spare Econet space
|
||||
; so safe to use
|
||||
ZP2 EQU $92
|
||||
@ -123,23 +125,22 @@ MOSHIGH SEI
|
||||
DEX
|
||||
BPL :INITPG2
|
||||
|
||||
JSR ROMINIT ; Initialize sideways ROM table
|
||||
|
||||
JSR ROMINIT ; Build list of sideways ROMs
|
||||
JSR KBDINIT ; Returns A=startup MODE
|
||||
JSR VDUINIT ; Initialise VDU driver
|
||||
JSR PRHELLO
|
||||
LDA #7
|
||||
JSR OSWRCH
|
||||
JSR OSNEWL
|
||||
LDX MAXROM ; TEMP X=language to enter
|
||||
LDX MAXROM ; TEMP X=language to enter
|
||||
CLC
|
||||
|
||||
* OSBYTE $8E - Enter language ROM
|
||||
* X=ROM number to select
|
||||
*
|
||||
BYTE8E PHP ; Save CLC=RESET, SEC=Not RESET
|
||||
JSR ROMSELECT ; Bring ROM X into memory
|
||||
STX BYTEVARBASE+$FC ; Set current language ROM
|
||||
JSR ROMSELECT ; Bring ROM X into memory
|
||||
STX BYTEVARBASE+$FC ; Set current language ROM
|
||||
LDA #$00
|
||||
STA FAULT+0
|
||||
LDA #$80
|
||||
@ -156,27 +157,39 @@ BYTE8E PHP ; Save CLC=RESET, SEC=Not RESET
|
||||
* OSBYTE $8F - Issue service call
|
||||
* X=service call, Y=parameter
|
||||
*
|
||||
SERVICE TAX ; Enter here with A=Service Num
|
||||
SERVICE TAX ; Enter here with A=Service Num
|
||||
BYTE8F
|
||||
SERVICEX LDA $F4
|
||||
PHA ; Save current ROM
|
||||
PHA ; Save current ROM
|
||||
|
||||
* LDA $E0 ; *DEBUG*
|
||||
* AND #$20
|
||||
* BEQ :SERVDEBUG
|
||||
* TXA
|
||||
* JSR PRHEX
|
||||
* LDA OSLPTR+1
|
||||
* JSR PRHEX
|
||||
* LDA OSLPTR+0
|
||||
* JSR PRHEX ; *DEBUG*
|
||||
*:SERVDEBUG
|
||||
|
||||
TXA
|
||||
LDX MAXROM ; Start at highest ROM
|
||||
:SERVLP JSR ROMSELECT ; Bring it into memory
|
||||
LDX MAXROM ; Start at highest ROM
|
||||
:SERVLP JSR ROMSELECT ; Bring it into memory
|
||||
BIT $8006
|
||||
BPL :SERVSKIP ; No service entry
|
||||
JSR $8003 ; Call service entry
|
||||
BPL :SERVSKIP ; No service entry
|
||||
JSR $8003 ; Call service entry
|
||||
TAX
|
||||
BEQ :SERVDONE
|
||||
:SERVSKIP LDX $F4 ; Restore X=current ROM
|
||||
DEX ; Step down to next
|
||||
BPL :SERVLP ; Loop until ROM 0 done
|
||||
:SERVDONE PLA ; Get caller's ROM back
|
||||
PHX ; Save return from service call
|
||||
:SERVSKIP LDX $F4 ; Restore X=current ROM
|
||||
DEX ; Step down to next
|
||||
BPL :SERVLP ; Loop until ROM 0 done
|
||||
:SERVDONE PLA ; Get caller's ROM back
|
||||
PHX ; Save return from service call
|
||||
TAX
|
||||
JSR ROMSELECT ; Restore caller's ROM
|
||||
PLX ; Get return value back
|
||||
TXA ; Return in A and X and set EQ/NE
|
||||
JSR ROMSELECT ; Restore caller's ROM
|
||||
PLX ; Get return value back
|
||||
TXA ; Return in A and X and set EQ/NE
|
||||
RTS
|
||||
|
||||
|
||||
@ -191,12 +204,7 @@ BYTE00 BEQ BYTE00A ; OSBYTE 0,0 - generate error
|
||||
RTS ; %000x1xxx host type, 'A'pple
|
||||
BYTE00A BRK
|
||||
DB $F7
|
||||
HELLO ASC 'Applecorn MOS 2021-10-27'
|
||||
HELLO ASC 'Applecorn MOS 2021-10-28'
|
||||
DB $00 ; Unify MOS messages
|
||||
|
||||
MAXROM DB $00 ; Index of highest sideways ROM
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -16,31 +16,35 @@
|
||||
* $E0-$EE Internal MOS workspace
|
||||
* $EF-$FF MOS API workspace
|
||||
|
||||
DEBUG EQU $E0 ; $E0 *TEST* Debug flag
|
||||
* DEBUG EQU $00 ; $00=*OPT 255 debug code removed
|
||||
DEBUG EQU $E0 ; $E0=*OPT 255 debug code included
|
||||
* ; $E1
|
||||
FSFLAG1 EQU $E2 ; $E2
|
||||
FSFLAG2 EQU $E3 ; $E3 HOSTFS *OPT settings
|
||||
GSFLAG EQU $E4 ; $E4 GSREAD processing flags
|
||||
GSCHAR EQU $E5 ; $E5 GSREAD accumulator
|
||||
OSTEXT EQU $E6 ; $E6 => text string $E6 OSNUM+0
|
||||
MAXLEN EQU OSTEXT+2 ; $E8 $E8 OSNUM+2
|
||||
MINCHAR EQU OSTEXT+3 ; $E9 $E9 OSNUM+3
|
||||
MAXCHAR EQU OSTEXT+4 ; $EA $EA OSPAD
|
||||
OSTEMP EQU $EB ; $EB $EB OSTEMP
|
||||
OSKBD1 EQU $EC ; $EC kbd ws
|
||||
OSKBD2 EQU OSKBD1+1 ; $ED kbd ws
|
||||
OSKBD3 EQU OSKBD1+2 ; $EE kbd ws
|
||||
OSAREG EQU $EF ; $EF A register
|
||||
OSXREG EQU OSAREG+1 ; $F0 X register
|
||||
OSYREG EQU OSXREG+1 ; $F1 Y register
|
||||
OSCTRL EQU OSXREG ; $F0 (XY)=>control block
|
||||
OSLPTR EQU $F2 ; $F2 => command line
|
||||
OSROMNUM EQU $F4 ; $F4 current ROM
|
||||
*
|
||||
OSINTWS EQU $FA ; $FA IRQ ZP pointer, use when IRQs off
|
||||
OSINTA EQU $FC ; $FC IRQ register A store
|
||||
FAULT EQU $FD ; $FD Error message pointer
|
||||
ESCFLAG EQU $FF ; $FF Escape status
|
||||
FSFLAG1 EQU $E2 ; $E2
|
||||
FSFLAG2 EQU $E3 ; $E3 HOSTFS *OPT settings
|
||||
GSFLAG EQU $E4 ; $E4 GSREAD processing flags
|
||||
GSCHAR EQU $E5 ; $E5 GSREAD accumulator
|
||||
OSTEXT EQU $E6 ; $E6 => text string $E6 OSNUM+0
|
||||
MAXLEN EQU OSTEXT+2 ; $E8 $E8 OSNUM+2
|
||||
MINCHAR EQU OSTEXT+3 ; $E9 $E9 OSNUM+3
|
||||
MAXCHAR EQU OSTEXT+4 ; $EA $EA OSPAD
|
||||
OSTEMP EQU $EB ; $EB $EB OSTEMP
|
||||
OSKBD1 EQU $EC ; $EC kbd ws
|
||||
OSKBD2 EQU OSKBD1+1 ; $ED kbd ws
|
||||
OSKBD3 EQU OSKBD1+2 ; $EE kbd ws
|
||||
OSAREG EQU $EF ; $EF A register
|
||||
OSXREG EQU OSAREG+1 ; $F0 X register
|
||||
OSYREG EQU OSXREG+1 ; $F1 Y register
|
||||
OSCTRL EQU OSXREG ; $F0 (XY)=>control block
|
||||
OSLPTR EQU $F2 ; $F2 => command line
|
||||
ROMID EQU $F4 ; $F4 current ROM
|
||||
ROMTMP EQU $F5 ; $F5
|
||||
ROMPTR EQU $F6 ; $F6 =>
|
||||
* ; $F8 *TEMP* pseudo-SROM settings
|
||||
* ; $F9 *TEMP* pseudo-SROM settings
|
||||
OSINTWS EQU $FA ; $FA IRQ ZP pointer, use when IRQs off
|
||||
OSINTA EQU $FC ; $FC IRQ register A store
|
||||
FAULT EQU $FD ; $FD Error message pointer
|
||||
ESCFLAG EQU $FF ; $FF Escape status
|
||||
|
||||
|
||||
* $0200-$0235 Vectors
|
||||
@ -48,29 +52,25 @@ ESCFLAG EQU $FF ; $FF Escape status
|
||||
* $0290-$02ED
|
||||
* $02EE-$02FF MOS control block
|
||||
|
||||
USERV EQU $200 ; USER vector
|
||||
BRKV EQU $202 ; BRK vector
|
||||
CLIV EQU $208 ; OSCLI vector
|
||||
BYTEV EQU $20A ; OSBYTE vector
|
||||
WORDV EQU $20C ; OSWORD vector
|
||||
WRCHV EQU $20E ; OSWRCH vector
|
||||
RDCHV EQU $210 ; OSRDCH vector
|
||||
FILEV EQU $212 ; OSFILE vector
|
||||
ARGSV EQU $214 ; OSARGS vector
|
||||
BGETV EQU $216 ; OSBGET vector
|
||||
BPUTV EQU $218 ; OSBPUT vector
|
||||
GBPBV EQU $21A ; OSGBPB vector
|
||||
FINDV EQU $21C ; OSFIND vector
|
||||
FSCV EQU $21E ; FSCV misc file ops
|
||||
USERV EQU $200 ; USER vector
|
||||
BRKV EQU $202 ; BRK vector
|
||||
CLIV EQU $208 ; OSCLI vector
|
||||
BYTEV EQU $20A ; OSBYTE vector
|
||||
WORDV EQU $20C ; OSWORD vector
|
||||
WRCHV EQU $20E ; OSWRCH vector
|
||||
RDCHV EQU $210 ; OSRDCH vector
|
||||
FILEV EQU $212 ; OSFILE vector
|
||||
ARGSV EQU $214 ; OSARGS vector
|
||||
BGETV EQU $216 ; OSBGET vector
|
||||
BPUTV EQU $218 ; OSBPUT vector
|
||||
GBPBV EQU $21A ; OSGBPB vector
|
||||
FINDV EQU $21C ; OSFIND vector
|
||||
FSCV EQU $21E ; FSCV misc file ops
|
||||
|
||||
BYTEVARBASE EQU $190 ; Base of OSBYTE variables
|
||||
OSFILECB EQU $2EE ; OSFILE control block
|
||||
OSGBPBCB EQU OSFILECB+1 ; OSGBPB control block
|
||||
BYTEVARBASE EQU $190 ; Base of OSBYTE variables
|
||||
OSFILECB EQU $2EE ; OSFILE control block
|
||||
OSGBPBCB EQU OSFILECB+1 ; OSGBPB control block
|
||||
|
||||
|
||||
* $0300-$03DF
|
||||
* $03E0-$03FF Used for interfacing with ProDOS XFER
|
||||
|
||||
|
||||
|
||||
|
||||
|
1853
mainmem.svc.s
1853
mainmem.svc.s
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user