Browse Source

Reintegrate wbw -> trunk

patch
wayne 13 years ago
parent
commit
a010260c8c
  1. 3
      Apps/core/CLEAN.BAT
  2. 16
      Apps/core/FETCH.BAT
  3. 2
      Apps/crossdev/APPLVERS.H
  4. 4
      Apps/crossdev/APPLVERS.LIB
  5. 17
      Apps/crossdev/BLDCORE.BAT
  6. 20
      Apps/crossdev/COPYCORE.BAT
  7. 17
      Clean.cmd
  8. 4
      ReadMe.txt
  9. BIN
      RomDsk/CPM_1024KB/ZDE40.COM
  10. BIN
      RomDsk/CPM_512KB/ZDE40.COM
  11. BIN
      RomDsk/ZSYS_1024KB/ZDE40.COM
  12. 80
      Source/cbios.asm
  13. 8
      Source/config_n8_2312.asm
  14. 8
      Source/config_n8_2511.asm
  15. 8
      Source/config_n8vem_cvdu.asm
  16. 8
      Source/config_n8vem_dide.asm
  17. 8
      Source/config_n8vem_diskio.asm
  18. 8
      Source/config_n8vem_diskio3.asm
  19. 8
      Source/config_n8vem_dsd.asm
  20. 8
      Source/config_n8vem_ppide.asm
  21. 8
      Source/config_n8vem_ppisd.asm
  22. 9
      Source/config_n8vem_propio.asm
  23. 8
      Source/config_n8vem_simh.asm
  24. 8
      Source/config_n8vem_std.asm
  25. 8
      Source/config_n8vem_vdu.asm
  26. 8
      Source/config_zeta_ppp.asm
  27. 8
      Source/config_zeta_std.asm
  28. 43
      Source/cvdu.asm
  29. 4
      Source/fd.asm
  30. 43
      Source/hbios.asm
  31. 36
      Source/kbd.asm
  32. 147
      Source/n8v.asm
  33. 47
      Source/ppk.asm
  34. 6
      Source/prp.asm
  35. 2
      Source/uart.asm
  36. 2
      Source/util.asm
  37. 4
      Source/ver.inc

3
Apps/core/CLEAN.BAT

@ -1,3 +0,0 @@
@echo off
if exist *.COM del *.COM
if exist *.MAN del *.MAN

16
Apps/core/FETCH.BAT

@ -1,16 +0,0 @@
@echo off
echo Copy CP/M-80 executables from the crossdev folder to here (core only)
if exist *.COM del *.COM
if exist *.MAN del *.MAN
copy ..\crossdev\ACCESS.CPM ACCESS.COM
copy ..\crossdev\CPMNAME.CPM CPMNAME.COM
copy ..\crossdev\FINDFILE.CPM FINDFILE.COM
copy ..\crossdev\MAP.CPM MAP.COM
copy ..\crossdev\META.CPM META.COM
copy ..\crossdev\MULTIFMT.CPM MULTIFMT.COM
copy ..\crossdev\REM.CPM REM.COM
copy ..\crossdev\SETLABEL.CPM SETLABEL.COM
copy ..\crossdev\SYSGEN.CPM SYSGEN.COM
copy ..\crossdev\TERMTYPE.CPM TERMTYPE.COM
copy ..\crossdev\VIEW.CPM VIEW.COM
copy ..\doc\dwg-apps.man DWG-APPS.MAN

2
Apps/crossdev/APPLVERS.H

@ -8,7 +8,7 @@
#define A_RTP 6
#define A_MONTH 4
#define A_DAY 9
#define A_DAY 11
#define A_YEAR 2013
#define A_YR 13

4
Apps/crossdev/APPLVERS.LIB

@ -6,11 +6,11 @@ A$RUP equ 0
A$RTP equ 6
A$MONTH equ 4
A$DAY equ 9
A$DAY equ 11
A$YEAR equ 2013
date macro
dat db ' 4/9/2013$'
dat db ' 4/11/2013$'
endm
serial macro

17
Apps/crossdev/COREAPPS.BAT → Apps/crossdev/BLDCORE.BAT

@ -2,60 +2,73 @@
rem coreapps.bat 2/15/2013 dwg - build all core apps using batch files
echo.
echo Building access.com...
if not exist access.cpm call access.bat
if not exist access.cpm echo WARNING ACCESS DIDN'T BUILD
if not exist access.cpm pause
echo.
echo Building cpmname.com...
if not exist cpmname.cpm call cpmname.bat
if not exist cpmname.cpm echo WARNING CPMNAME DIDN'T BUILD
if not exist cpmname.cpm pause
echo.
echo Building findfile.com...
if not exist findfile.cpm call findfile.bat
if not exist findfile.cpm echo WARNING FINDFILE DIDN'T BUILD
if not exist findfile.cpm pause
echo.
echo Building map.com...
if not exist map.cpm call map.bat
if not exist map.cpm echo WARNING MAP DIDN'T BUILD
if not exist map.cpm pause
echo.
echo Building meta.com...
if not exist meta.cpm call meta.bat
if not exist meta.cpm echo WARNING META DIDN'T BUILD
if not exist meta.cpm pause
echo.
echo Building multifmt.com...
if not exist multifmt.cpm call multifmt.bat
if not exist multifmt.cpm echo WARNING MULTIFMT DIDN'T BUILD
if not exist multifmt.cpm pause
echo.
echo Building rem.com...
if not exist rem.cpm call makerem.bat
if not exist rem.cpm echo WARNING REM DIDN'T BUILD
if not exist rem.cpm pause
echo.
echo Building setlabel.com...
if not exist setlabel.cpm call setlabel.bat
if not exist setlabel.cpm echo WARNING SETLABEL DIDN'T BUILD
if not exist setlabel.cpm pause
echo.
echo Building sysgen.com...
if not exist sysgen.cpm call sysgen.bat
if not exist sysgen.cpm echo WARNING SYSGEN DIDN'T BUILD
if not exist sysgen.cpm pause
echo.
echo Building termtype.com...
if not exist termtype.cpm call termtype.bat
if not exist termtype.cpm echo WARNING TERMTYPE DIDN'T BUILD
if not exist termtype.cpm pause
echo.
echo Building view.com...
if not exist view.cpm call view.bat
if not exist view.cpm echo WARNING VIEW DIDN'T BUILD
if not exist view.cpm pause
echo All Core Apps Built
dir *.cpm
echo.
echo Build Core Apps complete:
echo.
dir *.CPM

20
Apps/crossdev/COPYCORE.BAT

@ -0,0 +1,20 @@
@echo off
echo.
echo Regenerate Core directory...
echo.
if exist ..\core\*.* del /q ..\core\*.*
copy ACCESS.CPM ..\core\*.COM
copy CPMNAME.CPM ..\core\*.COM
copy FINDFILE.CPM ..\core\*.COM
copy MAP.CPM ..\core\*.COM
copy META.CPM ..\core\*.COM
copy MULTIFMT.CPM ..\core\*.COM
copy REM.CPM ..\core\*.COM
copy SETLABEL.CPM ..\core\*.COM
copy SYSGEN.CPM ..\core\*.COM
copy TERMTYPE.CPM ..\core\*.COM
copy VIEW.CPM ..\core\*.COM
copy ..\doc\DWG-APPS.MAN ..\core\DWG-APPS.MAN

