home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 601-625 / apd602 / paranoia.amos / paranoia.amosSourceCode < prev    next >
AMOS Source Code  |  1993-02-25  |  15KB  |  337 lines

  1. PINT=30
  2. Dim SG$(8),M$(20),SS$(20),AGISKILL$(6),DEXSKILL$(8),MOXSKILL$(14),CHUSKILL$(11),MECSKILL$(11),SGAGI(6),SGDEX(8),SGMOX(14),SGCHU(11),SGMEC(11),AGI(6),CHU(11),DEX(8),MEC(11),MOX(14),SN$(15),SN(15),SM(15)
  3. Data "Internal Security","Tech Services","HPD & MC","Armed Forces","PLC","Power Services","R&D","CPU"
  4. For I=1 To 8 : Read SG$(I) : Next 
  5. Data "Adrenalin Control","Charm","Deep Probe","ElectroShock","Empathy","Energy Field","Hypersenses","Levitation","Machine Empathy*","Matter Eater","Mechanical Intuition","Mental Blast","Polymorphism","Precognition","Pyrokinesis","Regeneration"
  6. Data "Telekinesis","Telepathy","Teleport","X-Ray Vision"
  7. For I=1 To 20 : Read M$(I) : Next 
  8. Data "Anti-Mutant","Computer Phreaks","Communists","Corpore Metal","Death Leopard","Death Leopard","FCCCP","FCCCP","Frankenstein Destroyers","Free Enterprise"
  9. Data "Humanists","Illuminati","Mystics","Pro Tech","Psion","Purge","Romantics","Sierra Club","Sierra Club","Other"
  10. For I=1 To 20 : Read SS$(I) : Next 
  11. Data "Force Sword","Grenade","Neurowhip","Primitive Melee Weapons","Truncheon","Unarmed"
  12. For I=1 To 6 : Read AGISKILL$(I) : SGAGI(I)=12 : Next 
  13. Data "Energy Weapons","Field Weapons","Laser Weapons","Primitve Missile Weapons","Projectile Weapons","Vehicle Aimed Weapons","Vehicle Field Weapons","Vehicle Launched Weapons"
  14. For I=1 To 8 : Read DEXSKILL$(I) : SGDEX(I)=12 : Next 
  15. Data "Biochemical Therapy","Biosciences","Chemical Engineering","Data Analysis","Data Search","Demolition","Electronic Engineering","Mechanical Engineering","Medical"
  16. Data "Nuclear Engineering","Security","Stealth","Surveillance","Survival"
  17. For I=1 To 14 : Read MOXSKILL$(I) : SGMOX(I)=12 : Next 
  18. Data "Bootlicking","Bribery","Con","Fast Talk","Forgery","Interrogation","Intimidation","Motivation","Oratory","Pychescan","Spurious Logic"
  19. For I=1 To 11 : Read CHUSKILL$(I) : SGCHU(I)=12 : Next 
  20. Data "Autocar Op. & Maint.","Copter Op. & Maint.","Crawler Op & Maint.","Docbot Op. & Maint.","Flybot Op. & Maint.","Habitat Engineering","Hover Op. & Maint.","Jackobot Op. & Maint.","Scrubot Op. & Maint.","Transbot Op & MAint."
  21. Data "Vulturecraft Op. & Maint."
  22. For I=1 To 11 : Read MECSKILL$(I) : SGMEC(I)=12 : Next 
  23. Randomize Timer
  24. Def Fn D20(R)=Rnd(19)+1
  25. Screen Open 0,640,256,16,Hires
  26. Curs Off 
  27. Cls 0
  28. Hide 
  29. Flash Off 
  30. Unpack 16 To 0
  31. Palette 0,0
  32. Wind Open 1,64,50,64,22
  33. Curs Off 
  34. MAIN:
  35. Window 1
  36. Clw 
  37. Centre "Paranoia Character Generator 1.0"
  38. Locate 1,1
  39. Centre "A Game Master Aid By Adam Booth"
  40. Wait Key 
  41. Clw 
  42. Print "Computer Rolls Dice?"
  43. Print "                     Yes"
  44. Print "                     No"
  45.     Repeat 
  46.     I$=Inkey$
  47.     If I$="y" Then COMPROLL=1 : Q=1
  48.     If I$="n" Then COMPROLL=0 : Q=1
  49.     Until Q=1
  50. Clw 
  51. Centre "Attributes"
  52. Locate 3,3 : Print "Strength........ __     Carrying Capacity... __"
  53. Locate 3,4 : Print "                        Damage Bonus........ __"
  54. Locate 3,5 : Print "Endurance....... __     Macho Bonus......... __"
  55. Locate 3,6 : Print "Agility......... __     Agility Skillbase... __"
  56. Locate 3,7 : Print "Dexterity....... __     Dexterity Skillbase. __"
  57. Locate 3,8 : Print "Moxie........... __     Moxie Skillbase..... __"
  58. Locate 3,9 : Print "Chutzpah........ __     Chutzpah Skillbase.. __"
  59. Locate 3,10 : Print "Mech. Aptitude.. __     Mech. Skillbase..... __"
  60. Locate 3,11 : Print "Power........... __"
  61. Rem *** Strength *** 
  62.         X=19 : Y=3 : Locate 0,Y : Print "->" : Gosub ROLL : STR=R : Locate X,Y : Print R;" " : Locate 0,Y : Print "  "
  63.         If STR<13 Then CARRYCAP=25
  64.         If STR>12 Then CARRYCAP=25+(STR-12)*5
  65.         Locate 47,3 : Print CARRYCAP
  66.         DB=0 : If STR>13 Then DB=1 : If STR>18 Then DB=2
  67.         Locate 47,4 : Print DB;" "
  68. Rem *** Endurance ***
  69.         X=19 : Y=5 : Locate 0,Y : Print "->" : Gosub ROLL : ENU=R : Locate X,Y : Print R;" " : Locate 0,Y : Print "  "
  70.         MB=0 : If ENU>13 Then MB=1 : If ENU>18 Then MB=2
  71.         Locate 47,5 : Print MB;" "
  72. Rem *** Agility ***
  73.         X=19 : Y=6 : Locate 0,Y : Print "->" : Gosub ROLL : AGI=R : Locate X,Y : Print R;" " : Locate 0,Y : Print "  "
  74.         AGISB=0
  75.         If AGI>3 Then AGISB=1 : If AGI>6 Then AGISB=2 : If AGI>10 Then AGISB=3 : If AGI>14 Then AGISB=4 : If AGI>17 Then AGISB=5
  76.         Locate 47,Y : Print AGISB;" "
  77. Rem *** Dexterity ***
  78.         X=19 : Y=7 : Locate 0,Y : Print "->" : Gosub ROLL : DEX=R : Locate X,Y : Print R;" " : Locate 0,Y : Print "  "
  79.         DEXSB=0
  80.         If DEX>3 Then DEXSB=1 : If DEX>6 Then DEXSB=2 : If DEX>10 Then DEXSB=3 : If DEX>14 Then DEXSB=4 : If DEX>17 Then DEXSB=5
  81.         Locate 47,Y : Print DEXSB;" "
  82. Rem *** Moxie ***
  83.         X=19 : Y=8 : Locate 0,Y : Print "->" : Gosub ROLL : MOX=R : Locate X,Y : Print R;" " : Locate 0,Y : Print "  "
  84.         MOXSB=0
  85.         If MOX>3 Then MOXSB=1 : If MOX>6 Then MOXSB=2 : If MOX>10 Then MOXSB=3 : If MOX>14 Then MOXSB=4 : If MOX>17 Then MOXSB=5
  86.         Locate 47,Y : Print MOXSB;" "
  87. Rem *** Chutzpah *** 
  88.         X=19 : Y=9 : Locate 0,Y : Print "->" : Gosub ROLL : CHU=R : Locate X,Y : Print R;" " : Locate 0,Y : Print "  "
  89.         CHUSB=0
  90.         If CHU>3 Then CHUSB=1 : If CHU>6 Then CHUSB=2 : If CHU>10 Then CHUSB=3 : If CHU>14 Then CHUSB=4 : If CHU>17 Then CHUSB=5
  91.         Locate 47,Y : Print CHUSB;" "
  92. Rem *** Mechanical Aptitude ***
  93.         X=19 : Y=10 : Locate 0,Y : Print "->" : Gosub ROLL : MEC=R : Locate X,Y : Print R;" " : Locate 0,Y : Print "  "
  94.         MECSB=0
  95.         If MEC>3 Then MECSB=1 : If MEC>6 Then MECSB=2 : If MEC>10 Then MECSB=3 : If MEC>14 Then MECSB=4 : If AGI>17 Then AGISB=5
  96.         Locate 47,Y : Print MECSB;" "
  97. Rem *** Power ***
  98.         X=19 : Y=11 : Locate 0,Y : Print "->" : Gosub ROLL : POW=R : Locate X,Y : Print R;" " : Locate 0,Y : Print "  "
  99. Rem *** Service Group ***
  100.         Locate 3,14 : Print "Service Group Roll:" : X=22 : Y=14 : Gosub ROLL : Locate X,Y : Print R;" "
  101.         If R<3 Then SG=1
  102.         If R>2 Then SG=2
  103.         If R>4 Then SG=3
  104.         If R>8 Then SG=4
  105.         If R>11 Then SG=5
  106.         If R>14 Then SG=6
  107.         If R>16 Then SG=7
  108.         If R>18 Then SG=8
  109.         Locate X,Y : Print SG$(SG)
  110. Rem *** Mutation *** 
  111.         Locate 3,16 : Print "Mutation Roll:" : X=17 : Y=16 : Gosub ROLL
  112.         M=R : Locate X,Y : Print M$(M)
  113. Rem *** Secret Society *** 
  114. SECRET:
  115.         Locate 3,18 : Print "Secret Society Roll:" : X=23 : Y=18 : Gosub ROLL
  116.         SS=R : If SS=15 and M<>3 and M<>5 and M<>6 and M<>8 and M<>12 and M<>14 and M<>15 and M<>17 and M<>18 and M<>19 Then Goto SECRET
  117.         Locate X,Y : Print SS$(SS)
  118. Locate 1,20 : Centre "Press Any Key to choose Skills" : Wait Key 
  119. Clw 
  120. If SG=1 Then SGAGI(5)=14 : SGAGI(6)=14 : SGCHU(6)=14 : SGCHU(7)=14 : SGDEX(3)=14 : SGMOX(11)=14 : SGMOX(13)=14
  121. If SG=2 Then SGCHU(11)=14 : SGMEC(1)=14 : SGMEC(4)=14 : SGMEC(8)=14 : SGMEC(9)=14 : SGMOX(7)=14 : SGMOX(8)=14 : SGMEC(10)=14
  122. If SG=3 Then SGCHU(1)=14 : SGCHU(3)=14 : SGCHU(5)=14 : SGCHU(9)=14 : SGMEC(4)=14 : SGMOX(1)=14 : SGMOX(9)=14
  123. If SG=4 Then SGAGI(1)=14 : SGAGI(4)=14 : SGAGI(6)=14 : SGCHU(8)=14 : SGDEX(3)=14 : SGDEX(5)=14 : SGMEC(11)=14 : SGMOX(6)=14 : SGMOX(14)=14
  124. If SG=5 Then SGCHU(2)=14 : SGCHU(4)=14 : SGCHU(5)=14 : SGMEC(6)=14 : SGMEC(8)=14 : SGMOX(2)=14
  125. If SG=6 Then SGCHU(11)=14 : SGMEC(6)=14 : SGMEC(8)=14 : SGMOX(3)=14 : SGMOX(7)=14 : SGMOX(8)=14 : SGMOX(10)=14
  126. If SG=7 Then SGMEC(8)=14 : SGMOX(2)=14 : SGMOX(4)=14 : SGMOX(5)=14 : SGMOX(7)=14 : SGMOX(8)=14
  127. If SG=8 Then SGCHU(4)=14 : SGCHU(7)=14 : SGCHU(8)=14 : SGCHU(10)=14 : SGMOX(4)=14 : SGMOX(5)=14
  128. Locate 1,0 : Print "[1] Agility" : Locate 13,0 : Print "[2] Dexterity" : Locate 27,0 : Print "[3] Moxie" : Locate 37,0 : Print "[4] Chutzpah" : Locate 50,0 : Print "[5] Mechanical"
  129. Locate 2,20 : Centre "Use Numbers for skill type, Arrows to select, +/- to"
  130. Locate 2,21 : Centre "increase/decrease points on skills [ESC] when finished"
  131. Locate 1,19 : Print "<Skill> "; : Pen 6 : Print "<Skill Max>"; : Pen 4 : Print " <SkillBase> "; : Pen 3 : Print "<Points on skill>"; : Pen 2 : Print " <Skill Total>"
  132. Wind Open 2,64,58,64,18
  133. Curs Off 
  134. NOSK=6 : POS=1
  135. AGILITY:
  136. SB=AGISB
  137. For I=1 To NOSK : SN$(I)=AGISKILL$(I) : SN(I)=AGI(I) : SM(I)=SGAGI(I) : Next 
  138. 0
  139. Gosub SHIFT
  140. Locate 0,0 : Centre "Agility"
  141. Locate 53,0 : Print "Points:";PINT;" "
  142. Gosub SHO
  143. Repeat 
  144. I$=Inkey$
  145. If I$=Chr$(27) Then Goto FINISH
  146. Until I$<>""
  147. If I$="2" Then Clw : POS=1 : NOSK=8 : Goto DEXTERITY
  148. If I$="3" Then Clw : POS=1 : NOSK=14 : Goto MOXIE
  149. If I$="4" Then Clw : POS=1 : NOSK=11 : Goto CHUTZPAH
  150. If I$="5" Then Clw : POS=1 : NOSK=11 : Goto MECHANICAL
  151. If I$="+" and AGI(POS)+AGISB<SGAGI(POS) and PINT>0 Then PINT=PINT-1 : AGI(POS)=AGI(POS)+1 : SN(POS)=AGI(POS)
  152. If I$="-" and AGI(POS)>0 Then PINT=PINT+1 : AGI(POS)=AGI(POS)-1 : SN(POS)=AGI(POS)
  153. Goto 0
  154. End 
  155. DEXTERITY:
  156. SB=DEXSB
  157. For I=1 To NOSK : SN$(I)=DEXSKILL$(I) : SN(I)=DEX(I) : SM(I)=SGDEX(I) : Next 
  158. 1
  159. Gosub SHIFT
  160. Locate 0,0 : Centre "Dexterity"
  161. Locate 53,0 : Print "Points:";PINT;" "
  162. Gosub SHO
  163. Repeat 
  164. I$=Inkey$
  165. If I$=Chr$(27) Then Goto FINISH
  166. Until I$<>""
  167. If I$="1" Then Clw : POS=1 : NOSK=6 : Goto AGILITY
  168. If I$="3" Then Clw : POS=1 : NOSK=14 : Goto MOXIE
  169. If I$="4" Then Clw : POS=1 : NOSK=11 : Goto CHUTZPAH
  170. If I$="5" Then Clw : POS=1 : NOSK=11 : Goto MECHANICAL
  171. If I$="+" and DEX(POS)+DEXSB<SGDEX(POS) and PINT>0 Then PINT=PINT-1 : DEX(POS)=DEX(POS)+1 : SN(POS)=DEX(POS)
  172. If I$="-" and DEX(POS)>0 Then PINT=PINT+1 : DEX(POS)=DEX(POS)-1 : SN(POS)=DEX(POS)
  173. Goto 1
  174. MOXIE:
  175. SB=MOXSB
  176. For I=1 To NOSK : SN$(I)=MOXSKILL$(I) : SN(I)=MOX(I) : SM(I)=SGMOX(I) : Next 
  177. 2
  178. Gosub SHIFT
  179. Locate 0,0 : Centre "Moxie"
  180. Locate 53,0 : Print "Points:";PINT;" "
  181. Gosub SHO
  182. Repeat 
  183. I$=Inkey$
  184. Until I$<>""
  185. If I$=Chr$(27) Then Goto FINISH
  186. If I$="2" Then Clw : POS=1 : NOSK=8 : Goto DEXTERITY
  187. If I$="1" Then Clw : POS=1 : NOSK=6 : Goto AGILITY
  188. If I$="4" Then Clw : POS=1 : NOSK=11 : Goto CHUTZPAH
  189. If I$="5" Then Clw : POS=1 : NOSK=11 : Goto MECHANICAL
  190. If I$="+" and MOX(POS)+MOXSB<SGMOX(POS) and PINT>0 Then PINT=PINT-1 : MOX(POS)=MOX(POS)+1 : SN(POS)=MOX(POS)
  191. If I$="-" and MOX(POS)>0 Then PINT=PINT+1 : MOX(POS)=MOX(POS)-1 : SN(POS)=MOX(POS)
  192. Goto 2
  193. CHUTZPAH:
  194. SB=CHUSB
  195. For I=1 To NOSK : SN$(I)=CHUSKILL$(I) : SN(I)=CHU(I) : SM(I)=SGCHU(I) : Next 
  196. 3
  197. Gosub SHIFT
  198. Locate 0,0 : Centre "Chutzpah"
  199. Locate 53,0 : Print "Points:";PINT;" "
  200. Gosub SHO
  201. Repeat 
  202. I$=Inkey$
  203. Until I$<>""
  204. If I$=Chr$(27) Then Goto FINISH
  205. If I$="2" Then Clw : POS=1 : NOSK=8 : Goto DEXTERITY
  206. If I$="1" Then Clw : POS=1 : NOSK=6 : Goto AGILITY
  207. If I$="3" Then Clw : POS=1 : NOSK=14 : Goto MOXIE
  208. If I$="5" Then Clw : POS=1 : NOSK=11 : Goto MECHANICAL
  209. If I$="+" and CHU(POS)+CHUSB<SGCHU(POS) and PINT>0 Then PINT=PINT-1 : CHU(POS)=CHU(POS)+1 : SN(POS)=CHU(POS)
  210. If I$="-" and CHU(POS)>0 Then PINT=PINT+1 : CHU(POS)=CHU(POS)-1 : SN(POS)=CHU(POS)
  211. Goto 3
  212. MECHANICAL:
  213. SB=MECSB
  214. For I=1 To NOSK : SN$(I)=MECSKILL$(I) : SN(I)=MEC(I) : SM(I)=SGMEC(I) : Next 
  215. 4
  216. Gosub SHIFT
  217. Locate 0,0 : Centre "Mechanical Aptitude"
  218. Locate 53,0 : Print "Points:";PINT;" "
  219. Gosub SHO
  220. Repeat 
  221. I$=Inkey$
  222. Until I$<>""
  223. If I$=Chr$(27) Then Goto FINISH
  224. If I$="2" Then Clw : POS=1 : NOSK=8 : Goto DEXTERITY
  225. If I$="1" Then Clw : POS=1 : NOSK=6 : Goto AGILITY
  226. If I$="3" Then Clw : POS=1 : NOSK=14 : Goto MOXIE
  227. If I$="4" Then Clw : POS=1 : NOSK=11 : Goto CHUTZPAH
  228. If I$="+" and MEC(POS)+MECSB<SGMEC(POS) and PINT>0 Then PINT=PINT-1 : CHU(POS)=CHU(POS)+1 : SN(POS)=CHU(POS)
  229. If I$="-" and MEC(POS)>0 Then PINT=PINT+1 : MEC(POS)=MEC(POS)-1 : SN(POS)=MEC(POS)
  230. Goto 4
  231. FINISH:
  232. Clw 
  233. Wind Close 
  234. Clw 
  235. Curs Off 
  236. 9
  237. Locate 0,10 : Centre "Save?"
  238. Repeat 
  239. I$=Inkey$
  240. Until I$<>""
  241. If I$="n" Then Cls : Print "Program Terminted..." : End 
  242. If I$="y" Then Goto 10
  243. Goto 9
  244. 10
  245. Locate 10,12
  246. Input "Filename (Specify Drive) :";F$
  247. If F$="" Then Goto 9
  248. Open Out 1,F$
  249. Print #1,"   ---------------------------------------------------------------------------"
  250. Print #1,"         Paranoia Character - Created with Paranoia Character Generator 1.0"
  251. Print #1,"   ---------------------------------------------------------------------------"
  252. Print #1,
  253. Print #1,"Name:                                             Player:"
  254. Print #1," Security Clearance (IR) R O Y G B I V (UV)       Service Group:";SG$(SG)
  255. Print #1,
  256. Print #1," ATTRIBUTES     "
  257. Print #1," Strength        ";STR; : If Len(Str$(STR))=2 Then Print #1," ";
  258. Print #1,"     Carrying Capacity   ";CARRYCAP
  259. Print #1,"                         Damage Bonus        ";DB
  260. Print #1," Endurance       ";ENU; : If Len(Str$(ENU))=2 Then Print #1," ";
  261. Print #1,"     Macho Bonus         ";MB
  262. Print #1," Agility         ";AGI; : If Len(Str$(AGI))=2 Then Print #1," ";
  263. Print #1,"     Agility Skillbase   ";AGISB
  264. Print #1," Dexterity       ";DEX; : If Len(Str$(DEX))=2 Then Print #1," ";
  265. Print #1,"     Dexterity Skillbase ";DEXSB
  266. Print #1," Moxie           ";MOX; : If Len(Str$(MOX))=2 Then Print #1," ";
  267. Print #1,"     Moxie Skillbase     ";MOXSB
  268. Print #1," Chutzpah        ";CHU; : If Len(Str$(CHU))=2 Then Print #1," ";
  269. Print #1,"     Chutzpah Skillbase  ";CHUSB
  270. Print #1," Mechanical Apt. ";MEC; : If Len(Str$(MEC))=2 Then Print #1," ";
  271. Print #1,"     Mech. Skillbase     ";MECSB
  272. Print #1," Power           ";POW
  273. Print #1,
  274. Print #1,"                              SKILLS"
  275. Print #1,
  276. Print #1,"Agility Skill Base :";AGISB
  277. For I=1 To 6
  278. If AGI(I)>0 Then A$=AGISKILL$(I) : B=30-Len(A$) : For K=1 To B : A$=A$+" " : Next : A$=A$+":" : Print #1,A$;AGISB+AGI(I)
  279. Next 
  280. Print #1,
  281. Print #1,"Dexterity Skill Base  :";DEXSB
  282. For I=1 To 8
  283. If DEX(I)>0 Then A$=DEXSKILL$(I) : B=30-Len(A$) : For K=1 To B : A$=A$+" " : Next : A$=A$+":" : Print #1,A$;DEXSB+DEX(I)
  284. Next 
  285. Print #1,
  286. Print #1,"Moxie Skill Base      :";MOXSB
  287. For I=1 To 14
  288. If MOX(I)>0 Then A$=MOXSKILL$(I) : B=30-Len(A$) : For K=1 To B : A$=A$+" " : Next : A$=A$+":" : Print #1,A$;MOXSB+MOX(I)
  289. Next 
  290. Print #1,
  291. Print #1,"Chutzpah Skill Base   :";CHUSB
  292. For I=1 To 11
  293. If CHU(I)>0 Then A$=CHUSKILL$(I) : B=30-Len(A$) : For K=1 To B : A$=A$+" " : Next : A$=A$+":" : Print #1,A$;CHUSB+CHU(I)
  294. Next 
  295. Print #1,
  296. Print #1,"Mechanical Skill Base :";MECSB
  297. For I=1 To 11
  298. If MEC(I)>0 Then A$=MECSKILL$(I) : B=30-Len(A$) : For K=1 To B : A$=A$+" " : Next : A$=A$+":" : Print #1,A$;MECSB+MEC(I)
  299. Next 
  300. Print #1,
  301. Print #1,"                       S E C R E T   S T U F F"
  302. Print #1,"Secret Society :";SS$(SS)
  303. Print #1,"Mutation       :";M$(M)
  304. End 
  305. SHO:
  306. For I=1 To NOSK
  307. Locate 3,I+2 : Print SN$(I); : Locate 28,I+2 : Pen 6 : Locate 30,I+2 : Print SM(I); : Pen 4 : Locate 34,I+2 : Print SB; : Pen 3 : Locate 37,I+2 : Print SN(I);" " : Pen 2 : Locate 41,I+2 : Print SB+SN(I);" "
  308. Next 
  309. Return 
  310. SHIFT:
  311. If I$=Chr$(30) Then Locate 0,POS+2 : Print "  " : POS=POS-1 : If POS<1 Then POS=NOSK
  312. If I$=Chr$(31) Then Locate 0,POS+2 : Print "  " : POS=POS+1 : If POS>NOSK Then POS=1
  313. Locate 0,POS+2 : Print "->";
  314. Return 
  315. ROLL:
  316. If COMPROLL=1 Then R= Fn D20(20) : Return 
  317. Locate X,Y
  318. Repeat 
  319. Repeat 
  320. I$=Inkey$
  321. Until I$<>""
  322. I=Asc(I$)-48
  323. Until I>-1 and I<10
  324. Print I
  325. Locate X+1,Y
  326. Repeat 
  327. Repeat 
  328. I$=Inkey$
  329. Until I$<>""
  330. If I$=Chr$(13) Then R=I : Goto ROLL1
  331. J=Asc(I$)-48
  332. Until I>-1 and I<10
  333. Print J
  334. R=I*10+J
  335. ROLL1:
  336. If R>0 and R<21 Then Return 
  337. Goto ROLL