db 0 ;absolute device #\r
db 0 ;relative device\r
db 0 ;iflags\r
- db 0 ;fflags\r
+ db M_CREAD+M_CRTS_IFLOW+M_CCTS_OFLOW ;fflags\r
db M_CS8 ;cflags\r
o.absdev equ 0\r
o.reldev equ 1\r
db 0 ;absolute device #\r
db 1 ;relative device\r
db 0 ;iflags\r
- db 0 ;fflags\r
+ db M_CREAD ;fflags\r
db M_CS8 ;cflags\r
\r
db 0\r
ld a,(hl) ;get baudrate index\r
call as_br_div\r
ld c,astc0l\r
- ld a,l\r
- call out_asci_reg\r
- inc c\r
- ld a,h\r
- call out_asci_reg\r
-\r
+ call out_asci_reg_hl\r
\r
ld c,cntlb0\r
ld a,M_MPBT ;No MP Mode, X16\r
; Get the current serial port settings.\r
\r
func_tcgeta:\r
- ld a,d\r
- or e\r
- ld a,0ffh\r
- jr z,fgeta_e\r
+ call chk_ptr\r
\r
ld a,(ix+o.iflags)\r
call b_st_a\r
dec de\r
dec de\r
xor a\r
-fgeta_e:\r
ret\r
\r
-\r
;--------------------------------------------------------------\r
; Set the current serial port settings.\r
\r
func_tcseta:\r
- ld a,d\r
- or e\r
- ld a,0ffh\r
- jr z,fseta_e\r
+ call chk_ptr\r
\r
call asci_stop\r
\r
call init_st\r
pop de\r
xor a\r
-fseta_e:\r
ret\r
\r
-\r
;--------------------------------------------------------------\r
; Allow the output buffer to drain\r
\r
\r
;--------------------------------------------------------------\r
\r
+chk_ptr:\r
+ ld a,e\r
+ or d\r
+ ret nz\r
+ cpl\r
+ pop hl\r
+ ret\r
+\r
+;--------------------------------------------------------------\r
+\r
asci_stop:\r
ld c,stat0 ;Disable rx/tx interrupts\r
xor a ;\r
\r
out_asci_reg:\r
push bc\r
- ld b,a\r
- ld a,c\r
- cp astc0l ;astc0/1 are 16 bit\r
- jr c,$+5\r
- add a,(ix+o.reldev)\r
- add a,(ix+o.reldev)\r
- ld c,a\r
- ld a,b\r
+ bit 0,(ix+o.reldev)\r
+ jr z,$+3\r
+ inc c\r
ld b,0\r
out (c),a\r
pop bc\r
ret\r
\r
+;--------------------------------------------------------------\r
+; output 16 bit value to asci0/1 register\r
+;\r
+; c: register address\r
+; hl: value\r
+; a destroyed\r
+\r
+out_asci_reg_hl:\r
+ ld a,b ;save b\r
+ bit 0,(ix+o.reldev)\r
+ jr z,$+4\r
+ inc c\r
+ inc c\r
+ ld b,0\r
+ out (c),l\r
+ inc c\r
+ out (c),h\r
+ ld b,a\r
+ ret\r
+\r
;--------------------------------------------------------------\r
; baud rate divider\r
;\r