DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦6881ef12f⟧ TextFile

    Length: 2048 (0x800)
    Types: TextFile
    Names: »LPBAUD.ASM«

Derivation

└─⟦1f6b46325⟧ Bits:30004393 CP/M-80 rel. 1 Utilities source disk
    └─ ⟦this⟧ »LPBAUD.ASM« 

TextFile


	TITLE	'LINEPRINTER BAUDRATE SETUP UTILITY'
	PAGE 43

SETLPBAUD	EQU	0F806H		;BAUDRATE PARAMETER TRANSFERE
					;...SYSTEM ENTRY-POINT
INITSER		EQU	0F800H		;HARDWARE SETUP SYSTEM ENTRY-POINT
;
CONIN		EQU	01		;READ CONSOLE CHARACTER REQUEST-CODE
PRSTRING	EQU	09		;WRITE CONSOLE STRING REQUEST-CODE
;
SYSTEM		EQU	0005H		;NORMAL SYSTEM CALL ADDRESS
;
CR		EQU	0DH
LF		EQU	0AH
;
	ORG	100H
;
ENTRY:
	LXI	D,MENU			;POINTER TO MESSAGE
	MVI	C,PRSTRING
	CALL	SYSTEM			;OUTPUT MESSAGE TO CONSOLE
	MVI	C,CONIN
	CALL	SYSTEM			;GET SELECTED VALUE
	CPI	'1'			;CHECK IF OUT OF RANGE
	JC	BADENT
	CPI	'8'
	JNC	BADENT
	ANI	07H			;OK - MASK TO BINARY VALUE
	DCR	A
	RLC				;MAKE 16 BIT TABLE OFFSET VALUE
	MVI	D,0
	MOV	E,A			;...IN DE
	LXI	H,TABLE			;GET TABLE BASE ADDRESS
	DAD	D			;COMPUTE TABLE ENTRY ADDRESS
	MOV	A,M			;GET LOW BYTE FROM TABLE
	INX	H
	MOV	H,M			;GET HIGH BYTE FROM TABLE
	MOV	L,A			;COMBINE TO 16 BIT VALUE IN HL
	CALL	SETLPBAUD
	CALL	INITSER			;DO SETUP WITH NEW VALUE
	RET				;BACK TO CPM - YEEEA-BIIII
;
;
BADENT:
	LXI	D,ERRMSG
	MVI	C,PRSTRING
	CALL	SYSTEM			;TELL HIM ABOUT HIS SLOW BRAIN
	JMP	ENTRY
;
;
MENU:
	DB	CR,LF,'                 SELECT LINEPRINTER SPEED'
	DB	CR,LF
	DB	CR,LF,'                    1)     19200 BAUD'
	DB	CR,LF,'                    2)      9600 BAUD'
	DB	CR,LF,'                    3)      4800 BAUD'
	DB	CR,LF,'                    4)      2400 BAUD'
	DB	CR,LF,'                    5)      1200 BAUD'
	DB	CR,LF,'                    6)       600 BAUD'
	DB	CR,LF,'                    7)       300 BAUD'
	DB	CR,LF
	DB	CR,LF,'                 SELECT (1-7):'
	DB	'$'
;
ERRMSG:
	DB	CR,LF
	DB	CR,LF,'                 OUT OF RANGE USE 1 THRU 7'
	DB	CR,LF,'$'
;
TABLE:
	DW	0004H			;19200 BAUD COUNTER VALUE
	DW	0008H			; 9600 BAUD COUNTER VALUE
	DW	0010H			; 4800 BAUD COUNTER VALUE
	DW	0021H			; 2400 BAUD COUNTER VALUE
	DW	0041H			; 1200 BAUD COUNTER VALUE
	DW	0082H			;  600 BAUD COUNTER VALUE
	DW	0104H			;  300 BAUD COUNTER VALUE
;
	END
«eof»