mirror of
https://github.com/A2osX/A2osX.git
synced 2024-10-31 23:09:33 +00:00
221 lines
6.5 KiB
Plaintext
221 lines
6.5 KiB
Plaintext
|
NEW
|
|||
|
AUTO 3,1
|
|||
|
*--------------------------------
|
|||
|
B.TMP1 .EQ VAR.BEG-1
|
|||
|
B.TMP2 .EQ B.TMP1-1
|
|||
|
B.TMP3 .EQ B.TMP2-1
|
|||
|
B.TMP4 .EQ B.TMP3-1
|
|||
|
.DO B.TMP4<$300
|
|||
|
*** VARS<$300
|
|||
|
.FIN
|
|||
|
*--------------------------------
|
|||
|
* STANDARD 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 B.RD.KBD
|
|||
|
JMP B.MY.HTAB
|
|||
|
JMP B.MY.VTAB
|
|||
|
JMP B.MY.CLREOL
|
|||
|
JMP B.MY.CLREOP
|
|||
|
JMP B.MY.COUT
|
|||
|
*--------------------------------
|
|||
|
B.CN .DA #$C3 SLOT + $C0 OF 80 COL BOARD
|
|||
|
B.N0 .EQ $30 SLOT * 16 OF 80 COL BOARD
|
|||
|
*--------------------------------
|
|||
|
B.MY.CLP LDA CTR
|
|||
|
JSR B.MY.VTAB
|
|||
|
B.MY.CLREOP JSR B.MY.CLREOL CLEAR TO END OF LINE
|
|||
|
LDA #0
|
|||
|
JSR B.MY.HTAB NEXT LINE BEGINS WITH COL 0
|
|||
|
INC CTR BUMP CTR TO NEXT LINE
|
|||
|
LDA CTR
|
|||
|
CMP LAST.LINE IS IT > LANT LINE
|
|||
|
BCC B.MY.CLP < END
|
|||
|
BEQ B.MY.CLP = END
|
|||
|
RTS > END
|
|||
|
*--------------------------------
|
|||
|
B.MY.HTAB STX B.TMP1 SAVE X REG
|
|||
|
LDX B.CN
|
|||
|
STA B.CHORZ,X SAVE HORIZONTAL POSN
|
|||
|
LDX B.TMP1 RESTORE X REG
|
|||
|
RTS
|
|||
|
*--------------------------------
|
|||
|
B.MY.VTAB STY B.TMP1 SAVE Y REG
|
|||
|
STX B.TMP2 SAVE X REG
|
|||
|
LDX B.CN
|
|||
|
STA CV SET NEW VERT POSN
|
|||
|
STA B.CVERT,X SAVE FOR VIDEX TOO
|
|||
|
JSR B.VTABZ DO CALCULATION
|
|||
|
LDY B.TMP1 RESTORE Y REG
|
|||
|
LDX B.TMP2 RESTORE X REG
|
|||
|
RTS
|
|||
|
*--------------------------------
|
|||
|
B.MY.COUT STY B.TMP1 SAVE Y REG
|
|||
|
STX B.TMP2 SAVE X REG
|
|||
|
LDX B.CN
|
|||
|
LDY B.CHORZ,X GET COLUMN POSN
|
|||
|
JSR B.CHRPUT PUT CHAR ON SCREEN
|
|||
|
INC B.CHORZ,X NEXT COLUMN
|
|||
|
LDY B.TMP1 RESTORE Y REG
|
|||
|
LDX B.TMP2 RESTORE X REG
|
|||
|
RTS
|
|||
|
*--------------------------------
|
|||
|
B.MY.CLREOL STY B.TMP3 SAVE Y REG
|
|||
|
STX B.TMP4 SAVE X REG
|
|||
|
LDX B.CN
|
|||
|
LDY B.CHORZ,X GET COL POSN
|
|||
|
.1 LDA #$A0 A REG = BLANK
|
|||
|
CPY SCREEN.WIDTH END OF LINE YET?
|
|||
|
BCS .2 YES
|
|||
|
JSR B.MY.COUT NO, PRINT A BLANK
|
|||
|
LDY B.CHORZ,X GET COL POSN
|
|||
|
BNE .1 ...ALWAYS
|
|||
|
.2 LDY B.TMP3 RESTORE Y REG
|
|||
|
LDX B.TMP4 RESTORE X REG
|
|||
|
RTS
|
|||
|
*--------------------------------
|
|||
|
* VIDEX IO ROUTINES
|
|||
|
*--------------------------------
|
|||
|
B.YSAVE .EQ $35 SAVE Y REG
|
|||
|
*
|
|||
|
B.ASAV1 .EQ $4F8 SAVE A REG
|
|||
|
B.XSAV1 .EQ $578 SAVE X REG
|
|||
|
B.MSLOT .EQ $7F8 SAVE SLOT NUMBER
|
|||
|
*--------------------------------
|
|||
|
B.BASEL .EQ $478-$C0 COMPUTED BASE ADRS LOW
|
|||
|
B.BASEH .EQ $4F8-$C0 COMPUTED BASE ADRS HIGH
|
|||
|
B.CHORZ .EQ $578-$C0 TRUE HORIZONTAL POSN
|
|||
|
B.CVERT .EQ $5F8-$C0 TRUE VERTICAL POSN
|
|||
|
B.START .EQ $6F8-$C0 SCROLL LINE START
|
|||
|
*--------------------------------
|
|||
|
B.FLAGS .EQ $7F8-$C0 FLAG BITS FOR VIDEX
|
|||
|
*--------------------------------
|
|||
|
B.DEV0 .EQ $C080 REGISTER SELECT
|
|||
|
B.DEV1 .EQ $C081 REGISTER DATA
|
|||
|
B.DISP0 .EQ $CC00 1ST PAGE OF BANK
|
|||
|
B.DISP1 .EQ $CD00 2ND PAGE OF BANK
|
|||
|
*--------------------------------
|
|||
|
B.VTABZ STA B.ASAV1 COMPUTE VIDEX BASE ADRS
|
|||
|
ASL
|
|||
|
ASL
|
|||
|
CLC
|
|||
|
ADC B.ASAV1 A*5 + START
|
|||
|
ADC B.START,X
|
|||
|
PHA
|
|||
|
LSR * $10
|
|||
|
LSR
|
|||
|
LSR
|
|||
|
LSR
|
|||
|
STA B.BASEH,X
|
|||
|
PLA
|
|||
|
ASL
|
|||
|
ASL
|
|||
|
ASL
|
|||
|
ASL
|
|||
|
STA B.BASEL,X
|
|||
|
RTS
|
|||
|
*--------------------------------
|
|||
|
B.PSNCALC STX B.MSLOT POSITION CALCULATION
|
|||
|
TYA
|
|||
|
CLC
|
|||
|
ADC B.BASEL,X
|
|||
|
STA B.XSAV1
|
|||
|
LDA #0
|
|||
|
ADC B.BASEH,X
|
|||
|
LSR BIT 0 TO CARRY
|
|||
|
PHP SAVE CARRY BIT
|
|||
|
AND #3 BIT 1,2 SPECIFY WHICH BANK
|
|||
|
ASL
|
|||
|
ASL
|
|||
|
ORA #B.N0
|
|||
|
STY B.YSAVE
|
|||
|
TAY
|
|||
|
LDA B.DEV0,Y FLIP IN RIGHT 512 BANK
|
|||
|
LDY B.YSAVE
|
|||
|
PLP CARRY SAYS WHICH 256 BYTE PAGE
|
|||
|
LDX B.XSAV1 TO USE
|
|||
|
RTS
|
|||
|
*--------------------------------
|
|||
|
B.CHRPUT ASL KILL SIGN BIT
|
|||
|
PHA SAVE CHAR
|
|||
|
LDA B.FLAGS,X GET CHAR SET FLAG
|
|||
|
LSR IN CARRY BIT
|
|||
|
PLA RECOVER CHAR
|
|||
|
ROR INSERT CHAR SET BIT
|
|||
|
PHA SAVE CHAR
|
|||
|
JSR B.PSNCALC COMPUTE POSN
|
|||
|
PLA GET CHAR
|
|||
|
BCS .1 HIGH PAGE
|
|||
|
STA B.DISP0,X LOW PAGE STORE CHAR
|
|||
|
BCC .2
|
|||
|
.1 STA B.DISP1,X HIGH PAGE STORE CHAR
|
|||
|
.2 LDX B.MSLOT
|
|||
|
RTS
|
|||
|
*--------------------------------
|
|||
|
B.RD.KBD JSR B.CURSOR.ON TURN ON CURSOR
|
|||
|
.1 LDA $C000 GET CHAR
|
|||
|
BPL .1
|
|||
|
BIT $C010 STROBE KBD TO KILL FLAG BIT
|
|||
|
PHA SAVE CHAR
|
|||
|
JSR B.CURSOR.OFF TURN OFF CURSOR
|
|||
|
PLA CHAR IN A REG
|
|||
|
RTS
|
|||
|
*--------------------------------
|
|||
|
B.CURSOR.ON LDA POSV POSITION VERTICVALLY
|
|||
|
JSR B.MY.VTAB
|
|||
|
LDA POSH
|
|||
|
SEC
|
|||
|
SBC LEFT.MARGIN
|
|||
|
CLC
|
|||
|
ADC RM.ADJUST
|
|||
|
JSR B.MY.HTAB POSITION HORIZONTALLY
|
|||
|
LDY #B.N0
|
|||
|
LDA ESC.FLAG CHK FOR EDIT OR SCROLL MODE
|
|||
|
BEQ .1 MUST BE SCROLL MODE.
|
|||
|
LDA #$67 EDIT MODE GETS LITTLE CURSOR
|
|||
|
BNE .2
|
|||
|
.1 LDA #$C0 SCROLL MODE GETS NORMAL CURSOR
|
|||
|
.2 PHA
|
|||
|
LDA #$0A
|
|||
|
STA B.DEV0,Y SET CTRC = REG 10
|
|||
|
PLA
|
|||
|
STA B.DEV1,Y SET CURSOR START DATA
|
|||
|
B.WRIT LDX B.CN
|
|||
|
LDY #B.N0
|
|||
|
LDA #$0F
|
|||
|
STA B.DEV0,Y CTRC = REG 15
|
|||
|
LDA B.CHORZ,X
|
|||
|
CLC
|
|||
|
ADC B.BASEL,X
|
|||
|
STA B.DEV1,Y SET CURSOR HOIZONTAL POSN
|
|||
|
LDA #$0E
|
|||
|
STA B.DEV0,Y CTRC = REG 14
|
|||
|
LDA #0
|
|||
|
ADC B.BASEH,X
|
|||
|
STA B.DEV1,Y SET CURSOR VERTICAL POSN
|
|||
|
RTS
|
|||
|
*--------------------------------
|
|||
|
B.CURSOR.OFF LDA #24 GO TO LINE 24 (DOES NOT EXIST)
|
|||
|
JSR B.MY.VTAB
|
|||
|
JMP B.WRIT PUT CURSOR THERE
|
|||
|
*--------------------------------
|
|||
|
MAN
|
|||
|
SAVE usr/src/fse/fse.s.videx
|
|||
|
LOAD usr/src/fse/fse.s
|
|||
|
ASM
|