NEW AUTO 3,1 *-------------------------------------- DRV.TERM.CLRSCR.DN ldy #S.DCB.TTY.CV sta (ZPDCBPtr),y tax bra DRV.TERM.CLRSCR.1 DRV.TERM.CLRSCR.UP ldx #0 ldy #S.DCB.TTY.CV sta (ZPDCBPtr),y tay bra DRV.TERM.CLRSCR.2 DRV.TERM.CLRSCR ldx #0 DRV.TERM.CLRSCR.1 ldy #24 DRV.TERM.CLRSCR.2 sty .1+1 sta SET80STORE .1 cpx #$ff SELF MODIFIED beq .9 jsr DRV.TERM.SETUP.L1X lda #" " bit bActive bpl .4 sta SETPAGE2 jsr .7 sta CLRPAGE2 jsr .7 .4 sta SETWRITEAUX ldy #79 .5 sta (ZPBufBaseL1),y dey bpl .5 sta CLRWRITEAUX inx bra .1 .7 ldy #39 .8 sta (ZPScrBaseL1),y dey bpl .8 .9 rts *-------------------------------------- DRV.TERM.LINE0CPY ldx #0 .HS 2C BIT ABS DRV.TERM.SCRCPY ldx #23 sta SET80STORE .1 ldy #S.FD.DEV.BUFPTR lda (pFD),y clc adc BUF.BASEL,x sta .80+1 iny lda (pFD),y adc BUF.BASEH,x sta .80+2 jsr DRV.TERM.SETUP.L1X.SCR phx sta SETREADAUX ldx #78 sta SETPAGE2 ldy #39 jsr .8 ldx #79 sta CLRPAGE2 ldy #39 jsr .8 sta CLRREADAUX plx dex bpl .1 rts .8 ldy #39 .80 lda $ffff,x SELF MODIFIED .81 sta (ZPScrBaseL1),y dex dex dey bpl .80 rts *-------------------------------------- DRV.TERM.COPY.XtoL1 ldy #S.FD.DEV.BUFPTR lda (pFD),y clc adc BUF.BASEL,x sta ZPBufBaseL2 iny lda (pFD),y adc BUF.BASEH,x sta ZPBufBaseL2+1 ldy #79 sta SETWRITEAUX sta SETREADAUX .1 lda (ZPBufBaseL2),y sta (ZPBufBaseL1),y dey bpl .1 sta CLRWRITEAUX sta CLRREADAUX bit bActive bpl .8 lda SCR.BASEL,x sta ZPScrBaseL2 lda SCR.BASEH,x sta ZPScrBaseL2+1 sta SET80STORE sta SETPAGE2 jsr .6 sta CLRPAGE2 .6 ldy #39 .7 lda (ZPScrBaseL2),y sta (ZPScrBaseL1),y dey bpl .7 .8 rts *-------------------------------------- SetCharAtCurPos pha ldy #S.DCB.TTY.CV lda (ZPDCBPtr),y tax dey lda (ZPDCBPtr),y tay pla *-------------------------------------- SetCharAtYX cmp #$40 bcc .1 cmp #$60 bcs .1 and #$1F remap UPPERCASE .1 phy ldy #S.DCB.TTY.bNORMAL ora (ZPDCBPtr),y sta ZPTmpChar ldy #S.DCB.TTY.bG0G1 Select Active Font lda (ZPDCBPtr),y bpl .2 iny .2 iny lda (ZPDCBPtr),y bpl .3 not Graphic mode lda ZPTmpChar cmp #$E0 Normal lowercase ? bcc .3 tay lda REMAP.E0.FF-$E0,y sta ZPTmpChar .3 jsr DRV.TERM.SETUP.L1X ply lda ZPTmpChar sta SETWRITEAUX sta (ZPBufBaseL1),y sta CLRWRITEAUX bit bActive bpl SetCharAtYX.8 SetCharAtY.SCR pha tya lsr tay pla sta SET80STORE bcs .2 sta SETPAGE2 .2 sta (ZPScrBaseL1),y sta CLRPAGE2 SetCharAtYX.8 rts *-------------------------------------- GetCharAtCurPos ldy #S.DCB.TTY.CV lda (ZPDCBPtr),y tax jsr DRV.TERM.SETUP.L1X ldy #S.DCB.TTY.CH lda (ZPDCBPtr),y tay sta SETREADAUX lda (ZPBufBaseL1),y sta CLRREADAUX cmp #$20 bcs .8 * clc adc #40 remap $00-$1F uppercase .8 rts *-------------------------------------- DRV.TERM.SETUP.L1X ldy #S.FD.DEV.BUFPTR lda (pFD),y clc adc BUF.BASEL,x sta ZPBufBaseL1 iny lda (pFD),y adc BUF.BASEH,x sta ZPBufBaseL1+1 bit bActive bpl DRV.TERM.SETUP.L1X.8 DRV.TERM.SETUP.L1X.SCR lda SCR.BASEL,x sta ZPScrBaseL1 lda SCR.BASEH,x sta ZPScrBaseL1+1 DRV.TERM.SETUP.L1X.8 rts *-------------------------------------- * ` a b c d e f g h i j k l m n o REMAP.E0.FF .HS 5B4142434445464748495FA0DF544e4f * p q r s t u v w x y z { | } ~ DEL .HS 50DF5253545556575F595a5b5c5d5e5f *-------------------------------------- RESET.VALUES .DA #0 S.DCB.TTY.MODE .DA #0 S.DCB.TTY.CH .DA #0 S.DCB.TTY.CV .DA #0 S.DCB.TTY.SCROLLTOP .DA #23 S.DCB.TTY.SCROLLBOT .DA #0 S.DCB.TTY.bCURON .DA #0 S.DCB.TTY.bTITLE .DA #$80 S.DCB.TTY.bNORMAL .DA #$80 S.DCB.TTY.bLINEWRAP .DA #$80 S.DCB.TTY.bCRLF .DA #0 .DA #0 S.DCB.TTY.bG0G1 .DA #0 S.DCB.TTY.bG0ALT .DA #$80 S.DCB.TTY.bG1ALT .DA #S.DCB.TTY.OUTBUFFER S.DCB.TTY.OUTTAIL .DA #S.DCB.TTY.OUTBUFFER S.DCB.TTY.OUTHEAD .DA #S.DCB.TTY.INBUFFER S.DCB.TTY.INBUFFER *-------------------------------------- CtrlChars .DA #C.ENQ,#C.BS,#C.LF,#C.FF,#C.CR,#C.SO,#C.SI,#C.FS,#C.ESC CtrlChars.Cnt .EQ *-CtrlChars *-------------------------------------- EscCodes .AZ "MDc[()" EscCodes.Cnt .EQ *-EscCodes EscModes .DA #0,#0,#0,#S.DCB.TTY.MODE.CSI,#S.DCB.TTY.MODE.G0,#S.DCB.TTY.MODE.G1 CsiCodes .AS "hlmnrJKH" CsiCodes.Cnt .EQ *-CsiCodes *-------------------------------------- KeyRemapped .HS 080A0B15 Left,Down,Up,Right KeyRemapped.Cnt .EQ *-KeyRemapped KeyRemapped.Tbl .HS 44424143 esc[D,esc[B,esc[A,esc[C *-------------------------------------- WILLDO .DA #TELOPT.BINARY,#TELOPT.SGA WILLDO.CNT .EQ *-WILLDO WILLDONT .DA #TELOPT.TSPEED,#TELOPT.LINEMODE,#TELOPT.STATUS WILLDONT.CNT .EQ *-WILLDONT DOWILL .DA #TELOPT.BINARY,#TELOPT.SGA,#TELOPT.TTYPE,#TELOPT.NAWS DOWILL.CNT .EQ *-DOWILL DOWONT .DA #TELOPT.ECHO,#TELOPT.NEWENVIRON,#TELOPT.XDISPLOC,#TELOPT.TSPEED,#TELOPT.LFLOW DOWONT.CNT .EQ *-DOWONT SB.IS.TTYPE .DA #IAC,#SB,#TELOPT.TTYPE,#SB.IS ENQ.String .AS "xterm" ENQ.String.Len .EQ *-ENQ.String .DA #IAC,#SE SB.IS.TTYPE.LEN .EQ *-SB.IS.TTYPE SB.IS.NAWS .DA #IAC,#SB,#TELOPT.NAWS,#SB.IS .DA 80 .DA 24 .DA #IAC,#SE SB.IS.NAWS.LEN .EQ *-SB.IS.NAWS *-------------------------------------- DRV.TERM.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ .DA #0,#0,#0 >PSTR "A2osX VT100 TERM" .DA #S.DIB.T.CHAR .DA #0 .DA K.VER *-------------------------------------- BUF.BASEL .DA #0 .DA #80 .DA #160 .DA #240 .DA #320 .DA #400 .DA #480 .DA #560 .DA #640 .DA #720 .DA #800 .DA #880 .DA #960 .DA #1040 .DA #1120 .DA #1200 .DA #1280 .DA #1360 .DA #1440 .DA #1520 .DA #1600 .DA #1680 .DA #1760 .DA #1840 BUF.BASEH .DA /0 .DA /80 .DA /160 .DA /240 .DA /320 .DA /400 .DA /480 .DA /560 .DA /640 .DA /720 .DA /800 .DA /880 .DA /960 .DA /1040 .DA /1120 .DA /1200 .DA /1280 .DA /1360 .DA /1440 .DA /1520 .DA /1600 .DA /1680 .DA /1760 .DA /1840 *-------------------------------------- SCR.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0 SCR.BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07 *-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.TERMLC LOAD USR/SRC/SYS/KERNEL.S ASM