diff --git a/applecorn.po b/applecorn.po index 1df9985..0bec7d4 100644 Binary files a/applecorn.po and b/applecorn.po differ diff --git a/auxmem.hostfs.s b/auxmem.hostfs.s index b5d10ad..5340927 100644 --- a/auxmem.hostfs.s +++ b/auxmem.hostfs.s @@ -310,15 +310,6 @@ FSCCOMMAND ASC 'CHDIR' ASC 'COPY' DB $80 DW FSCCOPY-1 ; COPY <*objspec*>, LPTR=>params - ASC 'TYPE' - DB $80 - DW FSCTYPE-1 ; TYPE <*objspec*>, LPTR=>params - ASC 'SPOOL' - DB $80 - DW FSCSPOOL-1 ; SPOOL <*objspec*>, LPTR=>params - ASC 'XEXEC' - DB $80 - DW FSCEXEC-1 ; EXEC <*objspec*>, LPTR=>params * DB $FF ; Terminator @@ -847,110 +838,6 @@ DESTROY JSR PARSLPTR ; Copy filename->MOSFILE FSCTITLE RTS -* Handle *TYPE command -* LPTR=>parameters string -* -FSCTYPE JSR LPTRtoXY - PHX - PHY - JSR XYtoLPTR - JSR PARSLPTR ; Just for error handling - BEQ :SYNTAX ; No filename - PLY - PLX - LDA #$40 ; Open for input - JSR FINDHND ; Try to open file - CMP #$00 ; Was file opened? - BEQ :NOTFOUND - TAY ; File handle in Y -:L1 JSR BGETHND ; Read a byte - BCS :CLOSE ; EOF - JSR OSWRCH ; Print the character - LDA ESCFLAG - BMI :ESC - BRA :L1 -:CLOSE LDA #$00 - JSR FINDHND ; Close file -:DONE RTS -:SYNTAX BRK - DB $DC - ASC 'Syntax: TYPE <*objspec*>' - BRK -:NOTFOUND BRK - DB $D6 - ASC 'Not found' - BRK -:ESC LDA #$00 ; Close file - JSR FINDHND - BRK - DB $11 - ASC 'Escape' - BRK - - -* Handle *SPOOL command -* LPTR=>parameters string -* -FSCSPOOL JSR LPTRtoXY - PHX - PHY - JSR XYtoLPTR - JSR PARSLPTR ; Just for error handling - BEQ :CLOSE ; No filename - stop spooling - PLY - PLX - LDA FXSPOOL - BNE :NOTTWICE - LDA #$80 ; Open for writing - JSR FINDHND ; Try to open file - STA FXSPOOL ; Store SPOOL file handle - RTS -:CLOSE PLY ; Fix the stack - PLX - LDY FXSPOOL - CPY #$00 - BEQ :DONE - LDA #$00 - JSR FINDHND ; Close file - STZ FXSPOOL -:DONE RTS -:NOTTWICE BRK - DB $D6 - ASC 'Already spooling' - BRK - - -* Handle *EXEC command -* LPTR=>parameters string -* -FSCEXEC JSR LPTRtoXY - PHX - PHY - JSR XYtoLPTR - JSR PARSLPTR ; Just for error handling - BEQ :SYNTAX ; No filename - PLY - PLX - LDA #$40 ; Open for input - JSR FINDHND ; Try to open file - CMP #$00 ; Was file opened? - BEQ :NOTFOUND - STA FXEXEC ; Store EXEC file handle - RTS - RTS -:SYNTAX PLY ; Fix the stack - PLX - BRK - DB $DC - ASC 'Syntax: EXEC <*objspec*>' - BRK -:NOTFOUND STZ FXEXEC - BRK - DB $D6 - ASC 'Not found' - BRK - - * Parse filename pointed to by XY * Write filename to MOSFILE in main memory * Returns length in A with EQ/NE set diff --git a/auxmem.oscli.s b/auxmem.oscli.s index b77c5c3..3a8bd1b 100644 --- a/auxmem.oscli.s +++ b/auxmem.oscli.s @@ -69,8 +69,16 @@ CMDTABLE ASC 'CAT' ; Must be first command so matches '*.' ASC 'ECHO' DB $80 DW ECHO-1 ; ECHO -> (LPTR)=>params + ASC 'TYPE' + DB $80 + DW TYPE-1 ; TYPE -> (LPTR)=>params + ASC 'SPOOL' + DB $80 + DW SPOOL-1 ; EXEC -> (LPTR)=>params + ASC 'EXEC' + DB $80 + DW EXEC-1 ; EXEC -> (LPTR)=>params * DUMP -* TYPE * BUILD * terminator DB $FF @@ -512,6 +520,110 @@ ECHOLP1 JSR GSREAD JMP ECHOLP1 +* Handle *TYPE command +* LPTR=>parameters string +* +TYPE JSR LPTRtoXY + PHX + PHY + JSR XYtoLPTR + JSR PARSLPTR ; Just for error handling + BEQ :SYNTAX ; No filename + PLY + PLX + LDA #$40 ; Open for input + JSR FINDHND ; Try to open file + CMP #$00 ; Was file opened? + BEQ :NOTFOUND + TAY ; File handle in Y +:L1 JSR BGETHND ; Read a byte + BCS :CLOSE ; EOF + JSR OSWRCH ; Print the character + LDA ESCFLAG + BMI :ESC + BRA :L1 +:CLOSE LDA #$00 + JSR FINDHND ; Close file +:DONE RTS +:SYNTAX BRK + DB $DC + ASC 'Syntax: TYPE <*objspec*>' + BRK +:NOTFOUND BRK + DB $D6 + ASC 'Not found' + BRK +:ESC LDA #$00 ; Close file + JSR FINDHND + BRK + DB $11 + ASC 'Escape' + BRK + + +* Handle *SPOOL command +* LPTR=>parameters string +* +SPOOL JSR LPTRtoXY + PHX + PHY + JSR XYtoLPTR + JSR PARSLPTR ; Just for error handling + BEQ :CLOSE ; No filename - stop spooling + PLY + PLX + LDA FXSPOOL + BNE :NOTTWICE + LDA #$80 ; Open for writing + JSR FINDHND ; Try to open file + STA FXSPOOL ; Store SPOOL file handle + RTS +:CLOSE PLY ; Fix the stack + PLX + LDY FXSPOOL + CPY #$00 + BEQ :DONE + LDA #$00 + JSR FINDHND ; Close file + STZ FXSPOOL +:DONE RTS +:NOTTWICE BRK + DB $D6 + ASC 'Already spooling' + BRK + + +* Handle *EXEC command +* LPTR=>parameters string +* +EXEC JSR LPTRtoXY + PHX + PHY + JSR XYtoLPTR + JSR PARSLPTR ; Just for error handling + BEQ :SYNTAX ; No filename + PLY + PLX + LDA #$40 ; Open for input + JSR FINDHND ; Try to open file + CMP #$00 ; Was file opened? + BEQ :NOTFOUND + STA FXEXEC ; Store EXEC file handle + RTS + RTS +:SYNTAX PLY ; Fix the stack + PLX + BRK + DB $DC + ASC 'Syntax: EXEC <*objspec*>' + BRK +:NOTFOUND STZ FXEXEC + BRK + DB $D6 + ASC 'Not found' + BRK + +