home *** CD-ROM | disk | FTP | other *** search
/ Transactor / Transactor_26_1988_Transactor_Publishing.d64 / redate.asm < prev    next >
Assembly Source File  |  2023-02-26  |  11KB  |  543 lines

  1.  
  2.  
  3. rEDATE
  4.  
  5.  
  6.  
  7. ; 1  title
  8.  
  9.  
  10.  
  11. ;
  12.  
  13. ; redate (C) 1988 aDAM hERST, tORONTO, oNT.
  14.  
  15. ;
  16.  
  17. ;sET THE SYSTEM DATE
  18.  
  19. ;TO THAT OF THE MOST RECENTLY ACCESSED FILE
  20.  
  21. ;ON THE SPECIFIED DISK.
  22.  
  23. ;rEQUIRES THAT ACCESS FILE STAMPING HAS BEEN ACTIVATED.
  24.  
  25. ;
  26.  
  27.  
  28.  
  29.  
  30.  
  31. ; 2  history
  32.  
  33.  
  34.  
  35. ;
  36.  
  37. ;V2.1aDDS DRIVE OPTION
  38.  
  39. ;sETS PROGRAM RETURN CODE TO ERROR IF NO STAMP FOUND
  40.  
  41. ;
  42.  
  43. ;V2.0fIRST WORKING VERSION
  44.  
  45. ;
  46.  
  47. ;V1.0nON-WORKING PROTOTYPE
  48.  
  49. ;
  50.  
  51.  
  52.  
  53.  
  54.  
  55. ; 3  equates
  56.  
  57.  
  58.  
  59. gETsETrETcODEEQU6CH
  60.  
  61. sETdmaaDDREQU1AH
  62.  
  63. sELdISKEQU0EH
  64.  
  65. gETsETuSEREQU20H
  66.  
  67. pARSEfILEnAMEEQU98H
  68.  
  69. sEARCHfIRSTEQU11H
  70.  
  71. sEARCHnEXTEQU12H
  72.  
  73. gETdATEpASSWDEQU66H
  74.  
  75. sETdATEEQU68H
  76.  
  77.  
  78.  
  79. bdos:EQU5H
  80.  
  81. cpmfcb:EQU5CH
  82.  
  83. fcbfilename:EQUcpmfcb+1D
  84.  
  85. fcbaccess:EQUcpmfcb+24D
  86.  
  87. mydma:EQU0400H
  88.  
  89. filenamestack:EQU0500H
  90.  
  91. dmarecoffsetEQU20H
  92.  
  93. retcodeccpsuc:EQU0000H; ccp-INITIALIZED SUCCESS CODE
  94.  
  95. retcodeusrerr:EQU0ff00H; uSER SET ERROR CODE
  96.  
  97.  
  98.  
  99.  
  100.  
  101. ; 4  prolog
  102.  
  103.  
  104.  
  105. ; 4.1  pROGRAM START
  106.  
  107.  
  108.  
  109. ORG100H
  110.  
  111.  
  112.  
  113.  
  114.  
  115. ; 4.2  sET PROGRAM RETURN CODE TO ERROR
  116.  
  117.  
  118.  
  119. MVIC,gETsETrETcODE
  120.  
  121. LXID,retcodeusrerr
  122.  
  123. CALLbdos
  124.  
  125.  
  126.  
  127.  
  128.  
  129. ; 4.3  sET DMA BUFFER
  130.  
  131.  
  132.  
  133. MVIC,sETdmaaDDR
  134.  
  135. LXID,mydma
  136.  
  137. CALLbdos
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147. ; 5  fIND MOST RECENT ACCESS STAMP AND SAVE IT
  148.  
  149.  
  150.  
  151. ; 5.1  hAS A DRIVE BEEN SPECIFIED?
  152.  
  153.  
  154.  
  155. LXIH,cpmfcb; POINT TO DRIVE LETTER
  156.  
  157.  MOVA,M; GET DRIVE LETTER
  158.  
  159. CPI0H; IS IT ALREADY THE DEFAULT?
  160.  
  161.  
  162.  
  163.  
  164.  
  165. ; 5.2  iF NO THEN START CHECKING FILES
  166.  
  167.  
  168.  
  169. JZcheckfiles; FILENAME IS ALREADY THE DEFAULT 
  170.  
  171.  
  172.  
  173. ; 5.3  sET DEFAULT DRIVE TO SPECIFIED DRIVE
  174.  
  175.  
  176.  
  177. DCRA
  178.  
  179. MVIC,sELdISK
  180.  
  181. MOVE,A
  182.  
  183. CALLbdos
  184.  
  185.  
  186.  
  187.  
  188.  
  189. ; 5.4  fOR usernum: = 0 TO 15
  190.  
  191.  
  192.  
  193. checkfiles:
  194.  
  195. LXIH,usernum; POINT TO COUNTER
  196.  
  197. MVIM,0H ; SET IT TO 0 
  198.  
  199. forusernum:
  200.  
  201. MOVA,M; GET COUNTER
  202.  
  203. CPI0FH; IS IT EQUAL TO 15
  204.  
  205. JNCdodate; YES SO JUMP TO SET SYSTEM DATE
  206.  
  207.  
  208.  
  209.  
  210.  
  211. ; 5.4.1  sET USER NUMBER TO usernum:
  212.  
  213.  
  214.  
  215.  MVIC,gETsETuSER
  216.  
  217. MOVE,M
  218.  
  219. CALLbdos
  220.  
  221.  
  222.  
  223.  
  224.  
  225. ; 5.4.2  sET FCB TO MATCH ALL WILDCARD
  226.  
  227.  
  228.  
  229. LXIH,allfiles; POINT TO WILDCARD FILESPEC STRING
  230.  
  231. SHLDpfcbfspecptr; PUT POINTER IN pfcbstruct
  232.  
  233. LXIH,cpmfcb; POINT TO FILE CONTROL BLOCK 
  234.  
  235. SHLDpfcbfcbptr; PUT POINTER IN pfcbstruct
  236.  
  237. MVIC,pARSEfILEnAME; PARSE THE STRING AND INITIALIZE fcb
  238.  
  239. LXID,pfcbstruct
  240.  
  241. CALLbdos
  242.  
  243.  
  244.  
  245.  
  246.  
  247. ; 5.4.3  sETUP THE FILENAME STACK TO STORE FILESPEC MATCHES FOR PROCESSING
  248.  
  249.  
  250.  
  251. LXIH,filenamestack; POINT TO BOTTOM OF FILENAME STACK
  252.  
  253. SHLDfilenameptr; SET TOP STACK POINTER TO BOTTOM
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261. ; 5.4.4  gET DIRECTORY ENTRY FOR FIRST FILE MATCH
  262.  
  263.  
  264.  
  265. MVIC,sEARCHfIRST
  266.  
  267. LXID,cpmfcb
  268.  
  269. CALLbdos
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277. ; 5.4.5  wHILE THERE IS A FILE MATCH
  278.  
  279.  
  280.  
  281. whileamatch:
  282.  
  283. CPI0FFH; IS IT THE NO MATCH CODE?
  284.  
  285. JZwhilenotempty; YES SO JUMP TO PROCESS MATCHES
  286.  
  287.  
  288.  
  289.  
  290.  
  291. ; 5.4.5.1  pUSH FILENAME ONTO FILENAME STACK
  292.  
  293.  
  294.  
  295. CALL pUSHfILEnAME; SAVE FILENAME FROM dma BUFFER
  296.  
  297.  
  298.  
  299.  
  300.  
  301. ; 5.4.5.2  gET DIRECTORY ENTRY FOR NEXT FILE MATCH
  302.  
  303.  
  304.  
  305. MVIC,sEARCHnEXT
  306.  
  307. LXID,cpmfcb
  308.  
  309. CALLbdos
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317. ; 5.4.5.3  cHECK IF THERE WAS A MATCH TO SAVE
  318.  
  319.  
  320.  
  321. JMPwhileamatch
  322.  
  323.  
  324.  
  325.  
  326.  
  327. ; 5.4.6  wHILE FILENAME STACK IS NOT EMPTY
  328.  
  329.  
  330.  
  331. whilenotempty
  332.  
  333. LXIH,filenamestack; POINT TO BOTTOM OF STACK
  334.  
  335. PUSHH; PUT POINTER IN de
  336.  
  337. POPD
  338.  
  339. LHLDfilenameptr; POINT TO TOP OF STACK
  340.  
  341. CALLcOMPAREdetOhl; DO THEY POINT TO THE SAME LOCATION
  342.  
  343.  JZnextusernum; YES SO NO FILES TO PROCESS
  344.  
  345.  
  346.  
  347.  
  348.  
  349. ; 5.4.6.1  pOP FILENAME FROM filenamestack
  350.  
  351.  
  352.  
  353. CALLpOPfILEnAME; PUT FILENAME IN fcb
  354.  
  355.  
  356.  
  357.  
  358.  
  359. ; 5.4.6.2  gET ACCESS STAMP INFORMATION FOR FILE IN cpmfcb
  360.  
  361.  
  362.  
  363. MVIC,gETdATEpASSWD
  364.  
  365. LXID,cpmfcb
  366.  
  367. CALLbdos
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375. ; 5.4.6.3  iS THE FILE ACCESS DATE NEWER THAN THE CURRENT SAVED DATE?
  376.  
  377.  
  378.  
  379. LXID,newsysdate; POINT TO SAVED DATE
  380.  
  381. LXIH,fcbaccess; POINT TO ACCESS DATE
  382.  
  383. CALLcOMPAREdATE; COMPARE SAVED DATE TO ACCESS DATE
  384.  
  385.  
  386.  
  387.  
  388.  
  389. ; 5.4.6.4  iF NO THEN PROCESS NEXT FILENAME
  390.  
  391.  
  392.  
  393. JNCwhilenotempty; SAVED IS LARGER SO DO NEXT FILE
  394.  
  395.  
  396.  
  397.  
  398.  
  399. ; 5.4.6.5  sAVE ACCESS DATE OF FILENAME
  400.  
  401.  
  402.  
  403. LXIH,newsysdate
  404.  
  405. LXID,fcbaccess
  406.  
  407. MVIB,04H
  408.  
  409. CALLcOPYbYTESuP
  410.  
  411.  
  412.  
  413.  
  414.  
  415. ; 5.4.6.6  cHECK IF THERE IS ANOTHER FILENAME TO PROCESS
  416.  
  417.  
  418.  
  419. JMPwhilenotempty
  420.  
  421.  
  422.  
  423.  
  424.  
  425. ; 5.4.7  dO NEXT USER NUMBER
  426.  
  427.  
  428.  
  429. nextusernum:LXIH,usernum; POINT TO USER NUMBER COUNTER
  430.  
  431. INRM; INCREMENT IT
  432.  
  433. JMPforusernum; CHECK IF ITS VALID
  434.  
  435.  
  436.  
  437.  
  438.  
  439. ; 6  sET THE SYSTEM DATE IF AN ACCESS STAMP HAS BEEN FOUND
  440.  
  441.  
  442.  
  443. dodate:
  444.  
  445.  
  446.  
  447.  
  448.  
  449. ; 6.1  iS THE SAVED DATE EQUAL TO ITS INITIAL VALUE?
  450.  
  451.  
  452.  
  453. LXIH,newsysdate
  454.  
  455. MOVA,M
  456.  
  457. INXH
  458.  
  459. ORAM
  460.  
  461. INXH
  462.  
  463. ORAM
  464.  
  465. INXH
  466.  
  467. ORAM
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475. ; 6.2  iF YES THEN DO AN UNSUCCESSFUL EXIT
  476.  
  477.  
  478.  
  479. JZexiterror
  480.  
  481.  
  482.  
  483.  
  484.  
  485. ; 6.3  sET THE SYSTEM DATE
  486.  
  487.  
  488.  
  489. MVIC,sETdATE
  490.  
  491. LXID,newsysdate
  492.  
  493. CALLbdos
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501. ; 7  exit
  502.  
  503.  
  504.  
  505. ; 7.1  sUCCESS 
  506.  
  507.  
  508.  
  509. exitsuccess:
  510.  
  511. MVIC,gETsETrETcODE
  512.  
  513. LXID,retcodeccpsuc
  514.  
  515. CALLbdos
  516.  
  517.  
  518.  
  519.  
  520.  
  521. ; 7.2  eRROR 
  522.  
  523.  
  524.  
  525. exiterror:
  526.  
  527. JMP 00H
  528.  
  529.  
  530.  
  531.  
  532.  
  533. ; 8  subroutines
  534.  
  535.  
  536.  
  537. ; 8.1  cURRENTdMArEC - pOINT TO THE CURRENT dma RECORD
  538.  
  539.  
  540.  
  541. ;
  542.  
  543. ; cURRENTdMArEC7/3/88aDAM hERST
  544.  
  545. ;
  546.  
  547. ; dESCRIPTION:pOINT TO THE START OF 
  548.  
  549. ;THE CURRENT RECORD IN THE dma BUFFER.
  550.  
  551. ;
  552.  
  553. ; aRGUMENTS:a - NUMBER OF CURRENT RECORD IN DMA BUFFER (0-3)
  554.  
  555. ;
  556.  
  557. ; rETURNS:hl - POINTS TO START OF CURRENT RECORD
  558.  
  559. ;
  560.  
  561. cURRENTdMArEC
  562.  
  563. LXIH,mydma; POINT TO FIRST dma RECORD
  564.  
  565. LXID,dmarecoffset; GET THE RECORD OFFSET
  566.  
  567. INRA; INITIALIZE RECORD COUNTER
  568.  
  569. nextdmarec:
  570.  
  571. DCRA; IS IT THE RIGHT RECORD?
  572.  
  573. RZ; YES SO RETURN
  574.  
  575. DADD; POINT TO NEXT dma RECORD
  576.  
  577. JMPnextdmarec; CHECK IF IT IS THE RIGHT RECORD 
  578.  
  579.  
  580.  
  581. ; 8.2  cOMPAREdATE - cOMPARE hl DATE TO de DATE
  582.  
  583.  
  584.  
  585. ;
  586.  
  587. ; cOMPAREdATE6/19/88aDAM hERST
  588.  
  589. ;
  590.  
  591. ; dESCRIPTIONcOMPARE THE cp/m DATE STRUCTURES.
  592.  
  593. ;tHE STANDARD DATE IS SMALLER/EQUAL/LARGER
  594.  
  595. ;THAN THE ARGUMENT DATE
  596.  
  597. ;
  598.  
  599. ;
  600.  
  601. ; aRGUMENTS:de - STANDARD DATE
  602.  
  603. ;hl - ARGUMENT DATE
  604.  
  605. ;
  606.  
  607. ; rETURNS:z - SET IF EQUAL
  608.  
  609. ;c - SET IF STD IS SMALLER
  610.  
  611. ;
  612.  
  613. cOMPAREdATE
  614.  
  615. INXH; HIGH BYTE OF YEARS IN DAYS OF ARGUMENT
  616.  
  617. INXD; HIGH BYTE OF YEARS IN DAYS OF STANDARD
  618.  
  619. LDAXD; GET STANDARD
  620.  
  621. CMPM; IS IT EQUAL TO ARGUMENT
  622.  
  623. RC; NO IT IS SMALLER
  624.  
  625. RNZ; NO IT IS LARGER
  626.  
  627. DCXH; LOW BYTE OF YEARS IN DAYS OF ARGUMENT
  628.  
  629. DCXD; LOW BYTE OF YEARS IN DAYS OF STANDARD 
  630.  
  631. LDAXD; GET STANDARD
  632.  
  633. CMPM; IS IT EQUAL TO ARGUMENT
  634.  
  635.  RC; NO IT IS SMALLER
  636.  
  637. RNZ; NO IS IS LARGER
  638.  
  639. INXH; HOURS BYTE OF ARGUMENT
  640.  
  641. INXH
  642.  
  643. INXD; HOURS BYTE OF STANDARD
  644.  
  645. INXD
  646.  
  647. LDAXD; GET STANDARD
  648.  
  649. CMPM; IS IT EQUAL TO ARGUMENT
  650.  
  651.  RC; NO IT IS SMALLER
  652.  
  653. RNZ; NO IT IS LARGER
  654.  
  655. INXH; MINUTES BYTE OF ARGUMENT
  656.  
  657. INXD; MINUTES BYTE OF STANDARD
  658.  
  659. LDAXD; GET STANDARD
  660.  
  661. CMPM; IS IT EQUAL TO ARGUMENT
  662.  
  663. RET
  664.  
  665.  
  666.  
  667.  
  668.  
  669. ; 8.3  pUSHfILEnAME - pUSH CURRENT FILENAME IN dma BUFFER ONTO filenamestack
  670.  
  671.  
  672.  
  673. ;
  674.  
  675. ; pUSHfILEnAME7/1/88aDAM hERST
  676.  
  677. ;
  678.  
  679. ; dESCRIPTION:cOPY CURRENT FILENAME IN dma BUFFER
  680.  
  681. ;TO THE TOP OF THE FILENAME STACK.
  682.  
  683. ;rEQUIRES THAT filenamestack HAS BEEN SET UP
  684.  
  685. ;AND filenameptr HAS BEEN DEFINED.
  686.  
  687. ;
  688.  
  689. ; aRGUMENTS:a - CURRENT RECORD IN dma BUFFER
  690.  
  691. ;
  692.  
  693. pUSHfILEnAME
  694.  
  695. CALLcURRENTdMArEC; POINT TO CURRENT RECORD IN dma
  696.  
  697. INXH; POINT TO START OF FILENAME
  698.  
  699. PUSHH; PUT SOURCE POINTER IN de
  700.  
  701. POPD
  702.  
  703. LHLDfilenameptr; PUT DESTINATION POINTER IN hl
  704.  
  705. MVIB,11D; PUT NUMBER OF BYTES TO COPY
  706.  
  707. CALLcOPYbYTESuP; COPY THEM INCREMENTING POINTER
  708.  
  709. SHLDfilenameptr; SAVE THE NEW POINTER
  710.  
  711. RET
  712.  
  713.  
  714.  
  715.  
  716.  
  717. ; 8.4  pOPfILEnAME - pUSH FILENAME IN fcb ONTO filenamestack
  718.  
  719.  
  720.  
  721. ;
  722.  
  723. ; pOPfILEnAME7/1/88aDAM hERST
  724.  
  725. ;
  726.  
  727. ; dESCRIPTION:cOPY THE FILENAME 
  728.  
  729. ;ON THE TOP OF THE FILENAME STACK
  730.  
  731. ;TO THE fcb.
  732.  
  733. ;rEQUIRES THAT filenamestack: HAS 
  734.  
  735. ;AT LEAST ONE ENTRY.
  736.  
  737. ;
  738.  
  739. pOPfILEnAME
  740.  
  741. LHLDfilenameptr; GET SOURCE POINTER
  742.  
  743.  PUSHH; PUT IT IN de
  744.  
  745. POPD
  746.  
  747. LXIH,fcbfilename+11D; GET DESTINATION POINTER
  748.  
  749. MVIB,11D; NUMBER OF BYTES TO COPY
  750.  
  751. CALLcOPYbYTESdOWN; COPY THEM DECRMENTING POINTER
  752.  
  753. PUSHD; SAVE NEW POINTER
  754.  
  755. POPH
  756.  
  757. SHLDfilenameptr
  758.  
  759. RET
  760.  
  761.  
  762.  
  763.  
  764.  
  765. ; 8.5  cOMPAREdetOhl - cOMPARE THE WORD IN de TO THE WORD IN hl
  766.  
  767.  
  768.  
  769. ;
  770.  
  771. ; cOMPAREdetOhl7/2/88aDAM hERST
  772.  
  773. ;
  774.  
  775. ; dESCRIPTION:cOMPARE hl TO de.
  776.  
  777. ;hl IS SMALLER/EQUAL/LARGER THAN de.
  778.  
  779. ;sET APPROPRIATE FLAGS ON RETURN.
  780.  
  781. ;
  782.  
  783. ; aRGUMENTS:hl - WORD IN LOW BYTE, HIGH BYTE FORMAT
  784.  
  785. ;de - WORD IN LOW BYTE, HIGH BYTE FORMAT
  786.  
  787. ;
  788.  
  789. ; rETURNS:z - SET IF EQUAL
  790.  
  791. ;c - SET IF hl IS SMALLER
  792.  
  793. ;
  794.  
  795. cOMPAREdetOhl
  796.  
  797. MOVA,L; GET HIGH BYTE
  798.  
  799. CMPE; IS HL HIGH BYTE EQUAL TO DE HIGH BYTE?
  800.  
  801. RC; NO, IT IS SMALLER, SO hl IS SMALLER
  802.  
  803. RNZ; NO IT IS LARGER, SO hl IS LARGER
  804.  
  805. MOVA,H; GET LOW BYTE
  806.  
  807. CMPD; IS HL LOW BYTE EQUAL TO DE LOW BYTE?
  808.  
  809. RET
  810.  
  811.  
  812.  
  813.  
  814.  
  815. ; 8.6  cOPYbYTESuP - cOPY b NUMBER OF BYTES MOVING UP FROM de TO hl
  816.  
  817.  
  818.  
  819. ;
  820.  
  821. ; cOPYbYTESuP7/2/88aDAM hERST
  822.  
  823. ;
  824.  
  825. ; dESCRIPTION:cOPY THE BYTES POINTED TO BY de TO 
  826.  
  827. ;THE BYTES POINTED TO BY hl
  828.  
  829. ;INCREMENTING THE POINTERS.
  830.  
  831. ;
  832.  
  833. ; aRGUMENTS:de - START OF SOURCE BYTES
  834.  
  835. ;hl - START OF DESTINATION BYTES
  836.  
  837. ;b  - NUMBER OF BYTES TO COPY
  838.  
  839. ;
  840.  
  841. ; rETURNS:de - BYTE AFTER LAST BYTE OF SOURCE STRING
  842.  
  843. ;hl - BYTE AFTER LAST BYTE OF DESTINATION STRING
  844.  
  845. cOPYbYTESuP
  846.  
  847. MVIC,0H; INITIALIZE BYTE COUNTER
  848.  
  849. nextbyte2:
  850.  
  851. MOVA,C; GET COUNTER FOR COMPARISON
  852.  
  853. CMPB; IS IT EQUAL TO THE NUMBER OF BYTES?
  854.  
  855. RZ; YES SO FINISHED
  856.  
  857. INRC; INCREMENT COUNTER
  858.  
  859. LDAXD; GET SOURCE BYTES
  860.  
  861. MOVM,A; PUT IT IN DESTINATION
  862.  
  863. INXD; POINT TO NEXT SOURCE BYTES
  864.  
  865. INXH; POINT TO NEXT DESTINATION
  866.  
  867. JMPnextbyte2; CHECK IF MORE BYTES TO COPY
  868.  
  869.  
  870.  
  871.  
  872.  
  873. ; 8.7  cOPYbYTESdOWN - cOPY b NUMBER OF BYTES MOVING DOWN FROM de TO hl
  874.  
  875.  
  876.  
  877. ;
  878.  
  879. ; cOPYbYTESdOWN7/2/88aDAM hERST
  880.  
  881. ;
  882.  
  883. ; dESCRIPTION:cOPY THE BYTES POINTED TO BY de TO 
  884.  
  885. ;THE BYTES POINTED TO BY hl
  886.  
  887. ;DECREMENTING THE POINTERS.
  888.  
  889. ;
  890.  
  891. ; aRGUMENTS:de - START OF SOURCE BYTES+1
  892.  
  893. ;hl - START OF DESTINATION BYTES+1
  894.  
  895. ;b  - NUMBER OF BYTES TO COPY
  896.  
  897. ;
  898.  
  899. ; rETURNS:de - LAST BYTE OF SOURCE BYTES
  900.  
  901. ;hl - LAST BYTE OF DESTINATION BYTES
  902.  
  903. cOPYbYTESdOWN
  904.  
  905. MVIC,0H; INITIALIZE BYTE COUNTER
  906.  
  907. nextbyte3:
  908.  
  909. MOVA,C; GET COUNTER FOR COMPARISON
  910.  
  911. CMPB; IS IT EQUAL TO THE NUMBER OF BYTES
  912.  
  913. RZ; YES SO NO MORE BYTES TO COPY
  914.  
  915. INRC; INCREMENT THE COUNTER
  916.  
  917. DCXD; POINT TO SOURCE BYTE TO COPY
  918.  
  919. DCXH; POINT TO DESTINATION
  920.  
  921. LDAXD; GET SOURCE BYTE
  922.  
  923. MOVM,A; PUT IT IN DESTINATION
  924.  
  925. JMPnextbyte3; CHECK IF MORE BYTES TO COPY
  926.  
  927.  
  928.  
  929.  
  930.  
  931. ; 9  structures
  932.  
  933.  
  934.  
  935. ; 9.1  version: - vERSION AND COPYRIGHT STRING
  936.  
  937.  
  938.  
  939. ;
  940.  
  941. ; version:
  942.  
  943. ;
  944.  
  945. ; dESCRIPTION:vERSION AND RELEASE NUMBER
  946.  
  947. ;AND COPYRIGHT STRING
  948.  
  949. ;
  950.  
  951. version:
  952.  
  953. DB'redate V2.1 (C) aDAM hERST 1988'
  954.  
  955.  
  956.  
  957.  
  958.  
  959. ; 9.2  newsysdate: - dATE TO SET SYSTEM TIME TO
  960.  
  961.  
  962.  
  963. ;
  964.  
  965. ; newsysdate:6/18/88aDAM hERST
  966.  
  967. ;
  968.  
  969. ; dESCRIPTION:DATE AND TIME IN cp/m FORMAT
  970.  
  971. ;
  972.  
  973. newsysdate:
  974.  
  975. DB0H; LOW BYTE OF YEARS IN DAYS
  976.  
  977. DB0H; HIGH BYTE OF YEARS IN DAYS
  978.  
  979. DB0H; HOURS IN BCD
  980.  
  981. DB0H; MINUTES IN BCD
  982.  
  983.  
  984.  
  985.  
  986.  
  987. ; 9.3  pfcbstruct: - pARSE fcb STRUCTURE
  988.  
  989.  
  990.  
  991. ;
  992.  
  993. ; pfcbstruct:6/18/88aDAM hERST
  994.  
  995. ;
  996.  
  997. ; dESCRIPTION:pARSE FILE CONTROL BLOCK POINTER STRUCTURE
  998.  
  999. ;
  1000.  
  1001. pfcbstruct:
  1002.  
  1003. pfcbfspecptr:DW0000H; POINTER TO CP/M STYLE FILESPEC STRING
  1004.  
  1005. pfcbfcbptr:DW0000H; POINTER TO FILE CONTROL BLOCK
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011. ; 9.4  usernum: - USER NUMBER COUNTER
  1012.  
  1013.  
  1014.  
  1015. ;
  1016.  
  1017. ; usernum:6/20/88aDAM hERST
  1018.  
  1019. ;
  1020.  
  1021. ; dESCRIPTION:uSER NUMBER COUNTER
  1022.  
  1023. ;
  1024.  
  1025. usernum:
  1026.  
  1027. DB0H
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033. ; 9.5  allfiles: - FILESPEC STRING M:*.*
  1034.  
  1035.  
  1036.  
  1037. ;
  1038.  
  1039. ; allfiles:6/22/88aDAM hERST
  1040.  
  1041. ;
  1042.  
  1043. ; dESCRIPTION:cp/m STYLE STRING FOR WILDCARD FILESPEC
  1044.  
  1045. ;
  1046.  
  1047. allfiles:
  1048.  
  1049. DB'*.*$'
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055. ; 9.6  filenameptr: - POINTER TO TOP OF filenamestack
  1056.  
  1057.  
  1058.  
  1059. ;
  1060.  
  1061. ; filenameptr7/1/88aDAM hERST
  1062.  
  1063. ;
  1064.  
  1065. ; dESCRIPTION:pOINTER TO TOP OF filenamestack
  1066.  
  1067. ;
  1068.  
  1069. filenameptr:DW0500H
  1070.  
  1071.  
  1072.  
  1073.  
  1074.  
  1075. ; 10  end
  1076.  
  1077.  
  1078.  
  1079. END
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.