mirror of
https://github.com/RevCurtisP/C02.git
synced 2025-02-16 14:30:33 +00:00
Added Functions for Layer Registers
This commit is contained in:
parent
303263e915
commit
3b74138826
@ -2,6 +2,14 @@
|
||||
; Requires External Functions NYBCAT, NYBCUT
|
||||
; and Variables TEMP0
|
||||
|
||||
;getadr() - Get Vera Address
|
||||
;Args: A = Bank + Auto-Increment
|
||||
; Y,X = Address
|
||||
GETADR: LDX $9F20 ;Store Address LSB
|
||||
LDY $9F21 ;Store Address MSB
|
||||
LDA $9F22 ;Store Bank & Auto-Increment
|
||||
RTS
|
||||
|
||||
;getvid() - Get Video Output Mode
|
||||
;Returns: A = Video Mode
|
||||
; Y = Chroma Disabled
|
||||
@ -32,7 +40,7 @@ GETBDR: LDA #$03 ;Set Register Offset to Border Color
|
||||
GETDCR: LDY #$00 ;Set MSB to Display Composer Page
|
||||
TAX ;Set LSB to Register Offset
|
||||
;and Execute GETREG
|
||||
;getreg(addr);
|
||||
;getreg(&addr);
|
||||
;Args: Y,X = Address
|
||||
;Returns: A = Mode
|
||||
; X = Current Data Port
|
||||
@ -42,6 +50,194 @@ GETBYT: JSR SETADR ;Set Vera Address
|
||||
LDA $9F23,X ;Read LSB from Data Port
|
||||
RTS
|
||||
|
||||
;getmem(count, &addr) - Read Array From Vera Memory
|
||||
;Args: A = Number of Bytes to Read
|
||||
; Y,X = Address of Array to Read Into
|
||||
;Requires: setadr()
|
||||
;Sets: DSTLO,DSTHI = Address of Array
|
||||
; TEMP0 = Number of Bytes to Read
|
||||
;Affects: A
|
||||
;Returns: Y = Number of Bytes Read
|
||||
; X = Current Data Port
|
||||
GETMEM: JSR SETDST ;Save Destination Address
|
||||
GETMEA: STA TEMP0 ;Save Number of Bytes
|
||||
LDY #0 ;Initialize Counter
|
||||
LDX $9F25 ;Get Current Data Port
|
||||
GETMEL: LDA $9F23,X ;Read Byte from Data Port
|
||||
STA (DSTLO),Y ;Store in Memory
|
||||
INY ;Increment Counter
|
||||
CPY TEMP0 ;If Limit Not Reached
|
||||
BNE GETMEL ; Loop
|
||||
|
||||
;getmod() - Get Layer 0/1 Mode
|
||||
;Args: A = Layer (0/1)
|
||||
;Affects: Y
|
||||
;Returns: A = Layer Mode
|
||||
; X = Current Data Port
|
||||
GETMOD: JSR GETLRC ;Read Register
|
||||
LSR ;Shift Left Five Bits
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
RTS
|
||||
|
||||
;getenb() - Get Layer 0/1 Enabled
|
||||
;Args: A = Layer (0/1)
|
||||
;Affects: Y
|
||||
;Returns: A = $FF - Layer Enabled
|
||||
; $00 - Layer Disabled
|
||||
; X = Current Data Port
|
||||
GETENB: JSR GETLRC ;Read Register
|
||||
AND #$01 ;Isolate Bit 1
|
||||
BEQ GETENX ;If Set
|
||||
LDA #$FF ; Return TRUE
|
||||
GETENX: RTS ;Else Return FALSE
|
||||
|
||||
;getlrc() - Get Layer 0/1 Control Register
|
||||
;Args: A = Layer (0/1)
|
||||
;Affects: Y
|
||||
;Returns: A = Control Register Contents
|
||||
; X = Current Data Port
|
||||
GETLRC: LDX #0 ;Set Offset to Control Register
|
||||
|
||||
;getlrr() - Get Layer 0/1 Register
|
||||
;Args: A = Layer (0/1)
|
||||
; X = Register Offset
|
||||
;Affects: Y
|
||||
;Returns: A = Contents of Register
|
||||
; X = Current Data Port
|
||||
GETLRR: JSR GETLRP ;Get Layer Page in Y
|
||||
BNE GETREG ;and Read Register Contents
|
||||
|
||||
;getlrp() - Get Layer 0/1 Register Page
|
||||
;Args: A = Layer (0/1)
|
||||
;Returns: A,Y = Layer Register Page
|
||||
GETLRP: AND #$01 ;Isolate Bit 1
|
||||
ASL ;Move to Left Nybble
|
||||
ASL
|
||||
ASL
|
||||
ASL
|
||||
ORA #$20 ;And Add to 2
|
||||
TAY ;Return Page in Y
|
||||
RTS
|
||||
|
||||
;getchd(index, &array) - Read Character Data into Array
|
||||
;Args: A = Character Index
|
||||
; Y,X = Address of Array to Read into
|
||||
;Destroys: TEMP0,TEMP1,TEMP2
|
||||
;Returns: A = Number of Bytes Read
|
||||
GETCHD: JSR SETDST ;Store Address in Destination Pointer
|
||||
STA 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
|
||||
JSR GETLRI ;Get Tile Base
|
||||
TXA ;Add Offset To Tile Base
|
||||
CLC
|
||||
ADC TEMP0
|
||||
STA TEMP0
|
||||
TYA
|
||||
ADC TEMP1
|
||||
STA TEMP1
|
||||
LDA #0
|
||||
ADC #0
|
||||
JSR GETMBX ;Multiply by 4
|
||||
ORA #$10 ;Set Auto-Increment to 1
|
||||
JSR SETADR ;and Set Vera Address
|
||||
LDA #8 ;Set Byte Count to 8
|
||||
BNE GETMEA ;and Read Bytes into Array
|
||||
|
||||
;gettba() - Get Layer 0/1 Tile Base Address
|
||||
;Args: A = Layer (0/1)
|
||||
;Destroys: TEMP1,TEMP2
|
||||
;Returns: A = Tile Base Bank
|
||||
; Y,X = Tile Base Address
|
||||
GETTBA: LDX #4 ;Set Register Offset
|
||||
.DC $2C ;Read Register Pair and Rotate
|
||||
|
||||
;getmba() - Get Layer 0/1 Map Base Address
|
||||
;Args: A = Layer (0/1)
|
||||
;Destroys: TEMP1,TEMP2
|
||||
;Returns: A = Map Base Bank
|
||||
; Y,X = Map Base Address
|
||||
GETMBA: LDX #2 ;Set Register Offset
|
||||
JSR GETLRI ;Read Register Pair as Integer
|
||||
LDA #0 ;Initialize Page to 0
|
||||
JSR SAVRXY ;Save Integer in TEMP1,TEMP2
|
||||
GETMBX: LDX #2 ;Do Twice
|
||||
GETMBL: ASL TEMP1 ; Rotate LSB
|
||||
ROL TEMP2 ; MSB and
|
||||
ROL ; Bank Left
|
||||
DEX
|
||||
BNE GETMBL
|
||||
JMP RESRXY ;Load LSB, MSB and Return
|
||||
|
||||
;getvsc() - Get Layer 0/1 Vertical Scroll
|
||||
;Args: A = Layer (0/1)
|
||||
;Returns: A,X = Vertical Scroll LSB
|
||||
; Y = Vertical Scroll MSB
|
||||
GETVSC: LDX #8 ;Set Register Offset
|
||||
.DC $2C ;Skip to GETLRI (BIT Absolute)
|
||||
|
||||
;gethsc() - Get Layer 0/1 Horizontal Scroll
|
||||
;Args: A = Layer (0/1)
|
||||
;Returns: A,X = Horizontal Scroll LSB
|
||||
; Y = Horizontal Scroll MSB
|
||||
GETHSC: LDX #6 ;Set Register Offset
|
||||
.DC $2C ;Skip to GETLRI (BIT Absolute)
|
||||
|
||||
;gettbs() - Get Layer 0/1 Tile Base
|
||||
;Args: A = Layer (0/1)
|
||||
;Returns: A,X = Tile Base LSB
|
||||
; Y = Tile Base MSB
|
||||
GETTBS: LDX #4 ;Set Register Offset
|
||||
.DC $2C ;Skip to GETLRI (BIT Absolute)
|
||||
|
||||
;getmbs() - Get Layer 0/1 Map Base
|
||||
;Args: A = Layer (0/1)
|
||||
;Returns: A,X = Map Base LSB
|
||||
; Y = Map Base MSB
|
||||
GETMBS: LDX #2 ;Set Register Offset
|
||||
|
||||
;getlri() - Get Layer 0/1 Register Pair as Integer
|
||||
;Args: A = Layer (0/1)
|
||||
; X = Register Offset
|
||||
;Returns: A,X = Integer LSB
|
||||
; Y = Integer LSB
|
||||
GETLRI: JSR GETLRP ;Get Layer Page in Y
|
||||
BNE GETREI ;and Read Register Contents
|
||||
|
||||
|
||||
;mapsiz() - Convert Map Size Specifier to Pixels
|
||||
;Args: A = Map Size Specifier
|
||||
;Affects: A
|
||||
;Returns: Y,X Map Size in Pixels
|
||||
MAPSIZ: TAX ;Copy Map Size Specifier to X
|
||||
LDA MAPSIH,X ;Load Pixels MSB from Table
|
||||
TAY ;and Return in Y
|
||||
LDA MAPSIL,X ;Load Pixels LSB from Table
|
||||
TAX ;and Return in X
|
||||
MAPSIL: .DC $20,$40,$80,$00
|
||||
MAPSIH: .DC $00,$00,$00,$01
|
||||
|
||||
;tilsiz() - Convert Tile Size Specifier to Pixels
|
||||
;Args: A = Tile Size Specifier
|
||||
;Affects: A
|
||||
;Returns: A Tile Size in Pixels
|
||||
TILSIZ: TAX ;Copy Map Size Specifier to X
|
||||
LDA TILSIT,X ;Load Pixels MSB from Table
|
||||
RTS
|
||||
TILSIT: .DC $08,$10
|
||||
|
||||
;gettsz() - Get Layer 0/1 Tile Size
|
||||
|
||||
;getmsz() - Get Layer 0/1 Map Size
|
||||
;Args: A = Layer (0/1)
|
||||
;Affects: X
|
||||
;Returns: A = Map Width Specifier
|
||||
; Y = Map Height Specifier
|
||||
|
||||
;getvsp() - Get Vertical Stop
|
||||
;Affects: A
|
||||
;Returns: Y,X = Vertical Stop
|
||||
@ -99,13 +295,14 @@ GETHVS: JSR GETDCR ;Read LSB from Register
|
||||
;getiql() - Get Interrupt Line
|
||||
;Affects: A
|
||||
;Returns: Y,X = Interrupt Line#
|
||||
GETIQL: LDA #9 ;Set Register Offset to HSCALE,VSCALE
|
||||
GETIQL: LDA #9 ;Set Register Offset to Interrupt Line
|
||||
.DC $2C ;Skip to SETDCX (BIT Absolute)
|
||||
|
||||
;getscl() - Get Horizontal and Vertical Scale
|
||||
;Returns: A,X = Horizontal Scale
|
||||
; Y = Vertical Scale
|
||||
GETSCL: LDA #1 ;Set Register Offset to HSCALE,VSCALE
|
||||
.DC $2C ;Skip to SETDCI (BIT Absolute)
|
||||
|
||||
;getdci() - Get Display Composer Register Pair
|
||||
;Args: A = Register Offset
|
||||
@ -135,31 +332,64 @@ GETINT: ORA #$10 ;Set Auto-Increment to 1
|
||||
TAX ;Copy LSB to X
|
||||
RTS
|
||||
|
||||
;sethsr() - Get Horizontal Start
|
||||
;Affects: A
|
||||
;Returns: Y,X = Horizontal Start
|
||||
SETHSR: TYA ;Convert MSB to High Bits
|
||||
AND #$03
|
||||
;setvsp() - Set Horizontal Stop
|
||||
;Args: Y,X = Horizontal Stop
|
||||
;Affects: A,X,Y
|
||||
SETVSP: TYA ;Convert MSB to High Bit
|
||||
AND #$01
|
||||
ASL
|
||||
ASL
|
||||
STA TEMP0 ;and Save
|
||||
ASL
|
||||
ASL
|
||||
ASL
|
||||
STA TEMP1 ;and Save
|
||||
TXA ;Copy LSB to Accumlator
|
||||
LDX #5 ;Set Register Offset to Horizontal Start
|
||||
JSR SETHVS ;Write LSB and Get High Bits
|
||||
AND #$F3 ;Mask Start Stop High
|
||||
LDX #7 ;Set Register Offset to Horizontal Start
|
||||
LDY #$DF ;Set High Bits Mask
|
||||
JMP SETHST ;OR in High Bits and Write Back
|
||||
|
||||
;sethsr() - Get Horizontal Start
|
||||
;Affects: A
|
||||
;Returns: Y,X = Horizontal Start
|
||||
;setvsr() - Set Horizontal Start
|
||||
;Args: Y,X = Horizontal Start
|
||||
;Affects: A,X,Y
|
||||
SETVSR: TYA ;Convert MSB to High Bit
|
||||
AND #$01
|
||||
ASL
|
||||
ASL
|
||||
ASL
|
||||
ASL
|
||||
STA TEMP1 ;and Save
|
||||
TXA ;Copy LSB to Accumlator
|
||||
LDX #6 ;Set Register Offset to Horizontal Start
|
||||
LDY #$EF ;Set High Bits Mask
|
||||
JMP SETHST ;OR in High Bits and Write Back
|
||||
|
||||
;sethsp() - Set Horizontal Stop
|
||||
;Args: Y,X = Horizontal Stop
|
||||
;Affects: A,X,Y
|
||||
SETHSP: TYA ;Convert MSB to High Bits
|
||||
AND #$03
|
||||
ASL
|
||||
ASL
|
||||
STA TEMP1 ;and Save
|
||||
TXA ;Copy LSB to Accumlator
|
||||
LDX #5 ;Set Register Offset to Horizontal Start
|
||||
LDY #$F3 ;Set High Bits Mask
|
||||
JMP SETHST ;OR in High Bits and Write Back
|
||||
|
||||
;sethsr() - Set Horizontal St7art
|
||||
;Args: Y,X = Horizontal Start
|
||||
;Destroys TEMP0,TEMP1,TEMP2
|
||||
;Affects: A,X,Y
|
||||
SETHSR: TYA ;Convert MSB to High Bits
|
||||
AND #$03
|
||||
STA TEMP0 ;and Save
|
||||
STA TEMP1 ;and Save
|
||||
TXA ;Copy LSB to Accumlator
|
||||
LDX #4 ;Set Register Offset to Horizontal Start
|
||||
LDY #$FC ;Set High Bits Mask
|
||||
SETHST: STY TEMP2 ;Save
|
||||
JSR SETHVS ;Write LSB and Get High Bits
|
||||
AND #$FC ;Mask Start Stop High
|
||||
SETHST: ORA TEMP0 ;OR in High Bits
|
||||
AND TEMP2 ;Mask Start Stop High
|
||||
ORA TEMP1 ;OR in High Bits
|
||||
STA $9F23,X ;and Write back to Register
|
||||
RTS
|
||||
|
||||
@ -221,6 +451,48 @@ SETBYT: JSR SETADR ;Set Vera Address
|
||||
STA $9F23,X ;Write Value to Data Port
|
||||
RTS
|
||||
|
||||
;settbs() - Set Layer 0/1 Map Base
|
||||
;Args: A = Layer (0/1)
|
||||
; Y,X = Map Base
|
||||
;Sets: TEMP1,TEMP2 = Map Base
|
||||
;Affecta: A,Y,X
|
||||
SETTBS: JSR SAVRXY ;Store Map Base in TEMP1,TEMP2
|
||||
LDX #4 ;Set Register Offset
|
||||
BNE SETLRI ;Write to Layer Register
|
||||
|
||||
;setmbs() - Set Layer 0/1 Map Base
|
||||
;Args: A = Layer (0/1)
|
||||
; Y,X = Map Base
|
||||
;Sets: TEMP1,TEMP2 = Map Base
|
||||
;Affecta: A,Y,X
|
||||
SETMBS: JSR SAVRXY ;Store Map Base in TEMP1,TEMP2
|
||||
LDX #2 ;Set Register Offset
|
||||
BNE SETLRI ;Write to Layer Register
|
||||
|
||||
;setvsc() - Set Layer 0/1 Vertical Scroll
|
||||
;Args: A = Layer (0/1)
|
||||
; Y,X = Map Base
|
||||
;Sets: TEMP1,TEMP2 = Vertical Scroll
|
||||
;Affecta: A,Y,X
|
||||
SETVSC: JSR SAVRXY ;Store Vertical Scroll in TEMP1,TEMP2
|
||||
LDX #8 ;Set Register Offset
|
||||
BNE SETLRI ;Write to Layer Register
|
||||
|
||||
;sethsc() - Set Layer 0/1 Horizontal Scroll
|
||||
;Args: A = Layer (0/1)
|
||||
; Y,X = Map Base
|
||||
;Sets: TEMP1,TEMP2 = Horizontal Scroll
|
||||
;Affecta: A,Y,X
|
||||
SETHSC: JSR SAVRXY ;Store Horizontal Scroll in TEMP1,TEMP2
|
||||
LDX #6 ;Set Register Offset
|
||||
|
||||
;setlri() - Write Integer to Get Layer 0/1 Register
|
||||
;Args: A = Layer (0/1)
|
||||
; X = Register Offset
|
||||
;Uses: TEMP1,TEMP2 = Integer Value
|
||||
;Affecta: A,Y,X
|
||||
SETLRI: JSR GETLRP ;Get Layer Page in Y
|
||||
BNE SETREI ;and Write Integer to Register
|
||||
|
||||
;setiql() - Set IRQ Line
|
||||
;Args: Y,X = IRQ Line Number`
|
||||
@ -267,6 +539,25 @@ SETINT: ORA #$10 ;Set Auto-Increment to 1
|
||||
STA $9F23,X ;Write to Data Port
|
||||
RTS
|
||||
|
||||
;setmem(count, &addr) - Write Array to Vera Memory
|
||||
;Args: A = Number of Bytes to Write
|
||||
; Y,X = Address of Array to Write From
|
||||
;Requires: setadr()
|
||||
;Sets: SRCLO,SRCHI = Address of Array
|
||||
; TEMP0 = Number of Bytes to Write
|
||||
;Affects: A
|
||||
;Returns: Y = Number of Bytes Written
|
||||
; X = Current Data Port
|
||||
SETMEM: STA TEMP0 ;Save Number of Bytes
|
||||
JSR SETSRC ;Save Destination Address
|
||||
LDX $9F25 ;Get Current Data Port
|
||||
LDY #0 ;Initialize Counter
|
||||
SETMEL: LDA (SRCLO),Y ;Read Byte from Array
|
||||
STA $9F23,X ;Write Byte to Data Port
|
||||
INY ;Increment Counter
|
||||
CPY TEMP0 ;If Limit Not Reached
|
||||
BNE SETMEL ; Loop
|
||||
RTS
|
||||
|
||||
;rgbclr(r,g,b) - Convert RGB Values to Palette Color
|
||||
;Args: A = Red Value (0-15)
|
||||
|
@ -2,30 +2,6 @@
|
||||
* vera.h02 - Commander X16 Routines for Vera chip *
|
||||
***************************************************/
|
||||
|
||||
/* Convert Palette Color Value *
|
||||
* to R, G, and B Values *
|
||||
* Args: int c - Color Value *
|
||||
* Returns: Red Value (0-15) *
|
||||
* Green Value (0-15) *
|
||||
* Blue Value (0-15) */
|
||||
char clrrgb();
|
||||
|
||||
/* Read Color Value from Palette *
|
||||
* Args: char i - Palette Index *
|
||||
* Returns: int c - Color Value */
|
||||
char getclr();
|
||||
|
||||
/* Read Display Controller Register *
|
||||
* Args: char r - Register Offset *
|
||||
* Returns: char v - Register Value */
|
||||
char getdcr();
|
||||
|
||||
/* Read Video Output Mode *
|
||||
* Returns: m - Output Mode *
|
||||
* c - Chroma Disabled *
|
||||
* f - Current Field */
|
||||
char getvid();
|
||||
|
||||
/* Convert R, G, and B Values *
|
||||
* to Palette Color Value *
|
||||
* Args: r - Red Value (0-15) *
|
||||
@ -34,9 +10,11 @@ char getvid();
|
||||
* Returns: int c - Color Value */
|
||||
char rgbclr();
|
||||
|
||||
/* Write Color Value to Palette *
|
||||
* Args: i - Index into Palette *
|
||||
* int c - Color Value *
|
||||
* Returns: int d = Entry Address */
|
||||
char setclr();
|
||||
/* Convert Palette Color Value *
|
||||
* to R, G, and B Values *
|
||||
* Args: int c - Color Value *
|
||||
* Returns: Red Value (0-15) *
|
||||
* Green Value (0-15) *
|
||||
* Blue Value (0-15) */
|
||||
char clrrgb();
|
||||
|
||||
|
157
x16/testvera.c02
157
x16/testvera.c02
@ -9,24 +9,52 @@
|
||||
#include <intlib.h02>
|
||||
#include <stdio.h02>
|
||||
#include <stdiox.h02>
|
||||
#include <memory.h02>
|
||||
#include <nybble.h02>
|
||||
#include "include/vera.h02"
|
||||
|
||||
const char abcdef = {1,2,3,4,5,6};
|
||||
char buffer[255]; //Buffer for getmem
|
||||
|
||||
char hscale,vscale; //Video Scaling
|
||||
char hrzvrt[5]; //Horizontal and Vertical Register Contents
|
||||
char index; //Color Palette Index
|
||||
char mode,mono,field; //Video Output Mode, Monochrome Flag, Current Field
|
||||
char red,green,blue; //Color Components
|
||||
char enabld; //Layer Enabled
|
||||
char i,j,k,l;
|
||||
|
||||
int c,d,s;
|
||||
int color,colour;
|
||||
int hstart,hstop; //Horizontal Start and Stop
|
||||
int vstart,vstop; //Vertical Start and Stop
|
||||
int irqlin; //IRQ Line#
|
||||
|
||||
/* Layer 0/1 */
|
||||
|
||||
char layer; //Layer Number
|
||||
char layer0[9]; //Layer 0 Register Contents
|
||||
char layer1[9]; //Layer 1 Register Contents
|
||||
int mbase0,mbase1; //Map Base, Layer 0 and 1
|
||||
int tbase0,tbase1; //Tile Base, Layer 0 and 1
|
||||
int mbaddr,tbaddr; //Map and Tile Base Address
|
||||
int hscrl0,hscrl1; //Horizontal Scroll, Layer 0 and 1
|
||||
int vscrl0,vscrl1; //Vertical Scroll, Layer 0 and 1
|
||||
|
||||
char aa,xx,yy;
|
||||
|
||||
void failed() {
|
||||
putln(" FAILED");
|
||||
}
|
||||
|
||||
void passed() {
|
||||
putln(" PASSED");
|
||||
newlin();
|
||||
//newlin();
|
||||
}
|
||||
|
||||
void prtadr() {
|
||||
aa, yy, xx = getadr();
|
||||
puts("ADDRESS=");
|
||||
prbyte(aa); prbyte(yy); prbyte(xx); newlin();
|
||||
}
|
||||
|
||||
void prtayx(aa,yy,xx) {prhex(aa); prhex(yy); prhex(xx); putspc(); putspc();}
|
||||
@ -72,7 +100,13 @@ void xerror() {
|
||||
main:
|
||||
newlin();
|
||||
|
||||
putln("TESTING GETVID() AND SETVID()");
|
||||
puts("TESTING GETMEM() AND SETMEM()");
|
||||
setadr($20,&0); setmem(@abcdef,&abcdef);
|
||||
setadr($20,&0); getmem(@abcdef,&buffer);
|
||||
setdst(&abcdef); if (memcmp(@abcdef,&buffer)) xerror();
|
||||
passed();
|
||||
|
||||
puts("TESTING GETVID() AND SETVID()");
|
||||
for (i=0;i<4;i++) {
|
||||
for (j=1;j:+;j--) {
|
||||
//inline $ff;
|
||||
@ -84,7 +118,7 @@ main:
|
||||
}
|
||||
passed();
|
||||
|
||||
putln("TESTING GETBDR() AND SETBDR()");
|
||||
puts("TESTING GETBDR() AND SETBDR()");
|
||||
i = 0;
|
||||
do {
|
||||
setbdr(i);
|
||||
@ -95,7 +129,7 @@ main:
|
||||
} while(i);
|
||||
passed();
|
||||
|
||||
putln("TESTING GETSCL() AND SETSCL()");
|
||||
puts("TESTING GETSCL() AND SETSCL()");
|
||||
i=1;
|
||||
do {
|
||||
j=1;
|
||||
@ -110,15 +144,35 @@ main:
|
||||
} while (i);
|
||||
passed();
|
||||
|
||||
putln("TESTING GETHSR(), GETHSP(), GETVSR(), GETVSP()");
|
||||
hstart = gethsr();
|
||||
hstop = gethsp();
|
||||
vstart = getvsr();
|
||||
vstop = getvsp();
|
||||
prthvs();
|
||||
newlin();
|
||||
//putln("SAVING START AND STOP REGISTERS");
|
||||
setadr($1F, &$0004); getmem(5, &hrzvrt);
|
||||
//for (i=0;i<5;i++) printf(hrzvrt[i], "%h "); newlin();
|
||||
|
||||
puts("TESTING GETHSR() AND SETHSR()");
|
||||
sethsr(&$024C);
|
||||
hstart = gethsr();
|
||||
//setdst(hstart);printf("HSTART=%w%n");
|
||||
if (>hstart<>$02 or <hstart<>$4C) xerror(); else passed();
|
||||
|
||||
putln("TESTING GETIRL() AND SETIRL()");
|
||||
puts("TESTING GETHSP() AND SETHSP()");
|
||||
sethsp(&$025D); hstop = gethsp();
|
||||
//setdst(hstop);printf("HSTOP=%w%n");
|
||||
if (>hstop<>$02 or <hstop<>$5D) xerror(); else passed();
|
||||
|
||||
puts("TESTING GETVSR() AND SETVSR()");
|
||||
setvsr(&$016E); vstart = getvsr();
|
||||
//setdst(vstart);printf("VSTART=%w%n");
|
||||
if (>vstart<>$01 or <vstart<>$6E) xerror(); else passed();
|
||||
|
||||
puts("TESTING GETVSP() AND SETVSP()");
|
||||
setvsp(&$017F); vstop = getvsp();
|
||||
//setdst(vstop);printf("VSTOP=%w%n");
|
||||
if (>vstop<>$01 or <vstop<>$7F) xerror(); else passed();
|
||||
|
||||
//putln("RESTORING START AND STOP REGISTERS");
|
||||
setadr($1F, &$0004); setmem(5, &hrzvrt);
|
||||
|
||||
puts("TESTING GETIRL() AND SETIRL()");
|
||||
for (i=0;i<2;i++) {
|
||||
j=0;
|
||||
do {
|
||||
@ -131,13 +185,13 @@ main:
|
||||
}
|
||||
passed();
|
||||
|
||||
putln("TESTING RGBCLR() AND CLRRGB()");
|
||||
puts("TESTING RGBCLR() AND CLRRGB()");
|
||||
for (red=0;red<16;red++) {
|
||||
for (green=0;green<16;green++) {
|
||||
for (blue=0;blue<16;blue++) {
|
||||
//prtayx(red,green,blue);
|
||||
c = rgbclr(red,green,blue);
|
||||
//putwrd(c); putspc();
|
||||
color = rgbclr(red,green,blue);
|
||||
//putwrd(color); putspc();
|
||||
i,j,k = clrrgb();
|
||||
//prtayx(i,j,k);
|
||||
if (i<>red or j<>green or blue<>k) xerror();
|
||||
@ -147,30 +201,79 @@ main:
|
||||
}
|
||||
passed();
|
||||
|
||||
putln("TESTING GETCLR()");
|
||||
puts("TESTING GETCLR() AND SETCLR()");
|
||||
for (i=16; i<32; i++) {
|
||||
//puthex(i); putspc();
|
||||
c = getclr(i);
|
||||
//putwrd(c); putspc();
|
||||
if (i&15<>>c or nybdup(i)<><c) xerror();
|
||||
color = getclr(i);
|
||||
//putwrd(color); putspc();
|
||||
if (i&15<>>color or nybdup(i)<><color) xerror();
|
||||
//if (i&7==7) newlin();
|
||||
}
|
||||
passed();
|
||||
//passed();
|
||||
|
||||
putln("TESTING SETCLR()");
|
||||
//puts("TESTING SETCLR()");
|
||||
for (i=128; i<144; i++) {
|
||||
//puthex(i); putspc();
|
||||
red = i+8&15;
|
||||
green = 144-i;
|
||||
blue = i&15;
|
||||
//prhex(red); prhex(green); prhex(blue); putspc(); putspc();
|
||||
c = rgbclr(red,green,blue);
|
||||
setclr(i,c);
|
||||
d = getclr(i);
|
||||
//putwrd(d); putspc();
|
||||
if (<d<><c or >d<>>c) xerror();
|
||||
color = rgbclr(red,green,blue);
|
||||
setclr(i,color);
|
||||
colour = getclr(i);
|
||||
//putwrd(colour); putspc();
|
||||
if (<colour<><color or >colour<>>color) xerror();
|
||||
//if (i&7==7) newlin();
|
||||
}
|
||||
passed();
|
||||
|
||||
//putln("SAVING LAYER REGISTERS");
|
||||
setadr($1F,&$2000); getmem(@layer0,&layer0);
|
||||
setadr($1F,&$3000); getmem(@layer1,&layer1);
|
||||
|
||||
printf(layer, "TESTING GETMBS() AND SETMBS()");
|
||||
setmbs(0,&$1234); mbase0 = getmbs(0);
|
||||
setmbs(1,&$5678); mbase1 = getmbs(1);
|
||||
//setdst(mbase0); printf("%nMBASE0=$%w, "); setdst(mbase1); printf("MBASE1=$%w%n");
|
||||
if (>mbase0<>$12 or <mbase0<>$34) xerror();
|
||||
if (>mbase1<>$56 or <mbase1<>$78) xerror();
|
||||
passed();
|
||||
|
||||
printf(layer, "TESTING GETTBS() AND SETTBS()");
|
||||
settbs(0,&$90AB); tbase0 = gettbs(0);
|
||||
settbs(1,&$CDEF); tbase1 = gettbs(1);
|
||||
//setdst(tbase0); printf("%nTBASE0=$%w, "); setdst(tbase1); printf("TBASE1=$%w%n");
|
||||
if (>tbase0<>$90 or <tbase0<>$AB) xerror();
|
||||
if (>tbase1<>$CD or <tbase1<>$EF) xerror();
|
||||
passed();
|
||||
|
||||
printf(layer, "TESTING GETMBA() AND GETTBA()");
|
||||
i,j,k = getmba(0); if (i<>$00 or j<>$48 or k<>$D0) xerror();
|
||||
i,j,k = getmba(1); if (i<>$01 or j<>$59 or k<>$E0) xerror();
|
||||
i,j,k = gettba(0); if (i<>$02 or j<>$42 or k<>$AC) xerror();
|
||||
i,j,k = gettba(1); if (i<>$03 or j<>$37 or k<>$BC) xerror();
|
||||
passed();
|
||||
|
||||
printf(layer, "TESTING GETHSC() AND SETHSC()");
|
||||
sethsc(0,&$1357); hscrl0 = gethsc(0);
|
||||
sethsc(1,&$2468); hscrl1 = gethsc(1);
|
||||
//setdst(hscrl0); printf("%nHSCRL0=$%w, "); setdst(hscrl1); printf("HSCRL1=$%w%n");
|
||||
if (>hscrl0<>$13 or <hscrl0<>$57) xerror();
|
||||
if (>hscrl1<>$24 or <hscrl1<>$68) xerror();
|
||||
passed();
|
||||
|
||||
printf(layer, "TESTING GETVSC() AND SETVSC()");
|
||||
setvsc(0,&$9BDF); vscrl0 = getvsc(0);
|
||||
setvsc(1,&$0ACE); vscrl1 = getvsc(1);
|
||||
//setdst(vscrl0); printf("%nVSCRL0=$%w, "); setdst(hscrl1); printf("VSCRL1=$%w%n");
|
||||
if (>vscrl0<>$9B or <vscrl0<>$DF) xerror();
|
||||
if (>vscrl1<>$0A or <vscrl1<>$CE) xerror();
|
||||
passed();
|
||||
|
||||
//putln("RESTORING LAYER REGISTERS");
|
||||
setadr($1F, &$2000); setmem(@layer0, &layer0);
|
||||
setadr($1F, &$3000); setmem(@layer1, &layer1);
|
||||
|
||||
|
||||
goto exit;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user