mirror of
https://github.com/A2osX/A2osX.git
synced 2024-09-10 07:54:37 +00:00
116 lines
3.3 KiB
Plaintext
116 lines
3.3 KiB
Plaintext
|
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
|