;SETBAUD.ASM v 1.00 as of 08/21/83 ; Written and released to the public domain by ; S. Kluger, El Paso RCPM ; ; This program is currently written for the Compupro ; Interfacer 4 using relative ports 1 and 2. ; Relative port 3 is covered by BAUDRATE.ASM ; ; It does the following: ; ; Displays a menu of baud rates on the screen and asks for ; your choice of baud rate. ; After pressing the key of your choice, the program will ; initialize the desired port to the desired baud rate. ; ; General EQU's ; tpa equ 100h bdos equ 5 print equ 9 getch equ 1 cr equ 0dh lf equ 0ah cls equ 26 ;your clear-screen byte ; ; Interfacer 4 equates (the necessary ones only) ; base equ 10h ;base port address mode equ base+2 ;mode port select equ base+7 offset equ 4 ;offset rel -> abs modem equ offset+2 ;modem port aux equ offset+1 ;auxiliary port mode1 equ 6eh ;mode1 byte mode2 equ 70h ;mode2 byte less baud rate ; org tpa ; start: lxi h,0 dad sp shld stksave ;save stack lxi sp,stack lxi d,menu tryagn: mvi c,print call bdos mvi c,getch call bdos call ucase cpi 'A' jc error cpi 'Q' jnc error sui 10h ;make range '1'..'?' sta p1 ; ; now, ask for port ; inv: lxi d,which mvi c,print call bdos mvi c,getch call bdos call ucase cpi 'A' mvi b,aux jz setusart cpi 'M' jnz inv mvi b,modem ; ; now, the USART has to be initialized... ; setusart: mov a,b out select mvi a,mode1 out mode mvi b,mode2 lda p1 ;get baud rate ani 0fh ;strip high nybble dcr a ora b ;finish mode2 out mode ;done! ; lhld stksave ;get CP/M stack back sphl ret ; ; ucase routine ; ucase: cpi 'a' rc sui 20h ret ; ; Come here in case of error ; error: lxi d,ermenu jmp tryagn ; ; setterm - terminal init string ; ; this is the baud rate menu ; ermenu: db 7,7,7,7,7,7,7 menu: db cls,cr,lf db 'Press To change to baud rate:',cr,lf db ' A 50',cr,lf db ' B 75',cr,lf db ' C 110',cr,lf db ' D 135',cr,lf db ' E 150',cr,lf db ' F 300',cr,lf db ' G 600',cr,lf db ' H 1200',cr,lf db ' I 1800',cr,lf db ' J 2000',cr,lf db ' K 2400',cr,lf db ' L 3600',cr,lf db ' M 4800',cr,lf db ' N 7200',cr,lf db ' O 9600',cr,lf db ' P 19200',cr,lf,lf,lf db 'Your choice : $' ; which: db cr,lf db 'Press A for AUX port, or',cr,lf db 'press M for MODEM port :$' ; p1: db 0 ; stksave:dw 0 ds 50 stack: equ $ end  'Press A for AUX port,