mirror of https://github.com/wwarthen/RomWBW.git
30 changed files with 457 additions and 405 deletions
@ -1,153 +0,0 @@ |
|||
/* cnamept1.c 5/24/2012 dwg - added bootlu */ |
|||
|
|||
#include "stdio.h" |
|||
#include "stdlib.h" |
|||
|
|||
#include "portab.h" |
|||
#include "std.h" |
|||
|
|||
#include "cnfgdata.h" |
|||
#include "syscfg.h" |
|||
|
|||
extern pager(); |
|||
extern char * fmthexbyte(); |
|||
extern char * fmthexword(); |
|||
extern char * fmtbool(); |
|||
extern char * fmtenable(); |
|||
extern putscpm(); |
|||
|
|||
char None[] = "*NONE*"; |
|||
char * PltName[] = {None, "N8VEM Z80", "ZETA Z80", "N8 Z180"}; |
|||
char * CIOName[] = {"UART", "ASCI", "VDU", "CVDU", "UPD7220", |
|||
"N8V", "PRPCON", "PPPCON", "CRT", "BAT", "NUL"}; |
|||
char * DIOName[] = {"MD", "FD", "IDE", "ATAPI", "PPIDE", |
|||
"SD", "PRPSD", "PPPSD", "HDSK"}; |
|||
char * VDAName[] = {None, "VDU", "CVDU", "UPD7220", "N8V"}; |
|||
char * EmuName[] = {None, "TTY", "ANSI"}; |
|||
char * TermName[] = {"TTY", "ANSI", "WYSE", "VT52"}; |
|||
char * DiskMapName[] = {None, "ROM", "RAM", "FD", "IDE", |
|||
"PPIDE", "SD", "PRPSD", "PPPSD", "HDSK"}; |
|||
char * ClrRamName[] = {"Never", "Auto", "Always"}; |
|||
char * FDModeName[] = {None, "DIO", "ZETA", "DIDE", "N8", "DIO3"}; |
|||
char * FDMediaName[] = {"720K", "1.44M", "360k", "1.2M", "1.11M"}; |
|||
char * IDEModeName[] = {None, "DIO", "DIDE"}; |
|||
|
|||
cnamept1(pSysCfg) |
|||
struct SYSCFG * pSysCfg; |
|||
{ |
|||
struct CNFGDATA * pCfg; |
|||
char buf[5]; |
|||
char buf2[5]; |
|||
|
|||
pCfg = &(pSysCfg->cnfgdata); |
|||
|
|||
printf("%s @ %dMHz, RAM=%dMB, ROM=%dMB", |
|||
PltName[pCfg->platform], |
|||
pCfg->freq, |
|||
pCfg->ramsize, |
|||
pCfg->romsize); |
|||
pager(); |
|||
printf("RomWBW Version %d.%d.%d.%d, ", |
|||
pCfg->rmj, pCfg->rmn, |
|||
pCfg->rup, pCfg->rtp); |
|||
putscpm((unsigned int)pSysCfg + (unsigned int)pSysCfg->tstloc); |
|||
pager(); |
|||
if (pCfg->diskboot) |
|||
printf("Disk Boot Device=%s, Unit=%d, LU=%d", |
|||
DIOName[pCfg->devunit >> 4], |
|||
pCfg->devunit & 0xF, pCfg->bootlu); |
|||
else |
|||
printf("ROM Boot"); |
|||
pager(); |
|||
pager(); |
|||
|
|||
printf("Default Console: %s, Alternate Console: %s", |
|||
CIOName[pCfg->defcon], CIOName[pCfg->altcon]); |
|||
pager(); |
|||
printf ("Default Video Display: %s, Default Emulation: %s", |
|||
VDAName[pCfg->defvda], EmuName[pCfg->defemu]); |
|||
pager(); |
|||
printf ("Current Terminal Type: %s", |
|||
TermName[pCfg->termtype]); |
|||
pager(); |
|||
|
|||
printf("Default IO Byte: 0x%s, Alternate IO Byte: 0x%s", |
|||
fmthexbyte(pCfg->defiobyte, buf), |
|||
fmthexbyte(pCfg->altiobyte, buf2)); |
|||
pager(); |
|||
printf("Disk Write Caching=%s, Disk IO Tracing=%s", |
|||
fmtbool(pCfg->wrtcache), fmtbool(pCfg->dsktrace)); |
|||
pager(); |
|||
printf("Disk Mapping Priority: %s, Clear RAM Disk: %s", |
|||
DiskMapName[pCfg->dskmap], ClrRamName[pCfg->clrramdsk]); |
|||
pager(); |
|||
pager(); |
|||
|
|||
printf("DSKY %s", fmtenable(pCfg->dskyenable)); |
|||
pager(); |
|||
printf("UART %s, FIFO=%s, AFC=%s, Baudrate=0x%s", |
|||
fmtenable(pCfg->uartenable), |
|||
fmtbool(pCfg->uartfifo), fmtbool(pCfg->uartafc), |
|||
fmthexword(pCfg->baudrate, buf)); |
|||
pager(); |
|||
printf("VDU %s", fmtenable(pCfg->vduenable)); |
|||
pager(); |
|||
printf("CVDU %s", fmtenable(pCfg->cvduenable)); |
|||
pager(); |
|||
printf("UPD7220 %s", fmtenable(pCfg->upd7220enable)); |
|||
pager(); |
|||
printf("N8V %s", fmtenable(pCfg->n8venable)); |
|||
pager(); |
|||
pager(); |
|||
|
|||
printf("FD %s, Mode=%s, TraceLevel=%d, Media=%s/%s, Auto=%s", |
|||
fmtenable(pCfg->fdenable), FDModeName[pCfg->fdmode], |
|||
pCfg->fdtrace, |
|||
FDMediaName[pCfg->fdmedia], FDMediaName[pCfg->fdmediaalt], |
|||
fmtbool(pCfg->fdmauto)); |
|||
pager(); |
|||
printf("IDE %s, Mode=%s, TraceLevel=%d, 8bit=%s, Size=%dMB", |
|||
fmtenable(pCfg->ideenable), IDEModeName[pCfg->idemode], |
|||
pCfg->idetrace, fmtbool(pCfg->ide8bit), pCfg->idecapacity); |
|||
pager(); |
|||
printf("PPIDE %s, Mode=%s, TraceLevel=%d, 8bit=%s, Slow=%s, Size=%dMB", |
|||
fmtenable(pCfg->ppideenable), IDEModeName[pCfg->ppidemode], |
|||
pCfg->ppidetrace, fmtbool(pCfg->ppide8bit), |
|||
fmtbool(pCfg->ppideslow), pCfg->ppidecapacity); |
|||
pager(); |
|||
printf("PRP %s, SD %s, TraceLevel=%d, Size=%dMB, Console %s", |
|||
fmtenable(pCfg->prpenable), fmtenable(pCfg->prpsdenable), |
|||
pCfg->prpsdtrace, pCfg->prpsdcapacity, |
|||
fmtenable(pCfg->prpconenable)); |
|||
pager(); |
|||
printf("PPP %s, SD %s, TraceLevel=%d, Size=%dMB, Console %s", |
|||
fmtenable(pCfg->pppenable), fmtenable(pCfg->pppsdenable), |
|||
pCfg->pppsdtrace, pCfg->pppsdcapacity, |
|||
fmtenable(pCfg->pppconenable)); |
|||
pager(); |
|||
printf("HDSK %s, TraceLevel=%d, Size=%dMB", |
|||
fmtenable(pCfg->hdskenable), |
|||
pCfg->hdsktrace, pCfg->hdskcapacity); |
|||
pager(); |
|||
pager(); |
|||
|
|||
printf("PPK %s, TraceLevel=%d", |
|||
fmtenable(pCfg->ppkenable), pCfg->ppktrace); |
|||
pager(); |
|||
printf("KBD %s, TraceLevel=%d", |
|||
fmtenable(pCfg->kbdenable), pCfg->kbdtrace); |
|||
pager(); |
|||
pager(); |
|||
|
|||
printf("TTY %s", fmtenable(pCfg->ttyenable)); |
|||
pager(); |
|||
printf("ANSI %s, TraceLevel=%d", |
|||
fmtenable(pCfg->ansienable), pCfg->ansitrace); |
|||
pager(); |
|||
} |
|||
|
|||
|
|||
/********************/ |
|||
/* eof - cnamecp1.c */ |
|||
/********************/ |
|||
|
|||
@ -0,0 +1,187 @@ |
|||
; |
|||
;================================================================================================== |
|||
; ASCI DRIVER (Z180 SERIAL PORTS) |
|||
;================================================================================================== |
|||
; |
|||
; CHARACTER DEVICE DRIVER ENTRY |
|||
; A: RESULT (OUT), CF=ERR |
|||
; B: FUNCTION (IN) |
|||
; C: CHARACTER (IN/OUT) |
|||
; E: DEVICE/UNIT (IN) |
|||
; |
|||
; |
|||
ASCI_DISPATCH: |
|||
LD A,C ; GET DEVICE/UNIT |
|||
AND $0F ; ISOLATE UNIT |
|||
JP Z,ASCI0 |
|||
DEC A |
|||
JP Z,ASCI1 |
|||
CALL PANIC |
|||
; |
|||
ASCI0: |
|||
LD A,B ; GET REQUESTED FUNCTION |
|||
AND $0F ; ISOLATE SUB-FUNCTION |
|||
JP Z,ASCI0_IN |
|||
DEC A |
|||
JP Z,ASCI0_OUT |
|||
DEC A |
|||
JP Z,ASCI0_IST |
|||
DEC A |
|||
JP Z,ASCI0_OST |
|||
CALL PANIC |
|||
; |
|||
; |
|||
; |
|||
ASCI_INIT: |
|||
; ASCI0 |
|||
PRTS("ASCI0: IO=0x$") |
|||
LD A,CPU_TDR0 |
|||
CALL PRTHEXBYTE |
|||
CALL PC_COMMA |
|||
LD A,CPU_RDR0 |
|||
CALL PRTHEXBYTE |
|||
PRTS(" BAUD=$") |
|||
LD HL,BAUDRATE / 10 |
|||
CALL PRTDEC |
|||
PRTC('0') |
|||
|
|||
LD A,66H |
|||
OUT0 (CPU_ASEXT0),A |
|||
LD A,64H |
|||
OUT0 (CPU_CNTLA0),A |
|||
LD A,Z180_CNTLB0 |
|||
OUT0 (CPU_CNTLB0),A |
|||
|
|||
; ASCI1 |
|||
CALL NEWLINE |
|||
PRTS("ASCI1: IO=0x$") |
|||
LD A,CPU_TDR1 |
|||
CALL PRTHEXBYTE |
|||
CALL PC_COMMA |
|||
LD A,CPU_RDR1 |
|||
CALL PRTHEXBYTE |
|||
PRTS(" BAUD=$") |
|||
LD HL,BAUDRATE / 10 |
|||
CALL PRTDEC |
|||
PRTC('0') |
|||
|
|||
LD A,66H |
|||
OUT0 (CPU_ASEXT1),A |
|||
LD A,64H |
|||
OUT0 (CPU_CNTLA1),A |
|||
LD A,Z180_CNTLB1 |
|||
OUT0 (CPU_CNTLB1),A |
|||
RET |
|||
; |
|||
; |
|||
; |
|||
ASCI0_IN: |
|||
CALL ASCI0_IST |
|||
OR A |
|||
JR Z,ASCI0_IN |
|||
IN0 A,(CPU_RDR0) ; READ THE CHAR FROM THE ASCI |
|||
LD E,A |
|||
RET |
|||
; |
|||
; |
|||
; |
|||
ASCI0_IST: |
|||
; CHECK FOR ERROR FLAGS |
|||
IN0 A,(CPU_STAT0) |
|||
AND 70H ; PARITY, FRAMING, OR OVERRUN ERROR |
|||
JR Z,ASCI0_IST1 ; ALL IS WELL, CHECK FOR DATA |
|||
|
|||
; CLEAR ERROR(S) OR NOTHING FURTHER CAN BE RECEIVED!!! |
|||
IN0 A,(CPU_CNTLA0) |
|||
RES 3,A ; CLEAR EFR (ERROR FLAG RESET) |
|||
OUT0 (CPU_CNTLA0),A |
|||
|
|||
ASCI0_IST1: ; CHECK FOR STAT0.RDRF (DATA READY) |
|||
IN0 A,(CPU_STAT0) ; READ LINE STATUS REGISTER |
|||
AND $80 ; TEST IF DATA IN RECEIVE BUFFER |
|||
JP Z,CIO_IDLE ; DO IDLE PROCESSING AND RETURN |
|||
XOR A |
|||
INC A ; SIGNAL CHAR READY, A = 1 |
|||
RET |
|||
; |
|||
; |
|||
; |
|||
ASCI0_OUT: |
|||
CALL ASCI0_OST |
|||
OR A |
|||
JR Z,ASCI0_OUT |
|||
LD A,E |
|||
OUT0 (CPU_TDR0),A |
|||
RET |
|||
; |
|||
ASCI0_OST: |
|||
IN0 A,(CPU_STAT0) |
|||
AND $02 |
|||
JP Z,CIO_IDLE ; DO IDLE PROCESSING AND RETURN |
|||
XOR A |
|||
INC A ; SIGNAL BUFFER EMPTY, A = 1 |
|||
RET |
|||
; |
|||
; |
|||
; |
|||
ASCI1: |
|||
LD A,B ; GET REQUESTED FUNCTION |
|||
AND $0F ; ISOLATE SUB-FUNCTION |
|||
JR Z,ASCI0_IN |
|||
DEC A |
|||
JR Z,ASCI0_OUT |
|||
DEC A |
|||
JR Z,ASCI0_IST |
|||
DEC A |
|||
JR Z,ASCI0_OST |
|||
CALL PANIC |
|||
; |
|||
; |
|||
; |
|||
ASCI1_IN: |
|||
CALL ASCI1_IST |
|||
OR A |
|||
JR Z,ASCI1_IN |
|||
IN0 A,(CPU_RDR1) ; READ THE CHAR FROM THE ASCI |
|||
LD E,A |
|||
RET |
|||
; |
|||
; |
|||
; |
|||
ASCI1_IST: |
|||
; CHECK FOR ERROR FLAGS |
|||
IN0 A,(CPU_STAT1) |
|||
AND 70H ; PARITY, FRAMING, OR OVERRUN ERROR |
|||
JR Z,ASCI1_IST1 ; ALL IS WELL, CHECK FOR DATA |
|||
|
|||
; CLEAR ERROR(S) OR NOTHING FURTHER CAN BE RECEIVED!!! |
|||
IN0 A,(CPU_CNTLA1) |
|||
RES 3,A ; CLEAR EFR (ERROR FLAG RESET) |
|||
OUT0 (CPU_CNTLA1),A |
|||
|
|||
ASCI1_IST1: ; CHECK FOR STAT0.RDRF (DATA READY) |
|||
IN0 A,(CPU_STAT1) ; READ LINE STATUS REGISTER |
|||
AND $80 ; TEST IF DATA IN RECEIVE BUFFER |
|||
JP Z,CIO_IDLE ; DO IDLE PROCESSING AND RETURN |
|||
XOR A |
|||
INC A ; SIGNAL CHAR READY, A = 1 |
|||
RET |
|||
; |
|||
; |
|||
; |
|||
ASCI1_OUT: |
|||
CALL ASCI1_OST |
|||
OR A |
|||
JR Z,ASCI1_OUT |
|||
LD A,E |
|||
OUT0 (CPU_TDR1),A |
|||
RET |
|||
; |
|||
ASCI1_OST: |
|||
IN0 A,(CPU_STAT1) |
|||
AND $02 |
|||
JR Z,ASCI1_OST |
|||
JP Z,CIO_IDLE ; DO IDLE PROCESSING AND RETURN |
|||
XOR A |
|||
INC A ; SIGNAL BUFFER EMPTY, A = 1 |
|||
RET |
|||
@ -1,6 +1,6 @@ |
|||
#DEFINE RMJ 2 |
|||
#DEFINE RMN 5 |
|||
#DEFINE RUP 0 |
|||
#DEFINE RTP 9 |
|||
#DEFINE BIOSVER "2.5 - Beta 9" |
|||
#DEFINE RTP 10 |
|||
#DEFINE BIOSVER "2.5 - Beta 10" |
|||
#DEFINE REVISION 412 |
|||
|
|||
Loading…
Reference in new issue