To --> program code (complete)



Data snippet from the user editing area for repeating cubics:
(program code is below the data snippet.)

-------------------------------------------------------------------------
Rotation for light source:   0 = 0    1 = 90    2 = 180    3 = 270


      x1,y1,z1          x6,y6,z6          spacing      endcube    rot,col
      --------          --------          -------      -------    -------

                                                       (1-19)   
AUTOCUBE00:
       0,0,0           .292,.292,2.67        7.19       3          0,2   


                                                      (21-39)   
AUTOCUBE20:
       0,0,0           .292,.292,2.67        7.82       22         3,3
-------------------------------------------------------------------------

-----------------------------------------
first, last, zangle, tranx, trany, tranz

TRAN
ZROTATETRANSLATE:
1        38      90    23.89   41.2    8
201      238      0    .125    62.72   8
401      438     90    .417    45.49   8
999,999      999             999,999,999
----------------------------------------


program code snippet for reading the above data snippet:

AXBAS:

READATA = 2

GOSUB WIPEVALUES

ON ERROR GOTO AXoERR1

OPEN "DATA\" + T$ + "-" + G$ + ".txt" FOR INPUT AS #2

GOSUB AXoREADDATA

GOSUB TRANSFORMATIONS

CLOSE #2
GOTO MAIN

AXoREADDATA:

Do While TIPE$ <> "LIGHTDARK:"
  Input #2, TIPE$
Loop
Input #2, LIGHT, DARKK

DO WHILE TIPE$ <> "WIRECOLORS:"
  INPUT #2, TIPE$
LOOP
INPUT #2, BACK, K6, K7, K8, K9

Do While TIPE$ <> "BEGIN-END:"
  Input #2, TIPE$
Loop

Input #2, XBEGINDATA, XENDDATA, YBEGINDATA, YENDDATA, ZBEGINDATA, ZENDDATA

AXoBLOCKS:

DO WHILE TIPE$ <> "AUTOCUBE00:"
  INPUT #2, TIPE$
LOOP

   P = 1: RL = NL1 + NL2 + NL3 + NL4 + NL5 + 1
   RPL = 1
 
   INPUT #2, X1, Y1, Z1, X6, Y6, Z6, XINC, ENDCUBE, ROT, COLAC
   X1 = X1 - XINC: X6 = X6 - XINC: STOPREAD = ENDCUBE + 1
  
  FOR AC = 0 TO ENDCUBE
     X1 = X1 + XINC
     X6 = X6 + XINC
     BLOK = 1: GOTO AXoB101
AXoB10:
     IF AC = STOPREAD THEN GOTO AXoB11
   NEXT AC
AXoB11:
   DO WHILE TIPE$ <> "AUTOCUBE20:"
     INPUT #2, TIPE$
   LOOP

   P = P - 1: RL = RL - 1: RPL = RPL - 5
   NL6 = RL - (NL1 + NL2 + NL3 + NL4 + NL5)
   NP1 = P

   P = 201: RL = NL1 + NL2 + NL3 + NL4 + NL5 + NL6 + 1
   RPL = 201
 
   INPUT #2, X1, Y1, Z1, X6, Y6, Z6, XINC, ENDCUBE, ROT, COLAC
   X1 = X1 - XINC: X6 = X6 - XINC: STOPREAD = ENDCUBE + 1
 
  FOR AC = 20 TO ENDCUBE
     X1 = X1 + XINC
     X6 = X6 + XINC
     BLOK = 2: GOTO AXoB101
AXoB20:
     IF AC = STOPREAD THEN GOTO AXoB21
   NEXT AC
AXoB21:
   DO WHILE TIPE$ <> "AUTOCUBE40:"
     INPUT #2, TIPE$
   LOOP

   P = P - 1: RL = RL - 1: RPL = RPL - 5
   NL7 = RL - (NL1 + NL2 + NL3 + NL4 + NL5 + NL6)
   NP2 = P - 200
     
   P = 401: RL = NL1 + NL2 + NL3 + NL4 + NL5 + NL6 + NL7 + 1
   RPL = 401
 
   INPUT #2, X1, Y1, Z1, X6, Y6, Z6, XINC, ENDCUBE, ROT, COLAC
   X1 = X1 - XINC: X6 = X6 - XINC: STOPREAD = ENDCUBE + 1
 
  FOR AC = 40 TO ENDCUBE
     X1 = X1 + XINC
     X6 = X6 + XINC
     BLOK = 3: GOTO AXoB101
AXoB30:
     IF AC = STOPREAD THEN GOTO AXoB31
   NEXT AC
AXoB31:
   DO WHILE TIPE$ <> "AUTOCUBE60:"
     INPUT #2, TIPE$
   LOOP

   P = P - 1: RL = RL - 1: RPL = RPL - 5
   NL8 = RL - (NL1 + NL2 + NL3 + NL4 + NL5 + NL6 + NL7)
   NP3 = P - 400
     
   P = 601: RL = NL1 + NL2 + NL3 + NL4 + NL5 + NL6 + NL7 + NL8 + 1
   RPL = 601
   FOR AC = 60 TO 79: REM   cube numbers. (60-79)
     BLOK = 4: GOTO AXoB100
