home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib01.dsk
/
SUPER WEAVER.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
7KB
|
170 lines
2 REM *************************
3 REM ** SUPER WEAVER **
4 REM ** MICRO-SPARC **
5 REM ** P.O. BOX 325 **
6 REM ** LINCOLN MASS 01773 **
7 REM ** COPYRIGHT C 1980 **
8 REM *************************
9 HOME
10 PRINT "SUPER WEAVER": PRINT "ON THE IDS 440, SET SWITCH 5 OFF AND SWITCH 3 ON": INPUT "PRESS RETURN TO CONTINUE";XX$
20 Q = 79:W = 1:D = 36:L = 1:A = 3
25 DIM T%(80),TR%(80),R%(641)
30 GOTO 100
100 REM ** ENTER THREADING **
110 HGR : HOME
115 HCOLOR= A: FOR PI = 0 TO 14: HPLOT 160,PI: NEXT PI
120 VTAB 24: PRINT "55= ERASE AND REENTER. 99=GO TO TIEUP";: VTAB 22: PRINT
121 IF C = 81 THEN VTAB 24: INVERSE : PRINT "80 THREADS REACHED.. GO TO TIE UP": FOR PI = 1 TO 1000: NEXT PI: NORMAL : GOTO 200
122 VTAB 23: CALL -868: PRINT "THREAD #";C;: INPUT " HARNESS #? (1-8) ";N
125 IF C = 80 THEN VTAB 21: CALL -868: FLASH : PRINT "80 THREADS USED. AUTO-SWITCH TO TIEUP.": FOR PI = 1 TO 1000: NEXT PI: NORMAL : HOME : GOTO 200
130 IF N = 99 THEN 200
132 IF N = 55 THEN 1000
133 IF N <1 OR N >8 THEN 122
135 GOSUB 500
140 GOSUB 900
150 GOTO 122
200 REM ** ENTER TIEUP **
202 VTAB 24: CALL -868: PRINT "55= ERASE 77= NEXT TREADLE 99=WEAVE";: VTAB 22: PRINT
204 IF C1 = 10 THEN VTAB 24: PRINT "10 TREADLES REACHED. GO TO WEAVE.": FOR PI = 1 TO 1000: NEXT PI: GOTO 600
205 VTAB 23: CALL -868: PRINT "TREADLE #";C1;: INPUT " ENTER HARNESS #(S)";N
209 IF N = 55 THEN 300
210 IF N = 77 THEN 240
211 IF N = 99 THEN 600
218 GOSUB 500
232 T%(P *10 +C1) = 1
233 OO = INT(200 +(C1 *3)):PP = INT(P *2)
234 HCOLOR= 3: HPLOT OO,PP
235 GOTO 200
240 C1 = C1 +1: GOTO 200
300 REM ERASE TIEUP ERRORS
310 GOSUB 360: GOSUB 370: REM ERASE CURRENT TIE UP
320 C1 = C1 -1: GOSUB 360: GOSUB 370: REM ERASE LAST TIE UP
330 GOTO 200
360 HCOLOR= 0: FOR PI = 0 TO 14 STEP 2: HPLOT 200 +(C1 *3),PI: NEXT PI: HCOLOR= 3: RETURN
370 FOR PI = 0 TO 70 STEP 10:T%(PI +C1) = 0: NEXT PI: RETURN : REM ERASE TABLE ENTRY
500 IF N = 8 THEN P = 0
505 IF N = 7 THEN P = 1
510 IF N = 6 THEN P = 2
515 IF N = 5 THEN P = 3
520 IF N = 4 THEN P = 4
525 IF N = 3 THEN P = 5
530 IF N = 2 THEN P = 6
540 IF N = 1 THEN P = 7
545 RETURN
600 REM ** WEAVING ROUTINES **
610 Y = 20: GOTO 700
650 HT = 0: REM ** REPRINT TREADLE SEQUENCE **
651 IF TN < = 20 THEN ST = 1
652 IF TN >20 AND TN < = 40 THEN ST = 21
653 IF TN >40 AND TN < = 60 THEN ST = 41
654 IF TN >60 THEN ST = 61
655 VTAB 21
656 FOR PI = ST TO TN
660 POKE 36,HT: PRINT TR%(PI);:HT = HT +2
665 NEXT PI: VTAB 19: PRINT :HH = HT: RETURN
700 HOME : VTAB 24: PRINT "55= ERASE LAST THROW 99= OPTIONS LIST";: VTAB 20: PRINT : IF TN >1 THEN GOSUB 650
701 TN = TN +1: VTAB 23: CALL -868: PRINT "ENTER TREADLE #";: INPUT TR$:TR%(TN) = VAL(TR$): VTAB 21
702 IF TR%(TN) = 99 THEN 1100
703 IF TR%(TN) = 55 THEN GOSUB 1900:TN = TN -2:HH = HH -2: GOTO 701
704 IF TR%(TN) <1 OR TR%(TN) >10 THEN VTAB 23: PRINT "THE LIMIT IS 10 TREADLES.. REENTER.": FOR II = 1 TO 350: NEXT II:TN = TN -1: GOTO 701
705 IF TN > = 79 THEN TN = 79: PRINT "80 LINES ALLOWED";: INPUT "HIT RETURN TO GO TO OPTIONS LIST";XX$: GOTO 1100
706 HH = HH +2: IF FG = 1 THEN HH = HH +1:FG = 0
707 VTAB 21: HTAB HH: IF IV = 1 THEN INVERSE
708 PRINT TR%(TN): NORMAL : IF TR%(TN) > = 10 THEN FG = 1
709 IF HH > = 75 AND IV = 0 THEN HH = 0:IV = 1: REM 1ST WRAPAROUND AND INVERSE PRINTING
710 IF HH > = 75 AND IV = 1 THEN HH = 0:IV = 0: REM SECOND WRAPAROUND
711 HCOLOR= 3:X = (TR%(TN) -1) +70:Z = X -70:Y = Y +2
714 FOR N = X TO Z STEP -10
715 IF T%(N) = 1 THEN GOSUB 800
720 NEXT N
725 GOTO 701
800 L = INT(N/10) *80
805 FOR J = L TO L +79
810 IF R%(J) = 1 THEN GOTO 820
815 GOTO 850
820 HCOLOR= A: HPLOT (J -L) *2,Y
850 NEXT J
855 RETURN
900 M = N
905 R%((P *80) +C) = L
910 HCOLOR= A: HPLOT C *2,P *2
930 C = C +1: RETURN
1000 REM ** ERASE THREADING ERROR **
1005 C = C -1:A = 0:L = 0:N = M
1010 HCOLOR= A: FOR PI = 0 TO 14 STEP 2: HPLOT (C *2),PI: NEXT PI
1015 FOR PI = 0 TO 560 STEP 80:R%(PI +C) = 0: NEXT PI: REM ERASE TABLE ENTRY
1040 L = 1:A = 3: GOTO 122
1100 REM ** OPTIONS MENU **
1102 HOME : VTAB 23: PRINT "MENU: 1=ERASE PTRN 2=ERASE PTRN/TIEUP"
1105 VTAB 24: CALL -868: INPUT "3= PRINT PATTERN 4= RESUME WEAVING ";O
1110 IF O = 4 THEN TN = TN -1: GOTO 700
1115 IF O = 1 THEN GOSUB 1200:TN = 0:HH = 0: GOTO 700
1120 IF O = 2 THEN TN = 0:HH = 0: GOTO 1300
1130 IF O = 3 THEN 1500
1135 IF O <1 OR O >4 THEN PRINT "ENTER 1-4": GOTO 1100
1140 GOTO 1100
1200 REM ** ERASE WOVEN PATTERN **
1202 A = 0: FOR U = 0 TO C *2 STEP 2
1205 FOR V = 20 TO Y STEP 2
1210 HCOLOR= 0: HPLOT U,V
1213 VTAB 21: FLASH : PRINT "ERASING"
1220 NEXT V: NEXT U
1221 NORMAL : VTAB 21: CALL -868
1222 A = 3:Y = 20
1225 RETURN
1300 REM ** ERASE TIE UP **
1302 HCOLOR= 0: FOR U = 0 TO 30 STEP 3
1305 FOR V = 0 TO 16 STEP 2
1315 HPLOT U +200,V
1320 NEXT V: NEXT U
1325 FOR PI = 0 TO 79:T%(PI) = 0: NEXT PI
1330 GOSUB 1200
1331 C1 = 0
1340 HOME : GOTO 200
1500 REM ** PRINTING ROUTINES **
1501 HOME : VTAB 21: PRINT "ENTER COMMENTS (OR JUST HIT RETURN).": INPUT X$
1505 POKE 54,0: POKE 55,193
1507 PRINT CHR$(30);: REM CTL SHIFT N FOR 12 CHAR PER INCH ON IDS 440. SET PRINTER TO 8 LINES/INCH. ENABLE LINE FEED SUPPRESSION.
1510 PRINT CHR$(9)"95N"
1511 PRINT CHR$(30): REM CTL SHIFT N FOR 12 CPI
1515 PRINT X$: PRINT : REM PRINT COMMENTS
1520 FOR Z = 0 TO 7
1525 FOR ZZ = 0 TO 79
1530 IF R%((Z *80) +ZZ) < >1 THEN 1540
1535 POKE D,ZZ: PRINT "X";
1540 NEXT ZZ
1545 FOR ZZ = 0 TO 9
1550 IF T%((Z *10) +ZZ) < >1 THEN 1560
1555 POKE 36,83 +ZZ: PRINT "X";
1560 NEXT ZZ: PRINT CHR$(10)
1565 NEXT Z: PRINT CHR$(10)
1570 FOR Z = 1 TO 95: PRINT "-";: NEXT Z: PRINT CHR$(10)
1600 REM ** PRINT PATTERN **
1602 ONERR GOTO 2000
1605 PRINT CHR$(9)"K";: REM CTL I K
1610 FOR II = 1 TO TN -1
1640 X = (TR%(II) -1) +70:Z = X -70
1660 FOR N = X TO Z STEP -10
1662 IF N <0 THEN PRINT CHR$(9);"40N": PR# 0: END : REM CTL I 40N
1665 IF T%(N) = 1 THEN GOSUB 1800
1670 NEXT N
1675 POKE 36,82 +TR%(II): PRINT TR%(II)
1677 PRINT CHR$(10)
1685 NEXT II
1690 PRINT CHR$(9)"40N";: REM CTL I 40N
1695 POKE 54,240: POKE 55,253
1697 GOTO 1100
1800 REM ** PRINT TREADLING **
1805 L = INT(N/10) *80
1810 FOR J = L TO L +Q
1815 IF R%(J) = W THEN POKE D,J -L: PRINT "X";
1820 NEXT
1825 PRINT
1830 PRINT CHR$(9)"K";: REM CTL I K
1840 RETURN
1900 REM ** ERASE LAST SHUTTLE THROW **
1905 A = 0:X = (TR%(TN -1) -1) +70:Z = X -70
1910 FOR N = X TO Z STEP -10
1920 IF T%(N) = 1 THEN GOSUB 800
1930 NEXT N:A = 3:Y = Y -2: RETURN
2000 PRINT CHR$(9)"40N": PR# 0: PRINT "ERROR..RECOVER BY ENTERING 'GOTO 1100'": PRINT "AND HITTING RETURN": END