Browse Source

Reintegrate wbw -> trunk

patch
wayne 13 years ago
parent
commit
f7f27213d9
  1. BIN
      RomDsk/cfg_n8vem_cvdu/1200.COM
  2. BIN
      RomDsk/cfg_n8vem_cvdu/38400.COM
  3. BIN
      RomDsk/cfg_n8vem_cvdu/9600.COM
  4. BIN
      RomDsk/cfg_n8vem_cvdu/FLASHZ.COM
  5. BIN
      RomDsk/cfg_n8vem_cvdu/LDTIM.COM
  6. BIN
      RomDsk/cfg_n8vem_cvdu/RTC.COM
  7. BIN
      RomDsk/cfg_n8vem_cvdu/T5.COM
  8. BIN
      RomDsk/cfg_n8vem_cvdu/XM.COM
  9. BIN
      RomDsk/cfg_n8vem_cvdu/XM5.COM
  10. 58
      Source/bnk1.asm
  11. 2
      Source/config_n8_2312.asm
  12. 2
      Source/config_n8_2511.asm
  13. 2
      Source/config_n8vem.asm
  14. 92
      Source/config_n8vem_cvdu.asm
  15. 2
      Source/config_n8vem_dide.asm
  16. 2
      Source/config_n8vem_diskio.asm
  17. 2
      Source/config_n8vem_diskio3.asm
  18. 2
      Source/config_n8vem_ppide.asm
  19. 2
      Source/config_n8vem_ppisd.asm
  20. 2
      Source/config_n8vem_propio.asm
  21. 2
      Source/config_n8vem_vdu.asm
  22. 2
      Source/config_simh.asm
  23. 2
      Source/config_zeta.asm
  24. 2
      Source/config_zeta_ppp.asm
  25. 662
      Source/cvdu.asm
  26. 1025
      Source/cvdu_font.asm
  27. 14
      Source/kbd.asm
  28. 31
      Source/std.asm
  29. 2
      Source/tty.asm
  30. 4
      Source/vdu.asm

BIN
RomDsk/cfg_n8vem_cvdu/1200.COM

Binary file not shown.

BIN
RomDsk/cfg_n8vem_cvdu/38400.COM

Binary file not shown.

BIN
RomDsk/cfg_n8vem_cvdu/9600.COM

Binary file not shown.

BIN
RomDsk/cfg_n8vem_cvdu/FLASHZ.COM

Binary file not shown.

BIN
RomDsk/cfg_n8vem_cvdu/LDTIM.COM

Binary file not shown.

BIN
RomDsk/cfg_n8vem_cvdu/RTC.COM

Binary file not shown.

BIN
RomDsk/cfg_n8vem_cvdu/T5.COM

Binary file not shown.

BIN
RomDsk/cfg_n8vem_cvdu/XM.COM

Binary file not shown.

BIN
RomDsk/cfg_n8vem_cvdu/XM5.COM

Binary file not shown.

58
Source/bnk1.asm