17
Clean.cmd

@ -1,5 +1,22 @@
@echo off
setlocal
echo Cleaning Source...
pushd Source
call Clean.cmd
popd
echo Cleaning Apps\core...
pushd Apps\core
del /q *.*
popd
echo Cleaning Apps\crossdev...
pushd Apps\crossdev
call Clean.bat
popd
choice /m "Clean Output directory?"
if errorlevel 2 goto :eof
echo Cleaning Output...
if exist Output\*.* del Output\*.* /Q

4
ReadMe.txt

@ -8,8 +8,8 @@ Builders: Wayne Warthen (wwarthen@gmail.com)
Douglas Goodall (douglas_goodall@mac.com)
David Giles (vk5dg@internode.on.net)
Updated: 2013-04-07
Version: 2.5 Beta 5
Updated: 2013-04-28
Version: 2.5 Beta 7
This is an adaptation of CP/M-80 2.2 and ZSDOS/ZCPR
targeting ROMs for all N8VEM Z80 hardware variations

BIN
RomDsk/CPM_1024KB/ZDE40.COM

Binary file not shown.

BIN
RomDsk/CPM_512KB/ZDE40.COM

Binary file not shown.

BIN
RomDsk/ZSYS_1024KB/ZDE40.COM

Binary file not shown.

80
Source/cbios.asm

@ -3,6 +3,7 @@
; CBIOS FOR N8VEM
;
; BY ANDREW LYNCH, WITH INPUT FROM MANY SOURCES
; ROMWBW ADAPTATION BY WAYNE WARTHEN
;__________________________________________________________________________________________________
;
; cbios.asm 6/04/2012 dwg - added BOOTLU
@ -25,7 +26,7 @@
;==================================================================================================
; These jumps are defined in the CP/M-80 v2.2 system guide and comprise
; the invariant part of the BIOS.
;
JP BOOT ; #0 - COLD START
WBOOTE JP WBOOT ; #1 - WARM START
JP CONST ; #2 - CONSOLE STATUS
@ -43,20 +44,24 @@ WBOOTE JP WBOOT ; #1 - WARM START
JP WRITE ; #14 - WRITE DISK
JP LISTST ; #15 - RETURN LIST STATUS
JP SECTRN ; #16 - SECTOR TRANSLATE
;
;------------------------------------------------------------------------
; These jumps are enhancements, added for the benefit of the RomWBW BIOS
; and are located following the invariant jump table so they can be
; easily located by external programs. They transfger control to routines
; that are located somewhere within the main section of the CBIOS.
;
JP BNKSEL ; #17 - SEL. RAM BANK FOR LOW32K (obsolete, use HBIOS)
JP GETDSK ; #18 - Get Disk Info (device/unit/lu)
JP SETDSK ; #19 - Set Disk Into (device/unit/lu)
JP GETINFO ; #20 - Get BIOS Info Base Ptr
;
;------------------------------------------------------------------------
; Expansion area for future enhancements - In order not to shift the
; subsequent data and break local and external code, space is set aside for
; four additional jumps. Until implemented, an invocation will result in
; a system panic.
;
CALL PANIC ; #21 - reserved for JP <new function>
CALL PANIC ; #22 - reserved for JP <new function>
CALL PANIC ; #23 - reserved for JP <new function>
@ -99,18 +104,18 @@ BOOT:
WBOOT:
DI
IM 1
;
LD SP,ISTACK ; STACK FOR INITIALIZATION
;
; RELOAD COMMAND PROCESSOR FROM CACHE
LD A,1
CALL RAMPG
LD HL,0800H ; LOCATION IN RAM1 OF COMMAND PROCESSOR CACHE
LD A,1 ; SELECT RAM BANK 1
CALL RAMPG ; DO IT
LD HL,0800H ; LOCATION IN RAM BANK 1 OF COMMAND PROCESSOR CACHE
LD DE,CPM_LOC ; LOCATION OF ACTIVE COMMAND PROCESSOR
LD BC,CCPSIZ ; SIZE OF COMMAND PROCESSOR
LDIR
CALL RAMPGZ
LDIR ; COPY
CALL RAMPGZ ; RESTORE RAM PAGE 0
;
; FALL THRU TO INVOKE CP/M
;
;__________________________________________________________________________________________________
@ -120,13 +125,13 @@ GOCPM:
LD (BUFADR),HL
LD B,BF_DIOSETBUF
RST 08
;
LD A,0C3H ; LOAD A WITH 'JP' INSTRUCTION (USED BELOW)
;
; CPU RESET / RST 0 -> WARM START CP/M
LD (0000H),A
LD HL,WBOOTE
LD (0001H),HL
LD ($0000),A ; JP OPCODE GOES HERE
LD HL,WBOOTE ; GET WARM BOOT ENTRY ADDRESS
LD ($0001),HL ; PUT IT AT $0001
; ; INT / RST 38 -> INVOKE MONITOR
; LD (0038H),A
@ -139,16 +144,16 @@ GOCPM:
; LD (0039H),HL ; POKE IT
; CALL 5 -> INVOKE BDOS
LD (0005H),A
LD HL,BDOS
LD (0006H),HL
LD (0005H),A ; JP OPCODE AT $0005
LD HL,BDOS ; GET BDOS ENTRY ADDRESS
LD (0006H),HL ; PUT IT AT $0006
; RESET (DE)BLOCKING ALGORITHM
CALL BLKRES
; DEFAULT DMA ADDRESS
LD BC,80H
CALL SETDMA
LD BC,80H ; DEFAULT DMA ADDRESS IS $0080
CALL SETDMA ; SET IT
; ENSURE VALID DISK AND JUMP TO CCP
LD A,(CDISK) ; GET CURRENT USER/DISK
@ -157,12 +162,12 @@ GOCPM:
CALL DSK_STATUS ; CHECK DISK STATUS
JR Z,CURDSK ; ZERO MEANS OK
LD A,(DEFDRIVE) ; CURRENT DRIVE NOT READY, USE DEFAULT
JR GOCCP
JR GOCCP ; JUMP TO COMMAND PROCESSOR
CURDSK:
LD A,(CDISK) ; GET CURRENT USER/DISK
GOCCP:
LD C,A ; SETUP C WITH CURRENT USER/DISK, ASSUME IT IS OK
JP CCP
JP CCP ; JUMP TO COMMAND PROCESSOR
;
;__________________________________________________________________________________________________
GOMON:
@ -310,7 +315,7 @@ CIOST:
;
OR A ; SET FLAGS
RET Z ; NO CHARACTERS WAITING (IST) OR OUTPUT BUF FULL (OST)
OR 0FFH ; $FF SIGNALS READY TO READ (IST) OR WRITE (OST)
OR $FF ; $FF SIGNALS READY TO READ (IST) OR WRITE (OST)
RET
;__________________________________________________________________________________________________
SELDSK:
@ -318,6 +323,7 @@ SELDSK:
#IF DSKTRACE
CALL PRTSELDSK ; *DEBUG*
#ENDIF
;
JP DSK_SELECT
;
;__________________________________________________________________________________________________
@ -326,12 +332,12 @@ HOME:
#IF DSKTRACE
CALL PRTHOME ; *DEBUG*
#ENDIF
;
LD A,(HSTWRT) ; CHECK FOR PENDING WRITE
OR A
JR NZ,HOMED
OR A ; SET FLAGS
JR NZ,HOMED ; BUFFER IS DIRTY
LD (HSTACT),A ; CLEAR HOST ACTIVE FLAG
;
HOMED:
LD BC,0
;
@ -568,9 +574,9 @@ BLKFLSH:
#IF WRTCACHE
WRT_ALL .EQU 0 ; WRITE TO ALLOCATED
WRT_ALC .EQU 0 ; WRITE TO ALLOCATED
WRT_DIR .EQU 1 ; WRITE TO DIRECTORY
WRT_UAL .EQU 2 ; WRITE TO UNALLOCATED
WRT_UNA .EQU 2 ; WRITE TO UNALLOCATED
;
;__________________________________________________________________________________________________
@ -589,7 +595,7 @@ BLKRW:
; OTHERWISE, CLEAR OUT ANY SEQUENTIAL, UNALLOC WRITE PROCESSING
; AND GO DIRECTLY TO MAIN I/O
XOR A ; ZERO TO A
LD (WRTYPE),A ; SET WRITE TYPE = 0 (WRT_ALL) TO ENSURE READ OCCURS
LD (WRTYPE),A ; SET WRITE TYPE = 0 (WRT_ALC) TO ENSURE READ OCCURS
LD (UNACNT),A ; SET UNACNT TO ABORT SEQ WRITE PROCESSING
JR BLKRW4 ; GO TO I/O
@ -598,25 +604,25 @@ BLKRW1:
; WRITE PROCESSING
; CHECK FOR FIRST WRITE TO UNALLOCATED BLOCK
LD A,(WRTYPE) ; GET WRITE TYPE
CP WRT_UAL ; IS IT WRITE TO UNALLOC?
CP WRT_UNA ; IS IT WRITE TO UNALLOC?
JR NZ,BLKRW2 ; NOPE, BYPASS
; INITIALIZE START OF SEQUENTIAL WRITING TO UNALLOCATED BLOCK
; AND THEN TREAT SUBSEQUENT PROCESSING AS A NORMAL WRITE
CALL UNA_INI ; INITIALIZE SEQUENTIAL WRITE TRACKING
XOR A ; A = 0 = WRT_ALL
XOR A ; A = 0 = WRT_ALC
LD (WRTYPE),A ; NOW TREAT LIKE WRITE TO ALLOCATED
BLKRW2:
; IF WRTYPE = WRT_ALL AND SEQ WRITE, GOTO BLKRW7 (SKIP READ)
; IF WRTYPE = WRT_ALC AND SEQ WRITE, GOTO BLKRW7 (SKIP READ)
OR A ; NOTE: A WILL ALREADY HAVE THE WRITE TYPE HERE
JR NZ,BLKRW3 ; NOT TYPE = 0 = WRT_ALL, SO MOVE ON
JR NZ,BLKRW3 ; NOT TYPE = 0 = WRT_ALC, SO MOVE ON
CALL UNA_CHK ; CHECK FOR CONTINUATION OF SEQ WRITES TO UNALLOCATED BLOCK
JR NZ,BLKRW3 ; NOPE, ABORT
; WE MATCHED EVERYTHING, TREAT AS WRITE TO UNALLOCATED BLOCK
LD A,WRT_UAL ; WRITE TO UNALLOCATED
LD A,WRT_UNA ; WRITE TO UNALLOCATED
LD (WRTYPE),A ; SAVE WRITE TYPE
CALL UNA_INC ; INCREMENT SEQUENTIAL WRITE TRACKING
@ -993,7 +999,7 @@ DSK_DISP:
RST 08 ; OTHERWISE, HANDLE IN HBIOS
RET ; AND RETURN
;
; LOOKUP DPH BASED ON DPM DRIVE NUMBER
; LOOKUP DPH BASED ON CPM DRIVE NUMBER
; ENTER WITH C=CPM DRIVE NUMBER
; RETURNS WITH HL = DPH ADDRESS (0 ON ERROR)
; A=0 ON SUCCESS, A=1 ON ERROR
@ -1132,7 +1138,7 @@ DSK_SELECT4:
;
;
DSK_STATUS:
; C HAS CPM DRIVE, LOOKUP DEVICE/UNIT AND CHECK FOR INVLAID DRIVE
; C HAS CPM DRIVE, LOOKUP DEVICE/UNIT AND CHECK FOR INVALID DRIVE
CALL DSK_GETDPH ; B = DEVICE/UNIT
RET NZ ; INVALID DRIVE ERROR

