home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol050 / syscmd < prev    next >
Encoding:
Text File  |  1984-04-29  |  3.8 KB  |  291 lines

  1. ;
  2. ;    +----------------------------+
  3. ;    |                 |
  4. ;    |     S  Y  S  T  E  M       |
  5. ;    ;                 |
  6. ;    +----------------------------+
  7. ;
  8. ;
  9. ;    Version number:    2.1
  10. ;    Version date:    April 30, 1981
  11. ;
  12.  
  13. ;    The following code is supplied to customers who
  14. ;    purchase a hard/floppy disk system from DTC.
  15. ;    The command
  16. ;    SYSTEM z xxx y
  17. ;    computes the memory size and offset arguments for
  18. ;    the SYSTEM1.SUB SUBMIT file and executes
  19. ;    SUBMIT SYSTEM1 z xxx mm hhhh y
  20. ;
  21. ;
  22. VERS:    EQU    21
  23. ;
  24. CR:    EQU    0Dh    ;ASCII carriage return
  25. LF:    EQU    0Ah    ;ASCII line feed
  26. TAB:    EQU    9    ;ASCII horizontal tab
  27. EOS:    EQU    '$'    ;BDOS end of string
  28. ;
  29. ;
  30. ;    BDOS function equates
  31. ;
  32. PRTSTR:    EQU    09    ;Print string,    DE=buffer address
  33. INIT:    EQU    13    ;Initialize BDOS
  34. ;
  35. ;    Page zero locations
  36. ;
  37. BOOT:    EQU    0
  38. CDISK:    EQU    4
  39. BDOSV:    EQU    5
  40. DBUF:    EQU    080h    ;Default buffer
  41. ;
  42. MM:    EQU    MSIZE-(BIOSIZ-600h)/K
  43. ;
  44. ;
  45.  
  46. ;    Assembly switch
  47. DAW:    EQU    FALSE
  48. ;
  49.  
  50.     ORG    100h
  51.  
  52. SYSCMD:
  53.     PUSH    PSW
  54.     PUSH    B
  55.     PUSH    D
  56.     PUSH    H
  57.     LXI    H,0
  58.     DAD    SP
  59.     SHLD    SYSTK
  60.     LXI    SP,STACK
  61.  
  62.     CALL    SYS
  63.  
  64. SYSRET:
  65.     LHLD    SYSTK
  66.     SPHL
  67.     POP    H
  68.     POP    D
  69.     POP    B
  70.     POP    PSW
  71.     RET
  72.  
  73. SYS:
  74.     LXI    H,DBUF        ;Get buffer count
  75.     MOV    A,M
  76.     ORA    A
  77.     JZ    HELP
  78.     MOV    B,A
  79.     LXI    D,ARG
  80. SYS1:
  81.     INX    H        ;Point to string
  82.     MOV    A,M        ;Skip leading spaces
  83.     CPI    ' '
  84.     JNZ    SYS2
  85.     DCR    B
  86.     JZ    HELP
  87.     JMP    SYS1
  88. SYS2:
  89.     CPI    'A'        ;Validate drive
  90.     JC    HELP
  91.     CPI    'P'+1
  92.     JNC    HELP
  93.     STAX    D
  94.     INX    D
  95.     MVI    A,' '
  96.     STAX    D
  97.     INX    D
  98. SYS3:
  99.     DCR    B        ;Skip to unit record file name
  100.     JZ    HELP
  101.     INX    H
  102.     MOV    A,M
  103.     CPI    ' '
  104.     JZ    SYS3
  105. SYS4:
  106.     STAX    D        ;Move unit record file name
  107.     INX    D
  108.     INX    H
  109.     DCR    B
  110.     JZ    HELP
  111.     MOV    A,M
  112.     CPI    ' '
  113.     JNZ    SYS4
  114.     STAX    D
  115.     INX    D
  116.     MVI    A,MM/10+'0'    ;mm
  117.     STAX    D
  118.     INX    D
  119.     MVI    A,MM MOD 10 +'0'
  120.     STAX    D
  121.     INX    D
  122.     MVI    A,' '
  123.     STAX    D
  124.     INX    D
  125.     PUSH    B
  126.     LXI    B,1F80h-CBIOS    ;hhhh
  127.     MOV    A,B
  128.     CALL    BYTHEX
  129.     MOV    A,C
  130.     CALL    BYTHEX
  131.     MVI    A,' '
  132.     STAX    D
  133.     INX    D
  134.     POP    B        ;y
  135. SYS5:
  136.     MOV    A,M
  137.     INX    H
  138.     CPI    ' '
  139.     JNZ    SYS6
  140.     DCR    B
  141.     JZ    HELP
  142.     JMP    SYS5
  143. SYS6:
  144.     STAX    D
  145.     INX    D
  146.     XRA    A        ;Terminate command string
  147.     STAX    D
  148.     LXI    H,CCPCMD    ;Compute command string length
  149.     MOV    A,E
  150.     SBB    L
  151.     MOV    C,A
  152.     INR    C
  153.     DCR    A
  154.     MOV    M,A
  155.  
  156.     IF    DAW
  157.     PUSH    B
  158.  
  159.     MVI    C,INIT        ;Initialize BDOS
  160.     CALL    BDOSV
  161.     CALL    HOME        ;Get fresh copy of CCP
  162.     LXI    B,CCP
  163.     MVI    E,2        ;Starting sector
  164.     MVI    D,(BDOS-CCP)/128    ;Number of sectors
  165. SYS7:
  166.     PUSH    B
  167.     PUSH    D
  168.     CALL    SETDMA
  169.     POP    B
  170.     PUSH    B
  171.     MVI    B,0
  172.     CALL    SETSEC
  173.     CALL    READ
  174.     POP    D
  175.     POP    B
  176.     LXI    H,128
  177.     DAD    B
  178.     MOV    B,H
  179.     MOV    C,L
  180.     INR    E
  181.     DCR    D
  182.     JNZ    SYS7
  183.     MVI    C,INIT
  184.     CALL    BDOSV
  185.     
  186.     POP    B
  187.     LXI    H,CCPCMD
  188.     LXI    D,CCP+7        ;Move command to CCP buffer
  189. SYS8:
  190.     MOV    A,M
  191.     STAX    D
  192.     INX    H
  193.     INX    D
  194.     DCR    C
  195.     JNZ    SYS8
  196.     LDA    CDISK
  197.     MOV    C,A
  198.     JMP    CCP+3        ;Execute CCP command
  199.     ENDIF
  200.     IF    NOT DAW
  201.     MVI    A,EOS
  202.     STAX    D
  203.     LXI    D,USRMSG
  204.     MVI    C,PRTSTR
  205.     CALL    BDOSV
  206.     LXI    D,CCPCMD+1
  207.     MVI    C,PRTSTR
  208.     CALL    BDOSV
  209.     RET
  210.  
  211. USRMSG:    DB    CR,LF,LF,'Command string is:',CR,LF,LF,TAB,EOS
  212.     ENDIF
  213.  
  214.  
  215. BYTHEX:
  216.     PUSH    PSW        ;Save byte to be converted
  217.     RAR            ;Convert most significant nibble
  218.     RAR
  219.     RAR
  220.     RAR
  221.     CALL    HEXASC        ;Make it an ASCII character
  222.     POP    PSW        ;Convert least significant nibble
  223. HEXASC:
  224.     ANI    0Fh
  225.     ADI    090h
  226.     DAA
  227.     ACI    040h
  228.     DAA
  229.     STAX    D
  230.     INX    D
  231.     RET
  232.  
  233.  
  234. ;    BIOS Subroutines
  235. ;
  236. HOME:    LHLD    BOOT+1
  237.     MVI    L,18h
  238.     PCHL
  239.  
  240. SETSEC:    LHLD    BOOT+1
  241.     MVI    L,21h
  242.     PCHL
  243.  
  244. SETDMA:    LHLD    BOOT+1
  245.     MVI    L,24h
  246.     PCHL
  247.  
  248. READ:    LHLD    BOOT+1
  249.     MVI    L,27h
  250.     PCHL
  251.  
  252.  
  253. HELP:    MVI    C,PRTSTR    ;Print help message
  254.     LXI    D,HELPM
  255.     CALL    BDOSV
  256.     JMP    BOOT
  257.  
  258. HELPM:    DB    CR,LF,LF
  259.     IF    DAW
  260.     DB    'SYSTEM'
  261.     ENDIF
  262.     IF    NOT DAW
  263.     DB    'SYSCMD'
  264.     ENDIF
  265.     DB    ' z xxx y',CR,LF,LF
  266.     DB    'Determines the SYSTEM'
  267.     IF    DAW
  268.     DB    '1'
  269.     ENDIF
  270.     DB    '.SUB parameters mm and hhhh',CR,LF
  271.     IF    DAW
  272.     DB    'and does',CR,LF,LF
  273.     DB    'SUBMIT SYSTEM1 z xxx mm hhhh y',CR,LF
  274.     ENDIF
  275.     DB    EOS
  276.  
  277. ;    CCP command string
  278. ;
  279. CCPCMD:    DB    0        ;length
  280.     DB    'SUBMIT SYSTEM'
  281.     IF    DAW
  282.     DB    '1'
  283.     ENDIF
  284.     DB    ' '
  285. ARG:    DS    30
  286.  
  287. SYSTK:    DS    2
  288.     DS    50
  289. STACK:    EQU    $
  290.     END
  291.