home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / graphics / utility / escher / cubed.bas next >
Encoding:
BASIC Source File  |  1987-05-04  |  29.3 KB  |  587 lines

  1. 100   '***************************** ESCHER CUBES ******************************
  2. 110   '***************************** By Jim Luczak *****************************
  3. 120   '*************************** Ver 1.4d  2/6/87 ****************************
  4. 130   dim mhl(26),cl0(15),cl1(15),cl2(15),cl3(15),tx(56),titlep(10),ctx$(10)
  5. 140   max=5000:dim ps(5000),fv(10),fm(4):path=0:icon=3:priority=2
  6. 150   a#=gb:gintin=peek(a#+8):gintout=peek(a#+12):pl#=1114
  7. 160   addrin=peek(a#+16):path$="\*.CUB":path1$=path$+string$(24,chr$(0))
  8. 170   test$="\"+chr$(14)+chr$(15):button$="CANCEL|DELETE":button1$=button$
  9. 180   box$="Verify DELETE Operation":box1$=box$
  10. 190   if peek(systab)=4 then goto LOWREZMSG
  11. 200   if peek(systab)=2 then restore MEDREZ
  12. 210   if peek(systab)=1 then restore HIREZ 
  13. 220   read v1,v2,v3,v4,v5,st,t1,t2,cm1,cm2,j,j1,txty,rz,dfy,dth,ta,mkc1
  14. 230   read y7,y8,y12,y13,ta2,ta3,ta4,ta5
  15. 240   for x=1 to 4:read fm(x):next x
  16. 250   for x=1 to 10:read fv(x):next x
  17. 260   for x=0 to 15:read cl0(x):next x
  18. 270   for x=0 to 15:read cl1(x):next x
  19. 280   for x=0 to 15:read cl2(x):next x
  20. 290   for x=0 to 15:read cl3(x):next x 
  21. 300   restore CBARDAT
  22. 310   for x=1 to 26:read mhl(x):next x
  23. 320   for x=0 to 56:read tx(x):next x
  24. 330   for x=0 to 10:read titlep(x):next x
  25. 340   restore CNTDATA
  26. 350   for x=1 to 9:read ctx$(x):next x
  27. 360   ctx$(10)=chr$(14)+chr$(15)+"  Exit Program  "+chr$(14)+chr$(15)
  28. 370   sz=4:a=cm1*sz:b=cm2*sz:c=3*sz:sd=4:sd1=4
  29. 380   dfx=304:lv=-1:lh=0:mkc2=3:c1=1:c2=2:c3=3
  30. 390   ind=2:st1=st:ts=30/j:rzm=1:lc=3:lc1=1:lc2=2:cl$=space$(50)
  31. 400   title$=chr$(32)+chr$(1)+chr$(32)+chr$(2)+chr$(32)+chr$(3)+chr$(32)+chr$(4)
  32. 410   title$=title$+chr$(32)+chr$(t1)+chr$(32)+chr$(t2)
  33. 420   title$=title$+"  Col=  0  Bkg=  0  Fill=     Erase OFF  Clear  "
  34. 430   title$=title$+"Size=  4  "+chr$(8)+chr$(32)+chr$(0)
  35. 440   tlt1$=chr$(32)+chr$(14)+chr$(15)+" Escher Cubes File Control "
  36. 450   tlt1$=tlt1$+chr$(14)+chr$(15)+chr$(32)+chr$(0)
  37. 460   tlt2$=" 1= "+chr$(1)+"  2= "+chr$(2)+"  3= "+chr$(3)+"  4= "+chr$(4)
  38. 470   tlt2$=tlt2$+"  5= "+chr$(t1)+"  6= "+chr$(t2)
  39. 480   tlt2$=tlt2$+"      7= Col"+chr$(1)+"  8= Bkg"+chr$(1)+"  9= Fill"
  40. 490   tlt2$=tlt2$+chr$(1)+chr$(32)+chr$(0)
  41. 500   tlt3$=" Escher Cubes "+chr$(0)
  42. 510   eds$="  10= Erase ON/OFF  11= Clear  12= Size"+chr$(1)
  43. 520   eds$=eds$+"  14= Col"+chr$(2)+" 16= Bkg"+chr$(2)+"  18= Fill"+chr$(2)
  44. 530   eds1$="  24= Size"+chr$(2)+"  -1= Place Cube  XXX  YYY  -2= NUL"
  45. 540   eds1$=eds1$+"  -3= End  -4= Hi  -8= Lo"
  46. 550   gosub TITLEPAGE:poke systab+24,1:gosub SETCOLOR
  47. 560   txsz=56:txtx=161:gosub DOTEXT:gosub DOCONTROLS
  48. 570   restore CUBEP:gosub MOUSEFORM 
  49. 580   x=dfx:y=dfy:mx1=dfx:my1=dfy:x1=dfx:y1=dfy
  50. 590   '----------------------------- MOUSE CONTROLLER -------------------------
  51. 600   gosub MOUSEON
  52. 610   mk=0:hc1=-2:while mk=0
  53. 620   poke contrl,124:poke contrl+2,0:poke contrl+6,0:vdisys(1)
  54. 630   mx=peek(ptsout):my=peek(ptsout+2):mkey=peek(intout)
  55. 640   if mkey=1 or mkey=2 then gosub CHECKMOUSE
  56. 650   if hc1>0 and hc1<7 then gosub DOCUBE
  57. 660   if hc1>6 and hc1<14 then gosub CONTROLBAR
  58. 670   if hc1=14 then mx=mx1:my=my1:hc1=-1
  59. 680   if hc1=15 then mx=x1:my=y1:hc1=-1
  60. 690   if mkey=2 then hc1=-2:gosub COORD
  61. 700   if hc1=-1 then gosub PLACECUBE
  62. 710   hc1=-2:wend
  63. 720   '--------------------------- CLEAN-UP AND END ---------------------------
  64. 730   CLEANUP:gosub MOUSEOFF
  65. 740   clearw 2:poke systab+24,0:tlt=1:title$=" OUTPUT "+chr$(0)
  66. 750   gosub DOCONTROLS:plt%(0)=1911:plt%(1)=1792:plt%(2)=112:plt%(3)=0
  67. 760   poke pl#,varptr(plt%(0)):color 1,1,1
  68. 770   restore DEFAULTP:gosub MOUSEFORM:clear:end
  69. 780   '------------------------ LOW RESOLUTION MESSAGE -----------------------
  70. 790   LOWREZMSG:icon=1:priority=1:box1$=" |":fullw 2:clearw 2
  71. 800   box$=chr$(14)+chr$(15)+"  ESCHER CUBES  "+chr$(14)+chr$(15)+"|"
  72. 810   box$=box$+box1$+chr$(3)+" Set Preference To "+chr$(4)
  73. 820   button$=chr$(175)+"   MEDIUM RESOLUTION   "+chr$(174):gosub FORMBOX:end
  74. 830   '---------------------------- ERROR HANDLER -----------------------------
  75. 840   close #1:if dp=1 then dp=0:goto ERD
  76. 850   open "R",#1,f$,3:field #1,3 as am$:lset am$=a$:put #1,1:close #1:kill f$
  77. 860   ERD:?chr$(7);:resume GETANS1
  78. 870   '------------------------------- MOUSE ON -------------------------------
  79. 880   MOUSEON:poke gintin,257:gemsys(78):return
  80. 890   '------------------------------- MOUSE OFF ------------------------------
  81. 900   MOUSEOFF:poke gintin,256:gemsys(78):return
  82. 910   '-------------------------- CHECK MOUSE LOCATION ------------------------
  83. 920   CHECKMOUSE:
  84. 930   mc=0:hc=1:hc1=1:hct=26
  85. 940   if my<v1 then gosub MCC:return
  86. 950   if my>v2 then hc1=-1:return
  87. 960   while mc=0
  88. 970   if mx>=mhl(hc) and mx<=mhl(hc+1) then mc=1
  89. 980   if mc=0 then hc1=hc1+1
  90. 990   hc=hc+2:if hc>hct then mc=1
  91. 1000  wend:if hc1>hct/2 then hc1=-1
  92. 1010  return
  93. 1020  MCC:if mx>162 and mx<353 then hc1=14:return
  94. 1030  if mx>354 and mx<532 then hc1=15:return
  95. 1040  hc1=-2:return
  96. 1050  '----------------------- CONTROL BAR CONTROLLER -------------------------
  97. 1060  CONTROLBAR:
  98. 1070  on hc1-6 goto CB1,CB2,CB3,CB4,CB5,CB6,CB7
  99. 1080  CB1:if mkey=1 then cr1=cr1+1:if cr1>15 then cr1=0
  100. 1090  if mkey=2 then cr1=cr1-1:t=1:if cr1<0 then cr1=15
  101. 1100  gosub DOCUCOL:goto BARDONE
  102. 1110  CB2:if mkey=1 then cr0=cr0+1:if cr0>15 then cr0=0
  103. 1120  if mkey=2 then cr0=cr0-1:t=1:if cr0<0 then cr0=15
  104. 1130  gosub DOBCK:goto BARDONE
  105. 1140  CB3:if mkey=1 then gosub PATUP
  106. 1150  if mkey=2 then gosub PATDN
  107. 1160  gosub DOSTYLE:goto BARDONE
  108. 1170  CB4:gosub DOERASE:goto BARDONE
  109. 1180  CB5:gosub CLEARSCR:goto BARDONE
  110. 1190  CB6:if mkey=1 then sz=sz+1:if sz>12 then sz=1
  111. 1200  if mkey=2 then sz=sz-1:t=1:if sz<1 then sz=12
  112. 1210  gosub DOSIZE:goto BARDONE
  113. 1220  CB7:goto CNTSCREEN
  114. 1230  CB7A:ps(h)=hc1:gosub CLEARSCR:gosub PLAYBACK:goto BARD
  115. 1240  BARDONE:ps(h)=hc1:if t=1 then t=0:ps(h)=hc1*2
  116. 1250  h=h+1:if h>max then h=max:ps(h)=13
  117. 1260  BARD:mkey=1:return
  118. 1270  PATUP:st=st+1:if st>24 then st=1:ind=3
  119. 1280  if st>12 and ind=3 then ind=2:st=1
  120. 1290  return
  121. 1300  PATDN:st=st-1:t=1:if st<1 and ind=2 then ind=3:st=12
  122. 1310  if st<1 and ind=3 then ind=2:st=24
  123. 1320  return
  124. 1330  '--------------------------- CUBE CONTROLLER ----------------------------
  125. 1340  DOCUBE:gosub MOUSEOFF
  126. 1350  on hc1 goto UP,DOWN,RIGHT,LEFT,FORWARD,BACKWARD
  127. 1360  UP:y=y-b:gosub SETCUBE:gosub DOBOX:goto CUBEDONE
  128. 1370  DOWN:y=y+b:if hc2=3 then sd=4:sd1=3
  129. 1380  if hc2=6 then sd=3:sd1=4
  130. 1390  gosub SETCUBE:gosub FRONT:sd=sd1:gosub SIDE:goto CUBEDONE
  131. 1400  RIGHT:x=x+c:y=y-a:gosub SETCUBE
  132. 1410  if hc2=2 then sd=4:sd1=3:gosub SETRTOP
  133. 1420  if hc2=6 then sd=3:sd1=4:gosub SETRFRONT
  134. 1430  gosub FRONT:sd=sd1:gosub TOP:goto CUBEDONE
  135. 1440  LEFT:x=x-c:y=y+a:gosub SETCUBE:gosub DOBOX:goto CUBEDONE
  136. 1450  FORWARD:x=x+c:y=y+a:gosub SETCUBE:gosub DOBOX:goto CUBEDONE
  137. 1460  BACKWARD:x=x-c:y=y-a:gosub SETCUBE
  138. 1470  if hc2=2 then sd=3:sd1=4
  139. 1480  if hc2=3 then sd=4:sd1=3:gosub SETBSIDE
  140. 1490  gosub TOP:sd=sd1:gosub SIDE
  141. 1500  CUBEDONE:hc2=hc1:sd=4:sd1=4:gosub MOUSEON
  142. 1510  gosub DOSOUND:mkey=1:ps(h)=hc1
  143. 1520  h=h+1:if h>max then h=max:ps(h)=13
  144. 1530  return
  145. 1540  '----------------------------- PLACE CUBE -------------------------------
  146. 1550  PLACECUBE:x=mx:y=my*rzm:hc2=hc1
  147. 1560  if h+3>max then goto PL1
  148. 1570  ps(h)=hc1:ps(h+1)=mx:ps(h+2)=my
  149. 1580  gosub DOBOXA:gosub MOUSEON
  150. 1590  PL1:h=h+3:if h>max then h=max:ps(h)=13
  151. 1600  return
  152. 1610  '------------------------------ CLEAR SCREEN ----------------------------
  153. 1620  CLEARSCR:if t3<>1 then reset:gosub MOUSEOFF:clearw 2:gosub MOUSEON
  154. 1630  er=1:sz=4:st=st1:cr0=0:cr1=0:ind=2:gosub DOCUCOL
  155. 1640  x=dfx:y=dfy:mx1=dfx:my1=dfy:x1=dfx:y1=dfy
  156. 1650  gosub DOSIZE:gosub DOERASE:gosub DOBCK
  157. 1660  restore COORDTEXT:for z=0 to 5:read tx(z):next z   
  158. 1670  v6=v3:v3=0:v7=v4:v4=639:gosub SETCLIP:v3=v6:v4=v7
  159. 1680  txsz=56:txtx=161:gosub DOTEXT:gosub SETCLIP:return
  160. 1690  '---------------------------- DRAW WHOLE CUBE ---------------------------
  161. 1700  DOBOXA:gosub SETCUBE:gosub DOSOUND:gosub MOUSEOFF
  162. 1710  DOBOX:gosub FRONT:gosub TOP:gosub SIDE:return
  163. 1720  '--------------------------- DRAW CUBE TOP ------------------------------
  164. 1730  TOP:color 1,c1,1,st,ind
  165. 1740  poke contrl,9:poke contrl+2,sd:poke contrl+6,0
  166. 1750  poke ptsin,tx:poke ptsin+2,ty
  167. 1760  poke ptsin+4,tx1:poke ptsin+6,ty1
  168. 1770  poke ptsin+8,tx2:poke ptsin+10,ty2
  169. 1780  poke ptsin+12,tx3:poke ptsin+14,ty3
  170. 1790  vdisys(1):return
  171. 1800  '--------------------------- DRAW CUBE FRONT ----------------------------
  172. 1810  FRONT:color 1,c2,1,st,ind
  173. 1820  poke contrl,9:poke contrl+2,sd:poke contrl+6,0
  174. 1830  poke ptsin,fx:poke ptsin+2,fy
  175. 1840  poke ptsin+4,fx1:poke ptsin+6,fy1
  176. 1850  poke ptsin+8,fx2:poke ptsin+10,fy2
  177. 1860  poke ptsin+12,fx3:poke ptsin+14,fy3
  178. 1870  vdisys(1):return 
  179. 1880  '---------------------------- DRAW CUBE SIDE ----------------------------
  180. 1890  SIDE:color 1,c3,1,st,ind
  181. 1900  poke contrl,9:poke contrl+2,sd:poke contrl+6,0
  182. 1910  poke ptsin,sx:poke ptsin+2,sy
  183. 1920  poke ptsin+4,sx1:poke ptsin+6,sy1
  184. 1930  poke ptsin+8,sx2:poke ptsin+10,sy2
  185. 1940  poke ptsin+12,sx3:poke ptsin+14,sy3
  186. 1950  vdisys(1):return
  187. 1960  '---------------------------- SET CUBE PARAMETERS -----------------------
  188. 1970  SETCUBE:
  189. 1980  tx=x:ty=y-b:tx1=x-c:ty1=y-a:tx2=x:ty2=y:tx3=x+c:ty3=y-a
  190. 1990  fx=x:fy=y:fx1=x:fy1=y+b:fx2=x+c:fy2=y+a:fx3=x+c:fy3=y-a
  191. 2000  sx=x:sy=y:sx1=x:sy1=y+b:sx2=x-c:sy2=y+a:sx3=x-c:sy3=y-a:return
  192. 2010  SETRTOP:
  193. 2020  tx=x:ty=y-b:tx1=x+c:ty1=y-a:tx2=x:ty2=y:tx3=x-c:ty3=y-a:return
  194. 2030  SETRFRONT:
  195. 2040  fx=x:fy=y:fx1=x+c:fy1=y-a:fx2=x+c:fy2=y+a:fx3=x:fy3=y+b:return
  196. 2050  SETBSIDE:
  197. 2060  sx=x:sy=y:sx1=x-c:sy1=y-a:sx2=x-c:sy2=y+a:sx3=x:sy3=y+b:return
  198. 2070  '---------------------------- DISPLAY CONTROLS --------------------------
  199. 2080  DOCONTROLS:
  200. 2090  poke gintin,peek(systab+8):poke gintin+2,2
  201. 2100  s#=gintin+4:poke s#,varptr(title$):gemsys(105):if tlt=1 then tlt=0:return
  202. 2110  gosub STBOX:return
  203. 2120  '--------------------------- SET CUBE COLOR -----------------------------
  204. 2130  DOCUCOL:gosub SETCOLOR
  205. 2140  a$=str$(cr1):if len(a$)=3 then mid$(title$,19,len(a$))=a$
  206. 2150  if len(a$)=2 then mid$(title$,20,len(a$))=a$
  207. 2160  gosub DOCONTROLS:gosub DOSOUND1:return
  208. 2170  '------------------------- SET BACKGROUND COLOR -------------------------
  209. 2180  DOBCK:gosub SETCOLOR
  210. 2190  a$=str$(cr0):if len(a$)=3 then mid$(title$,28,len(a$))=a$
  211. 2200  if len(a$)=2 then mid$(title$,29,len(a$))=a$
  212. 2210  gosub DOCONTROLS:gosub DOSOUND1:return
  213. 2220  '--------------------------- SET INTERIOR INDEX --------------------------
  214. 2230  DOSTYLE:gosub DOCONTROLS:gosub DOSOUND1:return
  215. 2240  STBOX:color 1,1,1,st,ind:gosub MOUSEOFF
  216. 2250  poke contrl,129:poke contrl+2,2:poke contrl+6,1:poke intin,0:vdisys(1)
  217. 2260  poke contrl,11:poke contrl+2,2:poke contrl+6,0:poke contrl+10,1
  218. 2270  poke ptsin,327:poke ptsin+2,v1
  219. 2280  poke ptsin+4,359:poke ptsin+6,v2-1
  220. 2290  vdisys(1):gosub MOUSEON:gosub SETCLIP:return
  221. 2300  '--------------------------- TOGGLE ERASE MODE --------------------------
  222. 2310  DOERASE:
  223. 2320  if er=0 then er=1:c1=0:c2=0:c3=0:a$="ON "else er=0:c1=1:c2=2:c3=3:a$="OFF"
  224. 2330  mid$(title$,49,3)=a$:gosub DOCONTROLS:gosub DOSOUND1
  225. 2340  if er=1 then gosub MOUSEOFF:gosub DOBOX
  226. 2350  if er=1 then gosub MOUSEON
  227. 2360  return
  228. 2370  '---------------------------- SET CUBE SIZE -----------------------------
  229. 2380  DOSIZE:a=cm1*sz:b=cm2*sz:c=3*sz:sd=4:sd1=4
  230. 2390  a$=str$(sz):if len(a$)=3 then mid$(title$,66,len(a$))=a$
  231. 2400  if len(a$)=2 then mid$(title$,67,len(a$))=a$
  232. 2410  gosub DOCONTROLS:gosub DOSOUND1:return
  233. 2420  '------------------------------ SET CLIPPING ---------------------------- 
  234. 2430  SETCLIP:
  235. 2440  poke contrl,129:poke contrl+2,2:poke contrl+6,1
  236. 2450  poke intin,1:poke ptsin,0:poke ptsin+2,v3
  237. 2460  poke ptsin+4,v4:poke ptsin+6,v5:vdisys(1):return
  238. 2470  '------------------------------SOUND ROUTINE ----------------------------
  239. 2480  DOSOUND:
  240. 2490  sound 1,0,13-sz,hc1+2,0:wave 1,1,1,1024,0:return
  241. 2500  DOSOUND1:
  242. 2510  sound 1,0,7,5,0:wave 1,1,1,1024,0:return
  243. 2520  DOSOUND2:
  244. 2530  sound  1,0,fc1,8,0:wave 1,1,1,1024,0:return
  245. 2540  '--------------------------- SET COLOR ROUTINE --------------------------
  246. 2550  SETCOLOR:
  247. 2560  plt%(0)=cl0(cr0):plt%(1)=cl1(cr1):plt%(2)=cl2(cr1):plt%(3)=cl3(cr1)
  248. 2570  SETC:poke pl#,varptr(plt%(0)):return
  249. 2580  '-------------------------- PLAYBACK RECORDER ---------------------------
  250. 2590  PLAYBACK:
  251. 2600  mc1=0:h=0:t3=1:while mc1=0
  252. 2610  if h+2>max then mc1=1:goto PLAYEND
  253. 2620  hc1=ps(h):if hc1>13 then hc1=hc1/2:mkey=2
  254. 2630  if hc1<-3 then rzm=abs(hc1)/rz:h=h+1:goto PLAYEND
  255. 2640  if hc1=13 or hc1=-3 then mc1=1:goto PLAYEND
  256. 2650  if hc1=-2 then h=h+1:goto PLAYEND
  257. 2660  if hc1>0 and hc1<7 then gosub DOCUBE
  258. 2670  if hc1>6 and hc1<13 then gosub CONTROLBAR
  259. 2680  if hc1=-1 then mx=ps(h+1):my=ps(h+2):gosub PLACECUBE
  260. 2690  if hc1>13 then h=h+1
  261. 2700  PLAYEND:if h>max then h=max:mc1=1
  262. 2710  wend:t3=0:rzm=1:if h=0 then return
  263. 2720  if ps(h-1)<>(-rz) then ps(h)=-rz:h=h+1:if h>max then h=max
  264. 2730  return
  265. 2740  '--------------------------- SHOW COORDINATES ---------------------------
  266. 2750  COORD:
  267. 2760  mx$=str$(mx):my$=str$(my):x$=str$(x):y$=str$(y):h$=str$(h)
  268. 2770  txsz=4:mx1=mx:my1=my:x1=x:y1=y:z1=4
  269. 2780  if mx>v4 then mx$=str$(v4):mx1=v4
  270. 2790  if my<v1 then my$=str$(v1):my1=v1
  271. 2800  if my>v5 then my$=str$(v5):my1=v5
  272. 2810  v6=v3:v3=0:v7=v4:v4=639:gosub SETCLIP:v3=v6:v4=v7
  273. 2820  xx$=mx$:txtx=270:gosub CD:gosub DOTEXT
  274. 2830  xx$=my$:txtx=320:gosub CD:gosub DOTEXT
  275. 2840  xx$=x$:txtx=446:gosub CD:gosub DOTEXT
  276. 2850  xx$=y$:txtx=494:gosub CD:gosub DOTEXT
  277. 2860  xx$=h$:txtx=579:z1=5:gosub CD:gosub DOTEXT
  278. 2870  gosub SETCLIP:z1=4:return
  279. 2880  CD:if len(xx$)<z1 then xx$=xx$+space$(z1)
  280. 2890  for z=0 to z1-1:a$=mid$(xx$,z+1,1)
  281. 2900  if a$=" " then tx(z)=32 else tx(z)=val(a$)+48
  282. 2910  next z:return
  283. 2920  '-------------------------- CONTROL SCREEN ------------------------------
  284. 2930  CNTSCREEN:gosub MOUSEOFF:gosub CSCREEN
  285. 2940  '--------------------- FILE MOUSE CONTROLLER ---------------------------
  286. 2950  poke gintin,mkc2:gemsys(78):gosub MOUSEON
  287. 2960  fk=0:while fk=0
  288. 2970  poke contrl,124:poke contrl+2,0:poke contrl+6,0:vdisys(1)
  289. 2980  fmx=peek(ptsout):fmy=peek(ptsout+2):fkey=peek(intout)
  290. 2990  if fkey=1 then gosub CHECKFMOUSE
  291. 3000  if fc1>0 then gosub MOUSEOFF:gosub DOSOUND2:gosub GETANS
  292. 3010  fc1=0:wend
  293. 3020  if fk=1 then goto CLEANUP
  294. 3030  poke gintin,255:gemsys(78):restore CUBEP:gosub MOUSEFORM:goto CB7A
  295. 3040  '---------------------- GET FILE BUTTON PRESS --------------------------
  296. 3050  GETANS:on error goto 0
  297. 3060  mkc=mkc1:gosub MARKC
  298. 3070  on fc1 goto CS1,CS2,CS3,CS4,CS5,CS6,CS7,CS8,CS2,CS10
  299. 3080  CS1:?chr$(7);:reset:box$="Verify RESET Operation"
  300. 3090  button$="CANCEL|RESET":gosub GROWBOX:gosub FORMBOX
  301. 3100  box$=box1$:button$=button1$:openw 2:if kc<>2 then goto GETANS1
  302. 3110  for ct=0 to h:ps(ct)=0:next ct:h=0:ps(h)=13:lh=0:lv=-1:color 2,1,3      
  303. 3120  gotoxy 24/j,5:?"RESET"chr$(7):color 1,1,3:goto GETANS1
  304. 3130  CS2:gosub GROWBOX:clearw 2:poke systab+24,1
  305. 3140  gosub DOCONTROLS:gosub SETCOLOR:fk=2:goto GETANS1
  306. 3150  CS3:goto LOADPIC
  307. 3160  CS4:goto SAVEPIC
  308. 3170  CS5:goto DELETEPIC
  309. 3180  CS6:gosub ENTERPIC:poke systab+24,1:gosub CSCREEN:goto GETANS1
  310. 3190  CS7:gosub EDITPIC:poke systab+24,1:gosub CSCREEN:goto GETANS1
  311. 3200  CS8:a$="PRINTING":gosub LISTPIC:goto GETANS1
  312. 3210  CS10:?chr$(7);:reset:icon=2:box$="Leaving ESCHER CUBES ??"
  313. 3220  button$="STAY|EXIT":gosub GROWBOX:gosub FORMBOX:box$=box1$:button$=button1$
  314. 3230  icon=3:if kc<>2 then goto GETANS1 else fk=1
  315. 3240  GETANS1:mkc=3:gosub MARKC
  316. 3250  poke gintin,mkc2:gemsys(78):mkc2=3:gosub MOUSEON:return
  317. 3260  '---------------------- CHECK FILE MOUSE LOCATION ----------------------
  318. 3270  CHECKFMOUSE:
  319. 3280  kc=0:fc=1:fc1=1:fct=10
  320. 3290  if fmx>fm(1) and fmx<fm(2) then fmz=0:goto CFM
  321. 3300  if fmx>fm(3) and fmx<fm(4) then fmz=5:goto CFM
  322. 3310  fc1=0:?chr$(7);:return
  323. 3320  CFM:while kc=0
  324. 3330  if fmy>=fv(fc) and fmy<=fv(fc+1) then kc=1
  325. 3340  if kc=0 then fc1=fc1+1
  326. 3350  fc=fc+2:if fc>fct then kc=1
  327. 3360  wend:if fc1>fct/2 then fc1=0:?chr$(7);:return
  328. 3370  fc1=fc1+fmz:return
  329. 3380  '------------------------- LOAD PICTURE FILE ----------------------------
  330. 3390  LOADPIC:on error goto 840
  331. 3400  reset:gosub GROWBOX:gosub FILESELECT:poke systab+24,0
  332. 3410  if kp=0 or len(f$)<1 then goto LOADEND
  333. 3420  f2=instr(f$,"."):if f2=0 then goto LOADEND
  334. 3430  if mid$(f$,f2,len(f$)-(f2-1))<>".CUB" then goto LOADEND
  335. 3440  if h=0 then goto LOADIT
  336. 3450  if ps(h-1)=11 then goto LOADIT
  337. 3460  ps(h)=11:h=h+1:if h>max then ps(max)=13:?chr$(7);:goto LOADEND
  338. 3470  LOADIT:dp=0:f1$=f$:gosub FILELOCATE
  339. 3480  open "R",#1,f$,3:field #1,3 as am$:get #1
  340. 3490  if am$<>test$ then close #1:goto LOADEND
  341. 3500  mk1=0:while mk1=0:get #1:gdt=cvi(am$):if gdt=-3 then mk1=1
  342. 3510  if mk1=0 then ps(h)=gdt:h=h+1:if h>max then h=max:mk1=1
  343. 3520  wend:close #1:gotoxy ts,15:?cl$:?chr$(7);
  344. 3530  lv=lv+1:if lv>2 then lv=0:lh=lh+20/j:if lh>69/j then lh=0:swap lc1,lc2
  345. 3540  swap lc,lc1:gotoxy lh,lv:color lc,1,1:?f1$" "chr$(8):color 1,1,1
  346. 3550  LOADEND:poke systab+24,1:gotoxy 24/j,5:?"     ":goto GETANS1
  347. 3560  '------------------------- SAVE PICTURE FILE ----------------------------
  348. 3570  SAVEPIC:on error goto 840
  349. 3580  if h=0 then goto SE1
  350. 3590  reset:gosub GROWBOX:gosub FILESELECT:poke systab+24,0
  351. 3600  if kp=0 or len(f$)<1 then goto SE1
  352. 3610  f2=instr(f$,"."):if f2=0 then f$=f$+".CUB"
  353. 3620  if right$(f$,4)<>".CUB" then mid$(f$,len(f$)-3,4)=".CUB"
  354. 3630  dp=1:fh=s-1:fh1=1:gosub FILELOCATE
  355. 3640  open "R",#1,f$,3:field #1,3 as am$:lset am$=test$:put #1,fh1:fh1=fh1+1
  356. 3650  if ps(0)>-3 then lset am$=mki$(-rz):put #1,fh1:fh1=fh1+1
  357. 3660  SP1:fh=fh+1:if fh=h then goto SAVEEND
  358. 3670  if fh>max then fh=max:goto SAVEEND
  359. 3680  if ps(fh)=-2 then goto SP1
  360. 3690  lset am$=mki$(ps(fh)):put #1,fh1:fh1=fh1+1:goto SP1
  361. 3700  SAVEEND:lset am$=mki$(-3):put #1:close #1
  362. 3710  SE1:?chr$(7);:poke systab+24,1:goto GETANS1
  363. 3720  '------------------------- DELETE PICTURE FILE --------------------------
  364. 3730  DELETEPIC:on error goto 840
  365. 3740  reset:gosub GROWBOX:gosub FILESELECT:poke systab+24,0
  366. 3750  if kp=0 or len(f$)<1 then goto DL1
  367. 3760  ?chr$(7);:reset:box$=box$+"|Delete "+chr$(3)+" "+f$:gosub FORMBOX
  368. 3770  box$=box1$:openw 2:if kc<>2 then goto DL1
  369. 3780  gosub FILELOCATE
  370. 3790  open "R",#1,f$,3:field #1,3 as am$:lset am$=a$:put #1,1:close #1:kill f$
  371. 3800  DL1:?chr$(7);:poke systab+24,1:goto GETANS1
  372. 3810  '-------------------------- ENTER PICTURE DATA --------------------------
  373. 3820  ENTERPIC:gosub GROWBOX
  374. 3830  poke systab+24,0:title$=tlt2$:tlt=1:gosub DOCONTROLS:title$=tlt$
  375. 3840  tb=10/j:tb1=tb:tb3=int(h/10):tb4=0:i=0:ep=0:ep1=0:gosub ED1
  376. 3850  if h=0 then goto EPIC
  377. 3860  if ps(h-1)<>(-rz) then ps(h)=-rz:h=h+1:if h>max then h=max:goto ENTEREND
  378. 3870  EPIC:gotoxy 8/j,8:?cl$
  379. 3880  gotoxy 8/j,8:line input"Enter Data 'D' = Done ";ep$
  380. 3890  ep=val(ep$):if len(ep$)=0 then ep=ep1
  381. 3900  if ep$="D" or ep$="d" then ps(h)=-3:goto ENTEREND
  382. 3910  if ep=0 then ep1=ep:?chr$(7);:goto EPIC
  383. 3920  if ep<-2 and (ep<>-4 or ep<>-8) then ep1=0:?chr$(7);:goto EPIC
  384. 3930  ps(h)=ep:h=h+1:ep1=ep:if h>max then h=max:goto ENTEREND
  385. 3940  wm=2:gosub WMODE:gotoxy 0,5:?tab(tb1)ep:tb1=tb1+5:tb4=tb4+1
  386. 3950  if tb4>9 then gosub ENT
  387. 3960  wm=1:gosub WMODE:goto EPIC
  388. 3970  ENTEREND:?chr$(7);:wm=1:gosub WMODE:clearw 2:return
  389. 3980  ENT:tb4=0:tb5=0:wm=1:gosub WMODE:gotoxy j1/j,5:?cl$
  390. 3990  gotoxy 0,5:gosub ED2:return
  391. 4000  '-------------------------- EDIT PICTURE FILE ---------------------------
  392. 4010  EDITPIC:if h<1 then ?chr$(7);:return
  393. 4020  gosub GROWBOX:poke systab+24,0:tb=10/j:tb1=tb:tb2=0:tb3=0:tb4=0:tb5=0
  394. 4030  tlt=1:title$=tlt2$:gosub DOCONTROLS:title$=tlt$:for i=0 to h-1
  395. 4040  if ps(i)=13 then i=h-1:goto EDITDONE
  396. 4050  if tb5=0 then gosub ED1:if edn=1 then goto EDITDONE
  397. 4060  if ps(i)=-3 then color 2,1,1 else color 1,1,1
  398. 4070  ?tab(tb1)ps(i);:tb1=tb1+5:tb4=tb4+1:if tb4>9 then tb4=0
  399. 4080  if tb4=0 then gosub ED2
  400. 4090  EDITDONE:next i:if edn<>1 then gosub ED3
  401. 4100  clearw 2:edn=0:return
  402. 4110  ED1:gosub ED3:if edn=1 then i=h-1:return
  403. 4120  clearw 2:?:tb1=tb:gotoxy 0,0:?eds$:?eds1$:color 3,1,1
  404. 4130  ?:?tab(tb1)"Column->";:tb1=tb1+8:?tab(tb1);
  405. 4140  for z=tb2 to tb2+9:tb1=tb1+5:?tab(tb1)z;:next z:?:?:color 1,1,1
  406. 4150  ED2:tb5=tb5+1:if tb5>10 then tb5=0:goto ED2a
  407. 4160  tb1=tb:color 3,1,1:?tab(tb)"Line # "tb3;:tb1=tb1+13
  408. 4170  tb3=tb3+1:color 1,1,1
  409. 4180  ED2a:return
  410. 4190  ED3:?:if i=0 then return
  411. 4200  gotoxy 8/j,16:color 2,1,1
  412. 4210  ?"E";:color 1,1,1:?" - Edit   ";:color 2,1,1
  413. 4220  ?"C";:color 1,1,1:?" - Continue List   ";:color 2,1,1:?"Q";:color 1,1,1
  414. 4230  ?" - Quit                           ";
  415. 4240  GANS:gotoxy 50/j,16:ans=inp(2):?
  416. 4250  if ans=69 or ans=101 then goto DOEDIT
  417. 4260  if ans=67 or ans=99 then return
  418. 4270  if ans=81 or ans=113 then edn=1:return
  419. 4280  ?chr$(7);:goto GANS
  420. 4290  DOEDIT:tb6=tb5:if tb6=0 then tb6=10
  421. 4300  tb7=tb4-1:if tb7=-1 then tb7=9
  422. 4310  gotoxy 0,16:?cl$;:gotoxy 1,16:line input"Enter LINE # ";ln$:ln=val(ln$)
  423. 4320  if ln>tb3-1 or ln<tb3-tb6 then ?chr$(7);:goto DOEDIT
  424. 4330  DOED1:gotoxy 18/j,16:line input"Enter COLUMN # ";cn$:cn=val(cn$)
  425. 4340  if cn<0 or cn>9 then ?chr$(7);:goto DOED1
  426. 4350  if cn >tb7 and ln=tb3-1 then ?chr$(7);:goto DOED1
  427. 4360  if cn>=0 and tb7>9 and ln=tb3-1 then goto DOEDIT
  428. 4370  ps1=ps((ln*10)+cn):gotoxy 35/j,16:?"Old Value = "ps1"  ";
  429. 4380  line input"New Value = ";nn$:nn=val(nn$):if nn=0 then nn=-2
  430. 4390  if nn<-3 and (nn<>-4 and nn<>-8) then nn=-2
  431. 4400  if len(nn$)=0 then nn=ps1
  432. 4410  ln1=ln:nn$=str$(nn):if len(nn$)<4 then nn$=nn$+space$(4-len(nn$))
  433. 4420  ED4:if ln1>9 then ln1=ln1-10:goto ED4
  434. 4430  wm=2:gosub WMODE:gotoxy 0,ln1+5:?tab(ta+(cn*5));:wm=1:gosub WMODE:?nn$
  435. 4440  ps((ln*10)+cn)=nn:gotoxy 0,16:?cl$;:goto ED3
  436. 4450  '------------------- LIST PICTURE DATA TO PRINTER -----------------------
  437. 4460  LISTPIC:if h<1 then ?chr$(7);:return
  438. 4470  gosub GROWBOX:tb=10/j:tb1=tb:tb3=0:tb4=0:color 2,1,3:gotoxy ts,15:?a$
  439. 4480  color 1,1,3:lprint"Escher Cubes   File --> "f$:lprint:lprint
  440. 4490  lprint:lprint tab(tb1)"Column->";:tb1=tb1+8:?tab(tb1);
  441. 4500  for z=0 to 9:tb1=tb1+5:lprint tab(tb1)z;:next z:lprint:lprint
  442. 4510  gosub PRT:for i=0 to h-1
  443. 4520  lprint tab(tb1)ps(i);:tb1=tb1+5:tb4=tb4+1:if tb4>9 then tb4=0
  444. 4530  if tb4=0 then gosub PRT
  445. 4540  next i:lprint:lprint:gotoxy 20,15:?cl$;chr$(7);:return
  446. 4550  PRT:tb1=tb:lprint tab(tb)"Line # "tb3;:tb1=tb1+13
  447. 4560  tb3=tb3+1:return
  448. 4570  '------------------------------ WRITE MODE ------------------------------
  449. 4580  WMODE:
  450. 4590  poke contrl,32:poke contrl+2,0:poke contrl+6,1
  451. 4600  poke intin,wm:vdisys(1):return
  452. 4610  '--------------------------- DO COORDINATE TEXT -------------------------
  453. 4620  DOTEXT:
  454. 4630  poke contrl,8:poke contrl+2,1:poke contrl+6,txsz
  455. 4640  for z=0 to txsz:poke intin+(z*2),tx(z):next z
  456. 4650  poke ptsin,txtx:poke ptsin+2,txty:vdisys(1):return
  457. 4660  '--------------------------- TEXT EFFECTS -------------------------------
  458. 4670  TEFFECT:
  459. 4680  poke contrl,106:poke contrl+2,0:poke contrl+6,1
  460. 4690  poke intin,te:vdisys(1):return
  461. 4700  '---------------------------- TEXT HEIGHT -------------------------------
  462. 4710  THEIGHT:
  463. 4720  poke contrl,107:poke contrl+2,0:poke contrl+6,1
  464. 4730  poke intin,th:vdisys(1):return
  465. 4740  '----------------------------- TITLE PAGE -------------------------------
  466. 4750  TITLEPAGE:
  467. 4760  tlt=1:tlt$=title$:title$=tlt3$:gosub DOCONTROLS:title$=tlt$
  468. 4770  fullw 2:clearw 2:te=4:th=24:color 2,1,1:c4=1:y10=1:y11=3
  469. 4780  plt%(0)=0:plt%(1)=1792:plt%(2)=112:plt%(3)=1911:gosub SETC
  470. 4790  poke contrl,11:poke contrl+2,2:poke contrl+6,0:poke contrl+10,8
  471. 4800  poke ptsin,1:poke ptsin+2,v2
  472. 4810  for x=v4 to 210 step -8:color 2,1,c4:c4=c4+1:if c4>3 then c4=1
  473. 4820  poke ptsin+4,x:poke ptsin+6,y7:y7=y7-y8
  474. 4830  vdisys(1):sound 1,8,y10,y11,0:wave 1,1,4,256,0
  475. 4840  y10=y10+1:if y10>12 then y10=1:y11=y11+1:if y11>8 then y11=3
  476. 4850  next x:gosub TEFFECT:gosub THEIGHT
  477. 4860  xx=ta3:for x=0 to 5:gotoxy xx/j,4:?chr$(titlep(x));:xx=xx+4:next x
  478. 4870  color 1,1,1:te=16:th=26:gosub TEFFECT:gosub THEIGHT
  479. 4880  xx=10:for x=6 to 10:gotoxy xx/j,15:?chr$(titlep(x));:xx=xx+4:next x
  480. 4890  te=0:th=dth:gosub TEFFECT:gosub THEIGHT
  481. 4900  color 1,1,1:gotoxy 5/j,0:?"BY ";:te=4:gosub TEFFECT:?" J. Luczak"
  482. 4910  te=1:gosub TEFFECT:color 2,1,1:gotoxy ta4/j,6:?"Ver. ";
  483. 4920  te=0:gosub TEFFECT:color 3,1,1:?"1.4d":color 1,1,1:x=y12:y=y13
  484. 4930  for sz=1 to 12:a=cm1*sz:b=cm2*sz:c=3*sz
  485. 4940  gosub SETCUBE:gosub DOSOUND:gosub DOBOX:next sz
  486. 4950  x=dfx:y=dfy:sz=4:a=cm1*sz:b=cm2*sz:c=3*sz
  487. 4960  for z=1 to 5000:next z:?chr$(7);
  488. 4970  te=0:th=dth:gosub TEFFECT:gosub THEIGHT
  489. 4980  clearw 2:color 1,1,1:return
  490. 4990  '----------------------- SET MOUSE POINTER FORM -------------------------
  491. 5000  MOUSEFORM:
  492. 5010  poke contrl,111:poke contrl+2,0:poke contrl+6,37
  493. 5020  read hx,hy:poke intin,hx-1:poke intin+2,hy-1:poke intin+4,1
  494. 5030  poke intin+6,0:poke intin+8,1
  495. 5040  for z=10 to 40 step 2:read ms
  496. 5050  poke intin+z,ms:poke intin+z+32,ms:next z
  497. 5060  vdisys(1):return
  498. 5070  '--------------------------- FILE SELECTOR -----------------------------
  499. 5080  FILESELECT:gosub MOUSEON
  500. 5090  pt=1:pathname$=path1$:f$=""+string$(12,chr$(0))
  501. 5100  n#=addrin:poke n#,varptr(pathname$)
  502. 5110  o#=addrin+4:poke o#,varptr(f$)
  503. 5120  gemsys(90):kp=peek(gintout+2)
  504. 5130  temp$="":for z1=1 to 12
  505. 5140  if mid$(f$,z1,1)<>chr$(0) then temp$=temp$+mid$(f$,z1,1)
  506. 5150  next z1:f$="":f$=temp$:path1$=pathname$:gosub MOUSEOFF
  507. 5160  clearw 2:openw 2:return
  508. 5170  '-------------------------- FORM ALERT BOX ----------------------------
  509. 5180  FORMBOX:
  510. 5190  poke gintin,priority
  511. 5200  box2$=str$(icon)+"][|"+box$+"|]["+button$+"]"
  512. 5210  n#=addrin:poke n#,varptr(box2$)
  513. 5220  gemsys(52):kc=peek(gintout):return
  514. 5230  '------------------------- ROUNDED RECTANGLE ---------------------------
  515. 5240  BUTTON:
  516. 5250  poke ptsin,bx:poke ptsin+2,by:poke ptsin+4,bx1:poke ptsin+6,by1
  517. 5260  vdisys(1):return
  518. 5270  '--------------------------DRAW CONTROL SCREEN -------------------------
  519. 5280  CSCREEN:
  520. 5290  clearw 2:plt%(0)=0:plt%(1)=1792:plt%(2)=112:plt%(3)=1911
  521. 5300  poke pl#,varptr(plt%(0)):tlt=1:lh=0:lv=-1:tt=5:color 1,1,3
  522. 5310  tlt$=title$:title$=tlt1$:gosub DOCONTROLS:title$=tlt$
  523. 5320  for dox=1 to 10 step 2:gotoxy 10/j,tt:?ctx$(dox)
  524. 5330  if dox+1=10 then color 2,1,3
  525. 5340  gotoxy ta2/j,tt:?ctx$(dox+1):tt=tt+2:next dox
  526. 5350  poke contrl,11:poke contrl+2,2:poke contrl+6,0:poke contrl+10,8
  527. 5360  bx=fm(1):bx1=fm(2):for dox1=1 to 2:for dox=1 to 10 step 2
  528. 5370  by=fv(dox):by1=fv(dox+1):gosub BUTTON:next dox
  529. 5380  bx=fm(3):bx1=fm(4):next dox1:color 1,1,1:return
  530. 5390  '---------------------------- MARK CHOICE ------------------------------
  531. 5400  MARKC:color 1,1,mkc:mkd=fc1
  532. 5410  poke contrl,11:poke contrl+2,2:poke contrl+6,0:poke contrl+10,8
  533. 5420  if fc1<=5 then bx=fm(1):bx1=fm(2) else bx=fm(3):bx1=fm(4):mkd=fc1-5
  534. 5430  mke=mkd-1:by=fv(mkd+mke):by1=fv((mkd+mke)+1):gosub BUTTON
  535. 5440  isx=bx:isy=by:isw=200:ish=11*cm1:gosub GSCNT:return
  536. 5450  '---------------------------- FILE LOCATOR ----------------------------- 
  537. 5460  FILELOCATE:f2=1:f3=1:f4=0
  538. 5470  while f2<>0:f2=instr(f3,path1$,"\"):if f3>f4 and f3<24 then f4=f3
  539. 5480  f3=f2+1:wend:f$=left$(path1$,f4-1)+f$:return    
  540. 5490  '------------------------- GROW/SHRINK CONTROL -------------------------
  541. 5500  GSCNT:on fc1 goto GFO,GFU,GSEL,GSEL,GSEL,GFU,GFU,GPRINT,GFU,GFO
  542. 5510  GFO:iex=200:iey=75*cm1:iew=200:ieh=75*cm1:return
  543. 5520  GFU:iex=0:iey=0:iew=639:ieh=199*cm1:return
  544. 5530  GSEL:iex=200:iey=25*cm1:iew=280:ieh=150*cm1:return
  545. 5540  GPRINT: iex=200:iey=175*cm1:iew=200:ieh=11*cm1:return
  546. 5550  '------------------------------ GROW BOX -------------------------------
  547. 5560  GROWBOX:
  548. 5570  poke gintin!,isx:poke gintin!+2,isy:poke gintin!+4,isw
  549. 5580  poke gintin!+6,ish:poke gintin!+8,iex:poke gintin!+10,iey
  550. 5590  poke gintin!+12,iew:poke gintin!+14,ieh:gemsys(73):return
  551. 5600  '---------------------------- PROGRAM DATA ------------------------------
  552. 5610  MEDREZ:
  553. 5620  data 12,21,22,608,188,4,175,174,1,2,1,19,7,8,83,9,23,2,188,2,100,60
  554. 5630  data 40,36,15,56,65,265,335,535,67,78,85,96,103,114,121,132,139,150
  555. 5640  data 1911,546,1792,112,7,5,1312,80,1365,599,119,85,1799,1285,1904,1360
  556. 5650  data 7,1792,112,1365,1904,119,1799,80,1360,1285,85,1911,1360
  557. 5660  data 119,1792,1312
  558. 5670  data 5,1280,80,546,1360,85,1285,48,816,771,51,1365,1185,1904,112,80
  559. 5680  data 3,768,48,0,816,51,771,16,272,257,17,819,1312,112,7,5
  560. 5690  HIREZ:
  561. 5700  data 20,36,38,616,382,4,242,243,2,4,2,16,14,4,172,12,18,0,382,4,100,110
  562. 5710  data 44,38,16,58,60,260,350,550,123,145,157,179,191,213,225,247,257,281
  563. 5720  data 1911,0,1911,0,1911,0,1911,0,1911,0,1911,0,1911,0,1911,0
  564. 5730  data 0,1911,0,1911,0,1911,0,1911,0,1911,0,1911,0,1911,0,1911
  565. 5740  data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  566. 5750  data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  567. 5760  CBARDAT:
  568. 5770  data 29,47,48,63,64,79,80,96,97,112,113,129
  569. 5780  data 130,199,200,270,271,350,351,438,439,493,494,576,577,599
  570. 5790  COORDTEXT:
  571. 5800  data 67,117,114,114,101,110,116,32,80,111,115,32,88,61,32,32,32,32
  572. 5810  data 89,61,32,32,32,32,32,67,117,98,101,32,80,111,115,32,88,61,32,32,32
  573. 5820  data 32,89,61,32,32,32 
  574. 5830  data 32,32,67,111,117,110,116,32,32,32,32,32
  575. 5840  TITLEDATA:
  576. 5850  data 69,83,67,72,69,82,67,85,66,69,83
  577. 5860  DEFAULTP:
  578. 5870  data 1,1,32768,49152,57344,61440,63488,64512,65024,65280,64384
  579. 5880  data 55296,35840,3072,1536,1536,768,0
  580. 5890  CUBEP:
  581. 5900  data 1,1,65472,65504,49136,40952,36860,35500,36180,35500,36180
  582. 5910  data 35500,19796,10924,7508,4092,0,0
  583. 5920  CNTDATA:
  584. 5930  data Reset Recorder,Enter [-CUBE-] Data,Play-Back Recorder
  585. 5940  data Edit [-CUBE-] Data,Load [-CUBE-] File,List Data To Printer
  586. 5950  data Save [-CUBE-] File,Return To CUBICLE,Delete [-CUBE-] File
  587. ə