@ -50,6 +50,12 @@ INITSYS1:
#IF (VDUENABLE) #IF (VDUENABLE)
CALL VDU_INIT CALL VDU_INIT
#ENDIF #ENDIF
#IF (CVDUENABLE)
CALL CVDU_INIT
#ENDIF
#IF (UPD7220ENABLE)
CALL UPD7220_INIT
#ENDIF
#IF (N8VENABLE) #IF (N8VENABLE)
CALL N8V_INIT CALL N8V_INIT
#ENDIF #ENDIF
@ -159,6 +165,18 @@ CIO_DISPATCH:
#IF (VDUENABLE) #IF (VDUENABLE)
CP CIODEV_VDU CP CIODEV_VDU
JP Z,VDU_DISPCIO JP Z,VDU_DISPCIO
#ENDIF
#IF (CVDUENABLE)
CP CIODEV_CVDU
JP Z,CVDU_DISPCIO
#ENDIF
#IF (UPD7220ENABLE)
CP CIODEV_UPD7220
JP Z,UPD7220_DISPCIO
#ENDIF
#IF (N8VENABLE)
CP CIODEV_N8V
JP Z,N8V_DISPCIO
#ENDIF #ENDIF
CP CIODEV_CRT CP CIODEV_CRT
JR Z,CIOEMU JR Z,CIOEMU
@ -326,12 +344,12 @@ EMU_INI:
#ENDIF #ENDIF
#IF (UPD7220ENABLE) #IF (UPD7220ENABLE)
LD HL,UPD7220_DISPVDA LD HL,UPD7220_DISPVDA
CP VDADEV_7220
CP VDADEV_UPD7220
JR Z,EMU_INI1 JR Z,EMU_INI1
#ENDIF #ENDIF
#IF (N8VENABLE) #IF (N8VENABLE)
LD HL,N8V_DISPVDA LD HL,N8V_DISPVDA
CP VDADEV_N8
CP VDADEV_N8V
JR Z,EMU_INI1 JR Z,EMU_INI1
#ENDIF #ENDIF
CALL PANIC CALL PANIC
@ -371,12 +389,12 @@ VDA_DISPADR .EQU 0
VDA_DISPADR .SET VDU_DISPVDA VDA_DISPADR .SET VDU_DISPVDA
#ENDIF #ENDIF
#IF (CVDUENABLE & (DEFVDA == VDADEV_CVDU)) #IF (CVDUENABLE & (DEFVDA == VDADEV_CVDU))
VDA_DISPADR .SET CVDU_DISPATCH
VDA_DISPADR .SET CVDU_DISPVDA
#ENDIF #ENDIF
#IF (VDUENABLE & (DEFVDA == VDADEV_7220))
VDA_DISPADR .SET UPD7220_DISPATCH
#IF (VDUENABLE & (DEFVDA == VDADEV_UPD7220))
VDA_DISPADR .SET UPD7220_DISPVDA
#ENDIF #ENDIF
#IF (N8VENABLE & (DEFVDA == VDADEV_N8))
#IF (N8VENABLE & (DEFVDA == VDADEV_N8V))
VDA_DISPADR .SET N8V_DISPVDA VDA_DISPADR .SET N8V_DISPVDA
#ENDIF #ENDIF
; ;
@ -408,14 +426,14 @@ VDA_DISPATCH:
#ENDIF #ENDIF
#IF (CVDUENABLE) #IF (CVDUENABLE)
CP VDADEV_CVDU CP VDADEV_CVDU
JP Z,CVDU_DISPATCH
JP Z,CVDU_DISPVDA
#ENDIF #ENDIF
#IF (UPD7220ENABLE) #IF (UPD7220ENABLE)
CP VDADEV_7220 CP VDADEV_7220
JP Z,UPD7220_DISPATCH
JP Z,UPD7220_DISPVDA
#ENDIF #ENDIF
#IF (N8VENABLE) #IF (N8VENABLE)
CP VDADEV_N8
CP VDADEV_N8V
JP Z,N8V_DISPVDA JP Z,N8V_DISPVDA
#ENDIF #ENDIF
CALL PANIC CALL PANIC
@ -520,6 +538,24 @@ SIZ_VDU .EQU $ - ORG_VDU
.ECHO " bytes.\n" .ECHO " bytes.\n"
#ENDIF #ENDIF
; ;
#IF (CVDUENABLE)
ORG_CVDU .EQU $
#INCLUDE "cvdu.asm"
SIZ_CVDU .EQU $ - ORG_CVDU
.ECHO "CVDU occupies "
.ECHO SIZ_CVDU
.ECHO " bytes.\n"
#ENDIF
;
#IF (UPD7220ENABLE)
ORG_UPD7220 .EQU $
#INCLUDE "upd7220.asm"
SIZ_UPD7220 .EQU $ - ORG_UPD7220
.ECHO "UPD7220 occupies "
.ECHO SIZ_UPD7220
.ECHO " bytes.\n"
#ENDIF
;
#IF (N8VENABLE) #IF (N8VENABLE)
ORG_N8V .EQU $ ORG_N8V .EQU $
#INCLUDE "n8v.asm" #INCLUDE "n8v.asm"
@ -652,8 +688,8 @@ DIOBUF .DW $FD00 ; PTR TO 512 BYTE DISK XFR BUFFER
STR_BANNER .DB "N8VEM HBIOS v", BIOSVER, " (" STR_BANNER .DB "N8VEM HBIOS v", BIOSVER, " ("
VAR_LOC .DB VARIANT, "-" VAR_LOC .DB VARIANT, "-"
TST_LOC .DB TIMESTAMP, ")\r\n" TST_LOC .DB TIMESTAMP, ")\r\n"
.DB PLATFORM_NAME, DSKYLBL, VDULBL, FDLBL, IDELBL, PPIDELBL,
.DB SDLBL, PRPLBL, PPPLBL, HDSKLBL, "\r\n$"
.DB PLATFORM_NAME, DSKYLBL, VDULBL, CVDULBL, UPD7220LBL, N8VLBL,
.DB FDLBL, IDELBL, PPIDELBL, SDLBL, PRPLBL, PPPLBL, HDSKLBL, "\r\n$"
; ;
;================================================================================================== ;==================================================================================================
; FILL REMAINDER OF BANK ; FILL REMAINDER OF BANK

2
Source/config_n8_2312.asm

@ -11,7 +11,7 @@ PLATFORM .EQU PLT_N8 ; PLT_N8VEM, PLT_ZETA, PLT_N8
; ;
DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED) ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
DEFVDA .EQU VDADEV_N8 ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_7220, VDADEV_N8)
DEFVDA .EQU VDADEV_N8V ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...) DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
; ;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!

2
Source/config_n8_2511.asm

@ -11,7 +11,7 @@ PLATFORM .EQU PLT_N8 ; PLT_N8VEM, PLT_ZETA, PLT_N8
; ;
DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED) ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
DEFVDA .EQU VDADEV_N8 ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_7220, VDADEV_N8)
DEFVDA .EQU VDADEV_N8V ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...) DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
; ;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!

2
Source/config_n8vem.asm

@ -11,7 +11,7 @@ PLATFORM .EQU PLT_N8VEM ; PLT_N8VEM, PLT_ZETA, PLT_N8
; ;
DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED) ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_7220, VDADEV_N8)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_UPD7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...) DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
; ;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!

92
Source/config_n8vem_cvdu.asm

