From 322c08353152f8b2acb6e5232dee9a42b9e1d976 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Fri, 29 Oct 2021 11:11:05 -0700 Subject: [PATCH] 8242 Support for TMS Driver - Added TMSMODE_RCKBD to support an 8242 keyboard combined with TMS video. - Worked around a syntax issue from uz80as in rz.asm. - Improved mechanism to handle forcing a UART detection for SIMH. --- Source/Apps/Test/rzsz/rz.asm | 2 +- Source/HBIOS/Config/RCZ80_std.asm | 3 +- Source/HBIOS/Config/SBC_simh.asm | 2 + Source/HBIOS/cfg_dyno.asm | 1 + Source/HBIOS/cfg_ezz80.asm | 6 ++ Source/HBIOS/cfg_master.asm | 5 +- Source/HBIOS/cfg_mbc.asm | 3 +- Source/HBIOS/cfg_mk4.asm | 3 +- Source/HBIOS/cfg_n8.asm | 3 +- Source/HBIOS/cfg_rcz180.asm | 7 +- Source/HBIOS/cfg_rcz280.asm | 7 +- Source/HBIOS/cfg_rcz80.asm | 7 +- Source/HBIOS/cfg_sbc.asm | 3 +- Source/HBIOS/cfg_scz180.asm | 7 +- Source/HBIOS/cfg_zeta.asm | 2 + Source/HBIOS/cfg_zeta2.asm | 2 + Source/HBIOS/hbios.asm | 4 +- Source/HBIOS/std.asm | 1 + Source/HBIOS/tms.asm | 62 ++++++++++------ Source/HBIOS/uart.asm | 9 ++- Source/Images/d_bp/u0/ramfiles.txt | 4 +- Source/Images/d_bp/u0/suportww.tag | 35 --------- Source/Images/d_bp/u0/support.lbr | Bin 0 -> 75392 bytes Source/Images/d_bp/u0/support.txt | 110 ++++++++++++++++------------- Source/ver.inc | 2 +- Source/ver.lib | 2 +- 26 files changed, 167 insertions(+), 125 deletions(-) delete mode 100644 Source/Images/d_bp/u0/suportww.tag create mode 100644 Source/Images/d_bp/u0/support.lbr diff --git a/Source/Apps/Test/rzsz/rz.asm b/Source/Apps/Test/rzsz/rz.asm index 31eb5241..02f332cb 100644 --- a/Source/Apps/Test/rzsz/rz.asm +++ b/Source/Apps/Test/rzsz/rz.asm @@ -1154,7 +1154,7 @@ loc_0_7ED: PUSH AF word_0_7F0: .EQU $+2 LD IY,289DH LD IX,2899H - XOR (IX) + XOR (IX+0) LD H,0 LD L,A ADD HL,HL diff --git a/Source/HBIOS/Config/RCZ80_std.asm b/Source/HBIOS/Config/RCZ80_std.asm index bca27ade..812942da 100644 --- a/Source/HBIOS/Config/RCZ80_std.asm +++ b/Source/HBIOS/Config/RCZ80_std.asm @@ -37,6 +37,7 @@ SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) TMSMODE .SET TMSMODE_RCV9958 ; TMS: DRIVER MODE: TMSMODE_[RC/RCV9958] +MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) ; AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER ; @@ -50,5 +51,3 @@ PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM) PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM) ; RP5RTCENABLE .SET FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM) -; -MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) diff --git a/Source/HBIOS/Config/SBC_simh.asm b/Source/HBIOS/Config/SBC_simh.asm index fa3e8cdd..1daa6fd6 100644 --- a/Source/HBIOS/Config/SBC_simh.asm +++ b/Source/HBIOS/Config/SBC_simh.asm @@ -36,3 +36,5 @@ SIMRTCENABLE .SET TRUE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DSRTCENABLE .SET FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM) ; HDSKENABLE .SET TRUE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM) +; +UARTSBCFORCE .SET TRUE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH) diff --git a/Source/HBIOS/cfg_dyno.asm b/Source/HBIOS/cfg_dyno.asm index 5fea23d9..f2c034cc 100644 --- a/Source/HBIOS/cfg_dyno.asm +++ b/Source/HBIOS/cfg_dyno.asm @@ -116,6 +116,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) +TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) ; diff --git a/Source/HBIOS/cfg_ezz80.asm b/Source/HBIOS/cfg_ezz80.asm index 8546fe26..bef8fe9a 100644 --- a/Source/HBIOS/cfg_ezz80.asm +++ b/Source/HBIOS/cfg_ezz80.asm @@ -76,6 +76,10 @@ BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI] ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +PPKTRACE .EQU 1 ; PPK DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +KBDTRACE .EQU 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE] +KBDKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE] MKYENABLE .EQU FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) MKYKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE] ; @@ -110,6 +114,7 @@ UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3 UARTCFG .EQU DEFSERCFG | SER_RTS ; UART: LINE CONFIG FOR UART PORTS UARTSBC .EQU FALSE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART +UARTSBCFORCE .EQU FALSE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH) UARTCAS .EQU FALSE ; UART: AUTO-DETECT ECB CASSETTE UART UARTMFP .EQU FALSE ; UART: AUTO-DETECT MF/PIC UART UART4 .EQU FALSE ; UART: AUTO-DETECT 4UART UART @@ -148,6 +153,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) +TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) ; diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index da5f828b..ebbc1b1a 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -109,7 +109,7 @@ PPKTRACE .EQU 1 ; PPK DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) KBDTRACE .EQU 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE] KBDKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE] -MKYENABLE .EQU FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) +MKYENABLE .EQU FALSE ; MSX 8255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) MKYKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE] ; DSRTCENABLE .EQU FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM) @@ -144,6 +144,7 @@ UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3 UARTCFG .EQU DEFSERCFG ; UART: LINE CONFIG FOR UART PORTS UARTCASSPD .EQU SER_300_8N1 ; UART: ECB CASSETTE UART DEFAULT SPEED UARTSBC .EQU FALSE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART +UARTSBCFORCE .EQU FALSE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH) UARTCAS .EQU FALSE ; UART: AUTO-DETECT ECB CASSETTE UART UARTMFP .EQU FALSE ; UART: AUTO-DETECT MF/PIC UART UART4 .EQU FALSE ; UART: AUTO-DETECT 4UART UART @@ -202,7 +203,7 @@ VDUSIZ .EQU V80X25 ; VDU: DISPLAY FORMAT [V80X24|V80X25|V80X30] CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG/N8/RC/RCV9958] +TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] diff --git a/Source/HBIOS/cfg_mbc.asm b/Source/HBIOS/cfg_mbc.asm index 4e502fc2..0c5169c3 100644 --- a/Source/HBIOS/cfg_mbc.asm +++ b/Source/HBIOS/cfg_mbc.asm @@ -107,6 +107,7 @@ UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3 UARTCFG .EQU DEFSERCFG ; UART: LINE CONFIG FOR UART PORTS UARTCASSPD .EQU SER_300_8N1 ; UART: ECB CASSETTE UART DEFAULT SPEED UARTSBC .EQU TRUE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART +UARTSBCFORCE .EQU FALSE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH) UARTCAS .EQU FALSE ; UART: AUTO-DETECT ECB CASSETTE UART UARTMFP .EQU FALSE ; UART: AUTO-DETECT MF/PIC UART UART4 .EQU FALSE ; UART: AUTO-DETECT 4UART UART @@ -138,7 +139,7 @@ VDUSIZ .EQU V80X25 ; VDU: DISPLAY FORMAT [V80X24|V80X25|V80X30] CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG/N8/RC/RCV9958] +TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index 837f7420..7c3633fd 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/Source/HBIOS/cfg_mk4.asm @@ -113,6 +113,7 @@ UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3 UARTCFG .EQU DEFSERCFG ; UART: LINE CONFIG FOR UART PORTS UARTCASSPD .EQU SER_300_8N1 ; UART: ECB CASSETTE UART DEFAULT SPEED UARTSBC .EQU FALSE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART +UARTSBCFORCE .EQU FALSE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH) UARTCAS .EQU TRUE ; UART: AUTO-DETECT ECB CASSETTE UART UARTMFP .EQU FALSE ; UART: AUTO-DETECT MF/PIC UART UART4 .EQU TRUE ; UART: AUTO-DETECT 4UART UART @@ -137,7 +138,7 @@ VDUSIZ .EQU V80X25 ; VDU: DISPLAY FORMAT [V80X24|V80X25|V80X30] CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG/N8/RC/RCV9958] +TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index fcb9e4bb..e94d0250 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.asm @@ -115,6 +115,7 @@ UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3 UARTCFG .EQU DEFSERCFG ; UART: LINE CONFIG FOR UART PORTS UARTCASSPD .EQU SER_300_8N1 ; UART: ECB CASSETTE UART DEFAULT SPEED UARTSBC .EQU FALSE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART +UARTSBCFORCE .EQU FALSE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH) UARTCAS .EQU TRUE ; UART: AUTO-DETECT ECB CASSETTE UART UARTMFP .EQU FALSE ; UART: AUTO-DETECT MF/PIC UART UART4 .EQU TRUE ; UART: AUTO-DETECT 4UART UART @@ -139,7 +140,7 @@ VDUSIZ .EQU V80X25 ; VDU: DISPLAY FORMAT [V80X24|V80X25|V80X30] CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM) TMSENABLE .EQU TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_N8 ; TMS: DRIVER MODE: TMSMODE_[SCG/N8/RC/RCV9958] +TMSMODE .EQU TMSMODE_N8 ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] diff --git a/Source/HBIOS/cfg_rcz180.asm b/Source/HBIOS/cfg_rcz180.asm index 04279b9b..08201106 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/Source/HBIOS/cfg_rcz180.asm @@ -78,6 +78,10 @@ BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI] ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +PPKTRACE .EQU 1 ; PPK DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +KBDTRACE .EQU 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE] +KBDKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE] MKYENABLE .EQU FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) MKYKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE] ; @@ -112,6 +116,7 @@ UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3 UARTCFG .EQU DEFSERCFG | SER_RTS ; UART: LINE CONFIG FOR UART PORTS UARTSBC .EQU FALSE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART +UARTSBCFORCE .EQU FALSE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH) UARTCAS .EQU FALSE ; UART: AUTO-DETECT ECB CASSETTE UART UARTMFP .EQU FALSE ; UART: AUTO-DETECT MF/PIC UART UART4 .EQU FALSE ; UART: AUTO-DETECT 4UART UART @@ -154,7 +159,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_RC ; TMS: DRIVER MODE: TMSMODE_[SCG/N8/RC/RCV9958] +TMSMODE .EQU TMSMODE_RC ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) ; diff --git a/Source/HBIOS/cfg_rcz280.asm b/Source/HBIOS/cfg_rcz280.asm index 920d1ece..a05f2971 100644 --- a/Source/HBIOS/cfg_rcz280.asm +++ b/Source/HBIOS/cfg_rcz280.asm @@ -83,6 +83,10 @@ BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI] ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +PPKTRACE .EQU 1 ; PPK DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +KBDTRACE .EQU 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE] +KBDKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE] MKYENABLE .EQU FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) MKYKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE] ; @@ -117,6 +121,7 @@ UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3 UARTCFG .EQU DEFSERCFG | SER_RTS ; UART: LINE CONFIG FOR UART PORTS UARTSBC .EQU FALSE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART +UARTSBCFORCE .EQU FALSE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH) UARTCAS .EQU FALSE ; UART: AUTO-DETECT ECB CASSETTE UART UARTMFP .EQU FALSE ; UART: AUTO-DETECT MF/PIC UART UART4 .EQU FALSE ; UART: AUTO-DETECT 4UART UART @@ -170,7 +175,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_RC ; TMS: DRIVER MODE: TMSMODE_[SCG/N8/RC/RCV9958] +TMSMODE .EQU TMSMODE_RC ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) ; diff --git a/Source/HBIOS/cfg_rcz80.asm b/Source/HBIOS/cfg_rcz80.asm index 9dcdfa42..31221bc9 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/Source/HBIOS/cfg_rcz80.asm @@ -77,6 +77,10 @@ BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI] ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +PPKTRACE .EQU 1 ; PPK DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +KBDTRACE .EQU 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE] +KBDKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE] MKYENABLE .EQU FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) MKYKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE] ; @@ -111,6 +115,7 @@ UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3 UARTCFG .EQU DEFSERCFG | SER_RTS ; UART: LINE CONFIG FOR UART PORTS UARTSBC .EQU FALSE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART +UARTSBCFORCE .EQU FALSE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH) UARTCAS .EQU FALSE ; UART: AUTO-DETECT ECB CASSETTE UART UARTMFP .EQU FALSE ; UART: AUTO-DETECT MF/PIC UART UART4 .EQU FALSE ; UART: AUTO-DETECT 4UART UART @@ -159,7 +164,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_RC ; TMS: DRIVER MODE: TMSMODE_[SCG/N8/RC/RCV9958] +TMSMODE .EQU TMSMODE_RC ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) ; diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index aaa252f4..dd683a31 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -107,6 +107,7 @@ UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3 UARTCFG .EQU DEFSERCFG ; UART: LINE CONFIG FOR UART PORTS UARTCASSPD .EQU SER_300_8N1 ; UART: ECB CASSETTE UART DEFAULT SPEED UARTSBC .EQU TRUE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART +UARTSBCFORCE .EQU FALSE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH) UARTCAS .EQU TRUE ; UART: AUTO-DETECT ECB CASSETTE UART UARTMFP .EQU TRUE ; UART: AUTO-DETECT MF/PIC UART UART4 .EQU TRUE ; UART: AUTO-DETECT 4UART UART @@ -138,7 +139,7 @@ VDUSIZ .EQU V80X25 ; VDU: DISPLAY FORMAT [V80X24|V80X25|V80X30] CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG/N8/RC/RCV9958] +TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] diff --git a/Source/HBIOS/cfg_scz180.asm b/Source/HBIOS/cfg_scz180.asm index ba0d5b9d..226ed9bc 100644 --- a/Source/HBIOS/cfg_scz180.asm +++ b/Source/HBIOS/cfg_scz180.asm @@ -73,6 +73,10 @@ BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI] ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +PPKTRACE .EQU 1 ; PPK DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +KBDTRACE .EQU 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE] +KBDKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE] MKYENABLE .EQU FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) MKYKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE] ; @@ -107,6 +111,7 @@ UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3 UARTCFG .EQU DEFSERCFG | SER_RTS ; UART: LINE CONFIG FOR UART PORTS UARTSBC .EQU FALSE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART +UARTSBCFORCE .EQU FALSE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH) UARTCAS .EQU FALSE ; UART: AUTO-DETECT ECB CASSETTE UART UARTMFP .EQU FALSE ; UART: AUTO-DETECT MF/PIC UART UART4 .EQU FALSE ; UART: AUTO-DETECT 4UART UART @@ -149,7 +154,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_RC ; TMS: DRIVER MODE: TMSMODE_[SCG/N8/RC/RCV9958] +TMSMODE .EQU TMSMODE_RC ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) ; diff --git a/Source/HBIOS/cfg_zeta.asm b/Source/HBIOS/cfg_zeta.asm index 47fe482c..fcf3aadd 100644 --- a/Source/HBIOS/cfg_zeta.asm +++ b/Source/HBIOS/cfg_zeta.asm @@ -94,6 +94,7 @@ UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3 UARTCFG .EQU DEFSERCFG ; UART: LINE CONFIG FOR UART PORTS UARTCASSPD .EQU SER_300_8N1 ; UART: ECB CASSETTE UART DEFAULT SPEED UARTSBC .EQU TRUE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART +UARTSBCFORCE .EQU FALSE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH) UARTCAS .EQU FALSE ; UART: AUTO-DETECT ECB CASSETTE UART UARTMFP .EQU FALSE ; UART: AUTO-DETECT MF/PIC UART UART4 .EQU FALSE ; UART: AUTO-DETECT 4UART UART @@ -113,6 +114,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) +TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) ; diff --git a/Source/HBIOS/cfg_zeta2.asm b/Source/HBIOS/cfg_zeta2.asm index b14d62b1..ab96ffec 100644 --- a/Source/HBIOS/cfg_zeta2.asm +++ b/Source/HBIOS/cfg_zeta2.asm @@ -105,6 +105,7 @@ UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3 UARTCFG .EQU DEFSERCFG ; UART: LINE CONFIG FOR UART PORTS UARTCASSPD .EQU SER_300_8N1 ; UART: ECB CASSETTE UART DEFAULT SPEED UARTSBC .EQU TRUE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART +UARTSBCFORCE .EQU FALSE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH) UARTCAS .EQU FALSE ; UART: AUTO-DETECT ECB CASSETTE UART UARTMFP .EQU FALSE ; UART: AUTO-DETECT MF/PIC UART UART4 .EQU FALSE ; UART: AUTO-DETECT 4UART UART @@ -124,6 +125,7 @@ VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) +TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) ; diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 924b3f0d..bfda83a0 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -5028,7 +5028,7 @@ SIZ_FONTS .EQU $ - ORG_FONTS .ECHO SIZ_FONTS .ECHO " bytes.\n" ; -#IF (CVDUENABLE | VGAENABLE) +#IF (CVDUENABLE | VGAENABLE) | (TMSENABLE & (TMSMODE == TMSMODE_RCKBD)) ORG_KBD .EQU $ #INCLUDE "kbd.asm" SIZ_KBD .EQU $ - ORG_KBD @@ -5037,7 +5037,7 @@ SIZ_KBD .EQU $ - ORG_KBD .ECHO " bytes.\n" #ENDIF ; -#IF (VDUENABLE | (TMSENABLE & (PLATFORM == PLT_N8))) +#IF (VDUENABLE | (TMSENABLE & (TMSMODE == TMSMODE_N8))) ORG_PPK .EQU $ #INCLUDE "ppk.asm" SIZ_PPK .EQU $ - ORG_PPK diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index 73ac08c7..82a3be91 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -217,6 +217,7 @@ TMSMODE_SCG .EQU 1 ; SCG ECB BOARD TMSMODE_N8 .EQU 2 ; N8 BUILT-IN VIDEO TMSMODE_RC .EQU 3 ; RC2014 TMS9918 VIDEO BOARD TMSMODE_RCV9958 .EQU 4 ; RC2014 V9958 VIDEO BOARD +TMSMODE_RCKBD .EQU 5 ; RC2014 TMS9918 + PS2 KEYBOARD ; ; DMA MODE SELECTIONS ; diff --git a/Source/HBIOS/tms.asm b/Source/HBIOS/tms.asm index ab0970fa..2a585634 100644 --- a/Source/HBIOS/tms.asm +++ b/Source/HBIOS/tms.asm @@ -33,11 +33,17 @@ TMS_PPIX .EQU 0 ; PPI CONTROL PORT #ENDIF +#IF (TMSMODE == TMSMODE_RCKBD) +TMS_DATREG .EQU $98 ; READ/WRITE DATA +TMS_CMDREG .EQU $99 ; READ STATUS / WRITE REG SEL +TMS_KBDDATA .EQU $E0 ; KBD CTLR DATA PORT +TMS_KBDST .EQU $E1 ; KBD CTLR STATUS/CMD PORT +#ENDIF + #IF (TMSMODE == TMSMODE_N8) TMS_DATREG .EQU $98 ; READ/WRITE DATA TMS_CMDREG .EQU $99 ; READ STATUS / WRITE REG SEL - TMS_PPIA .EQU $84 ; PPI PORT A TMS_PPIB .EQU $85 ; PPI PORT B TMS_PPIC .EQU $86 ; PPI PORT C @@ -50,7 +56,6 @@ TMS_PPIX .EQU $87 ; PPI CONTROL PORT TMS_DATREG .EQU $98 ; READ/WRITE DATA TMS_CMDREG .EQU $99 ; READ STATUS / WRITE REG SEL TMS_ACR .EQU $9C ; AUX CONTROL REGISTER - TMS_PPIA .EQU 0 ; PPI PORT A TMS_PPIB .EQU 0 ; PPI PORT B TMS_PPIC .EQU 0 ; PPI PORT C @@ -123,6 +128,9 @@ TMS_INIT: #IF (TMSMODE == TMSMODE_RC) PRTS("RC$") #ENDIF +#IF (TMSMODE == TMSMODE_RCKBD) + PRTS("RCKBD$") +#ENDIF #IF (TMSMODE == TMSMODE_RCV9958) PRTS("RC_V9958$") #ENDIF @@ -143,11 +151,13 @@ TMS_INIT1: CALL TMS_LOADFONT ; LOAD FONT DATA FROM ROM TO TMS STRORAGE CALL TMS_VDARES1 #IF (TMSMODE == TMSMODE_N8) - CALL PPK_INIT ; INITIALIZE KEYBOARD DRIVER -#ELSE -#IF MKYENABLE - CALL MKY_INIT + CALL PPK_INIT ; INITIALIZE PPI KEYBOARD DRIVER #ENDIF +#IF (TMSMODE == TMSMODE_RCKBD) + CALL KBD_INIT ; INITIALIZE 8242 KEYBOARD DRIVER +#ENDIF +#IF MKYENABLE + CALL MKY_INIT ; INITIALIZE MKY KEYBOARD DRIVER #ENDIF #IF (INTMODE == 1 & TMSTIMENABLE) @@ -198,16 +208,22 @@ TMS_FNTBL: .DW PPK_FLUSH .DW PPK_READ #ELSE -#IF MKYENABLE - .DW MKY_STAT - .DW MKY_FLUSH - .DW MKY_READ - -#ELSE - .DW TMS_STAT - .DW TMS_FLUSH - .DW TMS_READ -#ENDIF + #IF (TMSMODE == TMSMODE_RCKBD) + .DW KBD_STAT + .DW KBD_FLUSH + .DW KBD_READ + #ELSE + #IF MKYENABLE + .DW MKY_STAT + .DW MKY_FLUSH + .DW MKY_READ + + #ELSE + .DW TMS_STAT + .DW TMS_FLUSH + .DW TMS_READ + #ENDIF + #ENDIF #ENDIF .DW TMS_VDARDC #IF (($ - TMS_FNTBL) != (VDA_FNCNT * 2)) @@ -881,10 +897,16 @@ TMS_BUF .FILL 256,0 ; COPY BUFFER ; TMS_IDAT: - .DB TMS_PPIA - .DB TMS_PPIB - .DB TMS_PPIC - .DB TMS_PPIX +#IF ((TMSMODE == TMSMODE_RC) | (TMSMODE == TMSMODE_RCV9958) | (TMSMODE == TMSMODE_N8) | (TMSMODE == TMSMODE_SCG)) + .DB TMS_PPIA ; PPI PORT A + .DB TMS_PPIB ; PPI PORT B + .DB TMS_PPIC ; PPI PORT C + .DB TMS_PPIX ; PPI CONTROL PORT +#ENDIF +#IF (TMSMODE == TMSMODE_RCKBD) + .DB TMS_KBDST ; 8242 CMD/STATUS PORT + .DB TMS_KBDDATA ; 8242 DATA PORT +#ENDIF TMS_PORTS: .DB TMS_DATREG diff --git a/Source/HBIOS/uart.asm b/Source/HBIOS/uart.asm index 3a67e081..a24de3d0 100644 --- a/Source/HBIOS/uart.asm +++ b/Source/HBIOS/uart.asm @@ -796,10 +796,17 @@ UART_CHIP2: ; PICK BETWEEN 16550A/C JR UART_CHIP_16550C ; IS SET, SO 16550C ; UART_CHIP_NONE: +; +#IF (UARTSBCFORCE) + ; SIMH DOES NOT EMULATE A UART WELL ENOUGH TO BE DETECTED, SO + ; THIS BIT OF CODE CAN BE ENABLED TO FORCE THE PRIMARY SBC + ; UART TO BE HANDLED AS AN 8250. LD A,(IY+2) ; BASE IO PORT CP UARTSBASE ; IS THIS PRIMARY SBC PORT? JR Z,UART_CHIP_8250 ; SPECIAL CASE FOR PRIMARY UART! - LD A,UART_NONE ; IF SO, TREAT AS 8250 NO MATTER WHAT +#ENDIF +; + LD A,UART_NONE ; NO UART DETECTED AT THIS PORT RET ; UART_CHIP_8250: diff --git a/Source/Images/d_bp/u0/ramfiles.txt b/Source/Images/d_bp/u0/ramfiles.txt index 9c476470..90495ad2 100644 --- a/Source/Images/d_bp/u0/ramfiles.txt +++ b/Source/Images/d_bp/u0/ramfiles.txt @@ -3,7 +3,7 @@ BIN:D.COM BIN:ZXD.COM BIN:IF.COM BIN:QL.COM -bin:SD.COM +BIN:SD.COM BIN:CL.COM BIN:LU.COM - \ No newline at end of file + \ No newline at end of file diff --git a/Source/Images/d_bp/u0/suportww.tag b/Source/Images/d_bp/u0/suportww.tag deleted file mode 100644 index 8b045548..00000000 --- a/Source/Images/d_bp/u0/suportww.tag +++ /dev/null @@ -1,35 +0,0 @@ -BPBIO NDR -BPBIOZ33NDR -BPCNFG COM -EASE COM -EASE HLP -FCP-4 ZRL -FCP-4T ZRL -FILEATTRCOM -HELPLSH COM -IF COM -JETLDR COM -LDTIME7 COM -LDTIME9 COM -LDTIMEC COM -LDTIMEE COM -LSH COM -LSHF COM -LSHF VAR -MYTERM Z3T -NZDEC23DZ3T -PUTDS COM -RAMFILESTXT -RCOPY COM -RCP-16H ZRL -SUPORTWWTAG -SUPPORT TXT -Z33N ZEX -Z33T ZEX -ZEX COM -ZPATH COM -ZSCFG2 COM -ZSTF ZEX -ZSTN ZEX -ZSTT ZEX - \ No newline at end of file diff --git a/Source/Images/d_bp/u0/support.lbr b/Source/Images/d_bp/u0/support.lbr new file mode 100644 index 0000000000000000000000000000000000000000..04760f138122566f56f4e4b9154018ac47ca661e GIT binary patch literal 75392 zcmeFZWpo=$v#2dIGsVnyOflOr$;`~m5HnLuvK=!sLmV?RGcz+YJ7&h4z2E(wbI)0K z-5+(5>gukp(x^u@0+9S?0RRvHz8ir5T7(pYB<24cBd4i^000M^QQ7kJ z@(IWQTK_rhZ?474`iCO{zyMzjxqw{2pAA17{(}q4iHVbt2y4nB1Ec^D!{PXXKwq7$ zx_`K+pt9&+UHHQ_07L*nrE27AWD-9TzyHQ1G!oKgMCor{1z-atE`yI+Lqcs z{Eut@(f*hJXzYSP0s{8G{w3e`AMI<2YW&Ur^zZPGeL8POQAbgIgM5SjEw3P`^4ARi z;UwTl09VB}^fvVW&3;=$9eyhKl;VMApmP; z-hcEP2>qviWtG4E;}4evhXg1}k^J#5K$}6-zr;WO7XH`MKP~>3m;aytr-A;9Vg7mZ z|FwNw-~Rpp{URr#1cnPs4aY_b2Z1h03W-Hd0U#j(K=tpmW^{D&w9dz&4H#~_ng%#j z8*%C$3zZKj=TDxx=8HHk-f=a~?{Ik%WwY#wGplP?PZb|+_c^hn(-amz9y{a>CGv`+ z$HRb+%-x|MtacJvRR%cRI}`CI?Aj^Q4-YY3Ylm#WS|$xW>PEBZXux%c?8U}Z8M3aj z(eBOgvHubx@|N7p3Hq5l^+i}-7AzT(6pe!vmWE7|6c(3^>u>F{vqrD!8zAHEz_7Mvr__~$ zO=oWIQo43vdxnN|=dE&hYgwuKlRaIz=#k28Q`+!t?j)JZd>`fygl5BukvH$u754%{ zIq%$Y|7o3Z^+3VUmK76nqsh+i@rK3pFo((fsjDedw18dqepttn=c{-r~S)F)ZKF9$voJna}Yky zXzt;^lSe!Q@SNd=i137qlsqELTjqSiPXr6-RP+ytYl&YtJy}8~jE@r4(GwdZ?7SfVjhai?<>3$X@P0Hb~6>z^sC$H>oX;9h%IzsNgIQ*1OH>h-6 zNP@j`BXZq8wIwWtVLzU%vh9)chp8`BSwr<}KIp3a_VG!SudUR4xxw2+b9-gp+l%}$yZ%wK(Zqzm zt&vNLa4JPpbrXt^_CaPtFrUVa!eDBfS!3+ zqBfO!E5%RT>`9`19;Zk5>WigZ$&0VPCmmGIL({zxhud3?c0XO~Ppj*dbMil)M29mhTj83{tG8~3WQoBxd?@bcm`odO1C znwDI!@RT6$4QY+SkZiHqz+a%!yxUsf*Ln5?W4h8kNxqojqb<%^q!Fvq9iR`5TByu& z0~fVcw}_vALaTBAJ;7x9KwOt?bjIfT4#l}g{Q*Qw+g>a@Qw@{mF4&&FEld4<(Y% zQzYYl2W}CYk_N1ajCP_M7d@h!Wb}G|9L=A#*f>@XGlM&qw8?di5#YC%DI1E<6K7H z8w%s48m=?lK7j!Nm87#tl};AT^<+i-=$T_03lx*_ZUC=NU{o}Ak@j)zX6ET`0L_x~ zmxk2_8z3wfU5ov7zq_o*>7t3#QJ|Yi2S?tA5GMYr_7DE=3tkOi@>^cF6nOHu{p^T(TT9B4yRuoU!e6kcvq!SwcR zUzT}qGH@dm#B4v_E=bcBP(jlaf1JCQt+^|tC+#P_3W+C{{- z>t0+#pQMvsj-2N0-xqSu5IGG;QgRPm2hd=!U)2?CHLv5(Y?sn9qMXwB*k`@ItT{C^ z2ATK30^b-?(nq5!=!iWxgE2G_{i9rq_z z9LVczPqNH7ugV}=WMn|7h4%=Qu@ym@nO`<`vt?Miam?f4Qz%oc;Odyt(zNKpZ5QW> ztn2$tl4dRilakD=->ziiZJD@^0f$QZkwlu0SCw{k95+uCMQGxmQ;ILzkGn;ojtNjg z4WVt7tzgHJ;+bg$=N(sTuaXK>dfc)loQc|dkau6;kS!co=!?uBV~vEgjJVFTB)30W ze#@mY=#?9+RD{+^xa%?`@Y)B~qEJXt)0{zja#MebB={-l<${nR@oJWTZ}M5LP1QtY zfSNBgdJkdO%&hIz&Lx~PW=$DKzF*}Q`FcOH2@$J|pg=sCoUJM&tfqWEL?wX}bZdX# zb#9sZHlPO@h1Y%B8J&srQv_Uc5z{AgirVY2K=QjN2DUuwT!B_jgHf2Z(dFoz%H+6w2Lw zf8qi^o+CSb2irq}t1=o=$@}uJ?@xvS;UXWD#Vxo_fwN2Tzrd6nC z17%w2gKmm)j#pUS8wYUW+5_~a_3~UgzFsgmU5vG_PWx16t#DEJ{QV1=m6=@U&U4py ze#y#%W`e4uN_yvL@Pf^F#U}Q7FsQpK z_KU+!MhPQiluk9|Aw~~KjWjSF1I=cSariqIW z)`5nkaKH<&iQq^qWPM&VcYP|BRm2Zx_{GJe>{80--+`ecr124cp`5~5_&JXi3&olE!G4py zZ~X6}wj0lRQ~P;Y^Ctlzb3(+&8(>@-v^gtasAX^~&QOYD0@U4k;EZQ9=Y~+8oNA%a zQirw*6B*#iLHz4mAHuK`J~%6(ijQ)tEc({FgdiBd2B@g~NP>^X-RRW;&d2W$8%-tr zg5@u!yRVplxJ%GZT%O0er8G;a-ez~_B_-?N`Ji?Zar$R_(hEO`Xab>ZBj`qJ;n`}$ zMhB!1cCDk8Y^#ZMIve8xr>!b0RD1oy@WrE#A<0}+B8P_}Uu-^453a__Tm6mwZeoXs z&7ESqn(dJu9Gp6x8DX=UoSVkhbeuf53t6mVU_O{#^E5jL$LaJ+$a7a$X4Nb|^}tbX z<;W82^uncoxY^~ax6kN9F^Vq|>|NJM%Dff9ZnKzCzAzmTn7l<;Whg3XdWsql!Tpwd zNAn0Hd9(KxWujAd-OcmcDN2*_UQq@96PYe;Nmh`VSD;Dl&GMAlb}rc3(qaU0W~)i( zt6u&~t?1hq@8sy#a%eZN28LawaC_2(EvD^}OBDiQ+=FXRTFZGOGc=&RG5LX98ZOqdzH4AXBKDfGg^#p2|W5^Z> zl{w9@7~ieu9@9Dk@Qn@?p~{FRy!;BMb-g7H@y|&F)$3j_Sq}STRwxmUD0COlh-Nvs z-q`!zm#6{xsbb(Pnjy0ZptQtYg`ce1MDH@xkX={5UA}}xr&_D9Rx^>ZJyTUo`&o>ygC&#JZ&`6(}HE~5EZIKi8x1h{<*ah;RU z7|XgwYs})&)0rBH;J2iA(m}}JK57zs&P=AcPO}>DUBHBR{fY$<%Om;)6V2(4SKceK zhw(@BH&0gLi%$3MXD_{*lJN=m`si>zf`@*6y7}x8e{c zJN@--^2&m>b|~J~`S)vMw7{NL=}njd*3}Y(Jy)Ix!j=mB6?nqaHy)i}iZ4kfq@Y#P zvnJJBp$eI*R@{;@Zerlz9$KXhU{sf2Qq|lO13EVINey|iP23XYWbI^GowwcnusdEb z@P>!a>SOHD;()kt1!3-Ix3yf&<>6N}w>~V_92#!d{yHUMk_XZHuOJmY`0bcXzISwL zApQ;A{Rz8#z!O32lIGNF==A(pFRIKz_Gdnz0(W4PPpiB3f-=v1S3}7|+jt|x zq&=n>g&Jr^qmCd`uBR`FhY!{+oBFl7bIrXI7%3F558U{gj*PBN!nvwKrpUy7`|#2- z9KLtH=&$D2SXtQg(gEusFDMy4SmpDaa9loA8T+Xxkii7$TSz6HS~YuqUDvl|;EYdY zV{%P+rRrjp=LVxAt0zu7y-UK-308_=)2Tn{x>k{16Hg8MD(k$RsvM0;erKWpBw_N= zBML(m zgcGR_Twk|OFaF#zS0#~JlGf65pc*NwiRRCDZk<#_!y3cSHm$s2&&^+a<*4yE-H1r* zOk=qR?#B6u(*CBeYpZs}?I}pib7JgQ9er7qfnbKn@fKoI#_P_Ts!y&uH48Of8Vc5Qh3GB`NYbH!1i&S3%9=_Vkc09Cxmop!s;{K-UWF5*{@HucoXIoJGu+?UMR-*jW4(I4jIXHswWqY_8@NU!PpwSU zwZ><#8812?k8Y@mMx`PIRfEb+$?%Rt%tLY|sT&J!-+O-9SI@Tt+ekvY7{Sk{z2RY8 zaa+_r1wkZ}2J9>ATQ{OBu=AzL_w5iHnRcsy>su8@QN!y^xLmy^MEl6R#y^dE9> zjR)&GN|o;>VLt@eBM)305v@o&`wiybqE0<^`sMlt*8s}TGnAf6nij(z-old$dANpy z!@zzLmsIf<`NuI3Kr6jECX7wYa^{eg@&KV2>%mC8mDD~e{_UlLFZrtOd$Zk_f<)so z+eVWb3G~9{&!^n0ljuB;YNO>)d^O3ldJU!k=pW0PGf7`P9e$T_GHdl74Hp|`Gj^__ z6j8v3Fmiok@G`3L7`IKJB2kC&*{w3$^wh3BJH%Vd=h1sGIrFb z-4mpaFl~`|{u;Pn_2>t=aAypMyTg3s?D!z>UmiSZqyoF(69@d>|IiCNYd~(*zn!$v z2LA$v-lTTH`6+Io@7h_Px!(Iy0c~=Zn5-KEi#2HfM82X2p14aNgU6kRf z+~)$e0^sWca#F=7a{LkW6J)Xn_}lS8NpA3(eXU{WRpIcLk*jwhl%@(1eY`dgeAv$@ zI$TMVX7ou{_tbsk*DLB+!)`uRZiuUIM{w$~+=<-n1sX7JK4qoooD>^Uo|#h}@<$ef zZEjjF>xBcwpOy80GnFPdjohya$)Wk&+#+S`!mMI7kcZ7S%C>@RmD)b?EA8&M*2pGB z6it5EW}N6g{P@JWA5cARC_Op8u#00Z`!!OU7UYus-N({|sKix0dYSI}qmpYgJ{sG) z!@Bd<4)@U14lKThQ~owsAhkzuetU4>Hwhqq_*(0lnIvBW_>8 z-j?{+*iIk&ax;$i(tjnU`ao66=-|8zA-65&YhIP}TQMFJqf}O=g+92*#D}iwubn(u zi!W|p?t6QbZ%eF_E|Lw}pp~65AJ23q(XgirUyVPPZ#tRng_q|HJ9svhPq^zhC_DOz zn@vb~x#3q!#oRxcjU4Xtv}ezrblij#@OXPX1Dja{@trP^{Zj zCr!Fk94OMw!XvKuES_%WZOeb;aGUqgxVou?`-`-iQ0~c>Tb=db(R8ww*G->Nyitiu z#ipa}NTthVz3>@YP>+t5yImuM(EBg6oq$OWN4sz76YF&0ote~P(pZ|h3D4ekw+%ES zL?wYMn|jr{BD8O3m3v-`NfSzs0Oc{J!o}%NB%#@x7lT8@*cVgde@eFLE@xc)bhOYb zVxtScLWgEEGUU|G6ghx(P44ad4x_$(iO8y%b^g;~C1tuD|83k~8#t7|jRc?m45hZE zp0%9@(OG76!fK-#*)t!#YmM1H=A-he4U|RDLNi?CFqqPK zE8|S09Tc9+jB`KT)`3mRza~R4zq?(SQ12MvNWJy|*Wrd=tiuDilZ|nQe#Ra6o32u6R zUctET6~(&jyX`TNi7K>eY%F!9ZZIyTM0{x7*W%ux`!+!@6he>MD8bhB-#%2BX%?4$ zM$tk_3pjqC>HBrvDsVHR!W5kaZ~hB=`#7kkawYRyCk*Il_0HhAx$>OYOTU7n?zCOG z0iXGXv8kw^gP|{>}zEqmWsW|6P;bkpx7CWo2uQ}`oX?f~%%p z&;&nM*e&EwAw1}C!6BHi*f5^34U6X+_7$x>LrYdgt8APvuSKDgDH6Wo@3Y-U6YL~z z2A}7&UK!r?E2>t(=Z*KT*)}^HdCLEYNoJ(xQ{{qE zliSZ=IH`0h&)mq6N)6@jSP@QZkc-tvfSKKRnxRXq9q@pjS?XWibPkYK1(qRRQ(@kn z=PcB$C!c?5fBcd5^0e7dJK0$gRb#UxHynSE^;z&%*t0#`6oukdgj2$EVgQfeu@5Ql@9+^q-+h)!c z9cY7spxDF7Vw@&oJK1iQee2Ti^+fyi5j%G6VSgn>g!-C8+D27qmWk<^Hx5t5ugIJw z;SKWm6#J#*bwd!zD8cyYjiwOA?o(e_94}cD#O;^5%v0hG+CgbMiAr}m^N0_k^d_UL zq)RRQ7O&PLl#&}1RROFbdT@`D{!mW@L~jBgV07-Bz#%hbsAtIfj`xeG9zZ{``^?h! zt93U{4+U=r(VTtWX4PD=?tZV6**>hvddgyg_3dplbTq`MS$7s&hz(+aDn%6f^3Vy#jd*wkrZ`>$K2342G z^wDI=d0MYmkbWe z%_>8Z3Wu;Kig(&5P^Kk&HI&RNrr_XBQC;J?4ZwKLGH+zOYl9!nw09G+?s>yjmB31W zEVH@dfd(lDtPs`>&l)6&*RXg$NI^6Sru)9dFm3{BUZEg39-e+F`@@3oaH5FTRRz8DQF9)B z89NkI`_VZWt$CJHU|@Fk6#VX62)qk39m*x?WTLnbxS-_~#O|X<47QkmA+tWNVnV8pr}pfx^`mJF#C|Jvs9bDLNGZV=P&foapcxxiwPH#)Eb|z*#4|U zYNE{flHLY2m~V-DdxF+*9z%v8wSSLuVjXzV0>6zFVhijeZbdb2iIgyX(YyD+vtq^D zXqCBW=gGxy5m5%*1+oAxM)RE2Nj~QyNJHzxOK8=3Z%itepWC}YWq$?^)<9v={}`>o ztes0#<*Tnv4yplJZO?PTzC#p_90lb*kHG*vG4Ahv#7uPR7ASV7bl7Pe3@R^h&m zdV3Cw?Dlf%cqA+k=y${GMc_%X`R=3f%9??2EtM zlDoA}la0n+?|(D}5Z-?I_&Uq5UgP#%2!9-5QGDG0mfAh-?!zCL|gvQ1v;#bsjGclA`qJ zoBc|3TF#86gb*Iej&WYYMl8m8`XCyD`bO?g>x_%%t}SOeFT3qak$F+G3>YG2ZgKQ$ zJYl?*rCi18b8~w5V~?x`#XOJ9feKk?)w{YwS&e&|`A}t<2Qh!`821@sG2o%Y5=1(K zVf0R=szGU$rP28$FSn2ONabvM`}?GVettVA6wbCl*n0=qw=uy{UB&0_pDLUZ+^^m; z+tjV{iF$HP3pg+q%T^Fd=>zK$cbX+!bKHt`H-rrS(o!(%U=P`?NyyOMpOK4hBMJQ( zjH@bknw#flU=p0y6YKBrIt*(l6w9mW5ZRT-w@b2Gv(IIfTnOYb2;)^)PGpyl;uL|X z%0s^^Z37#|=@@+@1yH+(NLBBir`7lK;}R+rD6< zd0z<%Kj7Wt#>C6Ixu26^sp>=bf}$|}Gy&yKr*LUJGf#poTCro>5jwFp7XAuVF>h?s z=gAb7Gd7#)G?T6^1E*^Mvi{u_05~=qKi&svrFrQU1*$f^A{vrca0-;CS(XjwE{6Gd zE#^IJ`otxT9p=jPjqFoBdNch>!A{`X*1>Uh+KOfrWtvJXTpX*^-2$(b@i@zK{h(}` zY}r5UgU(x~A!GZUzm%zcl7zH)p{tL{+v5A>P@LM_qG<2*&&lDEDwIEhwXBfB6k9lf z4dZ!w#Na*0JRMkXf~#=Exj|aS$y<>S&>Z0|n^x*(wab3N8NP1-4Hm6UIY82=d^#iL zG-(A%uun%`);*p6C9IHzTuBcl9!z{ISl+gsDV_4L57Af|a<$wrLfR8h+|{qK>Q5^$ zvJz9cClg#BvYwVk0jF_puvwd*-<|dtW+hwQYx|sc4VULQwBpWc6q)d#-8MK4T-^~w z_ULEb_3_b`K->o;t}lnQ#i5Pb)=HS9D@P!mGb#(d?fqO%^sCH)Ca#5_MBgr+(t3bm z9K&?-R1&C=K{@fv<-EIaP*mT}zGx51>(H01N>v_JQL?sRtq0#UoOp(z!4PdvNfI%N z3ad%Lt2f@#*vgFXmKe--RNr|Qb(^7jpKQS};>uIF>0An_pSeD}UA&Fu&rJT}p|jmK z7!j3}_Ity1h+0daJx6yd#M46PlP`rDL%!j%;s;Mt*V_;LsH2p`!y0PLoDan_Ju?%b z?43_0Jp=?L{Su4MY}Wn_;l17loyLZ5a0l96jc_EzO#55Em>0dJ7jy4K?{yuWKY}XT z)2^^We1hW(x+Mk5Ii{=S@w5@k#!VsFH7;|Rt!dkWZ4a=%06 z$Ygm-V?F{U52ur>I_{7w3gZUo8ieVq4r1c(3t&Dqj7ukD$1vfcz9Td*Ki>FRfQrSa zDxMdf!XJT@;FdMhY1qNT+g}Z~kw4+)tLyc(bgw!JIyea%UAxVsMByWbu1**RJAlH? zBHyy@lt@O2<;|#zB_!eGZ{)qJZN6bNUQ1+L9u=(~dSm%`HhV+rKtg1u$oY`x%f!C5 zgwrf@!7p~i)sW2^6_n{luwhIPHO9P}lE~`|d)VV*W$%x0&Rm4XKH`~bg(C)!`Q$Nz z$V)ZFBstb)g2ie&M?Xn=R$gcr2+$sUOAWiP?B@h62X3_r=NZ?%zTS~iuj~CReGO!^80EXBv1yy zOwhu3^Xthadp+Pe5;(pzrVQ3Amhj^5iA%DKJH|fMzJmBQ2mA z2Huj1v5?pcH2r+?161NDHlbG_WA>5e4OSI`KR^%k6pQ#-kt%?q;)d6-4qN=@HrkP@ zFmWsimn@;k$0xPFDrG_vmPUs7Iv$n&MEdn*bF$@Q=PL17npV^~vBn3_nc^n@Kyu4S ziIYC6onJ`_fURW=|GfP+<5I5>ms+@hk>BI;J+R=raf4n#D9F5GtwO4yk-E`KB1eQF z&&m8sY-@HjTtMMbekHrnWkxW518sh@cFt_pfE{W)_rM{99mojxkaUCi@<}QiTx_YP z?iEz;uC28*=_onL))~bZWXls^1PY_Auu-gh8$QtH4Pya*O^M5J%Zd7goaSwmC-i(p z;_FLHMY9}{>0(mbK^Td}!DgcRYCWIZWH zIau2OJOiE?=05#l>h9o8IOK;M-~>1Spg3O%80jztQ3h~=`9CKw{SWMQefui`_wVed z5Xev1aDU}qG5=lrSN0Pl{I%Wpw`gci%on%7tj_%h>jC(UH8&nL<|Hz!qS@&}aQyF`LlOn8BI(8%)GH4&)2fLho82#`knzRF7Bc~6k(qFzp6&8M4Q8U5bE=(e4}-~| z%^~<3&Re&!C0CGTRYv`>FQuub&Gs_GIE8S9N+Pkyp-t0{5 z<`@1Va;F36os$|1gyZ9|lVK5`K;FHB);jc)g{>`4m{V++k;{lb> zsPU2FmRAAP$UIy&B-1yfyHh5-#S7J5zV^1hy72eRyz~6h5 zHJbL&GZt;FSx1t_B>aK`3;pmaf=b&Y6cS4FOyAMcwZH+zrV^{awxX`?J_US1^mSEe zPovviJUdiVPdPI1hv-i|n;%79LHdlPM3rgp`mW=OqJvsCeZLWLKnO?Z6Qur%cVC6Y z#bw^rCx%!w*HUEkD>Prc`%B2@PlLBN`J)~r@4b9qDCJlitHHy`RL+?~T^CHfjFYu# zRI+304w)u)8(k^+KRnrP-tjAc%-L9N8q0<_>4mko6^BHQneVwgB=AZPtv;ZFGcPeY z#%)wqLsHv{PR0F75qm53a9S+&fjfh7r9%u-xY9a7F-~DEAOx-Oe)n6@mqCn1*Csqy z(_JOQe~i70h3WdZOv#3!YkuvjaN)7^c#43$CZE|n8Hgz28wB*Eley+D~}&`qbSUk zE0OAOZVlb(Ude->defqx9JDp5<&BN@!p%IND7;1ScvoG(PM^D!NT4gNh@)fB#^cSg zi(xXlm(Vj*Zll1Z6GYw}tE+4t_|1YMCx?(4`ea_ywnF6HU3DY$BE|3S?bUU4gwR91 z=-KOkz}`T6L^RcwRS!>CrvQ~D^c?#fjN%iXW({UPP|?;|Tf;)cDB1FE#qA%Rk3^o5 zIDc+z2-h5xxfiQ!$L`f&s>DYaTvgEzCzezs$eQ zz9Wfi_nhQe>ac|gC?DNsw5pZstCCrw8P+wp8k*L_e{lCqj^)s+P(8>KJ7YSwaA>VT z3-+6K1JM$L!?GFGxk@W`roEOjyhhQ&d}w3qPScNqQ?lDpv!|dTz1XGqGdqWIx-qDl zY#hKHW?N%GY_nToY!y(lfs>9< zs??Nfq-E{G5+8+MJMDD@jv@RMZk-%(>qK5GvnQ*nMR$!WZxH?VgP13*XU!u&@M*@X z2XY2RL3ZeHWSjHBZm0S^C-eARPhh1*=Cf9AcDPk9LdH4=N=9 zU7Du1-(G>i@Tq8I(>`{Xa?Je&$K99LY|VPltgs-VgMkZqeeV*nGHzU3obE#5Eo01& zOe$3CsEQ)Da;NZ2$$p?9`}ZH%tDiWY@`%SWiRyUKdAt~36^4aZetZlb12+sm{f?YW zipJ5LV|-rG-&rD=N8SvOXBqnNrNRfxBtWE4a(g8E_9>vBDtbbdfm~#2 zPj62U1kY!_E6^Pc6KWu3HSl8D_o_UyhH)=9sWZiI)CxVlAhVq3dUKpMoaYl+#!#z1 z@7~6g@m_@PAed8=k9bSg$*W1f-ZO4`l!{D1^zC55PtN-#p?ZK6s$H^IdRelK$gQFT zVVw-Sw9>Sjb!xAcPj>Bz?suF*^wFi=(%8zh%SOZKG(=mkm-b^FiZW<22c*g@VZ|a3 zQo#~hB5i-_af_^mdlp()Eu}ez4RQG+#-s=>yyAFGCRVx|n z9xK{vpdFLvM2vjD;S6g=$J#-{fcaL_VDqn8(JM43 zI&*@y}!KGL{n)FmGu1c!ZT%)d=jE<6%Q=65GS7b^cc?sbCxu110EE!+O% z`wb{|wc9BRMWrcqNEkg={D!NP zqKa2Vrft(kq_nm6uNO^S@}%|R9Z47$idrhIh+Tap+?>b=P3CmzvkYvl09HEU|!QREDC^Dukv{83lPSf zv0@%NHJxs$)tf5ON{4!5;}Tvsiwb1^Z^`yzc7=gNH(Aw7)poSsCf5?h(Jq?^1Z>))Cs)z z`k?rOVKn9|3GNs2n?RNk188F#s&_&)A@^J@u&junoj!&Kfu$>rPDqXIUl(_8@0OGP zw6nm7s|RY$XDz14X{-H)pFnw4=<1d+5-&u)h$co3hIB5LmI3pX)USxgQ;fB)dGjP$x$0v{6 z7vlPr(I(By!8#@e{Rc_BON;&ax%1h9EO?MN$K|2L zTQsN(`92ru#j2So;-;>1)5@bEzS2n;CIu(WSdXPV#<(7@))7vr0 zKo%kEqFco>6hmi!*~Nup`N=KgLSj3VV7wN(2e!A{M)Xn^^$aOhdMq+-wH)W``OKE)_JiF^1wr=G3*pFu@)dhmk%;Rqi8-Z@q z!GvGbU4)wrktyQ%%zo(6GA+@I$Mlyhr4l*H??LrpXT%mGT#OX4r*eP&0S z5VsK#i_xYn<@758(>ac&jrePhdEN-#{V^x4o9$6F;)C3=EYK?vfL%7uyGA2Bi{j}i zm)uVB{*8}8-kvA+6g~W_y-=1F?I~oG=qX+(QTA{3}}80B*092B%2e57*!#cYxz5$}Wa z!R-99VppLR8=rLX;DXsB0KKR_NdzM)qSV+p$Ys{X z(>{MV;@}@%{N7j1YjxE*H7bE%cNFn}6ORcOY=M%N-f2!V*mA%n#-FS~vVkf!wksp5 z)zP9UxS5p4VI=B>ykC<5y$;G5dXS@TZK(6&v{nn=Lt9lU*t_d9w-?M2QT+P4Pcfls zJw3gnH-jK}M|MVtqs$Jjhg0E#ZDY9mOP}TWv{DKwz8O1b!&jvOW#^VZ(dvxJKw|0F z@W2q;hhoOAo_2{sfp~$VMJ`r`)Q6D5&{@tM@{qn6xI|ju{zGj`W^*(FE*mk#@jhG) z|5_Kpj<2J~_nfs%ceIMHNZI3#5GGH`6OPczir=o_F)+8|J!L?9BYIR_~hRzA^G z-}1U-=Fh65m8PtWC2F4Ox|Hr^M4xpWMw3zt#T44^+SzZ~31Di2iR50p@_peVIfcwD zg`>jRl2Z3OkV#77PTw?=!oSBDqTdctMS+4EM;vheXg^dDCD%I z(!kH8z3j;_SP=~|3bGN}KEH1!aeHgrHP%LBb%l#&eBvz}VKE+hGqBr{t7Z;!myR~) z2c*Vku^OSCvlMuU9w98@;v&7j_ShUxCO?oL9Q#>@v|7gdiN?G>Z8D|D zefZP;fx*h~=-ss8>b z%wD?GGZ2GxvwB(A*ve|Rjr=J_gu}us7OjM zl<}$Pb(OpPnebq8GB6sHS+!Dw%U-K|Vnw-GZ#cRoE+0gssdU%C@-`I8SRpWVT>C2t zG(8u7vAnzz#S6^5!51#zA9)_jENNZvU$9}m7qNBCz1vbY$7Mx#IH=eJdpn$Yt<$*EeGNv~Y{<%7j4NnW1v`izGsGU1B2bVh$1 z2Oy2}s#eJlqS0nWOn-t$&gO>N96l(;Db|4bpxb3Hp4=}dT-H(v1U-LsXsE1~6E#}` zmocROe~O&{8KHmTPvw6LKv+^T(*GWSOKqxWjDH27?$)0Gv}yf20DU4;{!0K>{0Tr6 zg8W0p9EU#vsQbK`Jw<$Tc=ZIT*X|&O7m^-&U}Q{iwYtDMef8{YlNf3&&**6>@eaEr zsg!p^P}Ezkp7gg~R+9NE^cqPE$i{m;H75cN~(Cz=z%! z-6R≷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

