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 / RCPM / ZMD150.LBR / ZMAP.ZZ0 / ZMAP.Z80
Text File  |  2000-06-30  |  5KB  |  268 lines

  1. ;
  2.  
  3.     TITLE  ZMAP.Z80 - 09/29/88 - ZMD System MAP Utility
  4. ;                     Copyrighted (c) 1988
  5. ;                     Robert W. Kramer III
  6.  
  7.     PAGE
  8. ;-                                     -;
  9. ;                         Update History                                  ;
  10. ;                                                                         ;
  11. ;    Date    Release                 Comments                     ;
  12. ;  --------    -------      ----------------------------------------------  ;
  13. ;                                                                         ;
  14. ;  09/29/88    v1.50    - Initial release                  ;
  15. ;-                                                                       -;
  16.  
  17. ;-------------------------------------------------------------------------;
  18. ; EXTERNAL Declarations:                          |
  19. ;-------------------------------------------------------------------------;
  20.  
  21.  
  22.     EXTRN    EXIT,ILPRTB,OLDDRV,OLDUSR,PRINTV,RECAR1,STACK,TYPE
  23.     EXTRN    KIND,CATADR,SHONM4,WHLCHK,DECOUT
  24.  
  25. ;
  26. ;-------------------------------------------------------------------------;
  27. ; Program Starts Here                              |
  28. ;-------------------------------------------------------------------------;
  29.  
  30.  
  31.        .Z80
  32.     ASEG
  33.     ORG    100H        ; Program starts 
  34.     JP    BEGIN        ; Jump around configuration table
  35.     INCLUDE    ZMDHDR.Z80    ; Include the ZMD header overlay
  36.        .REQUEST ZMDSUBS        ; Include the ZMD subroutines
  37.  
  38. ;
  39. ;
  40. ; Save CP/M stack, initialize new one for this program
  41. ;
  42. BEGIN:    LD    (STACK),SP    ; Save return address to CCP
  43.     LD    SP,STACK    ; Initialize new one for this program
  44.  
  45. ;
  46. ; Save current drive/user
  47. ;
  48.     LD    A,255        ; Get current user
  49.     CALL    RECAR1
  50.     LD    (OLDUSR),A    ; Store it
  51.     LD    C,CURDRV    ; Get current drive
  52.     CALL    BDOS
  53.     LD    (OLDDRV),A    ; Store it
  54.  
  55. ;
  56. ;
  57. ; Display program name and version 
  58. ;
  59. BEGIN1:    LD    HL,MAPNAM    ; Point to name of this program
  60.     CALL    PRINTV        ; Display it
  61.  
  62.     LD    A,(ASKAREA)
  63.     OR    A
  64.     JP    Z,NOTDEF    ; Upload areas not enabled, Abort
  65.  
  66.     CALL    WHLCHK
  67.     JP    Z,BEGIN2
  68.     LD    A,1
  69.     LD    (SPECIAL),A
  70.  
  71. BEGIN2:    CALL    HBORD
  72.  
  73.     LD    A,'A'
  74.     LD    (KIND),A
  75.  
  76.     LD    A,(MAXTYP)
  77.     RRA
  78.     PUSH    AF
  79.  
  80.     LD    A,(MAXTYP)
  81.     SUB    A,'A'
  82.     RRA
  83.     LD    C,A
  84.  
  85.     POP    AF
  86.     JP    NC,NOTODD
  87.     LD    A,1
  88.     LD    (ISODD),A
  89.  
  90. NOTODD:    INC    C
  91.     LD    A,'A'
  92.     ADD    A,C
  93.     LD    C,A        ; C contains letter of 2nd column descriptors
  94.  
  95.     LD    A,(MAXTYP)
  96.     SUB    A,'@'
  97.     LD    B,A        ; B contains binary number of descriptors
  98.  
  99.     LD    DE,DESTBL    ; DE contains address to 26 byte table
  100.     LD    A,C
  101.     EX    AF,AF'
  102.     LD    A,'A'        ; Initialize first entry
  103.  
  104. SETLP:    LD    (DE),A
  105.     INC    DE
  106.     INC    A
  107.     EX    AF,AF'
  108.     DJNZ    SETLP
  109.     LD    A,0
  110.     LD    (DE),A        ; Stuff terminator for display routines
  111.  
  112. ;
  113. ; Main program loop
  114. ;
  115. LOOP:    LD    A,(COLM)
  116.     OR    A
  117.     JP    NZ,DOCOL2
  118.  
  119.     CALL    ILPRTB
  120.     DB    '  | ',0
  121.     JP    ATEND
  122.  
  123. DOCOL2:    CALL    ILPRTB
  124.     DB    ' || ',0
  125.  
  126. ATEND:    CALL    SHOWFD
  127.     CALL    SHOWDU
  128.     LD    A,(COLM)
  129.     OR    A
  130.     JP    Z,ATEND1
  131.     CALL    ILPRTB
  132.     DB    ' |'
  133.     DB    CR,LF,0
  134.     XOR    A
  135.     JP    ATEND2
  136.  
  137. ATEND1:    LD    A,1
  138.     
  139. ATEND2:    LD    (COLM),A
  140.  
  141.     LD    HL,(TBLSAV)
  142.     INC    HL
  143.     LD    (TBLSAV),HL
  144.     LD    A,(HL)
  145.     LD    (KIND),A
  146.     OR    A
  147.     JP    NZ,LOOP
  148.  
  149.     LD    A,(ISODD)
  150.     OR    A
  151.     JP    Z,ISDN1
  152.  
  153. ISDONE:    CALL    ILPRTB
  154.     DB    ' ||                             ',0
  155.     LD    A,(SPECIAL)
  156.     OR    A
  157.     JP    Z,IS1
  158.     CALL    ILPRTB
  159.     DB    '     ',0
  160.  
  161. IS1:    CALL    ILPRTB
  162.     DB    ' |',CR,LF,0
  163.  
  164. ISDN1:    CALL    HBORD
  165.     CALL    ILPRTB
  166.     DB    CR,LF
  167.     DB    '  Use FOR/NEW to view recent upload description/log listings.'
  168.     DB    0
  169.     JP    EXIT
  170. ;
  171. ;
  172. SHOWDU:    LD    A,(KIND)
  173.     SUB    'A'
  174.     RLA
  175.     RLA
  176.     LD    D,0
  177.     LD    E,A
  178.     LD    IY,TYPTBL
  179.     ADD    IY,DE
  180.     LD    A,(IY)
  181.     CALL    TYPE
  182.  
  183.     LD    A,(IY+1)
  184.     CALL    SHODU1
  185.  
  186.     CALL    ILPRTB
  187.     DB    ' ',0
  188.  
  189.     LD    A,(SPECIAL)
  190.     OR    A
  191.     RET    Z
  192.  
  193.     LD    A,(IY+2)
  194.     CALL    TYPE
  195.  
  196.     LD    A,(IY+3)
  197.  
  198. SHODU1:    CP    10
  199.     PUSH    AF    
  200.  
  201.     LD    H,0
  202.     LD    L,A
  203.     CALL    DECOUT
  204.     CALL    ILPRTB
  205.     DB    ':',0
  206.  
  207.     POP    AF
  208.     RET    C
  209.  
  210.     CALL    ILPRTB
  211.     DB    ' ',0
  212.     RET
  213.  
  214. ;
  215. ;
  216. SHOWFD:    CALL    CATADR
  217.     INC    DE
  218.     INC    DE
  219.     LD    B,23
  220.  
  221. SHOFD1:    LD    A,(DE)
  222.     CALL    TYPE
  223.     INC    DE
  224.     DJNZ    SHOFD1
  225.     CALL    ILPRTB
  226.     DB    ' ',0
  227.     RET
  228.  
  229. ;
  230. ; Show horizontal border for top and bottom
  231. ;
  232. HBORD:    CALL    ILPRTB
  233.     DB    '  ================================================================',0
  234.     LD    A,(SPECIAL)
  235.     OR    A
  236.     JP    Z,HBORD1
  237.     CALL    ILPRTB
  238.     DB    '==========',0
  239.  
  240. HBORD1:    CALL    ILPRTB
  241.     DB    CR,LF,0
  242.     RET
  243.  
  244. NOTDEF:    CALL    ILPRTB
  245.     DB    CR,LF
  246.     DB    'ZMD Upload Routing feature not enabled, ',0
  247.     LD    HL,MAPNAM
  248.     CALL    SHONM4
  249.     CALL    ILPRTB
  250.     DB    'aborting...',0
  251.     JP    EXIT
  252. ;
  253. ; These next are dummy routines to satisfy ZMDSUBS external requests.
  254. ; They do nothing, but leave them alone.
  255. ;
  256. DONE::    JP    EXIT        ; Exit routine can take care of us
  257. TIME::    RET
  258.  
  259. TBLSAV:    DW    DESTBL
  260. DESTBL:    DB    'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  261. ISODD:    DB    0
  262. COUNT:    DB    0
  263. COLM:    DB    0
  264. SPECIAL:DB    0
  265.  
  266.  
  267.     END
  268.