@ -0,0 +1,92 @@
;
;==================================================================================================
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ VDU 5/8/2012
;==================================================================================================
;
; BUILD CONFIGURATION OPTIONS
;
CPUFREQ .EQU 8 ; IN MHZ, USED TO COMPUTE DELAY FACTORS
;
PLATFORM .EQU PLT_N8VEM ; PLT_N8VEM, PLT_ZETA, PLT_N8
;
DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
DEFVDA .EQU VDADEV_CVDU ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_UPD7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!
CLRRAMDISK .EQU CLR_AUTO ; CLR_ALWAYS, CLR_NEVER, CLR_AUTO (CLEAR IF INVALID DIR AREA)
;
DSKMAP .EQU DM_RAM ; DM_ROM, DM_RAM, DM_FD, DM_IDE, DM_PPIDE, DM_SD, DM_PRPSD, DM_PPPSD
;
DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE)
;
UARTENABLE .EQU TRUE ; TRUE FOR UART SUPPORT (ALMOST ALWAYS WANT THIS TO BE TRUE)
UARTFIFO .EQU TRUE ; TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY)
UARTAFC .EQU FALSE ; TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!)
;
VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU TRUE ; TRUE FOR CVDU BOARD SUPPORT
UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT
N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT
;
DEFIOBYTE .EQU $00 ; DEFAULT INITIAL VALUE FOR CP/M IOBYTE, $00=TTY, $01=CRT (MUST HAVE CRT HARDWARE)
ALTIOBYTE .EQU DEFIOBYTE ; ALT INITIAL VALUE (USED WHEN CONFIG JUMPER SHORTED)
WRTCACHE .EQU TRUE ; ENABLE WRITE CACHING IN CBIOS (DE)BLOCKING ALGORITHM
DSKTRACE .EQU FALSE ; ENABLE TRACING OF CBIOS DISK FUNCTION CALLS
;
FDENABLE .EQU FALSE ; TRUE FOR FLOPPY SUPPORT
FDMODE .EQU FDMODE_DIO ; FDMODE_DIO, FDMODE_ZETA, FDMODE_DIDE, FDMODE_N8, FDMODE_DIO3
FDTRACE .EQU 1 ; 0=SILENT, 1=FATAL ERRORS, 2=ALL ERRORS, 3=EVERYTHING (ONLY RELEVANT IF FDENABLE = TRUE)
FDMEDIA .EQU FDM144 ; FDM720, FDM144, FDM360, FDM120 (ONLY RELEVANT IF FDENABLE = TRUE)
FDMEDIAALT .EQU FDM720 ; ALTERNATE MEDIA TO TRY, SAME CHOICES AS ABOVE (ONLY RELEVANT IF FDMAUTO = TRUE)
FDMAUTO .EQU TRUE ; SELECT BETWEEN MEDIA OPTS ABOVE AUTOMATICALLY
;
IDEENABLE .EQU FALSE ; TRUE FOR IDE SUPPORT
IDEMODE .EQU IDEMODE_DIO ; IDEMODE_DIO, IDEMODE_DIDE
IDETRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
IDE8BIT .EQU FALSE ; USE IDE 8BIT TRANSFERS (PROBABLY ONLY WORKS FOR CF CARDS!)
IDECAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
;
PPIDEENABLE .EQU FALSE ; TRUE FOR PPIDE SUPPORT (DO NOT COMBINE WITH DSKYENABLE)
PPIDEMODE .EQU PPIDEMODE_STD ; PPIDEMODE_STD, PPIDEMODE_DIO3
PPIDETRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPIDEENABLE = TRUE)
PPIDE8BIT .EQU FALSE ; USE IDE 8BIT TRANSFERS (PROBABLY ONLY WORKS FOR CF CARDS!)
PPIDECAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
PPIDESLOW .EQU FALSE ; ADD DELAYS TO HELP PROBLEMATIC HARDWARE (TRY THIS IF PPIDE IS UNRELIABLE)
;
SDENABLE .EQU FALSE ; TRUE FOR SD SUPPORT
SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
SDCSIO .EQU FALSE ; TRUE IF USING THE CSIO PORT (N8 ONLY)
SDCSIOFAST .EQU FALSE ; TRUE IF USING THE LOOKUP TABLE RATHER THAN SHIFTS AND ROTATES (N8 ONLY)
PPISD .EQU FALSE ; TRUE IF USING PPISD MINI-BOARD (DO NOT COMBINE WITH PPIDE)
;
PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!)
PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!)
PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE)
PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO)
;
PPPENABLE .EQU FALSE ; TRUE FOR PARPORTPROP SUPPORT
PPPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!)
PPPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPPENABLE = TRUE)
PPPSDCAPACITY .EQU 64 ; CAPACITY OF PPP SD DEVICE (IN MB)
PPPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO)
;
HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB)
;
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
KBDENABLE .EQU TRUE ; TRUE FOR PS/2 KEYBOARD ON I8242
;
TTYENABLE .EQU TRUE ; INCLUDE TTY EMULATION SUPPORT
ANSIENABLE .EQU TRUE ; INCLUDE ANSI EMULATION SUPPORT
;
BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS)
BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE
BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT
;
BAUDRATE .EQU 38400 ; IN BPS: 1200, 9600, 38400, ..., 115200
TERMTYPE .EQU TERM_ANSI ; TERM_TTY=0, TERM_ANSI=1, TERM_WYSE=2

2
Source/config_n8vem_dide.asm

@ -11,7 +11,7 @@ PLATFORM .EQU PLT_N8VEM ; PLT_N8VEM, PLT_ZETA, PLT_N8
; ;
DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED) ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_7220, VDADEV_N8)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_UPD7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...) DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
; ;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!

2
Source/config_n8vem_diskio.asm

@ -11,7 +11,7 @@ PLATFORM .EQU PLT_N8VEM ; PLT_N8VEM, PLT_ZETA, PLT_N8
; ;
DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED) ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_7220, VDADEV_N8)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_UPD7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...) DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
; ;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!

2
Source/config_n8vem_diskio3.asm

@ -11,7 +11,7 @@ PLATFORM .EQU PLT_N8VEM ; PLT_N8VEM, PLT_ZETA, PLT_N8
; ;
DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED) ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_7220, VDADEV_N8)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_UPD7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...) DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
; ;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!

2
Source/config_n8vem_ppide.asm

@ -11,7 +11,7 @@ PLATFORM .EQU PLT_N8VEM ; PLT_N8VEM, PLT_ZETA, PLT_N8
; ;
DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED) ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_7220, VDADEV_N8)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_UPD7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...) DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
; ;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!

2
Source/config_n8vem_ppisd.asm

@ -11,7 +11,7 @@ PLATFORM .EQU PLT_N8VEM ; PLT_N8VEM, PLT_ZETA, PLT_N8
; ;
DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED) ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_7220, VDADEV_N8)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_UPD7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...) DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
; ;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!

2
Source/config_n8vem_propio.asm

@ -11,7 +11,7 @@ PLATFORM .EQU PLT_N8VEM ; PLT_N8VEM, PLT_ZETA, PLT_N8
; ;
DEFCON .EQU CIODEV_PRPCON ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON DEFCON .EQU CIODEV_PRPCON ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON
ALTCON .EQU CIODEV_UART ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED) ALTCON .EQU CIODEV_UART ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_7220, VDADEV_N8)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_UPD7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...) DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
; ;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!

2
Source/config_n8vem_vdu.asm

