home *** CD-ROM | disk | FTP | other *** search
- ;This program patches MODEM7.COM so that operation on
- ;an Osborne 1 is achieved.
- ;
- ; Written by J.A.O'Brien.
- ;
- ;THIS PATCH IS FOR:-
- ; MODEM7.COM AS OF 12/18/80.
- ;
- :The following console dialog
- ;installs the patches:-
- ;
- ; A>ASM OZDEM.BAZ /* OZDEM.ASM ON B: */
- ; A>DDT MODEM7.COM /* MODEM7.COM ON A: */
- ;
- ; *IOZDEM.HEX
- ; *R
- ; *G0
- ;
- ; A>SAVE 35 MODEM7.COM
- ;
- ;....PATCH COMPLETED.
- ;
- TRUE EQU 0FFH
- FALSE EQU 0
- ;
- BUFFERCODE EQU 5F0H ;BUFFER SIZE DEFINITION LOC.
- ;
- ; ********** NOTE **********
- ;
- ;IF THE MODEM7 SOURCE CODE HAS BEEN REASSEMBLED,
- ;THE ADDRESS OF 'BUFFERCODE' MAY BE DIFFERENT.
- ;
- ;THE ORIGINAL CODE LOOKS LIKE:-
- ;
- ;BUFFERCODE LDA A,7
- ; DCR A
- ; CMP H
- ; .
- ; .
- ;IF 'BUFFERCODE DOES NOT EQUAL 5F0H IN YOUR OBJECT
- ;CODE, THEN MODIFY THE ABOVE EQUATE.
- ;
- PORTCODE EQU 0D000H ;PORT ACCESS CODE LOCN.
- BANK1 EQU 1 ;PORT FOR BANK 1 SWITCH
- BANK2 EQU 0 ;BANK 2 SWITCH
- ;
- TXBUFFER EQU 2 ;TX BUFFER EMPTY BIT
- RXBUFFER EQU 1 ;RX BUFFER EMPTY BIT
- CLEARTOTX EQU 8 ;CLEAR TO SEND
- RXREADY EQU RXBUFFER+CLEARTOTX
- DATAPORT EQU 2A01H ;ACIA ADDRESSES
- STATUSPORT EQU 2A00H
- ;
- PAGEBYTE EQU 0EF08H ;LOC'N TO SAVE BANK
- ;
- ORG 103H ;HOP OVER JUMP TO START
- ;
- PMMIBYTE DB FALSE ;NO PMMI MODEM
- IMSAIBYTE DB FALSE ;NO FRONT PANEL
- FASTCLOCK DB TRUE ;4MHz Z-80
- BACKUPBYTE DB TRUE ;YEP,BACK IT UP
- EXPERTFLAG DB FALSE ;I'M NO EXPERT
- PULSERATE DB 0 ;DIALING RATE
- ;
- ;IO ROUTINES FOLLOW
- ;
- IN$MODCTLP JMP STATUS ;GET STATUS BYTE
- ;
- OUT$MODDATP JMP OUTDATA ;SEND MODEM DATA
- ;
- ANI$MODSNDB ANI TXBUFFER;TX BUFFER EMPTY?
- RET
- ;
- CPI$MODSNDR CPI TXBUFFER
- RET
- ;
- IN$MODDATP JMP INDATA ;GET MODEM DATA
- ;
- ANI$MODRCVB ANI RXREADY ;DATA OK?
- RET
- ;
- CPI$MODRCVR CPI RXBUFFER
- RET
- ;
- JMP$INITMOD JMP INITIAL ;PUT PORT ROUTINES ABOVE 4000H
- ;
- ;THE FOLLOWING ROUTINES TO ABSOLUTLY NOTHING
- ;
- OUT$MODCTLP RET ! NOP ! NOP
- IN$BAUDRP RET ! NOP ! NOP
- OUT$BAUDRP RET ! NOP ! NOP
- OUT$MODCTL2 RET ! NOP ! NOP
- ;
- CRFLAG DB 0 ;CONTINUOUS REDIAL FLAG
- ;
- NUMLIB DB 0 ;START & END OF PHONE NO. LIB
- ;
- ;THE FOLLOWING MOVES THE IO ROUTINES UP NEAR THE BDOS.
- ;
- INITIAL PUSH H ! PUSH D ! PUSH B
- LXI H,MOVE1 ;START OF SOURCE
- LXI D,PORTCODE ;THE DESTINATION
- MVI B,MOVE2-MOVE1 ;LENGTH OF MOVE
- MOVEIT MOV A,M
- STAX D
- INX H
- INX D
- DCR B
- JNZ MOVEIT
- POP B ! POP D ! POP H
- RET
- ;
- ;THESE IO ROUTINES WILL BE MOVED UP UNDER THE BDOS
- ;
- ;************ WARNING *************
- ;
- ;Don't use the stack in these routines because
- ;we left it back in bank one !
- ;
- ;
- MOVE1 EQU $ ;MARKS START OF MOVE
- ;
- STATUS EQU PORTCODE
- ;
- DI
- XRA A
- OUT BANK2
- STA PAGEBYTE ;NOW IN PAGE 2
- LDA STATUSPORT ;GET THE STATUS
- DB 8 ;EX AF,AF' SAVES A REGISTER
- MVI A,1
- OUT BANK1
- STA PAGEBYTE ;BACK IN PAGE 1
- DB 8 ;EX AF,AF' BACK AGAIN
- EI
- RET
- ;
- INDATA EQU PORTCODE+$-MOVE1
- ;
- DI
- XRA A
- OUT BANK2
- STA PAGEBYTE ;BANK2
- LDA DATAPORT ;GET MODEM DATA
- DB 8
- MVI A,1
- OUT BANK1
- STA PAGEBYTE ;BANK1
- DB 8
- EI
- RET
- ;
- OUTDATA EQU PORTCODE+$-MOVE1
- ;
- DB 8
- DI
- XRA A
- OUT BANK2
- STA PAGEBYTE ;BANK2
- DB 8
- STA DATAPORT
- DB 8
- MVI A,1
- OUT BANK1
- STA PAGEBYTE ;BANK1
- DB 8
- EI
- RET
- ;
- MOVE2 EQU $
- ;
- ;THE FOLLOWING DEFINES THE UPPER LIMIT OF THE TEXT BUFFER
- ;
- ; See note earlier re the address of this code.
- ;
- ORG BUFFERCODE
- ;
- MVI A,PORTCODE SHR 8;HI BYTE OF PORTCODE
- DCR A
- NOP
- ;
- END
-