NEW AUTO 3,1 *-------------------------------------- * I/O VECTORS -- 3 BYTES EACH *-------------------------------- IO.INIT JMP S.IO.INIT IO.WARM JMP S.IO.WARM READ.KEY.WITH.CASE JMP S.READ.KEY.WITH.CASE GET.HORIZ.POSN LDA CH RTS IO.HOME JMP MON.HOME IO.CLREOL JMP MON.CLREOL IO.CLREOP JMP MON.CLREOP IO.UP JMP MON.UP IO.DOWN JMP MON.LF IO.LEFT JMP MON.BS IO.RIGHT JMP MON.ADVANC IO.COUT JMP MON.COUT IO.PICK.SCREEN LDA (BASL),Y RTS IO.HTABX STX CH RTS IO.HTAB STA CH RTS IO.VTAB JMP S.IO.VTAB IO.CASE.TOGGLE LDA LC.MODE EOR #$FF STA LC.MODE RTS *-------------------------------- * VARIABLE LENGTH ROUTINES * (ENTERED THROUGH VECTORS) *-------------------------------- S.IO.VTAB STA CV JMP MON.VTAB *-------------------------------- S.IO.INIT LDA #40 STA SCREEN.WIDTH JSR MON.SETKBD JSR MON.SETVID JSR MON.INIT JMP MON.HOME *-------------------------------- S.IO.WARM CLD LDX CV JSR MON.INIT STX CV STX LC.MODE POSITIVE VALUE JSR MON.VTAB RTS *-------------------------------- * READ KEY WITH CASE CONTROL *-------------------------------- S.READ.KEY.WITH.CASE LDA $BE43 See if "EXEC" in progress BMI .1 ...Yes, use straight input LDA LC.MODE BMI .2 Yes, use fancy translation .1 JSR MON.RDKEY ORA #$80 Make sure it looks right CLC SIGNAL "NO OPEN APPLE PRESSED" RTS *-------------------------------- .2 LDY CH Set up cursor LDA (BASL),Y Char from screen PHA CMP #$E0 ELIMINATE CASE BCC .25 AND #$DF .25 AND #$3F Make it flash ORA #$40 STA (BASL),Y PLA JSR MON.READCH BIT $C063 Shift key down? BPL .4 Yes CMP #$C0 No, lower case if letter BCC .3 ORA #$20 CLC SIGNAL "NO OPEN APPLE PRESSED" .3 RTS *-------------------------------- .4 CMP #$C0 Shift key down BCC .8 Not a letter key BEQ .7 Shift-P CMP #$DD Shift-M BEQ .5 Yes CMP #$DE Shift-N BNE .6 No .5 AND #$EF Make capital-M or -N .6 CLC SIGNAL "NO OPEN APPLE PRESSED" RTS *-------------------------------- .7 LDA #$D0 Make capital-P CLC SIGNAL "NO OPEN APPLE PRESSED" RTS *-------------------------------- .8 CMP #$87 Look for control-shift-A thru -F BCS .10 No CMP #$81 Control-A BCC .10 No, control-P BNE .9 No, control-B thru -F LDA #$C0-$58-1 Control-shift-A = at-sign (@) .9 ADC #$58 .10 CLC SIGNAL "NO OPEN APPLE PRESSED" RTS *-------------------------------------- MAN SAVE usr/src/scmasm.31/scmasm.s.iostd LOAD usr/src/scmasm.31/scmasm.s ASM