@ -11,7 +11,7 @@ PLATFORM .EQU PLT_N8VEM ; PLT_N8VEM, PLT_ZETA, PLT_N8
; ;
DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED) ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
DEFVDA .EQU VDADEV_VDU ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_7220, VDADEV_N8)
DEFVDA .EQU VDADEV_VDU ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_UPD7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...) DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
; ;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!

2
Source/config_simh.asm

@ -11,7 +11,7 @@ PLATFORM .EQU PLT_N8VEM ; PLT_N8VEM, PLT_ZETA, PLT_N8
; ;
DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED) ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_7220, VDADEV_N8)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_UPD7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...) DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
; ;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!

2
Source/config_zeta.asm

@ -11,7 +11,7 @@ PLATFORM .EQU PLT_ZETA ; PLT_N8VEM, PLT_ZETA, PLT_N8
; ;
DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED) ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_7220, VDADEV_N8)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_UPD7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...) DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
; ;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!

2
Source/config_zeta_ppp.asm

@ -11,7 +11,7 @@ PLATFORM .EQU PLT_ZETA ; PLT_N8VEM, PLT_ZETA, PLT_N8
; ;
DEFCON .EQU CIODEV_PPPCON ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON DEFCON .EQU CIODEV_PPPCON ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_VDU, DIODEV_PRPCON
ALTCON .EQU CIODEV_UART ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED) ALTCON .EQU CIODEV_UART ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_7220, VDADEV_N8)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_UPD7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...) DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
; ;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!

662
Source/cvdu.asm

