forked from MirrorRepos/RomWBW
Browse Source
- DSKYng now has same features as original DSKY including debug monitor - Added support for MBS LEDs - Elevated MBS to a platform instead of just a sub-config of SBCpatch
33 changed files with 1127 additions and 144 deletions
@ -0,0 +1,231 @@ |
|||
; |
|||
;================================================================================================== |
|||
; ROMWBW 2.X CONFIGURATION DEFAULTS FOR MBC |
|||
;================================================================================================== |
|||
; |
|||
; THIS FILE CONTAINS THE FULL SET OF DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM |
|||
; INDICATED ABOVE. THIS FILE SHOULD *NOT* NORMALLY BE CHANGED. INSTEAD, YOU SHOULD |
|||
; OVERRIDE ANY SETTINGS YOU WANT USING A CONFIGURATION FILE IN THE CONFIG DIRECTORY |
|||
; UNDER THIS DIRECTORY. |
|||
; |
|||
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS |
|||
; FOR THE PLATFORM. |
|||
; |
|||
#DEFINE PLATFORM_NAME "Multi Board Computer" |
|||
; |
|||
PLATFORM .EQU PLT_MBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC] |
|||
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] |
|||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] |
|||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE |
|||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD) |
|||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION |
|||
TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) |
|||
; |
|||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE |
|||
; |
|||
CPUOSC .EQU 8000000 ; CPU OSC FREQ IN MHZ |
|||
INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) |
|||
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) |
|||
; |
|||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) |
|||
RAM_RESERVE .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0) |
|||
ROM_RESERVE .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0) |
|||
MEMMGR .EQU MM_MBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC] |
|||
MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY) |
|||
MPCL_ROM .EQU $7C ; SBC MEM MGR ROM PAGE SELECT REG (WRITE ONLY) |
|||
; |
|||
RTCIO .EQU $70 ; RTC LATCH REGISTER ADR |
|||
; |
|||
KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT |
|||
KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS |
|||
; |
|||
CTCENABLE .EQU FALSE ; ENABLE ZILOG CTC SUPPORT |
|||
CTCDEBUG .EQU FALSE ; ENABLE CTC DRIVER DEBUG OUTPUT |
|||
CTCBASE .EQU $B0 ; CTC BASE I/O ADDRESS |
|||
CTCTIMER .EQU TRUE ; ENABLE CTC PERIODIC TIMER |
|||
CTCMODE .EQU CTCMODE_CTR ; CTC MODE: CTCMODE_[NONE|CTR|TIM16|TIM256] |
|||
CTCPRE .EQU 256 ; PRESCALE CONSTANT (1-256) |
|||
CTCPRECH .EQU 2 ; PRESCALE CHANNEL (0-3) |
|||
CTCTIMCH .EQU 3 ; TIMER CHANNEL (0-3) |
|||
CTCOSC .EQU 614400 ; CTC CLOCK FREQUENCY |
|||
; |
|||
EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION |
|||
; |
|||
SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES |
|||
; |
|||
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] |
|||
; |
|||
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT |
|||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS |
|||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS |
|||
; |
|||
LEDENABLE .EQU TRUE ; ENABLES STATUS LED |
|||
LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC] |
|||
LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS |
|||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED |
|||
; |
|||
DSKYENABLE .EQU FALSE ; ENABLES DSKY |
|||
DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG] |
|||
DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI |
|||
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ) |
|||
; |
|||
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] |
|||
; |
|||
DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM) |
|||
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC] |
|||
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!) |
|||
; |
|||
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM) |
|||
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS |
|||
; |
|||
INTRTCENABLE .EQU FALSE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM) |
|||
; |
|||
RP5RTCENABLE .EQU FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM) |
|||
; |
|||
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT |
|||
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) |
|||
; |
|||
DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) |
|||
DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] |
|||
; |
|||
DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) |
|||
; |
|||
UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM) |
|||
UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ |
|||
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 |
|||
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 |
|||
UARTRC .EQU FALSE ; UART: AUTO-DETECT RC UART |
|||
; |
|||
ASCIENABLE .EQU FALSE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM) |
|||
; |
|||
Z2UENABLE .EQU FALSE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM) |
|||
; |
|||
ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM) |
|||
; |
|||
SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) |
|||
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT |
|||
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED) |
|||
SIOCNT .EQU 1 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP |
|||
SIO0MODE .EQU SIOMODE_ZP ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP] |
|||
SIO0BASE .EQU $B0 ; SIO 0: REGISTERS BASE ADR |
|||
SIO0ACLK .EQU (4915200/8) ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800 |
|||
SIO0ACFG .EQU DEFSERCFG ; SIO 0A: SERIAL LINE CONFIG |
|||
SIO0ACTCC .EQU -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE |
|||
SIO0BCLK .EQU (4915200/8) ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800 |
|||
SIO0BCFG .EQU DEFSERCFG ; SIO 0B: SERIAL LINE CONFIG |
|||
SIO0BCTCC .EQU -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE |
|||
; |
|||
XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG |
|||
; |
|||
VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) |
|||
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] |
|||
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] |
|||
; |
|||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) |
|||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK |
|||
MDRAM .EQU TRUE ; MD: ENABLE RAM DISK |
|||
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
|||
MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM |
|||
; |
|||
; |
|||
FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) |
|||
FDMODE .EQU FDMODE_DIO3 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] |
|||
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2) |
|||
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL) |
|||
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] |
|||
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] |
|||
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS |
|||
; |
|||
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER |
|||
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4) |
|||
; |
|||
IDEENABLE .EQU FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM) |
|||
IDETRACE .EQU 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
|||
IDECNT .EQU 1 ; IDE: NUMBER OF IDE INTERFACES TO DETECT (1-3), 2 DRIVES EACH |
|||
IDE0MODE .EQU IDEMODE_DIO ; IDE 0: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC] |
|||
IDE0BASE .EQU $20 ; IDE 0: IO BASE ADDRESS |
|||
IDE0DATLO .EQU $20 ; IDE 0: DATA LO PORT FOR 16-BIT I/O |
|||
IDE0DATHI .EQU $28 ; IDE 0: DATA HI PORT FOR 16-BIT I/O |
|||
IDE0A8BIT .EQU FALSE ; IDE 0A (MASTER): 8 BIT XFER |
|||
IDE0B8BIT .EQU FALSE ; IDE 0B (MASTER): 8 BIT XFER |
|||
IDE1MODE .EQU IDEMODE_NONE ; IDE 1: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC] |
|||
IDE1BASE .EQU $00 ; IDE 1: IO BASE ADDRESS |
|||
IDE1DATLO .EQU $00 ; IDE 1: DATA LO PORT FOR 16-BIT I/O |
|||
IDE1DATHI .EQU $00 ; IDE 1: DATA HI PORT FOR 16-BIT I/O |
|||
IDE1A8BIT .EQU TRUE ; IDE 1A (MASTER): 8 BIT XFER |
|||
IDE1B8BIT .EQU TRUE ; IDE 1B (MASTER): 8 BIT XFER |
|||
IDE2MODE .EQU IDEMODE_NONE ; IDE 2: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC] |
|||
IDE2BASE .EQU $00 ; IDE 2: IO BASE ADDRESS |
|||
IDE2DATLO .EQU $00 ; IDE 2: DATA LO PORT FOR 16-BIT I/O |
|||
IDE2DATHI .EQU $00 ; IDE 2: DATA HI PORT FOR 16-BIT I/O |
|||
IDE2A8BIT .EQU TRUE ; IDE 2A (MASTER): 8 BIT XFER |
|||
IDE2B8BIT .EQU TRUE ; IDE 2B (MASTER): 8 BIT XFER |
|||
; |
|||
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM) |
|||
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
|||
PPIDECNT .EQU 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP |
|||
PPIDE0BASE .EQU $60 ; PPIDE 0: PPI REGISTERS BASE ADR |
|||
PPIDE0A8BIT .EQU FALSE ; PPIDE 0A (MASTER): 8 BIT XFER |
|||
PPIDE0B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER |
|||
PPIDE1BASE .EQU $20 ; PPIDE 1: PPI REGISTERS BASE ADR |
|||
PPIDE1A8BIT .EQU FALSE ; PPIDE 1A (MASTER): 8 BIT XFER |
|||
PPIDE1B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER |
|||
PPIDE2BASE .EQU $44 ; PPIDE 2: PPI REGISTERS BASE ADR |
|||
PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER |
|||
PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER |
|||
; |
|||
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) |
|||
SDMODE .EQU SDMODE_JUHA ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT] |
|||
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE |
|||
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY |
|||
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
|||
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE |
|||
; |
|||
PRPENABLE .EQU FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM) |
|||
PRPSDENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER SD CARD SUPPORT |
|||
PRPSDTRACE .EQU 1 ; PRP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
|||
PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT |
|||
; |
|||
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM) |
|||
; |
|||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM) |
|||
HDSKTRACE .EQU 1 ; HDSK: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) |
|||
; |
|||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD |
|||
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD |
|||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) |
|||
PIOZBASE .EQU $88 ; PIO: PIO REGISTERS BASE ADR FOR ECB ZP BOARD |
|||
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP |
|||
PIOSBASE .EQU $60 ; PIO: PIO REGISTERS BASE ADR FOR SBC PPI |
|||
; |
|||
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) |
|||
UFBASE .EQU $0C ; UF: REGISTERS BASE ADR |
|||
; |
|||
SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER |
|||
AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER |
|||
SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 |
|||
; |
|||
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER |
|||
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4 |
|||
AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180] |
|||
; |
|||
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) |
|||
@ -0,0 +1,561 @@ |
|||
; |
|||
;================================================================================================== |
|||
; DSKY NEXT GEN ROUTINES |
|||
;================================================================================================== |
|||
; |
|||
; A DSKYNG CAN SHARE A PPI BUS WITH EITHER A PPIDE OR PPISD. |
|||
; |
|||
; LED SEGMENTS (BIT VALUES) |
|||
; |
|||
; +--01--+ |
|||
; 20 02 |
|||
; +--40--+ |
|||
; 10 04 |
|||
; +--08--+ 80 |
|||
; |
|||
; KEY CODE MAP (KEY CODES) --CCCRRR |
|||
; |
|||
; 00 08 10 18 |
|||
; 01 09 11 19 |
|||
; 02 0A 12 1A |
|||
; 03 0B 13 1B |
|||
; 04 0C 14 1C |
|||
; 05 0D 15 1D |
|||
; |
|||
; LED BIT MAP (BIT VALUES) |
|||
; |
|||
; $08 $09 $0A $0B |
|||
; --- --- --- --- |
|||
; 01 01 01 01 |
|||
; 02 02 02 02 |
|||
; 04 04 04 04 |
|||
; 08 08 08 08 |
|||
; 10 10 10 10 |
|||
; 20 20 20 20 |
|||
; |
|||
PPIA .EQU DSKYPPIBASE + 0 ; PORT A |
|||
PPIB .EQU DSKYPPIBASE + 1 ; PORT B |
|||
PPIC .EQU DSKYPPIBASE + 2 ; PORT C |
|||
PPIX .EQU DSKYPPIBASE + 3 ; PPI CONTROL PORT |
|||
; |
|||
DSKY_PPIX_RD: .EQU %10010010 ; PPIX VALUE FOR READS |
|||
DSKY_PPIX_WR: .EQU %10000010 ; PPIX VALUE FOR WRITES |
|||
; |
|||
; PIO CHANNEL C: |
|||
; |
|||
; 7 6 5 4 3 2 1 0 |
|||
; RES /RD /WR CS CS 0 0 A0 |
|||
; |
|||
; SETTING BITS 3 & 4 WILL ASSERT /CS ON 3279 |
|||
; CLEAR BITS 5 OR 6 TO ASSERT READ/WRITE |
|||
; |
|||
DSKY_PPI_IDLE: .EQU %01100000 |
|||
; |
|||
DSKY_CMD_CLR: .EQU %11011111 ; CLEAR (ALL OFF) |
|||
DSKY_CMD_CLRX: .EQU %11010011 ; CLEAR (ALL ON) |
|||
DSKY_CMD_WDSP: .EQU %10010000 ; WRITE DISPLAY RAM |
|||
DSKY_CMD_RDSP: .EQU %01110000 ; READ DISPLAY RAM |
|||
DSKY_CMD_CLK: .EQU %00100000 ; SET CLK PRESCALE |
|||
DSKY_CMD_FIFO: .EQU %01000000 ; READ FIFO |
|||
; |
|||
DSKY_PRESCL: .EQU DSKYOSC/100000 ; PRESCALER |
|||
; |
|||
;__DSKY_INIT_________________________________________________________________________________________ |
|||
; |
|||
; CONFIGURE PARALLEL PORT AND INITIALIZE 8279 |
|||
;____________________________________________________________________________________________________ |
|||
; |
|||
; |
|||
; HARDWARE RESET 8279 BY PULSING RESET LINE |
|||
; |
|||
DSKY_INIT: |
|||
; |
|||
; SETUP PPI |
|||
CALL DSKY_PPIRD |
|||
; INIT 8279 VALUES TO IDLE STATE |
|||
LD A,DSKY_PPI_IDLE |
|||
OUT (PPIC),A |
|||
; PULSE RESET SIGNAL ON 8279 |
|||
SET 7,A |
|||
OUT (PPIC),A |
|||
RES 7,A |
|||
OUT (PPIC),A |
|||
; DONE |
|||
; |
|||
DSKY_REINIT: |
|||
CALL DSKY_PPIIDLE |
|||
; SET CLOCK SCALER TO 20 |
|||
LD A,DSKY_CMD_CLK | DSKY_PRESCL |
|||
CALL DSKY_CMD |
|||
LD A,%00001000 ; dan |
|||
CALL DSKY_CMD |
|||
; FALL THRU |
|||
; |
|||
DSKY_RESET: |
|||
; RESET DSKY |
|||
LD A,DSKY_CMD_CLR |
|||
CALL DSKY_CMD |
|||
RET |
|||
; |
|||
#IFDEF DSKY_KBD |
|||
; |
|||
KY_0 .EQU $00 |
|||
KY_1 .EQU $01 |
|||
KY_2 .EQU $02 |
|||
KY_3 .EQU $03 |
|||
KY_4 .EQU $04 |
|||
KY_5 .EQU $05 |
|||
KY_6 .EQU $06 |
|||
KY_7 .EQU $07 |
|||
KY_8 .EQU $08 |
|||
KY_9 .EQU $09 |
|||
KY_A .EQU $0A |
|||
KY_B .EQU $0B |
|||
KY_C .EQU $0C |
|||
KY_D .EQU $0D |
|||
KY_E .EQU $0E |
|||
KY_F .EQU $0F |
|||
KY_FW .EQU $10 ; FORWARD |
|||
KY_BK .EQU $11 ; BACKWARD |
|||
KY_CL .EQU $12 ; CLEAR |
|||
KY_EN .EQU $13 ; ENTER |
|||
KY_DE .EQU $14 ; DEPOSIT |
|||
KY_EX .EQU $15 ; EXAMINE |
|||
KY_GO .EQU $16 ; GO |
|||
KY_BO .EQU $17 ; BOOT |
|||
; |
|||
;__DSKY_STAT_________________________________________________________________________________________ |
|||
; |
|||
; CHECK FOR KEY PRESS, SAVE RAW VALUE, RETURN STATUS |
|||
;____________________________________________________________________________________________________ |
|||
; |
|||
DSKY_STAT: |
|||
CALL DSKY_ST |
|||
AND $0F ; ISOLATE THE CUR FIFO LEN |
|||
RET |
|||
; |
|||
;__DSKY_GETKEY_____________________________________________________________________________________ |
|||
; |
|||
; WAIT FOR A DSKY KEYPRESS AND RETURN |
|||
;____________________________________________________________________________________________________ |
|||
; |
|||
DSKY_GETKEY: |
|||
CALL DSKY_STAT |
|||
JR Z,DSKY_GETKEY ; LOOP IF NOTHING THERE |
|||
LD A,DSKY_CMD_FIFO |
|||
CALL DSKY_CMD |
|||
CALL DSKY_DIN |
|||
LD B,24 ; SIZE OF DECODE TABLE |
|||
LD C,0 ; INDEX |
|||
LD HL,DSKY_KEYMAP ; POINT TO BEGINNING OF TABLE |
|||
DSKY_GETKEY1: |
|||
CP (HL) ; MATCH? |
|||
JR Z,DSKY_GETKEY2 ; FOUND, DONE |
|||
INC HL |
|||
INC C ; BUMP INDEX |
|||
DJNZ DSKY_GETKEY1 ; LOOP UNTIL EOT |
|||
LD A,$FF ; NOT FOUND ERR, RETURN $FF |
|||
RET |
|||
DSKY_GETKEY2: |
|||
; RETURN THE INDEX POSITION WHERE THE SCAN CODE WAS FOUND |
|||
LD A,C ; RETURN INDEX VALUE |
|||
RET |
|||
; |
|||
;_KEYMAP_TABLE_____________________________________________________________________________________________________________ |
|||
; |
|||
DSKY_KEYMAP: |
|||
; POS $00 $01 $02 $03 $04 $05 $06 $07 |
|||
; KEY [0] [1] [2] [3] [4] [5] [6] [7] |
|||
.DB $0D, $04, $0C, $14, $03, $0B, $13, $02 |
|||
; |
|||
; POS $08 $09 $0A $0B $0C $0D $0E $0F |
|||
; KEY [8] [9] [A] [B] [C] [D] [E] [F] |
|||
.DB $0A, $12, $01, $09, $11, $00, $08, $10 |
|||
; |
|||
; POS $10 $11 $12 $13 $14 $15 $16 $17 |
|||
; KEY [FW] [BK] [CL] [EN] [DE] [EX] [GO] [BO] |
|||
.DB $05, $15, $1D, $1C, $1B, $1A, $19, $18 |
|||
; |
|||
#ENDIF ; DSKY_KBD |
|||
; |
|||
;================================================================================================== |
|||
; DSKY HEX DISPLAY |
|||
;================================================================================================== |
|||
; |
|||
DSKY_HEXOUT: |
|||
LD B,DSKY_HEXBUFLEN |
|||
LD HL,DSKY_BUF |
|||
LD DE,DSKY_HEXBUF |
|||
DSKY_HEXOUT1: |
|||
LD A,(DE) ; FIRST NIBBLE |
|||
SRL A |
|||
SRL A |
|||
SRL A |
|||
SRL A |
|||
PUSH HL |
|||
LD HL,HEXMAP |
|||
CALL DSKY_ADDHLA |
|||
LD A,(HL) |
|||
POP HL |
|||
LD (HL),A |
|||
INC HL |
|||
LD A,(DE) ; SECOND NIBBLE |
|||
AND 0FH |
|||
PUSH HL |
|||
LD HL,HEXMAP |
|||
CALL DSKY_ADDHLA |
|||
LD A,(HL) |
|||
POP HL |
|||
LD (HL),A |
|||
INC HL |
|||
INC DE ; NEXT BYTE |
|||
DJNZ DSKY_HEXOUT1 |
|||
LD HL,DSKY_BUF |
|||
JR DSKY_SHOW |
|||
; |
|||
;================================================================================================== |
|||
; DSKY SHOW BUFFER |
|||
; HL: ADDRESS OF BUFFER |
|||
; ENTER @ SHOWHEX FOR HEX DECODING |
|||
; ENTER @ SHOWSEG FOR SEGMENT DECODING |
|||
;================================================================================================== |
|||
; |
|||
DSKY_SHOWHEX: |
|||
JR DSKY_SHOW |
|||
; |
|||
DSKY_SHOWSEG: |
|||
JR DSKY_SHOW |
|||
; |
|||
DSKY_SHOW: |
|||
; PUSH HL |
|||
; CALL DSKY_RESET |
|||
; POP HL |
|||
LD C,0 ; STARTING DISPLAY POSITION |
|||
LD B,DSKY_BUFLEN ; NUMBER OF CHARS |
|||
JP DSKY_PUTSTR |
|||
; |
|||
; |
|||
; |
|||
; |
|||
; COMMAND IN A |
|||
; TRASHES BC |
|||
; |
|||
DSKY_CMD: |
|||
LD B,$01 |
|||
JR DSKY_DOUT2 |
|||
; |
|||
; DATA VALUE IN A |
|||
; TRASHES BC |
|||
; |
|||
DSKY_DOUT: |
|||
LD B,$00 |
|||
; |
|||
DSKY_DOUT2: |
|||
; |
|||
; SAVE INCOMING DATA BYTE |
|||
PUSH AF |
|||
; |
|||
; SET PPI LINE CONFIG TO WRITE MODE |
|||
CALL DSKY_PPIWR |
|||
; |
|||
; SETUP |
|||
LD C,PPIC |
|||
; |
|||
; SET ADDRESS FIRST |
|||
LD A,DSKY_PPI_IDLE |
|||
OR B |
|||
OUT (C),A |
|||
; |
|||
; ASSERT 8279 /CS |
|||
SET 3,A |
|||
SET 4,A |
|||
OUT (C),A |
|||
; |
|||
; PPIC WORKING VALUE TO REG B NOW |
|||
LD B,A |
|||
; |
|||
; ASSERT DATA BYTE VALUE |
|||
POP AF |
|||
OUT (PPIA),A |
|||
; |
|||
; PULSE /WR |
|||
RES 5,B |
|||
OUT (C),B |
|||
NOP ; MAY NOT BE NEEDED |
|||
SET 5,B |
|||
OUT (C),B |
|||
; |
|||
; DEASSERT /CS |
|||
RES 3,B |
|||
RES 4,B |
|||
OUT (C),B |
|||
; |
|||
; CLEAR ADDRESS BIT |
|||
RES 0,B |
|||
OUT (C),B |
|||
; |
|||
; DONE |
|||
CALL DSKY_PPIIDLE |
|||
RET |
|||
; |
|||
; STATUS VALUE IN A |
|||
; TRASHES BC |
|||
; |
|||
DSKY_ST: |
|||
LD B,$01 |
|||
JR DSKY_DIN2 |
|||
; |
|||
; DATA VALUE RETURNED IN A |
|||
; TRASHES BC |
|||
; |
|||
DSKY_DIN: |
|||
LD B,$00 |
|||
; |
|||
DSKY_DIN2: |
|||
; SET PPI LINE CONFIG TO WRITE MODE |
|||
CALL DSKY_PPIRD |
|||
; |
|||
; SETUP |
|||
LD C,PPIC |
|||
; |
|||
; SET ADDRESS FIRST |
|||
LD A,DSKY_PPI_IDLE |
|||
OR B |
|||
OUT (C),A |
|||
; |
|||
; ASSERT 8279 /CS |
|||
SET 3,A |
|||
SET 4,A |
|||
OUT (C),A |
|||
; |
|||
; PPIC WORKING VALUE TO REG B NOW |
|||
LD B,A |
|||
; |
|||
; ASSERT /RD |
|||
RES 6,B |
|||
OUT (C),B |
|||
; |
|||
; GET VALUE |
|||
IN A,(PPIA) |
|||
; |
|||
; DEASSERT /RD |
|||
SET 6,B |
|||
OUT (C),B |
|||
; |
|||
; DEASSERT /CS |
|||
RES 3,B |
|||
RES 4,B |
|||
OUT (C),B |
|||
; |
|||
; CLEAR ADDRESS BIT |
|||
RES 0,B |
|||
OUT (C),B |
|||
; |
|||
; DONE |
|||
CALL DSKY_PPIIDLE |
|||
RET |
|||
; |
|||
; BLANK THE DISPLAY (WITHOUT USING CLEAR) |
|||
; |
|||
DSKY_BLANK: |
|||
LD A,DSKY_CMD_WDSP |
|||
CALL DSKY_CMD |
|||
LD B,16 |
|||
DSKY_BLANK1: |
|||
PUSH BC |
|||
LD A,$FF |
|||
CALL DSKY_DOUT |
|||
POP BC |
|||
DJNZ DSKY_BLANK1 |
|||
RET |
|||
; |
|||
; WRITE A RAW BYTE VALUE TO DSKY DISPLAY RAM |
|||
; AT LOCATION IN REGISTER C, VALUE IN A. |
|||
; |
|||
DSKY_PUTBYTE: |
|||
PUSH BC |
|||
PUSH AF |
|||
LD A,C |
|||
ADD A,DSKY_CMD_WDSP |
|||
CALL DSKY_CMD |
|||
POP AF |
|||
XOR $FF |
|||
CALL DSKY_DOUT |
|||
POP BC |
|||
RET |
|||
; |
|||
; READ A RAW BYTE VALUE FROM DSKY DISPLAY RAM |
|||
; AT LOCATION IN REGISTER C, VALUE RETURNED IN A |
|||
; |
|||
DSKY_GETBYTE: |
|||
PUSH BC |
|||
LD A,C |
|||
ADD A,DSKY_CMD_RDSP |
|||
CALL DSKY_CMD |
|||
CALL DSKY_DIN |
|||
XOR $FF |
|||
POP BC |
|||
RET |
|||
; |
|||
; WRITE A STRING OF RAW BYTE VALUES TO DSKY DISPLAY RAM |
|||
; AT LOCATION IN REGISTER C, LENGTH IN B, ADDRESS IN HL. |
|||
; |
|||
DSKY_PUTSTR: |
|||
PUSH BC |
|||
LD A,C |
|||
ADD A,DSKY_CMD_WDSP |
|||
CALL DSKY_CMD |
|||
POP BC |
|||
; |
|||
DSKY_PUTSTR1: |
|||
LD A,(HL) |
|||
XOR $FF |
|||
INC HL |
|||
PUSH BC |
|||
CALL DSKY_DOUT |
|||
POP BC |
|||
DJNZ DSKY_PUTSTR1 |
|||
RET |
|||
; |
|||
; READ A STRING OF RAW BYTE VALUES FROM DSKY DISPLAY RAM |
|||
; AT LOCATION IN REGISTER C, LENGTH IN B, ADDRESS IN HL. |
|||
; |
|||
DSKY_GETSTR: |
|||
PUSH BC |
|||
LD A,C |
|||
ADD A,DSKY_CMD_RDSP |
|||
CALL DSKY_CMD |
|||
POP BC |
|||
; |
|||
DSKY_GETSTR1: |
|||
PUSH BC |
|||
CALL DSKY_DIN |
|||
POP BC |
|||
XOR $FF |
|||
LD (HL),A |
|||
INC HL |
|||
DJNZ DSKY_GETSTR1 |
|||
RET |
|||
; |
|||
; HL IS ADR OF ENCODED STRING OF BYTES |
|||
; B IS LEN OF STRING (BYTES) |
|||
; C IS POSITION IN DISPLAY RAM TO WRITE |
|||
; |
|||
DSKY_PUTENCSTR: |
|||
PUSH BC |
|||
LD A,C |
|||
ADD A,DSKY_CMD_WDSP |
|||
CALL DSKY_CMD |
|||
POP BC |
|||
EX DE,HL |
|||
DSKY_PUTENCSTR1: |
|||
LD A,(DE) |
|||
INC DE |
|||
LD HL,HEXMAP |
|||
CALL DSKY_ADDHLA |
|||
LD A,(HL) |
|||
XOR $FF |
|||
PUSH BC |
|||
CALL DSKY_DOUT |
|||
POP BC |
|||
DJNZ DSKY_PUTENCSTR1 |
|||
RET |
|||
; |
|||
; SETUP PPI FOR WRITING: PUT PPI PORT A IN OUTPUT MODE |
|||
; AVOID REWRTING PPIX IF ALREADY IN OUTPUT MODE |
|||
; |
|||
DSKY_PPIWR: |
|||
PUSH AF |
|||
; |
|||
; CHECK FOR WRITE MODE |
|||
LD A,(DSKY_PPIX_VAL) |
|||
CP DSKY_PPIX_WR |
|||
JR Z,DSKY_PPIWR1 |
|||
; |
|||
; SET PPI TO WRITE MODE |
|||
LD A,DSKY_PPIX_WR |
|||
OUT (PPIX),A |
|||
LD (DSKY_PPIX_VAL),A |
|||
; |
|||
; RESTORE PORT C (MAY NOT BE NEEDED) |
|||
LD A,DSKY_PPI_IDLE |
|||
OUT (PPIC),A |
|||
; |
|||
DSKY_PPIWR1: |
|||
; |
|||
POP AF |
|||
RET |
|||
; |
|||
; |
|||
; |
|||
DSKY_ADDHLA: |
|||
ADD A,L |
|||
LD L,A |
|||
RET NC |
|||
INC H |
|||
RET |
|||
; |
|||
; SETUP PPI FOR READING: PUT PPI PORT A IN INPUT MODE |
|||
; AVOID REWRTING PPIX IF ALREADY IN INPUT MODE |
|||
; |
|||
DSKY_PPIRD: |
|||
PUSH AF |
|||
; |
|||
; CHECK FOR READ MODE |
|||
LD A,(DSKY_PPIX_VAL) |
|||
CP DSKY_PPIX_RD |
|||
JR Z,DSKY_PPIRD1 |
|||
; |
|||
; SET PPI TO READ MODE |
|||
LD A,DSKY_PPIX_RD |
|||
OUT (PPIX),A |
|||
LD (DSKY_PPIX_VAL),A |
|||
; |
|||
; ; DIAGNOSTIC |
|||
; LD A,'R' |
|||
; CALL COUT |
|||
; |
|||
DSKY_PPIRD1: |
|||
POP AF |
|||
RET |
|||
; |
|||
; RELEASE USE OF PPI |
|||
; |
|||
DSKY_PPIIDLE: |
|||
JR DSKY_PPIRD ; SAME AS READ MODE |
|||
; |
|||
; |
|||
; |
|||
|
|||
; |
|||
; CODES FOR NUMERICS |
|||
; HIGH BIT ALWAYS SET TO SUPPRESS DECIMAL POINT |
|||
; CLEAR HIGH BIT TO SHOW DECIMAL POINT |
|||
; |
|||
HEXMAP: |
|||
DSKY_NUMS: |
|||
.DB $3F ; 0 |
|||
.DB $06 ; 1 |
|||
.DB $5B ; 2 |
|||
.DB $4F ; 3 |
|||
.DB $66 ; 4 |
|||
.DB $6D ; 5 |
|||
.DB $7D ; 6 |
|||
.DB $07 ; 7 |
|||
.DB $7F ; 8 |
|||
.DB $67 ; 9 |
|||
.DB $77 ; A |
|||
.DB $7C ; B |
|||
.DB $39 ; C |
|||
.DB $5E ; D |
|||
.DB $79 ; E |
|||
.DB $71 ; F |
|||
; |
|||
DSKY_PPIX_VAL: .DB 0 |
|||
; |
|||
; SEG DISPLAY WORKING STORAGE |
|||
; |
|||
DSKY_BUF .FILL 8,0 |
|||
DSKY_BUFLEN .EQU $ - DSKY_BUF |
|||
DSKY_HEXBUF .FILL 4,0 |
|||
DSKY_HEXBUFLEN .EQU $ - DSKY_HEXBUF |
|||
@ -1,12 +0,0 @@ |
|||
#INCLUDE "std.asm" |
|||
; |
|||
SLACK .EQU ($8000-BAS_SIZ-TBC_SIZ-FTH_SIZ-GAM_SIZ-USR_SIZ) |
|||
.FILL SLACK,00H |
|||
; |
|||
MON_STACK .EQU $ |
|||
; |
|||
.ECHO "Padspace space created: " |
|||
.ECHO SLACK |
|||
.ECHO " bytes.\n" |
|||
|
|||
.END |
|||
Loading…
Reference in new issue