mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
Add configurable baud rate through mode.com
This commit is contained in:
@@ -757,6 +757,32 @@ SIO_OST:
|
||||
;
|
||||
;
|
||||
SIO_INITDEV:
|
||||
;
|
||||
; TEST FOR -1 WHICH MEANS USE CURRENT CONFIG (JUST REINIT) ; PS
|
||||
LD A,D ; TEST DE FOR ; PS
|
||||
AND E ; ... VALUE OF -1 ; PS
|
||||
INC A ; ... SO Z SET IF -1 ; PS
|
||||
JR NZ,SIO_INITDEV1 ; IF DE == -1, REINIT CURRENT CONFIG ; PS
|
||||
;
|
||||
; LOAD EXISTING CONFIG TO REINIT ;PS
|
||||
LD E,(IY + 4) ; LOW BYTE ;PS
|
||||
LD D,(IY + 5) ; HIGH BYTE ;PS
|
||||
|
||||
; CHANGE INIT TABLE
|
||||
;
|
||||
SIO_INITDEV1:
|
||||
; DETERMINE DIVISOR
|
||||
PUSH DE ; SAVE CONFIG
|
||||
CALL SIO_COMPDIV ; COMPUTE DIVISOR TO BC
|
||||
POP DE ; RESTORE CONFIG
|
||||
RET NZ ; ABORT IF COMPDIV FAILS!
|
||||
;
|
||||
; GOT A DIVISOR, COMMIT NEW CONFIG
|
||||
LD (IY + 4),E ; SAVE LOW WORD
|
||||
LD (IY + 5),D ; SAVE HI WORD
|
||||
|
||||
; *** PUT CODE IN HERE TO UPDATE SIO PROGRAMMING TABLE BEFORE IT IS PROGRAMMED.
|
||||
|
||||
HB_DI ; AVOID CONFLICTS
|
||||
;
|
||||
; PROGRAM THE SIO/2 CHIP CHANNEL
|
||||
@@ -834,6 +860,59 @@ SIO_DETECT:
|
||||
;
|
||||
;
|
||||
;
|
||||
SIO_COMPDIV:
|
||||
; WE WANT TO DETERMINE A DIVISOR FOR THE UART CLOCK ; PS FROM UART.ASM
|
||||
; THAT RESULTS IN THE DESIRED BAUD RATE.
|
||||
;
|
||||
LD A,D ; GET CONFIG MSB
|
||||
AND $1F ; ISOLATE ENCODED BAUD RATE
|
||||
|
||||
#IF (SIODEBUG)
|
||||
PUSH AF
|
||||
PRTS(" ENCODE[$")
|
||||
CALL PRTHEXBYTE
|
||||
PRTC(']')
|
||||
POP AF
|
||||
#ENDIF
|
||||
|
||||
CP SIOBAUD1
|
||||
LD E,$04 ; /1 N,8,1
|
||||
JR Z,BREX
|
||||
CP SIOBAUD2
|
||||
LD E,$44 ; /16 N,8,1
|
||||
JR Z,BREX
|
||||
CP SIOBAUD3
|
||||
LD E,$84 ; /32 N,8,1
|
||||
JR Z,BREX
|
||||
CP SIOBAUD4
|
||||
LD E,$C4 ; /64 N,8,1
|
||||
JR Z,BREX ; RET NZ
|
||||
|
||||
#IF (SIODEBUG)
|
||||
PUSH AF
|
||||
PRTS(" BR FAIL[$"
|
||||
CALL PRTHEXBYTE
|
||||
PRTC(']'
|
||||
POP AF
|
||||
#ENDIF
|
||||
|
||||
RET ; NZ stus here indicating fail.
|
||||
|
||||
BREX: ; Z status here indicating success
|
||||
LD A,E
|
||||
LD DE,SIO_INITVALS+3
|
||||
LD (DE),A
|
||||
|
||||
#IF (SIODEBUG)
|
||||
PUSH AF
|
||||
PRTS(" MODE[$")
|
||||
CALL PRTHEXBYTE
|
||||
PRTC(']')
|
||||
POP AF
|
||||
|
||||
#ENDIF
|
||||
|
||||
RET
|
||||
SIO_PRTCFG:
|
||||
; ANNOUNCE PORT
|
||||
CALL NEWLINE ; FORMATTING
|
||||
|
||||
Reference in New Issue
Block a user