Inventory Control

Date: 1982
Type: Cassette
Platform(s): TS 1000

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

Appears On

Related Products

Two programs to track inventory. Stock I: Keeps track of 400 line items, with product names and descriptions, unit prices,...

Related Articles

Related Content

Image Gallery

Inventory Control

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



Inventory Control

Date: 1982
Type: Cassette
Platform(s): TS 1000

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

Appears On

Related Products

Two programs to track inventory. Stock I: Keeps track of 400 line items, with product names and descriptions, unit prices,...

Related Articles

Related Content

Image Gallery

Inventory Control

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.

Scroll to Top
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

Inventory Control

Date: 1982
Type: Cassette
Platform(s): TS 1000

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

Appears On

Related Products

Two programs to track inventory. Stock I: Keeps track of 400 line items, with product names and descriptions, unit prices,...

Related Articles

Related Content

Image Gallery

Inventory Control

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.

Scroll to Top

Inventory Control

Date: 1982
Type: Cassette
Platform(s): TS 1000

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

Appears On

Related Products

Two programs to track inventory. Stock I: Keeps track of 400 line items, with product names and descriptions, unit prices,...

Related Articles

Related Content

Image Gallery

Inventory Control

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.

Scroll to Top
D

Inventory Control

Date: 1982
Type: Cassette
Platform(s): TS 1000

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

Appears On

Related Products

Two programs to track inventory. Stock I: Keeps track of 400 line items, with product names and descriptions, unit prices,...

Related Articles

Related Content

Image Gallery

Inventory Control

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.

Scroll to Top
E

Inventory Control

Date: 1982
Type: Cassette
Platform(s): TS 1000

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

Appears On

Related Products

Two programs to track inventory. Stock I: Keeps track of 400 line items, with product names and descriptions, unit prices,...

Related Articles

Related Content

Image Gallery

Inventory Control

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.

Scroll to Top
AE

Inventory Control

Date: 1982
Type: Cassette
Platform(s): TS 1000

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

Appears On

Related Products

Two programs to track inventory. Stock I: Keeps track of 400 line items, with product names and descriptions, unit prices,...

Related Articles

Related Content

Image Gallery

Inventory Control

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.

Scroll to Top

Inventory Control

Date: 1982
Type: Cassette
Platform(s): TS 1000

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

Appears On

Related Products

Two programs to track inventory. Stock I: Keeps track of 400 line items, with product names and descriptions, unit prices,...

Related Articles

Related Content

Image Gallery

Inventory Control

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.

Scroll to Top
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

Inventory Control

Date: 1982
Type: Cassette
Platform(s): TS 1000

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

Appears On

Related Products

Two programs to track inventory. Stock I: Keeps track of 400 line items, with product names and descriptions, unit prices,...

Related Articles

Related Content

Image Gallery

Inventory Control

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.

Scroll to Top
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

Inventory Control

Date: 1982
Type: Cassette
Platform(s): TS 1000

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

Appears On

Related Products

Two programs to track inventory. Stock I: Keeps track of 400 line items, with product names and descriptions, unit prices,...

Related Articles

Related Content

Image Gallery

Inventory Control

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.

Scroll to Top

Inventory Control

Date: 1982
Type: Cassette
Platform(s): TS 1000

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

Appears On

Related Products

Two programs to track inventory. Stock I: Keeps track of 400 line items, with product names and descriptions, unit prices,...

Related Articles

Related Content

Image Gallery

Inventory Control

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.

Scroll to Top
D

Inventory Control

Date: 1982
Type: Cassette
Platform(s): TS 1000

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

Appears On

Related Products

Two programs to track inventory. Stock I: Keeps track of 400 line items, with product names and descriptions, unit prices,...

Related Articles

Related Content

Image Gallery

Inventory Control

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.

Scroll to Top
E

Inventory Control

Date: 1982
Type: Cassette
Platform(s): TS 1000

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

Appears On

Related Products

Two programs to track inventory. Stock I: Keeps track of 400 line items, with product names and descriptions, unit prices,...

Related Articles

Related Content

Image Gallery

Inventory Control

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.

Scroll to Top
AE

Inventory Control

Date: 1982
Type: Cassette
Platform(s): TS 1000

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

Appears On

Related Products

Two programs to track inventory. Stock I: Keeps track of 400 line items, with product names and descriptions, unit prices,...

Related Articles

Related Content

Image Gallery

Inventory Control

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.

Scroll to Top

Inventory Control

Date: 1982
Type: Cassette
Platform(s): TS 1000

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

Appears On

Related Products

Two programs to track inventory. Stock I: Keeps track of 400 line items, with product names and descriptions, unit prices,...

Related Articles

Related Content

Image Gallery

Inventory Control

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.

Scroll to Top
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

People

No people associated with this content.

Scroll to Top