mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-28 10:52:33 +00:00
167 lines
3.8 KiB
Plaintext
167 lines
3.8 KiB
Plaintext
NEW
|
||
AUTO 3,1
|
||
*--------------------------------------
|
||
.PH $A800
|
||
*--------------------------------
|
||
STB.SCREEN.WIDTH .EQ $A5
|
||
*--------------------------------
|
||
STB.SLOT .EQ 3
|
||
*--------------------------------
|
||
STB.HORIZ .EQ $05F8+STB.SLOT
|
||
STB.ESCBYT .EQ $06F8+STB.SLOT
|
||
STB.FLAGS .EQ $0778+STB.SLOT
|
||
*--------------------------------
|
||
STB.ENTRY .EQ STB.SLOT*256+$C000
|
||
STB.RDKEY1 .EQ STB.SLOT*256+$C005
|
||
STB.COUT1 .EQ STB.SLOT*256+$C019
|
||
STB.SCREEN .EQ STB.SLOT*256+$C031
|
||
*--------------------------------
|
||
* I/O VECTORS -- 3 BYTES EACH
|
||
*--------------------------------
|
||
JMP STB.INIT
|
||
JMP STB.WARM
|
||
JMP STB.READ.KEY.WITH.CASE
|
||
JMP STB.GET.HORIZ.POSN
|
||
LDA #$8C ^L--HOME
|
||
.HS 2C
|
||
LDA #$9D ^]--CLREOL
|
||
.HS 2C
|
||
LDA #$8B ^K--CLREOP
|
||
.HS 2C
|
||
LDA #$9F ^_--UP
|
||
.HS 2C
|
||
LDA #$8A ^J--DOWN
|
||
.HS 2C
|
||
LDA #$88 ^H--LEFT
|
||
.HS 2C
|
||
LDA #$9C ^\--RIGHT
|
||
NOP
|
||
JMP MON.COUT
|
||
JMP STB.PICK.SCREEN
|
||
JMP STB.HTABX
|
||
JMP STB.HTAB
|
||
JMP STB.VTAB
|
||
*---Case Change MUST go here-----
|
||
LDA STB.FLAGS
|
||
EOR #$40
|
||
STA STB.FLAGS
|
||
RTS
|
||
*--------------------------------
|
||
* VARIABLE LENGTH ROUTINES
|
||
*--------------------------------
|
||
STB.HTABX
|
||
PHA
|
||
TXA
|
||
JSR STB.HTAB
|
||
PLA
|
||
RTS
|
||
*--------------------------------
|
||
STB.GET.HORIZ.POSN
|
||
LDA STB.HORIZ
|
||
RTS
|
||
*--------------------------------
|
||
STB.VTAB
|
||
STA CV
|
||
LDA STB.HORIZ
|
||
STB.HTAB
|
||
PHA SAVE HORIZ POSN
|
||
LDA #$9E
|
||
JSR STB.COUT1
|
||
PLA GET HORIZ POSN
|
||
JSR .1
|
||
LDA CV
|
||
|
||
.1 CLC
|
||
ADC #$A0
|
||
JMP STB.COUT1
|
||
*--------------------------------
|
||
STB.INIT
|
||
LDA #80
|
||
STA STB.SCREEN.WIDTH
|
||
LDA #$8C CLEAR SCREEN AND START STB-80
|
||
JSR STB.ENTRY
|
||
LDA #0
|
||
STA STB.ESCBYT DISABLE ^A AND ESC-MODE
|
||
LDA #2 DISABLE "HOME" SENSING
|
||
STA STB.FLAGS
|
||
STB.INSTALL.VECTORS
|
||
LDX #1
|
||
.1 LDA STB.VECTORS,X
|
||
STA $36,X
|
||
STA STB.SLOT*2+$BE10,X
|
||
LDA STB.VECTORS+2,X
|
||
BIT F.EXEC
|
||
BMI .2
|
||
STA $38,X
|
||
.2 STA STB.SLOT*2+$BE20,X
|
||
DEX
|
||
BPL .1
|
||
RTS
|
||
*--------------------------------
|
||
STB.VECTORS .DA STB.COUT
|
||
.DA STB.RDKEY
|
||
*--------------------------------
|
||
STB.WARM
|
||
CLD
|
||
LDX CV
|
||
JSR MON.INIT
|
||
STX CV
|
||
JMP STB.INSTALL.VECTORS
|
||
*--------------------------------
|
||
* READ KEY WITH CASE CONTROL
|
||
*--------------------------------
|
||
STB.READ.KEY.WITH.CASE
|
||
JSR MON.RDKEY
|
||
ORA #$80 REQUIRED FOR EXEC FILES
|
||
CLC SIGNAL NO OPEN APPLE
|
||
RTS
|
||
*--------------------------------
|
||
STB.RDKEY
|
||
CLD
|
||
LDA #$0A
|
||
STA STB.SLOT*16+$C080
|
||
LDA #$07 SOLID DBL LINE CURSOR
|
||
STA STB.SLOT*16+$C081
|
||
JSR STB.RDKEY1
|
||
ORA #$80 Make sure it looks right
|
||
PHA
|
||
LDA #$0A
|
||
STA STB.SLOT*16+$C080
|
||
LDA #$20 CURSOR OFF
|
||
STA STB.SLOT*16+$C081
|
||
PLA
|
||
RTS
|
||
*--------------------------------
|
||
STB.COUT
|
||
CLD
|
||
CMP #$80 NORMAL OR INVERSE?
|
||
BCS .1 ...NORMAL
|
||
PHA ...80-COLUMN
|
||
LDA #$8F SELECT INVERSE DISPLAY
|
||
JSR STB.COUT1
|
||
PLA
|
||
ORA #$80 MAKE PRINTABLE CHARACTER
|
||
CMP #$A0
|
||
BCS .2
|
||
ORA #$40
|
||
.2 JSR STB.COUT1
|
||
LDA #$8E SELECT NORMAL DISPLAY
|
||
.1 JMP STB.COUT1
|
||
*--------------------------------
|
||
STB.PICK.SCREEN
|
||
STX $481
|
||
TYA
|
||
STA $482
|
||
JSR STB.HTAB
|
||
JSR STB.SCREEN
|
||
LDY $482
|
||
LDX $481
|
||
RTS
|
||
*--------------------------------------
|
||
.EP
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE usr/src/scmasm.30/io.s.stb80
|
||
LOAD usr/src/scmasm.30/scmasm.s
|
||
ASM
|