1
0
mirror of https://github.com/RevCurtisP/C02.git synced 2024-06-08 21:29:30 +00:00
C02/x16/include/veratxt.a02
2019-10-27 14:25:30 -04:00

68 lines
2.3 KiB
Plaintext

; Vera Layer Control Assembly Language Routines for C02
; Requires External Routines GETMEA, GETMBX, GETTBS,
; and External Variables TEMP0,TEMP1,TEMP2
;getvca(layer, index) - Get Vera Character Address
;Args: A = Layer (0/1)
; Y = Character Index
;Sets: TEMP0 = Bank
; TEMP1 = Address LSB
; TEMP2 = Address MSB
;Returns: A = Bank
; Y = Address LSB
; X = Address MSB
GETVCA: PHA ;Save Layer Number
STY TEMP1 ;Set Offset LSB to Index
LDA #0 ;Set Offset MSB to Zero
ASL TEMP1 ;Multiple Offset by 2
ROL
STA TEMP2 ;and Store MSB
PLA ;Restore Layer Number
JSR GETTBS ;Get Tile Base
TXA ;Add Tile Base LSB
CLC
ADC TEMP1 ;to Offset LSB
STA TEMP1
TYA ;Add Tile Base MSB
ADC TEMP2 ;to Offset MSB
STA TEMP2
LDA #0 ;Set Bank
ADC #0 ;to Carry
STA TEMP0
LDX #2 ;Set Count to 2
JMP ASLADR ;and Shift Address Left
;getvcd(layer, index) - Read Vera Character Data to Array
;Args: A = Layer (0/1)
; Y = Character Index
;Uses: DSTLO,DSTHI = Address of Array
;Destroys: TEMP0,TEMP1,TEMP2
;Returns: A = Number of Bytes Read
GETVCD: JSR SETVAC ;Set Vera Address to Character Address
LDA #8 ;Set Byte Count to 8
JMP GETMEA ;and Read Bytes into Array
;setvac(layer, index) - Set Vera Address to Character Address
;Args: A = Layer (0/1)
; Y = Character Index
;Sets: TEMP0 = Bank
; TEMP1 = Address LSB
; TEMP2 = Address MSB
;Returns: A = Bank + Auto-Increment
; Y = Address LSB
; X = Address MSB
SETVAC: JSR GETVCA
ORA #$10 ;Set Auto-Increment to 1
JMP SETADR ;and Set Vera Address
;setvcd(layer, index) - Write Vera Character Data from Array
;Args: A = Layer (0/1)
; Y = Character Index
;Uses: SRCLO,SRCHI = Address of Array
;Destroys: TEMP0,TEMP1,TEMP2
;Returns: A = Number of Bytes Read
GETVCD: JSR SETVAC ;Set Vera Address to Character Address
LDA #8 ;Set Byte Count to 8
JMP SETMEA ;and Read Bytes into Array