8
Source/config_n8_2312.asm

@ -1,16 +1,16 @@
;
;==================================================================================================
; ROMWBW 2.X CONFIGURATION FOR N8 5/8/2012
; ROMWBW 2.X CONFIGURATION FOR N8 2312
;==================================================================================================
;
; BUILD CONFIGURATION OPTIONS
;
CPUFREQ .EQU 20 ; IN MHZ, USED TO COMPUTE DELAY FACTORS
;
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, DIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
DEFVDA .EQU VDADEV_N8V ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_ANSI ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
DEFVDA .EQU VDADEV_N8V ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220)
DEFEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (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)

8
Source/config_n8_2511.asm

@ -1,16 +1,16 @@
;
;==================================================================================================
; ROMWBW 2.X CONFIGURATION FOR N8 5/8/2012
; ROMWBW 2.X CONFIGURATION FOR N8 2511
;==================================================================================================
;
; BUILD CONFIGURATION OPTIONS
;
CPUFREQ .EQU 20 ; IN MHZ, USED TO COMPUTE DELAY FACTORS
;
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, DIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
DEFVDA .EQU VDADEV_N8V ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_ANSI ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
DEFVDA .EQU VDADEV_N8V ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220)
DEFEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (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)

8
Source/config_n8vem_cvdu.asm

@ -1,16 +1,16 @@
;
;==================================================================================================
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ VDU 5/8/2012
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ COLOR VDU
;==================================================================================================
;
; BUILD CONFIGURATION OPTIONS
;
CPUFREQ .EQU 8 ; IN MHZ, USED TO COMPUTE DELAY FACTORS
;
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, DIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON
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_ANSI ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
DEFVDA .EQU VDADEV_CVDU ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220)
DEFEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (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)

8
Source/config_n8vem_dide.asm

@ -1,16 +1,16 @@
;
;==================================================================================================
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC 5/8/2012
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ DUAL IDE + FLOPPY
;==================================================================================================
;
; BUILD CONFIGURATION OPTIONS
;
CPUFREQ .EQU 8 ; IN MHZ, USED TO COMPUTE DELAY FACTORS
;
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, DIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
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, ...)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (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)

8
Source/config_n8vem_diskio.asm

