home *** CD-ROM | disk | FTP | other *** search
- ; M7R1-3.ASM -- Overlay for Radio Shack TRS-80 Model I equipped with
- ; Omikron Mapper I or similar modification which allows
- ; operation with ram-base-0 CP/M.
- ;
- ;
- ; Edit this file for your preferences then follow the "TO USE:" example
- ; shown below.
- ;
- ; TO USE: After editing, assemble with ASM.COM or equivalent
- ; assembler. Then use DDT to overlay the resulting
- ; .HEX file on the MDM7xx.COM file:
- ;
- ; A>DDT MDM7xx.COM
- ; DDT VERS 2.2
- ; NEXT PC
- ; 4A00 0100
- ; -IM7R1-3.HEX (Note the "I" command.)
- ; -R ("R" loads in the .HEX file.)
- ; NEXT PC
- ; 4A00 0000
- ; -G0 (Return to CP/M.)
- ; A>SAVE 73 MDM7xx.COM (You now have a modified .COM file.)
- ;
- ; = = = = = = = = = = = = = = = = = =
- ;
- ; 03/21/84 - Modified for Radio Shack Model I. - Dave Towson
- ; 11/11/83 - General purpose overlay file for MDM7xx. - Irv Hoff
- ;
- ; = = = = = = = = = = = = = = = = =
- ;
- CR: EQU 0DH ;Carriage return
- LF: EQU 0AH ;Linefeed
- ;
- YES: EQU 0FFH
- NO: EQU 0
- ;
- NUMLIB: EQU 0E00H ;Address of telephone number library.
- ;CHECK THIS - may have changed.
- XFRSIZ: EQU 4 ;Buffer size in Kbytes for Christensen
- ;protocol receive-to-disk. Must not be
- ;greater than 16.
- SHOWHEX EQU YES ;Yes = show hexadecimal record numbers
- ;in addition to decimal during protocol
- ;file transfer. No = don't show hex.
- ;
- RESETP: EQU 0E8H ;Reset port for RS-232.
- BAUDP: EQU 0E9H ;Data-rate port for RS-232.
- CONTROLP: EQU 0EAH ;Status/control port for RS-232.
- DATAP: EQU 0EBH ;Data port for RS-232.
- SENDMASK: EQU 40H ;Bit to test for transmit-buffer-empty.
- SENDRDY: EQU 40H ;Value when ready.
- RECVMASK: EQU 80H ;Bit to test for received-data-available.
- RECVRDY: EQU 80H ;Value when ready.
- BRKMASK: EQU 0FBH ;And-mask to turn on break.
- DISCONMASK: EQU 03H ;Or-mask to turn off DTR and RTS.
- ;
- ORG 100H
- ;
- ;
- ; Change the clock speed if you have installed a clock modification.
- ;
- DS 3 ;For "JMP START" instruction.
- ;
- PMMIMODEM: DB NO ;Yes = PMMI S100 modem. 103H
- SMARTMODEM: DB NO ;Yes = HAYES Smartmodem. 104H
- TOUCHPULSE: DB 'P' ;T=touch, P=pulse (Smartmodem only). 105H
- CLOCK: DB 18 ;Clock speed in MHz x10, 25.5 MHz max. 106H
- ;20=2 MHh, 37=3.68 MHz, 40=4 MHz, etc.
- MSPEED: DB 1 ;0=110 1=300 2=450 3=600 4=710 5=1200 107H
- ;6=2400 7=4800 8=9600 9=19200.
- ;Default data-rate used for time-to-
- ;send calculations.
- BYTDLY: DB 5 ;0=0 delay 1=10ms 5=50 ms - 9=90 ms. 108H
- ;Default time to send character in ter-
- ;minal mode file transfer for slow BBS.
- CRDLY: DB 5 ;0=0 delay 1=100 ms 5=500 ms - 9=900 ms 109H
- ;Default time for extra wait after CRLF
- ;in terminal mode file transfer.
- NOOFCOL: DB 4 ;Number of DIR columns shown. 10AH
- SETUPTST: DB YES ;Yes = user-added setup routine. 10BH
- SCRNTEST: DB YES ;Clear screen routine installed. 10CH
- NORETRY: DB NO ;Yes = aborts after ERRLIM consecutive 10DH
- ;timeouts. No = reset the error limit
- ;to allow more attempts. Called ACKNAK,
- ;and used for a different purpose in
- ;earlier overlays.
- BAKUPBYTE: DB NO ;Yes = change any file having same 10EH
- ;name to .BAK
- CRCDFLT: DB YES ;Yes = default to CRC checking. 10FH
- TOGGLECRC: DB YES ;Yes = allow toggling of CRC to 110H
- ;checksum.
- CONVBKSP: DB NO ;Yes = convert backspace to rubout. 111H
- TOGGLEBK: DB YES ;Yes = allow toggling of bksp to rub. 112H
- ADDLF: DB NO ;No = no LF after CR when sending file 113H
- ;in terminal mode (added by remote).
- TOGGLELF: DB YES ;Yes = allow toggling of LF after CR. 114H
- TRANLOGON: DB NO ;Yes = allow transmission of logon. 115H
- ;Put logon sequence at location LOGON.
- SAVCCP: DB YES ;Yes = do not overwrite CCP. 116H
- LOCONEXTCHR: DB NO ;Yes = local cmd if EXTCHR precedes. 117H
- ;No = transmitted to remote computer if
- ;preceded by EXTCHR.
- TOGGLELOC: DB YES ;Yes = allow toggling of LOCONEXTCHR. 118H
- LSTTST: DB YES ;Yes = printer available on printer 119H
- ;port.
- XOFFTST: DB NO ;Yes = checks for XOFF from remote 11AH
- ;while sending a file in terminal mode.
- XONWAIT: DB NO ;Yes = wait for XON after CR while 11BH
- ;sending a file in terminal mode.
- TOGXOFF: DB YES ;Yes = allow toggling of XOFF checking. 11CH
- IGNORCTL: DB NO ;Yes = CTL-chars above ^M not displayed 11DH
- EXTRA1: DB 0 ;For future expansion. 11EH
- EXTRA2: DB 0 ;For future expansion. 11FH
- BRKCHR: DB 'B'-40H ;^B = Send 300 ms. break tone. 120H
- NOCONNCT: DB 'D'-40H ;^D = Disconnect from the phone line. 121H
- LOGCHR: DB 'L'-40H ;^L = Send logon. 122H
- LSTCHR: DB 'P'-40H ;^P = Toggle printer. 123H
- UNSAVE: DB 'C'-40H ;^C = Close input text buffer. 124H
- TRANCHR: DB 'T'-40H ;^T = Transmit file to remote. 125H
- SAVECHR: DB 'O'-40H ;^O = Open input text buffer. 126H
- EXTCHR: DB 'N'-40H ;^N = Send next character. 127H
- ;
- ;
- DS 2 ; 128H
- ;
- IN$MODCTL1: IN CONTROLP ! RET ;Get RS-232 status. 12AH
- DB 0,0,0,0,0,0,0 ;Do not delete these.
- ;
- OUT$MODDATP: OUT DATAP ! RET ;Send a character to the RS-232 134H
- DB 0,0,0,0,0,0,0 ;Do not delete these.
- ;
- IN$MODDATP: IN DATAP ! RET ;Get a character from RS-232. 13EH
- DB 0,0,0,0,0,0,0 ;Do not delete these.
- ;
- ANI$MODRCVB: ANI RECVMASK ! RET ;Mask for rcvd-char-ready bit. 148H
- CPI$MODRCVR: CPI RECVRDY ! RET ;Test for rcvd-char-ready. 14BH
- ANI$MODSNDB: ANI SENDMASK ! RET ;Mask for ready-to-send bit. 14EH
- CPI$MODSNDR: CPI SENDRDY ! RET ;Test for ready-to-send. 151H
- DS 6 ; 154H
- ;
- DS 6 ; 15AH
- ;
- LOGONPTR: DW LOGON ;For user message. 160H
- DS 6 ; 162H
- JMP$GOODBYE: JMP GOODBYE ; 168H
- JMP$INITMOD: JMP TRSINIT ;Go to user written routine. 16BH
- RET ! NOP ! NOP ;(by-passes PMMI routine) 16EH
- RET ! NOP ! NOP ;(by-passes PMMI routine) 171H
- RET ! NOP ! NOP ;(by-passes PMMI routine) 174H
- JMP$SETUPR: JMP SETBAUD ; 177H
- JMP$SPCLMENU: JMP SPCLMENU ; 17AH
- JMP$SYSVER: JMP SYSVER ; 17DH
- JMP$BREAK: JMP SENDBRK ; 180H
- ;
- ;
- ; Do not change the following six lines.
- ;
- JMP$ILPRT: DS 3 ; 183H
- JMP$INBUF DS 3 ; 186H
- JMP$INLNCOMP: DS 3 ; 189H
- JMP$INMODEM DS 3 ; 18CH
- JMP$NXTSCRN: DS 3 ; 18FH
- JMP$TIMER DS 3 ; 192H
- ;
- ;
- CLREOS: CALL JMP$ILPRT ;Clear from cursor to EOS. 195H
- DB 1FH,0,0,0,0 ; 198H
- RET ; 19DH
- ;
- CLRSCRN: CALL JMP$ILPRT ;Home cursor and clear screen. 19EH
- DB 1CH,1FH,0,0,0 ; 1A1H
- RET ; 1A6H
-
- ;
- SYSVER: CALL JMP$ILPRT ;Display version name. 1A7H
- DB 'Version for TRS-80 Model I '
- DB 'with Omikron Mapper I'
- DB CR,LF,0 ;
- RET ;
- ;.....
- ;
- ;
- ; You can put in a message at this location which can be called up with
- ; CTL-L if TRANLOGON has been set to YES. You can use several lines if
- ; desired. End with a 0.
- ;
- LOGON: DB 'Put logon message here.',CR,LF,0
- ;
- ;.....
- ;
- ;
- ; Routine to send a break-tone of approximately 300 ms duration.
- ;
- SENDBRK: PUSH B ;Save all double registers.
- PUSH D ;
- PUSH H ;
- LDA CONTROLB ;Get current RS-232 control byte.
- ANI BRKMASK ;Change bit to turn on break.
- OUT CONTROLP ;Send new byte to control port.
- MVI B,3 ;Set count for timer.
- CALL JMP$TIMER ;Wait 300 milliseconds.
- LDA CONTROLB ;Restore original control byte
- OUT CONTROLP ;to turn off break.
- POP H ;Restore double registers.
- POP D ;
- POP B ;
- RET ;
- ;
- ;
- ;.....
- ;
- ;
- ; Routine to disconnect modem from telephone line by setting both DTR and
- ; RTS to the "off" state. Send a BREAK (in terminal mode) to reconnect.
- ; CHECK THIS - control logic for your modem may be different.
- ;
- GOODBYE: LDA CONTROLB ;Get current RS-232 control byte.
- ORI DISCONMASK ;Change bits to turn off DTR and RTS.
- OUT CONTROLP ;Send new byte to control port.
- RET ;
- ;
- ;
- ;.....
- ;
- ;
- ; RS-232 initialization routine for TRS-80 Model I.
- ;
- TRSINIT: OUT RESETP ;Reset UART (data in A register is
- ;insignificant).
- MVI A,55H ;Value for 300 baud.
- ;Use 77H for 1200 baud.
- OUT BAUDP ;Set RS-232 data-rate.
- ;
- ; NOTE: Be sure to set the default value at entry "MSPEED:"
- ; to agree with the above data-rate.
- ;
- MVI A,0ECH ;Set RS-232 for 8-bit word,
- ;no parity, and
- OUT CONTROLP ;DTR and RTS on.
- STA CONTROLB ;Save the RS-232 control byte.
- RET ;
- ;
- ;
- ;.....
- ;
- ;
- CONTROLB: DB 0 ;RS-232 control byte save.
- ;
- ;
- ;.....
- ;
- ;
- ; Routine to change data-rate with the SET command.
- ;
- SETBAUD: PUSH B ;Save all double registers.
- PUSH D ;
- PUSH H ;
- ;
- AGAIN: LXI D,BAUDBUF ;Point to input buffer.
- CALL JMP$ILPRT ;Display message.
- DB 'Input Baud Rate (300, 1200): ',0
- CALL JMP$INBUF ;Get response.
- LXI D,BAUDBUF+2 ;Set pointer.
- CALL JMP$INLNCOMP ;Compare BAUDBUF+2 with
- ;valid responses below.
- DB '300',0 ;300 baud.
- MVI A,1 ;Value for MSPEED.
- MVI C,55H ;Value for data-rate.
- JNC OK ;Jump if match.
- ;
- CALL JMP$INLNCOMP ;Else, try next valid response.
- DB '1200',0 ;1200 baud.
- MVI A,5 ;Value for MSPEED.
- MVI C,77H ;Value for data-rate.
- JNC OK ;Jump if match.
- CALL JMP$ILPRT ;Else, bad input.
- ;Display message.
- DB '++ INCORRECT ENTRY ++',CR,LF,0
- JMP AGAIN ;Try again.
- ;
- ;
- ;.....
- ;
- ;
- OK: STA MSPEED ;Set value for file-send-time
- ;computations.
- MOV A,C ;
- OUT BAUDP ;Set RS-232 data-rate.
- POP H ;Restore double registers.
- POP D ;
- POP B ;
- RET ;
- ;
- ;
- ;.....
- ;
- ;
- BAUDBUF: DB 10,0 ;Keyboard input buffer.
- DS 10
- ;
- ;
- ;.....
- ;
- ;
- SPCLMENU: RET
- ;
- ;
- ;.....
- ;
- ;
- ; Routine to determine whether hexadecimal record numbers are displayed
- ; during protocol file transfer, and size of buffer used.
- ;
- ORG NUMLIB-2
- ;
- HEXSHOW: DB SHOWHEX ;Set hex display.
- SAVSIZ: DB XFRSIZ*8 ;Set buffer size.
- ;
- ;
- ;.....
- ;
- ;
- END
- ;
- ;
- ;.....