Videotex and Video 3-D (S.M.U.G. Video Digitizer)

Products: Video 3-D, VideoTex
Developer(s): John McMichael
Date: 1989
Type: Diskette
Platform(s): TS 2068
Tags: Video

This is the program disk for the S.M.U.G. black-and-white video digitizer board, in Larken (LKDOS) format. It needs a TS2068 with the Larken disk interface, and the digitizer board to capture images; it has not been converted for tape. Its menu runs three programs:

  • Eye By Night V1.0 (© S.M.U.G. 1989): the digitizer’s capture program, in a 1989 Larken build with a new graphic menu (image sync and threshold, single and multiple scans, view, clean, flip, invert, save and load, printing).
  • Videotex V1.0 (© John McMichael 1989): captures four black-and-white scans at different brightness thresholds into a 24K “master file” and shows them as a greyscale image, with a grey-level slider, invert, flip, filter, an overlay of a second image, and small or full-page printing on a dot-matrix printer.
  • Video 3-D V1.0 (© John McMichael 1989): turns a Videotex master file into a pseudo-3-D relief image, with a choice of depth, normal or inverted relief and optional colour.

The disk also holds a second, reworked set of the BASIC programs (the .BW files) and ANLYZR.BW, a “WIDJUP image capture analyzer” that plots a master file’s grey-level histogram. These look like William J. Pedersen’s working copies. S.M.U.G. sold Videotex and Video 3-D separately; the Okimate printing companion, VideoCopy, is not on this disk.

The download has the raw disk image, every file from the disk as a TAP, the digitizer’s three sample captures (JEFF01–03, 24K Videotex master files from a companion disk, which load into Videotex, Video 3-D or the analyzer without the digitizer hardware), and a README. The programs load their menu screens from disk each time they return to a menu, and Videotex swaps its code out to the RAMdisk to print, so a tape conversion was not attempted. The pictures here are the disk’s own title and menu screens.

Related Products

Generate 3-D images from grayscale images captured with the SMUG video digitizer. Normal and inverted effects, four selectable Z-axis depths.
Software to capture and edit grayscale images captured from VCR with the SMUG video digitizer.

Related Articles

A detailed technical walkthrough of using the SMUG black-and-white video digitizer board with the Burle TC-1501 camera, Videotex software, Art Studio, and Wordmaster/Typeliner to capture, retouch, and print video images on the TS-2068.
Review of the shader program that works with the SMUG image digitizer.

Related Content

Image Gallery