@ -1,16 +1,16 @@
;
;==================================================================================================
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC 5/8/2012
; ROMWBW 2.X CONFIGURATION FOR N8VEM W/ DISKIO (ORIGINAL V1)
;==================================================================================================
;
; BUILD CONFIGURATION OPTIONS
;
CPUFREQ .EQU 8 ; IN MHZ, USED TO COMPUTE DELAY FACTORS
;
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, DIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
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, ...)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (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)

8
Source/config_n8vem_diskio3.asm

@ -1,16 +1,16 @@
;
;==================================================================================================
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ DISKIO V3 5/8/2012
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ DISKIO V3
;==================================================================================================
;
; BUILD CONFIGURATION OPTIONS
;
CPUFREQ .EQU 8 ; IN MHZ, USED TO COMPUTE DELAY FACTORS
;
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, DIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
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, ...)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (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)

8
Source/config_n8vem_dsd.asm

@ -1,16 +1,16 @@
;
;==================================================================================================
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC 5/8/2012
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ DUAL SD
;==================================================================================================
;
; BUILD CONFIGURATION OPTIONS
;
CPUFREQ .EQU 8 ; IN MHZ, USED TO COMPUTE DELAY FACTORS
;
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, DIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
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, ...)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (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)

8
Source/config_n8vem_ppide.asm

@ -1,16 +1,16 @@
;
;==================================================================================================
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ PPIDE 5/8/2012
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ PPIDE
;==================================================================================================
;
; BUILD CONFIGURATION OPTIONS
;
CPUFREQ .EQU 8 ; IN MHZ, USED TO COMPUTE DELAY FACTORS
;
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, DIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
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, ...)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (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)

8
Source/config_n8vem_ppisd.asm

@ -1,16 +1,16 @@
;
;==================================================================================================
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC 5/8/2012
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ PPISD
;==================================================================================================
;
; BUILD CONFIGURATION OPTIONS
;
CPUFREQ .EQU 8 ; IN MHZ, USED TO COMPUTE DELAY FACTORS
;
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, DIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
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, ...)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (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)

9
Source/config_n8vem_propio.asm

@ -1,16 +1,17 @@
;
;==================================================================================================
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC 5/8/2012
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ PROP IO
;==================================================================================================
;
; BUILD CONFIGURATION OPTIONS
;
CPUFREQ .EQU 8 ; IN MHZ, USED TO COMPUTE DELAY FACTORS
;
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, DIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON
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_UPD7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (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)

8
Source/config_n8vem_simh.asm

@ -1,16 +1,16 @@
;
;==================================================================================================
; ROMWBW 2.X CONFIGURATION FOR SIMH EMULATOR 5/8/2012
; ROMWBW 2.X CONFIGURATION FOR SIMH EMULATOR
;==================================================================================================
;
; BUILD CONFIGURATION OPTIONS
;
CPUFREQ .EQU 8 ; IN MHZ, USED TO COMPUTE DELAY FACTORS
;
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, DIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
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, ...)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!
CLRRAMDISK .EQU CLR_ALWAYS ; CLR_ALWAYS, CLR_NEVER, CLR_AUTO (CLEAR IF INVALID DIR AREA)

8
Source/config_n8vem_std.asm

@ -1,16 +1,16 @@
;
;==================================================================================================
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC 5/8/2012
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC
;==================================================================================================
;
; BUILD CONFIGURATION OPTIONS
;
CPUFREQ .EQU 8 ; IN MHZ, USED TO COMPUTE DELAY FACTORS
;
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, DIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
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, ...)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (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)

8
Source/config_n8vem_vdu.asm

@ -1,16 +1,16 @@
;
;==================================================================================================
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ VDU 5/8/2012
; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ VDU
;==================================================================================================
;
; BUILD CONFIGURATION OPTIONS
;
CPUFREQ .EQU 8 ; IN MHZ, USED TO COMPUTE DELAY FACTORS
;
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, DIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
DEFVDA .EQU VDADEV_VDU ; DEFAULT VDA (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_UPD7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_ANSI ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
DEFVDA .EQU VDADEV_VDU ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220)
DEFEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (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)

8
Source/config_zeta_ppp.asm

@ -1,16 +1,16 @@
;
;==================================================================================================
; ROMWBW 2.X CONFIGURATION FOR ZETA W/ PPP 5/8/2012
; ROMWBW 2.X CONFIGURATION FOR ZETA W/ PARPORTPROP
;==================================================================================================
;
; BUILD CONFIGURATION OPTIONS
;
CPUFREQ .EQU 20 ; IN MHZ, USED TO COMPUTE DELAY FACTORS
;
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, DIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON
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_UPD7220, VDADEV_N8V)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (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)

8
Source/config_zeta_std.asm

@ -1,16 +1,16 @@
;
;==================================================================================================
; ROMWBW 2.X CONFIGURATION FOR ZETA 5/8/2012
; ROMWBW 2.X CONFIGURATION FOR ZETA
;==================================================================================================
;
; BUILD CONFIGURATION OPTIONS
;
CPUFREQ .EQU 20 ; IN MHZ, USED TO COMPUTE DELAY FACTORS
;
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, DIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON
ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED)
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, ...)
DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220)
DEFEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (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)

43
Source/cvdu.asm

@ -31,7 +31,10 @@ CVDU_INIT:
LD A,CVDU_STAT
CALL PRTHEXBYTE
;
PRTS(" VDURAM=$")
CALL CVDU_CRTINIT ; SETUP THE CVDU CHIP REGISTERS
CALL PRTDEC
PRTS("KB$")
CALL CVDU_LOADFONT ; LOAD FONT DATA FROM ROM TO CVDU STRORAGE
CVDU_RESET:
@ -278,6 +281,46 @@ CVDU_CRTINIT1:
INC HL ; POINT TO NEXT VALUE
INC C ; POINT TO NEXT REGISTER
DJNZ CVDU_CRTINIT1 ; LOOP
;
; NOW DETERMINE VDU RAM SIZE DYNAMICALLY
; ASSUMES THAT VDU RAM SIZE IS SET FOR 64KB ABOVE
; A. WRITE ZERO TO ADDRESS $0000
; B. WRITE NON-ZERO TO ADDRESS $0100
; C. CHECK THE VALUE IN ADDRESS $0000; IF IT CHANGED,
; 16K DRAM CHIPS INSTALLED; IF NOT, 64K DRAM CHIPS INSTALLED
; IF 16KB RAM DETECTED, ADJUST VDU REGISTERS APPROPRIATELY
;
; WRITE $00 TO VDU RAM LOCATION $0000
LD HL,$0000 ; POINT TO VDU RAM LOC $0000
LD C,18 ; UPDATE ADDRESS REGISTER PAIR
CALL CVDU_WRX ; DO IT
XOR A ; ZERO IN ACCUM
LD C,31 ; DATA REGISTER
CALL CVDU_WR ; WRITE ZERO TO $0000
; WRITE $FF TO VDU RAM LOCATION $0100
LD HL,$0100 ; POINT TO VDU RAM LOC $0100
LD C,18 ; UPDATE ADDRESS REGISTER PAIR
CALL CVDU_WRX ; DO IT
LD A,$FF ; $FF IN ACCUM
LD C,31 ; DATA REGISTER
CALL CVDU_WR ; WRITE ZERO TO $0100
; READ VALUE FROM VDU RAM LOCATION $0000
LD HL,$0000 ; POINT TO VDU RAM LOC $0000
LD C,18 ; UPDATE ADDRESS REGISTER PAIR
CALL CVDU_WRX ; DO IT
LD C,31 ; DATA REGISTER
CALL CVDU_RD ; READ VALUE AT $0000
; CHECK VALUE, IF NOT $00, ADJUST RAM SIZE
OR A ; SET FLAGS
JR NZ,CVDU_CRTINIT2 ; IF NOT ZERO, ADJUST RAM SIZE
LD HL,64 ; RETURN RAMSIZE IN HL
RET ; 64K CHIPS USED, ALL DONE
;
CVDU_CRTINIT2: ; ADJUST FOR 16K RAM SIZE
LD A,$20 ; NEW VALUE
LD C,28 ; FOR REG 28
CALL CVDU_WR ; DO IT
LD HL,16 ; RETURN RAMSIZE IN HL
RET
;
;----------------------------------------------------------------------

