58 lines
1022 B
Plaintext
58 lines
1022 B
Plaintext
DEFINE PTR="CARD"
|
|
DEFINE OBJSIZE="4"
|
|
TYPE Record=[BYTE b CHAR c INT i]
|
|
|
|
PROC PrintObjects(PTR ARRAY items BYTE count)
|
|
Record POINTER r
|
|
BYTE n
|
|
|
|
FOR n=0 TO count-1
|
|
DO
|
|
r=items(n)
|
|
PrintF("(%B ""%C"" %I) ",r.b,r.c,r.i)
|
|
IF n MOD 3=2 THEN PutE() FI
|
|
OD
|
|
PutE()
|
|
RETURN
|
|
|
|
PROC Main()
|
|
DEFINE MIN="1"
|
|
DEFINE MAX="20"
|
|
DEFINE BUFSIZE="80"
|
|
BYTE ARRAY buffer(BUFSIZE)
|
|
PTR ARRAY items(MAX)
|
|
BYTE count=[0],n,LMARGIN=$52,oldLMARGIN
|
|
Record POINTER r
|
|
|
|
oldLMARGIN=LMARGIN
|
|
LMARGIN=0 ;remove left margin on the screen
|
|
Put(125) PutE() ;clear the screen
|
|
|
|
WHILE count<min OR count>max
|
|
DO
|
|
PrintF("How many objects (%I-%I)?",MIN,MAX)
|
|
count=InputB()
|
|
OD
|
|
|
|
FOR n=0 TO count-1
|
|
DO
|
|
items(n)=buffer+n*OBJSIZE
|
|
OD
|
|
|
|
PutE()
|
|
PrintE("Uninitialized objects:")
|
|
PrintObjects(items,count)
|
|
|
|
FOR n=0 TO count-1
|
|
DO
|
|
r=items(n)
|
|
r.b=n r.c=n+'A r.i=-n
|
|
OD
|
|
|
|
PutE()
|
|
PrintE("Initialized objects:")
|
|
PrintObjects(items,count)
|
|
|
|
LMARGIN=oldLMARGIN ;restore left margin on the screen
|
|
RETURN
|