@ -0,0 +1,662 @@
;__CVDUDRIVER_______________________________________________________________________________________
;
; COLOR VDU DRIVER FOR N8VEM PROJECT
;
; WRITTEN BY: DAN WERNER -- 11/4/2011
; REMAINDER WRITTEN BY: DAN WERNER -- 11/7/2009
; ROMWBW ADAPTATION BY: WAYNE WARTHEN -- 11/9/2012
;__________________________________________________________________________________________________
;
;__________________________________________________________________________________________________
; DATA CONSTANTS
;__________________________________________________________________________________________________
;
CVDU_STAT .EQU $E4 ; READ M8563 STATUS
CVDU_REG .EQU $E4 ; SELECT M8563 REGISTER
CVDU_DATA .EQU $EC ; READ/WRITE M8563 DATA
;
;__________________________________________________________________________________________________
; BOARD INITIALIZATION
;__________________________________________________________________________________________________
;
CVDU_INIT:
LD A,14
LD (CVDU_COLOR),A
XOR A
LD (CVDU_X),A
LD (CVDU_Y),A
LD DE,0
LD (CVDU_DISPLAYPOS),DE
LD (CVDU_DISPLAY_START),DE
CALL CVDU_CRTINIT
CALL CVDU_LOADFONT
LD A,'#'
LD DE,$800
CALL CVDU_FILL
CALL CVDU_XY
XOR A
RET
;
;__________________________________________________________________________________________________
; CHARACTER I/O (CIO) FUNCTION JUMP TABLE
;__________________________________________________________________________________________________
;
CVDU_DISPCIO:
LD A,B ; GET REQUESTED FUNCTION
AND $0F ; ISOLATE SUB-FUNCTION
JR Z,CVDU_CIOIN
DEC A
JR Z,CVDU_CIOOUT
DEC A
JR Z,CVDU_CIOIST
DEC A
JR Z,CVDU_CIOOST
CALL PANIC
;
CVDU_CIOIN:
JP KBD_READ
;
CVDU_CIOIST:
JP KBD_STAT
;
CVDU_CIOOUT:
JP CVDU_VDAWRC
;
CVDU_CIOOST:
XOR A
INC A
RET
;
;__________________________________________________________________________________________________
; VIDEO DISPLAY ADAPTER (VDA) FUNCTION JUMP TABLE
;__________________________________________________________________________________________________
;
CVDU_DISPVDA:
LD A,B ; GET REQUESTED FUNCTION
AND $0F ; ISOLATE SUB-FUNCTION
JR Z,CVDU_VDAINI
DEC A
JR Z,CVDU_VDAQRY
DEC A
JR Z,CVDU_VDARES
DEC A
JR Z,CVDU_VDASCS
DEC A
JR Z,CVDU_VDASCP
DEC A
JR Z,CVDU_VDASAT
DEC A
JR Z,CVDU_VDASCO
DEC A
JR Z,CVDU_VDAWRC
DEC A
JR Z,CVDU_VDAFIL
DEC A
JR Z,CVDU_VDASCR
DEC A
JP Z,KBD_STAT
DEC A
JP Z,KBD_FLUSH
DEC A
JP Z,KBD_READ
CALL PANIC
CVDU_VDAINI:
CALL CVDU_INIT
XOR A
RET
CVDU_VDAQRY:
CALL PANIC
CVDU_VDARES:
JP CVDU_INIT
CVDU_VDASCS:
CALL PANIC
CVDU_VDASCP:
LD A,E
LD (CVDU_X),A
LD A,D
LD (CVDU_Y),A
CALL CVDU_XY
XOR A
RET
CVDU_VDASAT:
; FIX: NOT IMPLEMENTED!!!
CALL PANIC
CVDU_VDASCO:
; NOT SUPPORTED!!!
CALL PANIC
CVDU_VDAWRC:
LD A,E
CALL CVDU_PUTCHAR
; RETURN WITH SUCCESS
XOR A
RET
CVDU_VDAFIL:
LD A,E
EX DE,HL
CALL CVDU_FILL
XOR A ; RESULT = 0
RET
CVDU_VDASCR:
; FIX: IMPLEMENT REVERSE SCROLLING!!!
LD A,E
OR A
RET Z
PUSH DE
CALL CVDU_SCROLL
POP DE
DEC E
JR CVDU_VDASCR
;
CVDU_WAITRDY:
; IN A,(CVDU_STREG) ; READ STATUS
; OR A ; SET FLAGS
; RET M ; IF BIT 7 SET, THEN READY!
; JR CVDU_WAITRDY ; KEEP CHECKING
;
;__CVDU_CRTINIT_____________________________________________________________________________________
;
; INIT 8563 VDU CHIP
;__________________________________________________________________________________________________
CVDU_CRTINIT:
LD B,$00 ; B = 0
LD HL,CVDU_INIT8563 ; HL = POINTER TO THE DEFAULT VALUES
CVDU_CRTINIT1:
LD A,(HL) ; GET VALUE
CALL CVDU_WREG ; WRITE IT
INC HL
INC B
LD A,B
CP 37
JR NZ,CVDU_CRTINIT1 ; LOOP UNTIL DONE
RET
;
;__CVDU_LOADFONT____________________________________________________________________________________
;
; LOAD SCREEN FONT
;__________________________________________________________________________________________________
CVDU_LOADFONT:
LD HL,$2000 ; SET FONT LOCATION
LD B,18 ; SET UPDATE ADDRESS IN VDU
LD A,H
CALL CVDU_WREG ; WRITE IT
LD B,19 ; SET UPDATE ADDRESS IN VDU
LD A,L
CALL CVDU_WREG ; WRITE IT
LD BC,$0020 ; FONT SIZE
LD HL,CVDU_FONTDATA ; FONT DATA
CVDU_LOADFONT1:
IN A,(CVDU_STAT) ; READ ADDRESS/STATUS REGISTER
BIT 7,A ; IF BIT 7 = 1 THAN AN UPDATE STROBE HAS BEEN OCCURED
JR Z,CVDU_LOADFONT1 ; WAIT FOR READY
LD A,31
OUT (CVDU_REG),A ; SELECT REGISTER
CVDU_LOADFONT2:
IN A,(CVDU_STAT) ; READ ADDRESS/STATUS REGISTER
BIT 7,A ; IF BIT 7 = 1 THAN AN UPDATE STROBE HAS BEEN OCCURED
JR Z,CVDU_LOADFONT2 ; WAIT FOR READY
LD A,(HL)
OUT (CVDU_DATA),A ; PUT DATA
INC HL
DJNZ CVDU_LOADFONT1
DEC C
JP NZ,CVDU_LOADFONT1
RET
;__CVDU_WREG________________________________________________________________________________________
;
; WRITE VALUE IN A TO REGISTER IN B
; B: REGISTER TO UPDATE
; A: VALUE TO WRITE
;__________________________________________________________________________________________________
CVDU_WREG:
PUSH AF ; STORE AF
CVDU_WREG1:
IN A,(CVDU_STAT) ; read address/status register
BIT 7,A ; if bit 7 = 1 than an update strobe has been occured
JR Z,CVDU_WREG1 ; wait for ready
LD A,B ;
OUT (CVDU_REG),A ; select register
CVDU_WREG2:
IN A,(CVDU_STAT) ; read address/status register
BIT 7,A ; if bit 7 = 1 than an update strobe has been occured
JR Z,CVDU_WREG2 ; wait for ready
POP AF ;
OUT (CVDU_DATA),A ; PUT DATA
RET
;
;__CVDU_GREG________________________________________________________________________________________
;
; GET VALUE FROM REGISTER IN B PLACE IN A
; B: REGISTER TO GET
; A: VALUE
;__________________________________________________________________________________________________
CVDU_GREG:
IN A,(CVDU_STAT) ; read address/status register
BIT 7,A ; if bit 7 = 1 than an update strobe has been occured
JR Z,CVDU_GREG ; wait for ready
LD A,B ;
OUT (CVDU_REG) , A ; select register
CVDU_GREG1:
IN A,(CVDU_STAT) ; read address/status register
BIT 7,A ; if bit 7 = 1 than an update strobe has been occured
JR Z,CVDU_GREG1 ; wait for ready
IN A,(CVDU_DATA) ; GET DATA
RET
;
;__CVDU_XY__________________________________________________________________________________________
;
; MOVE CURSOR TO POSITON IN CVDU_X AND CVDU_Y
;__________________________________________________________________________________________________
CVDU_XY:
LD A,(CVDU_Y)
LD H,A
LD DE,80
CALL MULT8 ; HL := H * E (D & L ARE CLEARED)
LD A,(CVDU_X)
LD E,A
ADD HL,DE
LD (CVDU_DISPLAYPOS),HL
LD DE,(CVDU_DISPLAY_START)
ADD HL,DE
LD B,14 ; SET UPDATE CSR POS IN VDU
LD A,H ;
CALL CVDU_WREG ; WRITE IT
INC B ; SET UPDATE CSR POS IN VDU
LD A,L ;
CALL CVDU_WREG ; WRITE IT
RET
;
;__CVDU_SCROLL_______________________________________________________________________________________
;
; SCROLL THE SCREEN UP ONE LINE
;__________________________________________________________________________________________________
CVDU_SCROLL:
; SET MODE TO BLOCK COPY
LD A,$80
LD B,24
CALL CVDU_WREG
LD HL,0 ; SOURCE
LD C,23 ; ITERATIONS
CVDU_SCROLL1:
; BLOCK COPY DESTINATION
LD B,18
LD A,H
CALL CVDU_WREG
INC B
LD A,L
CALL CVDU_WREG
LD DE,80
ADD HL,DE
; BLOCK COPY SOURCE
LD B,32
LD A,H
CALL CVDU_WREG
INC B
LD A,L
CALL CVDU_WREG
CVDU_SCROLL2:
; BLOCK COPY COUNT
LD A,80
LD B,30
CALL CVDU_WREG
; LOOP TILL DONE WITH ALL LINES
DEC C
JR NZ,CVDU_SCROLL2
; SET MODE TO BLOCK WRITE
XOR A
LD B,24
CALL CVDU_WREG
; SET CHARACTER TO WRITE
LD A,'='
LD B,31
CALL CVDU_WREG
; BLOCK COPY COUNT
LD A,80 - 1
LD B,30
CALL CVDU_WREG
RET
;
;__CVDU_RSCROLL__________________________________________________________________________________
;
; SCROLL THE SCREEN DOWN ONE LINE
;__________________________________________________________________________________________________
CVDU_RSCROLL:
PUSH AF ; STORE AF
PUSH HL ; STORE HL
PUSH BC ; STORE BC
LD B, 24 ; GET REGISTER 24
CALL CVDU_GREG ;
OR 80H ; TURN ON COPY BIT
LD E,A ; PARK IT
LD HL, (CVDU_DISPLAY_START) ; GET UP START OF DISPLAY
LD BC,0730H ;
ADD HL,BC
LD D,23 ;
CVDU_RSCROLL1:
LD B, 18 ; SET UPDATE(DEST) POS IN VDU
LD A,H ;
CALL CVDU_WREG ; WRITE IT
LD B, 19 ; SET UPDATE(DEST) POS IN VDU
LD A,L ;
CALL CVDU_WREG ; WRITE IT
LD BC,0FFB0H ;
ADD HL,BC ;
LD B, 32 ; SET SOURCE POS IN VDU
LD A,H ;
CALL CVDU_WREG ; WRITE IT
LD B, 33 ; SET SOURCE POS IN VDU
LD A,L ;
CALL CVDU_WREG ; WRITE IT
LD B, 24 ; SET COPY
LD A,E ;
CALL CVDU_WREG ; WRITE IT
LD B, 30 ; SET AMOUNT TO COPY
LD A,050H ;
CALL CVDU_WREG ; WRITE IT
DEC D
LD A,D ;
CP 00H ;
JP NZ,CVDU_RSCROLL1 ; LOOP TILL DONE
LD HL, (CVDU_DISPLAY_START) ; GET UP START OF DISPLAY
LD BC,0F50H ;
ADD HL,BC
LD D,23 ;
CVDU_RSCROLL2:
LD B, 18 ; SET UPDATE(DEST) POS IN VDU
LD A,H ;
CALL CVDU_WREG ; WRITE IT
LD B, 19 ; SET UPDATE(DEST) POS IN VDU
LD A,L ;
CALL CVDU_WREG ; WRITE IT
LD BC,0FFB0H ;
ADD HL,BC ;
LD B, 32 ; SET SOURCE POS IN VDU
LD A,H ;
CALL CVDU_WREG ; WRITE IT
LD B, 33 ; SET SOURCE POS IN VDU
LD A,L ;
CALL CVDU_WREG ; WRITE IT
LD B, 24 ; SET COPY
LD A,E ;
CALL CVDU_WREG ; WRITE IT
LD B, 30 ; SET AMOUNT TO COPY
LD A,050H ;
CALL CVDU_WREG ; WRITE IT
DEC D
LD A,D ;
CP 00H ;
JP NZ,CVDU_RSCROLL2 ; LOOP TILL DONE
LD A,0 ; SET CURSOR TO BEGINNING OF FIRST LINE
LD (CVDU_Y),A ;
LD A,(CVDU_X) ;
PUSH AF ; STORE X COORD
LD A,0 ;
LD (CVDU_X),A ;
CALL CVDU_XY ; SET CURSOR POSITION TO BEGINNING OF LINE
POP AF ; RESTORE AF
POP BC ; RESTORE BC
CALL CVDU_ERASE_EOL ; ERASE SCROLLED LINE
LD (CVDU_X),A ;
CALL CVDU_XY ; SET CURSOR POSITION
POP HL ; RESTORE HL
POP AF ; RESTORE AF
RET ;
;
;__CVDU_ERASE_EOL__________________________________________________________________________________
;
; PERFORM ERASE FROM CURSOR POS TO END OF LINE
; C=DEFAULT COLOR
;__________________________________________________________________________________________________
CVDU_ERASE_EOL:
PUSH HL
PUSH AF
PUSH BC
LD A,(CVDU_X) ; GET CURRENT CURSOR X COORD
LD D,A ; STORE IT IN C
LD A,80 ; MOVE CURRENT LINE WIDTH INTO A
SUB D ; GET REMAINING POSITIONS ON CURRENT LINE
LD B,A ; MOVE IT INTO B
CVDU_ERASE_EOL1:
LD A, ' ' ; MOVE SPACE CHARACTER INTO A
CALL CVDU_PUTCHAR ;
DJNZ CVDU_ERASE_EOL1 ; LOOP UNTIL DONE
CALL CVDU_XY ; MOVE CURSOR BACK TO ORIGINAL POSITION
POP BC
POP AF
POP HL
RET
;
;__CVDU_ERASE_EOS__________________________________________________________________________________
;
; PERFORM ERASE FROM CURSOR POS TO END OF SCREEN
; C= DEFAULT COLOR
;__________________________________________________________________________________________________
CVDU_ERASE_EOS:
PUSH HL
PUSH AF
PUSH BC
LD HL, (CVDU_DISPLAYPOS) ; GET CURRENT DISPLAY ADDRESS
LD B, 18 ; SET UPDATE CSR POS IN VDU
LD A,H ;
CALL CVDU_WREG ; WRITE IT
LD B, 19 ; SET UPDATE CSR POS IN VDU
LD A,L ;
CALL CVDU_WREG ; WRITE IT
LD DE,0820H ; SET SCREEN SIZE INTO HL
CVDU_ERASE_EOS1:
LD A, ' ' ; MOVE SPACE CHARACTER INTO A
LD B,31 ;
CALL CVDU_WREG ; WRITE IT TO SCREEN, VDU WILL AUTO INC TO NEXT ADDRESS
DEC DE ; DEC COUNTER
LD A,D ; IS COUNTER 0 YET?
OR E ;
JP NZ,CVDU_ERASE_EOS1 ; NO, LOOP
LD DE,0820H ; SET SCREEN SIZE INTO HL
CVDU_ERASE_EOS2:
LD A, (CVDU_COLOR) ; MOVE COLOR INTO A
LD B,31 ;
CALL CVDU_WREG ; WRITE IT TO SCREEN, VDU WILL AUTO INC TO NEXT ADDRESS
DEC DE ; DEC COUNTER
LD A,D ; IS COUNTER 0 YET?
OR E ;
JP NZ,CVDU_ERASE_EOS2 ; NO, LOOP
CALL CVDU_XY ; YES, MOVE CURSOR BACK TO ORIGINAL POSITION
POP BC
POP AF
POP HL
RET
;
;__________________________________________________________________________________________________
CVDU_PUTCHAR:
; PLACE CHARACTER ON SCREEN, ADVANCE CURSOR
; A: CHARACTER TO OUTPUT
;
PUSH AF
LD HL,(CVDU_DISPLAY_START)
LD DE,(CVDU_DISPLAYPOS)
ADD HL,DE
INC DE
LD (CVDU_DISPLAYPOS),DE
LD B,18
LD A,H
CALL CVDU_WREG
INC B
LD A,L
CALL CVDU_WREG
POP AF
LD B,31
CALL CVDU_WREG
PUSH HL
INC HL
LD B,14
LD A,H
CALL CVDU_WREG
INC B
LD A,L
CALL CVDU_WREG
POP HL
LD DE,$800
ADD HL,DE
LD B,18
LD A,H
CALL CVDU_WREG
INC B
LD A,L
CALL CVDU_WREG
LD A,(CVDU_COLOR)
LD B,31
CALL CVDU_WREG
RET
;__________________________________________________________________________________________________
CVDU_FILL:
;
; FILL AREA IN BUFFER WITH SPECIFIED CHARACTER AND CURRENT COLOR/ATTRIBUTE
; STARTING WITH THE CURRENT FRAME BUFFER POSITION
; A: FILL CHARACTER
; DE: NUMBER OF CHARACTERS TO FILL
;
PUSH AF
PUSH DE
LD HL,(CVDU_DISPLAY_START)
LD DE,(CVDU_DISPLAYPOS)
ADD HL,DE
LD B,18
LD A,H
CALL CVDU_WREG
INC B
LD A,L
CALL CVDU_WREG
POP DE
POP AF
PUSH DE
LD C,A
CVDU_FILL1:
LD A,C
LD B,31
CALL CVDU_WREG
DEC DE
LD A,D
OR E
JR NZ,CVDU_FILL1
LD DE,$800
ADD HL,DE
POP DE
LD B,18
LD A,H
CALL CVDU_WREG
INC B
LD A,L
CALL CVDU_WREG
LD A,(CVDU_COLOR)
LD C,A
CVDU_FILL2:
LD A,C
LD B,31
CALL CVDU_WREG
DEC DE
LD A,D
OR E
JR NZ,CVDU_FILL2
RET
;
;==================================================================================================
; VDU DRIVER - DATA
;==================================================================================================
;
CVDU_X .DB 0 ; CURSOR X
CVDU_Y .DB 0 ; CURSOR Y
CVDU_COLOR .DB 0 ; CURRENT COLOR
CVDU_DISPLAYPOS .DW 0 ; CURRENT DISPLAY POSITION
CVDU_DISPLAY_START .DW 0 ; CURRENT DISPLAY POSITION
;
;==================================================================================================
; VDU DRIVER - 8563 REGISTER INITIALIZATION
;==================================================================================================
;
; EGA 720X368 9-BIT CHARACTERS
; - requires 16.257Mhz oscillator frequency
;
CVDU_INIT8563:
.DB 97 ; 0: hor. total - 1
.DB 80 ; 1: hor. displayed
.DB 85 ; 2: hor. sync position
.DB $14 ; 3: vert/hor sync width or 0x4F -- MDA
.DB 26 ; 4: vert total
.DB 2 ; 5: vert total adjust
.DB 25 ; 6: vert. displayed
.DB 26 ; 7: vert. sync postition
.DB 0 ; 8: interlace mode
.DB 13 ; 9: char height - 1
.DB (2<<5)+12 ; 10: cursor mode, start line
.DB 13 ; 11: cursor end line
.DB 0 ; 12: display start addr hi
.DB 0 ; 13: display start addr lo
.DB 7 ; 14: cursor position hi
.DB 128 ; 15: cursor position lo
.DB 1 ; 16: light pen vertical
.DB 1 ; 17: light pen horizontal
.DB 0 ; 18: update address hi
.DB 0 ; 19: update address lo
.DB 8 ; 20: attribute start addr hi
.DB 0 ; 21: attribute start addr lo
.DB $89 ; 22: char hor size cntrl 0x78
.DB 13 ; 23: vert char pixel space - 1, increase to 13 with new font
.DB 0 ; 24: copy/fill, reverse, blink rate; vertical scroll
.DB $48 ; 25: gr/txt, color/mono, pxl-rpt, dbl-wide; horiz. scroll
.DB $E0 ; 26: fg/bg colors (monochr)
.DB 0 ; 27: row addr display incr
.DB $20+(1<<4) ; 28: char set addr; RAM size (64/16)
.DB 13 ; 29: underline position
.DB 0 ; 30: word count - 1
.DB 0 ; 31: data
.DB 0 ; 32: block copy src hi
.DB 0 ; 33: block copy src lo
.DB 6 ; 34: display enable begin
.DB 88 ; 35: display enable end
.DB 0 ; 36: refresh rate
; .DB 126,80,102,73,32,224,25,29,252,231,160,231,0,0,7,128
; .DB 18,23,15,208,8,32,120,232,32,71,240,0,47,231,79,7,15,208,125,100,245
;
;==================================================================================================
; CVDU DRIVER - FONT DATA
;==================================================================================================
;
#INCLUDE "cvdu_font.asm"

