home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib24b.dsk / ERROR.MESSAGES.bas < prev    next >
BASIC Source File  |  2023-02-26  |  6KB  |  171 lines

  1. 10  REM  **********************
  2. 20  REM  *   ERROR.MESSAGES   *
  3. 30  REM  * BY JAMES PATRIDGE  *
  4. 40  REM  * COPYRIGHT (C) 1985 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * CONCORD, MA  01742 *
  7. 70  REM  **********************
  8. 80  CLEAR : TEXT 
  9. 90 D$ =  CHR$(4)
  10. 100  DIM NC$(28),CC$(29),SC$(28),IN(28),CS$(28)
  11. 110  GOSUB 880
  12. 120 D1$ = "<< CURRENT ERROR MESSAGES >>"
  13. 130 X =  LEN(D1$)/2
  14. 140  HOME 
  15. 150  PRINT  TAB( 20 -X)D1$
  16. 160  FOR I = 0 TO 39: PRINT "-";: NEXT I
  17. 170  PRINT 
  18. 180  FOR I = 1 TO 14
  19. 190  IF I <16  THEN  HTAB 5
  20. 200  IF IN(I) >0  THEN  INVERSE 
  21. 210  PRINT CC$(I)
  22. 220  NORMAL 
  23. 230  NEXT I
  24. 240  PRINT 
  25. 250  FOR I = 0 TO 39: PRINT "-";: NEXT I
  26. 260  VTAB 4
  27. 270  FOR I = 1 TO 14
  28. 280  IF I <10  THEN  HTAB 2
  29. 290  PRINT I")"
  30. 300  NEXT I
  31. 310  PRINT 
  32. 320  PRINT 
  33. 330  PRINT "S= STANDARD";: HTAB 20: PRINT "FREE CHRS= "FC
  34. 340  PRINT "<M> MENU ";: HTAB 20: PRINT "<R> REPLACE"
  35. 350  HTAB 10: VTAB 23: CALL  -958: INPUT "SELECTION => ";CH$
  36. 360 CH =  VAL(CH$)
  37. 370  ONERR  GOTO 1700
  38. 380  IF CH$ = "M"  THEN  PRINT D$;"RUN DOS.DESIGNER"
  39. 390  POKE 216,0
  40. 400  IF CH$ = "R"  THEN  GOTO 1040
  41. 410  IF CH$ = "S"  THEN  GOTO 980
  42. 420  IF CH <1  OR CH >14  THEN  VTAB 23: CALL  -1052: GOTO 350
  43. 430  REM  :
  44. 440  REM  : CHANGE FORMATTER
  45. 450  REM  : BYTE SCALE
  46. 460  REM  :
  47. 470 N1$ = "000000000111111111122222222223":N2$ = "123456789012345678901234567890"
  48. 480  HOME 
  49. 490 D1$ = "<< DOS ERROR MESSAGE CHANGER >>"
  50. 500  PRINT  TAB( 20 -X)D1$
  51. 510  PRINT : PRINT 
  52. 520 D3$ = " FREE CHR$ => "
  53. 530  FOR I = 0 TO 39: PRINT "%";: NEXT I
  54. 540  PRINT 
  55. 550  INVERSE 
  56. 560  HTAB 10: PRINT N1$
  57. 570  HTAB 10: PRINT N2$
  58. 580  NORMAL 
  59. 590  VTAB 22: INVERSE : HTAB 6: PRINT "<< STANDARD ERROR MESSAGE >>": NORMAL 
  60. 600  PRINT  TAB( 20 -( LEN(SC$(CH))/2))SC$(CH)
  61. 610  NORMAL 
  62. 620  VTAB 8: HTAB 3: PRINT "OLD => "CC$(CH)
  63. 630  PRINT : VTAB 8: HTAB (10 + LEN(CC$(CH))): INVERSE : PRINT "<": NORMAL 
  64. 640  VTAB 9: HTAB 10: FOR I = 1 TO 30: PRINT "-";: NEXT I
  65. 650  VTAB 10: CALL  -868: HTAB (10 + LEN(CC$(CH))) +FC: IF  LEN(CC$(CH)) +(FC +20) >39  THEN  HTAB 39
  66. 660  VTAB 10: INVERSE : PRINT "<": NORMAL 
  67. 670  VTAB 10: HTAB 3: INPUT "NEW => ";NC$(CH)
  68. 680  IF NC$(CH) = ""  THEN  GOTO 130
  69. 690  IF  LEN(NC$(CH)) <2  THEN  PRINT : PRINT "NEW TEXT MUST BE AT LEAST 2 CHARACTERS": CALL  -1052: FOR I = 1 TO 2000: NEXT I: VTAB 12: CALL  -868: GOTO 650
  70. 700  IF  LEN(NC$(CH)) > LEN(CC$(CH)) +FC  THEN  PRINT : PRINT "MESSAGE MUST BE =< " LEN(CC$(CH)) +FC" CHARACTERS": CALL  -1052: FOR I = 1 TO 2000: NEXT I: VTAB 12: CALL  -868: GOTO 650
  71. 710  IF  LEN(NC$(CH)) >30  THEN  PRINT : PRINT "MAXIMUM MESSAGE LENGTH 30 CHARACTERS": CALL  -1052: FOR I = 1 TO 2000: NEXT I: VTAB 12: CALL  -868: GOTO 500
  72. 720  IF  LEN(CC$(CH)) > LEN(NC$(CH))  THEN FC = FC +( LEN(CC$(CH)) - LEN(NC$(CH))): GOTO 810
  73. 730  REM  :
  74. 740  REM  : RESET FREE BYTES
  75. 750  REM  :
  76. 760 FC = FC -( LEN(NC$(CH)) - LEN(CC$(CH)))
  77. 770  REM  :
  78. 780  REM  : SET NEW COMMANDS TO
  79. 790  REM  : DISPLAY IN INVERSE
  80. 800  REM  :
  81. 810 CC$(CH) = NC$(CH):IN(CH) = 1
  82. 820  HOME : GOTO 130
  83. 830  REM  :
  84. 840  REM  : SET STANDARD COMMANDS
  85. 850  REM  : READ CURRENT COMMANDS
  86. 860  REM  : FROM RAM DOS IMAGE
  87. 870  REM  :
  88. 880  FOR I = 1 TO 14: READ SC$(I): NEXT I
  89. 890  FOR I = 1 TO 14:IN(I) = 0: NEXT I
  90. 900 I = 1:FC = 0
  91. 910  FOR SA = 43380 TO 43582
  92. 920 A$ =  CHR$( PEEK(SA))
  93. 930 CC$(I) = CC$(I) +A$
  94. 940  IF  ASC(A$) >128  THEN I = I +1
  95. 950  IF  ASC(A$) = 0  THEN FC = FC +1
  96. 960  NEXT SA
  97. 970  RETURN 
  98. 980  RESTORE : FOR I = 1 TO 14: READ CC$(I):IN(I) = 0: NEXT I:FC = 0: GOTO 130
  99. 990  REM  :
  100. 1000  REM  :
  101. 1010  REM  : POKE NEW TABLE INTO
  102. 1020  REM  : MEMORY
  103. 1030  REM  :
  104. 1040  VTAB 22: HTAB 20: FLASH : PRINT "REPLACING": NORMAL 
  105. 1050  FOR I = 1 TO 14
  106. 1060  FOR J = 1 TO  LEN(CC$(I)) -1
  107. 1070 CS$ = CS$ + MID$ (CC$(I),J,1)
  108. 1080  NEXT J
  109. 1090 X =  ASC( RIGHT$(CC$(I),1))
  110. 1100  IF X >128  THEN  GOTO 1120
  111. 1110 X = X +128
  112. 1120 CS$ = CS$ + CHR$(X)
  113. 1130  NEXT I
  114. 1140  IF  LEN(CS$) <202  THEN CS$ = CS$ + CHR$(0): GOTO 1140
  115. 1150  FOR I = 1 TO 202
  116. 1160  POKE 43379 +I, ASC( MID$ (CS$,I,1))
  117. 1170  NEXT I
  118. 1180  REM  :
  119. 1190  REM  : RE-CALCULATE THE NEW
  120. 1200  REM  : OFFSET BYTE INDEX
  121. 1210  REM  : TABLE AND POKE IT
  122. 1220  REM  : INTO MEMORY
  123. 1230  REM  :
  124. 1240 XX = 3
  125. 1250  FOR I = 1 TO 14
  126. 1260 XX = XX + LEN(CC$(I))
  127. 1270  POKE 43585 +I,XX: NEXT I
  128. 1280  POKE 43583,0: POKE 43584,3: POKE 43586, PEEK(43585)
  129. 1290 CS$ = "":XX = 0
  130. 1300  VTAB 22: CALL  -868: PRINT : INPUT "SAVE CHANGES AS A TEXT FILE(Y/N) =>";AN$
  131. 1310  IF  LEFT$(AN$,1) = "Y"  THEN  GOSUB 1380
  132. 1320  VTAB 23: CALL  -868: INVERSE : PRINT "PLEASE,";: NORMAL : PRINT " STAND BY CLEARING MEMORY "
  133. 1330  GOTO 80
  134. 1340  REM  :
  135. 1350  REM  : SAVE CHANGES TO
  136. 1360  REM  : TEXT FILE
  137. 1370  REM  :
  138. 1380  HOME : VTAB 3: PRINT "<< CREATE A COMMAND CHANGE TEXT FILE >>"
  139. 1390  PRINT : FOR I = 0 TO 39: PRINT "%";: NEXT I
  140. 1400  VTAB 10: INPUT "ENTER FILE NAME => ";NA$: CALL  -958
  141. 1410  IF NA$ = ""  THEN  CALL  -1052: PRINT "ILLEGAL FILE NAME !": GOTO 1400
  142. 1420  IF  LEN(NA$) >30  OR  ASC( LEFT$(NA$,1)) <65  OR  ASC( LEFT$(NA$,1)) >90  THEN  CALL  -1052: PRINT "ILLEGAL FILE NAME !": GOTO 1400
  143. 1430  VTAB 12: INPUT "ENTER STARTING LINE # => ";SL$: CALL  -958
  144. 1440 SL =  VAL(SL$)
  145. 1450  IF SL <1  OR SL >63999  THEN  CALL  -1052: PRINT "ILLEGAL LINE NUMBER !": GOTO 1430
  146. 1460  VTAB 10: CALL  -958: INVERSE : PRINT "CURRENT PARAMETERS : ": NORMAL 
  147. 1470  PRINT : PRINT "TEXT FILE NAME => ";NA$: PRINT : PRINT "STARTING LINE NUMBER => ";SL
  148. 1480  PRINT : INPUT "VERIFY PARAMETERS (Y/N) => ";A$
  149. 1490  IF  LEFT$(A$,1) < >"Y"  THEN  GOTO 1380
  150. 1500  PRINT D$;"MON C,I,O"
  151. 1510  PRINT D$;"OPEN"NA$
  152. 1520  PRINT D$;"DELETE"NA$
  153. 1530  PRINT D$;"OPEN"NA$
  154. 1540  PRINT D$;"WRITE"NA$
  155. 1550  FOR SA = 43380 TO 43581
  156. 1560 C = C +1
  157. 1570  IF C = 10  THEN C = 1
  158. 1580  IF C < >1  THEN 1620
  159. 1590  PRINT 
  160. 1600  PRINT SL;
  161. 1610 SL = SL +1
  162. 1620  PRINT " POKE ";SA;", "; PEEK(SA);" :";
  163. 1630  NEXT SA
  164. 1640  PRINT 
  165. 1650  PRINT D$;"CLOSE"NA$
  166. 1660  PRINT D$;"NOMONC,I,O": VTAB  PEEK(37): CALL  -868
  167. 1670  RETURN 
  168. 1680  DATA  LANGUAGE NOT AVAILABLE,RANGE ERROR,WRITE PROTECTED,END OF DATA,FILE NOT FOUND,VOLUME MISMATCH,I/O ERROR
  169. 1690  DATA  DISK FULL,FILE LOCKED,SYNTAX ERROR,NO BUFFERS AVAILABLE,FILE TYPE MISMATCH,PROGRAM TOO LARGE,NOT DIRECT COMMAND
  170. 1700  IF  PEEK(222) = 6  THEN  HOME : VTAB 12: PRINT "INSERT DOS.DESIGNER DISK AND PRESS A KEY": WAIT  -16384,128: POKE  -16368,0: GOTO 380
  171. 1710  HOME : VTAB 22: PRINT "ERROR #"; PEEK(222);" IN LINE "; PEEK(218) + PEEK(219) *256