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 >COLD1WARMS JMP >WARM1RENTER JMP >RENT1INCH JMP >INCHINCH2 JMP >INCH2OUTCH JMP >OUTCHOUTCH2 JMP >OUTCH2GETCHR JMP >GETCH1PUTCHR JMP >PUTCH1INBUFF JMP >INBUF1PSTRNG JMP >PSTRG1CLASS JMP >CLASS1PCRLF JMP >PCRLF1NXTCH JMP >NXTCH1RSTRIO JMP >RSTIO1GETFIL JMP >GETFL1LOAD JMP >LOAD1SETEXT JMP >SETEX1ADDBX JMP >ADDBX1OUTDEC JMP >OUTDC1OUTHEX JMP >OUTHX1RPTERR JMP >RPTER1GETHEX JMP >GETHX1OUTADR JMP >OUTAD1INDEC JMP >INDEC1DOCMND JMP >DOCMD1ZCD4E JMP >ZCD4EJMP >ZCE05JMP >ZCE05*** COLD START ENTRY*COLD1 LDS #ZC07FZCD5B CLR >LASTRMJSR >ZD400CLR >CMDFLGJSR >ZD3FD*** WARM START ENTRY*WARM1 LDS #ZC07FJSR >WARMDRLDX #WARMSSTX >ESCVECLDX #PRSPL1STX [SWIVVC]LDX >IHNDVCSTX [IRQVVC]LDX #ZCCF8STX >ZCC31CLR >ZCC34CLR >ZCC4CBSR RSTIO1LDA >LASTRMCMPA >EOLCHRBNE ZCD9DINC >LINPTR+1BRA RENT1ZCD9D TST >CMDFLGLBNE ZD33BJSR >FMSCLSBNE ZCD5BLDX #PMTSTRJSR >PSTRG1BSR INBUF1*** MAIN CONTROL LOOP*RENT1 JSR >ZD0D4CMPA #$0DBEQ ZCD9DZCDB8 LDX #FCBINC >ZCC0DJSR >GETFL1BCS ZCDD9LDX #CMDTBLBSR ZCE06BEQ ZCDD3LDX >UCTVECBEQ ZCDD6BSR ZCE06BNE ZCDD6ZCDD3 JMP [$01,X]ZCDD6 JSR >ZD22EZCDD9 LDX #WOTMSGLDA #$15ZCDDE STA >ERRTYPZCDE1 JSR >PSTRG1ZCDE4 CLR >LASTRMJMP >WARM1*** RESTORE IO VECTORS*RSTIO1 LDX >OUTCH2+1STX >OUTCH+1LDX >INCH2+1STX >INCH+1CLR >INPSWTCLR >OUTSWTCLR >SIOFLGCLR >FIPADRCLR >FOPADRZCE05 RTSZCE06 LDY #ZC844ZCE0A LDA ,Y+CMPA #$5FBLS ZCE12SUBA #$20ZCE12 CMPA ,X+BNE ZCE1ETST ,XBNE ZCE0ATST ,YBEQ ZCE2AZCE1E TST ,X+BNE ZCE1ELEAX $02,XTST ,XBNE ZCE06ANDCC #$FBZCE2A RTS*** GET USER COMMAND LINE*INBUF1 LDX #LINBUFSTX >LINPTRZCE31 JSR >GETCH1CMPA >DELCHRBEQ ZCE56CMPA >BSPCHRBEQ ZCE5DCMPA #$0DBEQ ZCE4FCMPA #$0ABEQ ZCE78CMPA #$1FBLS ZCE31ZCE4A CMPX #ZC0FFBEQ ZCE31ZCE4F STA ,X+CMPA #$0DBNE ZCE31RTSZCE56 LDX #QRYSTRBSR PSTRG1BRA INBUF1ZCE5D CMPX #LINBUFBEQ ZCE56LEAX -$01,XLDA >BSECHRCMPA #$08BNE ZCE73LDA #$20JSR >ZCF66LDA >BSECHRZCE73 JSR >ZCF66BRA ZCE31ZCE78 LDA #$0DJSR >PUTCH1LDA #$20BRA ZCE4APSTRG1 BSR PCRLF1ZCE83 LDA ,XCMPA #$04BEQ ZCEF8JSR >PUTCH1LEAX $01,XBRA ZCE83ZCE90 JSR >ZCD4EBEQ ZCEFAJSR [ZD3E5]CMPA >ESCCHRBNE ZCEFAZCE9E CLR >CURLINZCEA1 JSR [ZD3E5]CMPA >ESCCHRBEQ ZCEFACMPA #$03 CTRL CBNE ZCEA1CLR >LASTRMJMP [ESCVEC]*** PRINT CR, LINEFEED*PCRLF1 TST >SIOFLGBNE ZCEE1BSR ZCE90LDA >DEPCNTBEQ ZCEE1CMPA >CURLINBHI ZCEDECLR >CURLINTST >PAUSEBEQ ZCED0BSR ZCE9EZCED0 PSHS BLDB >EJTCNTBEQ ZCEDCZCED7 BSR ZCEE1DECBBNE ZCED7ZCEDC PULS BZCEDE INC >CURLINZCEE1 LDA #$0DBSR PUTCH1LDA #$0ABSR PUTCH1PSHS BLDB >NULCNTBEQ ZCEF6ZCEF0 CLRABSR PUTCH1DECBBNE ZCEF0ZCEF6 PULS BZCEF8 ANDCC #$FEZCEFA RTS*** GET A CHARACTER HONOURING TTYSET*GETCH1 TST >INPSWTBNE ZCF1ATST >FIPADRBEQ ZCF15BSR ZCF21TST >FIEFLGBEQ ZCF1DTST >FOPADRBEQ ZCF1DBSR ZCF66BRA ZCF1DZCF15 JSR >INCHBRA ZCF1DZCF1A JSR >INCH2ZCF1D CLR >CURLINRTSZCF21 STX >ZCC47LDX >FIPADRBRA ZCF2FZCF29 STX >ZCC47LDX >FOPADRZCF2F JSR >FMSBNE ZCF38LDX >ZCC47RTSZCF38 CLR >FOPADRJSR >RPTER1JMP >WARMS*** OUTPUT CHARACTER HONOURING TTYSET*PUTCH1 TST >SIOFLGBNE ZCF66CMPA #$1FBHI ZCF4FCLR >CURCOLBRA ZCF66ZCF4F INC >CURCOLPSHS ALDA >WIDCNTBEQ ZCF64CMPA >CURCOLBCC ZCF64JSR >PCRLF1INC >CURCOLZCF64 PULS AZCF66 PSHS ATST >OUTSWTBNE ZCF80TST >FOPADRBEQ ZCF76BSR ZCF29BRA ZCF83ZCF76 TST >FIPADRBNE ZCF83JSR >OUTCHBRA ZCF83ZCF80 JSR >OUTCH2ZCF83 PULS ARTSOUTDC1 CLR >ZCC4ASTB >TRNFLGLDA #$04STA >ZCC4DLDD ,XLDX #DECTBLZCF96 BSR ZCFA3LEAX $02,XDEC >ZCC4DBNE ZCF96TFR B,ABRA OUTHXRZCFA3 CLR >ZCC4BZCFA6 CMPD ,XBCS ZCFB2SUBD ,XINC >ZCC4BBRA ZCFA6ZCFB2 PSHS ALDA >ZCC4BBNE ZCFC9TST >ZCC4ABNE ZCFC9TST >TRNFLGBEQ ZCFCELDA #$20BSR ZCFEABRA ZCFCEZCFC9 INC >ZCC4ABSR OUTHXRZCFCE PULS PC,A*** DISPLAY HEX ADDRESS*OUTAD1 BSR OUTHX1LEAX $01,X*** OUPUT HEX BYTE*OUTHX1 LDA ,XBSR OUTHXLLDA ,XBRA OUTHXROUTHXL LSRALSRALSRALSRAOUTHXR ANDA #$0FADDA #$30CMPA #$39BLS ZCFEAADDA #$07ZCFEA JMP >PUTCH1*** CLASSIFY CHARACTER ALHA/NUMERIC*CLASS1 CMPA #'0BCS ZD005CMPA #'9BLS ZD00BCMPA #'ABCS ZD005CMPA #'ZBLS ZD00BCMPA #'a $61BCS ZD005CMPA #'z $7ABLS ZD00BZD005 ORCC #$01STA >LASTRMRTSZD00B ANDCC #$FERTS*** GET NEXT CHARACTER FROM FILE*NXTCH1 PSHS XLDX >LINPTRLDA >CURCHRSTA >PRVCHRZD019 LDA ,X+STA >CURCHRCMPA #$0DBEQ ZD032CMPA >EOLCHRBEQ ZD032STX >LINPTRCMPA #$20BNE ZD032CMPA ,XBEQ ZD019ZD032 BSR CLASS1PULS PC,X*** PARSE FILE SPEC. IN LINE BUFFER*GETFL1 LDA #$15STA $01,XLDA #$FFSTA $03,XCLR $04,XCLR $0C,XJSR >ZD0D4LDA #$08STA >ZCC4BBSR ZD080BCS ZD07CBNE ZD05FBSR ZD080BCS ZD07CBNE ZD05FCMPX >ZCC3FBEQ ZD0C7BSR ZD080BLS ZD0C7ZD05F LDX >ZCC3FTST $04,XBEQ ZD0C7TST $03,XBPL ZD079TST >ZCC0DBEQ ZD074LDA >SYSDRVBRA ZD077ZD074 LDA >WRKDRVZD077 STA $03,XZD079 CLR >ZCC0DZD07C LDX >ZCC3FRTSZD080 BSR NXTCH1BCS ZD0C7CMPA #$39BHI ZD09DLDX >ZCC3FTST $03,XBPL ZD0C7ANDA #$03STA $03,XJSR >NXTCH1BCC ZD0C7ZD098 CMPA #$2EANDCC #$FERTSZD09D LDB >ZCC4BBMI ZD0C7PSHS BSUBB #$05STB >ZCC4BPULS BZD0AB CMPA >MAPUPBCS ZD0B2SUBA #$20ZD0B2 STA $04,XLEAX $01,XDECBJSR >NXTCH1BCC ZD0C4CMPA #$2DBEQ ZD0C4CMPA #$5FBNE ZD0CAZD0C4 TSTBBNE ZD0ABZD0C7 ORCC #$01RTSZD0CA TSTBBEQ ZD098CLR $04,XLEAX $01,XDECBBRA ZD0CAZD0D4 STX >ZCC3FLDX >LINPTRZD0DA LDA ,XCMPA #$20BNE ZD0E4LEAX $01,XBRA ZD0DAZD0E4 STX >LINPTRLDX >ZCC3FRTS*** DEFAULT FILE EXTENSION*SETEX1 PSHS Y,XLDB $0C,XBNE ZD109LDY #EXTTBLCMPA #$0BBHI ZD109LDB #$03MULLEAY B,YLDB #$03ZD100 LDA ,Y+STA $0C,XLEAX $01,XDECBBNE ZD100ZD109 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 >ZD21EZD132 JSR >NXTCH1BCS ZD159BSR ZD15FBCS ZD153PSHS BLDB #$04ZD13F ASL >LODOFF+1ROL >LODOFFDECBBNE ZD13FPULS BADDA >LODOFF+1STA >LODOFF+1INCBBRA ZD132ZD153 JSR >NXTCH1BCC ZD153RTSZD159 LDX >LODOFFANDCC #$FERTSZD15F SUBA #$47BPL ZD172ADDA #$06BPL ZD16BADDA #$07BPL ZD172ZD16B ADDA #$0ABMI ZD172ANDCC #$FERTSZD172 ORCC #$01RTSINDEC1 JSR >ZD21EZD178 JSR >NXTCH1BCS ZD159CMPA #$39BHI ZD153ANDA #$0FPSHS BPSHS ALDD >LODOFFASLBROLAASLBROLAASLBROLAADDD >LODOFFADDD >LODOFFADDB ,S+ADCA #$00STD >LODOFFPULS BINCBBRA ZD178*** LOAD BINARY FILE*LOAD1 CLR >TRNFLGZD1A5 BSR ZD1E4CMPA #$02BEQ ZD1C0CMPA #$16BNE ZD1A5BSR ZD1E4STA >TRNVECBSR ZD1E4STA >TRNVEC+1LDA #$01STA >TRNFLGBRA ZD1A5ZD1C0 BSR ZD1E4TFR A,BBSR ZD1E4EXG A,BADDD >LODOFFSTD >ZCC3DBSR ZD1E4TFR A,BTSTABEQ ZD1A5ZD1D5 BSR ZD1E4LDX >ZCC3DSTA ,X+STX >ZCC3DDECBBNE ZD1D5BRA ZD1A5ZD1E4 LDX #FCBJSR >FMSBEQ ZD1FDLDA $01,XCMPA #$08BNE ZD200LEAS $02,SZD1F4 LDA #$04STA ,XJSR >FMSBNE ZD20AZD1FD ANDCC #$FERTSZD200 STA >ERRTYPCMPA #$04BNE ZD20AORCC #$01RTSZD20A BSR RPTER1JMP >ZCDE4*** 'GET' - LOAD BINARY FILE*GETCMD LDA #$00BSR ZD248BCS ZD224BSR ZD21EINC >ZCC4CBSR LOAD1BRA GETCMDZD21E CLRACLRBSTD >LODOFFRTSZD224 LDB >ZCC4CLBEQ ZCDD9JMP >WARMSZD22E LDA #$02BSR ZD254BSR ZD21EJSR >LOAD1LDB >TRNFLGBEQ ZD240JMP [TRNVEC]ZD240 LDX #NTRMSGLDA #$81JMP >ZCDDEZD248 PSHS ALDX #FCBJSR >GETFL1PULS ABCS ZD26EZD254 LDX #FCBJSR >SETEX1LDX #FCBLDA #$01STA ,XJSR >ZD1E4LBCS ZD323LDA #$FFSTA $3B,XRTSZD26E LDA >LASTRMCMPA #$0DBEQ ZD27CCMPA >EOLCHRLBNE ZCDD9ZD27C ORCC #$01RTSRPTER1 PSHS Y,XLDA $01,XSTA >ERRTYPBEQ ZD2EBJSR >RSTIO1LDY >ERRVECBNE ZD299CMPA #$10BEQ ZD2EDLDY #ZD361ZD299 LDX #FCBTST $02,XBEQ ZD2A9LDA #$04STA ,XJSR >FMSBNE ZD2D7ZD2A9 LDX #ZC838LDB #$0BBSR ZD31ELDX #FCBLDA >SYSDRVSTA $03,XLDA #$01STA ,XJSR >FMSBNE ZD2D7LDA >ERRTYPDECAASRAASRAINCACLR $20,XSTA $21,XLDA #$15STA ,XJSR >FMSBEQ ZD2F5ZD2D7 LDX #DERMSGJSR >PSTRG1LDX >ZCC3FLDA >ERRTYPSTA $01,XCLR ,XCLRBJSR >OUTDC1ZD2EB PULS PC,Y,XZD2ED LDX #DNRMSGJSR >PSTRG1BRA ZD2EBZD2F5 JSR >PCRLF1LDX #FCBLDA >ERRTYPDECAANDA #$03LDB #$3FMULADDB #$04STB $22,XZD309 JSR >FMSBNE ZD2D7JSR >PUTCH1CMPA #$0DBNE ZD309LDA #$04STA ,XJSR >FMSBRA ZD2EBZD31E PSHS Y,XJMP >ZD100ZD323 LDX #NFDMSG NOT FOUNDJMP >ZCDE1*** CALL FLEX AS A SUBROUTINE*DOCMD1 PULS B,ASTD >ZCC43ZD32E STS >ZCC45CLR >ERRTYPINC >CMDFLGJMP >ZCDB8ZD33B CLR >CMDFLGLDS >ZCC45LDB >ERRTYPJMP [ZCC43]*** ADD ACCB TO IX*ADDBX1 ABXRTSZD34B TST >ZCCFCBNE ZD354JMP [MONVEC]ZD354 LDX #FCBLDA #$1BSTA $01,XJSR >RPTER1JMP >WARM1ZD361 FCC /ERRORS/FCB $00,$00FCC /SYS/END
Go to most recent revision | Compare with Previous | Blame | View Log
