home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol136 / ozdem.asm < prev    next >
Encoding:
Assembly Source File  |  1984-04-29  |  3.1 KB  |  183 lines

  1. ;This program patches MODEM7.COM so that operation on
  2. ;an Osborne 1 is achieved.
  3. ;
  4. ;  Written by J.A.O'Brien.
  5. ;
  6. ;THIS PATCH IS FOR:-
  7. ;        MODEM7.COM AS OF 12/18/80.
  8. ;
  9. :The following console dialog
  10. ;installs the patches:-
  11. ;
  12. ;    A>ASM OZDEM.BAZ        /* OZDEM.ASM ON B: */
  13. ;    A>DDT MODEM7.COM       /* MODEM7.COM ON A: */
  14. ;    
  15. ;    *IOZDEM.HEX
  16. ;    *R
  17. ;    *G0
  18. ;
  19. ;    A>SAVE 35 MODEM7.COM
  20. ;
  21. ;....PATCH COMPLETED.
  22. ;
  23. TRUE        EQU    0FFH
  24. FALSE        EQU    0
  25. ;
  26. BUFFERCODE    EQU    5F0H    ;BUFFER SIZE DEFINITION LOC.
  27. ;
  28. ;      ********** NOTE **********
  29. ;
  30. ;IF THE MODEM7 SOURCE CODE HAS BEEN REASSEMBLED, 
  31. ;THE ADDRESS OF 'BUFFERCODE' MAY BE DIFFERENT.
  32. ;
  33. ;THE ORIGINAL CODE LOOKS LIKE:-
  34. ;
  35. ;BUFFERCODE    LDA    A,7
  36. ;        DCR    A
  37. ;        CMP    H
  38. ;        .
  39. ;        .
  40. ;IF 'BUFFERCODE DOES NOT EQUAL 5F0H IN YOUR OBJECT
  41. ;CODE, THEN MODIFY THE ABOVE EQUATE.
  42. ;
  43. PORTCODE    EQU    0D000H    ;PORT ACCESS CODE LOCN.
  44. BANK1        EQU    1    ;PORT FOR BANK 1 SWITCH
  45. BANK2        EQU    0    ;BANK 2 SWITCH
  46. ;
  47. TXBUFFER    EQU    2    ;TX BUFFER EMPTY BIT
  48. RXBUFFER    EQU    1    ;RX BUFFER EMPTY BIT
  49. CLEARTOTX    EQU    8    ;CLEAR TO SEND
  50. RXREADY        EQU    RXBUFFER+CLEARTOTX
  51. DATAPORT    EQU    2A01H    ;ACIA ADDRESSES
  52. STATUSPORT    EQU    2A00H
  53. ;
  54. PAGEBYTE    EQU    0EF08H    ;LOC'N TO SAVE BANK
  55. ;
  56.         ORG    103H    ;HOP OVER JUMP TO START
  57. ;
  58. PMMIBYTE    DB    FALSE    ;NO PMMI MODEM
  59. IMSAIBYTE    DB    FALSE    ;NO FRONT PANEL
  60. FASTCLOCK    DB    TRUE    ;4MHz Z-80
  61. BACKUPBYTE    DB    TRUE    ;YEP,BACK IT UP
  62. EXPERTFLAG    DB    FALSE    ;I'M NO EXPERT
  63. PULSERATE    DB    0    ;DIALING RATE
  64. ;
  65. ;IO ROUTINES FOLLOW
  66. ;
  67. IN$MODCTLP    JMP    STATUS    ;GET STATUS BYTE
  68. ;
  69. OUT$MODDATP    JMP    OUTDATA    ;SEND MODEM DATA
  70. ;
  71. ANI$MODSNDB    ANI    TXBUFFER;TX BUFFER EMPTY?
  72.         RET
  73. ;
  74. CPI$MODSNDR    CPI    TXBUFFER
  75.         RET
  76. ;
  77. IN$MODDATP    JMP    INDATA    ;GET MODEM DATA
  78. ;
  79. ANI$MODRCVB    ANI    RXREADY    ;DATA OK?
  80.         RET
  81. ;
  82. CPI$MODRCVR    CPI    RXBUFFER
  83.         RET
  84. ;
  85. JMP$INITMOD    JMP    INITIAL    ;PUT PORT ROUTINES ABOVE 4000H
  86. ;
  87. ;THE FOLLOWING ROUTINES TO ABSOLUTLY NOTHING
  88. ;
  89. OUT$MODCTLP    RET ! NOP ! NOP
  90. IN$BAUDRP    RET ! NOP ! NOP
  91. OUT$BAUDRP    RET ! NOP ! NOP
  92. OUT$MODCTL2    RET ! NOP ! NOP
  93. ;
  94. CRFLAG        DB    0    ;CONTINUOUS REDIAL FLAG
  95. ;
  96. NUMLIB        DB    0    ;START & END OF PHONE NO. LIB
  97. ;
  98. ;THE FOLLOWING MOVES THE IO ROUTINES UP NEAR THE BDOS.
  99. ;
  100. INITIAL    PUSH H ! PUSH D ! PUSH B
  101.     LXI    H,MOVE1        ;START OF SOURCE
  102.     LXI    D,PORTCODE    ;THE DESTINATION
  103.     MVI    B,MOVE2-MOVE1    ;LENGTH OF MOVE
  104. MOVEIT    MOV    A,M
  105.     STAX    D
  106.     INX    H
  107.     INX    D
  108.     DCR    B
  109.     JNZ    MOVEIT
  110.     POP B ! POP D ! POP H
  111.     RET
  112. ;
  113. ;THESE IO ROUTINES WILL BE MOVED UP UNDER THE BDOS
  114. ;
  115. ;************ WARNING *************
  116. ;
  117. ;Don't use the stack in these routines because
  118. ;we left it back in bank one !
  119. ;
  120. ;
  121. MOVE1    EQU    $        ;MARKS START OF MOVE
  122. ;
  123. STATUS    EQU    PORTCODE
  124. ;
  125.     DI
  126.     XRA    A
  127.     OUT    BANK2
  128.     STA    PAGEBYTE    ;NOW IN PAGE 2
  129.     LDA    STATUSPORT    ;GET THE STATUS
  130.     DB    8        ;EX AF,AF' SAVES A REGISTER
  131.     MVI    A,1
  132.     OUT    BANK1
  133.     STA    PAGEBYTE    ;BACK IN PAGE 1
  134.     DB    8        ;EX AF,AF' BACK AGAIN
  135.     EI
  136.     RET
  137. ;
  138. INDATA    EQU    PORTCODE+$-MOVE1
  139. ;
  140.     DI
  141.     XRA    A
  142.     OUT    BANK2
  143.     STA    PAGEBYTE    ;BANK2
  144.     LDA    DATAPORT    ;GET MODEM DATA
  145.     DB    8
  146.     MVI    A,1
  147.     OUT    BANK1
  148.     STA    PAGEBYTE    ;BANK1
  149.     DB    8
  150.     EI
  151.     RET
  152. ;
  153. OUTDATA    EQU    PORTCODE+$-MOVE1
  154. ;
  155.     DB    8
  156.     DI
  157.     XRA    A
  158.     OUT    BANK2
  159.     STA    PAGEBYTE    ;BANK2
  160.     DB    8
  161.     STA    DATAPORT
  162.     DB    8
  163.     MVI    A,1
  164.     OUT    BANK1
  165.     STA    PAGEBYTE    ;BANK1
  166.     DB    8
  167.     EI
  168.     RET
  169. ;
  170. MOVE2    EQU    $
  171. ;
  172. ;THE FOLLOWING DEFINES THE UPPER LIMIT OF THE TEXT BUFFER
  173. ;
  174. ;     See note earlier re the address of this code.
  175. ;
  176.     ORG    BUFFERCODE
  177. ;
  178.     MVI    A,PORTCODE SHR 8;HI BYTE OF PORTCODE
  179.     DCR    A
  180.     NOP
  181. ;
  182.     END
  183.