4
Source/fd.asm

@ -1094,6 +1094,10 @@ FOP_CMD2: ; START OF LOOP TO SEND NEXT BYTE
FOP_CMD4: ; START OF STATUS LOOP, WAIT FOR FDC TO BE READY FOR BYTE
CALL DELAY ; FDC MAY TAKE UP TO 12us TO UPDATE MSR
IN A,(FDC_MSR) ; READ MAIN STATUS REGISTER
; PUSH AF ; *DEBUG*
; CALL PC_SPACE ; *DEBUG*
; CALL PRTHEXBYTE ; *DEBUG*
; POP AF ; *DEBUG*
AND 0C0H ; ISOLATE RQM/DIO
CP 080H ; LOOKING FOR RQM=1, DIO=0 (FDC READY FOR A BYTE)
JR Z,FOP_CMD6 ; GOOD, GO TO SEND BYTE

43
Source/hbios.asm

@ -67,18 +67,6 @@ INITSYS2:
PUSH DE
PUSH BC
CALL JPHL
; OR A
; JR Z,INITSYS3
; PUSH AF
; CALL PC_SPACE
; POP AF
; CALL PC_LBKT
; CALL PRTHEXBYTE
; CALL PC_RBKT
; JR INITSYS4
;INITSYS3:
; PRTS(" [OK]$")
;INITSYS4:
POP BC
POP DE
DJNZ INITSYS2
@ -177,9 +165,17 @@ HB_INITTBLLEN .EQU (($ - HB_INITTBL) / 2)
;__________________________________________________________________________________________________
;
IDLE:
PUSH AF
PUSH BC
PUSH DE
PUSH HL
#IF (FDENABLE)
CALL FD_IDLE
#ENDIF
POP HL
POP DE
POP BC
POP AF
RET
;
;==================================================================================================
@ -450,10 +446,16 @@ EMU_QRY:
; IS DYNAMICALLY MODIFIED TO POINT TO THE VDA DISPATCHER FOR THE
; CURRENT EMULATION VDA TARGET.
;
; VDA_DISPERR IS FAILSAFE EMULATION DISPATCH ADDRESS WHICH JUST
; CHAINS TO SYSTEM PANIC
;
VDA_DISPERR:
JP PANIC
;
; BELOW IS USED TO INITIALIZE THE EMULATION VDA DISPATCH TARGET
; BASED ON THE DEFAULT VDA.
;
VDA_DISPADR .EQU 0
VDA_DISPADR .EQU VDA_DISPERR
#IF (VDUENABLE & (DEFVDA == VDADEV_VDU))
VDA_DISPADR .SET VDU_DISPVDA
#ENDIF
@ -474,10 +476,11 @@ VDA_DISPADR .SET N8V_DISPVDA
; THE CODE DYNAMICALLY WHEN EMULATION IS INITIALIZED AND
; A NEW VDA TARGET IS SPECIFIED.
;
EMU_VDADISPADR .EQU $ + 1
EMU_VDADISP:
JP VDA_DISPADR
;
EMU_VDADISPADR .EQU $ - 2 ; ADDRESS PORTION OF JP INSTRUCTION ABOVE
;
;==================================================================================================
; VIDEO DISPLAY ADAPTER DEVICE DISPATCHER
;==================================================================================================
@ -579,11 +582,13 @@ SYS_GETVER:
; AN IDLE CONDITION IS DETECTED (WAIT FOR INPUT/OUTPUT)
;
CIO_IDLE:
LD HL,IDLECOUNT ; POINT TO IDLE COUNT
DEC (HL) ; 256 TIMES?
CALL Z,IDLE ; RUN IDLE PROCESS EVERY 256 ITERATIONS
XOR A ; SIGNAL NO CHAR READY
RET ; AND RETURN
PUSH AF ; PRESERVE AF
LD A,(IDLECOUNT) ; GET CURRENT IDLE COUNT
DEC A ; DECREMENT
LD (IDLECOUNT),A ; SAVE UPDATED VALUE
CALL Z,IDLE ; IF ZERO, DO IDLE PROCESSING
POP AF ; RECOVER AF
RET
;
;==================================================================================================
; DEVICE DRIVERS

36
Source/kbd.asm

@ -99,17 +99,8 @@ KBD_INIT:
;__________________________________________________________________________________________________
;
KBD_STAT:
LD A,(KBD_STATUS) ; GET STATUS
AND KBD_KEYRDY ; ISOLATE READY BIT
JR NZ,KBD_STAT3 ; KEY READY, DONE
KBD_STAT2:
CALL Z,KBD_DECODE ; NOT READY, RUN THE DECODING ENGINE
LD A,(KBD_STATUS) ; GET STATUS
AND KBD_KEYRDY ; ISOLATE READ BIT
KBD_STAT3:
RLCA ; ROTATE READY BIT TO LOW ORDER BIT
CALL KBD_DECODE ; CHECK THE KEYBOARD
JP Z,CIO_IDLE ; RET VIA IDLE PROCESSING IF NO KEY
RET
;
;__________________________________________________________________________________________________
@ -120,13 +111,9 @@ KBD_STAT3:
;__________________________________________________________________________________________________
;
KBD_READ:
LD A,(KBD_STATUS) ; GET STATUS
AND KBD_KEYRDY ; ISOLIATE KEY READY BIT
JR NZ,KBD_READ1 ; READY, GO GET THE KEY AND RETURN
CALL KBD_DECODE ; TRY TO GET A KEY
JR KBD_READ ; AND LOOP
CALL KBD_STAT ; KEY READY?
JR Z,KBD_READ ; NOT READY, KEEP TRYING
;
KBD_READ1:
LD A,(KBD_STATE) ; GET STATE
AND $01 ; ISOLATE EXTENDED SCANCODE BIT
RRCA ; ROTATE IT TO HIGH ORDER BIT
@ -251,6 +238,15 @@ KBD_GETDATA1:
RET
;
;__________________________________________________________________________________________________
KBD_GETDATAX:
;
; GET A RAW DATA BYTE FROM KEYBOARD INTERFACE INTO A WITH NOTIMEOUT
;
CALL KBD_IST ; GET INPUT REGISTER STATUS
RET Z ; NOTHING THERE, DONE
JR KBD_GETDATA1 ; GO GET IT
;
;__________________________________________________________________________________________________
; RESET KEYBOARD
;__________________________________________________________________________________________________
;
@ -417,10 +413,8 @@ KBD_DEC0: ; CHECK KEYCODE BUFFER
RET NZ ; ABORT IF KEY IS ALREADY PENDING
KBD_DEC1: ; PROCESS NEXT SCANCODE
CALL KBD_IST ; IS A SCANCODE WAITING?
RET Z ; NOPE, ABORT
CALL KBD_GETDATA ; GET THE SCANCODE
RET Z ; TIMEOUT, RETURN WITH A=0, Z SET
CALL KBD_GETDATAX ; GET THE SCANCODE
RET Z ; NO KEY READY, RETURN WITH A=0, Z SET
LD (KBD_SCANCODE),A ; SAVE SCANCODE
KBD_DEC2: ; DETECT AND HANDLE SPECIAL KEYCODES

