home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib35a.dsk / DECEMBER.1988 / MERGESORT.bas < prev    next >
BASIC Source File  |  2023-02-26  |  4KB  |  89 lines

  1. 10  REM   *
  2. 20  REM   * MERGESORT
  3. 30  REM   * BY CHESTER H. PAGE
  4. 40  REM   * COPYRIGHT (C) 1988
  5. 50  REM   * BY MICROSPARC, INC.
  6. 60  REM   * CONCORD, MA 01742
  7. 70  REM   *
  8. 80  ONERR  GOTO 890
  9. 90  LOMEM: 33280: HIMEM: 35328
  10. 100  PRINT  CHR$(4);"BLOAD MERGESORT.OBJ"
  11. 110  POKE 216,0: POKE 26,154
  12. 120  HOME : HTAB 5: VTAB 4: PRINT "MERGESORT": PRINT : HTAB 5: PRINT "BY CHESTER H. PAGE": HTAB 5: PRINT "(C) 1988 MICROSPARC, INC.": PRINT 
  13. 130  PRINT "    1) SHOW LIST IN PRESENT ORDER"
  14. 140  PRINT "    2) REORDER LIST ON LINE L"
  15. 150  PRINT "    3) PRINT LIST IN PRESENT ORDER"
  16. 160  PRINT "    4) SAVE LIST TO DISK"
  17. 170  PRINT "    5) LOAD NEW FILE"
  18. 180  PRINT "    6) CATALOG"
  19. 190  PRINT "    7) CHANGE SLOT & DRIVE"
  20. 200  PRINT "    8) QUIT"
  21. 210  VTAB 18: PRINT "YOUR CHOICE:";: POKE  -16368,0: GET AN$: PRINT 
  22. 220  IF AN$ <"1"  OR AN$ >"8"  THEN 210
  23. 230 X =  VAL(AN$)
  24. 240  IF X <5  AND  PEEK(26) = 154  THEN  PRINT : PRINT "NO TEXT FILE IN MEMORY": GOSUB 530: GOTO 120
  25. 250  ON X GOTO 270,290,350,370,570,550,780,770
  26. 260  REM   * PRINT LIST
  27. 270  HOME : POKE 249,0: CALL 4617: GOSUB 530: GOTO 120
  28. 280  REM   * REORDER LIST
  29. 290  HOME : INPUT "LINE NUMBER ";L
  30. 300  IF L <1  OR L >5  THEN  GOTO 290
  31. 310  POKE 239,L
  32. 320  HOME : VTAB 10: PRINT "REORDERING "F$: CALL 4614
  33. 330  PRINT : PRINT F$" REORDERED ON LINE "L: GOSUB 530: GOTO 120
  34. 340  REM   * PRINT LIST TO PRINTER
  35. 350  HOME : PRINT "PRINTING": PRINT D$"PR#1": POKE 249,0: CALL 4617: PRINT D$"PR#0": GOSUB 530: GOTO 120
  36. 360  REM   * SAVE LISTING
  37. 370  HOME : HIMEM: 36352:D$ =  CHR$(4): ONERR  GOTO 420
  38. 380  INPUT "SAVE AS FILE NAMED: ";F$
  39. 390  IF F$ = ""  THEN  GOTO 120
  40. 400  PRINT D$;"VERIFY "F$
  41. 410  GOTO 490
  42. 420  ONERR  GOTO 510
  43. 430  PRINT D$"OPEN"F$
  44. 440  PRINT D$"WRITE"F$
  45. 450  POKE 249,1: CALL 4617
  46. 460  PRINT D$"CLOSE": HIMEM: 35328
  47. 470  HOME : PRINT "FILE SAVED: "F$: GOSUB 530: POKE 216,0: GOTO 120
  48. 480  REM   * ERROR TRAP
  49. 490  POKE 216,0: PRINT : PRINT "FILE ALREADY EXISTS. OVERWRITE (Y/N):";: POKE  -16368,0: GET AN$: IF AN$ = "N"  OR AN$ = "n"  THEN  GOTO 120
  50. 500  GOTO 420
  51. 510  POKE 216,0: POKE 26,154: PRINT : PRINT "ILLEGAL FILE NAME OR FILE NOT FOUND": GOSUB 530: GOTO 120
  52. 520  PRINT D$"CLOSE": PRINT "FILE TOO LARGE": GOSUB 530: GOTO 120
  53. 530  PRINT : PRINT "PRESS RETURN TO CONTINUE.";: POKE  -16368,0: GET AN$: RETURN 
  54. 540  REM   * CATALOG
  55. 550  HOME : VTAB 1: PRINT  CHR$(4);"CAT": GOSUB 530: GOTO 120
  56. 560  REM   * LOAD NEW LISTING
  57. 570  HOME : HIMEM: 35328: ONERR  GOTO 510
  58. 580 D$ =  CHR$(4)
  59. 590  INPUT "LOAD FILE NAMED: ";F$
  60. 600  IF F$ = ""  THEN  GOTO 120
  61. 610  POKE 26,0
  62. 620  PRINT D$;"VERIFY ";F$
  63. 630  PRINT D$;"OPEN ";F$
  64. 640  POKE 216,0
  65. 650  CALL 4608
  66. 660  PRINT D$"CLOSE"
  67. 670  IF  PEEK(771) < >0  THEN 690
  68. 680  PRINT : PRINT "EMPTY FILE": GOSUB 530: GOTO 120
  69. 690  ONERR  GOTO 760
  70. 700  PRINT D$;"BLOAD ";F$;",A$1600,TTXT"
  71. 710 T = (( PEEK(01) *256) + PEEK(0)) -1: IF T >33279  THEN  PRINT : PRINT "FILE TOO LARGE.": GOSUB 530: POKE 26,154: GOTO 120
  72. 720  IF  PEEK(T) < > PEEK(5632)  AND  PEEK(T -1) < > PEEK(5632)  THEN  PRINT : PRINT "INCORRECT TEXT FILE FORMAT": GOSUB 530: POKE 26,154: GOTO 120
  73. 730  POKE 216,0: CALL 4611
  74. 740  IF  PEEK(26) = 154  THEN  PRINT : PRINT "MORE THAN 510 ITEMS IN LIST": GOSUB 530: GOTO 120
  75. 750  GOTO 120
  76. 760  PRINT : PRINT "FILE TOO LARGE": POKE 26,154: POKE 216,0: GOSUB 530: GOTO 120
  77. 770  HOME : VTAB 23: END 
  78. 780  HOME : VTAB 1: PRINT "SLOT:";: POKE  -16368,0: GET S$: PRINT S$
  79. 790  IF S$ =  CHR$(13)  THEN  GOTO 120
  80. 800  IF S$ <"1"  OR S$ >"7"  THEN  GOTO 780
  81. 810  VTAB 2: PRINT "DRIVE:";: POKE  -16368,0: GET DR$: PRINT DR$
  82. 820  IF DR$ =  CHR$(13)  THEN  GOTO 120
  83. 830  IF DR$ <"1"  OR DR$ >"2"  THEN  GOTO 810
  84. 840  ONERR  GOTO 870
  85. 850  PRINT  CHR$(4);"PREFIX,S";S$;",D";DR$
  86. 860  POKE 216,0: GOTO 120
  87. 870  POKE 216,0: PRINT : PRINT "INVALID SLOT AND DRIVE.": GOSUB 530
  88. 880  GOTO 780
  89. 890  POKE 216,0: HOME : PRINT "CANNOT FIND FILE:MERGESORT.OBJ"