mirror of https://github.com/wwarthen/RomWBW.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
316 lines
6.6 KiB
316 lines
6.6 KiB
; ../RomWBW/Source/n8v.asm 10/28/2012 dwg - add n8v_modes
|
|
; ../RomWBW/Source/n8v.asm 10/27/2012 dwg - begin enhancement
|
|
|
|
|
|
;__N8VDRIVER_______________________________________________________________________________________
|
|
;
|
|
; N8 VIDEO DRIVER FOR ROMWBW
|
|
;
|
|
;__________________________________________________________________________________________________
|
|
;
|
|
;__________________________________________________________________________________________________
|
|
; DATA CONSTANTS
|
|
;__________________________________________________________________________________________________
|
|
;
|
|
;__________________________________________________________________________________________________
|
|
; BOARD INITIALIZATION
|
|
;__________________________________________________________________________________________________
|
|
;
|
|
N8V_INIT:
|
|
; INIT TMS9918 HERE...
|
|
|
|
CALL VDP_CLR16K
|
|
CALL VDP_SETREGS
|
|
CALL VDP_MODES
|
|
CALL VDP_PNT
|
|
CALL VDP_PGT
|
|
CALL VDP_COLORS
|
|
CALL VDP_LOADSET
|
|
|
|
CALL PPK_INIT
|
|
XOR A
|
|
RET
|
|
|
|
|
|
;
|
|
;__________________________________________________________________________________________________
|
|
; CHARACTER I/O (CIO) DISPATCHER
|
|
;__________________________________________________________________________________________________
|
|
;
|
|
N8V_DISPCIO:
|
|
LD A,B ; GET REQUESTED FUNCTION
|
|
AND $0F ; ISOLATE SUB-FUNCTION
|
|
JP Z,PPK_READ
|
|
DEC A
|
|
JR Z,N8V_CIOOUT
|
|
DEC A
|
|
JP Z,PPK_STAT
|
|
DEC A
|
|
JR Z,N8V_CIOOST
|
|
CALL PANIC
|
|
;
|
|
N8V_CIOOUT:
|
|
JP N8V_VDAWRC
|
|
;
|
|
N8V_CIOOST:
|
|
XOR A
|
|
INC A
|
|
RET
|
|
;
|
|
;__________________________________________________________________________________________________
|
|
; VIDEO DISPLAY ADAPTER (VDA) DISPATCHER
|
|
;__________________________________________________________________________________________________
|
|
;
|
|
N8V_DISPVDA:
|
|
LD A,B ; GET REQUESTED FUNCTION
|
|
AND $0F ; ISOLATE SUB-FUNCTION
|
|
|
|
JR Z,N8V_VDAINI
|
|
DEC A
|
|
JR Z,N8V_VDAQRY
|
|
DEC A
|
|
JR Z,N8V_VDARES
|
|
DEC A
|
|
JR Z,N8V_VDASCS
|
|
DEC A
|
|
JR Z,N8V_VDASCP
|
|
DEC A
|
|
JR Z,N8V_VDASAT
|
|
DEC A
|
|
JR Z,N8V_VDASCO
|
|
DEC A
|
|
JR Z,N8V_VDAWRC
|
|
DEC A
|
|
JR Z,N8V_VDAFIL
|
|
DEC A
|
|
JR Z,N8V_VDASCR
|
|
DEC A
|
|
JP Z,PPK_STAT
|
|
DEC A
|
|
JP Z,PPK_FLUSH
|
|
DEC A
|
|
JP Z,PPK_READ
|
|
CALL PANIC
|
|
|
|
N8V_VDAINI:
|
|
XOR A
|
|
RET
|
|
|
|
N8V_VDAQRY:
|
|
CALL PANIC
|
|
|
|
N8V_VDARES:
|
|
JR N8V_INIT
|
|
|
|
N8V_VDASCS:
|
|
CALL PANIC
|
|
|
|
N8V_VDASCP:
|
|
XOR A
|
|
RET
|
|
|
|
N8V_VDASAT:
|
|
CALL PANIC
|
|
|
|
N8V_VDASCO:
|
|
CALL PANIC
|
|
|
|
N8V_VDAWRC:
|
|
XOR A
|
|
RET
|
|
|
|
N8V_VDAFIL:
|
|
XOR A
|
|
RET
|
|
|
|
N8V_VDASCR:
|
|
XOR A
|
|
RET
|
|
|
|
;-------------------------------------------------
|
|
|
|
BASE: .EQU 128
|
|
CMDP: .EQU BASE+24
|
|
DATAP: .EQU BASE+25
|
|
|
|
VDP_CLR16K:
|
|
|
|
LD C,CMDP
|
|
LD A,$00
|
|
OUT (C),A ; out(CMDP,0);
|
|
|
|
LD A,64
|
|
OUT (C),A ; out(CMDP,64);
|
|
|
|
|
|
LD B,128
|
|
VDP_CL16LP2:
|
|
PUSH BC ; save outer loop counter
|
|
;
|
|
LD B,128
|
|
LD A,0
|
|
LD C,DATAP
|
|
VDP_CL16LP1:
|
|
OUT (C),A ; out(DATAP,0);
|
|
DJNZ VDP_CL16LP1 ; see Brey page 86
|
|
;
|
|
POP BC ; restore outer loop counter
|
|
DJNZ VDP_CL16LP2 ; see Brey page 86
|
|
|
|
RET
|
|
|
|
;-------------------------------------------------
|
|
|
|
VDP_SETREGS:
|
|
LD C,CMDP
|
|
LD A,0
|
|
OUT (C),A ; out(CMDP,0);
|
|
LD A,128
|
|
OUT (C),A ; out(CMDP,128);
|
|
RET
|
|
|
|
;-------------------------------------------------
|
|
|
|
VDP_MODES:
|
|
LD C,CMDP
|
|
LD A,80
|
|
OUT (C),A ; out(CMDP,80);
|
|
LD A,129
|
|
OUT (C),A ; out(CMDP,129);
|
|
RET
|
|
|
|
;-------------------------------------------------
|
|
|
|
VDP_PNT:
|
|
LD C,CMDP
|
|
LD A,0
|
|
OUT (C),A ; out(CMDP,0);
|
|
LD A,130
|
|
OUT (C),A ; out(CMDP,130);
|
|
RET
|
|
|
|
;-------------------------------------------------
|
|
|
|
VDP_PGT:
|
|
LD C,CMDP
|
|
LD A,1
|
|
OUT (C),A ; out(CMDP,1);
|
|
LD A,132
|
|
OUT (C),A ; out(CMDP,132);
|
|
RET
|
|
|
|
;-------------------------------------------------
|
|
|
|
VDP_COLORS:
|
|
LD C,CMDP
|
|
LD A,240
|
|
OUT (C),A ; out(CMDP,240);
|
|
LD A,135
|
|
OUT (C),A ; out(CMDP,135);
|
|
RET
|
|
|
|
;-------------------------------------------------
|
|
|
|
VDP_LOADSET:
|
|
LD C,CMDP
|
|
LD A,0
|
|
OUT (C),A ; out(CMDP,0);
|
|
LD A,72
|
|
OUT (C),A ; out(CMDP,72);
|
|
|
|
LD HL,CHARSET ; set memory ptr to start of bitmaps
|
|
LD B,0 ; prepare for 256 iterations
|
|
OTIR ; 0000-00FF
|
|
OTIR ; 0100-01FF
|
|
OTIR ; 0200-02FF
|
|
OTIR ; 0300-03FF
|
|
OTIR ; 0400-04FF
|
|
OTIR ; 0500-05FF
|
|
OTIR ; 0600-06FF
|
|
OTIR ; 0700-07FF
|
|
|
|
RET
|
|
|
|
;-------------------------------------------------
|
|
|
|
|
|
;
|
|
|
|
N8V_MODES:
|
|
; outp(CMDP,80);
|
|
; outp(CMDP,129);
|
|
RET
|
|
|
|
N8V_PNT:
|
|
; outp(CMDP,0);
|
|
; outp(CMDP,130);
|
|
RET
|
|
|
|
N8V_PGT:
|
|
; outp(CMDP,1);
|
|
; outp(CMDP,132);
|
|
RET
|
|
|
|
N8V_COLORS:
|
|
; outp(CMDP,240);
|
|
; outp(CMDP,135);
|
|
RET
|
|
|
|
N8V_LOADCHARS:
|
|
; out(CMDP,0);
|
|
; out(CMDP,72);
|
|
; index=0;
|
|
; for(c=0;c<256;c++P) {
|
|
; for(d=0;d<8;d++) {
|
|
; out(DATAP,charset[index++]);
|
|
; }
|
|
; }
|
|
RET
|
|
|
|
N8V_FILL:
|
|
; out(CMDP,0);
|
|
; out(CMDP,64);
|
|
; d=0;
|
|
; for(c=0;c<(40*24);c++) {
|
|
; out(DATAP,d);
|
|
; d++;
|
|
; if(128 == d) d=0;
|
|
; }
|
|
RET
|
|
|
|
N8V_WRVRAM:
|
|
; vdp_wrvram(o)
|
|
; {
|
|
; byte1 = o & 255;
|
|
; byte2 = (o >> 8) | 0x40;
|
|
; out(CMDP,byte1);
|
|
; out(CMDP,byte2);
|
|
; }
|
|
RET
|
|
|
|
|
|
N8V_DISPLAY:
|
|
; vdp_display(line,column,string)
|
|
; {
|
|
; vdp_wrvram(GUTTER+(line*40)+column);
|
|
; for(index=0;index<strlen(string);index++) {
|
|
; out(DATAP,string[index]);
|
|
; }
|
|
; }
|
|
RET
|
|
|
|
|
|
|
|
;__________________________________________________________________________________________________
|
|
; IMBED COMMON PRALLEL PORT KEYBOARD DRIVER
|
|
;__________________________________________________________________________________________________
|
|
;
|
|
#INCLUDE "ppk.asm"
|
|
;
|
|
;__________________________________________________________________________________________________
|
|
; LOCAL DRIVER DATA
|
|
;__________________________________________________________________________________________________
|
|
;
|
|
|
|
CHARSET:
|
|
#INCLUDE "n8chars.inc"
|
|
|