Source Code

   10 LET p=VAL "16": LET clen=VAL "64555": LET char=VAL "64526": LET bwld=VAL "64514": LET bwst=VAL "64502": LET copy=VAL "64496": LET glev=VAL "64475": LET pok6=VAL "64261": LET pok5=VAL "64189": LET pok4=VAL "64187": LET pict=VAL "64181": LET horf=VAL "64122": LET invt=VAL "64105": LET pok2=VAL "64064": LET pok3=VAL "64068": LET pok1=VAL "64056": LET cnvt=VAL "64032": LET cler=VAL "64013": LET brlv=VAL "63874": LET scan=VAL "63872": GO SUB VAL "3010"
   20 GO SUB VAL "1000": PRINT #VAL "4": LOAD "VIDTMM.C1"SCREEN$ 
   30 PRINT AT VAL "13",p; FLASH SGN PI;"::"; FLASH NOT PI
   40 IF INKEY$<>"" THEN GO TO VAL "40"
   50 GO SUB VAL "550": IF k$<>"B" THEN GO TO VAL "100"
   60 IF INKEY$<>"" THEN GO TO VAL "60"
   70 GO SUB VAL "1100": GO SUB VAL "580": LET n=NOT PI
   80 PRINT #NOT PI; PAPER VAL "7"; INK NOT PI;AT NOT PI,NOT PI;w$;AT SGN PI,NOT PI;"--------Adjust for SCAN ";SGN PI+n*INT PI;"-------": POKE brlv,VAL "4"+n*INT PI: RANDOMIZE USR scan: IF INKEY$="" THEN LET n=NOT n: GO TO VAL "80"
   90 GO TO VAL "20"
  100 IF k$<>"C" THEN GO TO VAL "200"
  110 LET f=NOT PI: CLS : PRINT #VAL "4": LOAD "VIDTCM.C1"SCREEN$ 
  120 IF INKEY$<>"" THEN GO TO VAL "120"
  130 GO SUB VAL "550": IF k$<>"F" AND k$<>"A" AND k$<>"P" THEN GO TO VAL "120"
  140 IF k$="F" THEN GO SUB VAL "3000": LET f=NOT f: PRINT AT VAL "19",VAL "16"; PAPER SGN PI; INK VAL "6";("ON/OFF" AND f=SGN PI)+("ON/OFF" AND f=NOT PI): GO SUB VAL "3010": GO TO VAL "120"
  150 GO SUB VAL "1100": RANDOMIZE USR cler: FOR n=SGN PI TO VAL "4": CLS : PRINT #NOT PI; PAPER VAL "7"; INK NOT PI;AT NOT PI,NOT PI;w$;AT SGN PI,NOT PI;("Press any key to initiate " AND k$="P")+("-------------      -------------" AND k$="A");AT SGN PI,VAL "13"+(VAL "13" AND k$="P");"SCAN ";n: GO SUB VAL "590"
  160 IF INKEY$<>"" THEN GO TO VAL "160"
  170 IF k$="P" THEN PAUSE NOT PI: BEEP VAL ".002",SGN PI
  180 RANDOMIZE USR scan: IF f THEN RANDOMIZE USR clen
  190 RANDOMIZE USR cnvt: NEXT n: GO TO VAL "20"
  200 IF k$<>"O" THEN GO TO VAL "350"
  210 LET n=VAL "4": GO SUB VAL "590": LET o=NOT PI
  220 CLS : PRINT #VAL "4": LOAD "VIDTOM.C1"SCREEN$ 
  225 GO SUB VAL "3000": PRINT AT VAL "9",VAL "6"; PAPER SGN PI; INK VAL "5";("TRANSPARENT/OPAQUE" AND NOT o)+("TRANSPARENT/OPAQUE" AND o): GO SUB VAL "3010"
  230 IF INKEY$<>"" THEN GO TO VAL "230"
  240 GO SUB VAL "550": IF k$="R" THEN GO TO VAL "20"
  250 IF k$="C" THEN GO SUB VAL "1100": PRINT #NOT PI; PAPER VAL "7"; INK NOT PI;AT NOT PI,NOT PI;w$;AT SGN PI,NOT PI;"-------Overlay image scan.------": RANDOMIZE USR scan: GO TO VAL "330"
  260 IF k$="L" THEN CLS : LET s=INT PI: GO SUB VAL "600": IF s<>VAL "4" THEN GO TO VAL "330"
  270 IF k$="E" THEN RANDOMIZE USR cler: PRINT AT VAL "20",VAL "6"; PAPER VAL "2"; INK VAL "6";" MASTER FILE ERASED ": PAUSE VAL "100": GO TO VAL "20"
  280 IF k$="O" THEN LET o=NOT o: GO TO VAL "225"
  290 IF k$<>"B" THEN GO TO VAL "220"
  300 GO SUB VAL "1100": GO SUB VAL "580"
  310 PRINT #NOT PI; PAPER VAL "7"; INK NOT PI;AT NOT PI,NOT PI;w$;AT SGN PI,NOT PI;"---Adjust overlay brightness.---": RANDOMIZE USR scan: IF INKEY$="" THEN GO TO VAL "310"
  320 GO SUB VAL "1000": GO TO VAL "220"
  330 IF o THEN RANDOMIZE USR invt
  340 RANDOMIZE USR cnvt: GO TO VAL "20"
  350 IF k$="S" THEN LET s=NOT PI: GO SUB VAL "600": GO TO VAL "20"
  360 IF k$="L" THEN LET s=SGN PI: GO SUB VAL "600": GO TO VAL "20"
  370 IF k$="V" THEN GO TO VAL "430"
  380 IF (k$="5" AND p=VAL "4") OR (k$="8" AND p=VAL "28") THEN BEEP VAL ".03",VAL "20": GO TO VAL "50"
  390 IF k$="5" OR k$="8" THEN PRINT AT VAL "13",p; PAPER VAL "7"; INK NOT PI;"''": LET p=p-VAL "2"+(VAL "4" AND k$="8"): PRINT AT VAL "13",p; FLASH SGN PI;"::"; FLASH NOT PI: LET glev=glev-INT PI+(VAL "6" AND k$="8"): GO TO VAL "50"
  410 IF k$="Q" THEN GO TO VAL "595"
  420 GO TO VAL "40"
  430 GO SUB VAL "1100": PRINT #NOT PI;AT NOT PI,VAL "23"; PAPER VAL "7"; INK NOT PI;"Greyscale";AT SGN PI,VAL "26"; INVERSE SGN PI;" ";CHR$ ((VAL "46"+p/VAL "2")+(VAL "39" AND p>VAL "22"));" ": POKE pok4,PEEK glev: POKE pok5,PEEK (glev+SGN PI): POKE pok6,PEEK (glev+VAL "2"): RANDOMIZE USR pict: GO TO VAL "445"
  440 BEEP VAL ".03",VAL "20"
  450 IF INKEY$<>"" THEN GO TO VAL "450"
  460 GO SUB VAL "550": IF k$="I" THEN RANDOMIZE USR invt: GO TO VAL "440"
  470 IF k$="H" THEN RANDOMIZE USR horf: GO TO VAL "440"
  480 IF k$="F" THEN RANDOMIZE USR clen: GO TO VAL "440"
  490 IF k$="M" OR k$="P" THEN RANDOMIZE USR bwst: GO SUB VAL "1000": GO SUB VAL "2000": PAUSE NOT PI: RANDOMIZE USR bwld
  491 IF k$="M" OR k$="P" THEN PRINT #VAL "4": GO TO VAL "4": PRINT #VAL "4": SAVE "CODE.C1"CODE VAL "64000",VAL "1536": PRINT #VAL "4": GO TO NOT PI: PRINT #VAL "4": LOAD "ZPRINT.C1"CODE VAL "64000"
  492 IF k$="M" THEN RANDOMIZE USR VAL "64006"
  494 IF k$="P" THEN RANDOMIZE USR VAL "64009"
  496 IF k$="P" OR k$="M" THEN LET d=NOT PI: GO SUB VAL "1000": GO SUB VAL "2010": PAUSE NOT PI: PRINT #VAL "4": GO TO VAL "4": PRINT #VAL "4": LOAD "CODE.C1"CODE VAL "64000": PRINT #VAL "4": GO TO NOT PI: GO TO VAL "20"
  500 IF k$="S" THEN RANDOMIZE USR bwst: LET s=VAL "2": GO SUB VAL "600": RANDOMIZE USR bwld
  510 IF k$="R" THEN GO TO VAL "20"
  520 IF (k$="5" AND p=VAL "4") OR (k$="8" AND p=VAL "28") THEN BEEP VAL ".03",VAL "20": GO TO VAL "460"
  530 IF k$="5" OR k$="8" THEN LET p=p-VAL "2"+(VAL "4" AND k$="8"): LET glev=glev-INT PI+(VAL "6" AND k$="8"): GO TO VAL "430"
  540 GO TO VAL "450"
  550 LET k$=INKEY$: IF k$="" THEN GO TO VAL "550"
  560 IF CODE k$>VAL "95" THEN LET k$=CHR$ (CODE k$-VAL "32")
  570 BEEP VAL ".002",SGN PI: RETURN 
  580 PRINT AT VAL "13",VAL "6";"any key to main menu": PAUSE VAL "110": RETURN 
  590 POKE brlv,n+INT PI: POKE pok1,INT PI+(n-SGN PI)*VAL "4": POKE pok2,VAL "48"+(n-SGN PI)*VAL "64": POKE pok3,VAL "51"+(n-SGN PI)*VAL "68": RETURN 
  595 CLS : GO SUB VAL "3000": PRINT #VAL "4": LOAD "MENU.B1"
  600 IF INKEY$<>"" THEN GO TO VAL "600"
  602 GO SUB VAL "1300": GO SUB VAL "4000": POKE VAL "23658",VAL "11"
  603 IF s=NOT PI OR s=VAL "2" THEN INPUT #NOT PI; PAPER SGN PI; INK VAL "5";AT NOT PI,NOT PI;"FILE SAVE NAME - 6 CHARS.";AT SGN PI,NOT PI;"NO EXTENTIONS -";AT SGN PI,VAL "20";n$: POKE VAL "23658",SGN PI
  604 IF s=SGN PI OR s=INT PI THEN INPUT #NOT PI; PAPER SGN PI; INK VAL "5";AT NOT PI,NOT PI;"FILE LOAD NAME - 6 CHARS.";AT SGN PI,NOT PI;"NO EXTENTIONS -";AT SGN PI,VAL "20";n$: POKE VAL "23658",SGN PI
  605 IF LEN n$<>VAL "6" THEN GO TO VAL "602"
  606 PRINT #NOT PI;AT NOT PI,NOT PI; PAPER SGN PI; INK VAL "5";"FILE NAME CORRECT";AT SGN PI,NOT PI;"   'Y' OR 'N'";TAB VAL "21"; PAPER SGN PI; INK VAL "2";"""";n$;
  607 IF s=NOT PI OR s=SGN PI THEN PRINT #NOT PI;".CM""": LET c$=".CM"
  608 IF s=VAL "2" OR s=INT PI THEN PRINT #NOT PI;".CF""": LET c$=".CF"
  609 IF INKEY$="n" THEN GO TO VAL "602"
  610 IF INKEY$="y" THEN GO TO VAL "618"
  612 GO TO VAL "609"
  618 PRINT #VAL "4": GO TO SGN PI: LET b$=n$+c$: POKE VAL "23728",VAL "100"
  620 IF s=NOT PI THEN GO SUB VAL "1400": PRINT #VAL "4": SAVE b$CODE VAL "38912",VAL "24576"
  630 IF s=SGN PI THEN GO SUB VAL "1500": PRINT #VAL "4": LOAD b$CODE VAL "38912"
  640 IF s=INT PI THEN GO SUB VAL "1500": PRINT #VAL "4": LOAD b$CODE VAL "16384"
  660 IF s=VAL "2" THEN RANDOMIZE USR bwld: PRINT #VAL "4": SAVE b$CODE VAL "32000",VAL "6912": RANDOMIZE USR bwld
  665 IF PEEK VAL "23728"=VAL "101" THEN PRINT AT VAL "12",VAL "7"; PAPER VAL "6"; INK VAL "2";" REENTER FILE NAME ": PAUSE VAL "200": GO TO VAL "600"
  670 PRINT #VAL "4": GO TO NOT PI: RETURN 
 1000 BORDER SGN PI: PAPER SGN PI: INK SGN PI: CLS : RETURN 
 1100 GO SUB VAL "1200": BORDER SGN PI: PAPER VAL "7": INK NOT PI: CLS : PRINT #NOT PI; PAPER VAL "7"; INK NOT PI;AT NOT PI,NOT PI;w$;AT SGN PI,NOT PI;w$: RETURN 
 1200 LET w$="                                ": RETURN 
 1300 GO SUB VAL "1100": PRINT #VAL "4": GO TO SGN PI
 1310 IF s=NOT PI OR s=SGN PI THEN PRINT #VAL "4": CAT "^^^^^^.CM",: GO TO VAL "1330"
 1320 IF s=VAL "2" OR s=INT PI THEN PRINT #VAL "4": CAT "^^^^^^.CF",
 1330 PRINT #VAL "4": GO TO NOT PI: RETURN 
 1400 IF s=NOT PI OR s=VAL "2" THEN PAPER SGN PI: CLS : PRINT AT VAL "12",VAL "9"; PAPER VAL "2"; INK VAL "6";" SAVING FILE ": RETURN 
 1500 IF s=SGN PI OR s=INT PI THEN PAPER SGN PI: CLS : PRINT AT VAL "12",VAL "9"; PAPER VAL "2"; INK VAL "6";" LOADING FILE ": RETURN 
 2000 PRINT #VAL "4": LOAD "VIDTR1.C1"SCREEN$ : RETURN 
 2010 PRINT #VAL "4": LOAD "VIDTR2.C1"SCREEN$ : RETURN 
 3000 POKE VAL "23606",NOT PI: POKE VAL "23607",VAL "60": RETURN 
 3010 RANDOMIZE USR char: RETURN 
 4000 PRINT #NOT PI; PAPER SGN PI; INK VAL "6";AT NOT PI,NOT PI;"     PRESS 'C' TO CONTINUE      ";AT SGN PI,NOT PI; INK VAL "2";" PRESS 'Q' TO QUIT - MAIN MENU  "
 4010 IF INKEY$="c" THEN GO TO VAL "4040"
 4020 IF INKEY$="q" THEN GO SUB VAL "1000": GO TO VAL "20"
 4030 GO TO VAL "4010"
 4040 RETURN 
 9990 CLEAR VAL "31999": PRINT #VAL "4": LOAD "VDTEXT.C1"CODE VAL "63488": RANDOMIZE USR VAL "63999": RUN 
 9994 STOP 
 9995 PRINT #VAL "4": SAVE "VIDEOT.B1" LINE VAL "9990"

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.