_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

PRANDUPD

FILE INFORMATION

FILENAME(S): PRANDUPD

FILE TYPE(S): SEQ

FILE SIZE: 2.8K

FIRST SEEN: 2025-10-20 00:35:06

APPEARS ON: 1 disk(s)

FILE HASH

8f1e22aaec2be518ad5bfea7cb97fa4b808fb77a34974d1b9cfc714788f56987

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
PIC MAGIC PAINT PRANDUPD SEQ Robin Albicker 19 5 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: 50 52 4F 47 52 41 4D 20  50 52 41 4E 44 55 50 44  |PROGRAM PRANDUPD|
00000010: 28 52 41 4E 44 4F 4D 20  46 49 4C 45 20 55 50 44  |(RANDOM FILE UPD|
00000020: 41 54 45 2C 31 31 2F 31  32 2F 38 32 29 3B 0D 0D  |ATE,11/12/82);..|
00000030: 43 4F 4E 53 54 20 44 49  53 4B 55 4E 49 54 3D 38  |CONST DISKUNIT=8|
00000040: 3B 0D 20 20 20 20 20 20  44 41 54 41 43 48 41 4E  |;.      DATACHAN|
00000050: 3D 32 3B 0D 20 20 20 20  20 20 43 4D 44 43 48 41  |=2;.      CMDCHA|
00000060: 4E 3D 31 35 3B 0D 0D 56  41 52 20 53 49 5A 45 4F  |N=15;..VAR SIZEO|
00000070: 4B 3A 20 42 4F 4F 4C 45  41 4E 3B 0D 20 20 20 20  |K: BOOLEAN;.    |
00000080: 43 48 3A 20 43 48 41 52  3B 0D 20 20 20 20 46 49  |CH: CHAR;.    FI|
00000090: 4C 45 53 49 5A 45 2C 20  52 45 43 4F 52 44 53 49  |LESIZE, RECORDSI|
000000A0: 5A 45 2C 20 52 45 43 4E  55 4D 3A 20 49 4E 54 45  |ZE, RECNUM: INTE|
000000B0: 47 45 52 3B 0D 20 20 20  20 53 54 52 3A 20 53 54  |GER;.    STR: ST|
000000C0: 52 49 4E 47 3B 0D 20 20  20 20 44 41 54 41 49 4E  |RING;.    DATAIN|
000000D0: 2C 20 44 41 54 41 4F 55  54 2C 20 43 4F 4D 4D 41  |, DATAOUT, COMMA|
000000E0: 4E 44 49 4E 2C 20 43 4F  4D 4D 41 4E 44 4F 55 54  |NDIN, COMMANDOUT|
000000F0: 3A 20 54 45 58 54 3B 0D  0D 50 52 4F 43 45 44 55  |: TEXT;..PROCEDU|
00000100: 52 45 20 50 4F 53 49 54  49 4F 4E 28 43 48 41 4E  |RE POSITION(CHAN|
00000110: 4E 45 4C 2C 20 52 45 43  4F 52 44 4E 55 4D 42 45  |NEL, RECORDNUMBE|
00000120: 52 2C 20 53 54 41 52 54  50 4F 53 49 54 49 4F 4E  |R, STARTPOSITION|
00000130: 3A 20 49 4E 54 45 47 45  52 29 3B 0D 20 20 42 45  |: INTEGER);.  BE|
00000140: 47 49 4E 0D 20 20 20 20  57 52 49 54 45 4C 4E 28  |GIN.    WRITELN(|
00000150: 43 4F 4D 4D 41 4E 44 4F  55 54 2C 43 4F 4E 43 41  |COMMANDOUT,CONCA|
00000160: 54 28 27 50 27 2C 0D 20  20 20 20 20 20 20 20 20  |T('P',.         |
00000170: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000180: 20 20 20 20 20 43 48 52  28 43 48 41 4E 4E 45 4C  |     CHR(CHANNEL|
00000190: 29 2C 0D 20 20 20 20 20  20 20 20 20 20 20 20 20  |),.             |
000001A0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000001B0: 20 43 48 52 28 52 45 43  4F 52 44 4E 55 4D 42 45  | CHR(RECORDNUMBE|
000001C0: 52 29 2C 43 48 52 28 52  45 43 4F 52 44 4E 55 4D  |R),CHR(RECORDNUM|
000001D0: 42 45 52 20 53 48 52 20  38 29 2C 0D 20 20 20 20  |BER SHR 8),.    |
000001E0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000001F0: 20 20 20 20 20 20 20 20  20 20 43 48 52 28 53 54  |          CHR(ST|
00000200: 41 52 54 50 4F 53 49 54  49 4F 4E 29 29 29 0D 20  |ARTPOSITION))). |
00000210: 20 45 4E 44 3B 0D 0D 46  55 4E 43 54 49 4F 4E 20  | END;..FUNCTION |
00000220: 44 49 53 4B 45 52 52 4F  52 3A 20 42 4F 4F 4C 45  |DISKERROR: BOOLE|
00000230: 41 4E 3B 0D 20 20 56 41  52 20 45 52 52 4F 52 4E  |AN;.  VAR ERRORN|
00000240: 55 4D 42 45 52 3A 20 49  4E 54 45 47 45 52 3B 0D  |UMBER: INTEGER;.|
00000250: 20 20 20 20 20 20 4D 45  53 53 41 47 45 3A 20 53  |      MESSAGE: S|
00000260: 54 52 49 4E 47 3B 0D 20  20 46 55 4E 43 54 49 4F  |TRING;.  FUNCTIO|
00000270: 4E 20 54 45 58 54 4F 46  28 46 52 4F 4D 43 42 4D  |N TEXTOF(FROMCBM|
00000280: 3A 20 53 54 52 49 4E 47  29 3A 20 53 54 52 49 4E  |: STRING): STRIN|
00000290: 47 3B 0D 20 20 20 20 56  41 52 20 43 4F 4D 4D 41  |G;.    VAR COMMA|
000002A0: 50 4F 53 3A 20 49 4E 54  45 47 45 52 3B 0D 20 20  |POS: INTEGER;.  |
000002B0: 20 20 42 45 47 49 4E 0D  20 20 20 20 20 20 43 4F  |  BEGIN.      CO|
000002C0: 4D 4D 41 50 4F 53 3A 3D  50 4F 53 28 27 2C 27 2C  |MMAPOS:=POS(',',|
000002D0: 46 52 4F 4D 43 42 4D 29  3B 0D 20 20 20 20 20 20  |FROMCBM);.      |
000002E0: 54 45 58 54 4F 46 3A 3D  43 4F 50 59 28 46 52 4F  |TEXTOF:=COPY(FRO|
000002F0: 4D 43 42 4D 2C 32 2C 43  4F 4D 4D 41 50 4F 53 2D  |MCBM,2,COMMAPOS-|
00000300: 32 29 0D 20 20 20 20 45  4E 44 3B 0D 20 20 42 45  |2).    END;.  BE|
00000310: 47 49 4E 0D 20 20 20 20  52 45 41 44 28 43 4F 4D  |GIN.    READ(COM|
00000320: 4D 41 4E 44 49 4E 2C 45  52 52 4F 52 4E 55 4D 42  |MANDIN,ERRORNUMB|
00000330: 45 52 2C 4D 45 53 53 41  47 45 29 3B 0D 20 20 20  |ER,MESSAGE);.   |
00000340: 20 49 46 20 45 52 52 4F  52 4E 55 4D 42 45 52 3C  | IF ERRORNUMBER<|
00000350: 32 30 0D 20 20 20 20 20  20 20 20 54 48 45 4E 20  |20.        THEN |
00000360: 44 49 53 4B 45 52 52 4F  52 3A 3D 46 41 4C 53 45  |DISKERROR:=FALSE|
00000370: 0D 20 20 20 20 20 20 45  4C 53 45 20 49 46 20 45  |.      ELSE IF E|
00000380: 52 52 4F 52 4E 55 4D 42  45 52 3D 35 30 0D 20 20  |RRORNUMBER=50.  |
00000390: 20 20 20 20 20 20 20 20  20 20 20 20 20 54 48 45  |             THE|
000003A0: 4E 20 42 45 47 49 4E 0D  20 20 20 20 20 20 20 20  |N BEGIN.        |
000003B0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 57 52  |              WR|
000003C0: 49 54 45 4C 4E 28 54 45  58 54 4F 46 28 4D 45 53  |ITELN(TEXTOF(MES|
000003D0: 53 41 47 45 29 29 3B 0D  20 20 20 20 20 20 20 20  |SAGE));.        |
000003E0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 44 49  |              DI|
000003F0: 53 4B 45 52 52 4F 52 3A  3D 46 41 4C 53 45 0D 20  |SKERROR:=FALSE. |
00000400: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000410: 20 20 20 45 4E 44 0D 20  20 20 20 20 20 20 20 20  |   END.         |
00000420: 20 20 20 20 45 4C 53 45  20 42 45 47 49 4E 0D 20  |    ELSE BEGIN. |
00000430: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000440: 20 20 20 57 52 49 54 45  4C 4E 28 54 45 58 54 4F  |   WRITELN(TEXTO|
00000450: 46 28 4D 45 53 53 41 47  45 29 29 3B 0D 20 20 20  |F(MESSAGE));.   |
00000460: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000470: 20 44 49 53 4B 45 52 52  4F 52 3A 3D 54 52 55 45  | DISKERROR:=TRUE|
00000480: 3B 0D 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |;.              |
00000490: 20 20 20 20 20 20 57 52  49 54 45 4C 4E 28 27 45  |      WRITELN('E|
000004A0: 4E 44 45 44 20 42 59 20  44 49 53 4B 20 45 52 52  |NDED BY DISK ERR|
000004B0: 4F 52 27 29 0D 20 20 20  20 20 20 20 20 20 20 20  |OR').           |
000004C0: 20 20 20 20 20 20 20 45  4E 44 0D 20 20 45 4E 44  |       END.  END|
000004D0: 3B 0D 0D 42 45 47 49 4E  0D 20 20 52 45 53 45 54  |;..BEGIN.  RESET|
000004E0: 28 43 4F 4D 4D 41 4E 44  49 4E 2C 0D 20 20 20 20  |(COMMANDIN,.    |
000004F0: 20 20 20 20 44 49 53 4B  55 4E 49 54 2C 0D 20 20  |    DISKUNIT,.  |
00000500: 20 20 20 20 20 20 43 4D  44 43 48 41 4E 29 3B 0D  |      CMDCHAN);.|
00000510: 20 20 52 45 57 52 49 54  45 28 43 4F 4D 4D 41 4E  |  REWRITE(COMMAN|
00000520: 44 4F 55 54 2C 0D 20 20  20 20 20 20 20 20 20 20  |DOUT,.          |
00000530: 44 49 53 4B 55 4E 49 54  2C 0D 20 20 20 20 20 20  |DISKUNIT,.      |
00000540: 20 20 20 20 43 4D 44 43  48 41 4E 29 3B 0D 20 20  |    CMDCHAN);.  |
00000550: 52 45 53 45 54 28 44 41  54 41 49 4E 2C 0D 20 20  |RESET(DATAIN,.  |
00000560: 20 20 20 20 20 20 44 49  53 4B 55 4E 49 54 2C 0D  |      DISKUNIT,.|
00000570: 20 20 20 20 20 20 20 20  44 41 54 41 43 48 41 4E  |        DATACHAN|
00000580: 2C 0D 20 20 20 20 20 20  20 20 27 30 3A 52 41 4E  |,.        '0:RAN|
00000590: 44 4F 4D 27 29 3B 0D 20  20 49 46 20 44 49 53 4B  |DOM');.  IF DISK|
000005A0: 45 52 52 4F 52 0D 20 20  20 20 20 20 54 48 45 4E  |ERROR.      THEN|
000005B0: 20 45 58 49 54 28 4D 41  49 4E 29 3B 0D 20 20 52  | EXIT(MAIN);.  R|
000005C0: 45 57 52 49 54 45 28 44  41 54 41 4F 55 54 2C 0D  |EWRITE(DATAOUT,.|
000005D0: 20 20 20 20 20 20 20 20  20 20 44 49 53 4B 55 4E  |          DISKUN|
000005E0: 49 54 2C 0D 20 20 20 20  20 20 20 20 20 20 44 41  |IT,.          DA|
000005F0: 54 41 43 48 41 4E 2C 0D  20 20 20 20 20 20 20 20  |TACHAN,.        |
00000600: 20 20 27 30 3A 52 41 4E  44 4F 4D 27 29 3B 0D 20  |  '0:RANDOM');. |
00000610: 20 49 46 20 44 49 53 4B  45 52 52 4F 52 0D 20 20  | IF DISKERROR.  |
00000620: 20 20 20 20 54 48 45 4E  20 45 58 49 54 28 4D 41  |    THEN EXIT(MA|
00000630: 49 4E 29 3B 0D 20 20 50  4F 53 49 54 49 4F 4E 28  |IN);.  POSITION(|
00000640: 44 41 54 41 43 48 41 4E  2C 31 2C 31 29 3B 0D 20  |DATACHAN,1,1);. |
00000650: 20 52 45 41 44 28 44 41  54 41 49 4E 2C 46 49 4C  | READ(DATAIN,FIL|
00000660: 45 53 49 5A 45 2C 52 45  43 4F 52 44 53 49 5A 45  |ESIZE,RECORDSIZE|
00000670: 29 3B 0D 20 20 57 52 49  54 45 4C 4E 28 27 54 48  |);.  WRITELN('TH|
00000680: 45 20 46 49 4C 45 20 4A  55 53 54 20 4F 50 45 4E  |E FILE JUST OPEN|
00000690: 45 44 20 48 41 53 20 43  41 50 41 43 49 54 59 20  |ED HAS CAPACITY |
000006A0: 46 4F 52 20 27 2C 0D 20  20 20 20 20 20 20 20 20  |FOR ',.         |
000006B0: 20 20 46 49 4C 45 53 49  5A 45 2C 27 20 27 2C 52  |  FILESIZE,' ',R|
000006C0: 45 43 4F 52 44 53 49 5A  45 2C 27 20 43 48 41 52  |ECORDSIZE,' CHAR|
000006D0: 41 43 54 45 52 20 52 45  43 4F 52 44 53 27 29 3B  |ACTER RECORDS');|
000006E0: 0D 20 20 52 45 50 45 41  54 0D 20 20 20 20 52 45  |.  REPEAT.    RE|
000006F0: 50 45 41 54 0D 20 20 20  20 20 20 57 52 49 54 45  |PEAT.      WRITE|
00000700: 28 27 4E 55 4D 42 45 52  20 4F 46 20 52 45 43 4F  |('NUMBER OF RECO|
00000710: 52 44 3F 20 27 29 3B 0D  20 20 20 20 20 20 52 45  |RD? ');.      RE|
00000720: 41 44 4C 4E 28 52 45 43  4E 55 4D 29 3B 0D 20 20  |ADLN(RECNUM);.  |
00000730: 20 20 20 20 49 46 20 52  45 43 4E 55 4D 3C 32 0D  |    IF RECNUM<2.|
00000740: 20 20 20 20 20 20 20 20  20 20 54 48 45 4E 20 57  |          THEN W|
00000750: 52 49 54 45 4C 4E 28 27  4E 55 4D 42 45 52 20 54  |RITELN('NUMBER T|
00000760: 4F 4F 20 4C 4F 57 21 27  29 0D 20 20 20 20 20 20  |OO LOW!').      |
00000770: 20 20 45 4C 53 45 20 49  46 20 52 45 43 4E 55 4D  |  ELSE IF RECNUM|
00000780: 3E 46 49 4C 45 53 49 5A  45 0D 20 20 20 20 20 20  |>FILESIZE.      |
00000790: 20 20 20 20 20 20 20 20  20 20 20 54 48 45 4E 20  |           THEN |
000007A0: 57 52 49 54 45 4C 4E 28  27 4E 55 4D 42 45 52 20  |WRITELN('NUMBER |
000007B0: 54 4F 4F 20 48 49 47 48  21 27 29 0D 20 20 20 20  |TOO HIGH!').    |
000007C0: 55 4E 54 49 4C 20 28 52  45 43 4E 55 4D 3E 31 29  |UNTIL (RECNUM>1)|
000007D0: 20 41 4E 44 20 28 52 45  43 4E 55 4D 3C 3D 46 49  | AND (RECNUM<=FI|
000007E0: 4C 45 53 49 5A 45 29 3B  0D 20 20 20 20 50 4F 53  |LESIZE);.    POS|
000007F0: 49 54 49 4F 4E 28 44 41  54 41 43 48 41 4E 2C 52  |ITION(DATACHAN,R|
00000800: 45 43 4E 55 4D 2C 31 29  3B 0D 20 20 20 20 49 46  |ECNUM,1);.    IF|
00000810: 20 44 49 53 4B 45 52 52  4F 52 0D 20 20 20 20 20  | DISKERROR.     |
00000820: 20 20 20 54 48 45 4E 20  45 58 49 54 28 4D 41 49  |   THEN EXIT(MAI|
00000830: 4E 29 3B 0D 20 20 20 20  52 45 41 44 28 44 41 54  |N);.    READ(DAT|
00000840: 41 49 4E 2C 43 48 29 3B  0D 20 20 20 20 49 46 20  |AIN,CH);.    IF |
00000850: 43 48 3D 24 46 46 0D 20  20 20 20 20 20 20 20 54  |CH=$FF.        T|
00000860: 48 45 4E 20 57 52 49 54  45 4C 4E 28 27 45 4D 50  |HEN WRITELN('EMP|
00000870: 54 59 20 52 45 43 4F 52  44 27 29 0D 20 20 20 20  |TY RECORD').    |
00000880: 20 20 45 4C 53 45 20 42  45 47 49 4E 0D 20 20 20  |  ELSE BEGIN.   |
00000890: 20 20 20 20 20 20 20 20  20 20 52 45 41 44 28 44  |          READ(D|
000008A0: 41 54 41 49 4E 2C 53 54  52 29 3B 0D 20 20 20 20  |ATAIN,STR);.    |
000008B0: 20 20 20 20 20 20 20 20  20 57 52 49 54 45 4C 4E  |         WRITELN|
000008C0: 28 27 52 45 43 4F 52 44  20 49 53 20 27 27 27 2C  |('RECORD IS ''',|
000008D0: 43 4F 4E 43 41 54 28 43  48 2C 53 54 52 29 2C 27  |CONCAT(CH,STR),'|
000008E0: 27 27 27 29 0D 20 20 20  20 20 20 20 20 20 20 20  |''').           |
000008F0: 45 4E 44 3B 0D 20 20 20  20 57 52 49 54 45 28 27  |END;.    WRITE('|
00000900: 55 50 44 41 54 45 20 54  48 49 53 20 52 45 43 4F  |UPDATE THIS RECO|
00000910: 52 44 3F 20 27 29 3B 0D  20 20 20 20 52 45 41 44  |RD? ');.    READ|
00000920: 4C 4E 28 43 48 29 3B 0D  20 20 20 20 49 46 20 43  |LN(CH);.    IF C|
00000930: 48 3D 27 59 27 0D 20 20  20 20 20 20 20 20 54 48  |H='Y'.        TH|
00000940: 45 4E 20 52 45 50 45 41  54 0D 20 20 20 20 20 20  |EN REPEAT.      |
00000950: 20 20 20 20 20 20 20 20  20 57 52 49 54 45 28 27  |         WRITE('|
00000960: 4E 45 57 20 44 41 54 41  3A 20 27 29 3B 0D 20 20  |NEW DATA: ');.  |
00000970: 20 20 20 20 20 20 20 20  20 20 20 20 20 52 45 41  |             REA|
00000980: 44 4C 4E 28 53 54 52 29  3B 0D 20 20 20 20 20 20  |DLN(STR);.      |
00000990: 20 20 20 20 20 20 20 20  20 49 46 20 4C 45 4E 47  |         IF LENG|
000009A0: 54 48 28 53 54 52 29 3C  52 45 43 4F 52 44 53 49  |TH(STR)<RECORDSI|
000009B0: 5A 45 0D 20 20 20 20 20  20 20 20 20 20 20 20 20  |ZE.             |
000009C0: 20 20 20 20 20 20 54 48  45 4E 20 42 45 47 49 4E  |      THEN BEGIN|
000009D0: 0D 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
000009E0: 20 20 20 20 20 20 20 20  20 20 20 50 4F 53 49 54  |           POSIT|
000009F0: 49 4F 4E 28 44 41 54 41  43 48 41 4E 2C 52 45 43  |ION(DATACHAN,REC|
00000A00: 4E 55 4D 2C 31 29 3B 0D  20 20 20 20 20 20 20 20  |NUM,1);.        |
00000A10: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000A20: 20 20 57 52 49 54 45 4C  4E 28 44 41 54 41 4F 55  |  WRITELN(DATAOU|
00000A30: 54 2C 53 54 52 29 3B 0D  20 20 20 20 20 20 20 20  |T,STR);.        |
00000A40: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000A50: 20 20 53 49 5A 45 4F 4B  3A 3D 54 52 55 45 0D 20  |  SIZEOK:=TRUE. |
00000A60: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000A70: 20 20 20 20 20 20 20 45  4E 44 0D 20 20 20 20 20  |       END.     |
00000A80: 20 20 20 20 20 20 20 20  20 20 20 20 45 4C 53 45  |            ELSE|
00000A90: 20 42 45 47 49 4E 0D 20  20 20 20 20 20 20 20 20  | BEGIN.         |
00000AA0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 57  |               W|
00000AB0: 52 49 54 45 4C 4E 28 27  54 4F 4F 20 4C 4F 4E 47  |RITELN('TOO LONG|
00000AC0: 21 27 29 3B 0D 20 20 20  20 20 20 20 20 20 20 20  |!');.           |
00000AD0: 20 20 20 20 20 20 20 20  20 20 20 20 20 53 49 5A  |             SIZ|
00000AE0: 45 4F 4B 3A 3D 46 41 4C  53 45 0D 20 20 20 20 20  |EOK:=FALSE.     |
00000AF0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000B00: 20 45 4E 44 0D 20 20 20  20 20 20 20 20 20 20 20  | END.           |
00000B10: 20 20 55 4E 54 49 4C 20  53 49 5A 45 4F 4B 3B 0D  |  UNTIL SIZEOK;.|
00000B20: 20 20 20 20 57 52 49 54  45 28 27 4D 4F 52 45 3F  |    WRITE('MORE?|
00000B30: 20 27 29 3B 0D 20 20 20  20 52 45 41 44 4C 4E 28  | ');.    READLN(|
00000B40: 43 48 29 0D 20 20 55 4E  54 49 4C 20 43 48 3C 3E  |CH).  UNTIL CH<>|
00000B50: 27 59 27 0D 45 4E 44 2E  0D 03 44 4F 9A FF        |'Y'.END...DO..  |
PROGRAM PRANDUPD(RANDOM FILE UPDATE,11/1
2/82);..CONST DISKUNIT=8;.      DATACHAN
=2;.      CMDCHAN=15;..VAR SIZEOK: BOOLE
AN;.    CH: CHAR;.    FILESIZE, RECORDSI
ZE, RECNUM: INTEGER;.    STR: STRING;.  
  DATAIN, DATAOUT, COMMANDIN, COMMANDOUT
: TEXT;..PROCEDURE POSITION(CHANNEL, REC
ORDNUMBER, STARTPOSITION: INTEGER);.  BE
GIN.    WRITELN(COMMANDOUT,CONCAT('P',. 
                             CHR(CHANNEL
),.                              CHR(REC
ORDNUMBER),CHR(RECORDNUMBER SHR 8),.    
                          CHR(STARTPOSIT
ION))).  END;..FUNCTION DISKERROR: BOOLE
AN;.  VAR ERRORNUMBER: INTEGER;.      ME
SSAGE: STRING;.  FUNCTION TEXTOF(FROMCBM
: STRING): STRING;.    VAR COMMAPOS: INT
EGER;.    BEGIN.      COMMAPOS:=POS(',',
FROMCBM);.      TEXTOF:=COPY(FROMCBM,2,C
OMMAPOS-2).    END;.  BEGIN.    READ(COM
MANDIN,ERRORNUMBER,MESSAGE);.    IF ERRO
RNUMBER<20.        THEN DISKERROR:=FALSE
.      ELSE IF ERRORNUMBER=50.          
     THEN BEGIN.                      WR
ITELN(TEXTOF(MESSAGE));.                
      DISKERROR:=FALSE.                 
   END.             ELSE BEGIN.         
           WRITELN(TEXTOF(MESSAGE));.   
                 DISKERROR:=TRUE;.      
              WRITELN('ENDED BY DISK ERR
OR').                  END.  END;..BEGIN
.  RESET(COMMANDIN,.        DISKUNIT,.  
      CMDCHAN);.  REWRITE(COMMANDOUT,.  
        DISKUNIT,.          CMDCHAN);.  
RESET(DATAIN,.        DISKUNIT,.        
DATACHAN,.        '0:RANDOM');.  IF DISK
ERROR.      THEN EXIT(MAIN);.  REWRITE(D
ATAOUT,.          DISKUNIT,.          DA
TACHAN,.          '0:RANDOM');.  IF DISK
ERROR.      THEN EXIT(MAIN);.  POSITION(
DATACHAN,1,1);.  READ(DATAIN,FILESIZE,RE
CORDSIZE);.  WRITELN('THE FILE JUST OPEN
ED HAS CAPACITY FOR ',.           FILESI
ZE,' ',RECORDSIZE,' CHARACTER RECORDS');
.  REPEAT.    REPEAT.      WRITE('NUMBER
 OF RECORD? ');.      READLN(RECNUM);.  
    IF RECNUM<2.          THEN WRITELN('
NUMBER TOO LOW!').        ELSE IF RECNUM
>FILESIZE.                 THEN WRITELN(
'NUMBER TOO HIGH!').    UNTIL (RECNUM>1)
 AND (RECNUM<=FILESIZE);.    POSITION(DA
TACHAN,RECNUM,1);.    IF DISKERROR.     
   THEN EXIT(MAIN);.    READ(DATAIN,CH);
.    IF CH=$FF.        THEN WRITELN('EMP
TY RECORD').      ELSE BEGIN.           
  READ(DATAIN,STR);.             WRITELN
('RECORD IS ''',CONCAT(CH,STR),'''').   
        END;.    WRITE('UPDATE THIS RECO
RD? ');.    READLN(CH);.    IF CH='Y'.  
      THEN REPEAT.               WRITE('
NEW DATA: ');.               READLN(STR)
;.               IF LENGTH(STR)<RECORDSI
ZE.                   THEN BEGIN.       
                   POSITION(DATACHAN,REC
NUM,1);.                          WRITEL
N(DATAOUT,STR);.                        
  SIZEOK:=TRUE.                        E
ND.                 ELSE BEGIN.         
               WRITELN('TOO LONG!');.   
                     SIZEOK:=FALSE.     
                 END.             UNTIL 
SIZEOK;.    WRITE('MORE? ');.    READLN(
CH).  UNTIL CH<>'Y'.END...DO..
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL