home *** CD-ROM | disk | FTP | other *** search
- ;
- ; EXECUTE DOS COMMAND OR OPEN FILE
- ;
- EXECMD JSR OKERR
- LDA SADR
- BPL EXECM0
- AND #$0F
- CMP #$0F
- BEQ EXECM0
- JMP OPENFN
- EXECM0 JSR PRESTR
- LDA (CMDBP),Y
- STA SCHAR
- LDX #$0A
- EXECM1 LDA CMDCHR,X
- CMP SCHAR
- BEQ EXECM2
- DEX
- BPL EXECM1
- LDA #$31 ;SYNTAX ERROR
- JMP ERRD
- EXECM2 STX CMDNO
- CPX #$08
- BCC EXECM3
- JSR SCHEC0
- EXECM3 LDA CMDNO
- ASL A
- TAX
- LDA CMDADR,X
- STA PNTA
- LDA CMDADR+1,X
- STA PNTA+1
- JMP (PNTA)
- CMDCHR .BYTE 'IVDMBUPCRSN'
- CMDADR .WORD FINIT
- .WORD VALDAT ;VALIDATE
- .WORD DUPLIC ;DUPLICATE
- .WORD MEMORY
- .WORD BXCMD
- .WORD USER
- .WORD RECORD ;POINTER
- .WORD COPY
- .WORD RENAME
- .WORD SCRATC
- .WORD NEW
- ;
- ; FIND DRIVE # FROM COMMAND
- ;
- FNDDRV LDX #0
- STX COMMPO
- LDA #':'
- JSR SEARCH
- BEQ FNDDR0
- DEY
- DEY
- STY COMMPO
- FNDDR0 LDA #0
- STA SYXMAP
- LDY COMMPO
- FNDDR2 LDA (CMDBP),Y
- JSR CHKDNS
- BPL FNDDR4
- INY
- CPY CMDLEN
- BCS FNDDR3
- LDY CMDLEN
- DEY
- BNE FNDDR2
- FNDDR3 DEC SYXMAP
- FNDDR4 LDA #0
- STA DRVNO
- RTS
- ;
- ; CHECK DRIVE # CHARACTER
- ;
- CHKDNS CMP #'0'
- BEQ CHKDN0
- CMP #'1'
- BEQ NOTRDY
- LDA #$80
- CHKDN0 RTS
- ;
- ; GET DRIVE # OF FNAMES
- ;
- DRIVFN LDA FNNO
- STA COMMNO
- LDA #1
- STA FNNO
- STA HELPA
- DRCMD LDX #0
- DRCMD1 STX FNCNT
- LDA COMMPO,X
- JSR DRCMD2
- LDX FNCNT
- STA COMMPO,X
- TYA
- STA FNTYPE,X
- INX
- CPX FNNO
- BCC DRCMD1
- RTS
- DRCMD2 TAX
- LDA #':'
- CMP CMDCHN+1,X
- BEQ DRCMD6
- CMP CMDCHN,X
- BEQ DRCMD4
- LDY #$80
- BMI DRCMD5
- DRCMD4 INX
- LDY #0
- DRCMD5 TXA
- RTS
- DRCMD6 LDA CMDCHN,X
- INX
- CMP #'1'
- BNE DRCMD4
- NOTRDY LDA #$74 ;DRIVE NOT READY
- JMP ERRD
- ;
- ; FIND COLON FROM COMMAND
- ;
- COLON LDY #0
- LDX #0
- LDA #':'
- JMP SEARCH
- ;
- ; SYNTAX CHECK FOR R,S OR N
- ;
- SCHEC0 JSR COLON
- BNE SCHECK
- SCHEC1 LDA #$34 ;SYNTAX ERROR
- JMP ERRD
- SCHECK DEY
- DEY
- STY COMMPO
- TXA
- BNE SCHEC1
- SCHE99 LDA #$3D
- JSR SEARCH
- TXA
- BEQ SCHEC2
- LDA #$40
- SCHEC2 ORA #$21
- STA SYXMAP
- INX
- STX COMMNO
- STX FNNO
- LDA JOKER
- BEQ SCHEC3
- LDA #$80
- ORA SYXMAP
- STA SYXMAP
- LDA #0
- STA JOKER
- SCHEC3 TYA
- BEQ SCHEC6
- STA COMMPO,X
- LDA COMMNO
- STA HELPA
- LDA #$8D
- JSR SEARCH
- INX
- STX FNNO
- DEX
- LDA JOKER
- BEQ SCHEC4
- LDA #$08
- SCHEC4 CPX COMMNO
- BEQ SCHEC5
- ORA #$04
- SCHEC5 ORA #$03
- EOR SYXMAP
- STA SYXMAP
- SCHEC6 LDA SYXMAP
- LDX CMDNO
- AND SXMASK-7,X
- BNE SCHEC7
- RTS
- SCHEC7 STA IFOK
- LDA #$30 ;SYNTAX ERROR
- JMP ERRD
- SXMASK .BYTE $51,$DD,$1C,$9E,$1C,$11,$18,$1E,$23
- ;
- ; SEARCH FOR A CHARACTER
- ;
- SEARCH STA SCHAR
- SEARC0 CPY CMDLEN
- BCS SEARC4
- LDA (CMDBP),Y
- INY
- CMP SCHAR
- BEQ SEARC5
- CMP #'*'
- BEQ SEARC1
- CMP #'?'
- BNE SEARC2
- SEARC1 INC JOKER
- SEARC2 CMP #','
- BNE SEARC0
- TYA
- STA COMMPO+1,X
- LDA JOKER
- AND #$7F
- BEQ SEARC3
- LDA #$80
- STA JOKERS,X
- STA JOKER
- SEARC3 INX
- CPX #4
- BCC SEARC0
- SEARC4 LDY #0
- SEARC5 LDA CMDLEN
- STA COMMPO+1,X
- LDA JOKER
- AND #$7F
- BEQ SEARC6
- LDA #$80
- STA JOKERS,X
- SEARC6 TYA
- RTS
- ;
- ; PREPARE STRING SPACE
- ;
- PRESTR LDY CMDBP
- BEQ PREST1
- DEY
- BEQ PREST0
- LDA CMDCHN,Y
- CMP #13
- BEQ PREST1
- DEY
- LDA CMDCHN,Y
- CMP #13
- BEQ PREST1
- INY
- PREST0 INY
- PREST1 STY CMDLEN
- CPY #SAINT-CMDCHN
- LDY #255
- BCC PRES99
- STY CMDNO
- LDA #$32 ;SYNTAX ERROR (TOO LONG)
- JMP ERRD
- PRES99 LDY #0
- TYA
- STA CMDBP
- STA RLENGT
- STA FILTYP
- STA FNDTYP
- STA FNCNT
- STA HELPA
- STA COMMNO
- STA FNNO
- STA JOKER
- STA IFOK
- LDX #5
- PREST3 STA HELPA,X
- STA RECIDX,X
- STA FNDPOS+4,X
- STA JOKERS-1,X
- STA FNSEC-1,X
- DEX
- BNE PREST3
- RTS
- ;
- ; CHANGE DRIVE
- ;
- CHNDRV LDA DRVNO
- EOR #1
- AND #1
- STA DRVNO
- RTS
- ;
- ; FIND FILE TYPE DEFINIER
- ;
- FTYPE LDY #0
- LDA COMMNO
- CMP FNNO
- BEQ FTYPE1
- DEC FNNO
- LDY FNNO
- LDA COMMPO,Y
- TAY
- LDA (CMDBP),Y
- LDY #4
- FTYPE0 CMP TYPSTR,Y
- BEQ FTYPE1
- DEY
- BNE FTYPE0
- FTYPE1 TYA
- ASL A
- STA FNDTYP
- RTS
- ;
- ; SET DRIVE OF FILE
- ;
- SETDRV LDX #$FF
- STX IFDRDY
- LDA BUFFNO
- JSR DSCPR0
- RTS
- .END
-