mirror of
https://github.com/bobbimanners/Applecorn.git
synced 2024-06-12 16:29:29 +00:00
Further cleanup
This commit is contained in:
parent
aa992200c0
commit
3781e74425
BIN
applecorn.po
BIN
applecorn.po
Binary file not shown.
10
applecorn.s
10
applecorn.s
|
@ -122,6 +122,16 @@ XFRECVR MAC
|
||||||
PLA
|
PLA
|
||||||
EOM
|
EOM
|
||||||
|
|
||||||
|
* Macro called on entry to main memory
|
||||||
|
ENTMAIN MAC
|
||||||
|
LDX $0100 ; Recover SP
|
||||||
|
TXS
|
||||||
|
PHA ; Preserve parm in A
|
||||||
|
LDA $C081 ; Bank in ROM
|
||||||
|
LDA $C081
|
||||||
|
PLA
|
||||||
|
EOM
|
||||||
|
|
||||||
* Code is all included from PUT files below ...
|
* Code is all included from PUT files below ...
|
||||||
PUT LOADER
|
PUT LOADER
|
||||||
PUT MAINMEM
|
PUT MAINMEM
|
||||||
|
|
115
mainmem.s
115
mainmem.s
|
@ -1,8 +1,9 @@
|
||||||
* MAINMEM.S
|
* MAINMEM.S
|
||||||
* (c) Bobbi 2021 GPL v3
|
* (c) Bobbi 2021 GPL v3
|
||||||
* Code that runs on the Apple //e in main memory
|
*
|
||||||
|
* Code that runs on the Apple //e in main memory.
|
||||||
* This code is mostly glue between the BBC Micro code
|
* This code is mostly glue between the BBC Micro code
|
||||||
* running in aux mem and ProDOS
|
* which runs in aux mem and Apple II ProDOS.
|
||||||
|
|
||||||
* Set prefix if not already set
|
* Set prefix if not already set
|
||||||
SETPRFX LDA #GPFXCMD
|
SETPRFX LDA #GPFXCMD
|
||||||
|
@ -107,14 +108,8 @@ COPYAUXBLK
|
||||||
|
|
||||||
* ProDOS file handling for MOS OSFIND OPEN call
|
* ProDOS file handling for MOS OSFIND OPEN call
|
||||||
* Options in A: $40 'r', $80 'w', $C0 'rw'
|
* Options in A: $40 'r', $80 'w', $C0 'rw'
|
||||||
OFILE LDX $0100 ; Recover SP
|
OFILE >>> ENTMAIN
|
||||||
TXS
|
PHA ; Preserve arg for later
|
||||||
PHA ; Option
|
|
||||||
LDA $C081 ; ROM, please
|
|
||||||
LDA $C081
|
|
||||||
|
|
||||||
PLA ; Get option back
|
|
||||||
PHA
|
|
||||||
CMP #$80 ; Write mode
|
CMP #$80 ; Write mode
|
||||||
BNE :S0
|
BNE :S0
|
||||||
|
|
||||||
|
@ -187,37 +182,27 @@ OFILE LDX $0100 ; Recover SP
|
||||||
DW OPENPL2
|
DW OPENPL2
|
||||||
BCS :NOTFND
|
BCS :NOTFND
|
||||||
LDA OPENPL2+5 ; File ref number
|
LDA OPENPL2+5 ; File ref number
|
||||||
PHA
|
|
||||||
LDX BUFIDX
|
LDX BUFIDX
|
||||||
CPX #$FF
|
CPX #$FF
|
||||||
BEQ FINDEXIT
|
BEQ FINDEXIT
|
||||||
STA FILEREFS,X ; Record ref number
|
STA FILEREFS,X ; Record the ref number
|
||||||
BRA FINDEXIT
|
BRA FINDEXIT
|
||||||
:NOTFND LDA #$00
|
:NOTFND LDA #$00
|
||||||
PHA
|
|
||||||
FINDEXIT >>> XFADDR,OSFINDRET
|
FINDEXIT >>> XFADDR,OSFINDRET
|
||||||
PLA
|
|
||||||
>>> XFAUX
|
>>> XFAUX
|
||||||
BUFIDX DB $00
|
BUFIDX DB $00
|
||||||
|
|
||||||
* ProDOS file handling for MOS OSFIND CLOSE call
|
* ProDOS file handling for MOS OSFIND CLOSE call
|
||||||
CFILE LDX $0100 ; Recover SP
|
CFILE >>> ENTMAIN
|
||||||
TXS
|
|
||||||
LDA $C081 ; ROM, please
|
|
||||||
LDA $C081
|
|
||||||
|
|
||||||
LDA MOSFILE ; File ref number
|
LDA MOSFILE ; File ref number
|
||||||
STA CLSPL+1
|
STA CLSPL+1
|
||||||
JSR CLSFILE
|
JSR CLSFILE
|
||||||
|
|
||||||
LDA MOSFILE
|
LDA MOSFILE
|
||||||
JSR FINDBUF
|
JSR FINDBUF
|
||||||
CPX #$FF
|
CPX #$FF
|
||||||
BEQ :S1
|
BEQ :S1
|
||||||
|
|
||||||
LDA #$00
|
LDA #$00
|
||||||
STA FILEREFS,X
|
STA FILEREFS,X
|
||||||
|
|
||||||
:S1 JMP FINDEXIT
|
:S1 JMP FINDEXIT
|
||||||
|
|
||||||
* Map of file reference numbers to IOBUF1..4
|
* Map of file reference numbers to IOBUF1..4
|
||||||
|
@ -235,11 +220,7 @@ FINDBUF LDX #$00
|
||||||
|
|
||||||
* ProDOS file handling for MOS OSBGET call
|
* ProDOS file handling for MOS OSBGET call
|
||||||
* Returns with char read in A and error num in X (or 0)
|
* Returns with char read in A and error num in X (or 0)
|
||||||
FILEGET LDX $0100 ; Recover SP
|
FILEGET >>> ENTMAIN
|
||||||
TXS
|
|
||||||
LDA $C081 ; ROM, please
|
|
||||||
LDA $C081
|
|
||||||
|
|
||||||
LDA MOSFILE ; File ref number
|
LDA MOSFILE ; File ref number
|
||||||
STA READPL2+1
|
STA READPL2+1
|
||||||
JSR MLI
|
JSR MLI
|
||||||
|
@ -247,21 +228,16 @@ FILEGET LDX $0100 ; Recover SP
|
||||||
DW READPL2
|
DW READPL2
|
||||||
BCC :NOERR
|
BCC :NOERR
|
||||||
TAY ; Error number in Y
|
TAY ; Error number in Y
|
||||||
BRA GETEXIT
|
BRA :EXIT
|
||||||
:NOERR LDX #$00
|
:NOERR LDX #$00
|
||||||
LDA BLKBUF
|
LDA BLKBUF
|
||||||
PHA
|
:EXIT >>> XFADDR,OSBGETRET
|
||||||
GETEXIT >>> XFADDR,OSBGETRET
|
|
||||||
PLA
|
|
||||||
>>> XFAUX
|
>>> XFAUX
|
||||||
|
|
||||||
* ProDOS file handling for MOS OSBPUT call
|
* ProDOS file handling for MOS OSBPUT call
|
||||||
* Enters with char to write in A
|
* Enters with char to write in A
|
||||||
FILEPUT LDX $0100 ; Recover SP
|
FILEPUT >>> ENTMAIN
|
||||||
TXS
|
|
||||||
STA BLKBUF ; Char to write
|
STA BLKBUF ; Char to write
|
||||||
LDA $C081 ; ROM, please
|
|
||||||
LDA $C081
|
|
||||||
|
|
||||||
LDA MOSFILE ; File ref number
|
LDA MOSFILE ; File ref number
|
||||||
STA WRITEPL+1
|
STA WRITEPL+1
|
||||||
|
@ -270,18 +246,12 @@ FILEPUT LDX $0100 ; Recover SP
|
||||||
LDA #$00
|
LDA #$00
|
||||||
STA WRITEPL+5
|
STA WRITEPL+5
|
||||||
JSR WRTFILE
|
JSR WRTFILE
|
||||||
|
|
||||||
* There is no way to report an error it seems!
|
|
||||||
|
|
||||||
>>> XFADDR,OSBPUTRET
|
>>> XFADDR,OSBPUTRET
|
||||||
>>> XFAUX
|
>>> XFAUX
|
||||||
|
|
||||||
* ProDOS file handling for OSBYTE $7F EOF
|
* ProDOS file handling for OSBYTE $7F EOF
|
||||||
* Returns EOF status in A ($FF for EOF, $00 otherwise)
|
* Returns EOF status in A ($FF for EOF, $00 otherwise)
|
||||||
FILEEOF LDX $0100 ; Recover SP
|
FILEEOF >>> ENTMAIN
|
||||||
TXS
|
|
||||||
LDA $C081 ; ROM, please
|
|
||||||
LDA $C081
|
|
||||||
|
|
||||||
LDA MOSFILE ; File ref number
|
LDA MOSFILE ; File ref number
|
||||||
STA GEOFPL+1
|
STA GEOFPL+1
|
||||||
|
@ -316,24 +286,17 @@ FILEEOF LDX $0100 ; Recover SP
|
||||||
:ISEOF LDA #$FF
|
:ISEOF LDA #$FF
|
||||||
BRA :EXIT
|
BRA :EXIT
|
||||||
:NOTEOF LDA #$00
|
:NOTEOF LDA #$00
|
||||||
:EXIT PHA ; Preserve return code
|
:EXIT >>> XFADDR,CHKEOFRET
|
||||||
>>> XFADDR,CHKEOFRET
|
|
||||||
PLA ; Recover return code
|
|
||||||
>>> XFAUX
|
>>> XFAUX
|
||||||
:REMAIN DS 3 ; Remaining bytes
|
:REMAIN DS 3 ; Remaining bytes
|
||||||
|
|
||||||
* ProDOS file handling for OSARGS flush commands
|
* ProDOS file handling for OSARGS flush commands
|
||||||
FLUSH LDX $0100 ; Recover SP
|
FLUSH >>> ENTMAIN
|
||||||
TXS
|
|
||||||
LDA $C081 ; ROM, please
|
|
||||||
LDA $C081
|
|
||||||
|
|
||||||
LDA MOSFILE ; File ref number
|
LDA MOSFILE ; File ref number
|
||||||
STA FLSHPL+1
|
STA FLSHPL+1
|
||||||
JSR MLI
|
JSR MLI
|
||||||
DB FLSHCMD
|
DB FLSHCMD
|
||||||
DW FLSHPL
|
DW FLSHPL
|
||||||
|
|
||||||
>>> XFADDR,OSARGSRET
|
>>> XFADDR,OSARGSRET
|
||||||
>>> XFAUX
|
>>> XFAUX
|
||||||
|
|
||||||
|
@ -341,11 +304,7 @@ FLUSH LDX $0100 ; Recover SP
|
||||||
* Return A=0 if successful
|
* Return A=0 if successful
|
||||||
* A=1 if file not found
|
* A=1 if file not found
|
||||||
* A=2 if read error
|
* A=2 if read error
|
||||||
LOADFILE LDX $0100 ; Recover SP
|
LOADFILE >>> ENTMAIN
|
||||||
TXS
|
|
||||||
LDA $C081 ; Gimme the ROM!
|
|
||||||
LDA $C081
|
|
||||||
|
|
||||||
STZ :BLOCKS
|
STZ :BLOCKS
|
||||||
LDA #<MOSFILE
|
LDA #<MOSFILE
|
||||||
STA OPENPL+1
|
STA OPENPL+1
|
||||||
|
@ -360,17 +319,14 @@ LOADFILE LDX $0100 ; Recover SP
|
||||||
CMP #$4C ; EOF
|
CMP #$4C ; EOF
|
||||||
BEQ :EOF
|
BEQ :EOF
|
||||||
BRA :READERR
|
BRA :READERR
|
||||||
|
|
||||||
:S1 LDA #<BLKBUF
|
:S1 LDA #<BLKBUF
|
||||||
STA A1L
|
STA A1L
|
||||||
LDA #>BLKBUF
|
LDA #>BLKBUF
|
||||||
STA A1H
|
STA A1H
|
||||||
|
|
||||||
LDA #<BLKBUFEND
|
LDA #<BLKBUFEND
|
||||||
STA A2L
|
STA A2L
|
||||||
LDA #>BLKBUFEND
|
LDA #>BLKBUFEND
|
||||||
STA A2H
|
STA A2H
|
||||||
|
|
||||||
LDA FBLOAD
|
LDA FBLOAD
|
||||||
STA A4L
|
STA A4L
|
||||||
LDA FBLOAD+1
|
LDA FBLOAD+1
|
||||||
|
@ -382,26 +338,20 @@ LOADFILE LDX $0100 ; Recover SP
|
||||||
DEX
|
DEX
|
||||||
BRA :L2
|
BRA :L2
|
||||||
:S2 STA A4H
|
:S2 STA A4H
|
||||||
|
|
||||||
SEC ; Main -> AUX
|
SEC ; Main -> AUX
|
||||||
JSR AUXMOVE
|
JSR AUXMOVE
|
||||||
|
|
||||||
INC :BLOCKS
|
INC :BLOCKS
|
||||||
BRA :L1
|
BRA :L1
|
||||||
|
|
||||||
:NOTFND LDA #$01 ; Nothing found
|
:NOTFND LDA #$01 ; Nothing found
|
||||||
PHA
|
PHA
|
||||||
BRA :EXIT
|
BRA :EXIT
|
||||||
:READERR LDA #$02 ; Read error
|
:READERR LDA #$02 ; Read error
|
||||||
PHA
|
|
||||||
BRA :EOF2
|
BRA :EOF2
|
||||||
:EOF LDA #$00 ; Success
|
:EOF LDA #$00 ; Success
|
||||||
PHA
|
|
||||||
:EOF2 LDA OPENPL+5 ; File ref num
|
:EOF2 LDA OPENPL+5 ; File ref num
|
||||||
STA CLSPL+1
|
STA CLSPL+1
|
||||||
JSR CLSFILE
|
JSR CLSFILE
|
||||||
:EXIT >>> XFADDR,OSFILERET
|
:EXIT >>> XFADDR,OSFILERET
|
||||||
PLA
|
|
||||||
>>> XFAUX
|
>>> XFAUX
|
||||||
:BLOCKS DB $00
|
:BLOCKS DB $00
|
||||||
|
|
||||||
|
@ -409,11 +359,7 @@ LOADFILE LDX $0100 ; Recover SP
|
||||||
* Return A=0 if successful
|
* Return A=0 if successful
|
||||||
* A=1 if unable to create/open
|
* A=1 if unable to create/open
|
||||||
* A=2 if error during save
|
* A=2 if error during save
|
||||||
SAVEFILE LDX $0100 ; Recover SP
|
SAVEFILE >>> ENTMAIN
|
||||||
TXS
|
|
||||||
LDA $C081 ; Gimme the ROM!
|
|
||||||
LDA $C081
|
|
||||||
|
|
||||||
LDA #<MOSFILE ; Attempt to destroy file
|
LDA #<MOSFILE ; Attempt to destroy file
|
||||||
STA DESTPL+1
|
STA DESTPL+1
|
||||||
LDA #>MOSFILE
|
LDA #>MOSFILE
|
||||||
|
@ -421,7 +367,6 @@ SAVEFILE LDX $0100 ; Recover SP
|
||||||
JSR MLI
|
JSR MLI
|
||||||
DB DESTCMD
|
DB DESTCMD
|
||||||
DW DESTPL
|
DW DESTPL
|
||||||
|
|
||||||
STZ :BLOCKS
|
STZ :BLOCKS
|
||||||
LDA #<MOSFILE
|
LDA #<MOSFILE
|
||||||
STA CREATEPL+1
|
STA CREATEPL+1
|
||||||
|
@ -451,7 +396,6 @@ SAVEFILE LDX $0100 ; Recover SP
|
||||||
BCS :FWD1 ; :CANTOPEN error
|
BCS :FWD1 ; :CANTOPEN error
|
||||||
JSR OPENFILE
|
JSR OPENFILE
|
||||||
BCS :FWD1 ; :CANTOPEN error
|
BCS :FWD1 ; :CANTOPEN error
|
||||||
|
|
||||||
SEC ; Compute file length
|
SEC ; Compute file length
|
||||||
LDA FBEND
|
LDA FBEND
|
||||||
SBC FBSTRT
|
SBC FBSTRT
|
||||||
|
@ -459,7 +403,6 @@ SAVEFILE LDX $0100 ; Recover SP
|
||||||
LDA FBEND+1
|
LDA FBEND+1
|
||||||
SBC FBSTRT+1
|
SBC FBSTRT+1
|
||||||
STA :LEN+1
|
STA :LEN+1
|
||||||
|
|
||||||
:L1 LDA FBSTRT ; Setup for first block
|
:L1 LDA FBSTRT ; Setup for first block
|
||||||
STA A1L
|
STA A1L
|
||||||
STA A2L
|
STA A2L
|
||||||
|
@ -489,7 +432,6 @@ SAVEFILE LDX $0100 ; Recover SP
|
||||||
:S1 LDA :LEN+1 ; MSB of length remaining
|
:S1 LDA :LEN+1 ; MSB of length remaining
|
||||||
CMP #$02
|
CMP #$02
|
||||||
BCS :S2 ; MSB of len >= 2 (not last)
|
BCS :S2 ; MSB of len >= 2 (not last)
|
||||||
|
|
||||||
CMP #$00 ; If no bytes left ...
|
CMP #$00 ; If no bytes left ...
|
||||||
BNE :S3
|
BNE :S3
|
||||||
LDA :LEN
|
LDA :LEN
|
||||||
|
@ -548,9 +490,7 @@ SAVEFILE LDX $0100 ; Recover SP
|
||||||
LDA #$00 ; Success!
|
LDA #$00 ; Success!
|
||||||
BCC :EXIT ; If close OK
|
BCC :EXIT ; If close OK
|
||||||
LDA #$02 ; Write error
|
LDA #$02 ; Write error
|
||||||
:EXIT PHA
|
:EXIT >>> XFADDR,OSFILERET
|
||||||
>>> XFADDR,OSFILERET
|
|
||||||
PLA
|
|
||||||
>>> XFAUX
|
>>> XFAUX
|
||||||
:LEN DW $0000
|
:LEN DW $0000
|
||||||
:BLOCKS DB $00
|
:BLOCKS DB $00
|
||||||
|
@ -564,10 +504,7 @@ QUIT INC $3F4 ; Invalidate powerup byte
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
* Obtain catalog of current PREFIX dir
|
* Obtain catalog of current PREFIX dir
|
||||||
CATALOG LDX $0100 ; Recover SP
|
CATALOG >>> ENTMAIN
|
||||||
TXS
|
|
||||||
LDA $C081 ; Select ROM
|
|
||||||
LDA $C081
|
|
||||||
|
|
||||||
JSR MLI ; Fetch prefix into BLKBUF
|
JSR MLI ; Fetch prefix into BLKBUF
|
||||||
DB GPFXCMD
|
DB GPFXCMD
|
||||||
|
@ -589,40 +526,28 @@ CATREENTRY
|
||||||
CMP #$4C ; EOF
|
CMP #$4C ; EOF
|
||||||
BEQ :EOF
|
BEQ :EOF
|
||||||
BRA :READERR
|
BRA :READERR
|
||||||
|
|
||||||
:S1 JSR COPYAUXBLK
|
:S1 JSR COPYAUXBLK
|
||||||
|
|
||||||
>>> XFADDR,PRONEBLK
|
>>> XFADDR,PRONEBLK
|
||||||
>>> XFAUX
|
>>> XFAUX
|
||||||
|
|
||||||
:READERR
|
:READERR
|
||||||
:EOF LDA OPENPL+5 ; File ref num
|
:EOF LDA OPENPL+5 ; File ref num
|
||||||
STA CLSPL+1
|
STA CLSPL+1
|
||||||
JSR CLSFILE
|
JSR CLSFILE
|
||||||
|
|
||||||
CATEXIT >>> XFADDR,STARCATRET
|
CATEXIT >>> XFADDR,STARCATRET
|
||||||
PLA
|
|
||||||
>>> XFAUX
|
>>> XFAUX
|
||||||
|
|
||||||
* PRONEBLK call returns here ...
|
* PRONEBLK call returns here ...
|
||||||
CATALOGRET
|
CATALOGRET
|
||||||
LDX #0100 ; Recover SP
|
>>> ENTMAIN
|
||||||
TXS
|
|
||||||
LDA $C081 ; ROM please
|
|
||||||
LDA $C081
|
|
||||||
BRA CATREENTRY
|
BRA CATREENTRY
|
||||||
|
|
||||||
* Set the prefix
|
* Set the prefix
|
||||||
SETPFX LDX $0100 ; Recover SP
|
SETPFX >>> ENTMAIN
|
||||||
TXS
|
|
||||||
LDA $C081 ; ROM, ta!
|
|
||||||
LDA $C081
|
|
||||||
JSR MLI
|
JSR MLI
|
||||||
DB SPFXCMD
|
DB SPFXCMD
|
||||||
DW SPFXPL
|
DW SPFXPL
|
||||||
BCC :S1
|
BCC :S1
|
||||||
JSR BELL ; Beep on error
|
JSR BELL ; Beep on error
|
||||||
|
|
||||||
:S1 >>> XFADDR,STARDIRRET
|
:S1 >>> XFADDR,STARDIRRET
|
||||||
>>> XFAUX
|
>>> XFAUX
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user