home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib33b.dsk / EDITOR.bas < prev    next >
BASIC Source File  |  2023-02-26  |  5KB  |  87 lines

  1. 10  REM  *********************
  2. 20  REM  * EDITOR            *
  3. 30  REM  * PRINTWORKS        *
  4. 40  REM  * BY BOB THRASHER   *
  5. 50  REM  * COPYRIGHT(C) 1988 *
  6. 60  REM  * MICROSPARC, INC   *
  7. 70  REM  * CONCORD, MA 01742 *
  8. 80  REM  *********************
  9. 90  HIMEM: 8192 -1024 *( PEEK(48896) = 76):PF = ( PEEK(48896) = 76): PRINT  CHR$(12) CHR$(21): HGR :D$ =  CHR$(4): PRINT D$"BRUNPRINTWORKS": IF PF  THEN  PRINT D$"PR#A$30A"
  10. 100  PRINT D$"BLOADEDITOR.OBJ": POKE 775,1: ONERR  GOTO 710
  11. 110 F = 49235: POKE F,0:P = 28672:N = 24576: POKE 789, INT(P/256): POKE 788,P - PEEK(789) *256:E = 32768: CALL E +3
  12. 120  GOSUB 690: HOME : HTAB 10: INVERSE : PRINT " PRINTWORKS EDITOR ": NORMAL : HTAB 3: PRINT "by Bob Thrasher, (C) 1988 MicroSPARC": PRINT : PRINT "(L)oad, (S)ave, (E)dit, (Q)uit :";
  13. 130  GOSUB 680: IF K = 81  THEN 180
  14. 140  IF K = 76  THEN 200
  15. 150  IF K = 83  THEN 280
  16. 160  IF K = 69  THEN 310
  17. 170  GOTO 130
  18. 180  HOME : PRINT "Exit program to BASIC (Y/N)?";: GOSUB 680: IF K = 89  THEN  TEXT : HOME : END 
  19. 190  GOTO 120
  20. 200  HOME : PRINT "Load (N)on-proportional font": PRINT "  or (P)roportional font ? ";
  21. 210  GOSUB 680: IF K = 27  THEN 120
  22. 220  IF K = 78  THEN 260
  23. 230  IF K < >80  THEN 210
  24. 240  GOSUB 600: IF Z$ < >""  THEN  HOME : PRINT : CALL E +3: PRINT D$"BLOAD"Z$",A"P: CALL 782: POKE F,0: CALL E +18: CALL E +6: GOSUB 700:J = 1
  25. 250  GOTO 120
  26. 260  GOSUB 600: IF Z$ < >""  THEN  HOME : PRINT : CALL E +3: PRINT D$"BLOAD"Z$",A"N: GOSUB 700: CALL 782: POKE F,0: CALL E +18:J = 1
  27. 270  GOTO 120
  28. 280  IF J = 0  THEN  GOSUB 780: GOTO 120
  29. 290  HOME : PRINT "Save Proportional FontWorks font": GOSUB 600: IF Z$ < >""  THEN  HOME : PRINT : PRINT D$"BSAVE"Z$",A"P",L"L
  30. 300  GOTO 120
  31. 310  IF J = 0  THEN  GOSUB 780: GOTO 120
  32. 320  HOME : PRINT "Edit (E)ntire set or": PRINT "     (C)haracter ? ";
  33. 330  GOSUB 680: IF K = 27  THEN 120
  34. 340  IF K = 67  THEN V = 0:H = 0:C = 0: GOTO 420
  35. 350  IF K < >69  THEN 330
  36. 360  HOME : PRINT "(I)nverse, (V)ert scroll, (U)pside down": PRINT "(ESC) for main menu : ";
  37. 370  GOSUB 680: IF K = 27  THEN 120
  38. 380  IF K = 73  THEN  CALL E +12: GOTO 370
  39. 390  IF K = 86  THEN  CALL E +9: GOTO 370
  40. 400  IF K = 85  THEN  CALL E +15
  41. 410  GOTO 370
  42. 420  HOME : PRINT "Arrows and (A) (Z) to select": PRINT "(RETURN) to edit": PRINT "(ESC) for main menu :";
  43. 430  POKE 6,C: CALL E +21: POKE 6,8: POKE 768,V: POKE 770,H: CALL E +24: GOSUB 680: IF K = 27  THEN 120
  44. 440  IF K = 13  THEN 500
  45. 450  IF K = 8  THEN C = C -1: IF C <0  THEN C = 95
  46. 460  IF K = 11  OR K = 65  THEN C = C -20: IF C <0  THEN C = C +100: IF C >95  THEN C = C -20
  47. 470  IF K = 21  THEN C = C +1: IF C = 96  THEN C = 0
  48. 480  IF K = 10  OR K = 90  THEN C = C +20: IF C >95  THEN C = C -100: IF C <0  THEN C = C +20
  49. 490 V =  INT(C/20) *10:H = (C -V *2) *2: GOTO 420
  50. 500  HOME : PRINT "Arrows and (A) (Z) to move": PRINT "(SPACEBAR) to toggle pixel": PRINT "(RETURN) to exit editor": PRINT "(ESC) to restore original character";:V = 0:H = 0
  51. 510 K = N +C *8: FOR X = 0 TO 7: POKE 36864 +X, PEEK(K +X): NEXT 
  52. 520  POKE 768,V *7 +83: POKE 770,H +5: POKE 6,7: CALL E +24: GOSUB 680: IF K = 13  THEN  CALL E: CALL E +18: GOSUB 700: GOTO 490
  53. 530  IF K = 32  THEN  POKE 6,C: POKE 768,V: POKE 770,H: CALL E +27
  54. 540  IF K = 8  THEN H = H -1: IF H <0  THEN H = 6
  55. 550  IF K = 21  THEN H = H +1: IF H = 7  THEN H = 0
  56. 560  IF K = 65  OR K = 11  THEN V = V -1: IF V <0  THEN V = 7
  57. 570  IF K = 90  OR K = 10  THEN V = V +1: IF V = 8  THEN V = 0
  58. 580  IF K = 27  THEN K = N +C *8: FOR X = 0 TO 7: POKE K +X, PEEK(36864 +X): NEXT : GOTO 490
  59. 590  GOTO 520
  60. 600  HOME : PRINT "Enter FILENAME or (ESC) to exit:": PRINT "Press (?) for disk selection":Z$ = ""
  61. 610  VTAB 24: HTAB 1: PRINT "::> "Z$" " CHR$(8);: GOSUB 680: IF K = 27  THEN Z$ = "": RETURN 
  62. 620  IF K = 63  THEN 790
  63. 630  IF K = 13  THEN  RETURN 
  64. 640  IF K >31  AND K <96  AND  LEN(Z$) < >(30 -15 *PF)  THEN Z$ = Z$ +K$
  65. 650  IF K = 8  AND  LEN(Z$) <2  THEN Z$ = "": GOTO 610
  66. 660  IF K = 8  THEN Z$ =  LEFT$(Z$, LEN(Z$) -1)
  67. 670  GOTO 610
  68. 680  GET K$:K =  PEEK(49200) * PEEK(49200):K =  ASC(K$):K = K -32 *(K >96  AND K <123): RETURN 
  69. 690  POKE F -3,0: POKE F +1,0: POKE F +4,0: VTAB 24: POKE 34,20: RETURN 
  70. 700  CALL E:L =  PEEK(5) *256 + PEEK(4) -P +1: RETURN 
  71. 710  IF  PEEK(222) = 255  THEN  RESUME 
  72. 720  HOME :ER =  PEEK(222):LN =  PEEK(218) + PEEK(219) *256: IF ER = 16  OR ER >21  THEN  PRINT "APPLESOFT";: GOTO 740
  73. 730  PRINT "DOS (or ProDOS)";
  74. 740  PRINT " error # "ER" in line # "L: IF ER = 6  THEN  PRINT "Pathname (file) not found"
  75. 750  IF ER = 8  THEN  PRINT "I/O error in loading file"
  76. 760  IF ER = 3  AND PF  THEN  PRINT "Device not connected"
  77. 770  PRINT "Check listing or retry": GOSUB 850: GOTO 120
  78. 780  HOME : PRINT "A character set must be loaded first...": PRINT : GOSUB 850: RETURN 
  79. 790  TEXT : HOME : PRINT "Select drive by SLOT,DRIVE";: IF PF  THEN  PRINT " or PREFIX";
  80. 800  PRINT "?";: GOSUB 680: PRINT K$: IF K = 80  THEN 820
  81. 810  PRINT  LEFT$("CATALOG",7 -4 *PF)",S";: GOSUB 860:CS = A: PRINT A",D";: GOSUB 860:CD = A: PRINT A: PRINT : PRINT D$; LEFT$("CATALOG",7 -4 *PF)",S"CS",D"CD: GOTO 840
  82. 820  PRINT "Enter full prefix to CAT:": INPUT "::>";A$: IF  LEFT$(A$,1) < >"/"  THEN A$ = "/" +A$
  83. 830  PRINT : PRINT D$"CAT"A$
  84. 840  GOSUB 850: GOSUB 690: HOME : GOTO 600
  85. 850  PRINT "Press RETURN to continue:";: GOSUB 680: PRINT : RETURN 
  86. 860  GET A$:A =  VAL(A$): IF A <1  OR A >7  THEN 860
  87. 870  RETURN