1025
Source/cvdu_font.asm

File diff suppressed because it is too large

14
Source/kbd.asm

@ -413,13 +413,13 @@ KBD_DEC1: ; PROCESS NEXT SCANCODE
LD (KBD_SCANCODE),A ; SAVE SCANCODE LD (KBD_SCANCODE),A ; SAVE SCANCODE
KBD_DEC2: ; DETECT AND HANDLE SPECIAL KEYCODES KBD_DEC2: ; DETECT AND HANDLE SPECIAL KEYCODES
LD A,(KBD_SCANCODE) ; GET THE CURRENT SCANCODE
CP $AA ; KEYBOARD INSERTION?
JR NZ,KBD_DEC3 ; NOPE, BYPASS
CALL KBD_RESET ; RESET KEYBOARD
CALL KBD_SETLEDS ; SET LEDS
CALL KBD_SETRPT ; SET REPEAT RATE
JP KBD_DECNEW ; RESTART THE ENGINE
; LD A,(KBD_SCANCODE) ; GET THE CURRENT SCANCODE
; CP $AA ; KEYBOARD INSERTION?
; JR NZ,KBD_DEC3 ; NOPE, BYPASS
; CALL KBD_RESET ; RESET KEYBOARD
; CALL KBD_SETLEDS ; SET LEDS
; CALL KBD_SETRPT ; SET REPEAT RATE
; JP KBD_DECNEW ; RESTART THE ENGINE
KBD_DEC3: ; DETECT AND HANDLE SCANCODE PREFIXES KBD_DEC3: ; DETECT AND HANDLE SCANCODE PREFIXES
LD A,(KBD_SCANCODE) ; GET THE CURRENT SCANCODE LD A,(KBD_SCANCODE) ; GET THE CURRENT SCANCODE

