mirror of https://github.com/wwarthen/RomWBW.git
committed by
GitHub
39 changed files with 2217 additions and 253 deletions
@ -0,0 +1,33 @@ |
|||
; |
|||
;================================================================================================== |
|||
; MBC CONFIGURATION |
|||
;================================================================================================== |
|||
; |
|||
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE |
|||
; CFG_<PLT>.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS |
|||
; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE |
|||
; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS. |
|||
; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE <PLT>_XXX.ASM AND SPECIFY |
|||
; YOUR FILE IN THE BUILD PROCESS. |
|||
; |
|||
; THE SETTINGS BELOW ARE THE SETTINGS THAT ARE MOST COMMONLY MODIFIED FOR THIS PLATFORM. |
|||
; MANY OF THEM ARE EQUAL TO THE SETTINGS IN THE INCLUDED FILE, SO THEY DON'T REALLY DO |
|||
; ANYTHING AS IS. THEY ARE LISTED HERE TO MAKE IT EASY FOR YOU TO ADJUST THE MOST COMMON |
|||
; SETTINGS. |
|||
; |
|||
; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE, |
|||
; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING |
|||
; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS! |
|||
; |
|||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO |
|||
; DIRECTORIES ABOVE THIS ONE). |
|||
; |
|||
#DEFINE PLATFORM_NAME "SBC" |
|||
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT |
|||
; |
|||
#include "cfg_sbc.asm" |
|||
; |
|||
INTMODE .SET 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) |
|||
MEMMGR .SET MM_MBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC] |
|||
; |
|||
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM) |
|||
@ -0,0 +1,92 @@ |
|||
;___KIO________________________________________________________________________________________________________________ |
|||
; |
|||
; Z80 KIO |
|||
; |
|||
; DISPLAY CONFIGURATION DETAILS |
|||
;______________________________________________________________________________________________________________________ |
|||
; |
|||
; |
|||
; |
|||
KIO_PIOADAT .EQU KIOBASE + $00 |
|||
KIO_PIOACMD .EQU KIOBASE + $01 |
|||
KIO_PIOBDAT .EQU KIOBASE + $02 |
|||
KIO_PIOBCMD .EQU KIOBASE + $03 |
|||
KIO_CTC0 .EQU KIOBASE + $04 |
|||
KIO_CTC1 .EQU KIOBASE + $05 |
|||
KIO_CTC2 .EQU KIOBASE + $06 |
|||
KIO_CTC3 .EQU KIOBASE + $07 |
|||
KIO_SIOADAT .EQU KIOBASE + $08 |
|||
KIO_SIOACMD .EQU KIOBASE + $09 |
|||
KIO_SIOBDAT .EQU KIOBASE + $0A |
|||
KIO_SIOBCMD .EQU KIOBASE + $0B |
|||
KIO_PIACDAT .EQU KIOBASE + $0C |
|||
KIO_PIACCMD .EQU KIOBASE + $0D |
|||
KIO_KIOCMD .EQU KIOBASE + $0E |
|||
KIO_KIOCMDB .EQU KIOBASE + $0F |
|||
; |
|||
; |
|||
; |
|||
KIO_PREINIT: |
|||
CALL KIO_DETECT |
|||
RET NZ |
|||
; |
|||
; RECORD PRESENCE |
|||
LD A,$FF |
|||
LD (KIO_EXISTS),A |
|||
; INITIALIZE KIO |
|||
LD A,%11111001 ; RESET ALL DEVICES, SET DAISYCHAIN |
|||
OUT (KIO_KIOCMD),A ; DO IT |
|||
; |
|||
XOR A |
|||
RET |
|||
; |
|||
; |
|||
; |
|||
KIO_INIT: |
|||
; ANNOUNCE PORT |
|||
CALL NEWLINE ; FORMATTING |
|||
PRTS("KIO:$") ; FORMATTING |
|||
; |
|||
PRTS(" IO=0x$") ; FORMATTING |
|||
LD A,KIOBASE ; GET BASE PORT |
|||
CALL PRTHEXBYTE ; PRINT BASE PORT |
|||
; |
|||
LD A,(KIO_EXISTS) |
|||
OR A |
|||
JR Z,KIO_INIT2 |
|||
; |
|||
PRTS(" ENABLED$") ; DISPLAY ENABLED |
|||
XOR A ; SIGNAL SUCCESS |
|||
RET ; DONE |
|||
; |
|||
KIO_INIT2: |
|||
PRTS(" NOT PRESENT$") ; NOT ZERO, H/W NOT PRESENT |
|||
OR $FF ; SIGNAL FAILURE |
|||
RET ; BAIL OUT |
|||
; |
|||
; |
|||
; |
|||
KIO_DETECT: |
|||
LD C,KIO_SIOBCMD ; USE SIOB COMMAND PORT |
|||
LD B,2 ; SIO REG 2 |
|||
; |
|||
OUT (C),B |
|||
XOR A ; ZERO |
|||
OUT (C),A ; WRITE IT |
|||
OUT (C),B |
|||
IN A,(C) |
|||
AND $F0 ; TOP NIBBLE ONLY |
|||
RET NZ ; FAIL IF NOT ZERO |
|||
; |
|||
OUT (C),B |
|||
LD A,$FF ; $FF |
|||
OUT (C),A ; WRITE IT |
|||
OUT (C),B |
|||
IN A,(C) |
|||
AND $F0 ; TOP NIBBLE ONLY |
|||
CP $F0 ; COMPARE |
|||
RET ; DONE, Z IF FOUND, NZ IF MISCOMPARE |
|||
; |
|||
; |
|||
; |
|||
KIO_EXISTS .DB 0 |
|||
File diff suppressed because it is too large
@ -0,0 +1,446 @@ |
|||
; |
|||
;================================================================================================== |
|||
; RP5C01 CLOCK DRIVER |
|||
;================================================================================================== |
|||
; |
|||
RP5RTC_BUFSIZ .EQU 6 ; SIX BYTE BUFFER (YYMMDDHHMMSS) |
|||
; |
|||
; RTC DEVICE INITIALIZATION ENTRY |
|||
; |
|||
|
|||
; TODO: |
|||
; set the day of week register |
|||
; read block of nvram |
|||
; write block of nvram |
|||
; set alarm/get alarm???? |
|||
|
|||
;; NOTES FOR USING DRIVER IN Z-DOS |
|||
; First load the LDDS datestamper |
|||
; A:LDDS |
|||
; next prepare and drives with datestamper info: |
|||
; eg: a:putds -d=g: -V |
|||
; then view date time of files with: |
|||
; a:filedate |
|||
|
|||
|
|||
RP5RTC_REG .EQU $B4 |
|||
RP5RTC_DAT .EQU $B5 |
|||
|
|||
REG_1SEC .EQU $00 |
|||
REG_10SEC .EQU $01 |
|||
REG_1MIN .EQU $02 |
|||
REG_10MIN .EQU $03 |
|||
REG_1HR .EQU $04 |
|||
REG_10HR .EQU $05 |
|||
REG_DAYWEEK .EQU $06 ; NOT USED BY THIS DRIVER |
|||
REG_1DAY .EQU $07 |
|||
REG_10DAY .EQU $08 |
|||
REG_1MNTH .EQU $09 |
|||
REG_10MNTH .EQU $0A |
|||
REG_1YEAR .EQU $0B |
|||
REG_10YEAR .EQU $0C |
|||
REG_MODE .EQU $0D |
|||
REG_TEST .EQU $0E |
|||
REG_RESET .EQU $0F |
|||
|
|||
|
|||
REG_12_24 .EQU $0A |
|||
REG_LEAPYR .EQU $0B |
|||
|
|||
MODE_TIMEST .EQU 0 |
|||
MODE_ALRMST .EQU 1 |
|||
MODE_RAM0 .EQU 2 |
|||
MODE_RAM1 .EQU 3 |
|||
|
|||
MD_TIME .EQU 8 |
|||
MD_ALRM .EQU 4 |
|||
|
|||
RP5RTC_INIT: |
|||
LD A, (RTC_DISPACT) ; RTC DISPATCHER ALREADY SET? |
|||
OR A ; SET FLAGS |
|||
RET NZ ; IF ALREADY ACTIVE, ABORT |
|||
|
|||
CALL NEWLINE ; FORMATTING |
|||
PRTS("RP5C01 RTC: $") |
|||
|
|||
; PRINT RTC LATCH PORT ADDRESS |
|||
PRTS("IO=0x$") ; LABEL FOR IO ADDRESS |
|||
LD A,RP5RTC_REG ; GET IO ADDRESS |
|||
CALL PRTHEXBYTE ; PRINT IT |
|||
CALL PC_SPACE ; FORMATTING |
|||
|
|||
; CHECK PRESENCE STATUS |
|||
CALL RP5RTC_DETECT ; HARDWARE DETECTION |
|||
JR Z, RP5RTC_INIT1 ; IF ZERO, ALL GOOD |
|||
PRTS("NOT PRESENT$") ; NOT ZERO, H/W NOT PRESENT |
|||
OR $FF ; SIGNAL FAILURE |
|||
RET ; BAIL OUT |
|||
|
|||
RP5RTC_INIT1: |
|||
; ENSURE DEVICE IS RESET AND NOT IN TEST MODE |
|||
LD A, REG_TEST ; SELECT TEST REGISTER |
|||
OUT (RP5RTC_REG), A |
|||
CALL DLY16 |
|||
XOR A |
|||
OUT (RP5RTC_DAT), A ; TURN OFF ALL TEST MODE BITS |
|||
|
|||
LD B, MODE_ALRMST |
|||
CALL RP5RTC_SETMD |
|||
|
|||
CALL RP5RTC_ENTIME |
|||
|
|||
LD A, REG_12_24 ; SET TO 24 HOUR CLOCK |
|||
OUT (RP5RTC_REG), A |
|||
LD A, 1 |
|||
OUT (RP5RTC_DAT), A |
|||
|
|||
CALL RP5RTC_RDTIM |
|||
|
|||
; DISPLAY CURRENT TIME |
|||
LD HL, RP5RTC_BCDBUF ; POINT TO BCD BUF |
|||
CALL PRTDT |
|||
; |
|||
LD BC, RP5RTC_DISPATCH |
|||
CALL RTC_SETDISP |
|||
; |
|||
XOR A ; SIGNAL SUCCESS |
|||
RET |
|||
; |
|||
; DETECT RTC HARDWARE PRESENCE |
|||
; |
|||
RP5RTC_DETECT: |
|||
LD C, 0 ; NVRAM INDEX 0 |
|||
CALL RP5RTC_GETBYT ; GET VALUE |
|||
LD A, E ; TO ACCUM |
|||
LD L, A ; SAVE IT |
|||
XOR $FF ; FLIP ALL BITS |
|||
LD E, A ; TO E |
|||
LD C, 0 ; NVRAM INDEX 0 |
|||
CALL RP5RTC_SETBYT ; WRITE IT |
|||
LD C, 0 ; NVRAM INDEX 0 |
|||
CALL RP5RTC_GETBYT ; GET VALUE |
|||
LD A, L ; GET SAVED VALUE |
|||
XOR $FF ; FLIP ALL BITS |
|||
CP E ; COMPARE WITH VALUE READ |
|||
LD A, 0 ; ASSUME OK |
|||
JR Z, RP5RTC_DETECT1 ; IF MATCH, GO AHEAD |
|||
LD A, $FF ; ELSE STATUS IS ERROR |
|||
|
|||
RP5RTC_DETECT1: |
|||
PUSH AF ; SAVE STATUS |
|||
LD A, L ; GET SAVED VALUE |
|||
LD C, 0 ; NVRAM INDEX 0 |
|||
CALL RP5RTC_SETBYT ; SAVE IT |
|||
POP AF ; RECOVER STATUS |
|||
OR A ; SET FLAGS |
|||
RET |
|||
; |
|||
; RTC DEVICE FUNCTION DISPATCH ENTRY |
|||
; A: RESULT (OUT), 0=OK, Z=OK, NZ=ERR |
|||
; B: FUNCTION (IN) |
|||
; |
|||
RP5RTC_DISPATCH: |
|||
LD A,B ; GET REQUESTED FUNCTION |
|||
AND $0F ; ISOLATE SUB-FUNCTION |
|||
JP Z,RP5RTC_GETTIM ; GET TIME |
|||
DEC A |
|||
JP Z,RP5RTC_SETTIM ; SET TIME |
|||
DEC A |
|||
JP Z,RP5RTC_GETBYT ; GET NVRAM BYTE VALUE |
|||
DEC A |
|||
JP Z,RP5RTC_SETBYT ; SET NVRAM BYTE VALUE |
|||
DEC A |
|||
JP Z,RP5RTC_GETBLK ; GET NVRAM DATA BLOCK VALUES |
|||
DEC A |
|||
JP Z,RP5RTC_SETBLK ; SET NVRAM DATA BLOCK VALUES |
|||
DEC A |
|||
JP Z,RP5RTC_GETALM ; GET ALARM |
|||
DEC A |
|||
JP Z,RP5RTC_SETALM ; SET ALARM |
|||
DEC A |
|||
JP Z,RP5RTC_DEVICE ; REPORT RTC DEVICE INFO |
|||
CALL SYSCHK |
|||
LD A, ERR_NOFUNC |
|||
OR A |
|||
RET |
|||
; |
|||
; RTC GET NVRAM BYTE |
|||
; C: INDEX |
|||
; E: VALUE (OUTPUT) |
|||
; A:0 IF OK, ERR_RANGE IF OUT OF RANGE |
|||
; |
|||
RP5RTC_GETBYT: |
|||
LD A, C |
|||
CP $0D |
|||
JR NC, RP5RTC_BADIDX |
|||
|
|||
LD B, MODE_RAM0 |
|||
CALL RP5RTC_SETMD |
|||
LD A, C ; SELECT NVRAM INDEX |
|||
OUT (RP5RTC_REG), A |
|||
IN A, (RP5RTC_DAT) |
|||
AND $0F ; RETRIEVE UNIT NIBBLE |
|||
LD E, A |
|||
|
|||
LD B, MODE_RAM1 |
|||
CALL RP5RTC_SETMD |
|||
LD A, C ; SELECT NVRAM INDEX |
|||
OUT (RP5RTC_REG), A |
|||
IN A, (RP5RTC_DAT) |
|||
AND $0F ; RETRIEVE UNIT NIBBLE |
|||
RLCA |
|||
RLCA |
|||
RLCA |
|||
RLCA |
|||
OR E |
|||
LD E, A |
|||
|
|||
XOR A ; SIGNAL SUCCESS |
|||
RET ; AND RETURN |
|||
|
|||
RP5RTC_BADIDX: |
|||
LD E, 00 |
|||
LD A, ERR_RANGE |
|||
RET |
|||
; |
|||
; RTC SET NVRAM BYTE |
|||
; C: INDEX |
|||
; E: VALUE |
|||
; A:0 IF OK, ERR_RANGE IF OUT OF RANGE |
|||
; |
|||
RP5RTC_SETBYT: |
|||
LD A, C |
|||
CP $0D |
|||
JR NC, RP5RTC_BADIDX |
|||
|
|||
LD B, MODE_RAM0 |
|||
CALL RP5RTC_SETMD |
|||
LD A, C ; SELECT NVRAM INDEX |
|||
OUT (RP5RTC_REG), A |
|||
LD A, E |
|||
AND $0F |
|||
OUT (RP5RTC_DAT), A |
|||
|
|||
LD B, MODE_RAM1 |
|||
CALL RP5RTC_SETMD |
|||
LD A, C ; SELECT NVRAM INDEX |
|||
OUT (RP5RTC_REG), A |
|||
LD A, E |
|||
AND $F0 |
|||
RRCA |
|||
RRCA |
|||
RRCA |
|||
RRCA |
|||
OUT (RP5RTC_DAT), A |
|||
|
|||
XOR A ; SIGNAL SUCCESS |
|||
RET ; AND RETURN |
|||
|
|||
RP5RTC_GETBLK: |
|||
RP5RTC_SETBLK: |
|||
RP5RTC_GETALM: |
|||
RP5RTC_SETALM: |
|||
LD A, ERR_NOTIMPL |
|||
CALL SYSCHK |
|||
OR A |
|||
RET |
|||
; |
|||
; RTC GET TIME |
|||
; A: RESULT (OUT), 0=OK, Z=OK, NZ=ERR |
|||
; HL: DATE/TIME BUFFER (OUT) |
|||
; BUFFER FORMAT IS BCD: YYMMDDHHMMSS |
|||
; 24 HOUR TIME FORMAT IS ASSUMED |
|||
; |
|||
RP5RTC_GETTIM: |
|||
; GET THE TIME INTO TEMP BUF |
|||
PUSH HL ; SAVE PTR TO CALLERS BUFFER |
|||
; |
|||
CALL RP5RTC_RDTIM |
|||
|
|||
; NOW COPY TO REAL DESTINATION (INTERBANK SAFE) |
|||
LD A,BID_BIOS ; COPY FROM BIOS BANK |
|||
LD (HB_SRCBNK),A ; SET IT |
|||
LD A,(HB_INVBNK) ; COPY TO CURRENT USER BANK |
|||
LD (HB_DSTBNK),A ; SET IT |
|||
LD HL,RP5RTC_BCDBUF ; SOURCE ADR |
|||
POP DE ; DEST ADR |
|||
LD BC,RP5RTC_BUFSIZ ; LENGTH |
|||
CALL HB_BNKCPY ; COPY THE CLOCK DATA |
|||
|
|||
XOR A ; SIGNAL SUCCESS |
|||
RET ; AND RETURN |
|||
; |
|||
; |
|||
; RTC SET TIME |
|||
; A: RESULT (OUT), 0=OK, Z=OK, NZ=ERR |
|||
; HL: DATE/TIME BUFFER (IN) |
|||
; BUFFER FORMAT IS BCD: YYMMDDHHMMSSWW |
|||
; 24 HOUR TIME FORMAT IS ASSUMED |
|||
; |
|||
RP5RTC_SETTIM: |
|||
; COPY TO BCD BUF |
|||
LD A,(HB_INVBNK) ; COPY FROM CURRENT USER BANK |
|||
LD (HB_SRCBNK),A ; SET IT |
|||
LD A,BID_BIOS ; COPY TO BIOS BANK |
|||
LD (HB_DSTBNK),A ; SET IT |
|||
LD DE,RP5RTC_BCDBUF ; DEST ADR |
|||
LD BC,RP5RTC_BUFSIZ ; LENGTH |
|||
CALL HB_BNKCPY ; COPY THE CLOCK DATA |
|||
; |
|||
LD B, MODE_TIMEST |
|||
CALL RP5RTC_SETMD |
|||
|
|||
LD B, REG_1SEC |
|||
LD A, (RP5RTC_SS) |
|||
CALL RP5RTC_WRVL |
|||
|
|||
LD B, REG_1MIN |
|||
LD A, (RP5RTC_MM) |
|||
CALL RP5RTC_WRVL |
|||
|
|||
LD B, REG_1HR |
|||
LD A, (RP5RTC_HH) |
|||
CALL RP5RTC_WRVL |
|||
|
|||
LD B, REG_1DAY |
|||
LD A, (RP5RTC_DT) |
|||
CALL RP5RTC_WRVL |
|||
|
|||
LD B, REG_1MNTH |
|||
LD A, (RP5RTC_MO) |
|||
CALL RP5RTC_WRVL |
|||
|
|||
LD B, REG_1YEAR |
|||
LD A, (RP5RTC_YR) |
|||
CALL RP5RTC_WRVL |
|||
|
|||
LD B, MODE_ALRMST |
|||
CALL RP5RTC_SETMD |
|||
|
|||
LD A, (RP5RTC_YR) |
|||
CALL BCD2BYTE |
|||
AND 3 |
|||
LD B, REG_LEAPYR |
|||
CALL RP5RTC_WRVL |
|||
|
|||
CALL RP5RTC_ENTIME |
|||
|
|||
XOR A ; SIGNAL SUCCESS |
|||
RET ; AND RETURN |
|||
; |
|||
; REPORT RTC DEVICE INFO |
|||
; |
|||
RP5RTC_DEVICE: |
|||
LD D,RTCDEV_RP5 ; D := DEVICE TYPE |
|||
LD E,0 ; E := PHYSICAL DEVICE NUMBER |
|||
LD H,0 ; H := 0, DRIVER HAS NO MODES |
|||
LD L,0 ; L := 0, NO I/O ADDRESS |
|||
XOR A ; SIGNAL SUCCESS |
|||
RET |
|||
|
|||
; |
|||
; READ OUT THE TIME |
|||
RP5RTC_RDTIM: |
|||
LD B, MODE_TIMEST |
|||
CALL RP5RTC_SETMD |
|||
|
|||
LD B, REG_1SEC |
|||
CALL RP5RTC_RDVL |
|||
LD (RP5RTC_SS), A |
|||
|
|||
LD B, REG_1MIN |
|||
CALL RP5RTC_RDVL |
|||
LD (RP5RTC_MM), A |
|||
|
|||
LD B, REG_1HR |
|||
CALL RP5RTC_RDVL |
|||
LD (RP5RTC_HH), A |
|||
|
|||
LD B, REG_1DAY |
|||
CALL RP5RTC_RDVL |
|||
LD (RP5RTC_DT), A |
|||
|
|||
LD B, REG_1MNTH |
|||
CALL RP5RTC_RDVL |
|||
LD (RP5RTC_MO), A |
|||
|
|||
LD B, REG_1YEAR |
|||
CALL RP5RTC_RDVL |
|||
LD (RP5RTC_YR), A |
|||
|
|||
RET |
|||
|
|||
; SET MODE |
|||
; MODE IN B (MODE_TIMEST, MODE_ALRMST, MODE_RAM0, MODE_RAM1) |
|||
RP5RTC_SETMD: |
|||
LD A, REG_MODE ; SELECT MODE REGISTER |
|||
OUT (RP5RTC_REG), A |
|||
|
|||
IN A, (RP5RTC_DAT) |
|||
AND MD_TIME | MD_ALRM |
|||
OR B |
|||
OUT (RP5RTC_DAT), A ; ASSIGN MODE |
|||
RET |
|||
|
|||
; ENABLE THE TIME COUNTER |
|||
RP5RTC_ENTIME: |
|||
LD B, MD_TIME |
|||
JP RP5RTC_SETMD |
|||
|
|||
; READ OUT 2 REGISTERS - 2 NIBBLES TO 1 BYTE |
|||
; REGISTER IN B |
|||
RP5RTC_RDVL: |
|||
LD A, B ; SELECT UNIT REGISTER |
|||
OUT (RP5RTC_REG), A |
|||
IN A, (RP5RTC_DAT) |
|||
AND $0F ; RETRIEVE UNIT NIBBLE |
|||
LD L, A |
|||
|
|||
INC B |
|||
LD A, B ; SELECT TENS REGISTER |
|||
OUT (RP5RTC_REG), A |
|||
IN A, (RP5RTC_DAT) |
|||
AND $0F |
|||
RLCA |
|||
RLCA |
|||
RLCA |
|||
RLCA ; MOVE TO TOP NIBBLE |
|||
OR L ; MERGE IN LOW NIBBLE |
|||
LD H, A ; A = VALUE AS BCD |
|||
|
|||
RET |
|||
|
|||
; WRITE OUT 2 REGISTERS - 1 BYTE TO 2 NIBBLES |
|||
; REGISTER IN B (B+1) |
|||
; VALUE IN A |
|||
RP5RTC_WRVL: |
|||
LD C, A |
|||
LD A, B ; SELECT UNIT REGISTER |
|||
OUT (RP5RTC_REG), A |
|||
|
|||
LD A, C ; WRITE C (ONLY LOW NIBBLE WILL BE USED) |
|||
OUT (RP5RTC_DAT), A |
|||
|
|||
INC B |
|||
LD A, B ; SELECT TENS REGISTER |
|||
OUT (RP5RTC_REG), A |
|||
|
|||
LD A, C ; SHIFT TOP NIBBLE TO LOW NIBBLE |
|||
RRCA |
|||
RRCA |
|||
RRCA |
|||
RRCA |
|||
OUT (RP5RTC_DAT), A ; WRITE IT |
|||
|
|||
RET |
|||
; |
|||
; REGISTER EXTRACTED VALUES |
|||
; |
|||
RP5RTC_BCDBUF: |
|||
RP5RTC_YR .DB 20 |
|||
RP5RTC_MO .DB 01 |
|||
RP5RTC_DT .DB 01 |
|||
RP5RTC_HH .DB 00 |
|||
RP5RTC_MM .DB 00 |
|||
RP5RTC_SS .DB 00 |
|||
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue