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 / DEMON / PMAUTOAE.COM / PMCHGMX.MAC < prev    next >
Text File  |  1979-11-30  |  7KB  |  420 lines

  1. ;    PMarc Patching Utility
  2. ;        For    MSX-DOS & MSX-DOS2
  3. ;            (time stamping)
  4. ;
  5. ;    Copyright    SO LONG(msx03633 & pcs30481)
  6. ;
  7. ;    VERSION        PMCHGMX.MAC    Ver 1.03
  8. ;            (This program)
  9. ;            PMarc        Ver 1.10 or newer than it
  10. ;            PMahs        Ver 1.10 or newer than it
  11. ;            PMext        Ver 1.13 or newer than it
  12. ;
  13.  
  14. BDOS    EQU    0005H
  15.     
  16. SYSTEM    MACRO    CALL_NO
  17.     LD    C,CALL_NO
  18.     CALL    BDOS
  19.     ENDM
  20.  
  21.     ASEG
  22.  
  23.     .Z80
  24.     
  25.     ORG    100H
  26.     
  27.     ;    Start Patching
  28.     LD    DE,MESSAGE_1
  29.     SYSTEM    09H        ;_STROUT
  30.     LD    DE,MESSAGE_2
  31.     SYSTEM    09H        ;_STROUT
  32.  
  33. PATCH_1:
  34.     LD    DE,PATCH_PMARC    ;    Patching PMarc.COM
  35.     SYSTEM    1AH        ;_SETDTA
  36.     LD    DE,MESSAGE_3
  37.     SYSTEM    09H        ;_STROUT
  38.     LD    DE,ARC_FCB
  39.     SYSTEM    0FH        ;_FOPEN
  40.     OR    A
  41.     JR    Z,OPEN_1
  42.     LD    DE,OPEN_ERROR
  43.     SYSTEM    09H        ;_STROUT
  44.     JR    PATCH_2
  45. OPEN_1:    LD    HL,0001H    ;Record Size Set
  46.     LD    (ARC_FCB+0EH),HL
  47.     LD    HL,0000H    ;Record Number Set
  48.     LD    (ARC_FCB+23H),HL
  49.     LD    HL,0010H
  50.     LD    (ARC_FCB+21H),HL
  51.     LD    HL,ARC_PATCH_LEN
  52.     LD    DE,ARC_FCB
  53.     SYSTEM    26H        ;_WRBLK
  54.     OR    A
  55.     JR    Z,ARC_MESSAGE
  56.     LD    DE,WRITE_ERROR
  57.     SYSTEM    09H        ;_STROUT
  58.     JR    PATCH_2
  59. ARC_MESSAGE:
  60.     LD    DE,PATCH_MESSAGE
  61.     SYSTEM    1AH        ;_SETDTA
  62.     LD    HL,0000H    ;Record Number Set
  63.     LD    (ARC_FCB+23H),HL
  64.     LD    HL,0082H
  65.     LD    (ARC_FCB+21H),HL
  66.     LD    HL,000BH
  67.     LD    DE,ARC_FCB
  68.     SYSTEM    26H        ;_WRBLK
  69.     OR    A
  70.     JR    Z,CLOSE_1
  71.     LD    DE,WRITE_ERROR
  72.     SYSTEM    09H        ;_STROUT
  73.     JR    PATCH_2
  74. CLOSE_1:
  75.     LD    DE,ARC_FCB
  76.     SYSTEM    10H        ;_FCLOSE
  77.     OR    A
  78.     JR    Z,PATCH_OK_1
  79.     LD    DE,CLOSE_ERROR
  80.     SYSTEM    09H        ;_STROUT
  81.     JR    PATCH_2
  82. PATCH_OK_1:
  83.     LD    DE,PATCH_COMPLETE
  84.     SYSTEM    09H        ;_STROUT
  85.  
  86. PATCH_2:
  87.     LD    DE,PATCH_PMARC    ;    Patching PMahs.COM
  88.     SYSTEM    1AH        ;_SETDTA
  89.     LD    DE,MESSAGE_4
  90.     SYSTEM    09H        ;_STROUT
  91.     LD    DE,AHS_FCB
  92.     SYSTEM    0FH        ;_FOPEN
  93.     OR    A
  94.     JR    Z,OPEN_2
  95.     LD    DE,OPEN_ERROR
  96.     SYSTEM    09H        ;_STROUT
  97.     JR    PATCH_3
  98. OPEN_2:    LD    HL,0001H    ;Record Size Set
  99.     LD    (AHS_FCB+0EH),HL
  100.     LD    HL,0000H    ;Record Number Set
  101.     LD    (AHS_FCB+23H),HL
  102.     LD    HL,0010H
  103.     LD    (AHS_FCB+21H),HL
  104.     LD    HL,ARC_PATCH_LEN
  105.     LD    DE,AHS_FCB
  106.     SYSTEM    26H        ;_WRBLK
  107.     OR    A
  108.     JR    Z,AHS_MESSAGE
  109.     LD    DE,WRITE_ERROR
  110.     SYSTEM    09H        ;_STROUT
  111.     JR    PATCH_3
  112. AHS_MESSAGE:
  113.     LD    DE,PATCH_MESSAGE
  114.     SYSTEM    1AH        ;_SETDTA
  115.     LD    HL,0000H    ;Record Number Set
  116.     LD    (AHS_FCB+23H),HL
  117.     LD    HL,0082H
  118.     LD    (AHS_FCB+21H),HL
  119.     LD    HL,000BH
  120.     LD    DE,AHS_FCB
  121.     SYSTEM    26H        ;_WRBLK
  122.     OR    A
  123.     JR    Z,CLOSE_2
  124.     LD    DE,WRITE_ERROR
  125.     SYSTEM    09H        ;_STROUT
  126.     JR    PATCH_3
  127. CLOSE_2:
  128.     LD    DE,AHS_FCB
  129.     SYSTEM    10H        ;_FCLOSE
  130.     OR    A
  131.     JR    Z,PATCH_OK_2
  132.     LD    DE,CLOSE_ERROR
  133.     SYSTEM    09H        ;_STROUT
  134.     JR    PATCH_3
  135. PATCH_OK_2:
  136.     LD    DE,PATCH_COMPLETE
  137.     SYSTEM    09H        ;_STROUT
  138.  
  139. PATCH_3:            ;    Patching PMext.COM
  140.     LD    DE,MESSAGE_5
  141.     SYSTEM    09H        ;_STROUT
  142.     LD    DE,PATCH_PMEXT1
  143.     SYSTEM    1AH        ;_SETDTA
  144.     LD    DE,EXT_FCB
  145.     SYSTEM    0FH        ;_FOPEN
  146.     OR    A
  147.     JR    Z,OPEN_3
  148.     LD    DE,OPEN_ERROR
  149.     SYSTEM    09H        ;_STROUT
  150.     JP    PATCH_END
  151. OPEN_3:    LD    HL,0001H    ;Record Size Set
  152.     LD    (EXT_FCB+0EH),HL
  153. AREA1:    LD    HL,0000H    ;Record Number Set
  154.     LD    (EXT_FCB+23H),HL
  155.     LD    HL,0010H
  156.     LD    (EXT_FCB+21H),HL
  157.     LD    HL,EXT_PATCH_LEN1
  158.     LD    DE,EXT_FCB
  159.     SYSTEM    26H        ;_WRBLK
  160.     OR    A
  161.     JR    Z,AREA2
  162.     LD    DE,WRITE_ERROR
  163.     SYSTEM    09H        ;_STROUT
  164.     JR    PATCH_END
  165. AREA2:    LD    DE,PATCH_PMEXT2
  166.     SYSTEM    1AH        ;_SETDTA
  167.     LD    HL,0000H    ;Record Number Set
  168.     LD    (EXT_FCB+23H),HL
  169.     LD    HL,00C0H
  170.     LD    (EXT_FCB+21H),HL
  171.     LD    HL,EXT_PATCH_LEN2
  172.     LD    DE,EXT_FCB
  173.     SYSTEM    26H        ;_WRBLK
  174.     OR    A
  175.     JR    Z,EXT_MESSAGE
  176.     LD    DE,WRITE_ERROR
  177.     SYSTEM    09H        ;_STROUT
  178.     JR    PATCH_END
  179. EXT_MESSAGE:
  180.     LD    DE,PATCH_MESSAGE
  181.     SYSTEM    1AH        ;_SETDTA
  182.     LD    HL,0000H    ;Record Number Set
  183.     LD    (EXT_FCB+23H),HL
  184.     LD    HL,0082H
  185.     LD    (EXT_FCB+21H),HL
  186.     LD    HL,000BH
  187.     LD    DE,EXT_FCB
  188.     SYSTEM    26H        ;_WRBLK
  189.     OR    A
  190.     JR    Z,CLOSE_3
  191.     LD    DE,WRITE_ERROR
  192.     SYSTEM    09H        ;_STROUT
  193.     JR    PATCH_END
  194. CLOSE_3:
  195.     LD    DE,EXT_FCB
  196.     SYSTEM    10H        ;_FCLOSE
  197.     OR    A
  198.     JR    Z,PATCH_OK_3
  199.     LD    DE,CLOSE_ERROR
  200.     SYSTEM    09H        ;_STROUT
  201.     JR    PATCH_END
  202. PATCH_OK_3:
  203.     LD    DE,PATCH_COMPLETE
  204.     SYSTEM    09H        ;_STROUT
  205.  
  206. PATCH_END:
  207.     LD    DE,PROGRAM_END
  208.     SYSTEM    09H        ;_STROUT
  209.     JP    0000H
  210.  
  211. MESSAGE_1:    DB    0DH,0AH,"PMarc Patching Utility for MSX-DOS(2)$"
  212. MESSAGE_2:    DB    0DH,0AH,"       Ver 1.03 (C) SO LONG  1990$"
  213. MESSAGE_3:    DB    0DH,0AH,0AH,"Patching PMarc.COM$"
  214. MESSAGE_4:    DB    0DH,0AH,0AH,"Patching PMahs.COM$"
  215. MESSAGE_5:    DB    0DH,0AH,0AH,"Patching PMext.COM$"
  216.  
  217. OPEN_ERROR:    DB    0DH,0AH,"File Not Found.$"
  218. WRITE_ERROR:    DB    0DH,0AH,"Write Error.$"
  219. CLOSE_ERROR:    DB    0DH,0AH,"Close Error.$"
  220.  
  221. PATCH_COMPLETE:    DB    0DH,0AH,"Patching Complete.$"
  222.  
  223. PROGRAM_END:    DB    0DH,0AH,0AH,"END",0DH,0AH,24H
  224.  
  225. PATCH_MESSAGE:    DB    "MSX-DOS(2)$"
  226.  
  227.     ;    FCB AREA
  228.  
  229. ARC_FCB:    DB    00H,"PMARC   COM"
  230.         DS    19H,00H
  231.  
  232. AHS_FCB:    DB    00H,"PMAHS   COM"
  233.         DS    19H,00H
  234.  
  235. EXT_FCB:    DB    00H,"PMEXT   COM"
  236.         DS    19H,00H
  237.  
  238.     ;    Patch for PMarc.COM & PMahs.COM
  239.  
  240. PATCH_PMARC:
  241.  
  242.     .PHASE    0110H
  243.     
  244.     PUSH    HL
  245.     PUSH    DE
  246.     SYSTEM    6FH        ;_DOSVER
  247.     LD    A,02H
  248.     CP    B
  249.     JR    Z,ARC_PATCH_DOS2
  250. ARC_ASCIIZ:
  251.     POP    DE
  252.     LD    HL,0016H
  253.     ADD    HL,DE
  254.     POP    DE
  255.     LDI
  256.     LDI
  257.     DEC    HL
  258.     DEC    HL
  259.     DEC    HL
  260.     DEC    HL
  261.     LDI
  262.     LDI
  263.     OR    A
  264.     RET
  265.     
  266. ARC_PATCH_DOS2:
  267.     POP    HL
  268.     PUSH    HL
  269.     LD    DE,ARC_ASCIIZ
  270.     LD    A,(HL)
  271.     OR    A
  272.     JR    Z,CURRENT_
  273.     ADD    A,'@'
  274.     LD    (DE),A
  275.     INC    DE
  276.     LD    A,':'
  277.     LD    (DE),A
  278.     INC    DE
  279. CURRENT_:
  280.     LD    B,08H
  281. LOOP01:    INC    HL
  282.     LD    A,(HL)
  283.     CP    ' '
  284.     JR    Z,ARC_EXT
  285.     LD    (DE),A
  286.     INC    DE
  287.     DJNZ    LOOP01
  288. ARC_EXT:
  289.     LD    A,'.'
  290.     LD    (DE),A
  291.     INC    DE
  292.     LD    BC,0008H
  293.     POP    HL
  294.     ADD    HL,BC
  295.     LD    B,03H
  296. LOOP02:    INC    HL
  297.     LD    A,(HL)
  298.     CP    ' '
  299.     JR    Z,GET_TSTAMP
  300.     LD    (DE),A
  301.     INC    DE
  302.     DJNZ    LOOP02
  303. GET_TSTAMP:
  304.     XOR    A
  305.     LD    (DE),A
  306.     LD    DE,ARC_ASCIIZ
  307.     SYSTEM    51H        ;_FTIME
  308.     POP    IX
  309.     LD    (IX+00H),E
  310.     LD    (IX+01H),D
  311.     LD    (IX+02H),L
  312.     LD    (IX+03H),H
  313.     OR    A
  314.     RET
  315.  
  316.     .DEPHASE
  317.  
  318.     ;    Patch for PMext.COM
  319.  
  320. PATCH_PMEXT1:
  321.     .PHASE    0110H
  322.  
  323.     PUSH    HL
  324.     PUSH    DE
  325.     SYSTEM    6FH        ;_DOSVER
  326.     LD    A,02H
  327.     CP    B
  328.     JP    NZ,01C1H
  329.     POP    DE
  330.     PUSH    DE
  331.     SYSTEM    10H        ;_FCLOSE
  332.     POP    HL
  333.     PUSH    HL
  334.     LD    DE,01C1H
  335.     LD    A,(HL)
  336.     OR    A
  337.     JR    Z,CURRENT
  338.     ADD    A,'@'
  339.     LD    (DE),A
  340.     INC    DE
  341.     LD    A,':'
  342.     LD    (DE),A
  343.     INC    DE
  344. CURRENT:LD    B,08H
  345. LOOP03:    INC    HL
  346.     LD    A,(HL)
  347.     CP    ' '
  348.     JR    Z,EXT_EXT
  349.     LD    (DE),A
  350.     INC    DE
  351.     DJNZ    LOOP03
  352. EXT_EXT:
  353.     LD    A,'.'
  354.     LD    (DE),A
  355.     INC    DE
  356.     LD    BC,0008H
  357.     POP    HL
  358.     ADD    HL,BC
  359.     LD    B,03H
  360. LOOP04:    INC    HL
  361.     LD    A,(HL)
  362.     CP    ' '
  363.     JR    Z,PUT_TSTAMP
  364.     LD    (DE),A
  365.     INC    DE
  366.     DJNZ    LOOP04
  367.  
  368. PUT_TSTAMP:
  369.     XOR    A
  370.     LD    (DE),A
  371.     POP    HL
  372.     LD    C,(HL)
  373.     INC    HL
  374.     LD    B,(HL)
  375.     INC    HL
  376.     LD    E,(HL)
  377.     INC    HL
  378.     LD    D,(HL)
  379.     EX    DE,HL
  380.     PUSH    BC
  381.     POP    IX
  382.     LD    DE,01C1H
  383.     INC    A
  384.     SYSTEM    51H        ;_FTIME
  385.     POP    HL
  386.     LD    DE,0008H
  387.     ADD    HL,DE
  388.     PUSH    HL
  389.     RET
  390.  
  391.     .DEPHASE
  392.  
  393. PATCH_PMEXT2:
  394.     .PHASE    01C0H
  395.  
  396.     RET
  397.     POP    DE
  398.     POP    HL
  399.     EX    DE,HL
  400.     LD    BC,0016H
  401.     ADD    HL,BC
  402.     EX    DE,HL
  403.     LDI
  404.     LDI
  405.     DEC    DE
  406.     DEC    DE
  407.     DEC    DE
  408.     DEC    DE
  409.     LDI
  410.     LDI
  411.     RET
  412.  
  413.     .DEPHASE
  414.  
  415. ARC_PATCH_LEN    EQU    PATCH_PMEXT1-PATCH_PMARC
  416. EXT_PATCH_LEN1    EQU    PATCH_PMEXT2-PATCH_PMEXT1
  417. EXT_PATCH_LEN2    EQU    $-PATCH_PMEXT2
  418.  
  419.     END
  420.