AXoB40:
   IF DUMMY% = 999 THEN EXIT FOR
   NEXT AC
AXoB41:
   P = P - 1: RL = RL - 1: RPL = RPL - 5
   NL9 = RL - (NL1 + NL2 + NL3 + NL4 + NL5 + NL6 + NL7 + NL8)
   NP4 = P - 600

GOTO AXoFRAMINGREAD1

AXoB100:
        INPUT #2, DUMMY%, X1, Y1, Z1, X6, Y6, Z6, ROT(AC), COLAC(AC)
        IF DUMMY% = 999 THEN GOTO AXoB150

AXoB101:

GOSUB B101ASSIGNMENTS

IF BLOK = 4 THEN GOTO AXoSINGLES

GOSUB FMEMBERS

GOTO AXoB150

AXoSINGLES:
GOSUB LUCKY

AXoB150:
        IF BLOK = 1 THEN GOTO AXoB10
        IF BLOK = 2 THEN GOTO AXoB20
        IF BLOK = 3 THEN GOTO AXoB30
        IF BLOK = 4 THEN GOTO AXoB40

AXoFRAMINGREAD1:

GOSUB FRAMINGAXYZXYZ8

RETURN

AXoERR1:

GOSUB ERRORCODES

  CLOSE #2
  READATA = 2
  GOTO MAIN

ZROT:
FOR RD = 1 TO 1000
  INPUT #2, FIRST, LAST, ZANGLE, TRANX, TRANY, TRANZ
  IF FIRST = 999 THEN EXIT FOR
  ZANGLE = (ZANGLE * 3.14159) / 180
  FOR ROT = FIRST TO LAST
   X(ROT) = (XR(ROT) * COS(ZANGLE)) - (YR(ROT) * SIN(ZANGLE)) + TRANX
   Y(ROT) = (XR(ROT) * SIN(ZANGLE)) + (YR(ROT) * COS(ZANGLE)) + TRANY
   Z(ROT) = ZR(ROT) + TRANZ
   XR(ROT) = X(ROT): YR(ROT) = Y(ROT): ZR(ROT) = Z(ROT)
  NEXT ROT
NEXT RD
GOTO TRANSFORMATIONS

WIPEVALUES:

  NL1 = 0: NL2 = 0: NL3 = 0: NL4 = 0: NL5 = 0
  NL6 = 0: NL7 = 0: NL8 = 0: NL9 = 0: NL10 = 0
  NP1 = 0: NP2 = 0: NP3 = 0: NP4 = 0: NP5 = 0: NP6 = 0

 For WIPE = 1 To 800
  X(WIPE) = 0: Y(WIPE) = 0: Z(WIPE) = 0
  XR(WIPE) = 0: YR(WIPE) = 0: ZR(WIPE) = 0
  T1(WIPE) = 0: T2(WIPE) = 0: B1(WIPE) = 0: B2(WIPE) = 0
  AUTOFRM1(WIPE) = 0
  AUTOFRM2(WIPE) = 0

  TDIR(WIPE) = 0
  ROTAT(WIPE) = 0
  DIR(WIPE) = 0
  COLR(WIPE) = 0
  ROT(WIPE) = 0
 Next WIPE

 For WIPE = 1 To 80
  COLAC(WIPE) = 0
 Next WIPE

RETURN

B101ASSIGNMENTS:

DX = X6 - X1: DY = Y6 - Y1: DZ = Z6 - Z1

X(P) = X1: Y(P) = Y1: Z(P) = Z1: P1 = P
XR(P) = X(P): YR(P) = Y(P): ZR(P) = Z(P): P = P + 1
X(P) = X1: Y(P) = Y1: Z(P) = Z1 + DZ: P2 = P
XR(P) = X(P): YR(P) = Y(P): ZR(P) = Z(P): P = P + 1
X(P) = X1: Y(P) = Y1 + DY: Z(P) = Z1: P3 = P
XR(P) = X(P): YR(P) = Y(P): ZR(P) = Z(P): P = P + 1
X(P) = X1: Y(P) = Y1 + DY: Z(P) = Z1 + DZ: P4 = P
XR(P) = X(P): YR(P) = Y(P): ZR(P) = Z(P): P = P + 1
X(P) = X1 + DX: Y(P) = Y1 + DY: Z(P) = Z1: P5 = P
XR(P) = X(P): YR(P) = Y(P): ZR(P) = Z(P): P = P + 1
X(P) = X6: Y(P) = Y6: Z(P) = Z6: P6 = P
XR(P) = X(P): YR(P) = Y(P): ZR(P) = Z(P): P = P + 1
X(P) = X1 + DX: Y(P) = Y1: Z(P) = Z1: P7 = P
XR(P) = X(P): YR(P) = Y(P): ZR(P) = Z(P): P = P + 1
X(P) = X1 + DX: Y(P) = Y1: Z(P) = Z1 + DZ: P8 = P
XR(P) = X(P): YR(P) = Y(P): ZR(P) = Z(P): P = P + 1

