home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / SB180 / PMO-SB10.Z80 < prev    next >
Text File  |  2000-06-30  |  8KB  |  270 lines

  1.         .TITLE  'Poor Mans Network overlay for the SB180'
  2. ;
  3.         .HD64   ; Hitachi HD64180 opcodes in low-level I/O routines
  4. ;
  5. ; Assemble with Echelon ZAS
  6. ;
  7. ; POOR MAN'S NETWORK available from:
  8. ;  Anderson Techno-Products
  9. ;  613-722-0690
  10. ;
  11. ; PMN is a 2-computer CP/M networking system. It allows the sharing
  12. ; of any device DSK:, LST: PUN: etc with connection via the serial port.
  13. ;
  14. ; Revision History:
  15. ;------+---------+----------+---------------------------------------------
  16. ; Rev. |  Date   |  Author  |          Description
  17. ;------+---------+----------+---------------------------------------------
  18. ; 1.0  |10 May 87| Al       | - created for ASCII port 0 of SB180
  19. ;      |         | Heynneman|   70110,611 on CompuServe
  20. ;      |         |          |   CL0798 on the Source
  21. ;      |         |          |   HEYNNEMAN on Genie
  22. ;------+---------+----------+---------------------------------------------
  23. ;
  24. TRUE    EQU     0FFH
  25. FALSE   EQU     0
  26. CR      EQU     13
  27. ;
  28. ; HD64180 port definitions
  29. ;
  30. MODCT1  EQU     00H             ;control port
  31. MODOUT  EQU     06H             ;data port out
  32. MODIN   EQU     08H             ;data port in
  33. MODSTAT EQU     04H             ;status port
  34. BAUDRP  EQU     02H             ;baud rate port (+ even/odd parity)
  35. ;
  36. ; HD64180 bit definitions
  37. ;
  38. MDRCVB  EQU     80H             ;receive bit (DAV)
  39. MDRCVR  EQU     80H             ;receive ready
  40. MDSNDB  EQU     02H             ;send bit
  41. MDSNDR  EQU     02H             ;send ready bit
  42. ;
  43. ;***** HD64180 CPU speed *****
  44. ;  (Set only ONE of the following to TRUE)
  45. ;
  46. CPU12   EQU     FALSE           ;12.288 MHz clock
  47. CPU9    EQU     TRUE            ; 9.216 MHz clock
  48. CPU6    EQU     FALSE           ; 6.144 MHz clock
  49. CPU4    EQU     FALSE           ; 4.608 MHz clock
  50. CPU3    EQU     FALSE           ; 3.072 MHz clock
  51. ;
  52. ;---------------------------------------------------------------------
  53. ; PMN Eqautes
  54.  
  55. NETBIOS         EQU     2000H
  56. OFFSET          EQU     0F00H           
  57. ;
  58.                 ORG     107H
  59.  
  60. ; MODEM COMMANDS (not used in this version)
  61. ;
  62. MATTNCDS DB     'A','T',0,0,0,0,0,0,0,0 ;ATTENTION
  63. MINTRCDS DB     '+','+','+',0,0,0,0,0,0,0 ;INTERRUPT
  64. MDIALCDS DB     'D',0,0,0,0,0,0,0,0,0   ;DIAL A NO
  65. MHANGCDS DB     'H','0',0,0,0,0,0,0,0,0 ;HANG UP LINE
  66. MINITCDS DB     'E0',CR         ;HAYES INITIALIZATION
  67.          DB     'F1',CR         ;(40 BYTES TOTAL)
  68.          DB     'Q0',CR
  69.          DB     'V1',CR
  70.          DB     'X1',CR
  71.          DB     'S0=0',CR
  72.          DB     'S7=15',CR
  73.          DB     0,0,0,0
  74.          DB     0,0,0,0,0,0,0,0,0,0
  75. ;
  76. ; BAUD RATE TABLE 
  77. ; baud rate divisors for supported rates
  78. ;
  79. BAUDCODE:
  80. ;
  81.          IF     CPU12           ; 12.288 MHz clock
  82.         DW      0EH     ;300
  83.         DW      0DH     ;600
  84.         DW      06H     ;1200
  85.         DW      00H     ;1800
  86.         DW      05H     ;2400
  87.         DW      00H     ;3600
  88.         DW      04H     ;4800
  89.         DW      00H     ;7200
  90.         DW      03H     ;9600
  91.         DW      02H     ;19200
  92.         DW      00H     ;38400
  93.          ENDIF
  94. ;
  95.          IF     CPU9            ; 9.216 MHz clock
  96.         DW      26H     ;300
  97.         DW      25H     ;600
  98.         DW      24H     ;1200
  99.         DW      00H     ;1800
  100.         DW      23H     ;2400
  101.         DW      00H     ;3600
  102.         DW      22H     ;4800
  103.         DW      00H     ;7200
  104.         DW      21H     ;9600
  105.         DW      20H     ;19200
  106.         DW      00H     ;38400
  107.          ENDIF
  108. ;
  109.          IF     CPU6            ; 6.144 MHz clock
  110.         DW      0DH     ;300
  111.         DW      06H     ;600
  112.         DW      05H     ;1200
  113.         DW      00H     ;1800
  114.         DW      04H     ;2400
  115.         DW      00H     ;3600
  116.         DW      03H     ;4800
  117.         DW      00H     ;7200
  118.         DW      02H     ;9600
  119.         DW      01H     ;19200
  120.         DW      00H     ;38400
  121.          ENDIF
  122. ;
  123.          IF     CPU4            ; 4.608 MHz clock
  124.         DW      25H     ;300
  125.         DW      24H     ;600
  126.         DW      23H     ;1200
  127.         DW      00H     ;1800
  128.         DW      22H     ;2400
  129.         DW      00H     ;3600
  130.         DW      21H     ;4800
  131.         DW      00H     ;7200
  132.         DW      20H     ;9600
  133.         DW      00H     ;19200
  134.         DW      00H     ;38400
  135.          ENDIF
  136. ;
  137.          IF     CPU3            ; 3.072 MHz clock
  138.         DW      06H     ;300
  139.         DW      05H     ;600
  140.         DW      04H     ;1200
  141.         DW      00H     ;1800
  142.         DW      03H     ;2400
  143.         DW      00H     ;3600
  144.         DW      02H     ;4800
  145.         DW      00H     ;7200
  146.         DW      01H     ;9600
  147.         DW      80H     ;19200
  148.         DW      00H     ;38400
  149.          ENDIF
  150. ;
  151. ERRMRK: DB      '^'                     ;PARAMETER ERROR MARKER
  152. COMP:   DB      'MicroMint SB180 and ASCI0 port',CR
  153. ;                .........1.........2.........3 30 BYTES
  154.  
  155.         ORG     NETBIOS+31BH
  156. ;
  157. SCRSIZ: DB      24                      ;LINES ON SCREEN
  158. SCRWID: DB      80                      ;WIDTH OF SCREEN
  159. ;       
  160. CLRLIN: DB      2,27,'T',0,0,0,0,0,0,0  ;CLEAR TO EOL
  161. DIRCUR: DB      2,27,'=',0,0,0,0,0,0,0  ;DIRECT CURSOR ADDR
  162. MIDCUR: DB      0,0,0,0,0,0,0,0,0,0     ;MIDDLE STRING
  163. ENDCUR: DB      0,0,0,0,0,0,0,0,0,0     ;ENDING STRING
  164. VOFF:   DB      32                      ;CURSOR ADDR OFFSET
  165. CURSTY: DB      0                       ;0=Y,X; 1=X,Y
  166. ASCCUR: DB      0                       ;ASCII CURSOR ADDR
  167. VDELAY: DB      0                       ;CURS ADDR DELAY
  168. REVVID: DB      0,0,0,0,0,0,0,0,0,0     ;REVERSE VIDEO
  169. NORVID: DB      0,0,0,0,0,0,0,0,0,0     ;NORMAL VIDEO
  170. SAVECP: DB      0,0,0,0,0,0,0,0,0,0     ;SAVE CURSR POSN
  171. RSTRCP: DB      0,0,0,0,0,0,0,0,0,0     ;RESTORE CURSR POSN
  172. MSGL:   DB      0                       ;WHERE TO PUT MESSAGE
  173. ;
  174.  
  175.         ORG     NETBIOS+61CH
  176.  
  177. SYSID:  DB      9               ;THIS SYSTEM ID, FOR 9MHZ SB180
  178. FCLK:   DB      TRUE            ;4MHZ OR BETTER
  179. MSGKEY: DB      1CH,0,0,0       ;MSG KEY SEQUENCE
  180. RELOC:  DW      0               ;WHERE TO PUT NETBIOS   
  181.         DS      8               ;reserved
  182. ;
  183. ; USART CONTROL BYTES
  184. ;
  185. USART1: DB      0               ;GET USART'S ATTN
  186. USART2: DB      0               ;SOFTWARE RESET
  187. FINBIT: DB      0               ;ENABLE XMIT
  188. FIXED:  DB      0               ;USART CONSTANT BITS
  189. PARITY: DB      0               ;NO PARITY
  190. WORD:   DB      64H             ;REC EN, TRANS EN, 8 BITS, 1 STOP
  191.         DB      0               ;
  192. BAUD:   DW      21H             ;DEFAULT BAUD RATE (9600, 9MHZ)
  193. ;
  194.         ORG     NETBIOS+OFFSET
  195.  
  196. DRIVER:
  197.  
  198. ANYEXT: JP      DR$ANYEXT       ;is a byte at port
  199. INEXT:  JP      DR$INEXT        ;read the data port
  200. EXTRDY: JP      DR$EXTRDY       ;check if ready to xmit
  201. OUTEXT: JP      DR$OUTEXT       ;write to the data port
  202. RESET   JP      DR$INITMOD              ;init the port
  203. ACTIV:  RET
  204.         NOP
  205.         NOP
  206. PBUSY:  RET
  207.         NOP
  208.         NOP
  209. ;                 E N D  of Fixed Format Area !
  210. ;===================================================================
  211. ;
  212. ; CHECK IF BYTE AT MODEM
  213. ; Z set if byte available.
  214. ; May use registers A, B, C.
  215. ;
  216. DR$ANYEXT:
  217.         IN0     A,(MODSTAT)
  218.         IN0     A,(MODSTAT)     ;DO TWICE FOR VALID DCD
  219.         XOR     MDRCVR
  220.         AND     MDRCVB
  221.         RET
  222.  
  223. ;...............................
  224. ;
  225. ; GET BYTE FROM MODEM
  226. ; May use registers A, B, C.
  227. ;
  228. DR$INEXT:
  229.         IN0     A,(MODIN)
  230.         RET
  231.  
  232. ;...............................
  233. ;
  234. ; CHECK IF MODEM PORT READY TO XMIT
  235. ; Z set if so.
  236. ; May use registers A, B, C.
  237. ;
  238. DR$EXTRDY:
  239.         IN0     A,(MODSTAT)
  240.         IN0     A,(MODSTAT)     ;DO TWICE FOR VALID DCD
  241.         XOR     MDSNDR
  242.         AND     MDSNDB
  243.         RET
  244.  
  245. ;...............................
  246. ;
  247. ; SEND BYTE TO MODEM
  248. ; May use registers A, B, C.
  249. ;
  250. DR$OUTEXT:
  251.         OUT0    (MODOUT),A
  252.         RET
  253.  
  254. ;...............................
  255. ;
  256. ; RESET/INIT MODEM PORT
  257. ;
  258. DR$INITMOD:
  259.         LD      A,(WORD)
  260.         OUT0    (MODCT1),A
  261.         LD      A,(BAUD)
  262.         AND     7FH             ;CHANGE 80H TO 00H IF 3.072 MHZ CLOCK
  263.         OUT0    (BAUDRP),A
  264.         RET
  265.  
  266. ;
  267. ;................................
  268. ;
  269.         END                     ;PMO-SB10.Z80
  270.