147
Source/n8v.asm

@ -6,8 +6,7 @@
;======================================================================
;
; TODO:
; - IMPLEMENT CONSTANTS FOR SCREEN DIMENSIONS
; - IMPLEMENT SET CURSOR STYLE (VDASCS) FUNCTION
; - IMPLEMENT SET CURSOR STYLE (VDASCS) FUNCTION?
; - IMPLEMENT ALTERNATE DISPLAY MODES?
; - IMPLEMENT DYNAMIC READ/WRITE OF CHARACTER BITMAP DATA?
;
@ -21,6 +20,12 @@ N8V_DATREG .EQU N8_BASE + $18 ; READ/WRITE DATA
N8V_ROWS .EQU 24
N8V_COLS .EQU 40
;
; BELOW WAS TUNED FOR N8 AT 18MHZ WITH 3 IO WAIT STATES
; WILL NEED TO BE MODIFIED FOR DIFFERENT ACCESS SPEEDS
; IF YOU SEE SCREEN CORRUPTION, ADJUST THIS!!!
;
#DEFINE N8V_IODELAY NOP \ NOP \ NOP \ NOP \ NOP \ NOP
;
;======================================================================
; N8V DRIVER - INITIALIZATION
;======================================================================
@ -41,6 +46,10 @@ N8V_RESET:
CALL N8V_FILL ; DO IT
LD DE,0 ; ROW = 0, COL = 0
CALL N8V_XY ; SEND CURSOR TO TOP LEFT
XOR A
DEC A
LD (N8V_CURSAV),A
CALL N8V_SETCUR ; SET CURSOR
XOR A ; SIGNAL SUCCESS
RET
@ -130,7 +139,9 @@ N8V_VDASCS:
CALL PANIC ; NOT IMPLEMENTED (YET)
N8V_VDASCP:
CALL N8V_CLRCUR
CALL N8V_XY ; SET CURSOR POSITION
CALL N8V_SETCUR
XOR A ; SIGNAL SUCCESS
RET
@ -143,42 +154,56 @@ N8V_VDASCO:
RET
N8V_VDAWRC:
CALL N8V_CLRCUR ; CURSOR OFF
LD A,E ; CHARACTER TO WRITE GOES IN A
CALL N8V_PUTCHAR ; PUT IT ON THE SCREEN
CALL N8V_SETCUR
XOR A ; SIGNAL SUCCESS
RET
N8V_VDAFIL:
CALL N8V_CLRCUR
LD A,E ; FILL CHARACTER GOES IN A
EX DE,HL ; FILL LENGTH GOES IN DE
CALL N8V_FILL ; DO THE FILL
CALL N8V_SETCUR
XOR A ; SIGNAL SUCCESS
RET
N8V_VDACPY:
CALL N8V_CLRCUR
; LENGTH IN HL, SOURCE ROW/COL IN DE, DEST IS N8V_POS
; BLKCPY USES: HL=SOURCE, DE=DEST, BC=COUNT
PUSH HL ; SAVE LENGTH
CALL N8V_XY2IDX ; ROW/COL IN DE -> SOURCE ADR IN HL
POP BC ; RECOVER LENGTH IN BC
LD DE,(N8V_POS) ; PUT DEST IN DE
JP N8V_BLKCPY ; DO A BLOCK COPY
CALL N8V_BLKCPY ; DO A BLOCK COPY
CALL N8V_SETCUR
XOR A
RET
N8V_VDASCR:
CALL N8V_CLRCUR
N8V_VDASCR0:
LD A,E ; LOAD E INTO A
OR A ; SET FLAGS
RET Z ; IF ZERO, WE ARE DONE
JR Z,N8V_VDASCR2 ; IF ZERO, WE ARE DONE
PUSH DE ; SAVE E
JP M,N8V_VDASCR1 ; E IS NEGATIVE, REVERSE SCROLL
CALL N8V_SCROLL ; SCROLL FORWARD ONE LINE
POP DE ; RECOVER E
DEC E ; DECREMENT IT
JR N8V_VDASCR ; LOOP
JR N8V_VDASCR0 ; LOOP
N8V_VDASCR1:
CALL N8V_RSCROLL ; SCROLL REVERSE ONE LINE
POP DE ; RECOVER E
INC E ; INCREMENT IT
JR N8V_VDASCR ; LOOP
JR N8V_VDASCR0 ; LOOP
N8V_VDASCR2:
CALL N8V_SETCUR
XOR A
RET
;
;======================================================================
; N8V DRIVER - PRIVATE DRIVER FUNCTIONS
@ -191,11 +216,11 @@ N8V_VDASCR1:
;
N8V_SET:
OUT (N8V_CMDREG),A ; WRITE IT
NOP
N8V_IODELAY
LD A,C ; GET THE DESIRED REGISTER
OR $80 ; SET BIT 7
OUT (N8V_CMDREG),A ; SELECT THE DESIRED REGISTER
NOP
N8V_IODELAY
RET
;
;----------------------------------------------------------------------
@ -214,10 +239,10 @@ N8V_WR:
N8V_RD:
LD A,L
OUT (N8V_CMDREG),A
NOP
N8V_IODELAY
LD A,H
OUT (N8V_CMDREG),A
NOP
N8V_IODELAY
RET
;
;----------------------------------------------------------------------
@ -285,6 +310,89 @@ N8V_LOADFONT3:
RET
;
;----------------------------------------------------------------------
; VIRTUAL CURSOR MANAGEMENT
; N8V_SETCUR CONFIGURES AND DISPLAYS CURSOR AT CURRENT CURSOR LOCATION
; N8V_CLRCUR REMOVES THE CURSOR
;
; VIRTUAL CURSOR IS GENERATED BY DYNAMICALLY CHANGING FONT GLYPH
; FOR CHAR 255 TO BE THE INVERSE OF THE GLYPH OF THE CHARACTER UNDER
; THE CURRENT CURSOR POSITION. THE CHARACTER CODE IS THEN SWITCH TO
; THE VALUE 255 AND THE ORIGINAL VALUE IS SAVED. WHEN THE DISPLAY
; NEEDS TO BE CHANGED THE PROCESS IS UNDONE. IT IS ESSENTIAL THAT
; ALL DISPLAY CHANGES BE BRACKETED WITH CALLS TO N8V_CLRCUR PRIOR TO
; CHANGES AND N8V_SETCUR AFTER CHANGES.
;----------------------------------------------------------------------
;
N8V_SETCUR:
PUSH HL ; PRESERVE HL
PUSH DE ; PRESERVE DE
LD HL,(N8V_POS) ; GET CURSOR POSITION
CALL N8V_RD ; SETUP TO READ VDU BUF
IN A,(N8V_DATREG) ; GET REAL CHAR UNDER CURSOR
N8V_IODELAY ; DELAY
PUSH AF ; SAVE THE CHARACTER
CALL N8V_WR ; SETUP TO WRITE TO THE SAME PLACE
LD A,$FF ; REPLACE REAL CHAR WITH 255
OUT (N8V_DATREG),A ; DO IT
N8V_IODELAY ; DELAY
POP AF ; RECOVER THE REAL CHARACTER
LD B,A ; PUT IT IN B
LD A,(N8V_CURSAV) ; GET THE CURRENTLY SAVED CHAR
CP B ; COMPARE TO CURRENT
JR Z,N8V_SETCUR3 ; IF EQUAL, BYPASS EXTRA WORK
LD A,B ; GET REAL CHAR BACK TO A
LD (N8V_CURSAV),A ; SAVE IT
; GET THE GLYPH DATA FOR REAL CHARACTER
LD HL,0 ; ZERO HL
LD L,A ; HL IS NOW RAW CHAR INDEX
LD B,3 ; LEFT SHIFT BY 3 BITS
N8V_SETCUR0: ; MULT BY 8 FOR FONT INDEX
SLA L ; SHIFT LSB INTO CARRY
RL H ; SHFT MSB FROM CARRY
DJNZ N8V_SETCUR0 ; LOOP 3 TIMES
LD DE,$800 ; OFFSET TO START OF FONT TABLE
ADD HL,DE ; ADD TO FONT INDEX
CALL N8V_RD ; SETUP TO READ GLYPH
LD B,8 ; 8 BYTES
LD HL,N8V_BUF ; INTO BUFFER
N8V_SETCUR1: ; READ GLYPH LOOP
IN A,(N8V_DATREG) ; GET NEXT BYTE
N8V_IODELAY ; IO DELAY
LD (HL),A ; SAVE VALUE IN BUF
INC HL ; BUMP BUF POINTER
DJNZ N8V_SETCUR1 ; LOOP FOR 8 BYTES
;
; NOW WRITE INVERTED GLYPH INTO FONT INDEX 255
LD HL,$800 + (255 * 8) ; LOC OF GLPYPH DATA FOR CHAR 255
CALL N8V_WR ; SETUP TO WRITE THE INVERTED GLYPH
LD B,8 ; 8 BYTES PER GLYPH
LD HL,N8V_BUF ; POINT TO BUFFER
N8V_SETCUR2: ; WRITE INVERTED GLYPH LOOP
LD A,(HL) ; GET THE BYTE
INC HL ; BUMP THE BUF POINTER
XOR $FF ; INVERT THE VALUE
OUT (N8V_DATREG),A ; WRITE IT TO VDU
N8V_IODELAY ; IO DELAY
DJNZ N8V_SETCUR2 ; LOOP FOR ALL 8 BYTES OF GLYPH
;
N8V_SETCUR3: ; RESTORE REGISTERS AND RETURN
POP DE ; RECOVER DE
POP HL ; RECOVER HL
RET ; RETURN
;
;
;
N8V_CLRCUR: ; REMOVE VIRTUAL CURSOR FROM SCREEN
PUSH HL ; SAVE HL
LD HL,(N8V_POS) ; POINT TO CURRENT CURSOR POS
CALL N8V_WR ; SET UP TO WRITE TO VDU
LD A,(N8V_CURSAV) ; GET THE REAL CHARACTER
OUT (N8V_DATREG),A ; WRITE IT
N8V_IODELAY ; IO DELAY
POP HL ; RECOVER HL
RET ; RETURN
;
;----------------------------------------------------------------------
; SET CURSOR POSITION TO ROW IN D AND COLUMN IN E
;----------------------------------------------------------------------
;
@ -337,7 +445,7 @@ N8V_FILL:
N8V_FILL1:
LD A,C ; RECOVER CHARACTER TO WRITE
OUT (N8V_DATREG),A
NOP \ NOP
N8V_IODELAY
DEC DE
LD A,D
OR E
@ -362,7 +470,7 @@ N8V_SCROLL0: ; READ LINE THAT IS ONE PAST CURRENT DESTINATION
LD B,N8V_COLS
N8V_SCROLL1:
IN A,(N8V_DATREG)
NOP \ NOP
N8V_IODELAY
LD (DE),A
INC DE
DJNZ N8V_SCROLL1
@ -375,7 +483,7 @@ N8V_SCROLL1:
N8V_SCROLL2:
LD A,(DE)
OUT (N8V_DATREG),A
NOP \ NOP
N8V_IODELAY
INC DE
DJNZ N8V_SCROLL2
;
@ -391,7 +499,7 @@ N8V_SCROLL2:
LD B,N8V_COLS
N8V_SCROLL3:
OUT (N8V_DATREG),A
NOP \ NOP \ NOP \ NOP
N8V_IODELAY
DJNZ N8V_SCROLL3
;
RET
@ -413,7 +521,7 @@ N8V_RSCROLL0: ; READ THE LINE THAT IS ONE PRIOR TO CURRENT DESTINATION
LD B,N8V_COLS ; LOOP FOR EACH COLUMN
N8V_RSCROLL1:
IN A,(N8V_DATREG) ; GET THE CHAR
NOP \ NOP ; RECOVER
N8V_IODELAY ; RECOVER
LD (DE),A ; SAVE IN BUFFER
INC DE ; BUMP BUFFER POINTER
DJNZ N8V_RSCROLL1 ; LOOP THRU ALL COLS
@ -426,7 +534,7 @@ N8V_RSCROLL1:
N8V_RSCROLL2:
LD A,(DE) ; LOAD THE CHAR
OUT (N8V_DATREG),A ; WRITE TO SCREEN
NOP \ NOP ; DELAY
N8V_IODELAY ; DELAY
INC DE ; BUMP BUF POINTER
DJNZ N8V_RSCROLL2 ; LOOP THRU ALL COLS
;
@ -442,7 +550,7 @@ N8V_RSCROLL2:
LD B,N8V_COLS
N8V_RSCROLL3:
OUT (N8V_DATREG),A
NOP \ NOP \ NOP \ NOP
N8V_IODELAY
DJNZ N8V_RSCROLL3
;
RET
@ -463,7 +571,7 @@ N8V_BLKCPY1:
LD B,C
N8V_BLKCPY2:
IN A,(N8V_DATREG) ; GET THE NEXT BYTE
NOP \ NOP ; DELAY
N8V_IODELAY ; DELAY
LD (DE),A ; SAVE IN BUFFER
INC DE ; BUMP BUF PTR
DJNZ N8V_BLKCPY2 ; LOOP AS NEEDED
@ -477,7 +585,7 @@ N8V_BLKCPY2:
N8V_BLKCPY3:
LD A,(DE) ; GET THE CHAR FROM BUFFER
OUT (N8V_DATREG),A ; WRITE TO VDU
NOP \ NOP ; DELAY
N8V_IODELAY ; DELAY
INC DE ; BUMP BUF PTR
DJNZ N8V_BLKCPY3 ; LOOP AS NEEDED
;
@ -488,6 +596,7 @@ N8V_BLKCPY3:
;==================================================================================================
;
N8V_POS .DW 0 ; CURRENT DISPLAY POSITION
N8V_CURSAV .DB 0 ; SAVES ORIGINAL CHARACTER UNDER CURSOR
N8V_BUF .FILL 256,0 ; COPY BUFFER
;
;==================================================================================================

