This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- STOCK1.z81 is an EightyOne emulator snapshot of the first program.
- STOCK1.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK1E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK1.b81 is an EightyOne emulator text listing of the first program.
- STOCK2.z81 is an EightyOne emulator snapshot of the second program.
- STOCK2.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK2E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK2.b81 is an EightyOne emulator text listing of the second program.
Content
Source Code
0 REM \EDB\EDBA\EDBC\ED\B8\C9 itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"D
Skip to content
Inventory Control
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- STOCK1.z81 is an EightyOne emulator snapshot of the first program.
- STOCK1.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK1E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK1.b81 is an EightyOne emulator text listing of the first program.
- STOCK2.z81 is an EightyOne emulator snapshot of the second program.
- STOCK2.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK2E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK2.b81 is an EightyOne emulator text listing of the second program.
Content
Source Code
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\1D\00\42\5F\25\5F\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\05\05\F2\FF\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>232 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
40 LET A=CODE D$(N,W)
41 LET B=CODE D$(N,2)
42 LET E=CODE D$(N,7)+Q*(CODE D$(N,8)+Q*CODE D$(N,9))
43 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
44 LET D=CODE D$(N,5)+Q*CODE D$(N,6)
45 RETURN
46 IF L=W+W THEN GOTO 60
50 PRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
51 LPRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
52 IF L THEN PRINT TAB 19;D;
53 IF L THEN LPRINT TAB 19;D;
54 IF NOT L THEN PRINT A;TAB T;B;
55 IF NOT L THEN LPRINT A;TAB T;B;
56 PRINT TAB 26;E/FC
57 LPRINT TAB 26;E/FC
58 RETURN
60 LET Q$=D$(N,NS TO NE)+" "+D$(N,NE+W TO )+" "+STR$ (E/FC)
61 PRINT Q$
62 LPRINT Q$
63 RETURN
90 IF NN>=MAX THEN GOTO 2500
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT 20,O;"ENTER LINE TO SEEK (UP TO ";NL,"CHARACTERS), OR % %E%N%T%E%R% ."
1020 INPUT Q$
1030 IF Q$="" THEN GOTO W
1031 IF LEN Q$>NL THEN LET Q$=Q$(W TO NL)
1040 LET I=LEN Q$
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET N$=D$(N,NS TO NS+I-W)
1090 IF N$=Q$ THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF N$<Q$ THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET N$=D$(HI,NS TO NS+I-W)
1203 IF N$=Q$ THEN GOTO 1300
1205 IF Q$<D$(LO,NS TO NS+I-W) THEN LET N=LO
1208 IF Q$>N$ THEN LET N=HI+W
1210 CLS
1211 PRINT "%Y=%R%E%T%U%R%N TO MASTER MENU.",,,"%(%O%T%H%E%R%): ENTER NEW LINE """;Q$;""""
1212 PRINT AT T,O;"CHOOSE AN OPTION."
1213 PAUSE 4E4
1214 IF INKEY$="Y" THEN GOTO W
1215 CLS
1217 DIM E$(FL)
1219 LET E$(NS TO )=Q$
1220 PRINT AT T,O;"UNIT PRICE ($)?"
1221 INPUT Z
1222 LET Z=FC*Z
1223 LET H=INT (Z/Q)
1224 LET E$(7)=CHR$ (Z-Q*H)
1225 LET Z=H
1226 LET H=INT (Z/Q)
1227 LET E$(8)=CHR$ (Z-Q*H)
1228 LET E$(9)=CHR$ H
1230 PRINT AT T,O;"SUPPLIER CODE? (OPTIONAL)"
1231 INPUT Q$
1232 IF Q$<>"" THEN LET E$(W)=CHR$ VAL Q$
1233 PRINT AT T,O;"TYPE CODE? "
1234 INPUT Q$
1235 IF Q$<>"" THEN LET E$(2)=CHR$ VAL Q$
1237 PRINT AT T,O;"STOCK LEVEL? "
1238 INPUT Q$
1239 IF Q$="" THEN GOTO 1238
1241 LET Z=VAL Q$
1242 LET H=INT (Z/Q)
1244 LET E$(3)=CHR$ (Z-Q*H)
1245 LET E$(4)=CHR$ H
1250 PRINT AT T,O;"RE-ORDER LEVEL? (OPTIONAL)"
1251 INPUT Q$
1252 LET Z=O
1253 IF Q$<>"" THEN LET Z=VAL Q$
1254 LET H=INT (Z/Q)
1255 LET E$(5)=CHR$ (Z-Q*H)
1256 LET E$(06)=CHR$ H
1257 IF NOT NN THEN GOTO 1260
1258 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE: ";D$(N,NS TO NE);TAB 28;N
1320 PRINT D$(N,NE+W TO )
1330 GOSUB 40
1370 PRINT ,,"SUPPLIER: ";A
1372 PRINT "TYPE: ";B
1374 PRINT "UNIT VALUE: ";E/FC
1376 PRINT "RE-ORDER LEVEL = ";D
1380 PRINT " %S%T%O%C%K% %= ";C;
1390 IF C<D THEN PRINT " %(%L%O%W%)";
1400 PRINT ,"VALUE=$";C*E/FC
1420 PRINT ,,"OPTIONS:",,,,
1430 PRINT "%1: ENTER STOCK CHANGE."
1440 PRINT "%2: ALTER RE-ORDER LEVEL."
1442 PRINT "%3: ALTER UNIT VALUE."
1445 PRINT "%4: ADD TO TEXT."
1446 PRINT "%X: DELETE THIS LINE."
1447 PRINT ,,"%5: PREVIOUS LINE. %8: NEXT LINE."
1449 PRINT "%(%O%T%H%E%R%) RETURN TO MASTER MENU."
1460 PRINT AT T,O;"CHOOSE AN OPTION."
1470 PAUSE 4E4
1480 LET Q$=INKEY$
1510 LET A=8
1520 GOSUB 30
1525 IF Q$="1" THEN GOTO 1540
1530 IF Q$="2" THEN GOTO 1600
1532 IF Q$="3" THEN GOTO 1650
1533 IF Q$="4" THEN GOTO 1800
1534 IF Q$="X" THEN GOTO 1700
1535 IF Q$<>"5" AND Q$<>"8" THEN GOTO W
1536 IF Q$="8" THEN LET N=N+W
1537 IF Q$="5" THEN LET N=N-W
1538 IF N<W OR N>NN THEN GOTO W
1539 GOTO 1300
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET Z=C+Z
1570 LET H=INT (Z/Q)
1580 LET D$(N,3)=CHR$ (Z-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1600 PRINT AT T,O;"NEW RE-ORDER LEVEL?"
1610 INPUT Z
1620 LET H=INT (Z/Q)
1630 LET D$(N,5)=CHR$ (Z-Q*H)
1640 LET D$(N,6)=CHR$ H
1645 GOTO 1300
1650 PRINT AT T,O;"NEW UNIT VALUE ($)?"
1655 INPUT Z
1660 LET Z=Z*FC
1665 LET H=INT (Z/Q)
1670 LET D$(N,7)=CHR$ (Z-Q*H)
1671 LET Z=H
1672 LET H=INT (Z/Q)
1673 LET D$(N,8)=CHR$ (Z-Q*H)
1675 LET D$(N,9)=CHR$ H
1695 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
1800 PRINT AT T,O;"ENTER NEW TEXT."
1810 INPUT Q$
1820 LET Q$=Q$+D$(N,NE+W TO )
1830 LET D$(N,NE+W TO )=Q$
1840 GOTO 1300
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<O OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
2500 CLS
2510 PRINT "LIST IS FULL (";MAX;"LINES)."
2520 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
2530 PAUSE 4E4
2540 GOTO W
3000 CLS
3010 PRINT "THE LIST CAN INCLUDE:",,,
3020 PRINT "%1: SUPPLIER AND TYPE."
3030 PRINT "%2: RE-ORDER LEVEL."
3035 PRINT "%3: TEXT."
3036 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3040 PRINT AT T,O;"CHOOSE AN OPTION."
3050 PAUSE 4E4
3060 LET L=CODE INKEY$-29
3070 IF L<O OR L>W+W THEN GOTO W
3100 CLS
3110 PRINT " PRINT LIST :",,,,
3120 PRINT "%1: OF ALL LINES."
3130 PRINT "%2: FOR A SUPPLIER."
3140 PRINT "%3: FOR A GIVEN TYPE OF LINE."
3150 PRINT "%4: OF UNDERSTOCKED LINES."
3155 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3160 PRINT AT T,O;"CHOOSE AN OPTION."
3170 PAUSE 4E4
3180 LET X=CODE INKEY$-28
3181 IF X<=O OR X>4 THEN GOTO W
3182 CLS
3183 PRINT T$
3184 LPRINT T$
3185 LET Q$="LINE ST MIN VAL."
3186 IF NOT L THEN LET Q$(19 TO 24)="SU TY "
3187 IF L=W+W THEN LET Q$=""
3188 PRINT ,,Q$
3189 LPRINT ,,Q$,,,
3190 LET V=O
3200 LET U=W
3201 LET Y=NN
3204 PRINT AT T,O;"START NO.? (OPTIONAL)"
3205 INPUT Q$
3206 IF Q$<>"" THEN LET U=VAL Q$
3208 PRINT AT T,O;"END "
3209 INPUT Q$
3210 IF Q$<>"" THEN LET Y=VAL Q$
3213 PRINT AT T,O;O$
3214 PRINT AT 3,O
3215 IF X=2 THEN GOTO 3300
3216 IF X=3 THEN GOTO 3350
3217 IF X=4 THEN GOTO 3500
3218 FOR N=U TO Y
3219 GOSUB 40
3220 GOSUB 46
3225 LET V=V+C*E/FC
3230 NEXT N
3240 PRINT
3241 LPRINT
3242 LET Q$="TOTAL VALUE = $"+STR$ V
3243 PRINT Q$
3245 LPRINT Q$
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
3310 LET Q$="SUPPLIER"
3320 LET Z=W
3330 GOTO 3400
3350 LET Q$="TYPE"
3360 LET Z=2
3400 PRINT AT T,O;Q$;" CODE?"
3402 INPUT X
3404 PRINT AT T,O;O$
3406 PRINT AT W,O;Q$;" ";X
3407 LPRINT Q$;" ";X,,,,
3408 PRINT AT 3,O
3420 FOR N=U TO Y
3430 IF CODE D$(N,Z)<>X THEN GOTO 3460
3440 GOSUB 40
3450 GOSUB 46
3455 LET V=V+C*E/FC
3460 NEXT N
3470 GOTO 3240
3500 CLS
3501 LET Q$="UNDERSTOCKED LINES."
3502 PRINT Q$,,,,,
3503 LPRINT Q$,,,,,
3510 FOR N=U TO Y
3520 GOSUB 43
3530 IF C>=D THEN GOTO 3560
3540 GOSUB 40
3550 GOSUB 46
3555 LET V=V+C*E/FC
3560 NEXT N
3570 GOTO 3240
7000 CLS
7001 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I% % % "
7002 POKE 22612,(PEEK 22612)+3
7003 FOR I=22613 TO 22621
7004 POKE I,0
7005 NEXT I
7007 PRINT AT T,O;"NAME LENGTH (CHARACTERS)?"
7008 INPUT N
7009 POKE 16557,N
7010 PRINT AT T,O;"TEXT"
7011 INPUT D
7012 POKE 16558,D
7013 LET M=INT ((PEEK (16386)-PEEK (16412)+Q*(PEEK (16387)-PEEK 16413)-2*(Q+N+D))/(9+N+D))
7014 POKE 16559,M-Q*INT (M/Q)
7015 POKE 16560,INT (M/Q)
7017 CLS
7018 CLEAR
7020 DIM D$(PEEK (16559)+256*PEEK 16560,9+PEEK (16557)+PEEK 16558)
7021 LET MAX=PEEK (16559)+256*PEEK 16560
7022 LET NL=PEEK 16557
7023 LET ND=PEEK 16558
7024 PRINT ,,,,"LIST WILL ACCOMODATE ";MAX;" LINES"
7025 LET FL=9+NL+ND
7026 LET NN=0
7027 LET O=NN
7028 LET T=21
7075 PRINT AT T,O;"ENTER TITLE FOR NEW LIST "
7080 INPUT T$
7086 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7099 LET R=16396
7170 LET FC=1000
7180 LET NS=10
7190 LET NE=NS+NL-W
7200 LET NF=NE+ND
7300 GOTO W
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\08\00\4A\52\46\52\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\1B\1B\1B\1B\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>030 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
90 IF NN>=MAX THEN GOTO 4000
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT T,O;"ENTER LINE NUMBER."
1020 INPUT X
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET Z=CODE D$(N,W)+Q*CODE D$(N,2)
1090 IF Z=X THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF Z<X THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET Z=CODE D$(HI,W)+Q*CODE D$(HI,2)
1203 IF X=Z THEN GOTO 1300
1205 IF X<CODE D$(LO,W)+Q*CODE D$(LO,2) THEN LET N=LO
1208 IF X>Z THEN LET N=HI+W
1210 CLS
1211 PRINT "LINE ";X;" IS NOT IN THE LIST, AND WILL BE ADDED."
1215 LET H=INT (X/Q)
1217 LET E$(W)=CHR$ (X-Q*H)
1218 LET E$(2)=CHR$ H
1220 PRINT AT T,O;"LINE ";X;" STOCK?"
1225 INPUT C
1230 LET H=INT (C/Q)
1235 LET E$(3)=CHR$ (C-Q*H)
1240 LET E$(4)=CHR$ H
1242 IF NOT NN THEN GOTO 1260
1244 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE ";X;TAB 28;N
1320 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
1390 PRINT ,,"STOCK=";C
1430 PRINT AT 8,O;"OPTIONS:",,,,"%1: ENTER STOCK CHANGE."
1450 PRINT "%2: DELETE THIS LINE."
1455 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
1460 PRINT AT T,O;"ENTER AN OPTION."
1470 PAUSE 4E4
1480 LET Z=CODE INKEY$-28
1490 IF Z<=O OR Z>2 THEN GOTO W
1500 IF NOT Z THEN GOTO W
1510 LET A=8
1520 GOSUB 30
1535 IF Z=2 THEN GOTO 1700
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET C=C+Z
1570 LET H=INT (C/Q)
1580 LET D$(N,3)=CHR$ (C-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<0 OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
3000 CLS
3010 PRINT AT T,O;"START NO.? (OPTIONAL)"
3020 LET A=W
3030 INPUT Q$
3040 IF Q$<>"" THEN LET A=VAL Q$
3050 PRINT AT T,O;"END "
3060 LET B=NN
3065 INPUT Q$
3070 IF Q$<>"" THEN LET B=VAL Q$
3074 PRINT AT T,O;O$
3080 PRINT AT T,O;"HEADING?"
3090 INPUT Q$
3095 LPRINT T$
3100 CLS
3110 LPRINT ,,Q$
3120 LPRINT
3190 LPRINT "LINE","STOCK"
3200 FOR N=A TO B
3220 PRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3221 LPRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3230 NEXT N
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
4000 CLS
4010 PRINT T$
4020 PRINT "FILE ALREADY CONTAINS ";NN,"LINES - NO MORE ALLOWED."
4030 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
4040 PAUSE 4E4
4050 GOTO W
7000 CLS
7002 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I%I% % % "
7004 POKE 19709,(PEEK 19709)+3
7005 FOR I=19710 TO 19719
7006 POKE I,0
7008 NEXT I
7017 CLEAR
7018 DIM D$(62*(PEEK (16389)-89),4)
7019 LET MAX=62*(PEEK (16389)-89)
7020 LET T=21
7030 LET O=0
7040 PRINT ,,"LIST OF ";MAX;" LINES IN ";INT (.25*PEEK (16389)-15.3);"K."
7075 PRINT AT T,O;"ENTER TITLE FOR LIST "
7080 INPUT T$
7081 LET N=0
7084 LET FL=4
7090 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7098 LET NN=O
7099 LET R=16396
7300 GOTO W
People
No people associated with this content.
FF\EDB\EDBA\EDBC\ED\B0\C9\F2\FF itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM
Skip to content
Inventory Control
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- STOCK1.z81 is an EightyOne emulator snapshot of the first program.
- STOCK1.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK1E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK1.b81 is an EightyOne emulator text listing of the first program.
- STOCK2.z81 is an EightyOne emulator snapshot of the second program.
- STOCK2.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK2E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK2.b81 is an EightyOne emulator text listing of the second program.
Content
Source Code
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\1D\00\42\5F\25\5F\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\05\05\F2\FF\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>232 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
40 LET A=CODE D$(N,W)
41 LET B=CODE D$(N,2)
42 LET E=CODE D$(N,7)+Q*(CODE D$(N,8)+Q*CODE D$(N,9))
43 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
44 LET D=CODE D$(N,5)+Q*CODE D$(N,6)
45 RETURN
46 IF L=W+W THEN GOTO 60
50 PRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
51 LPRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
52 IF L THEN PRINT TAB 19;D;
53 IF L THEN LPRINT TAB 19;D;
54 IF NOT L THEN PRINT A;TAB T;B;
55 IF NOT L THEN LPRINT A;TAB T;B;
56 PRINT TAB 26;E/FC
57 LPRINT TAB 26;E/FC
58 RETURN
60 LET Q$=D$(N,NS TO NE)+" "+D$(N,NE+W TO )+" "+STR$ (E/FC)
61 PRINT Q$
62 LPRINT Q$
63 RETURN
90 IF NN>=MAX THEN GOTO 2500
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT 20,O;"ENTER LINE TO SEEK (UP TO ";NL,"CHARACTERS), OR % %E%N%T%E%R% ."
1020 INPUT Q$
1030 IF Q$="" THEN GOTO W
1031 IF LEN Q$>NL THEN LET Q$=Q$(W TO NL)
1040 LET I=LEN Q$
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET N$=D$(N,NS TO NS+I-W)
1090 IF N$=Q$ THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF N$<Q$ THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET N$=D$(HI,NS TO NS+I-W)
1203 IF N$=Q$ THEN GOTO 1300
1205 IF Q$<D$(LO,NS TO NS+I-W) THEN LET N=LO
1208 IF Q$>N$ THEN LET N=HI+W
1210 CLS
1211 PRINT "%Y=%R%E%T%U%R%N TO MASTER MENU.",,,"%(%O%T%H%E%R%): ENTER NEW LINE """;Q$;""""
1212 PRINT AT T,O;"CHOOSE AN OPTION."
1213 PAUSE 4E4
1214 IF INKEY$="Y" THEN GOTO W
1215 CLS
1217 DIM E$(FL)
1219 LET E$(NS TO )=Q$
1220 PRINT AT T,O;"UNIT PRICE ($)?"
1221 INPUT Z
1222 LET Z=FC*Z
1223 LET H=INT (Z/Q)
1224 LET E$(7)=CHR$ (Z-Q*H)
1225 LET Z=H
1226 LET H=INT (Z/Q)
1227 LET E$(8)=CHR$ (Z-Q*H)
1228 LET E$(9)=CHR$ H
1230 PRINT AT T,O;"SUPPLIER CODE? (OPTIONAL)"
1231 INPUT Q$
1232 IF Q$<>"" THEN LET E$(W)=CHR$ VAL Q$
1233 PRINT AT T,O;"TYPE CODE? "
1234 INPUT Q$
1235 IF Q$<>"" THEN LET E$(2)=CHR$ VAL Q$
1237 PRINT AT T,O;"STOCK LEVEL? "
1238 INPUT Q$
1239 IF Q$="" THEN GOTO 1238
1241 LET Z=VAL Q$
1242 LET H=INT (Z/Q)
1244 LET E$(3)=CHR$ (Z-Q*H)
1245 LET E$(4)=CHR$ H
1250 PRINT AT T,O;"RE-ORDER LEVEL? (OPTIONAL)"
1251 INPUT Q$
1252 LET Z=O
1253 IF Q$<>"" THEN LET Z=VAL Q$
1254 LET H=INT (Z/Q)
1255 LET E$(5)=CHR$ (Z-Q*H)
1256 LET E$(06)=CHR$ H
1257 IF NOT NN THEN GOTO 1260
1258 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE: ";D$(N,NS TO NE);TAB 28;N
1320 PRINT D$(N,NE+W TO )
1330 GOSUB 40
1370 PRINT ,,"SUPPLIER: ";A
1372 PRINT "TYPE: ";B
1374 PRINT "UNIT VALUE: ";E/FC
1376 PRINT "RE-ORDER LEVEL = ";D
1380 PRINT " %S%T%O%C%K% %= ";C;
1390 IF C<D THEN PRINT " %(%L%O%W%)";
1400 PRINT ,"VALUE=$";C*E/FC
1420 PRINT ,,"OPTIONS:",,,,
1430 PRINT "%1: ENTER STOCK CHANGE."
1440 PRINT "%2: ALTER RE-ORDER LEVEL."
1442 PRINT "%3: ALTER UNIT VALUE."
1445 PRINT "%4: ADD TO TEXT."
1446 PRINT "%X: DELETE THIS LINE."
1447 PRINT ,,"%5: PREVIOUS LINE. %8: NEXT LINE."
1449 PRINT "%(%O%T%H%E%R%) RETURN TO MASTER MENU."
1460 PRINT AT T,O;"CHOOSE AN OPTION."
1470 PAUSE 4E4
1480 LET Q$=INKEY$
1510 LET A=8
1520 GOSUB 30
1525 IF Q$="1" THEN GOTO 1540
1530 IF Q$="2" THEN GOTO 1600
1532 IF Q$="3" THEN GOTO 1650
1533 IF Q$="4" THEN GOTO 1800
1534 IF Q$="X" THEN GOTO 1700
1535 IF Q$<>"5" AND Q$<>"8" THEN GOTO W
1536 IF Q$="8" THEN LET N=N+W
1537 IF Q$="5" THEN LET N=N-W
1538 IF N<W OR N>NN THEN GOTO W
1539 GOTO 1300
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET Z=C+Z
1570 LET H=INT (Z/Q)
1580 LET D$(N,3)=CHR$ (Z-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1600 PRINT AT T,O;"NEW RE-ORDER LEVEL?"
1610 INPUT Z
1620 LET H=INT (Z/Q)
1630 LET D$(N,5)=CHR$ (Z-Q*H)
1640 LET D$(N,6)=CHR$ H
1645 GOTO 1300
1650 PRINT AT T,O;"NEW UNIT VALUE ($)?"
1655 INPUT Z
1660 LET Z=Z*FC
1665 LET H=INT (Z/Q)
1670 LET D$(N,7)=CHR$ (Z-Q*H)
1671 LET Z=H
1672 LET H=INT (Z/Q)
1673 LET D$(N,8)=CHR$ (Z-Q*H)
1675 LET D$(N,9)=CHR$ H
1695 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
1800 PRINT AT T,O;"ENTER NEW TEXT."
1810 INPUT Q$
1820 LET Q$=Q$+D$(N,NE+W TO )
1830 LET D$(N,NE+W TO )=Q$
1840 GOTO 1300
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<O OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
2500 CLS
2510 PRINT "LIST IS FULL (";MAX;"LINES)."
2520 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
2530 PAUSE 4E4
2540 GOTO W
3000 CLS
3010 PRINT "THE LIST CAN INCLUDE:",,,
3020 PRINT "%1: SUPPLIER AND TYPE."
3030 PRINT "%2: RE-ORDER LEVEL."
3035 PRINT "%3: TEXT."
3036 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3040 PRINT AT T,O;"CHOOSE AN OPTION."
3050 PAUSE 4E4
3060 LET L=CODE INKEY$-29
3070 IF L<O OR L>W+W THEN GOTO W
3100 CLS
3110 PRINT " PRINT LIST :",,,,
3120 PRINT "%1: OF ALL LINES."
3130 PRINT "%2: FOR A SUPPLIER."
3140 PRINT "%3: FOR A GIVEN TYPE OF LINE."
3150 PRINT "%4: OF UNDERSTOCKED LINES."
3155 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3160 PRINT AT T,O;"CHOOSE AN OPTION."
3170 PAUSE 4E4
3180 LET X=CODE INKEY$-28
3181 IF X<=O OR X>4 THEN GOTO W
3182 CLS
3183 PRINT T$
3184 LPRINT T$
3185 LET Q$="LINE ST MIN VAL."
3186 IF NOT L THEN LET Q$(19 TO 24)="SU TY "
3187 IF L=W+W THEN LET Q$=""
3188 PRINT ,,Q$
3189 LPRINT ,,Q$,,,
3190 LET V=O
3200 LET U=W
3201 LET Y=NN
3204 PRINT AT T,O;"START NO.? (OPTIONAL)"
3205 INPUT Q$
3206 IF Q$<>"" THEN LET U=VAL Q$
3208 PRINT AT T,O;"END "
3209 INPUT Q$
3210 IF Q$<>"" THEN LET Y=VAL Q$
3213 PRINT AT T,O;O$
3214 PRINT AT 3,O
3215 IF X=2 THEN GOTO 3300
3216 IF X=3 THEN GOTO 3350
3217 IF X=4 THEN GOTO 3500
3218 FOR N=U TO Y
3219 GOSUB 40
3220 GOSUB 46
3225 LET V=V+C*E/FC
3230 NEXT N
3240 PRINT
3241 LPRINT
3242 LET Q$="TOTAL VALUE = $"+STR$ V
3243 PRINT Q$
3245 LPRINT Q$
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
3310 LET Q$="SUPPLIER"
3320 LET Z=W
3330 GOTO 3400
3350 LET Q$="TYPE"
3360 LET Z=2
3400 PRINT AT T,O;Q$;" CODE?"
3402 INPUT X
3404 PRINT AT T,O;O$
3406 PRINT AT W,O;Q$;" ";X
3407 LPRINT Q$;" ";X,,,,
3408 PRINT AT 3,O
3420 FOR N=U TO Y
3430 IF CODE D$(N,Z)<>X THEN GOTO 3460
3440 GOSUB 40
3450 GOSUB 46
3455 LET V=V+C*E/FC
3460 NEXT N
3470 GOTO 3240
3500 CLS
3501 LET Q$="UNDERSTOCKED LINES."
3502 PRINT Q$,,,,,
3503 LPRINT Q$,,,,,
3510 FOR N=U TO Y
3520 GOSUB 43
3530 IF C>=D THEN GOTO 3560
3540 GOSUB 40
3550 GOSUB 46
3555 LET V=V+C*E/FC
3560 NEXT N
3570 GOTO 3240
7000 CLS
7001 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I% % % "
7002 POKE 22612,(PEEK 22612)+3
7003 FOR I=22613 TO 22621
7004 POKE I,0
7005 NEXT I
7007 PRINT AT T,O;"NAME LENGTH (CHARACTERS)?"
7008 INPUT N
7009 POKE 16557,N
7010 PRINT AT T,O;"TEXT"
7011 INPUT D
7012 POKE 16558,D
7013 LET M=INT ((PEEK (16386)-PEEK (16412)+Q*(PEEK (16387)-PEEK 16413)-2*(Q+N+D))/(9+N+D))
7014 POKE 16559,M-Q*INT (M/Q)
7015 POKE 16560,INT (M/Q)
7017 CLS
7018 CLEAR
7020 DIM D$(PEEK (16559)+256*PEEK 16560,9+PEEK (16557)+PEEK 16558)
7021 LET MAX=PEEK (16559)+256*PEEK 16560
7022 LET NL=PEEK 16557
7023 LET ND=PEEK 16558
7024 PRINT ,,,,"LIST WILL ACCOMODATE ";MAX;" LINES"
7025 LET FL=9+NL+ND
7026 LET NN=0
7027 LET O=NN
7028 LET T=21
7075 PRINT AT T,O;"ENTER TITLE FOR NEW LIST "
7080 INPUT T$
7086 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7099 LET R=16396
7170 LET FC=1000
7180 LET NS=10
7190 LET NE=NS+NL-W
7200 LET NF=NE+ND
7300 GOTO W
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\08\00\4A\52\46\52\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\1B\1B\1B\1B\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>030 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
90 IF NN>=MAX THEN GOTO 4000
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT T,O;"ENTER LINE NUMBER."
1020 INPUT X
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET Z=CODE D$(N,W)+Q*CODE D$(N,2)
1090 IF Z=X THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF Z<X THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET Z=CODE D$(HI,W)+Q*CODE D$(HI,2)
1203 IF X=Z THEN GOTO 1300
1205 IF X<CODE D$(LO,W)+Q*CODE D$(LO,2) THEN LET N=LO
1208 IF X>Z THEN LET N=HI+W
1210 CLS
1211 PRINT "LINE ";X;" IS NOT IN THE LIST, AND WILL BE ADDED."
1215 LET H=INT (X/Q)
1217 LET E$(W)=CHR$ (X-Q*H)
1218 LET E$(2)=CHR$ H
1220 PRINT AT T,O;"LINE ";X;" STOCK?"
1225 INPUT C
1230 LET H=INT (C/Q)
1235 LET E$(3)=CHR$ (C-Q*H)
1240 LET E$(4)=CHR$ H
1242 IF NOT NN THEN GOTO 1260
1244 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE ";X;TAB 28;N
1320 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
1390 PRINT ,,"STOCK=";C
1430 PRINT AT 8,O;"OPTIONS:",,,,"%1: ENTER STOCK CHANGE."
1450 PRINT "%2: DELETE THIS LINE."
1455 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
1460 PRINT AT T,O;"ENTER AN OPTION."
1470 PAUSE 4E4
1480 LET Z=CODE INKEY$-28
1490 IF Z<=O OR Z>2 THEN GOTO W
1500 IF NOT Z THEN GOTO W
1510 LET A=8
1520 GOSUB 30
1535 IF Z=2 THEN GOTO 1700
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET C=C+Z
1570 LET H=INT (C/Q)
1580 LET D$(N,3)=CHR$ (C-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<0 OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
3000 CLS
3010 PRINT AT T,O;"START NO.? (OPTIONAL)"
3020 LET A=W
3030 INPUT Q$
3040 IF Q$<>"" THEN LET A=VAL Q$
3050 PRINT AT T,O;"END "
3060 LET B=NN
3065 INPUT Q$
3070 IF Q$<>"" THEN LET B=VAL Q$
3074 PRINT AT T,O;O$
3080 PRINT AT T,O;"HEADING?"
3090 INPUT Q$
3095 LPRINT T$
3100 CLS
3110 LPRINT ,,Q$
3120 LPRINT
3190 LPRINT "LINE","STOCK"
3200 FOR N=A TO B
3220 PRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3221 LPRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3230 NEXT N
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
4000 CLS
4010 PRINT T$
4020 PRINT "FILE ALREADY CONTAINS ";NN,"LINES - NO MORE ALLOWED."
4030 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
4040 PAUSE 4E4
4050 GOTO W
7000 CLS
7002 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I%I% % % "
7004 POKE 19709,(PEEK 19709)+3
7005 FOR I=19710 TO 19719
7006 POKE I,0
7008 NEXT I
7017 CLEAR
7018 DIM D$(62*(PEEK (16389)-89),4)
7019 LET MAX=62*(PEEK (16389)-89)
7020 LET T=21
7030 LET O=0
7040 PRINT ,,"LIST OF ";MAX;" LINES IN ";INT (.25*PEEK (16389)-15.3);"K."
7075 PRINT AT T,O;"ENTER TITLE FOR LIST "
7080 INPUT T$
7081 LET N=0
7084 LET FL=4
7090 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7098 LET NN=O
7099 LET R=16396
7300 GOTO W
People
No people associated with this content.
Skip to content
Inventory Control
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- STOCK1.z81 is an EightyOne emulator snapshot of the first program.
- STOCK1.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK1E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK1.b81 is an EightyOne emulator text listing of the first program.
- STOCK2.z81 is an EightyOne emulator snapshot of the second program.
- STOCK2.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK2E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK2.b81 is an EightyOne emulator text listing of the second program.
Content
Source Code
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\1D\00\42\5F\25\5F\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\05\05\F2\FF\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>232 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
40 LET A=CODE D$(N,W)
41 LET B=CODE D$(N,2)
42 LET E=CODE D$(N,7)+Q*(CODE D$(N,8)+Q*CODE D$(N,9))
43 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
44 LET D=CODE D$(N,5)+Q*CODE D$(N,6)
45 RETURN
46 IF L=W+W THEN GOTO 60
50 PRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
51 LPRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
52 IF L THEN PRINT TAB 19;D;
53 IF L THEN LPRINT TAB 19;D;
54 IF NOT L THEN PRINT A;TAB T;B;
55 IF NOT L THEN LPRINT A;TAB T;B;
56 PRINT TAB 26;E/FC
57 LPRINT TAB 26;E/FC
58 RETURN
60 LET Q$=D$(N,NS TO NE)+" "+D$(N,NE+W TO )+" "+STR$ (E/FC)
61 PRINT Q$
62 LPRINT Q$
63 RETURN
90 IF NN>=MAX THEN GOTO 2500
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT 20,O;"ENTER LINE TO SEEK (UP TO ";NL,"CHARACTERS), OR % %E%N%T%E%R% ."
1020 INPUT Q$
1030 IF Q$="" THEN GOTO W
1031 IF LEN Q$>NL THEN LET Q$=Q$(W TO NL)
1040 LET I=LEN Q$
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET N$=D$(N,NS TO NS+I-W)
1090 IF N$=Q$ THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF N$<Q$ THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET N$=D$(HI,NS TO NS+I-W)
1203 IF N$=Q$ THEN GOTO 1300
1205 IF Q$<D$(LO,NS TO NS+I-W) THEN LET N=LO
1208 IF Q$>N$ THEN LET N=HI+W
1210 CLS
1211 PRINT "%Y=%R%E%T%U%R%N TO MASTER MENU.",,,"%(%O%T%H%E%R%): ENTER NEW LINE """;Q$;""""
1212 PRINT AT T,O;"CHOOSE AN OPTION."
1213 PAUSE 4E4
1214 IF INKEY$="Y" THEN GOTO W
1215 CLS
1217 DIM E$(FL)
1219 LET E$(NS TO )=Q$
1220 PRINT AT T,O;"UNIT PRICE ($)?"
1221 INPUT Z
1222 LET Z=FC*Z
1223 LET H=INT (Z/Q)
1224 LET E$(7)=CHR$ (Z-Q*H)
1225 LET Z=H
1226 LET H=INT (Z/Q)
1227 LET E$(8)=CHR$ (Z-Q*H)
1228 LET E$(9)=CHR$ H
1230 PRINT AT T,O;"SUPPLIER CODE? (OPTIONAL)"
1231 INPUT Q$
1232 IF Q$<>"" THEN LET E$(W)=CHR$ VAL Q$
1233 PRINT AT T,O;"TYPE CODE? "
1234 INPUT Q$
1235 IF Q$<>"" THEN LET E$(2)=CHR$ VAL Q$
1237 PRINT AT T,O;"STOCK LEVEL? "
1238 INPUT Q$
1239 IF Q$="" THEN GOTO 1238
1241 LET Z=VAL Q$
1242 LET H=INT (Z/Q)
1244 LET E$(3)=CHR$ (Z-Q*H)
1245 LET E$(4)=CHR$ H
1250 PRINT AT T,O;"RE-ORDER LEVEL? (OPTIONAL)"
1251 INPUT Q$
1252 LET Z=O
1253 IF Q$<>"" THEN LET Z=VAL Q$
1254 LET H=INT (Z/Q)
1255 LET E$(5)=CHR$ (Z-Q*H)
1256 LET E$(06)=CHR$ H
1257 IF NOT NN THEN GOTO 1260
1258 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE: ";D$(N,NS TO NE);TAB 28;N
1320 PRINT D$(N,NE+W TO )
1330 GOSUB 40
1370 PRINT ,,"SUPPLIER: ";A
1372 PRINT "TYPE: ";B
1374 PRINT "UNIT VALUE: ";E/FC
1376 PRINT "RE-ORDER LEVEL = ";D
1380 PRINT " %S%T%O%C%K% %= ";C;
1390 IF C<D THEN PRINT " %(%L%O%W%)";
1400 PRINT ,"VALUE=$";C*E/FC
1420 PRINT ,,"OPTIONS:",,,,
1430 PRINT "%1: ENTER STOCK CHANGE."
1440 PRINT "%2: ALTER RE-ORDER LEVEL."
1442 PRINT "%3: ALTER UNIT VALUE."
1445 PRINT "%4: ADD TO TEXT."
1446 PRINT "%X: DELETE THIS LINE."
1447 PRINT ,,"%5: PREVIOUS LINE. %8: NEXT LINE."
1449 PRINT "%(%O%T%H%E%R%) RETURN TO MASTER MENU."
1460 PRINT AT T,O;"CHOOSE AN OPTION."
1470 PAUSE 4E4
1480 LET Q$=INKEY$
1510 LET A=8
1520 GOSUB 30
1525 IF Q$="1" THEN GOTO 1540
1530 IF Q$="2" THEN GOTO 1600
1532 IF Q$="3" THEN GOTO 1650
1533 IF Q$="4" THEN GOTO 1800
1534 IF Q$="X" THEN GOTO 1700
1535 IF Q$<>"5" AND Q$<>"8" THEN GOTO W
1536 IF Q$="8" THEN LET N=N+W
1537 IF Q$="5" THEN LET N=N-W
1538 IF N<W OR N>NN THEN GOTO W
1539 GOTO 1300
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET Z=C+Z
1570 LET H=INT (Z/Q)
1580 LET D$(N,3)=CHR$ (Z-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1600 PRINT AT T,O;"NEW RE-ORDER LEVEL?"
1610 INPUT Z
1620 LET H=INT (Z/Q)
1630 LET D$(N,5)=CHR$ (Z-Q*H)
1640 LET D$(N,6)=CHR$ H
1645 GOTO 1300
1650 PRINT AT T,O;"NEW UNIT VALUE ($)?"
1655 INPUT Z
1660 LET Z=Z*FC
1665 LET H=INT (Z/Q)
1670 LET D$(N,7)=CHR$ (Z-Q*H)
1671 LET Z=H
1672 LET H=INT (Z/Q)
1673 LET D$(N,8)=CHR$ (Z-Q*H)
1675 LET D$(N,9)=CHR$ H
1695 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
1800 PRINT AT T,O;"ENTER NEW TEXT."
1810 INPUT Q$
1820 LET Q$=Q$+D$(N,NE+W TO )
1830 LET D$(N,NE+W TO )=Q$
1840 GOTO 1300
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<O OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
2500 CLS
2510 PRINT "LIST IS FULL (";MAX;"LINES)."
2520 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
2530 PAUSE 4E4
2540 GOTO W
3000 CLS
3010 PRINT "THE LIST CAN INCLUDE:",,,
3020 PRINT "%1: SUPPLIER AND TYPE."
3030 PRINT "%2: RE-ORDER LEVEL."
3035 PRINT "%3: TEXT."
3036 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3040 PRINT AT T,O;"CHOOSE AN OPTION."
3050 PAUSE 4E4
3060 LET L=CODE INKEY$-29
3070 IF L<O OR L>W+W THEN GOTO W
3100 CLS
3110 PRINT " PRINT LIST :",,,,
3120 PRINT "%1: OF ALL LINES."
3130 PRINT "%2: FOR A SUPPLIER."
3140 PRINT "%3: FOR A GIVEN TYPE OF LINE."
3150 PRINT "%4: OF UNDERSTOCKED LINES."
3155 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3160 PRINT AT T,O;"CHOOSE AN OPTION."
3170 PAUSE 4E4
3180 LET X=CODE INKEY$-28
3181 IF X<=O OR X>4 THEN GOTO W
3182 CLS
3183 PRINT T$
3184 LPRINT T$
3185 LET Q$="LINE ST MIN VAL."
3186 IF NOT L THEN LET Q$(19 TO 24)="SU TY "
3187 IF L=W+W THEN LET Q$=""
3188 PRINT ,,Q$
3189 LPRINT ,,Q$,,,
3190 LET V=O
3200 LET U=W
3201 LET Y=NN
3204 PRINT AT T,O;"START NO.? (OPTIONAL)"
3205 INPUT Q$
3206 IF Q$<>"" THEN LET U=VAL Q$
3208 PRINT AT T,O;"END "
3209 INPUT Q$
3210 IF Q$<>"" THEN LET Y=VAL Q$
3213 PRINT AT T,O;O$
3214 PRINT AT 3,O
3215 IF X=2 THEN GOTO 3300
3216 IF X=3 THEN GOTO 3350
3217 IF X=4 THEN GOTO 3500
3218 FOR N=U TO Y
3219 GOSUB 40
3220 GOSUB 46
3225 LET V=V+C*E/FC
3230 NEXT N
3240 PRINT
3241 LPRINT
3242 LET Q$="TOTAL VALUE = $"+STR$ V
3243 PRINT Q$
3245 LPRINT Q$
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
3310 LET Q$="SUPPLIER"
3320 LET Z=W
3330 GOTO 3400
3350 LET Q$="TYPE"
3360 LET Z=2
3400 PRINT AT T,O;Q$;" CODE?"
3402 INPUT X
3404 PRINT AT T,O;O$
3406 PRINT AT W,O;Q$;" ";X
3407 LPRINT Q$;" ";X,,,,
3408 PRINT AT 3,O
3420 FOR N=U TO Y
3430 IF CODE D$(N,Z)<>X THEN GOTO 3460
3440 GOSUB 40
3450 GOSUB 46
3455 LET V=V+C*E/FC
3460 NEXT N
3470 GOTO 3240
3500 CLS
3501 LET Q$="UNDERSTOCKED LINES."
3502 PRINT Q$,,,,,
3503 LPRINT Q$,,,,,
3510 FOR N=U TO Y
3520 GOSUB 43
3530 IF C>=D THEN GOTO 3560
3540 GOSUB 40
3550 GOSUB 46
3555 LET V=V+C*E/FC
3560 NEXT N
3570 GOTO 3240
7000 CLS
7001 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I% % % "
7002 POKE 22612,(PEEK 22612)+3
7003 FOR I=22613 TO 22621
7004 POKE I,0
7005 NEXT I
7007 PRINT AT T,O;"NAME LENGTH (CHARACTERS)?"
7008 INPUT N
7009 POKE 16557,N
7010 PRINT AT T,O;"TEXT"
7011 INPUT D
7012 POKE 16558,D
7013 LET M=INT ((PEEK (16386)-PEEK (16412)+Q*(PEEK (16387)-PEEK 16413)-2*(Q+N+D))/(9+N+D))
7014 POKE 16559,M-Q*INT (M/Q)
7015 POKE 16560,INT (M/Q)
7017 CLS
7018 CLEAR
7020 DIM D$(PEEK (16559)+256*PEEK 16560,9+PEEK (16557)+PEEK 16558)
7021 LET MAX=PEEK (16559)+256*PEEK 16560
7022 LET NL=PEEK 16557
7023 LET ND=PEEK 16558
7024 PRINT ,,,,"LIST WILL ACCOMODATE ";MAX;" LINES"
7025 LET FL=9+NL+ND
7026 LET NN=0
7027 LET O=NN
7028 LET T=21
7075 PRINT AT T,O;"ENTER TITLE FOR NEW LIST "
7080 INPUT T$
7086 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7099 LET R=16396
7170 LET FC=1000
7180 LET NS=10
7190 LET NE=NS+NL-W
7200 LET NF=NE+ND
7300 GOTO W
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\08\00\4A\52\46\52\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\1B\1B\1B\1B\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>030 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
90 IF NN>=MAX THEN GOTO 4000
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT T,O;"ENTER LINE NUMBER."
1020 INPUT X
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET Z=CODE D$(N,W)+Q*CODE D$(N,2)
1090 IF Z=X THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF Z<X THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET Z=CODE D$(HI,W)+Q*CODE D$(HI,2)
1203 IF X=Z THEN GOTO 1300
1205 IF X<CODE D$(LO,W)+Q*CODE D$(LO,2) THEN LET N=LO
1208 IF X>Z THEN LET N=HI+W
1210 CLS
1211 PRINT "LINE ";X;" IS NOT IN THE LIST, AND WILL BE ADDED."
1215 LET H=INT (X/Q)
1217 LET E$(W)=CHR$ (X-Q*H)
1218 LET E$(2)=CHR$ H
1220 PRINT AT T,O;"LINE ";X;" STOCK?"
1225 INPUT C
1230 LET H=INT (C/Q)
1235 LET E$(3)=CHR$ (C-Q*H)
1240 LET E$(4)=CHR$ H
1242 IF NOT NN THEN GOTO 1260
1244 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE ";X;TAB 28;N
1320 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
1390 PRINT ,,"STOCK=";C
1430 PRINT AT 8,O;"OPTIONS:",,,,"%1: ENTER STOCK CHANGE."
1450 PRINT "%2: DELETE THIS LINE."
1455 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
1460 PRINT AT T,O;"ENTER AN OPTION."
1470 PAUSE 4E4
1480 LET Z=CODE INKEY$-28
1490 IF Z<=O OR Z>2 THEN GOTO W
1500 IF NOT Z THEN GOTO W
1510 LET A=8
1520 GOSUB 30
1535 IF Z=2 THEN GOTO 1700
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET C=C+Z
1570 LET H=INT (C/Q)
1580 LET D$(N,3)=CHR$ (C-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<0 OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
3000 CLS
3010 PRINT AT T,O;"START NO.? (OPTIONAL)"
3020 LET A=W
3030 INPUT Q$
3040 IF Q$<>"" THEN LET A=VAL Q$
3050 PRINT AT T,O;"END "
3060 LET B=NN
3065 INPUT Q$
3070 IF Q$<>"" THEN LET B=VAL Q$
3074 PRINT AT T,O;O$
3080 PRINT AT T,O;"HEADING?"
3090 INPUT Q$
3095 LPRINT T$
3100 CLS
3110 LPRINT ,,Q$
3120 LPRINT
3190 LPRINT "LINE","STOCK"
3200 FOR N=A TO B
3220 PRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3221 LPRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3230 NEXT N
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
4000 CLS
4010 PRINT T$
4020 PRINT "FILE ALREADY CONTAINS ";NN,"LINES - NO MORE ALLOWED."
4030 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
4040 PAUSE 4E4
4050 GOTO W
7000 CLS
7002 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I%I% % % "
7004 POKE 19709,(PEEK 19709)+3
7005 FOR I=19710 TO 19719
7006 POKE I,0
7008 NEXT I
7017 CLEAR
7018 DIM D$(62*(PEEK (16389)-89),4)
7019 LET MAX=62*(PEEK (16389)-89)
7020 LET T=21
7030 LET O=0
7040 PRINT ,,"LIST OF ";MAX;" LINES IN ";INT (.25*PEEK (16389)-15.3);"K."
7075 PRINT AT T,O;"ENTER TITLE FOR LIST "
7080 INPUT T$
7081 LET N=0
7084 LET FL=4
7090 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7098 LET NN=O
7099 LET R=16396
7300 GOTO W
People
No people associated with this content.
D
Skip to content
Inventory Control
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- STOCK1.z81 is an EightyOne emulator snapshot of the first program.
- STOCK1.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK1E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK1.b81 is an EightyOne emulator text listing of the first program.
- STOCK2.z81 is an EightyOne emulator snapshot of the second program.
- STOCK2.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK2E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK2.b81 is an EightyOne emulator text listing of the second program.
Content
Source Code
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\1D\00\42\5F\25\5F\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\05\05\F2\FF\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>232 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
40 LET A=CODE D$(N,W)
41 LET B=CODE D$(N,2)
42 LET E=CODE D$(N,7)+Q*(CODE D$(N,8)+Q*CODE D$(N,9))
43 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
44 LET D=CODE D$(N,5)+Q*CODE D$(N,6)
45 RETURN
46 IF L=W+W THEN GOTO 60
50 PRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
51 LPRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
52 IF L THEN PRINT TAB 19;D;
53 IF L THEN LPRINT TAB 19;D;
54 IF NOT L THEN PRINT A;TAB T;B;
55 IF NOT L THEN LPRINT A;TAB T;B;
56 PRINT TAB 26;E/FC
57 LPRINT TAB 26;E/FC
58 RETURN
60 LET Q$=D$(N,NS TO NE)+" "+D$(N,NE+W TO )+" "+STR$ (E/FC)
61 PRINT Q$
62 LPRINT Q$
63 RETURN
90 IF NN>=MAX THEN GOTO 2500
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT 20,O;"ENTER LINE TO SEEK (UP TO ";NL,"CHARACTERS), OR % %E%N%T%E%R% ."
1020 INPUT Q$
1030 IF Q$="" THEN GOTO W
1031 IF LEN Q$>NL THEN LET Q$=Q$(W TO NL)
1040 LET I=LEN Q$
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET N$=D$(N,NS TO NS+I-W)
1090 IF N$=Q$ THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF N$<Q$ THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET N$=D$(HI,NS TO NS+I-W)
1203 IF N$=Q$ THEN GOTO 1300
1205 IF Q$<D$(LO,NS TO NS+I-W) THEN LET N=LO
1208 IF Q$>N$ THEN LET N=HI+W
1210 CLS
1211 PRINT "%Y=%R%E%T%U%R%N TO MASTER MENU.",,,"%(%O%T%H%E%R%): ENTER NEW LINE """;Q$;""""
1212 PRINT AT T,O;"CHOOSE AN OPTION."
1213 PAUSE 4E4
1214 IF INKEY$="Y" THEN GOTO W
1215 CLS
1217 DIM E$(FL)
1219 LET E$(NS TO )=Q$
1220 PRINT AT T,O;"UNIT PRICE ($)?"
1221 INPUT Z
1222 LET Z=FC*Z
1223 LET H=INT (Z/Q)
1224 LET E$(7)=CHR$ (Z-Q*H)
1225 LET Z=H
1226 LET H=INT (Z/Q)
1227 LET E$(8)=CHR$ (Z-Q*H)
1228 LET E$(9)=CHR$ H
1230 PRINT AT T,O;"SUPPLIER CODE? (OPTIONAL)"
1231 INPUT Q$
1232 IF Q$<>"" THEN LET E$(W)=CHR$ VAL Q$
1233 PRINT AT T,O;"TYPE CODE? "
1234 INPUT Q$
1235 IF Q$<>"" THEN LET E$(2)=CHR$ VAL Q$
1237 PRINT AT T,O;"STOCK LEVEL? "
1238 INPUT Q$
1239 IF Q$="" THEN GOTO 1238
1241 LET Z=VAL Q$
1242 LET H=INT (Z/Q)
1244 LET E$(3)=CHR$ (Z-Q*H)
1245 LET E$(4)=CHR$ H
1250 PRINT AT T,O;"RE-ORDER LEVEL? (OPTIONAL)"
1251 INPUT Q$
1252 LET Z=O
1253 IF Q$<>"" THEN LET Z=VAL Q$
1254 LET H=INT (Z/Q)
1255 LET E$(5)=CHR$ (Z-Q*H)
1256 LET E$(06)=CHR$ H
1257 IF NOT NN THEN GOTO 1260
1258 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE: ";D$(N,NS TO NE);TAB 28;N
1320 PRINT D$(N,NE+W TO )
1330 GOSUB 40
1370 PRINT ,,"SUPPLIER: ";A
1372 PRINT "TYPE: ";B
1374 PRINT "UNIT VALUE: ";E/FC
1376 PRINT "RE-ORDER LEVEL = ";D
1380 PRINT " %S%T%O%C%K% %= ";C;
1390 IF C<D THEN PRINT " %(%L%O%W%)";
1400 PRINT ,"VALUE=$";C*E/FC
1420 PRINT ,,"OPTIONS:",,,,
1430 PRINT "%1: ENTER STOCK CHANGE."
1440 PRINT "%2: ALTER RE-ORDER LEVEL."
1442 PRINT "%3: ALTER UNIT VALUE."
1445 PRINT "%4: ADD TO TEXT."
1446 PRINT "%X: DELETE THIS LINE."
1447 PRINT ,,"%5: PREVIOUS LINE. %8: NEXT LINE."
1449 PRINT "%(%O%T%H%E%R%) RETURN TO MASTER MENU."
1460 PRINT AT T,O;"CHOOSE AN OPTION."
1470 PAUSE 4E4
1480 LET Q$=INKEY$
1510 LET A=8
1520 GOSUB 30
1525 IF Q$="1" THEN GOTO 1540
1530 IF Q$="2" THEN GOTO 1600
1532 IF Q$="3" THEN GOTO 1650
1533 IF Q$="4" THEN GOTO 1800
1534 IF Q$="X" THEN GOTO 1700
1535 IF Q$<>"5" AND Q$<>"8" THEN GOTO W
1536 IF Q$="8" THEN LET N=N+W
1537 IF Q$="5" THEN LET N=N-W
1538 IF N<W OR N>NN THEN GOTO W
1539 GOTO 1300
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET Z=C+Z
1570 LET H=INT (Z/Q)
1580 LET D$(N,3)=CHR$ (Z-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1600 PRINT AT T,O;"NEW RE-ORDER LEVEL?"
1610 INPUT Z
1620 LET H=INT (Z/Q)
1630 LET D$(N,5)=CHR$ (Z-Q*H)
1640 LET D$(N,6)=CHR$ H
1645 GOTO 1300
1650 PRINT AT T,O;"NEW UNIT VALUE ($)?"
1655 INPUT Z
1660 LET Z=Z*FC
1665 LET H=INT (Z/Q)
1670 LET D$(N,7)=CHR$ (Z-Q*H)
1671 LET Z=H
1672 LET H=INT (Z/Q)
1673 LET D$(N,8)=CHR$ (Z-Q*H)
1675 LET D$(N,9)=CHR$ H
1695 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
1800 PRINT AT T,O;"ENTER NEW TEXT."
1810 INPUT Q$
1820 LET Q$=Q$+D$(N,NE+W TO )
1830 LET D$(N,NE+W TO )=Q$
1840 GOTO 1300
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<O OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
2500 CLS
2510 PRINT "LIST IS FULL (";MAX;"LINES)."
2520 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
2530 PAUSE 4E4
2540 GOTO W
3000 CLS
3010 PRINT "THE LIST CAN INCLUDE:",,,
3020 PRINT "%1: SUPPLIER AND TYPE."
3030 PRINT "%2: RE-ORDER LEVEL."
3035 PRINT "%3: TEXT."
3036 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3040 PRINT AT T,O;"CHOOSE AN OPTION."
3050 PAUSE 4E4
3060 LET L=CODE INKEY$-29
3070 IF L<O OR L>W+W THEN GOTO W
3100 CLS
3110 PRINT " PRINT LIST :",,,,
3120 PRINT "%1: OF ALL LINES."
3130 PRINT "%2: FOR A SUPPLIER."
3140 PRINT "%3: FOR A GIVEN TYPE OF LINE."
3150 PRINT "%4: OF UNDERSTOCKED LINES."
3155 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3160 PRINT AT T,O;"CHOOSE AN OPTION."
3170 PAUSE 4E4
3180 LET X=CODE INKEY$-28
3181 IF X<=O OR X>4 THEN GOTO W
3182 CLS
3183 PRINT T$
3184 LPRINT T$
3185 LET Q$="LINE ST MIN VAL."
3186 IF NOT L THEN LET Q$(19 TO 24)="SU TY "
3187 IF L=W+W THEN LET Q$=""
3188 PRINT ,,Q$
3189 LPRINT ,,Q$,,,
3190 LET V=O
3200 LET U=W
3201 LET Y=NN
3204 PRINT AT T,O;"START NO.? (OPTIONAL)"
3205 INPUT Q$
3206 IF Q$<>"" THEN LET U=VAL Q$
3208 PRINT AT T,O;"END "
3209 INPUT Q$
3210 IF Q$<>"" THEN LET Y=VAL Q$
3213 PRINT AT T,O;O$
3214 PRINT AT 3,O
3215 IF X=2 THEN GOTO 3300
3216 IF X=3 THEN GOTO 3350
3217 IF X=4 THEN GOTO 3500
3218 FOR N=U TO Y
3219 GOSUB 40
3220 GOSUB 46
3225 LET V=V+C*E/FC
3230 NEXT N
3240 PRINT
3241 LPRINT
3242 LET Q$="TOTAL VALUE = $"+STR$ V
3243 PRINT Q$
3245 LPRINT Q$
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
3310 LET Q$="SUPPLIER"
3320 LET Z=W
3330 GOTO 3400
3350 LET Q$="TYPE"
3360 LET Z=2
3400 PRINT AT T,O;Q$;" CODE?"
3402 INPUT X
3404 PRINT AT T,O;O$
3406 PRINT AT W,O;Q$;" ";X
3407 LPRINT Q$;" ";X,,,,
3408 PRINT AT 3,O
3420 FOR N=U TO Y
3430 IF CODE D$(N,Z)<>X THEN GOTO 3460
3440 GOSUB 40
3450 GOSUB 46
3455 LET V=V+C*E/FC
3460 NEXT N
3470 GOTO 3240
3500 CLS
3501 LET Q$="UNDERSTOCKED LINES."
3502 PRINT Q$,,,,,
3503 LPRINT Q$,,,,,
3510 FOR N=U TO Y
3520 GOSUB 43
3530 IF C>=D THEN GOTO 3560
3540 GOSUB 40
3550 GOSUB 46
3555 LET V=V+C*E/FC
3560 NEXT N
3570 GOTO 3240
7000 CLS
7001 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I% % % "
7002 POKE 22612,(PEEK 22612)+3
7003 FOR I=22613 TO 22621
7004 POKE I,0
7005 NEXT I
7007 PRINT AT T,O;"NAME LENGTH (CHARACTERS)?"
7008 INPUT N
7009 POKE 16557,N
7010 PRINT AT T,O;"TEXT"
7011 INPUT D
7012 POKE 16558,D
7013 LET M=INT ((PEEK (16386)-PEEK (16412)+Q*(PEEK (16387)-PEEK 16413)-2*(Q+N+D))/(9+N+D))
7014 POKE 16559,M-Q*INT (M/Q)
7015 POKE 16560,INT (M/Q)
7017 CLS
7018 CLEAR
7020 DIM D$(PEEK (16559)+256*PEEK 16560,9+PEEK (16557)+PEEK 16558)
7021 LET MAX=PEEK (16559)+256*PEEK 16560
7022 LET NL=PEEK 16557
7023 LET ND=PEEK 16558
7024 PRINT ,,,,"LIST WILL ACCOMODATE ";MAX;" LINES"
7025 LET FL=9+NL+ND
7026 LET NN=0
7027 LET O=NN
7028 LET T=21
7075 PRINT AT T,O;"ENTER TITLE FOR NEW LIST "
7080 INPUT T$
7086 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7099 LET R=16396
7170 LET FC=1000
7180 LET NS=10
7190 LET NE=NS+NL-W
7200 LET NF=NE+ND
7300 GOTO W
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\08\00\4A\52\46\52\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\1B\1B\1B\1B\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>030 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
90 IF NN>=MAX THEN GOTO 4000
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT T,O;"ENTER LINE NUMBER."
1020 INPUT X
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET Z=CODE D$(N,W)+Q*CODE D$(N,2)
1090 IF Z=X THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF Z<X THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET Z=CODE D$(HI,W)+Q*CODE D$(HI,2)
1203 IF X=Z THEN GOTO 1300
1205 IF X<CODE D$(LO,W)+Q*CODE D$(LO,2) THEN LET N=LO
1208 IF X>Z THEN LET N=HI+W
1210 CLS
1211 PRINT "LINE ";X;" IS NOT IN THE LIST, AND WILL BE ADDED."
1215 LET H=INT (X/Q)
1217 LET E$(W)=CHR$ (X-Q*H)
1218 LET E$(2)=CHR$ H
1220 PRINT AT T,O;"LINE ";X;" STOCK?"
1225 INPUT C
1230 LET H=INT (C/Q)
1235 LET E$(3)=CHR$ (C-Q*H)
1240 LET E$(4)=CHR$ H
1242 IF NOT NN THEN GOTO 1260
1244 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE ";X;TAB 28;N
1320 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
1390 PRINT ,,"STOCK=";C
1430 PRINT AT 8,O;"OPTIONS:",,,,"%1: ENTER STOCK CHANGE."
1450 PRINT "%2: DELETE THIS LINE."
1455 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
1460 PRINT AT T,O;"ENTER AN OPTION."
1470 PAUSE 4E4
1480 LET Z=CODE INKEY$-28
1490 IF Z<=O OR Z>2 THEN GOTO W
1500 IF NOT Z THEN GOTO W
1510 LET A=8
1520 GOSUB 30
1535 IF Z=2 THEN GOTO 1700
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET C=C+Z
1570 LET H=INT (C/Q)
1580 LET D$(N,3)=CHR$ (C-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<0 OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
3000 CLS
3010 PRINT AT T,O;"START NO.? (OPTIONAL)"
3020 LET A=W
3030 INPUT Q$
3040 IF Q$<>"" THEN LET A=VAL Q$
3050 PRINT AT T,O;"END "
3060 LET B=NN
3065 INPUT Q$
3070 IF Q$<>"" THEN LET B=VAL Q$
3074 PRINT AT T,O;O$
3080 PRINT AT T,O;"HEADING?"
3090 INPUT Q$
3095 LPRINT T$
3100 CLS
3110 LPRINT ,,Q$
3120 LPRINT
3190 LPRINT "LINE","STOCK"
3200 FOR N=A TO B
3220 PRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3221 LPRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3230 NEXT N
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
4000 CLS
4010 PRINT T$
4020 PRINT "FILE ALREADY CONTAINS ";NN,"LINES - NO MORE ALLOWED."
4030 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
4040 PAUSE 4E4
4050 GOTO W
7000 CLS
7002 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I%I% % % "
7004 POKE 19709,(PEEK 19709)+3
7005 FOR I=19710 TO 19719
7006 POKE I,0
7008 NEXT I
7017 CLEAR
7018 DIM D$(62*(PEEK (16389)-89),4)
7019 LET MAX=62*(PEEK (16389)-89)
7020 LET T=21
7030 LET O=0
7040 PRINT ,,"LIST OF ";MAX;" LINES IN ";INT (.25*PEEK (16389)-15.3);"K."
7075 PRINT AT T,O;"ENTER TITLE FOR LIST "
7080 INPUT T$
7081 LET N=0
7084 LET FL=4
7090 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7098 LET NN=O
7099 LET R=16396
7300 GOTO W
People
No people associated with this content.
E
Skip to content
Inventory Control
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- STOCK1.z81 is an EightyOne emulator snapshot of the first program.
- STOCK1.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK1E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK1.b81 is an EightyOne emulator text listing of the first program.
- STOCK2.z81 is an EightyOne emulator snapshot of the second program.
- STOCK2.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK2E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK2.b81 is an EightyOne emulator text listing of the second program.
Content
Source Code
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\1D\00\42\5F\25\5F\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\05\05\F2\FF\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>232 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
40 LET A=CODE D$(N,W)
41 LET B=CODE D$(N,2)
42 LET E=CODE D$(N,7)+Q*(CODE D$(N,8)+Q*CODE D$(N,9))
43 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
44 LET D=CODE D$(N,5)+Q*CODE D$(N,6)
45 RETURN
46 IF L=W+W THEN GOTO 60
50 PRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
51 LPRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
52 IF L THEN PRINT TAB 19;D;
53 IF L THEN LPRINT TAB 19;D;
54 IF NOT L THEN PRINT A;TAB T;B;
55 IF NOT L THEN LPRINT A;TAB T;B;
56 PRINT TAB 26;E/FC
57 LPRINT TAB 26;E/FC
58 RETURN
60 LET Q$=D$(N,NS TO NE)+" "+D$(N,NE+W TO )+" "+STR$ (E/FC)
61 PRINT Q$
62 LPRINT Q$
63 RETURN
90 IF NN>=MAX THEN GOTO 2500
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT 20,O;"ENTER LINE TO SEEK (UP TO ";NL,"CHARACTERS), OR % %E%N%T%E%R% ."
1020 INPUT Q$
1030 IF Q$="" THEN GOTO W
1031 IF LEN Q$>NL THEN LET Q$=Q$(W TO NL)
1040 LET I=LEN Q$
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET N$=D$(N,NS TO NS+I-W)
1090 IF N$=Q$ THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF N$<Q$ THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET N$=D$(HI,NS TO NS+I-W)
1203 IF N$=Q$ THEN GOTO 1300
1205 IF Q$<D$(LO,NS TO NS+I-W) THEN LET N=LO
1208 IF Q$>N$ THEN LET N=HI+W
1210 CLS
1211 PRINT "%Y=%R%E%T%U%R%N TO MASTER MENU.",,,"%(%O%T%H%E%R%): ENTER NEW LINE """;Q$;""""
1212 PRINT AT T,O;"CHOOSE AN OPTION."
1213 PAUSE 4E4
1214 IF INKEY$="Y" THEN GOTO W
1215 CLS
1217 DIM E$(FL)
1219 LET E$(NS TO )=Q$
1220 PRINT AT T,O;"UNIT PRICE ($)?"
1221 INPUT Z
1222 LET Z=FC*Z
1223 LET H=INT (Z/Q)
1224 LET E$(7)=CHR$ (Z-Q*H)
1225 LET Z=H
1226 LET H=INT (Z/Q)
1227 LET E$(8)=CHR$ (Z-Q*H)
1228 LET E$(9)=CHR$ H
1230 PRINT AT T,O;"SUPPLIER CODE? (OPTIONAL)"
1231 INPUT Q$
1232 IF Q$<>"" THEN LET E$(W)=CHR$ VAL Q$
1233 PRINT AT T,O;"TYPE CODE? "
1234 INPUT Q$
1235 IF Q$<>"" THEN LET E$(2)=CHR$ VAL Q$
1237 PRINT AT T,O;"STOCK LEVEL? "
1238 INPUT Q$
1239 IF Q$="" THEN GOTO 1238
1241 LET Z=VAL Q$
1242 LET H=INT (Z/Q)
1244 LET E$(3)=CHR$ (Z-Q*H)
1245 LET E$(4)=CHR$ H
1250 PRINT AT T,O;"RE-ORDER LEVEL? (OPTIONAL)"
1251 INPUT Q$
1252 LET Z=O
1253 IF Q$<>"" THEN LET Z=VAL Q$
1254 LET H=INT (Z/Q)
1255 LET E$(5)=CHR$ (Z-Q*H)
1256 LET E$(06)=CHR$ H
1257 IF NOT NN THEN GOTO 1260
1258 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE: ";D$(N,NS TO NE);TAB 28;N
1320 PRINT D$(N,NE+W TO )
1330 GOSUB 40
1370 PRINT ,,"SUPPLIER: ";A
1372 PRINT "TYPE: ";B
1374 PRINT "UNIT VALUE: ";E/FC
1376 PRINT "RE-ORDER LEVEL = ";D
1380 PRINT " %S%T%O%C%K% %= ";C;
1390 IF C<D THEN PRINT " %(%L%O%W%)";
1400 PRINT ,"VALUE=$";C*E/FC
1420 PRINT ,,"OPTIONS:",,,,
1430 PRINT "%1: ENTER STOCK CHANGE."
1440 PRINT "%2: ALTER RE-ORDER LEVEL."
1442 PRINT "%3: ALTER UNIT VALUE."
1445 PRINT "%4: ADD TO TEXT."
1446 PRINT "%X: DELETE THIS LINE."
1447 PRINT ,,"%5: PREVIOUS LINE. %8: NEXT LINE."
1449 PRINT "%(%O%T%H%E%R%) RETURN TO MASTER MENU."
1460 PRINT AT T,O;"CHOOSE AN OPTION."
1470 PAUSE 4E4
1480 LET Q$=INKEY$
1510 LET A=8
1520 GOSUB 30
1525 IF Q$="1" THEN GOTO 1540
1530 IF Q$="2" THEN GOTO 1600
1532 IF Q$="3" THEN GOTO 1650
1533 IF Q$="4" THEN GOTO 1800
1534 IF Q$="X" THEN GOTO 1700
1535 IF Q$<>"5" AND Q$<>"8" THEN GOTO W
1536 IF Q$="8" THEN LET N=N+W
1537 IF Q$="5" THEN LET N=N-W
1538 IF N<W OR N>NN THEN GOTO W
1539 GOTO 1300
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET Z=C+Z
1570 LET H=INT (Z/Q)
1580 LET D$(N,3)=CHR$ (Z-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1600 PRINT AT T,O;"NEW RE-ORDER LEVEL?"
1610 INPUT Z
1620 LET H=INT (Z/Q)
1630 LET D$(N,5)=CHR$ (Z-Q*H)
1640 LET D$(N,6)=CHR$ H
1645 GOTO 1300
1650 PRINT AT T,O;"NEW UNIT VALUE ($)?"
1655 INPUT Z
1660 LET Z=Z*FC
1665 LET H=INT (Z/Q)
1670 LET D$(N,7)=CHR$ (Z-Q*H)
1671 LET Z=H
1672 LET H=INT (Z/Q)
1673 LET D$(N,8)=CHR$ (Z-Q*H)
1675 LET D$(N,9)=CHR$ H
1695 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
1800 PRINT AT T,O;"ENTER NEW TEXT."
1810 INPUT Q$
1820 LET Q$=Q$+D$(N,NE+W TO )
1830 LET D$(N,NE+W TO )=Q$
1840 GOTO 1300
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<O OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
2500 CLS
2510 PRINT "LIST IS FULL (";MAX;"LINES)."
2520 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
2530 PAUSE 4E4
2540 GOTO W
3000 CLS
3010 PRINT "THE LIST CAN INCLUDE:",,,
3020 PRINT "%1: SUPPLIER AND TYPE."
3030 PRINT "%2: RE-ORDER LEVEL."
3035 PRINT "%3: TEXT."
3036 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3040 PRINT AT T,O;"CHOOSE AN OPTION."
3050 PAUSE 4E4
3060 LET L=CODE INKEY$-29
3070 IF L<O OR L>W+W THEN GOTO W
3100 CLS
3110 PRINT " PRINT LIST :",,,,
3120 PRINT "%1: OF ALL LINES."
3130 PRINT "%2: FOR A SUPPLIER."
3140 PRINT "%3: FOR A GIVEN TYPE OF LINE."
3150 PRINT "%4: OF UNDERSTOCKED LINES."
3155 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3160 PRINT AT T,O;"CHOOSE AN OPTION."
3170 PAUSE 4E4
3180 LET X=CODE INKEY$-28
3181 IF X<=O OR X>4 THEN GOTO W
3182 CLS
3183 PRINT T$
3184 LPRINT T$
3185 LET Q$="LINE ST MIN VAL."
3186 IF NOT L THEN LET Q$(19 TO 24)="SU TY "
3187 IF L=W+W THEN LET Q$=""
3188 PRINT ,,Q$
3189 LPRINT ,,Q$,,,
3190 LET V=O
3200 LET U=W
3201 LET Y=NN
3204 PRINT AT T,O;"START NO.? (OPTIONAL)"
3205 INPUT Q$
3206 IF Q$<>"" THEN LET U=VAL Q$
3208 PRINT AT T,O;"END "
3209 INPUT Q$
3210 IF Q$<>"" THEN LET Y=VAL Q$
3213 PRINT AT T,O;O$
3214 PRINT AT 3,O
3215 IF X=2 THEN GOTO 3300
3216 IF X=3 THEN GOTO 3350
3217 IF X=4 THEN GOTO 3500
3218 FOR N=U TO Y
3219 GOSUB 40
3220 GOSUB 46
3225 LET V=V+C*E/FC
3230 NEXT N
3240 PRINT
3241 LPRINT
3242 LET Q$="TOTAL VALUE = $"+STR$ V
3243 PRINT Q$
3245 LPRINT Q$
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
3310 LET Q$="SUPPLIER"
3320 LET Z=W
3330 GOTO 3400
3350 LET Q$="TYPE"
3360 LET Z=2
3400 PRINT AT T,O;Q$;" CODE?"
3402 INPUT X
3404 PRINT AT T,O;O$
3406 PRINT AT W,O;Q$;" ";X
3407 LPRINT Q$;" ";X,,,,
3408 PRINT AT 3,O
3420 FOR N=U TO Y
3430 IF CODE D$(N,Z)<>X THEN GOTO 3460
3440 GOSUB 40
3450 GOSUB 46
3455 LET V=V+C*E/FC
3460 NEXT N
3470 GOTO 3240
3500 CLS
3501 LET Q$="UNDERSTOCKED LINES."
3502 PRINT Q$,,,,,
3503 LPRINT Q$,,,,,
3510 FOR N=U TO Y
3520 GOSUB 43
3530 IF C>=D THEN GOTO 3560
3540 GOSUB 40
3550 GOSUB 46
3555 LET V=V+C*E/FC
3560 NEXT N
3570 GOTO 3240
7000 CLS
7001 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I% % % "
7002 POKE 22612,(PEEK 22612)+3
7003 FOR I=22613 TO 22621
7004 POKE I,0
7005 NEXT I
7007 PRINT AT T,O;"NAME LENGTH (CHARACTERS)?"
7008 INPUT N
7009 POKE 16557,N
7010 PRINT AT T,O;"TEXT"
7011 INPUT D
7012 POKE 16558,D
7013 LET M=INT ((PEEK (16386)-PEEK (16412)+Q*(PEEK (16387)-PEEK 16413)-2*(Q+N+D))/(9+N+D))
7014 POKE 16559,M-Q*INT (M/Q)
7015 POKE 16560,INT (M/Q)
7017 CLS
7018 CLEAR
7020 DIM D$(PEEK (16559)+256*PEEK 16560,9+PEEK (16557)+PEEK 16558)
7021 LET MAX=PEEK (16559)+256*PEEK 16560
7022 LET NL=PEEK 16557
7023 LET ND=PEEK 16558
7024 PRINT ,,,,"LIST WILL ACCOMODATE ";MAX;" LINES"
7025 LET FL=9+NL+ND
7026 LET NN=0
7027 LET O=NN
7028 LET T=21
7075 PRINT AT T,O;"ENTER TITLE FOR NEW LIST "
7080 INPUT T$
7086 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7099 LET R=16396
7170 LET FC=1000
7180 LET NS=10
7190 LET NE=NS+NL-W
7200 LET NF=NE+ND
7300 GOTO W
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\08\00\4A\52\46\52\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\1B\1B\1B\1B\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>030 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
90 IF NN>=MAX THEN GOTO 4000
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT T,O;"ENTER LINE NUMBER."
1020 INPUT X
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET Z=CODE D$(N,W)+Q*CODE D$(N,2)
1090 IF Z=X THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF Z<X THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET Z=CODE D$(HI,W)+Q*CODE D$(HI,2)
1203 IF X=Z THEN GOTO 1300
1205 IF X<CODE D$(LO,W)+Q*CODE D$(LO,2) THEN LET N=LO
1208 IF X>Z THEN LET N=HI+W
1210 CLS
1211 PRINT "LINE ";X;" IS NOT IN THE LIST, AND WILL BE ADDED."
1215 LET H=INT (X/Q)
1217 LET E$(W)=CHR$ (X-Q*H)
1218 LET E$(2)=CHR$ H
1220 PRINT AT T,O;"LINE ";X;" STOCK?"
1225 INPUT C
1230 LET H=INT (C/Q)
1235 LET E$(3)=CHR$ (C-Q*H)
1240 LET E$(4)=CHR$ H
1242 IF NOT NN THEN GOTO 1260
1244 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE ";X;TAB 28;N
1320 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
1390 PRINT ,,"STOCK=";C
1430 PRINT AT 8,O;"OPTIONS:",,,,"%1: ENTER STOCK CHANGE."
1450 PRINT "%2: DELETE THIS LINE."
1455 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
1460 PRINT AT T,O;"ENTER AN OPTION."
1470 PAUSE 4E4
1480 LET Z=CODE INKEY$-28
1490 IF Z<=O OR Z>2 THEN GOTO W
1500 IF NOT Z THEN GOTO W
1510 LET A=8
1520 GOSUB 30
1535 IF Z=2 THEN GOTO 1700
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET C=C+Z
1570 LET H=INT (C/Q)
1580 LET D$(N,3)=CHR$ (C-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<0 OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
3000 CLS
3010 PRINT AT T,O;"START NO.? (OPTIONAL)"
3020 LET A=W
3030 INPUT Q$
3040 IF Q$<>"" THEN LET A=VAL Q$
3050 PRINT AT T,O;"END "
3060 LET B=NN
3065 INPUT Q$
3070 IF Q$<>"" THEN LET B=VAL Q$
3074 PRINT AT T,O;O$
3080 PRINT AT T,O;"HEADING?"
3090 INPUT Q$
3095 LPRINT T$
3100 CLS
3110 LPRINT ,,Q$
3120 LPRINT
3190 LPRINT "LINE","STOCK"
3200 FOR N=A TO B
3220 PRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3221 LPRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3230 NEXT N
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
4000 CLS
4010 PRINT T$
4020 PRINT "FILE ALREADY CONTAINS ";NN,"LINES - NO MORE ALLOWED."
4030 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
4040 PAUSE 4E4
4050 GOTO W
7000 CLS
7002 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I%I% % % "
7004 POKE 19709,(PEEK 19709)+3
7005 FOR I=19710 TO 19719
7006 POKE I,0
7008 NEXT I
7017 CLEAR
7018 DIM D$(62*(PEEK (16389)-89),4)
7019 LET MAX=62*(PEEK (16389)-89)
7020 LET T=21
7030 LET O=0
7040 PRINT ,,"LIST OF ";MAX;" LINES IN ";INT (.25*PEEK (16389)-15.3);"K."
7075 PRINT AT T,O;"ENTER TITLE FOR LIST "
7080 INPUT T$
7081 LET N=0
7084 LET FL=4
7090 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7098 LET NN=O
7099 LET R=16396
7300 GOTO W
People
No people associated with this content.
AE
Skip to content
Inventory Control
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- STOCK1.z81 is an EightyOne emulator snapshot of the first program.
- STOCK1.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK1E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK1.b81 is an EightyOne emulator text listing of the first program.
- STOCK2.z81 is an EightyOne emulator snapshot of the second program.
- STOCK2.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK2E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK2.b81 is an EightyOne emulator text listing of the second program.
Content
Source Code
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\1D\00\42\5F\25\5F\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\05\05\F2\FF\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>232 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
40 LET A=CODE D$(N,W)
41 LET B=CODE D$(N,2)
42 LET E=CODE D$(N,7)+Q*(CODE D$(N,8)+Q*CODE D$(N,9))
43 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
44 LET D=CODE D$(N,5)+Q*CODE D$(N,6)
45 RETURN
46 IF L=W+W THEN GOTO 60
50 PRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
51 LPRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
52 IF L THEN PRINT TAB 19;D;
53 IF L THEN LPRINT TAB 19;D;
54 IF NOT L THEN PRINT A;TAB T;B;
55 IF NOT L THEN LPRINT A;TAB T;B;
56 PRINT TAB 26;E/FC
57 LPRINT TAB 26;E/FC
58 RETURN
60 LET Q$=D$(N,NS TO NE)+" "+D$(N,NE+W TO )+" "+STR$ (E/FC)
61 PRINT Q$
62 LPRINT Q$
63 RETURN
90 IF NN>=MAX THEN GOTO 2500
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT 20,O;"ENTER LINE TO SEEK (UP TO ";NL,"CHARACTERS), OR % %E%N%T%E%R% ."
1020 INPUT Q$
1030 IF Q$="" THEN GOTO W
1031 IF LEN Q$>NL THEN LET Q$=Q$(W TO NL)
1040 LET I=LEN Q$
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET N$=D$(N,NS TO NS+I-W)
1090 IF N$=Q$ THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF N$<Q$ THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET N$=D$(HI,NS TO NS+I-W)
1203 IF N$=Q$ THEN GOTO 1300
1205 IF Q$<D$(LO,NS TO NS+I-W) THEN LET N=LO
1208 IF Q$>N$ THEN LET N=HI+W
1210 CLS
1211 PRINT "%Y=%R%E%T%U%R%N TO MASTER MENU.",,,"%(%O%T%H%E%R%): ENTER NEW LINE """;Q$;""""
1212 PRINT AT T,O;"CHOOSE AN OPTION."
1213 PAUSE 4E4
1214 IF INKEY$="Y" THEN GOTO W
1215 CLS
1217 DIM E$(FL)
1219 LET E$(NS TO )=Q$
1220 PRINT AT T,O;"UNIT PRICE ($)?"
1221 INPUT Z
1222 LET Z=FC*Z
1223 LET H=INT (Z/Q)
1224 LET E$(7)=CHR$ (Z-Q*H)
1225 LET Z=H
1226 LET H=INT (Z/Q)
1227 LET E$(8)=CHR$ (Z-Q*H)
1228 LET E$(9)=CHR$ H
1230 PRINT AT T,O;"SUPPLIER CODE? (OPTIONAL)"
1231 INPUT Q$
1232 IF Q$<>"" THEN LET E$(W)=CHR$ VAL Q$
1233 PRINT AT T,O;"TYPE CODE? "
1234 INPUT Q$
1235 IF Q$<>"" THEN LET E$(2)=CHR$ VAL Q$
1237 PRINT AT T,O;"STOCK LEVEL? "
1238 INPUT Q$
1239 IF Q$="" THEN GOTO 1238
1241 LET Z=VAL Q$
1242 LET H=INT (Z/Q)
1244 LET E$(3)=CHR$ (Z-Q*H)
1245 LET E$(4)=CHR$ H
1250 PRINT AT T,O;"RE-ORDER LEVEL? (OPTIONAL)"
1251 INPUT Q$
1252 LET Z=O
1253 IF Q$<>"" THEN LET Z=VAL Q$
1254 LET H=INT (Z/Q)
1255 LET E$(5)=CHR$ (Z-Q*H)
1256 LET E$(06)=CHR$ H
1257 IF NOT NN THEN GOTO 1260
1258 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE: ";D$(N,NS TO NE);TAB 28;N
1320 PRINT D$(N,NE+W TO )
1330 GOSUB 40
1370 PRINT ,,"SUPPLIER: ";A
1372 PRINT "TYPE: ";B
1374 PRINT "UNIT VALUE: ";E/FC
1376 PRINT "RE-ORDER LEVEL = ";D
1380 PRINT " %S%T%O%C%K% %= ";C;
1390 IF C<D THEN PRINT " %(%L%O%W%)";
1400 PRINT ,"VALUE=$";C*E/FC
1420 PRINT ,,"OPTIONS:",,,,
1430 PRINT "%1: ENTER STOCK CHANGE."
1440 PRINT "%2: ALTER RE-ORDER LEVEL."
1442 PRINT "%3: ALTER UNIT VALUE."
1445 PRINT "%4: ADD TO TEXT."
1446 PRINT "%X: DELETE THIS LINE."
1447 PRINT ,,"%5: PREVIOUS LINE. %8: NEXT LINE."
1449 PRINT "%(%O%T%H%E%R%) RETURN TO MASTER MENU."
1460 PRINT AT T,O;"CHOOSE AN OPTION."
1470 PAUSE 4E4
1480 LET Q$=INKEY$
1510 LET A=8
1520 GOSUB 30
1525 IF Q$="1" THEN GOTO 1540
1530 IF Q$="2" THEN GOTO 1600
1532 IF Q$="3" THEN GOTO 1650
1533 IF Q$="4" THEN GOTO 1800
1534 IF Q$="X" THEN GOTO 1700
1535 IF Q$<>"5" AND Q$<>"8" THEN GOTO W
1536 IF Q$="8" THEN LET N=N+W
1537 IF Q$="5" THEN LET N=N-W
1538 IF N<W OR N>NN THEN GOTO W
1539 GOTO 1300
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET Z=C+Z
1570 LET H=INT (Z/Q)
1580 LET D$(N,3)=CHR$ (Z-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1600 PRINT AT T,O;"NEW RE-ORDER LEVEL?"
1610 INPUT Z
1620 LET H=INT (Z/Q)
1630 LET D$(N,5)=CHR$ (Z-Q*H)
1640 LET D$(N,6)=CHR$ H
1645 GOTO 1300
1650 PRINT AT T,O;"NEW UNIT VALUE ($)?"
1655 INPUT Z
1660 LET Z=Z*FC
1665 LET H=INT (Z/Q)
1670 LET D$(N,7)=CHR$ (Z-Q*H)
1671 LET Z=H
1672 LET H=INT (Z/Q)
1673 LET D$(N,8)=CHR$ (Z-Q*H)
1675 LET D$(N,9)=CHR$ H
1695 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
1800 PRINT AT T,O;"ENTER NEW TEXT."
1810 INPUT Q$
1820 LET Q$=Q$+D$(N,NE+W TO )
1830 LET D$(N,NE+W TO )=Q$
1840 GOTO 1300
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<O OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
2500 CLS
2510 PRINT "LIST IS FULL (";MAX;"LINES)."
2520 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
2530 PAUSE 4E4
2540 GOTO W
3000 CLS
3010 PRINT "THE LIST CAN INCLUDE:",,,
3020 PRINT "%1: SUPPLIER AND TYPE."
3030 PRINT "%2: RE-ORDER LEVEL."
3035 PRINT "%3: TEXT."
3036 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3040 PRINT AT T,O;"CHOOSE AN OPTION."
3050 PAUSE 4E4
3060 LET L=CODE INKEY$-29
3070 IF L<O OR L>W+W THEN GOTO W
3100 CLS
3110 PRINT " PRINT LIST :",,,,
3120 PRINT "%1: OF ALL LINES."
3130 PRINT "%2: FOR A SUPPLIER."
3140 PRINT "%3: FOR A GIVEN TYPE OF LINE."
3150 PRINT "%4: OF UNDERSTOCKED LINES."
3155 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3160 PRINT AT T,O;"CHOOSE AN OPTION."
3170 PAUSE 4E4
3180 LET X=CODE INKEY$-28
3181 IF X<=O OR X>4 THEN GOTO W
3182 CLS
3183 PRINT T$
3184 LPRINT T$
3185 LET Q$="LINE ST MIN VAL."
3186 IF NOT L THEN LET Q$(19 TO 24)="SU TY "
3187 IF L=W+W THEN LET Q$=""
3188 PRINT ,,Q$
3189 LPRINT ,,Q$,,,
3190 LET V=O
3200 LET U=W
3201 LET Y=NN
3204 PRINT AT T,O;"START NO.? (OPTIONAL)"
3205 INPUT Q$
3206 IF Q$<>"" THEN LET U=VAL Q$
3208 PRINT AT T,O;"END "
3209 INPUT Q$
3210 IF Q$<>"" THEN LET Y=VAL Q$
3213 PRINT AT T,O;O$
3214 PRINT AT 3,O
3215 IF X=2 THEN GOTO 3300
3216 IF X=3 THEN GOTO 3350
3217 IF X=4 THEN GOTO 3500
3218 FOR N=U TO Y
3219 GOSUB 40
3220 GOSUB 46
3225 LET V=V+C*E/FC
3230 NEXT N
3240 PRINT
3241 LPRINT
3242 LET Q$="TOTAL VALUE = $"+STR$ V
3243 PRINT Q$
3245 LPRINT Q$
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
3310 LET Q$="SUPPLIER"
3320 LET Z=W
3330 GOTO 3400
3350 LET Q$="TYPE"
3360 LET Z=2
3400 PRINT AT T,O;Q$;" CODE?"
3402 INPUT X
3404 PRINT AT T,O;O$
3406 PRINT AT W,O;Q$;" ";X
3407 LPRINT Q$;" ";X,,,,
3408 PRINT AT 3,O
3420 FOR N=U TO Y
3430 IF CODE D$(N,Z)<>X THEN GOTO 3460
3440 GOSUB 40
3450 GOSUB 46
3455 LET V=V+C*E/FC
3460 NEXT N
3470 GOTO 3240
3500 CLS
3501 LET Q$="UNDERSTOCKED LINES."
3502 PRINT Q$,,,,,
3503 LPRINT Q$,,,,,
3510 FOR N=U TO Y
3520 GOSUB 43
3530 IF C>=D THEN GOTO 3560
3540 GOSUB 40
3550 GOSUB 46
3555 LET V=V+C*E/FC
3560 NEXT N
3570 GOTO 3240
7000 CLS
7001 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I% % % "
7002 POKE 22612,(PEEK 22612)+3
7003 FOR I=22613 TO 22621
7004 POKE I,0
7005 NEXT I
7007 PRINT AT T,O;"NAME LENGTH (CHARACTERS)?"
7008 INPUT N
7009 POKE 16557,N
7010 PRINT AT T,O;"TEXT"
7011 INPUT D
7012 POKE 16558,D
7013 LET M=INT ((PEEK (16386)-PEEK (16412)+Q*(PEEK (16387)-PEEK 16413)-2*(Q+N+D))/(9+N+D))
7014 POKE 16559,M-Q*INT (M/Q)
7015 POKE 16560,INT (M/Q)
7017 CLS
7018 CLEAR
7020 DIM D$(PEEK (16559)+256*PEEK 16560,9+PEEK (16557)+PEEK 16558)
7021 LET MAX=PEEK (16559)+256*PEEK 16560
7022 LET NL=PEEK 16557
7023 LET ND=PEEK 16558
7024 PRINT ,,,,"LIST WILL ACCOMODATE ";MAX;" LINES"
7025 LET FL=9+NL+ND
7026 LET NN=0
7027 LET O=NN
7028 LET T=21
7075 PRINT AT T,O;"ENTER TITLE FOR NEW LIST "
7080 INPUT T$
7086 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7099 LET R=16396
7170 LET FC=1000
7180 LET NS=10
7190 LET NE=NS+NL-W
7200 LET NF=NE+ND
7300 GOTO W
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\08\00\4A\52\46\52\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\1B\1B\1B\1B\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>030 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
90 IF NN>=MAX THEN GOTO 4000
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT T,O;"ENTER LINE NUMBER."
1020 INPUT X
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET Z=CODE D$(N,W)+Q*CODE D$(N,2)
1090 IF Z=X THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF Z<X THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET Z=CODE D$(HI,W)+Q*CODE D$(HI,2)
1203 IF X=Z THEN GOTO 1300
1205 IF X<CODE D$(LO,W)+Q*CODE D$(LO,2) THEN LET N=LO
1208 IF X>Z THEN LET N=HI+W
1210 CLS
1211 PRINT "LINE ";X;" IS NOT IN THE LIST, AND WILL BE ADDED."
1215 LET H=INT (X/Q)
1217 LET E$(W)=CHR$ (X-Q*H)
1218 LET E$(2)=CHR$ H
1220 PRINT AT T,O;"LINE ";X;" STOCK?"
1225 INPUT C
1230 LET H=INT (C/Q)
1235 LET E$(3)=CHR$ (C-Q*H)
1240 LET E$(4)=CHR$ H
1242 IF NOT NN THEN GOTO 1260
1244 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE ";X;TAB 28;N
1320 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
1390 PRINT ,,"STOCK=";C
1430 PRINT AT 8,O;"OPTIONS:",,,,"%1: ENTER STOCK CHANGE."
1450 PRINT "%2: DELETE THIS LINE."
1455 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
1460 PRINT AT T,O;"ENTER AN OPTION."
1470 PAUSE 4E4
1480 LET Z=CODE INKEY$-28
1490 IF Z<=O OR Z>2 THEN GOTO W
1500 IF NOT Z THEN GOTO W
1510 LET A=8
1520 GOSUB 30
1535 IF Z=2 THEN GOTO 1700
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET C=C+Z
1570 LET H=INT (C/Q)
1580 LET D$(N,3)=CHR$ (C-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<0 OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
3000 CLS
3010 PRINT AT T,O;"START NO.? (OPTIONAL)"
3020 LET A=W
3030 INPUT Q$
3040 IF Q$<>"" THEN LET A=VAL Q$
3050 PRINT AT T,O;"END "
3060 LET B=NN
3065 INPUT Q$
3070 IF Q$<>"" THEN LET B=VAL Q$
3074 PRINT AT T,O;O$
3080 PRINT AT T,O;"HEADING?"
3090 INPUT Q$
3095 LPRINT T$
3100 CLS
3110 LPRINT ,,Q$
3120 LPRINT
3190 LPRINT "LINE","STOCK"
3200 FOR N=A TO B
3220 PRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3221 LPRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3230 NEXT N
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
4000 CLS
4010 PRINT T$
4020 PRINT "FILE ALREADY CONTAINS ";NN,"LINES - NO MORE ALLOWED."
4030 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
4040 PAUSE 4E4
4050 GOTO W
7000 CLS
7002 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I%I% % % "
7004 POKE 19709,(PEEK 19709)+3
7005 FOR I=19710 TO 19719
7006 POKE I,0
7008 NEXT I
7017 CLEAR
7018 DIM D$(62*(PEEK (16389)-89),4)
7019 LET MAX=62*(PEEK (16389)-89)
7020 LET T=21
7030 LET O=0
7040 PRINT ,,"LIST OF ";MAX;" LINES IN ";INT (.25*PEEK (16389)-15.3);"K."
7075 PRINT AT T,O;"ENTER TITLE FOR LIST "
7080 INPUT T$
7081 LET N=0
7084 LET FL=4
7090 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7098 LET NN=O
7099 LET R=16396
7300 GOTO W
People
No people associated with this content.
Skip to content
Inventory Control
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- STOCK1.z81 is an EightyOne emulator snapshot of the first program.
- STOCK1.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK1E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK1.b81 is an EightyOne emulator text listing of the first program.
- STOCK2.z81 is an EightyOne emulator snapshot of the second program.
- STOCK2.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK2E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK2.b81 is an EightyOne emulator text listing of the second program.
Content
Source Code
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\1D\00\42\5F\25\5F\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\05\05\F2\FF\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>232 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
40 LET A=CODE D$(N,W)
41 LET B=CODE D$(N,2)
42 LET E=CODE D$(N,7)+Q*(CODE D$(N,8)+Q*CODE D$(N,9))
43 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
44 LET D=CODE D$(N,5)+Q*CODE D$(N,6)
45 RETURN
46 IF L=W+W THEN GOTO 60
50 PRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
51 LPRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
52 IF L THEN PRINT TAB 19;D;
53 IF L THEN LPRINT TAB 19;D;
54 IF NOT L THEN PRINT A;TAB T;B;
55 IF NOT L THEN LPRINT A;TAB T;B;
56 PRINT TAB 26;E/FC
57 LPRINT TAB 26;E/FC
58 RETURN
60 LET Q$=D$(N,NS TO NE)+" "+D$(N,NE+W TO )+" "+STR$ (E/FC)
61 PRINT Q$
62 LPRINT Q$
63 RETURN
90 IF NN>=MAX THEN GOTO 2500
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT 20,O;"ENTER LINE TO SEEK (UP TO ";NL,"CHARACTERS), OR % %E%N%T%E%R% ."
1020 INPUT Q$
1030 IF Q$="" THEN GOTO W
1031 IF LEN Q$>NL THEN LET Q$=Q$(W TO NL)
1040 LET I=LEN Q$
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET N$=D$(N,NS TO NS+I-W)
1090 IF N$=Q$ THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF N$<Q$ THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET N$=D$(HI,NS TO NS+I-W)
1203 IF N$=Q$ THEN GOTO 1300
1205 IF Q$<D$(LO,NS TO NS+I-W) THEN LET N=LO
1208 IF Q$>N$ THEN LET N=HI+W
1210 CLS
1211 PRINT "%Y=%R%E%T%U%R%N TO MASTER MENU.",,,"%(%O%T%H%E%R%): ENTER NEW LINE """;Q$;""""
1212 PRINT AT T,O;"CHOOSE AN OPTION."
1213 PAUSE 4E4
1214 IF INKEY$="Y" THEN GOTO W
1215 CLS
1217 DIM E$(FL)
1219 LET E$(NS TO )=Q$
1220 PRINT AT T,O;"UNIT PRICE ($)?"
1221 INPUT Z
1222 LET Z=FC*Z
1223 LET H=INT (Z/Q)
1224 LET E$(7)=CHR$ (Z-Q*H)
1225 LET Z=H
1226 LET H=INT (Z/Q)
1227 LET E$(8)=CHR$ (Z-Q*H)
1228 LET E$(9)=CHR$ H
1230 PRINT AT T,O;"SUPPLIER CODE? (OPTIONAL)"
1231 INPUT Q$
1232 IF Q$<>"" THEN LET E$(W)=CHR$ VAL Q$
1233 PRINT AT T,O;"TYPE CODE? "
1234 INPUT Q$
1235 IF Q$<>"" THEN LET E$(2)=CHR$ VAL Q$
1237 PRINT AT T,O;"STOCK LEVEL? "
1238 INPUT Q$
1239 IF Q$="" THEN GOTO 1238
1241 LET Z=VAL Q$
1242 LET H=INT (Z/Q)
1244 LET E$(3)=CHR$ (Z-Q*H)
1245 LET E$(4)=CHR$ H
1250 PRINT AT T,O;"RE-ORDER LEVEL? (OPTIONAL)"
1251 INPUT Q$
1252 LET Z=O
1253 IF Q$<>"" THEN LET Z=VAL Q$
1254 LET H=INT (Z/Q)
1255 LET E$(5)=CHR$ (Z-Q*H)
1256 LET E$(06)=CHR$ H
1257 IF NOT NN THEN GOTO 1260
1258 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE: ";D$(N,NS TO NE);TAB 28;N
1320 PRINT D$(N,NE+W TO )
1330 GOSUB 40
1370 PRINT ,,"SUPPLIER: ";A
1372 PRINT "TYPE: ";B
1374 PRINT "UNIT VALUE: ";E/FC
1376 PRINT "RE-ORDER LEVEL = ";D
1380 PRINT " %S%T%O%C%K% %= ";C;
1390 IF C<D THEN PRINT " %(%L%O%W%)";
1400 PRINT ,"VALUE=$";C*E/FC
1420 PRINT ,,"OPTIONS:",,,,
1430 PRINT "%1: ENTER STOCK CHANGE."
1440 PRINT "%2: ALTER RE-ORDER LEVEL."
1442 PRINT "%3: ALTER UNIT VALUE."
1445 PRINT "%4: ADD TO TEXT."
1446 PRINT "%X: DELETE THIS LINE."
1447 PRINT ,,"%5: PREVIOUS LINE. %8: NEXT LINE."
1449 PRINT "%(%O%T%H%E%R%) RETURN TO MASTER MENU."
1460 PRINT AT T,O;"CHOOSE AN OPTION."
1470 PAUSE 4E4
1480 LET Q$=INKEY$
1510 LET A=8
1520 GOSUB 30
1525 IF Q$="1" THEN GOTO 1540
1530 IF Q$="2" THEN GOTO 1600
1532 IF Q$="3" THEN GOTO 1650
1533 IF Q$="4" THEN GOTO 1800
1534 IF Q$="X" THEN GOTO 1700
1535 IF Q$<>"5" AND Q$<>"8" THEN GOTO W
1536 IF Q$="8" THEN LET N=N+W
1537 IF Q$="5" THEN LET N=N-W
1538 IF N<W OR N>NN THEN GOTO W
1539 GOTO 1300
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET Z=C+Z
1570 LET H=INT (Z/Q)
1580 LET D$(N,3)=CHR$ (Z-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1600 PRINT AT T,O;"NEW RE-ORDER LEVEL?"
1610 INPUT Z
1620 LET H=INT (Z/Q)
1630 LET D$(N,5)=CHR$ (Z-Q*H)
1640 LET D$(N,6)=CHR$ H
1645 GOTO 1300
1650 PRINT AT T,O;"NEW UNIT VALUE ($)?"
1655 INPUT Z
1660 LET Z=Z*FC
1665 LET H=INT (Z/Q)
1670 LET D$(N,7)=CHR$ (Z-Q*H)
1671 LET Z=H
1672 LET H=INT (Z/Q)
1673 LET D$(N,8)=CHR$ (Z-Q*H)
1675 LET D$(N,9)=CHR$ H
1695 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
1800 PRINT AT T,O;"ENTER NEW TEXT."
1810 INPUT Q$
1820 LET Q$=Q$+D$(N,NE+W TO )
1830 LET D$(N,NE+W TO )=Q$
1840 GOTO 1300
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<O OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
2500 CLS
2510 PRINT "LIST IS FULL (";MAX;"LINES)."
2520 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
2530 PAUSE 4E4
2540 GOTO W
3000 CLS
3010 PRINT "THE LIST CAN INCLUDE:",,,
3020 PRINT "%1: SUPPLIER AND TYPE."
3030 PRINT "%2: RE-ORDER LEVEL."
3035 PRINT "%3: TEXT."
3036 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3040 PRINT AT T,O;"CHOOSE AN OPTION."
3050 PAUSE 4E4
3060 LET L=CODE INKEY$-29
3070 IF L<O OR L>W+W THEN GOTO W
3100 CLS
3110 PRINT " PRINT LIST :",,,,
3120 PRINT "%1: OF ALL LINES."
3130 PRINT "%2: FOR A SUPPLIER."
3140 PRINT "%3: FOR A GIVEN TYPE OF LINE."
3150 PRINT "%4: OF UNDERSTOCKED LINES."
3155 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3160 PRINT AT T,O;"CHOOSE AN OPTION."
3170 PAUSE 4E4
3180 LET X=CODE INKEY$-28
3181 IF X<=O OR X>4 THEN GOTO W
3182 CLS
3183 PRINT T$
3184 LPRINT T$
3185 LET Q$="LINE ST MIN VAL."
3186 IF NOT L THEN LET Q$(19 TO 24)="SU TY "
3187 IF L=W+W THEN LET Q$=""
3188 PRINT ,,Q$
3189 LPRINT ,,Q$,,,
3190 LET V=O
3200 LET U=W
3201 LET Y=NN
3204 PRINT AT T,O;"START NO.? (OPTIONAL)"
3205 INPUT Q$
3206 IF Q$<>"" THEN LET U=VAL Q$
3208 PRINT AT T,O;"END "
3209 INPUT Q$
3210 IF Q$<>"" THEN LET Y=VAL Q$
3213 PRINT AT T,O;O$
3214 PRINT AT 3,O
3215 IF X=2 THEN GOTO 3300
3216 IF X=3 THEN GOTO 3350
3217 IF X=4 THEN GOTO 3500
3218 FOR N=U TO Y
3219 GOSUB 40
3220 GOSUB 46
3225 LET V=V+C*E/FC
3230 NEXT N
3240 PRINT
3241 LPRINT
3242 LET Q$="TOTAL VALUE = $"+STR$ V
3243 PRINT Q$
3245 LPRINT Q$
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
3310 LET Q$="SUPPLIER"
3320 LET Z=W
3330 GOTO 3400
3350 LET Q$="TYPE"
3360 LET Z=2
3400 PRINT AT T,O;Q$;" CODE?"
3402 INPUT X
3404 PRINT AT T,O;O$
3406 PRINT AT W,O;Q$;" ";X
3407 LPRINT Q$;" ";X,,,,
3408 PRINT AT 3,O
3420 FOR N=U TO Y
3430 IF CODE D$(N,Z)<>X THEN GOTO 3460
3440 GOSUB 40
3450 GOSUB 46
3455 LET V=V+C*E/FC
3460 NEXT N
3470 GOTO 3240
3500 CLS
3501 LET Q$="UNDERSTOCKED LINES."
3502 PRINT Q$,,,,,
3503 LPRINT Q$,,,,,
3510 FOR N=U TO Y
3520 GOSUB 43
3530 IF C>=D THEN GOTO 3560
3540 GOSUB 40
3550 GOSUB 46
3555 LET V=V+C*E/FC
3560 NEXT N
3570 GOTO 3240
7000 CLS
7001 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I% % % "
7002 POKE 22612,(PEEK 22612)+3
7003 FOR I=22613 TO 22621
7004 POKE I,0
7005 NEXT I
7007 PRINT AT T,O;"NAME LENGTH (CHARACTERS)?"
7008 INPUT N
7009 POKE 16557,N
7010 PRINT AT T,O;"TEXT"
7011 INPUT D
7012 POKE 16558,D
7013 LET M=INT ((PEEK (16386)-PEEK (16412)+Q*(PEEK (16387)-PEEK 16413)-2*(Q+N+D))/(9+N+D))
7014 POKE 16559,M-Q*INT (M/Q)
7015 POKE 16560,INT (M/Q)
7017 CLS
7018 CLEAR
7020 DIM D$(PEEK (16559)+256*PEEK 16560,9+PEEK (16557)+PEEK 16558)
7021 LET MAX=PEEK (16559)+256*PEEK 16560
7022 LET NL=PEEK 16557
7023 LET ND=PEEK 16558
7024 PRINT ,,,,"LIST WILL ACCOMODATE ";MAX;" LINES"
7025 LET FL=9+NL+ND
7026 LET NN=0
7027 LET O=NN
7028 LET T=21
7075 PRINT AT T,O;"ENTER TITLE FOR NEW LIST "
7080 INPUT T$
7086 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7099 LET R=16396
7170 LET FC=1000
7180 LET NS=10
7190 LET NE=NS+NL-W
7200 LET NF=NE+ND
7300 GOTO W
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\08\00\4A\52\46\52\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\1B\1B\1B\1B\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>030 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
90 IF NN>=MAX THEN GOTO 4000
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT T,O;"ENTER LINE NUMBER."
1020 INPUT X
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET Z=CODE D$(N,W)+Q*CODE D$(N,2)
1090 IF Z=X THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF Z<X THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET Z=CODE D$(HI,W)+Q*CODE D$(HI,2)
1203 IF X=Z THEN GOTO 1300
1205 IF X<CODE D$(LO,W)+Q*CODE D$(LO,2) THEN LET N=LO
1208 IF X>Z THEN LET N=HI+W
1210 CLS
1211 PRINT "LINE ";X;" IS NOT IN THE LIST, AND WILL BE ADDED."
1215 LET H=INT (X/Q)
1217 LET E$(W)=CHR$ (X-Q*H)
1218 LET E$(2)=CHR$ H
1220 PRINT AT T,O;"LINE ";X;" STOCK?"
1225 INPUT C
1230 LET H=INT (C/Q)
1235 LET E$(3)=CHR$ (C-Q*H)
1240 LET E$(4)=CHR$ H
1242 IF NOT NN THEN GOTO 1260
1244 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE ";X;TAB 28;N
1320 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
1390 PRINT ,,"STOCK=";C
1430 PRINT AT 8,O;"OPTIONS:",,,,"%1: ENTER STOCK CHANGE."
1450 PRINT "%2: DELETE THIS LINE."
1455 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
1460 PRINT AT T,O;"ENTER AN OPTION."
1470 PAUSE 4E4
1480 LET Z=CODE INKEY$-28
1490 IF Z<=O OR Z>2 THEN GOTO W
1500 IF NOT Z THEN GOTO W
1510 LET A=8
1520 GOSUB 30
1535 IF Z=2 THEN GOTO 1700
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET C=C+Z
1570 LET H=INT (C/Q)
1580 LET D$(N,3)=CHR$ (C-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<0 OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
3000 CLS
3010 PRINT AT T,O;"START NO.? (OPTIONAL)"
3020 LET A=W
3030 INPUT Q$
3040 IF Q$<>"" THEN LET A=VAL Q$
3050 PRINT AT T,O;"END "
3060 LET B=NN
3065 INPUT Q$
3070 IF Q$<>"" THEN LET B=VAL Q$
3074 PRINT AT T,O;O$
3080 PRINT AT T,O;"HEADING?"
3090 INPUT Q$
3095 LPRINT T$
3100 CLS
3110 LPRINT ,,Q$
3120 LPRINT
3190 LPRINT "LINE","STOCK"
3200 FOR N=A TO B
3220 PRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3221 LPRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3230 NEXT N
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
4000 CLS
4010 PRINT T$
4020 PRINT "FILE ALREADY CONTAINS ";NN,"LINES - NO MORE ALLOWED."
4030 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
4040 PAUSE 4E4
4050 GOTO W
7000 CLS
7002 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I%I% % % "
7004 POKE 19709,(PEEK 19709)+3
7005 FOR I=19710 TO 19719
7006 POKE I,0
7008 NEXT I
7017 CLEAR
7018 DIM D$(62*(PEEK (16389)-89),4)
7019 LET MAX=62*(PEEK (16389)-89)
7020 LET T=21
7030 LET O=0
7040 PRINT ,,"LIST OF ";MAX;" LINES IN ";INT (.25*PEEK (16389)-15.3);"K."
7075 PRINT AT T,O;"ENTER TITLE FOR LIST "
7080 INPUT T$
7081 LET N=0
7084 LET FL=4
7090 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7098 LET NN=O
7099 LET R=16396
7300 GOTO W
People
No people associated with this content.
itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"D itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>232 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
40 LET A=CODE D$(N,W)
41 LET B=CODE D$(N,2)
42 LET E=CODE D$(N,7)+Q*(CODE D$(N,8)+Q*CODE D$(N,9))
43 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
44 LET D=CODE D$(N,5)+Q*CODE D$(N,6)
45 RETURN
46 IF L=W+W THEN GOTO 60
50 PRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
51 LPRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
52 IF L THEN PRINT TAB 19;D;
53 IF L THEN LPRINT TAB 19;D;
54 IF NOT L THEN PRINT A;TAB T;B;
55 IF NOT L THEN LPRINT A;TAB T;B;
56 PRINT TAB 26;E/FC
57 LPRINT TAB 26;E/FC
58 RETURN
60 LET Q$=D$(N,NS TO NE)+" "+D$(N,NE+W TO )+" "+STR$ (E/FC)
61 PRINT Q$
62 LPRINT Q$
63 RETURN
90 IF NN>=MAX THEN GOTO 2500
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
\n1000 CLS
\n1010 PRINT AT 20,O;"ENTER LINE TO SEEK (UP TO ";NL,"CHARACTERS), OR % %E%N%T%E%R% ."
\n1020 INPUT Q$
\n1030 IF Q$="" THEN GOTO W
\n1031 IF LEN Q$>NL THEN LET Q$=Q$(W TO NL)
\n1040 LET I=LEN Q$
\n1045 IF NOT NN THEN GOTO 1210
\n1050 LET LO=W
\n1060 LET HI=NN
\n1070 LET N=INT (.50001*(LO+HI))
\n1080 LET N$=D$(N,NS TO NS+I-W)
\n1090 IF N$=Q$ THEN GOTO 1300
\n1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
\n1100 IF N$<Q$ THEN GOTO 1150
\n1110 LET HI=N
\n1120 GOTO 1070
\n1150 LET LO=N
\n1160 GOTO 1070
\n1200 CLS
\n1201 LET N=HI
\n1202 LET N$=D$(HI,NS TO NS+I-W)
\n1203 IF N$=Q$ THEN GOTO 1300
\n1205 IF Q$<D$(LO,NS TO NS+I-W) THEN LET N=LO
\n1208 IF Q$>N$ THEN LET N=HI+W
\n1210 CLS
\n1211 PRINT "%Y=%R%E%T%U%R%N TO MASTER MENU.",,,"%(%O%T%H%E%R%): ENTER NEW LINE """;Q$;""""
\n1212 PRINT AT T,O;"CHOOSE AN OPTION."
\n1213 PAUSE 4E4
\n1214 IF INKEY$="Y" THEN GOTO W
\n1215 CLS
\n1217 DIM E$(FL)
\n1219 LET E$(NS TO )=Q$
\n1220 PRINT AT T,O;"UNIT PRICE ($)?"
\n1221 INPUT Z
\n1222 LET Z=FC*Z
\n1223 LET H=INT (Z/Q)
\n1224 LET E$(7)=CHR$ (Z-Q*H)
\n1225 LET Z=H
\n1226 LET H=INT (Z/Q)
\n1227 LET E$(8)=CHR$ (Z-Q*H)
\n1228 LET E$(9)=CHR$ H
\n1230 PRINT AT T,O;"SUPPLIER CODE? (OPTIONAL)"
\n1231 INPUT Q$
\n1232 IF Q$<>"" THEN LET E$(W)=CHR$ VAL Q$
\n1233 PRINT AT T,O;"TYPE CODE? "
\n1234 INPUT Q$
\n1235 IF Q$<>"" THEN LET E$(2)=CHR$ VAL Q$
\n1237 PRINT AT T,O;"STOCK LEVEL? "
\n1238 INPUT Q$
\n1239 IF Q$="" THEN GOTO 1238
\n1241 LET Z=VAL Q$
\n1242 LET H=INT (Z/Q)
\n1244 LET E$(3)=CHR$ (Z-Q*H)
\n1245 LET E$(4)=CHR$ H
\n1250 PRINT AT T,O;"RE-ORDER LEVEL? (OPTIONAL)"
\n1251 INPUT Q$
\n1252 LET Z=O
\n1253 IF Q$<>"" THEN LET Z=VAL Q$
\n1254 LET H=INT (Z/Q)
\n1255 LET E$(5)=CHR$ (Z-Q*H)
\n1256 LET E$(06)=CHR$ H
\n1257 IF NOT NN THEN GOTO 1260
\n1258 GOTO 90
\n1260 LET D$(W)=E$
\n1265 LET NN=W
\n1270 LET N=W
\n1300 CLS
\n1310 PRINT "LINE: ";D$(N,NS TO NE);TAB 28;N
\n1320 PRINT D$(N,NE+W TO )
\n1330 GOSUB 40
\n1370 PRINT ,,"SUPPLIER: ";A
\n1372 PRINT "TYPE: ";B
\n1374 PRINT "UNIT VALUE: ";E/FC
\n1376 PRINT "RE-ORDER LEVEL = ";D
\n1380 PRINT " %S%T%O%C%K% %= ";C;
\n1390 IF C<D THEN PRINT " %(%L%O%W%)";
\n1400 PRINT ,"VALUE=$";C*E/FC
\n1420 PRINT ,,"OPTIONS:",,,,
\n1430 PRINT "%1: ENTER STOCK CHANGE."
\n1440 PRINT "%2: ALTER RE-ORDER LEVEL."
\n1442 PRINT "%3: ALTER UNIT VALUE."
\n1445 PRINT "%4: ADD TO TEXT."
\n1446 PRINT "%X: DELETE THIS LINE."
\n1447 PRINT ,,"%5: PREVIOUS LINE. %8: NEXT LINE."
\n1449 PRINT "%(%O%T%H%E%R%) RETURN TO MASTER MENU."
\n1460 PRINT AT T,O;"CHOOSE AN OPTION."
\n1470 PAUSE 4E4
\n1480 LET Q$=INKEY$
\n1510 LET A=8
\n1520 GOSUB 30
\n1525 IF Q$="1" THEN GOTO 1540
\n1530 IF Q$="2" THEN GOTO 1600
\n1532 IF Q$="3" THEN GOTO 1650
\n1533 IF Q$="4" THEN GOTO 1800
\n1534 IF Q$="X" THEN GOTO 1700
\n1535 IF Q$<>"5" AND Q$<>"8" THEN GOTO W
\n1536 IF Q$="8" THEN LET N=N+W
\n1537 IF Q$="5" THEN LET N=N-W
\n1538 IF N<W OR N>NN THEN GOTO W
\n1539 GOTO 1300
\n1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
\n1550 INPUT Z
\n1560 LET Z=C+Z
\n1570 LET H=INT (Z/Q)
\n1580 LET D$(N,3)=CHR$ (Z-Q*H)
\n1590 LET D$(N,4)=CHR$ H
\n1595 GOTO 1300
\n1600 PRINT AT T,O;"NEW RE-ORDER LEVEL?"
\n1610 INPUT Z
\n1620 LET H=INT (Z/Q)
\n1630 LET D$(N,5)=CHR$ (Z-Q*H)
\n1640 LET D$(N,6)=CHR$ H
\n1645 GOTO 1300
\n1650 PRINT AT T,O;"NEW UNIT VALUE ($)?"
\n1655 INPUT Z
\n1660 LET Z=Z*FC
\n1665 LET H=INT (Z/Q)
\n1670 LET D$(N,7)=CHR$ (Z-Q*H)
\n1671 LET Z=H
\n1672 LET H=INT (Z/Q)
\n1673 LET D$(N,8)=CHR$ (Z-Q*H)
\n1675 LET D$(N,9)=CHR$ H
\n1695 GOTO 1300
\n1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
\n1710 INPUT Q$
\n1720 IF Q$<>"XXX" THEN GOTO W
\n1730 GOTO 200
\n1800 PRINT AT T,O;"ENTER NEW TEXT."
\n1810 INPUT Q$
\n1820 LET Q$=Q$+D$(N,NE+W TO )
\n1830 LET D$(N,NE+W TO )=Q$
\n1840 GOTO 1300
\n2000 PRINT AT 6,O;"OPTIONS:",,,,
\n2010 PRINT "%1: FIND/ADD/DELETE A LINE."
\n2040 PRINT "%2: PRINT STOCK LIST."
\n2090 PRINT ,,"%0: SAVE DATA ON TAPE."
\n2100 PRINT AT T-W,O;O$;O$
\n2110 PRINT AT T,O;"CHOOSE AN OPTION."
\n2120 PAUSE 4E4
\n2130 LET X=CODE INKEY$-28
\n2140 IF X<O OR X>3 THEN GOTO 2110
\n2150 IF X=O THEN GOTO 600
\n2160 IF X=W THEN GOTO 1000
\n2170 IF X=2 THEN GOTO 3000
\n2200 GOTO W
\n2500 CLS
\n2510 PRINT "LIST IS FULL (";MAX;"LINES)."
\n2520 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
\n2530 PAUSE 4E4
\n2540 GOTO W
\n3000 CLS
\n3010 PRINT "THE LIST CAN INCLUDE:",,,
\n3020 PRINT "%1: SUPPLIER AND TYPE."
\n3030 PRINT "%2: RE-ORDER LEVEL."
\n3035 PRINT "%3: TEXT."
\n3036 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
\n3040 PRINT AT T,O;"CHOOSE AN OPTION."
\n3050 PAUSE 4E4
\n3060 LET L=CODE INKEY$-29
\n3070 IF L<O OR L>W+W THEN GOTO W
\n3100 CLS
\n3110 PRINT " PRINT LIST :",,,,
\n3120 PRINT "%1: OF ALL LINES."
\n3130 PRINT "%2: FOR A SUPPLIER."
\n3140 PRINT "%3: FOR A GIVEN TYPE OF LINE."
\n3150 PRINT "%4: OF UNDERSTOCKED LINES."
\n3155 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
\n3160 PRINT AT T,O;"CHOOSE AN OPTION."
\n3170 PAUSE 4E4
\n3180 LET X=CODE INKEY$-28
\n3181 IF X<=O OR X>4 THEN GOTO W
\n3182 CLS
\n3183 PRINT T$
\n3184 LPRINT T$
\n3185 LET Q$="LINE ST MIN VAL."
\n3186 IF NOT L THEN LET Q$(19 TO 24)="SU TY "
\n3187 IF L=W+W THEN LET Q$=""
\n3188 PRINT ,,Q$
\n3189 LPRINT ,,Q$,,,
\n3190 LET V=O
\n3200 LET U=W
\n3201 LET Y=NN
\n3204 PRINT AT T,O;"START NO.? (OPTIONAL)"
\n3205 INPUT Q$
\n3206 IF Q$<>"" THEN LET U=VAL Q$
\n3208 PRINT AT T,O;"END "
\n3209 INPUT Q$
\n3210 IF Q$<>"" THEN LET Y=VAL Q$
\n3213 PRINT AT T,O;O$
\n3214 PRINT AT 3,O
\n3215 IF X=2 THEN GOTO 3300
\n3216 IF X=3 THEN GOTO 3350
\n3217 IF X=4 THEN GOTO 3500
\n3218 FOR N=U TO Y
\n3219 GOSUB 40
\n3220 GOSUB 46
\n3225 LET V=V+C*E/FC
\n3230 NEXT N
\n3240 PRINT
\n3241 LPRINT
\n3242 LET Q$="TOTAL VALUE = $"+STR$ V
\n3243 PRINT Q$
\n3245 LPRINT Q$
\n3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
\n3250 PAUSE 4E4
\n3290 GOTO O
\n3310 LET Q$="SUPPLIER"
\n3320 LET Z=W
\n3330 GOTO 3400
\n3350 LET Q$="TYPE"
\n3360 LET Z=2
\n3400 PRINT AT T,O;Q$;" CODE?"
\n3402 INPUT X
\n3404 PRINT AT T,O;O$
\n3406 PRINT AT W,O;Q$;" ";X
\n3407 LPRINT Q$;" ";X,,,,
\n3408 PRINT AT 3,O
\n3420 FOR N=U TO Y
\n3430 IF CODE D$(N,Z)<>X THEN GOTO 3460
\n3440 GOSUB 40
\n3450 GOSUB 46
\n3455 LET V=V+C*E/FC
\n3460 NEXT N
\n3470 GOTO 3240
\n3500 CLS
\n3501 LET Q$="UNDERSTOCKED LINES."
\n3502 PRINT Q$,,,,,
\n3503 LPRINT Q$,,,,,
\n3510 FOR N=U TO Y
\n3520 GOSUB 43
\n3530 IF C>=D THEN GOTO 3560
\n3540 GOSUB 40
\n3550 GOSUB 46
\n3555 LET V=V+C*E/FC
\n3560 NEXT N
\n3570 GOTO 3240
\n7000 CLS
\n7001 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I% % % "
\n7002 POKE 22612,(PEEK 22612)+3
\n7003 FOR I=22613 TO 22621
\n7004 POKE I,0
\n7005 NEXT I
\n7007 PRINT AT T,O;"NAME LENGTH (CHARACTERS)?"
\n7008 INPUT N
\n7009 POKE 16557,N
\n7010 PRINT AT T,O;"TEXT"
\n7011 INPUT D
\n7012 POKE 16558,D
\n7013 LET M=INT ((PEEK (16386)-PEEK (16412)+Q*(PEEK (16387)-PEEK 16413)-2*(Q+N+D))/(9+N+D))
\n7014 POKE 16559,M-Q*INT (M/Q)
\n7015 POKE 16560,INT (M/Q)
\n7017 CLS
\n7018 CLEAR
\n7020 DIM D$(PEEK (16559)+256*PEEK 16560,9+PEEK (16557)+PEEK 16558)
\n7021 LET MAX=PEEK (16559)+256*PEEK 16560
\n7022 LET NL=PEEK 16557
\n7023 LET ND=PEEK 16558
\n7024 PRINT ,,,,"LIST WILL ACCOMODATE ";MAX;" LINES"
\n7025 LET FL=9+NL+ND
\n7026 LET NN=0
\n7027 LET O=NN
\n7028 LET T=21
\n7075 PRINT AT T,O;"ENTER TITLE FOR NEW LIST "
\n7080 INPUT T$
\n7086 DIM E$(FL)
\n7095 LET O$=" "
\n7096 LET Q=256
\n7097 LET W=1
\n7099 LET R=16396
\n7170 LET FC=1000
\n7180 LET NS=10
\n7190 LET NE=NS+NL-W
\n7200 LET NF=NE+ND
\n7300 GOTO W
0 REM \EDB\EDBA\EDBC\ED\B8\C9 itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"B
Skip to content
Inventory Control
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- STOCK1.z81 is an EightyOne emulator snapshot of the first program.
- STOCK1.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK1E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK1.b81 is an EightyOne emulator text listing of the first program.
- STOCK2.z81 is an EightyOne emulator snapshot of the second program.
- STOCK2.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK2E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK2.b81 is an EightyOne emulator text listing of the second program.
Content
Source Code
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\1D\00\42\5F\25\5F\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\05\05\F2\FF\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>232 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
40 LET A=CODE D$(N,W)
41 LET B=CODE D$(N,2)
42 LET E=CODE D$(N,7)+Q*(CODE D$(N,8)+Q*CODE D$(N,9))
43 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
44 LET D=CODE D$(N,5)+Q*CODE D$(N,6)
45 RETURN
46 IF L=W+W THEN GOTO 60
50 PRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
51 LPRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
52 IF L THEN PRINT TAB 19;D;
53 IF L THEN LPRINT TAB 19;D;
54 IF NOT L THEN PRINT A;TAB T;B;
55 IF NOT L THEN LPRINT A;TAB T;B;
56 PRINT TAB 26;E/FC
57 LPRINT TAB 26;E/FC
58 RETURN
60 LET Q$=D$(N,NS TO NE)+" "+D$(N,NE+W TO )+" "+STR$ (E/FC)
61 PRINT Q$
62 LPRINT Q$
63 RETURN
90 IF NN>=MAX THEN GOTO 2500
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT 20,O;"ENTER LINE TO SEEK (UP TO ";NL,"CHARACTERS), OR % %E%N%T%E%R% ."
1020 INPUT Q$
1030 IF Q$="" THEN GOTO W
1031 IF LEN Q$>NL THEN LET Q$=Q$(W TO NL)
1040 LET I=LEN Q$
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET N$=D$(N,NS TO NS+I-W)
1090 IF N$=Q$ THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF N$<Q$ THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET N$=D$(HI,NS TO NS+I-W)
1203 IF N$=Q$ THEN GOTO 1300
1205 IF Q$<D$(LO,NS TO NS+I-W) THEN LET N=LO
1208 IF Q$>N$ THEN LET N=HI+W
1210 CLS
1211 PRINT "%Y=%R%E%T%U%R%N TO MASTER MENU.",,,"%(%O%T%H%E%R%): ENTER NEW LINE """;Q$;""""
1212 PRINT AT T,O;"CHOOSE AN OPTION."
1213 PAUSE 4E4
1214 IF INKEY$="Y" THEN GOTO W
1215 CLS
1217 DIM E$(FL)
1219 LET E$(NS TO )=Q$
1220 PRINT AT T,O;"UNIT PRICE ($)?"
1221 INPUT Z
1222 LET Z=FC*Z
1223 LET H=INT (Z/Q)
1224 LET E$(7)=CHR$ (Z-Q*H)
1225 LET Z=H
1226 LET H=INT (Z/Q)
1227 LET E$(8)=CHR$ (Z-Q*H)
1228 LET E$(9)=CHR$ H
1230 PRINT AT T,O;"SUPPLIER CODE? (OPTIONAL)"
1231 INPUT Q$
1232 IF Q$<>"" THEN LET E$(W)=CHR$ VAL Q$
1233 PRINT AT T,O;"TYPE CODE? "
1234 INPUT Q$
1235 IF Q$<>"" THEN LET E$(2)=CHR$ VAL Q$
1237 PRINT AT T,O;"STOCK LEVEL? "
1238 INPUT Q$
1239 IF Q$="" THEN GOTO 1238
1241 LET Z=VAL Q$
1242 LET H=INT (Z/Q)
1244 LET E$(3)=CHR$ (Z-Q*H)
1245 LET E$(4)=CHR$ H
1250 PRINT AT T,O;"RE-ORDER LEVEL? (OPTIONAL)"
1251 INPUT Q$
1252 LET Z=O
1253 IF Q$<>"" THEN LET Z=VAL Q$
1254 LET H=INT (Z/Q)
1255 LET E$(5)=CHR$ (Z-Q*H)
1256 LET E$(06)=CHR$ H
1257 IF NOT NN THEN GOTO 1260
1258 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE: ";D$(N,NS TO NE);TAB 28;N
1320 PRINT D$(N,NE+W TO )
1330 GOSUB 40
1370 PRINT ,,"SUPPLIER: ";A
1372 PRINT "TYPE: ";B
1374 PRINT "UNIT VALUE: ";E/FC
1376 PRINT "RE-ORDER LEVEL = ";D
1380 PRINT " %S%T%O%C%K% %= ";C;
1390 IF C<D THEN PRINT " %(%L%O%W%)";
1400 PRINT ,"VALUE=$";C*E/FC
1420 PRINT ,,"OPTIONS:",,,,
1430 PRINT "%1: ENTER STOCK CHANGE."
1440 PRINT "%2: ALTER RE-ORDER LEVEL."
1442 PRINT "%3: ALTER UNIT VALUE."
1445 PRINT "%4: ADD TO TEXT."
1446 PRINT "%X: DELETE THIS LINE."
1447 PRINT ,,"%5: PREVIOUS LINE. %8: NEXT LINE."
1449 PRINT "%(%O%T%H%E%R%) RETURN TO MASTER MENU."
1460 PRINT AT T,O;"CHOOSE AN OPTION."
1470 PAUSE 4E4
1480 LET Q$=INKEY$
1510 LET A=8
1520 GOSUB 30
1525 IF Q$="1" THEN GOTO 1540
1530 IF Q$="2" THEN GOTO 1600
1532 IF Q$="3" THEN GOTO 1650
1533 IF Q$="4" THEN GOTO 1800
1534 IF Q$="X" THEN GOTO 1700
1535 IF Q$<>"5" AND Q$<>"8" THEN GOTO W
1536 IF Q$="8" THEN LET N=N+W
1537 IF Q$="5" THEN LET N=N-W
1538 IF N<W OR N>NN THEN GOTO W
1539 GOTO 1300
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET Z=C+Z
1570 LET H=INT (Z/Q)
1580 LET D$(N,3)=CHR$ (Z-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1600 PRINT AT T,O;"NEW RE-ORDER LEVEL?"
1610 INPUT Z
1620 LET H=INT (Z/Q)
1630 LET D$(N,5)=CHR$ (Z-Q*H)
1640 LET D$(N,6)=CHR$ H
1645 GOTO 1300
1650 PRINT AT T,O;"NEW UNIT VALUE ($)?"
1655 INPUT Z
1660 LET Z=Z*FC
1665 LET H=INT (Z/Q)
1670 LET D$(N,7)=CHR$ (Z-Q*H)
1671 LET Z=H
1672 LET H=INT (Z/Q)
1673 LET D$(N,8)=CHR$ (Z-Q*H)
1675 LET D$(N,9)=CHR$ H
1695 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
1800 PRINT AT T,O;"ENTER NEW TEXT."
1810 INPUT Q$
1820 LET Q$=Q$+D$(N,NE+W TO )
1830 LET D$(N,NE+W TO )=Q$
1840 GOTO 1300
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<O OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
2500 CLS
2510 PRINT "LIST IS FULL (";MAX;"LINES)."
2520 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
2530 PAUSE 4E4
2540 GOTO W
3000 CLS
3010 PRINT "THE LIST CAN INCLUDE:",,,
3020 PRINT "%1: SUPPLIER AND TYPE."
3030 PRINT "%2: RE-ORDER LEVEL."
3035 PRINT "%3: TEXT."
3036 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3040 PRINT AT T,O;"CHOOSE AN OPTION."
3050 PAUSE 4E4
3060 LET L=CODE INKEY$-29
3070 IF L<O OR L>W+W THEN GOTO W
3100 CLS
3110 PRINT " PRINT LIST :",,,,
3120 PRINT "%1: OF ALL LINES."
3130 PRINT "%2: FOR A SUPPLIER."
3140 PRINT "%3: FOR A GIVEN TYPE OF LINE."
3150 PRINT "%4: OF UNDERSTOCKED LINES."
3155 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3160 PRINT AT T,O;"CHOOSE AN OPTION."
3170 PAUSE 4E4
3180 LET X=CODE INKEY$-28
3181 IF X<=O OR X>4 THEN GOTO W
3182 CLS
3183 PRINT T$
3184 LPRINT T$
3185 LET Q$="LINE ST MIN VAL."
3186 IF NOT L THEN LET Q$(19 TO 24)="SU TY "
3187 IF L=W+W THEN LET Q$=""
3188 PRINT ,,Q$
3189 LPRINT ,,Q$,,,
3190 LET V=O
3200 LET U=W
3201 LET Y=NN
3204 PRINT AT T,O;"START NO.? (OPTIONAL)"
3205 INPUT Q$
3206 IF Q$<>"" THEN LET U=VAL Q$
3208 PRINT AT T,O;"END "
3209 INPUT Q$
3210 IF Q$<>"" THEN LET Y=VAL Q$
3213 PRINT AT T,O;O$
3214 PRINT AT 3,O
3215 IF X=2 THEN GOTO 3300
3216 IF X=3 THEN GOTO 3350
3217 IF X=4 THEN GOTO 3500
3218 FOR N=U TO Y
3219 GOSUB 40
3220 GOSUB 46
3225 LET V=V+C*E/FC
3230 NEXT N
3240 PRINT
3241 LPRINT
3242 LET Q$="TOTAL VALUE = $"+STR$ V
3243 PRINT Q$
3245 LPRINT Q$
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
3310 LET Q$="SUPPLIER"
3320 LET Z=W
3330 GOTO 3400
3350 LET Q$="TYPE"
3360 LET Z=2
3400 PRINT AT T,O;Q$;" CODE?"
3402 INPUT X
3404 PRINT AT T,O;O$
3406 PRINT AT W,O;Q$;" ";X
3407 LPRINT Q$;" ";X,,,,
3408 PRINT AT 3,O
3420 FOR N=U TO Y
3430 IF CODE D$(N,Z)<>X THEN GOTO 3460
3440 GOSUB 40
3450 GOSUB 46
3455 LET V=V+C*E/FC
3460 NEXT N
3470 GOTO 3240
3500 CLS
3501 LET Q$="UNDERSTOCKED LINES."
3502 PRINT Q$,,,,,
3503 LPRINT Q$,,,,,
3510 FOR N=U TO Y
3520 GOSUB 43
3530 IF C>=D THEN GOTO 3560
3540 GOSUB 40
3550 GOSUB 46
3555 LET V=V+C*E/FC
3560 NEXT N
3570 GOTO 3240
7000 CLS
7001 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I% % % "
7002 POKE 22612,(PEEK 22612)+3
7003 FOR I=22613 TO 22621
7004 POKE I,0
7005 NEXT I
7007 PRINT AT T,O;"NAME LENGTH (CHARACTERS)?"
7008 INPUT N
7009 POKE 16557,N
7010 PRINT AT T,O;"TEXT"
7011 INPUT D
7012 POKE 16558,D
7013 LET M=INT ((PEEK (16386)-PEEK (16412)+Q*(PEEK (16387)-PEEK 16413)-2*(Q+N+D))/(9+N+D))
7014 POKE 16559,M-Q*INT (M/Q)
7015 POKE 16560,INT (M/Q)
7017 CLS
7018 CLEAR
7020 DIM D$(PEEK (16559)+256*PEEK 16560,9+PEEK (16557)+PEEK 16558)
7021 LET MAX=PEEK (16559)+256*PEEK 16560
7022 LET NL=PEEK 16557
7023 LET ND=PEEK 16558
7024 PRINT ,,,,"LIST WILL ACCOMODATE ";MAX;" LINES"
7025 LET FL=9+NL+ND
7026 LET NN=0
7027 LET O=NN
7028 LET T=21
7075 PRINT AT T,O;"ENTER TITLE FOR NEW LIST "
7080 INPUT T$
7086 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7099 LET R=16396
7170 LET FC=1000
7180 LET NS=10
7190 LET NE=NS+NL-W
7200 LET NF=NE+ND
7300 GOTO W
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\08\00\4A\52\46\52\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\1B\1B\1B\1B\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>030 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
90 IF NN>=MAX THEN GOTO 4000
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT T,O;"ENTER LINE NUMBER."
1020 INPUT X
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET Z=CODE D$(N,W)+Q*CODE D$(N,2)
1090 IF Z=X THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF Z<X THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET Z=CODE D$(HI,W)+Q*CODE D$(HI,2)
1203 IF X=Z THEN GOTO 1300
1205 IF X<CODE D$(LO,W)+Q*CODE D$(LO,2) THEN LET N=LO
1208 IF X>Z THEN LET N=HI+W
1210 CLS
1211 PRINT "LINE ";X;" IS NOT IN THE LIST, AND WILL BE ADDED."
1215 LET H=INT (X/Q)
1217 LET E$(W)=CHR$ (X-Q*H)
1218 LET E$(2)=CHR$ H
1220 PRINT AT T,O;"LINE ";X;" STOCK?"
1225 INPUT C
1230 LET H=INT (C/Q)
1235 LET E$(3)=CHR$ (C-Q*H)
1240 LET E$(4)=CHR$ H
1242 IF NOT NN THEN GOTO 1260
1244 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE ";X;TAB 28;N
1320 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
1390 PRINT ,,"STOCK=";C
1430 PRINT AT 8,O;"OPTIONS:",,,,"%1: ENTER STOCK CHANGE."
1450 PRINT "%2: DELETE THIS LINE."
1455 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
1460 PRINT AT T,O;"ENTER AN OPTION."
1470 PAUSE 4E4
1480 LET Z=CODE INKEY$-28
1490 IF Z<=O OR Z>2 THEN GOTO W
1500 IF NOT Z THEN GOTO W
1510 LET A=8
1520 GOSUB 30
1535 IF Z=2 THEN GOTO 1700
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET C=C+Z
1570 LET H=INT (C/Q)
1580 LET D$(N,3)=CHR$ (C-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<0 OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
3000 CLS
3010 PRINT AT T,O;"START NO.? (OPTIONAL)"
3020 LET A=W
3030 INPUT Q$
3040 IF Q$<>"" THEN LET A=VAL Q$
3050 PRINT AT T,O;"END "
3060 LET B=NN
3065 INPUT Q$
3070 IF Q$<>"" THEN LET B=VAL Q$
3074 PRINT AT T,O;O$
3080 PRINT AT T,O;"HEADING?"
3090 INPUT Q$
3095 LPRINT T$
3100 CLS
3110 LPRINT ,,Q$
3120 LPRINT
3190 LPRINT "LINE","STOCK"
3200 FOR N=A TO B
3220 PRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3221 LPRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3230 NEXT N
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
4000 CLS
4010 PRINT T$
4020 PRINT "FILE ALREADY CONTAINS ";NN,"LINES - NO MORE ALLOWED."
4030 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
4040 PAUSE 4E4
4050 GOTO W
7000 CLS
7002 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I%I% % % "
7004 POKE 19709,(PEEK 19709)+3
7005 FOR I=19710 TO 19719
7006 POKE I,0
7008 NEXT I
7017 CLEAR
7018 DIM D$(62*(PEEK (16389)-89),4)
7019 LET MAX=62*(PEEK (16389)-89)
7020 LET T=21
7030 LET O=0
7040 PRINT ,,"LIST OF ";MAX;" LINES IN ";INT (.25*PEEK (16389)-15.3);"K."
7075 PRINT AT T,O;"ENTER TITLE FOR LIST "
7080 INPUT T$
7081 LET N=0
7084 LET FL=4
7090 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7098 LET NN=O
7099 LET R=16396
7300 GOTO W
People
No people associated with this content.
A\EDB\EDBA\EDBC\ED\B0\C9 itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM
Skip to content
Inventory Control
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- STOCK1.z81 is an EightyOne emulator snapshot of the first program.
- STOCK1.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK1E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK1.b81 is an EightyOne emulator text listing of the first program.
- STOCK2.z81 is an EightyOne emulator snapshot of the second program.
- STOCK2.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK2E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK2.b81 is an EightyOne emulator text listing of the second program.
Content
Source Code
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\1D\00\42\5F\25\5F\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\05\05\F2\FF\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>232 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
40 LET A=CODE D$(N,W)
41 LET B=CODE D$(N,2)
42 LET E=CODE D$(N,7)+Q*(CODE D$(N,8)+Q*CODE D$(N,9))
43 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
44 LET D=CODE D$(N,5)+Q*CODE D$(N,6)
45 RETURN
46 IF L=W+W THEN GOTO 60
50 PRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
51 LPRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
52 IF L THEN PRINT TAB 19;D;
53 IF L THEN LPRINT TAB 19;D;
54 IF NOT L THEN PRINT A;TAB T;B;
55 IF NOT L THEN LPRINT A;TAB T;B;
56 PRINT TAB 26;E/FC
57 LPRINT TAB 26;E/FC
58 RETURN
60 LET Q$=D$(N,NS TO NE)+" "+D$(N,NE+W TO )+" "+STR$ (E/FC)
61 PRINT Q$
62 LPRINT Q$
63 RETURN
90 IF NN>=MAX THEN GOTO 2500
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT 20,O;"ENTER LINE TO SEEK (UP TO ";NL,"CHARACTERS), OR % %E%N%T%E%R% ."
1020 INPUT Q$
1030 IF Q$="" THEN GOTO W
1031 IF LEN Q$>NL THEN LET Q$=Q$(W TO NL)
1040 LET I=LEN Q$
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET N$=D$(N,NS TO NS+I-W)
1090 IF N$=Q$ THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF N$<Q$ THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET N$=D$(HI,NS TO NS+I-W)
1203 IF N$=Q$ THEN GOTO 1300
1205 IF Q$<D$(LO,NS TO NS+I-W) THEN LET N=LO
1208 IF Q$>N$ THEN LET N=HI+W
1210 CLS
1211 PRINT "%Y=%R%E%T%U%R%N TO MASTER MENU.",,,"%(%O%T%H%E%R%): ENTER NEW LINE """;Q$;""""
1212 PRINT AT T,O;"CHOOSE AN OPTION."
1213 PAUSE 4E4
1214 IF INKEY$="Y" THEN GOTO W
1215 CLS
1217 DIM E$(FL)
1219 LET E$(NS TO )=Q$
1220 PRINT AT T,O;"UNIT PRICE ($)?"
1221 INPUT Z
1222 LET Z=FC*Z
1223 LET H=INT (Z/Q)
1224 LET E$(7)=CHR$ (Z-Q*H)
1225 LET Z=H
1226 LET H=INT (Z/Q)
1227 LET E$(8)=CHR$ (Z-Q*H)
1228 LET E$(9)=CHR$ H
1230 PRINT AT T,O;"SUPPLIER CODE? (OPTIONAL)"
1231 INPUT Q$
1232 IF Q$<>"" THEN LET E$(W)=CHR$ VAL Q$
1233 PRINT AT T,O;"TYPE CODE? "
1234 INPUT Q$
1235 IF Q$<>"" THEN LET E$(2)=CHR$ VAL Q$
1237 PRINT AT T,O;"STOCK LEVEL? "
1238 INPUT Q$
1239 IF Q$="" THEN GOTO 1238
1241 LET Z=VAL Q$
1242 LET H=INT (Z/Q)
1244 LET E$(3)=CHR$ (Z-Q*H)
1245 LET E$(4)=CHR$ H
1250 PRINT AT T,O;"RE-ORDER LEVEL? (OPTIONAL)"
1251 INPUT Q$
1252 LET Z=O
1253 IF Q$<>"" THEN LET Z=VAL Q$
1254 LET H=INT (Z/Q)
1255 LET E$(5)=CHR$ (Z-Q*H)
1256 LET E$(06)=CHR$ H
1257 IF NOT NN THEN GOTO 1260
1258 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE: ";D$(N,NS TO NE);TAB 28;N
1320 PRINT D$(N,NE+W TO )
1330 GOSUB 40
1370 PRINT ,,"SUPPLIER: ";A
1372 PRINT "TYPE: ";B
1374 PRINT "UNIT VALUE: ";E/FC
1376 PRINT "RE-ORDER LEVEL = ";D
1380 PRINT " %S%T%O%C%K% %= ";C;
1390 IF C<D THEN PRINT " %(%L%O%W%)";
1400 PRINT ,"VALUE=$";C*E/FC
1420 PRINT ,,"OPTIONS:",,,,
1430 PRINT "%1: ENTER STOCK CHANGE."
1440 PRINT "%2: ALTER RE-ORDER LEVEL."
1442 PRINT "%3: ALTER UNIT VALUE."
1445 PRINT "%4: ADD TO TEXT."
1446 PRINT "%X: DELETE THIS LINE."
1447 PRINT ,,"%5: PREVIOUS LINE. %8: NEXT LINE."
1449 PRINT "%(%O%T%H%E%R%) RETURN TO MASTER MENU."
1460 PRINT AT T,O;"CHOOSE AN OPTION."
1470 PAUSE 4E4
1480 LET Q$=INKEY$
1510 LET A=8
1520 GOSUB 30
1525 IF Q$="1" THEN GOTO 1540
1530 IF Q$="2" THEN GOTO 1600
1532 IF Q$="3" THEN GOTO 1650
1533 IF Q$="4" THEN GOTO 1800
1534 IF Q$="X" THEN GOTO 1700
1535 IF Q$<>"5" AND Q$<>"8" THEN GOTO W
1536 IF Q$="8" THEN LET N=N+W
1537 IF Q$="5" THEN LET N=N-W
1538 IF N<W OR N>NN THEN GOTO W
1539 GOTO 1300
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET Z=C+Z
1570 LET H=INT (Z/Q)
1580 LET D$(N,3)=CHR$ (Z-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1600 PRINT AT T,O;"NEW RE-ORDER LEVEL?"
1610 INPUT Z
1620 LET H=INT (Z/Q)
1630 LET D$(N,5)=CHR$ (Z-Q*H)
1640 LET D$(N,6)=CHR$ H
1645 GOTO 1300
1650 PRINT AT T,O;"NEW UNIT VALUE ($)?"
1655 INPUT Z
1660 LET Z=Z*FC
1665 LET H=INT (Z/Q)
1670 LET D$(N,7)=CHR$ (Z-Q*H)
1671 LET Z=H
1672 LET H=INT (Z/Q)
1673 LET D$(N,8)=CHR$ (Z-Q*H)
1675 LET D$(N,9)=CHR$ H
1695 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
1800 PRINT AT T,O;"ENTER NEW TEXT."
1810 INPUT Q$
1820 LET Q$=Q$+D$(N,NE+W TO )
1830 LET D$(N,NE+W TO )=Q$
1840 GOTO 1300
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<O OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
2500 CLS
2510 PRINT "LIST IS FULL (";MAX;"LINES)."
2520 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
2530 PAUSE 4E4
2540 GOTO W
3000 CLS
3010 PRINT "THE LIST CAN INCLUDE:",,,
3020 PRINT "%1: SUPPLIER AND TYPE."
3030 PRINT "%2: RE-ORDER LEVEL."
3035 PRINT "%3: TEXT."
3036 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3040 PRINT AT T,O;"CHOOSE AN OPTION."
3050 PAUSE 4E4
3060 LET L=CODE INKEY$-29
3070 IF L<O OR L>W+W THEN GOTO W
3100 CLS
3110 PRINT " PRINT LIST :",,,,
3120 PRINT "%1: OF ALL LINES."
3130 PRINT "%2: FOR A SUPPLIER."
3140 PRINT "%3: FOR A GIVEN TYPE OF LINE."
3150 PRINT "%4: OF UNDERSTOCKED LINES."
3155 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3160 PRINT AT T,O;"CHOOSE AN OPTION."
3170 PAUSE 4E4
3180 LET X=CODE INKEY$-28
3181 IF X<=O OR X>4 THEN GOTO W
3182 CLS
3183 PRINT T$
3184 LPRINT T$
3185 LET Q$="LINE ST MIN VAL."
3186 IF NOT L THEN LET Q$(19 TO 24)="SU TY "
3187 IF L=W+W THEN LET Q$=""
3188 PRINT ,,Q$
3189 LPRINT ,,Q$,,,
3190 LET V=O
3200 LET U=W
3201 LET Y=NN
3204 PRINT AT T,O;"START NO.? (OPTIONAL)"
3205 INPUT Q$
3206 IF Q$<>"" THEN LET U=VAL Q$
3208 PRINT AT T,O;"END "
3209 INPUT Q$
3210 IF Q$<>"" THEN LET Y=VAL Q$
3213 PRINT AT T,O;O$
3214 PRINT AT 3,O
3215 IF X=2 THEN GOTO 3300
3216 IF X=3 THEN GOTO 3350
3217 IF X=4 THEN GOTO 3500
3218 FOR N=U TO Y
3219 GOSUB 40
3220 GOSUB 46
3225 LET V=V+C*E/FC
3230 NEXT N
3240 PRINT
3241 LPRINT
3242 LET Q$="TOTAL VALUE = $"+STR$ V
3243 PRINT Q$
3245 LPRINT Q$
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
3310 LET Q$="SUPPLIER"
3320 LET Z=W
3330 GOTO 3400
3350 LET Q$="TYPE"
3360 LET Z=2
3400 PRINT AT T,O;Q$;" CODE?"
3402 INPUT X
3404 PRINT AT T,O;O$
3406 PRINT AT W,O;Q$;" ";X
3407 LPRINT Q$;" ";X,,,,
3408 PRINT AT 3,O
3420 FOR N=U TO Y
3430 IF CODE D$(N,Z)<>X THEN GOTO 3460
3440 GOSUB 40
3450 GOSUB 46
3455 LET V=V+C*E/FC
3460 NEXT N
3470 GOTO 3240
3500 CLS
3501 LET Q$="UNDERSTOCKED LINES."
3502 PRINT Q$,,,,,
3503 LPRINT Q$,,,,,
3510 FOR N=U TO Y
3520 GOSUB 43
3530 IF C>=D THEN GOTO 3560
3540 GOSUB 40
3550 GOSUB 46
3555 LET V=V+C*E/FC
3560 NEXT N
3570 GOTO 3240
7000 CLS
7001 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I% % % "
7002 POKE 22612,(PEEK 22612)+3
7003 FOR I=22613 TO 22621
7004 POKE I,0
7005 NEXT I
7007 PRINT AT T,O;"NAME LENGTH (CHARACTERS)?"
7008 INPUT N
7009 POKE 16557,N
7010 PRINT AT T,O;"TEXT"
7011 INPUT D
7012 POKE 16558,D
7013 LET M=INT ((PEEK (16386)-PEEK (16412)+Q*(PEEK (16387)-PEEK 16413)-2*(Q+N+D))/(9+N+D))
7014 POKE 16559,M-Q*INT (M/Q)
7015 POKE 16560,INT (M/Q)
7017 CLS
7018 CLEAR
7020 DIM D$(PEEK (16559)+256*PEEK 16560,9+PEEK (16557)+PEEK 16558)
7021 LET MAX=PEEK (16559)+256*PEEK 16560
7022 LET NL=PEEK 16557
7023 LET ND=PEEK 16558
7024 PRINT ,,,,"LIST WILL ACCOMODATE ";MAX;" LINES"
7025 LET FL=9+NL+ND
7026 LET NN=0
7027 LET O=NN
7028 LET T=21
7075 PRINT AT T,O;"ENTER TITLE FOR NEW LIST "
7080 INPUT T$
7086 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7099 LET R=16396
7170 LET FC=1000
7180 LET NS=10
7190 LET NE=NS+NL-W
7200 LET NF=NE+ND
7300 GOTO W
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\08\00\4A\52\46\52\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\1B\1B\1B\1B\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>030 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
90 IF NN>=MAX THEN GOTO 4000
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT T,O;"ENTER LINE NUMBER."
1020 INPUT X
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET Z=CODE D$(N,W)+Q*CODE D$(N,2)
1090 IF Z=X THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF Z<X THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET Z=CODE D$(HI,W)+Q*CODE D$(HI,2)
1203 IF X=Z THEN GOTO 1300
1205 IF X<CODE D$(LO,W)+Q*CODE D$(LO,2) THEN LET N=LO
1208 IF X>Z THEN LET N=HI+W
1210 CLS
1211 PRINT "LINE ";X;" IS NOT IN THE LIST, AND WILL BE ADDED."
1215 LET H=INT (X/Q)
1217 LET E$(W)=CHR$ (X-Q*H)
1218 LET E$(2)=CHR$ H
1220 PRINT AT T,O;"LINE ";X;" STOCK?"
1225 INPUT C
1230 LET H=INT (C/Q)
1235 LET E$(3)=CHR$ (C-Q*H)
1240 LET E$(4)=CHR$ H
1242 IF NOT NN THEN GOTO 1260
1244 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE ";X;TAB 28;N
1320 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
1390 PRINT ,,"STOCK=";C
1430 PRINT AT 8,O;"OPTIONS:",,,,"%1: ENTER STOCK CHANGE."
1450 PRINT "%2: DELETE THIS LINE."
1455 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
1460 PRINT AT T,O;"ENTER AN OPTION."
1470 PAUSE 4E4
1480 LET Z=CODE INKEY$-28
1490 IF Z<=O OR Z>2 THEN GOTO W
1500 IF NOT Z THEN GOTO W
1510 LET A=8
1520 GOSUB 30
1535 IF Z=2 THEN GOTO 1700
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET C=C+Z
1570 LET H=INT (C/Q)
1580 LET D$(N,3)=CHR$ (C-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<0 OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
3000 CLS
3010 PRINT AT T,O;"START NO.? (OPTIONAL)"
3020 LET A=W
3030 INPUT Q$
3040 IF Q$<>"" THEN LET A=VAL Q$
3050 PRINT AT T,O;"END "
3060 LET B=NN
3065 INPUT Q$
3070 IF Q$<>"" THEN LET B=VAL Q$
3074 PRINT AT T,O;O$
3080 PRINT AT T,O;"HEADING?"
3090 INPUT Q$
3095 LPRINT T$
3100 CLS
3110 LPRINT ,,Q$
3120 LPRINT
3190 LPRINT "LINE","STOCK"
3200 FOR N=A TO B
3220 PRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3221 LPRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3230 NEXT N
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
4000 CLS
4010 PRINT T$
4020 PRINT "FILE ALREADY CONTAINS ";NN,"LINES - NO MORE ALLOWED."
4030 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
4040 PAUSE 4E4
4050 GOTO W
7000 CLS
7002 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I%I% % % "
7004 POKE 19709,(PEEK 19709)+3
7005 FOR I=19710 TO 19719
7006 POKE I,0
7008 NEXT I
7017 CLEAR
7018 DIM D$(62*(PEEK (16389)-89),4)
7019 LET MAX=62*(PEEK (16389)-89)
7020 LET T=21
7030 LET O=0
7040 PRINT ,,"LIST OF ";MAX;" LINES IN ";INT (.25*PEEK (16389)-15.3);"K."
7075 PRINT AT T,O;"ENTER TITLE FOR LIST "
7080 INPUT T$
7081 LET N=0
7084 LET FL=4
7090 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7098 LET NN=O
7099 LET R=16396
7300 GOTO W
People
No people associated with this content.
Skip to content
Inventory Control
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- STOCK1.z81 is an EightyOne emulator snapshot of the first program.
- STOCK1.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK1E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK1.b81 is an EightyOne emulator text listing of the first program.
- STOCK2.z81 is an EightyOne emulator snapshot of the second program.
- STOCK2.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK2E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK2.b81 is an EightyOne emulator text listing of the second program.
Content
Source Code
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\1D\00\42\5F\25\5F\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\05\05\F2\FF\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>232 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
40 LET A=CODE D$(N,W)
41 LET B=CODE D$(N,2)
42 LET E=CODE D$(N,7)+Q*(CODE D$(N,8)+Q*CODE D$(N,9))
43 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
44 LET D=CODE D$(N,5)+Q*CODE D$(N,6)
45 RETURN
46 IF L=W+W THEN GOTO 60
50 PRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
51 LPRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
52 IF L THEN PRINT TAB 19;D;
53 IF L THEN LPRINT TAB 19;D;
54 IF NOT L THEN PRINT A;TAB T;B;
55 IF NOT L THEN LPRINT A;TAB T;B;
56 PRINT TAB 26;E/FC
57 LPRINT TAB 26;E/FC
58 RETURN
60 LET Q$=D$(N,NS TO NE)+" "+D$(N,NE+W TO )+" "+STR$ (E/FC)
61 PRINT Q$
62 LPRINT Q$
63 RETURN
90 IF NN>=MAX THEN GOTO 2500
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT 20,O;"ENTER LINE TO SEEK (UP TO ";NL,"CHARACTERS), OR % %E%N%T%E%R% ."
1020 INPUT Q$
1030 IF Q$="" THEN GOTO W
1031 IF LEN Q$>NL THEN LET Q$=Q$(W TO NL)
1040 LET I=LEN Q$
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET N$=D$(N,NS TO NS+I-W)
1090 IF N$=Q$ THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF N$<Q$ THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET N$=D$(HI,NS TO NS+I-W)
1203 IF N$=Q$ THEN GOTO 1300
1205 IF Q$<D$(LO,NS TO NS+I-W) THEN LET N=LO
1208 IF Q$>N$ THEN LET N=HI+W
1210 CLS
1211 PRINT "%Y=%R%E%T%U%R%N TO MASTER MENU.",,,"%(%O%T%H%E%R%): ENTER NEW LINE """;Q$;""""
1212 PRINT AT T,O;"CHOOSE AN OPTION."
1213 PAUSE 4E4
1214 IF INKEY$="Y" THEN GOTO W
1215 CLS
1217 DIM E$(FL)
1219 LET E$(NS TO )=Q$
1220 PRINT AT T,O;"UNIT PRICE ($)?"
1221 INPUT Z
1222 LET Z=FC*Z
1223 LET H=INT (Z/Q)
1224 LET E$(7)=CHR$ (Z-Q*H)
1225 LET Z=H
1226 LET H=INT (Z/Q)
1227 LET E$(8)=CHR$ (Z-Q*H)
1228 LET E$(9)=CHR$ H
1230 PRINT AT T,O;"SUPPLIER CODE? (OPTIONAL)"
1231 INPUT Q$
1232 IF Q$<>"" THEN LET E$(W)=CHR$ VAL Q$
1233 PRINT AT T,O;"TYPE CODE? "
1234 INPUT Q$
1235 IF Q$<>"" THEN LET E$(2)=CHR$ VAL Q$
1237 PRINT AT T,O;"STOCK LEVEL? "
1238 INPUT Q$
1239 IF Q$="" THEN GOTO 1238
1241 LET Z=VAL Q$
1242 LET H=INT (Z/Q)
1244 LET E$(3)=CHR$ (Z-Q*H)
1245 LET E$(4)=CHR$ H
1250 PRINT AT T,O;"RE-ORDER LEVEL? (OPTIONAL)"
1251 INPUT Q$
1252 LET Z=O
1253 IF Q$<>"" THEN LET Z=VAL Q$
1254 LET H=INT (Z/Q)
1255 LET E$(5)=CHR$ (Z-Q*H)
1256 LET E$(06)=CHR$ H
1257 IF NOT NN THEN GOTO 1260
1258 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE: ";D$(N,NS TO NE);TAB 28;N
1320 PRINT D$(N,NE+W TO )
1330 GOSUB 40
1370 PRINT ,,"SUPPLIER: ";A
1372 PRINT "TYPE: ";B
1374 PRINT "UNIT VALUE: ";E/FC
1376 PRINT "RE-ORDER LEVEL = ";D
1380 PRINT " %S%T%O%C%K% %= ";C;
1390 IF C<D THEN PRINT " %(%L%O%W%)";
1400 PRINT ,"VALUE=$";C*E/FC
1420 PRINT ,,"OPTIONS:",,,,
1430 PRINT "%1: ENTER STOCK CHANGE."
1440 PRINT "%2: ALTER RE-ORDER LEVEL."
1442 PRINT "%3: ALTER UNIT VALUE."
1445 PRINT "%4: ADD TO TEXT."
1446 PRINT "%X: DELETE THIS LINE."
1447 PRINT ,,"%5: PREVIOUS LINE. %8: NEXT LINE."
1449 PRINT "%(%O%T%H%E%R%) RETURN TO MASTER MENU."
1460 PRINT AT T,O;"CHOOSE AN OPTION."
1470 PAUSE 4E4
1480 LET Q$=INKEY$
1510 LET A=8
1520 GOSUB 30
1525 IF Q$="1" THEN GOTO 1540
1530 IF Q$="2" THEN GOTO 1600
1532 IF Q$="3" THEN GOTO 1650
1533 IF Q$="4" THEN GOTO 1800
1534 IF Q$="X" THEN GOTO 1700
1535 IF Q$<>"5" AND Q$<>"8" THEN GOTO W
1536 IF Q$="8" THEN LET N=N+W
1537 IF Q$="5" THEN LET N=N-W
1538 IF N<W OR N>NN THEN GOTO W
1539 GOTO 1300
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET Z=C+Z
1570 LET H=INT (Z/Q)
1580 LET D$(N,3)=CHR$ (Z-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1600 PRINT AT T,O;"NEW RE-ORDER LEVEL?"
1610 INPUT Z
1620 LET H=INT (Z/Q)
1630 LET D$(N,5)=CHR$ (Z-Q*H)
1640 LET D$(N,6)=CHR$ H
1645 GOTO 1300
1650 PRINT AT T,O;"NEW UNIT VALUE ($)?"
1655 INPUT Z
1660 LET Z=Z*FC
1665 LET H=INT (Z/Q)
1670 LET D$(N,7)=CHR$ (Z-Q*H)
1671 LET Z=H
1672 LET H=INT (Z/Q)
1673 LET D$(N,8)=CHR$ (Z-Q*H)
1675 LET D$(N,9)=CHR$ H
1695 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
1800 PRINT AT T,O;"ENTER NEW TEXT."
1810 INPUT Q$
1820 LET Q$=Q$+D$(N,NE+W TO )
1830 LET D$(N,NE+W TO )=Q$
1840 GOTO 1300
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<O OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
2500 CLS
2510 PRINT "LIST IS FULL (";MAX;"LINES)."
2520 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
2530 PAUSE 4E4
2540 GOTO W
3000 CLS
3010 PRINT "THE LIST CAN INCLUDE:",,,
3020 PRINT "%1: SUPPLIER AND TYPE."
3030 PRINT "%2: RE-ORDER LEVEL."
3035 PRINT "%3: TEXT."
3036 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3040 PRINT AT T,O;"CHOOSE AN OPTION."
3050 PAUSE 4E4
3060 LET L=CODE INKEY$-29
3070 IF L<O OR L>W+W THEN GOTO W
3100 CLS
3110 PRINT " PRINT LIST :",,,,
3120 PRINT "%1: OF ALL LINES."
3130 PRINT "%2: FOR A SUPPLIER."
3140 PRINT "%3: FOR A GIVEN TYPE OF LINE."
3150 PRINT "%4: OF UNDERSTOCKED LINES."
3155 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3160 PRINT AT T,O;"CHOOSE AN OPTION."
3170 PAUSE 4E4
3180 LET X=CODE INKEY$-28
3181 IF X<=O OR X>4 THEN GOTO W
3182 CLS
3183 PRINT T$
3184 LPRINT T$
3185 LET Q$="LINE ST MIN VAL."
3186 IF NOT L THEN LET Q$(19 TO 24)="SU TY "
3187 IF L=W+W THEN LET Q$=""
3188 PRINT ,,Q$
3189 LPRINT ,,Q$,,,
3190 LET V=O
3200 LET U=W
3201 LET Y=NN
3204 PRINT AT T,O;"START NO.? (OPTIONAL)"
3205 INPUT Q$
3206 IF Q$<>"" THEN LET U=VAL Q$
3208 PRINT AT T,O;"END "
3209 INPUT Q$
3210 IF Q$<>"" THEN LET Y=VAL Q$
3213 PRINT AT T,O;O$
3214 PRINT AT 3,O
3215 IF X=2 THEN GOTO 3300
3216 IF X=3 THEN GOTO 3350
3217 IF X=4 THEN GOTO 3500
3218 FOR N=U TO Y
3219 GOSUB 40
3220 GOSUB 46
3225 LET V=V+C*E/FC
3230 NEXT N
3240 PRINT
3241 LPRINT
3242 LET Q$="TOTAL VALUE = $"+STR$ V
3243 PRINT Q$
3245 LPRINT Q$
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
3310 LET Q$="SUPPLIER"
3320 LET Z=W
3330 GOTO 3400
3350 LET Q$="TYPE"
3360 LET Z=2
3400 PRINT AT T,O;Q$;" CODE?"
3402 INPUT X
3404 PRINT AT T,O;O$
3406 PRINT AT W,O;Q$;" ";X
3407 LPRINT Q$;" ";X,,,,
3408 PRINT AT 3,O
3420 FOR N=U TO Y
3430 IF CODE D$(N,Z)<>X THEN GOTO 3460
3440 GOSUB 40
3450 GOSUB 46
3455 LET V=V+C*E/FC
3460 NEXT N
3470 GOTO 3240
3500 CLS
3501 LET Q$="UNDERSTOCKED LINES."
3502 PRINT Q$,,,,,
3503 LPRINT Q$,,,,,
3510 FOR N=U TO Y
3520 GOSUB 43
3530 IF C>=D THEN GOTO 3560
3540 GOSUB 40
3550 GOSUB 46
3555 LET V=V+C*E/FC
3560 NEXT N
3570 GOTO 3240
7000 CLS
7001 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I% % % "
7002 POKE 22612,(PEEK 22612)+3
7003 FOR I=22613 TO 22621
7004 POKE I,0
7005 NEXT I
7007 PRINT AT T,O;"NAME LENGTH (CHARACTERS)?"
7008 INPUT N
7009 POKE 16557,N
7010 PRINT AT T,O;"TEXT"
7011 INPUT D
7012 POKE 16558,D
7013 LET M=INT ((PEEK (16386)-PEEK (16412)+Q*(PEEK (16387)-PEEK 16413)-2*(Q+N+D))/(9+N+D))
7014 POKE 16559,M-Q*INT (M/Q)
7015 POKE 16560,INT (M/Q)
7017 CLS
7018 CLEAR
7020 DIM D$(PEEK (16559)+256*PEEK 16560,9+PEEK (16557)+PEEK 16558)
7021 LET MAX=PEEK (16559)+256*PEEK 16560
7022 LET NL=PEEK 16557
7023 LET ND=PEEK 16558
7024 PRINT ,,,,"LIST WILL ACCOMODATE ";MAX;" LINES"
7025 LET FL=9+NL+ND
7026 LET NN=0
7027 LET O=NN
7028 LET T=21
7075 PRINT AT T,O;"ENTER TITLE FOR NEW LIST "
7080 INPUT T$
7086 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7099 LET R=16396
7170 LET FC=1000
7180 LET NS=10
7190 LET NE=NS+NL-W
7200 LET NF=NE+ND
7300 GOTO W
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\08\00\4A\52\46\52\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\1B\1B\1B\1B\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>030 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
90 IF NN>=MAX THEN GOTO 4000
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT T,O;"ENTER LINE NUMBER."
1020 INPUT X
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET Z=CODE D$(N,W)+Q*CODE D$(N,2)
1090 IF Z=X THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF Z<X THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET Z=CODE D$(HI,W)+Q*CODE D$(HI,2)
1203 IF X=Z THEN GOTO 1300
1205 IF X<CODE D$(LO,W)+Q*CODE D$(LO,2) THEN LET N=LO
1208 IF X>Z THEN LET N=HI+W
1210 CLS
1211 PRINT "LINE ";X;" IS NOT IN THE LIST, AND WILL BE ADDED."
1215 LET H=INT (X/Q)
1217 LET E$(W)=CHR$ (X-Q*H)
1218 LET E$(2)=CHR$ H
1220 PRINT AT T,O;"LINE ";X;" STOCK?"
1225 INPUT C
1230 LET H=INT (C/Q)
1235 LET E$(3)=CHR$ (C-Q*H)
1240 LET E$(4)=CHR$ H
1242 IF NOT NN THEN GOTO 1260
1244 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE ";X;TAB 28;N
1320 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
1390 PRINT ,,"STOCK=";C
1430 PRINT AT 8,O;"OPTIONS:",,,,"%1: ENTER STOCK CHANGE."
1450 PRINT "%2: DELETE THIS LINE."
1455 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
1460 PRINT AT T,O;"ENTER AN OPTION."
1470 PAUSE 4E4
1480 LET Z=CODE INKEY$-28
1490 IF Z<=O OR Z>2 THEN GOTO W
1500 IF NOT Z THEN GOTO W
1510 LET A=8
1520 GOSUB 30
1535 IF Z=2 THEN GOTO 1700
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET C=C+Z
1570 LET H=INT (C/Q)
1580 LET D$(N,3)=CHR$ (C-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<0 OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
3000 CLS
3010 PRINT AT T,O;"START NO.? (OPTIONAL)"
3020 LET A=W
3030 INPUT Q$
3040 IF Q$<>"" THEN LET A=VAL Q$
3050 PRINT AT T,O;"END "
3060 LET B=NN
3065 INPUT Q$
3070 IF Q$<>"" THEN LET B=VAL Q$
3074 PRINT AT T,O;O$
3080 PRINT AT T,O;"HEADING?"
3090 INPUT Q$
3095 LPRINT T$
3100 CLS
3110 LPRINT ,,Q$
3120 LPRINT
3190 LPRINT "LINE","STOCK"
3200 FOR N=A TO B
3220 PRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3221 LPRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3230 NEXT N
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
4000 CLS
4010 PRINT T$
4020 PRINT "FILE ALREADY CONTAINS ";NN,"LINES - NO MORE ALLOWED."
4030 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
4040 PAUSE 4E4
4050 GOTO W
7000 CLS
7002 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I%I% % % "
7004 POKE 19709,(PEEK 19709)+3
7005 FOR I=19710 TO 19719
7006 POKE I,0
7008 NEXT I
7017 CLEAR
7018 DIM D$(62*(PEEK (16389)-89),4)
7019 LET MAX=62*(PEEK (16389)-89)
7020 LET T=21
7030 LET O=0
7040 PRINT ,,"LIST OF ";MAX;" LINES IN ";INT (.25*PEEK (16389)-15.3);"K."
7075 PRINT AT T,O;"ENTER TITLE FOR LIST "
7080 INPUT T$
7081 LET N=0
7084 LET FL=4
7090 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7098 LET NN=O
7099 LET R=16396
7300 GOTO W
People
No people associated with this content.
D
Skip to content
Inventory Control
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- STOCK1.z81 is an EightyOne emulator snapshot of the first program.
- STOCK1.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK1E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK1.b81 is an EightyOne emulator text listing of the first program.
- STOCK2.z81 is an EightyOne emulator snapshot of the second program.
- STOCK2.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK2E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK2.b81 is an EightyOne emulator text listing of the second program.
Content
Source Code
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\1D\00\42\5F\25\5F\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\05\05\F2\FF\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>232 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
40 LET A=CODE D$(N,W)
41 LET B=CODE D$(N,2)
42 LET E=CODE D$(N,7)+Q*(CODE D$(N,8)+Q*CODE D$(N,9))
43 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
44 LET D=CODE D$(N,5)+Q*CODE D$(N,6)
45 RETURN
46 IF L=W+W THEN GOTO 60
50 PRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
51 LPRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
52 IF L THEN PRINT TAB 19;D;
53 IF L THEN LPRINT TAB 19;D;
54 IF NOT L THEN PRINT A;TAB T;B;
55 IF NOT L THEN LPRINT A;TAB T;B;
56 PRINT TAB 26;E/FC
57 LPRINT TAB 26;E/FC
58 RETURN
60 LET Q$=D$(N,NS TO NE)+" "+D$(N,NE+W TO )+" "+STR$ (E/FC)
61 PRINT Q$
62 LPRINT Q$
63 RETURN
90 IF NN>=MAX THEN GOTO 2500
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT 20,O;"ENTER LINE TO SEEK (UP TO ";NL,"CHARACTERS), OR % %E%N%T%E%R% ."
1020 INPUT Q$
1030 IF Q$="" THEN GOTO W
1031 IF LEN Q$>NL THEN LET Q$=Q$(W TO NL)
1040 LET I=LEN Q$
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET N$=D$(N,NS TO NS+I-W)
1090 IF N$=Q$ THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF N$<Q$ THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET N$=D$(HI,NS TO NS+I-W)
1203 IF N$=Q$ THEN GOTO 1300
1205 IF Q$<D$(LO,NS TO NS+I-W) THEN LET N=LO
1208 IF Q$>N$ THEN LET N=HI+W
1210 CLS
1211 PRINT "%Y=%R%E%T%U%R%N TO MASTER MENU.",,,"%(%O%T%H%E%R%): ENTER NEW LINE """;Q$;""""
1212 PRINT AT T,O;"CHOOSE AN OPTION."
1213 PAUSE 4E4
1214 IF INKEY$="Y" THEN GOTO W
1215 CLS
1217 DIM E$(FL)
1219 LET E$(NS TO )=Q$
1220 PRINT AT T,O;"UNIT PRICE ($)?"
1221 INPUT Z
1222 LET Z=FC*Z
1223 LET H=INT (Z/Q)
1224 LET E$(7)=CHR$ (Z-Q*H)
1225 LET Z=H
1226 LET H=INT (Z/Q)
1227 LET E$(8)=CHR$ (Z-Q*H)
1228 LET E$(9)=CHR$ H
1230 PRINT AT T,O;"SUPPLIER CODE? (OPTIONAL)"
1231 INPUT Q$
1232 IF Q$<>"" THEN LET E$(W)=CHR$ VAL Q$
1233 PRINT AT T,O;"TYPE CODE? "
1234 INPUT Q$
1235 IF Q$<>"" THEN LET E$(2)=CHR$ VAL Q$
1237 PRINT AT T,O;"STOCK LEVEL? "
1238 INPUT Q$
1239 IF Q$="" THEN GOTO 1238
1241 LET Z=VAL Q$
1242 LET H=INT (Z/Q)
1244 LET E$(3)=CHR$ (Z-Q*H)
1245 LET E$(4)=CHR$ H
1250 PRINT AT T,O;"RE-ORDER LEVEL? (OPTIONAL)"
1251 INPUT Q$
1252 LET Z=O
1253 IF Q$<>"" THEN LET Z=VAL Q$
1254 LET H=INT (Z/Q)
1255 LET E$(5)=CHR$ (Z-Q*H)
1256 LET E$(06)=CHR$ H
1257 IF NOT NN THEN GOTO 1260
1258 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE: ";D$(N,NS TO NE);TAB 28;N
1320 PRINT D$(N,NE+W TO )
1330 GOSUB 40
1370 PRINT ,,"SUPPLIER: ";A
1372 PRINT "TYPE: ";B
1374 PRINT "UNIT VALUE: ";E/FC
1376 PRINT "RE-ORDER LEVEL = ";D
1380 PRINT " %S%T%O%C%K% %= ";C;
1390 IF C<D THEN PRINT " %(%L%O%W%)";
1400 PRINT ,"VALUE=$";C*E/FC
1420 PRINT ,,"OPTIONS:",,,,
1430 PRINT "%1: ENTER STOCK CHANGE."
1440 PRINT "%2: ALTER RE-ORDER LEVEL."
1442 PRINT "%3: ALTER UNIT VALUE."
1445 PRINT "%4: ADD TO TEXT."
1446 PRINT "%X: DELETE THIS LINE."
1447 PRINT ,,"%5: PREVIOUS LINE. %8: NEXT LINE."
1449 PRINT "%(%O%T%H%E%R%) RETURN TO MASTER MENU."
1460 PRINT AT T,O;"CHOOSE AN OPTION."
1470 PAUSE 4E4
1480 LET Q$=INKEY$
1510 LET A=8
1520 GOSUB 30
1525 IF Q$="1" THEN GOTO 1540
1530 IF Q$="2" THEN GOTO 1600
1532 IF Q$="3" THEN GOTO 1650
1533 IF Q$="4" THEN GOTO 1800
1534 IF Q$="X" THEN GOTO 1700
1535 IF Q$<>"5" AND Q$<>"8" THEN GOTO W
1536 IF Q$="8" THEN LET N=N+W
1537 IF Q$="5" THEN LET N=N-W
1538 IF N<W OR N>NN THEN GOTO W
1539 GOTO 1300
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET Z=C+Z
1570 LET H=INT (Z/Q)
1580 LET D$(N,3)=CHR$ (Z-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1600 PRINT AT T,O;"NEW RE-ORDER LEVEL?"
1610 INPUT Z
1620 LET H=INT (Z/Q)
1630 LET D$(N,5)=CHR$ (Z-Q*H)
1640 LET D$(N,6)=CHR$ H
1645 GOTO 1300
1650 PRINT AT T,O;"NEW UNIT VALUE ($)?"
1655 INPUT Z
1660 LET Z=Z*FC
1665 LET H=INT (Z/Q)
1670 LET D$(N,7)=CHR$ (Z-Q*H)
1671 LET Z=H
1672 LET H=INT (Z/Q)
1673 LET D$(N,8)=CHR$ (Z-Q*H)
1675 LET D$(N,9)=CHR$ H
1695 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
1800 PRINT AT T,O;"ENTER NEW TEXT."
1810 INPUT Q$
1820 LET Q$=Q$+D$(N,NE+W TO )
1830 LET D$(N,NE+W TO )=Q$
1840 GOTO 1300
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<O OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
2500 CLS
2510 PRINT "LIST IS FULL (";MAX;"LINES)."
2520 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
2530 PAUSE 4E4
2540 GOTO W
3000 CLS
3010 PRINT "THE LIST CAN INCLUDE:",,,
3020 PRINT "%1: SUPPLIER AND TYPE."
3030 PRINT "%2: RE-ORDER LEVEL."
3035 PRINT "%3: TEXT."
3036 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3040 PRINT AT T,O;"CHOOSE AN OPTION."
3050 PAUSE 4E4
3060 LET L=CODE INKEY$-29
3070 IF L<O OR L>W+W THEN GOTO W
3100 CLS
3110 PRINT " PRINT LIST :",,,,
3120 PRINT "%1: OF ALL LINES."
3130 PRINT "%2: FOR A SUPPLIER."
3140 PRINT "%3: FOR A GIVEN TYPE OF LINE."
3150 PRINT "%4: OF UNDERSTOCKED LINES."
3155 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3160 PRINT AT T,O;"CHOOSE AN OPTION."
3170 PAUSE 4E4
3180 LET X=CODE INKEY$-28
3181 IF X<=O OR X>4 THEN GOTO W
3182 CLS
3183 PRINT T$
3184 LPRINT T$
3185 LET Q$="LINE ST MIN VAL."
3186 IF NOT L THEN LET Q$(19 TO 24)="SU TY "
3187 IF L=W+W THEN LET Q$=""
3188 PRINT ,,Q$
3189 LPRINT ,,Q$,,,
3190 LET V=O
3200 LET U=W
3201 LET Y=NN
3204 PRINT AT T,O;"START NO.? (OPTIONAL)"
3205 INPUT Q$
3206 IF Q$<>"" THEN LET U=VAL Q$
3208 PRINT AT T,O;"END "
3209 INPUT Q$
3210 IF Q$<>"" THEN LET Y=VAL Q$
3213 PRINT AT T,O;O$
3214 PRINT AT 3,O
3215 IF X=2 THEN GOTO 3300
3216 IF X=3 THEN GOTO 3350
3217 IF X=4 THEN GOTO 3500
3218 FOR N=U TO Y
3219 GOSUB 40
3220 GOSUB 46
3225 LET V=V+C*E/FC
3230 NEXT N
3240 PRINT
3241 LPRINT
3242 LET Q$="TOTAL VALUE = $"+STR$ V
3243 PRINT Q$
3245 LPRINT Q$
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
3310 LET Q$="SUPPLIER"
3320 LET Z=W
3330 GOTO 3400
3350 LET Q$="TYPE"
3360 LET Z=2
3400 PRINT AT T,O;Q$;" CODE?"
3402 INPUT X
3404 PRINT AT T,O;O$
3406 PRINT AT W,O;Q$;" ";X
3407 LPRINT Q$;" ";X,,,,
3408 PRINT AT 3,O
3420 FOR N=U TO Y
3430 IF CODE D$(N,Z)<>X THEN GOTO 3460
3440 GOSUB 40
3450 GOSUB 46
3455 LET V=V+C*E/FC
3460 NEXT N
3470 GOTO 3240
3500 CLS
3501 LET Q$="UNDERSTOCKED LINES."
3502 PRINT Q$,,,,,
3503 LPRINT Q$,,,,,
3510 FOR N=U TO Y
3520 GOSUB 43
3530 IF C>=D THEN GOTO 3560
3540 GOSUB 40
3550 GOSUB 46
3555 LET V=V+C*E/FC
3560 NEXT N
3570 GOTO 3240
7000 CLS
7001 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I% % % "
7002 POKE 22612,(PEEK 22612)+3
7003 FOR I=22613 TO 22621
7004 POKE I,0
7005 NEXT I
7007 PRINT AT T,O;"NAME LENGTH (CHARACTERS)?"
7008 INPUT N
7009 POKE 16557,N
7010 PRINT AT T,O;"TEXT"
7011 INPUT D
7012 POKE 16558,D
7013 LET M=INT ((PEEK (16386)-PEEK (16412)+Q*(PEEK (16387)-PEEK 16413)-2*(Q+N+D))/(9+N+D))
7014 POKE 16559,M-Q*INT (M/Q)
7015 POKE 16560,INT (M/Q)
7017 CLS
7018 CLEAR
7020 DIM D$(PEEK (16559)+256*PEEK 16560,9+PEEK (16557)+PEEK 16558)
7021 LET MAX=PEEK (16559)+256*PEEK 16560
7022 LET NL=PEEK 16557
7023 LET ND=PEEK 16558
7024 PRINT ,,,,"LIST WILL ACCOMODATE ";MAX;" LINES"
7025 LET FL=9+NL+ND
7026 LET NN=0
7027 LET O=NN
7028 LET T=21
7075 PRINT AT T,O;"ENTER TITLE FOR NEW LIST "
7080 INPUT T$
7086 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7099 LET R=16396
7170 LET FC=1000
7180 LET NS=10
7190 LET NE=NS+NL-W
7200 LET NF=NE+ND
7300 GOTO W
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\08\00\4A\52\46\52\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\1B\1B\1B\1B\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>030 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
90 IF NN>=MAX THEN GOTO 4000
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT T,O;"ENTER LINE NUMBER."
1020 INPUT X
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET Z=CODE D$(N,W)+Q*CODE D$(N,2)
1090 IF Z=X THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF Z<X THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET Z=CODE D$(HI,W)+Q*CODE D$(HI,2)
1203 IF X=Z THEN GOTO 1300
1205 IF X<CODE D$(LO,W)+Q*CODE D$(LO,2) THEN LET N=LO
1208 IF X>Z THEN LET N=HI+W
1210 CLS
1211 PRINT "LINE ";X;" IS NOT IN THE LIST, AND WILL BE ADDED."
1215 LET H=INT (X/Q)
1217 LET E$(W)=CHR$ (X-Q*H)
1218 LET E$(2)=CHR$ H
1220 PRINT AT T,O;"LINE ";X;" STOCK?"
1225 INPUT C
1230 LET H=INT (C/Q)
1235 LET E$(3)=CHR$ (C-Q*H)
1240 LET E$(4)=CHR$ H
1242 IF NOT NN THEN GOTO 1260
1244 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE ";X;TAB 28;N
1320 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
1390 PRINT ,,"STOCK=";C
1430 PRINT AT 8,O;"OPTIONS:",,,,"%1: ENTER STOCK CHANGE."
1450 PRINT "%2: DELETE THIS LINE."
1455 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
1460 PRINT AT T,O;"ENTER AN OPTION."
1470 PAUSE 4E4
1480 LET Z=CODE INKEY$-28
1490 IF Z<=O OR Z>2 THEN GOTO W
1500 IF NOT Z THEN GOTO W
1510 LET A=8
1520 GOSUB 30
1535 IF Z=2 THEN GOTO 1700
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET C=C+Z
1570 LET H=INT (C/Q)
1580 LET D$(N,3)=CHR$ (C-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<0 OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
3000 CLS
3010 PRINT AT T,O;"START NO.? (OPTIONAL)"
3020 LET A=W
3030 INPUT Q$
3040 IF Q$<>"" THEN LET A=VAL Q$
3050 PRINT AT T,O;"END "
3060 LET B=NN
3065 INPUT Q$
3070 IF Q$<>"" THEN LET B=VAL Q$
3074 PRINT AT T,O;O$
3080 PRINT AT T,O;"HEADING?"
3090 INPUT Q$
3095 LPRINT T$
3100 CLS
3110 LPRINT ,,Q$
3120 LPRINT
3190 LPRINT "LINE","STOCK"
3200 FOR N=A TO B
3220 PRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3221 LPRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3230 NEXT N
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
4000 CLS
4010 PRINT T$
4020 PRINT "FILE ALREADY CONTAINS ";NN,"LINES - NO MORE ALLOWED."
4030 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
4040 PAUSE 4E4
4050 GOTO W
7000 CLS
7002 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I%I% % % "
7004 POKE 19709,(PEEK 19709)+3
7005 FOR I=19710 TO 19719
7006 POKE I,0
7008 NEXT I
7017 CLEAR
7018 DIM D$(62*(PEEK (16389)-89),4)
7019 LET MAX=62*(PEEK (16389)-89)
7020 LET T=21
7030 LET O=0
7040 PRINT ,,"LIST OF ";MAX;" LINES IN ";INT (.25*PEEK (16389)-15.3);"K."
7075 PRINT AT T,O;"ENTER TITLE FOR LIST "
7080 INPUT T$
7081 LET N=0
7084 LET FL=4
7090 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7098 LET NN=O
7099 LET R=16396
7300 GOTO W
People
No people associated with this content.
E
Skip to content
Inventory Control
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- STOCK1.z81 is an EightyOne emulator snapshot of the first program.
- STOCK1.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK1E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK1.b81 is an EightyOne emulator text listing of the first program.
- STOCK2.z81 is an EightyOne emulator snapshot of the second program.
- STOCK2.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK2E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK2.b81 is an EightyOne emulator text listing of the second program.
Content
Source Code
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\1D\00\42\5F\25\5F\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\05\05\F2\FF\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>232 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
40 LET A=CODE D$(N,W)
41 LET B=CODE D$(N,2)
42 LET E=CODE D$(N,7)+Q*(CODE D$(N,8)+Q*CODE D$(N,9))
43 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
44 LET D=CODE D$(N,5)+Q*CODE D$(N,6)
45 RETURN
46 IF L=W+W THEN GOTO 60
50 PRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
51 LPRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
52 IF L THEN PRINT TAB 19;D;
53 IF L THEN LPRINT TAB 19;D;
54 IF NOT L THEN PRINT A;TAB T;B;
55 IF NOT L THEN LPRINT A;TAB T;B;
56 PRINT TAB 26;E/FC
57 LPRINT TAB 26;E/FC
58 RETURN
60 LET Q$=D$(N,NS TO NE)+" "+D$(N,NE+W TO )+" "+STR$ (E/FC)
61 PRINT Q$
62 LPRINT Q$
63 RETURN
90 IF NN>=MAX THEN GOTO 2500
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT 20,O;"ENTER LINE TO SEEK (UP TO ";NL,"CHARACTERS), OR % %E%N%T%E%R% ."
1020 INPUT Q$
1030 IF Q$="" THEN GOTO W
1031 IF LEN Q$>NL THEN LET Q$=Q$(W TO NL)
1040 LET I=LEN Q$
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET N$=D$(N,NS TO NS+I-W)
1090 IF N$=Q$ THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF N$<Q$ THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET N$=D$(HI,NS TO NS+I-W)
1203 IF N$=Q$ THEN GOTO 1300
1205 IF Q$<D$(LO,NS TO NS+I-W) THEN LET N=LO
1208 IF Q$>N$ THEN LET N=HI+W
1210 CLS
1211 PRINT "%Y=%R%E%T%U%R%N TO MASTER MENU.",,,"%(%O%T%H%E%R%): ENTER NEW LINE """;Q$;""""
1212 PRINT AT T,O;"CHOOSE AN OPTION."
1213 PAUSE 4E4
1214 IF INKEY$="Y" THEN GOTO W
1215 CLS
1217 DIM E$(FL)
1219 LET E$(NS TO )=Q$
1220 PRINT AT T,O;"UNIT PRICE ($)?"
1221 INPUT Z
1222 LET Z=FC*Z
1223 LET H=INT (Z/Q)
1224 LET E$(7)=CHR$ (Z-Q*H)
1225 LET Z=H
1226 LET H=INT (Z/Q)
1227 LET E$(8)=CHR$ (Z-Q*H)
1228 LET E$(9)=CHR$ H
1230 PRINT AT T,O;"SUPPLIER CODE? (OPTIONAL)"
1231 INPUT Q$
1232 IF Q$<>"" THEN LET E$(W)=CHR$ VAL Q$
1233 PRINT AT T,O;"TYPE CODE? "
1234 INPUT Q$
1235 IF Q$<>"" THEN LET E$(2)=CHR$ VAL Q$
1237 PRINT AT T,O;"STOCK LEVEL? "
1238 INPUT Q$
1239 IF Q$="" THEN GOTO 1238
1241 LET Z=VAL Q$
1242 LET H=INT (Z/Q)
1244 LET E$(3)=CHR$ (Z-Q*H)
1245 LET E$(4)=CHR$ H
1250 PRINT AT T,O;"RE-ORDER LEVEL? (OPTIONAL)"
1251 INPUT Q$
1252 LET Z=O
1253 IF Q$<>"" THEN LET Z=VAL Q$
1254 LET H=INT (Z/Q)
1255 LET E$(5)=CHR$ (Z-Q*H)
1256 LET E$(06)=CHR$ H
1257 IF NOT NN THEN GOTO 1260
1258 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE: ";D$(N,NS TO NE);TAB 28;N
1320 PRINT D$(N,NE+W TO )
1330 GOSUB 40
1370 PRINT ,,"SUPPLIER: ";A
1372 PRINT "TYPE: ";B
1374 PRINT "UNIT VALUE: ";E/FC
1376 PRINT "RE-ORDER LEVEL = ";D
1380 PRINT " %S%T%O%C%K% %= ";C;
1390 IF C<D THEN PRINT " %(%L%O%W%)";
1400 PRINT ,"VALUE=$";C*E/FC
1420 PRINT ,,"OPTIONS:",,,,
1430 PRINT "%1: ENTER STOCK CHANGE."
1440 PRINT "%2: ALTER RE-ORDER LEVEL."
1442 PRINT "%3: ALTER UNIT VALUE."
1445 PRINT "%4: ADD TO TEXT."
1446 PRINT "%X: DELETE THIS LINE."
1447 PRINT ,,"%5: PREVIOUS LINE. %8: NEXT LINE."
1449 PRINT "%(%O%T%H%E%R%) RETURN TO MASTER MENU."
1460 PRINT AT T,O;"CHOOSE AN OPTION."
1470 PAUSE 4E4
1480 LET Q$=INKEY$
1510 LET A=8
1520 GOSUB 30
1525 IF Q$="1" THEN GOTO 1540
1530 IF Q$="2" THEN GOTO 1600
1532 IF Q$="3" THEN GOTO 1650
1533 IF Q$="4" THEN GOTO 1800
1534 IF Q$="X" THEN GOTO 1700
1535 IF Q$<>"5" AND Q$<>"8" THEN GOTO W
1536 IF Q$="8" THEN LET N=N+W
1537 IF Q$="5" THEN LET N=N-W
1538 IF N<W OR N>NN THEN GOTO W
1539 GOTO 1300
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET Z=C+Z
1570 LET H=INT (Z/Q)
1580 LET D$(N,3)=CHR$ (Z-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1600 PRINT AT T,O;"NEW RE-ORDER LEVEL?"
1610 INPUT Z
1620 LET H=INT (Z/Q)
1630 LET D$(N,5)=CHR$ (Z-Q*H)
1640 LET D$(N,6)=CHR$ H
1645 GOTO 1300
1650 PRINT AT T,O;"NEW UNIT VALUE ($)?"
1655 INPUT Z
1660 LET Z=Z*FC
1665 LET H=INT (Z/Q)
1670 LET D$(N,7)=CHR$ (Z-Q*H)
1671 LET Z=H
1672 LET H=INT (Z/Q)
1673 LET D$(N,8)=CHR$ (Z-Q*H)
1675 LET D$(N,9)=CHR$ H
1695 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
1800 PRINT AT T,O;"ENTER NEW TEXT."
1810 INPUT Q$
1820 LET Q$=Q$+D$(N,NE+W TO )
1830 LET D$(N,NE+W TO )=Q$
1840 GOTO 1300
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<O OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
2500 CLS
2510 PRINT "LIST IS FULL (";MAX;"LINES)."
2520 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
2530 PAUSE 4E4
2540 GOTO W
3000 CLS
3010 PRINT "THE LIST CAN INCLUDE:",,,
3020 PRINT "%1: SUPPLIER AND TYPE."
3030 PRINT "%2: RE-ORDER LEVEL."
3035 PRINT "%3: TEXT."
3036 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3040 PRINT AT T,O;"CHOOSE AN OPTION."
3050 PAUSE 4E4
3060 LET L=CODE INKEY$-29
3070 IF L<O OR L>W+W THEN GOTO W
3100 CLS
3110 PRINT " PRINT LIST :",,,,
3120 PRINT "%1: OF ALL LINES."
3130 PRINT "%2: FOR A SUPPLIER."
3140 PRINT "%3: FOR A GIVEN TYPE OF LINE."
3150 PRINT "%4: OF UNDERSTOCKED LINES."
3155 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3160 PRINT AT T,O;"CHOOSE AN OPTION."
3170 PAUSE 4E4
3180 LET X=CODE INKEY$-28
3181 IF X<=O OR X>4 THEN GOTO W
3182 CLS
3183 PRINT T$
3184 LPRINT T$
3185 LET Q$="LINE ST MIN VAL."
3186 IF NOT L THEN LET Q$(19 TO 24)="SU TY "
3187 IF L=W+W THEN LET Q$=""
3188 PRINT ,,Q$
3189 LPRINT ,,Q$,,,
3190 LET V=O
3200 LET U=W
3201 LET Y=NN
3204 PRINT AT T,O;"START NO.? (OPTIONAL)"
3205 INPUT Q$
3206 IF Q$<>"" THEN LET U=VAL Q$
3208 PRINT AT T,O;"END "
3209 INPUT Q$
3210 IF Q$<>"" THEN LET Y=VAL Q$
3213 PRINT AT T,O;O$
3214 PRINT AT 3,O
3215 IF X=2 THEN GOTO 3300
3216 IF X=3 THEN GOTO 3350
3217 IF X=4 THEN GOTO 3500
3218 FOR N=U TO Y
3219 GOSUB 40
3220 GOSUB 46
3225 LET V=V+C*E/FC
3230 NEXT N
3240 PRINT
3241 LPRINT
3242 LET Q$="TOTAL VALUE = $"+STR$ V
3243 PRINT Q$
3245 LPRINT Q$
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
3310 LET Q$="SUPPLIER"
3320 LET Z=W
3330 GOTO 3400
3350 LET Q$="TYPE"
3360 LET Z=2
3400 PRINT AT T,O;Q$;" CODE?"
3402 INPUT X
3404 PRINT AT T,O;O$
3406 PRINT AT W,O;Q$;" ";X
3407 LPRINT Q$;" ";X,,,,
3408 PRINT AT 3,O
3420 FOR N=U TO Y
3430 IF CODE D$(N,Z)<>X THEN GOTO 3460
3440 GOSUB 40
3450 GOSUB 46
3455 LET V=V+C*E/FC
3460 NEXT N
3470 GOTO 3240
3500 CLS
3501 LET Q$="UNDERSTOCKED LINES."
3502 PRINT Q$,,,,,
3503 LPRINT Q$,,,,,
3510 FOR N=U TO Y
3520 GOSUB 43
3530 IF C>=D THEN GOTO 3560
3540 GOSUB 40
3550 GOSUB 46
3555 LET V=V+C*E/FC
3560 NEXT N
3570 GOTO 3240
7000 CLS
7001 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I% % % "
7002 POKE 22612,(PEEK 22612)+3
7003 FOR I=22613 TO 22621
7004 POKE I,0
7005 NEXT I
7007 PRINT AT T,O;"NAME LENGTH (CHARACTERS)?"
7008 INPUT N
7009 POKE 16557,N
7010 PRINT AT T,O;"TEXT"
7011 INPUT D
7012 POKE 16558,D
7013 LET M=INT ((PEEK (16386)-PEEK (16412)+Q*(PEEK (16387)-PEEK 16413)-2*(Q+N+D))/(9+N+D))
7014 POKE 16559,M-Q*INT (M/Q)
7015 POKE 16560,INT (M/Q)
7017 CLS
7018 CLEAR
7020 DIM D$(PEEK (16559)+256*PEEK 16560,9+PEEK (16557)+PEEK 16558)
7021 LET MAX=PEEK (16559)+256*PEEK 16560
7022 LET NL=PEEK 16557
7023 LET ND=PEEK 16558
7024 PRINT ,,,,"LIST WILL ACCOMODATE ";MAX;" LINES"
7025 LET FL=9+NL+ND
7026 LET NN=0
7027 LET O=NN
7028 LET T=21
7075 PRINT AT T,O;"ENTER TITLE FOR NEW LIST "
7080 INPUT T$
7086 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7099 LET R=16396
7170 LET FC=1000
7180 LET NS=10
7190 LET NE=NS+NL-W
7200 LET NF=NE+ND
7300 GOTO W
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\08\00\4A\52\46\52\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\1B\1B\1B\1B\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>030 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
90 IF NN>=MAX THEN GOTO 4000
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT T,O;"ENTER LINE NUMBER."
1020 INPUT X
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET Z=CODE D$(N,W)+Q*CODE D$(N,2)
1090 IF Z=X THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF Z<X THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET Z=CODE D$(HI,W)+Q*CODE D$(HI,2)
1203 IF X=Z THEN GOTO 1300
1205 IF X<CODE D$(LO,W)+Q*CODE D$(LO,2) THEN LET N=LO
1208 IF X>Z THEN LET N=HI+W
1210 CLS
1211 PRINT "LINE ";X;" IS NOT IN THE LIST, AND WILL BE ADDED."
1215 LET H=INT (X/Q)
1217 LET E$(W)=CHR$ (X-Q*H)
1218 LET E$(2)=CHR$ H
1220 PRINT AT T,O;"LINE ";X;" STOCK?"
1225 INPUT C
1230 LET H=INT (C/Q)
1235 LET E$(3)=CHR$ (C-Q*H)
1240 LET E$(4)=CHR$ H
1242 IF NOT NN THEN GOTO 1260
1244 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE ";X;TAB 28;N
1320 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
1390 PRINT ,,"STOCK=";C
1430 PRINT AT 8,O;"OPTIONS:",,,,"%1: ENTER STOCK CHANGE."
1450 PRINT "%2: DELETE THIS LINE."
1455 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
1460 PRINT AT T,O;"ENTER AN OPTION."
1470 PAUSE 4E4
1480 LET Z=CODE INKEY$-28
1490 IF Z<=O OR Z>2 THEN GOTO W
1500 IF NOT Z THEN GOTO W
1510 LET A=8
1520 GOSUB 30
1535 IF Z=2 THEN GOTO 1700
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET C=C+Z
1570 LET H=INT (C/Q)
1580 LET D$(N,3)=CHR$ (C-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<0 OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
3000 CLS
3010 PRINT AT T,O;"START NO.? (OPTIONAL)"
3020 LET A=W
3030 INPUT Q$
3040 IF Q$<>"" THEN LET A=VAL Q$
3050 PRINT AT T,O;"END "
3060 LET B=NN
3065 INPUT Q$
3070 IF Q$<>"" THEN LET B=VAL Q$
3074 PRINT AT T,O;O$
3080 PRINT AT T,O;"HEADING?"
3090 INPUT Q$
3095 LPRINT T$
3100 CLS
3110 LPRINT ,,Q$
3120 LPRINT
3190 LPRINT "LINE","STOCK"
3200 FOR N=A TO B
3220 PRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3221 LPRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3230 NEXT N
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
4000 CLS
4010 PRINT T$
4020 PRINT "FILE ALREADY CONTAINS ";NN,"LINES - NO MORE ALLOWED."
4030 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
4040 PAUSE 4E4
4050 GOTO W
7000 CLS
7002 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I%I% % % "
7004 POKE 19709,(PEEK 19709)+3
7005 FOR I=19710 TO 19719
7006 POKE I,0
7008 NEXT I
7017 CLEAR
7018 DIM D$(62*(PEEK (16389)-89),4)
7019 LET MAX=62*(PEEK (16389)-89)
7020 LET T=21
7030 LET O=0
7040 PRINT ,,"LIST OF ";MAX;" LINES IN ";INT (.25*PEEK (16389)-15.3);"K."
7075 PRINT AT T,O;"ENTER TITLE FOR LIST "
7080 INPUT T$
7081 LET N=0
7084 LET FL=4
7090 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7098 LET NN=O
7099 LET R=16396
7300 GOTO W
People
No people associated with this content.
AE
Skip to content
Inventory Control
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- STOCK1.z81 is an EightyOne emulator snapshot of the first program.
- STOCK1.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK1E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK1.b81 is an EightyOne emulator text listing of the first program.
- STOCK2.z81 is an EightyOne emulator snapshot of the second program.
- STOCK2.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK2E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK2.b81 is an EightyOne emulator text listing of the second program.
Content
Source Code
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\1D\00\42\5F\25\5F\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\05\05\F2\FF\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>232 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
40 LET A=CODE D$(N,W)
41 LET B=CODE D$(N,2)
42 LET E=CODE D$(N,7)+Q*(CODE D$(N,8)+Q*CODE D$(N,9))
43 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
44 LET D=CODE D$(N,5)+Q*CODE D$(N,6)
45 RETURN
46 IF L=W+W THEN GOTO 60
50 PRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
51 LPRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
52 IF L THEN PRINT TAB 19;D;
53 IF L THEN LPRINT TAB 19;D;
54 IF NOT L THEN PRINT A;TAB T;B;
55 IF NOT L THEN LPRINT A;TAB T;B;
56 PRINT TAB 26;E/FC
57 LPRINT TAB 26;E/FC
58 RETURN
60 LET Q$=D$(N,NS TO NE)+" "+D$(N,NE+W TO )+" "+STR$ (E/FC)
61 PRINT Q$
62 LPRINT Q$
63 RETURN
90 IF NN>=MAX THEN GOTO 2500
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT 20,O;"ENTER LINE TO SEEK (UP TO ";NL,"CHARACTERS), OR % %E%N%T%E%R% ."
1020 INPUT Q$
1030 IF Q$="" THEN GOTO W
1031 IF LEN Q$>NL THEN LET Q$=Q$(W TO NL)
1040 LET I=LEN Q$
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET N$=D$(N,NS TO NS+I-W)
1090 IF N$=Q$ THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF N$<Q$ THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET N$=D$(HI,NS TO NS+I-W)
1203 IF N$=Q$ THEN GOTO 1300
1205 IF Q$<D$(LO,NS TO NS+I-W) THEN LET N=LO
1208 IF Q$>N$ THEN LET N=HI+W
1210 CLS
1211 PRINT "%Y=%R%E%T%U%R%N TO MASTER MENU.",,,"%(%O%T%H%E%R%): ENTER NEW LINE """;Q$;""""
1212 PRINT AT T,O;"CHOOSE AN OPTION."
1213 PAUSE 4E4
1214 IF INKEY$="Y" THEN GOTO W
1215 CLS
1217 DIM E$(FL)
1219 LET E$(NS TO )=Q$
1220 PRINT AT T,O;"UNIT PRICE ($)?"
1221 INPUT Z
1222 LET Z=FC*Z
1223 LET H=INT (Z/Q)
1224 LET E$(7)=CHR$ (Z-Q*H)
1225 LET Z=H
1226 LET H=INT (Z/Q)
1227 LET E$(8)=CHR$ (Z-Q*H)
1228 LET E$(9)=CHR$ H
1230 PRINT AT T,O;"SUPPLIER CODE? (OPTIONAL)"
1231 INPUT Q$
1232 IF Q$<>"" THEN LET E$(W)=CHR$ VAL Q$
1233 PRINT AT T,O;"TYPE CODE? "
1234 INPUT Q$
1235 IF Q$<>"" THEN LET E$(2)=CHR$ VAL Q$
1237 PRINT AT T,O;"STOCK LEVEL? "
1238 INPUT Q$
1239 IF Q$="" THEN GOTO 1238
1241 LET Z=VAL Q$
1242 LET H=INT (Z/Q)
1244 LET E$(3)=CHR$ (Z-Q*H)
1245 LET E$(4)=CHR$ H
1250 PRINT AT T,O;"RE-ORDER LEVEL? (OPTIONAL)"
1251 INPUT Q$
1252 LET Z=O
1253 IF Q$<>"" THEN LET Z=VAL Q$
1254 LET H=INT (Z/Q)
1255 LET E$(5)=CHR$ (Z-Q*H)
1256 LET E$(06)=CHR$ H
1257 IF NOT NN THEN GOTO 1260
1258 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE: ";D$(N,NS TO NE);TAB 28;N
1320 PRINT D$(N,NE+W TO )
1330 GOSUB 40
1370 PRINT ,,"SUPPLIER: ";A
1372 PRINT "TYPE: ";B
1374 PRINT "UNIT VALUE: ";E/FC
1376 PRINT "RE-ORDER LEVEL = ";D
1380 PRINT " %S%T%O%C%K% %= ";C;
1390 IF C<D THEN PRINT " %(%L%O%W%)";
1400 PRINT ,"VALUE=$";C*E/FC
1420 PRINT ,,"OPTIONS:",,,,
1430 PRINT "%1: ENTER STOCK CHANGE."
1440 PRINT "%2: ALTER RE-ORDER LEVEL."
1442 PRINT "%3: ALTER UNIT VALUE."
1445 PRINT "%4: ADD TO TEXT."
1446 PRINT "%X: DELETE THIS LINE."
1447 PRINT ,,"%5: PREVIOUS LINE. %8: NEXT LINE."
1449 PRINT "%(%O%T%H%E%R%) RETURN TO MASTER MENU."
1460 PRINT AT T,O;"CHOOSE AN OPTION."
1470 PAUSE 4E4
1480 LET Q$=INKEY$
1510 LET A=8
1520 GOSUB 30
1525 IF Q$="1" THEN GOTO 1540
1530 IF Q$="2" THEN GOTO 1600
1532 IF Q$="3" THEN GOTO 1650
1533 IF Q$="4" THEN GOTO 1800
1534 IF Q$="X" THEN GOTO 1700
1535 IF Q$<>"5" AND Q$<>"8" THEN GOTO W
1536 IF Q$="8" THEN LET N=N+W
1537 IF Q$="5" THEN LET N=N-W
1538 IF N<W OR N>NN THEN GOTO W
1539 GOTO 1300
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET Z=C+Z
1570 LET H=INT (Z/Q)
1580 LET D$(N,3)=CHR$ (Z-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1600 PRINT AT T,O;"NEW RE-ORDER LEVEL?"
1610 INPUT Z
1620 LET H=INT (Z/Q)
1630 LET D$(N,5)=CHR$ (Z-Q*H)
1640 LET D$(N,6)=CHR$ H
1645 GOTO 1300
1650 PRINT AT T,O;"NEW UNIT VALUE ($)?"
1655 INPUT Z
1660 LET Z=Z*FC
1665 LET H=INT (Z/Q)
1670 LET D$(N,7)=CHR$ (Z-Q*H)
1671 LET Z=H
1672 LET H=INT (Z/Q)
1673 LET D$(N,8)=CHR$ (Z-Q*H)
1675 LET D$(N,9)=CHR$ H
1695 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
1800 PRINT AT T,O;"ENTER NEW TEXT."
1810 INPUT Q$
1820 LET Q$=Q$+D$(N,NE+W TO )
1830 LET D$(N,NE+W TO )=Q$
1840 GOTO 1300
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<O OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
2500 CLS
2510 PRINT "LIST IS FULL (";MAX;"LINES)."
2520 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
2530 PAUSE 4E4
2540 GOTO W
3000 CLS
3010 PRINT "THE LIST CAN INCLUDE:",,,
3020 PRINT "%1: SUPPLIER AND TYPE."
3030 PRINT "%2: RE-ORDER LEVEL."
3035 PRINT "%3: TEXT."
3036 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3040 PRINT AT T,O;"CHOOSE AN OPTION."
3050 PAUSE 4E4
3060 LET L=CODE INKEY$-29
3070 IF L<O OR L>W+W THEN GOTO W
3100 CLS
3110 PRINT " PRINT LIST :",,,,
3120 PRINT "%1: OF ALL LINES."
3130 PRINT "%2: FOR A SUPPLIER."
3140 PRINT "%3: FOR A GIVEN TYPE OF LINE."
3150 PRINT "%4: OF UNDERSTOCKED LINES."
3155 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3160 PRINT AT T,O;"CHOOSE AN OPTION."
3170 PAUSE 4E4
3180 LET X=CODE INKEY$-28
3181 IF X<=O OR X>4 THEN GOTO W
3182 CLS
3183 PRINT T$
3184 LPRINT T$
3185 LET Q$="LINE ST MIN VAL."
3186 IF NOT L THEN LET Q$(19 TO 24)="SU TY "
3187 IF L=W+W THEN LET Q$=""
3188 PRINT ,,Q$
3189 LPRINT ,,Q$,,,
3190 LET V=O
3200 LET U=W
3201 LET Y=NN
3204 PRINT AT T,O;"START NO.? (OPTIONAL)"
3205 INPUT Q$
3206 IF Q$<>"" THEN LET U=VAL Q$
3208 PRINT AT T,O;"END "
3209 INPUT Q$
3210 IF Q$<>"" THEN LET Y=VAL Q$
3213 PRINT AT T,O;O$
3214 PRINT AT 3,O
3215 IF X=2 THEN GOTO 3300
3216 IF X=3 THEN GOTO 3350
3217 IF X=4 THEN GOTO 3500
3218 FOR N=U TO Y
3219 GOSUB 40
3220 GOSUB 46
3225 LET V=V+C*E/FC
3230 NEXT N
3240 PRINT
3241 LPRINT
3242 LET Q$="TOTAL VALUE = $"+STR$ V
3243 PRINT Q$
3245 LPRINT Q$
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
3310 LET Q$="SUPPLIER"
3320 LET Z=W
3330 GOTO 3400
3350 LET Q$="TYPE"
3360 LET Z=2
3400 PRINT AT T,O;Q$;" CODE?"
3402 INPUT X
3404 PRINT AT T,O;O$
3406 PRINT AT W,O;Q$;" ";X
3407 LPRINT Q$;" ";X,,,,
3408 PRINT AT 3,O
3420 FOR N=U TO Y
3430 IF CODE D$(N,Z)<>X THEN GOTO 3460
3440 GOSUB 40
3450 GOSUB 46
3455 LET V=V+C*E/FC
3460 NEXT N
3470 GOTO 3240
3500 CLS
3501 LET Q$="UNDERSTOCKED LINES."
3502 PRINT Q$,,,,,
3503 LPRINT Q$,,,,,
3510 FOR N=U TO Y
3520 GOSUB 43
3530 IF C>=D THEN GOTO 3560
3540 GOSUB 40
3550 GOSUB 46
3555 LET V=V+C*E/FC
3560 NEXT N
3570 GOTO 3240
7000 CLS
7001 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I% % % "
7002 POKE 22612,(PEEK 22612)+3
7003 FOR I=22613 TO 22621
7004 POKE I,0
7005 NEXT I
7007 PRINT AT T,O;"NAME LENGTH (CHARACTERS)?"
7008 INPUT N
7009 POKE 16557,N
7010 PRINT AT T,O;"TEXT"
7011 INPUT D
7012 POKE 16558,D
7013 LET M=INT ((PEEK (16386)-PEEK (16412)+Q*(PEEK (16387)-PEEK 16413)-2*(Q+N+D))/(9+N+D))
7014 POKE 16559,M-Q*INT (M/Q)
7015 POKE 16560,INT (M/Q)
7017 CLS
7018 CLEAR
7020 DIM D$(PEEK (16559)+256*PEEK 16560,9+PEEK (16557)+PEEK 16558)
7021 LET MAX=PEEK (16559)+256*PEEK 16560
7022 LET NL=PEEK 16557
7023 LET ND=PEEK 16558
7024 PRINT ,,,,"LIST WILL ACCOMODATE ";MAX;" LINES"
7025 LET FL=9+NL+ND
7026 LET NN=0
7027 LET O=NN
7028 LET T=21
7075 PRINT AT T,O;"ENTER TITLE FOR NEW LIST "
7080 INPUT T$
7086 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7099 LET R=16396
7170 LET FC=1000
7180 LET NS=10
7190 LET NE=NS+NL-W
7200 LET NF=NE+ND
7300 GOTO W
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\08\00\4A\52\46\52\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\1B\1B\1B\1B\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>030 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
90 IF NN>=MAX THEN GOTO 4000
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT T,O;"ENTER LINE NUMBER."
1020 INPUT X
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET Z=CODE D$(N,W)+Q*CODE D$(N,2)
1090 IF Z=X THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF Z<X THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET Z=CODE D$(HI,W)+Q*CODE D$(HI,2)
1203 IF X=Z THEN GOTO 1300
1205 IF X<CODE D$(LO,W)+Q*CODE D$(LO,2) THEN LET N=LO
1208 IF X>Z THEN LET N=HI+W
1210 CLS
1211 PRINT "LINE ";X;" IS NOT IN THE LIST, AND WILL BE ADDED."
1215 LET H=INT (X/Q)
1217 LET E$(W)=CHR$ (X-Q*H)
1218 LET E$(2)=CHR$ H
1220 PRINT AT T,O;"LINE ";X;" STOCK?"
1225 INPUT C
1230 LET H=INT (C/Q)
1235 LET E$(3)=CHR$ (C-Q*H)
1240 LET E$(4)=CHR$ H
1242 IF NOT NN THEN GOTO 1260
1244 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE ";X;TAB 28;N
1320 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
1390 PRINT ,,"STOCK=";C
1430 PRINT AT 8,O;"OPTIONS:",,,,"%1: ENTER STOCK CHANGE."
1450 PRINT "%2: DELETE THIS LINE."
1455 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
1460 PRINT AT T,O;"ENTER AN OPTION."
1470 PAUSE 4E4
1480 LET Z=CODE INKEY$-28
1490 IF Z<=O OR Z>2 THEN GOTO W
1500 IF NOT Z THEN GOTO W
1510 LET A=8
1520 GOSUB 30
1535 IF Z=2 THEN GOTO 1700
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET C=C+Z
1570 LET H=INT (C/Q)
1580 LET D$(N,3)=CHR$ (C-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<0 OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
3000 CLS
3010 PRINT AT T,O;"START NO.? (OPTIONAL)"
3020 LET A=W
3030 INPUT Q$
3040 IF Q$<>"" THEN LET A=VAL Q$
3050 PRINT AT T,O;"END "
3060 LET B=NN
3065 INPUT Q$
3070 IF Q$<>"" THEN LET B=VAL Q$
3074 PRINT AT T,O;O$
3080 PRINT AT T,O;"HEADING?"
3090 INPUT Q$
3095 LPRINT T$
3100 CLS
3110 LPRINT ,,Q$
3120 LPRINT
3190 LPRINT "LINE","STOCK"
3200 FOR N=A TO B
3220 PRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3221 LPRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3230 NEXT N
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
4000 CLS
4010 PRINT T$
4020 PRINT "FILE ALREADY CONTAINS ";NN,"LINES - NO MORE ALLOWED."
4030 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
4040 PAUSE 4E4
4050 GOTO W
7000 CLS
7002 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I%I% % % "
7004 POKE 19709,(PEEK 19709)+3
7005 FOR I=19710 TO 19719
7006 POKE I,0
7008 NEXT I
7017 CLEAR
7018 DIM D$(62*(PEEK (16389)-89),4)
7019 LET MAX=62*(PEEK (16389)-89)
7020 LET T=21
7030 LET O=0
7040 PRINT ,,"LIST OF ";MAX;" LINES IN ";INT (.25*PEEK (16389)-15.3);"K."
7075 PRINT AT T,O;"ENTER TITLE FOR LIST "
7080 INPUT T$
7081 LET N=0
7084 LET FL=4
7090 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7098 LET NN=O
7099 LET R=16396
7300 GOTO W
People
No people associated with this content.
Skip to content
Inventory Control
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- STOCK1.z81 is an EightyOne emulator snapshot of the first program.
- STOCK1.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK1E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK1.b81 is an EightyOne emulator text listing of the first program.
- STOCK2.z81 is an EightyOne emulator snapshot of the second program.
- STOCK2.wav is the file directly from the tape with fades and dropouts corrected.
- STOCK2E.wav has been edited to remove noise and provide more of a square wave signal.
- STOCK2.b81 is an EightyOne emulator text listing of the second program.
Content
Source Code
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\1D\00\42\5F\25\5F\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\05\05\F2\FF\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>232 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
40 LET A=CODE D$(N,W)
41 LET B=CODE D$(N,2)
42 LET E=CODE D$(N,7)+Q*(CODE D$(N,8)+Q*CODE D$(N,9))
43 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
44 LET D=CODE D$(N,5)+Q*CODE D$(N,6)
45 RETURN
46 IF L=W+W THEN GOTO 60
50 PRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
51 LPRINT D$(N,NS TO NE);TAB 13;C;TAB 18;
52 IF L THEN PRINT TAB 19;D;
53 IF L THEN LPRINT TAB 19;D;
54 IF NOT L THEN PRINT A;TAB T;B;
55 IF NOT L THEN LPRINT A;TAB T;B;
56 PRINT TAB 26;E/FC
57 LPRINT TAB 26;E/FC
58 RETURN
60 LET Q$=D$(N,NS TO NE)+" "+D$(N,NE+W TO )+" "+STR$ (E/FC)
61 PRINT Q$
62 LPRINT Q$
63 RETURN
90 IF NN>=MAX THEN GOTO 2500
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT 20,O;"ENTER LINE TO SEEK (UP TO ";NL,"CHARACTERS), OR % %E%N%T%E%R% ."
1020 INPUT Q$
1030 IF Q$="" THEN GOTO W
1031 IF LEN Q$>NL THEN LET Q$=Q$(W TO NL)
1040 LET I=LEN Q$
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET N$=D$(N,NS TO NS+I-W)
1090 IF N$=Q$ THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF N$<Q$ THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET N$=D$(HI,NS TO NS+I-W)
1203 IF N$=Q$ THEN GOTO 1300
1205 IF Q$<D$(LO,NS TO NS+I-W) THEN LET N=LO
1208 IF Q$>N$ THEN LET N=HI+W
1210 CLS
1211 PRINT "%Y=%R%E%T%U%R%N TO MASTER MENU.",,,"%(%O%T%H%E%R%): ENTER NEW LINE """;Q$;""""
1212 PRINT AT T,O;"CHOOSE AN OPTION."
1213 PAUSE 4E4
1214 IF INKEY$="Y" THEN GOTO W
1215 CLS
1217 DIM E$(FL)
1219 LET E$(NS TO )=Q$
1220 PRINT AT T,O;"UNIT PRICE ($)?"
1221 INPUT Z
1222 LET Z=FC*Z
1223 LET H=INT (Z/Q)
1224 LET E$(7)=CHR$ (Z-Q*H)
1225 LET Z=H
1226 LET H=INT (Z/Q)
1227 LET E$(8)=CHR$ (Z-Q*H)
1228 LET E$(9)=CHR$ H
1230 PRINT AT T,O;"SUPPLIER CODE? (OPTIONAL)"
1231 INPUT Q$
1232 IF Q$<>"" THEN LET E$(W)=CHR$ VAL Q$
1233 PRINT AT T,O;"TYPE CODE? "
1234 INPUT Q$
1235 IF Q$<>"" THEN LET E$(2)=CHR$ VAL Q$
1237 PRINT AT T,O;"STOCK LEVEL? "
1238 INPUT Q$
1239 IF Q$="" THEN GOTO 1238
1241 LET Z=VAL Q$
1242 LET H=INT (Z/Q)
1244 LET E$(3)=CHR$ (Z-Q*H)
1245 LET E$(4)=CHR$ H
1250 PRINT AT T,O;"RE-ORDER LEVEL? (OPTIONAL)"
1251 INPUT Q$
1252 LET Z=O
1253 IF Q$<>"" THEN LET Z=VAL Q$
1254 LET H=INT (Z/Q)
1255 LET E$(5)=CHR$ (Z-Q*H)
1256 LET E$(06)=CHR$ H
1257 IF NOT NN THEN GOTO 1260
1258 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE: ";D$(N,NS TO NE);TAB 28;N
1320 PRINT D$(N,NE+W TO )
1330 GOSUB 40
1370 PRINT ,,"SUPPLIER: ";A
1372 PRINT "TYPE: ";B
1374 PRINT "UNIT VALUE: ";E/FC
1376 PRINT "RE-ORDER LEVEL = ";D
1380 PRINT " %S%T%O%C%K% %= ";C;
1390 IF C<D THEN PRINT " %(%L%O%W%)";
1400 PRINT ,"VALUE=$";C*E/FC
1420 PRINT ,,"OPTIONS:",,,,
1430 PRINT "%1: ENTER STOCK CHANGE."
1440 PRINT "%2: ALTER RE-ORDER LEVEL."
1442 PRINT "%3: ALTER UNIT VALUE."
1445 PRINT "%4: ADD TO TEXT."
1446 PRINT "%X: DELETE THIS LINE."
1447 PRINT ,,"%5: PREVIOUS LINE. %8: NEXT LINE."
1449 PRINT "%(%O%T%H%E%R%) RETURN TO MASTER MENU."
1460 PRINT AT T,O;"CHOOSE AN OPTION."
1470 PAUSE 4E4
1480 LET Q$=INKEY$
1510 LET A=8
1520 GOSUB 30
1525 IF Q$="1" THEN GOTO 1540
1530 IF Q$="2" THEN GOTO 1600
1532 IF Q$="3" THEN GOTO 1650
1533 IF Q$="4" THEN GOTO 1800
1534 IF Q$="X" THEN GOTO 1700
1535 IF Q$<>"5" AND Q$<>"8" THEN GOTO W
1536 IF Q$="8" THEN LET N=N+W
1537 IF Q$="5" THEN LET N=N-W
1538 IF N<W OR N>NN THEN GOTO W
1539 GOTO 1300
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET Z=C+Z
1570 LET H=INT (Z/Q)
1580 LET D$(N,3)=CHR$ (Z-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1600 PRINT AT T,O;"NEW RE-ORDER LEVEL?"
1610 INPUT Z
1620 LET H=INT (Z/Q)
1630 LET D$(N,5)=CHR$ (Z-Q*H)
1640 LET D$(N,6)=CHR$ H
1645 GOTO 1300
1650 PRINT AT T,O;"NEW UNIT VALUE ($)?"
1655 INPUT Z
1660 LET Z=Z*FC
1665 LET H=INT (Z/Q)
1670 LET D$(N,7)=CHR$ (Z-Q*H)
1671 LET Z=H
1672 LET H=INT (Z/Q)
1673 LET D$(N,8)=CHR$ (Z-Q*H)
1675 LET D$(N,9)=CHR$ H
1695 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
1800 PRINT AT T,O;"ENTER NEW TEXT."
1810 INPUT Q$
1820 LET Q$=Q$+D$(N,NE+W TO )
1830 LET D$(N,NE+W TO )=Q$
1840 GOTO 1300
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<O OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
2500 CLS
2510 PRINT "LIST IS FULL (";MAX;"LINES)."
2520 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
2530 PAUSE 4E4
2540 GOTO W
3000 CLS
3010 PRINT "THE LIST CAN INCLUDE:",,,
3020 PRINT "%1: SUPPLIER AND TYPE."
3030 PRINT "%2: RE-ORDER LEVEL."
3035 PRINT "%3: TEXT."
3036 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3040 PRINT AT T,O;"CHOOSE AN OPTION."
3050 PAUSE 4E4
3060 LET L=CODE INKEY$-29
3070 IF L<O OR L>W+W THEN GOTO W
3100 CLS
3110 PRINT " PRINT LIST :",,,,
3120 PRINT "%1: OF ALL LINES."
3130 PRINT "%2: FOR A SUPPLIER."
3140 PRINT "%3: FOR A GIVEN TYPE OF LINE."
3150 PRINT "%4: OF UNDERSTOCKED LINES."
3155 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
3160 PRINT AT T,O;"CHOOSE AN OPTION."
3170 PAUSE 4E4
3180 LET X=CODE INKEY$-28
3181 IF X<=O OR X>4 THEN GOTO W
3182 CLS
3183 PRINT T$
3184 LPRINT T$
3185 LET Q$="LINE ST MIN VAL."
3186 IF NOT L THEN LET Q$(19 TO 24)="SU TY "
3187 IF L=W+W THEN LET Q$=""
3188 PRINT ,,Q$
3189 LPRINT ,,Q$,,,
3190 LET V=O
3200 LET U=W
3201 LET Y=NN
3204 PRINT AT T,O;"START NO.? (OPTIONAL)"
3205 INPUT Q$
3206 IF Q$<>"" THEN LET U=VAL Q$
3208 PRINT AT T,O;"END "
3209 INPUT Q$
3210 IF Q$<>"" THEN LET Y=VAL Q$
3213 PRINT AT T,O;O$
3214 PRINT AT 3,O
3215 IF X=2 THEN GOTO 3300
3216 IF X=3 THEN GOTO 3350
3217 IF X=4 THEN GOTO 3500
3218 FOR N=U TO Y
3219 GOSUB 40
3220 GOSUB 46
3225 LET V=V+C*E/FC
3230 NEXT N
3240 PRINT
3241 LPRINT
3242 LET Q$="TOTAL VALUE = $"+STR$ V
3243 PRINT Q$
3245 LPRINT Q$
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
3310 LET Q$="SUPPLIER"
3320 LET Z=W
3330 GOTO 3400
3350 LET Q$="TYPE"
3360 LET Z=2
3400 PRINT AT T,O;Q$;" CODE?"
3402 INPUT X
3404 PRINT AT T,O;O$
3406 PRINT AT W,O;Q$;" ";X
3407 LPRINT Q$;" ";X,,,,
3408 PRINT AT 3,O
3420 FOR N=U TO Y
3430 IF CODE D$(N,Z)<>X THEN GOTO 3460
3440 GOSUB 40
3450 GOSUB 46
3455 LET V=V+C*E/FC
3460 NEXT N
3470 GOTO 3240
3500 CLS
3501 LET Q$="UNDERSTOCKED LINES."
3502 PRINT Q$,,,,,
3503 LPRINT Q$,,,,,
3510 FOR N=U TO Y
3520 GOSUB 43
3530 IF C>=D THEN GOTO 3560
3540 GOSUB 40
3550 GOSUB 46
3555 LET V=V+C*E/FC
3560 NEXT N
3570 GOTO 3240
7000 CLS
7001 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I% % % "
7002 POKE 22612,(PEEK 22612)+3
7003 FOR I=22613 TO 22621
7004 POKE I,0
7005 NEXT I
7007 PRINT AT T,O;"NAME LENGTH (CHARACTERS)?"
7008 INPUT N
7009 POKE 16557,N
7010 PRINT AT T,O;"TEXT"
7011 INPUT D
7012 POKE 16558,D
7013 LET M=INT ((PEEK (16386)-PEEK (16412)+Q*(PEEK (16387)-PEEK 16413)-2*(Q+N+D))/(9+N+D))
7014 POKE 16559,M-Q*INT (M/Q)
7015 POKE 16560,INT (M/Q)
7017 CLS
7018 CLEAR
7020 DIM D$(PEEK (16559)+256*PEEK 16560,9+PEEK (16557)+PEEK 16558)
7021 LET MAX=PEEK (16559)+256*PEEK 16560
7022 LET NL=PEEK 16557
7023 LET ND=PEEK 16558
7024 PRINT ,,,,"LIST WILL ACCOMODATE ";MAX;" LINES"
7025 LET FL=9+NL+ND
7026 LET NN=0
7027 LET O=NN
7028 LET T=21
7075 PRINT AT T,O;"ENTER TITLE FOR NEW LIST "
7080 INPUT T$
7086 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7099 LET R=16396
7170 LET FC=1000
7180 LET NS=10
7190 LET NE=NS+NL-W
7200 LET NF=NE+ND
7300 GOTO W
0 REM \75\76\77\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B8\C9\1B\1B\1B\1B\08\00\4A\52\46\52\ED\4B\98\40\ED\5B\9A\40\ED\6B\9C\40\ED\B0\C9\1B\1B\1B\1B\1B\1B
1 REM STOCK CONTROL. (C) HILDERBAY LTD 1981
2 CLS
0 REM \75\76\77\10\28\11\00\2D\2E\31\29\2A\37\27\26\3E\00\31\39\29\00\1D\25\24\1D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>030 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
90 IF NN>=MAX THEN GOTO 4000
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
1000 CLS
1010 PRINT AT T,O;"ENTER LINE NUMBER."
1020 INPUT X
1045 IF NOT NN THEN GOTO 1210
1050 LET LO=W
1060 LET HI=NN
1070 LET N=INT (.50001*(LO+HI))
1080 LET Z=CODE D$(N,W)+Q*CODE D$(N,2)
1090 IF Z=X THEN GOTO 1300
1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
1100 IF Z<X THEN GOTO 1150
1110 LET HI=N
1120 GOTO 1070
1150 LET LO=N
1160 GOTO 1070
1200 CLS
1201 LET N=HI
1202 LET Z=CODE D$(HI,W)+Q*CODE D$(HI,2)
1203 IF X=Z THEN GOTO 1300
1205 IF X<CODE D$(LO,W)+Q*CODE D$(LO,2) THEN LET N=LO
1208 IF X>Z THEN LET N=HI+W
1210 CLS
1211 PRINT "LINE ";X;" IS NOT IN THE LIST, AND WILL BE ADDED."
1215 LET H=INT (X/Q)
1217 LET E$(W)=CHR$ (X-Q*H)
1218 LET E$(2)=CHR$ H
1220 PRINT AT T,O;"LINE ";X;" STOCK?"
1225 INPUT C
1230 LET H=INT (C/Q)
1235 LET E$(3)=CHR$ (C-Q*H)
1240 LET E$(4)=CHR$ H
1242 IF NOT NN THEN GOTO 1260
1244 GOTO 90
1260 LET D$(W)=E$
1265 LET NN=W
1270 LET N=W
1300 CLS
1310 PRINT "LINE ";X;TAB 28;N
1320 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
1390 PRINT ,,"STOCK=";C
1430 PRINT AT 8,O;"OPTIONS:",,,,"%1: ENTER STOCK CHANGE."
1450 PRINT "%2: DELETE THIS LINE."
1455 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
1460 PRINT AT T,O;"ENTER AN OPTION."
1470 PAUSE 4E4
1480 LET Z=CODE INKEY$-28
1490 IF Z<=O OR Z>2 THEN GOTO W
1500 IF NOT Z THEN GOTO W
1510 LET A=8
1520 GOSUB 30
1535 IF Z=2 THEN GOTO 1700
1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
1550 INPUT Z
1560 LET C=C+Z
1570 LET H=INT (C/Q)
1580 LET D$(N,3)=CHR$ (C-Q*H)
1590 LET D$(N,4)=CHR$ H
1595 GOTO 1300
1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
1710 INPUT Q$
1720 IF Q$<>"XXX" THEN GOTO W
1730 GOTO 200
2000 PRINT AT 6,O;"OPTIONS:",,,,
2010 PRINT "%1: FIND/ADD/DELETE A LINE."
2040 PRINT "%2: PRINT STOCK LIST."
2090 PRINT ,,"%0: SAVE DATA ON TAPE."
2100 PRINT AT T-W,O;O$;O$
2110 PRINT AT T,O;"CHOOSE AN OPTION."
2120 PAUSE 4E4
2130 LET X=CODE INKEY$-28
2140 IF X<0 OR X>3 THEN GOTO 2110
2150 IF X=O THEN GOTO 600
2160 IF X=W THEN GOTO 1000
2170 IF X=2 THEN GOTO 3000
2200 GOTO W
3000 CLS
3010 PRINT AT T,O;"START NO.? (OPTIONAL)"
3020 LET A=W
3030 INPUT Q$
3040 IF Q$<>"" THEN LET A=VAL Q$
3050 PRINT AT T,O;"END "
3060 LET B=NN
3065 INPUT Q$
3070 IF Q$<>"" THEN LET B=VAL Q$
3074 PRINT AT T,O;O$
3080 PRINT AT T,O;"HEADING?"
3090 INPUT Q$
3095 LPRINT T$
3100 CLS
3110 LPRINT ,,Q$
3120 LPRINT
3190 LPRINT "LINE","STOCK"
3200 FOR N=A TO B
3220 PRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3221 LPRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
3230 NEXT N
3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
3250 PAUSE 4E4
3290 GOTO O
4000 CLS
4010 PRINT T$
4020 PRINT "FILE ALREADY CONTAINS ";NN,"LINES - NO MORE ALLOWED."
4030 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
4040 PAUSE 4E4
4050 GOTO W
7000 CLS
7002 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I%I% % % "
7004 POKE 19709,(PEEK 19709)+3
7005 FOR I=19710 TO 19719
7006 POKE I,0
7008 NEXT I
7017 CLEAR
7018 DIM D$(62*(PEEK (16389)-89),4)
7019 LET MAX=62*(PEEK (16389)-89)
7020 LET T=21
7030 LET O=0
7040 PRINT ,,"LIST OF ";MAX;" LINES IN ";INT (.25*PEEK (16389)-15.3);"K."
7075 PRINT AT T,O;"ENTER TITLE FOR LIST "
7080 INPUT T$
7081 LET N=0
7084 LET FL=4
7090 DIM E$(FL)
7095 LET O$=" "
7096 LET Q=256
7097 LET W=1
7098 LET NN=O
7099 LET R=16396
7300 GOTO W
People
No people associated with this content.
itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"D itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58400 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.0"D
0 PRINT "% % % % % % % % % % %S%T%O%C%K% %C%O%N%T%R%O%L% % % % % % % % % %(%C%)% %H%I%L%D%E%R%B%A%Y% %1%9%8%1% % %0%1%-%4%8%5% %1%0%5%9% ",,,,
15 PRINT AT 20,0;"% % % %P%R%O%G%R%A%M% %H%A%S% %B%E%E%N% %C%O%R%R%U%P%T%E%D% % % %O%R% %D%A%T%A% %D%E%L%E%T%E%D%.% %L%O%A%D% %F%R%O%M% %T%A%P%E%."
16 IF PEEK R<>030 THEN STOP
17 PRINT AT 4,O;T$,,,,
29 GOTO 2000
30 FOR I=A TO T
32 PRINT AT I,O;O$
34 NEXT I
36 RETURN
90 IF NN>=MAX THEN GOTO 4000
91 IF N>NN THEN GOTO 130
92 LET AD=8+PEEK (16400)+Q*PEEK 16401
93 LET A=FL*(NN-N+W)
94 LET B=AD+FL*NN-W
96 LET C=AD+FL*(NN+W)-W
98 GOSUB 500
100 RAND USR 16517
130 LET D$(N)=E$
140 LET NN=NN+W
150 GOTO 1300
200 LET AD=8+PEEK (16400)+Q*PEEK 16401
240 LET N=N-W
260 LET A=FL*(NN-N)
270 LET B=AD+FL*(N+W)
280 LET C=AD+(FL*N)
290 GOSUB 500
300 RAND USR 16542
310 LET NN=NN-W
350 GOTO O
500 POKE 16536,A-Q*INT (A/Q)
510 POKE 16537,INT (A/Q)
520 POKE 16538,C-Q*INT (C/Q)
530 POKE 16539,INT (C/Q)
540 POKE 16540,B-Q*INT (B/Q)
550 POKE 16541,INT (B/Q)
560 RETURN
600 CLS
610 PRINT "ENTER NAME FOR NEW TAPE FILE, START RECORDING, THEN % %E%N%T%E%R% ."
620 PRINT ,,"% %E%N%T%E%R% ONLY TO RETURN TO MENU."
630 INPUT Q$
640 IF Q$<>"" THEN SAVE Q$
650 GOTO O
\n1000 CLS
\n1010 PRINT AT T,O;"ENTER LINE NUMBER."
\n1020 INPUT X
\n1045 IF NOT NN THEN GOTO 1210
\n1050 LET LO=W
\n1060 LET HI=NN
\n1070 LET N=INT (.50001*(LO+HI))
\n1080 LET Z=CODE D$(N,W)+Q*CODE D$(N,2)
\n1090 IF Z=X THEN GOTO 1300
\n1095 IF HI=LO OR HI=LO+W THEN GOTO 1200
\n1100 IF Z<X THEN GOTO 1150
\n1110 LET HI=N
\n1120 GOTO 1070
\n1150 LET LO=N
\n1160 GOTO 1070
\n1200 CLS
\n1201 LET N=HI
\n1202 LET Z=CODE D$(HI,W)+Q*CODE D$(HI,2)
\n1203 IF X=Z THEN GOTO 1300
\n1205 IF X<CODE D$(LO,W)+Q*CODE D$(LO,2) THEN LET N=LO
\n1208 IF X>Z THEN LET N=HI+W
\n1210 CLS
\n1211 PRINT "LINE ";X;" IS NOT IN THE LIST, AND WILL BE ADDED."
\n1215 LET H=INT (X/Q)
\n1217 LET E$(W)=CHR$ (X-Q*H)
\n1218 LET E$(2)=CHR$ H
\n1220 PRINT AT T,O;"LINE ";X;" STOCK?"
\n1225 INPUT C
\n1230 LET H=INT (C/Q)
\n1235 LET E$(3)=CHR$ (C-Q*H)
\n1240 LET E$(4)=CHR$ H
\n1242 IF NOT NN THEN GOTO 1260
\n1244 GOTO 90
\n1260 LET D$(W)=E$
\n1265 LET NN=W
\n1270 LET N=W
\n1300 CLS
\n1310 PRINT "LINE ";X;TAB 28;N
\n1320 LET C=CODE D$(N,3)+Q*CODE D$(N,4)
\n1390 PRINT ,,"STOCK=";C
\n1430 PRINT AT 8,O;"OPTIONS:",,,,"%1: ENTER STOCK CHANGE."
\n1450 PRINT "%2: DELETE THIS LINE."
\n1455 PRINT ,,"%(%O%T%H%E%R%): RETURN TO MASTER MENU."
\n1460 PRINT AT T,O;"ENTER AN OPTION."
\n1470 PAUSE 4E4
\n1480 LET Z=CODE INKEY$-28
\n1490 IF Z<=O OR Z>2 THEN GOTO W
\n1500 IF NOT Z THEN GOTO W
\n1510 LET A=8
\n1520 GOSUB 30
\n1535 IF Z=2 THEN GOTO 1700
\n1540 PRINT AT T,O;"CHANGE? (- TO REDUCE STOCK)"
\n1550 INPUT Z
\n1560 LET C=C+Z
\n1570 LET H=INT (C/Q)
\n1580 LET D$(N,3)=CHR$ (C-Q*H)
\n1590 LET D$(N,4)=CHR$ H
\n1595 GOTO 1300
\n1700 PRINT AT T,O;"ENTER ""XXX % %E%N%T%E%R% "" TO DELETE."
\n1710 INPUT Q$
\n1720 IF Q$<>"XXX" THEN GOTO W
\n1730 GOTO 200
\n2000 PRINT AT 6,O;"OPTIONS:",,,,
\n2010 PRINT "%1: FIND/ADD/DELETE A LINE."
\n2040 PRINT "%2: PRINT STOCK LIST."
\n2090 PRINT ,,"%0: SAVE DATA ON TAPE."
\n2100 PRINT AT T-W,O;O$;O$
\n2110 PRINT AT T,O;"CHOOSE AN OPTION."
\n2120 PAUSE 4E4
\n2130 LET X=CODE INKEY$-28
\n2140 IF X<0 OR X>3 THEN GOTO 2110
\n2150 IF X=O THEN GOTO 600
\n2160 IF X=W THEN GOTO 1000
\n2170 IF X=2 THEN GOTO 3000
\n2200 GOTO W
\n3000 CLS
\n3010 PRINT AT T,O;"START NO.? (OPTIONAL)"
\n3020 LET A=W
\n3030 INPUT Q$
\n3040 IF Q$<>"" THEN LET A=VAL Q$
\n3050 PRINT AT T,O;"END "
\n3060 LET B=NN
\n3065 INPUT Q$
\n3070 IF Q$<>"" THEN LET B=VAL Q$
\n3074 PRINT AT T,O;O$
\n3080 PRINT AT T,O;"HEADING?"
\n3090 INPUT Q$
\n3095 LPRINT T$
\n3100 CLS
\n3110 LPRINT ,,Q$
\n3120 LPRINT
\n3190 LPRINT "LINE","STOCK"
\n3200 FOR N=A TO B
\n3220 PRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
\n3221 LPRINT CODE D$(N,W)+Q*CODE D$(N,2),CODE D$(N,3)+Q*CODE D$(N,4)
\n3230 NEXT N
\n3248 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
\n3250 PAUSE 4E4
\n3290 GOTO O
\n4000 CLS
\n4010 PRINT T$
\n4020 PRINT "FILE ALREADY CONTAINS ";NN,"LINES - NO MORE ALLOWED."
\n4030 PRINT AT T,O;"PRESS A KEY TO CONTINUE."
\n4040 PAUSE 4E4
\n4050 GOTO W
\n7000 CLS
\n7002 PRINT "% % % %H%I%L%D%E%R%B%A%Y% %S%T%O%C%K% %C%O%N%T%R%O%L% %I%I% % % "
\n7004 POKE 19709,(PEEK 19709)+3
\n7005 FOR I=19710 TO 19719
\n7006 POKE I,0
\n7008 NEXT I
\n7017 CLEAR
\n7018 DIM D$(62*(PEEK (16389)-89),4)
\n7019 LET MAX=62*(PEEK (16389)-89)
\n7020 LET T=21
\n7030 LET O=0
\n7040 PRINT ,,"LIST OF ";MAX;" LINES IN ";INT (.25*PEEK (16389)-15.3);"K."
\n7075 PRINT AT T,O;"ENTER TITLE FOR LIST "
\n7080 INPUT T$
\n7081 LET N=0
\n7084 LET FL=4
\n7090 DIM E$(FL)
\n7095 LET O$=" "
\n7096 LET Q=256
\n7097 LET W=1
\n7098 LET NN=O
\n7099 LET R=16396
\n7300 GOTO W