mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-22 00:32:44 +00:00
241 lines
4.9 KiB
Plaintext
241 lines
4.9 KiB
Plaintext
|
NEW
|
|||
|
AUTO 3,1
|
|||
|
*--------------------------------
|
|||
|
|
|||
|
D.YSAVE .EQ VAR.BEG-1
|
|||
|
D.CHR.UNDER.CURS .EQ D.YSAVE-1
|
|||
|
|
|||
|
*--------------------------------
|
|||
|
* APPLE IIE 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-79
|
|||
|
* 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 D.RD.KBD
|
|||
|
* JMP D.MY.HTAB
|
|||
|
D.MY.HTAB
|
|||
|
|
|||
|
STA CH set tab value
|
|||
|
RTS
|
|||
|
|
|||
|
JMP D.MY.VTAB
|
|||
|
JMP D.MY.CLREOL
|
|||
|
JMP D.MY.CLREOP
|
|||
|
* JMP D.MY.COUT
|
|||
|
|
|||
|
*--------------------------------
|
|||
|
|
|||
|
D.MY.COUT
|
|||
|
|
|||
|
STY D.YSAVE
|
|||
|
PHA SAVE ORIG CHAR
|
|||
|
CMP #$A0 CONVERT CNTRL CHARS TO INVERSE ALPHA
|
|||
|
BCS .1 REG CHAR
|
|||
|
AND #$7F CNTRL CHAR
|
|||
|
* dcj *ORA #$40 makes mousetext!!!
|
|||
|
|
|||
|
.1 PHA store in-line to speed it up some
|
|||
|
STA D.SET80COL
|
|||
|
STA D.SET80VID
|
|||
|
STA D.SETALTCHR
|
|||
|
LDA CH
|
|||
|
LSR
|
|||
|
TAY
|
|||
|
PLA
|
|||
|
PHP
|
|||
|
SEI
|
|||
|
BIT D.TXTPAGE2
|
|||
|
BCC .2
|
|||
|
BIT D.TXTPAGE1
|
|||
|
|
|||
|
.2 STA (BASEL),Y
|
|||
|
BIT D.TXTPAGE1
|
|||
|
PLP
|
|||
|
INC CH
|
|||
|
PLA RESTORE ORIG CHAR
|
|||
|
LDY D.YSAVE
|
|||
|
|
|||
|
D.SEV RTS
|
|||
|
|
|||
|
*--------------------------------
|
|||
|
|
|||
|
D.MY.CLP
|
|||
|
|
|||
|
LDA CTR
|
|||
|
JSR D.MY.VTAB
|
|||
|
|
|||
|
D.MY.CLREOP
|
|||
|
|
|||
|
JSR D.MY.CLREOL ZAP REST OF LINE
|
|||
|
LDA #0
|
|||
|
JSR D.MY.HTAB NEXT LINE ZAPPED FROM COL 0
|
|||
|
INC CTR BUMP COUNT TO NEXT LINE
|
|||
|
LDA CTR
|
|||
|
CMP LAST.LINE END OF PAGE?
|
|||
|
BCC D.MY.CLP < END
|
|||
|
BEQ D.MY.CLP = END
|
|||
|
RTS > END
|
|||
|
|
|||
|
*--------------------------------
|
|||
|
|
|||
|
D.MY.VTAB STA CV SET TAB VALUE
|
|||
|
JMP M.BASCALC COMPUTE NEW COUT BASE ADRS
|
|||
|
|
|||
|
*--------------------------------
|
|||
|
|
|||
|
D.RD80VID .EQ $C01F
|
|||
|
D.TXTPAGE2 .EQ $C055
|
|||
|
D.TXTPAGE1 .EQ $C054
|
|||
|
D.SET80COL .EQ $C001
|
|||
|
D.SET80VID .EQ $C00D
|
|||
|
D.SETALTCHR .EQ $C00F
|
|||
|
|
|||
|
D.PICK CLV
|
|||
|
|
|||
|
D.SCREENIT
|
|||
|
|
|||
|
PHA
|
|||
|
STA D.SET80COL ENABLE 80 COL STORE
|
|||
|
STA D.SET80VID ENABLE 80 COL DISPLAY
|
|||
|
STA D.SETALTCHR ENABLE LOWER CASE
|
|||
|
LDA CH
|
|||
|
LSR CH MOD 2 FOR PAGE SELECT
|
|||
|
TAY CH/2 FOR INDEX
|
|||
|
BVS .20 GO STORE
|
|||
|
* 80 COL PICK
|
|||
|
PHP
|
|||
|
SEI
|
|||
|
LDA D.TXTPAGE2
|
|||
|
BCC .10
|
|||
|
LDA D.TXTPAGE1
|
|||
|
|
|||
|
.10 LDA (BASEL),Y GET 80 COL CHAR
|
|||
|
TAY
|
|||
|
LDA D.TXTPAGE1
|
|||
|
PLP
|
|||
|
PLA
|
|||
|
TYA
|
|||
|
PHA
|
|||
|
BVC .30 EXIT ALWAYS
|
|||
|
* 80 COL STORE
|
|||
|
|
|||
|
.20 PLA
|
|||
|
PHA
|
|||
|
PHP
|
|||
|
SEI
|
|||
|
PHA
|
|||
|
LDA D.TXTPAGE2
|
|||
|
BCC .21
|
|||
|
LDA D.TXTPAGE1
|
|||
|
|
|||
|
.21 PLA
|
|||
|
STA (BASEL),Y PUT 80 COL CHAR
|
|||
|
LDA D.TXTPAGE1
|
|||
|
PLP
|
|||
|
|
|||
|
* COMMON EXIT
|
|||
|
|
|||
|
.30 PLA
|
|||
|
RTS
|
|||
|
|
|||
|
*--------------------------------
|
|||
|
|
|||
|
D.MY.CLREOL
|
|||
|
|
|||
|
LDY CH
|
|||
|
|
|||
|
.1 LDA #$A0 A-REG = BLANK
|
|||
|
CPY SCREEN.WIDTH
|
|||
|
BCS .2
|
|||
|
JSR D.MY.COUT OUTPUT BLANKS UNTIL SCREEN WIDTH
|
|||
|
LDY CH
|
|||
|
BNE .1 ...ALWAYS
|
|||
|
|
|||
|
.2 RTS
|
|||
|
|
|||
|
*--------------------------------
|
|||
|
|
|||
|
D.RD.KBD
|
|||
|
|
|||
|
JSR D.POSN SETUP CURSOR POSN
|
|||
|
LDA ESC.FLAG SEE IF EDIT MODE
|
|||
|
BNE .20 YES IT IS
|
|||
|
* CURSOR MODE - CURSOR IS INVERSE "+"
|
|||
|
JSR D.PICK
|
|||
|
STA D.CHR.UNDER.CURS
|
|||
|
AND #$80 SAVE INV BIT
|
|||
|
EOR #$80+'+ FLIP IT FOR + CURSOR
|
|||
|
BIT D.SEV
|
|||
|
JSR D.SCREENIT
|
|||
|
|
|||
|
.10 LDA $C000
|
|||
|
BPL .10
|
|||
|
|
|||
|
.11 BIT $C010
|
|||
|
PHA
|
|||
|
LDA D.CHR.UNDER.CURS
|
|||
|
BIT D.SEV
|
|||
|
JSR D.SCREENIT
|
|||
|
PLA
|
|||
|
RTS
|
|||
|
|
|||
|
* EDIT MODE - CURSOR IS BLINKING CURRENT CHAR
|
|||
|
* BLINKED WITH SOFTWARE TIMING LOOP.
|
|||
|
|
|||
|
.20 JSR D.PICK
|
|||
|
STA D.CHR.UNDER.CURS
|
|||
|
|
|||
|
.21 JSR D.PICK TOGGLE INV FLAG
|
|||
|
EOR #$80
|
|||
|
cmp #$40
|
|||
|
bcc .99
|
|||
|
cmp #$60
|
|||
|
bcs .99
|
|||
|
and #$1F
|
|||
|
|
|||
|
.99 BIT D.SEV
|
|||
|
JSR D.SCREENIT
|
|||
|
LDY #200 LOOP 200 TIMES BEFORE FLIPPING CHAR
|
|||
|
|
|||
|
.22 LDA $C000
|
|||
|
BMI .11
|
|||
|
LDA #00
|
|||
|
|
|||
|
.23 SEC COUNT 7*256 MICRO SECS
|
|||
|
SBC #1
|
|||
|
BNE .23
|
|||
|
DEY
|
|||
|
BEQ .21 END LOOP - FLIP CHAR
|
|||
|
BNE .22 BA CK KEY AGAIN
|
|||
|
|
|||
|
*--------------------------------
|
|||
|
|
|||
|
D.POSN LDA POSV
|
|||
|
JSR D.MY.VTAB POSITION VERTICALLY
|
|||
|
LDA POSH
|
|||
|
SEC
|
|||
|
SBC LEFT.MARGIN
|
|||
|
CLC
|
|||
|
ADC RM.ADJUST
|
|||
|
JMP D.MY.HTAB POSITION HORIZONTALLY
|
|||
|
|
|||
|
*--------------------------------
|
|||
|
MAN
|
|||
|
SAVE usr/src/fse/fse.s.a2e
|
|||
|
LOAD usr/src/fse/fse.s
|
|||
|
ASM
|