47
Source/ppk.asm

@ -93,28 +93,19 @@ PPK_INIT:
;
; CHECKING THE KEYBOARD REQUIRES "WAITING" FOR A KEY TO BE SENT AND USING A TIMEOUT
; TO DETECT THAT NO KEY IS READY. MANY APPS CALL STATUS REPEATEDLY. IN ORDER TO AVOID
; SLOWING THEM DOWN, WE IGNORE 1/256 OF THE CALLS.
; SLOWING THEM DOWN, WE IGNORE 255/256 OF THE CALLS.
;
PPK_STAT:
LD A,(PPK_STATUS) ; GET STATUS
AND PPK_KEYRDY ; ISOLATE READY BIT
JR NZ,PPK_STAT3 ; KEY READY, DONE
PPK_STAT1:
LD A,(PPK_IDLE) ; GET IDLE COUNT
DEC A ; DECREMENT IT
LD (PPK_IDLE),A ; SAVE IT
JR Z,PPK_STAT2 ; ZERO? OK, DO A REAL KEY CHECK
XOR A ; RETURN KEY NOT READY
RET
PPK_STAT2:
CALL Z,PPK_DECODE ; NOT READY, RUN THE DECODING ENGINE
LD A,(PPK_STATUS) ; GET STATUS
AND PPK_KEYRDY ; ISOLATE READ BIT
PPK_STAT3:
RLCA ; ROTATE READY BIT TO LOW ORDER BIT
JR Z,PPK_STAT1 ; IF ZERO, DO REAL CHECK
XOR A ; SIGNAL NOTHING READY
JP CIO_IDLE ; RETURN VIA IDLE PROCESSING
;
PPK_STAT1:
CALL PPK_DECODE ; CHECK THE KEYBOARD
JP Z,CIO_IDLE ; RET VIA IDLE PROCESSING IF NO KEY
RET
;
;__________________________________________________________________________________________________
@ -125,14 +116,9 @@ PPK_STAT3:
;__________________________________________________________________________________________________
;
PPK_READ:
; CALL PPK_STAT ; CHECK TO SEE IF KEY READY
LD A,(PPK_STATUS) ; GET STATUS
AND PPK_KEYRDY ; ISOLIATE KEY READY BIT
JR NZ,PPK_READ1 ; READY, GO GET THE KEY AND RETURN
CALL PPK_DECODE ; TRY TO GET A KEY
JR PPK_READ ; AND LOOP
CALL PPK_STAT ; KEY READY?
JR Z,PPK_READ ; NOT READY, KEEP TRYING
;
PPK_READ1:
LD A,(PPK_STATE) ; GET STATE
AND $01 ; ISOLATE EXTENDED SCANCODE BIT
RRCA ; ROTATE IT TO HIGH ORDER BIT
@ -205,6 +191,15 @@ PPK_GETDATA2:
RET
;
;__________________________________________________________________________________________________
PPK_GETDATAX:
;
; GET A RAW DATA BYTE FROM KEYBOARD INTERFACE INTO A WITH NOTIMEOUT
; IN THE CASE OF PPK, THERE IS NO QUICK WAY TO CHECK FOR A KEY WAITING,
; SO WE JUST CHAIN TO GETDATA
;
JR PPK_GETDATA ; CHAIN TO GETDATA
;
;__________________________________________________________________________________________________
PPK_PUTDATA:
;
; PUT A RAW BYTE FROM A TO THE KEYBOARD INTERFACE
@ -519,8 +514,8 @@ PPK_DEC0: ; CHECK KEYCODE BUFFER
RET NZ ; ABORT IF KEY IS ALREADY PENDING
PPK_DEC1: ; PROCESS NEXT SCANCODE
CALL PPK_GETDATA ; GET THE SCANCODE
RET Z ; TIMEOUT, RETURN WITH A=0, Z SET
CALL PPK_GETDATAX ; GET THE SCANCODE
RET Z ; NO KEY READY, RETURN WITH A=0, Z SET
LD (PPK_SCANCODE),A ; SAVE SCANCODE
PPK_DEC2: ; DETECT AND HANDLE SPECIAL KEYCODES