31
Source/std.asm

@ -44,17 +44,20 @@ BT_AUTO .EQU 2 ; AUTO SELECT BOOT_DEFAULT AFTER BOOT_TIMEOUT
VDADEV_NONE .EQU $00 ; NO VDA DEVICE VDADEV_NONE .EQU $00 ; NO VDA DEVICE
VDADEV_VDU .EQU $10 ; ECB VDU - 6545 CHIP VDADEV_VDU .EQU $10 ; ECB VDU - 6545 CHIP
VDADEV_CVDU .EQU $20 ; ECB COLOR VDU - 8563 CHIP (NOT IMPLEMENTED) VDADEV_CVDU .EQU $20 ; ECB COLOR VDU - 8563 CHIP (NOT IMPLEMENTED)
VDADEV_7220 .EQU $30 ; ECB uP7220 (NOT IMPLEMENTED)
VDADEV_N8 .EQU $40 ; N8 ONBOARD VDA SUBSYSTEM (NOT IMPLEMENTED)
VDADEV_UPD7220 .EQU $30 ; ECB uP7220 (NOT IMPLEMENTED)
VDADEV_N8V .EQU $40 ; N8 ONBOARD VDA SUBSYSTEM
; ;
; CHARACTER DEVICES ; CHARACTER DEVICES
; ;
CIODEV_UART .EQU $00 CIODEV_UART .EQU $00
CIODEV_PRPCON .EQU $10
CIODEV_ASCI .EQU $10
CIODEV_VDU .EQU $20 CIODEV_VDU .EQU $20
CIODEV_CVDU .EQU $30 CIODEV_CVDU .EQU $30
CIODEV_PPPCON .EQU $40
CIODEV_CRT .EQU $80
CIODEV_UPD7220 .EQU $40
CIODEV_N8V .EQU $50
CIODEV_PRPCON .EQU $60
CIODEV_PPPCON .EQU $70
CIODEV_CRT .EQU $D0
CIODEV_BAT .EQU $E0 CIODEV_BAT .EQU $E0
CIODEV_NUL .EQU $F0 CIODEV_NUL .EQU $F0
; ;
@ -498,6 +501,24 @@ CCPSIZ: .EQU 00800H
#DEFINE VDULBL "" #DEFINE VDULBL ""
#ENDIF #ENDIF
; ;
#IF (CVDUENABLE)
#DEFINE CVDULBL ", CVDU"
#ELSE
#DEFINE CVDULBL ""
#ENDIF
;
#IF (UPD7220ENABLE)
#DEFINE UPD7220LBL ", UPD7220"
#ELSE
#DEFINE UPD7220LBL ""
#ENDIF
;
#IF (N8VENABLE)
#DEFINE N8VLBL ", N8V"
#ELSE
#DEFINE N8VLBL ""
#ENDIF
;
#IF (FDENABLE) #IF (FDENABLE)
#IF (FDMAUTO) #IF (FDMAUTO)
#DEFINE FDLBL ", FLOPPY (AUTOSIZE)" #DEFINE FDLBL ", FLOPPY (AUTOSIZE)"

