NEW AUTO 3,1 *-------------------------------- A.YSAVE .EQ VAR.BEG-1 A.CHR.UNDER.CURS .EQ A.YSAVE-1 *-------------------------------- * STANDARD VIDEO JUMP VECTORS * 1. READ KEYBOARD KEY CODE * TURNS ON CURSOR * GETS KEY CODE * TURNS OFF CURSOR * REG-A HAS KEY CODE SIGN BIT ON. * 2. HORIZONTAL TAB * REG-A HAS TAB 0-39 * 3. VERTICAL TAB * REG-A HAS TAB 0-23 * 4. CLEAR TO END OF LINE * 5. CLEAR TO END OF SCREEN * 6. CHARACTER OUTPUT ROUTINE * REG-A HAS CHAR TO OUTPUT. * MUST NOT SCROLL SCREEN OR * GO TO NEXT LINE WHEN LAST * CHARACTER IS PRINTED ON A LINE. *-------------------------------- JMP A.RD.KBD JMP A.MY.HTAB JMP A.MY.VTAB JMP A.MY.CLREOL JMP A.MY.CLREOP JMP A.MY.COUT *-------------------------------- A.MY.CLP LDA CTR JSR A.MY.VTAB A.MY.CLREOP JSR A.MY.CLREOL ZAP REST OF LINE LDA #0 JSR A.MY.HTAB NEXT LINE ZAPPED FROM COL 0 INC CTR BUMP COUNT TO NEXT LINE LDA CTR CMP LAST.LINE END OF PAGE? BCC A.MY.CLP < END BEQ A.MY.CLP = END RTS > END *-------------------------------- A.MY.HTAB STA CH SET TAB VALUE RTS *-------------------------------- A.MY.VTAB STA CV SET TAB VALUE JMP M.BASCALC COMPUTE NEW COUT BASE ADRS *-------------------------------- A.MY.COUT STY A.YSAVE LDY CH CMP #$A0 BCS .1 NOT CONTROL CHAR AND #$7F ELSE MAKE CHAR INVERSE .1 STA (BASEL),Y PUT CHAR ON SCREEN INY NEXT COLUMN STY CH LDY A.YSAVE RTS *-------------------------------- A.MY.CLREOL LDY CH .1 LDA #$A0 A-REG = BLANK CPY SCREEN.WIDTH BCS .2 JSR A.MY.COUT OUTPUT BLANKS UNTIL SCREEN WIDTH LDY CH BNE .1 ...ALWAYS .2 RTS *-------------------------------- A.RD.KBD JSR A.CURSOR.ON TURN ON CURSOR .1 LDA $C000 WAIT FOR KEY BPL .1 BIT $C010 KILL FLAG BY STROBE PHA JSR A.CURSOR.OFF TURN OFF CURSOR PLA RETURN REG-A WITH CHAR RTS *-------------------------------- A.CURSOR.ON LDA POSV JSR A.MY.VTAB POSITION VERTICALLY LDA POSH SEC SBC LEFT.MARGIN CLC ADC RM.ADJUST JSR A.MY.HTAB POSITION HORIZONTALLY LDY CH LDA (BASEL),Y GET CHAR STA A.CHR.UNDER.CURS LDA ESC.FLAG BNE .1 LDA #'+ PLUS CURSOR FOR CURSOR MODE BNE .2 .1 LDA (BASEL),Y AND #$7F CMP #$60 IS CHAR ON SCREEN LOWER CASE BCC .2 NO AND #$DF FORCE LOWER CASE TO UPPER CASE .2 AND #$3F MAKE FLASHING CHAR ORA #$40 STA (BASEL),Y RTS *-------------------------------- A.CURSOR.OFF LDY CH LDA A.CHR.UNDER.CURS STA (BASEL),Y RESTORE SCREEN CHAR RTS *-------------------------------- MAN SAVE usr/src/fse/fse.s.a2 LOAD usr/src/fse/fse.s ASM