Tw#Jn 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 literal 0 HcmV?d00001 diff --git a/Source/Images/d_bp/u0/support.txt b/Source/Images/d_bp/u0/support.txt index 90e7b336..db70c39d 100644 --- a/Source/Images/d_bp/u0/support.txt +++ b/Source/Images/d_bp/u0/support.txt @@ -4,82 +4,92 @@ are used and/or loaded by the startup scripts. Some of the support files are startup ZEX scripts, some are Z3+ segment files, others are Date and Time stamp drivers, some are command line editors and -history shells while others are needed to initialize the RAMDRIVE. +history shells others are needed to initialize the RAMDRIVE as well as help files. The following table shows which files are needed to support each of the ten -BPBIOS variants (BP33N, BP33T, BP33NBNK, BP33TBNK, BP34N, BP34T, BP34NBNK, -BP34TBNK, BP41NBNK & BBP41TBNK). +BPBIOS variants (BP33, BP33BNK, BP34, BP34BNK & BBP41BNK). -Variant Name Z33N* Z33T* Z34N* Z34T* Z41NBNK Z41TBNK -====================================================================== -Z33N.ZEX X -Z33T.ZEX X -ZSTN.ZEX X -ZSTT.ZEX X -ZSTF.ZEX X X -ZPATH.COM X X X X X X -jetldr.com X X X X X X -rcp-16h.zrl X X X X -fcp-4.zrl X X -fcp-4t.zrl X X X X +Variant Name BP33 BP33BNK BP34 BP34BNK BP41BNK +================================================================ +bpbio.ndr X X X bpbioz33.ndr X X -bpbio.ndr X X X X -myterm.z3t X X X X X X -LDTIME9.COM X -LDTIME7.COM X -LDTIMEE.COM X -LDTIMEC.COM X -PUTDS.COM X X X X X X -FILEATTR.COM X X X X X X -RCOPY.COM X X X X X X -RAMFILES.TXT X X X X X X +BPCNFG.COM X X X X X EASE.COM X X -LSH.COM X X X X +EASE.HLP X X +fcp-4.zrl X X +fcp-4t.zrl X X X +RELOG X X X X X +HELPLSH.COM X X X +IF.COM X X X X +jetldr.com X X X X X +LDTIMEC.COM X X X +LSH.COM X X X +LSHF.COM* X X X +LSHF.VAR* X X X +myterm.z3t X X X X X +nzdec23d.z3t X X X X X +PUTDS.COM X X X X X +RAMFILES.TXT X X X X X +RCOPY.COM X X X X X +rcp-16h.zrl X X X X +SAVE.COM X X X X +Z33.ZEX X X +ZEX.COM X X X X X +ZPATH.COM X X X X X +ZSCFG2.COM X +ZSTF.ZEX X +ZST.ZEX X X Instructions: - The support files were "crunched" and stored in the library file -SUPPORT.LBR. Place SUPPORT.LBR on the RAMDRIVE using for example + The support files are "crunched" and stored in the library file +SUPPORT.LBR. Place SUPPORT.LBR on the RAMDRIVE using for example XModem. Use LBREXT with the /U option to extract and uncrunch the files. First extract ZEX.COM while logged onto the A: drive with the following command: - B0:LBREXT SUPPORT C0:ZEX.Z?X /U + B0:LBREXT SUPPORT C0:ZEX.C?M /U Next place all the .COM files on C15: by typing: - B0:LBREXT SUPPORT C15:*.C?M -The remaining files should be placed in C0:. + B0:LBREXT SUPPORT C15:*.C?M /U +The remaining files should be placed on C0:. B0:LBREXT SUPPORT C0:*.Z?X /U B0:LBREXT SUPPORT C0:*.Z?L /U B0:LBREXT SUPPORT C0:*.N?R /U B0:LBREXT SUPPORT C0:*.Z?T /U B0:LBREXT SUPPORT C0:*.T?T /U + B0:LBREXT SUPPORT C0:*.H?P /U Note in all BPBIOS variants that A: is the RAMDRIVE, B: is the ROMDRIVE and C: is the system drive. Hard drive slices occupy C: through N: and floppy drives are O: & P:. A short desciption of each of the support files follows: -Z33N.ZEX - Automatically executed Startup script -Z33T.ZEX - Automatically executed Startup script -ZSTN.ZEX - Automatically executed Startup script -ZSTT.ZEX - Automatically executed Startup script -ZSTF.ZEX - Automatically executed Startup script -ZPATH.COM - Loads the Zsystem & ZSDOS search paths -jetldr.com - Loads Zsystem segments -rcp-16h.zrl - Zsystem Resident Command Processor -fcp-4.zrl - Z33 Flow Control Processor (handles IF, ELSE etc) -fcp-4t.zrl - Z34 & Z41 Flow Control Processor (handles IF, ELSE etc) bpbioz33.ndr - Named Directory Table for Z33 bpbio.ndr - Named Directory Table for Z34 & Z41 +BPCNFG.COM - BPBIOS configuration program +EASE.COM - Command line editor & history shell for Z33* +EASE.HLP - Help file for EASE +fcp-4.zrl - Z33 Flow Control Processor (handles IF, ELSE etc) +fcp-4t.zrl - Z34 & Z41 Flow Control Processor (IF is transient) +RELOG.COM - Enables date stamping on RAM drive. +HELPLSH.COM - Help file for LSH +if.com - Adds tests to fcp-4t +jetldr.com - Loads Zsystem segments +LDTIMEC.COM - Date stamping & clock drivers for z33* & Z34* variants +LSH.COM - Command line editor & history shell for Z34 & Z41 +LSHF.COM - LSH with a fixed length History file (runs faster) +LSHF.VAR - History file for LSHF myterm.z3t - Terminal Capabilities file (defines ESC sequences etc) -LDTIME9.COM - Date stamping & clock drivers for Z33N* variants -LDTIME7.COM - Date stamping & clock drivers for Z33T* variants -LDTIMEE.COM - Date stamping & clock drivers for Z34N* variants -LDTIMEC.COM - Date stamping & clock drivers for Z34T* variants +NZDEC23D.Z3T - VT100 Terminal Capabilities File. PUTDS.COM - Installs date stamping for RAM drive. -FILEATTR.COM - Enables date stamping on RAM drive. -RCOPY.COM - Copies files listed in RAMFILES.TXT to RAMDRIVE RAMFILES.TXT - List of frequently used command (edit to suit) -EASE.COM - Command line editor & history shell for Z33* -LSH.COM - Command line editor & history shell for Z34 & Z41 +RCOPY.COM - Copies files listed in RAMFILES.TXT to RAMDRIVE +rcp-16h.zrl - Zsystem Resident Command Processor +SAVE.COM - Transient save command loads at 8000h +Z33.ZEX - Automatically executed Startup script for Z33 variants +ZEX.COM - Memory resident SUBMIT - executes startup scripts +ZPATH.COM - Loads the Zsystem & ZSDOS search paths +ZSCFG2.COM - Configures ZSDOS 2 +ZSTF.ZEX - Automatically executed Startup script for BP41BNK +ZST.ZEX - Automatically executed Startup script for BP34* -Note that clock & datestamping drivers are builtin to Z41. \ No newline at end of file +Note that clock & datestamping drivers are builtin to Z41. \ No newline at end of file diff --git a/Source/ver.inc b/Source/ver.inc index 2c77bb1e..5797acd2 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 1 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "3.1.1-pre.132" +#DEFINE BIOSVER "3.1.1-pre.133" diff --git a/Source/ver.lib b/Source/ver.lib index d12c7674..c13e585e 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 1 rup equ 1 rtp equ 0 biosver macro - db "3.1.1-pre.132" + db "3.1.1-pre.133" endm