A2osX/SCMASM.30/IO.S.IIE..txt

138 lines
2.9 KiB
Plaintext
Raw Permalink Normal View History

NEW
AUTO 3,1
*--------------------------------------
.PH $A800
*--------------------------------
* I/O VECTORS -- 3 BYTES EACH
*--------------------------------
JMP IIE.INIT
JMP IIE.WARM
JMP IIE.RDKEY
JMP S.GET.HORIZ.POSN
JMP MON.HOME
JMP MON.CLREOL
JMP MON.CLREOP
JMP MON.UP
JMP MON.LF
JMP IIE.LEFT
JMP IIE.RIGHT
JMP IIE.COUT
JMP IIE.PICK.SCREEN
JMP IIE.HTABX
JMP IIE.HTAB
JMP IIE.VTAB
*---Case Toggle MUST go here-----
RTS
*--------------------------------
* VARIABLE LENGTH ROUTINES
*--------------------------------
IIE.INIT
LDA $BF98
AND #2
BEQ IO.HOME
LDA #$99 CTRL-Y
JMP $C300
*--------------------------------
IIE.HTABX
PHA
TXA
JSR IIE.HTAB
PLA
RTS
*--------------------------------
IIE.HTAB
BIT $C01F
BPL .1
STA $57B
RTS
.1 STA CH
RTS
*--------------------------------
S.GET.HORIZ.POSN
LDA $57B
BIT $C01F
BMI .1
LDA CH
.1 RTS
*--------------------------------
IIE.WARM
CLD
LDX CV SAVE CV
JSR MON.INIT
TXA GET CV, FALL INTO VTAB
IIE.VTAB
STA CV
JMP MON.VTAB
*--------------------------------
IIE.RDKEY
LDA #40
BIT $C01F
BPL .1
ASL
.1 STA SCREEN.WIDTH
JSR MON.RDKEY
CMP #$FF
BNE .2
LDA #$88
.2 ASL $C061 SET CARRY IF "OPEN APPLE" PRESSED
ORA #$80
RTS
*--------------------------------
IIE.COUT
CMP #$80 NORMAL OR INVERSE?
BCS .2 ...NORMAL
BIT $C01F ...INVERSE; 40- OR 80-COLUMNS?
BPL .2 ...40-COLUMN
PHA ...80-COLUMN
LDA #$8F SELECT INVERSE DISPLAY
JSR MON.COUT
PLA
CMP #$20 CONTROL CHAR?
BCS .1 ...NO
ORA #$40 MAKE PRINTABLE CHARACTER
.1 ORA #$80
JSR MON.COUT
LDA #$8E SELECT NORMAL DISPLAY
.2 JMP MON.COUT
*--------------------------------
IIE.PICK.SCREEN
BIT $C01F
BMI .1
LDA (BASL),Y
RTS
.1 TYA
LSR
TAY
PHP
SEI
LDA $C055
BCC .2
LDA $C054
.2 LDA (BASL),Y
BIT $C054
PLP
PHA SAVE CHAR FROM SCREEN
TYA RESTORE Y-REG
ROL
TAY
PLA
RTS
*--------------------------------
IIE.RIGHT
BIT $C01F IN 80-COLUMN MODE?
BMI .1 ...YES
JMP MON.ADVANC
.1 LDA #$9C FORWARD SPACE
.HS 2C SKIP TWO BYTES
*--------------------------------
IIE.LEFT
LDA #$88 BACKSPACE
JMP MON.COUT
*--------------------------------------
.EP
*--------------------------------------
MAN
SAVE usr/src/scmasm.30/io.s.iie
LOAD usr/src/scmasm.30/scmasm.s
ASM