*************************** * SIMPLE TERMINAL PROGRAM * FOR MC3 + ACIA BOARD * DANIEL TUFVESSON 2014 RETURN EQU $C000 RETURN TO PROMPT INCHAR EQU $C006 INPUT CHAR FROM CONSOLE AND ECHO OUT2HS EQU $C012 PRINT 2 HEX CHARS @ X PDATA EQU $C009 PRINT TEXT STRING @ X ENDED BY $04 CONSVEC EQU $7FE5 CONSOLE STATUS VECTOR CONOVEC EQU $7FE8 CONSOLE OUTPUT VECTOR CONIVEC EQU $7FEB CONSOLE INPUT VECTOR PAGEREG EQU $0002 I/O PAGE SELECT REGISTER ACIA EQU $8020 ACIAST EQU ACIA+0 ACIADA EQU ACIA+1 ORG $0080 CONF RMB 1 TEMP RMB 1 ORG $0100 JMP START TXCRLF FCB $0A,$0D,$04 TXSTART FCB $0A,$0A,$0D FCC 'Terminal 0.1 - 6850/6350' FCB $0A,$0A,$0D,$04 TXRATE FCC 'Set rate [0-2]' FCB $0A,$0D FCC ' 0: Clk/1' FCB $0A,$0D FCC ' 1: Clk/16' FCB $0A,$0D FCC ' 2: Clk/64' FCB $0A,$0D,$04 TXFORM FCC 'Set format [0-7]' FCB $0A,$0D FCC ' 0: 7E2' FCB $0A,$0D FCC ' 1: 7O2' FCB $0A,$0D FCC ' 2: 7E1' FCB $0A,$0D FCC ' 3: 7O1' FCB $0A,$0D FCC ' 4: 8N2' FCB $0A,$0D FCC ' 5: 8N1' FCB $0A,$0D FCC ' 6: 8E1' FCB $0A,$0D FCC ' 7: 8O1' FCB $0A,$0D,$04 TXOK FCC 'OK' FCB $0A,$0D,$04 START LDX #TXSTART JSR PDATA LDAA #$80 SELECT I/O PAGE 0 STAA PAGEREG LDAA #$FF STAA ACIAST MASTER RESET RATE LDX #TXRATE JSR PDATA JSR INCHAR CMPA #$2F BLS RATE CMPA #$32 BHI RATE SUBA #$30 STAA CONF SAVE RATE JSR PCRLF FORM LDX #TXFORM JSR PDATA JSR INCHAR CMPA #$2F BLS FORM CMPA #$37 BHI FORM SUBA #$30 ASLA ASLA ORAA CONF ASSEMBLE FORMAT AND RATE STAA CONF SAVE CONFIG STAA ACIAST SET CONFIG JSR PCRLF LDX #CONF JSR OUT2HS LDX #TXOK JSR PDATA LOOP JSR WAITING CHECK IF REMOTE CHAR TSTA BNE REMOTE READ FROM REMOTE JSR CONSVEC CHECK IF LOCAL CHAR TSTA BNE LOCAL READ FROM LOCAL BRA LOOP REMOTE JSR RTSHIGH JSR READ JSR CONOVEC JSR RTSLOW BRA LOOP LOCAL JSR CONIVEC CMPA #$1B IS IT ESCAPE? BNE *+5 JMP RETURN RETURN TO MONITOR JSR WRITE BRA LOOP WRITE PSHB WRITE1 LDAB ACIAST LSRB LSRB BCC WRITE1 STAA ACIADA PULB RTS READ JSR CHERR LDAA ACIAST LSRA BCC READ LDAA ACIADA RTS WAITING JSR CHERR LDAA ACIAST LSRA BCC WAIT0 WAIT1 LDAA #$01 RTS WAIT0 CLRA RTS CHERR LDAA ACIAST ANDA #$10 CMPA #$10 BEQ FRERR FRAMING ERROR LDAA ACIAST ANDA #$20 CMPA #$20 BEQ ROERR RECEIVER OVERRUN ERROR LDAA ACIAST ANDA #$40 CMPA #$40 BEQ PAERR PARITY ERROR ERROR RTS FRERR LDAA #'! JSR CONOVEC LDAA #'F JSR CONOVEC RTS ROERR LDAA #'! JSR CONOVEC LDAA #'O JSR CONOVEC RTS PAERR LDAA #'! JSR CONOVEC LDAA #'P JSR CONOVEC RTS PCRLF PSHA LDAA #$0D JSR CONOVEC LDAA #$0A JSR CONOVEC PULA RTS RTSLOW LDAA CONF ANDA #$9F STAA CONF STAA ACIAST RTS RTSHIGH LDAA CONF ORAA #$40 STAA CONF STAA ACIAST RTS