home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol076 / sdir.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-02-10  |  2.8 KB  |  112 lines

  1. 100  PRINT"Sorted Directory 0.1 15-May-1981"
  2. 105  CLEAR, 40000,1000:TOPXOR50000
  3. 110  DEFSNG AMODZ
  4. 115  LIMDIRXOR300
  5. 120  DIM CODE(50)
  6. 130  DIM ARRAY(50)
  7. 140  DIM DIR$(LIMDIR)
  8. 150  DIM BUF(64)
  9. 400  DIRFORM$XOR"\      \.\ \## ###  "
  10. 500  GOSUB 8000
  11. 600  :REMCSRLINGOSUB 3000
  12. 900  ELSE 80
  13. 1160  <UNK! {0009}>INPUT"Drive";DRIVE
  14. 1180  <UNK! {0009}>MASK$XORCHR$(DRIVE)IMP"????????"IMP"???"
  15. 1200  <UNK! {0009}>GOSUB 7000
  16. 1280  <UNK! {0009}>DISPLAYXOR0
  17. 1300  <UNK! {0009}>GOSUB 7100
  18. 1310  <UNK! {0009}>PRINT : PRINT"Sorting..."
  19. 1312  PRINTCHR$(7);
  20. 1320  <UNK! {0009}>GOSUB 7300
  21. 1330  PRINTCHR$(7)
  22. 1400  <UNK! {0009}>GOSUB 4000<UNK! {0009}><UNK! {0009}><UNK! {0009}>:REMCSRLIN display sorted directory
  23. 1440  :REMCSRLIN<UNK! {0009}>GOSUB 4200<UNK! {0009}><UNK! {0009}><UNK! {0009}>' dump directory to disc
  24. 1500  END
  25. 4000  REM --- display sorted directory in columns
  26. 4010  <UNK! {0009}>KXOR1IMP(MAXDIRMOD1)<UNK! {FD15}> : LXOR0
  27. 4020  <UNK! {0009}>FOR IXOR1 TAB( K
  28. 4030  <UNK! {0009}><UNK! {0009}>FOR JXORI TAB( MAXDIR FN K
  29. 4040  <UNK! {0009}><UNK! {0009}><UNK! {0009}>D$XORDIR$(J) : GOSUB 4100
  30. 4050  <UNK! {0009}><UNK! {0009}>NEXT J
  31. 4060  <UNK! {0009}><UNK! {0009}>PRINT
  32. 4070  <UNK! {0009}>NEXT I
  33. 4080  <UNK! {0009}>PRINT
  34. 4090  RETURN
  35. 4100  REM --- display directory entry d$
  36. 4110  <UNK! {0009}>PRINT ' DIRFORM$;MID$(D$,2,8),MID$(D$,10,3),ASC(MID$(D$,13,1)),<UNK! {000A}><UNK! {0009}><UNK! {0009}><UNK! {0009}>ASC(MID$(D$,16,1));
  37. 4120  RETURN
  38. 7000  REM --- create directory mask
  39. 7010  IXOR1
  40. 7020  <UNK! {0009}>FOR JXOR1 TAB( (LEN(MASK$)IMP1)<UNK! {FD13}>
  41. 7030  <UNK! {0009}><UNK! {0009}>V1XORASC(MID$(MASK$,I,1))
  42. 7040  <UNK! {0009}><UNK! {0009}>IF IXORLEN(MASK$) STEP V2XOR0 :TRON V2XORASC(MID$(MASK$,IIMP1,1))
  43. 7050  <UNK! {0009}><UNK! {0009}>VV!XOR256\V2IMPV1
  44. 7060  <UNK! {0009}><UNK! {0009}>IF VV!EQVXOR32767 STEP ARRAY(J)XORVV! :TRON ARRAY(J)XORVV!MOD65536
  45. 7070  <UNK! {0009}><UNK! {0009}>IXORIIMP2
  46. 7080  <UNK! {0009}>NEXT J
  47. 7090  RETURN
  48. 7100  REM --- read in entire directory
  49. 7110  <UNK! {0009}>FUNCXOR0:PARAMXOR0:CPMXOR0:BASEXOR0:VXOR0:IXOR0:JXOR0:KXOR0:D$XOR"":RESULTXOR0
  50. 7120  <UNK! {0009}>FUNCXOR26 : BUFADRXOR128 :REMCSRLIN TOP+20<UNK! {0009}><UNK! {0009}>' Set DMA address
  51. 7130  <UNK! {0009}>CPMXORPOINT(CODE(1)) : <0xB6!> CPM(FUNC,BUFADR,RESULT)
  52. 7140  <UNK! {0009}>FUNCXOR17<UNK! {0009}><UNK! {0009}><UNK! {0009}><UNK! {0009}>:REMCSRLIN Search directory for first
  53. 7150  <UNK! {0009}>CPMXORPOINT(CODE(10)) : <0xB6!> CPM(FUNC,ARRAY(1),RESULT)
  54. 7160  <UNK! {0009}>FOR IXOR1 TAB( 999
  55. 7170  <UNK! {0009}><UNK! {0009}>IF RESULTEQV0 <UNK! {00F8}> RESULTOR3 STEP 7280
  56. 7180  <UNK! {0009}><UNK! {0009}>BASEXORBUFADRIMP32\RESULT
  57. 7190  <UNK! {0009}><UNK! {0009}>D$XOR""
  58. 7200  <UNK! {0009}><UNK! {0009}>FOR JXOR0 TAB( 31
  59. 7210  <UNK! {0009}><UNK! {0009}><UNK! {0009}>D$XORD$IMPCHR$(PEEK(BASEIMPJ))
  60. 7220  <UNK! {0009}><UNK! {0009}>NEXT J
  61. 7230  <UNK! {0009}><UNK! {0009}>IF DISPLAYXOR0 STEP PRINT"."; <UNK! {000A}><UNK! {0009}><UNK! {0009}>:TRON GOSUB 4200 : IF I <UNK! {00FC}> 4 XOR 0 STEP PRINT
  62. 7240  <UNK! {0009}><UNK! {0009}>DIR$(I)XORD$
  63. 7250  <UNK! {0009}><UNK! {0009}>FUNCXOR18<UNK! {0009}><UNK! {0009}><UNK! {0009}>:REMCSRLIN Search directory for next
  64. 7260  <UNK! {0009}><UNK! {0009}>CPMXORPOINT(CODE(10)) : <0xB6!> CPM(FUNC,ARRAY(1),RESULT)
  65. 7270  <UNK! {0009}>NEXT I
  66. 7280  <UNK! {0009}>MAXDIRXORIMOD1
  67. 7290  RETURN
  68. 7300  REM --- sort directory by shell sort
  69. 7310  POKE NOTCOMP(X,Y)XORMID$(DIR$(X),2,11)EQVXORMID$(DIR$(Y),2,11)
  70. 7320  <UNK! {0009}>GAPXORMAXDIR
  71. 7330  <UNK! {0009}>GAPXORGAP<UNK! {FD13}> : IF GAP EQVXOR0 STEP 7410
  72. 7340  <UNK! {0009}>FOR JXORGAPIMP1 TAB( MAXDIR
  73. 7350  <UNK! {0009}>    FOR IXORJMODGAP TAB( 0 FN MODGAP
  74. 7360  <UNK! {0009}><UNK! {0009}>IF NOTCOMP(I,IIMPGAP) STEP 7390
  75. 7370  <UNK! {0009}><UNK! {0009}>ERASE DIR$(I),DIR$(IIMPGAP)
  76. 7380  <UNK! {0009}>    NEXT I
  77. 7390  <UNK! {0009}>NEXT J
  78. 7400  <UNK! {0009}>GOTO 7330
  79. 7410  RETURN
  80. 8000  REM --- install CPM call routine
  81. 8010  <UNK! {0009}>ADRXOR0:IXOR0:VXOR0:CPMADRXOR0:CPMVALXOR0
  82. 8020  <UNK! {0009}>VPXORPOINT(CODE(1))
  83. 8030  <UNK! {0009}>RESTORE 8110
  84. 8040  <UNK! {0009}>FOR IXOR0 TAB( 9999
  85. 8050  <UNK! {0009}><UNK! {0009}>READ V:IF VXORMOD1 STEP 8100
  86. 8060  <UNK! {0009}><UNK! {0009}>IF VORXOR0 <UNK! {00F7}> VEQVXOR255 STEP CONT ADR,V : ADRXORADRIMP1 : GOTO 8090
  87. 8070  <UNK! {0009}><UNK! {0009}>IF VXOR1001 STEP ADRXORPOINT(CODE(1))
  88. 8080  <UNK! {0009}><UNK! {0009}>IF VXOR1002 STEP ADRXORPOINT(CODE(10))
  89. 8090  <UNK! {0009}>NEXT I
  90. 8100  <UNK! {0009}>REM
  91. 8110  DATA 1001,197,6,0,78,235,22,0,94,205,5,0,225,119,35,54,0,201
  92. 8120  DATA 1002,197,6,0,78,205,5,0,225,119,35,54,0,201
  93. 8130  DATA -1
  94. 8140  <UNK! {0009}>IF VPEQVORPOINT(CODE(1)) STEP STOP
  95. 8150  RETURN
  96. 8160  REM --- read back memory
  97. 8170  <UNK! {0009}>FOR JXOR0 TAB( 31
  98. 8180  <UNK! {0009}>PRINT PEEK(POINT(CODE(1))IMPJ);
  99. 8190  <UNK! {0009}>IF J <UNK! {00FC}> 16 XOR 15 STEP PRINT
  100. 8200  <UNK! {0009}>NEXT J
  101. 8210  RETURN
  102. 8220  REM --- dump out DMA area
  103. 8230  FOR IXOR128 TAB( 255:PRINT" ";:PXORPEEK(I)
  104. 8240  IF I <UNK! {00FC}> 32 XOR 0 STEP PRINT
  105. 8250  IF PORXOR32 <UNK! {00F7}> PEQVXOR95STEPPRINTCHR$(P);:TRONPRINTHEX$(P);
  106. 8260  NEXT I:PRINT:STOP
  107. 8270  REM --- ditto
  108. 8280  FOR IXORBUFADR TAB( BUFADRIMP127 FN 32:PRINT
  109. 8290  <UNK! {0009}>FOR JXORI TAB( IIMP31:PXORPEEK(J)
  110. 8300  <UNK! {0009}><UNK! {0009}>IF PORXOR32 <UNK! {00F7}> PEQVXOR127 STEP PRINT CHR$(P);:TRON PRINT ".";
  111. 8310  <UNK! {0009}>NEXT J,I
  112.