URL
https://opencores.org/ocsvn/System09/System09/trunk
Subversion Repositories System09
[/] [System09/] [trunk/] [src/] [Flex9/] [f9-cli.asm] - Rev 59
Go to most recent revision | Compare with Previous | Blame | View Log
*********************************************
*
* FLEX COMMAND LINE INTERPRETER & SUBROUTINES
*
*********************************************
ORG $CD00
*
** FLEX JUMPS
*
COLDS JMP >COLD1
WARMS JMP >WARM1
RENTER JMP >RENT1
INCH JMP >INCH
INCH2 JMP >INCH2
OUTCH JMP >OUTCH
OUTCH2 JMP >OUTCH2
GETCHR JMP >GETCH1
PUTCHR JMP >PUTCH1
INBUFF JMP >INBUF1
PSTRNG JMP >PSTRG1
CLASS JMP >CLASS1
PCRLF JMP >PCRLF1
NXTCH JMP >NXTCH1
RSTRIO JMP >RSTIO1
GETFIL JMP >GETFL1
LOAD JMP >LOAD1
SETEXT JMP >SETEX1
ADDBX JMP >ADDBX1
OUTDEC JMP >OUTDC1
OUTHEX JMP >OUTHX1
RPTERR JMP >RPTER1
GETHEX JMP >GETHX1
OUTADR JMP >OUTAD1
INDEC JMP >INDEC1
DOCMND JMP >DOCMD1
ZCD4E JMP >ZCD4E
JMP >ZCE05
JMP >ZCE05
*
** COLD START ENTRY
*
COLD1 LDS #ZC07F
ZCD5B CLR >LASTRM
JSR >ZD400
CLR >CMDFLG
JSR >ZD3FD
*
** WARM START ENTRY
*
WARM1 LDS #ZC07F
JSR >WARMDR
LDX #WARMS
STX >ESCVEC
LDX #PRSPL1
STX [SWIVVC]
LDX >IHNDVC
STX [IRQVVC]
LDX #ZCCF8
STX >ZCC31
CLR >ZCC34
CLR >ZCC4C
BSR RSTIO1
LDA >LASTRM
CMPA >EOLCHR
BNE ZCD9D
INC >LINPTR+1
BRA RENT1
ZCD9D TST >CMDFLG
LBNE ZD33B
JSR >FMSCLS
BNE ZCD5B
LDX #PMTSTR
JSR >PSTRG1
BSR INBUF1
*
** MAIN CONTROL LOOP
*
RENT1 JSR >ZD0D4
CMPA #$0D
BEQ ZCD9D
ZCDB8 LDX #FCB
INC >ZCC0D
JSR >GETFL1
BCS ZCDD9
LDX #CMDTBL
BSR ZCE06
BEQ ZCDD3
LDX >UCTVEC
BEQ ZCDD6
BSR ZCE06
BNE ZCDD6
ZCDD3 JMP [$01,X]
ZCDD6 JSR >ZD22E
ZCDD9 LDX #WOTMSG
LDA #$15
ZCDDE STA >ERRTYP
ZCDE1 JSR >PSTRG1
ZCDE4 CLR >LASTRM
JMP >WARM1
*
** RESTORE IO VECTORS
*
RSTIO1 LDX >OUTCH2+1
STX >OUTCH+1
LDX >INCH2+1
STX >INCH+1
CLR >INPSWT
CLR >OUTSWT
CLR >SIOFLG
CLR >FIPADR
CLR >FOPADR
ZCE05 RTS
ZCE06 LDY #ZC844
ZCE0A LDA ,Y+
CMPA #$5F
BLS ZCE12
SUBA #$20
ZCE12 CMPA ,X+
BNE ZCE1E
TST ,X
BNE ZCE0A
TST ,Y
BEQ ZCE2A
ZCE1E TST ,X+
BNE ZCE1E
LEAX $02,X
TST ,X
BNE ZCE06
ANDCC #$FB
ZCE2A RTS
*
** GET USER COMMAND LINE
*
INBUF1 LDX #LINBUF
STX >LINPTR
ZCE31 JSR >GETCH1
CMPA >DELCHR
BEQ ZCE56
CMPA >BSPCHR
BEQ ZCE5D
CMPA #$0D
BEQ ZCE4F
CMPA #$0A
BEQ ZCE78
CMPA #$1F
BLS ZCE31
ZCE4A CMPX #ZC0FF
BEQ ZCE31
ZCE4F STA ,X+
CMPA #$0D
BNE ZCE31
RTS
ZCE56 LDX #QRYSTR
BSR PSTRG1
BRA INBUF1
ZCE5D CMPX #LINBUF
BEQ ZCE56
LEAX -$01,X
LDA >BSECHR
CMPA #$08
BNE ZCE73
LDA #$20
JSR >ZCF66
LDA >BSECHR
ZCE73 JSR >ZCF66
BRA ZCE31
ZCE78 LDA #$0D
JSR >PUTCH1
LDA #$20
BRA ZCE4A
PSTRG1 BSR PCRLF1
ZCE83 LDA ,X
CMPA #$04
BEQ ZCEF8
JSR >PUTCH1
LEAX $01,X
BRA ZCE83
ZCE90 JSR >ZCD4E
BEQ ZCEFA
JSR [ZD3E5]
CMPA >ESCCHR
BNE ZCEFA
ZCE9E CLR >CURLIN
ZCEA1 JSR [ZD3E5]
CMPA >ESCCHR
BEQ ZCEFA
CMPA #$03 CTRL C
BNE ZCEA1
CLR >LASTRM
JMP [ESCVEC]
*
** PRINT CR, LINEFEED
*
PCRLF1 TST >SIOFLG
BNE ZCEE1
BSR ZCE90
LDA >DEPCNT
BEQ ZCEE1
CMPA >CURLIN
BHI ZCEDE
CLR >CURLIN
TST >PAUSE
BEQ ZCED0
BSR ZCE9E
ZCED0 PSHS B
LDB >EJTCNT
BEQ ZCEDC
ZCED7 BSR ZCEE1
DECB
BNE ZCED7
ZCEDC PULS B
ZCEDE INC >CURLIN
ZCEE1 LDA #$0D
BSR PUTCH1
LDA #$0A
BSR PUTCH1
PSHS B
LDB >NULCNT
BEQ ZCEF6
ZCEF0 CLRA
BSR PUTCH1
DECB
BNE ZCEF0
ZCEF6 PULS B
ZCEF8 ANDCC #$FE
ZCEFA RTS
*
** GET A CHARACTER HONOURING TTYSET
*
GETCH1 TST >INPSWT
BNE ZCF1A
TST >FIPADR
BEQ ZCF15
BSR ZCF21
TST >FIEFLG
BEQ ZCF1D
TST >FOPADR
BEQ ZCF1D
BSR ZCF66
BRA ZCF1D
ZCF15 JSR >INCH
BRA ZCF1D
ZCF1A JSR >INCH2
ZCF1D CLR >CURLIN
RTS
ZCF21 STX >ZCC47
LDX >FIPADR
BRA ZCF2F
ZCF29 STX >ZCC47
LDX >FOPADR
ZCF2F JSR >FMS
BNE ZCF38
LDX >ZCC47
RTS
ZCF38 CLR >FOPADR
JSR >RPTER1
JMP >WARMS
*
** OUTPUT CHARACTER HONOURING TTYSET
*
PUTCH1 TST >SIOFLG
BNE ZCF66
CMPA #$1F
BHI ZCF4F
CLR >CURCOL
BRA ZCF66
ZCF4F INC >CURCOL
PSHS A
LDA >WIDCNT
BEQ ZCF64
CMPA >CURCOL
BCC ZCF64
JSR >PCRLF1
INC >CURCOL
ZCF64 PULS A
ZCF66 PSHS A
TST >OUTSWT
BNE ZCF80
TST >FOPADR
BEQ ZCF76
BSR ZCF29
BRA ZCF83
ZCF76 TST >FIPADR
BNE ZCF83
JSR >OUTCH
BRA ZCF83
ZCF80 JSR >OUTCH2
ZCF83 PULS A
RTS
OUTDC1 CLR >ZCC4A
STB >TRNFLG
LDA #$04
STA >ZCC4D
LDD ,X
LDX #DECTBL
ZCF96 BSR ZCFA3
LEAX $02,X
DEC >ZCC4D
BNE ZCF96
TFR B,A
BRA OUTHXR
ZCFA3 CLR >ZCC4B
ZCFA6 CMPD ,X
BCS ZCFB2
SUBD ,X
INC >ZCC4B
BRA ZCFA6
ZCFB2 PSHS A
LDA >ZCC4B
BNE ZCFC9
TST >ZCC4A
BNE ZCFC9
TST >TRNFLG
BEQ ZCFCE
LDA #$20
BSR ZCFEA
BRA ZCFCE
ZCFC9 INC >ZCC4A
BSR OUTHXR
ZCFCE PULS PC,A
*
** DISPLAY HEX ADDRESS
*
OUTAD1 BSR OUTHX1
LEAX $01,X
*
** OUPUT HEX BYTE
*
OUTHX1 LDA ,X
BSR OUTHXL
LDA ,X
BRA OUTHXR
OUTHXL LSRA
LSRA
LSRA
LSRA
OUTHXR ANDA #$0F
ADDA #$30
CMPA #$39
BLS ZCFEA
ADDA #$07
ZCFEA JMP >PUTCH1
*
** CLASSIFY CHARACTER ALHA/NUMERIC
*
CLASS1 CMPA #'0
BCS ZD005
CMPA #'9
BLS ZD00B
CMPA #'A
BCS ZD005
CMPA #'Z
BLS ZD00B
CMPA #'a $61
BCS ZD005
CMPA #'z $7A
BLS ZD00B
ZD005 ORCC #$01
STA >LASTRM
RTS
ZD00B ANDCC #$FE
RTS
*
** GET NEXT CHARACTER FROM FILE
*
NXTCH1 PSHS X
LDX >LINPTR
LDA >CURCHR
STA >PRVCHR
ZD019 LDA ,X+
STA >CURCHR
CMPA #$0D
BEQ ZD032
CMPA >EOLCHR
BEQ ZD032
STX >LINPTR
CMPA #$20
BNE ZD032
CMPA ,X
BEQ ZD019
ZD032 BSR CLASS1
PULS PC,X
*
** PARSE FILE SPEC. IN LINE BUFFER
*
GETFL1 LDA #$15
STA $01,X
LDA #$FF
STA $03,X
CLR $04,X
CLR $0C,X
JSR >ZD0D4
LDA #$08
STA >ZCC4B
BSR ZD080
BCS ZD07C
BNE ZD05F
BSR ZD080
BCS ZD07C
BNE ZD05F
CMPX >ZCC3F
BEQ ZD0C7
BSR ZD080
BLS ZD0C7
ZD05F LDX >ZCC3F
TST $04,X
BEQ ZD0C7
TST $03,X
BPL ZD079
TST >ZCC0D
BEQ ZD074
LDA >SYSDRV
BRA ZD077
ZD074 LDA >WRKDRV
ZD077 STA $03,X
ZD079 CLR >ZCC0D
ZD07C LDX >ZCC3F
RTS
ZD080 BSR NXTCH1
BCS ZD0C7
CMPA #$39
BHI ZD09D
LDX >ZCC3F
TST $03,X
BPL ZD0C7
ANDA #$03
STA $03,X
JSR >NXTCH1
BCC ZD0C7
ZD098 CMPA #$2E
ANDCC #$FE
RTS
ZD09D LDB >ZCC4B
BMI ZD0C7
PSHS B
SUBB #$05
STB >ZCC4B
PULS B
ZD0AB CMPA >MAPUP
BCS ZD0B2
SUBA #$20
ZD0B2 STA $04,X
LEAX $01,X
DECB
JSR >NXTCH1
BCC ZD0C4
CMPA #$2D
BEQ ZD0C4
CMPA #$5F
BNE ZD0CA
ZD0C4 TSTB
BNE ZD0AB
ZD0C7 ORCC #$01
RTS
ZD0CA TSTB
BEQ ZD098
CLR $04,X
LEAX $01,X
DECB
BRA ZD0CA
ZD0D4 STX >ZCC3F
LDX >LINPTR
ZD0DA LDA ,X
CMPA #$20
BNE ZD0E4
LEAX $01,X
BRA ZD0DA
ZD0E4 STX >LINPTR
LDX >ZCC3F
RTS
*
** DEFAULT FILE EXTENSION
*
SETEX1 PSHS Y,X
LDB $0C,X
BNE ZD109
LDY #EXTTBL
CMPA #$0B
BHI ZD109
LDB #$03
MUL
LEAY B,Y
LDB #$03
ZD100 LDA ,Y+
STA $0C,X
LEAX $01,X
DECB
BNE ZD100
ZD109 PULS PC,Y,X
*
** STANDARD FILE NAME EXTTENSIONS
*
EXTTBL FCC "BIN"
FCC "TXT"
FCC "CMD"
FCC "BAS"
FCC "SYS"
FCC "BAK"
FCC "SCR"
FCC "DAT"
FCC "BAC"
FCC "DIR"
FCC "PRT"
FCC "OUT"
*
** READ A HEX ADDRESS FROM THE LINE BUFFER
*
GETHX1 JSR >ZD21E
ZD132 JSR >NXTCH1
BCS ZD159
BSR ZD15F
BCS ZD153
PSHS B
LDB #$04
ZD13F ASL >LODOFF+1
ROL >LODOFF
DECB
BNE ZD13F
PULS B
ADDA >LODOFF+1
STA >LODOFF+1
INCB
BRA ZD132
ZD153 JSR >NXTCH1
BCC ZD153
RTS
ZD159 LDX >LODOFF
ANDCC #$FE
RTS
ZD15F SUBA #$47
BPL ZD172
ADDA #$06
BPL ZD16B
ADDA #$07
BPL ZD172
ZD16B ADDA #$0A
BMI ZD172
ANDCC #$FE
RTS
ZD172 ORCC #$01
RTS
INDEC1 JSR >ZD21E
ZD178 JSR >NXTCH1
BCS ZD159
CMPA #$39
BHI ZD153
ANDA #$0F
PSHS B
PSHS A
LDD >LODOFF
ASLB
ROLA
ASLB
ROLA
ASLB
ROLA
ADDD >LODOFF
ADDD >LODOFF
ADDB ,S+
ADCA #$00
STD >LODOFF
PULS B
INCB
BRA ZD178
*
** LOAD BINARY FILE
*
LOAD1 CLR >TRNFLG
ZD1A5 BSR ZD1E4
CMPA #$02
BEQ ZD1C0
CMPA #$16
BNE ZD1A5
BSR ZD1E4
STA >TRNVEC
BSR ZD1E4
STA >TRNVEC+1
LDA #$01
STA >TRNFLG
BRA ZD1A5
ZD1C0 BSR ZD1E4
TFR A,B
BSR ZD1E4
EXG A,B
ADDD >LODOFF
STD >ZCC3D
BSR ZD1E4
TFR A,B
TSTA
BEQ ZD1A5
ZD1D5 BSR ZD1E4
LDX >ZCC3D
STA ,X+
STX >ZCC3D
DECB
BNE ZD1D5
BRA ZD1A5
ZD1E4 LDX #FCB
JSR >FMS
BEQ ZD1FD
LDA $01,X
CMPA #$08
BNE ZD200
LEAS $02,S
ZD1F4 LDA #$04
STA ,X
JSR >FMS
BNE ZD20A
ZD1FD ANDCC #$FE
RTS
ZD200 STA >ERRTYP
CMPA #$04
BNE ZD20A
ORCC #$01
RTS
ZD20A BSR RPTER1
JMP >ZCDE4
*
** 'GET' - LOAD BINARY FILE
*
GETCMD LDA #$00
BSR ZD248
BCS ZD224
BSR ZD21E
INC >ZCC4C
BSR LOAD1
BRA GETCMD
ZD21E CLRA
CLRB
STD >LODOFF
RTS
ZD224 LDB >ZCC4C
LBEQ ZCDD9
JMP >WARMS
ZD22E LDA #$02
BSR ZD254
BSR ZD21E
JSR >LOAD1
LDB >TRNFLG
BEQ ZD240
JMP [TRNVEC]
ZD240 LDX #NTRMSG
LDA #$81
JMP >ZCDDE
ZD248 PSHS A
LDX #FCB
JSR >GETFL1
PULS A
BCS ZD26E
ZD254 LDX #FCB
JSR >SETEX1
LDX #FCB
LDA #$01
STA ,X
JSR >ZD1E4
LBCS ZD323
LDA #$FF
STA $3B,X
RTS
ZD26E LDA >LASTRM
CMPA #$0D
BEQ ZD27C
CMPA >EOLCHR
LBNE ZCDD9
ZD27C ORCC #$01
RTS
RPTER1 PSHS Y,X
LDA $01,X
STA >ERRTYP
BEQ ZD2EB
JSR >RSTIO1
LDY >ERRVEC
BNE ZD299
CMPA #$10
BEQ ZD2ED
LDY #ZD361
ZD299 LDX #FCB
TST $02,X
BEQ ZD2A9
LDA #$04
STA ,X
JSR >FMS
BNE ZD2D7
ZD2A9 LDX #ZC838
LDB #$0B
BSR ZD31E
LDX #FCB
LDA >SYSDRV
STA $03,X
LDA #$01
STA ,X
JSR >FMS
BNE ZD2D7
LDA >ERRTYP
DECA
ASRA
ASRA
INCA
CLR $20,X
STA $21,X
LDA #$15
STA ,X
JSR >FMS
BEQ ZD2F5
ZD2D7 LDX #DERMSG
JSR >PSTRG1
LDX >ZCC3F
LDA >ERRTYP
STA $01,X
CLR ,X
CLRB
JSR >OUTDC1
ZD2EB PULS PC,Y,X
ZD2ED LDX #DNRMSG
JSR >PSTRG1
BRA ZD2EB
ZD2F5 JSR >PCRLF1
LDX #FCB
LDA >ERRTYP
DECA
ANDA #$03
LDB #$3F
MUL
ADDB #$04
STB $22,X
ZD309 JSR >FMS
BNE ZD2D7
JSR >PUTCH1
CMPA #$0D
BNE ZD309
LDA #$04
STA ,X
JSR >FMS
BRA ZD2EB
ZD31E PSHS Y,X
JMP >ZD100
ZD323 LDX #NFDMSG NOT FOUND
JMP >ZCDE1
*
** CALL FLEX AS A SUBROUTINE
*
DOCMD1 PULS B,A
STD >ZCC43
ZD32E STS >ZCC45
CLR >ERRTYP
INC >CMDFLG
JMP >ZCDB8
ZD33B CLR >CMDFLG
LDS >ZCC45
LDB >ERRTYP
JMP [ZCC43]
*
** ADD ACCB TO IX
*
ADDBX1 ABX
RTS
ZD34B TST >ZCCFC
BNE ZD354
JMP [MONVEC]
ZD354 LDX #FCB
LDA #$1B
STA $01,X
JSR >RPTER1
JMP >WARM1
ZD361 FCC /ERRORS/
FCB $00,$00
FCC /SYS/
END
Go to most recent revision | Compare with Previous | Blame | View Log