2
Source/tty.asm

@ -134,7 +134,7 @@ TTY_LF:
LD E,A ; LINES TO SCROLL -> E LD E,A ; LINES TO SCROLL -> E
LD B,BF_VDASCR LD B,BF_VDASCR
CALL EMU_VDADISP ; DO THE SCROLLING CALL EMU_VDADISP ; DO THE SCROLLING
LD A,23 ; ROW 23
LD A,23 ; ROW 24
LD (TTY_ROW),A ; IS NOW CORRECT LD (TTY_ROW),A ; IS NOW CORRECT
JR TTY_XY ; RESPOSITION CURSOR AND RETURN JR TTY_XY ; RESPOSITION CURSOR AND RETURN
; ;

4
Source/vdu.asm

@ -1,10 +1,10 @@
;__VDUDRIVER_______________________________________________________________________________________ ;__VDUDRIVER_______________________________________________________________________________________
; ;
; VDUDRIVER FOR CBIOS 2.2, PAGED.
; VDU DRIVER FOR N8VEM PROJECT
; ;
; VDU DRIVERS BY: ANDREW LYNCH ; VDU DRIVERS BY: ANDREW LYNCH
; KEYBOARD DRIVERS BY: DR JAMES MOXHAM
; REMAINDER WRITTEN BY: DAN WERNER -- 11/7/2009 ; REMAINDER WRITTEN BY: DAN WERNER -- 11/7/2009
; ROMWBW ADAPTATION BY: WAYNE WARTHEN -- 11/9/2012
;__________________________________________________________________________________________________ ;__________________________________________________________________________________________________
; ;
;__________________________________________________________________________________________________ ;__________________________________________________________________________________________________

Loading…
Cancel
Save