X(P) = 0: Y(P) = 0: Z(P) = 0: P = P + 1
X(P) = 0: Y(P) = 0: Z(P) = 0: P = P + 1

FP(RL) = P1: SP(RL) = P2: RL = RL + 1
FP(RL) = P3: SP(RL) = P4: RL = RL + 1
FP(RL) = P5: SP(RL) = P6: RL = RL + 1
FP(RL) = P7: SP(RL) = P8: RL = RL + 1
FP(RL) = P1: SP(RL) = P3: RL = RL + 1
FP(RL) = P3: SP(RL) = P5: RL = RL + 1
FP(RL) = P5: SP(RL) = P7: RL = RL + 1
FP(RL) = P7: SP(RL) = P1: RL = RL + 1
FP(RL) = P2: SP(RL) = P4: RL = RL + 1
FP(RL) = P4: SP(RL) = P6: RL = RL + 1
FP(RL) = P6: SP(RL) = P8: RL = RL + 1
FP(RL) = P8: SP(RL) = P2: RL = RL + 1

RETURN

FMEMBERS:

T1(RPL) = P1: B1(RPL) = P2: T2(RPL) = P3: B2(RPL) = P4
DIR(RPL) = 1: COLR(RPL) = COLAC: ROTAT(RPL) = ROOT: RPL = RPL + 1

T1(RPL) = P3: B1(RPL) = P4: T2(RPL) = P5: B2(RPL) = P6
DIR(RPL) = 2: COLR(RPL) = COLAC: ROTAT(RPL) = ROOT: RPL = RPL + 1

T1(RPL) = P5: B1(RPL) = P6: T2(RPL) = P7: B2(RPL) = P8
DIR(RPL) = 3: COLR(RPL) = COLAC: ROTAT(RPL) = ROOT: RPL = RPL + 1

T1(RPL) = P7: B1(RPL) = P8: T2(RPL) = P1: B2(RPL) = P2
DIR(RPL) = 4: COLR(RPL) = COLAC: ROTAT(RPL) = ROOT: RPL = RPL + 1

T1(RPL) = P1: B1(RPL) = P3: T2(RPL) = P7: B2(RPL) = P5
DIR(RPL) = 5: COLR(RPL) = COLAC: ROTAT(RPL) = 0: RPL = RPL + 1

T1(RPL) = P2: B1(RPL) = P4: T2(RPL) = P8: B2(RPL) = P6
DIR(RPL) = 6: COLR(RPL) = COLAC: ROTAT(RPL) = 0: RPL = RPL + 5

RETURN

LUCKY: 'in honor of Lucky

T1(RPL) = P1: B1(RPL) = P2: T2(RPL) = P3: B2(RPL) = P4
DIR(RPL) = 1: COLR(RPL) = COLAC(AC): ROTAT(RPL) = ROT(AC): RPL = RPL + 1

T1(RPL) = P3: B1(RPL) = P4: T2(RPL) = P5: B2(RPL) = P6
DIR(RPL) = 2: COLR(RPL) = COLAC(AC): ROTAT(RPL) = ROT(AC): RPL = RPL + 1

T1(RPL) = P5: B1(RPL) = P6: T2(RPL) = P7: B2(RPL) = P8
DIR(RPL) = 3: COLR(RPL) = COLAC(AC): ROTAT(RPL) = ROT(AC): RPL = RPL + 1

T1(RPL) = P7: B1(RPL) = P8: T2(RPL) = P1: B2(RPL) = P2
DIR(RPL) = 4: COLR(RPL) = COLAC(AC): ROTAT(RPL) = ROT(AC): RPL = RPL + 1

T1(RPL) = P1: B1(RPL) = P3: T2(RPL) = P7: B2(RPL) = P5
DIR(RPL) = 5: COLR(RPL) = COLAC(AC): ROTAT(RPL) = 0: RPL = RPL + 1

T1(RPL) = P2: B1(RPL) = P4: T2(RPL) = P8: B2(RPL) = P6
DIR(RPL) = 6: COLR(RPL) = COLAC(AC): ROTAT(RPL) = 0: RPL = RPL + 5

RETURN

FRAMINGAXYZXYZ8:

Do While TIPE$ <> "AUTOFRAMING1:"
  Input #2, TIPE$
Loop

Do While NFL <> 999
 Input #2, SPL, EPL, NFL
 If NFL = 999 Then NFL = 0: AUTOFRM1(PL) = 0: Exit Do
 For PL = SPL To EPL Step 10
   AUTOFRM1(PL) = NFL
 Next PL
Loop

Do While TIPE$ <> "AUTOFRAMING2:"
  Input #2, TIPE$
Loop

Do While NFL <> 999
 Input #2, SPL, EPL, NFL
 If NFL = 999 Then NFL = 0: AUTOFRM2(PL) = 0: Exit Do
 For PL = SPL To EPL Step 10
   AUTOFRM2(PL) = NFL
 Next PL
Loop

RETURN


To --> program code (complete)