mirror of
https://github.com/bobbimanners/Applecorn.git
synced 2024-06-12 16:29:29 +00:00
Sorted HOSTFS commands into order
Sorted HOSTFS commands into order, and slight tweek so I can concentrate on oscli.s
This commit is contained in:
parent
0011b9f6de
commit
901ad6678c
|
@ -22,6 +22,7 @@
|
||||||
* 02-Oct-2021 ACCESS uses generic access byte parsing.
|
* 02-Oct-2021 ACCESS uses generic access byte parsing.
|
||||||
* PRACCESS shares code with ACCESS.
|
* PRACCESS shares code with ACCESS.
|
||||||
* 03-Oct-2021 PARSNAME checks filename length<64.
|
* 03-Oct-2021 PARSNAME checks filename length<64.
|
||||||
|
* 09-Oct-2022 Sorted commands into order.
|
||||||
|
|
||||||
|
|
||||||
* $B0-$BF Temporary filing system workspace
|
* $B0-$BF Temporary filing system workspace
|
||||||
|
@ -282,34 +283,43 @@ FILEIGNORE PLA ; Returned object type
|
||||||
*******************
|
*******************
|
||||||
* These are commands specific to the filing system that can't be
|
* These are commands specific to the filing system that can't be
|
||||||
* called via OSFILE, OSFSC, etc.
|
* called via OSFILE, OSFSC, etc.
|
||||||
|
* Syntax is:
|
||||||
|
* <afsp> - ambiguous file specifier, acts on a single file, error if not file, wildcards allowed
|
||||||
|
* <fsp> - unambiguous file specifier, acts on a single file, error if not file, wildcards not allowed
|
||||||
|
* <dir> - directory, error if not directory
|
||||||
|
* <drv> - drive, eg :1 :2 :61, error if not drive
|
||||||
|
* <*objspec*> - able to act on multiple objects, any object type, wildcards allowed
|
||||||
|
* <access> - access string
|
||||||
|
* <title> - disk title
|
||||||
|
* (<...>) - optional
|
||||||
*
|
*
|
||||||
FSCCOMMAND ASC 'CHDIR'
|
FSCCOMMAND ASC 'ACCESS'
|
||||||
DB $80
|
DB $FF
|
||||||
DW FSCCHDIR-1 ; CHDIR <*objspec*>, LPTR=>params
|
DW FSCACCESS-1 ; ACCESS <*objspec*> <access>, LPTR=>params
|
||||||
ASC 'CD'
|
ASC 'CD'
|
||||||
DB $80
|
DB $FF
|
||||||
DW FSCCHDIR-1 ; CD <*objspec*> , LPTR=>params
|
DW FSCCHDIR-1 ; CD <dir> , LPTR=>params
|
||||||
ASC 'DIR'
|
ASC 'CHDIR'
|
||||||
DB $80
|
DB $FF
|
||||||
DW FSCCHDIR-1 ; DIR <*objspec*>, LPTR=>params
|
DW FSCCHDIR-1 ; CHDIR <dir>, LPTR=>params
|
||||||
ASC 'DRIVE'
|
|
||||||
DB $80
|
|
||||||
DW FSCDRIVE-1 ; DRIVE <drive>, LPTR=>params
|
|
||||||
ASC 'FREE'
|
|
||||||
DB $80
|
|
||||||
DW FSCFREE-1 ; FREE <drive>, LPTR=>params
|
|
||||||
ASC 'ACCESS'
|
|
||||||
DB $80
|
|
||||||
DW FSCACCESS-1 ; ACCESS <listspec> <access>, LPTR=>params
|
|
||||||
ASC 'TITLE'
|
|
||||||
DB $80
|
|
||||||
DW FSCTITLE-1 ; TITLE (<drive>) <title>, LPTR=>params
|
|
||||||
ASC 'DESTROY'
|
|
||||||
DB $80
|
|
||||||
DW FSCDESTROY-1 ; DESTROY <listspec>, LPTR=>params
|
|
||||||
ASC 'COPY'
|
ASC 'COPY'
|
||||||
DB $80
|
DB $FF
|
||||||
DW FSCCOPY-1 ; COPY <listspec> <*objspec*>, LPTR=>params
|
DW FSCCOPY-1 ; COPY <*objspec*> <dest>, LPTR=>params
|
||||||
|
ASC 'DIR'
|
||||||
|
DB $FF
|
||||||
|
DW FSCCHDIR-1 ; DIR <*objspec*>, LPTR=>params
|
||||||
|
ASC 'DESTROY'
|
||||||
|
DB $FF
|
||||||
|
DW FSCDESTROY-1 ; DESTROY <*objspec*> (Y), LPTR=>params
|
||||||
|
ASC 'DRIVE'
|
||||||
|
DB $FF
|
||||||
|
DW FSCDRIVE-1 ; DRIVE <drv>, LPTR=>params
|
||||||
|
ASC 'FREE'
|
||||||
|
DB $FF
|
||||||
|
DW FSCFREE-1 ; FREE (<drv>), LPTR=>params
|
||||||
|
ASC 'TITLE'
|
||||||
|
DB $FF
|
||||||
|
DW FSCTITLE-1 ; TITLE (<drv>) <title>, LPTR=>params
|
||||||
*
|
*
|
||||||
DB $FF ; Terminator
|
DB $FF ; Terminator
|
||||||
|
|
||||||
|
@ -679,7 +689,7 @@ FSCRENAME JSR PARSNAME ; Copy Arg1->MOSFILE
|
||||||
>>> XF2MAIN,RENFILE
|
>>> XF2MAIN,RENFILE
|
||||||
:SYNTAX BRK
|
:SYNTAX BRK
|
||||||
DB $DC
|
DB $DC
|
||||||
ASC 'Syntax: RENAME <objspec> <objspec>'
|
ASC 'Syntax: RENAME <oldspec> <newspec>'
|
||||||
BRK
|
BRK
|
||||||
* ProDOS returns $40 (Bad filename) for bad renames.
|
* ProDOS returns $40 (Bad filename) for bad renames.
|
||||||
* Not easy to seperate out, so leave as Bad filename error.
|
* Not easy to seperate out, so leave as Bad filename error.
|
||||||
|
@ -701,7 +711,7 @@ FSCCOPY JSR PARSLPTR ; Copy Arg1->MOSFILE
|
||||||
>>> XF2MAIN,COPYFILE ; Do the heavy lifting
|
>>> XF2MAIN,COPYFILE ; Do the heavy lifting
|
||||||
:SYNTAX BRK
|
:SYNTAX BRK
|
||||||
DB $DC
|
DB $DC
|
||||||
ASC 'Syntax: COPY <listspec> <*objspec*>'
|
ASC 'Syntax: COPY <*objspec*> <dest>'
|
||||||
BRK
|
BRK
|
||||||
|
|
||||||
|
|
||||||
|
@ -714,7 +724,7 @@ FSCCHDIR JSR PARSLPTR ; Copy filename->MOSFILE
|
||||||
FSCCHDIR2 >>> XF2MAIN,SETPFX
|
FSCCHDIR2 >>> XF2MAIN,SETPFX
|
||||||
ERRCHDIR BRK
|
ERRCHDIR BRK
|
||||||
DB $DC
|
DB $DC
|
||||||
ASC 'Syntax: DIR <*objspec*>'
|
ASC 'Syntax: DIR <dir>'
|
||||||
BRK
|
BRK
|
||||||
|
|
||||||
|
|
||||||
|
@ -726,7 +736,7 @@ FSCDRIVE JSR PARSLPTR ; Copy arg->MOSFILE
|
||||||
BNE FSCCHDIR2 ; Pass on as CHDIR
|
BNE FSCCHDIR2 ; Pass on as CHDIR
|
||||||
:SYNTAX BRK
|
:SYNTAX BRK
|
||||||
DB $DC
|
DB $DC
|
||||||
ASC 'Syntax: DRIVE <drv> (eg: DRIVE :61)'
|
ASC 'Syntax: DRIVE <drv>'
|
||||||
BRK
|
BRK
|
||||||
|
|
||||||
|
|
||||||
|
@ -815,7 +825,7 @@ FSCACCESS JSR PARSLPTR ; Copy filename->MOSFILE
|
||||||
>>> XF2MAIN,SETPERM
|
>>> XF2MAIN,SETPERM
|
||||||
:SYNTAX BRK
|
:SYNTAX BRK
|
||||||
DB $DC
|
DB $DC
|
||||||
ASC 'Syntax: ACCESS <listspec> <L|W|R>'
|
ASC 'Syntax: ACCESS <*objspec*> <L|W|R>'
|
||||||
BRK
|
BRK
|
||||||
|
|
||||||
|
|
||||||
|
@ -828,12 +838,13 @@ DESTROY JSR PARSLPTR ; Copy filename->MOSFILE
|
||||||
>>> XF2MAIN,MULTIDEL
|
>>> XF2MAIN,MULTIDEL
|
||||||
:SYNTAX BRK
|
:SYNTAX BRK
|
||||||
DB $DC
|
DB $DC
|
||||||
ASC 'Syntax: DESTROY <listspec>'
|
ASC 'Syntax: DESTROY <*objspec*>'
|
||||||
BRK
|
BRK
|
||||||
|
|
||||||
|
|
||||||
* Handle *TITLE command
|
* Handle *TITLE command
|
||||||
* LPTR=>parameters string
|
* LPTR=>parameters string
|
||||||
|
* Syntax: *TITLE (<drive>) <title>
|
||||||
*
|
*
|
||||||
FSCTITLE RTS
|
FSCTITLE RTS
|
||||||
|
|
||||||
|
|
271
auxmem.oscli.s
271
auxmem.oscli.s
|
@ -1,5 +1,5 @@
|
||||||
* AUXMEM.OSCLI.S
|
* AUXMEM.OSCLI.S
|
||||||
* (c) BOBBI 2021 GPLv3
|
* (c) BOBBI 2021-2022 GPLv3
|
||||||
*
|
*
|
||||||
* Handle OSCLI system calls
|
* Handle OSCLI system calls
|
||||||
|
|
||||||
|
@ -12,12 +12,16 @@
|
||||||
* 07-Oct-2022 *CLOSE is a host command, fixed *EXEC.
|
* 07-Oct-2022 *CLOSE is a host command, fixed *EXEC.
|
||||||
* 08-Oct-2022 Rewrote *TYPE, *DUMP, *SPOOL, shares code with *EXEC.
|
* 08-Oct-2022 Rewrote *TYPE, *DUMP, *SPOOL, shares code with *EXEC.
|
||||||
* Sorted command table, added *HELP FILE.
|
* Sorted command table, added *HELP FILE.
|
||||||
|
* Optimised CLILOOK dispatcher.
|
||||||
|
|
||||||
|
|
||||||
* COMMAND TABLE
|
* COMMAND TABLE
|
||||||
***************
|
***************
|
||||||
* Table structure is: { string, byte OR $80, destword-1 } $00
|
* Table structure is: { string, byte OR $80, destword-1 } $00
|
||||||
* Commands are entered with A=command byte with b7=1
|
* Commands are entered with A=command byte with b7=1
|
||||||
|
* EQ=no parameter
|
||||||
|
* b6=0 - Enter with XY=>parameters
|
||||||
|
* b6=1 - Enter with LPTR,Y=>parameters
|
||||||
*
|
*
|
||||||
* Ok, let's get around to sorting these
|
* Ok, let's get around to sorting these
|
||||||
CMDTABLE
|
CMDTABLE
|
||||||
|
@ -28,17 +32,17 @@ CMDFILE ASC 'CAT' ; Must be first command so matches '*.'
|
||||||
DB $88
|
DB $88
|
||||||
DW STARFILE-1 ; CDIR -> OSFILE 08, CBLK=>filename
|
DW STARFILE-1 ; CDIR -> OSFILE 08, CBLK=>filename
|
||||||
ASC 'CLOSE'
|
ASC 'CLOSE'
|
||||||
DB $80
|
DB $FF
|
||||||
DW CMDCLOSE-1 ; CLOSE -> (LPTR)=>params
|
DW CMDCLOSE-1 ; CLOSE -> (LPTR)=>params
|
||||||
ASC 'DELETE'
|
ASC 'DELETE'
|
||||||
DB $86
|
DB $86
|
||||||
DW STARFILE-1 ; DELETE -> OSFILE 06, CBLK=>filename
|
DW STARFILE-1 ; DELETE -> OSFILE 06, CBLK=>filename
|
||||||
ASC 'DUMP'
|
ASC 'DUMP'
|
||||||
DB $80
|
DB $81 ; TO DO
|
||||||
DW CMDDUMP-1 ; DUMP -> (LPTR)=>params
|
DW CMDDUMP-1 ; DUMP -> XY=>params
|
||||||
ASC 'EXEC'
|
ASC 'EXEC'
|
||||||
DB $80
|
DB $81 ; TO DO
|
||||||
DW CMDEXEC-1 ; EXEC -> (LPTR)=>params
|
DW CMDEXEC-1 ; EXEC -> XY=>params
|
||||||
ASC 'EX'
|
ASC 'EX'
|
||||||
DB $89
|
DB $89
|
||||||
DW STARFSC-1 ; EX -> FSC 9, XY=>params
|
DW STARFSC-1 ; EX -> FSC 9, XY=>params
|
||||||
|
@ -46,7 +50,7 @@ CMDFILE ASC 'CAT' ; Must be first command so matches '*.'
|
||||||
DB $8A
|
DB $8A
|
||||||
DW STARFSC-1 ; INFO -> FSC 10, XY=>params
|
DW STARFSC-1 ; INFO -> FSC 10, XY=>params
|
||||||
ASC 'LOAD'
|
ASC 'LOAD'
|
||||||
DB $FF
|
DB $81
|
||||||
DW STARLOAD-1 ; LOAD -> OSFILE FF, CBLK=>filename
|
DW STARLOAD-1 ; LOAD -> OSFILE FF, CBLK=>filename
|
||||||
ASC 'MKDIR'
|
ASC 'MKDIR'
|
||||||
DB $88
|
DB $88
|
||||||
|
@ -61,41 +65,42 @@ CMDFILE ASC 'CAT' ; Must be first command so matches '*.'
|
||||||
DB $8C
|
DB $8C
|
||||||
DW STARFSC-1 ; RENAME -> FSC 12, XY=>params
|
DW STARFSC-1 ; RENAME -> FSC 12, XY=>params
|
||||||
ASC 'SAVE'
|
ASC 'SAVE'
|
||||||
DB $FF
|
DB $81
|
||||||
DW STARSAVE-1 ; SAVE -> OSFILE 00, CBLK=>filename
|
DW STARSAVE-1 ; SAVE -> OSFILE 00, CBLK=>filename
|
||||||
ASC 'SPOOL'
|
ASC 'SPOOL'
|
||||||
DB $80
|
DB $81 ; TO DO
|
||||||
DW CMDSPOOL-1 ; SPOOL -> (LPTR)=>params
|
DW CMDSPOOL-1 ; SPOOL -> XY=>params
|
||||||
ASC 'TYPE'
|
ASC 'TYPE'
|
||||||
DB $80
|
DB $81 ; TO DO
|
||||||
DW CMDTYPE-1 ; TYPE -> (LPTR)=>params
|
DW CMDTYPE-1 ; TYPE -> XY=>params
|
||||||
DB $00 ; Split between HELP lists
|
* Split between HELP lists
|
||||||
|
DB $00
|
||||||
*
|
*
|
||||||
CMDMOS ASC 'BASIC'
|
CMDMOS ASC 'BASIC'
|
||||||
DB $80
|
DB $FF
|
||||||
DW STARBASIC-1 ; BASIC -> (LPTR)=>params
|
DW STARBASIC-1 ; BASIC -> (LPTR)=>params
|
||||||
ASC 'ECHO'
|
ASC 'ECHO'
|
||||||
DB $80
|
DB $FF
|
||||||
DW ECHO-1 ; ECHO -> (LPTR)=>params
|
DW CMDECHO-1 ; ECHO -> (LPTR)=>params
|
||||||
ASC 'FX'
|
ASC 'FX'
|
||||||
DB $80
|
DB $FF
|
||||||
DW STARFX-1 ; FX -> OSBYTE A,X,Y (LPTR)=>params
|
DW STARFX-1 ; FX -> OSBYTE A,X,Y (LPTR)=>params
|
||||||
ASC 'FAST'
|
ASC 'FAST'
|
||||||
DB $80
|
|
||||||
DW FAST-1 ; FAST -> (LPTR)=>params
|
|
||||||
ASC 'HELP'
|
|
||||||
DB $FF
|
DB $FF
|
||||||
|
DW CMDFAST-1 ; FAST -> (LPTR)=>params
|
||||||
|
ASC 'HELP'
|
||||||
|
DB $81
|
||||||
DW STARHELP-1 ; HELP -> XY=>params
|
DW STARHELP-1 ; HELP -> XY=>params
|
||||||
ASC 'KEY'
|
ASC 'KEY'
|
||||||
DB $80
|
DB $FF
|
||||||
DW STARKEY-1 ; KEY -> (LPTR)=>params
|
DW STARKEY-1 ; KEY -> (LPTR)=>params
|
||||||
ASC 'QUIT'
|
ASC 'QUIT'
|
||||||
DB $80
|
DB $FF
|
||||||
DW STARQUIT-1 ; QUIT -> (LPTR)=>params
|
DW STARQUIT-1 ; QUIT -> (LPTR)=>params
|
||||||
ASC 'SLOW'
|
ASC 'SLOW'
|
||||||
DB $80
|
DB $FF
|
||||||
DW SLOW-1 ; SLOW -> (LPTR)=>params
|
DW CMDSLOW-1 ; SLOW -> (LPTR)=>params
|
||||||
* terminator
|
* Table terminator
|
||||||
DB $FF
|
DB $FF
|
||||||
|
|
||||||
|
|
||||||
|
@ -163,21 +168,28 @@ CLIMATCH2 JSR CLIMATCH3 ; Call the routine
|
||||||
RTS ; Return A=0 to claim
|
RTS ; Return A=0 to claim
|
||||||
|
|
||||||
CLIMATCH3 JSR SKIPSPC ; (OSLPTR),Y=>parameters
|
CLIMATCH3 JSR SKIPSPC ; (OSLPTR),Y=>parameters
|
||||||
|
PHP ; Save EQ=end of line
|
||||||
LDA (OSTEXT,X) ; Command byte
|
LDA (OSTEXT,X) ; Command byte
|
||||||
PHA
|
|
||||||
JSR CLISTEP ; Address low byte
|
|
||||||
STA OSTEMP
|
STA OSTEMP
|
||||||
JSR CLISTEP ; Address high byte
|
JSR CLISTEP ; Address low byte
|
||||||
PLX ; Get command byte
|
|
||||||
PHA ; Push address high
|
|
||||||
LDA OSTEMP
|
|
||||||
PHA ; Push address low
|
|
||||||
TXA ; Command byte
|
|
||||||
PHA
|
PHA
|
||||||
|
JSR CLISTEP ; Address high byte
|
||||||
|
TAX ; X=high
|
||||||
|
PLA ; A=low
|
||||||
|
PLP ; EQ=end of line
|
||||||
|
PHX ; SP->high
|
||||||
|
PHA ; SP->low, high
|
||||||
|
PHP ; SP->flg, low, high
|
||||||
|
* BIT OSTEMP
|
||||||
|
* BVS CLICALL
|
||||||
|
LDA OSTEMP
|
||||||
ASL A ; Move bit 6 into bit 7
|
ASL A ; Move bit 6 into bit 7
|
||||||
BEQ CLICALL ; If $80-&BF don't convert LPTR
|
BMI CLICALL ; If b6=1 don't convert LPTR
|
||||||
|
BEQ CLICALL ; *TEMP* If $80, skip - remove when HOSTFS updated
|
||||||
|
*
|
||||||
JSR LPTRtoXY ; XY=>parameters
|
JSR LPTRtoXY ; XY=>parameters
|
||||||
CLICALL PLA ; A=command parameter
|
CLICALL LDA OSTEMP ; A=command parameter
|
||||||
|
PLP ; EQ=no parameters
|
||||||
RTS ; Call command routine
|
RTS ; Call command routine
|
||||||
|
|
||||||
CLISTEP INC OSTEXT+0,X ; Point to next table byte
|
CLISTEP INC OSTEXT+0,X ; Point to next table byte
|
||||||
|
@ -220,7 +232,7 @@ CLISLASH JSR SKIPSPC1
|
||||||
BEQ CLIDONE ; */<cr>
|
BEQ CLIDONE ; */<cr>
|
||||||
LDA #$02
|
LDA #$02
|
||||||
BNE STARFSC2 ; FSC 2 = */filename
|
BNE STARFSC2 ; FSC 2 = */filename
|
||||||
|
*
|
||||||
CLIUNKNOWN LDA #$04
|
CLIUNKNOWN LDA #$04
|
||||||
JSR SERVICE ; Offer to sideways ROM(s)
|
JSR SERVICE ; Offer to sideways ROM(s)
|
||||||
BEQ CLIDONE ; Claimed
|
BEQ CLIDONE ; Claimed
|
||||||
|
@ -244,13 +256,16 @@ ERRBADADD BRK
|
||||||
BRK
|
BRK
|
||||||
|
|
||||||
|
|
||||||
|
* MOS COMMANDS
|
||||||
|
**************
|
||||||
|
|
||||||
* *FX num(,num(,num))
|
* *FX num(,num(,num))
|
||||||
*********************
|
* -------------------
|
||||||
STARFX JSR SCANDEC
|
STARFX JSR SCANDEC
|
||||||
BRA STARBYTE1
|
BRA STARBYTE1
|
||||||
|
|
||||||
* Commands passed to OSBYTE
|
* Commands passed to OSBYTE
|
||||||
***************************
|
* -------------------------
|
||||||
STARBYTE JSR XYtoLPTR
|
STARBYTE JSR XYtoLPTR
|
||||||
STARBYTE1 STA OSAREG ; Save OSBYTE number
|
STARBYTE1 STA OSAREG ; Save OSBYTE number
|
||||||
LDA #$00 ; Default X and Y
|
LDA #$00 ; Default X and Y
|
||||||
|
@ -273,6 +288,9 @@ STARBYTE2 LDY OSYREG
|
||||||
BVS ERRBADCMD
|
BVS ERRBADCMD
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
* Line scanning
|
||||||
|
* -------------
|
||||||
|
|
||||||
* Scan decimal number
|
* Scan decimal number
|
||||||
SCANDEC JSR SKIPSPC
|
SCANDEC JSR SKIPSPC
|
||||||
JSR SCANDIGIT ; Check first digit
|
JSR SCANDIGIT ; Check first digit
|
||||||
|
@ -381,8 +399,29 @@ XYtoLPTR STX OSLPTR+0
|
||||||
LDY #0
|
LDY #0
|
||||||
STARHELP9 RTS
|
STARHELP9 RTS
|
||||||
|
|
||||||
* Print *HELP text
|
* *BASIC
|
||||||
STARHELP JSR XYtoLPTR ; (OSLPTR),Y=>parameters
|
* ------
|
||||||
|
STARBASIC LDX MAXROM
|
||||||
|
:BASICLP JSR ROMSELECT
|
||||||
|
BIT $8006
|
||||||
|
BPL :BASICGO ; No service, must be BASIC
|
||||||
|
DEX
|
||||||
|
BPL :BASICLP
|
||||||
|
JMP ERRBADCMD ; No BASIC, give an error
|
||||||
|
:BASICGO JMP BYTE8E
|
||||||
|
|
||||||
|
* *ECHO <GSTRANS string>
|
||||||
|
* ----------------------
|
||||||
|
CMDECHO SEC
|
||||||
|
ECHO0 JSR GSINIT
|
||||||
|
:ECHOLP1 JSR GSREAD
|
||||||
|
BCS STARHELP9
|
||||||
|
JSR OSWRCH
|
||||||
|
JMP :ECHOLP1
|
||||||
|
|
||||||
|
* *HELP (<options>)
|
||||||
|
* -----------------
|
||||||
|
STARHELP JSR XYtoLPTR ; Update OSLPTR=>parameters
|
||||||
JSR PRHELLO ; Unify version message
|
JSR PRHELLO ; Unify version message
|
||||||
LDX #<HLPTABLE ; XY=>command table
|
LDX #<HLPTABLE ; XY=>command table
|
||||||
LDY #>HLPTABLE
|
LDY #>HLPTABLE
|
||||||
|
@ -391,14 +430,15 @@ STARHELP JSR XYtoLPTR ; (OSLPTR),Y=>parameters
|
||||||
LDA $8006 ; Does ROM have service entry?
|
LDA $8006 ; Does ROM have service entry?
|
||||||
BMI STARHELP6 ; Yes, skip to send service call
|
BMI STARHELP6 ; Yes, skip to send service call
|
||||||
JSR OSNEWL
|
JSR OSNEWL
|
||||||
LDA #$09 ; Language name
|
LDX #$09 ; Language name
|
||||||
LDY #$80 ; *TO DO* make this and BYTE8E
|
LDY #$80 ; *TO DO* make this and BYTE8E
|
||||||
JSR PRSTR ; use same code
|
JSR OSPRSTR ; use same code
|
||||||
JSR OSNEWL
|
JSR OSNEWL
|
||||||
STARHELP6 LDY #0 ; (OSLPTR),Y=>parameters
|
STARHELP6 LDY #0 ; (OSLPTR),Y=>parameters
|
||||||
LDA #9
|
LDA #9
|
||||||
JMP SERVICE ; Pass to sideways ROM(s)
|
JMP SERVICE ; Pass to sideways ROM(s)
|
||||||
|
|
||||||
|
* Print *HELP text
|
||||||
HELPHOSTFS LDX #<FSCCOMMAND ; *HELP HOSTFS
|
HELPHOSTFS LDX #<FSCCOMMAND ; *HELP HOSTFS
|
||||||
LDY #>FSCCOMMAND
|
LDY #>FSCCOMMAND
|
||||||
BNE HELPLIST
|
BNE HELPLIST
|
||||||
|
@ -435,14 +475,25 @@ STARHELP4 LDA #$08
|
||||||
JSR OSWRCH
|
JSR OSWRCH
|
||||||
JMP FORCENL
|
JMP FORCENL
|
||||||
|
|
||||||
|
* *KEY <num> <GSTRANS string>
|
||||||
|
* ---------------------------
|
||||||
|
STARKEY RTS
|
||||||
|
|
||||||
* Handle *QUIT command
|
* *QUIT command
|
||||||
|
* -------------
|
||||||
STARQUIT >>> XF2MAIN,QUIT
|
STARQUIT >>> XF2MAIN,QUIT
|
||||||
|
|
||||||
|
|
||||||
STARSAVE LDA #$00 ; Set A=0 - SAVE
|
* FILING COMMANDS
|
||||||
STARLOAD PHA ; Entered with A=$FF - LOAD
|
* ***************
|
||||||
JSR XYtoLPTR ; OSLPTR=>filename
|
|
||||||
|
* *LOAD and *SAVE
|
||||||
|
* ---------------
|
||||||
|
STARLOAD LDA #$7E ; Set here to A=$7E -> $FF, LOAD
|
||||||
|
STARSAVE EOR #$81 ; Entered with A=$81 -> $00, SAVE
|
||||||
|
* Can tweek this after HOSTFS command table updated
|
||||||
|
PHA
|
||||||
|
JSR XYtoLPTR ; Update OSLPTR=>filename
|
||||||
JSR SKIPWORD ; Step past filename
|
JSR SKIPWORD ; Step past filename
|
||||||
BNE STARLDSV3 ; filename followed by addr
|
BNE STARLDSV3 ; filename followed by addr
|
||||||
*
|
*
|
||||||
|
@ -508,7 +559,7 @@ STARLDSVGO LDX OSLPTR+0
|
||||||
*
|
*
|
||||||
|
|
||||||
* Commands passed to OSFILE
|
* Commands passed to OSFILE
|
||||||
***************************
|
* -------------------------
|
||||||
STARFILE EOR #$80
|
STARFILE EOR #$80
|
||||||
STX OSFILECB+0
|
STX OSFILECB+0
|
||||||
STY OSFILECB+1
|
STY OSFILECB+1
|
||||||
|
@ -519,53 +570,20 @@ STARFILE EOR #$80
|
||||||
BNE STARDONE
|
BNE STARDONE
|
||||||
JMP ERRNOTFND
|
JMP ERRNOTFND
|
||||||
|
|
||||||
STARKEY
|
|
||||||
STARDONE RTS
|
|
||||||
|
|
||||||
|
|
||||||
* *BASIC
|
|
||||||
********
|
|
||||||
STARBASIC LDX MAXROM
|
|
||||||
:BASICLP JSR ROMSELECT
|
|
||||||
BIT $8006
|
|
||||||
BPL :BASICGO ; No service, must be BASIC
|
|
||||||
DEX
|
|
||||||
BPL :BASICLP
|
|
||||||
JMP ERRBADCMD ; No BASIC, give an error
|
|
||||||
:BASICGO JMP BYTE8E
|
|
||||||
|
|
||||||
|
|
||||||
* *ECHO <GSTRANS string>
|
|
||||||
************************
|
|
||||||
ECHO SEC
|
|
||||||
ECHO0 JSR GSINIT
|
|
||||||
ECHOLP1 JSR GSREAD
|
|
||||||
BCS STARDONE
|
|
||||||
JSR OSWRCH
|
|
||||||
JMP ECHOLP1
|
|
||||||
|
|
||||||
* FILING UTILITIES
|
|
||||||
* ================
|
|
||||||
|
|
||||||
* *CLOSE
|
* *CLOSE
|
||||||
********
|
* ------
|
||||||
CMDCLOSE LDA #$00
|
CMDCLOSE LDA #$00
|
||||||
TAY
|
TAY
|
||||||
JSR OSFIND ; Close all files
|
JSR OSFIND ; Close all files
|
||||||
STA FXEXEC ; Ensure Spool/Exec handles cleared
|
STA FXEXEC ; Ensure Spool/Exec handles cleared
|
||||||
STA FXSPOOL
|
STA FXSPOOL
|
||||||
RTS
|
STARDONE RTS
|
||||||
|
|
||||||
* *TYPE <afsp>
|
* *TYPE <afsp>
|
||||||
**************
|
* ------------
|
||||||
* LPTR=>parameters string
|
* XY=>parameters string, EQ=no parameters
|
||||||
*
|
|
||||||
CMDTYPE
|
|
||||||
LDA (OSLPTR),Y ; TEMP
|
|
||||||
CMP #$0D ; TEMP
|
|
||||||
BEQ ERRTYPE ; No filename
|
|
||||||
JSR LPTRtoXY ; TEMP
|
|
||||||
*
|
*
|
||||||
|
CMDTYPE BEQ ERRTYPE ; No filename
|
||||||
JSR OPENINFILE ; Try to open file
|
JSR OPENINFILE ; Try to open file
|
||||||
:LOOP JSR OSBGET ; Read a byte
|
:LOOP JSR OSBGET ; Read a byte
|
||||||
BCS TYPDMPEND ; EOF
|
BCS TYPDMPEND ; EOF
|
||||||
|
@ -593,16 +611,11 @@ ERRDUMP BRK
|
||||||
ASC 'Syntax: DUMP <afsp>'
|
ASC 'Syntax: DUMP <afsp>'
|
||||||
BRK
|
BRK
|
||||||
|
|
||||||
|
|
||||||
* Handle *DUMP command
|
* Handle *DUMP command
|
||||||
* LPTR=>parameters string
|
* --------------------
|
||||||
*
|
* XY=>parameters string, EQ=no parameters
|
||||||
CMDDUMP
|
|
||||||
LDA (OSLPTR),Y ; TEMP
|
|
||||||
CMP #$0D ; TEMP
|
|
||||||
BEQ ERRDUMP ; No filename
|
|
||||||
JSR LPTRtoXY ; TEMP
|
|
||||||
*
|
*
|
||||||
|
CMDDUMP BEQ ERRDUMP ; No filename
|
||||||
JSR OPENINFILE ; Try to open file
|
JSR OPENINFILE ; Try to open file
|
||||||
STZ OSNUM+0 ; Offset = zero
|
STZ OSNUM+0 ; Offset = zero
|
||||||
STZ OSNUM+1
|
STZ OSNUM+1
|
||||||
|
@ -670,16 +683,11 @@ CMDDUMP
|
||||||
BCC :LOOP1
|
BCC :LOOP1
|
||||||
JMP TYPCLOSE ; Close and finish
|
JMP TYPCLOSE ; Close and finish
|
||||||
|
|
||||||
|
* *SPOOL (<afsp>)
|
||||||
* Handle *SPOOL command
|
* ---------------
|
||||||
* LPTR=>parameters string
|
* XY=>parameters string, EQ=no parameters
|
||||||
*
|
|
||||||
CMDSPOOL
|
|
||||||
LDA (OSLPTR),Y ; TEMP
|
|
||||||
CMP #$0D ; TEMP
|
|
||||||
PHP ; TEMP
|
|
||||||
JSR LPTRtoXY ; TEMP
|
|
||||||
*
|
*
|
||||||
|
CMDSPOOL PHP ; Save EQ/NE
|
||||||
PHY ; Save Y
|
PHY ; Save Y
|
||||||
LDY FXSPOOL ; Get SPOOL handle
|
LDY FXSPOOL ; Get SPOOL handle
|
||||||
BEQ :SPOOL1 ; Wasn't open, skip closing
|
BEQ :SPOOL1 ; Wasn't open, skip closing
|
||||||
|
@ -690,20 +698,16 @@ CMDSPOOL
|
||||||
PLP ; Get NE=filename, EQ=no filename
|
PLP ; Get NE=filename, EQ=no filename
|
||||||
BEQ :DONE ; No filename, all done
|
BEQ :DONE ; No filename, all done
|
||||||
LDA #$80 ; A=OPENOUT, for writing
|
LDA #$80 ; A=OPENOUT, for writing
|
||||||
JSR OUTPUTFILE ; Try to open file
|
JSR OPENAFILE ; Try to open file
|
||||||
STA FXSPOOL ; Store SPOOL handle
|
STA FXSPOOL ; Store SPOOL handle
|
||||||
:DONE RTS
|
:DONE RTS
|
||||||
|
|
||||||
|
* *EXEC (<afsp>)
|
||||||
* Handle *EXEC command
|
* --------------
|
||||||
* LPTR=>parameters string
|
* XY=>parameters string, EQ=no parameters
|
||||||
*
|
|
||||||
CMDEXEC
|
|
||||||
LDA (OSLPTR),Y ; TEMP
|
|
||||||
CMP #$0D ; TEMP
|
|
||||||
PHP ; TEMP
|
|
||||||
JSR LPTRtoXY ; TEMP
|
|
||||||
*
|
*
|
||||||
|
CMDEXEC0 LDA #$00 ; Close EXEC file
|
||||||
|
CMDEXEC PHP ; Save EQ/NE
|
||||||
PHY ; Save Y
|
PHY ; Save Y
|
||||||
LDY FXEXEC ; Get EXEC handle
|
LDY FXEXEC ; Get EXEC handle
|
||||||
BEQ :EXEC1 ; Wasn't open, skip closing it
|
BEQ :EXEC1 ; Wasn't open, skip closing it
|
||||||
|
@ -718,43 +722,47 @@ CMDEXEC
|
||||||
EXECDONE RTS
|
EXECDONE RTS
|
||||||
|
|
||||||
OPENINFILE LDA #$40 ; Open for input
|
OPENINFILE LDA #$40 ; Open for input
|
||||||
OUTPUTFILE JSR OSFIND ; Try to open file
|
OPENAFILE JSR OSFIND ; Try to open file
|
||||||
TAY ; Was file opened?
|
TAY ; Was file opened?
|
||||||
BNE EXECDONE ; File opened
|
BNE EXECDONE ; File opened
|
||||||
EXECNOTFND JMP ERRNOTFND ; File not found
|
EXECNOTFND JMP ERRNOTFND ; File not found
|
||||||
|
|
||||||
|
|
||||||
*
|
* ZIP SPEED COMMANDS
|
||||||
|
* ==================
|
||||||
|
|
||||||
* Handle *FAST command
|
* Handle *FAST command
|
||||||
|
* --------------------
|
||||||
* Turn Apple II accelerators on
|
* Turn Apple II accelerators on
|
||||||
FAST LDA #$80 ; Apple IIgs
|
CMDFAST LDA #$80 ; Apple IIgs
|
||||||
TSB $C036
|
TSB $C036
|
||||||
STA GSSPEED
|
STA GSSPEED
|
||||||
JSR UNLOCKZIP ; ZipChip
|
JSR ZIPUNLOCK ; ZipChip
|
||||||
JSR DETECTZIP
|
JSR ZIPDETECT
|
||||||
BCC :NOZIP
|
BCC :NOZIP
|
||||||
STA $C05B ; Enable
|
STA $C05B ; Enable
|
||||||
JMP LOCKZIP
|
BCS ZIPLOCK
|
||||||
:NOZIP STA $C05C ; Ultrawarp fast
|
:NOZIP STA $C05C ; Ultrawarp fast
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
*
|
|
||||||
* Handle *SLOW command
|
* Handle *SLOW command
|
||||||
|
* --------------------
|
||||||
* Turn Apple II accelerators off
|
* Turn Apple II accelerators off
|
||||||
SLOW LDA #$80 ; Apple IIgs
|
CMDSLOW LDA #$80 ; Apple IIgs
|
||||||
TRB $C036
|
TRB $C036
|
||||||
STZ GSSPEED
|
STZ GSSPEED
|
||||||
JSR UNLOCKZIP ; ZipChip
|
JSR ZIPUNLOCK ; ZipChip
|
||||||
JSR DETECTZIP
|
JSR ZIPDETECT
|
||||||
BCC :NOZIP
|
BCC :NOZIP
|
||||||
STZ $C05A ; Disable
|
STZ $C05A ; Disable
|
||||||
JMP LOCKZIP
|
BCS ZIPLOCK
|
||||||
:NOZIP STA $C05D ; Ultrawarp slow
|
:NOZIP STA $C05D ; Ultrawarp slow
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
* Detect a ZipChip
|
* Detect a ZipChip
|
||||||
* Set carry is ZipChip found
|
* Set carry is ZipChip found
|
||||||
DETECTZIP LDA $C05C ; ZipChip manual p25
|
DETECTZIP
|
||||||
|
ZIPDETECT LDA $C05C ; ZipChip manual p25
|
||||||
EOR #$FF
|
EOR #$FF
|
||||||
STA $C05C
|
STA $C05C
|
||||||
CMP $C05C
|
CMP $C05C
|
||||||
|
@ -762,14 +770,16 @@ DETECTZIP LDA $C05C ; ZipChip manual p25
|
||||||
EOR #$FF
|
EOR #$FF
|
||||||
STA $C05C
|
STA $C05C
|
||||||
CMP $C05C
|
CMP $C05C
|
||||||
BNE :NOZIP
|
BEQ :ZIPOK ; BEQ already has SEC
|
||||||
SEC
|
* BNE :NOZIP
|
||||||
RTS
|
* SEC
|
||||||
|
* RTS
|
||||||
:NOZIP CLC
|
:NOZIP CLC
|
||||||
RTS
|
:ZIPOK RTS
|
||||||
|
|
||||||
* Unlock ZipChip registers
|
* Unlock ZipChip registers
|
||||||
UNLOCKZIP PHP
|
UNLOCKZIP
|
||||||
|
ZIPUNLOCK PHP
|
||||||
SEI ; Timing sensitive
|
SEI ; Timing sensitive
|
||||||
LDA #$5A
|
LDA #$5A
|
||||||
STA $C05A
|
STA $C05A
|
||||||
|
@ -780,7 +790,8 @@ UNLOCKZIP PHP
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
* Lock ZipChip registers
|
* Lock ZipChip registers
|
||||||
LOCKZIP LDA #$A5
|
LOCKZIP
|
||||||
|
ZIPLOCK LDA #$A5
|
||||||
STA $C05A
|
STA $C05A
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user