6
Source/prp.asm

@ -56,7 +56,8 @@ PRPCON_IST:
AND PRPCON_KBDRDY | PRPCON_BUSY ; ISOLATE KBDRDY AND BUSY
SUB PRPCON_KBDRDY ; KBD RDY BUT NOT BUSY?
JR Z,PRPCON_IST1 ; YES, GO TO READY LOGIC
JP CIO_IDLE
XOR A ; SIGNAL NO CHARS WAITING
JP CIO_IDLE ; RETURN VIA IDLE PROCESSING
PRPCON_IST1:
DEC A ; SET A=$FF TO SIGNAL READY
RET ; RETURN
@ -75,7 +76,8 @@ PRPCON_OST:
AND PRPCON_DSPRDY | PRPCON_BUSY ; ISOLATE DSPRDY AND BUSY
SUB PRPCON_DSPRDY ; DSP RDY BUT NOT BUSY?
JR Z,PRPCON_OST1 ; YES, GO TO READY LOGIC
JP CIO_IDLE
XOR A ; SIGNAL NO CHARS WAITING
JP CIO_IDLE ; RETURN VIA IDLE PROCESSING
PRPCON_OST1:
DEC A ; SET A=$FF TO SIGNAL READY
RET ; RETURN

2
Source/uart.asm

@ -105,8 +105,6 @@ UART_INIT:
LD HL,BAUDRATE % 100
CALL PRTDEC
CALL PC_SPACE
LD A,80H
OUT (SIO_LCR),A ; DLAB ON
LD A,UART0_DIV

2
Source/util.asm

@ -283,6 +283,8 @@ PANIC:
RST 38
HALT
JP 0
;
;==================================================================================================

4
Source/ver.inc

@ -1,6 +1,6 @@
#DEFINE RMJ 2
#DEFINE RMN 5
#DEFINE RUP 0
#DEFINE RTP 6
#DEFINE BIOSVER "2.5 - Beta 6"
#DEFINE RTP 7
#DEFINE BIOSVER "2.5 - Beta 7"
#DEFINE REVISION 412

Loading…
Cancel
Save