000000: 45 58 54 45 4E 44 45 44 20 43 50 43 20 44 53 4B EXTENDED CPC DSK
000010: 20 46 69 6C 65 0D 0A 44 69 73 6B 2D 49 6E 66 6F File..Disk-Info
000020: 0D 0A 53 41 4D 64 69 73 6B 31 32 30 38 31 34 00 ..SAMdisk120814.
000030: 28 01 00 00 13 13 13 13 13 13 13 13 13 13 13 13 (...............
000040: 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 ................
000050: 13 13 13 13 13 13 13 13 13 13 13 13 00 00 00 00 ................
000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000100: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
000110: 00 00 00 00 02 09 50 E5 00 00 C1 02 00 00 00 02 ......P.........
000120: 00 00 C2 02 00 00 00 02 00 00 C3 02 00 00 00 02 ................
000130: 00 00 C4 02 00 00 00 02 00 00 C5 02 00 00 00 02 ................
000140: 00 00 C6 02 00 00 00 02 00 00 C7 02 00 00 00 02 ................
000150: 00 00 C8 02 00 00 00 02 00 00 C9 02 00 00 00 02 ................
000160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000200: 00 42 43 50 4C 20 20 20 20 43 4F 4D 00 00 00 78 .BCPL COM...x
000210: 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 00 ................
000220: 00 42 43 50 4C 4D 31 20 20 20 20 20 00 00 00 80 .BCPLM1 ....
000230: 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 ...............
000240: 00 42 43 50 4C 4D 31 20 20 20 20 20 01 00 00 80 .BCPLM1 ....
000250: 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 !"#$%&'()*+,-./0
000260: 00 42 43 50 4C 4D 31 20 20 20 20 20 02 00 00 04 .BCPLM1 ....
000270: 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1...............
000280: 00 42 43 50 4C 4D 32 20 20 20 20 20 00 00 00 80 .BCPLM2 ....
000290: 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 23456789:;<=>?@A
0002A0: 00 42 43 50 4C 4D 32 20 20 20 20 20 01 00 00 80 .BCPLM2 ....
0002B0: 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 BCDEFGHIJKLMNOPQ
0002C0: 00 42 43 50 4C 4D 32 20 20 20 20 20 02 00 00 08 .BCPLM2 ....
0002D0: 52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R...............
0002E0: 00 42 43 50 4C 4D 33 20 20 20 20 20 00 00 00 80 .BCPLM3 ....
0002F0: 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 STUVWXYZ[\]^_`ab
000300: 00 42 43 50 4C 4D 33 20 20 20 20 20 01 00 00 35 .BCPLM3 ...5
000310: 63 64 65 66 67 68 69 00 00 00 00 00 00 00 00 00 cdefghi.........
000320: 00 42 C5 44 43 20 20 20 20 42 20 A0 00 00 00 80 .B.DC B .....
000330: 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 jklmnopqrstuvwxy
000340: 00 42 C5 44 43 20 20 20 20 42 20 A0 01 00 00 29 .B.DC B ....)
000350: 7A 7B 7C 7D 7E 7F 00 00 00 00 00 00 00 00 00 00 z{|}~...........
000360: 00 42 45 44 43 20 20 20 20 43 4F 4D 00 00 00 76 .BEDC COM...v
000370: 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 00 ................
000380: 00 43 CC 49 42 48 44 52 20 20 20 20 00 00 00 49 .C.IBHDR ...I
000390: 8F 90 91 92 93 94 95 96 97 98 00 00 00 00 00 00 ................
0003A0: 00 43 4C 49 42 48 44 52 31 20 20 20 00 00 00 29 .CLIBHDR1 ...)
0003B0: 99 9A 9B 9C 9D 9E 00 00 00 00 00 00 00 00 00 00 ................
0003C0: 00 C3 4F 50 59 20 20 20 20 42 20 20 00 00 00 07 ..OPY B ....
0003D0: 9F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0003E0: 00 44 45 42 55 47 20 20 20 20 20 20 00 00 00 28 .DEBUG ...(
0003F0: A0 A1 A2 A3 A4 00 00 00 00 00 00 00 00 00 00 00 ...£............
000400: 00 4B 45 59 44 45 46 53 20 50 43 57 00 00 00 03 .KEYDEFS PCW....
000410: A5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000420: 00 54 49 44 59 20 20 20 20 42 20 20 00 00 00 44 .TIDY B ...D
000430: A6 A7 A8 A9 AA AB AC AD AE 00 00 00 00 00 00 00 ................
000440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0004A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0004B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0004C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0004D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0004E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0004F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0005A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0005B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0005C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0005D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0005E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0005F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0006A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0006B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0006C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0006D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0006E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0006F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0007A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0007B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0007C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0007D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0007E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0007F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0008A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0008B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0008C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0008D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0008E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0008F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000900: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000910: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000920: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000930: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000940: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000950: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000960: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000970: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000980: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000990: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0009A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0009B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0009C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0009D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0009E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0009F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A00: C3 76 03 00 00 00 00 00 00 00 00 CD 5C 01 F5 78 .v..........\..x
000A10: 06 10 29 CB 11 17 30 01 19 10 F7 F1 CB 7F C8 EB ..)...0.........
000A20: 21 00 00 A7 ED 52 C9 CD 5C 01 F5 3E 10 CB 21 CB !....R..\..>..!.
000A30: 10 CB 15 CB 14 A7 ED 52 38 03 03 18 01 19 3D 20 .......R8.....=
000A40: EC 50 59 EB F1 A7 C8 7C EE FF 67 7D EE FF 6F 23 .PY....|..g}..o#
000A50: C9 44 4D 21 00 00 3E 00 CB 78 28 0A A7 ED 42 44 .DM!..>..x(...BD
000A60: 4D 21 00 00 3E 80 CB 7A C8 EE 80 A7 ED 52 EB 21 M!..>..z.....R.!
000A70: 00 00 C9 A7 28 17 EB 4E 23 46 23 EB A7 ED 42 28 ....(..N#F#...B(
000A80: 0C 09 EB 23 23 3D 20 EF 5E 23 56 EB E9 EB 5E 23 ...##= .^#V...^#
000A90: 56 EB E9 32 15 01 32 14 01 E5 EB 78 B1 28 11 5E V..2..2....x.(.^
000AA0: 23 56 23 D5 5E 23 56 23 E3 73 23 72 E1 0B 18 EB #V#.^#V#.s#r....
000AB0: CB 45 28 01 23 22 12 01 22 10 01 ED 43 0E 01 C1 .E(.#".."...C...
000AC0: CD 78 03 F9 00 00 60 69 CD 9D 01 C3 00 00 00 00 .x....`i........
000AD0: 00 00 00 00 00 00 D1 DD E5 ED 4B 10 01 C5 ED 4B ..........K....K
000AE0: 12 01 ED 43 10 01 09 22 12 01 EB E9 7A B3 C8 29 ...C..."....z..)
000AF0: 1B 18 F9 7A B3 C8 CB 3C CB 1D 1B 18 F6 C1 E1 E5 ...z...<........
000B00: C5 29 ED 5B 10 01 73 23 72 23 ED 5B 12 01 73 23 .).[..s#r#.[..s#
000B10: 72 23 DD E5 D1 73 23 72 23 EB 21 04 00 39 EB 73 r#...s#r#.!..9.s
000B20: 23 72 C9 C1 C1 E1 29 5E 23 56 23 ED 53 10 01 5E #r....)^#V#.S..^
000B30: 23 56 23 ED 53 12 01 5E 23 56 23 D5 DD E1 5E 23 #V#.S..^#V#...^#
000B40: 66 6B F9 60 69 E9 E1 C1 D1 D5 C5 E5 2A 10 01 E5 fk.`i.......*...
000B50: D5 2A 12 01 22 10 01 CB 3C CB 1D E5 EB 23 29 38 .*.."...<....#)8
000B60: 49 EB 2A 10 01 19 38 42 22 12 01 EB 21 CE FF 39 I.*...8B"...!..9
000B70: A7 ED 52 38 35 60 69 CD 9D 01 E1 E1 2A 10 01 22 ..R85`i.....*.."
000B80: 12 01 E1 22 10 01 C9 D1 DD E5 ED 4B 10 01 C5 ED ...".......K....
000B90: 4B 12 01 ED 43 10 01 09 38 10 22 12 01 44 4D 21 K...C...8."..DM!
000BA0: CE FF 39 A7 ED 42 38 02 EB E9 CD CC 02 53 74 61 ..9..B8......Sta
000BB0: 63 6B 20 6F 76 65 72 66 6C 6F 77 0D 0A 00 C3 D6 ck overflow.....
000BC0: 01 E1 7E 23 E5 A7 C8 CD D7 02 18 F5 0E 02 5F C3 ..~#.........._.
000BD0: 05 00 3A 14 01 3D 32 14 01 C0 3A 15 01 32 14 01 ..:..=2...:..2..
000BE0: CD 66 03 A7 C8 E5 C5 F5 3A 0E 01 FE 08 28 0E 4F .f......:....(.O
000BF0: 06 00 21 D9 01 09 3C 32 0E 01 F1 77 F5 F1 C1 E1 ..!...<2...w....
000C00: FE 03 28 03 FE FC C0 CD 66 03 A7 28 FA FE 03 28 ..(.....f..(...(
000C10: 03 FE FC C0 0E 6C 11 00 FF CD 05 00 CD CC 02 0D .....l..........
000C20: 0A 2A 2A 20 42 52 45 41 4B 20 2A 2A 0D 0A 00 C3 .** BREAK **....
000C30: D6 01 3A 0E 01 A7 28 19 3A 0E 01 3D 32 0E 01 4F ..:...(.:..=2..O
000C40: 06 00 3A D9 01 28 10 21 DA 01 11 D9 01 ED B0 18 ..:..(.!........
000C50: 06 CD 66 03 A7 28 FA 5F 16 00 C9 E5 D5 C5 DD E5 ..f..(._........
000C60: 0E 06 1E FF CD 05 00 DD E1 C1 D1 E1 C9 2A 06 00 .............*..
000C70: 2B CB 45 C8 2B C9 ED 73 22 3E CD 68 05 2A 06 00 +.E.+..s">.h.*..
000C80: 2B 7D E6 01 28 01 2B 22 4B 3E 21 70 3F 22 4D 3E +}..(.+"K>!p?"M>
000C90: 2A 4B 3E ED 5B 4D 3E A7 ED 52 CB 3C CB 1D CB 3C *K>.[M>..R.<...<
000CA0: CB 1D EB 2A 4B 3E A7 ED 52 22 1C 3E 2B 22 2A 3E ...*K>..R".>+"*>
000CB0: 22 2C 3E 21 00 01 22 2E 3E 21 2A 3E 22 CB 3E 21 ",>!..".>!*>".>!
000CC0: 00 00 22 31 3E 3E 00 32 21 3E 3A 80 00 5F 16 00 .."1>>.2!>:.._..
000CD0: 21 81 00 19 36 0D 21 81 00 22 C9 3E CD DC 0B E5 !...6.!..".>....
000CE0: C5 78 A7 CA CE 09 11 08 3E 7E FE 2E 28 05 12 23 .x......>~..(..#
000CF0: 13 10 F6 3E 20 12 CD DC 0B 78 A7 28 0C 11 08 3E ...> ....x.(...>
000D00: 7E 12 23 13 10 FA 3E 20 12 CD 2C 0B C1 E1 CD B8 ~.#...> ..,.....
000D10: 08 CD 92 05 ED 7B 4B 3E ED 73 57 3E 21 2A 04 22 .....{K>.sW>!*."
000D20: 59 3E 0E 6C 11 00 00 CD 05 00 CD 71 35 CD 07 0F Y>.l.......q5...
000D30: E5 21 D2 04 CD 24 08 2A 2C 3E ED 5B 2A 3E A7 ED .!...$.*,>.[*>..
000D40: 52 CD 37 08 21 0E 05 CD 24 08 2A 5B 3E CD 37 08 R.7.!...$.*[>.7.
000D50: 2A 5B 3E 7C B5 C2 84 34 3E 00 32 67 3E 21 00 00 *[>|...4>.2g>!..
000D60: 22 35 3E E1 E5 CD B8 14 2A 5B 3E 7C B5 28 1B 21 "5>.....*[>|.(.!
000D70: F0 04 CD 24 08 21 00 00 CD 37 08 21 1F 05 CD 24 ...$.!...7.!...$
000D80: 08 2A 5B 3E CD 37 08 C3 84 34 21 08 3E 22 C9 3E .*[>.7...4!.>".>
000D90: CD DC 0B DD 21 CD 3E CD 48 0A 3E 01 32 67 3E 2A ....!.>.H.>.2g>*
000DA0: 6C 3E 22 35 3E E1 CD B8 14 DD 21 CD 3E CD D2 0A l>"5>.....!.>...
000DB0: 21 F0 04 CD 24 08 2A 35 3E ED 5B 6C 3E A7 ED 52 !...$.*5>.[l>..R
000DC0: CD 37 08 21 1F 05 CD 24 08 21 00 00 CD 37 08 C3 .7.!...$.!...7..
000DD0: 84 34 0D 50 68 61 73 65 20 31 20 63 6F 6D 70 6C .4.Phase 1 compl
000DE0: 65 74 65 2E 20 54 72 65 65 20 73 69 7A 65 3A 00 ete. Tree size:.
000DF0: 0D 50 68 61 73 65 20 32 20 63 6F 6D 70 6C 65 74 .Phase 2 complet
000E00: 65 2E 20 43 6F 64 65 20 73 69 7A 65 3A 00 0D 50 e. Code size:..P
000E10: 68 61 73 65 20 31 20 65 72 72 6F 72 73 3A 00 0D hase 1 errors:..
000E20: 50 68 61 73 65 20 32 20 65 72 72 6F 72 73 3A 00 Phase 2 errors:.
000E30: 02 00 00 0D 41 72 6E 6F 72 20 42 43 50 4C 20 63 ....Arnor BCPL c
000E40: 6F 6D 70 69 6C 65 72 20 76 00 20 28 63 29 20 50 ompiler v. (c) P
000E50: 4A 42 20 26 20 41 72 6E 6F 72 20 4C 74 64 2E 2C JB & Arnor Ltd.,
000E60: 20 31 39 38 36 0D 0D 00 21 33 05 CD 24 08 3A 30 1986...!3..$.:0
000E70: 05 C6 30 CD D6 07 3E 2E CD D6 07 3A 31 05 C6 30 ..0...>....:1..0
000E80: CD D6 07 3A 32 05 C6 30 CD D6 07 21 4A 05 CD 24 ...:2..0...!J..$
000E90: 08 C9 2A 4B 3E CD 10 06 21 40 3C 06 20 36 00 23 ..*K>...!@<. 6.#
000EA0: 10 FB 21 04 3B 7E A7 28 22 11 60 3C 7E FE 80 30 ..!.;~.(".`<~..0
000EB0: 05 12 23 13 18 F6 1B 1A F6 80 12 E5 21 60 3C CD ..#.........!`<.
000EC0: D7 34 D1 1A E6 7F 77 EB 23 18 DA 21 0A 06 CD D7 .4....w.#..!....
000ED0: 34 22 33 3E 36 4F 21 0B 06 CD D7 34 22 49 3E 36 4"3>6O!....4"I>6
000EE0: 4F 21 00 00 22 5B 3E 3E 05 32 66 3E 3E FF 32 C6 O!.."[>>.2f>>.2.
000EF0: 3E 32 C5 3E 3E 0A 32 C8 3E 3E 00 32 06 3E 32 07 >2.>>.2.>>.2.>2.
000F00: 3E 32 5D 3E 3E 0D 32 21 3E C9 A4 73 74 61 72 F4 >2]>>.2!>..star.
000F10: 2B CB 45 28 01 2B 22 AE 3E C9 CD 29 06 FE 41 D8 +.E(.+".>..)..A.
000F20: FE 5B D0 C6 20 32 21 3E C9 E5 D5 C5 DD E5 DD 2A .[.. 2!>.......*
000F30: CB 3E CD EE 0A 38 02 3E 1A DD E1 FE 8A 28 12 FE .>...8.>.....(..
000F40: 90 28 E9 FE 7F 28 E5 FE 80 38 08 FE 8D 30 04 18 .(...(...8...0..
000F50: DB 3E 0A F5 CD AA 07 F1 C1 D1 E1 32 21 3E FE 0A .>.........2!>..
000F60: 28 C7 3A 5D 3E A7 28 0A 3A 21 3E FE 1A 28 03 CD (.:]>.(.:!>..(..
000F70: D6 07 3A 21 3E C9 3E 00 32 C7 3E E1 ED 7B 57 3E ..:!>.>.2.>..{W>
000F80: E5 3A 5D 3E A7 CC 79 07 CD 8D 33 E1 CD 24 08 21 .:]>..y...3..$.!
000F90: EE 06 CD 24 08 2A 31 3E CD 37 08 CD 22 07 CD 24 ...$.*1>.7.."..$
000FA0: 08 CD FC 0B FE FC CA B3 38 FE 03 CA B3 38 2A 5B ........8....8*[
000FB0: 3E 23 22 5B 3E 3A 5D 3E F5 3E 00 32 30 3E 32 5D >#"[>:]>.>.20>2]
000FC0: 3E 3A 1E 3E FE 48 28 1B FE 49 28 17 FE 16 28 13 >:.>.H(..I(...(.
000FD0: FE 01 28 0F FE 40 28 0B 3A 30 3E A7 20 05 CD 71 ..(..@(.:0>. ..q
000FE0: 35 18 DE F1 32 5D 3E CD 8D 33 2A 59 3E E9 20 6E 5...2]>..3*Y>. n
000FF0: 65 61 72 20 6C 69 6E 65 20 00 0D 0A 45 53 43 20 ear line ...ESC
001000: 74 6F 20 61 62 6F 72 74 2C 20 61 6E 79 20 6F 74 to abort, any ot
001010: 68 65 72 20 6B 65 79 20 63 6F 6E 74 69 6E 75 65 her key continue
001020: 73 00 CD 2B 0C FE 30 30 04 21 FA 06 C9 2A 01 00 s..+..00.!...*..
001030: 11 57 00 19 23 7E 32 45 07 23 7E 32 46 07 21 E3 .W..#~2E.#~2F.!.
001040: 00 22 47 07 CD 00 00 00 00 A7 28 DD 21 50 07 C9 ."G.......(.!P..
001050: 0D 0A 53 54 4F 50 20 74 6F 20 61 62 6F 72 74 2C ..STOP to abort,
001060: 20 61 6E 79 20 6F 74 68 65 72 20 6B 65 79 20 63 any other key c
001070: 6F 6E 74 69 6E 75 65 73 00 3A 07 3E 47 3A 06 3E ontinues.:.>G:.>
001080: B8 28 1E 58 16 00 21 C6 3D 19 7E FE 1A 28 07 FE .(.X..!.=.~..(..
001090: 0A 28 03 CD D6 07 3A 07 3E CD CD 07 32 07 3E 18 .(....:.>...2.>.
0010A0: D8 3E 00 32 06 3E 32 07 3E C9 F5 3A 06 3E 5F 16 .>.2.>2.>..:.>_.
0010B0: 00 21 C6 3D 19 F1 77 3A 06 3E CD CD 07 32 06 3E .!.=..w:.>...2.>
0010C0: 5F 3A 07 3E BB C0 CD CD 07 32 07 3E C9 FE 3F 30 _:.>.....2.>..?0
0010D0: 02 3C C9 3E 00 C9 FE 0D 20 07 3E 0A CD 12 0C 3E .<.>.... .>....>
0010E0: 0D CD 12 0C C9 E5 D5 2A CB 3E 11 A3 00 19 ED 5B .......*.>.£...[
0010F0: 2A 3E A7 ED 52 D2 9B 32 2A 2A 3E 77 2B 22 2A 3E *>..R..2**>w+"*>
001100: D1 E1 C9 D5 E5 2A CB 3E 11 A5 00 19 ED 5B 2A 3E .....*.>.....[*>
001110: A7 ED 52 D2 9B 32 D1 2A 2A 3E 72 2B 73 2B 22 2A ..R..2.**>r+s+"*
001120: 3E EB D1 C9 7E A7 C8 CB 7F 20 06 CD D6 07 23 18 >...~.... ....#.
001130: F3 E6 7F CD D6 07 C9 E5 D5 C5 F5 7C B5 20 0A 3E ...........|. .>
001140: 30 CD 12 0C F1 C1 D1 E1 C9 0E 01 11 10 27 CD 6B 0............'.k
001150: 08 11 E8 03 CD 6B 08 11 64 00 CD 6B 08 11 0A 00 .....k..d..k....
001160: CD 6B 08 11 01 00 CD 6B 08 18 D9 3E 2F 3C A7 ED .k.....k...>/<..
001170: 52 30 FA 19 FE 30 20 05 79 A7 C0 3E 30 0E 00 CD R0...0 .y..>0...
001180: 12 0C C9 E5 D5 C5 F5 3A 67 3E A7 28 14 F1 F5 DD .......:g>.(....
001190: E5 DD 21 CD 3E CD 80 0A DD E1 2A 35 3E 23 22 35 ..!.>.....*5>#"5
0011A0: 3E 2A 37 3E 23 22 37 3E F1 C1 D1 E1 C9 7D CD 83 >*7>#"7>.....}..
0011B0: 08 7C CD 83 08 C9 46 23 DD E5 E5 2A CB 3E 11 A3 .|....F#...*.>.£
0011C0: 00 19 3A 21 3E 77 23 3A 31 3E 77 23 3A 32 3E 77 ..:!>w#:1>w#:2>w
0011D0: 23 22 CB 3E 19 23 23 ED 5B 2A 3E A7 ED 52 30 1C #".>.##.[*>..R0.
0011E0: E1 E5 C5 DD 2A CB 3E CD 05 0A 30 22 C1 E1 21 00 ....*.>...0"..!.
0011F0: 00 22 31 3E 3E 0D 32 21 3E DD E1 C9 CD 4A 34 54 ."1>>.2!>....J4T
001200: 6F 6F 20 6D 61 6E 79 20 66 69 6C 65 73 00 C1 E1 oo many files...
001210: E5 C5 21 28 09 CD 24 08 C1 E1 78 A7 28 07 7E CD ..!(..$...x.(.~.
001220: D6 07 23 10 F9 C3 45 34 0D 0A 43 61 6E 27 74 20 ..#...E4..Can't
001230: 6F 70 65 6E 20 00 C5 1A DD 77 09 13 1A DD 77 0A open ....w....w.
001240: 13 1A DD 77 0B 06 08 DD E5 D1 13 3E 20 12 13 10 ...w.......> ...
001250: FA C1 DD E5 D1 DD 36 00 00 DD 36 0C 00 DD 36 20 ......6...6...6
001260: 00 CD F9 09 38 5C FE 20 28 58 13 12 CD F9 09 D8 ....8\. (X......
001270: 0E 08 FE 3A 20 16 DD 7E 01 D6 40 DD 77 00 CD F9 ...: ..~..@.w...
001280: 09 38 3F FE 20 28 3B 12 CD F9 09 D8 FE 2E 28 0F .8?. (;.......(.
001290: FE 20 28 2C 0D 28 2B 13 12 CD F9 09 D8 18 ED DD . (,.(+.........
0012A0: 36 09 20 DD 36 0A 20 DD 36 0B 20 11 09 00 DD 19 6. .6. .6. .....
0012B0: DD E5 D1 0E 04 CD F9 09 D8 0D 28 06 12 13 18 F5 ..........(.....
0012C0: 37 C9 A7 C9 D5 59 57 CD 36 09 D1 D8 EB E9 CD 4A 7....YW.6......J
0012D0: 34 42 61 64 20 53 4F 55 52 43 45 20 6E 61 6D 65 4Bad SOURCE name
0012E0: 00 CD 4A 34 42 61 64 20 44 45 53 54 49 4E 41 54 ..J4Bad DESTINAT
0012F0: 49 4F 4E 20 6E 61 6D 65 00 78 FE 01 D8 05 7E CD ION name.x....~.
001300: 33 0C 23 A7 C9 DD E5 DD E5 DD E5 11 45 0A 7A 4B 3.#.........E.zK
001310: 11 CE 09 CD C4 09 0E 0F D1 CD 05 00 3C 28 0F DD ............<(..
001320: E1 D1 21 A3 00 19 DD 75 21 DD 74 22 37 C9 DD E1 ..!£...u!.t"7...
001330: DD 7E 09 FE 20 20 0A DD 36 09 42 DD E5 DD E5 18 .~.. ..6.B.....
001340: D5 DD E1 A7 C9 20 20 20 DD E5 DD E5 DD E5 11 7D ..... .......}
001350: 0A 7A 4B 11 E1 09 CD C4 09 DD E1 DD 36 0C 00 DD .zK.........6...
001360: 36 20 00 DD E5 D1 0E 16 CD 05 00 3C CA C5 0A E1 6 .........<....
001370: 11 23 00 19 DD E1 DD 75 21 DD 74 22 C9 43 4F 4D .#.....u!.t".COM
001380: DD E5 E1 11 A3 00 19 DD 5E 21 DD 56 22 A7 ED 52 ....£...^!.V"..R
001390: 20 0D F5 CD A8 0A DD E5 E1 11 23 00 19 EB F1 12 .........#.....
0013A0: 13 DD 73 21 DD 72 22 C9 DD E5 DD E5 DD E5 E1 11 ..s!.r".........
0013B0: 23 00 19 EB 0E 1A CD 05 00 D1 0E 15 CD 05 00 B7 #...............
0013C0: 20 03 DD E1 C9 CD 4A 34 44 69 73 63 20 46 75 6C .....J4Disc Ful
0013D0: 6C 00 DD E5 E1 11 23 00 19 DD 5E 21 DD 56 22 A7 l.....#...^!.V".
0013E0: 28 03 CD A8 0A 0E 10 DD E5 D1 CD 05 00 C9 DD E5 (...............
0013F0: D1 21 A3 00 19 DD 5E 21 DD 56 22 A7 ED 52 20 22 .!£...^!.V"..R "
001400: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
001410: 01 00 00 00 02 09 50 E5 01 00 C1 02 00 00 00 02 ......P.........
001420: 01 00 C2 02 00 00 00 02 01 00 C3 02 00 00 00 02 ................
001430: 01 00 C4 02 00 00 00 02 01 00 C5 02 00 00 00 02 ................
001440: 01 00 C6 02 00 00 00 02 01 00 C7 02 00 00 00 02 ................
001450: 01 00 C8 02 00 00 00 02 01 00 C9 02 00 00 00 02 ................
001460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001470: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0014A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0014B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0014C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0014D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0014E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0014F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001500: DD E5 DD E5 DD E5 E1 11 23 00 19 EB 0E 1A CD 05 ........#.......
001510: 00 D1 D5 0E 14 CD 05 00 DD E1 D1 B7 C0 21 23 00 .............!#.
001520: 19 EB 1A 13 DD 73 21 DD 72 22 37 C9 21 08 3E 22 .....s!.r"7.!.>"
001530: C9 3E CD DC 0B DD 21 70 3F 11 7D 0A 7A 4B 11 E1 .>....!p?.}.zK..
001540: 09 CD C4 09 0E 0F 11 70 3F CD 05 00 3C C8 21 AC .......p?...<.!.
001550: 0B CD 24 08 3A 79 3F CB 7F 28 06 21 D0 0B CD 24 ..$.:y?..(.!...$
001560: 08 21 BF 0B CD 24 08 CD FC 0B CD 33 0C FE 59 28 .!...$.....3..Y(
001570: 19 1E 4E 0E 02 CD 1D 0C CD 8D 33 CD 4A 34 46 69 ..N.......3.J4Fi
001580: 6C 65 20 69 6E 74 61 63 74 00 0E 02 5F CD 1D 0C le intact..._...
001590: CD 8D 33 3A 79 3F E6 7F 32 79 3F 11 70 3F 0E 1E ..3:y?..2y?.p?..
0015A0: CD 05 00 11 70 3F 0E 13 CD 05 00 C9 4F 75 74 70 ....p?......Outp
0015B0: 75 74 20 66 69 6C 65 20 65 78 69 73 74 73 00 3A ut file exists.:
0015C0: 20 44 65 6C 65 74 65 20 28 59 2F 4E 29 3F 20 00 Delete (Y/N)? .
0015D0: 20 61 6E 64 20 69 73 20 52 2F 4F 00 2A C9 3E 2B and is R/O.*.>+
0015E0: 06 00 23 7E FE 20 28 FA FE 0D C8 E5 04 23 7E FE ..#~. (......#~.
0015F0: 20 28 04 FE 0D 20 F5 22 C9 3E E1 C9 CD 02 0C 30 (... .".>.....0
001600: FB C9 C5 D5 0E 06 1E FF CD 1D 0C A7 28 01 37 D1 ............(.7.
001610: C1 C9 D5 C5 0E 02 5F CD 1D 0C C1 D1 C9 E5 D5 C5 ......_.........
001620: DD E5 CD 05 00 DD E1 C1 D1 E1 C9 C5 0E 0C CD 1D ................
001630: 0C C1 C9 FE 61 D8 FE 7B D0 D6 20 C9 3A 1E 3E FE ....a..{.. .:.>.
001640: 2E 28 08 FE 0C 28 04 FE 4F 20 09 2A 1F 3E E5 CD .(...(..O .*.>..
001650: 71 35 E1 C9 FE 4D 20 0C 2A 1F 3E CD 67 0D E5 CD q5...M .*.>.g...
001660: 71 35 E1 C9 FE 41 20 13 CD 71 35 3E 00 CD 75 0D q5...A ..q5>..u.
001670: E5 3E 42 21 9D 10 CD 60 14 E1 C9 FE 38 20 02 3E .>B!...`....8 .>
001680: 26 FE 17 28 04 FE 26 20 0D F5 CD 71 35 3E 23 CD &..(..& ...q5>#.
001690: 75 0D F1 C3 67 0D FE 35 20 09 CD 71 35 3E 22 CD u...g..5 ..q5>".
0016A0: 75 0D C9 FE 3D 20 26 CD 71 35 3E 22 CD 75 0D 7E u...= &.q5>".u.~
0016B0: FE 4D 20 14 E5 E5 2B 56 2B 5E 21 00 00 A7 ED 52 .M ...+V+^!....R
0016C0: EB E1 2B 72 2B 73 E1 C9 3E 43 C3 67 0D FE 20 20 ..+r+s..>C.g..
0016D0: 0D CD 71 35 3E 18 CD 75 0D 3E 20 C3 67 0D FE 33 ..q5>..u.> .g..3
0016E0: 20 0B CD 71 35 CD 02 11 3E 33 C3 67 0D FE 2F 20 ..q5...>3.g../
0016F0: 0B CD 71 35 CD AE 10 3E 2F C3 67 0D FE 4E 20 1C ..q5...>/.g..N .
001700: 2A 2A 3E E5 3E 4E CD E5 07 21 C6 3C 46 04 7E CD **>.>N...!.<F.~.
001710: E5 07 23 10 F9 CD 71 35 E1 3E 4E C9 FE 52 20 24 ..#...q5.>N..R $
001720: CD 76 06 3F 20 69 73 20 6F 6E 6C 79 20 61 6C 6C .v.? is only all
001730: 6F 77 65 64 20 69 6E 20 64 65 66 69 6E 69 74 69 owed in definiti
001740: 6F 6E 73 00 FE 60 20 0D CD 71 35 3E 23 CD 75 0D ons..` ..q5>#.u.
001750: 3E 60 C3 67 0D CD 76 06 42 61 64 20 65 78 70 72 >`.g..v.Bad expr
001760: 65 73 73 69 6F 6E 00 D5 ED 5B 2A 3E CD E5 07 CD ession...[*>....
001770: 03 08 EB D1 C9 57 D5 CD 3C 0C D1 22 24 3E 3A 30 .....W..<.."$>:0
001780: 3E A7 C0 21 B2 0E 3A 1E 3E 5F 7E A7 20 04 2A 24 >..!..:.>_~. .*$
001790: 3E C9 BB 28 06 23 23 23 23 18 EF 23 46 23 7E 23 >..(.####..#F#~#
0017A0: 66 6F 3A 1E 3E E9 0E 1E 18 01 48 7A B8 38 04 2A fo:.>.....Hz.8.*
0017B0: 24 3E C9 2A 24 3E E5 C5 D5 79 F5 CD 71 35 F1 CD $>.*$>...y..q5..
0017C0: 75 0D 22 24 3E E1 22 28 3E E1 22 26 3E 3A 28 3E u."$>."(>."&>:(>
0017D0: D1 2A 24 3E CD D4 0F E5 ED 4B 26 3E ED 5B 28 3E .*$>.....K&>.[(>
0017E0: E1 C3 7B 0D 7A FE 0D 38 04 2A 24 3E C9 2A 24 3E ..{.z..8.*$>.*$>
0017F0: C5 D5 E5 CD 71 35 3E 00 CD 75 0D 3A 1E 3E FE 36 ....q5>..u.:.>.6
001800: 28 0F CD 76 06 45 78 70 65 63 74 69 6E 67 20 2C (..v.Expecting ,
001810: 00 E5 CD 71 35 3E 00 CD 75 0D 3E 3C D1 CD D4 0F ...q5>..u.><....
001820: EB E1 CD 03 08 EB D1 C1 C3 7B 0D 2A 24 3E D5 C5 .........{.*$>..
001830: E5 CD 71 35 3A 1E 3E FE 42 28 05 CD AE 10 18 03 ..q5:.>.B(......
001840: 21 00 00 E5 3E 42 21 9D 10 CD 60 14 E1 D1 3E 4B !...>B!...`...>K
001850: CD D4 0F C1 D1 C3 7B 0D 7A 2A 24 3E FE 1E 38 01 ......{.z*$>..8.
001860: C9 D5 E5 D5 CD 71 35 3E 1E CD 75 0D 22 24 3E D1 .....q5>..u."$>.
001870: 7B D1 CD D4 0F EB 3A 1E 3E 4F 21 AB 0E 7E A7 20 {.....:.>O!..~.
001880: 05 EB D1 C3 7B 0D B9 28 03 23 18 F1 D5 2A 24 3E ....{..(.#...*$>
001890: E5 C5 CD 71 35 3E 1E CD 75 0D 22 24 3E C1 79 D1 ...q5>..u."$>.y.
0018A0: CD D4 0F D1 3E 1B CD D4 0F 18 CA 08 1F 18 10 19 ....>...........
0018B0: 11 00 24 23 AA 0D 39 23 AA 0D 3B 23 AA 0D 35 22 ..$#..9#..;#..5"
0018C0: AA 0D 3D 22 AA 0D 38 28 AA 0D 51 28 AA 0D 41 00 ..="..8(..Q(..A.
0018D0: 2B 0E 08 00 58 0E 1F 00 58 0E 18 00 58 0E 10 00 +...X...X...X...
0018E0: 58 0E 19 00 58 0E 11 00 58 0E 1D 19 A6 0D 25 19 X...X...X.....%.
0018F0: A6 0D 1B 17 AA 0D 1A 17 AA 0D 09 15 AA 0D 21 15 ..............!.
001900: AA 0D 3C 00 E4 0D 00 2A 57 3E E5 2A 59 3E E5 ED ..<....*W>.*Y>..
001910: 73 57 3E 21 2B 0F 22 59 3E 3E 37 CD 4B 13 3A 1E sW>!+."Y>>7.K.:.
001920: 3E FE 16 20 31 CD 71 35 CD E0 0F 3A 1E 3E FE 01 >.. 1.q5...:.>..
001930: 20 0F E5 CD 71 35 CD E0 0F 3E 01 D1 CD D4 0F 18 ...q5...>......
001940: EA E5 CD 07 0F 3E 16 D1 CD D4 0F D1 ED 53 59 3E .....>.......SY>
001950: D1 ED 53 57 3E C9 FE 49 28 04 FE 40 20 05 21 00 ..SW>..I(..@ .!.
001960: 00 18 E8 FE 1E 28 08 FE 2B 28 04 FE 12 20 15 F5 .....(..+(... ..
001970: CD 71 35 21 5B 13 CD EB 13 E5 CD 07 0F D1 F1 CD .q5![...........
001980: D4 0F 18 C7 CD E4 10 3A 1E 3E FE 49 28 BD FE 40 .......:.>.I(..@
001990: 28 B9 C3 09 11 CD AC 0F 3A 1E 3E FE 36 C0 E5 CD (.......:.>.6...
0019A0: 71 35 CD 95 0F D1 3E 36 CD D4 0F C9 3A 1E 3E FE q5....>6....:.>.
0019B0: 4F 28 18 CD 76 06 45 78 70 65 63 74 69 6E 67 20 O(..v.Expecting
0019C0: 69 64 65 6E 74 69 66 69 65 72 00 2A 1F 3E E5 CD identifier.*.>..
0019D0: 71 35 E1 C9 E5 EB CD 67 0D D1 EB CD 03 08 EB C9 q5.....g........
0019E0: CD 95 0F 3A 1E 3E FE 08 20 41 E5 CD 71 35 FE 32 ...:.>.. A..q5.2
0019F0: 28 0A CD AA 10 D1 3E 44 CD D4 0F C9 E1 E5 7E FE (.....>D......~.
001A00: 4F 20 0F CD 71 35 3E 00 CD 75 0D D1 3E 45 CD D4 O ..q5>..u..>E..
001A10: 0F C9 CD 76 06 42 61 64 20 76 65 63 74 6F 72 20 ...v.Bad vector
001A20: 64 65 66 69 6E 69 74 69 6F 6E 00 FE 41 20 52 7E definition..A R~
001A30: FE 4F C2 B3 0F E5 CD 71 35 3A 1E 3E FE 4F 20 05 .O.....q5:.>.O .
001A40: CD 95 0F 18 03 21 00 00 E5 3E 42 21 9D 10 CD 60 .....!...>B!...`
001A50: 14 3A 1E 3E FE 02 20 19 CD 71 35 CD 02 11 3E 47 .:.>.. ..q5...>G
001A60: CD 99 14 E3 C1 D1 C5 CD D4 0F D1 EB CD 03 08 EB ................
001A70: C9 FE 08 20 0C CD 71 35 3E 00 CD 75 0D 3E 46 18 ... ..q5>..u.>F.
001A80: DF CD 76 06 42 61 64 20 50 52 4F 43 45 44 55 52 ..v.Bad PROCEDUR
001A90: 45 20 64 65 66 69 6E 69 74 69 6F 6E 00 CD 76 06 E definition..v.
001AA0: 4D 69 73 73 69 6E 67 20 29 00 3E 01 18 02 3E 00 Missing ).>...>.
001AB0: F5 A7 28 11 3A 1E 3E FE 52 20 0A CD 67 0D E5 CD ..(.:.>.R ..g...
001AC0: 71 35 E1 18 05 3E 00 CD 75 0D 3A 1E 3E FE 36 20 q5...>..u.:.>.6
001AD0: 11 F1 E5 F5 CD 71 35 F1 CD B0 10 D1 3E 36 CD D4 .....q5.....>6..
001AE0: 0F C9 F1 C9 3E 37 CD 4B 13 CD 02 11 3A 1E 3E FE ....>7.K....:.>.
001AF0: 49 28 0E FE 40 28 0A E5 CD E4 10 D1 3E 4A CD D4 I(..@(......>J..
001B00: 0F C9 CD 53 11 7C B5 20 15 CD 76 06 45 78 70 65 ...S.|. ..v.Expe
001B10: 63 74 69 6E 67 20 63 6F 6D 6D 61 6E 64 00 3A 1E cting command.:.
001B20: 3E FE 27 28 09 FE 28 28 05 FE 29 28 01 C9 CD 70 >.'(..((..)(...p
001B30: 14 F5 E5 CD 71 35 E1 F1 FE 27 28 04 FE 5A 20 05 ....q5...'(..Z .
001B40: CD 67 0D 18 D9 F5 E5 3E 00 CD 75 0D D1 F1 CD D4 .g.....>..u.....
001B50: 0F 18 CB 3A 1E 3E 47 21 71 11 7E A7 20 04 21 00 ...:.>G!q.~. .!.
001B60: 00 C9 B8 20 07 23 5E 23 56 EB 78 E9 23 23 23 18 ... .#^#V.x.###.
001B70: E9 4F C0 11 4D C0 11 2E C0 11 0C C0 11 17 C0 11 .O..M...........
001B80: 26 C0 11 38 C0 11 41 C0 11 0F F9 11 22 F9 11 14 &..8..A....."...
001B90: 07 12 31 07 12 34 07 12 30 07 12 2D 1F 12 0D D8 ..1..4..0..-....
001BA0: 12 1C 5A 12 03 5A 12 23 5A 12 0E 5A 12 0B 5A 12 ..Z..Z.#Z..Z..Z.
001BB0: 2A 66 12 05 9B 12 07 C4 12 48 95 12 50 3F 13 00 *f.......H..P?..
001BC0: CD AE 10 3A 1E 3E FE 3E 20 0E E5 CD 71 35 CD AE ...:.>.> ...q5..
001BD0: 10 3E 3E D1 CD D4 0F C9 FE 3F 20 14 7E FE 4F C2 .>>......? .~.O.
001BE0: B3 0F E5 CD 71 35 CD 53 11 D1 3E 3F CD D4 0F C9 ....q5.S..>?....
001BF0: 7E FE 4B C2 09 11 36 4C C9 F5 CD 71 35 3E 00 CD ~.K...6L...q5>..
001C00: 75 0D F1 CD 67 0D C9 F5 CD 71 35 3E 00 CD 75 0D u...g....q5>..u.
001C10: E5 3E 06 CD 4B 13 CD 02 11 D1 F1 CD D4 0F C9 CD .>..K...........
001C20: 71 35 3E 00 CD 75 0D 3E 06 CD 4B 13 E5 CD 02 11 q5>..u.>..K.....
001C30: E5 3E 0A 21 49 12 CD 60 14 CD 02 11 D1 3E 2D CD .>.!I..`.....>-.
001C40: D4 0F D1 EB CD 03 08 EB C9 CD 76 06 45 4C 53 45 ..........v.ELSE
001C50: 20 65 78 70 65 63 74 65 64 00 2A 2A 3E CD E5 07 expected.**>...
001C60: E5 CD 71 35 E1 C9 CD 71 35 3E 00 CD 75 0D E5 3E ..q5...q5>..u..>
001C70: 15 21 84 12 CD 60 14 21 E4 10 CD EB 13 D1 3E 2A .!...`.!......>*
001C80: CD D4 0F C9 CD 76 06 49 4E 54 4F 20 65 78 70 65 .....v.INTO expe
001C90: 63 74 65 64 00 21 07 0F C3 EB 13 CD 71 35 3E 00 cted.!......q5>.
001CA0: CD 75 0D E5 3E 3F 21 B6 12 CD 60 14 CD 53 11 D1 .u..>?!...`..S..
001CB0: 3E 05 CD D4 0F C9 CD 76 06 3A 20 65 78 70 65 63 >......v.: expec
001CC0: 74 65 64 00 CD 71 35 3E 3F 21 B6 12 CD 60 14 CD ted..q5>?!...`..
001CD0: 53 11 3E 07 CD 67 0D C9 CD 71 35 CD AC 0F E5 21 S.>..g...q5....!
001CE0: 2F 13 3E 08 CD 60 14 3E 00 CD 75 0D E5 3E 2C 21 /.>..`.>..u..>,!
001CF0: 2F 13 CD 60 14 3E 00 CD 75 0D E5 21 00 00 3A 1E /..`.>..u..!..:.
001D00: 3E FE 04 20 08 CD 71 35 3E 00 CD 75 0D E5 3E 06 >.. ..q5>..u..>.
001D10: CD 4B 13 CD 02 11 3E 0D CD 70 14 D1 CD D4 0F E3 .K....>..p......
001D20: CD 03 08 E1 E3 CD 03 08 E1 E3 CD 03 08 E1 C9 CD ................
001D30: 76 06 42 61 64 20 46 4F 52 20 6C 6F 6F 70 00 CD v.Bad FOR loop..
001D40: 71 35 CD AE 10 3E 50 CD 67 0D C9 E5 21 1E 3E BE q5...>P.g...!.>.
001D50: 28 02 E1 C9 F5 CD 71 35 F1 E1 C9 2A 57 3E E5 2A (.....q5...*W>.*
001D60: 59 3E E5 21 00 00 E5 21 00 00 39 E5 E5 ED 73 57 Y>.!...!..9...sW
001D70: 3E 21 D1 13 22 59 3E CD AC 0F 3A 1E 3E FE 08 28 >!.."Y>...:.>..(
001D80: 2A FE 3F 28 26 CD 76 06 4E 65 65 64 20 3A 20 6F *.?(&.v.Need : o
001D90: 72 20 3D 20 69 6E 20 63 6F 6E 73 74 61 6E 74 20 r = in constant
001DA0: 64 65 66 69 6E 69 74 69 6F 6E 00 E3 CD 71 35 3E definition...q5>
001DB0: 00 CD 75 0D D1 D5 3E 1E CD D4 0F E3 21 00 00 CD ..u...>.....!...
001DC0: 03 08 C1 DD E1 DD 71 00 DD 70 01 21 FA FF 09 E5 ......q..p.!....
001DD0: E5 3E 37 CD 4B 13 3A 1E 3E FE 4F 28 9A E1 E1 E1 .>7.K.:.>.O(....
001DE0: D1 ED 53 59 3E D1 ED 53 57 3E C9 ED 5B 1F 3E D5 ..SY>..SW>..[.>.
001DF0: E5 3E 48 21 47 14 CD 60 14 E1 CD 6F 14 3A 1E 3E .>H!G..`...o.:.>
001E00: FE 49 28 0E CD 76 06 4D 69 73 73 69 6E 67 20 24 .I(..v.Missing $
001E10: 29 00 EB 2A 1F 3E C1 A7 ED 42 28 24 2A 33 3E ED )..*.>...B($*3>.
001E20: 4B 1F 3E A7 ED 42 20 1D CD 76 06 53 65 63 74 69 K.>..B ..v.Secti
001E30: 6F 6E 20 74 61 67 20 6D 69 73 6D 61 74 63 68 00 on tag mismatch.
001E40: D5 CD 71 35 D1 EB C9 CD 76 06 4D 69 73 73 69 6E ..q5....v.Missin
001E50: 67 20 24 28 00 E1 7E 23 E5 A7 C8 CD D6 07 18 F5 g $(..~#........
001E60: C5 D5 47 3A 1E 3E B8 20 06 CD 71 35 D1 C1 C9 E9 ..G:.>. ..q5....
001E70: F5 3A C5 3E A7 20 02 F1 C9 F1 E5 C5 47 21 8D 14 .:.>. ......G!..
001E80: 7E B8 28 04 23 23 18 F8 23 7E C1 E1 C9 27 5A 28 ~.(.##..#~...'Z(
001E90: 5B 29 5C 34 5D 30 5E 0D 5F C5 F5 3A C5 3E A7 28 [)\4]0^._..:.>.(
001EA0: 02 3E 01 47 3A C6 3E A7 28 02 04 04 78 87 47 28 .>.G:.>.(...x.G(
001EB0: 03 C6 0C 47 F1 80 C1 C9 E5 2A 4D 3E 22 6C 3E CD ...G.....*M>"l>.
001EC0: C3 16 2A 2E 3E 22 37 3E 21 00 00 22 39 3E 22 41 ..*.>"7>!.."9>"A
001ED0: 3E 22 43 3E 22 47 3E 22 55 3E 2A 4B 3E 3E 00 32 >"C>"G>"U>*K>>.2
001EE0: 3C 3E 2A 2A 3E 22 3D 3E 2A 1C 3E 11 5A 00 19 22 <>**>"=>*.>.Z.."
001EF0: 3F 3E 3E 40 32 72 3E 32 76 3E 32 6E 3E 32 7A 3E ?>>@2r>2v>2n>2z>
001F00: 32 7E 3E CD 74 16 CD 12 16 CD 63 16 CD 0A 17 E1 2~>.t.....c.....
001F10: CD 6E 15 2A 2A 3E ED 5B 3D 3E A7 ED 52 CB 3C CB .n.**>.[=>..R.<.
001F20: 1D CB 3C CB 1D EB 2A 68 3E 73 23 72 ED 5B 37 3E ..<...*h>s#r.[7>
001F30: 2A 6A 3E 73 23 72 2A 3D 3E ED 5B 2A 3E A7 ED 52 *j>s#r*=>.[*>..R
001F40: 28 0C 19 06 04 23 7E CD 83 08 10 F9 18 EF 2A AE (....#~.......*.
001F50: 3E CD AD 08 2A 47 3E 7E 23 B6 C0 CD 4A 34 55 6E >...*G>~#...J4Un
001F60: 64 65 66 69 6E 65 64 20 53 54 41 52 54 00 7C B5 defined START.|.
001F70: C8 E5 2A 3F 3E ED 5B 41 3E 19 EB 21 CE FF 39 A7 ..*?>.[A>..!..9.
001F80: ED 52 DA 9B 32 E1 7E EB 21 8E 15 C3 F6 31 4A 3F .R..2.~.!....1J?
001F90: 17 16 52 17 3E 30 1B 50 A9 1C 1E 02 1D 14 88 1D ..R.>0.P........
001FA0: 31 8C 1D 4C EA 1D 2D 7C 1E 34 E5 1E 5D E5 1E 30 1..L..-|.4..]..0
001FB0: EF 1E 5E EF 1E 22 70 1F 03 D8 1F 1C B4 1F 27 07 ..^.."p.......'.
001FC0: 21 5A 07 21 28 4C 21 5B 4C 21 29 56 21 5C 56 21 !Z.!(L![L!)V!\V!
001FD0: 2B DA 21 2A 70 22 05 65 23 07 D3 23 0B EA 23 0D +.!*p".e#..#..#.
001FE0: 15 24 5F 15 24 23 AB 1F 12 3C 1D 0F 32 20 3F 41 .$_.$#...<..2 ?A
001FF0: 20 0E 6A 25 00 CD 4A 34 45 72 72 6F 72 20 69 6E .j%..J4Error in
002000: 20 74 72 61 6E 73 6C 61 74 69 6F 6E 20 6E 6F 64 translation nod
002010: 65 00 3E 21 CD 83 08 CD F0 20 22 47 3E CD 58 16 e.>!..... "G>.X.
002020: 36 00 23 36 00 3E 11 CD 83 08 CD F0 20 22 6A 3E 6.#6.>...... "j>
002030: CD 58 16 3E 01 CD 83 08 CD F0 20 22 68 3E CD 58 .X.>...... "h>.X
002040: 16 3E 3E CD 83 08 3A C8 3E CD 83 08 3E C3 CD 83 .>>...:.>...>...
002050: 08 2A 98 3E CD AD 08 C9 7E CD 83 08 23 7E CD 83 .*.>....~...#~..
002060: 08 2B C9 21 03 01 11 73 02 7E CD 83 08 23 1B 7A .+.!...s.~...#.z
002070: B3 20 F6 C9 ED 4B 37 3E 21 0E 00 09 44 4D DD 21 . ...K7>!...DM.!
002080: 8A 3E 21 9D 16 5E 23 56 23 7A A3 FE FF C8 EB 09 .>!..^#V#z£.....
002090: DD 75 00 DD 74 01 EB DD 23 DD 23 18 E8 00 00 02 .u..t...#.#.....
0020A0: 00 04 00 08 00 24 00 70 00 8F 00 90 00 C8 00 D3 .....$.p........
0020B0: 00 E9 00 F0 00 FA 00 20 01 43 01 84 01 CF 01 2F ....... .C...../
0020C0: 02 FF FF DD 21 B0 3E 21 E8 16 7E A7 C8 E5 DD E5 ....!.>!..~.....
0020D0: CD D7 34 DD E1 DD 75 00 DD 74 01 DD 23 DD 23 E1 ..4...u..t..#.#.
0020E0: 7E 23 CB 7F 20 E4 18 F8 6C 65 76 65 EC 6C 6F 6E ~#.. ...leve.lon
0020F0: 67 6A 75 6D F0 61 70 74 6F 76 65 E3 72 64 76 64 gjum.aptove.rdvd
002100: F5 00 A2 3E A4 3E A6 3E AC 3E 21 B0 3E DD 21 02 ...>.>.>.>!.>.!.
002110: 17 06 04 C5 5E 23 56 23 E5 DD E5 CD 26 32 DD E1 ....^#V#....&2..
002120: 2B 36 00 23 36 02 23 36 01 23 DD 5E 00 DD 56 01 +6.#6.#6.#.^..V.
002130: 1A 77 13 23 1A 77 E1 DD 23 DD 23 C1 10 D5 C9 EB .w.#.w..#.#.....
002140: 2B 56 2B 5E E5 EB CD 6E 15 E1 2B 56 2B 5E EB C3 +V+^...n..+V+^..
002150: 6E 15 2A 51 3E E5 3A 3B 3E F5 2A 39 3E E5 2A 1C n.*Q>.:;>.*9>.*.
002160: 3E E5 EB 2B 56 2B 5E 2B E5 EB CD CC 17 E1 56 2B >..+V+^+......V+
002170: 5E EB CD 6E 15 E1 22 1C 3E C1 2A 39 3E ED 43 39 ^..n..".>.*9>.C9
002180: 3E CD 90 17 C1 3A 3B 3E CD D3 33 E1 22 51 3E C9 >....:;>..3."Q>.
002190: 54 5D A7 ED 42 C8 D5 DD E1 DD 7E 05 FE 09 20 24 T]..B.....~... $
0021A0: D5 C5 DD 5E 02 DD 56 03 CD 64 33 55 6E 64 65 66 ...^..V..d3Undef
0021B0: 69 6E 65 64 20 69 64 65 6E 74 69 66 69 65 72 2C ined identifier,
0021C0: A0 C1 DD E1 DD 6E 00 DD 66 01 18 C4 7E FE 01 20 .....n..f...~..
0021D0: 53 2B E5 2B 2B 56 2B 5E 1A 21 F0 17 CD F6 31 E1 S+.++V+^.!....1.
0021E0: 56 2B 5E 2B E5 EB CD CC 17 E1 56 2B 5E EB 18 3D V+^+......V+^..=
0021F0: 47 55 18 46 55 18 54 55 18 55 55 18 56 55 18 57 GU.FU.TU.UU.VU.W
002200: 55 18 58 55 18 59 55 18 44 74 18 45 D0 18 00 CD U.XU.YU.Dt.E....
002210: 4A 34 44 65 63 6C 61 72 61 74 69 6F 6E 20 65 72 J4Declaration er
002220: 72 6F 72 00 E5 EB 21 F0 17 CD F6 31 E1 7E EB 21 ror...!....1.~.!
002230: 35 18 C3 F6 31 44 54 18 45 54 18 47 27 19 46 27 5...1DT.ET.G'.F'
002240: 19 54 27 19 55 27 19 56 27 19 57 27 19 58 27 19 .T'.U'.V'.W'.X'.
002250: 59 27 19 00 C9 EB 2B 56 2B 5E D5 CD 26 32 2B 36 Y'....+V+^..&2+6
002260: 00 23 36 02 23 36 00 23 E5 CD F0 20 EB E1 73 23 .#6.#6.#... ..s#
002270: 72 EB C1 C9 EB 2B 56 2B 5E 2B 46 2B 4E 1A FE 36 r....+V+^+F+N..6
002280: 20 21 0A FE 36 20 21 EB 2B 56 2B 5E 2B E5 60 69 !..6 !.+V+^+.`i
002290: 2B 46 2B 4E 2B E5 CD C2 18 E1 46 2B 4E E1 56 2B +F+N+.....F+N.V+
0022A0: 5E 18 DA 0A FE 36 20 1A CD 3F 33 45 78 70 72 65 ^....6 ..?3Expre
0022B0: 73 73 69 6F 6E 2F 69 64 20 6D 69 73 6D 61 74 63 ssion/id mismatc
0022C0: E8 C9 C5 CD EE 1C E1 CD 76 25 3E E5 CD 83 08 C9 ........v%>.....
0022D0: D5 DD E1 DD 6E FC DD 66 FD CD 19 30 23 29 ED 5B ....n..f...0#).[
0022E0: 51 3E 19 22 51 3E D5 ED 4B 53 3E A7 ED 42 38 04 Q>."Q>..KS>..B8.
0022F0: 09 22 53 3E DD 6E FE DD 66 FF CD ED 1C 3E 2A CD ."S>.n..f....>*.
002300: 83 08 2A 8C 3E CD AD 08 E1 7C B5 28 0D 3E 11 CD ..*.>....|.(.>..
002310: 83 08 CD AD 08 3E 19 CD 83 08 21 21 19 CD CC 1C .....>....!!....
002320: C9 05 CB 3C CB 1D E5 D5 3A 3C 3E A7 28 0D 3E C3 ...<....:<>.(.>.
002330: CD 83 08 CD F0 20 CD 58 16 E3 E5 2A 55 3E E3 22 ..... .X...*U>."
002340: 55 3E 2B 56 2B 5E 2B E5 2A 49 3E A7 ED 52 20 0A U>+V+^+.*I>..R .
002350: 2A 47 3E ED 4B 37 3E 71 23 70 CD AC 32 ED 5B 37 *G>.K7>q#p..2.[7
002360: 3E CD 98 33 D1 2A 53 3E E5 2A 4F 3E E5 2A 39 3E >..3.*S>.*O>.*9>
002370: E5 2A 1C 3E E5 3A 3B 3E F5 3E 7F 32 3B 3E 3A 3C .*.>.:;>.>.2;>:<
002380: 3E 3C 32 3C 3E 21 00 00 22 53 3E 22 51 3E EB 56 ><2<>!.."S>"Q>.V
002390: 2B 5E 2B E5 EB CD D5 1C CD 49 1A D1 2A 7A 3E E5 +^+......I..*z>.
0023A0: 2A 7C 3E E5 3A 3B 3E 67 2E 00 22 7A 3E CD F0 20 *|>.:;>g.."z>..
0023B0: 22 7C 3E EB CD 18 1A ED 5B 37 3E DD 21 7A 3E CD "|>.....[7>.!z>.
0023C0: BA 33 E1 22 7C 3E E1 22 7A 3E 2A 53 3E 7C B5 21 .3."|>."z>*S>|.!
0023D0: E8 1A 20 03 21 15 1B CD 6F 14 ED 5B 53 3E 2A 4F .. .!...o..[S>*O
0023E0: 3E 73 23 72 3A 3C 3E 3D 32 3C 3E F1 32 3B 3E E1 >s#r:<>=2<>.2;>.
0023F0: 22 1C 3E C1 2A 39 3E ED 43 39 3E CD 90 17 E1 22 ".>.*9>.C9>...."
002400: 4F 3E E1 22 53 3E E1 22 55 3E 3A 3C 3E A7 C8 E1 O>."S>."U>:<>...
002410: ED 5B 37 3E 73 23 72 C9 E5 DD E1 56 2B 5E EB DD .[7>s#r....V+^..
002420: 7E 05 FE 46 28 10 FE 54 28 0C FE 56 28 08 FE 58 ~..F(..T(..V(..X
002430: 28 04 CD 6E 15 C9 7E FE 33 20 05 EB CD D1 26 C9 (..n..~.3 ....&.
002440: CD 76 25 3E EB CD 83 08 C9 E5 D5 3E 21 CD 83 08 .v%>.......>!...
002450: CD F0 20 22 4F 3E CD 58 16 3E CD CD 83 08 CD 97 .. "O>.X.>......
002460: 1A CD AD 08 3E DD CD 83 08 3E 21 CD 83 08 3A 3B ....>....>!...:;
002470: 3E D6 06 32 3B 3E 3C 5F 16 00 21 00 00 A7 ED 52 >..2;><_..!....R
002480: CD AD 08 3E DD CD 83 08 3E 39 CD 83 08 2A 55 3E ...>....>9...*U>
002490: 7E CD B3 1A D1 E1 C9 2A 55 3E 7E FE 46 28 10 FE ~......*U>~.F(..
0024A0: 47 28 0C FE 54 28 08 FE 55 28 04 2A A8 3E C9 2A G(..T(..U(.*.>.*
0024B0: 9C 3E C9 FE 54 28 23 FE 55 28 1F FE 58 28 1B FE .>..T(#.U(..X(..
0024C0: 59 28 17 FE 5A 28 13 FE 5B 28 0F FE 5C 28 0B FE Y(..Z(..[(..\(..
0024D0: 5D 28 07 FE 5E 28 03 FE 5F C0 3E CD CD 83 08 E5 ](..^(.._.>.....
0024E0: 2A AA 3E CD AD 08 E1 C9 3E 2A CD 83 08 2A 8C 3E *.>.....>*...*.>
0024F0: CD AD 08 3E 22 CD 83 08 2A 8E 3E CD AD 08 3E E1 ...>"...*.>...>.
002500: CD 83 08 3E 22 CD 83 08 2A 8C 3E CD AD 08 21 2C ...>"...*.>...!,
002510: 1B CD CC 1C C9 3E E1 CD 83 08 3E 22 CD 83 08 2A .....>....>"...*
002520: 8C 3E CD AD 08 21 2C 1B CD CC 1C C9 03 DD E1 C9 .>...!,.........
002530: EB 2B 56 2B 5E 2B 46 2B 6E 60 1A FE 36 20 2B E5 .+V+^+F+n`..6 +.
002540: EB 2B 46 2B 4E 2B 56 2B 5E E1 D5 C5 7E FE 36 20 .+F+N+V+^...~.6
002550: 14 2B 46 2B 4E 2B 56 2B 5E E1 D5 EB 60 69 CD 6A .+F+N+V+^...`i.j
002560: 1B E1 D1 18 D5 E1 E1 C3 A8 18 7E FE 36 CA A8 18 ..........~.6...
002570: 1A FE 4F 28 12 FE 26 28 1C FE 38 CA F8 1B FE 51 ..O(..&(..8....Q
002580: CA 1E 1C CD C3 31 C9 D5 CD 76 25 D1 CD AC 32 38 .....1...v%...28
002590: 03 CD A8 31 C9 CD A2 1C 28 1F D5 CD 76 25 3E E5 ...1....(...v%>.
0025A0: CD 83 08 E1 2B 56 2B 5E EB CD 76 25 21 B3 1B CD ....+V+^..v%!...
0025B0: CC 1C C9 05 29 D1 73 23 72 E5 EB 2B 56 2B 5E EB ....).s#r..+V+^.
0025C0: CD 76 25 3E 29 CD 83 08 E1 E5 EB CD 3B 30 38 0B .v%>).......;08.
0025D0: D1 CD 57 2C 21 F4 1B CD CC 1C C9 3E 36 CD 83 08 ..W,!......>6...
0025E0: 7B CD 83 08 3E 23 CD 83 08 3E 36 CD 83 08 7A CD {...>#...>6...z.
0025F0: 83 08 E1 C9 03 73 23 72 CD A2 1C 28 14 D5 CD 76 .....s#r...(...v
002600: 25 3E E5 CD 83 08 D1 CD C7 28 21 B3 1B CD CC 1C %>.......(!.....
002610: C9 E5 CD C7 28 3E 29 CD 83 08 E1 C3 C9 1B CD A2 ....(>).........
002620: 1C 28 17 D5 CD 76 25 3E E5 CD 83 08 E1 CD 7B 2B .(...v%>......{+
002630: 21 37 1C CD CC 1C C9 02 D1 73 E5 EB CD 7B 2B D1 !7.......s...{+.
002640: D5 CD 3B 30 30 0B 3E 36 CD 83 08 7B CD 83 08 D1 ..;00.>6...{....
002650: C9 D1 CD AC 32 D8 DD 7E 05 FE 02 30 13 3E DD CD ....2..~...0.>..
002660: 83 08 3E 7E CD 83 08 DD 7E 08 3D CD 83 08 18 2C ..>~....~.=....,
002670: FE 04 30 20 DD 7E 06 A7 28 0C 3E 36 CD 83 08 DD ..0 .~..(.>6....
002680: 7E 07 CD 83 08 C9 3E 11 CD 83 08 CD D9 31 3E 73 ~.....>......1>s
002690: CD 83 08 C9 3E 3A CD 83 08 CD D9 31 3E 77 CD 83 ....>:.....1>w..
0026A0: 08 C9 7E FE 4F C8 FE 4D C9 EB 2B 56 2B 5E EB 7E ..~.O..M..+V+^.~
0026B0: FE 36 20 10 2B 56 2B 5E E5 EB CD C4 1C E1 2B 56 .6 .+V+^......+V
0026C0: 2B 5E 18 EA CD 19 30 7D CD 83 08 C9 46 23 7E CD +^....0}....F#~.
0026D0: 83 08 10 F9 C9 7C B5 C8 7E FE 36 20 10 2B E5 2B .....|..~.6 .+.+
0026E0: 2B 56 2B 5E EB CD D5 1C E1 56 2B 5E EB EB CD 26 +V+^.....V+^...&
0026F0: 32 36 00 23 36 01 23 23 3A 3B 3E 77 3D 3D 32 3B 26.#6.##:;>w==2;
002700: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
002710: 02 00 00 00 02 09 50 E5 02 00 C1 02 00 00 00 02 ......P.........
002720: 02 00 C2 02 00 00 00 02 02 00 C3 02 00 00 00 02 ................
002730: 02 00 C4 02 00 00 00 02 02 00 C5 02 00 00 00 02 ................
002740: 02 00 C6 02 00 00 00 02 02 00 C7 02 00 00 00 02 ................
002750: 02 00 C8 02 00 00 00 02 02 00 C9 02 00 00 00 02 ................
002760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002770: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002790: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0027A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0027B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0027C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0027D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0027E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0027F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002800: 3E C9 EB 2B 56 2B 5E 2B E5 EB 7C B5 20 0B E1 56 >..+V+^+..|. ..V
002810: 2B 5E EB 7C B5 C8 C3 6E 15 2B 56 2B 5E 2B D5 56 +^.|...n.+V+^+.V
002820: 2B 5E E3 E5 EB CD 19 30 D1 E5 CD 26 32 36 04 23 +^.....0...&26.#
002830: 23 D1 73 23 72 E1 2B 56 2B 5E 18 CD EB 2B 56 2B #.s#r.+V+^...+V+
002840: 5E E5 D5 CD 1A 22 D1 CD 53 1D E1 2B 56 2B 5E EB ^...."..S..+V+^.
002850: C3 6E 15 7A B3 C8 EB 2B 56 2B 5E E5 CD 68 1D E1 .n.z...+V+^..h..
002860: 2B 2B 2B 56 2B 5E 18 EB 3E 08 F5 CD 26 32 F1 2B +++V+^..>...&2.+
002870: 36 00 23 77 23 36 01 23 ED 5B 45 3E 73 23 72 62 6.#w#6.#.[E>s#rb
002880: 6B 13 13 ED 53 45 3E C9 3E 00 18 02 3E FF CD B0 k...SE>.>...>...
002890: 20 21 00 00 22 82 3E 22 86 3E CD F0 20 22 84 3E !..".>".>.. ".>
0028A0: CD F0 20 22 88 3E EB 2B 56 2B 5E 2B F5 E5 F5 EB .. ".>.+V+^+....
0028B0: CD E2 2C F1 ED 5B 37 3E CD D1 1D E1 56 2B 5E EB ..,..[7>....V+^.
0028C0: CD 6E 15 F1 EE FF ED 5B 37 3E CD D1 1D CD C3 20 .n.....[7>.....
0028D0: C9 DD E5 DD 21 82 3E A7 28 04 DD 21 86 3E DD 6E ....!.>.(..!.>.n
0028E0: 02 DD 66 03 73 23 72 DD E1 C9 EB 2B 3A 3B 3E F5 ..f.s#r....+:;>.
0028F0: E5 2B 2B 56 2B 5E EB CD 47 1E E1 56 2B 5E EB E5 .++V+^..G..V+^..
002900: 7E FE 4F 20 22 EB CD AC 32 38 33 DD 7E 05 FE 02 ~.O "...283.~...
002910: 28 04 FE 03 20 11 E1 3E CD CD 83 08 CD D9 31 C1 (... ..>......1.
002920: 3A 3B 3E CD D3 33 C9 E1 CD 76 25 3E CD CD 83 08 :;>..3...v%>....
002930: 2A 96 3E CD AD 08 C1 3A 3B 3E CD D3 33 C9 E1 C1 *.>....:;>..3...
002940: 3A 3B 3E CD D3 33 C9 47 7C B5 20 02 78 C9 04 3A :;>..3.G|. .x..:
002950: 3B 3E 3D 3D 32 3B 3E 7E FE 36 28 0C 78 F5 CD 76 ;>==2;>~.6(.x..v
002960: 25 3E E5 CD 83 08 F1 C9 2B E5 2B 2B 56 2B 5E 78 %>......+.++V+^x
002970: EB CD 47 1E E1 F5 56 2B 5E EB 18 E2 CD B0 20 21 ..G...V+^..... !
002980: 00 00 22 82 3E 22 86 3E CD F0 20 22 84 3E CD F0 ..".>".>.. ".>..
002990: 20 22 88 3E EB 2B E5 2B 2B 2B 2B 56 2B 5E EB 3E ".>.+.++++V+^.>
0029A0: 00 CD E2 2C DD 21 82 3E ED 5B 37 3E CD BA 33 E1 ...,.!.>.[7>..3.
0029B0: 56 2B 5E E5 EB CD 6E 15 3E C3 CD 83 08 CD F0 20 V+^...n.>......
0029C0: E5 CD 58 16 ED 5B 37 3E DD 21 86 3E CD BA 33 E1 ..X..[7>.!.>..3.
0029D0: E3 2B 56 2B 5E EB CD 6E 15 E1 ED 5B 37 3E 73 23 .+V+^..n...[7>s#
0029E0: 72 CD C3 20 C9 CD 8A 20 CD B0 20 3E 00 18 08 CD r.. ... .. >....
0029F0: 8A 20 CD B0 20 3E FF 44 4D F5 3E 00 32 72 3E 32 . .. >.DM.>.2r>2
002A00: 82 3E 32 86 3E 3C 32 76 3E 3A 3B 3E 32 77 3E 32 .>2.><2v>:;>2w>2
002A10: 73 3E 2A 37 3E 22 78 3E CD F0 20 22 74 3E CD F0 s>*7>"x>.. "t>..
002A20: 20 22 84 3E CD F0 20 22 88 3E 1A CD B3 1A F1 EB ".>.. ".>......
002A30: 2B 56 2B 5E 2B F5 E5 F5 EB CD E2 2C F1 ED 5B 37 +V+^+......,..[7
002A40: 3E CD D1 1D E1 56 2B 5E EB CD 6E 15 3E C3 2A 78 >....V+^..n.>.*x
002A50: 3E CD 80 2D F1 EE FF ED 5B 37 3E CD D1 1D ED 5B >..-....[7>....[
002A60: 37 3E DD 21 72 3E CD BA 33 CD C3 20 CD 9D 20 C9 7>.!r>..3.. .. .
002A70: EB 2B 56 2B 5E EB CD 76 25 3E EB CD 83 08 3A 6E .+V+^..v%>....:n
002A80: 3E F6 80 32 6E 3E DD 21 6E 3E 21 8F 1F 18 50 CD >..2n>.!n>!...P.
002A90: 3F 33 52 45 53 55 4C 54 49 53 20 6F 75 74 73 69 ?3RESULTIS outsi
002AA0: 64 65 20 61 20 56 41 4C 4F C6 C9 DD 21 7A 3E 21 de a VALO...!z>!
002AB0: 10 20 18 2B DD 21 76 3E 21 BD 1F 18 22 CD 3F 33 . .+.!v>!...".?3
002AC0: 4C 4F 4F 50 20 66 6F 75 6E 64 20 6F 75 74 73 69 LOOP found outsi
002AD0: 64 65 20 6C 6F 6F F0 C9 DD 21 72 3E 21 F4 1F DD de loo...!r>!...
002AE0: CB 00 76 28 01 E9 DD 46 01 3A 3B 3E CD DA 33 3E ..v(...F.:;>..3>
002AF0: C3 C3 6D 2D CD 3F 33 42 52 45 41 4B 20 66 6F 75 ..m-.?3BREAK fou
002B00: 6E 64 20 6F 75 74 73 69 64 65 20 6C 6F 6F F0 C9 nd outside loo..
002B10: CD 3F 33 52 45 54 55 52 4E 20 66 6F 75 6E 64 20 .?3RETURN found
002B20: 6F 75 74 73 69 64 65 20 46 55 4E 43 2F 50 52 4F outside FUNC/PRO
002B30: C3 C9 EB 2B 56 2B 5E EB CD 76 25 3E E9 CD 83 08 ...+V+^..v%>....
002B40: C9 EB 2B 56 2B 5E E5 CD AC 32 38 35 DD 7E 05 FE ..+V+^...285.~..
002B50: 08 28 1D FE 09 28 19 CD 3F 33 4C 61 62 65 6C 73 .(...(..?3Labels
002B60: 20 6E 65 65 64 20 61 20 67 6C 6F 62 61 EC 18 11 need a globa...
002B70: DD 36 05 08 ED 5B 37 3E DD 4E 07 DD 46 08 CD 61 .6...[7>.N..F..a
002B80: 22 E1 2B 56 2B 5E EB C3 6E 15 C1 2A 76 3E E5 2A ".+V+^..n..*v>.*
002B90: 78 3E E5 2A 72 3E E5 2A 74 3E E5 C5 C9 C1 E1 22 x>.*r>.*t>....."
002BA0: 74 3E E1 22 72 3E E1 22 78 3E E1 22 76 3E C5 C9 t>."r>."x>."v>..
002BB0: C1 2A 82 3E E5 2A 84 3E E5 2A 86 3E E5 2A 88 3E .*.>.*.>.*.>.*.>
002BC0: E5 C5 C9 C1 E1 22 88 3E E1 22 86 3E E1 22 84 3E .....".>.".>.".>
002BD0: E1 22 82 3E C5 C9 DD CB 00 46 28 0A DD 6E 02 DD .".>.....F(..n..
002BE0: 66 03 CD AD 08 C9 DD 6E 02 DD 66 03 CD 58 16 C9 f......n..f..X..
002BF0: D5 2A 6C 3E E5 23 23 22 6C 3E ED 5B 3D 3E A7 ED .*l>.##"l>.[=>..
002C00: 52 D2 9B 32 E1 D1 C9 CD 8A 20 3E 00 32 72 3E 3C R..2..... >.2r><
002C10: 32 76 3E CD F0 20 22 74 3E 2A 37 3E 22 78 3E 3A 2v>.. "t>*7>"x>:
002C20: 3B 3E 32 77 3E 32 73 3E 1A CD B3 1A EB 2B 56 2B ;>2w>2s>.....+V+
002C30: 5E EB CD 6E 15 3E C3 2A 78 3E CD 80 2D ED 5B 37 ^..n.>.*x>..-.[7
002C40: 3E DD 21 72 3E CD BA 33 CD 9D 20 C9 CD 8A 20 CD >.!r>..3.. ... .
002C50: B0 20 3E FF 18 08 CD 8A 20 CD B0 20 3E 00 F5 3E . >..... .. >..>
002C60: 00 32 72 3E 32 76 3E 32 82 3E 32 86 3E CD F0 20 .2r>2v>2.>2.>..
002C70: 22 74 3E CD F0 20 22 78 3E CD F0 20 22 84 3E CD "t>.. "x>.. ".>.
002C80: F0 20 22 88 3E 3A 3B 3E 32 77 3E 32 73 3E 2A 37 . ".>:;>2w>2s>*7
002C90: 3E F1 F5 E5 F5 1A CD B3 1A EB 2B 56 2B 5E 2B E5 >.........+V+^+.
002CA0: EB CD 6E 15 ED 5B 37 3E DD 21 76 3E CD BA 33 E1 ..n..[7>.!v>..3.
002CB0: 56 2B 5E EB F1 CD E2 2C D1 F1 F5 EE FF CD D1 1D V+^....,........
002CC0: F1 ED 5B 37 3E CD D1 1D ED 5B 37 3E DD 21 72 3E ..[7>....[7>.!r>
002CD0: CD BA 33 CD C3 20 CD 9D 20 C9 EB 2B 56 2B 5E 2B ..3.. .. ..+V+^+
002CE0: E5 D5 CD 1A 22 D1 CD F1 21 E1 56 2B 5E EB C3 6E ...."...!.V+^..n
002CF0: 15 7A B3 C8 EB 2B E5 2B 2B 56 2B 5E EB CD 19 30 .z...+.++V+^...0
002D00: EB ED 4B 45 3E CD 61 22 E1 56 2B 5E E5 CD 68 1D ..KE>.a".V+^..h.
002D10: DD E1 DD 5E FC DD 56 FD 18 D7 21 00 00 7A B3 28 ...^..V...!..z.(
002D20: 0D 23 23 D5 DD E1 DD 5E FA DD 56 FB 18 EF E5 ED .##....^..V.....
002D30: 5B 37 3E 19 7B E6 01 20 01 23 23 23 23 3E C3 CD [7>.{.. .####>..
002D40: 83 08 CD AD 08 3A 37 3E E6 01 28 05 3E 00 CD 83 .....:7>..(.>...
002D50: 08 2A 37 3E 22 45 3E E1 7C B5 C8 CD 83 08 2B 18 .*7>"E>.|.....+.
002D60: F7 2A 3D 3E 72 2B 73 2B 70 2B 71 2B 22 3D 3E C9 .*=>r+s+p+q+"=>.
002D70: 2A 7E 3E E5 2A 80 3E E5 3E 00 32 7E 3E 3A 3B 3E *~>.*.>.>.2~>:;>
002D80: 32 7F 3E CD F0 20 22 80 3E EB 2B 56 2B 5E E5 EB 2.>.. ".>.+V+^..
002D90: CD 76 25 CD F0 20 54 5D 3E 11 CD 83 08 CD 58 16 .v%.. T]>.....X.
002DA0: 3E 3E CD 83 08 CD F0 20 7E CD 83 08 3E C3 CD 83 >>..... ~...>...
002DB0: 08 2A 94 3E CD AD 08 E1 D5 EB 2A 43 3E E5 21 00 .*.>......*C>.!.
002DC0: 00 22 43 3E 2A 41 3E E5 EB 2B 56 2B 5E EB CD 6E ."C>*A>..+V+^..n
002DD0: 15 D1 D5 2A 41 3E A7 ED 52 23 23 3E C3 CD 83 08 ...*A>..R##>....
002DE0: ED 5B 37 3E 19 23 23 CD AD 08 D1 E1 DD E1 E5 D5 .[7>.##.........
002DF0: 2A 37 3E DD 75 00 DD 74 01 2A 41 3E A7 ED 52 CB *7>.u..t.*A>..R.
002E00: 3C CB 1D CB 3C CB 1D DD 75 02 45 7D A7 28 2B 2A <...<...u.E}.(+*
002E10: 41 3E ED 5B 3F 3E 19 2B 2B 2B 2B E5 DD E1 DD 6E A>.[?>.++++....n
002E20: 00 DD 66 01 CD AD 08 DD 6E 02 DD 66 03 CD AD 08 ..f.....n..f....
002E30: DD 2B DD 2B DD 2B DD 2B 10 E4 2A 43 3E 7C B5 20 .+.+.+.+..*C>|.
002E40: 05 2A 37 3E 23 23 CD AD 08 E1 22 41 3E E1 22 43 .*7>##...."A>."C
002E50: 3E ED 5B 37 3E DD 21 7E 3E CD BA 33 E1 22 80 3E >.[7>.!~>..3.".>
002E60: E1 22 7E 3E C9 3A 7E 3E CB 77 28 28 1B 1B D5 CD ."~>.:~>.w((....
002E70: 3F 33 43 41 53 45 2F 44 45 46 41 55 4C 54 20 6F ?3CASE/DEFAULT o
002E80: 75 74 73 69 64 65 20 61 20 53 57 49 54 43 48 4F utside a SWITCHO
002E90: CE C3 CA 23 EB 2B 56 2B 5E E5 EB CD 19 30 EB 2A ...#.+V+^....0.*
002EA0: 3F 3E ED 4B 41 3E 09 44 4D 21 CE FF 39 A7 ED 42 ?>.KA>.DM!..9..B
002EB0: DA 9B 32 60 69 73 23 72 ED 5B 37 3E 23 73 23 72 ..2`is#r.[7>#s#r
002EC0: 2A 41 3E 23 23 23 23 22 41 3E E1 2B 56 2B 5E EB *A>####"A>.+V+^.
002ED0: C3 6E 15 3A 7E 3E CB 77 C2 6E 23 2A 37 3E 22 43 .n.:~>.w.n#*7>"C
002EE0: 3E EB 2B 56 2B 5E EB C3 6E 15 DD 21 7E 3E 21 F4 >.+V+^..n..!~>!.
002EF0: 23 C3 DF 1F CD 3F 33 45 4E 44 43 41 53 45 20 75 #....?3ENDCASE u
002F00: 73 65 64 20 6F 75 74 73 69 64 65 20 53 57 49 54 sed outside SWIT
002F10: 43 48 4F CE C9 D5 DD E1 CD 8A 20 2A 64 3E E5 3E CHO....... *d>.>
002F20: 2A CD 83 08 CD F0 20 22 64 3E CD 58 16 3E E5 CD *..... "d>.X.>..
002F30: 83 08 3A 3B 3E 3D 3D 32 3B 3E DD 6E FA DD 66 FB ..:;>==2;>.n..f.
002F40: CD 76 25 21 20 25 CD CC 1C 2A 64 3E CD 58 16 DD .v%! %...*d>.X..
002F50: 6E F8 DD 66 F9 CD 76 25 2A 37 3E E5 DD 7E 00 CD n..f..v%*7>..~..
002F60: B3 1A ED 4B 37 3E 03 2A 64 3E 71 23 70 DD 6E FE ...K7>.*d>q#p.n.
002F70: DD 66 FF 7C B5 20 05 21 01 00 18 03 CD 19 30 E5 .f.|. .!......0.
002F80: CB 7C 21 26 25 28 03 21 34 25 CD CC 1C CD F0 20 .|!&%(.!4%.....
002F90: 22 74 3E CD 58 16 3E C5 CD 83 08 3A 3B 3E 67 2E "t>.X.>....:;>g.
002FA0: 00 22 72 3E 25 25 22 76 3E CD F0 20 22 78 3E 2A ."r>%%"v>.. "x>*
002FB0: 39 3E E5 2A 1C 3E E5 DD 6E F6 DD 66 F7 CD ED 1C 9>.*.>..n..f....
002FC0: DD 6E FC DD 66 FD CD 6E 15 3A 3B 3E C6 04 32 3B .n..f..n.:;>..2;
002FD0: 3E E1 22 1C 3E C1 2A 39 3E ED 43 39 3E CD 90 17 >.".>.*9>.C9>...
002FE0: ED 5B 37 3E DD 21 76 3E CD BA 33 3E E1 CD 83 08 .[7>.!v>..3>....
002FF0: D1 21 4D 25 CD 0B 32 3E C3 E1 CD 80 2D ED 5B 37 .!M%..2>....-.[7
003000: 3E DD 21 72 3E CD BA 33 3E E1 CD 83 08 3E 22 CD >.!r>..3>....>".
003010: 83 08 2A 64 3E CD 58 16 E1 22 64 3E CD 9D 20 C9 ..*d>.X.."d>.. .
003020: 05 7C EE 80 67 22 0D 11 00 00 EB 42 4B 7A EE 80 .|..g".....BKz..
003030: 57 ED 52 DA 0C 11 00 00 44 4D 7C EE 80 67 ED 52 W.R.....DM|..g.R
003040: DA 3E 23 CD 83 08 C9 3E 2B CD 83 08 C9 03 01 00 .>#....>+.......
003050: 41 25 FF FF 47 25 00 00 4C 25 3E 11 CD 83 08 60 A%..G%..L%>....`
003060: 69 CD AD 08 3E 19 CD 83 08 C9 3E C3 CD 83 08 2A i...>.....>....*
003070: 9A 3E CD AD 08 C9 7E EB 21 7E 25 C3 F6 31 4D 06 .>....~.!~%..1M.
003080: 26 4F 17 26 52 16 26 4B 7B 26 60 AA 26 43 90 26 &O.&R.&K{&`.&C.&
003090: 33 C8 26 2E 31 27 0C 3D 27 17 49 27 26 E6 27 20 3.&.1'.='.I'&.'
0030A0: FC 27 4E 4B 28 2F 66 28 35 C7 28 3D 18 29 39 4C .'NK(/f(5.(=.)9L
0030B0: 29 3B 27 2A 24 76 2A 08 9B 28 1F B1 28 19 40 2A );'*$v*..(..(.@*
0030C0: 18 56 2A 11 36 2A 10 60 2A 38 8A 2A 51 6C 2B 21 .V*.6*.`*8.*Ql+!
0030D0: A9 2A 09 94 2A 1B BA 2A 1A CB 2A 1D DC 2A 25 EB .*..*..*..*..*%.
0030E0: 2A 3C FA 2A 00 CD 4A 34 55 6E 65 78 70 65 63 74 *<.*..J4Unexpect
0030F0: 65 64 20 6E 6F 64 65 20 69 6E 20 65 78 70 72 65 ed node in expre
003100: 73 73 69 6F 6E 00 3E 21 CD 83 08 1B 1B 1A CD 83 ssion.>!........
003110: 08 13 1A CD 83 08 C9 DD E5 CD AC 32 38 18 DD 7E ...........28..~
003120: 05 FE 04 20 14 3E 21 CD 83 08 DD 7E 07 CD 83 08 ... .>!....~....
003130: DD 7E 08 CD 83 08 DD E1 C9 FE 02 30 24 3E DD CD .~.........0$>..
003140: 83 08 3E 66 CD 83 08 DD 7E 08 CD 83 08 3E DD CD ..>f....~....>..
003150: 83 08 3E 6E CD 83 08 DD 7E 08 3D CD 83 08 DD E1 ..>n....~.=.....
003160: C9 FE 04 30 0B 3E 21 CD 83 08 CD D9 31 DD E1 C9 ...0.>!.....1...
003170: 3E 2A CD 83 08 CD D9 31 DD E1 C9 DD E5 CD EA 1D >*.....1........
003180: 3E EB CD 83 08 DD E1 C9 DD E5 CD EA 1D DD E1 C9 >...............
003190: EB 2B 56 2B 5E EB CD 76 25 21 A0 26 CD CC 1C C9 .+V+^..v%!.&....
0031A0: 09 7C EE FF 67 7D EE FF 6F 23 EB 2B 56 2B 5E EB .|..g}..o#.+V+^.
0031B0: CD 76 25 21 BA 26 CD CC 1C C9 0D CB 7C 28 09 7C .v%!.&......|(.|
0031C0: EE FF 67 7D EE FF 6F 23 CD D1 26 3E EB CD 83 08 ..g}..o#..&>....
0031D0: C9 DD E5 2A 6E 3E E5 2A 70 3E E5 3E 00 32 6E 3E ...*n>.*p>.>.2n>
0031E0: 3A 3B 3E 32 6F 3E CD F0 20 22 70 3E EB 2B 56 2B :;>2o>.. "p>.+V+
0031F0: 5E EB CD 6E 15 DD 21 6E 3E DD CB 00 7E 20 20 CD ^..n..!n>...~ .
003200: 3F 33 56 41 4C 4F 46 20 6D 75 73 74 20 63 6F 6E ?3VALOF must con
003210: 74 61 69 6E 20 52 45 53 55 4C 54 49 D3 18 07 ED tain RESULTI....
003220: 5B 37 3E CD BA 33 E1 22 70 3E E1 22 6E 3E DD E1 [7>..3."p>."n>..
003230: C9 3E 21 CD 83 08 21 FF FF CD AD 08 C9 3E 21 CD .>!...!......>!.
003240: 83 08 21 00 00 CD AD 08 C9 EB 2B 56 2B 5E 1A 21 ..!.......+V+^.!
003250: 55 27 C3 F6 31 4F 7C 27 38 C7 28 26 DD 27 00 CD U'..1O|'8.(&.'..
003260: 3F 33 49 6E 76 61 6C 69 64 20 61 70 70 6C 69 63 ?3Invalid applic
003270: 61 74 69 6F 6E 20 6F 66 20 4C D6 C9 DD E5 CD AC ation of L......
003280: 32 38 20 DD 7E 05 FE 04 28 D5 FE 02 30 18 21 CD 28 .~...(...0.!.
003290: 27 CD CC 1C DD 6E 08 2D 26 00 CD AD 08 21 D2 27 '....n.-&....!.'
0032A0: CD CC 1C DD E1 C9 3E 21 CD 83 08 DD CB 06 46 20 ......>!......F
0032B0: 0C CD D9 31 21 D8 27 CD CC 1C DD E1 C9 DD 6E 07 ...1!.'.......n.
0032C0: DD 66 08 CB 3C CB 1D CD AD 08 DD E1 C9 04 DD E5 .f..<...........
0032D0: E1 11 05 19 CB 3C CB 1D 04 CB 3C CB 1D EB 2B 56 .....<....<...+V
0032E0: 2B 5E EB C3 76 25 EB 2B 56 2B 5E EB CD 76 25 21 +^..v%.+V+^..v%!
0032F0: F6 27 CD CC 1C C9 05 29 5E 23 56 EB EB 2B 56 2B .'.....)^#V..+V+
003300: 5E EB CD 76 25 21 0C 28 CD CC 1C C9 08 7C EE FF ^..v%!.(.....|..
003310: 67 7D EE FF 6F 3E 21 CD 83 08 2A 37 3E 01 03 00 g}..o>!...*7>...
003320: 7D CB 3C CB 1D 23 23 23 E6 01 20 03 01 04 00 CD }.<..###.. .....
003330: AD 08 3E C3 CD 83 08 CD F0 20 E5 CD 58 16 2A 37 ..>...... ..X.*7
003340: 3E 7D E6 01 28 03 CD 83 08 E1 C9 CD 15 28 1B 1A >}..(........(..
003350: 4F 06 00 03 1A CD 83 08 1B 0B 78 B1 20 F6 ED 5B O.........x. ..[
003360: 37 3E 73 23 72 C9 CD 15 28 E5 EB 2B 56 2B 5E CD 7>s#r...(..+V+^.
003370: 7B 28 E1 ED 5B 37 3E 73 23 72 C9 EB 7C B5 C8 7E {(..[7>s#r..|..~
003380: FE 36 20 10 2B 56 2B 5E 2B E5 EB CD 94 28 E1 56 .6 .+V+^+....(.V
003390: 2B 5E 18 E7 CD 19 30 CD AD 08 C9 CD E8 2B 21 A5 +^....0......+!.
0033A0: 28 CD CC 1C C9 0B A7 ED 52 21 FF FF 28 03 21 00 (.......R!..(.!.
0033B0: 00 CD E8 2B 21 BB 28 CD CC 1C C9 0B A7 ED 52 21 ...+!.(.......R!
0033C0: FF FF 20 03 21 00 00 D5 EB 2B 2B 2B 56 2B 5E CD .. .!....+++V+^.
0033D0: 3B 30 38 0A D1 CD E8 2B 3E 19 CD 83 08 C9 E1 D5 ;08....+>.......
0033E0: 2B 56 2B 5E EB CD 76 25 D1 21 EF 28 C3 0B 32 03 +V+^..v%.!.(..2.
0033F0: 01 00 0C 29 FF FF 12 29 00 00 17 29 3E 11 CD 83 ...)...)...)>...
003400: 08 60 69 CD AD 08 3E 19 CD 83 08 C9 3E 23 CD 83 .`i...>.....>#..
003410: 08 C9 3E 2B CD 83 08 C9 D5 EB 2B 2B 2B 56 2B 5E ..>+......+++V+^
003420: CD 3B 30 38 0F D1 CD E8 2B 21 30 29 CD CC 1C C9 .;08....+!0)....
003430: 03 A7 ED 52 E1 D5 2B 56 2B 5E EB CD 76 25 D1 21 ...R..+V+^..v%.!
003440: 00 00 A7 ED 52 EB 21 EF 28 C3 0B 32 D5 EB 2B 2B ....R.!.(..2..++
003450: 2B 56 2B 5E CD 3B 30 38 10 D1 CD E8 2B 3E CD CD +V+^.;08....+>..
003460: 83 08 2A 90 3E CD AD 08 C9 E1 D5 2B 56 2B 5E EB ..*.>......+V+^.
003470: CD 76 25 D1 21 7A 29 C3 0B 32 0E 01 00 DC 29 02 .v%.!z)..2....).
003480: 00 C9 29 03 00 DD 29 04 00 C9 29 05 00 E3 29 06 ..)...)...)...).
003490: 00 E9 29 07 00 EF 29 08 00 C9 29 09 00 F5 29 0A ..)...)...)...).
0034A0: 00 FB 29 10 00 C9 29 20 00 C9 29 40 00 C9 29 00 ..)...) ..)@..).
0034B0: 01 C9 29 3E 11 CD 83 08 60 69 CD AD 08 3E CD CD ..)>....`i...>..
0034C0: 83 08 2A 90 3E CD AD 08 C9 3E 00 CB 38 CB 19 38 ..*.>....>..8..8
0034D0: 03 3C 18 F7 47 3E 29 CD 83 08 10 F9 C9 21 01 2A .<..G>)......!.*
0034E0: C3 CC 1C 21 06 2A C3 CC 1C 21 0C 2A C3 CC 1C 21 ...!.*...!.*...!
0034F0: 12 2A C3 CC 1C 21 19 2A C3 CC 1C 21 20 2A C3 CC .*...!.*...! *..
003500: 1C 04 54 5D 29 19 05 54 5D 29 29 19 05 54 5D 29 ..T])..T]))..T])
003510: 19 29 06 54 5D 29 19 29 19 06 54 5D 29 29 29 19 .).T]).)..T]))).
003520: 06 29 54 5D 29 29 19 CD E8 2B 3E CD CD 83 08 2A .)T]))...+>....*
003530: 92 3E CD AD 08 C9 CD 6F 2F 21 4A 2A CD CC 1C C9 .>.....o/!J*....
003540: CD 62 2F 21 4A 2A CD CC 1C C9 0B A7 ED 52 21 FF .b/!J*.......R!.
003550: FF 38 03 21 00 00 CD 6F 2F 21 6A 2A CD CC 1C C9 .8.!...o/!j*....
003560: CD 62 2F 21 6A 2A CD CC 1C C9 0B A7 ED 52 21 FF .b/!j*.......R!.
003570: FF 30 03 21 00 00 CD E8 2B 3E CD CD 83 08 2A 92 .0.!....+>....*.
003580: 3E CD AD 08 3E EB CD 83 08 C9 CD C7 28 21 F6 27 >...>.......(!.'
003590: CD CC 1C C9 CD E8 2B 21 9E 2A CD CC 1C C9 0A 7C ......+!.*.....|
0035A0: AA EE FF 67 7D AB EE FF 6F CD E8 2B 21 B3 2A CD ...g}...o..+!.*.
0035B0: CC 1C C9 06 7C AA 67 7D AB 6F CD E8 2B 21 C4 2A ....|.g}.o..+!.*
0035C0: CD CC 1C C9 06 7C A2 67 7D A3 6F CD E8 2B 21 D5 .....|.g}£o..+!.
0035D0: 2A CD CC 1C C9 06 7C B2 67 7D B3 6F CD E8 2B 3E *.....|.g}.o..+>
0035E0: CD CD 83 08 2A 9E 3E CD AD 08 C9 CD E8 2B 3E CD ....*.>......+>.
0035F0: CD 83 08 2A A0 3E CD AD 08 C9 CD B0 20 DD E5 D5 ...*.>...... ...
003600: DD E1 21 00 00 22 82 3E 22 86 3E CD F0 20 22 84 ..!..".>".>.. ".
003610: 3E CD F0 20 22 88 3E DD 6E FA DD 66 FB 3E 00 DD >.. ".>.n..f.>..
003620: E5 CD E2 2C DD 21 82 3E ED 5B 37 3E CD BA 33 DD ...,.!.>.[7>..3.
003630: E1 DD 6E FE DD 66 FF CD 76 25 3E C3 CD 83 08 CD ..n..f..v%>.....
003640: F0 20 E5 CD 58 16 DD E5 DD 21 86 3E ED 5B 37 3E . ..X....!.>.[7>
003650: CD BA 33 DD E1 DD 6E FC DD 66 FD CD 76 25 E1 ED ..3...n..f..v%..
003660: 5B 37 3E 73 23 72 DD E1 CD C3 20 C9 EB CD 7B 2B [7>s#r.... ...{+
003670: 21 77 2B CD CC 1C C9 03 6E 26 00 DD E5 E5 DD E1 !w+.....n&......
003680: 06 06 21 B8 3E 5E 23 56 23 D5 10 F9 3A C4 3E F5 ..!.>^#V#...:.>.
003690: 21 CF 2B 11 B8 3E 01 0D 00 ED B0 DD E5 E1 DD 21 !.+..>.........!
0036A0: B8 3E 2B 56 2B 5E 2B DD 72 06 DD 73 05 56 2B 5E .>+V+^+.r..s.V+^
0036B0: DD 72 09 DD 73 08 21 C4 3E CD 76 25 F1 32 C4 3E .r..s.!.>.v%.2.>
0036C0: 06 06 21 C4 3E D1 2B 72 2B 73 10 F9 DD E1 C9 02 ..!.>.+r+s......
0036D0: 00 4D BA 3E 00 00 39 00 00 BF 3E 35 EB 2B 56 2B .M.>..9...>5.+V+
0036E0: 5E 2B 46 2B 6E 60 18 0B EB 2B 46 2B 4E 2B 56 2B ^+F+n`...+F+N+V+
0036F0: 5E 60 69 7E FE 4D 28 32 FE 4F 28 2E 1A FE 4D 28 ^`i~.M(2.O(...M(
003700: 4D FE 4F 28 49 E5 EB 7E CD D6 2C 30 0B EB CD 88 M.O(I..~..,0....
003710: 26 3E D5 CD 83 08 18 08 CD 76 25 3E E5 CD 83 08 &>.......v%>....
003720: E1 CD 76 25 3E D1 CD 83 08 C9 1A FE 4D 28 1F FE ..v%>.......M(..
003730: 4F 28 1B E5 EB 7E CD D6 2C 30 06 EB CD 88 26 18 O(...~..,0....&.
003740: 08 CD 76 25 3E EB CD 83 08 E1 CD 76 25 C9 D5 CD ..v%>......v%...
003750: 76 25 D1 CD 57 2C C9 1A FE 4F 28 11 3E 11 CD 83 v%..W,...O(.>...
003760: 08 1B 1B 1A CD 83 08 13 1A CD 83 08 C9 DD E5 CD ................
003770: AC 32 38 18 DD 7E 05 FE 04 20 14 3E 11 CD 83 08 .28..~... .>....
003780: DD 7E 07 CD 83 08 DD 7E 08 CD 83 08 DD E1 C9 FE .~.....~........
003790: 02 30 24 3E DD CD 83 08 3E 56 CD 83 08 DD 7E 08 .0$>....>V....~.
0037A0: CD 83 08 3E DD CD 83 08 3E 5E CD 83 08 DD 7E 08 ...>....>^....~.
0037B0: 3D CD 83 08 DD E1 C9 FE 04 30 0B 3E 11 CD 83 08 =........0.>....
0037C0: CD D9 31 DD E1 C9 3E ED CD 83 08 3E 5B CD 83 08 ..1...>....>[...
0037D0: CD D9 31 DD E1 C9 FE 4B 28 06 FE 4C 28 02 A7 C9 ..1....K(..L(...
0037E0: 37 C9 DD E5 47 3A 63 3E F5 78 32 63 3E EB 21 FC 7...G:c>.x2c>.!.
0037F0: 2C 1A CD F6 31 F1 32 63 3E DD E1 C9 19 B5 2D 18 ,...1.2c>.....-.
003800: C6 2D 10 CD 2D 11 D4 2D 08 DB 2D 1F 4A 2E 1B 98 .-..-..-..-.J...
003810: 2E 1A DE 2E 20 24 2F 2E 74 2E 0C 86 2E 4D 52 2F .... $/.t....MR/
003820: 4F 52 2F 00 EB CD 76 25 21 34 2D CD CC 1C 3E CA OR/...v%!4-...>.
003830: CD 37 2D C9 02 7C B5 F5 3A 63 3E A7 28 14 21 59 .7-..|..:c>.(.!Y
003840: 2D C1 7E B8 28 04 23 23 18 F8 23 7E DD 21 82 3E -.~.(.##..#~.!.>
003850: 18 1B F1 DD 21 86 3E 18 14 C2 CA CA C2 D2 DA DA ....!.>.........
003860: D2 C3 C3 C2 20 CA 28 D2 30 DA 38 C3 18 DD CB 00 .... .(.0.8.....
003870: 46 20 07 CD 83 08 CD D6 20 C9 DD 6E 02 DD 66 03 F ...... ..n..f.
003880: F5 44 4D ED 5B 37 3E A7 ED 52 11 7E 00 19 7C A7 .DM.[7>..R.~..|.
003890: 20 19 F1 E5 21 63 2D BE 28 04 23 23 18 F9 23 7E ...!c-.(.##..#~
0038A0: CD 83 08 E1 7D C6 80 CD 83 08 C9 F1 CD 83 08 60 ....}..........`
0038B0: 69 CD AD 08 C9 CD 62 2F 3E D2 21 70 2E F5 CD CC i.....b/>.!p....
0038C0: 1C F1 CD 37 2D C9 CD 6F 2F 3E DA 18 ED CD 62 2F ...7-..o/>....b/
0038D0: 3E DA 18 E6 CD 6F 2F 3E D2 18 DF 3E C2 F5 CD 4E >....o/>...>...N
0038E0: 2E D5 DD E1 D5 DD 56 FD DD 5E FC CD 3B 30 30 4F ......V..^..;00O
0038F0: E1 EB 7C B5 20 4A EB 2B 56 2B 5E 1A FE 4F 20 31 ..|. J.+V+^..O 1
003900: D5 CD AC 32 D1 38 34 DD 7E 05 FE 02 30 23 3E DD ...2.84.~...0#>.
003910: CD 83 08 3E 7E CD 83 08 DD 7E 08 CD 83 08 3E DD ...>~....~....>.
003920: CD 83 08 3E B6 CD 83 08 DD 7E 08 3D CD 83 08 18 ...>.....~.=....
003930: 0A EB CD 76 25 21 34 2D CD CC 1C F1 C3 37 2D D1 ...v%!4-.....7-.
003940: CD E8 2B 21 70 2E F1 C3 BD 2D 3E CA 18 8F D5 EB ..+!p....->.....
003950: 2B 56 2B 5E CD 3B 30 38 03 D1 A7 C9 E1 E5 2B 56 +V+^.;08......+V
003960: 2B 5E 2B 46 72 2B 4E 73 23 23 71 23 70 D1 37 C9 +^+Fr+Ns##q#p.7.
003970: 03 A7 ED 52 3A 63 3E A7 C8 3E C3 CD 83 08 DD 21 ...R:c>..>.....!
003980: 82 3E CD D6 20 C9 3A 63 3E A7 C0 3E C3 CD 83 08 .>.. .:c>..>....
003990: DD 21 86 3E CD D6 20 C9 2A 82 3E E5 2A 84 3E E5 .!.>.. .*.>.*.>.
0039A0: 3A 63 3E F5 21 00 00 22 82 3E CD F0 20 22 84 3E :c>.!..".>.. ".>
0039B0: EB 2B 56 2B 5E E5 EB 3E 00 CD E2 2C ED 5B 37 3E .+V+^..>...,.[7>
0039C0: DD 21 82 3E CD BA 33 D1 F1 32 63 3E E1 22 84 3E .!.>..3..2c>.".>
0039D0: E1 22 82 3E EB 2B 56 2B 5E EB CD E2 2C C9 2A 86 .".>.+V+^...,.*.
0039E0: 3E E5 2A 88 3E E5 3A 63 3E F5 21 00 00 22 86 3E >.*.>.:c>.!..".>
0039F0: CD F0 20 22 88 3E EB 2B 56 2B 5E E5 EB 3E FF CD .. ".>.+V+^..>..
003A00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
003A10: 03 00 00 00 02 09 50 E5 03 00 C1 02 00 00 00 02 ......P.........
003A20: 03 00 C2 02 00 00 00 02 03 00 C3 02 00 00 00 02 ................
003A30: 03 00 C4 02 00 00 00 02 03 00 C5 02 00 00 00 02 ................
003A40: 03 00 C6 02 00 00 00 02 03 00 C7 02 00 00 00 02 ................
003A50: 03 00 C8 02 00 00 00 02 03 00 C9 02 00 00 00 02 ................
003A60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003A70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003A80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003A90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003B00: E2 2C ED 5B 37 3E DD 21 86 3E CD BA 33 D1 F1 32 .,.[7>.!.>..3..2
003B10: 63 3E E1 22 88 3E E1 22 86 3E EB 2B 56 2B 5E EB c>.".>.".>.+V+^.
003B20: CD E2 2C C9 CD 35 2F 3A 63 3E EE FF EB 2B 56 2B ..,..5/:c>...+V+
003B30: 5E EB CD E2 2C 2A 82 3E ED 4B 86 3E ED 43 82 3E ^...,*.>.K.>.C.>
003B40: 22 86 3E 2A 84 3E ED 4B 88 3E ED 43 84 3E 22 88 ".>*.>.K.>.C.>".
003B50: 3E C9 D5 CD 3B 30 E1 D2 25 2D 7A B3 CA 86 2E C3 >...;0..%-z.....
003B60: 74 2E EB 2B 46 2B 4E 2B 56 2B 5E 60 69 18 0A EB t..+F+N+V+^`i...
003B70: 2B 56 2B 5E 2B 46 2B 6E 60 D5 E5 CD 3B 30 38 1C +V+^+F+n`...;08.
003B80: D1 D5 CD 3B 30 38 58 E1 D1 CD F3 2B 21 93 2F CD ...;08X....+!./.
003B90: CC 1C C9 08 7C EE 80 67 7A EE 80 57 E1 C1 D5 E5 ....|..gz..W....
003BA0: EB CD 3B 30 38 1D E1 CD 76 25 21 BE 2F CD CC 1C ..;08...v%!./...
003BB0: 3E 11 CD 83 08 E1 7C EE 80 67 CD AD 08 C9 04 7C >.....|..g.....|
003BC0: EE 80 67 3E 21 CD 83 08 7A EE 80 67 6B CD AD 08 ..g>!...z..gk...
003BD0: 3E 11 CD 83 08 E1 E1 7C EE 80 67 CD AD 08 C9 E1 >......|..g.....
003BE0: E1 D5 7E FE 4F 28 15 CD D6 2C 30 06 EB CD 88 26 ..~.O(...,0....&
003BF0: 18 0E CD 76 25 3E EB CD 83 08 18 04 EB CD 57 2C ...v%>........W,
003C00: 21 14 30 CD CC 1C 3E 21 CD 83 08 E1 7C EE 80 67 !.0...>!....|..g
003C10: CD AD 08 C9 04 7A EE 80 57 EB CD 3B 30 EB D8 CD .....z..W..;0...
003C20: 3F 33 4E 65 65 64 20 63 6F 6E 73 74 61 6E 74 20 ?3Need constant
003C30: 65 78 70 72 65 73 73 69 6F EE C9 1A 21 42 30 C3 expressio...!B0.
003C40: F6 31 4F 6C 30 4D 8C 30 35 A8 30 3D B0 30 39 BA .1Ol0M.05.0=.09.
003C50: 30 3B C4 30 24 CE 30 1B D9 30 1A E5 30 1D 0E 31 0;.0$.0..0..0..1
003C60: 25 FB 30 2E F1 30 0C F6 30 00 A7 C9 DD E5 CD AC %.0..0..0.......
003C70: 32 38 15 DD 7E 05 FE 04 28 04 DD E1 A7 C9 DD 5E 28..~...(......^
003C80: 07 DD 56 08 DD E1 37 C9 DD E1 A7 C9 EB 2B 56 2B ..V...7......+V+
003C90: 5E 37 C9 EB 2B 56 2B 5E E5 CD 3B 30 E1 D0 D5 2B ^7..+V+^..;0...+
003CA0: 56 2B 5E CD 3B 30 E1 C9 CD 93 30 D0 19 EB 37 C9 V+^.;0....0...7.
003CB0: CD 93 30 D0 A7 ED 52 EB 37 C9 CD 93 30 D0 CD 21 ..0...R.7...0..!
003CC0: 31 EB 37 C9 CD 93 30 D0 CD 3D 31 EB 37 C9 CD 93 1.7...0..=1.7...
003CD0: 30 D0 CD 3D 31 60 69 37 C9 CD 93 30 D0 7C A2 57 0..=1`i7...0.|.W
003CE0: 7D A3 5F 37 C9 CD 93 30 D0 7C B2 57 7D B3 5F 37 }£_7...0.|.W}._7
003CF0: C9 11 FF FF 37 C9 11 00 00 37 C9 CD 93 30 D0 7A ....7....7...0.z
003D00: B3 28 07 CB 3C CB 1D 1B 18 F5 54 5D 37 C9 CD 93 .(..<.....T]7...
003D10: 30 D0 7A B3 28 07 CB 25 CB 14 1B 18 F5 54 5D 37 0.z.(..%.....T]7
003D20: C9 CD 67 31 F5 78 06 10 29 CB 11 17 30 01 19 10 ..g1.x..)...0...
003D30: F7 F1 CB 7F C8 EB 21 00 00 A7 ED 52 C9 CD 67 31 ......!....R..g1
003D40: F5 3E 10 CB 21 CB 10 CB 15 CB 14 A7 ED 52 38 03 .>..!........R8.
003D50: 03 18 01 19 3D 20 EC 50 59 EB F1 A7 C8 7C EE FF ....= .PY....|..
003D60: 67 7D EE FF 6F 23 C9 44 4D 21 00 00 3E 00 CB 78 g}..o#.DM!..>..x
003D70: 28 0A A7 ED 42 44 4D 21 00 00 3E 80 CB 7A C8 EE (...BDM!..>..z..
003D80: 80 A7 ED 52 EB 21 00 00 C9 6F 3E DD CD 83 08 3E ...R.!...o>....>
003D90: 74 CD 83 08 7D CD 83 08 3E DD CD 83 08 3E 75 CD t...}...>....>u.
003DA0: 83 08 7D 3D CD 83 08 C9 DD 7E 05 FE 02 30 07 DD ..}=.....~...0..
003DB0: 7E 08 CD 89 31 C9 FE 08 38 09 3E 22 CD 83 08 CD ~...1...8.>"....
003DC0: D9 31 C9 CD 3F 33 49 6E 76 61 6C 69 64 20 61 73 .1..?3Invalid as
003DD0: 73 69 67 6E 6D 65 6E F4 C9 DD 7E 06 A7 28 0D DD signmen...~..(..
003DE0: 7E 07 CD 83 08 DD 7E 08 CD 83 08 C9 DD 6E 07 DD ~.....~......n..
003DF0: 66 08 CD 58 16 C9 4F 7E A7 20 02 23 E9 B9 20 06 f..X..O~. .#.. .
003E00: 23 4E 23 46 C5 C9 23 23 23 18 EC 7E 23 42 4B 5E #N#F..###..~#BK^
003E10: 23 56 23 EB A7 ED 42 28 07 EB 23 23 3D 20 F0 E9 #V#...B(..##= ..
003E20: EB 5E 23 56 EB E9 2A 1C 3E 01 09 00 09 44 4D 21 .^#V..*.>....DM!
003E30: CE FF 39 A7 ED 42 DA 1C 35 60 69 ED 4B 3F 3E A7 ..9..B..5`i.K?>.
003E40: ED 42 38 33 D5 2A 3F 3E ED 4B 41 3E 78 B1 28 1C .B83.*?>.KA>x.(.
003E50: 0B 09 54 5D 01 5A 00 09 44 4D 21 CE FF 39 A7 ED ..T].Z..DM!..9..
003E60: 42 38 38 60 69 ED 4B 41 3E EB ED B8 2A 3F 3E 11 B88`i.KA>...*?>.
003E70: 5A 00 19 22 3F 3E D1 2A 1C 3E E5 ED 4B 39 3E 71 Z.."?>.*.>..K9>q
003E80: 23 70 23 73 23 72 23 3A 3C 3E 77 11 05 00 19 22 #p#s#r#:<>w...."
003E90: 1C 3E E1 22 39 3E 11 05 00 19 C9 CD 4A 34 4F 75 .>."9>......J4Ou
003EA0: 74 20 6F 66 20 6D 65 6D 6F 72 79 00 2A 39 3E 7C t of memory.*9>|
003EB0: B5 20 42 2A 1C 3E E5 D5 2A 37 3E 7D E6 01 20 0C . B*.>..*7>}.. .
003EC0: 3E 18 CD 83 08 3E 02 CD 83 08 18 0F 3E C3 CD 83 >....>......>...
003ED0: 08 2A 37 3E 23 23 23 23 CD AD 08 2A 37 3E 22 45 .*7>####...*7>"E
003EE0: 3E 3E 00 CD 83 08 CD 83 08 D1 3E 09 CD 6A 1D E1 >>........>..j..
003EF0: E5 DD E1 A7 C9 E5 DD E1 DD 6E 02 DD 66 03 A7 ED .........n..f...
003F00: 52 20 33 3A 3C 3E 47 DD 7E 04 B8 28 24 A7 28 21 R 3:<>G.~..($.(!
003F10: CD 64 33 44 79 6E 61 6D 69 63 20 66 72 65 65 20 .d3Dynamic free
003F20: 76 61 72 69 61 62 6C 65 20 75 73 65 64 2C A0 37 variable used,.7
003F30: C9 DD E5 E1 A7 C9 DD 6E 00 DD 66 01 C3 AF 32 3E .......n..f...2>
003F40: 00 32 C7 3E CD 8D 33 E1 7E 23 CB 7F 20 05 CD D6 .2.>..3.~#.. ...
003F50: 07 18 F5 E6 7F CD D6 07 E5 2A 5B 3E 23 22 5B 3E .........*[>#"[>
003F60: CD 0D 34 C9 3E 00 32 C7 3E CD 8D 33 E1 D5 7E 23 ..4.>.2.>..3..~#
003F70: CB 7F 20 05 CD D6 07 18 F5 E6 7F CD D6 07 E3 CD .. .............
003F80: 3E 34 2A 5B 3E 23 22 5B 3E CD 0D 34 C9 3E 0D CD >4*[>#"[>..4.>..
003F90: 12 0C 3E 0A CD 12 0C C9 42 4B E5 DD E1 DD 7E 06 ..>.....BK....~.
003FA0: A7 C0 DD 5E 07 DD 56 08 DD 71 07 DD 70 08 DD 36 ...^..V..q..p..6
003FB0: 06 01 EB 7C B5 C8 71 23 70 C9 DD CB 00 46 C0 DD ...|..q#p....F..
003FC0: CB 00 C6 DD 6E 02 DD 66 03 DD 73 02 DD 72 03 42 ....n..f..s..r.B
003FD0: 4B 18 E0 4F 78 32 3B 3E 47 79 4F 78 91 C8 FE 02 K..Ox2;>GyOx....
003FE0: 20 06 3E E1 CD 83 08 C9 FE 04 20 0B 3E E1 CD 83 .>....... .>...
003FF0: 08 3E E1 CD 83 08 C9 6F 26 00 3E 21 CD 83 08 CD .>.....o&.>!....
004000: AD 08 3E 39 CD 83 08 3E F9 CD 83 08 C9 21 28 34 ..>9...>.....!(4
004010: CD 24 08 2A 55 3E 7C B5 28 07 2B 56 2B 5E EB 18 .$.*U>|.(.+V+^..
004020: 03 21 29 34 CD 3E 34 C9 20 69 6E A0 67 6C 6F 62 .!)4.>4. in.glob
004030: 61 6C 20 64 65 66 69 6E 69 74 69 6F 6E F3 23 23 al definition.##
004040: 23 CD 24 08 C9 21 6C 34 18 0A E1 CD 8D 33 CD 24 #.$..!l4.....3.$
004050: 08 21 6B 34 ED 7B 22 3E CD 24 08 3E 00 32 C7 3E .!k4.{">.$.>.2.>
004060: 0E 6C 11 00 FF CD 05 00 C3 84 34 2E 0D 43 6F 6D .l........4..Com
004070: 70 69 6C 61 74 69 6F 6E 20 61 62 61 6E 64 6F 6E pilation abandon
004080: 65 64 2E 00 2A 5B 3E 7C B5 28 08 0E 6C 11 00 FF ed..*[>|.(..l...
004090: CD 05 00 CD 8D 33 CD 2B 0C FE 30 D2 00 00 21 AA .....3.+..0...!.
0040A0: 34 CD 24 08 CD FC 0B C3 00 00 50 6C 65 61 73 65 4.$.......Please
0040B0: 20 69 6E 73 65 72 74 20 73 79 73 74 65 6D 20 64 insert system d
0040C0: 69 73 63 20 74 68 65 6E 20 70 72 65 73 73 20 61 isc then press a
0040D0: 6E 79 20 6B 65 79 00 E5 CD 56 35 7A B3 CA FE 34 ny key...V5z...4
0040E0: E1 E5 D5 13 13 13 1A BE 20 08 FE 80 30 0C 23 13 ........ ...0.#.
0040F0: 18 F4 D1 EB 23 5E 23 56 18 E1 E1 D1 A7 C9 E3 54 ....#^#V.......T
004100: 5D 01 03 00 03 7E 23 CB 7F 28 F9 2A 1C 3E 09 E5 ]....~#..(.*.>..
004110: 21 CE FF 39 44 4D E1 A7 ED 42 38 17 CD 4A 34 4F !..9DM...B8..J4O
004120: 75 74 20 6F 66 20 73 79 6D 62 6F 6C 20 73 70 61 ut of symbol spa
004130: 63 65 00 EB E3 ED 5B 1C 3E 72 2B 73 EB D1 E5 36 ce....[.>r+s...6
004140: 00 23 36 00 23 36 00 23 1A 77 23 13 FE 80 38 F8 .#6.#6.#.w#...8.
004150: 22 1C 3E E1 37 C9 0E 00 7E 81 4F 7E 23 FE 80 38 ".>.7...~.O~#..8
004160: F7 79 E6 0F CB 27 4F 06 00 21 40 3C 09 5E 23 56 .y...'O..!@<.^#V
004170: C9 21 CE FF 39 44 4D 2A 1C 3E A7 ED 42 D2 1C 35 .!..9DM*.>..B..5
004180: 3E 00 32 30 3E 3A 21 3E FE 20 20 05 CD 1A 06 18 >.20>:!>. .....
004190: F4 FE 09 28 F7 FE 0D 20 20 2A 31 3E 23 22 31 3E ...(... *1>#"1>
0041A0: 3E FF 32 30 3E 3A 66 3E 3D 32 66 3E CC 97 38 CD >.20>:f>=2f>..8.
0041B0: 1A 06 FE 3E 20 CF C3 C8 36 CD EA 3A 30 24 CD B3 ...> ...6..:0$..
0041C0: 39 21 60 3C CD D7 34 22 1F 3E 30 07 3E 4F 77 32 9!`<..4".>0.>Ow2
0041D0: 1E 3E C9 7E 32 1E 3E FE 13 CA E3 38 FE 53 CA FE .>.~2.>....8.S..
0041E0: 38 C9 CD F9 3A 30 11 D6 30 6F 26 00 CD D2 39 22 8...:0..0o&...9"
0041F0: 1F 3E 3E 4D 32 1E 3E C9 FE 23 20 7A 3E 4D 32 1E .>>M2.>..# z>M2.
004200: 3E CD 1A 06 FE 62 20 14 CD 1A 06 CD D6 3A 38 52 >....b ......:8R
004210: 6F 26 00 CD FB 39 22 1F 3E 3E 4D C9 FE 6F 20 14 o&...9".>>M..o .
004220: CD 1A 06 CD D6 3A 38 3A 6F 26 00 CD E7 39 22 1F .....:8:o&...9".
004230: 3E 3E 4D C9 FE 78 20 14 CD 1A 06 CD D6 3A 38 22 >>M..x ......:8"
004240: 6F 26 00 CD 0D 3A 22 1F 3E 3E 4D C9 FE 30 38 12 o&...:".>>M..08.
004250: FE 38 30 0E D6 30 6F 26 00 CD E7 39 22 1F 3E 3E .80..0o&...9".>>
004260: 4D C9 CD 76 06 45 78 70 65 63 74 69 6E 67 20 6E M..v.Expecting n
004270: 75 6D 62 65 72 00 FE 27 20 21 CD 29 06 CD 29 3A umber..' !.)..):
004280: 6F 26 00 30 02 26 01 22 1F 3E CD 1A 06 FE 27 C2 o&.0.&.".>....'.
004290: 7D 38 CD 1A 06 3E 4D 32 1E 3E C9 21 C6 38 47 7E }8...>M2.>.!.8G~
0042A0: A7 28 10 B8 20 09 23 CD 1A 06 7E 32 1E 3E C9 23 .(.. .#...~2.>.#
0042B0: 23 18 EC 78 FE 2F 20 51 CD 1A 06 FE 5C 20 05 3E #..x./ Q....\ .>
0042C0: 1B C3 8A 37 FE 2F 20 0A CD 1A 06 FE 0D 20 F9 C3 ...7./ ...... ..
0042D0: 85 35 FE 2A 28 06 3E 3B 32 1E 3E C9 CD 1A 06 FE .5.*(.>;2.>.....
0042E0: 1A CA CA 37 FE 0D 20 07 2A 31 3E 23 22 31 3E FE ...7.. .*1>#"1>.
0042F0: 2A 20 E9 CD 1A 06 FE 1A CA CA 37 FE 2A 28 F4 FE * ........7.*(..
004300: 2F 20 D9 CD 1A 06 C3 85 35 FE 5C 20 19 CD 1A 06 / ......5.\ ....
004310: FE 2F 20 04 3E 1A 18 72 FE 3D 20 04 3E 1F 18 6A ./ .>..r.= .>..j
004320: 3E 20 32 1E 3E C9 FE 3C 20 19 CD 1A 06 FE 3D 20 > 2.>..< .....=
004330: 04 3E 18 18 55 FE 3C 20 04 3E 1D 18 4D 3E 19 32 .>..U.< .>..M>.2
004340: 1E 3E C9 FE 3E 20 19 CD 1A 06 FE 3D 20 04 3E 10 .>..> .....= .>.
004350: 18 38 FE 3E 20 04 3E 25 18 30 3E 11 32 1E 3E C9 .8.> .>%.0>.2.>.
004360: FE 2D 20 11 CD 1A 06 FE 3E 20 04 3E 3C 18 1B 3E .- .....> .><..>
004370: 3D 32 1E 3E C9 FE 3A 20 1A CD 1A 06 FE 3D 20 04 =2.>..: .....= .
004380: 3E 3E 18 06 3E 3F 32 1E 3E C9 F5 CD 1A 06 F1 32 >>..>?2.>......2
004390: 1E 3E C9 FE 24 20 2F CD 1A 06 FE 28 20 0F 3E 24 .>..$ /....( .>$
0043A0: CD B3 39 21 60 3C CD D7 34 3E 48 18 12 FE 29 C2 ..9!`<..4>H...).
0043B0: 6C 38 3E 24 CD B3 39 21 60 3C CD D7 34 3E 49 32 l8>$..9!`<..4>I2
0043C0: 1E 3E 22 1F 3E C9 FE 2E 20 25 2A CB 3E 2B 7E 32 .>".>... %*.>+~2
0043D0: 32 3E 2B 7E 32 31 3E 2B 7E 32 21 3E 11 A3 00 A7 2>+~21>+~2!>.£..
0043E0: ED 52 22 CB 3E A7 C2 85 35 3E 40 32 1E 3E C9 FE .R".>...5>@2.>..
0043F0: 1A 28 D7 FE 3D 20 1B CD 1A 06 FE 3E 20 05 3E 10 .(..= .....> .>.
004400: C3 8A 37 FE 3C 20 05 3E 18 C3 8A 37 3E 08 32 1E ..7.< .>...7>.2.
004410: 3E C9 FE 22 20 3D 21 C6 3C 0E 00 CD 29 06 FE 22 >.." =!.<...).."
004420: 20 09 21 C6 3C 71 3E 4E C3 8A 37 CD 29 3A 30 05 .!.<q>N..7.):0.
004430: CD 3A 38 3E 0A CD 3A 38 18 E1 23 0C 77 79 A7 C0 .:8>..:8..#.wy..
004440: CD 76 06 53 74 72 69 6E 67 20 74 6F 6F 20 6C 6F .v.String too lo
004450: 6E 67 00 FE 7E 20 10 CD 1A 06 FE 3D 3E 1F CA 8A ng..~ .....=>...
004460: 37 3E 20 32 1E 3E C9 3E 20 32 21 3E CD 76 06 42 7> 2.>.> 2!>.v.B
004470: 61 64 20 63 68 61 72 61 63 74 65 72 00 CD 76 06 ad character..v.
004480: 42 61 64 20 63 68 61 72 61 63 74 65 72 20 63 6F Bad character co
004490: 6E 73 74 61 6E 74 00 3E 05 32 66 3E CD 02 0C D0 nstant.>.2f>....
0044A0: FE EF 28 F8 CD C0 38 C0 CD FC 0B FE EF 28 F9 CD ..(...8......(..
0044B0: C0 38 C0 CD 4A 34 42 72 6F 6B 65 6E 20 69 6E 00 .8..J4Broken in.
0044C0: FE FC C8 FE 03 C9 2B 35 2C 36 3B 37 40 17 26 1B ......+5,6;7@.&.
0044D0: 7C 1A 21 38 2A 39 28 41 29 42 5B 41 5D 42 25 51 |.!8*9(A)B[A]B%Q
0044E0: 3F 52 00 CD 71 35 FE 4E 28 0B CD 76 06 42 61 64 ?R..q5.N(..v.Bad
0044F0: 20 47 45 54 00 21 C6 3C CD B6 08 C3 85 35 CD AB GET.!.<.....5..
004500: 39 18 03 CD A8 39 21 5D 3E FE 6C CA 62 39 21 C5 9....9!]>.l.b9!.
004510: 3E FE 62 20 44 CD A8 39 FE 2B 28 0D FE 2D C2 6E >.b D..9.+(..-.n
004520: 39 3E 00 32 C5 3E C3 89 39 3E FF 32 C5 3E CD A8 9>.2.>..9>.2.>..
004530: 39 FE 2C CA 8C 39 FE 3B CA 8C 39 FE 0D CA 8C 39 9.,..9.;..9....9
004540: FE 1A CA 8C 39 CD 71 35 FE 4D C2 6E 39 3A 1F 3E ....9.q5.M.n9:.>
004550: 32 C8 3E CD AB 39 C3 8C 39 21 C6 3E FE 73 28 02 2.>..9..9!.>.s(.
004560: 18 0C E5 CD A8 39 FE 2B 28 17 FE 2D 28 17 CD 76 .....9.+(..-(..v
004570: 06 42 61 64 20 6F 70 74 69 6F 6E 20 6C 69 6E 65 .Bad option line
004580: 00 3E FF 18 02 3E 00 E1 77 CD A8 39 FE 3B CA A2 .>...>..w..9.;..
004590: 39 FE 0D CA 71 35 FE 1A CA 71 35 FE 2C CA 03 39 9...q5...q5.,..9
0045A0: 18 CC CD 1A 06 C3 71 35 CD 1A 06 3A 21 3E FE 20 ......q5...:!>.
0045B0: 28 F6 C9 21 60 3C 77 23 CD 1A 06 CD F5 3A 38 08 (..!`<w#.....:8.
0045C0: FE 2E 28 04 FE 5F 20 04 77 23 18 EC 2B 7E F6 80 ..(.._ .w#..+~..
0045D0: 77 C9 CD 1A 06 CD F9 3A D0 29 5D 54 29 29 19 D6 w......:.)]T))..
0045E0: 30 5F 16 00 19 18 EB CD 1A 06 FE 30 D8 FE 38 D0 0_.........0..8.
0045F0: 29 29 29 D6 30 5F 16 00 19 18 EC CD 1A 06 FE 30 ))).0_.........0
004600: D8 FE 32 D0 29 D6 30 5F 16 00 19 18 EE CD 1A 06 ..2.).0_........
004610: CD F9 3A 38 08 FE 61 D8 FE 67 D0 D6 27 D6 30 29 ..:8..a..g..'.0)
004620: 29 29 29 5F 16 00 19 18 E4 FE 0D CA 7D 38 FE 2A )))_........}8.*
004630: 37 3F C0 E5 D5 CD 29 06 21 B2 3A 5F 7E 23 BB 28 7?....).!.:_~#.(
004640: 29 A7 20 F8 7B FE 78 CA 94 3A FE 58 CA 94 3A 5F ). .{.x..:.X..:_
004650: 21 B7 3A 7E A7 CA 7D 38 BB 28 04 23 23 18 F4 23 !.:~..}8.(.##..#
004660: 7E A7 20 03 3E 0D 37 D1 E1 C9 7B FE 0D 20 07 2A ~. .>.7...{.. .*
004670: 31 3E 23 22 31 3E CD 29 06 FE 2A 28 0F 21 B2 3A 1>#"1>.)..*(.!.:
004680: 5F 7E 23 A7 CA 7D 38 BB 28 E0 18 F5 D1 E1 CD 29 _~#..}8.(......)
004690: 06 C3 29 3A CD 1A 06 CD D6 3A DA 7D 38 87 87 87 ..):.....:.}8...
0046A0: 87 F5 CD 1A 06 CD D6 3A DA 7D 38 47 F1 B0 D1 E1 .......:.}8G....
0046B0: A7 C9 20 09 0D 0A 00 27 27 2A 2A 22 22 4E 00 6E .. ....''**""N.n
0046C0: 00 54 09 74 09 53 20 73 20 42 08 62 08 50 0C 70 .T.t.S s B.b.P.p
0046D0: 0C 43 0D 63 0D 00 CD F9 3A 38 0B FE 61 D8 FE 67 .C.c....:8..a..g
0046E0: 38 02 37 C9 D6 27 D6 30 A7 C9 FE 61 38 05 FE 7B 8.7..'.0...a8..{
0046F0: D0 37 C9 A7 C9 CD EA 3A D8 FE 30 38 05 FE 3A D0 .7.....:..08..:.
004700: 37 C9 A7 C9 61 6E 64 81 62 65 82 62 72 65 61 6B 7...and.be.break
004710: 83 62 79 84 63 61 73 65 85 64 6F 86 64 65 66 61 .by.case.do.defa
004720: 75 6C 74 87 65 71 88 65 71 76 89 65 6C 73 65 8A ult.eq.eqv.else.
004730: 65 6E 64 63 61 73 65 8B 66 61 6C 73 65 8C 66 6F endcase.false.fo
004740: 72 8D 66 69 6E 69 73 68 8E 67 6F 74 6F 8F 67 65 r.finish.goto.ge
004750: 90 67 72 91 67 74 91 67 6C 6F 62 61 6C 92 67 65 .gr.gt.global.ge
004760: 74 93 69 66 94 69 6E 74 6F 95 69 6E 6C 69 6E 65 t.if.into.inline
004770: D0 6C 65 74 96 6C 76 97 6C 65 98 6C 73 99 6C 74 .let.lv.le.ls.lt
004780: 99 6C 6F 67 6F 72 9A 6C 6F 67 61 6E 64 9B 6C 6F .logor.logand.lo
004790: 6F 70 9C 6C 73 68 69 66 74 9D 6D 61 6E 69 66 65 op.lshift.manife
0047A0: 73 74 9E 6E 65 9F 6E 6F 74 A0 6E 65 71 76 A1 6F st.ne.not.neqv.o
0047B0: 72 8A 72 65 73 75 6C 74 69 73 A2 72 65 74 75 72 r.resultis.retur
0047C0: 6E A3 72 65 6D A4 72 73 68 69 66 74 A5 72 76 A6 n£rem.rshift.rv.
0047D0: 72 65 70 65 61 74 A7 72 65 70 65 61 74 77 68 69 repeat.repeatwhi
0047E0: 6C 65 A8 72 65 70 65 61 74 75 6E 74 69 6C A9 73 le.repeatuntil.s
0047F0: 77 69 74 63 68 6F 6E AA 73 74 61 74 69 63 AB 74 witchon.static.t
004800: 6F AC 74 65 73 74 AD 74 72 75 65 AE 74 68 65 6E o.test.true.then
004810: 86 74 61 62 6C 65 AF 75 6E 74 69 6C B0 75 6E 6C .table.until.unl
004820: 65 73 73 B1 76 65 63 B2 76 61 6C 6F 66 B3 77 68 ess.vec.valof.wh
004830: 69 6C 65 B4 6F 70 74 69 6F 6E D3 61 62 73 E0 00 ile.option.abs..
004840: 1C F1 CD 37 2D C9 CD 6F 2F 3E DA 18 ED CD 62 2F ...7-..o/>....b/
004850: 3E DA 18 E6 CD 6F 2F 3E D2 18 DF 3E C2 F5 CD 4E >....o/>...>...N
004860: 2E D5 DD E1 D5 DD 56 FD DD 5E FC CD 3B 30 30 4F ......V..^..;00O
004870: E1 EB 7C B5 20 4A EB 2B 56 2B 5E 1A FE 4F 20 31 ..|. J.+V+^..O 1
004880: 1A AC 74 65 73 74 AD 74 72 75 65 AE 74 68 65 6E ..test.true.then
004890: 86 74 61 62 6C 65 AF 75 6E 74 69 6C B0 75 6E 6C .table.until.unl
0048A0: 65 73 73 B1 76 65 63 B2 76 61 6C 6F 66 B3 77 68 ess.vec.valof.wh
0048B0: 69 6C 65 B4 6F 70 74 69 6F 6E D3 61 62 73 E0 00 ile.option.abs..
0048C0: 1C F1 CD 37 2D C9 CD 6F 2F 3E DA 18 ED CD 62 2F ...7-..o/>....b/
0048D0: 3E DA 18 E6 CD 6F 2F 3E D2 18 DF 3E C2 F5 CD 4E >....o/>...>...N
0048E0: 2E D5 DD E1 D5 DD 56 FD DD 5E FC CD 3B 30 30 4F ......V..^..;00O
0048F0: E1 EB 7C B5 20 4A EB 2B 56 2B 5E 1A FE 4F 20 31 ..|. J.+V+^..O 1
004900: 00 42 43 50 4C 4D 31 20 20 20 20 20 00 00 00 00 .BCPLM1 ....
004910: 00 00 0A 00 00 C6 06 00 3E 81 00 00 00 00 00 00 ........>.......
004920: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004930: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004940: 3E 81 00 93 04 70 72 6F 64 75 63 65 20 74 68 65 >....produce the
004950: 20 65 72 72 6F 72 20 6D 65 73 73 61 67 65 20 27 error message '
004960: 64 79 6E 61 6D 69 63 20 66 72 65 65 20 76 61 72 dynamic free var
004970: 69 61 62 6C 65 20 75 73 65 64 27 2E 0D 0A 3E 70 iable used'...>p
004980: 3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D >---!-----!-----
004990: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0049A0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0049B0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0049C0: 21 2D 2D 2D 2D 52 0D 0A 3E 74 6D 20 33 0D 0A 3E !----R..>tm 3..>
0049D0: 62 6D 20 31 31 0D 0A 3E 68 6D 20 30 0D 0A 3E 66 bm 11..>hm 0..>f
0049E0: 6D 20 32 0D 0A 0D 0A 3E 63 65 E2 20 EC 42 43 50 m 2....>ce. .BCP
0049F0: 4C EC 0D 0A 0D 0A 3E 63 65 20 EC 54 48 45 20 53 L.....>ce .THE S
004A00: 59 53 54 45 4D 53 20 50 52 4F 47 52 41 4D 4D 49 YSTEMS PROGRAMMI
004A10: 4E 47 20 4C 41 4E 47 55 41 47 45 EC 0D 0A 0D 0A NG LANGUAGE.....
004A20: 0D 0A 3E 63 65 20 EC 41 6D 73 74 72 61 64 20 50 ..>ce .Amstrad P
004A30: 43 57 38 32 35 36 2F 38 35 31 32 EC 0D 0A 0D 0A CW8256/8512.....
004A40: 3E 63 65 20 EC 41 6D 73 74 72 61 64 20 43 50 43 >ce .Amstrad CPC
004A50: 36 31 32 38 2F 36 36 34 2F 34 36 34 EC 0D 0A E2 6128/664/464....
004A60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
004A70: 20 20 20 20 20 20 0D 0A 0D 0A 0D 0A 3E 63 65 20 ......>ce
004A80: E2 62 79 20 50 68 69 6C 6C 69 70 20 42 6C 65 6E .by Phillip Blen
004A90: 6B 69 6E 73 6F 70 70 E2 0D 0A 0D 0A 0D 0A 0D 0A kinsopp.........
004AA0: 3E 63 65 20 20 20 20 20 20 20 20 20 20 20 20 20 >ce
004AB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
004AC0: 20 20 20 E2 43 4F 4E 54 45 4E 54 53 E2 0D 0A 0D .CONTENTS....
004AD0: 0A 09 09 31 20 20 41 62 6F 75 74 20 42 43 50 4C ...1 About BCPL
004AE0: 09 09 09 20 09 20 09 20 33 0D 0A 09 09 32 20 20 ... . . 3....2
004AF0: 55 73 69 6E 67 20 41 72 6E 6F 72 20 42 43 50 4C Using Arnor BCPL
004B00: 20 75 6E 64 65 72 20 43 50 2F 4D 09 09 20 35 0D under CP/M.. 5.
004B10: 0A 09 09 33 20 20 55 73 69 6E 67 20 41 72 6E 6F ...3 Using Arno
004B20: 72 20 42 43 50 4C 20 75 6E 64 65 72 20 41 4D 53 r BCPL under AMS
004B30: 44 4F 53 09 09 20 38 0D 0A 09 09 34 20 20 43 6F DOS.. 8....4 Co
004B40: 6D 70 69 6C 65 72 20 6F 70 74 69 6F 6E 73 09 09 mpiler options..
004B50: 09 20 09 31 32 0D 0A 09 09 35 20 20 53 6F 6D 65 . .12....5 Some
004B60: 20 6B 65 79 20 66 61 63 74 73 20 61 62 6F 75 74 key facts about
004B70: 20 42 43 50 4C 09 09 09 31 34 0D 0A 09 09 36 20 BCPL...14....6
004B80: 20 54 77 6F 20 42 43 50 4C 20 70 72 6F 67 72 61 Two BCPL progra
004B90: 6D 73 09 09 09 09 31 36 0D 0A 09 09 37 20 20 53 ms....16....7 S
004BA0: 75 6D 6D 61 72 79 20 6F 66 20 74 68 65 20 42 43 ummary of the BC
004BB0: 50 4C 20 6C 61 6E 67 75 61 67 65 09 09 31 38 0D PL language..18.
004BC0: 0A 09 09 38 20 20 54 68 65 20 41 72 6E 6F 72 20 ...8 The Arnor
004BD0: 42 43 50 4C 20 6C 69 62 72 61 72 69 65 73 09 09 BCPL libraries..
004BE0: 09 32 36 0D 0A 09 09 39 20 20 44 69 66 66 65 72 .26....9 Differ
004BF0: 65 6E 63 65 73 20 66 72 6F 6D 20 73 74 61 6E 64 ences from stand
004C00: 61 72 64 20 42 43 50 4C 09 09 34 39 0D 0A 0D 0A ard BCPL..49....
004C10: 09 09 20 20 20 41 50 50 45 4E 44 49 43 45 53 0D .. APPENDICES.
004C20: 0A 0D 0A 09 09 31 20 20 54 65 63 68 6E 69 63 61 .....1 Technica
004C30: 6C 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 09 09 09 l information...
004C40: 35 31 0D 0A 09 09 32 20 20 53 75 6D 6D 61 72 79 51....2 Summary
004C50: 20 61 6E 64 20 69 6E 64 65 78 20 6F 66 20 6C 69 and index of li
004C60: 62 72 61 72 79 20 72 6F 75 74 69 6E 65 73 09 35 brary routines.5
004C70: 34 0D 0A 09 09 33 20 20 50 6F 72 74 61 62 69 6C 4....3 Portabil
004C80: 69 74 79 09 09 09 09 35 36 09 09 09 09 09 09 09 ity....56.......
004C90: 0D 0A 09 09 34 20 20 45 72 72 6F 72 20 6D 65 73 ....4 Error mes
004CA0: 73 61 67 65 73 09 09 09 09 35 37 0D 0A 0D 0A 0D sages....57.....
004CB0: 0A 43 6F 70 79 72 69 67 68 74 20 28 63 29 20 41 .Copyright (c) A
004CC0: 72 6E 6F 72 20 4C 74 64 2E 2C 90 31 39 38 36 20 rnor Ltd.,.1986
004CD0: 20 20 20 20 20 20 20 20 20 20 20 20 49 73 73 75 Issu
004CE0: 65 20 31 2C 20 31 39 38 36 20 28 76 31 2E 30 30 e 1, 1986 (v1.00
004CF0: 2F 32 2E 30 30 29 0D 0A 0D 0A 41 4D 53 54 52 41 /2.00)....AMSTRA
004D00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
004D10: 04 00 00 00 02 09 50 E5 04 00 C1 02 00 00 00 02 ......P.........
004D20: 04 00 C2 02 00 00 00 02 04 00 C3 02 00 00 00 02 ................
004D30: 04 00 C4 02 00 00 00 02 04 00 C5 02 00 00 00 02 ................
004D40: 04 00 C6 02 00 00 00 02 04 00 C7 02 00 00 00 02 ................
004D50: 04 00 C8 02 00 00 00 02 04 00 C9 02 00 00 00 02 ................
004D60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004D70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004D80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004D90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004DA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004DB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004DC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004DD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004DE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004DF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004E00: 44 20 69 73 20 61 20 72 65 67 69 73 74 65 72 65 D is a registere
004E10: 64 20 74 72 61 64 65 6D 61 72 6B 20 6F 66 20 41 d trademark of A
004E20: 6D 73 74 72 61 64 20 43 6F 6E 73 75 6D 65 72 20 mstrad Consumer
004E30: 45 6C 65 63 74 72 6F 6E 69 63 73 20 70 6C 63 2E Electronics plc.
004E40: 0D 0A 43 50 2F 4D 20 61 6E 64 20 43 50 2F 4D 20 ..CP/M and CP/M
004E50: 50 6C 75 73 20 61 72 65 20 74 72 61 64 65 6D 61 Plus are tradema
004E60: 72 6B 73 20 6F 66 20 44 69 67 69 74 61 6C 20 52 rks of Digital R
004E70: 65 73 65 61 72 63 68 20 49 6E 63 2E 0D 0A 0D 0A esearch Inc.....
004E80: 09 41 6C 6C 20 72 69 67 68 74 73 20 72 65 73 65 .All rights rese
004E90: 72 76 65 64 2E 20 49 74 20 69 73 20 69 6C 6C 65 rved. It is ille
004EA0: 67 61 6C 20 74 6F 20 72 65 70 72 6F 64 75 63 65 gal to reproduce
004EB0: 20 6F 72 20 74 72 61 6E 73 6D 69 74 20 65 69 74 or transmit eit
004EC0: 68 65 72 20 0D 8A 74 68 69 73 20 6D 61 6E 75 61 her ..this manua
004ED0: 6C 20 6F 72 20 74 68 65 20 61 63 63 6F 6D 70 61 l or the accompa
004EE0: 6E 79 69 6E 67 90 20 63 6F 6D 70 75 74 65 72 90 nying. computer.
004EF0: 20 70 72 6F 67 72 61 6D 20 69 6E 20 61 6E 79 20 program in any
004F00: 66 6F 72 6D 20 77 69 74 68 6F 75 74 20 0D 8A 74 form without ..t
004F10: 68 65 20 77 72 69 74 74 65 6E 20 70 65 72 6D 69 he written permi
004F20: 73 73 69 6F 6E 20 6F 66 90 20 74 68 65 90 20 63 ssion of. the. c
004F30: 6F 70 79 72 69 67 68 74 90 20 68 6F 6C 64 65 72 opyright. holder
004F40: 2E 90 20 53 6F 66 74 77 61 72 65 20 70 69 72 61 .. Software pira
004F50: 63 79 20 69 73 20 0D 8A 74 68 65 66 74 2E 0D 0A cy is ..theft...
004F60: 0D 0A 09 54 68 65 20 42 43 50 4C 20 63 6F 6D 70 ...The BCPL comp
004F70: 69 6C 65 72 20 77 61 73 20 64 65 76 65 6C 6F 70 iler was develop
004F80: 65 64 20 75 73 69 6E 67 20 74 68 65 20 4D 41 58 ed using the MAX
004F90: 41 4D 20 61 73 73 65 6D 62 6C 65 72 20 52 4F 4D AM assembler ROM
004FA0: 2E 0D 0A 09 54 68 69 73 20 6D 61 6E 75 61 6C 20 ....This manual
004FB0: 77 61 73 20 77 72 69 74 74 65 6E 20 6F 6E 20 74 was written on t
004FC0: 68 65 90 20 50 52 4F 54 45 58 54 20 77 6F 72 64 he. PROTEXT word
004FD0: 20 70 72 6F 63 65 73 73 6F 72 20 61 6E 64 20 63 processor and c
004FE0: 68 65 63 6B 65 64 20 0D 8A 75 73 69 6E 67 20 50 hecked ..using P
004FF0: 52 4F 53 50 45 4C 4C 2E 0D 0A 0D 0A 3E 63 65 20 ROSPELL.....>ce
005000: E2 41 72 6E 6F 72 20 4C 74 64 2E 2C 20 31 31 38 .Arnor Ltd., 118
005010: 20 57 68 69 74 65 68 6F 72 73 65 20 52 6F 61 64 Whitehorse Road
005020: 2C 20 43 72 6F 79 64 6F 6E 2C 20 43 52 30 20 32 , Croydon, CR0 2
005030: 4A 46 2E E2 0D 0A 3E 6F 70 0D 0A 3E 66 6F 20 20 JF....>op..>fo
005040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005060: 25 20 20 20 20 20 20 20 20 20 20 20 20 0D 0A 3E % ..>
005070: 63 65 20 E2 31 2E 20 41 42 4F 55 54 20 42 43 50 ce .1. ABOUT BCP
005080: 4C E2 0D 0A 0D 0A 0D 0A 09 42 43 50 4C 20 69 73 L........BCPL is
005090: 20 6F 66 74 65 6E 20 64 65 73 63 72 69 62 65 64 often described
0050A0: 20 61 73 90 20 61 20 22 73 79 73 74 65 6D 73 20 as. a "systems
0050B0: 70 72 6F 67 72 61 6D 6D 69 6E 67 20 6C 61 6E 67 programming lang
0050C0: 75 61 67 65 22 2E 20 54 68 69 73 20 0D 8A 6D 61 uage". This ..ma
0050D0: 6B 65 73 20 42 43 50 4C 20 73 6F 75 6E 64 20 76 kes BCPL sound v
0050E0: 65 72 79 20 67 72 61 6E 64 20 61 6E 64 90 20 74 ery grand and. t
0050F0: 65 63 68 6E 69 63 61 6C 2C 90 20 62 75 74 20 74 echnical,. but t
005100: 68 69 73 20 69 73 20 6E 6F 74 20 74 68 65 20 63 his is not the c
005110: 61 73 65 2E 20 0D 8A 42 43 50 4C 20 69 73 20 63 ase. ..BCPL is c
005120: 65 72 74 61 69 6E 6C 79 20 61 20 76 65 72 79 90 ertainly a very.
005130: 20 67 6F 6F 64 90 20 6C 61 6E 67 75 61 67 65 90 good. language.
005140: 20 66 6F 72 20 77 72 69 74 69 6E 67 20 70 72 6F for writing pro
005150: 67 72 61 6D 73 20 73 75 63 68 20 61 73 20 0D 8A grams such as ..
005160: 6F 70 65 72 61 74 69 6E 67 20 73 79 73 74 65 6D operating system
005170: 73 2C 20 63 6F 6D 70 69 6C 65 72 73 20 61 6E 64 s, compilers and
005180: 20 77 6F 72 64 20 70 72 6F 63 65 73 73 6F 72 73 word processors
005190: 20 62 75 74 20 74 68 65 20 66 65 61 74 75 72 65 but the feature
0051A0: 73 20 74 68 61 74 20 0D 8A 6D 61 6B 65 20 42 43 s that ..make BC
0051B0: 50 4C 20 69 64 65 61 6C 90 20 66 6F 72 90 20 74 PL ideal. for. t
0051C0: 68 65 73 65 90 20 61 70 70 6C 69 63 61 74 69 6F hese. applicatio
0051D0: 6E 73 90 20 61 6C 73 6F 90 20 6D 61 6B 65 90 20 ns. also. make.
0051E0: 69 74 20 61 6E 20 65 78 63 65 6C 6C 65 6E 74 20 it an excellent
0051F0: 0D 8A 67 65 6E 65 72 61 6C 20 70 75 72 70 6F 73 ..general purpos
005200: 65 20 6C 61 6E 67 75 61 67 65 2E 0D 0A 09 57 68 e language....Wh
005210: 61 74 20 61 72 65 20 74 68 65 73 65 20 66 65 61 at are these fea
005220: 74 75 72 65 73 3F 20 46 69 72 73 74 2C 20 66 6C tures? First, fl
005230: 65 78 69 62 69 6C 69 74 79 2E 20 42 43 50 4C 20 exibility. BCPL
005240: 70 72 6F 67 72 61 6D 73 20 61 72 65 20 6E 6F 74 programs are not
005250: 20 0D 8A 63 6F 6E 73 74 72 61 69 6E 65 64 20 62 ..constrained b
005260: 79 20 72 75 6C 65 73 20 61 73 20 74 6F 20 77 68 y rules as to wh
005270: 69 63 68 90 20 6F 70 65 72 61 74 69 6F 6E 73 20 ich. operations
005280: 63 61 6E 20 62 65 20 70 65 72 66 6F 72 6D 65 64 can be performed
005290: 20 6F 6E 20 77 68 69 63 68 20 0D 8A 74 79 70 65 on which ..type
0052A0: 20 6F 66 20 76 61 72 69 61 62 6C 65 2E 20 49 6E of variable. In
0052B0: 64 65 65 64 20 74 68 65 72 65 20 61 72 65 90 20 deed there are.
0052C0: 6E 6F 20 64 69 66 66 65 72 65 6E 74 20 76 61 72 no different var
0052D0: 69 61 62 6C 65 20 74 79 70 65 73 20 2D 2D 20 61 iable types -- a
0052E0: 6C 6C 20 0D 8A 76 61 72 69 61 62 6C 65 73 20 61 ll ..variables a
0052F0: 72 65 90 20 73 69 6D 70 6C 65 90 20 6E 75 6D 62 re. simple. numb
005300: 65 72 73 90 20 61 6E 64 90 20 6F 74 68 65 72 90 ers. and. other.
005310: 20 74 79 70 65 73 90 20 61 6E 64 90 20 73 74 72 types. and. str
005320: 75 63 74 75 72 65 73 20 61 72 65 20 0D 8A 61 63 uctures are ..ac
005330: 68 69 65 76 65 64 90 20 62 79 90 20 75 73 69 6E hieved. by. usin
005340: 67 90 20 76 61 72 69 61 62 6C 65 73 90 20 64 69 g. variables. di
005350: 66 66 65 72 65 6E 74 6C 79 2E 90 90 20 54 68 69 fferently... Thi
005360: 73 90 20 6D 61 6B 65 73 90 20 42 43 50 4C 90 20 s. makes. BCPL.
005370: 76 65 72 79 20 0D 8A 64 69 66 66 65 72 65 6E 74 very ..different
005380: 20 66 72 6F 6D 20 6F 74 68 65 72 20 6C 61 6E 67 from other lang
005390: 75 61 67 65 73 20 73 75 63 68 20 61 73 90 20 42 uages such as. B
0053A0: 41 53 49 43 90 20 61 6E 64 20 50 41 53 43 41 4C ASIC. and PASCAL
0053B0: 2E 20 41 20 73 74 72 69 6E 67 20 69 73 20 0D 8A . A string is ..
0053C0: 74 72 65 61 74 65 64 20 61 73 20 61 20 76 61 72 treated as a var
0053D0: 69 61 62 6C 65 20 70 6F 69 6E 74 69 6E 67 20 74 iable pointing t
0053E0: 6F 90 20 61 90 20 73 74 72 69 6E 67 2C 20 73 69 o. a. string, si
0053F0: 6D 69 6C 61 72 6C 79 20 61 20 76 65 63 74 6F 72 milarly a vector
005400: 2E 20 45 76 65 6E 20 0D 8A 70 72 6F 63 65 64 75 . Even ..procedu
005410: 72 65 73 90 20 61 72 65 90 20 73 69 6D 70 6C 79 res. are. simply
005420: 90 20 76 61 72 69 61 62 6C 65 73 90 20 63 6F 6E . variables. con
005430: 74 61 69 6E 69 6E 67 90 90 20 74 68 65 90 20 61 taining.. the. a
005440: 64 64 72 65 73 73 90 20 6F 66 90 20 74 68 65 20 ddress. of. the
005450: 0D 8A 70 72 6F 63 65 64 75 72 65 2C 20 61 6E 64 ..procedure, and
005460: 20 74 68 65 73 65 20 6D 61 79 20 62 65 20 61 73 these may be as
005470: 73 69 67 6E 65 64 20 74 6F 20 6F 72 20 70 61 73 signed to or pas
005480: 73 65 64 20 61 73 20 70 61 72 61 6D 65 74 65 72 sed as parameter
005490: 73 2E 0D 0A 09 54 68 69 73 20 66 6C 65 78 69 62 s....This flexib
0054A0: 69 6C 69 74 79 20 61 6C 6C 6F 77 73 20 74 68 65 ility allows the
0054B0: 20 42 43 50 4C 20 70 72 6F 67 72 61 6D 6D 65 72 BCPL programmer
0054C0: 90 20 74 6F 20 61 63 63 65 73 73 20 61 6E 79 20 . to access any
0054D0: 70 61 72 74 20 6F 66 20 0D 8A 6D 65 6D 6F 72 79 part of ..memory
0054E0: 20 28 69 6E 64 65 65 64 20 61 6E 79 20 69 6E 64 (indeed any ind
0054F0: 69 76 69 64 75 61 6C 20 62 69 74 29 20 61 6E 64 ividual bit) and
005500: 90 20 73 6F 20 64 6F 20 74 68 69 6E 67 73 20 74 . so do things t
005510: 68 61 74 20 63 61 6E 20 6E 6F 72 6D 61 6C 6C 79 hat can normally
005520: 20 0D 8A 6F 6E 6C 79 20 62 65 20 64 6F 6E 65 20 ..only be done
005530: 69 6E 20 6D 61 63 68 69 6E 65 20 63 6F 64 65 2E in machine code.
005540: 20 4F 66 20 63 6F 75 72 73 65 20 66 72 65 65 64 Of course freed
005550: 6F 6D 20 61 6C 77 61 79 73 20 63 61 72 72 69 65 om always carrie
005560: 73 20 61 20 70 72 69 63 65 20 0D 8A 2D 2D 20 72 s a price ..-- r
005570: 65 73 70 6F 6E 73 69 62 69 6C 69 74 79 2E 20 49 esponsibility. I
005580: 6E 20 6C 61 6E 67 75 61 67 65 73 20 73 75 63 68 n languages such
005590: 20 61 73 20 50 41 53 43 41 4C 20 74 68 65 20 63 as PASCAL the c
0055A0: 6F 6D 70 69 6C 65 72 20 64 65 74 65 63 74 73 20 ompiler detects
0055B0: 61 6E 20 0D 8A 61 74 74 65 6D 70 74 20 74 6F 20 an ..attempt to
0055C0: 70 65 72 66 6F 72 6D 20 61 6E 90 20 69 6C 6C 65 perform an. ille
0055D0: 67 61 6C 90 20 6F 72 90 20 6D 65 61 6E 69 6E 67 gal. or. meaning
0055E0: 6C 65 73 73 90 20 6F 70 65 72 61 74 69 6F 6E 2E less. operation.
0055F0: 20 49 6E 20 42 43 50 4C 20 69 74 20 0D 8A 72 61 In BCPL it ..ra
005600: 72 65 6C 79 20 64 6F 65 73 20 73 6F 90 20 61 6E rely does so. an
005610: 64 90 20 69 74 90 20 69 73 90 20 71 75 69 74 65 d. it. is. quite
005620: 90 20 70 6F 73 73 69 62 6C 65 90 20 74 6F 90 20 . possible. to.
005630: 63 72 61 73 68 90 20 74 68 65 20 73 79 73 74 65 crash. the syste
005640: 6D 20 62 79 20 0D 8A 63 6F 72 72 75 70 74 69 6E m by ..corruptin
005650: 67 20 74 68 65 20 73 79 73 74 65 6D 20 6D 65 6D g the system mem
005660: 6F 72 79 20 6F 72 20 6A 75 6D 70 69 6E 67 20 74 ory or jumping t
005670: 6F 20 61 6E 20 69 6C 6C 65 67 61 6C 20 61 64 64 o an illegal add
005680: 72 65 73 73 2E 0D 0A 0D 0A 0D 0A E2 41 6E 20 65 ress........An e
005690: 73 73 65 6E 74 69 61 6C 20 62 6F 6F 6B 20 74 6F ssential book to
0056A0: 20 72 65 61 64 E2 0D 0A 0D 0A 09 54 68 69 73 20 read......This
0056B0: 6D 61 6E 75 61 6C 20 67 69 76 65 73 20 61 6E 20 manual gives an
0056C0: 69 6E 74 72 6F 64 75 63 74 69 6F 6E 90 20 74 6F introduction. to
0056D0: 90 20 63 65 72 74 61 69 6E 20 61 73 70 65 63 74 . certain aspect
0056E0: 73 20 6F 66 20 42 43 50 4C 2C 20 61 73 20 0D 8A s of BCPL, as ..
0056F0: 77 65 6C 6C 20 61 73 20 61 20 73 75 6D 6D 61 72 well as a summar
005700: 79 20 6F 66 90 20 74 68 65 90 20 66 61 63 69 6C y of. the. facil
005710: 69 74 69 65 73 90 20 69 6D 70 6C 65 6D 65 6E 74 ities. implement
005720: 65 64 20 69 6E 20 74 68 69 73 20 76 65 72 73 69 ed in this versi
005730: 6F 6E 2E 20 49 74 20 0D 8A 64 6F 65 73 20 6E 6F on. It ..does no
005740: 74 20 61 74 74 65 6D 70 74 20 74 6F 90 20 62 65 t attempt to. be
005750: 90 20 61 90 20 63 6F 6D 70 6C 65 74 65 90 20 67 . a. complete. g
005760: 75 69 64 65 90 20 74 6F 90 20 42 43 50 4C 20 70 uide. to. BCPL p
005770: 72 6F 67 72 61 6D 6D 69 6E 67 2C 20 61 6E 64 20 rogramming, and
005780: 0D 8A 61 73 73 75 6D 65 73 20 73 6F 6D 65 20 6B ..assumes some k
005790: 6E 6F 77 6C 65 64 67 65 20 6F 66 90 20 70 72 6F nowledge of. pro
0057A0: 67 72 61 6D 6D 69 6E 67 90 20 28 66 6F 72 90 20 gramming. (for.
0057B0: 65 78 61 6D 70 6C 65 90 20 69 6E 20 42 41 53 49 example. in BASI
0057C0: 43 29 2E 20 4E 6F 74 65 20 0D 8A 74 68 61 74 20 C). Note ..that
0057D0: 65 78 61 6D 70 6C 65 73 20 6F 66 20 74 68 65 20 examples of the
0057E0: 75 73 65 90 20 6F 66 90 20 6D 6F 73 74 90 20 66 use. of. most. f
0057F0: 65 61 74 75 72 65 73 90 20 6F 66 90 20 42 43 50 eatures. of. BCP
005800: 4C 20 61 72 65 20 74 6F 20 62 65 20 66 6F 75 6E L are to be foun
005810: 64 20 0D 8A 61 6D 6F 6E 67 20 74 68 65 20 65 78 d ..among the ex
005820: 61 6D 70 6C 65 20 70 72 6F 67 72 61 6D 73 20 63 ample programs c
005830: 6F 6E 74 61 69 6E 65 64 20 6F 6E 20 74 68 65 20 ontained on the
005840: 64 69 73 63 2E 0D 0A 0D 0A 09 54 68 65 20 64 65 disc......The de
005850: 66 69 6E 69 74 69 76 65 90 20 62 6F 6F 6B 90 20 finitive. book.
005860: 6F 6E 90 20 42 43 50 4C 2C 90 20 62 6F 74 68 90 on. BCPL,. both.
005870: 20 61 73 90 20 61 6E 90 20 69 6E 74 72 6F 64 75 as. an. introdu
005880: 63 74 69 6F 6E 90 20 61 6E 64 20 61 20 0D 8A 72 ction. and a ..r
005890: 65 66 65 72 65 6E 63 65 20 69 73 20 20 22 42 43 eference is "BC
0058A0: 50 4C 90 20 2D 2D 90 20 74 68 65 90 20 6C 61 6E PL. --. the. lan
0058B0: 67 75 61 67 65 90 20 61 6E 64 90 20 69 74 73 90 guage. and. its.
0058C0: 20 63 6F 6D 70 69 6C 65 72 22 90 20 62 79 20 4D compiler". by M
0058D0: 61 72 74 69 6E 20 0D 8A 52 69 63 68 61 72 64 73 artin ..Richards
0058E0: 20 61 6E 64 20 43 6F 6C 69 6E 20 57 68 69 74 62 and Colin Whitb
0058F0: 79 2D 53 74 72 65 76 65 6E 73 2E 0D 0A 09 54 68 y-Strevens....Th
005900: 69 73 20 62 6F 6F 6B 20 69 73 20 65 73 73 65 6E is book is essen
005910: 74 69 61 6C 90 20 72 65 61 64 69 6E 67 90 20 66 tial. reading. f
005920: 6F 72 90 20 74 68 65 90 20 42 43 50 4C 90 20 70 or. the. BCPL. p
005930: 72 6F 67 72 61 6D 6D 65 72 2E 20 49 74 20 69 73 rogrammer. It is
005940: 20 0D 8A 70 75 62 6C 69 73 68 65 64 20 62 79 20 ..published by
005950: 43 61 6D 62 72 69 64 67 65 90 20 55 6E 69 76 65 Cambridge. Unive
005960: 72 73 69 74 79 90 20 50 72 65 73 73 90 20 61 74 rsity. Press. at
005970: 90 20 61 90 20 72 65 61 73 6F 6E 61 62 6C 65 90 . a. reasonable.
005980: 20 70 72 69 63 65 20 69 6E 20 0D 8A 70 61 70 65 price in ..pape
005990: 72 62 61 63 6B 2E 20 4D 61 72 74 69 6E 20 52 69 rback. Martin Ri
0059A0: 63 68 61 72 64 73 20 6F 72 69 67 69 6E 61 6C 6C chards originall
0059B0: 79 90 20 64 65 73 69 67 6E 65 64 90 20 42 43 50 y. designed. BCP
0059C0: 4C 90 20 69 6E 20 43 61 6D 62 72 69 64 67 65 20 L. in Cambridge
0059D0: 69 6E 20 0D 8A 31 39 36 37 2E 20 54 68 69 73 20 in ..1967. This
0059E0: 62 6F 6F 6B 20 77 69 6C 6C 20 68 65 6E 63 65 66 book will hencef
0059F0: 6F 72 74 68 20 62 65 20 72 65 66 65 72 72 65 64 orth be referred
005A00: 20 74 6F 20 61 73 20 22 74 68 65 20 42 43 50 4C to as "the BCPL
005A10: 20 62 6F 6F 6B 22 2E 0D 0A 09 49 6E 20 70 61 72 book"....In par
005A20: 74 69 63 75 6C 61 72 20 74 68 65 20 62 6F 6F 6B ticular the book
005A30: 20 63 6F 6E 74 61 69 6E 73 90 20 61 6E 20 65 78 contains. an ex
005A40: 63 65 6C 6C 65 6E 74 20 73 65 63 74 69 6F 6E 20 cellent section
005A50: 6F 6E 20 22 41 64 76 61 6E 63 65 64 20 0D 8A 66 on "Advanced ..f
005A60: 61 63 69 6C 69 74 69 65 73 22 90 20 77 68 69 63 acilities". whic
005A70: 68 90 20 63 6F 76 65 72 73 2C 90 90 20 61 6D 6F h. covers,.. amo
005A80: 6E 67 90 90 20 6F 74 68 65 72 90 90 20 74 68 69 ng.. other.. thi
005A90: 6E 67 73 2C 90 90 20 70 6F 69 6E 74 65 72 73 2C ngs,.. pointers,
005AA0: 90 20 62 69 74 20 0D 8A 6F 70 65 72 61 74 69 6F . bit ..operatio
005AB0: 6E 73 2C 20 72 65 63 75 72 73 69 6F 6E 20 61 6E ns, recursion an
005AC0: 64 20 73 63 6F 70 65 20 72 75 6C 65 73 2E 20 0D d scope rules. .
005AD0: 0A 09 46 6F 72 20 74 68 65 20 70 75 72 70 6F 73 ..For the purpos
005AE0: 65 73 20 6F 66 90 20 74 68 69 73 90 20 6D 61 6E es of. this. man
005AF0: 75 61 6C 2C 90 20 74 68 65 90 20 42 43 50 4C 90 ual,. the. BCPL.
005B00: 20 62 6F 6F 6B 20 69 73 20 72 65 67 61 72 64 65 book is regarde
005B10: 64 20 61 73 20 0D 8A 64 65 66 69 6E 69 6E 67 20 d as ..defining
005B20: 22 73 74 61 6E 64 61 72 64 22 20 42 43 50 4C 2C "standard" BCPL,
005B30: 20 61 6E 64 20 61 6E 79 90 20 6D 69 6E 6F 72 20 and any. minor
005B40: 76 61 72 69 61 74 69 6F 6E 73 20 6F 72 20 65 6E variations or en
005B50: 68 61 6E 63 65 6D 65 6E 74 73 20 74 6F 20 0D 8A hancements to ..
005B60: 74 68 69 73 20 73 74 61 6E 64 61 72 64 20 61 72 this standard ar
005B70: 65 20 70 6F 69 6E 74 65 64 20 6F 75 74 2E 0D 0A e pointed out...
005B80: 3E 6F 70 0D 0A 3E 63 65 20 E2 32 2E 20 55 53 49 >op..>ce .2. USI
005B90: 4E 47 20 41 52 4E 4F 52 20 42 43 50 4C 20 55 4E NG ARNOR BCPL UN
005BA0: 44 45 52 20 43 50 2F 4D E2 0D 0A 0D 0A 0D 0A 09 DER CP/M........
005BB0: 43 50 43 20 75 73 65 72 73 20 6D 61 79 90 20 75 CPC users may. u
005BC0: 73 65 90 20 42 43 50 4C 90 20 75 6E 64 65 72 90 se. BCPL. under.
005BD0: 20 43 50 2F 4D 90 20 28 65 69 74 68 65 72 90 20 CP/M. (either.
005BE0: 32 2E 32 90 20 6F 72 20 50 6C 75 73 29 2E 20 54 2.2. or Plus). T
005BF0: 68 65 20 0D 8A 73 75 70 70 6C 69 65 64 20 64 69 he ..supplied di
005C00: 73 63 20 68 61 73 20 74 68 65 20 43 50 2F 4D 20 sc has the CP/M
005C10: 76 65 72 73 69 6F 6E 20 6F 66 20 74 68 65 20 70 version of the p
005C20: 72 6F 67 72 61 6D 20 6F 6E 20 6F 6E 65 20 73 69 rogram on one si
005C30: 64 65 2C 20 61 6E 64 20 74 68 65 20 0D 8A 41 4D de, and the ..AM
005C40: 53 44 4F 53 20 76 65 72 73 69 6F 6E 20 6F 6E 20 SDOS version on
005C50: 74 68 65 20 6F 74 68 65 72 2E 20 0D 0A 0D 0A 4E the other. ....N
005C60: 6F 74 65 3A 20 50 43 57 38 32 35 36 2F 38 35 31 ote: PCW8256/851
005C70: 32 20 75 73 65 72 73 20 73 68 6F 75 6C 64 20 69 2 users should i
005C80: 67 6E 6F 72 65 20 74 68 65 20 41 4D 53 44 4F 53 gnore the AMSDOS
005C90: 20 73 69 64 65 20 6F 66 20 74 68 65 20 64 69 73 side of the dis
005CA0: 63 20 61 6E 64 20 0D 8A 74 68 65 20 45 50 52 4F c and ..the EPRO
005CB0: 4D 2C 20 61 73 90 20 77 65 6C 6C 90 20 61 73 90 M, as. well. as.
005CC0: 20 61 6E 79 90 20 72 65 66 65 72 65 6E 63 65 73 any. references
005CD0: 90 20 74 6F 90 20 41 6D 73 64 6F 73 90 20 6F 72 . to. Amsdos. or
005CE0: 20 74 68 65 20 45 50 52 4F 4D 2F 52 4F 4D 20 0D the EPROM/ROM .
005CF0: 8A 76 65 72 73 69 6F 6E 2C 20 74 68 72 6F 75 67 .version, throug
005D00: 68 6F 75 74 20 74 68 69 73 20 6D 61 6E 75 61 6C hout this manual
005D10: 2E 20 54 68 65 73 65 20 61 72 65 20 66 6F 72 20 . These are for
005D20: 43 50 43 20 75 73 65 72 73 20 6F 6E 6C 79 2E 20 CPC users only.
005D30: 0D 0A 0D 0A 09 54 68 65 20 6E 65 77 63 6F 6D 65 .....The newcome
005D40: 72 20 74 6F 20 74 68 65 20 6C 61 6E 67 75 61 67 r to the languag
005D50: 65 20 69 73 20 61 64 76 69 73 65 64 20 74 6F 20 e is advised to
005D60: 70 61 73 73 20 6F 76 65 72 20 63 68 61 70 74 65 pass over chapte
005D70: 72 73 20 32 2C 20 33 20 0D 8A 61 6E 64 20 34 20 rs 2, 3 ..and 4
005D80: 6F 6E 20 74 68 65 20 66 69 72 73 74 20 72 65 61 on the first rea
005D90: 64 69 6E 67 20 61 73 20 74 68 65 79 20 64 65 73 ding as they des
005DA0: 63 72 69 62 65 20 74 68 65 20 6D 65 63 68 61 6E cribe the mechan
005DB0: 69 63 73 20 6F 66 20 75 73 69 6E 67 20 74 68 65 ics of using the
005DC0: 20 0D 8A 63 6F 6D 70 69 6C 65 72 2C 20 72 61 74 ..compiler, rat
005DD0: 68 65 72 20 74 68 61 6E 20 64 65 74 61 69 6C 73 her than details
005DE0: 20 6F 66 20 74 68 65 20 6C 61 6E 67 75 61 67 65 of the language
005DF0: 2E 0D 0A 0D 0A E2 4C 69 73 74 20 6F 66 20 66 69 ......List of fi
005E00: 6C 65 73 20 63 6F 6E 74 61 69 6E 65 64 20 6F 6E les contained on
005E10: 20 74 68 65 20 64 69 73 63 20 2D 2D 20 43 50 2F the disc -- CP/
005E20: 4D 20 73 69 64 65 E2 0D 0A 0D 0A 54 68 65 20 6D M side.....The m
005E30: 61 69 6E 20 66 69 6C 65 73 20 61 72 65 3A 0D 0A ain files are:..
005E40: 0D 0A 42 43 50 4C 2E 43 4F 4D 09 09 74 68 65 20 ..BCPL.COM..the
005E50: 6D 61 69 6E 20 63 6F 6D 70 69 6C 65 72 20 70 72 main compiler pr
005E60: 6F 67 72 61 6D 0D 0A 43 4C 49 42 48 44 52 09 09 ogram..CLIBHDR..
005E70: 74 68 65 20 6D 61 69 6E 20 49 2F 4F 20 6C 69 62 the main I/O lib
005E80: 72 61 72 79 0D 0A 43 4C 49 42 48 44 52 31 09 09 rary..CLIBHDR1..
005E90: 74 68 65 20 65 78 74 72 61 20 49 2F 4F 20 6C 69 the extra I/O li
005EA0: 62 72 61 72 79 20 63 6F 6E 74 61 69 6E 69 6E 67 brary containing
005EB0: 20 6C 65 73 73 20 75 73 65 64 20 72 6F 75 74 69 less used routi
005EC0: 6E 65 73 0D 0A 44 45 42 55 47 09 09 61 20 72 6F nes..DEBUG..a ro
005ED0: 75 74 69 6E 65 20 75 73 65 66 75 6C 20 66 6F 72 utine useful for
005EE0: 20 64 65 62 75 67 67 69 6E 67 20 42 43 50 4C 20 debugging BCPL
005EF0: 70 72 6F 67 72 61 6D 73 0D 0A 0D 0A 54 68 65 20 programs....The
005F00: 64 69 73 63 20 61 6C 73 6F 20 63 6F 6E 74 61 69 disc also contai
005F10: 6E 73 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 ns the following
005F20: 20 65 78 61 6D 70 6C 65 20 66 69 6C 65 73 3A 0D example files:.
005F30: 0A 0D 0A 3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D ...>---!-----!--
005F40: 2D 2D 2D 4C 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D ---L-------!----
005F50: 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D ---!-------!----
005F60: 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D ---!-------!----
005F70: 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A 41 53 36 35 30 ---!----R..AS650
005F80: 32 2E 42 09 09 61 20 36 35 30 32 20 63 72 6F 73 2.B..a 6502 cros
005F90: 73 20 61 73 73 65 6D 62 6C 65 72 2C 20 77 72 69 s assembler, wri
005FA0: 74 74 65 6E 20 69 6E 20 42 43 50 4C 0D 0A 42 45 tten in BCPL..BE
005FB0: 44 43 2E 42 09 09 42 43 50 4C 20 65 64 69 74 6F DC.B..BCPL edito
005FC0: 72 20 73 6F 75 72 63 65 20 63 6F 64 65 2C 20 43 r source code, C
005FD0: 50 2F 4D 20 76 65 72 73 69 6F 6E 0D 0A 42 45 44 P/M version..BED
005FE0: 43 2E 43 4F 4D 09 09 42 43 50 4C 20 65 64 69 74 C.COM..BCPL edit
005FF0: 6F 72 20 6F 62 6A 65 63 74 20 63 6F 64 65 2C 20 or object code,
006000: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
006010: 05 00 00 00 02 09 50 E5 05 00 C1 02 00 00 00 02 ......P.........
006020: 05 00 C2 02 00 00 00 02 05 00 C3 02 00 00 00 02 ................
006030: 05 00 C4 02 00 00 00 02 05 00 C5 02 00 00 00 02 ................
006040: 05 00 C6 02 00 00 00 02 05 00 C7 02 00 00 00 02 ................
006050: 05 00 C8 02 00 00 00 02 05 00 C9 02 00 00 00 02 ................
006060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
006070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
006080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
006090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
006100: 43 50 2F 4D 20 76 65 72 73 69 6F 6E 0D 0A 43 4F CP/M version..CO
006110: 50 59 2E 42 09 09 61 20 73 69 6D 70 6C 65 20 65 PY.B..a simple e
006120: 78 61 6D 70 6C 65 20 70 72 6F 67 72 61 6D 20 77 xample program w
006130: 68 69 63 68 20 63 6F 70 69 65 73 20 20 61 20 66 hich copies a f
006140: 69 6C 65 0D 0A 4B 45 59 44 45 46 53 2E 50 43 57 ile..KEYDEFS.PCW
006150: 09 61 20 6B 65 79 20 64 65 66 69 6E 69 74 69 6F .a key definitio
006160: 6E 20 66 69 6C 65 90 20 66 6F 72 90 20 75 73 65 n file. for. use
006170: 90 20 77 69 74 68 90 20 42 45 44 43 2E 43 4F 4D . with. BEDC.COM
006180: 20 6F 6E 20 74 68 65 20 0D 8A 09 09 09 50 43 57 on the .....PCW
006190: 38 32 35 36 2F 38 35 31 32 2E 0D 0A 54 49 44 59 8256/8512...TIDY
0061A0: 2E 42 09 09 41 20 42 43 50 4C 20 70 72 6F 67 72 .B..A BCPL progr
0061B0: 61 6D 20 74 6F 20 66 6F 72 6D 61 74 20 42 43 50 am to format BCP
0061C0: 4C 20 73 6F 75 72 63 65 20 63 6F 64 65 20 74 69 L source code ti
0061D0: 64 69 6C 79 0D 0A 3E 2D 2D 2D 21 2D 2D 2D 2D 2D dily..>---!-----
0061E0: 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D !-----!-------!-
0061F0: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
006200: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
006210: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A 0D 0A ------!----R....
006220: 0D 0A E2 43 72 65 61 74 69 6E 67 20 61 20 77 6F ...Creating a wo
006230: 72 6B 69 6E 67 20 64 69 73 63 E2 0D 0A 0D 0A 4E rking disc.....N
006240: 4F 54 45 3A 20 55 6E 64 65 72 20 6E 6F 20 63 69 OTE: Under no ci
006250: 72 63 75 6D 73 74 61 6E 63 65 73 20 73 68 6F 75 rcumstances shou
006260: 6C 64 90 20 74 68 65 90 20 6F 72 69 67 69 6E 61 ld. the. origina
006270: 6C 90 20 64 69 73 63 90 20 62 65 20 75 73 65 64 l. disc. be used
006280: 20 61 73 20 61 20 0D 8A 77 6F 72 6B 69 6E 67 20 as a ..working
006290: 64 69 73 63 20 66 6F 72 20 6E 6F 72 6D 61 6C 20 disc for normal
0062A0: 75 73 65 2E 20 54 68 65 90 20 72 65 71 75 69 72 use. The. requir
0062B0: 65 64 20 66 69 6C 65 73 20 73 68 6F 75 6C 64 20 ed files should
0062C0: 62 65 20 63 6F 70 69 65 64 20 6F 6E 74 6F 20 0D be copied onto .
0062D0: 8A 61 20 73 79 73 74 65 6D 20 64 69 73 63 20 61 .a system disc a
0062E0: 6E 64 20 74 68 65 20 6F 72 69 67 69 6E 61 6C 20 nd the original
0062F0: 72 65 74 61 69 6E 65 64 20 69 6E 20 61 20 73 61 retained in a sa
006300: 66 65 20 70 6C 61 63 65 2C 20 61 73 20 61 20 62 fe place, as a b
006310: 61 63 6B 75 70 2E 0D 0A 0D 0A 09 41 20 73 79 73 ackup......A sys
006320: 74 65 6D 20 64 69 73 63 20 73 68 6F 75 6C 64 20 tem disc should
006330: 62 65 90 20 63 72 65 61 74 65 64 20 75 73 69 6E be. created usin
006340: 67 20 44 49 53 43 4B 49 54 20 28 44 49 53 43 4B g DISCKIT (DISCK
006350: 49 54 33 2C 20 44 49 53 43 4B 49 54 32 20 0D 8A IT3, DISCKIT2 ..
006360: 6F 72 20 46 4F 52 4D 41 54 2C 20 61 73 20 61 70 or FORMAT, as ap
006370: 70 72 6F 70 72 69 61 74 65 20 6F 6E 90 20 74 68 propriate on. th
006380: 65 90 20 43 50 43 90 20 72 61 6E 67 65 29 90 20 e. CPC. range).
006390: 74 6F 90 20 66 6F 72 6D 61 74 20 61 20 64 69 73 to. format a dis
0063A0: 63 2E 20 54 68 65 20 0D 8A 66 69 72 73 74 20 66 c. The ..first f
0063B0: 6F 75 72 20 66 69 6C 65 73 90 20 69 6E 90 20 74 our files. in. t
0063C0: 68 65 90 20 61 62 6F 76 65 90 20 6C 69 73 74 90 he. above. list.
0063D0: 20 73 68 6F 75 6C 64 90 20 74 68 65 6E 90 20 62 should. then. b
0063E0: 65 20 63 6F 70 69 65 64 20 28 75 73 69 6E 67 20 e copied (using
0063F0: 0D 8A 50 49 50 29 20 66 72 6F 6D 20 74 68 65 90 ..PIP) from the.
006400: 20 73 75 70 70 6C 69 65 64 90 20 42 43 50 4C 90 supplied. BCPL.
006410: 20 64 69 73 63 90 20 6F 6E 74 6F 90 20 74 68 65 disc. onto. the
006420: 90 20 6E 65 77 6C 79 90 20 66 6F 72 6D 61 74 74 . newly. formatt
006430: 65 64 20 64 69 73 63 2C 20 0D 8A 74 6F 67 65 74 ed disc, ..toget
006440: 68 65 72 20 77 69 74 68 20 28 69 66 20 75 73 69 her with (if usi
006450: 6E 67 20 43 50 2F 4D 20 50 6C 75 73 29 90 20 74 ng CP/M Plus). t
006460: 68 65 90 20 45 4D 53 20 66 69 6C 65 20 66 72 6F he. EMS file fro
006470: 6D 20 74 68 65 20 43 50 2F 4D 20 53 79 73 74 65 m the CP/M Syste
006480: 6D 20 0D 8A 55 74 69 6C 69 74 69 65 73 20 64 69 m ..Utilities di
006490: 73 63 2E 0D 0A 09 54 68 69 73 20 77 69 6C 6C 20 sc....This will
0064A0: 63 72 65 61 74 65 20 61 90 20 64 69 73 63 90 20 create a. disc.
0064B0: 73 75 69 74 61 62 6C 65 90 20 66 6F 72 90 20 75 suitable. for. u
0064C0: 73 65 2C 90 20 62 75 74 90 20 79 6F 75 20 6D 69 se,. but. you mi
0064D0: 67 68 74 20 61 6C 73 6F 20 0D 8A 64 65 63 69 64 ght also ..decid
0064E0: 65 20 74 6F 20 61 64 64 20 66 75 72 74 68 65 72 e to add further
0064F0: 20 66 69 6C 65 73 2C 90 20 73 75 63 68 90 20 61 files,. such. a
006500: 73 90 20 61 6E 90 20 65 64 69 74 6F 72 20 6F 72 s. an. editor or
006510: 20 53 45 54 4B 45 59 53 2E 43 4F 4D 20 28 73 65 SETKEYS.COM (se
006520: 65 20 0D 8A 62 65 6C 6F 77 29 2C 20 74 6F 20 74 e ..below), to t
006530: 68 65 20 64 69 73 63 2E 0D 0A 3E 70 61 0D 0A E2 he disc...>pa...
006540: 45 6E 74 65 72 69 6E 67 20 61 6E 64 20 65 64 69 Entering and edi
006550: 74 69 6E 67 20 42 43 50 4C 20 70 72 6F 67 72 61 ting BCPL progra
006560: 6D 73 20 75 6E 64 65 72 20 43 50 2F 4D E2 0D 0A ms under CP/M...
006570: 0D 0A 09 41 6E 79 20 65 64 69 74 6F 72 20 6F 72 ...Any editor or
006580: 90 20 77 6F 72 64 90 20 70 72 6F 63 65 73 73 6F . word. processo
006590: 72 90 20 6D 61 79 90 20 62 65 90 90 75 73 65 64 r. may. be..used
0065A0: 90 20 66 6F 72 90 20 74 79 70 69 6E 67 20 69 6E . for. typing in
0065B0: 20 42 43 50 4C 20 0D 8A 70 72 6F 67 72 61 6D 73 BCPL ..programs
0065C0: 2C 20 61 73 20 6C 6F 6E 67 20 61 73 20 61 6E 20 , as long as an
0065D0: 41 53 43 49 49 20 66 69 6C 65 20 63 61 6E 20 62 ASCII file can b
0065E0: 65 20 70 72 6F 64 75 63 65 64 2E 0D 0A 09 54 68 e produced....Th
0065F0: 65 20 43 50 2F 4D 20 76 65 72 73 69 6F 6E 20 6F e CP/M version o
006600: 66 20 50 52 4F 54 45 58 54 90 20 69 73 20 65 73 f PROTEXT. is es
006610: 70 65 63 69 61 6C 6C 79 20 73 75 69 74 61 62 6C pecially suitabl
006620: 65 20 28 75 73 69 6E 67 20 70 72 6F 67 72 61 6D e (using program
006630: 20 0D 8A 6D 6F 64 65 29 2C 20 61 73 20 69 73 20 ..mode), as is
006640: 74 68 65 20 41 72 6E 6F 72 20 70 72 6F 67 72 61 the Arnor progra
006650: 6D 90 20 65 64 69 74 6F 72 90 20 73 75 70 70 6C m. editor. suppl
006660: 69 65 64 20 77 69 74 68 20 6F 74 68 65 72 20 41 ied with other A
006670: 72 6E 6F 72 20 43 50 2F 4D 20 0D 8A 70 72 6F 67 rnor CP/M ..prog
006680: 72 61 6D 73 2E 20 41 6C 74 65 72 6E 61 74 69 76 rams. Alternativ
006690: 65 6C 79 20 43 50 43 90 20 75 73 65 72 73 90 20 ely CPC. users.
0066A0: 63 61 6E 90 20 75 73 65 90 20 74 68 65 90 20 41 can. use. the. A
0066B0: 4D 53 44 4F 53 90 20 76 65 72 73 69 6F 6E 73 20 MSDOS. versions
0066C0: 6F 66 20 0D 8A 50 52 4F 54 45 58 54 20 6F 72 20 of ..PROTEXT or
0066D0: 4D 41 58 41 4D 2E 0D 0A 09 49 66 20 79 6F 75 20 MAXAM....If you
0066E0: 64 6F 20 6E 6F 74 20 68 61 76 65 20 61 90 20 73 do not have a. s
0066F0: 75 69 74 61 62 6C 65 90 20 65 64 69 74 6F 72 20 uitable. editor
006700: 74 68 65 20 70 72 6F 67 72 61 6D 20 42 45 44 43 the program BEDC
006710: 2E 43 4F 4D 20 63 61 6E 20 62 65 20 0D 8A 75 73 .COM can be ..us
006720: 65 64 2C 20 61 6E 64 20 74 68 69 73 20 73 68 6F ed, and this sho
006730: 75 6C 64 20 61 6C 73 6F 20 62 65 20 63 6F 70 69 uld also be copi
006740: 65 64 90 20 6F 6E 74 6F 90 20 74 68 65 20 73 79 ed. onto. the sy
006750: 73 74 65 6D 20 64 69 73 63 2E 20 54 68 69 73 20 stem disc. This
006760: 69 73 20 61 20 0D 8A 73 69 6D 70 6C 65 20 66 75 is a ..simple fu
006770: 6C 6C 20 73 63 72 65 65 6E 20 65 64 69 74 6F 72 ll screen editor
006780: 90 20 77 68 69 63 68 90 20 69 73 90 20 63 6F 6D . which. is. com
006790: 70 61 74 69 62 6C 65 90 20 77 69 74 68 20 50 52 patible. with PR
0067A0: 4F 54 45 58 54 20 65 64 69 74 69 6E 67 20 0D 8A OTEXT editing ..
0067B0: 63 6F 6D 6D 61 6E 64 73 2E 0D 0A 0D 0A 4E 6F 74 commands.....Not
0067C0: 65 3A 20 20 49 66 20 75 73 69 6E 67 20 42 45 44 e: If using BED
0067D0: 43 2E 43 4F 4D 20 77 69 74 68 20 61 20 50 43 57 C.COM with a PCW
0067E0: 38 32 35 36 2F 38 35 31 32 2C 20 74 68 65 20 6B 8256/8512, the k
0067F0: 65 79 73 20 6D 75 73 74 20 62 65 20 64 65 66 69 eys must be defi
006800: 6E 65 64 20 0D 8A 75 73 69 6E 67 90 20 53 45 54 ned ..using. SET
006810: 4B 45 59 53 2E 90 20 53 75 69 74 61 62 6C 65 90 KEYS.. Suitable.
006820: 20 64 65 66 69 6E 69 74 69 6F 6E 73 90 90 20 61 definitions.. a
006830: 72 65 90 90 20 70 72 6F 76 69 64 65 64 90 20 69 re.. provided. i
006840: 6E 90 20 74 68 65 90 20 66 69 6C 65 20 0D 8A 4B n. the. file ..K
006850: 45 59 44 45 46 53 2E 50 43 57 20 61 6E 64 20 74 EYDEFS.PCW and t
006860: 68 65 20 73 79 6E 74 61 78 20 75 73 65 64 20 69 he syntax used i
006870: 73 3A 20 20 20 20 53 45 54 4B 45 59 53 20 4B 45 s: SETKEYS KE
006880: 59 44 45 46 53 2E 50 43 57 0D 0A 0D 0A 09 54 68 YDEFS.PCW.....Th
006890: 69 73 20 63 61 6E 20 62 65 20 69 6E 63 6F 72 70 is can be incorp
0068A0: 6F 72 61 74 65 64 20 69 6E 74 6F 90 20 61 90 20 orated into. a.
0068B0: 50 52 4F 46 49 4C 45 2E 53 55 42 20 66 69 6C 65 PROFILE.SUB file
0068C0: 2C 20 69 6E 20 77 68 69 63 68 20 63 61 73 65 2C , in which case,
0068D0: 20 0D 8A 62 6F 74 68 20 53 45 54 4B 45 59 53 2E ..both SETKEYS.
0068E0: 43 4F 4D 20 61 6E 64 20 53 55 42 4D 49 54 2E 43 COM and SUBMIT.C
0068F0: 4F 4D 20 6D 75 73 74 90 20 61 6C 73 6F 90 20 62 OM must. also. b
006900: 65 20 63 6F 70 69 65 64 20 6F 6E 74 6F 20 74 68 e copied onto th
006910: 65 20 77 6F 72 6B 69 6E 67 20 0D 8A 64 69 73 63 e working ..disc
006920: 2E 0D 0A 0D 0A 0D 0A E2 43 6F 6D 70 69 6C 69 6E ........Compilin
006930: 67 20 61 20 42 43 50 4C 20 70 72 6F 67 72 61 6D g a BCPL program
006940: 20 75 6E 64 65 72 20 43 50 2F 4D E2 0D 0A 0D 0A under CP/M.....
006950: 09 54 68 65 20 43 50 2F 4D 20 76 65 72 73 69 6F .The CP/M versio
006960: 6E 20 6F 66 90 20 74 68 65 90 20 63 6F 6D 70 69 n of. the. compi
006970: 6C 65 72 90 20 74 61 6B 65 73 90 20 61 90 20 66 ler. takes. a. f
006980: 69 6C 65 20 63 6F 6E 74 61 69 6E 69 6E 67 20 42 ile containing B
006990: 43 50 4C 20 0D 8A 73 6F 75 72 63 65 20 63 6F 64 CPL ..source cod
0069A0: 65 20 61 6E 64 20 70 72 6F 64 75 63 65 73 90 20 e and produces.
0069B0: 61 90 20 43 4F 4D 90 20 66 69 6C 65 90 20 63 6F a. COM. file. co
0069C0: 6E 74 61 69 6E 69 6E 67 90 20 61 6E 20 65 78 65 ntaining. an exe
0069D0: 63 75 74 61 62 6C 65 20 43 50 2F 4D 20 0D 8A 6F cutable CP/M ..o
0069E0: 62 6A 65 63 74 20 63 6F 64 65 20 70 72 6F 67 72 bject code progr
0069F0: 61 6D 2E 20 54 68 65 72 65 20 69 73 90 20 6E 6F am. There is. no
006A00: 90 20 69 6E 74 65 72 6D 65 64 69 61 74 65 20 63 . intermediate c
006A10: 6F 6D 70 69 6C 61 74 69 6F 6E 20 73 74 61 67 65 ompilation stage
006A20: 2E 20 54 68 65 20 0D 8A 63 6F 6D 6D 61 6E 64 20 . The ..command
006A30: 74 6F 20 63 6F 6D 70 69 6C 65 20 61 20 70 72 6F to compile a pro
006A40: 67 72 61 6D 20 69 73 3A 0D 0A 0D 0A 09 62 63 70 gram is:.....bcp
006A50: 6C 20 3C 73 6F 75 72 63 65 3E 20 3C 64 65 73 74 l <source> <dest
006A60: 69 6E 61 74 69 6F 6E 3E 0D 0A 0D 0A 77 68 65 72 ination>....wher
006A70: 65 20 3C 73 6F 75 72 63 65 3E 20 61 6E 64 20 3C e <source> and <
006A80: 64 65 73 74 69 6E 61 74 69 6F 6E 3E 20 61 72 65 destination> are
006A90: 20 74 68 65 20 6E 61 6D 65 73 20 6F 66 20 74 68 the names of th
006AA0: 65 20 66 69 6C 65 73 20 66 72 6F 6D 20 77 68 69 e files from whi
006AB0: 63 68 20 0D 8A 63 6F 64 65 20 69 73 20 74 61 6B ch ..code is tak
006AC0: 65 6E 20 61 6E 64 20 74 6F 20 77 68 69 63 68 20 en and to which
006AD0: 69 74 90 20 69 73 20 77 72 69 74 74 65 6E 2E 20 it. is written.
006AE0: 54 68 65 20 64 65 73 74 69 6E 61 74 69 6F 6E 20 The destination
006AF0: 66 69 6C 65 6E 61 6D 65 20 69 73 20 0D 8A 6F 70 filename is ..op
006B00: 74 69 6F 6E 61 6C 20 61 6E 64 20 69 66 20 6F 6D tional and if om
006B10: 69 74 74 65 64 20 77 69 6C 6C 20 64 65 66 61 75 itted will defau
006B20: 6C 74 90 20 74 6F 90 20 74 68 65 90 20 73 6F 75 lt. to. the. sou
006B30: 72 63 65 20 66 69 6C 65 20 6E 61 6D 65 20 77 69 rce file name wi
006B40: 74 68 20 61 20 0D 8A 2E 43 4F 4D 20 65 78 74 65 th a ...COM exte
006B50: 6E 73 69 6F 6E 2E 20 54 68 65 20 65 78 74 65 6E nsion. The exten
006B60: 73 69 6F 6E 73 20 6F 6E 20 62 6F 74 68 90 20 66 sions on both. f
006B70: 69 6C 65 6E 61 6D 65 73 20 61 72 65 20 6F 70 74 ilenames are opt
006B80: 69 6F 6E 61 6C 2E 20 49 66 20 74 68 65 20 0D 8A ional. If the ..
006B90: 73 6F 75 72 63 65 20 6E 61 6D 65 20 68 61 73 20 source name has
006BA0: 6E 6F 20 65 78 74 65 6E 73 69 6F 6E 20 74 68 65 no extension the
006BB0: 6E 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 20 77 n the compiler w
006BC0: 69 6C 6C 20 66 69 72 73 74 20 73 65 61 72 63 68 ill first search
006BD0: 20 66 6F 72 20 61 20 0D 8A 66 69 6C 65 20 77 69 for a ..file wi
006BE0: 74 68 20 6E 6F 20 65 78 74 65 6E 73 69 6F 6E 20 th no extension
006BF0: 61 6E 64 20 74 68 65 6E 90 20 66 6F 72 90 20 61 and then. for. a
006C00: 90 20 66 69 6C 65 20 77 69 74 68 20 61 20 2E 42 . file with a .B
006C10: 20 65 78 74 65 6E 73 69 6F 6E 2E 20 54 68 65 20 extension. The
006C20: 0D 8A 73 61 6D 65 20 61 70 70 6C 69 65 73 20 69 ..same applies i
006C30: 6E 20 74 68 65 20 47 45 54 20 64 69 72 65 63 74 n the GET direct
006C40: 69 76 65 20 6F 6E 20 62 6F 74 68 20 43 50 2F 4D ive on both CP/M
006C50: 20 61 6E 64 20 41 4D 53 44 4F 53 20 76 65 72 73 and AMSDOS vers
006C60: 69 6F 6E 73 2E 20 49 66 20 0D 8A 74 68 65 20 64 ions. If ..the d
006C70: 65 73 74 69 6E 61 74 69 6F 6E 20 66 69 6C 65 20 estination file
006C80: 68 61 73 20 6E 6F 20 65 78 74 65 6E 73 69 6F 6E has no extension
006C90: 20 74 68 65 6E 20 74 68 69 73 20 77 69 6C 6C 20 then this will
006CA0: 64 65 66 61 75 6C 74 20 74 6F 20 2E 43 4F 4D 2E default to .COM.
006CB0: 0D 0A 0D 0A 09 65 2E 67 2E 09 62 63 70 6C 20 61 .....e.g..bcpl a
006CC0: 73 36 35 30 32 0D 0A 0D 0A 77 69 6C 6C 20 66 69 s6502....will fi
006CD0: 72 73 74 20 6C 6F 6F 6B 20 66 6F 72 20 74 68 65 rst look for the
006CE0: 20 66 69 6C 65 20 41 53 36 35 30 32 20 61 6E 64 file AS6502 and
006CF0: 20 69 66 20 69 74 20 69 73 20 6E 6F 74 20 70 72 if it is not pr
006D00: 65 73 65 6E 74 20 77 69 6C 6C 20 74 68 65 6E 20 esent will then
006D10: 0D 8A 6C 6F 6F 6B 20 66 6F 72 20 74 68 65 20 66 ..look for the f
006D20: 69 6C 65 20 41 53 36 35 30 32 2E 42 2E 20 54 68 ile AS6502.B. Th
006D30: 65 20 63 6F 6D 70 69 6C 65 72 90 20 77 69 6C 6C e compiler. will
006D40: 20 72 65 61 64 20 74 68 69 73 20 66 69 6C 65 20 read this file
006D50: 61 6E 64 20 74 68 65 6E 20 0D 8A 73 65 6E 64 20 and then ..send
006D60: 74 68 65 20 6F 62 6A 65 63 74 20 63 6F 64 65 20 the object code
006D70: 70 72 6F 64 75 63 65 64 20 74 6F 20 61 20 66 69 produced to a fi
006D80: 6C 65 20 41 53 36 35 30 32 2E 43 4F 4D 2E 0D 0A le AS6502.COM...
006D90: 3E 70 61 0D 0A 09 55 6E 64 65 72 20 43 50 2F 4D >pa...Under CP/M
006DA0: 20 50 6C 75 73 20 74 68 65 20 63 6F 6D 70 69 6C Plus the compil
006DB0: 65 72 90 20 72 65 74 75 72 6E 73 90 20 61 6E 90 er. returns. an.
006DC0: 20 65 72 72 6F 72 20 72 65 74 75 72 6E 20 63 6F error return co
006DD0: 64 65 20 69 66 20 61 6E 20 0D 8A 65 72 72 6F 72 de if an ..error
006DE0: 20 6F 63 63 75 72 72 65 64 2E 20 49 74 20 63 61 occurred. It ca
006DF0: 6E 20 74 68 65 6E 20 62 65 20 63 6F 6E 76 65 6E n then be conven
006E00: 69 65 6E 74 20 74 6F 20 75 73 65 20 53 55 42 4D ient to use SUBM
006E10: 49 54 20 74 6F 20 63 6F 6D 70 69 6C 65 20 61 6E IT to compile an
006E20: 64 20 0D 8A 72 75 6E 20 74 68 65 20 70 72 6F 67 d ..run the prog
006E30: 72 61 6D 20 77 69 74 68 20 61 90 20 73 69 6E 67 ram with a. sing
006E40: 6C 65 90 20 63 6F 6D 6D 61 6E 64 2E 90 20 54 68 le. command.. Th
006E50: 65 20 43 50 2F 4D 20 63 6F 6E 64 69 74 69 6F 6E e CP/M condition
006E60: 61 6C 20 63 6F 6D 6D 61 6E 64 20 0D 8A 66 61 63 al command ..fac
006E70: 69 6C 69 74 79 20 63 61 6E 20 62 65 20 75 73 65 ility can be use
006E80: 64 20 73 6F 20 74 68 65 20 74 68 65 90 20 70 72 d so the the. pr
006E90: 6F 67 72 61 6D 90 20 69 73 20 6F 6E 6C 79 20 65 ogram. is only e
006EA0: 78 65 63 75 74 65 64 20 69 66 20 6E 6F 20 65 72 xecuted if no er
006EB0: 72 6F 72 20 0D 8A 6F 63 63 75 72 72 65 64 2E 20 ror ..occurred.
006EC0: 46 6F 72 20 65 78 61 6D 70 6C 65 20 61 20 66 69 For example a fi
006ED0: 6C 65 20 43 4F 4D 50 49 4C 45 2E 53 55 42 20 6D le COMPILE.SUB m
006EE0: 61 79 20 63 6F 6E 74 61 69 6E 20 74 68 65 20 66 ay contain the f
006EF0: 6F 6C 6C 6F 77 69 6E 67 3A 0D 0A 0D 0A 09 09 62 ollowing:......b
006F00: 63 70 6C 20 70 72 6F 67 72 61 6D 2E 62 20 0D 0A cpl program.b ..
006F10: 09 09 3C 79 0D 0A 09 09 3A 70 72 6F 67 72 61 6D ..<y....:program
006F20: 0D 0A 09 54 68 65 20 73 65 63 6F 6E 64 20 6C 69 ...The second li
006F30: 6E 65 20 63 61 75 73 65 73 20 74 68 65 90 20 70 ne causes the. p
006F40: 72 65 76 69 6F 75 73 90 20 76 65 72 73 69 6F 6E revious. version
006F50: 90 20 74 6F 20 62 65 20 64 65 6C 65 74 65 64 2E . to be deleted.
006F60: 20 4E 6F 74 65 20 0D 8A 74 68 61 74 20 74 68 69 Note ..that thi
006F70: 73 20 77 69 6C 6C 20 6F 6E 6C 79 20 77 6F 72 6B s will only work
006F80: 90 20 75 6E 64 65 72 90 20 43 50 2F 4D 90 20 50 . under. CP/M. P
006F90: 6C 75 73 20 28 43 50 43 36 31 32 38 20 61 6E 64 lus (CPC6128 and
006FA0: 20 50 43 57 38 32 35 36 2F 38 35 31 32 29 20 0D PCW8256/8512) .
006FB0: 8A 61 6E 64 20 6E 6F 74 20 75 6E 64 65 72 20 43 .and not under C
006FC0: 50 2F 4D 20 32 2E 32 2E 0D 0A 0D 0A 0D 0A E2 49 P/M 2.2........I
006FD0: 6E 63 6C 75 64 69 6E 67 20 6F 74 68 65 72 20 66 ncluding other f
006FE0: 69 6C 65 73 E2 0D 0A 0D 0A 09 4F 74 68 65 72 20 iles......Other
006FF0: 42 43 50 4C 20 73 6F 75 72 63 65 20 66 69 6C 65 BCPL source file
007000: 73 20 6D 61 79 20 62 65 20 69 6E 63 6C 75 64 65 s may be include
007010: 64 90 20 61 74 20 61 6E 79 20 70 6F 69 6E 74 20 d. at any point
007020: 69 6E 20 61 20 70 72 6F 67 72 61 6D 20 0D 8A 62 in a program ..b
007030: 79 20 75 73 69 6E 67 20 74 68 65 20 47 45 54 20 y using the GET
007040: 64 69 72 65 63 74 69 76 65 2E 0D 0A 0D 0A 09 47 directive......G
007050: 45 54 20 22 66 69 6C 65 22 0D 0A 0D 0A 63 61 75 ET "file"....cau
007060: 73 65 73 20 63 6F 6D 70 69 6C 61 74 69 6F 6E 20 ses compilation
007070: 74 6F 20 63 6F 6E 74 69 6E 75 65 20 77 69 74 68 to continue with
007080: 20 74 68 65 90 20 6E 65 77 90 20 66 69 6C 65 2E the. new. file.
007090: 90 20 41 74 20 74 68 65 20 65 6E 64 20 6F 66 20 . At the end of
0070A0: 74 68 65 20 0D 8A 69 6E 63 6C 75 64 65 64 20 66 the ..included f
0070B0: 69 6C 65 20 63 6F 6D 70 69 6C 61 74 69 6F 6E 20 ile compilation
0070C0: 72 65 73 75 6D 65 73 20 61 74 20 74 68 65 20 70 resumes at the p
0070D0: 6F 69 6E 74 20 61 66 74 65 72 20 74 68 65 20 47 oint after the G
0070E0: 45 54 20 64 69 72 65 63 74 69 76 65 20 0D 8A 69 ET directive ..i
0070F0: 6E 20 74 68 65 20 6F 72 69 67 69 6E 61 6C 20 66 n the original f
007100: 69 6C 65 2E 0D 0A 0D 0A 09 4D 6F 73 74 20 70 72 ile......Most pr
007110: 6F 67 72 61 6D 73 20 77 69 6C 6C 20 73 74 61 72 ograms will star
007120: 74 20 62 79 20 69 6E 63 6C 75 64 69 6E 67 20 74 t by including t
007130: 68 65 20 6C 69 62 72 61 72 79 20 72 6F 75 74 69 he library routi
007140: 6E 65 73 3A 0D 0A 0D 0A 09 47 45 54 20 22 43 4C nes:.....GET "CL
007150: 49 42 48 44 52 22 0D 0A 09 47 45 54 20 22 43 4C IBHDR"...GET "CL
007160: 49 42 48 44 52 31 22 09 2F 2F 20 6F 66 74 65 6E IBHDR1".// often
007170: 20 6E 6F 74 20 6E 65 65 64 65 64 0D 0A 09 47 45 not needed...GE
007180: 54 20 22 44 45 42 55 47 22 09 09 2F 2F 20 75 73 T "DEBUG"..// us
007190: 65 64 20 77 68 65 6E 20 64 65 62 75 67 67 69 6E ed when debuggin
0071A0: 67 20 28 73 65 65 20 73 65 63 74 69 6F 6E 20 38 g (see section 8
0071B0: 6B 29 0D 0A 0D 0A 09 4E 6F 74 65 20 74 68 61 74 k).....Note that
0071C0: 20 74 68 65 20 47 45 54 20 64 69 72 65 63 74 69 the GET directi
0071D0: 76 65 73 20 74 6F 90 20 69 6E 63 6C 75 64 65 20 ves to. include
0071E0: 74 68 65 20 6C 69 62 72 61 72 79 20 72 6F 75 74 the library rout
0071F0: 69 6E 65 73 20 6D 75 73 74 20 0D 8A 62 65 20 69 ines must ..be i
007200: 6E 20 74 68 65 20 6F 72 64 65 72 20 73 68 6F 77 n the order show
007210: 6E 20 62 65 63 61 75 73 65 20 72 6F 75 74 69 6E n because routin
007220: 65 73 20 69 6E 20 43 4C 49 42 48 44 52 31 20 63 es in CLIBHDR1 c
007230: 61 6C 6C 20 6F 74 68 65 72 20 72 6F 75 74 69 6E all other routin
007240: 65 73 20 0D 8A 69 6E 20 43 4C 49 42 48 44 52 2E es ..in CLIBHDR.
007250: 0D 0A 0D 0A 09 43 6F 6D 70 69 6C 61 74 69 6F 6E .....Compilation
007260: 20 73 74 6F 70 73 20 6F 6E 20 74 68 65 90 20 43 stops on the. C
007270: 50 2F 4D 90 20 76 65 72 73 69 6F 6E 90 20 77 68 P/M. version. wh
007280: 65 6E 90 20 61 90 90 66 75 6C 6C 20 73 74 6F 70 en. a..full stop
007290: 20 27 2E 27 20 69 73 20 0D 8A 66 6F 75 6E 64 20 '.' is ..found
0072A0: 69 6E 20 74 68 65 20 69 6E 69 74 69 61 6C 20 73 in the initial s
0072B0: 6F 75 72 63 65 20 66 69 6C 65 90 20 77 68 69 63 ource file. whic
0072C0: 68 90 20 77 61 73 20 73 70 65 63 69 66 69 65 64 h. was specified
0072D0: 20 69 6E 20 74 68 65 20 6F 72 69 67 69 6E 61 6C in the original
0072E0: 20 0D 8A 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65 2C ..command line,
0072F0: 20 6F 72 20 77 68 65 6E 20 74 68 65 20 65 6E 64 or when the end
007300: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
007310: 06 00 00 00 02 09 50 E5 06 00 C1 02 00 00 00 02 ......P.........
007320: 06 00 C2 02 00 00 00 02 06 00 C3 02 00 00 00 02 ................
007330: 06 00 C4 02 00 00 00 02 06 00 C5 02 00 00 00 02 ................
007340: 06 00 C6 02 00 00 00 02 06 00 C7 02 00 00 00 02 ................
007350: 06 00 C8 02 00 00 00 02 06 00 C9 02 00 00 00 02 ................
007360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
007370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
007380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
007390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
007400: 20 6F 66 20 74 68 61 74 20 66 69 6C 65 20 69 73 of that file is
007410: 20 72 65 61 63 68 65 64 2E 0D 0A 3E 70 61 0D 0A reached...>pa..
007420: 3E 63 65 20 E2 33 2E 20 55 53 49 4E 47 20 41 52 >ce .3. USING AR
007430: 4E 4F 52 20 42 43 50 4C 20 55 4E 44 45 52 20 41 NOR BCPL UNDER A
007440: 4D 53 44 4F 53 E2 0D 0A 0D 0A 0D 0A E2 4E 4F 54 MSDOS........NOT
007450: 45 3A E2 20 50 43 57 38 32 35 36 2F 38 35 31 32 E:. PCW8256/8512
007460: 20 75 73 65 72 73 20 73 68 6F 75 6C 64 20 69 67 users should ig
007470: 6E 6F 72 65 20 74 68 69 73 20 63 68 61 70 74 65 nore this chapte
007480: 72 2E 0D 0A 0D 0A 09 42 43 50 4C 20 6D 61 79 20 r......BCPL may
007490: 62 65 20 75 73 65 64 20 66 72 6F 6D 20 41 6D 73 be used from Ams
0074A0: 64 6F 73 20 6F 6E 90 20 74 68 65 20 43 50 43 20 dos on. the CPC
0074B0: 72 61 6E 67 65 2C 20 65 69 74 68 65 72 20 69 6E range, either in
0074C0: 20 52 4F 4D 20 66 6F 72 6D 20 0D 8A 6F 72 20 66 ROM form ..or f
0074D0: 72 6F 6D 20 61 20 64 69 73 63 2E 20 49 66 20 74 rom a disc. If t
0074E0: 68 65 20 52 4F 4D 90 20 76 65 72 73 69 6F 6E 90 he ROM. version.
0074F0: 20 69 73 20 62 65 69 6E 67 20 75 73 65 64 2C 20 is being used,
007500: 74 68 65 20 66 69 6C 65 73 20 42 43 50 4C 2E 42 the files BCPL.B
007510: 41 53 20 0D 8A 61 6E 64 20 42 43 50 4C 2E 42 49 AS ..and BCPL.BI
007520: 4E 20 61 72 65 20 6E 6F 74 20 72 65 71 75 69 72 N are not requir
007530: 65 64 2C 20 74 68 6F 75 67 68 90 20 74 68 65 20 ed, though. the
007540: 6C 69 62 72 61 72 79 20 66 69 6C 65 73 20 77 69 library files wi
007550: 6C 6C 20 73 74 69 6C 6C 20 62 65 20 0D 8A 72 65 ll still be ..re
007560: 71 75 69 72 65 64 2E 0D 0A 0D 0A 4E 4F 54 45 3A quired.....NOTE:
007570: 20 55 6E 64 65 72 20 6E 6F 20 63 69 72 63 75 6D Under no circum
007580: 73 74 61 6E 63 65 73 20 73 68 6F 75 6C 64 90 20 stances should.
007590: 74 68 65 90 20 6F 72 69 67 69 6E 61 6C 90 20 64 the. original. d
0075A0: 69 73 63 90 20 62 65 20 75 73 65 64 20 61 73 20 isc. be used as
0075B0: 61 20 0D 8A 77 6F 72 6B 69 6E 67 20 64 69 73 63 a ..working disc
0075C0: 20 66 6F 72 20 6E 6F 72 6D 61 6C 20 75 73 65 2E for normal use.
0075D0: 20 54 68 65 90 20 72 65 71 75 69 72 65 64 20 66 The. required f
0075E0: 69 6C 65 73 20 73 68 6F 75 6C 64 20 62 65 20 63 iles should be c
0075F0: 6F 70 69 65 64 20 6F 6E 74 6F 20 0D 8A 61 20 73 opied onto ..a s
007600: 79 73 74 65 6D 20 64 69 73 63 20 61 6E 64 20 74 ystem disc and t
007610: 68 65 20 6F 72 69 67 69 6E 61 6C 20 72 65 74 61 he original reta
007620: 69 6E 65 64 20 69 6E 20 61 20 73 61 66 65 20 70 ined in a safe p
007630: 6C 61 63 65 2C 20 61 73 20 61 20 62 61 63 6B 75 lace, as a backu
007640: 70 2E 0D 0A 0D 0A E2 43 72 65 61 74 69 6E 67 20 p......Creating
007650: 61 20 57 6F 72 6B 69 6E 67 20 64 69 73 63 E2 0D a Working disc..
007660: 0A 0D 0A 09 41 20 6E 65 77 20 64 69 73 63 20 73 ....A new disc s
007670: 68 6F 75 6C 64 20 62 65 20 66 6F 72 6D 61 74 74 hould be formatt
007680: 65 64 90 20 61 6E 64 90 20 74 68 65 90 20 66 69 ed. and. the. fi
007690: 72 73 74 20 73 69 78 20 66 69 6C 65 73 20 66 72 rst six files fr
0076A0: 6F 6D 20 74 68 65 20 0D 8A 6C 69 73 74 20 62 65 om the ..list be
0076B0: 6C 6F 77 20 73 68 6F 75 6C 64 20 62 65 20 63 6F low should be co
0076C0: 70 69 65 64 20 6F 6E 74 6F 20 69 74 2C 20 75 73 pied onto it, us
0076D0: 69 6E 67 20 65 69 74 68 65 72 20 46 49 4C 45 43 ing either FILEC
0076E0: 4F 50 59 20 6F 72 20 50 49 50 20 66 72 6F 6D 20 OPY or PIP from
0076F0: 0D 8A 43 50 2F 4D 2C 20 64 65 70 65 6E 64 69 6E ..CP/M, dependin
007700: 67 20 6F 6E 20 74 68 65 20 6D 6F 64 65 6C 20 62 g on the model b
007710: 65 69 6E 67 20 75 73 65 64 2C 90 20 6F 72 20 74 eing used,. or t
007720: 68 65 20 43 4F 50 59 20 63 6F 6D 6D 61 6E 64 20 he COPY command
007730: 66 72 6F 6D 20 74 68 65 20 0D 8A 55 54 4F 50 49 from the ..UTOPI
007740: 41 20 52 4F 4D 20 69 66 20 74 68 61 74 20 69 73 A ROM if that is
007750: 20 69 6E 73 74 61 6C 6C 65 64 2E 90 20 54 68 69 installed.. Thi
007760: 73 90 20 77 69 6C 6C 20 70 72 6F 64 75 63 65 20 s. will produce
007770: 61 20 64 69 73 63 20 63 6F 6E 74 61 69 6E 69 6E a disc containin
007780: 67 20 0D 8A 61 6C 6C 20 74 68 65 20 65 73 73 65 g ..all the esse
007790: 6E 74 69 61 6C 20 66 69 6C 65 73 2E 20 52 4F 4D ntial files. ROM
0077A0: 20 75 73 65 72 73 20 63 61 6E 20 6F 6D 69 74 20 users can omit
0077B0: 74 68 65 20 66 69 72 73 74 20 74 77 6F 20 66 69 the first two fi
0077C0: 6C 65 73 20 63 61 6C 6C 65 64 20 0D 8A 42 43 50 les called ..BCP
0077D0: 4C 2E 42 41 53 20 61 6E 64 20 42 43 50 4C 2E 42 L.BAS and BCPL.B
0077E0: 49 4E 2E 0D 0A 0D 0A E2 49 6E 73 74 61 6C 6C 69 IN......Installi
0077F0: 6E 67 20 74 68 65 20 52 4F 4D 20 76 65 72 73 69 ng the ROM versi
007800: 6F 6E E2 0D 0A 0D 0A 09 46 69 74 20 74 68 65 20 on......Fit the
007810: 31 36 4B 20 45 50 52 4F 4D 20 69 6E 74 6F 90 20 16K EPROM into.
007820: 79 6F 75 72 90 20 52 4F 4D 20 62 6F 61 72 64 20 your. ROM board
007830: 66 6F 6C 6C 6F 77 69 6E 67 20 74 68 65 20 69 6E following the in
007840: 73 74 72 75 63 74 69 6F 6E 73 20 0D 8A 73 75 70 structions ..sup
007850: 70 6C 69 65 64 20 77 69 74 68 20 74 68 65 20 72 plied with the r
007860: 6F 6D 20 62 6F 61 72 64 2E 20 54 68 65 20 52 4F om board. The RO
007870: 4D 20 73 65 6C 65 63 74 69 6F 6E 20 6E 75 6D 62 M selection numb
007880: 65 72 20 69 73 20 6E 6F 74 20 63 72 69 74 69 63 er is not critic
007890: 61 6C 2C 20 0D 8A 74 68 6F 75 67 68 20 69 74 20 al, ..though it
0078A0: 6D 75 73 74 20 6E 6F 74 20 63 6C 61 73 68 20 77 must not clash w
0078B0: 69 74 68 20 61 6E 79 90 20 65 78 69 73 74 69 6E ith any. existin
0078C0: 67 20 52 4F 4D 73 2C 20 65 76 65 6E 20 69 66 20 g ROMs, even if
0078D0: 74 68 65 79 20 61 72 65 20 6E 6F 74 20 0D 8A 69 they are not ..i
0078E0: 6E 73 74 61 6C 6C 65 64 20 6F 6E 20 74 68 65 20 nstalled on the
0078F0: 52 4F 4D 20 62 6F 61 72 64 2E 20 28 54 68 65 20 ROM board. (The
007900: 64 69 73 63 90 20 72 6F 6D 20 66 6F 72 20 65 78 disc. rom for ex
007910: 61 6D 70 6C 65 20 75 73 65 73 20 52 4F 4D 20 73 ample uses ROM s
007920: 65 6C 65 63 74 20 0D 8A 37 29 2E 0D 0A 09 53 75 elect ..7)....Su
007930: 69 74 61 62 6C 65 20 62 6F 61 72 64 73 20 6D 61 itable boards ma
007940: 79 20 62 65 20 70 75 72 63 68 61 73 65 64 20 66 y be purchased f
007950: 72 6F 6D 90 20 41 72 6E 6F 72 20 69 66 20 79 6F rom. Arnor if yo
007960: 75 20 64 6F 20 6E 6F 74 20 61 6C 72 65 61 64 79 u do not already
007970: 20 0D 8A 68 61 76 65 20 6F 6E 65 2E 0D 0A 09 54 ..have one....T
007980: 68 65 20 42 43 50 4C 20 52 4F 4D 20 70 72 6F 76 he BCPL ROM prov
007990: 69 64 65 73 20 61 6E 20 65 78 74 72 65 6D 65 6C ides an extremel
0079A0: 79 20 63 6F 6E 76 65 6E 69 65 6E 74 20 61 6E 64 y convenient and
0079B0: 20 66 61 73 74 20 65 6E 76 69 72 6F 6E 6D 65 6E fast environmen
0079C0: 74 20 0D 8A 66 6F 72 20 64 65 76 65 6C 6F 70 69 t ..for developi
0079D0: 6E 67 20 42 43 50 4C 20 70 72 6F 67 72 61 6D 73 ng BCPL programs
0079E0: 2C 90 20 70 61 72 74 69 63 75 6C 61 72 6C 79 90 ,. particularly.
0079F0: 20 77 68 65 6E 90 20 75 73 65 64 20 69 6E 20 63 when. used in c
007A00: 6F 6E 6A 75 6E 63 74 69 6F 6E 20 0D 8A 77 69 74 onjunction ..wit
007A10: 68 20 50 52 4F 54 45 58 54 20 6F 72 20 4D 41 58 h PROTEXT or MAX
007A20: 41 4D 2E 20 50 72 6F 67 72 61 6D 73 20 63 61 6E AM. Programs can
007A30: 20 62 65 20 74 79 70 65 64 20 69 6E 20 75 73 69 be typed in usi
007A40: 6E 67 20 50 52 4F 54 45 58 54 20 6F 72 20 4D 41 ng PROTEXT or MA
007A50: 58 41 4D 20 0D 8A 61 6E 64 20 63 6F 6D 70 69 6C XAM ..and compil
007A60: 65 64 20 64 69 72 65 63 74 6C 79 20 66 72 6F 6D ed directly from
007A70: 20 6D 65 6D 6F 72 79 2E 0D 0A 09 54 68 65 20 52 memory....The R
007A80: 4F 4D 20 76 65 72 73 69 6F 6E 90 20 6D 61 79 90 OM version. may.
007A90: 20 6F 6E 6C 79 90 20 62 65 90 20 75 73 65 64 90 only. be. used.
007AA0: 20 6F 6E 90 20 74 68 65 90 20 43 50 43 34 36 34 on. the. CPC464
007AB0: 2C 20 43 50 43 36 36 34 2C 20 61 6E 64 20 0D 8A , CPC664, and ..
007AC0: 43 50 43 36 31 32 38 20 63 6F 6D 70 75 74 65 72 CPC6128 computer
007AD0: 73 2E 0D 0A 0D 0A 0D 0A E2 4C 69 73 74 20 6F 66 s........List of
007AE0: 20 66 69 6C 65 73 20 63 6F 6E 74 61 69 6E 65 64 files contained
007AF0: 20 6F 6E 20 74 68 65 20 64 69 73 63 20 2D 2D 20 on the disc --
007B00: 41 4D 53 44 4F 53 20 73 69 64 65 E2 0D 0A 0D 0A AMSDOS side.....
007B10: 54 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 66 69 The following fi
007B20: 6C 65 73 20 61 72 65 20 6D 6F 73 74 20 69 6D 70 les are most imp
007B30: 6F 72 74 61 6E 74 3A 0D 0A 0D 0A 42 43 50 4C 2E ortant:....BCPL.
007B40: 42 41 53 09 09 74 68 65 20 6C 6F 61 64 65 72 20 BAS..the loader
007B50: 66 6F 72 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 for the compiler
007B60: 20 70 72 6F 67 72 61 6D 0D 0A 42 43 50 4C 2E 42 program..BCPL.B
007B70: 49 4E 09 09 74 68 65 20 6D 61 69 6E 20 63 6F 6D IN..the main com
007B80: 70 69 6C 65 72 20 70 72 6F 67 72 61 6D 0D 0A 41 piler program..A
007B90: 4C 49 42 48 44 52 09 09 74 68 65 20 6D 61 69 6E LIBHDR..the main
007BA0: 20 49 2F 4F 20 6C 69 62 72 61 72 79 0D 0A 41 4C I/O library..AL
007BB0: 49 42 48 44 52 31 09 09 74 68 65 20 65 78 74 72 IBHDR1..the extr
007BC0: 61 20 49 2F 4F 20 6C 69 62 72 61 72 79 20 63 6F a I/O library co
007BD0: 6E 74 61 69 6E 69 6E 67 20 6C 65 73 73 20 75 73 ntaining less us
007BE0: 65 64 20 72 6F 75 74 69 6E 65 73 0D 0A 41 4D 53 ed routines..AMS
007BF0: 44 4F 53 09 09 61 20 66 75 72 74 68 65 72 90 20 DOS..a further.
007C00: 49 2F 4F 90 20 6C 69 62 72 61 72 79 90 20 63 6F I/O. library. co
007C10: 6E 74 61 69 6E 69 6E 67 90 20 67 72 61 70 68 69 ntaining. graphi
007C20: 63 73 20 72 6F 75 74 69 6E 65 73 20 0D 8A 44 45 cs routines ..DE
007C30: 42 55 47 09 09 61 20 72 6F 75 74 69 6E 65 20 75 BUG..a routine u
007C40: 73 65 66 75 6C 20 66 6F 72 20 64 65 62 75 67 67 seful for debugg
007C50: 69 6E 67 20 42 43 50 4C 20 70 72 6F 67 72 61 6D ing BCPL program
007C60: 73 0D 0A 3E 70 61 0D 0A 54 68 65 20 64 69 73 63 s..>pa..The disc
007C70: 20 61 6C 73 6F 20 63 6F 6E 74 61 69 6E 73 20 74 also contains t
007C80: 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 65 78 61 he following exa
007C90: 6D 70 6C 65 20 66 69 6C 65 73 3A 0D 0A 0D 0A 42 mple files:....B
007CA0: 45 44 2E 42 09 09 42 43 50 4C 20 65 64 69 74 6F ED.B..BCPL edito
007CB0: 72 20 73 6F 75 72 63 65 20 63 6F 64 65 2C 20 41 r source code, A
007CC0: 4D 53 44 4F 53 20 76 65 72 73 69 6F 6E 0D 0A 42 MSDOS version..B
007CD0: 45 44 2E 42 49 4E 09 09 42 43 50 4C 20 65 64 69 ED.BIN..BCPL edi
007CE0: 74 6F 72 20 6F 62 6A 65 63 74 20 63 6F 64 65 2C tor object code,
007CF0: 20 41 4D 53 44 4F 53 20 76 65 72 73 69 6F 6E 0D AMSDOS version.
007D00: 0A 42 45 44 31 2E 42 09 09 61 20 66 69 6C 65 20 .BED1.B..a file
007D10: 63 6F 6E 74 61 69 6E 69 6E 67 20 64 69 72 65 63 containing direc
007D20: 74 69 76 65 73 20 74 6F 20 63 6F 6D 70 69 6C 65 tives to compile
007D30: 20 42 45 44 0D 0A 44 49 53 2E 42 09 09 61 20 5A BED..DIS.B..a Z
007D40: 38 30 20 64 69 73 61 73 73 65 6D 62 6C 65 72 20 80 disassembler
007D50: 77 72 69 74 74 65 6E 20 69 6E 20 42 43 50 4C 0D written in BCPL.
007D60: 0A 49 4E 56 41 44 45 2E 42 09 09 61 20 73 70 61 .INVADE.B..a spa
007D70: 63 65 20 69 6E 76 61 64 65 72 73 20 67 61 6D 65 ce invaders game
007D80: 2C 20 77 72 69 74 74 65 6E 20 69 6E 20 42 43 50 , written in BCP
007D90: 4C 0D 0A 0D 0A E2 4C 6F 61 64 69 6E 67 20 74 68 L.....Loading th
007DA0: 65 20 41 4D 53 44 4F 53 20 64 69 73 63 20 76 65 e AMSDOS disc ve
007DB0: 72 73 69 6F 6E E2 0D 0A 0D 0A 09 54 6F 20 6C 6F rsion......To lo
007DC0: 61 64 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 20 ad the compiler
007DD0: 74 79 70 65 3A 09 09 52 55 4E 22 42 43 50 4C 22 type:..RUN"BCPL"
007DE0: 0D 0A 0D 0A 0D 0A E2 45 6E 74 65 72 69 6E 67 20 .......Entering
007DF0: 61 6E 64 20 65 64 69 74 69 6E 67 20 42 43 50 4C and editing BCPL
007E00: 20 70 72 6F 67 72 61 6D 73 20 75 6E 64 65 72 20 programs under
007E10: 41 4D 53 44 4F 53 E2 0D 0A 0D 0A 09 41 6E 79 20 AMSDOS......Any
007E20: 65 64 69 74 6F 72 20 6F 72 90 20 77 6F 72 64 90 editor or. word.
007E30: 20 70 72 6F 63 65 73 73 6F 72 90 20 6D 61 79 90 processor. may.
007E40: 20 62 65 90 90 75 73 65 64 90 20 66 6F 72 90 20 be..used. for.
007E50: 74 79 70 69 6E 67 20 69 6E 20 42 43 50 4C 20 0D typing in BCPL .
007E60: 8A 70 72 6F 67 72 61 6D 73 2C 20 61 73 20 6C 6F .programs, as lo
007E70: 6E 67 20 61 73 20 61 6E 20 41 53 43 49 49 20 66 ng as an ASCII f
007E80: 69 6C 65 20 63 61 6E 20 62 65 20 70 72 6F 64 75 ile can be produ
007E90: 63 65 64 2E 0D 0A 09 50 52 4F 54 45 58 54 20 28 ced....PROTEXT (
007EA0: 75 73 69 6E 67 20 70 72 6F 67 72 61 6D 20 6D 6F using program mo
007EB0: 64 65 29 20 61 6E 64 20 4D 41 58 41 4D 20 61 72 de) and MAXAM ar
007EC0: 65 20 65 73 70 65 63 69 61 6C 6C 79 20 73 75 69 e especially sui
007ED0: 74 61 62 6C 65 2C 20 69 6E 20 0D 8A 70 61 72 74 table, in ..part
007EE0: 69 63 75 6C 61 72 20 74 68 65 20 52 4F 4D 20 76 icular the ROM v
007EF0: 65 72 73 69 6F 6E 73 20 61 72 65 20 72 65 63 6F ersions are reco
007F00: 6D 6D 65 6E 64 65 64 20 66 6F 72 20 63 6F 6E 76 mmended for conv
007F10: 65 6E 69 65 6E 63 65 2E 0D 0A 09 49 66 20 79 6F enience....If yo
007F20: 75 20 64 6F 20 6E 6F 74 20 68 61 76 65 20 61 90 u do not have a.
007F30: 20 73 75 69 74 61 62 6C 65 90 20 65 64 69 74 6F suitable. edito
007F40: 72 90 20 74 68 65 20 70 72 6F 67 72 61 6D 20 42 r. the program B
007F50: 45 44 2E 42 49 4E 20 63 61 6E 20 62 65 20 0D 8A ED.BIN can be ..
007F60: 75 73 65 64 2E 20 54 68 69 73 20 69 73 20 61 20 used. This is a
007F70: 73 69 6D 70 6C 65 90 20 66 75 6C 6C 90 20 73 63 simple. full. sc
007F80: 72 65 65 6E 90 20 65 64 69 74 6F 72 90 20 77 68 reen. editor. wh
007F90: 69 63 68 20 69 73 20 63 6F 6D 70 61 74 69 62 6C ich is compatibl
007FA0: 65 20 77 69 74 68 20 0D 8A 50 52 4F 54 45 58 54 e with ..PROTEXT
007FB0: 20 65 64 69 74 69 6E 67 20 63 6F 6D 6D 61 6E 64 editing command
007FC0: 73 2E 0D 0A 09 41 6E 79 20 73 6F 75 72 63 65 20 s....Any source
007FD0: 66 69 6C 65 73 20 63 72 65 61 74 65 64 20 73 68 files created sh
007FE0: 6F 75 6C 64 20 70 72 65 66 65 72 61 62 6C 79 20 ould preferably
007FF0: 62 65 20 73 61 76 65 64 20 74 6F 20 64 69 73 63 be saved to disc
008000: 20 77 69 74 68 20 61 20 0D 8A 27 2E 42 27 20 73 with a ..'.B' s
008010: 75 66 66 69 78 20 74 6F 20 74 68 65 90 20 66 69 uffix to the. fi
008020: 6C 65 6E 61 6D 65 2E 90 20 54 68 69 73 90 20 69 lename.. This. i
008030: 73 90 20 6E 6F 74 90 20 65 73 73 65 6E 74 69 61 s. not. essentia
008040: 6C 2C 20 62 75 74 20 64 6F 65 73 20 68 65 6C 70 l, but does help
008050: 20 0D 8A 69 64 65 6E 74 69 66 79 20 74 68 65 20 ..identify the
008060: 74 79 70 65 20 6F 66 20 66 69 6C 65 73 20 6F 6E type of files on
008070: 20 61 20 64 69 73 63 2E 0D 0A 0D 0A E2 43 6F 6D a disc......Com
008080: 70 69 6C 69 6E 67 20 61 20 42 43 50 4C 20 70 72 piling a BCPL pr
008090: 6F 67 72 61 6D 20 75 6E 64 65 72 20 41 4D 53 44 ogram under AMSD
0080A0: 4F 53 E2 0D 0A 0D 0A 09 41 70 61 72 74 20 66 72 OS......Apart fr
0080B0: 6F 6D 20 68 61 76 69 6E 67 20 74 6F 90 20 6C 6F om having to. lo
0080C0: 61 64 90 20 74 68 65 90 20 64 69 73 63 90 20 76 ad. the. disc. v
0080D0: 65 72 73 69 6F 6E 2C 90 20 74 68 65 90 20 64 69 ersion,. the. di
0080E0: 73 63 20 61 6E 64 20 52 4F 4D 20 0D 8A 76 65 72 sc and ROM ..ver
0080F0: 73 69 6F 6E 73 20 61 72 65 20 75 73 65 64 20 69 sions are used i
008100: 6E 20 65 78 61 63 74 6C 79 20 74 68 65 90 20 73 n exactly the. s
008110: 61 6D 65 90 20 77 61 79 2E 20 54 68 65 72 65 20 ame. way. There
008120: 61 72 65 2C 20 68 6F 77 65 76 65 72 2C 20 61 20 are, however, a
008130: 66 65 77 20 0D 8A 64 69 66 66 65 72 65 6E 63 65 few ..difference
008140: 73 20 77 68 65 6E 20 63 6F 6D 70 61 72 65 64 20 s when compared
008150: 77 69 74 68 20 74 68 65 90 20 43 50 2F 4D 20 76 with the. CP/M v
008160: 65 72 73 69 6F 6E 2E 20 54 68 65 20 6D 61 6A 6F ersion. The majo
008170: 72 20 64 69 66 66 65 72 65 6E 63 65 20 0D 8A 69 r difference ..i
008180: 73 20 74 68 61 74 20 74 68 65 20 43 50 2F 4D 20 s that the CP/M
008190: 76 65 72 73 69 6F 6E 20 61 6C 6C 6F 77 73 90 20 version allows.
0081A0: 74 68 65 90 20 69 6E 63 6C 75 73 69 6F 6E 20 6F the. inclusion o
0081B0: 66 20 73 6F 75 72 63 65 20 66 69 6C 65 73 20 77 f source files w
0081C0: 69 74 68 69 6E 20 0D 8A 6F 74 68 65 72 20 73 6F ithin ..other so
0081D0: 75 72 63 65 20 66 69 6C 65 73 2E 20 54 68 65 20 urce files. The
0081E0: 41 4D 53 44 4F 53 20 76 65 72 73 69 6F 6E 20 64 AMSDOS version d
0081F0: 6F 65 73 20 6E 6F 74 20 61 6C 6C 6F 77 20 74 68 oes not allow th
008200: 69 73 20 61 6C 74 68 6F 75 67 68 20 69 74 20 0D is although it .
008210: 8A 64 6F 65 73 20 61 6C 6C 6F 77 20 74 68 65 20 .does allow the
008220: 69 6E 63 6C 75 73 69 6F 6E 90 20 6F 66 90 20 73 inclusion. of. s
008230: 74 6F 72 65 64 90 20 50 52 4F 54 45 58 54 2F 4D tored. PROTEXT/M
008240: 41 58 41 4D 90 20 74 65 78 74 2E 20 44 75 65 20 AXAM. text. Due
008250: 74 6F 20 74 68 69 73 20 0D 8A 6C 69 6D 69 74 61 to this ..limita
008260: 74 69 6F 6E 20 74 68 65 20 41 4D 53 44 4F 53 20 tion the AMSDOS
008270: 76 65 72 73 69 6F 6E 20 68 61 73 20 61 90 20 73 version has a. s
008280: 69 6D 70 6C 65 20 66 72 6F 6E 74 20 65 6E 64 20 imple front end
008290: 77 68 69 63 68 20 61 6C 6C 6F 77 73 20 79 6F 75 which allows you
0082A0: 20 0D 8A 74 6F 20 74 79 70 65 20 69 6E 20 73 6F ..to type in so
0082B0: 75 72 63 65 20 63 6F 64 65 20 77 68 69 63 68 90 urce code which.
0082C0: 20 77 69 6C 6C 90 20 74 68 65 6E 90 20 62 65 20 will. then. be
0082D0: 73 75 62 6D 69 74 74 65 64 20 64 69 72 65 63 74 submitted direct
0082E0: 6C 79 20 74 6F 20 74 68 65 20 0D 8A 63 6F 6D 70 ly to the ..comp
0082F0: 69 6C 65 72 2E 20 0D 0A 3E 70 61 0D 0A 09 54 6F iler. ..>pa...To
008300: 20 72 75 6E 20 74 68 65 20 63 6F 6D 70 69 6C 65 run the compile
008310: 72 20 74 79 70 65 3A 20 20 7C 42 43 50 4C 0D 0A r type: |BCPL..
008320: 0D 0A 09 54 68 65 20 73 63 72 65 65 6E 20 77 69 ...The screen wi
008330: 6C 6C 20 63 6C 65 61 72 20 61 6E 64 20 74 68 65 ll clear and the
008340: 20 42 43 50 4C 20 73 69 67 6E 6F 6E 20 6D 65 73 BCPL signon mes
008350: 73 61 67 65 20 77 69 6C 6C 20 62 65 20 70 72 69 sage will be pri
008360: 6E 74 65 64 2E 20 0D 8A 59 6F 75 20 77 69 6C 6C nted. ..You will
008370: 20 74 68 65 6E 20 62 65 20 70 72 6F 6D 70 74 65 then be prompte
008380: 64 20 77 69 74 68 20 22 4F 75 74 70 75 74 90 20 d with "Output.
008390: 66 69 6C 65 20 6E 61 6D 65 3F 22 2E 20 54 68 65 file name?". The
0083A0: 20 6E 61 6D 65 20 79 6F 75 20 74 79 70 65 20 0D name you type .
0083B0: 8A 68 65 72 65 20 69 73 20 74 68 65 20 6E 61 6D .here is the nam
0083C0: 65 20 6F 66 20 74 68 65 20 66 69 6C 65 90 20 69 e of the file. i
0083D0: 6E 74 6F 20 77 68 69 63 68 20 74 68 65 20 70 72 nto which the pr
0083E0: 6F 67 72 61 6D 20 77 69 6C 6C 20 62 65 20 63 6F ogram will be co
0083F0: 6D 70 69 6C 65 64 2E 20 0D 8A 49 74 20 69 73 20 mpiled. ..It is
008400: 61 6C 73 6F 20 70 6F 73 73 69 62 6C 65 90 20 28 also possible. (
008410: 75 6E 6C 65 73 73 90 20 74 68 65 90 20 70 72 6F unless. the. pro
008420: 67 72 61 6D 90 20 69 73 90 20 74 6F 6F 90 20 6C gram. is. too. l
008430: 61 72 67 65 29 20 74 6F 20 63 6F 6D 70 69 6C 65 arge) to compile
008440: 20 0D 8A 64 69 72 65 63 74 6C 79 20 69 6E 74 6F ..directly into
008450: 20 6D 65 6D 6F 72 79 2E 20 54 6F 90 20 64 6F 90 memory. To. do.
008460: 20 74 68 69 73 90 20 6A 75 73 74 90 20 70 72 65 this. just. pre
008470: 73 73 90 20 52 45 54 55 52 4E 90 20 28 6F 72 20 ss. RETURN. (or
008480: 45 4E 54 45 52 29 20 69 6E 20 0D 8A 72 65 73 70 ENTER) in ..resp
008490: 6F 6E 73 65 20 74 6F 20 74 68 65 20 71 75 65 73 onse to the ques
0084A0: 74 69 6F 6E 2E 0D 0A 09 59 6F 75 20 77 69 6C 6C tion....You will
0084B0: 90 20 74 68 65 6E 90 20 62 65 90 20 70 72 65 73 . then. be. pres
0084C0: 65 6E 74 65 64 90 20 77 69 74 68 90 20 74 68 65 ented. with. the
0084D0: 90 20 42 43 50 4C 90 20 70 72 6F 6D 70 74 90 20 . BCPL. prompt.
0084E0: 27 2D 2D 3E 27 2E 20 54 68 65 20 0D 8A 63 6F 6D '-->'. The ..com
0084F0: 70 69 6C 65 72 20 69 73 20 6E 6F 77 20 72 65 61 piler is now rea
008500: 64 79 20 74 6F 20 61 63 63 65 70 74 90 20 42 43 dy to accept. BC
008510: 50 4C 90 20 63 6F 64 65 20 66 6F 72 20 63 6F 6D PL. code for com
008520: 70 69 6C 61 74 69 6F 6E 2E 20 54 68 69 73 20 77 pilation. This w
008530: 69 6C 6C 20 0D 8A 61 6C 6D 6F 73 74 20 61 6C 77 ill ..almost alw
008540: 61 79 73 20 63 6F 6E 73 69 73 74 20 6F 66 20 6F ays consist of o
008550: 6E 65 90 20 6F 72 90 20 6D 6F 72 65 90 20 47 45 ne. or. more. GE
008560: 54 90 20 64 69 72 65 63 74 69 76 65 73 2E 20 54 T. directives. T
008570: 68 65 72 65 20 61 72 65 20 74 77 6F 20 0D 8A 66 here are two ..f
008580: 6F 72 6D 73 20 70 65 72 6D 69 74 74 65 64 3A 0D orms permitted:.
008590: 0A 0D 0A 28 69 29 09 09 47 45 54 20 22 66 69 6C ...(i)..GET "fil
0085A0: 65 22 09 74 6F 20 69 6E 63 6C 75 64 65 20 61 6E e".to include an
0085B0: 6F 74 68 65 72 20 70 72 65 76 69 6F 75 73 6C 79 other previously
0085C0: 20 70 72 65 70 61 72 65 64 20 66 69 6C 65 0D 0A prepared file..
0085D0: 0D 0A 28 69 69 29 09 47 45 54 09 09 74 6F 20 69 ..(ii).GET..to i
0085E0: 6E 63 6C 75 64 65 20 74 68 65 20 63 75 72 72 65 nclude the curre
0085F0: 6E 74 20 74 65 78 74 20 28 50 52 4F 54 45 58 54 nt text (PROTEXT
008600: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
008610: 07 00 00 00 02 09 50 E5 07 00 C1 02 00 00 00 02 ......P.........
008620: 07 00 C2 02 00 00 00 02 07 00 C3 02 00 00 00 02 ................
008630: 07 00 C4 02 00 00 00 02 07 00 C5 02 00 00 00 02 ................
008640: 07 00 C6 02 00 00 00 02 07 00 C7 02 00 00 00 02 ................
008650: 07 00 C8 02 00 00 00 02 07 00 C9 02 00 00 00 02 ................
008660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
008670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
008680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
008690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0086A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0086B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0086C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0086D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0086E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0086F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
008700: 2F 4D 41 58 41 4D 29 0D 0A 0D 0A 09 41 6E 79 20 /MAXAM).....Any
008710: 6E 75 6D 62 65 72 20 6F 66 20 47 45 54 90 20 64 number of GET. d
008720: 69 72 65 63 74 69 76 65 73 90 20 6D 61 79 90 20 irectives. may.
008730: 62 65 90 20 74 79 70 65 64 2E 90 20 41 66 74 65 be. typed.. Afte
008740: 72 20 65 61 63 68 20 6F 6E 65 20 74 68 65 20 0D r each one the .
008750: 8A 63 6F 6D 70 69 6C 65 72 20 77 69 6C 6C 20 70 .compiler will p
008760: 65 72 66 6F 72 6D 20 74 68 65 20 66 69 72 73 74 erform the first
008770: 90 20 70 61 72 74 90 20 6F 66 90 20 74 68 65 20 . part. of. the
008780: 63 6F 6D 70 69 6C 61 74 69 6F 6E 2E 20 54 6F 20 compilation. To
008790: 65 6E 64 20 74 68 65 20 0D 8A 63 6F 6D 70 69 6C end the ..compil
0087A0: 61 74 69 6F 6E 20 61 6E 64 20 70 72 6F 64 75 63 ation and produc
0087B0: 65 20 74 68 65 20 6F 62 6A 65 63 74 20 63 6F 64 e the object cod
0087C0: 65 20 74 79 70 65 20 61 20 66 75 6C 6C 20 73 74 e type a full st
0087D0: 6F 70 20 27 2E 27 2E 0D 0A 0D 0A 0D 0A 4E 6F 74 op '.'.......Not
0087E0: 65 3A 20 49 66 20 74 68 65 20 27 2E 42 27 20 65 e: If the '.B' e
0087F0: 78 74 65 6E 73 69 6F 6E 90 6F 66 90 20 61 90 20 xtension.of. a.
008800: 73 6F 75 72 63 65 20 66 69 6C 65 6E 61 6D 65 90 source filename.
008810: 69 73 20 6F 6D 69 74 74 65 64 20 66 72 6F 6D 20 is omitted from
008820: 74 68 65 20 0D 8A 66 69 6C 65 6E 61 6D 65 20 69 the ..filename i
008830: 6E 20 61 20 47 45 54 20 63 6F 6D 6D 61 6E 64 20 n a GET command
008840: 77 68 65 6E 90 20 74 68 65 90 20 66 69 6C 65 6E when. the. filen
008850: 61 6D 65 20 63 6F 6E 74 61 69 6E 73 20 69 74 2C ame contains it,
008860: 20 41 6D 73 64 6F 73 20 77 69 6C 6C 20 0D 8A 69 Amsdos will ..i
008870: 6E 69 74 69 61 6C 6C 79 20 70 72 6F 64 75 63 65 nitially produce
008880: 20 74 68 65 20 6D 65 73 73 61 67 65 90 20 27 66 the message. 'f
008890: 69 6C 65 91 6E 6F 74 90 20 66 6F 75 6E 64 27 90 ile.not. found'.
0088A0: 90 62 75 74 20 77 69 6C 6C 20 63 6F 6E 74 69 6E .but will contin
0088B0: 75 65 20 74 6F 20 0D 8A 73 65 61 72 63 68 20 66 ue to ..search f
0088C0: 6F 72 20 61 20 66 69 6C 65 20 77 69 74 68 20 74 or a file with t
0088D0: 68 65 20 2E 42 20 65 78 74 65 6E 73 69 6F 6E 20 he .B extension
0088E0: 61 6E 64 20 63 6F 6D 70 69 6C 65 20 69 74 2E 0D and compile it..
0088F0: 0A 3E 70 61 0D 0A E2 54 65 73 74 69 6E 67 20 42 .>pa...Testing B
008900: 43 50 4C 20 70 72 6F 67 72 61 6D 73 20 75 6E 64 CPL programs und
008910: 65 72 20 41 4D 53 44 4F 53 E2 0D 0A 0D 0A 09 49 er AMSDOS......I
008920: 66 20 61 20 70 72 6F 67 72 61 6D 90 20 69 73 90 f a program. is.
008930: 20 63 6F 6D 70 69 6C 65 64 90 20 74 6F 90 20 6D compiled. to. m
008940: 65 6D 6F 72 79 2C 90 20 61 73 90 20 64 65 73 63 emory,. as. desc
008950: 72 69 62 65 64 90 20 61 62 6F 76 65 2C 20 74 68 ribed. above, th
008960: 65 20 0D 8A 63 6F 6D 6D 61 6E 64 20 27 7C 47 4F e ..command '|GO
008970: 27 20 6D 61 79 20 62 65 20 75 73 65 64 20 74 6F ' may be used to
008980: 20 72 75 6E 20 74 68 65 20 70 72 6F 67 72 61 6D run the program
008990: 2E 0D 0A 09 54 79 70 69 6E 67 20 27 7C 47 4F 27 ....Typing '|GO'
0089A0: 20 77 69 6C 6C 20 72 75 6E 20 74 68 65 20 6D 6F will run the mo
0089B0: 73 74 90 20 72 65 63 65 6E 74 6C 79 20 63 6F 6D st. recently com
0089C0: 70 69 6C 65 64 20 42 43 50 4C 20 70 72 6F 67 72 piled BCPL progr
0089D0: 61 6D 2E 20 49 66 20 0D 8A 6E 6F 20 70 72 6F 67 am. If ..no prog
0089E0: 72 61 6D 20 68 61 73 20 62 65 65 6E 90 20 63 6F ram has been. co
0089F0: 6D 70 69 6C 65 64 2C 90 20 6F 72 90 20 61 6E 90 mpiled,. or. an.
008A00: 20 65 72 72 6F 72 20 6F 63 63 75 72 72 65 64 20 error occurred
008A10: 6F 6E 20 63 6F 6D 70 69 6C 61 74 69 6F 6E 2C 20 on compilation,
008A20: 0D 8A 74 68 65 6E 20 7C 47 4F 20 77 69 6C 6C 20 ..then |GO will
008A30: 73 69 6D 70 6C 79 20 70 72 69 6E 74 20 74 68 65 simply print the
008A40: 20 6D 65 73 73 61 67 65 20 22 4E 6F 20 70 72 6F message "No pro
008A50: 67 72 61 6D 22 2E 20 0D 0A 09 57 41 52 4E 49 4E gram". ...WARNIN
008A60: 47 20 2D 20 69 74 20 69 73 20 70 6F 73 73 69 62 G - it is possib
008A70: 6C 65 20 74 6F 90 20 63 6F 72 72 75 70 74 90 20 le to. corrupt.
008A80: 61 20 63 6F 6D 70 69 6C 65 64 20 70 72 6F 67 72 a compiled progr
008A90: 61 6D 20 69 6E 20 6D 65 6D 6F 72 79 20 0D 8A 62 am in memory ..b
008AA0: 79 20 65 64 69 74 69 6E 67 20 74 68 65 20 50 52 y editing the PR
008AB0: 4F 54 45 58 54 20 6F 72 90 20 4D 41 58 41 4D 90 OTEXT or. MAXAM.
008AC0: 20 74 65 78 74 2C 90 20 73 6F 90 20 61 66 74 65 text,. so. afte
008AD0: 72 20 65 64 69 74 69 6E 67 20 74 68 65 20 70 72 r editing the pr
008AE0: 6F 67 72 61 6D 20 0D 8A 73 68 6F 75 6C 64 20 61 ogram ..should a
008AF0: 6C 77 61 79 73 20 62 65 20 63 6F 6D 70 69 6C 65 lways be compile
008B00: 64 20 61 67 61 69 6E 20 62 65 66 6F 72 65 20 75 d again before u
008B10: 73 69 6E 67 20 47 4F 2E 0D 0A 09 57 69 74 68 20 sing GO....With
008B20: 6C 61 72 67 65 90 20 70 72 6F 67 72 61 6D 73 90 large. programs.
008B30: 20 69 74 90 20 69 73 90 20 71 75 69 74 65 90 20 it. is. quite.
008B40: 6C 69 6B 65 6C 79 90 20 74 68 61 74 90 20 74 68 likely. that. th
008B50: 65 72 65 90 20 77 69 6C 6C 90 20 62 65 20 0D 8A ere. will. be ..
008B60: 69 6E 73 75 66 66 69 63 69 65 6E 74 20 6D 65 6D insufficient mem
008B70: 6F 72 79 20 74 6F 20 63 6F 6D 70 69 6C 65 20 74 ory to compile t
008B80: 6F 90 20 6D 65 6D 6F 72 79 2E 90 20 54 68 65 72 o. memory.. Ther
008B90: 65 20 61 72 65 20 74 68 72 65 65 20 63 6F 75 72 e are three cour
008BA0: 73 65 73 20 6F 66 20 0D 8A 61 63 74 69 6F 6E 20 ses of ..action
008BB0: 74 68 61 74 20 6D 61 79 20 62 65 20 74 61 6B 65 that may be take
008BC0: 6E 20 68 65 72 65 3A 0D 0A 09 28 69 29 20 20 20 n here:...(i)
008BD0: 69 66 20 79 6F 75 20 61 72 65 20 75 73 69 6E 67 if you are using
008BE0: 20 74 68 65 20 64 69 73 63 90 20 76 65 72 73 69 the disc. versi
008BF0: 6F 6E 2C 90 20 62 75 79 20 61 20 52 4F 4D 20 62 on,. buy a ROM b
008C00: 6F 61 72 64 20 61 6E 64 20 75 73 65 20 0D 8A 74 oard and use ..t
008C10: 68 65 20 52 4F 4D 20 76 65 72 73 69 6F 6E 2E 20 he ROM version.
008C20: 59 6F 75 20 77 69 6C 6C 20 67 61 69 6E 20 61 6E You will gain an
008C30: 20 65 78 74 72 61 20 31 36 4B 20 6F 66 20 6D 65 extra 16K of me
008C40: 6D 6F 72 79 2E 0D 0A 09 28 69 69 29 20 20 63 6F mory....(ii) co
008C50: 6D 70 69 6C 65 20 64 69 72 65 63 74 6C 79 20 74 mpile directly t
008C60: 6F 20 64 69 73 63 2E 0D 0A 09 28 69 69 69 29 20 o disc....(iii)
008C70: 75 73 65 20 74 68 65 20 43 50 2F 4D 20 76 65 72 use the CP/M ver
008C80: 73 69 6F 6E 2E 0D 0A 0D 0A 0D 0A E2 45 78 74 72 sion........Extr
008C90: 61 20 66 61 63 69 6C 69 74 69 65 73 20 66 6F 72 a facilities for
008CA0: 20 52 4F 4D 20 75 73 65 72 73 E2 0D 0A 0D 0A 52 ROM users.....R
008CB0: 4F 4D 4F 4E 37 0D 0A 0D 0A 09 53 6F 6D 65 20 70 OMON7.....Some p
008CC0: 72 6F 67 72 61 6D 73 90 20 28 70 61 72 74 69 63 rograms. (partic
008CD0: 75 6C 61 72 6C 79 90 20 67 61 6D 65 73 29 90 20 ularly. games).
008CE0: 77 69 6C 6C 90 20 6E 6F 74 90 20 72 75 6E 90 20 will. not. run.
008CF0: 77 69 74 68 90 20 61 90 20 72 6F 6D 20 0D 8A 69 with. a. rom ..i
008D00: 6E 73 74 61 6C 6C 65 64 2E 20 54 68 65 20 63 6F nstalled. The co
008D10: 6D 6D 61 6E 64 20 7C 52 4F 4D 4F 4E 37 20 69 73 mmand |ROMON7 is
008D20: 20 70 72 6F 76 69 64 65 64 20 74 6F 20 65 6E 61 provided to ena
008D30: 62 6C 65 20 74 68 65 20 42 43 50 4C 20 72 6F 6D ble the BCPL rom
008D40: 20 28 61 6E 64 20 0D 8A 61 6E 79 20 6F 74 68 65 (and ..any othe
008D50: 72 73 29 20 74 6F 20 62 65 20 74 75 72 6E 65 64 rs) to be turned
008D60: 20 6F 66 66 2E 20 41 6C 6C 90 20 72 6F 6D 73 90 off. All. roms.
008D70: 20 65 78 63 65 70 74 20 74 68 65 20 41 4D 53 44 except the AMSD
008D80: 4F 53 20 72 6F 6D 20 77 69 6C 6C 20 62 65 20 0D OS rom will be .
008D90: 8A 74 75 72 6E 65 64 20 6F 66 66 2E 20 4E 6F 74 .turned off. Not
008DA0: 65 20 74 68 61 74 90 20 52 4F 4D 4F 4E 37 90 20 e that. ROMON7.
008DB0: 77 69 6C 6C 90 20 72 65 73 65 74 90 20 74 68 65 will. reset. the
008DC0: 90 20 63 6F 6D 70 75 74 65 72 20 61 6E 64 20 6C . computer and l
008DD0: 6F 73 65 20 74 68 65 20 0D 8A 63 6F 6E 74 65 6E ose the ..conten
008DE0: 74 73 20 6F 66 20 6D 65 6D 6F 72 79 2E 0D 0A 0D ts of memory....
008DF0: 0A 52 55 4E 22 44 49 53 43 0D 0A 0D 0A 09 57 68 .RUN"DISC.....Wh
008E00: 65 6E 20 74 68 65 20 42 43 50 4C 20 52 4F 4D 20 en the BCPL ROM
008E10: 69 73 90 20 69 6E 73 74 61 6C 6C 65 64 2C 20 70 is. installed, p
008E20: 72 65 73 73 69 6E 67 20 43 54 52 4C 2D 45 4E 54 ressing CTRL-ENT
008E30: 45 52 20 77 69 6C 6C 20 67 65 6E 65 72 61 74 65 ER will generate
008E40: 20 0D 8A 74 68 65 20 63 6F 6D 6D 61 6E 64 20 52 ..the command R
008E50: 55 4E 22 44 49 53 43 2E 20 54 68 75 73 20 61 20 UN"DISC. Thus a
008E60: 66 69 6C 65 90 20 27 44 49 53 43 27 90 20 77 69 file. 'DISC'. wi
008E70: 6C 6C 20 62 65 20 72 75 6E 20 77 68 65 6E 20 43 ll be run when C
008E80: 54 52 4C 2D 45 4E 54 45 52 20 0D 8A 69 73 20 70 TRL-ENTER ..is p
008E90: 72 65 73 73 65 64 2E 0D 0A 0D 0A 3E 70 61 0D 0A ressed.....>pa..
008EA0: 3E 63 65 20 E2 34 2E 20 43 4F 4D 50 49 4C 45 52 >ce .4. COMPILER
008EB0: 20 4F 50 54 49 4F 4E 53 E2 0D 0A 0D 0A 0D 0A 09 OPTIONS........
008EC0: 54 68 65 20 4F 50 54 49 4F 4E 20 64 69 72 65 63 The OPTION direc
008ED0: 74 69 76 65 20 63 6F 6E 74 72 6F 6C 73 20 76 61 tive controls va
008EE0: 72 69 6F 75 73 20 63 6F 6D 70 69 6C 65 72 20 66 rious compiler f
008EF0: 61 63 69 6C 69 74 69 65 73 2E 20 49 74 20 64 6F acilities. It do
008F00: 65 73 20 0D 8A 6E 6F 74 20 63 61 75 73 65 20 61 es ..not cause a
008F10: 6E 79 20 63 6F 64 65 20 74 6F 20 62 65 20 67 65 ny code to be ge
008F20: 6E 65 72 61 74 65 64 2E 90 20 54 68 65 72 65 20 nerated.. There
008F30: 61 72 65 20 35 20 6F 70 74 69 6F 6E 73 20 6F 6E are 5 options on
008F40: 20 74 68 65 20 41 4D 53 44 4F 53 20 0D 8A 76 65 the AMSDOS ..ve
008F50: 72 73 69 6F 6E 73 20 6F 66 20 74 68 65 20 63 6F rsions of the co
008F60: 6D 70 69 6C 65 72 20 61 6E 64 20 33 90 20 6F 6E mpiler and 3. on
008F70: 20 74 68 65 20 43 50 2F 4D 20 76 65 72 73 69 6F the CP/M versio
008F80: 6E 2E 20 20 4D 75 6C 74 69 70 6C 65 20 6F 70 74 n. Multiple opt
008F90: 69 6F 6E 73 20 0D 8A 6D 61 79 20 62 65 20 73 65 ions ..may be se
008FA0: 6C 65 63 74 65 64 90 20 77 69 74 68 90 20 61 90 lected. with. a.
008FB0: 20 73 69 6E 67 6C 65 90 20 4F 50 54 49 4F 4E 90 single. OPTION.
008FC0: 20 64 69 72 65 63 74 69 76 65 90 20 62 79 20 73 directive. by s
008FD0: 65 70 61 72 61 74 69 6E 67 20 74 68 65 20 0D 8A eparating the ..
008FE0: 6F 70 74 69 6F 6E 73 20 77 69 74 68 20 63 6F 6D options with com
008FF0: 6D 61 73 2E 20 54 68 65 90 20 4F 50 54 49 4F 4E mas. The. OPTION
009000: 90 20 64 69 72 65 63 74 69 76 65 90 20 6D 61 79 . directive. may
009010: 90 20 61 70 70 65 61 72 20 61 6E 79 77 68 65 72 . appear anywher
009020: 65 20 69 6E 20 61 20 0D 8A 70 72 6F 67 72 61 6D e in a ..program
009030: 20 73 6F 20 6F 70 74 69 6F 6E 73 20 63 61 6E 20 so options can
009040: 62 65 20 73 65 6C 65 63 74 65 64 20 66 6F 72 20 be selected for
009050: 61 6E 79 20 70 61 72 74 20 6F 66 20 61 20 70 72 any part of a pr
009060: 6F 67 72 61 6D 2E 20 0D 0A 0D 0A 09 54 68 65 20 ogram. .....The
009070: 74 68 72 65 65 20 6F 70 74 69 6F 6E 73 20 63 6F three options co
009080: 6D 6D 6F 6E 20 74 6F 20 61 6C 6C 20 76 65 72 73 mmon to all vers
009090: 69 6F 6E 73 20 61 72 65 20 61 73 20 66 6F 6C 6C ions are as foll
0090A0: 6F 77 73 3A 0D 0A 0D 0A 09 49 66 20 74 68 65 20 ows:.....If the
0090B0: 6F 70 74 69 6F 6E 90 20 69 73 90 20 66 6F 6C 6C option. is. foll
0090C0: 6F 77 65 64 90 20 62 79 90 20 61 90 20 27 2B 27 owed. by. a. '+'
0090D0: 90 20 73 69 67 6E 90 20 74 68 65 90 20 6F 70 74 . sign. the. opt
0090E0: 69 6F 6E 20 77 69 6C 6C 20 62 65 20 0D 8A 73 77 ion will be ..sw
0090F0: 69 74 63 68 65 64 20 6F 6E 20 61 6E 64 20 69 66 itched on and if
009100: 20 66 6F 6C 6C 6F 77 65 64 20 62 79 20 61 20 27 followed by a '
009110: 2D 2D 27 2C 20 69 74 20 77 69 6C 6C 20 62 65 20 --', it will be
009120: 20 73 77 69 74 63 68 65 64 20 6F 66 66 2E 0D 0A switched off...
009130: 0D 0A 09 4C 20 2D 2D 20 73 77 69 74 63 68 20 6C ...L -- switch l
009140: 69 73 74 69 6E 67 20 6F 6E 20 6F 72 20 6F 66 66 isting on or off
009150: 2E 20 0D 0A 0D 0A 09 09 65 2E 67 2E 20 4F 50 54 . ......e.g. OPT
009160: 49 4F 4E 20 4C 2B 0D 0A 0D 0A 09 53 20 2D 2D 20 ION L+.....S --
009170: 73 77 69 74 63 68 20 73 74 61 63 6B 20 63 68 65 switch stack che
009180: 63 6B 69 6E 67 20 6F 6E 20 6F 72 90 20 6F 66 66 cking on or. off
009190: 2E 90 20 49 66 20 63 68 65 63 6B 69 6E 67 20 69 .. If checking i
0091A0: 73 20 6F 6E 20 74 68 65 6E 20 74 68 65 20 0D 8A s on then the ..
0091B0: 63 6F 6D 70 69 6C 65 72 20 77 69 6C 6C 20 63 68 compiler will ch
0091C0: 65 63 6B 20 66 6F 72 90 20 73 74 61 63 6B 90 20 eck for. stack.
0091D0: 6F 76 65 72 66 6C 6F 77 90 20 61 74 90 20 74 68 overflow. at. th
0091E0: 65 90 20 65 6E 74 72 79 20 70 6F 69 6E 74 20 6F e. entry point o
0091F0: 66 20 65 61 63 68 20 0D 8A 70 72 6F 63 65 64 75 f each ..procedu
009200: 72 65 2E 20 49 66 20 73 74 61 63 6B 20 63 68 65 re. If stack che
009210: 63 6B 69 6E 67 20 69 73 90 20 6F 66 66 90 20 74 cking is. off. t
009220: 68 65 6E 90 20 74 68 65 20 73 74 61 63 6B 20 6D hen. the stack m
009230: 61 79 20 6F 76 65 72 66 6C 6F 77 20 61 6E 64 20 ay overflow and
009240: 0D 8A 63 72 61 73 68 20 74 68 65 20 6D 61 63 68 ..crash the mach
009250: 69 6E 65 2E 0D 0A 0D 0A 09 09 65 2E 67 2E 20 4F ine.......e.g. O
009260: 50 54 49 4F 4E 20 53 2D 2D 0D 0A 0D 0A 09 42 20 PTION S--.....B
009270: 2D 2D 20 73 77 69 74 63 68 20 62 72 65 61 6B 20 -- switch break
009280: 63 68 65 63 6B 69 6E 67 20 6F 6E 20 6F 72 90 20 checking on or.
009290: 6F 66 66 2E 90 20 49 66 20 63 68 65 63 6B 69 6E off.. If checkin
0092A0: 67 20 69 73 20 6F 6E 20 74 68 65 6E 20 74 68 65 g is on then the
0092B0: 20 0D 8A 6F 62 6A 65 63 74 20 63 6F 64 65 90 20 ..object code.
0092C0: 70 72 6F 64 75 63 65 64 90 20 77 69 6C 6C 90 20 produced. will.
0092D0: 63 68 65 63 6B 90 20 77 68 65 74 68 65 72 90 20 check. whether.
0092E0: 74 68 65 90 20 62 72 65 61 6B 90 20 6B 65 79 90 the. break. key.
0092F0: 20 28 45 53 43 90 20 6F 72 20 0D 8A 53 54 4F 50 (ESC. or ..STOP
009300: 29 20 68 61 73 20 62 65 65 6E 20 70 72 65 73 73 ) has been press
009310: 65 64 20 61 74 20 74 68 65 20 73 74 61 72 74 90 ed at the start.
009320: 20 6F 66 90 20 6C 6F 6F 70 73 20 61 6E 64 20 61 of. loops and a
009330: 74 20 74 68 65 20 65 6E 74 72 79 20 70 6F 69 6E t the entry poin
009340: 74 73 20 0D 8A 6F 66 20 70 72 6F 63 65 64 75 72 ts ..of procedur
009350: 65 73 2E 20 41 20 6E 75 6D 62 65 72 20 6D 61 79 es. A number may
009360: 20 62 65 20 73 70 65 63 69 66 69 65 64 90 20 74 be specified. t
009370: 6F 20 63 6F 6E 74 72 6F 6C 20 68 6F 77 20 6F 66 o control how of
009380: 74 65 6E 20 74 68 65 20 6B 65 79 20 0D 8A 69 73 ten the key ..is
009390: 20 63 68 65 63 6B 65 64 2E 20 54 68 65 20 64 65 checked. The de
0093A0: 66 61 75 6C 74 20 69 73 90 20 31 30 2C 90 20 77 fault is. 10,. w
0093B0: 68 69 63 68 90 20 6D 65 61 6E 73 90 20 69 74 90 hich. means. it.
0093C0: 20 69 73 20 63 68 65 63 6B 65 64 20 6F 6E 63 65 is checked once
0093D0: 20 66 6F 72 20 0D 8A 65 76 65 72 79 20 74 65 6E for ..every ten
0093E0: 20 6C 6F 6F 70 73 20 6F 72 20 70 72 6F 63 65 64 loops or proced
0093F0: 75 72 65 73 2E 0D 0A 0D 0A 09 09 65 2E 67 2E 20 ures.......e.g.
009400: 4F 50 54 49 4F 4E 20 42 2D 2D 0D 0A 09 09 20 20 OPTION B--....
009410: 20 20 20 4F 50 54 49 4F 4E 20 42 2B 32 35 09 0D OPTION B+25..
009420: 0A 0D 0A 09 54 68 65 20 64 65 66 61 75 6C 74 73 ....The defaults
009430: 20 66 6F 72 20 74 68 65 20 61 62 6F 76 65 20 6F for the above o
009440: 70 74 69 6F 6E 73 20 61 72 65 20 6C 69 73 74 69 ptions are listi
009450: 6E 67 20 6F 66 66 2C 20 73 74 61 63 6B 20 63 68 ng off, stack ch
009460: 65 63 6B 69 6E 67 20 0D 8A 6F 6E 2C 20 62 72 65 ecking ..on, bre
009470: 61 6B 20 63 68 65 63 6B 69 6E 67 20 6F 6E 2E 20 ak checking on.
009480: 0D 0A 0D 0A 3E 70 61 0D 0A 09 54 68 65 20 72 65 ....>pa...The re
009490: 6D 61 69 6E 69 6E 67 20 74 77 6F 20 6F 70 74 69 maining two opti
0094A0: 6F 6E 73 20 61 72 65 20 6F 6E 6C 79 20 61 76 61 ons are only ava
0094B0: 69 6C 61 62 6C 65 20 6F 6E 20 41 4D 53 44 4F 53 ilable on AMSDOS
0094C0: 20 76 65 72 73 69 6F 6E 73 2E 0D 0A 0D 0A 0D 0A versions.......
0094D0: 09 4F 20 2D 2D 20 73 65 74 73 20 74 68 65 20 63 .O -- sets the c
0094E0: 6F 64 65 20 6F 72 69 67 69 6E 20 74 6F 20 74 68 ode origin to th
0094F0: 65 20 76 61 6C 75 65 20 6F 66 20 74 68 65 20 6E e value of the n
009500: 75 6D 62 65 72 20 77 68 69 63 68 20 66 6F 6C 6C umber which foll
009510: 6F 77 73 20 0D 8A 69 74 2E 20 0D 0A 09 09 65 2E ows ..it. ....e.
009520: 67 2E 20 4F 50 54 49 4F 4E 20 4F 20 23 78 31 37 g. OPTION O #x17
009530: 32 0D 0A 0D 0A 77 69 6C 6C 20 70 72 6F 64 75 63 2....will produc
009540: 65 20 63 6F 64 65 20 77 68 69 63 68 20 77 69 6C e code which wil
009550: 6C 20 72 75 6E 20 61 74 20 61 64 64 72 65 73 73 l run at address
009560: 20 31 37 32 20 28 68 65 78 29 2E 0D 0A 0D 0A 09 172 (hex)......
009570: 48 20 2D 2D 20 73 65 74 73 20 74 68 65 20 68 69 H -- sets the hi
009580: 67 68 65 73 74 20 62 79 74 65 20 75 73 61 62 6C ghest byte usabl
009590: 65 20 62 79 20 74 68 65 20 63 6F 6D 70 69 6C 65 e by the compile
0095A0: 64 20 63 6F 64 65 2E 20 54 68 69 73 20 69 73 20 d code. This is
0095B0: 73 6F 20 0D 8A 74 68 61 74 20 70 72 6F 67 72 61 so ..that progra
0095C0: 6D 73 20 63 6F 6D 70 69 6C 65 64 20 6F 6E 20 6F ms compiled on o
0095D0: 6E 65 20 6D 61 63 68 69 6E 65 20 63 61 6E 20 62 ne machine can b
0095E0: 65 20 72 75 6E 20 6F 6E 20 61 6E 6F 74 68 65 72 e run on another
0095F0: 2E 20 0D 0A 09 09 65 2E 67 2E 20 4F 50 54 49 4F . ....e.g. OPTIO
009600: 4E 20 48 20 34 30 30 30 30 0D 0A 0D 0A 0D 0A 09 N H 40000.......
009610: 54 68 65 20 6F 72 69 67 69 6E 20 64 65 66 61 75 The origin defau
009620: 6C 74 73 20 74 6F 20 74 68 65 20 66 69 72 73 74 lts to the first
009630: 90 20 75 6E 75 73 65 64 20 62 79 74 65 20 6F 66 . unused byte of
009640: 20 6D 65 6D 6F 72 79 20 61 74 20 63 6F 6D 70 69 memory at compi
009650: 6C 65 20 0D 8A 74 69 6D 65 20 28 61 66 74 65 72 le ..time (after
009660: 20 61 6E 79 20 42 41 53 49 43 20 70 72 6F 67 72 any BASIC progr
009670: 61 6D 20 6F 72 90 20 74 65 78 74 29 90 20 61 6E am or. text). an
009680: 64 20 74 68 65 20 68 69 67 68 65 73 74 20 62 79 d the highest by
009690: 74 65 20 64 65 66 61 75 6C 74 73 20 0D 8A 74 6F te defaults ..to
0096A0: 20 74 68 65 20 6C 61 73 74 20 75 6E 75 73 65 64 the last unused
0096B0: 20 62 79 74 65 20 6F 66 20 6D 65 6D 6F 72 79 20 byte of memory
0096C0: 61 74 20 63 6F 6D 70 69 6C 65 20 74 69 6D 65 20 at compile time
0096D0: 28 75 73 75 61 6C 6C 79 20 48 49 4D 45 4D 29 2E (usually HIMEM).
0096E0: 0D 0A 0D 0A 09 54 68 65 20 6D 61 69 6E 20 75 73 .....The main us
0096F0: 65 20 66 6F 72 20 74 68 65 20 48 20 61 6E 64 20 e for the H and
009700: 4F 20 6F 70 74 69 6F 6E 73 20 69 73 20 77 68 65 O options is whe
009710: 6E 20 70 72 6F 64 75 63 69 6E 67 20 73 74 61 6E n producing stan
009720: 64 20 61 6C 6F 6E 65 20 0D 8A 63 6F 64 65 20 74 d alone ..code t
009730: 6F 20 62 65 20 72 75 6E 20 66 72 6F 6D 20 61 90 o be run from a.
009740: 20 64 69 73 63 90 20 77 69 74 68 90 20 6E 6F 20 disc. with. no
009750: 42 41 53 49 43 20 73 75 70 70 6F 72 74 20 65 74 BASIC support et
009760: 63 2E 20 54 68 65 73 65 20 6F 70 74 69 6F 6E 73 c. These options
009770: 20 0D 8A 65 6E 61 62 6C 65 20 61 6C 6C 20 6F 66 ..enable all of
009780: 20 74 68 65 20 6D 65 6D 6F 72 79 20 74 6F 20 62 the memory to b
009790: 65 20 75 73 65 64 90 20 66 6F 72 20 61 20 70 72 e used. for a pr
0097A0: 6F 67 72 61 6D 2E 20 49 74 20 73 68 6F 75 6C 64 ogram. It should
0097B0: 20 62 65 20 6E 6F 74 65 64 20 0D 8A 68 6F 77 65 be noted ..howe
0097C0: 76 65 72 20 74 68 61 74 20 69 66 20 74 68 65 90 ver that if the.
0097D0: 20 5A 38 30 90 20 73 74 61 63 6B 90 20 70 6F 69 Z80. stack. poi
0097E0: 6E 74 65 72 90 20 67 6F 65 73 90 20 62 65 6C 6F nter. goes. belo
0097F0: 77 90 20 23 78 34 30 30 30 20 6F 72 20 61 62 6F w. #x4000 or abo
009800: 76 65 20 0D 8A 23 78 43 30 30 30 20 74 68 65 6E ve ..#xC000 then
009810: 20 74 68 65 20 6D 61 63 68 69 6E 65 90 20 77 69 the machine. wi
009820: 6C 6C 90 20 70 72 6F 62 61 62 6C 79 90 20 63 72 ll. probably. cr
009830: 61 73 68 90 20 64 75 65 90 20 74 6F 20 74 68 65 ash. due. to the
009840: 20 52 4F 4D 20 70 61 67 69 6E 67 20 0D 8A 77 68 ROM paging ..wh
009850: 69 63 68 20 75 73 65 73 20 74 68 65 73 65 20 61 ich uses these a
009860: 72 65 61 73 20 6F 66 20 6D 65 6D 6F 72 79 2E 0D reas of memory..
009870: 0A 0D 0A 3E 70 61 0D 0A 3E 63 65 20 E2 35 2E 20 ...>pa..>ce .5.
009880: 53 4F 4D 45 20 4B 45 59 20 46 41 43 54 53 20 41 SOME KEY FACTS A
009890: 42 4F 55 54 20 42 43 50 4C E2 0D 0A 0D 0A 0D 0A BOUT BCPL.......
0098A0: E2 28 69 29 20 42 43 50 4C 20 69 73 20 61 20 73 .(i) BCPL is a s
0098B0: 74 72 75 63 74 75 72 65 64 20 6C 61 6E 67 75 61 tructured langua
0098C0: 67 65 E2 0D 0A 0D 0A 09 41 20 42 43 50 4C 20 70 ge......A BCPL p
0098D0: 72 6F 67 72 61 6D 20 69 73 20 6D 61 64 65 20 75 rogram is made u
0098E0: 70 20 6F 66 20 61 20 6E 75 6D 62 65 72 20 6F 66 p of a number of
0098F0: 20 6E 61 6D 65 64 20 70 72 6F 63 65 64 75 72 65 named procedure
009900: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
009910: 08 00 00 00 02 09 50 E5 08 00 C1 02 00 00 00 02 ......P.........
009920: 08 00 C2 02 00 00 00 02 08 00 C3 02 00 00 00 02 ................
009930: 08 00 C4 02 00 00 00 02 08 00 C5 02 00 00 00 02 ................
009940: 08 00 C6 02 00 00 00 02 08 00 C7 02 00 00 00 02 ................
009950: 08 00 C8 02 00 00 00 02 08 00 C9 02 00 00 00 02 ................
009960: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
009970: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
009980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
009990: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0099A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0099B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0099C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0099D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0099E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0099F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
009A00: 73 2C 20 65 61 63 68 20 6F 66 20 0D 8A 77 68 69 s, each of ..whi
009A10: 63 68 20 69 73 90 20 71 75 69 74 65 90 20 73 65 ch is. quite. se
009A20: 70 61 72 61 74 65 2E 90 20 54 68 65 72 65 90 20 parate.. There.
009A30: 69 73 90 20 6F 6E 65 90 20 73 70 65 63 69 61 6C is. one. special
009A40: 90 20 70 72 6F 63 65 64 75 72 65 2C 20 63 61 6C . procedure, cal
009A50: 6C 65 64 20 0D 8A 27 73 74 61 72 74 27 2C 20 77 led ..'start', w
009A60: 68 69 63 68 20 6D 75 73 74 20 62 65 20 70 72 65 hich must be pre
009A70: 73 65 6E 74 90 20 69 6E 90 20 65 76 65 72 79 90 sent. in. every.
009A80: 20 42 43 50 4C 20 70 72 6F 67 72 61 6D 2E 20 54 BCPL program. T
009A90: 68 69 73 20 69 73 20 77 68 65 72 65 20 0D 8A 65 his is where ..e
009AA0: 78 65 63 75 74 69 6F 6E 20 77 69 6C 6C 20 62 65 xecution will be
009AB0: 67 69 6E 2E 20 54 68 69 73 20 70 72 6F 63 65 64 gin. This proced
009AC0: 75 72 65 20 77 69 6C 6C 20 63 61 6C 6C 20 6F 74 ure will call ot
009AD0: 68 65 72 20 70 72 6F 63 65 64 75 72 65 73 2C 20 her procedures,
009AE0: 77 68 69 63 68 20 0D 8A 77 69 6C 6C 20 69 6E 20 which ..will in
009AF0: 74 75 72 6E 20 63 61 6C 6C 20 6F 74 68 65 72 20 turn call other
009B00: 70 72 6F 63 65 64 75 72 65 73 2C 20 61 6E 64 20 procedures, and
009B10: 73 6F 20 6F 6E 2E 0D 0A 09 59 6F 75 20 77 69 6C so on....You wil
009B20: 6C 20 6C 61 74 65 72 20 63 6F 6D 65 20 61 63 72 l later come acr
009B30: 6F 73 73 20 74 65 72 6D 73 20 73 75 63 68 20 61 oss terms such a
009B40: 73 20 62 6C 6F 63 6B 73 2C 20 63 6F 6D 70 6F 75 s blocks, compou
009B50: 6E 64 20 63 6F 6D 6D 61 6E 64 73 20 0D 8A 61 6E nd commands ..an
009B60: 64 20 73 63 6F 70 65 20 2D 2D 20 74 65 72 6D 73 d scope -- terms
009B70: 90 20 74 68 61 74 90 20 61 70 70 6C 79 90 20 74 . that. apply. t
009B80: 6F 90 20 73 74 72 75 63 74 75 72 65 64 90 20 6C o. structured. l
009B90: 61 6E 67 75 61 67 65 73 20 69 6E 20 67 65 6E 65 anguages in gene
009BA0: 72 61 6C 2E 20 0D 8A 45 78 61 6D 70 6C 65 73 90 ral. ..Examples.
009BB0: 20 6F 66 90 20 6F 74 68 65 72 90 20 73 74 72 75 of. other. stru
009BC0: 63 74 75 72 65 64 90 90 20 70 72 6F 67 72 61 6D ctured.. program
009BD0: 6D 69 6E 67 90 20 6C 61 6E 67 75 61 67 65 73 90 ming. languages.
009BE0: 20 61 72 65 90 20 50 61 73 63 61 6C 2C 20 0D 8A are. Pascal, ..
009BF0: 4D 6F 64 75 6C 61 91 32 20 61 6E 64 20 43 2E 20 Modula.2 and C.
009C00: 4C 6F 63 6F 6D 6F 74 69 76 65 20 42 41 53 49 43 Locomotive BASIC
009C10: 20 61 6E 64 90 20 4D 61 6C 6C 61 72 64 20 42 41 and. Mallard BA
009C20: 53 49 43 20 61 72 65 20 6E 6F 74 20 73 74 72 75 SIC are not stru
009C30: 63 74 75 72 65 64 20 0D 8A 6C 61 6E 67 75 61 67 ctured ..languag
009C40: 65 73 2E 0D 0A 0D 0A 0D 0A E2 28 69 69 29 20 42 es........(ii) B
009C50: 43 50 4C 20 69 73 20 61 20 63 6F 6D 70 69 6C 65 CPL is a compile
009C60: 64 20 6C 61 6E 67 75 61 67 65 E2 0D 0A 0D 0A 09 d language......
009C70: 42 41 53 49 43 20 69 73 20 75 73 75 61 6C 6C 79 BASIC is usually
009C80: 20 61 6E 20 69 6E 74 65 72 70 72 65 74 65 64 90 an interpreted.
009C90: 20 6C 61 6E 67 75 61 67 65 2E 90 20 57 68 65 6E language.. When
009CA0: 20 61 20 70 72 6F 67 72 61 6D 20 69 73 20 72 75 a program is ru
009CB0: 6E 2C 20 0D 8A 74 68 65 20 42 41 53 49 43 20 69 n, ..the BASIC i
009CC0: 6E 74 65 72 70 72 65 74 65 72 20 72 65 61 64 73 nterpreter reads
009CD0: 90 20 65 61 63 68 90 20 6C 69 6E 65 90 20 61 6E . each. line. an
009CE0: 64 90 20 65 78 65 63 75 74 65 73 20 74 68 65 20 d. executes the
009CF0: 61 70 70 72 6F 70 72 69 61 74 65 20 0D 8A 6D 61 appropriate ..ma
009D00: 63 68 69 6E 65 20 63 6F 64 65 20 69 6E 73 74 72 chine code instr
009D10: 75 63 74 69 6F 6E 73 2E 20 54 68 69 73 20 64 65 uctions. This de
009D20: 63 6F 64 69 6E 67 20 69 73 90 20 64 6F 6E 65 20 coding is. done
009D30: 65 76 65 72 79 20 74 69 6D 65 20 61 20 6C 69 6E every time a lin
009D40: 65 20 69 73 20 0D 8A 65 78 65 63 75 74 65 64 2E e is ..executed.
009D50: 20 54 68 65 20 72 65 73 75 6C 74 90 20 69 73 90 The result. is.
009D60: 20 74 68 61 74 90 20 42 41 53 49 43 90 20 70 72 that. BASIC. pr
009D70: 6F 67 72 61 6D 73 90 20 72 75 6E 90 20 76 65 72 ograms. run. ver
009D80: 79 20 73 6C 6F 77 6C 79 20 77 68 65 6E 20 0D 8A y slowly when ..
009D90: 63 6F 6D 70 61 72 65 64 20 77 69 74 68 20 61 20 compared with a
009DA0: 6D 61 63 68 69 6E 65 20 63 6F 64 65 20 70 72 6F machine code pro
009DB0: 67 72 61 6D 20 64 6F 69 6E 67 20 74 68 65 20 73 gram doing the s
009DC0: 61 6D 65 20 74 68 69 6E 67 2E 0D 0A 09 41 20 42 ame thing....A B
009DD0: 43 50 4C 20 70 72 6F 67 72 61 6D 20 6D 75 73 74 CPL program must
009DE0: 20 62 65 20 73 75 62 6D 69 74 74 65 64 20 74 6F be submitted to
009DF0: 90 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 20 62 . the compiler b
009E00: 65 66 6F 72 65 20 69 74 20 63 61 6E 20 62 65 20 efore it can be
009E10: 0D 8A 72 75 6E 2E 20 54 68 65 20 63 6F 6D 70 69 ..run. The compi
009E20: 6C 65 72 90 20 74 72 61 6E 73 6C 61 74 65 73 90 ler. translates.
009E30: 20 74 68 65 90 20 65 6E 74 69 72 65 90 20 70 72 the. entire. pr
009E40: 6F 67 72 61 6D 90 20 69 6E 74 6F 20 6D 61 63 68 ogram. into mach
009E50: 69 6E 65 20 63 6F 64 65 20 0D 8A 69 6E 73 74 72 ine code ..instr
009E60: 75 63 74 69 6F 6E 73 2E 20 54 68 65 20 6D 61 63 uctions. The mac
009E70: 68 69 6E 65 20 63 6F 64 65 20 70 72 6F 67 72 61 hine code progra
009E80: 6D 20 69 73 90 20 73 61 76 65 64 90 20 61 6E 64 m is. saved. and
009E90: 20 63 61 6E 20 74 68 65 6E 20 62 65 20 72 75 6E can then be run
009EA0: 2E 20 0D 8A 53 69 6E 63 65 20 65 61 63 68 20 42 . ..Since each B
009EB0: 43 50 4C 20 6C 69 6E 65 20 69 73 20 6F 6E 6C 79 CPL line is only
009EC0: 90 20 74 72 61 6E 73 6C 61 74 65 64 90 20 6F 6E . translated. on
009ED0: 63 65 2C 90 20 61 20 42 43 50 4C 20 70 72 6F 67 ce,. a BCPL prog
009EE0: 72 61 6D 20 72 75 6E 73 20 61 20 0D 8A 6C 6F 74 ram runs a ..lot
009EF0: 20 66 61 73 74 65 72 20 74 68 61 6E 20 61 20 63 faster than a c
009F00: 6F 72 72 65 73 70 6F 6E 64 69 6E 67 20 42 41 53 orresponding BAS
009F10: 49 43 20 70 72 6F 67 72 61 6D 2E 0D 0A 09 54 68 IC program....Th
009F20: 65 20 64 69 73 61 64 76 61 6E 74 61 67 65 20 6F e disadvantage o
009F30: 66 20 75 73 69 6E 67 20 61 20 63 6F 6D 70 69 6C f using a compil
009F40: 65 64 90 20 6C 61 6E 67 75 61 67 65 20 69 73 20 ed. language is
009F50: 74 68 61 74 20 79 6F 75 20 68 61 76 65 20 74 6F that you have to
009F60: 20 0D 8A 77 61 69 74 20 66 6F 72 20 74 68 65 20 ..wait for the
009F70: 70 72 6F 67 72 61 6D 20 74 6F 20 62 65 20 63 6F program to be co
009F80: 6D 70 69 6C 65 64 90 20 65 61 63 68 20 74 69 6D mpiled. each tim
009F90: 65 20 62 65 66 6F 72 65 20 79 6F 75 20 63 61 6E e before you can
009FA0: 20 74 65 73 74 20 69 74 2E 20 0D 8A 54 68 69 73 test it. ..This
009FB0: 20 69 73 20 6E 6F 74 20 61 90 20 70 72 6F 62 6C is not a. probl
009FC0: 65 6D 90 20 77 69 74 68 90 20 41 72 6E 6F 72 90 em. with. Arnor.
009FD0: 20 42 43 50 4C 90 20 73 69 6E 63 65 20 69 74 20 BCPL. since it
009FE0: 63 6F 6D 70 69 6C 65 73 20 65 78 74 72 65 6D 65 compiles extreme
009FF0: 6C 79 20 0D 8A 71 75 69 63 6B 6C 79 2E 0D 0A 0D ly ..quickly....
00A000: 0A 0D 0A E2 28 69 69 69 29 20 42 43 50 4C 20 69 ....(iii) BCPL i
00A010: 73 20 61 20 74 79 70 65 6C 65 73 73 20 6C 61 6E s a typeless lan
00A020: 67 75 61 67 65 E2 0D 0A 0D 0A 09 4D 6F 73 74 20 guage......Most
00A030: 6C 61 6E 67 75 61 67 65 73 20 68 61 76 65 20 61 languages have a
00A040: 90 20 6E 75 6D 62 65 72 90 20 6F 66 90 20 69 6E . number. of. in
00A050: 74 65 72 6E 61 6C 90 20 76 61 72 69 61 62 6C 65 ternal. variable
00A060: 20 74 79 70 65 73 2E 20 42 41 53 49 43 20 0D 8A types. BASIC ..
00A070: 75 73 75 61 6C 6C 79 20 68 61 73 20 36 20 2D 2D usually has 6 --
00A080: 20 69 6E 74 65 67 65 72 2C 20 72 65 61 6C 2C 20 integer, real,
00A090: 73 74 72 69 6E 67 2C 20 69 6E 74 65 67 65 72 20 string, integer
00A0A0: 61 72 72 61 79 2C 20 72 65 61 6C 20 61 72 72 61 array, real arra
00A0B0: 79 2C 20 61 6E 64 20 0D 8A 73 74 72 69 6E 67 20 y, and ..string
00A0C0: 61 72 72 61 79 2E 20 50 41 53 43 41 4C 20 61 6E array. PASCAL an
00A0D0: 64 20 43 20 68 61 76 65 20 72 61 74 68 65 72 90 d C have rather.
00A0E0: 20 6D 6F 72 65 2C 20 61 6E 64 20 68 61 76 65 20 more, and have
00A0F0: 74 68 65 20 61 62 69 6C 69 74 79 20 66 6F 72 20 the ability for
00A100: 0D 8A 74 68 65 20 70 72 6F 67 72 61 6D 6D 65 72 ..the programmer
00A110: 20 74 6F 20 64 65 66 69 6E 65 20 68 69 73 20 6F to define his o
00A120: 77 6E 20 75 73 69 6E 67 20 22 72 65 63 6F 72 64 wn using "record
00A130: 22 20 6F 72 20 22 73 74 72 75 63 74 22 2E 0D 0A " or "struct"...
00A140: 09 42 43 50 4C 20 68 61 73 20 6A 75 73 74 20 6F .BCPL has just o
00A150: 6E 65 90 20 69 6E 74 65 72 6E 61 6C 90 20 76 61 ne. internal. va
00A160: 72 69 61 62 6C 65 90 20 74 79 70 65 90 20 2D 2D riable. type. --
00A170: 90 20 61 20 76 61 72 69 61 62 6C 65 20 63 61 6E . a variable can
00A180: 20 62 65 20 0D 8A 61 73 73 69 67 6E 65 64 20 61 be ..assigned a
00A190: 20 73 69 6E 67 6C 65 20 77 6F 72 64 20 76 61 6C single word val
00A1A0: 75 65 2E 90 20 54 68 69 73 90 20 69 73 90 20 72 ue.. This. is. r
00A1B0: 65 66 65 72 72 65 64 90 20 74 6F 20 61 73 20 61 eferred. to as a
00A1C0: 20 62 69 74 2D 70 61 74 74 65 72 6E 20 0D 8A 69 bit-pattern ..i
00A1D0: 6E 64 69 63 61 74 69 6E 67 20 74 68 61 74 20 6E ndicating that n
00A1E0: 6F 20 69 6E 68 65 72 65 6E 74 90 20 6D 65 61 6E o inherent. mean
00A1F0: 69 6E 67 90 20 69 73 90 20 61 74 74 61 63 68 65 ing. is. attache
00A200: 64 90 20 74 6F 20 74 68 69 73 20 76 61 6C 75 65 d. to this value
00A210: 2E 20 54 68 65 20 0D 8A 6D 65 61 6E 69 6E 67 20 . The ..meaning
00A220: 6F 66 20 74 68 65 20 76 61 6C 75 65 20 69 73 20 of the value is
00A230: 64 65 74 65 72 6D 69 6E 65 64 20 62 79 20 74 68 determined by th
00A240: 65 20 77 61 79 20 74 68 61 74 20 74 68 65 20 70 e way that the p
00A250: 72 6F 67 72 61 6D 6D 65 72 20 75 73 65 73 20 0D rogrammer uses .
00A260: 8A 69 74 2C 20 61 6E 64 20 74 68 69 73 20 6D 65 .it, and this me
00A270: 61 6E 69 6E 67 90 20 63 61 6E 90 20 63 68 61 6E aning. can. chan
00A280: 67 65 2E 90 20 49 6E 90 20 41 72 6E 6F 72 27 73 ge.. In. Arnor's
00A290: 20 69 6D 70 6C 65 6D 65 6E 74 61 74 69 6F 6E 20 implementation
00A2A0: 6F 66 20 42 43 50 4C 20 0D 8A 65 61 63 68 20 76 of BCPL ..each v
00A2B0: 61 6C 75 65 20 69 73 20 31 36 20 62 69 74 73 20 alue is 16 bits
00A2C0: 6C 6F 6E 67 2E 20 54 68 65 72 65 90 20 66 6F 6C long. There. fol
00A2D0: 6C 6F 77 20 73 6F 6D 65 20 65 78 61 6D 70 6C 65 low some example
00A2E0: 73 20 6F 66 20 68 6F 77 20 73 6F 6D 65 20 6F 66 s of how some of
00A2F0: 20 0D 8A 74 68 65 20 63 6F 6D 6D 6F 6E 20 64 61 ..the common da
00A300: 74 61 20 74 79 70 65 73 20 61 72 65 20 75 73 65 ta types are use
00A310: 64 20 69 6E 20 42 43 50 4C 2E 20 4E 6F 74 65 20 d in BCPL. Note
00A320: 74 68 61 74 20 69 6E 20 65 61 63 68 20 63 61 73 that in each cas
00A330: 65 20 61 20 27 4C 45 54 27 20 0D 8A 64 65 63 6C e a 'LET' ..decl
00A340: 61 72 61 74 69 6F 6E 20 69 73 20 72 65 71 75 69 aration is requi
00A350: 72 65 64 20 74 6F 20 64 65 66 69 6E 65 20 61 20 red to define a
00A360: 76 61 72 69 61 62 6C 65 20 62 65 66 6F 72 65 20 variable before
00A370: 69 74 20 63 61 6E 20 62 65 20 75 73 65 64 2E 0D it can be used..
00A380: 0A 3E 70 61 0D 0A E2 53 69 6D 75 6C 61 74 69 6E .>pa...Simulatin
00A390: 67 20 64 69 66 66 65 72 65 6E 74 20 76 61 72 69 g different vari
00A3A0: 61 62 6C 65 20 74 79 70 65 73 E2 0D 0A 0D 0A E2 able types......
00A3B0: 49 6E 74 65 67 65 72 3A E2 09 09 4C 45 54 20 6E Integer:...LET n
00A3C0: 75 6D 62 65 72 20 3D 20 3F 0D 0A 09 09 09 6E 75 umber = ?.....nu
00A3D0: 6D 62 65 72 20 3A 3D 20 34 32 0D 0A 0D 0A 54 68 mber := 42....Th
00A3E0: 69 73 20 61 73 73 69 67 6E 73 20 74 68 65 20 76 is assigns the v
00A3F0: 61 6C 75 65 20 34 32 90 20 28 74 68 61 74 90 20 alue 42. (that.
00A400: 69 73 20 74 68 65 20 62 69 74 20 70 61 74 74 65 is the bit patte
00A410: 72 6E 20 30 30 30 30 30 30 30 30 30 30 31 30 31 rn 0000000000101
00A420: 30 31 30 29 20 0D 8A 74 6F 20 74 68 65 20 76 61 010) ..to the va
00A430: 72 69 61 62 6C 65 20 27 6E 75 6D 62 65 72 27 2E riable 'number'.
00A440: 0D 0A 0D 0A E2 43 68 61 72 61 63 74 65 72 3A E2 .....Character:.
00A450: 09 4C 45 54 20 63 68 61 72 20 3D 20 3F 0D 0A 09 .LET char = ?...
00A460: 09 09 63 68 61 72 20 3A 3D 20 27 41 27 0D 0A 0D ..char := 'A'...
00A470: 0A 54 68 69 73 90 20 61 73 73 69 67 6E 73 90 20 .This. assigns.
00A480: 74 68 65 90 20 6E 75 6D 62 65 72 90 20 36 35 90 the. number. 65.
00A490: 90 20 28 74 68 65 90 90 20 41 53 43 49 49 90 20 . (the.. ASCII.
00A4A0: 63 6F 64 65 90 20 72 65 70 72 65 73 65 6E 74 69 code. representi
00A4B0: 6E 67 90 20 74 68 65 20 0D 8A 6C 65 74 74 65 72 ng. the ..letter
00A4C0: 91 27 41 27 29 20 74 6F 20 74 68 65 20 76 61 72 .'A') to the var
00A4D0: 69 61 62 6C 65 20 27 63 68 61 72 27 2E 0D 0A 0D iable 'char'....
00A4E0: 0A E2 56 65 63 74 6F 72 3A E2 09 09 4C 45 54 20 ..Vector:...LET
00A4F0: 61 72 72 61 79 20 3D 20 56 45 43 20 31 30 0D 0A array = VEC 10..
00A500: 09 09 09 46 4F 52 20 69 3D 30 20 54 4F 20 31 30 ...FOR i=0 TO 10
00A510: 20 44 4F 20 61 72 72 61 79 21 69 20 3A 3D 20 69 DO array!i := i
00A520: 0D 0A 0D 0A 54 68 69 73 20 73 65 74 73 20 61 73 ....This sets as
00A530: 69 64 65 20 61 6E 20 31 31 20 77 6F 72 64 20 28 ide an 11 word (
00A540: 32 32 90 20 62 79 74 65 29 90 20 61 72 65 61 20 22. byte). area
00A550: 6F 66 20 6D 65 6D 6F 72 79 2C 20 61 6E 64 20 61 of memory, and a
00A560: 73 73 69 67 6E 73 20 74 68 65 20 0D 8A 61 64 64 ssigns the ..add
00A570: 72 65 73 73 20 6F 66 20 74 68 65 20 73 74 61 72 ress of the star
00A580: 74 20 6F 66 20 74 68 69 73 20 61 72 65 61 90 20 t of this area.
00A590: 74 6F 20 74 68 65 20 76 61 72 69 61 62 6C 65 20 to the variable
00A5A0: 27 61 72 72 61 79 27 2E 20 54 68 65 20 76 65 63 'array'. The vec
00A5B0: 74 6F 72 20 0D 8A 69 73 20 61 63 63 65 73 73 65 tor ..is accesse
00A5C0: 64 20 62 79 20 74 68 65 20 69 6E 64 69 72 65 63 d by the indirec
00A5D0: 74 69 6F 6E 20 6F 70 65 72 61 74 6F 72 20 27 21 tion operator '!
00A5E0: 27 2C 20 77 68 65 72 65 20 27 61 72 72 61 79 21 ', where 'array!
00A5F0: 69 27 20 6D 65 61 6E 73 20 74 68 65 20 0D 8A 63 i' means the ..c
00A600: 6F 6E 74 65 6E 74 73 20 6F 66 20 61 64 64 72 65 ontents of addre
00A610: 73 73 20 28 61 72 72 61 79 2B 69 29 2E 20 21 61 ss (array+i). !a
00A620: 72 72 61 79 20 6D 65 61 6E 73 20 74 68 65 20 73 rray means the s
00A630: 61 6D 65 20 61 73 20 61 72 72 61 79 21 30 2E 0D ame as array!0..
00A640: 0A 0D 0A E2 54 77 6F 20 64 69 6D 65 6E 73 69 6F ....Two dimensio
00A650: 6E 61 6C 20 61 72 72 61 79 3A E2 0D 0A 0D 0A 09 nal array:......
00A660: 09 09 4D 41 4E 49 46 45 53 54 20 24 28 20 6D 3D ..MANIFEST $( m=
00A670: 33 2C 20 6E 3D 34 20 24 29 0D 0A 09 09 09 4C 45 3, n=4 $).....LE
00A680: 54 20 61 72 72 61 79 20 3D 20 56 45 43 20 28 6D T array = VEC (m
00A690: 2B 31 29 2A 28 6E 2B 31 29 20 2D 2D 20 31 0D 0A +1)*(n+1) -- 1..
00A6A0: 09 09 09 4C 45 54 20 67 65 74 61 72 72 61 79 28 ...LET getarray(
00A6B0: 69 2C 6A 29 20 3D 20 61 72 72 61 79 21 28 6D 2A i,j) = array!(m*
00A6C0: 69 2B 6A 29 0D 0A 09 09 09 4C 45 54 20 70 75 74 i+j).....LET put
00A6D0: 61 72 72 61 79 28 69 2C 6A 2C 76 61 6C 75 65 29 array(i,j,value)
00A6E0: 20 42 45 20 61 72 72 61 79 21 28 6D 2A 69 2B 6A BE array!(m*i+j
00A6F0: 29 20 3A 3D 20 76 61 6C 75 65 0D 0A 0D 0A 4D 75 ) := value....Mu
00A700: 6C 74 69 2D 64 69 6D 65 6E 73 69 6F 6E 61 6C 20 lti-dimensional
00A710: 61 72 72 61 79 73 20 63 61 6E 20 62 65 20 69 6D arrays can be im
00A720: 70 6C 65 6D 65 6E 74 65 64 90 20 62 79 90 20 64 plemented. by. d
00A730: 65 66 69 6E 69 6E 67 20 61 20 76 65 63 74 6F 72 efining a vector
00A740: 20 61 6E 64 20 0D 8A 63 61 6C 63 75 6C 61 74 69 and ..calculati
00A750: 6E 67 20 74 68 65 20 72 65 71 75 69 72 65 64 20 ng the required
00A760: 77 6F 72 64 20 66 72 6F 6D 20 74 68 65 20 61 72 word from the ar
00A770: 72 61 79 20 73 75 62 73 63 72 69 70 74 73 2E 0D ray subscripts..
00A780: 0A 0D 0A E2 53 74 72 69 6E 67 3A E2 09 09 4C 45 ....String:...LE
00A790: 54 20 74 65 78 74 20 3D 20 22 42 43 50 4C 20 69 T text = "BCPL i
00A7A0: 73 20 61 20 74 79 70 65 6C 65 73 73 20 6C 61 6E s a typeless lan
00A7B0: 67 75 61 67 65 22 0D 0A 0D 0A 54 68 69 73 20 73 guage"....This s
00A7C0: 74 6F 72 65 73 20 74 68 65 20 73 74 72 69 6E 67 tores the string
00A7D0: 90 20 22 42 43 50 4C 90 20 69 73 90 20 61 90 20 . "BCPL. is. a.
00A7E0: 74 79 70 65 6C 65 73 73 90 20 6C 61 6E 67 75 61 typeless. langua
00A7F0: 67 65 22 20 73 6F 6D 65 77 68 65 72 65 20 69 6E ge" somewhere in
00A800: 20 0D 8A 6D 65 6D 6F 72 79 2C 20 70 72 65 63 65 ..memory, prece
00A810: 64 65 64 20 62 79 20 61 20 62 79 74 65 90 20 63 ded by a byte. c
00A820: 6F 6E 74 61 69 6E 69 6E 67 90 20 74 68 65 90 20 ontaining. the.
00A830: 6C 65 6E 67 74 68 20 6F 66 20 74 68 65 20 73 74 length of the st
00A840: 72 69 6E 67 2E 20 54 68 65 20 0D 8A 76 61 6C 75 ring. The ..valu
00A850: 65 20 61 73 73 69 67 6E 65 64 20 74 6F 20 74 68 e assigned to th
00A860: 65 20 76 61 72 69 61 62 6C 65 90 20 27 74 65 78 e variable. 'tex
00A870: 74 27 90 20 69 73 90 20 74 68 65 20 61 64 64 72 t'. is. the addr
00A880: 65 73 73 20 6F 66 20 74 68 69 73 20 6C 65 6E 67 ess of this leng
00A890: 74 68 20 0D 8A 62 79 74 65 2E 20 4E 6F 74 65 20 th ..byte. Note
00A8A0: 74 68 61 74 20 74 68 69 73 20 69 73 90 20 6F 6E that this is. on
00A8B0: 6C 79 90 20 70 6F 73 73 69 62 6C 65 90 20 62 65 ly. possible. be
00A8C0: 63 61 75 73 65 20 74 68 65 20 6D 65 6D 6F 72 79 cause the memory
00A8D0: 20 61 64 64 72 65 73 73 20 69 73 20 0D 8A 74 68 address is ..th
00A8E0: 65 20 73 61 6D 65 20 6C 65 6E 67 74 68 20 61 73 e same length as
00A8F0: 20 74 68 65 20 42 43 50 4C 20 77 6F 72 64 20 28 the BCPL word (
00A900: 74 68 69 73 20 69 73 20 6E 6F 74 20 61 20 63 6F this is not a co
00A910: 69 6E 63 69 64 65 6E 63 65 21 29 2E 0D 0A 0D 0A incidence!).....
00A920: 4E 6F 74 65 3A 20 54 68 65 72 65 20 69 73 20 61 Note: There is a
00A930: 20 76 65 72 79 20 69 6D 70 6F 72 74 61 6E 74 90 very important.
00A940: 20 64 69 66 66 65 72 65 6E 63 65 90 20 62 65 74 difference. bet
00A950: 77 65 65 6E 20 74 68 65 20 75 73 65 20 6F 66 20 ween the use of
00A960: 73 69 6E 67 6C 65 20 0D 8A 61 6E 64 20 64 6F 75 single ..and dou
00A970: 62 6C 65 20 71 75 6F 74 65 73 2C 20 61 6E 64 20 ble quotes, and
00A980: 63 6F 6E 66 75 73 69 6E 67 20 74 68 65 73 65 20 confusing these
00A990: 63 61 6E 90 20 6C 65 61 64 20 74 6F 20 62 75 67 can. lead to bug
00A9A0: 73 20 74 68 61 74 20 61 72 65 20 76 65 72 79 20 s that are very
00A9B0: 0D 8A 64 69 66 66 69 63 75 6C 74 20 74 6F 20 66 ..difficult to f
00A9C0: 69 6E 64 2C 20 73 6F 20 62 65 20 63 61 72 65 66 ind, so be caref
00A9D0: 75 6C 21 20 54 68 65 20 42 43 50 4C 20 62 6F 6F ul! The BCPL boo
00A9E0: 6B 20 63 6F 6E 74 61 69 6E 73 20 61 20 76 65 72 k contains a ver
00A9F0: 79 20 75 73 65 66 75 6C 20 0D 8A 73 65 63 74 69 y useful ..secti
00AA00: 6F 6E 20 6F 6E 20 74 68 65 20 70 69 74 66 61 6C on on the pitfal
00AA10: 6C 73 20 6F 66 20 42 43 50 4C 20 70 72 6F 67 72 ls of BCPL progr
00AA20: 61 6D 6D 69 6E 67 2E 0D 0A 0D 0A 09 53 69 6E 67 amming......Sing
00AA30: 6C 65 20 71 75 6F 74 65 73 20 65 6E 63 6C 6F 73 le quotes enclos
00AA40: 65 90 20 61 90 20 63 68 61 72 61 63 74 65 72 90 e. a. character.
00AA50: 20 61 6E 64 90 20 64 65 66 69 6E 65 90 20 61 20 and. define. a
00AA60: 63 6F 6E 73 74 61 6E 74 20 77 68 6F 73 65 20 0D constant whose .
00AA70: 8A 76 61 6C 75 65 20 69 73 20 74 68 65 20 41 53 .value is the AS
00AA80: 43 49 49 20 63 6F 64 65 20 6F 66 20 74 68 61 74 CII code of that
00AA90: 20 63 68 61 72 61 63 74 65 72 2E 20 0D 0A 09 44 character. ...D
00AAA0: 6F 75 62 6C 65 20 71 75 6F 74 65 73 20 65 6E 63 ouble quotes enc
00AAB0: 6C 6F 73 65 20 61 20 73 74 72 69 6E 67 90 20 61 lose a string. a
00AAC0: 6E 64 90 20 64 65 66 69 6E 65 20 61 20 63 6F 6E nd. define a con
00AAD0: 73 74 61 6E 74 20 77 68 6F 73 65 20 76 61 6C 75 stant whose valu
00AAE0: 65 20 0D 8A 69 73 20 74 68 65 20 61 64 64 72 65 e ..is the addre
00AAF0: 73 73 20 6F 66 20 74 68 61 74 20 73 74 72 69 6E ss of that strin
00AB00: 67 2E 0D 0A 3E 70 61 0D 0A 3E 63 65 20 E2 36 2E g...>pa..>ce .6.
00AB10: 20 54 57 4F 20 42 43 50 4C 20 50 52 4F 47 52 41 TWO BCPL PROGRA
00AB20: 4D 53 E2 0D 0A 0D 0A E2 28 69 29 20 41 20 76 65 MS......(i) A ve
00AB30: 72 79 20 73 69 6D 70 6C 65 20 42 43 50 4C 20 70 ry simple BCPL p
00AB40: 72 6F 67 72 61 6D E2 0D 0A 0D 0A 54 68 69 73 20 rogram.....This
00AB50: 73 69 6D 70 6C 79 20 64 69 73 70 6C 61 79 73 20 simply displays
00AB60: 61 20 6D 65 73 73 61 67 65 20 6F 6E 20 74 68 65 a message on the
00AB70: 20 73 63 72 65 65 6E 2E 0D 0A 0D 0A 0D 0A 09 47 screen........G
00AB80: 45 54 20 22 43 4C 49 42 48 44 52 22 0D 0A 09 4C ET "CLIBHDR"...L
00AB90: 45 54 20 73 74 61 72 74 28 29 20 42 45 0D 0A 09 ET start() BE...
00ABA0: 24 28 0D 0A 09 20 20 77 72 69 74 65 73 28 22 48 $(... writes("H
00ABB0: 65 6C 6C 6F 20 65 76 65 72 79 6F 6E 65 21 22 29 ello everyone!")
00ABC0: 0D 0A 09 24 29 0D 0A 0D 0A 0D 0A E2 50 6F 69 6E ...$).......Poin
00ABD0: 74 73 20 74 6F 20 6E 6F 74 65 3A E2 0D 0A 0D 0A ts to note:.....
00ABE0: 09 31 2E 20 4C 45 54 20 61 6E 64 20 42 45 90 20 .1. LET and BE.
00ABF0: 61 72 65 90 20 42 43 50 4C 90 20 6B 65 79 77 6F are. BCPL. keywo
00AC00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
00AC10: 09 00 00 00 02 09 50 E5 09 00 C1 02 00 00 00 02 ......P.........
00AC20: 09 00 C2 02 00 00 00 02 09 00 C3 02 00 00 00 02 ................
00AC30: 09 00 C4 02 00 00 00 02 09 00 C5 02 00 00 00 02 ................
00AC40: 09 00 C6 02 00 00 00 02 09 00 C7 02 00 00 00 02 ................
00AC50: 09 00 C8 02 00 00 00 02 09 00 C9 02 00 00 00 02 ................
00AC60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AC70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AC80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AC90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00ACA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00ACB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00ACC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00ACD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00ACE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00ACF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AD00: 72 64 73 2E 90 20 42 43 50 4C 90 20 6B 65 79 77 rds.. BCPL. keyw
00AD10: 6F 72 64 73 20 61 72 65 20 70 72 69 6E 74 65 64 ords are printed
00AD20: 20 69 6E 20 0D 8A 75 70 70 65 72 20 63 61 73 65 in ..upper case
00AD30: 20 74 68 72 6F 75 67 68 6F 75 74 20 74 68 69 73 throughout this
00AD40: 20 6D 61 6E 75 61 6C 20 66 6F 72 90 20 63 6C 61 manual for. cla
00AD50: 72 69 74 79 2E 20 49 74 20 69 73 20 6E 6F 74 20 rity. It is not
00AD60: 6E 65 63 65 73 73 61 72 79 20 74 6F 20 0D 8A 74 necessary to ..t
00AD70: 79 70 65 20 74 68 65 6D 20 69 6E 20 75 70 70 65 ype them in uppe
00AD80: 72 20 63 61 73 65 20 61 73 20 74 68 65 20 63 6F r case as the co
00AD90: 6D 70 69 6C 65 72 20 69 67 6E 6F 72 65 73 20 74 mpiler ignores t
00ADA0: 68 65 20 64 69 73 74 69 6E 63 74 69 6F 6E 2E 0D he distinction..
00ADB0: 0A 0D 0A 09 32 2E 20 73 74 61 72 74 28 29 2E 20 ....2. start().
00ADC0: 54 68 69 73 90 20 69 73 90 20 74 68 65 90 20 70 This. is. the. p
00ADD0: 72 6F 63 65 64 75 72 65 90 20 74 68 61 74 90 20 rocedure. that.
00ADE0: 6D 75 73 74 90 20 62 65 90 20 70 72 65 73 65 6E must. be. presen
00ADF0: 74 2E 20 54 68 65 20 0D 8A 62 72 61 63 6B 65 74 t. The ..bracket
00AE00: 73 20 69 6E 64 69 63 61 74 65 20 74 68 61 74 20 s indicate that
00AE10: 27 73 74 61 72 74 27 20 69 73 20 74 68 65 90 20 'start' is the.
00AE20: 6E 61 6D 65 90 20 6F 66 20 61 20 70 72 6F 63 65 name. of a proce
00AE30: 64 75 72 65 2E 20 54 68 65 79 20 77 69 6C 6C 20 dure. They will
00AE40: 0D 8A 6F 66 74 65 6E 20 63 6F 6E 74 61 69 6E 20 ..often contain
00AE50: 70 61 72 61 6D 65 74 65 72 73 20 66 6F 72 20 74 parameters for t
00AE60: 68 65 20 70 72 6F 63 65 64 75 72 65 2E 0D 0A 0D he procedure....
00AE70: 0A 09 33 2E 20 24 28 20 61 6E 64 20 24 29 2E 20 ..3. $( and $).
00AE80: 54 68 65 73 65 90 20 61 72 65 90 20 73 65 63 74 These. are. sect
00AE90: 69 6F 6E 90 20 62 72 61 63 6B 65 74 73 2C 20 6D ion. brackets, m
00AEA0: 61 72 6B 69 6E 67 20 74 68 65 20 73 74 61 72 74 arking the start
00AEB0: 20 61 6E 64 20 0D 8A 65 6E 64 20 6F 66 20 74 68 and ..end of th
00AEC0: 65 20 70 72 6F 63 65 64 75 72 65 20 27 73 74 61 e procedure 'sta
00AED0: 72 74 27 2E 0D 0A 0D 0A 09 34 2E 20 77 72 69 74 rt'......4. writ
00AEE0: 65 73 2E 20 54 68 69 73 20 69 73 20 61 20 42 43 es. This is a BC
00AEF0: 50 4C 90 20 70 72 6F 63 65 64 75 72 65 20 28 6E PL. procedure (n
00AF00: 6F 74 65 20 74 68 65 20 62 72 61 63 6B 65 74 73 ote the brackets
00AF10: 20 63 6F 6E 74 61 69 6E 69 6E 67 20 0D 8A 74 68 containing ..th
00AF20: 65 20 70 61 72 61 6D 65 74 65 72 29 2E 20 49 74 e parameter). It
00AF30: 20 69 73 20 6E 6F 74 20 61 20 42 43 50 4C 90 20 is not a BCPL.
00AF40: 6B 65 79 77 6F 72 64 20 61 6E 64 20 73 6F 20 74 keyword and so t
00AF50: 68 65 20 70 72 6F 63 65 64 75 72 65 20 6D 75 73 he procedure mus
00AF60: 74 20 62 65 20 0D 8A 64 65 66 69 6E 65 64 20 73 t be ..defined s
00AF70: 6F 6D 65 77 68 65 72 65 20 28 73 65 65 20 62 65 omewhere (see be
00AF80: 6C 6F 77 29 2E 0D 0A 0D 0A 09 35 2E 20 47 45 54 low)......5. GET
00AF90: 20 22 43 4C 49 42 48 44 52 22 2E 90 20 54 68 69 "CLIBHDR".. Thi
00AFA0: 73 90 20 69 73 90 20 61 90 20 64 69 72 65 63 74 s. is. a. direct
00AFB0: 69 76 65 90 20 28 61 6E 90 20 69 6E 73 74 72 75 ive. (an. instru
00AFC0: 63 74 69 6F 6E 20 74 6F 20 74 68 65 20 0D 8A 63 ction to the ..c
00AFD0: 6F 6D 70 69 6C 65 72 29 20 74 6F 20 63 6F 6D 70 ompiler) to comp
00AFE0: 69 6C 65 20 74 68 65 20 42 43 50 4C 90 20 63 6F ile the BCPL. co
00AFF0: 64 65 90 20 63 6F 6E 74 61 69 6E 65 64 90 20 69 de. contained. i
00B000: 6E 20 74 68 65 20 66 69 6C 65 20 27 43 4C 49 42 n the file 'CLIB
00B010: 48 44 52 27 2E 20 0D 8A 54 68 69 73 20 66 69 6C HDR'. ..This fil
00B020: 65 20 69 73 20 61 90 20 6C 69 62 72 61 72 79 90 e is a. library.
00B030: 20 6F 66 90 20 75 73 65 66 75 6C 90 20 70 72 6F of. useful. pro
00B040: 63 65 64 75 72 65 73 2C 90 20 69 6E 63 6C 75 64 cedures,. includ
00B050: 69 6E 67 20 6F 6E 65 20 63 61 6C 6C 65 64 20 0D ing one called .
00B060: 8A 27 77 72 69 74 65 73 27 2E 0D 0A 0D 0A 0D 0A .'writes'.......
00B070: E2 28 69 69 29 20 41 20 73 6C 69 67 68 74 6C 79 .(ii) A slightly
00B080: 20 6D 6F 72 65 20 63 6F 6D 70 6C 65 78 20 42 43 more complex BC
00B090: 50 4C 20 70 72 6F 67 72 61 6D E2 0D 0A 0D 0A 0D PL program......
00B0A0: 0A 47 45 54 20 22 63 6C 69 62 68 64 72 22 0D 0A .GET "clibhdr"..
00B0B0: 0D 0A 2F 2A 20 54 68 69 73 20 69 73 20 61 20 63 ../* This is a c
00B0C0: 6F 70 79 20 72 6F 75 74 69 6E 65 20 2A 2F 0D 0A opy routine */..
00B0D0: 0D 0A 4C 45 54 20 73 74 61 72 74 28 29 20 42 45 ..LET start() BE
00B0E0: 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 69 6E ....$(.. LET in
00B0F0: 6E 61 6D 65 20 3D 20 56 45 43 20 32 30 20 20 3B name = VEC 20 ;
00B100: 20 4C 45 54 20 69 6E 62 75 66 66 20 3D 20 56 45 LET inbuff = VE
00B110: 43 20 38 32 0D 0A 20 20 4C 45 54 20 6F 75 74 6E C 82.. LET outn
00B120: 61 6D 65 20 3D 20 56 45 43 20 32 30 20 3B 20 4C ame = VEC 20 ; L
00B130: 45 54 20 6F 75 74 62 75 66 66 20 3D 20 56 45 43 ET outbuff = VEC
00B140: 20 38 32 0D 0A 20 20 4C 45 54 20 63 20 3D 20 30 82.. LET c = 0
00B150: 0D 0A 3E 70 61 0D 0A 20 20 77 72 69 74 65 73 28 ..>pa.. writes(
00B160: 22 49 6E 70 75 74 20 66 69 6C 65 20 6E 61 6D 65 "Input file name
00B170: 3A 20 20 22 29 0D 0A 20 20 72 65 61 64 73 28 69 : ").. reads(i
00B180: 6E 6E 61 6D 65 29 0D 0A 20 20 77 72 69 74 65 73 nname).. writes
00B190: 28 22 2A 6E 4F 75 74 70 75 74 20 66 69 6C 65 20 ("*nOutput file
00B1A0: 6E 61 6D 65 3A 20 22 29 0D 0A 20 20 72 65 61 64 name: ").. read
00B1B0: 73 28 6F 75 74 6E 61 6D 65 29 0D 0A 20 20 54 45 s(outname).. TE
00B1C0: 53 54 20 66 69 6E 64 69 6E 70 75 74 28 69 6E 6E ST findinput(inn
00B1D0: 61 6D 65 2C 20 69 6E 62 75 66 66 29 20 54 48 45 ame, inbuff) THE
00B1E0: 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 73 65 6C N.. $(.. sel
00B1F0: 65 63 74 69 6E 70 75 74 28 69 6E 62 75 66 66 29 ectinput(inbuff)
00B200: 0D 0A 20 20 20 20 54 45 53 54 20 66 69 6E 64 6F .. TEST findo
00B210: 75 74 70 75 74 28 6F 75 74 6E 61 6D 65 2C 20 6F utput(outname, o
00B220: 75 74 62 75 66 66 29 20 54 48 45 4E 0D 0A 20 20 utbuff) THEN..
00B230: 20 20 24 28 0D 0A 20 20 20 20 20 20 73 65 6C 65 $(.. sele
00B240: 63 74 6F 75 74 70 75 74 28 6F 75 74 62 75 66 66 ctoutput(outbuff
00B250: 29 0D 0A 20 20 20 20 20 20 24 28 0D 0A 20 20 20 ).. $(..
00B260: 20 20 20 20 20 63 20 3A 3D 20 72 64 63 68 28 29 c := rdch()
00B270: 0D 0A 20 20 20 20 20 20 20 20 55 4E 4C 45 53 53 .. UNLESS
00B280: 20 63 3D 65 6E 64 73 74 72 65 61 6D 63 68 20 44 c=endstreamch D
00B290: 4F 20 77 72 63 68 28 63 29 0D 0A 20 20 20 20 20 O wrch(c)..
00B2A0: 20 24 29 0D 0A 20 20 20 20 20 20 52 45 50 45 41 $).. REPEA
00B2B0: 54 55 4E 54 49 4C 20 63 20 3D 20 65 6E 64 73 74 TUNTIL c = endst
00B2C0: 72 65 61 6D 63 68 0D 0A 20 20 20 20 20 20 65 6E reamch.. en
00B2D0: 64 77 72 69 74 65 28 29 0D 0A 20 20 20 20 24 29 dwrite().. $)
00B2E0: 0D 0A 20 20 20 20 45 4C 53 45 20 77 72 69 74 65 .. ELSE write
00B2F0: 73 28 22 43 61 6E 27 74 20 6F 70 65 6E 20 6F 75 s("Can't open ou
00B300: 74 70 75 74 20 66 69 6C 65 22 29 0D 0A 20 20 20 tput file")..
00B310: 20 65 6E 64 72 65 61 64 28 29 0D 0A 20 20 24 29 endread().. $)
00B320: 0D 0A 20 20 45 4C 53 45 20 77 72 69 74 65 73 28 .. ELSE writes(
00B330: 22 43 61 6E 27 74 20 6F 70 65 6E 20 69 6E 70 75 "Can't open inpu
00B340: 74 20 66 69 6C 65 22 29 0D 0A 24 29 0D 0A 0D 0A t file")..$)....
00B350: E2 50 6F 69 6E 74 73 20 74 6F 20 6E 6F 74 65 3A .Points to note:
00B360: E2 0D 0A 0D 0A 09 31 2E 20 54 68 65 20 75 73 65 ......1. The use
00B370: 20 6F 66 20 2F 2A 20 61 6E 64 20 2A 2F 20 74 6F of /* and */ to
00B380: 20 65 6E 63 6C 6F 73 65 20 63 6F 6D 6D 65 6E 74 enclose comment
00B390: 73 2E 0D 0A 0D 0A 09 32 2E 20 54 68 65 20 75 73 s......2. The us
00B3A0: 65 20 6F 66 90 20 4C 45 54 90 20 74 6F 90 20 64 e of. LET. to. d
00B3B0: 65 63 6C 61 72 65 90 20 74 68 65 20 76 61 72 69 eclare. the vari
00B3C0: 61 62 6C 65 73 20 27 69 6E 6E 61 6D 65 27 2C 20 ables 'inname',
00B3D0: 27 69 6E 62 75 66 66 27 2C 20 0D 8A 27 6F 75 74 'inbuff', ..'out
00B3E0: 6E 61 6D 65 27 2C 20 27 6F 75 74 62 75 66 66 27 name', 'outbuff'
00B3F0: 2C 20 61 6E 64 20 27 63 27 2E 20 41 6C 6C 90 20 , and 'c'. All.
00B400: 76 61 72 69 61 62 6C 65 73 90 20 6D 75 73 74 20 variables. must
00B410: 62 65 20 64 65 63 6C 61 72 65 64 20 62 65 66 6F be declared befo
00B420: 72 65 20 0D 8A 75 73 65 2C 20 61 6E 64 20 74 68 re ..use, and th
00B430: 65 20 64 65 63 6C 61 72 61 74 69 6F 6E 73 20 6D e declarations m
00B440: 75 73 74 20 61 70 70 65 61 72 20 62 65 66 6F 72 ust appear befor
00B450: 65 20 61 6E 79 20 63 6F 6D 6D 61 6E 64 73 2E 0D e any commands..
00B460: 0A 0D 0A 09 33 2E 20 54 68 65 20 75 73 65 20 6F ....3. The use o
00B470: 66 20 56 45 43 20 74 6F 20 64 65 66 69 6E 65 20 f VEC to define
00B480: 76 65 63 74 6F 72 73 20 61 73 20 64 65 73 63 72 vectors as descr
00B490: 69 62 65 64 20 61 62 6F 76 65 2E 0D 0A 0D 0A 09 ibed above......
00B4A0: 34 2E 20 72 65 61 64 73 2E 20 41 6E 6F 74 68 65 4. reads. Anothe
00B4B0: 72 20 6C 69 62 72 61 72 79 90 20 70 72 6F 63 65 r library. proce
00B4C0: 64 75 72 65 2C 90 20 74 6F 90 20 72 65 61 64 90 dure,. to. read.
00B4D0: 20 61 20 73 74 72 69 6E 67 20 66 72 6F 6D 20 74 a string from t
00B4E0: 68 65 20 0D 8A 6B 65 79 62 6F 61 72 64 20 69 6E he ..keyboard in
00B4F0: 74 6F 20 74 68 65 20 76 65 63 74 6F 72 20 67 69 to the vector gi
00B500: 76 65 6E 20 61 73 20 70 61 72 61 6D 65 74 65 72 ven as parameter
00B510: 2E 0D 0A 0D 0A 09 35 2E 20 66 69 6E 64 6F 75 74 ......5. findout
00B520: 70 75 74 2C 20 66 69 6E 64 69 6E 70 75 74 2C 20 put, findinput,
00B530: 72 65 61 64 63 68 2C 90 20 77 72 69 74 65 63 68 readch,. writech
00B540: 2E 90 20 4C 69 62 72 61 72 79 20 70 72 6F 63 65 .. Library proce
00B550: 64 75 72 65 73 20 74 6F 20 0D 8A 6F 70 65 6E 20 dures to ..open
00B560: 66 69 6C 65 73 2C 20 61 6E 64 20 72 65 61 64 20 files, and read
00B570: 61 6E 64 20 77 72 69 74 65 20 63 68 61 72 61 63 and write charac
00B580: 74 65 72 73 2E 0D 0A 0D 0A 09 36 2E 20 54 45 53 ters......6. TES
00B590: 54 20 2E 2E 2E 20 54 48 45 4E 20 2E 2E 2E 20 45 T ... THEN ... E
00B5A0: 4C 53 45 2E 20 41 20 63 6F 6E 64 69 74 69 6F 6E LSE. A condition
00B5B0: 61 6C 20 63 6F 6D 6D 61 6E 64 2E 20 53 65 63 74 al command. Sect
00B5C0: 69 6F 6E 20 62 72 61 63 6B 65 74 73 20 0D 8A 61 ion brackets ..a
00B5D0: 72 65 20 75 73 65 64 20 74 6F 20 65 6E 63 6C 6F re used to enclo
00B5E0: 73 65 20 74 68 65 20 62 6C 6F 63 6B 20 6F 66 20 se the block of
00B5F0: 63 6F 6D 6D 61 6E 64 73 20 74 68 61 74 20 77 69 commands that wi
00B600: 6C 6C 20 62 65 20 65 78 65 63 75 74 65 64 20 69 ll be executed i
00B610: 66 20 74 68 65 20 0D 8A 74 65 73 74 20 73 75 63 f the ..test suc
00B620: 63 65 65 64 73 20 6F 72 20 66 61 69 6C 73 2E 0D ceeds or fails..
00B630: 0A 0D 0A 09 37 2E 20 52 45 50 45 41 54 55 4E 54 ....7. REPEATUNT
00B640: 49 4C 2E 20 54 68 65 20 70 72 65 63 65 64 69 6E IL. The precedin
00B650: 67 20 62 6C 6F 63 6B 20 28 65 6E 63 6C 6F 73 65 g block (enclose
00B660: 64 20 69 6E 20 73 65 63 74 69 6F 6E 20 62 72 61 d in section bra
00B670: 63 6B 65 74 73 29 20 0D 8A 69 73 20 72 65 70 65 ckets) ..is repe
00B680: 61 74 65 64 20 75 6E 74 69 6C 20 74 68 65 20 63 ated until the c
00B690: 6F 6E 64 69 74 69 6F 6E 90 20 62 65 63 6F 6D 65 ondition. become
00B6A0: 73 90 20 74 72 75 65 90 20 28 69 6E 20 74 68 69 s. true. (in thi
00B6B0: 73 20 63 61 73 65 20 77 68 65 6E 20 74 68 65 20 s case when the
00B6C0: 0D 8A 65 6E 64 20 6F 66 20 74 68 65 20 66 69 6C ..end of the fil
00B6D0: 65 20 69 73 20 72 65 61 63 68 65 64 29 2E 0D 0A e is reached)...
00B6E0: 3E 70 61 0D 0A 3E 63 65 20 E2 37 2E 20 53 55 4D >pa..>ce .7. SUM
00B6F0: 4D 41 52 59 20 4F 46 20 54 48 45 20 42 43 50 4C MARY OF THE BCPL
00B700: 20 4C 41 4E 47 55 41 47 45 E2 0D 0A 0D 0A 0D 0A LANGUAGE.......
00B710: 09 54 68 65 20 42 43 50 4C 20 6C 61 6E 67 75 61 .The BCPL langua
00B720: 67 65 90 20 69 73 90 20 62 65 73 74 90 20 63 6F ge. is. best. co
00B730: 6E 73 69 64 65 72 65 64 90 20 69 6E 90 20 74 77 nsidered. in. tw
00B740: 6F 90 20 70 61 72 74 73 2E 20 46 69 72 73 74 20 o. parts. First
00B750: 74 68 65 20 0D 8A 73 74 61 6E 64 61 72 64 20 6C the ..standard l
00B760: 61 6E 67 75 61 67 65 20 63 6F 6D 70 72 69 73 69 anguage comprisi
00B770: 6E 67 20 74 68 65 20 63 6F 6D 6D 61 6E 64 73 90 ng the commands.
00B780: 20 61 6E 64 20 73 79 6E 74 61 78 20 66 6F 72 20 and syntax for
00B790: 65 78 70 72 65 73 73 69 6F 6E 73 2C 20 0D 8A 63 expressions, ..c
00B7A0: 6F 6E 73 74 61 6E 74 73 20 65 74 63 2E 20 53 65 onstants etc. Se
00B7B0: 63 6F 6E 64 90 20 74 68 65 90 20 69 6E 70 75 74 cond. the. input
00B7C0: 2F 6F 75 74 70 75 74 90 20 6C 69 62 72 61 72 79 /output. library
00B7D0: 90 20 72 6F 75 74 69 6E 65 73 90 20 77 68 69 63 . routines. whic
00B7E0: 68 20 61 72 65 20 0D 8A 6D 6F 73 74 6C 79 20 70 h are ..mostly p
00B7F0: 72 6F 63 65 64 75 72 65 73 20 77 72 69 74 74 65 rocedures writte
00B800: 6E 20 69 6E 20 42 43 50 4C 2E 20 54 68 65 72 65 n in BCPL. There
00B810: 90 20 61 72 65 20 61 20 66 61 69 72 6C 79 20 73 . are a fairly s
00B820: 74 61 6E 64 61 72 64 20 73 65 74 20 6F 66 20 0D tandard set of .
00B830: 8A 74 68 65 73 65 2C 20 62 75 74 20 74 68 69 73 .these, but this
00B840: 20 69 6D 70 6C 65 6D 65 6E 74 61 74 69 6F 6E 20 implementation
00B850: 69 6E 63 6C 75 64 65 73 20 61 64 64 69 74 69 6F includes additio
00B860: 6E 61 6C 20 49 2F 4F 20 72 6F 75 74 69 6E 65 73 nal I/O routines
00B870: 2E 0D 0A 0D 0A E2 45 6C 65 6D 65 6E 74 73 3A E2 ......Elements:.
00B880: 0D 0A 0D 0A 3E 2D 2D 2D 2D 2D 4C 2D 2D 2D 21 2D ....>-----L---!-
00B890: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
00B8A0: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
00B8B0: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
00B8C0: 2D 2D 2D 2D 2D 2D 21 2D 2D 52 0D 0A 28 69 29 09 ------!--R..(i).
00B8D0: 56 61 72 69 61 62 6C 65 20 6E 61 6D 65 2E 20 4D Variable name. M
00B8E0: 75 73 74 20 73 74 61 72 74 90 20 77 69 74 68 90 ust start. with.
00B8F0: 20 61 90 20 6C 65 74 74 65 72 90 20 61 6E 64 20 a. letter. and
00B900: 6D 61 79 20 61 6C 73 6F 20 63 6F 6E 74 61 69 6E may also contain
00B910: 20 0D 8A 09 64 69 67 69 74 73 20 61 6E 64 20 66 ...digits and f
00B920: 75 6C 6C 20 73 74 6F 70 73 2E 20 41 6C 6C 20 63 ull stops. All c
00B930: 68 61 72 61 63 74 65 72 73 20 73 69 67 6E 69 66 haracters signif
00B940: 69 63 61 6E 74 2E 0D 0A 28 69 69 29 09 4E 75 6D icant...(ii).Num
00B950: 62 65 72 2E 20 43 61 6E 20 62 65 20 64 65 63 69 ber. Can be deci
00B960: 6D 61 6C 2C 20 6F 63 74 61 6C 20 28 70 72 65 66 mal, octal (pref
00B970: 69 78 20 77 69 74 68 20 23 20 6F 72 20 23 4F 29 ix with # or #O)
00B980: 2C 20 68 65 78 61 64 65 63 69 6D 61 6C 20 0D 8A , hexadecimal ..
00B990: 09 28 70 72 65 66 69 78 20 77 69 74 68 20 23 58 .(prefix with #X
00B9A0: 29 2C 20 6F 72 20 62 69 6E 61 72 79 20 28 70 72 ), or binary (pr
00B9B0: 65 66 69 78 20 77 69 74 68 20 23 42 29 2E 0D 0A efix with #B)...
00B9C0: 28 69 69 69 29 20 53 74 72 69 6E 67 20 63 6F 6E (iii) String con
00B9D0: 73 74 61 6E 74 2E 20 45 6E 63 6C 6F 73 65 20 69 stant. Enclose i
00B9E0: 6E 20 64 6F 75 62 6C 65 20 71 75 6F 74 65 73 2E n double quotes.
00B9F0: 0D 0A 28 69 76 29 09 43 68 61 72 61 63 74 65 72 ..(iv).Character
00BA00: 20 63 6F 6E 73 74 61 6E 74 2E 20 45 6E 63 6C 6F constant. Enclo
00BA10: 73 65 20 69 6E 20 73 69 6E 67 6C 65 20 71 75 6F se in single quo
00BA20: 74 65 73 2E 0D 0A 09 0D 0A 09 43 65 72 74 61 69 tes.......Certai
00BA30: 6E 20 63 68 61 72 61 63 74 65 72 73 20 61 72 65 n characters are
00BA40: 20 72 65 70 72 65 73 65 6E 74 65 64 20 77 69 74 represented wit
00BA50: 68 69 6E 90 20 61 20 73 74 72 69 6E 67 20 6F 72 hin. a string or
00BA60: 20 63 68 61 72 61 63 74 65 72 20 0D 8A 09 63 6F character ...co
00BA70: 6E 73 74 61 6E 74 20 69 6E 20 61 20 73 70 65 63 nstant in a spec
00BA80: 69 61 6C 20 77 61 79 3A 0D 0A 0D 0A 09 2A 22 09 ial way:.....*".
00BA90: 20 74 68 65 20 22 20 73 79 6D 62 6F 6C 0D 0A 09 the " symbol...
00BAA0: 2A 27 09 20 74 68 65 20 27 20 73 79 6D 62 6F 6C *'. the ' symbol
00BAB0: 0D 0A 09 2A 2A 09 20 74 68 65 20 2A 20 73 79 6D ...**. the * sym
00BAC0: 62 6F 6C 0D 0A 09 2A 42 09 20 74 68 65 20 62 61 bol...*B. the ba
00BAD0: 63 6B 73 70 61 63 65 20 63 68 61 72 61 63 74 65 ckspace characte
00BAE0: 72 0D 0A 09 2A 43 09 20 61 20 63 61 72 72 69 61 r...*C. a carria
00BAF0: 67 65 20 72 65 74 75 72 6E 20 28 31 33 29 0D 0A ge return (13)..
00BB00: 09 2A 4E 09 20 74 68 65 20 6E 65 77 6C 69 6E 65 .*N. the newline
00BB10: 20 63 68 61 72 61 63 74 65 72 20 28 69 6E 20 66 character (in f
00BB20: 61 63 74 20 74 77 6F 20 63 68 61 72 61 63 74 65 act two characte
00BB30: 72 73 2C 20 31 33 20 61 6E 64 20 31 30 29 0D 0A rs, 13 and 10)..
00BB40: 09 2A 50 09 20 74 68 65 20 6E 65 77 20 70 61 67 .*P. the new pag
00BB50: 65 20 28 66 6F 72 6D 20 66 65 65 64 29 20 63 68 e (form feed) ch
00BB60: 61 72 61 63 74 65 72 20 28 31 32 29 0D 0A 09 2A aracter (12)...*
00BB70: 53 09 20 61 20 73 70 61 63 65 0D 0A 09 2A 54 09 S. a space...*T.
00BB80: 20 74 68 65 20 74 61 62 20 63 68 61 72 61 63 74 the tab charact
00BB90: 65 72 0D 0A 09 2A 58 6E 6E 20 61 20 68 65 78 61 er...*Xnn a hexa
00BBA0: 64 65 63 69 6D 61 6C 20 6E 75 6D 62 65 72 20 62 decimal number b
00BBB0: 65 74 77 65 65 6E 20 30 20 61 6E 64 20 46 46 2C etween 0 and FF,
00BBC0: 20 65 2E 67 2E 20 2A 58 46 31 0D 0A 0D 0A 28 76 e.g. *XF1....(v
00BBD0: 29 09 54 72 75 74 68 20 76 61 6C 75 65 73 2C 20 ).Truth values,
00BBE0: 54 52 55 45 20 61 6E 64 20 46 41 4C 53 45 2E 20 TRUE and FALSE.
00BBF0: 50 72 65 2D 64 65 66 69 6E 65 64 20 63 6F 6E 73 Pre-defined cons
00BC00: 74 61 6E 74 73 20 77 68 6F 73 65 20 76 61 6C 75 tants whose valu
00BC10: 65 73 20 0D 8A 09 61 72 65 20 74 68 65 20 62 69 es ...are the bi
00BC20: 74 20 70 61 74 74 65 72 6E 73 20 72 65 70 72 65 t patterns repre
00BC30: 73 65 6E 74 69 6E 67 20 74 72 75 65 20 61 6E 64 senting true and
00BC40: 20 66 61 6C 73 65 2E 0D 0A 0D 0A 0D 0A E2 4F 70 false........Op
00BC50: 65 72 61 74 6F 72 73 3A E2 0D 0A 0D 0A 41 64 64 erators:.....Add
00BC60: 72 65 73 73 69 6E 67 20 6F 70 65 72 61 74 6F 72 ressing operator
00BC70: 73 0D 0A 0D 0A 21 09 69 6E 64 69 72 65 63 74 69 s....!.indirecti
00BC80: 6F 6E 20 28 73 75 62 73 63 72 69 70 74 29 2C 20 on (subscript),
00BC90: 65 2E 67 2E 20 21 61 2C 20 61 21 62 0D 0A 40 09 e.g. !a, a!b..@.
00BCA0: 61 64 64 72 65 73 73 20 6F 66 2C 20 74 68 65 20 address of, the
00BCB0: 69 6E 76 65 72 73 65 20 6F 66 20 21 2C 20 73 6F inverse of !, so
00BCC0: 20 40 28 21 61 29 20 3D 20 61 0D 0A 0D 0A 41 72 @(!a) = a....Ar
00BCD0: 69 74 68 6D 65 74 69 63 20 6F 70 65 72 61 74 6F ithmetic operato
00BCE0: 72 73 0D 0A 0D 0A 2B 09 61 64 64 69 74 69 6F 6E rs....+.addition
00BCF0: 0D 0A 2D 2D 09 73 75 62 74 72 61 63 74 69 6F 6E ..--.subtraction
00BD00: 0D 0A 2A 09 6D 75 6C 74 69 70 6C 69 63 61 74 69 ..*.multiplicati
00BD10: 6F 6E 0D 0A 2F 09 69 6E 74 65 67 65 72 20 64 69 on../.integer di
00BD20: 76 69 73 69 6F 6E 0D 0A 52 45 4D 09 69 6E 74 65 vision..REM.inte
00BD30: 67 65 72 20 72 65 6D 61 69 6E 64 65 72 0D 0A 3E ger remainder..>
00BD40: 70 61 0D 0A 52 65 6C 61 74 69 6F 6E 61 6C 20 6F pa..Relational o
00BD50: 70 65 72 61 74 6F 72 73 0D 0A 0D 0A 3D 09 65 71 perators....=.eq
00BD60: 75 61 6C 20 74 6F 20 28 6F 72 20 45 51 29 0D 0A ual to (or EQ)..
00BD70: 5C 3D 09 6E 6F 74 20 65 71 75 61 6C 20 74 6F 20 \=.not equal to
00BD80: 28 6F 72 20 7E 3D 20 6F 72 20 4E 45 29 0D 8A 3C (or ~= or NE)..<
00BD90: 09 6C 65 73 73 20 74 68 61 6E 20 28 6F 72 20 4C .less than (or L
00BDA0: 54 29 0D 0A FA 3E 09 67 72 65 61 74 65 72 20 74 T)...>.greater t
00BDB0: 68 61 6E 20 28 6F 72 20 47 54 29 0D 0A 3C 3D 09 han (or GT)..<=.
00BDC0: 6C 65 73 73 20 74 68 61 6E 20 6F 72 20 65 71 75 less than or equ
00BDD0: 61 6C 20 74 6F 20 28 6F 72 20 4C 45 29 0D 0A FA al to (or LE)...
00BDE0: 3E 3D 09 67 72 65 61 74 65 72 20 74 68 61 6E 20 >=.greater than
00BDF0: 6F 72 20 65 71 75 61 6C 20 74 6F 20 28 6F 72 20 or equal to (or
00BE00: 47 45 29 0D 0A 0D 0A 0D 0A 4C 6F 67 69 63 61 6C GE)......Logical
00BE10: 20 6F 70 65 72 61 74 6F 72 73 0D 0A 0D 0A 7C 09 operators....|.
00BE20: 6F 72 20 28 6F 72 20 5C 2F 20 6F 72 20 4C 4F 47 or (or \/ or LOG
00BE30: 4F 52 29 0D 0A 26 09 61 6E 64 20 28 6F 72 20 2F OR)..&.and (or /
00BE40: 5C 20 6F 72 20 4C 4F 47 41 4E 44 29 0D 0A 5C 09 \ or LOGAND)..\.
00BE50: 6E 6F 74 20 28 6F 72 20 7E 20 6F 72 20 4E 4F 54 not (or ~ or NOT
00BE60: 29 0D 0A 45 51 56 09 62 69 74 77 69 73 65 20 65 )..EQV.bitwise e
00BE70: 71 75 69 76 61 6C 65 6E 63 65 0D 0A 4E 45 51 56 quivalence..NEQV
00BE80: 09 65 78 63 6C 75 73 69 76 65 20 6F 72 0D 0A 0D .exclusive or...
00BE90: 0A 0D 0A 53 68 69 66 74 20 6F 70 65 72 61 74 6F ...Shift operato
00BEA0: 72 73 0D 0A 0D 0A 3C 3C 09 6C 6F 67 69 63 61 6C rs....<<.logical
00BEB0: 20 73 68 69 66 74 20 6C 65 66 74 2C 20 65 2E 67 shift left, e.g
00BEC0: 2E 20 61 3C 3C 34 20 73 68 69 66 74 73 20 6C 65 . a<<4 shifts le
00BED0: 66 74 20 34 20 62 69 74 73 0D 0A FA 3E 3E 09 6C ft 4 bits...>>.l
00BEE0: 6F 67 69 63 61 6C 20 73 68 69 66 74 20 72 69 67 ogical shift rig
00BEF0: 68 74 0D 0A 0D 0A 0D 0A 4F 74 68 65 72 20 63 6F ht......Other co
00BF00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
00BF10: 0A 00 00 00 02 09 50 E5 0A 00 C1 02 00 00 00 02 ......P.........
00BF20: 0A 00 C2 02 00 00 00 02 0A 00 C3 02 00 00 00 02 ................
00BF30: 0A 00 C4 02 00 00 00 02 0A 00 C5 02 00 00 00 02 ................
00BF40: 0A 00 C6 02 00 00 00 02 0A 00 C7 02 00 00 00 02 ................
00BF50: 0A 00 C8 02 00 00 00 02 0A 00 C9 02 00 00 00 02 ................
00BF60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BF70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BF80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BF90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BFA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BFB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BFC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BFD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BFE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BFF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00C000: 6D 70 6F 6E 65 6E 74 73 20 6F 66 20 65 78 70 72 mponents of expr
00C010: 65 73 73 69 6F 6E 73 3A 0D 0A 0D 0A 28 69 29 09 essions:....(i).
00C020: 46 75 6E 63 74 69 6F 6E 20 63 61 6C 6C 20 28 73 Function call (s
00C030: 65 65 20 62 65 6C 6F 77 29 0D 0A 28 69 69 29 09 ee below)..(ii).
00C040: 43 6F 6E 64 69 74 69 6F 6E 61 6C 20 65 78 70 72 Conditional expr
00C050: 65 73 73 69 6F 6E 2C 20 65 2E 67 2E 20 20 61 20 ession, e.g. a
00C060: 2D 2D 3E 20 62 2C 20 63 0D 0A 09 54 68 69 73 20 --> b, c...This
00C070: 6D 65 61 6E 73 3A 20 65 76 61 6C 75 61 74 65 20 means: evaluate
00C080: 61 20 61 73 20 61 20 74 72 75 74 68 90 20 76 61 a as a truth. va
00C090: 6C 75 65 2E 20 49 66 20 74 72 75 65 20 74 68 65 lue. If true the
00C0A0: 6E 20 74 68 65 20 76 61 6C 75 65 20 0D 8A 09 6F n the value ...o
00C0B0: 66 20 74 68 65 20 65 78 70 72 65 73 73 69 6F 6E f the expression
00C0C0: 20 69 73 20 62 2C 20 6F 74 68 65 72 77 69 73 65 is b, otherwise
00C0D0: 20 63 2E 0D 0A 28 69 69 69 29 09 54 41 42 4C 45 c...(iii).TABLE
00C0E0: 2C 20 65 2E 67 2E 20 54 41 42 4C 45 20 61 2C 62 , e.g. TABLE a,b
00C0F0: 2C 63 2C 64 0D 0A 09 54 68 69 73 20 69 73 20 61 ,c,d...This is a
00C100: 6E 20 65 78 70 72 65 73 73 69 6F 6E 20 77 68 6F n expression who
00C110: 73 65 90 20 76 61 6C 75 65 90 20 69 73 90 20 74 se. value. is. t
00C120: 68 65 20 61 64 64 72 65 73 73 20 69 6E 20 6D 65 he address in me
00C130: 6D 6F 72 79 20 61 74 20 0D 8A 09 77 68 69 63 68 mory at ...which
00C140: 20 74 68 65 90 20 74 61 62 6C 65 90 20 6F 66 90 the. table. of.
00C150: 20 76 61 6C 75 65 73 90 20 69 73 90 20 73 74 6F values. is. sto
00C160: 72 65 64 2E 90 20 54 68 65 90 20 76 61 6C 75 65 red.. The. value
00C170: 73 90 20 6D 75 73 74 90 20 62 65 20 0D 8A 09 63 s. must. be ...c
00C180: 6F 6E 73 74 61 6E 74 73 2E 0D 0A 28 69 76 29 09 onstants...(iv).
00C190: 56 41 4C 4F 46 20 28 73 65 65 20 62 65 6C 6F 77 VALOF (see below
00C1A0: 29 0D 0A 0D 0A 0D 0A 4F 72 64 65 72 20 6F 66 20 )......Order of
00C1B0: 70 72 65 63 65 64 65 6E 63 65 20 6F 66 20 6F 70 precedence of op
00C1C0: 65 72 61 74 6F 72 73 20 28 68 69 67 68 65 73 74 erators (highest
00C1D0: 20 66 69 72 73 74 29 0D 0A 0D 0A 09 31 2E 20 42 first).....1. B
00C1E0: 72 61 63 6B 65 74 65 64 20 65 78 70 72 65 73 73 racketed express
00C1F0: 69 6F 6E 20 20 20 20 20 20 20 20 20 20 20 20 20 ion
00C200: 20 39 2E 20 3C 3C 20 3E 3E 20 20 20 20 20 20 20 9. << >>
00C210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C220: 0D 0A 09 32 2E 20 46 75 6E 63 74 69 6F 6E 20 63 ...2. Function c
00C230: 61 6C 6C 20 20 20 20 20 20 20 20 20 20 20 20 20 all
00C240: 20 20 20 20 20 20 20 31 30 2E 20 5C 20 20 20 20 10. \
00C250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C260: 20 20 20 20 20 20 20 0D 0A 09 33 2E 20 21 20 61 ...3. ! a
00C270: 73 20 73 75 62 73 63 72 69 70 74 20 20 20 20 20 s subscript
00C280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 31 11
00C290: 2E 20 26 20 20 20 20 20 20 20 20 20 20 20 20 20 . &
00C2A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 0A ..
00C2B0: 09 34 2E 20 40 2C 20 21 20 61 73 20 69 6E 64 69 .4. @, ! as indi
00C2C0: 72 65 63 74 69 6F 6E 20 20 20 20 20 20 20 20 20 rection
00C2D0: 20 20 20 20 20 31 32 2E 20 7C 20 20 20 20 20 20 12. |
00C2E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C2F0: 20 20 20 20 20 0D 0A 09 35 2E 20 25 20 20 20 20 ...5. %
00C300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C310: 20 20 20 20 20 20 20 20 20 20 20 20 31 33 2E 20 13.
00C320: 45 51 56 20 4E 45 51 56 20 20 20 20 20 20 20 20 EQV NEQV
00C330: 20 20 20 20 20 20 20 20 20 20 20 20 0D 0A 09 36 ...6
00C340: 2E 20 2A 20 2F 20 52 45 4D 20 41 42 53 20 20 20 . * / REM ABS
00C350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C360: 20 20 20 31 34 2E 20 2D 2D 3E 20 28 63 6F 6E 64 14. --> (cond
00C370: 69 74 69 6F 6E 61 6C 20 65 78 70 72 65 73 73 69 itional expressi
00C380: 6F 6E 29 0D 0A 09 37 2E 20 2B 20 2D 2D 20 20 20 on)...7. + --
00C390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C3A0: 20 20 20 20 20 20 20 20 20 20 31 35 2E 20 54 41 15. TA
00C3B0: 42 4C 45 20 20 20 20 20 20 20 20 20 20 20 20 20 BLE
00C3C0: 20 20 20 20 20 20 20 20 20 20 0D 0A 09 38 2E 20 ...8.
00C3D0: 3D 20 5C 3D 20 3C 20 3E 20 3C 3D 20 3E 3D 20 20 = \= < > <= >=
00C3E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C3F0: 20 31 36 2E 20 56 41 4C 4F 46 20 20 20 20 20 20 16. VALOF
00C400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C410: 20 0D 0A 3E 70 61 0D 0A 4E 6F 74 65 3A 20 50 43 ..>pa..Note: PC
00C420: 57 20 75 73 65 72 73 20 77 69 6C 6C 20 66 69 6E W users will fin
00C430: 64 20 74 77 6F 90 20 6F 66 90 20 74 68 65 90 20 d two. of. the.
00C440: 6F 70 65 72 61 74 6F 72 90 20 73 79 6D 62 6F 6C operator. symbol
00C450: 73 20 6E 6F 74 20 73 68 6F 77 6E 20 6F 6E 20 0D s not shown on .
00C460: 8A 09 74 68 65 69 72 90 20 6B 65 79 62 6F 61 72 ..their. keyboar
00C470: 64 73 2E 90 20 54 68 65 79 90 20 61 72 65 90 20 ds.. They. are.
00C480: 6F 62 74 61 69 6E 65 64 90 90 20 62 79 90 20 74 obtained.. by. t
00C490: 68 65 90 20 66 6F 6C 6C 6F 77 69 6E 67 90 20 6B he. following. k
00C4A0: 65 79 20 0D 8A 09 63 6F 6D 62 69 6E 61 74 69 6F ey ...combinatio
00C4B0: 6E 73 3A 0D 0A 09 5C 09 2D 2D 09 45 58 54 52 41 ns:...\.--.EXTRA
00C4C0: 20 6B 65 79 20 61 6E 64 20 74 68 65 20 6B 65 79 key and the key
00C4D0: 20 6D 61 72 6B 65 64 20 77 69 74 68 20 61 20 31 marked with a 1
00C4E0: 2F 32 20 73 79 6D 62 6F 6C 2E 0D 0A 09 7C 09 2D /2 symbol....|.-
00C4F0: 2D 09 45 58 54 52 41 20 6B 65 79 20 61 6E 64 20 -.EXTRA key and
00C500: 74 68 65 20 66 75 6C 6C 20 73 74 6F 70 20 6B 65 the full stop ke
00C510: 79 2E 0D 0A 0D 0A 0D 0A E2 53 65 63 74 69 6F 6E y........Section
00C520: 20 62 72 61 63 6B 65 74 73 20 61 6E 64 20 63 6F brackets and co
00C530: 6D 70 6F 75 6E 64 20 63 6F 6D 6D 61 6E 64 73 3A mpound commands:
00C540: E2 0D 0A 0D 0A 09 4D 61 6E 79 20 6F 66 20 74 68 ......Many of th
00C550: 65 20 63 6F 6D 6D 61 6E 64 73 20 64 65 73 63 72 e commands descr
00C560: 69 62 65 64 20 62 65 6C 6F 77 90 20 61 70 70 6C ibed below. appl
00C570: 79 20 74 6F 20 61 20 73 69 6E 67 6C 65 20 63 6F y to a single co
00C580: 6D 6D 61 6E 64 2E 20 0D 8A 09 46 6F 72 20 65 78 mmand. ...For ex
00C590: 61 6D 70 6C 65 20 52 45 50 45 41 54 90 20 77 69 ample REPEAT. wi
00C5A0: 6C 6C 90 20 72 65 70 65 61 74 90 20 61 90 20 63 ll. repeat. a. c
00C5B0: 6F 6D 6D 61 6E 64 90 20 75 6E 74 69 6C 20 74 68 ommand. until th
00C5C0: 65 20 72 65 71 75 69 72 65 64 20 0D 8A 09 63 6F e required ...co
00C5D0: 6E 64 69 74 69 6F 6E 20 69 73 20 74 72 75 65 2E ndition is true.
00C5E0: 20 53 65 63 74 69 6F 6E 90 20 62 72 61 63 6B 65 Section. bracke
00C5F0: 74 73 90 20 61 72 65 90 20 75 73 65 64 20 74 6F ts. are. used to
00C600: 20 67 72 6F 75 70 20 73 65 76 65 72 61 6C 20 0D group several .
00C610: 8A 09 63 6F 6D 6D 61 6E 64 73 20 61 73 20 61 90 ..commands as a.
00C620: 20 27 63 6F 6D 70 6F 75 6E 64 90 20 63 6F 6D 6D 'compound. comm
00C630: 61 6E 64 27 2C 90 20 77 68 69 63 68 90 20 69 73 and',. which. is
00C640: 90 20 63 6F 6E 73 69 64 65 72 65 64 90 20 61 73 . considered. as
00C650: 20 61 20 0D 8A 09 73 69 6E 67 6C 65 20 63 6F 6D a ...single com
00C660: 6D 61 6E 64 20 66 6F 72 20 74 68 65 73 65 20 70 mand for these p
00C670: 75 72 70 6F 73 65 73 2E 90 20 54 68 65 90 20 73 urposes.. The. s
00C680: 65 63 74 69 6F 6E 20 62 72 61 63 6B 65 74 73 20 ection brackets
00C690: 61 72 65 20 24 28 20 0D 8A 09 61 6E 64 20 24 29 are $( ...and $)
00C6A0: 2E 20 54 68 65 20 63 6F 6D 6D 61 6E 64 73 20 74 . The commands t
00C6B0: 6F 90 20 62 65 90 20 67 72 6F 75 70 65 64 90 20 o. be. grouped.
00C6C0: 73 68 6F 75 6C 64 20 62 65 20 65 6E 63 6C 6F 73 should be enclos
00C6D0: 65 64 20 62 65 74 77 65 65 6E 20 0D 8A 09 74 68 ed between ...th
00C6E0: 65 73 65 20 73 79 6D 62 6F 6C 73 2E 0D 0A 0D 0A ese symbols.....
00C6F0: 0D 0A E2 43 6F 6D 6D 61 6E 64 73 3A E2 0D 0A 0D ...Commands:....
00C700: 0A 41 73 73 69 67 6E 6D 65 6E 74 0D 0A 09 0D 0A .Assignment.....
00C710: 09 3A 3D 20 69 73 20 75 73 65 64 20 74 6F 20 61 .:= is used to a
00C720: 73 73 69 67 6E 90 20 61 90 20 76 61 6C 75 65 90 ssign. a. value.
00C730: 20 74 6F 90 20 61 90 20 76 61 72 69 61 62 6C 65 to. a. variable
00C740: 2E 20 54 68 65 72 65 20 61 72 65 20 74 68 72 65 . There are thre
00C750: 65 20 0D 8A 09 62 61 73 69 63 20 66 6F 72 6D 73 e ...basic forms
00C760: 20 6F 66 20 74 68 65 20 61 73 73 69 67 6E 6D 65 of the assignme
00C770: 6E 74 20 73 74 61 74 65 6D 65 6E 74 3A 0D 0A 09 nt statement:...
00C780: 0D 0A 09 76 61 72 69 61 62 6C 65 20 3A 3D 20 65 ...variable := e
00C790: 78 70 72 65 73 73 69 6F 6E 0D 0A 09 76 61 72 69 xpression...vari
00C7A0: 61 62 6C 65 21 73 75 62 73 63 72 69 70 74 20 3A able!subscript :
00C7B0: 3D 20 65 78 70 72 65 73 73 69 6F 6E 0D 0A 09 21 = expression...!
00C7C0: 76 61 72 69 61 62 6C 65 20 3A 3D 20 65 78 70 72 variable := expr
00C7D0: 65 73 73 69 6F 6E 0D 0A 0D 0A 0D 0A 43 6F 6E 64 ession......Cond
00C7E0: 69 74 69 6F 6E 61 6C 20 63 6F 6D 6D 61 6E 64 73 itional commands
00C7F0: 0D 0A 0D 0A 09 49 46 20 3C 65 78 70 72 65 73 73 .....IF <express
00C800: 69 6F 6E 3E 20 54 48 45 4E 20 3C 63 6F 6D 6D 61 ion> THEN <comma
00C810: 6E 64 3E 0D 0A 09 55 4E 4C 45 53 53 20 3C 65 78 nd>...UNLESS <ex
00C820: 70 72 65 73 73 69 6F 6E 3E 20 44 4F 20 3C 63 6F pression> DO <co
00C830: 6D 6D 61 6E 64 3E 0D 0A 09 54 45 53 54 20 3C 65 mmand>...TEST <e
00C840: 78 70 72 65 73 73 69 6F 6E 3E 20 54 48 45 4E 20 xpression> THEN
00C850: 3C 63 6F 6D 6D 61 6E 64 3E 20 45 4C 53 45 20 3C <command> ELSE <
00C860: 63 6F 6D 6D 61 6E 64 3E 0D 0A 0D 0A 09 4E 6F 74 command>.....Not
00C870: 65 20 74 68 61 74 20 49 46 20 64 6F 65 73 20 6E e that IF does n
00C880: 6F 74 20 74 61 6B 65 90 20 61 6E 90 20 45 4C 53 ot take. an. ELS
00C890: 45 90 20 63 6C 61 75 73 65 2C 20 54 45 53 54 20 E. clause, TEST
00C8A0: 6D 75 73 74 20 62 65 20 75 73 65 64 2E 20 0D 8A must be used. ..
00C8B0: 09 54 68 65 20 45 4C 53 45 20 63 6C 61 75 73 65 .The ELSE clause
00C8C0: 20 6D 75 73 74 20 62 65 20 70 72 65 73 65 6E 74 must be present
00C8D0: 20 69 6E 20 61 20 54 45 53 54 20 63 6F 6D 6D 61 in a TEST comma
00C8E0: 6E 64 2E 0D 0A 0D 0A 0D 0A 52 45 50 45 41 54 20 nd.......REPEAT
00C8F0: 61 6E 64 20 57 48 49 4C 45 0D 0A 0D 0A 09 3C 63 and WHILE.....<c
00C900: 6F 6D 6D 61 6E 64 3E 20 52 45 50 45 41 54 0D 0A ommand> REPEAT..
00C910: 09 3C 63 6F 6D 6D 61 6E 64 3E 20 52 45 50 45 41 .<command> REPEA
00C920: 54 55 4E 54 49 4C 20 3C 65 78 70 72 65 73 73 69 TUNTIL <expressi
00C930: 6F 6E 3E 0D 0A 09 3C 63 6F 6D 6D 61 6E 64 3E 20 on>...<command>
00C940: 52 45 50 45 41 54 57 48 49 4C 45 20 3C 65 78 70 REPEATWHILE <exp
00C950: 72 65 73 73 69 6F 6E 3E 0D 0A 09 57 48 49 4C 45 ression>...WHILE
00C960: 20 3C 65 78 70 72 65 73 73 69 6F 6E 3E 20 44 4F <expression> DO
00C970: 20 3C 63 6F 6D 6D 61 6E 64 3E 0D 0A 09 55 4E 54 <command>...UNT
00C980: 49 4C 20 3C 65 78 70 72 65 73 73 69 6F 6E 3E 20 IL <expression>
00C990: 44 4F 20 3C 63 6F 6D 6D 61 6E 64 3E 0D 0A 3E 70 DO <command>..>p
00C9A0: 61 0D 0A 46 4F 52 20 6C 6F 6F 70 0D 0A 0D 0A 09 a..FOR loop.....
00C9B0: 46 4F 52 20 69 20 3D 20 61 20 54 4F 20 62 20 44 FOR i = a TO b D
00C9C0: 4F 20 3C 63 6F 6D 6D 61 6E 64 3E 0D 0A 09 46 4F O <command>...FO
00C9D0: 52 20 69 20 3D 20 61 20 54 4F 20 62 20 42 59 20 R i = a TO b BY
00C9E0: 63 20 44 4F 20 3C 63 6F 6D 6D 61 6E 64 3E 0D 0A c DO <command>..
00C9F0: 0D 0A 09 49 6E 20 74 68 65 20 66 69 72 73 74 20 ...In the first
00CA00: 63 61 73 65 20 69 20 74 61 6B 65 73 90 20 76 61 case i takes. va
00CA10: 6C 75 65 73 20 73 74 61 72 74 69 6E 67 20 61 74 lues starting at
00CA20: 20 61 2C 20 69 6E 63 72 65 6D 65 6E 74 69 6E 67 a, incrementing
00CA30: 20 62 79 20 0D 8A 09 31 20 75 6E 74 69 6C 20 67 by ...1 until g
00CA40: 72 65 61 74 65 72 20 74 68 61 6E 20 62 2E 0D 0A reater than b...
00CA50: 09 49 6E 20 74 68 65 20 73 65 63 6F 6E 64 20 63 .In the second c
00CA60: 61 73 65 20 69 20 69 73 20 69 6E 63 72 65 6D 65 ase i is increme
00CA70: 6E 74 65 64 90 20 62 79 90 20 63 2E 20 63 20 6D nted. by. c. c m
00CA80: 75 73 74 20 62 65 20 61 20 63 6F 6E 73 74 61 6E ust be a constan
00CA90: 74 20 0D 8A 09 65 78 70 72 65 73 73 69 6F 6E 2E t ...expression.
00CAA0: 0D 0A 0D 0A 0D 0A 53 57 49 54 43 48 4F 4E 0D 0A ......SWITCHON..
00CAB0: 0D 0A 09 53 57 49 54 43 48 4F 4E 20 3C 65 78 70 ...SWITCHON <exp
00CAC0: 72 65 73 73 69 6F 6E 3E 20 49 4E 54 4F 20 3C 63 ression> INTO <c
00CAD0: 6F 6D 70 6F 75 6E 64 20 63 6F 6D 6D 61 6E 64 3E ompound command>
00CAE0: 0D 0A 0D 0A 09 54 68 65 20 63 6F 6D 70 6F 75 6E .....The compoun
00CAF0: 64 20 63 6F 6D 6D 61 6E 64 20 63 6F 6E 73 69 73 d command consis
00CB00: 74 73 90 20 6F 66 90 20 61 90 20 73 65 71 75 65 ts. of. a. seque
00CB10: 6E 63 65 90 20 6F 66 20 63 6F 6D 6D 61 6E 64 73 nce. of commands
00CB20: 20 77 69 74 68 20 0D 8A 09 63 61 73 65 20 6C 61 with ...case la
00CB30: 62 65 6C 73 20 61 74 74 61 63 68 65 64 20 74 6F bels attached to
00CB40: 20 63 6F 6D 6D 61 6E 64 73 2E 90 20 41 90 20 63 commands.. A. c
00CB50: 61 73 65 90 20 6C 61 62 65 6C 20 74 61 6B 65 73 ase. label takes
00CB60: 20 74 68 65 20 66 6F 72 6D 20 0D 8A 09 27 43 41 the form ...'CA
00CB70: 53 45 90 20 3C 63 6F 6E 73 74 61 6E 74 3E 3A 27 SE. <constant>:'
00CB80: 2C 90 20 61 6E 64 90 20 63 61 75 73 65 73 90 20 ,. and. causes.
00CB90: 65 78 65 63 75 74 69 6F 6E 90 20 74 6F 90 20 73 execution. to. s
00CBA0: 74 61 72 74 90 20 61 74 90 20 74 68 65 20 0D 8A tart. at. the ..
00CBB0: 09 66 6F 6C 6C 6F 77 69 6E 67 20 69 6E 73 74 72 .following instr
00CBC0: 75 63 74 69 6F 6E 20 69 66 20 3C 65 78 70 72 65 uction if <expre
00CBD0: 73 73 69 6F 6E 3E 90 20 68 61 73 20 74 68 65 20 ssion>. has the
00CBE0: 76 61 6C 75 65 20 3C 63 6F 6E 73 74 61 6E 74 3E value <constant>
00CBF0: 2E 20 0D 8A 09 45 78 65 63 75 74 69 6F 6E 20 77 . ...Execution w
00CC00: 69 6C 6C 20 63 6F 6E 74 69 6E 75 65 20 75 6E 74 ill continue unt
00CC10: 69 6C 20 61 6E 20 45 4E 44 43 41 53 45 90 20 63 il an ENDCASE. c
00CC20: 6F 6D 6D 61 6E 64 2C 20 6F 72 20 74 6F 20 74 68 ommand, or to th
00CC30: 65 20 65 6E 64 20 0D 8A 09 6F 66 20 74 68 65 20 e end ...of the
00CC40: 53 57 49 54 43 48 4F 4E 20 63 6F 6D 70 6F 75 6E SWITCHON compoun
00CC50: 64 20 63 6F 6D 6D 61 6E 64 2E 20 54 68 65 20 6C d command. The l
00CC60: 61 62 65 6C 20 27 44 45 46 41 55 4C 54 3A 27 20 abel 'DEFAULT:'
00CC70: 6D 61 72 6B 73 20 74 68 65 20 0D 8A 09 70 6C 61 marks the ...pla
00CC80: 63 65 20 77 68 65 72 65 20 65 78 65 63 75 74 69 ce where executi
00CC90: 6F 6E 90 20 69 73 90 20 74 6F 90 20 73 74 61 72 on. is. to. star
00CCA0: 74 90 20 69 66 90 20 3C 65 78 70 72 65 73 73 69 t. if. <expressi
00CCB0: 6F 6E 3E 90 20 64 6F 65 73 20 6E 6F 74 20 0D 8A on>. does not ..
00CCC0: 09 65 76 61 6C 75 61 74 65 20 74 6F 20 61 6E 79 .evaluate to any
00CCD0: 20 6F 66 20 74 68 65 90 20 63 6F 6E 73 74 61 6E of the. constan
00CCE0: 74 73 90 20 73 70 65 63 69 66 69 65 64 20 62 79 ts. specified by
00CCF0: 20 63 61 73 65 20 6C 61 62 65 6C 73 2E 20 46 6F case labels. Fo
00CD00: 72 20 0D 8A 09 61 6E 20 65 78 61 6D 70 6C 65 20 r ...an example
00CD10: 6F 66 20 74 68 65 20 75 73 65 90 20 6F 66 90 20 of the use. of.
00CD20: 53 57 49 54 43 48 4F 4E 90 20 73 65 65 20 74 68 SWITCHON. see th
00CD30: 65 20 27 77 72 69 74 65 66 27 20 72 6F 75 74 69 e 'writef' routi
00CD40: 6E 65 20 69 6E 20 0D 8A 09 43 4C 49 42 48 44 52 ne in ...CLIBHDR
00CD50: 20 6F 72 20 41 4C 49 42 48 44 52 2E 0D 0A 0D 0A or ALIBHDR.....
00CD60: E2 42 6C 6F 63 6B 73 20 61 6E 64 20 73 63 6F 70 .Blocks and scop
00CD70: 65 20 6F 66 20 69 64 65 6E 74 69 66 69 65 72 73 e of identifiers
00CD80: E2 0D 0A 0D 0A 09 41 20 42 43 50 4C 20 70 72 6F ......A BCPL pro
00CD90: 67 72 61 6D 90 20 69 73 90 20 6D 61 64 65 90 20 gram. is. made.
00CDA0: 75 70 90 20 6F 66 90 20 6F 6E 65 90 20 6F 72 90 up. of. one. or.
00CDB0: 20 6D 6F 72 65 90 20 62 6C 6F 63 6B 73 2E 20 41 more. blocks. A
00CDC0: 20 62 6C 6F 63 6B 20 0D 8A 09 63 6F 6E 73 69 73 block ...consis
00CDD0: 74 73 20 6F 66 20 61 20 73 65 71 75 65 6E 63 65 ts of a sequence
00CDE0: 20 6F 66 20 64 65 63 6C 61 72 61 74 69 6F 6E 73 of declarations
00CDF0: 20 28 73 65 65 20 62 65 6C 6F 77 29 20 66 6F 6C (see below) fol
00CE00: 6C 6F 77 65 64 20 62 79 20 61 20 0D 8A 09 73 65 lowed by a ...se
00CE10: 71 75 65 6E 63 65 20 6F 66 20 63 6F 6D 6D 61 6E quence of comman
00CE20: 64 73 2E 20 54 6F 20 62 65 20 70 72 65 63 69 73 ds. To be precis
00CE30: 65 90 20 61 90 20 42 43 50 4C 20 70 72 6F 67 72 e. a. BCPL progr
00CE40: 61 6D 20 69 73 20 61 20 73 69 6E 67 6C 65 20 0D am is a single .
00CE50: 8A 09 62 6C 6F 63 6B 2C 20 61 6E 64 20 61 6E 79 ..block, and any
00CE60: 20 62 6C 6F 63 6B 20 6D 61 79 20 63 6F 6E 74 61 block may conta
00CE70: 69 6E 20 6E 65 73 74 65 64 20 73 75 62 2D 62 6C in nested sub-bl
00CE80: 6F 63 6B 73 2E 0D 0A 0D 0A 09 54 68 65 20 73 63 ocks......The sc
00CE90: 6F 70 65 20 6F 66 20 61 6E 20 69 64 65 6E 74 69 ope of an identi
00CEA0: 66 69 65 72 20 28 76 61 72 69 61 62 6C 65 20 6F fier (variable o
00CEB0: 72 20 70 72 6F 63 65 64 75 72 65 29 20 64 65 66 r procedure) def
00CEC0: 69 6E 65 73 20 74 68 6F 73 65 20 0D 8A 09 70 61 ines those ...pa
00CED0: 72 74 73 20 6F 66 20 61 90 20 70 72 6F 67 72 61 rts of a. progra
00CEE0: 6D 90 20 77 68 65 72 65 90 20 74 68 61 74 90 20 m. where. that.
00CEF0: 69 64 65 6E 74 69 66 69 65 72 90 20 63 61 6E 90 identifier. can.
00CF00: 20 62 65 20 75 73 65 64 2E 20 45 61 63 68 20 0D be used. Each .
00CF10: 8A 09 69 64 65 6E 74 69 66 69 65 72 20 6D 75 73 ..identifier mus
00CF20: 74 20 62 65 20 64 65 63 6C 61 72 65 64 90 20 77 t be declared. w
00CF30: 69 74 68 90 20 61 90 20 64 65 63 6C 61 72 61 74 ith. a. declarat
00CF40: 69 6F 6E 2E 90 20 54 68 65 20 73 63 6F 70 65 20 ion.. The scope
00CF50: 6F 66 20 0D 8A 09 74 68 61 74 90 20 69 64 65 6E of ...that. iden
00CF60: 74 69 66 69 65 72 90 20 69 73 90 20 74 68 61 74 tifier. is. that
00CF70: 90 90 20 73 61 6D 65 90 90 20 64 65 63 6C 61 72 .. same.. declar
00CF80: 61 74 69 6F 6E 90 20 28 74 68 75 73 90 20 61 6C ation. (thus. al
00CF90: 6C 6F 77 69 6E 67 20 0D 8A 09 72 65 63 75 72 73 lowing ...recurs
00CFA0: 69 76 65 20 64 65 66 69 6E 69 74 69 6F 6E 73 29 ive definitions)
00CFB0: 2C 90 20 61 6E 64 90 20 61 6C 6C 90 20 73 75 62 ,. and. all. sub
00CFC0: 73 65 71 75 65 6E 74 90 20 64 65 63 6C 61 72 61 sequent. declara
00CFD0: 74 69 6F 6E 73 90 20 61 6E 64 20 0D 8A 09 63 6F tions. and ...co
00CFE0: 6D 6D 61 6E 64 73 20 77 69 74 68 69 6E 20 74 68 mmands within th
00CFF0: 61 74 20 62 6C 6F 63 6B 2E 20 54 68 75 73 20 69 at block. Thus i
00D000: 66 20 61 20 72 6F 75 74 69 6E 65 20 69 73 20 63 f a routine is c
00D010: 61 6C 6C 65 64 20 77 68 69 63 68 20 69 73 20 0D alled which is .
00D020: 8A 09 6F 75 74 73 69 64 65 20 74 68 65 20 62 6C ..outside the bl
00D030: 6F 63 6B 90 20 28 61 6E 64 90 20 72 6F 75 74 69 ock. (and. routi
00D040: 6E 65 73 90 20 61 72 65 90 20 75 73 75 61 6C 6C nes. are. usuall
00D050: 79 20 73 65 70 61 72 61 74 65 20 62 6C 6F 63 6B y separate block
00D060: 73 29 20 0D 8A 09 74 68 65 6E 20 76 61 72 69 61 s) ...then varia
00D070: 62 6C 65 73 20 64 65 66 69 6E 65 64 90 20 77 69 bles defined. wi
00D080: 74 68 69 6E 90 20 74 68 65 90 20 6F 72 69 67 69 thin. the. origi
00D090: 6E 61 6C 90 20 62 6C 6F 63 6B 90 20 6D 61 79 20 nal. block. may
00D0A0: 6E 6F 74 20 62 65 20 0D 8A 09 75 73 65 64 2E 0D not be ...used..
00D0B0: 0A 0D 0A 09 54 68 65 72 65 20 69 73 20 61 6E 20 ....There is an
00D0C0: 69 6D 70 6F 72 74 61 6E 74 90 20 72 65 73 74 72 important. restr
00D0D0: 69 63 74 69 6F 6E 2E 90 20 56 61 72 69 61 62 6C iction.. Variabl
00D0E0: 65 73 90 20 64 65 66 69 6E 65 64 20 77 69 74 68 es. defined with
00D0F0: 69 6E 20 61 20 0D 8A 09 62 6C 6F 63 6B 20 6D 61 in a ...block ma
00D100: 79 20 6E 6F 74 20 62 65 90 20 75 73 65 64 90 20 y not be. used.
00D110: 77 69 74 68 69 6E 90 20 61 90 20 70 72 6F 63 65 within. a. proce
00D120: 64 75 72 65 20 64 65 66 69 6E 65 64 20 77 69 74 dure defined wit
00D130: 68 69 6E 20 74 68 61 74 20 0D 8A 09 62 6C 6F 63 hin that ...bloc
00D140: 6B 20 28 65 76 65 6E 20 74 68 6F 75 67 68 20 74 k (even though t
00D150: 68 65 79 20 61 72 65 20 69 6E 20 73 63 6F 70 65 hey are in scope
00D160: 29 2E 90 20 41 6E 20 61 74 74 65 6D 70 74 20 74 ).. An attempt t
00D170: 6F 20 64 6F 20 73 6F 20 77 69 6C 6C 20 0D 8A 09 o do so will ...
00D180: 70 72 6F 64 75 63 65 20 74 68 65 20 65 72 72 6F produce the erro
00D190: 72 20 6D 65 73 73 61 67 65 20 27 64 79 6E 61 6D r message 'dynam
00D1A0: 69 63 20 66 72 65 65 20 76 61 72 69 61 62 6C 65 ic free variable
00D1B0: 20 75 73 65 64 27 2E 0D 0A 3E 70 61 0D 0A 1A 00 used'...>pa....
00D1C0: 3E 81 00 3A 04 70 72 6F 64 75 63 65 20 74 68 65 >..:.produce the
00D1D0: 20 65 72 72 6F 72 20 6D 65 73 73 61 67 65 20 27 error message '
00D1E0: 64 79 6E 61 6D 69 63 20 66 72 65 65 20 76 61 72 dynamic free var
00D1F0: 69 61 62 6C 65 20 75 73 65 64 27 2E 0D 0A 3E 70 iable used'...>p
00D200: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
00D210: 0B 00 00 00 02 09 50 E5 0B 00 C1 02 00 00 00 02 ......P.........
00D220: 0B 00 C2 02 00 00 00 02 0B 00 C3 02 00 00 00 02 ................
00D230: 0B 00 C4 02 00 00 00 02 0B 00 C5 02 00 00 00 02 ................
00D240: 0B 00 C6 02 00 00 00 02 0B 00 C7 02 00 00 00 02 ................
00D250: 0B 00 C8 02 00 00 00 02 0B 00 C9 02 00 00 00 02 ................
00D260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D270: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D280: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D2A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D2B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D2C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D2D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D2E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D2F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D3A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D3B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D3C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D3D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D3E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D3F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D4A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D4B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D4C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D4D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D4E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D4F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D500: 00 42 43 50 4C 4D 32 20 20 20 20 20 00 00 00 00 .BCPLM2 ....
00D510: 00 00 0A 00 00 C6 06 00 2F 83 00 00 00 00 00 00 ......../.......
00D520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D530: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D540: 2F 83 00 7A 04 68 69 73 20 77 69 6C 6C 20 73 75 /..z.his will su
00D550: 62 73 74 69 74 75 74 65 20 61 20 64 75 6D 6D 79 bstitute a dummy
00D560: 20 0D 8A 72 6F 75 74 69 6E 65 2E 0D 0A 0D 0A 3E ..routine.....>
00D570: 70 61 0D 0A 1A 00 00 00 00 00 00 00 00 00 00 00 pa..............
00D580: 3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D >---!-----!-----
00D590: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
00D5A0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
00D5B0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
00D5C0: 21 2D 2D 2D 2D 52 0D 0A 3E 70 6E 20 32 32 0D 0A !----R..>pn 22..
00D5D0: 3E 74 6D 20 33 0D 0A 3E 62 6D 20 31 31 0D 0A 3E >tm 3..>bm 11..>
00D5E0: 68 6D 20 30 0D 0A 3E 66 6D 20 32 0D 0A 3E 66 6F hm 0..>fm 2..>fo
00D5F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D610: 20 20 25 0D 0A 3E 2D 2D 2D 2D 2D 4C 2D 2D 2D 21 %..>-----L---!
00D620: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 -------!-------!
00D630: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 -------!-------!
00D640: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 -------!-------!
00D650: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 52 0D 0A E2 44 65 -------!--R...De
00D660: 63 6C 61 72 61 74 69 6F 6E 73 E2 0D 0A 0D 0A 54 clarations.....T
00D670: 68 65 20 4C 45 54 20 64 65 63 6C 61 72 61 74 69 he LET declarati
00D680: 6F 6E 0D 0A 0D 0A 09 41 6C 6C 20 76 61 72 69 61 on.....All varia
00D690: 62 6C 65 73 20 61 6E 64 20 72 6F 75 74 69 6E 65 bles and routine
00D6A0: 73 20 6D 75 73 74 90 20 62 65 90 20 64 65 63 6C s must. be. decl
00D6B0: 61 72 65 64 20 62 65 66 6F 72 65 20 74 68 65 79 ared before they
00D6C0: 20 63 61 6E 20 62 65 20 0D 8A 09 75 73 65 64 2E can be ...used.
00D6D0: 20 54 68 65 72 65 20 61 72 65 20 73 65 76 65 72 There are sever
00D6E0: 61 6C 20 66 6F 72 6D 73 20 6F 66 20 64 65 63 6C al forms of decl
00D6F0: 61 72 61 74 69 6F 6E 3A 0D 0A 0D 0A 09 4C 45 54 aration:.....LET
00D700: 20 76 61 72 69 61 62 6C 65 20 3D 20 3C 65 78 70 variable = <exp
00D710: 72 65 73 73 69 6F 6E 3E 0D 0A 0D 0A 09 54 68 69 ression>.....Thi
00D720: 73 20 64 65 66 69 6E 65 73 20 61 20 76 61 72 69 s defines a vari
00D730: 61 62 6C 65 20 61 6E 64 90 20 67 69 76 65 73 90 able and. gives.
00D740: 20 69 74 90 20 61 6E 90 20 69 6E 69 74 69 61 6C it. an. initial
00D750: 20 76 61 6C 75 65 2E 20 49 66 20 6E 6F 20 0D 8A value. If no ..
00D760: 09 69 6E 69 74 69 61 6C 20 76 61 6C 75 65 20 69 .initial value i
00D770: 73 90 20 72 65 6C 65 76 61 6E 74 90 20 27 3F 27 s. relevant. '?'
00D780: 90 20 6D 61 79 90 20 62 65 90 20 75 73 65 64 90 . may. be. used.
00D790: 20 69 6E 90 20 70 6C 61 63 65 20 6F 66 20 74 68 in. place of th
00D7A0: 65 20 0D 8A 09 65 78 70 72 65 73 73 69 6F 6E 2E e ...expression.
00D7B0: 0D 0A 0D 0A 09 4C 45 54 20 61 72 72 61 79 20 3D .....LET array =
00D7C0: 20 56 45 43 20 3C 63 6F 6E 73 74 61 6E 74 3E 0D VEC <constant>.
00D7D0: 0A 0D 0A 09 54 68 69 73 20 63 72 65 61 74 65 73 ....This creates
00D7E0: 20 61 20 76 65 63 74 6F 72 20 77 69 74 68 90 20 a vector with.
00D7F0: 74 68 65 90 20 76 61 72 69 61 62 6C 65 20 27 61 the. variable 'a
00D800: 72 72 61 79 27 20 63 6F 6E 74 61 69 6E 69 6E 67 rray' containing
00D810: 20 74 68 65 20 0D 8A 09 61 64 64 72 65 73 73 20 the ...address
00D820: 6F 66 20 74 68 65 20 76 65 63 74 6F 72 2E 0D 0A of the vector...
00D830: 0D 0A 0D 0A 50 72 6F 63 65 64 75 72 65 73 0D 0A ....Procedures..
00D840: 0D 0A 09 4C 45 54 20 70 72 6F 63 28 70 31 2C 20 ...LET proc(p1,
00D850: 70 32 2C 20 2E 2E 2E 29 20 3D 20 3C 65 78 70 72 p2, ...) = <expr
00D860: 65 73 73 69 6F 6E 3E 0D 0A 09 4C 45 54 20 70 72 ession>...LET pr
00D870: 6F 63 28 70 31 2C 20 70 32 2C 20 2E 2E 2E 29 20 oc(p1, p2, ...)
00D880: 42 45 20 3C 63 6F 6D 6D 61 6E 64 3E 0D 0A 0D 0A BE <command>....
00D890: 09 54 68 65 73 65 20 64 65 66 69 6E 65 20 61 20 .These define a
00D8A0: 70 72 6F 63 65 64 75 72 65 20 77 69 74 68 90 20 procedure with.
00D8B0: 70 61 72 61 6D 65 74 65 72 73 90 20 70 31 2C 20 parameters. p1,
00D8C0: 70 32 2C 2E 2E 2E 2E 20 54 68 65 20 66 69 72 73 p2,.... The firs
00D8D0: 74 20 0D 8A 09 66 6F 72 6D 20 70 72 6F 76 69 64 t ...form provid
00D8E0: 65 73 20 61 20 66 75 6E 63 74 69 6F 6E 2C 20 61 es a function, a
00D8F0: 73 20 61 20 76 61 6C 75 65 20 69 73 20 72 65 74 s a value is ret
00D900: 75 72 6E 65 64 2E 20 54 68 65 20 65 78 70 72 65 urned. The expre
00D910: 73 73 69 6F 6E 20 0D 8A 09 69 73 20 6F 66 74 65 ssion ...is ofte
00D920: 6E 20 61 20 56 41 4C 4F 46 20 63 6C 61 75 73 65 n a VALOF clause
00D930: 2E 20 54 68 69 73 20 74 61 6B 65 73 20 74 68 65 . This takes the
00D940: 20 66 6F 6C 6C 6F 77 69 6E 67 20 66 6F 72 6D 3A following form:
00D950: 0D 0A 0D 0A 09 56 41 4C 4F 46 20 3C 63 6F 6D 6D .....VALOF <comm
00D960: 61 6E 64 3E 0D 0A 0D 0A 09 54 68 65 20 63 6F 6D and>.....The com
00D970: 6D 61 6E 64 20 69 73 20 75 73 75 61 6C 6C 79 20 mand is usually
00D980: 61 20 63 6F 6D 70 6F 75 6E 64 90 20 63 6F 6D 6D a compound. comm
00D990: 61 6E 64 20 77 68 69 63 68 20 63 6F 6E 74 61 69 and which contai
00D9A0: 6E 73 20 6F 6E 65 20 6F 72 20 0D 8A 09 6D 6F 72 ns one or ...mor
00D9B0: 65 20 52 45 53 55 4C 54 49 53 20 63 6F 6D 6D 61 e RESULTIS comma
00D9C0: 6E 64 73 3A 0D 0A 0D 0A 09 52 45 53 55 4C 54 49 nds:.....RESULTI
00D9D0: 53 20 3C 65 78 70 72 65 73 73 69 6F 6E 3E 0D 0A S <expression>..
00D9E0: 0D 0A 09 57 68 65 6E 20 61 90 20 52 45 53 55 4C ...When a. RESUL
00D9F0: 54 49 53 90 20 63 6F 6D 6D 61 6E 64 90 20 69 73 TIS. command. is
00DA00: 90 20 65 78 65 63 75 74 65 64 90 20 74 68 65 90 . executed. the.
00DA10: 20 56 41 4C 4F 46 90 20 63 6F 6D 6D 61 6E 64 20 VALOF. command
00DA20: 68 61 73 20 0D 8A 09 66 69 6E 69 73 68 65 64 20 has ...finished
00DA30: 61 6E 64 20 74 68 65 20 76 61 6C 75 65 20 6F 66 and the value of
00DA40: 20 74 68 65 20 65 78 70 72 65 73 73 69 6F 6E 20 the expression
00DA50: 69 73 20 72 65 74 75 72 6E 65 64 2E 0D 0A 0D 0A is returned.....
00DA60: 09 54 68 65 20 73 65 63 6F 6E 64 20 66 6F 72 6D .The second form
00DA70: 20 6F 66 20 74 68 65 90 20 70 72 6F 63 65 64 75 of the. procedu
00DA80: 72 65 20 64 65 63 6C 61 72 61 74 69 6F 6E 20 64 re declaration d
00DA90: 65 66 69 6E 65 73 20 61 20 72 6F 75 74 69 6E 65 efines a routine
00DAA0: 2E 20 0D 8A 09 4E 6F 20 76 61 6C 75 65 20 69 73 . ...No value is
00DAB0: 20 72 65 74 75 72 6E 65 64 2E 0D 0A 0D 0A 09 45 returned......E
00DAC0: 69 74 68 65 72 20 66 6F 72 6D 20 6F 66 20 70 72 ither form of pr
00DAD0: 6F 63 65 64 75 72 65 20 69 73 20 69 6E 76 6F 6B ocedure is invok
00DAE0: 65 64 20 62 79 20 61 20 63 6F 6D 6D 61 6E 64 3A ed by a command:
00DAF0: 0D 0A 0D 0A 09 70 72 6F 63 28 61 2C 62 2C 2E 2E .....proc(a,b,..
00DB00: 2E 29 0D 0A 0D 0A 09 41 20 66 75 6E 63 74 69 6F .).....A functio
00DB10: 6E 20 63 61 6C 6C 20 63 61 6E 20 61 70 70 65 61 n call can appea
00DB20: 72 20 69 6E 20 61 6E 20 65 78 70 72 65 73 73 69 r in an expressi
00DB30: 6F 6E 2E 0D 0A 0D 0A 3E 70 61 0D 0A 4F 74 68 65 on.....>pa..Othe
00DB40: 72 20 64 65 63 6C 61 72 61 74 69 6F 6E 73 0D 0A r declarations..
00DB50: 09 0D 0A 09 47 4C 4F 42 41 4C 20 24 28 20 76 61 ....GLOBAL $( va
00DB60: 72 31 20 3A 20 63 31 20 3B 20 76 61 72 32 20 3A r1 : c1 ; var2 :
00DB70: 20 63 32 20 3B 20 2E 2E 2E 20 24 29 0D 0A 09 53 c2 ; ... $)...S
00DB80: 54 41 54 49 43 20 24 28 20 76 61 72 31 3D 76 61 TATIC $( var1=va
00DB90: 6C 31 20 3B 20 76 61 72 32 3D 76 61 6C 32 20 3B l1 ; var2=val2 ;
00DBA0: 20 2E 2E 2E 20 24 29 0D 0A 09 0D 0A 09 44 79 6E ... $)......Dyn
00DBB0: 61 6D 69 63 90 20 76 61 72 69 61 62 6C 65 73 90 amic. variables.
00DBC0: 20 28 74 68 6F 73 65 90 20 64 65 66 69 6E 65 64 (those. defined
00DBD0: 90 20 77 69 74 68 90 90 20 4C 45 54 29 90 20 6F . with.. LET). o
00DBE0: 6E 6C 79 90 20 68 61 76 65 90 20 61 6E 20 0D 8A nly. have. an ..
00DBF0: 09 61 6C 6C 6F 63 61 74 65 64 20 61 72 65 61 20 .allocated area
00DC00: 6F 66 20 6D 65 6D 6F 72 79 20 77 68 65 6E 90 20 of memory when.
00DC10: 74 68 65 79 90 20 61 72 65 20 77 69 74 68 69 6E they. are within
00DC20: 20 73 63 6F 70 65 2E 20 56 61 72 69 61 62 6C 65 scope. Variable
00DC30: 73 20 0D 8A 09 64 65 66 69 6E 65 64 20 77 69 74 s ...defined wit
00DC40: 68 20 47 4C 4F 42 41 4C 20 6F 72 20 53 54 41 54 h GLOBAL or STAT
00DC50: 49 43 90 20 68 61 76 65 20 61 20 70 65 72 6D 61 IC. have a perma
00DC60: 6E 65 6E 74 6C 79 20 61 6C 6C 6F 63 61 74 65 64 nently allocated
00DC70: 20 77 6F 72 64 20 0D 8A 09 6F 66 20 6D 65 6D 6F word ...of memo
00DC80: 72 79 2E 20 54 68 65 20 53 54 41 54 49 43 20 64 ry. The STATIC d
00DC90: 65 63 6C 61 72 61 74 69 6F 6E 20 61 6C 6C 6F 77 eclaration allow
00DCA0: 73 90 20 61 6E 20 69 6E 69 74 69 61 6C 20 76 61 s. an initial va
00DCB0: 6C 75 65 20 74 6F 20 62 65 20 0D 8A 09 73 65 74 lue to be ...set
00DCC0: 2E 20 54 68 65 20 47 4C 4F 42 41 4C 20 64 65 63 . The GLOBAL dec
00DCD0: 6C 61 72 61 74 69 6F 6E 20 69 73 90 20 72 65 64 laration is. red
00DCE0: 75 6E 64 61 6E 74 20 69 6E 20 74 68 69 73 20 69 undant in this i
00DCF0: 6D 70 6C 65 6D 65 6E 74 61 74 69 6F 6E 20 0D 8A mplementation ..
00DD00: 09 61 73 20 69 74 20 69 73 20 75 73 65 64 90 20 .as it is used.
00DD10: 77 68 65 6E 90 20 73 65 70 61 72 61 74 65 90 20 when. separate.
00DD20: 63 6F 6D 70 69 6C 61 74 69 6F 6E 90 20 69 73 90 compilation. is.
00DD30: 20 61 76 61 69 6C 61 62 6C 65 2E 20 49 74 20 69 available. It i
00DD40: 73 20 0D 8A 09 69 6E 63 6C 75 64 65 64 20 66 6F s ...included fo
00DD50: 72 20 63 6F 6D 70 61 74 69 62 69 6C 69 74 79 20 r compatibility
00DD60: 77 69 74 68 20 6F 74 68 65 72 20 42 43 50 4C 20 with other BCPL
00DD70: 63 6F 6D 70 69 6C 65 72 73 2E 0D 0A 0D 0A 09 41 compilers......A
00DD80: 20 67 6C 6F 62 61 6C 20 76 65 63 74 6F 72 20 63 global vector c
00DD90: 61 6E 20 62 65 20 64 65 66 69 6E 65 64 20 61 73 an be defined as
00DDA0: 20 66 6F 6C 6C 6F 77 73 2E 20 44 65 63 6C 61 72 follows. Declar
00DDB0: 65 20 74 68 65 20 6E 61 6D 65 20 6F 66 20 74 68 e the name of th
00DDC0: 65 20 0D 8A 09 76 65 63 74 6F 72 20 61 73 20 61 e ...vector as a
00DDD0: 20 73 74 61 74 69 63 90 20 76 61 72 69 61 62 6C static. variabl
00DDE0: 65 2C 90 20 74 68 65 6E 90 20 64 65 63 6C 61 72 e,. then. declar
00DDF0: 65 90 20 61 90 20 64 75 6D 6D 79 20 76 65 63 74 e. a. dummy vect
00DE00: 6F 72 20 69 6E 20 0D 8A 09 27 73 74 61 72 74 27 or in ...'start'
00DE10: 20 61 6E 64 20 61 73 73 69 67 6E 20 74 68 69 73 and assign this
00DE20: 90 20 74 6F 90 20 74 68 65 90 20 73 74 61 74 69 . to. the. stati
00DE30: 63 90 20 76 61 72 69 61 62 6C 65 2E 20 54 68 69 c. variable. Thi
00DE40: 73 20 65 6E 73 75 72 65 73 20 0D 8A 09 74 68 61 s ensures ...tha
00DE50: 74 20 74 68 65 20 76 65 63 74 6F 72 20 69 73 20 t the vector is
00DE60: 69 6E 20 73 63 6F 70 65 20 74 68 72 6F 75 67 68 in scope through
00DE70: 6F 75 74 20 74 68 65 20 70 72 6F 67 72 61 6D 2E out the program.
00DE80: 0D 0A 0D 0A 09 45 78 61 6D 70 6C 65 3A 0D 0A 09 .....Example:...
00DE90: 09 09 53 54 41 54 49 43 20 24 28 20 65 72 72 6C ..STATIC $( errl
00DEA0: 65 76 3D 30 20 24 29 0D 0A 09 09 09 4C 45 54 20 ev=0 $).....LET
00DEB0: 73 74 61 72 74 28 29 20 42 45 0D 0A 09 09 09 24 start() BE.....$
00DEC0: 28 0D 0A 09 09 09 20 20 4C 45 54 20 65 72 72 76 (..... LET errv
00DED0: 65 63 3D 56 45 43 20 33 0D 0A 09 09 09 20 20 65 ec=VEC 3..... e
00DEE0: 72 72 6C 65 76 20 3A 3D 20 65 72 72 76 65 63 0D rrlev := errvec.
00DEF0: 0A 09 09 09 20 20 2E 2E 2E 0D 0A 0D 0A 09 4D 41 .... ........MA
00DF00: 4E 49 46 45 53 54 20 24 28 20 6E 61 6D 65 31 3D NIFEST $( name1=
00DF10: 76 61 6C 31 20 3B 20 6E 61 6D 65 32 3D 76 61 6C val1 ; name2=val
00DF20: 32 20 3B 20 2E 2E 2E 20 24 29 0D 0A 0D 0A 09 54 2 ; ... $).....T
00DF30: 68 65 20 4D 41 4E 49 46 45 53 54 20 64 65 63 6C he MANIFEST decl
00DF40: 61 72 61 74 69 6F 6E 20 61 74 74 61 63 68 65 73 aration attaches
00DF50: 20 61 90 20 6E 61 6D 65 90 20 74 6F 90 20 61 20 a. name. to. a
00DF60: 63 6F 6E 73 74 61 6E 74 2E 20 49 74 20 69 73 20 constant. It is
00DF70: 0D 8A 09 6E 6F 74 20 61 20 76 61 72 69 61 62 6C ...not a variabl
00DF80: 65 90 20 61 6E 64 90 20 73 68 6F 75 6C 64 90 20 e. and. should.
00DF90: 62 65 90 20 75 73 65 64 90 20 6C 69 62 65 72 61 be. used. libera
00DFA0: 6C 6C 79 90 20 77 69 74 68 69 6E 90 20 61 20 42 lly. within. a B
00DFB0: 43 50 4C 20 0D 8A 09 70 72 6F 67 72 61 6D 20 74 CPL ...program t
00DFC0: 6F 20 61 69 64 20 72 65 61 64 61 62 69 6C 69 74 o aid readabilit
00DFD0: 79 2C 20 61 6E 64 90 20 74 6F 90 20 65 6E 61 62 y, and. to. enab
00DFE0: 6C 65 90 20 63 6F 6E 73 74 61 6E 74 73 20 75 73 le. constants us
00DFF0: 65 64 20 62 79 20 61 20 0D 8A 09 70 72 6F 67 72 ed by a ...progr
00E000: 61 6D 20 74 6F 20 62 65 20 65 61 73 69 6C 79 20 am to be easily
00E010: 63 68 61 6E 67 65 64 20 69 66 20 6E 65 63 65 73 changed if neces
00E020: 73 61 72 79 2E 0D 0A 0D 0A 0D 0A 53 69 6D 75 6C sary.......Simul
00E030: 74 61 6E 65 6F 75 73 20 64 65 63 6C 61 72 61 74 taneous declarat
00E040: 69 6F 6E 73 0D 0A 0D 0A 09 41 90 20 4C 45 54 90 ions.....A. LET.
00E050: 20 64 65 63 6C 61 72 61 74 69 6F 6E 90 20 6D 61 declaration. ma
00E060: 79 90 20 62 65 90 20 66 6F 6C 6C 6F 77 65 64 90 y. be. followed.
00E070: 20 62 79 90 20 61 6E 79 90 20 6E 75 6D 62 65 72 by. any. number
00E080: 90 20 6F 66 90 20 41 4E 44 20 0D 8A 09 64 65 63 . of. AND ...dec
00E090: 6C 61 72 61 74 69 6F 6E 73 2E 20 41 6C 6C 20 74 larations. All t
00E0A0: 68 65 73 65 20 64 65 63 6C 61 72 61 74 69 6F 6E hese declaration
00E0B0: 73 20 61 72 65 90 20 63 6F 6E 73 69 64 65 72 65 s are. considere
00E0C0: 64 20 61 73 20 61 20 73 69 6E 67 6C 65 20 0D 8A d as a single ..
00E0D0: 09 64 65 63 6C 61 72 61 74 69 6F 6E 20 66 6F 72 .declaration for
00E0E0: 90 20 74 68 65 90 20 70 75 72 70 6F 73 65 73 90 . the. purposes.
00E0F0: 20 6F 66 90 20 73 63 6F 70 65 90 20 6F 66 90 20 of. scope. of.
00E100: 69 64 65 6E 74 69 66 69 65 72 73 2E 20 54 68 69 identifiers. Thi
00E110: 73 20 0D 8A 09 61 6C 6C 6F 77 73 20 6D 75 74 75 s ...allows mutu
00E120: 61 6C 6C 79 20 72 65 63 75 72 73 69 76 65 20 70 ally recursive p
00E130: 72 6F 63 65 64 75 72 65 73 3A 0D 0A 0D 0A 09 4C rocedures:.....L
00E140: 45 54 20 70 72 6F 63 31 28 2E 2E 2E 29 20 42 45 ET proc1(...) BE
00E150: 20 0D 0A 09 24 28 0D 0A 09 2E 2E 2E 20 70 72 6F ...$(...... pro
00E160: 63 32 28 2E 2E 2E 29 20 2E 2E 2E 0D 0A 09 24 29 c2(...) ......$)
00E170: 0D 0A 0D 0A 09 41 4E 44 20 70 72 6F 63 32 28 2E .....AND proc2(.
00E180: 2E 2E 29 20 42 45 0D 0A 09 24 28 20 0D 0A 09 2E ..) BE...$( ....
00E190: 2E 2E 20 70 72 6F 63 31 28 2E 2E 2E 29 20 2E 2E .. proc1(...) ..
00E1A0: 2E 0D 0A 09 24 29 0D 0A 3E 70 61 0D 0A E2 53 74 ....$)..>pa...St
00E1B0: 72 69 6E 67 73 E2 0D 0A 0D 0A 09 53 74 72 69 6E rings......Strin
00E1C0: 67 73 20 61 72 65 20 73 74 6F 72 65 64 20 61 73 gs are stored as
00E1D0: 20 66 6F 6C 6C 6F 77 73 3A 0D 0A 0D 0A 09 4F 6E follows:.....On
00E1E0: 65 20 62 79 74 65 20 62 65 69 6E 67 20 74 68 65 e byte being the
00E1F0: 20 6C 65 6E 67 74 68 20 6F 66 20 74 68 65 20 73 length of the s
00E200: 74 72 69 6E 67 0D 0A 09 54 68 65 20 73 74 72 69 tring...The stri
00E210: 6E 67 2C 20 6F 6E 65 20 63 68 61 72 61 63 74 65 ng, one characte
00E220: 72 20 70 65 72 20 62 79 74 65 0D 0A 0D 0A 09 53 r per byte.....S
00E230: 69 6E 63 65 20 42 43 50 4C 20 77 6F 72 6B 73 20 ince BCPL works
00E240: 77 69 74 68 20 31 36 20 62 69 74 20 77 6F 72 64 with 16 bit word
00E250: 73 90 20 61 20 73 70 65 63 69 61 6C 20 6D 65 61 s. a special mea
00E260: 6E 73 20 69 73 20 6E 65 65 64 65 64 20 74 6F 20 ns is needed to
00E270: 0D 8A 09 61 63 63 65 73 73 20 74 68 65 90 20 69 ...access the. i
00E280: 6E 64 69 76 69 64 75 61 6C 90 20 63 68 61 72 61 ndividual. chara
00E290: 63 74 65 72 73 90 20 6F 66 90 20 61 90 20 73 74 cters. of. a. st
00E2A0: 72 69 6E 67 2E 90 20 54 68 69 73 90 20 69 73 20 ring.. This. is
00E2B0: 74 68 65 20 0D 8A 09 69 6E 66 69 78 65 64 20 62 the ...infixed b
00E2C0: 79 74 65 20 6F 70 65 72 61 74 6F 72 20 27 25 27 yte operator '%'
00E2D0: 2E 90 20 54 6F 90 20 61 63 63 65 73 73 90 20 74 .. To. access. t
00E2E0: 68 65 90 20 6E 74 68 90 20 63 68 61 72 61 63 74 he. nth. charact
00E2F0: 65 72 20 6F 66 20 61 20 0D 8A 09 73 74 72 69 6E er of a ...strin
00E300: 67 20 75 73 65 20 3A 20 20 20 73 74 72 69 6E 67 g use : string
00E310: 25 6E 0D 0A 09 54 6F 20 61 63 63 65 73 73 20 74 %n...To access t
00E320: 68 65 20 6C 65 6E 67 74 68 20 6F 66 20 61 20 73 he length of a s
00E330: 74 72 69 6E 67 20 75 73 65 20 3A 20 73 74 72 69 tring use : stri
00E340: 6E 67 25 30 0D 0A 09 54 68 65 73 65 20 63 61 6E ng%0...These can
00E350: 90 20 62 65 90 20 72 65 61 64 90 20 61 6E 64 90 . be. read. and.
00E360: 20 77 72 69 74 74 65 6E 90 20 74 6F 2C 90 20 61 written. to,. a
00E370: 6C 6C 6F 77 69 6E 67 90 20 73 74 72 69 6E 67 73 llowing. strings
00E380: 90 20 74 6F 20 62 65 20 0D 8A 09 6D 61 6E 69 70 . to be ...manip
00E390: 75 6C 61 74 65 64 20 69 6E 20 61 6E 79 20 64 65 ulated in any de
00E3A0: 73 69 72 65 64 20 6D 61 6E 6E 65 72 2E 0D 0A 0D sired manner....
00E3B0: 0A 0D 0A E2 54 72 61 6E 73 66 65 72 20 6F 66 20 ....Transfer of
00E3C0: 63 6F 6E 74 72 6F 6C E2 0D 0A 0D 0A 09 46 49 4E control......FIN
00E3D0: 49 53 48 0D 0A 0D 0A 09 54 68 69 73 20 63 61 75 ISH.....This cau
00E3E0: 73 65 73 20 65 78 65 63 75 74 69 6F 6E 20 6F 66 ses execution of
00E3F0: 20 74 68 65 20 70 72 6F 67 72 61 6D 20 74 6F 20 the program to
00E400: 73 74 6F 70 2E 0D 0A 0D 0A 09 52 45 54 55 52 4E stop......RETURN
00E410: 0D 0A 0D 0A 09 43 6F 6E 74 72 6F 6C 20 72 65 74 .....Control ret
00E420: 75 72 6E 73 20 74 6F 20 74 68 65 20 63 61 6C 6C urns to the call
00E430: 69 6E 67 20 72 6F 75 74 69 6E 65 2E 0D 0A 0D 0A ing routine.....
00E440: 09 42 52 45 41 4B 0D 0A 0D 0A 09 55 73 65 64 90 .BREAK.....Used.
00E450: 20 77 69 74 68 69 6E 90 20 61 90 20 72 65 70 65 within. a. repe
00E460: 74 69 74 69 76 65 90 90 20 63 6F 6D 6D 61 6E 64 titive.. command
00E470: 90 90 20 28 55 4E 54 49 4C 2C 90 20 57 48 49 4C .. (UNTIL,. WHIL
00E480: 45 2C 90 20 52 45 50 45 41 54 2C 20 0D 8A 09 52 E,. REPEAT, ...R
00E490: 45 50 45 41 54 55 4E 54 49 4C 2C 20 52 45 50 45 EPEATUNTIL, REPE
00E4A0: 41 54 57 48 49 4C 45 2C 20 6F 72 20 46 4F 52 29 ATWHILE, or FOR)
00E4B0: 20 69 74 90 20 63 61 75 73 65 73 20 65 78 65 63 it. causes exec
00E4C0: 75 74 69 6F 6E 20 74 6F 20 72 65 73 75 6D 65 20 ution to resume
00E4D0: 0D 8A 09 61 74 20 74 68 65 20 66 69 72 73 74 20 ...at the first
00E4E0: 63 6F 6D 6D 61 6E 64 20 61 66 74 65 72 20 74 68 command after th
00E4F0: 65 20 72 65 70 65 74 69 74 69 76 65 20 63 6F 6D e repetitive com
00E500: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
00E510: 0C 00 00 00 02 09 50 E5 0C 00 C1 02 00 00 00 02 ......P.........
00E520: 0C 00 C2 02 00 00 00 02 0C 00 C3 02 00 00 00 02 ................
00E530: 0C 00 C4 02 00 00 00 02 0C 00 C5 02 00 00 00 02 ................
00E540: 0C 00 C6 02 00 00 00 02 0C 00 C7 02 00 00 00 02 ................
00E550: 0C 00 C8 02 00 00 00 02 0C 00 C9 02 00 00 00 02 ................
00E560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E590: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E5A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E5B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E5C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E5D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E5E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E5F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E600: 6D 61 6E 64 2E 0D 0A 0D 0A 09 4C 4F 4F 50 0D 0A mand......LOOP..
00E610: 0D 0A 09 43 6F 6E 74 72 6F 6C 90 20 70 61 73 73 ...Control. pass
00E620: 65 73 90 20 74 6F 90 20 74 68 65 90 20 70 6F 69 es. to. the. poi
00E630: 6E 74 90 20 77 68 65 72 65 90 20 74 68 65 90 20 nt. where. the.
00E640: 72 65 70 65 74 69 74 69 76 65 90 20 63 6F 6D 6D repetitive. comm
00E650: 61 6E 64 20 0D 8A 09 63 6F 6E 64 69 74 69 6F 6E and ...condition
00E660: 20 69 73 20 74 65 73 74 65 64 2E 20 46 6F 72 90 is tested. For.
00E670: 20 61 90 20 46 4F 52 90 20 63 6F 6D 6D 61 6E 64 a. FOR. command
00E680: 90 20 63 6F 6E 74 72 6F 6C 20 70 61 73 73 65 73 . control passes
00E690: 20 74 6F 20 74 68 65 20 0D 8A 09 70 6F 69 6E 74 to the ...point
00E6A0: 20 77 68 65 72 65 20 74 68 65 20 63 6F 6E 74 72 where the contr
00E6B0: 6F 6C 20 76 61 72 69 61 62 6C 65 20 69 73 20 69 ol variable is i
00E6C0: 6E 63 72 65 6D 65 6E 74 65 64 2E 0D 0A 0D 0A 09 ncremented......
00E6D0: 45 4E 44 43 41 53 45 0D 0A 0D 0A 09 43 6F 6E 74 ENDCASE.....Cont
00E6E0: 72 6F 6C 20 70 61 73 73 65 73 20 74 6F 20 74 68 rol passes to th
00E6F0: 65 90 20 63 6F 6D 6D 61 6E 64 90 20 61 66 74 65 e. command. afte
00E700: 72 90 20 74 68 65 90 20 65 6E 64 90 20 6F 66 20 r. the. end. of
00E710: 74 68 65 20 53 57 49 54 43 48 49 4E 20 0D 8A 09 the SWITCHIN ...
00E720: 63 6F 6D 70 6F 75 6E 64 20 63 6F 6D 6D 61 6E 64 compound command
00E730: 2E 0D 0A 0D 0A 09 47 4F 54 4F 20 3C 65 78 70 72 ......GOTO <expr
00E740: 65 73 73 69 6F 6E 3E 0D 0A 0D 0A 09 52 61 72 65 ession>.....Rare
00E750: 6C 79 90 20 72 65 71 75 69 72 65 64 90 20 69 6E ly. required. in
00E760: 90 20 42 43 50 4C 2C 90 20 74 68 65 90 90 20 47 . BCPL,. the.. G
00E770: 4F 54 4F 90 20 63 6F 6D 6D 61 6E 64 90 20 65 76 OTO. command. ev
00E780: 61 6C 75 61 74 65 73 90 20 74 68 65 20 0D 8A 09 aluates. the ...
00E790: 65 78 70 72 65 73 73 69 6F 6E 20 61 6E 64 20 6A expression and j
00E7A0: 75 6D 70 73 20 74 6F 20 74 68 65 90 20 61 64 64 umps to the. add
00E7B0: 72 65 73 73 20 6F 62 74 61 69 6E 65 64 2E 20 54 ress obtained. T
00E7C0: 68 65 20 65 78 70 72 65 73 73 69 6F 6E 20 69 73 he expression is
00E7D0: 20 0D 8A 09 75 73 75 61 6C 6C 79 20 61 20 6C 61 ...usually a la
00E7E0: 62 65 6C 20 77 68 69 63 68 20 69 73 20 64 65 66 bel which is def
00E7F0: 69 6E 65 64 20 62 79 20 62 65 69 6E 67 20 61 74 ined by being at
00E800: 74 61 63 68 65 64 20 74 6F 20 61 20 63 6F 6D 6D tached to a comm
00E810: 61 6E 64 2C 20 0D 8A 0D 0A 09 65 2E 67 2E 09 6C and, .....e.g..l
00E820: 61 62 65 6C 6E 61 6D 65 3A 20 3C 63 6F 6D 6D 61 abelname: <comma
00E830: 6E 64 3E 0D 0A 3E 70 61 09 0D 0A E2 43 6F 6D 6D nd>..>pa....Comm
00E840: 65 6E 74 73 20 61 6E 64 20 6C 61 79 6F 75 74 20 ents and layout
00E850: 6F 66 20 70 72 6F 67 72 61 6D 73 E2 0D 0A 0D 0A of programs.....
00E860: 09 54 68 65 72 65 20 61 72 65 20 74 77 6F 20 77 .There are two w
00E870: 61 79 73 20 6F 66 20 70 75 74 74 69 6E 67 20 63 ays of putting c
00E880: 6F 6D 6D 65 6E 74 73 20 77 69 74 68 69 6E 20 42 omments within B
00E890: 43 50 4C 20 70 72 6F 67 72 61 6D 73 2E 0D 0A 0D CPL programs....
00E8A0: 0A 09 2F 2F 20 63 61 75 73 65 73 20 74 68 65 20 ..// causes the
00E8B0: 72 65 6D 61 69 6E 64 65 72 20 6F 66 20 74 68 65 remainder of the
00E8C0: 20 6C 69 6E 65 20 74 6F 20 62 65 20 69 67 6E 6F line to be igno
00E8D0: 72 65 64 0D 0A 09 2F 2A 20 63 61 75 73 65 73 20 red.../* causes
00E8E0: 61 6C 6C 20 74 65 78 74 20 74 6F 20 62 65 90 20 all text to be.
00E8F0: 69 67 6E 6F 72 65 64 20 75 6E 74 69 6C 20 74 68 ignored until th
00E900: 65 20 63 6F 6D 70 69 6C 65 72 20 72 65 61 63 68 e compiler reach
00E910: 65 73 20 74 68 65 20 0D 8A 09 73 79 6D 62 6F 6C es the ...symbol
00E920: 20 2A 2F 0D 0A 0D 0A 09 41 64 64 69 74 69 6F 6E */.....Addition
00E930: 61 6C 6C 79 20 61 20 3E 90 20 69 6E 90 20 63 6F ally a >. in. co
00E940: 6C 75 6D 6E 90 20 31 90 20 63 61 75 73 65 73 90 lumn. 1. causes.
00E950: 20 74 68 65 90 20 77 68 6F 6C 65 90 20 6C 69 6E the. whole. lin
00E960: 65 90 20 74 6F 20 62 65 20 0D 8A 09 69 67 6E 6F e. to be ...igno
00E970: 72 65 64 2E 20 54 68 75 73 20 50 52 4F 54 45 58 red. Thus PROTEX
00E980: 54 20 73 74 6F 72 65 64 20 63 6F 6D 6D 61 6E 64 T stored command
00E990: 73 20 61 72 65 20 69 67 6E 6F 72 65 64 2E 0D 0A s are ignored...
00E9A0: 0D 0A 09 4D 75 6C 74 69 70 6C 65 20 63 6F 6D 6D ...Multiple comm
00E9B0: 61 6E 64 20 6C 69 6E 65 73 20 61 72 65 90 20 61 and lines are. a
00E9C0: 6C 6C 6F 77 65 64 2E 90 20 43 6F 6D 6D 61 6E 64 llowed.. Command
00E9D0: 73 20 6D 75 73 74 20 62 65 20 73 65 70 61 72 61 s must be separa
00E9E0: 74 65 64 20 0D 8A 09 62 79 20 61 20 73 65 6D 69 ted ...by a semi
00E9F0: 63 6F 6C 6F 6E 20 28 3B 29 20 69 66 20 74 68 65 colon (;) if the
00EA00: 72 65 20 77 6F 75 6C 64 20 6F 74 68 65 72 77 69 re would otherwi
00EA10: 73 65 20 62 65 20 61 6E 20 61 6E 20 61 6D 62 69 se be an an ambi
00EA20: 67 75 69 74 79 2E 0D 0A 0D 0A 09 42 6C 61 6E 6B guity......Blank
00EA30: 20 6C 69 6E 65 73 90 20 61 6E 64 90 20 73 70 61 lines. and. spa
00EA40: 63 65 73 90 20 61 72 65 90 20 69 67 6E 6F 72 65 ces. are. ignore
00EA50: 64 90 20 65 78 63 65 70 74 90 20 77 68 65 72 65 d. except. where
00EA60: 90 20 74 68 65 79 90 20 61 72 65 20 0D 8A 09 72 . they. are ...r
00EA70: 65 71 75 69 72 65 64 20 74 6F 90 20 73 65 70 61 equired to. sepa
00EA80: 72 61 74 65 90 20 69 74 65 6D 73 2E 90 20 50 52 rate. items.. PR
00EA90: 4F 54 45 58 54 90 20 73 6F 66 74 90 20 73 70 61 OTEXT. soft. spa
00EAA0: 63 65 73 2C 90 20 73 6F 66 74 20 6C 69 6E 65 20 ces,. soft line
00EAB0: 0D 8A 09 66 65 65 64 73 2C 20 61 6E 64 20 6D 61 ...feeds, and ma
00EAC0: 72 6B 65 72 73 20 61 72 65 20 69 67 6E 6F 72 65 rkers are ignore
00EAD0: 64 2E 0D 0A 3E 70 61 0D 0A 3E 2D 2D 2D 21 2D 2D d...>pa..>---!--
00EAE0: 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D ---!-----!------
00EAF0: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -!-------!------
00EB00: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -!-------!------
00EB10: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D -!-------!----R.
00EB20: 0A 3E 63 65 20 20 20 20 20 20 20 20 20 20 20 20 .>ce
00EB30: 20 20 20 20 20 20 20 20 20 20 E2 38 2E 20 54 48 .8. TH
00EB40: 45 20 41 52 4E 4F 52 20 42 43 50 4C 20 4C 49 42 E ARNOR BCPL LIB
00EB50: 52 41 52 49 45 53 E2 0D 0A 0D 0A 0D 0A 09 54 68 RARIES........Th
00EB60: 65 20 6C 69 62 72 61 72 69 65 73 20 73 75 70 70 e libraries supp
00EB70: 6C 69 65 64 20 77 69 74 68 90 20 74 68 65 90 20 lied with. the.
00EB80: 63 6F 6D 70 69 6C 65 72 90 20 70 72 6F 76 69 64 compiler. provid
00EB90: 65 20 70 72 6F 63 65 64 75 72 65 73 20 66 6F 72 e procedures for
00EBA0: 20 0D 8A 77 72 69 74 69 6E 67 20 74 6F 20 74 68 ..writing to th
00EBB0: 65 20 73 63 72 65 65 6E 2C 20 70 72 69 6E 74 65 e screen, printe
00EBC0: 72 20 6F 72 90 20 66 69 6C 65 73 20 61 6E 64 20 r or. files and
00EBD0: 72 65 61 64 69 6E 67 20 66 72 6F 6D 20 74 68 65 reading from the
00EBE0: 20 6B 65 79 62 6F 61 72 64 20 0D 8A 6F 72 20 66 keyboard ..or f
00EBF0: 69 6C 65 73 2E 20 45 61 63 68 20 6F 66 20 74 68 iles. Each of th
00EC00: 65 73 65 20 70 72 6F 63 65 64 75 72 65 73 20 69 ese procedures i
00EC10: 73 20 64 65 73 63 72 69 62 65 64 20 62 65 6C 6F s described belo
00EC20: 77 2E 0D 0A 09 54 68 65 20 74 77 6F 20 76 65 72 w....The two ver
00EC30: 73 69 6F 6E 73 20 6F 66 20 74 68 65 90 20 63 6F sions of the. co
00EC40: 6D 70 69 6C 65 72 90 20 6E 65 65 64 20 64 69 66 mpiler. need dif
00EC50: 66 65 72 65 6E 74 20 6C 69 62 72 61 72 69 65 73 ferent libraries
00EC60: 20 77 68 69 63 68 2C 20 0D 8A 61 6C 74 68 6F 75 which, ..althou
00EC70: 67 68 20 74 68 65 79 20 6C 6F 6F 6B 20 74 68 65 gh they look the
00EC80: 20 73 61 6D 65 20 66 72 6F 6D 90 20 74 68 65 20 same from. the
00EC90: 6F 75 74 73 69 64 65 2C 20 68 61 76 65 20 64 69 outside, have di
00ECA0: 66 66 65 72 65 6E 74 20 69 6E 74 65 72 6E 61 6C fferent internal
00ECB0: 20 0D 8A 77 6F 72 6B 69 6E 67 73 20 64 65 74 65 ..workings dete
00ECC0: 72 6D 69 6E 65 64 20 62 79 20 74 68 65 90 20 64 rmined by the. d
00ECD0: 69 66 66 65 72 65 6E 74 90 20 6F 70 65 72 61 74 ifferent. operat
00ECE0: 69 6E 67 90 20 73 79 73 74 65 6D 73 2E 20 54 68 ing. systems. Th
00ECF0: 65 72 65 20 69 73 20 61 6E 20 0D 8A 61 64 64 69 ere is an ..addi
00ED00: 74 69 6F 6E 61 6C 20 41 4D 53 44 4F 53 90 20 6C tional AMSDOS. l
00ED10: 69 62 72 61 72 79 90 20 77 68 69 63 68 90 20 63 ibrary. which. c
00ED20: 6F 6E 74 61 69 6E 73 90 20 72 6F 75 74 69 6E 65 ontains. routine
00ED30: 73 90 20 77 68 69 63 68 90 20 61 72 65 20 6F 6E s. which. are on
00ED40: 6C 79 20 0D 8A 72 65 6C 65 76 61 6E 74 20 74 6F ly ..relevant to
00ED50: 20 74 68 65 20 43 50 43 20 6D 61 63 68 69 6E 65 the CPC machine
00ED60: 73 2E 0D 0A 0D 0A E2 4D 61 6E 69 66 65 73 74 20 s......Manifest
00ED70: 63 6F 6E 73 74 61 6E 74 73 20 64 65 66 69 6E 65 constants define
00ED80: 64 20 69 6E 20 74 68 65 20 6C 69 62 72 61 72 69 d in the librari
00ED90: 65 73 E2 0D 0A 0D 0A 09 54 68 65 73 65 20 73 68 es......These sh
00EDA0: 6F 75 6C 64 20 62 65 90 20 75 73 65 64 90 20 77 ould be. used. w
00EDB0: 68 65 72 65 90 20 61 70 70 72 6F 70 72 69 61 74 here. appropriat
00EDC0: 65 90 20 74 6F 90 20 6D 61 6B 65 90 20 70 72 6F e. to. make. pro
00EDD0: 67 72 61 6D 73 20 62 6F 74 68 20 0D 8A 72 65 61 grams both ..rea
00EDE0: 64 61 62 6C 65 20 61 6E 64 20 70 6F 72 74 61 62 dable and portab
00EDF0: 6C 65 2E 20 54 68 65 79 20 64 65 66 69 6E 65 20 le. They define
00EE00: 69 6D 70 6C 65 6D 65 6E 74 61 74 69 6F 6E 20 64 implementation d
00EE10: 65 70 65 6E 64 65 6E 74 20 63 6F 6E 73 74 61 6E ependent constan
00EE20: 74 73 2E 0D 0A 0D 0A 3E 2D 2D 2D 21 2D 2D 2D 2D ts.....>---!----
00EE30: 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 4C -!-----!-------L
00EE40: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 -------!-------!
00EE50: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 -------!-------!
00EE60: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A 6E -------!----R..n
00EE70: 61 6D 65 09 09 76 61 6C 75 65 20 20 20 6D 65 61 ame..value mea
00EE80: 6E 69 6E 67 20 61 6E 64 20 75 73 65 0D 0A 0D 0A ning and use....
00EE90: 62 69 74 73 70 65 72 77 6F 72 64 09 31 36 09 42 bitsperword.16.B
00EEA0: 43 50 4C 20 77 6F 72 64 20 73 69 7A 65 2C 20 66 CPL word size, f
00EEB0: 6F 72 20 70 72 6F 67 72 61 6D 20 70 6F 72 74 61 or program porta
00EEC0: 62 69 6C 69 74 79 0D 0A 62 79 74 65 73 70 65 72 bility..bytesper
00EED0: 77 6F 72 64 09 32 09 42 43 50 4C 20 77 6F 72 64 word.2.BCPL word
00EEE0: 20 73 69 7A 65 2C 20 66 6F 72 20 70 72 6F 67 72 size, for progr
00EEF0: 61 6D 20 70 6F 72 74 61 62 69 6C 69 74 79 0D 0A am portability..
00EF00: 65 6E 64 73 74 72 65 61 6D 63 68 09 2D 2D 31 09 endstreamch.--1.
00EF10: 68 61 72 64 20 65 6E 64 20 6F 66 20 66 69 6C 65 hard end of file
00EF20: 20 63 68 61 72 61 63 74 65 72 0D 0A 6D 61 78 69 character..maxi
00EF30: 6E 74 09 09 33 32 37 36 37 09 74 68 65 20 6C 61 nt..32767.the la
00EF40: 72 67 65 73 74 20 70 6F 73 73 69 62 6C 65 20 69 rgest possible i
00EF50: 6E 74 65 67 65 72 0D 0A 6D 69 6E 69 6E 74 09 09 nteger..minint..
00EF60: 2D 2D 33 32 37 36 38 09 74 68 65 20 73 6D 61 6C --32768.the smal
00EF70: 6C 65 73 74 20 70 6F 73 73 69 62 6C 65 20 69 6E lest possible in
00EF80: 74 65 67 65 72 0D 0A 6E 65 77 6C 69 6E 65 63 68 teger..newlinech
00EF90: 09 09 32 36 39 09 74 68 65 20 6E 65 77 20 6C 69 ..269.the new li
00EFA0: 6E 65 20 63 68 61 72 61 63 74 65 72 2C 90 20 2A ne character,. *
00EFB0: 4E 2C 20 77 68 69 63 68 20 69 73 20 65 78 70 61 N, which is expa
00EFC0: 6E 64 65 64 20 0D 8A 09 09 09 09 74 6F 20 63 61 nded ......to ca
00EFD0: 72 72 69 61 67 65 20 72 65 74 75 72 6E 20 66 6F rriage return fo
00EFE0: 6C 6C 6F 77 65 64 20 62 79 20 6C 69 6E 65 20 66 llowed by line f
00EFF0: 65 65 64 0D 0A 70 72 69 6E 74 73 74 72 65 61 6D eed..printstream
00F000: 09 31 09 73 74 72 65 61 6D 20 6E 75 6D 62 65 72 .1.stream number
00F010: 20 74 6F 20 73 65 6C 65 63 74 20 6F 75 74 70 75 to select outpu
00F020: 74 20 74 6F 20 70 72 69 6E 74 65 72 0D 0A 73 6F t to printer..so
00F030: 66 74 65 6F 66 63 68 09 09 32 36 09 73 6F 66 74 fteofch..26.soft
00F040: 20 65 6E 64 20 6F 66 20 66 69 6C 65 20 63 68 61 end of file cha
00F050: 72 61 63 74 65 72 0D 0A 74 69 63 6B 73 70 65 72 racter..ticksper
00F060: 73 65 63 09 33 30 30 09 6D 75 6C 74 69 70 6C 79 sec.300.multiply
00F070: 20 74 68 65 20 76 61 6C 75 65 20 72 65 74 75 72 the value retur
00F080: 6E 65 64 90 20 62 79 20 27 74 69 6D 65 27 20 62 ned. by 'time' b
00F090: 79 20 74 68 69 73 20 0D 8A 09 09 09 09 74 6F 20 y this ......to
00F0A0: 67 65 74 20 74 68 65 20 74 69 6D 65 20 69 6E 20 get the time in
00F0B0: 73 65 63 6F 6E 64 73 2E 20 41 4D 53 44 4F 53 20 seconds. AMSDOS
00F0C0: 6F 6E 6C 79 2E 0D 0A 76 64 75 73 74 72 65 61 6D only...vdustream
00F0D0: 09 09 30 09 73 74 72 65 61 6D 20 6E 75 6D 62 65 ..0.stream numbe
00F0E0: 72 20 74 6F 20 73 65 6C 65 63 74 20 73 63 72 65 r to select scre
00F0F0: 65 6E 2F 6B 65 79 62 6F 61 72 64 0D 0A 0D 0A 0D en/keyboard.....
00F100: 0A 3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D .>---!-----!----
00F110: 2D 4C 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -L-------!------
00F120: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -!-------!------
00F130: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -!-------!------
00F140: 2D 21 2D 2D 2D 2D 52 0D 0A E2 4B 65 79 20 74 6F -!----R...Key to
00F150: 20 70 72 6F 63 65 64 75 72 65 20 64 65 73 63 72 procedure descr
00F160: 69 70 74 69 6F 6E 73 3A E2 0D 0A 0D 0A 45 66 66 iptions:.....Eff
00F170: 65 63 74 3A 20 09 09 62 72 69 65 66 20 65 78 70 ect: ..brief exp
00F180: 6C 61 6E 61 74 69 6F 6E 20 6F 66 20 74 68 65 20 lanation of the
00F190: 70 72 6F 63 65 64 75 72 65 0D 0A 52 65 74 75 72 procedure..Retur
00F1A0: 6E 73 3A 09 09 64 65 74 61 69 6C 73 20 61 6E 79 ns:..details any
00F1B0: 90 20 76 61 6C 75 65 90 20 72 65 74 75 72 6E 65 . value. returne
00F1C0: 64 90 20 62 79 90 20 74 68 65 90 20 70 72 6F 63 d. by. the. proc
00F1D0: 65 64 75 72 65 2E 90 20 41 6C 6C 20 0D 8A 09 09 edure.. All ....
00F1E0: 09 6C 69 62 72 61 72 79 20 70 72 6F 63 65 64 75 .library procedu
00F1F0: 72 65 73 20 6D 61 79 20 62 65 90 20 63 61 6C 6C res may be. call
00F200: 65 64 20 61 73 20 72 6F 75 74 69 6E 65 73 2C 20 ed as routines,
00F210: 77 68 65 74 68 65 72 20 0D 8A 09 09 09 6F 72 20 whether .....or
00F220: 6E 6F 74 20 74 68 65 79 20 72 65 74 75 72 6E 20 not they return
00F230: 61 20 76 61 6C 75 65 2E 20 4F 6E 6C 79 20 74 68 a value. Only th
00F240: 6F 73 65 20 70 72 6F 63 65 64 75 72 65 73 20 74 ose procedures t
00F250: 68 61 74 20 0D 8A 09 09 09 72 65 74 75 72 6E 20 hat .....return
00F260: 61 20 76 61 6C 75 65 20 6D 61 79 20 62 65 20 63 a value may be c
00F270: 61 6C 6C 65 64 90 20 61 73 20 61 20 66 75 6E 63 alled. as a func
00F280: 74 69 6F 6E 2E 20 4E 6F 74 65 20 74 68 61 74 20 tion. Note that
00F290: 0D 8A 09 09 09 73 65 76 65 72 61 6C 20 70 72 6F .....several pro
00F2A0: 63 65 64 75 72 65 73 20 72 65 74 75 72 6E 20 76 cedures return v
00F2B0: 61 6C 75 65 73 20 69 6E 20 61 20 73 75 70 70 6C alues in a suppl
00F2C0: 69 65 64 20 76 65 63 74 6F 72 2C 20 0D 8A 09 09 ied vector, ....
00F2D0: 09 62 75 74 20 74 68 65 73 65 20 77 69 6C 6C 20 .but these will
00F2E0: 62 65 20 6C 69 73 74 65 64 90 20 61 73 90 20 27 be listed. as. '
00F2F0: 6E 6F 74 68 69 6E 67 27 20 73 69 6E 63 65 20 74 nothing' since t
00F300: 68 65 72 65 20 69 73 20 0D 8A 09 09 09 6E 6F 20 here is .....no
00F310: 66 75 6E 63 74 69 6F 6E 20 76 61 6C 75 65 20 72 function value r
00F320: 65 74 75 72 6E 65 64 2E 0D 0A 4C 6F 63 61 74 69 eturned...Locati
00F330: 6F 6E 3A 09 09 74 68 69 73 20 69 6E 64 69 63 61 on:..this indica
00F340: 74 65 73 20 77 68 65 72 65 90 20 74 68 65 90 20 tes where. the.
00F350: 70 72 6F 63 65 64 75 72 65 90 20 69 73 90 20 64 procedure. is. d
00F360: 65 66 69 6E 65 64 2E 20 54 68 65 20 0D 8A 09 09 efined. The ....
00F370: 09 6C 6F 63 61 74 69 6F 6E 20 66 6F 72 20 74 68 .location for th
00F380: 65 20 43 50 2F 4D 20 76 65 72 73 69 6F 6E 20 69 e CP/M version i
00F390: 73 20 67 69 76 65 6E 20 66 69 72 73 74 2C 20 66 s given first, f
00F3A0: 6F 6C 6C 6F 77 65 64 20 0D 8A 09 09 09 62 79 20 ollowed .....by
00F3B0: 74 68 65 20 6C 6F 63 61 74 69 6F 6E 20 66 6F 72 the location for
00F3C0: 90 20 74 68 65 90 20 41 4D 53 44 4F 53 90 20 76 . the. AMSDOS. v
00F3D0: 65 72 73 69 6F 6E 2E 20 4D 6F 73 74 20 6F 66 20 ersion. Most of
00F3E0: 74 68 65 20 0D 8A 09 09 09 6C 69 62 72 61 72 79 the .....library
00F3F0: 90 20 70 72 6F 63 65 64 75 72 65 73 90 20 61 72 . procedures. ar
00F400: 65 90 20 77 72 69 74 74 65 6E 90 90 20 69 6E 90 e. written.. in.
00F410: 20 42 43 50 4C 90 20 61 6E 64 90 20 61 72 65 20 BCPL. and. are
00F420: 0D 8A 09 09 09 63 6F 6E 74 61 69 6E 65 64 20 69 .....contained i
00F430: 6E 20 6F 6E 65 20 6F 66 20 74 68 65 90 20 6C 69 n one of the. li
00F440: 62 72 61 72 79 20 66 69 6C 65 73 2E 20 41 20 66 brary files. A f
00F450: 65 77 20 72 6F 75 74 69 6E 65 73 20 0D 8A 09 09 ew routines ....
00F460: 09 61 72 65 90 20 70 72 65 2D 64 65 66 69 6E 65 .are. pre-define
00F470: 64 2C 90 20 69 2E 65 2E 90 20 74 68 65 79 90 20 d,. i.e.. they.
00F480: 61 72 65 90 20 77 72 69 74 74 65 6E 90 20 69 6E are. written. in
00F490: 74 6F 90 20 74 68 65 20 0D 8A 09 09 09 63 6F 6D to. the .....com
00F4A0: 70 69 6C 65 72 2E 0D 0A 3E 70 61 0D 0A 3E 2D 2D piler...>pa..>--
00F4B0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 4C 2D 2D ------------ L--
00F4C0: 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D -----!-------!--
00F4D0: 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D -----!-------!--
00F4E0: 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D -----!-------!--
00F4F0: 2D 2D 52 0D 0A E2 28 61 29 20 4F 75 74 70 75 74 --R...(a) Output
00F500: 20 52 6F 75 74 69 6E 65 73 E2 0D 0A 0D 0A 0D 0A Routines.......
00F510: 4E 45 57 4C 49 4E 45 28 29 0D 0A 0D 0A 45 66 66 NEWLINE()....Eff
00F520: 65 63 74 3A 09 53 74 61 72 74 73 20 61 20 6E 65 ect:.Starts a ne
00F530: 77 20 6C 69 6E 65 90 20 69 6E 90 20 74 68 65 90 w line. in. the.
00F540: 20 63 75 72 72 65 6E 74 6C 79 20 73 65 6C 65 63 currently selec
00F550: 74 65 64 20 6F 75 74 70 75 74 2E 20 0D 8A 09 54 ted output. ...T
00F560: 68 65 20 65 78 61 63 74 20 65 66 66 65 63 74 20 he exact effect
00F570: 69 6E 20 41 72 6E 6F 72 20 42 43 50 4C 20 69 73 in Arnor BCPL is
00F580: 20 74 6F 20 6F 75 74 70 75 74 20 61 20 63 61 72 to output a car
00F590: 72 69 61 67 65 20 0D 8A 09 72 65 74 75 72 6E 20 riage ...return
00F5A0: 28 31 33 29 20 66 6F 6C 6C 6F 77 65 64 20 62 79 (13) followed by
00F5B0: 20 61 20 6C 69 6E 65 20 66 65 65 64 20 28 31 30 a line feed (10
00F5C0: 29 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E ).....Returns:.N
00F5D0: 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 othing....Locati
00F5E0: 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 on:.CLIBHDR, ALI
00F5F0: 42 48 44 52 0D 0A 0D 0A 0D 0A 4E 45 57 50 41 47 BHDR......NEWPAG
00F600: 45 28 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 53 E()....Effect:.S
00F610: 74 61 72 74 73 20 61 20 6E 65 77 20 70 61 67 65 tarts a new page
00F620: 90 20 69 6E 90 20 74 68 65 90 20 63 75 72 72 65 . in. the. curre
00F630: 6E 74 6C 79 20 73 65 6C 65 63 74 65 64 20 6F 75 ntly selected ou
00F640: 74 70 75 74 2E 20 0D 8A 09 54 68 65 20 65 78 61 tput. ...The exa
00F650: 63 74 20 65 66 66 65 63 74 20 69 6E 20 41 72 6E ct effect in Arn
00F660: 6F 72 90 20 42 43 50 4C 90 20 69 73 20 74 6F 20 or. BCPL. is to
00F670: 6F 75 74 70 75 74 20 74 68 65 20 66 6F 72 6D 20 output the form
00F680: 0D 8A 09 66 65 65 64 20 63 68 61 72 61 63 74 65 ...feed characte
00F690: 72 20 28 31 32 29 2E 0D 0A 0D 0A 52 65 74 75 72 r (12).....Retur
00F6A0: 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C ns:.Nothing....L
00F6B0: 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 ocation:.CLIBHDR
00F6C0: 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A 0D 0A 0D 1, ALIBHDR1.....
00F6D0: 0A 57 52 43 48 28 63 68 61 72 29 0D 0A 0D 0A 45 .WRCH(char)....E
00F6E0: 66 66 65 63 74 3A 09 54 68 65 20 63 68 61 72 61 ffect:.The chara
00F6F0: 63 74 65 72 20 69 73 20 73 65 6E 74 20 74 6F 20 cter is sent to
00F700: 74 68 65 20 63 75 72 72 65 6E 74 6C 79 20 73 65 the currently se
00F710: 6C 65 63 74 65 64 20 6F 75 74 70 75 74 20 0D 8A lected output ..
00F720: 09 73 74 72 65 61 6D 2E 20 57 72 63 68 28 27 2A .stream. Wrch('*
00F730: 4E 27 29 20 68 61 73 20 74 68 65 90 20 73 61 6D N') has the. sam
00F740: 65 90 20 65 66 66 65 63 74 20 61 73 20 6E 65 77 e. effect as new
00F750: 6C 69 6E 65 28 29 2C 20 0D 8A 09 69 2E 65 2E 20 line(), ...i.e.
00F760: 63 61 72 72 69 61 67 65 20 72 65 74 75 72 6E 20 carriage return
00F770: 61 6E 64 20 6C 69 6E 65 20 66 65 65 64 20 61 72 and line feed ar
00F780: 65 20 6F 75 74 70 75 74 2E 0D 0A 0D 0A 52 65 74 e output.....Ret
00F790: 75 72 6E 73 3A 09 54 52 55 45 20 69 66 20 73 75 urns:.TRUE if su
00F7A0: 63 63 65 73 73 66 75 6C 2C 20 46 41 4C 53 45 20 ccessful, FALSE
00F7B0: 69 66 20 61 6E 20 65 72 72 6F 72 20 6F 63 63 75 if an error occu
00F7C0: 72 72 65 64 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 6F rred.....Locatio
00F7D0: 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 n:.CLIBHDR, ALIB
00F7E0: 48 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C 65 73 3A HDR....Examples:
00F7F0: 09 77 72 63 68 28 63 68 61 72 29 0D 0A 09 77 72 .wrch(char)...wr
00F800: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
00F810: 0D 00 00 00 02 09 50 E5 0D 00 C1 02 00 00 00 02 ......P.........
00F820: 0D 00 C2 02 00 00 00 02 0D 00 C3 02 00 00 00 02 ................
00F830: 0D 00 C4 02 00 00 00 02 0D 00 C5 02 00 00 00 02 ................
00F840: 0D 00 C6 02 00 00 00 02 0D 00 C7 02 00 00 00 02 ................
00F850: 0D 00 C8 02 00 00 00 02 0D 00 C9 02 00 00 00 02 ................
00F860: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F870: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F880: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F890: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F8A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F8B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F8C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F8D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F8E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F8F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F900: 63 68 28 27 41 27 29 0D 0A 0D 0A 0D 0A 57 52 49 ch('A')......WRI
00F910: 54 45 44 28 69 6E 74 65 67 65 72 2C 77 69 64 74 TED(integer,widt
00F920: 68 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 h)....Effect:.Th
00F930: 65 20 69 6E 74 65 67 65 72 20 69 73 90 20 6F 75 e integer is. ou
00F940: 74 70 75 74 90 20 61 73 90 20 61 90 20 73 69 67 tput. as. a. sig
00F950: 6E 65 64 20 64 65 63 69 6D 61 6C 20 69 6E 74 65 ned decimal inte
00F960: 67 65 72 2C 20 0D 8A 09 72 69 67 68 74 20 6A 75 ger, ...right ju
00F970: 73 74 69 66 69 65 64 20 69 6E 20 61 20 66 69 65 stified in a fie
00F980: 6C 64 90 20 6F 66 20 74 68 65 20 73 70 65 63 69 ld. of the speci
00F990: 66 69 65 64 20 77 69 64 74 68 2E 20 49 66 20 0D fied width. If .
00F9A0: 8A 09 74 68 69 73 20 77 69 64 74 68 20 69 73 20 ..this width is
00F9B0: 69 6E 73 75 66 66 69 63 69 65 6E 74 20 74 68 65 insufficient the
00F9C0: 6E 90 20 69 74 90 20 77 69 6C 6C 20 62 65 20 6F n. it. will be o
00F9D0: 75 74 70 75 74 20 69 6E 20 0D 8A 09 74 68 65 20 utput in ...the
00F9E0: 6D 69 6E 69 6D 75 6D 20 77 69 64 74 68 2E 20 54 minimum width. T
00F9F0: 68 65 90 20 6E 75 6D 62 65 72 90 20 6F 75 74 70 he. number. outp
00FA00: 75 74 90 20 77 69 6C 6C 20 62 65 20 69 6E 20 74 ut. will be in t
00FA10: 68 65 20 0D 8A 09 72 61 6E 67 65 20 28 2D 2D 33 he ...range (--3
00FA20: 32 37 36 38 2C 33 32 37 36 37 29 2E 0D 0A 0D 0A 2768,32767).....
00FA30: 52 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 Returns:.Nothing
00FA40: 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C ....Location:.CL
00FA50: 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A IBHDR, ALIBHDR..
00FA60: 3E 70 61 0D 0A 57 52 49 54 45 46 28 66 6F 72 6D >pa..WRITEF(form
00FA70: 61 74 2C 61 2C 62 2C 63 2C 64 2C 65 2C 66 2C 67 at,a,b,c,d,e,f,g
00FA80: 2C 68 2C 69 2C 6A 2C 6B 29 0D 0A 0D 0A 45 66 66 ,h,i,j,k)....Eff
00FA90: 65 63 74 3A 09 57 52 49 54 45 46 20 61 6C 6C 6F ect:.WRITEF allo
00FAA0: 77 73 20 63 68 61 72 61 63 74 65 72 73 20 74 6F ws characters to
00FAB0: 90 20 62 65 90 20 70 72 69 6E 74 65 64 20 6F 75 . be. printed ou
00FAC0: 74 20 61 63 63 6F 72 64 69 6E 67 20 0D 8A 09 74 t according ...t
00FAD0: 6F 20 63 65 72 74 61 69 6E 20 66 6F 72 6D 61 74 o certain format
00FAE0: 73 2E 90 20 54 68 65 90 20 70 72 6F 63 65 64 75 s.. The. procedu
00FAF0: 72 65 90 20 74 61 6B 65 73 90 20 6F 6E 65 20 73 re. takes. one s
00FB00: 74 72 69 6E 67 20 0D 8A 09 70 61 72 61 6D 65 74 tring ...paramet
00FB10: 65 72 20 77 68 69 63 68 20 67 69 76 65 73 90 20 er which gives.
00FB20: 74 68 65 90 20 74 65 6D 70 6C 61 74 65 90 20 74 the. template. t
00FB30: 6F 90 20 62 65 90 20 75 73 65 64 20 66 6F 72 20 o. be. used for
00FB40: 0D 8A 09 70 72 69 6E 74 69 6E 67 2E 20 49 74 90 ...printing. It.
00FB50: 20 61 6C 73 6F 90 20 74 61 6B 65 73 90 20 61 6E also. takes. an
00FB60: 6F 74 68 65 72 90 20 73 65 74 90 20 6F 66 20 70 other. set. of p
00FB70: 61 72 61 6D 65 74 65 72 73 20 0D 8A 09 28 75 70 arameters ...(up
00FB80: 20 74 6F 20 31 31 29 20 77 68 69 63 68 20 67 69 to 11) which gi
00FB90: 76 65 90 20 74 68 65 90 20 69 74 65 6D 73 90 20 ve. the. items.
00FBA0: 74 6F 20 62 65 20 70 72 69 6E 74 65 64 2E 20 4E to be printed. N
00FBB0: 6F 74 65 20 0D 8A 09 74 68 61 74 20 69 74 20 69 ote ...that it i
00FBC0: 73 20 6E 6F 74 20 6E 65 63 65 73 73 61 72 79 90 s not necessary.
00FBD0: 20 74 6F 90 20 70 72 6F 76 69 64 65 20 61 20 42 to. provide a B
00FBE0: 43 50 4C 20 70 72 6F 63 65 64 75 72 65 20 0D 8A CPL procedure ..
00FBF0: 09 77 69 74 68 90 20 61 6C 6C 90 20 6F 66 90 20 .with. all. of.
00FC00: 69 74 73 90 20 66 6F 72 6D 61 6C 90 20 70 61 72 its. formal. par
00FC10: 61 6D 65 74 65 72 73 2E 90 20 54 68 65 90 20 74 ameters.. The. t
00FC20: 65 6D 70 6C 61 74 65 20 0D 8A 09 70 61 72 61 6D emplate ...param
00FC30: 65 74 65 72 90 20 69 73 90 20 61 90 20 73 74 72 eter. is. a. str
00FC40: 69 6E 67 90 20 77 68 69 63 68 90 90 20 6D 61 79 ing. which.. may
00FC50: 90 20 69 6E 63 6C 75 64 65 90 20 74 68 65 90 20 . include. the.
00FC60: 25 20 0D 8A 09 63 68 61 72 61 63 74 65 72 20 66 % ...character f
00FC70: 6F 6C 6C 6F 77 65 64 20 62 79 90 20 61 90 20 63 ollowed by. a. c
00FC80: 6F 6E 76 65 72 73 69 6F 6E 20 63 68 61 72 61 63 onversion charac
00FC90: 74 65 72 28 73 29 2E 20 54 68 65 20 0D 8A 09 74 ter(s). The ...t
00FCA0: 65 6D 70 6C 61 74 65 90 20 73 74 72 69 6E 67 90 emplate. string.
00FCB0: 20 69 73 90 20 70 72 69 6E 74 65 64 90 90 20 6F is. printed.. o
00FCC0: 75 74 90 90 20 77 69 74 68 90 20 74 68 65 90 20 ut.. with. the.
00FCD0: 6F 74 68 65 72 20 0D 8A 09 70 61 72 61 6D 65 74 other ...paramet
00FCE0: 65 72 73 90 20 69 6E 73 65 72 74 65 64 90 20 69 ers. inserted. i
00FCF0: 6E 74 6F 90 20 69 74 90 20 69 6E 90 90 20 70 6C nto. it. in.. pl
00FD00: 61 63 65 90 20 6F 66 90 20 74 68 65 90 20 25 20 ace. of. the. %
00FD10: 0D 8A 09 63 68 61 72 61 63 74 65 72 2E 20 54 68 ...character. Th
00FD20: 65 90 20 63 6F 6E 76 65 72 73 69 6F 6E 90 20 63 e. conversion. c
00FD30: 68 61 72 61 63 74 65 72 73 90 20 61 76 61 69 6C haracters. avail
00FD40: 61 62 6C 65 90 20 61 72 65 20 0D 8A 09 6C 69 73 able. are ...lis
00FD50: 74 65 64 20 62 65 6C 6F 77 2E 20 53 6F 6D 65 90 ted below. Some.
00FD60: 20 6F 66 90 20 74 68 65 73 65 90 20 6D 75 73 74 of. these. must
00FD70: 90 20 62 65 90 20 66 6F 6C 6C 6F 77 65 64 20 62 . be. followed b
00FD80: 79 20 61 20 0D 8A 09 6E 75 6D 62 65 72 20 74 6F y a ...number to
00FD90: 20 73 70 65 63 69 66 79 20 74 68 65 20 72 65 71 specify the req
00FDA0: 75 69 72 65 64 90 20 66 69 65 6C 64 20 77 69 64 uired. field wid
00FDB0: 74 68 2E 20 54 68 65 73 65 20 61 72 65 20 0D 8A th. These are ..
00FDC0: 09 6D 61 72 6B 65 64 20 77 69 74 68 20 27 6E 27 .marked with 'n'
00FDD0: 2C 20 77 68 69 63 68 20 63 61 6E 90 20 62 65 90 , which can. be.
00FDE0: 20 61 20 64 65 63 69 6D 61 6C 20 6F 72 20 68 65 a decimal or he
00FDF0: 78 20 64 69 67 69 74 20 0D 8A 09 28 73 6F 20 27 x digit ...(so '
00FE00: 46 27 20 67 69 76 65 73 20 74 68 65 20 6D 61 78 F' gives the max
00FE10: 69 6D 75 6D 20 77 69 64 74 68 20 6F 66 20 31 35 imum width of 15
00FE20: 29 2E 0D 0A 0D 0A 3E 2D 2D 2D 2D 2D 2D 2D 2D 2D ).....>---------
00FE30: 2D 2D 2D 2D 2D 20 21 2D 2D 2D 2D 2D 4C 2D 21 2D ----- !-----L-!-
00FE40: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
00FE50: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
00FE60: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A 09 53 ------!----R...S
00FE70: 20 20 2D 2D 20 70 72 69 6E 74 20 61 20 73 74 72 -- print a str
00FE80: 69 6E 67 0D 0A 09 43 20 20 2D 2D 20 70 72 69 6E ing...C -- prin
00FE90: 74 20 61 20 63 68 61 72 61 63 74 65 72 0D 0A 09 t a character...
00FEA0: 58 6E 20 2D 2D 20 70 72 69 6E 74 20 61 90 68 65 Xn -- print a.he
00FEB0: 78 20 76 61 6C 75 65 2E 90 20 49 66 90 20 74 68 x value.. If. th
00FEC0: 65 90 20 66 69 65 6C 64 90 20 77 69 64 74 68 20 e. field. width
00FED0: 69 73 20 74 6F 6F 20 0D 8A 09 09 73 6D 61 6C 6C is too ....small
00FEE0: 2C 20 6F 6E 6C 79 20 74 68 65 20 6C 65 61 73 74 , only the least
00FEF0: 20 73 69 67 6E 69 66 69 63 61 6E 74 20 64 69 67 significant dig
00FF00: 69 74 73 20 77 69 6C 6C 20 62 65 20 0D 8A 09 09 its will be ....
00FF10: 6F 75 74 70 75 74 2E 0D 0A 09 4F 6E 20 2D 2D 20 output....On --
00FF20: 70 72 69 6E 74 20 61 6E 20 6F 63 74 61 6C 20 76 print an octal v
00FF30: 61 6C 75 65 2E 20 49 66 90 20 74 68 65 20 66 69 alue. If. the fi
00FF40: 65 6C 64 20 77 69 64 74 68 20 69 73 20 74 6F 6F eld width is too
00FF50: 20 0D 8A 09 09 73 6D 61 6C 6C 2C 20 6F 6E 6C 79 ....small, only
00FF60: 20 74 68 65 20 6C 65 61 73 74 20 73 69 67 6E 69 the least signi
00FF70: 66 69 63 61 6E 74 20 64 69 67 69 74 73 20 77 69 ficant digits wi
00FF80: 6C 6C 20 62 65 20 0D 8A 09 09 6F 75 74 70 75 74 ll be ....output
00FF90: 2E 0D 0A 09 49 6E 20 2D 2D 90 70 72 69 6E 74 20 ....In --.print
00FFA0: 61 6E 20 69 6E 74 65 67 65 72 20 69 6E 20 64 65 an integer in de
00FFB0: 63 69 6D 61 6C 2E 90 20 49 66 20 74 68 65 20 66 cimal.. If the f
00FFC0: 69 65 6C 64 20 77 69 64 74 68 20 0D 8A 09 09 69 ield width ....i
00FFD0: 73 20 74 6F 6F 20 73 6D 61 6C 6C 2C 20 74 68 65 s too small, the
00FFE0: 90 20 69 6E 74 65 67 65 72 90 20 77 69 6C 6C 20 . integer. will
00FFF0: 62 65 20 6F 75 74 70 75 74 20 75 73 69 6E 67 20 be output using
010000: 0D 8A 09 09 74 68 65 20 6C 65 61 73 74 20 6E 75 ....the least nu
010010: 6D 62 65 72 20 6F 66 20 73 70 61 63 65 73 2E 0D mber of spaces..
010020: 0A 09 4E 20 20 2D 2D 20 70 72 69 6E 74 20 61 6E ..N -- print an
010030: 90 20 69 6E 74 65 67 65 72 90 20 69 6E 90 20 64 . integer. in. d
010040: 65 63 69 6D 61 6C 90 20 77 69 74 68 90 20 6E 6F ecimal. with. no
010050: 20 6C 65 61 64 69 6E 67 20 0D 8A 09 09 73 70 61 leading ....spa
010060: 63 65 73 0D 0A 09 25 20 20 2D 2D 20 70 72 69 6E ces...% -- prin
010070: 74 20 74 68 65 20 25 20 63 68 61 72 61 63 74 65 t the % characte
010080: 72 0D 0A 09 24 20 20 2D 2D 20 73 6B 69 70 20 61 r...$ -- skip a
010090: 20 70 61 72 61 6D 65 74 65 72 0D 0A 0D 0A 3E 2D parameter....>-
0100A0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 4C 2D ------------- L-
0100B0: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
0100C0: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
0100D0: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
0100E0: 2D 2D 2D 52 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A ---R....Returns:
0100F0: 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 .Nothing....Loca
010100: 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 tion:.CLIBHDR, A
010110: 4C 49 42 48 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C LIBHDR....Exampl
010120: 65 3A 0D 0A 0D 0A 09 4C 45 54 20 63 6F 6E 76 65 e:.....LET conve
010130: 72 74 20 3D 20 31 30 30 0D 0A 09 77 72 69 74 65 rt = 100...write
010140: 66 28 22 25 4E 20 69 6E 20 68 65 78 61 64 65 63 f("%N in hexadec
010150: 69 6D 61 6C 20 69 73 20 25 58 34 2A 4E 22 2C 20 imal is %X4*N",
010160: 63 6F 6E 76 65 72 74 2C 20 63 6F 6E 76 65 72 74 convert, convert
010170: 29 0D 0A 0D 0A 09 77 6F 75 6C 64 20 70 72 69 6E ).....would prin
010180: 74 0D 0A 0D 0A 09 31 30 30 20 69 6E 20 68 65 78 t.....100 in hex
010190: 61 64 65 63 69 6D 61 6C 20 69 73 20 30 30 36 34 adecimal is 0064
0101A0: 0D 0A 0D 0A 3E 70 61 0D 0A 57 52 49 54 45 48 45 ....>pa..WRITEHE
0101B0: 58 28 69 6E 74 65 67 65 72 2C 77 69 64 74 68 29 X(integer,width)
0101C0: 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 65 20 ....Effect:.The
0101D0: 69 6E 74 65 67 65 72 90 20 69 73 90 20 6F 75 74 integer. is. out
0101E0: 70 75 74 90 20 61 73 90 20 61 6E 90 20 75 6E 73 put. as. an. uns
0101F0: 69 67 6E 65 64 90 20 68 65 78 61 64 65 63 69 6D igned. hexadecim
010200: 61 6C 20 0D 8A 09 69 6E 74 65 67 65 72 2C 20 72 al ...integer, r
010210: 69 67 68 74 20 6A 75 73 74 69 66 69 65 64 20 69 ight justified i
010220: 6E 90 20 61 90 20 66 69 65 6C 64 20 6F 66 20 74 n. a. field of t
010230: 68 65 20 73 70 65 63 69 66 69 65 64 20 0D 8A 09 he specified ...
010240: 77 69 64 74 68 2C 90 20 77 69 74 68 90 20 6C 65 width,. with. le
010250: 61 64 69 6E 67 90 90 20 7A 65 72 6F 73 2E 90 90 ading.. zeros...
010260: 20 49 66 90 90 20 74 68 69 73 90 90 20 77 69 64 If.. this.. wid
010270: 74 68 90 20 69 73 20 0D 8A 09 69 6E 73 75 66 66 th. is ...insuff
010280: 69 63 69 65 6E 74 20 74 68 65 6E 90 20 74 68 65 icient then. the
010290: 90 20 6C 65 61 73 74 90 20 73 69 67 6E 69 66 69 . least. signifi
0102A0: 63 61 6E 74 90 20 64 69 67 69 74 73 20 61 72 65 cant. digits are
0102B0: 20 0D 8A 09 6F 75 74 70 75 74 2E 0D 0A 0D 0A 52 ...output.....R
0102C0: 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D eturns:.Nothing.
0102D0: 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 ...Location:.CLI
0102E0: 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D BHDR, ALIBHDR...
0102F0: 0A 45 78 61 6D 70 6C 65 3A 09 77 72 69 74 65 68 .Example:.writeh
010300: 65 78 28 6E 75 6D 62 65 72 2C 34 29 0D 0A 0D 0A ex(number,4)....
010310: 0D 0A 57 52 49 54 45 4E 28 69 6E 74 65 67 65 72 ..WRITEN(integer
010320: 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 65 )....Effect:.The
010330: 20 69 6E 74 65 67 65 72 20 69 73 20 6F 75 74 70 integer is outp
010340: 75 74 20 69 6E 20 64 65 63 69 6D 61 6C 20 69 6E ut in decimal in
010350: 20 74 68 65 20 6D 69 6E 69 6D 75 6D 20 77 69 64 the minimum wid
010360: 74 68 2E 20 0D 8A 09 54 68 69 73 20 69 73 20 74 th. ...This is t
010370: 68 65 20 73 61 6D 65 20 61 73 20 57 52 49 54 45 he same as WRITE
010380: 44 28 69 6E 74 65 67 65 72 2C 30 29 2E 0D 0A 0D D(integer,0)....
010390: 0A 52 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E .Returns:.Nothin
0103A0: 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 g....Location:.C
0103B0: 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D LIBHDR, ALIBHDR.
0103C0: 0A 0D 0A 0D 0A 57 52 49 54 45 4F 43 54 28 69 6E .....WRITEOCT(in
0103D0: 74 65 67 65 72 2C 77 69 64 74 68 29 0D 0A 0D 0A teger,width)....
0103E0: 45 66 66 65 63 74 3A 09 54 68 65 20 69 6E 74 65 Effect:.The inte
0103F0: 67 65 72 20 69 73 20 6F 75 74 70 75 74 90 20 61 ger is output. a
010400: 73 90 20 61 6E 90 20 75 6E 73 69 67 6E 65 64 20 s. an. unsigned
010410: 6F 63 74 61 6C 20 69 6E 74 65 67 65 72 2C 20 0D octal integer, .
010420: 8A 09 72 69 67 68 74 20 6A 75 73 74 69 66 69 65 ..right justifie
010430: 64 20 69 6E 90 20 61 90 20 66 69 65 6C 64 90 20 d in. a. field.
010440: 6F 66 90 20 74 68 65 20 73 70 65 63 69 66 69 65 of. the specifie
010450: 64 20 77 69 64 74 68 2C 20 0D 8A 09 77 69 74 68 d width, ...with
010460: 20 6C 65 61 64 69 6E 67 20 7A 65 72 6F 73 2E 20 leading zeros.
010470: 49 66 20 74 68 69 73 20 77 69 64 74 68 20 69 73 If this width is
010480: 20 69 6E 73 75 66 66 69 63 69 65 6E 74 20 74 68 insufficient th
010490: 65 6E 20 0D 8A 09 74 68 65 20 6C 65 61 73 74 20 en ...the least
0104A0: 73 69 67 6E 69 66 69 63 61 6E 74 20 64 69 67 69 significant digi
0104B0: 74 73 20 61 72 65 20 6F 75 74 70 75 74 2E 0D 0A ts are output...
0104C0: 0D 0A 52 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 ..Returns:.Nothi
0104D0: 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 ng....Location:.
0104E0: 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 CLIBHDR, ALIBHDR
0104F0: 0D 0A 0D 0A 45 78 61 6D 70 6C 65 3A 09 77 72 69 ....Example:.wri
010500: 74 65 6F 63 74 28 6E 75 6D 62 65 72 2C 36 29 0D teoct(number,6).
010510: 0A 0D 0A 0D 0A 57 52 49 54 45 53 28 73 74 72 69 .....WRITES(stri
010520: 6E 67 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 ng)....Effect:.T
010530: 68 65 20 73 74 72 69 6E 67 20 69 73 20 6F 75 74 he string is out
010540: 70 75 74 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A put.....Returns:
010550: 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 .Nothing....Loca
010560: 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 tion:.CLIBHDR, A
010570: 4C 49 42 48 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C LIBHDR....Exampl
010580: 65 3A 09 77 72 69 74 65 73 28 22 45 6E 74 65 72 e:.writes("Enter
010590: 20 66 69 6C 65 6E 61 6D 65 3A 20 22 29 0D 0A 0D filename: ")...
0105A0: 0A 3E 70 61 0D 0A 57 52 49 54 45 54 28 73 74 72 .>pa..WRITET(str
0105B0: 69 6E 67 2C 77 69 64 74 68 29 0D 0A 0D 0A 45 66 ing,width)....Ef
0105C0: 66 65 63 74 3A 09 54 68 65 20 73 74 72 69 6E 67 fect:.The string
0105D0: 20 69 73 20 6F 75 74 70 75 74 20 69 6E 90 20 74 is output in. t
0105E0: 68 65 20 73 70 65 63 69 66 69 65 64 20 66 69 65 he specified fie
0105F0: 6C 64 20 77 69 64 74 68 2E 20 49 66 20 0D 8A 09 ld width. If ...
010600: 74 68 65 20 77 69 64 74 68 20 69 73 20 6C 6F 6E the width is lon
010610: 67 65 72 90 20 74 68 61 6E 90 20 74 68 65 90 20 ger. than. the.
010620: 73 74 72 69 6E 67 20 74 68 65 6E 20 73 70 61 63 string then spac
010630: 65 73 20 61 72 65 20 0D 8A 09 6F 75 74 70 75 74 es are ...output
010640: 20 61 74 20 74 68 65 20 72 69 67 68 74 2E 20 49 at the right. I
010650: 66 20 74 68 65 90 20 77 69 64 74 68 20 69 73 20 f the. width is
010660: 73 68 6F 72 74 65 72 20 74 68 61 6E 20 74 68 65 shorter than the
010670: 20 0D 8A 09 73 74 72 69 6E 67 2C 20 74 68 65 20 ...string, the
010680: 77 68 6F 6C 65 20 73 74 72 69 6E 67 20 69 73 20 whole string is
010690: 70 72 69 6E 74 65 64 2E 0D 0A 0D 0A 52 65 74 75 printed.....Retu
0106A0: 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A rns:.Nothing....
0106B0: 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 Location:.CLIBHD
0106C0: 52 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A 0D 0A R1, ALIBHDR1....
0106D0: 0D 0A 57 52 49 54 45 55 28 75 6E 73 69 67 6E 65 ..WRITEU(unsigne
0106E0: 64 2C 77 69 64 74 68 29 0D 0A 0D 0A 45 66 66 65 d,width)....Effe
0106F0: 63 74 3A 09 54 68 65 20 66 69 72 73 74 20 70 61 ct:.The first pa
010700: 72 61 6D 65 74 65 72 20 69 73 20 74 72 65 61 74 rameter is treat
010710: 65 64 90 20 61 73 20 61 6E 20 75 6E 73 69 67 6E ed. as an unsign
010720: 65 64 20 69 6E 74 65 67 65 72 20 0D 8A 09 61 6E ed integer ...an
010730: 64 90 20 6F 75 74 70 75 74 90 20 69 6E 90 20 64 d. output. in. d
010740: 65 63 69 6D 61 6C 2C 90 90 20 72 69 67 68 74 90 ecimal,.. right.
010750: 90 20 6A 75 73 74 69 66 69 65 64 90 20 69 6E 90 . justified. in.
010760: 20 74 68 65 20 0D 8A 09 73 70 65 63 69 66 69 65 the ...specifie
010770: 64 20 77 69 64 74 68 2E 20 49 66 20 74 68 65 20 d width. If the
010780: 77 69 64 74 68 90 20 69 73 20 74 6F 6F 20 73 6D width. is too sm
010790: 61 6C 6C 20 74 68 65 20 6E 75 6D 62 65 72 20 0D all the number .
0107A0: 8A 09 69 73 20 70 72 69 6E 74 65 64 20 69 6E 90 ..is printed in.
0107B0: 20 74 68 65 90 20 6D 69 6E 69 6D 75 6D 90 20 77 the. minimum. w
0107C0: 69 64 74 68 2E 90 20 54 68 65 20 6E 75 6D 62 65 idth.. The numbe
0107D0: 72 20 6F 75 74 70 75 74 20 0D 8A 09 77 69 6C 6C r output ...will
0107E0: 20 62 65 20 69 6E 20 74 68 65 20 72 61 6E 67 65 be in the range
0107F0: 20 28 30 2C 36 35 35 33 35 29 2E 0D 0A 0D 0A 52 (0,65535).....R
010800: 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D eturns:.Nothing.
010810: 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 ...Location:.CLI
010820: 42 48 44 52 31 2C 20 41 4C 49 42 48 44 52 31 0D BHDR1, ALIBHDR1.
010830: 0A 3E 70 61 0D 0A E2 28 62 29 20 49 6E 70 75 74 .>pa...(b) Input
010840: 20 52 6F 75 74 69 6E 65 73 E2 0D 0A 0D 0A 0D 0A Routines.......
010850: 52 44 43 48 28 29 0D 0A 0D 0A 45 66 66 65 63 74 RDCH()....Effect
010860: 3A 09 52 65 61 64 73 20 61 20 63 68 61 72 61 63 :.Reads a charac
010870: 74 65 72 20 66 72 6F 6D 20 74 68 65 20 63 75 72 ter from the cur
010880: 72 65 6E 74 20 69 6E 70 75 74 20 73 74 72 65 61 rent input strea
010890: 6D 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 m.....Returns:.T
0108A0: 68 65 20 63 68 61 72 61 63 74 65 72 20 72 65 61 he character rea
0108B0: 64 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 d.....Location:.
0108C0: 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 CLIBHDR, ALIBHDR
0108D0: 0D 0A 0D 0A 0D 0A 52 45 41 44 4E 28 29 0D 0A 0D ......READN()...
0108E0: 0A 45 66 66 65 63 74 3A 09 52 65 61 64 73 20 61 .Effect:.Reads a
0108F0: 20 64 65 63 69 6D 61 6C 20 69 6E 74 65 67 65 72 decimal integer
010900: 20 66 72 6F 6D 20 74 68 65 20 63 75 72 72 65 6E from the curren
010910: 74 20 69 6E 70 75 74 20 73 74 72 65 61 6D 2E 20 t input stream.
010920: 0D 8A 09 4C 65 61 64 69 6E 67 20 73 70 61 63 65 ...Leading space
010930: 73 20 61 72 65 20 69 67 6E 6F 72 65 64 2E 0D 0A s are ignored...
010940: 0D 0A 52 65 74 75 72 6E 73 3A 09 54 68 65 20 6E ..Returns:.The n
010950: 75 6D 62 65 72 20 72 65 61 64 2E 0D 0A 0D 0A 4C umber read.....L
010960: 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 ocation:.CLIBHDR
010970: 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 0D 0A 52 , ALIBHDR......R
010980: 45 41 44 53 28 73 74 72 69 6E 67 29 0D 0A 0D 0A EADS(string)....
010990: 45 66 66 65 63 74 3A 09 41 20 73 74 72 69 6E 67 Effect:.A string
0109A0: 20 69 73 20 72 65 61 64 90 20 66 72 6F 6D 90 20 is read. from.
0109B0: 74 68 65 90 20 63 75 72 72 65 6E 74 20 69 6E 70 the. current inp
0109C0: 75 74 20 73 74 72 65 61 6D 2E 20 54 68 65 20 0D ut stream. The .
0109D0: 8A 09 70 61 72 61 6D 65 74 65 72 20 69 73 20 61 ..parameter is a
0109E0: 90 20 76 65 63 74 6F 72 90 20 69 6E 90 20 77 68 . vector. in. wh
0109F0: 69 63 68 90 20 74 68 65 90 20 73 74 72 69 6E 67 ich. the. string
010A00: 20 77 69 6C 6C 20 62 65 20 0D 8A 09 73 74 6F 72 will be ...stor
010A10: 65 64 2E 20 54 68 65 20 73 74 72 69 6E 67 20 6D ed. The string m
010A20: 75 73 74 90 20 62 65 90 20 74 65 72 6D 69 6E 61 ust. be. termina
010A30: 74 65 64 90 20 62 79 20 61 20 63 61 72 72 69 61 ted. by a carria
010A40: 67 65 20 0D 8A 09 72 65 74 75 72 6E 2E 20 54 68 ge ...return. Th
010A50: 65 20 44 45 4C 2C 20 6F 72 90 20 7B 44 45 4C 90 e DEL, or. {DEL.
010A60: 20 6B 65 79 90 20 6D 61 79 90 20 62 65 20 75 73 key. may. be us
010A70: 65 64 20 74 6F 20 64 65 6C 65 74 65 20 0D 8A 09 ed to delete ...
010A80: 62 61 63 6B 77 61 72 64 73 2E 20 49 66 20 45 53 backwards. If ES
010A90: 43 20 6F 72 20 53 54 4F 50 90 20 69 73 90 20 70 C or STOP. is. p
010AA0: 72 65 73 73 65 64 20 77 68 65 6E 20 74 68 65 20 ressed when the
010AB0: 63 75 72 73 6F 72 20 0D 8A 09 69 73 20 6E 6F 74 cursor ...is not
010AC0: 20 61 74 20 74 68 65 20 73 74 61 72 74 20 6F 66 at the start of
010AD0: 90 20 74 68 65 20 73 74 72 69 6E 67 2C 20 61 6C . the string, al
010AE0: 6C 20 63 68 61 72 61 63 74 65 72 73 20 61 72 65 l characters are
010AF0: 20 0D 8A 09 64 65 6C 65 74 65 64 2E 20 49 66 20 ...deleted. If
010B00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
010B10: 0E 00 00 00 02 09 50 E5 0E 00 C1 02 00 00 00 02 ......P.........
010B20: 0E 00 C2 02 00 00 00 02 0E 00 C3 02 00 00 00 02 ................
010B30: 0E 00 C4 02 00 00 00 02 0E 00 C5 02 00 00 00 02 ................
010B40: 0E 00 C6 02 00 00 00 02 0E 00 C7 02 00 00 00 02 ................
010B50: 0E 00 C8 02 00 00 00 02 0E 00 C9 02 00 00 00 02 ................
010B60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010B70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010B80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010B90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010C00: 45 53 43 20 6F 72 20 53 54 4F 50 20 69 73 90 20 ESC or STOP is.
010C10: 70 72 65 73 73 65 64 20 77 68 65 6E 20 74 68 65 pressed when the
010C20: 20 63 75 72 73 6F 72 20 69 73 20 0D 8A 09 61 74 cursor is ...at
010C30: 20 74 68 65 20 73 74 61 72 74 20 6F 66 20 74 68 the start of th
010C40: 65 20 73 74 72 69 6E 67 2C 20 61 20 73 74 72 69 e string, a stri
010C50: 6E 67 20 6F 66 20 7A 65 72 6F 20 6C 65 6E 67 74 ng of zero lengt
010C60: 68 20 69 73 20 0D 8A 09 72 65 74 75 72 6E 65 64 h is ...returned
010C70: 2E 20 54 68 65 20 73 74 72 69 6E 67 20 69 73 90 . The string is.
010C80: 20 6C 69 6D 69 74 65 64 90 20 74 6F 90 20 61 90 limited. to. a.
010C90: 20 6C 65 6E 67 74 68 20 6F 66 20 32 35 35 20 0D length of 255 .
010CA0: 8A 09 62 79 74 65 73 2C 20 73 6F 20 74 68 65 20 ..bytes, so the
010CB0: 76 65 63 74 6F 72 90 20 73 74 72 69 6E 67 90 20 vector. string.
010CC0: 73 68 6F 75 6C 64 90 20 62 65 90 20 31 32 38 20 should. be. 128
010CD0: 77 6F 72 64 73 20 69 6E 20 0D 8A 09 6C 65 6E 67 words in ...leng
010CE0: 74 68 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 th.....Returns:.
010CF0: 46 41 4C 53 45 20 69 66 20 45 53 43 20 6F 72 20 FALSE if ESC or
010D00: 53 54 4F 50 20 70 72 65 73 73 65 64 2C 20 6F 74 STOP pressed, ot
010D10: 68 65 72 77 69 73 65 20 54 52 55 45 0D 0A 0D 0A herwise TRUE....
010D20: 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 Location:.CLIBHD
010D30: 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 45 78 R, ALIBHDR....Ex
010D40: 61 6D 70 6C 65 3A 09 4C 45 54 20 69 6E 70 75 74 ample:.LET input
010D50: 20 3D 20 56 45 43 20 31 32 38 0D 0A 09 55 4E 4C = VEC 128...UNL
010D60: 45 53 53 20 72 65 61 64 73 28 69 6E 70 75 74 29 ESS reads(input)
010D70: 20 44 4F 20 65 72 72 6F 72 28 22 45 73 63 61 70 DO error("Escap
010D80: 65 22 29 0D 0A 0D 0A 3E 70 61 0D 0A 53 54 52 54 e")....>pa..STRT
010D90: 4F 4E 55 4D 28 73 74 72 69 6E 67 2C 62 61 73 65 ONUM(string,base
010DA0: 29 0D 0A 09 0D 0A 45 66 66 65 63 74 3A 09 54 68 ).....Effect:.Th
010DB0: 69 73 20 66 75 6E 63 74 69 6F 6E 20 74 61 6B 65 is function take
010DC0: 73 20 61 90 20 73 74 72 69 6E 67 90 20 61 73 90 s a. string. as.
010DD0: 20 69 74 73 20 66 69 72 73 74 20 70 61 72 61 6D its first param
010DE0: 65 74 65 72 20 0D 8A 09 61 6E 64 20 74 68 65 20 eter ...and the
010DF0: 62 61 73 65 20 6F 66 20 74 68 65 20 72 65 73 75 base of the resu
010E00: 6C 74 90 20 61 73 20 69 74 73 20 73 65 63 6F 6E lt. as its secon
010E10: 64 2E 20 49 74 20 63 6F 6E 76 65 72 74 73 20 0D d. It converts .
010E20: 8A 09 74 68 65 20 73 74 72 69 6E 67 20 74 6F 20 ..the string to
010E30: 61 20 6E 75 6D 62 65 72 20 69 6E 90 20 74 68 61 a number in. tha
010E40: 74 20 62 61 73 65 20 61 6E 64 20 72 65 74 75 72 t base and retur
010E50: 6E 73 20 69 74 20 61 73 20 0D 8A 09 74 68 65 20 ns it as ...the
010E60: 72 65 73 75 6C 74 2E 0D 0A 0D 0A 52 65 74 75 72 result.....Retur
010E70: 6E 73 3A 09 54 68 65 20 6E 75 6D 62 65 72 20 6F ns:.The number o
010E80: 62 74 61 69 6E 65 64 20 62 79 20 74 68 65 20 63 btained by the c
010E90: 6F 6E 76 65 72 73 69 6F 6E 0D 0A 0D 0A 4C 6F 63 onversion....Loc
010EA0: 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 ation:.CLIBHDR,
010EB0: 41 4C 49 42 48 44 52 0D 0A 0D 0A 45 78 61 6D 70 ALIBHDR....Examp
010EC0: 6C 65 3A 09 41 20 52 45 41 44 58 20 66 75 6E 63 le:.A READX func
010ED0: 74 69 6F 6E 90 20 74 6F 90 20 69 6E 70 75 74 90 tion. to. input.
010EE0: 20 61 90 20 68 65 78 61 64 65 63 69 6D 61 6C 90 a. hexadecimal.
010EF0: 20 6E 75 6D 62 65 72 20 69 73 20 0D 8A 09 65 61 number is ...ea
010F00: 73 69 6C 79 20 77 72 69 74 74 65 6E 3A 0D 0A 09 sily written:...
010F10: 09 4C 45 54 20 72 65 61 64 78 28 29 20 3D 20 56 .LET readx() = V
010F20: 41 4C 4F 46 0D 0A 0D 0A 09 09 24 28 20 0D 0A 09 ALOF......$( ...
010F30: 20 20 20 20 20 20 20 20 20 20 20 4C 45 54 20 73 LET s
010F40: 74 72 69 6E 67 20 3D 20 56 45 43 20 31 32 38 0D tring = VEC 128.
010F50: 0A 09 20 20 20 20 20 20 20 20 20 20 20 72 65 61 .. rea
010F60: 64 73 28 73 74 72 69 6E 67 29 0D 0A 09 20 20 20 ds(string)...
010F70: 20 20 20 20 20 20 20 20 52 45 53 55 4C 54 49 53 RESULTIS
010F80: 20 73 74 72 74 6F 6E 75 6D 28 73 74 72 69 6E 67 strtonum(string
010F90: 2C 31 36 29 0D 0A 09 09 24 29 0D 0A 0D 0A 0D 0A ,16)....$)......
010FA0: 55 4E 52 44 43 48 28 29 0D 0A 0D 0A 45 66 66 65 UNRDCH()....Effe
010FB0: 63 74 3A 09 50 75 74 73 20 62 61 63 6B 20 74 68 ct:.Puts back th
010FC0: 65 20 6C 61 73 74 90 20 63 68 61 72 61 63 74 65 e last. characte
010FD0: 72 90 20 72 65 61 64 20 66 72 6F 6D 20 74 68 65 r. read from the
010FE0: 20 63 75 72 72 65 6E 74 6C 79 20 0D 8A 09 73 65 currently ...se
010FF0: 6C 65 63 74 65 64 20 73 74 72 65 61 6D 2E 20 54 lected stream. T
011000: 68 69 73 90 20 72 6F 75 74 69 6E 65 90 20 73 68 his. routine. sh
011010: 6F 75 6C 64 90 20 6E 6F 74 90 20 62 65 20 63 61 ould. not. be ca
011020: 6C 6C 65 64 20 0D 8A 09 74 77 69 63 65 20 77 69 lled ...twice wi
011030: 74 68 6F 75 74 20 61 6E 20 69 6E 74 65 72 76 65 thout an interve
011040: 6E 69 6E 67 20 63 61 6C 6C 90 20 74 6F 20 52 44 ning call. to RD
011050: 43 48 2C 20 74 68 65 20 73 65 63 6F 6E 64 20 0D CH, the second .
011060: 8A 09 63 61 6C 6C 20 77 69 6C 6C 90 20 68 61 76 ..call will. hav
011070: 65 90 20 6E 6F 90 20 65 66 66 65 63 74 2E 90 20 e. no. effect..
011080: 43 68 61 72 61 63 74 65 72 73 90 20 63 61 6E 90 Characters. can.
011090: 20 6F 6E 6C 79 20 62 65 20 0D 8A 09 72 65 74 75 only be ...retu
0110A0: 72 6E 65 64 20 74 6F 20 74 68 65 20 63 75 72 72 rned to the curr
0110B0: 65 6E 74 90 20 73 74 72 65 61 6D 90 20 69 66 90 ent. stream. if.
0110C0: 20 52 44 43 48 20 69 73 20 75 73 65 64 2C 20 74 RDCH is used, t
0110D0: 68 65 20 0D 8A 09 66 61 63 69 6C 69 74 79 20 69 he ...facility i
0110E0: 73 20 6E 6F 74 20 70 72 6F 76 69 64 65 64 20 61 s not provided a
0110F0: 74 90 20 74 68 65 20 70 72 69 6D 69 74 69 76 65 t. the primitive
011100: 20 49 2F 4F 20 72 6F 75 74 69 6E 65 20 0D 8A 09 I/O routine ...
011110: 6C 65 76 65 6C 20 28 74 68 61 74 20 69 73 20 52 level (that is R
011120: 44 56 44 55 20 61 6E 64 20 52 45 41 44 43 48 29 DVDU and READCH)
011130: 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E 6F .....Returns:.No
011140: 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F thing....Locatio
011150: 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 n:.CLIBHDR, ALIB
011160: 48 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C 65 3A 09 HDR....Example:.
011170: 63 68 20 3A 3D 20 72 64 63 68 28 29 20 52 45 50 ch := rdch() REP
011180: 45 41 54 55 4E 54 49 4C 20 63 68 3D 31 33 0D 0A EATUNTIL ch=13..
011190: 09 75 6E 72 64 63 68 28 29 0D 0A 0D 0A 3E 70 61 .unrdch()....>pa
0111A0: 0D 0A E2 28 63 29 20 53 74 72 65 61 6D 20 53 65 ...(c) Stream Se
0111B0: 6C 65 63 74 69 6F 6E 20 52 6F 75 74 69 6E 65 73 lection Routines
0111C0: E2 0D 0A 0D 0A 0D 0A 49 4E 50 55 54 28 29 0D 0A .......INPUT()..
0111D0: 0D 0A 45 66 66 65 63 74 3A 09 54 68 69 73 20 77 ..Effect:.This w
0111E0: 69 6C 6C 90 20 72 65 74 75 72 6E 90 20 61 90 20 ill. return. a.
0111F0: 76 61 6C 75 65 90 20 72 65 70 72 65 73 65 6E 74 value. represent
011200: 69 6E 67 90 20 74 68 65 20 63 75 72 72 65 6E 74 ing. the current
011210: 20 0D 8A 09 69 6E 70 75 74 20 73 74 72 65 61 6D ...input stream
011220: 2E 20 5A 65 72 6F 20 6D 65 61 6E 73 90 20 74 68 . Zero means. th
011230: 65 90 20 6B 65 79 62 6F 61 72 64 20 69 73 20 74 e. keyboard is t
011240: 68 65 20 63 75 72 72 65 6E 74 20 0D 8A 09 69 6E he current ...in
011250: 70 75 74 20 73 74 72 65 61 6D 2C 20 61 6E 79 20 put stream, any
011260: 6F 74 68 65 72 90 20 76 61 6C 75 65 90 20 69 73 other. value. is
011270: 90 20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66 . the address of
011280: 20 74 68 65 20 0D 8A 09 62 75 66 66 65 72 20 61 the ...buffer a
011290: 73 73 6F 63 69 61 74 65 64 20 77 69 74 68 20 74 ssociated with t
0112A0: 68 65 90 20 66 69 6C 65 90 20 66 72 6F 6D 90 20 he. file. from.
0112B0: 77 68 69 63 68 20 69 6E 70 75 74 20 69 73 20 0D which input is .
0112C0: 8A 09 62 65 69 6E 67 20 74 61 6B 65 6E 2E 0D 0A ..being taken...
0112D0: 0D 0A 52 65 74 75 72 6E 73 3A 09 54 68 65 20 63 ..Returns:.The c
0112E0: 75 72 72 65 6E 74 20 69 6E 70 75 74 20 73 74 72 urrent input str
0112F0: 65 61 6D 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A eam....Location:
011300: 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 44 .CLIBHDR, ALIBHD
011310: 52 0D 0A 0D 0A 0D 0A 4F 55 54 50 55 54 28 29 0D R......OUTPUT().
011320: 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 69 73 20 ...Effect:.This
011330: 77 69 6C 6C 90 20 72 65 74 75 72 6E 90 20 61 90 will. return. a.
011340: 20 76 61 6C 75 65 90 20 72 65 70 72 65 73 65 6E value. represen
011350: 74 69 6E 67 90 20 74 68 65 20 63 75 72 72 65 6E ting. the curren
011360: 74 20 0D 8A 09 6F 75 74 70 75 74 20 73 74 72 65 t ...output stre
011370: 61 6D 2E 90 20 5A 65 72 6F 90 20 6D 65 61 6E 73 am.. Zero. means
011380: 90 20 74 68 65 90 20 56 44 55 90 20 69 73 90 20 . the. VDU. is.
011390: 74 68 65 20 63 75 72 72 65 6E 74 20 0D 8A 09 73 the current ...s
0113A0: 74 72 65 61 6D 2C 20 6F 6E 65 20 6D 65 61 6E 73 tream, one means
0113B0: 20 74 68 65 90 20 70 72 69 6E 74 65 72 90 20 69 the. printer. i
0113C0: 73 20 74 68 65 20 63 75 72 72 65 6E 74 20 73 74 s the current st
0113D0: 72 65 61 6D 2C 20 0D 8A 09 61 6E 79 90 20 6F 74 ream, ...any. ot
0113E0: 68 65 72 90 20 76 61 6C 75 65 90 20 69 73 90 90 her. value. is..
0113F0: 20 74 68 65 90 90 20 61 64 64 72 65 73 73 90 20 the.. address.
011400: 6F 66 90 20 74 68 65 90 20 62 75 66 66 65 72 20 of. the. buffer
011410: 0D 8A 09 61 73 73 6F 63 69 61 74 65 64 20 77 69 ...associated wi
011420: 74 68 20 74 68 65 90 20 66 69 6C 65 90 20 74 6F th the. file. to
011430: 90 20 77 68 69 63 68 90 20 6F 75 74 70 75 74 90 . which. output.
011440: 20 69 73 20 62 65 69 6E 67 20 0D 8A 09 73 65 6E is being ...sen
011450: 74 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 t.....Returns:.T
011460: 68 65 20 63 75 72 72 65 6E 74 20 6F 75 74 70 75 he current outpu
011470: 74 20 73 74 72 65 61 6D 0D 0A 0D 0A 4C 6F 63 61 t stream....Loca
011480: 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 tion:.CLIBHDR, A
011490: 4C 49 42 48 44 52 0D 0A 0D 0A 0D 0A 53 45 4C 45 LIBHDR......SELE
0114A0: 43 54 49 4E 50 55 54 28 73 74 72 65 61 6D 29 0D CTINPUT(stream).
0114B0: 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 69 73 20 ...Effect:.This
0114C0: 69 73 20 75 73 65 64 20 74 6F 90 20 63 68 61 6E is used to. chan
0114D0: 67 65 90 20 74 68 65 90 20 63 75 72 72 65 6E 74 ge. the. current
0114E0: 6C 79 20 73 65 6C 65 63 74 65 64 20 69 6E 70 75 ly selected inpu
0114F0: 74 20 0D 8A 09 73 74 72 65 61 6D 20 28 69 2E 65 t ...stream (i.e
011500: 2E 20 74 68 61 74 20 75 73 65 64 90 20 62 79 90 . that used. by.
011510: 20 72 64 63 68 29 2E 90 20 41 90 20 73 74 72 65 rdch).. A. stre
011520: 61 6D 20 76 61 6C 75 65 20 6F 66 20 0D 8A 09 7A am value of ...z
011530: 65 72 6F 20 73 65 6C 65 63 74 73 20 74 68 65 20 ero selects the
011540: 6B 65 79 62 6F 61 72 64 2E 20 41 6E 79 20 6F 74 keyboard. Any ot
011550: 68 65 72 20 76 61 6C 75 65 20 6D 75 73 74 20 62 her value must b
011560: 65 20 74 68 65 20 0D 8A 09 61 64 64 72 65 73 73 e the ...address
011570: 20 6F 66 20 74 68 65 90 20 62 75 66 66 65 72 90 of the. buffer.
011580: 20 61 73 73 6F 63 69 61 74 65 64 90 20 77 69 74 associated. wit
011590: 68 90 20 61 90 20 66 69 6C 65 2C 20 61 6E 64 20 h. a. file, and
0115A0: 0D 8A 09 63 61 75 73 65 73 20 69 6E 70 75 74 20 ...causes input
0115B0: 74 6F 20 62 65 20 74 61 6B 65 6E 20 66 72 6F 6D to be taken from
0115C0: 20 74 68 61 74 20 66 69 6C 65 2E 20 54 68 65 20 that file. The
0115D0: 66 69 6C 65 20 6D 75 73 74 20 0D 8A 09 70 72 65 file must ...pre
0115E0: 76 69 6F 75 73 6C 79 20 68 61 76 65 20 62 65 65 viously have bee
0115F0: 6E 20 6F 70 65 6E 65 64 20 75 73 69 6E 67 20 46 n opened using F
011600: 49 4E 44 49 4E 50 55 54 2E 0D 0A 0D 0A 52 65 74 INDINPUT.....Ret
011610: 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D 0A 0D urns:.Nothing...
011620: 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 .Location:.CLIBH
011630: 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 3E DR, ALIBHDR....>
011640: 70 61 0D 0A 53 45 4C 45 43 54 4F 55 54 50 55 54 pa..SELECTOUTPUT
011650: 28 73 74 72 65 61 6D 29 0D 0A 0D 0A 45 66 66 65 (stream)....Effe
011660: 63 74 3A 09 54 68 69 73 20 69 73 20 75 73 65 64 ct:.This is used
011670: 20 74 6F 90 20 63 68 61 6E 67 65 90 20 74 68 65 to. change. the
011680: 20 63 75 72 72 65 6E 74 6C 79 20 73 65 6C 65 63 currently selec
011690: 74 65 64 20 6F 75 74 70 75 74 20 0D 8A 09 73 74 ted output ...st
0116A0: 72 65 61 6D 20 28 69 2E 65 2E 20 74 68 61 74 20 ream (i.e. that
0116B0: 75 73 65 64 20 62 79 20 77 72 63 68 2C 20 77 72 used by wrch, wr
0116C0: 69 74 65 66 20 65 74 63 2E 29 2E 20 41 20 73 74 itef etc.). A st
0116D0: 72 65 61 6D 20 0D 8A 09 76 61 6C 75 65 20 6F 66 ream ...value of
0116E0: 20 7A 65 72 6F 20 73 65 6C 65 63 74 73 20 74 68 zero selects th
0116F0: 65 20 56 44 55 2C 90 20 61 20 76 61 6C 75 65 20 e VDU,. a value
011700: 6F 66 20 6F 6E 65 20 73 65 6C 65 63 74 73 20 0D of one selects .
011710: 8A 09 74 68 65 20 70 72 69 6E 74 65 72 2E 20 41 ..the printer. A
011720: 6E 79 20 6F 74 68 65 72 90 20 76 61 6C 75 65 90 ny other. value.
011730: 20 6D 75 73 74 90 20 62 65 20 74 68 65 20 61 64 must. be the ad
011740: 64 72 65 73 73 20 6F 66 20 0D 8A 09 74 68 65 20 dress of ...the
011750: 62 75 66 66 65 72 20 61 73 73 6F 63 69 61 74 65 buffer associate
011760: 64 20 77 69 74 68 90 20 61 90 20 66 69 6C 65 2C d with. a. file,
011770: 20 61 6E 64 20 63 61 75 73 65 73 20 6F 75 74 70 and causes outp
011780: 75 74 20 0D 8A 09 74 6F 20 62 65 20 73 65 6E 74 ut ...to be sent
011790: 90 20 74 6F 90 20 74 68 61 74 90 20 66 69 6C 65 . to. that. file
0117A0: 2E 90 20 54 68 65 90 20 66 69 6C 65 90 20 6D 75 .. The. file. mu
0117B0: 73 74 20 68 61 76 65 20 62 65 65 6E 20 0D 8A 09 st have been ...
0117C0: 70 72 65 76 69 6F 75 73 6C 79 20 6F 70 65 6E 65 previously opene
0117D0: 64 20 75 73 69 6E 67 20 46 49 4E 44 4F 55 54 50 d using FINDOUTP
0117E0: 55 54 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 UT.....Returns:.
0117F0: 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 Nothing....Locat
011800: 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C ion:.CLIBHDR, AL
011810: 49 42 48 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C 65 IBHDR....Example
011820: 73 3A 09 73 65 6C 65 63 74 6F 75 74 70 75 74 28 s:.selectoutput(
011830: 6F 75 74 66 69 6C 65 62 75 66 29 0D 0A 09 73 65 outfilebuf)...se
011840: 6C 65 63 74 6F 75 74 70 75 74 28 70 72 69 6E 74 lectoutput(print
011850: 73 74 72 65 61 6D 29 0D 0A 0D 0A 0D 0A 0D 0A 0D stream).........
011860: 0A E2 28 64 29 20 46 69 6C 65 20 49 2F 4F 20 52 ..(d) File I/O R
011870: 6F 75 74 69 6E 65 73 E2 0D 0A 0D 0A 0D 0A 45 4E outines.......EN
011880: 44 52 45 41 44 28 29 0D 0A 0D 0A 45 66 66 65 63 DREAD()....Effec
011890: 74 3A 09 54 68 65 20 63 75 72 72 65 6E 74 6C 79 t:.The currently
0118A0: 20 73 65 6C 65 63 74 65 64 20 69 6E 70 75 74 20 selected input
0118B0: 73 74 72 65 61 6D 20 69 73 20 63 6C 6F 73 65 64 stream is closed
0118C0: 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 52 .....Returns:.TR
0118D0: 55 45 20 69 66 20 74 68 65 90 20 66 69 6C 65 90 UE if the. file.
0118E0: 20 77 61 73 90 20 63 6C 6F 73 65 64 90 20 73 75 was. closed. su
0118F0: 63 63 65 73 73 66 75 6C 6C 79 2C 20 46 41 4C 53 ccessfully, FALS
011900: 45 20 69 66 20 0D 8A 09 6E 6F 74 2E 0D 0A 0D 0A E if ...not.....
011910: 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 Location:.CLIBHD
011920: 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 0D 0A R, ALIBHDR......
011930: 45 4E 44 57 52 49 54 45 28 29 0D 0A 0D 0A 45 66 ENDWRITE()....Ef
011940: 66 65 63 74 3A 09 54 68 65 20 63 75 72 72 65 6E fect:.The curren
011950: 74 6C 79 20 73 65 6C 65 63 74 65 64 20 6F 75 74 tly selected out
011960: 70 75 74 20 73 74 72 65 61 6D 90 20 69 73 20 63 put stream. is c
011970: 6C 6F 73 65 64 2E 20 49 74 20 69 73 20 0D 8A 09 losed. It is ...
011980: 65 73 73 65 6E 74 69 61 6C 20 74 68 61 74 20 65 essential that e
011990: 69 74 68 65 72 20 74 68 69 73 20 72 6F 75 74 69 ither this routi
0119A0: 6E 65 20 6F 72 20 43 4C 4F 53 45 4F 55 54 20 69 ne or CLOSEOUT i
0119B0: 73 20 75 73 65 64 20 0D 8A 09 61 66 74 65 72 20 s used ...after
0119C0: 77 72 69 74 69 6E 67 20 74 6F 20 61 20 66 69 6C writing to a fil
0119D0: 65 2C 20 61 73 20 69 74 20 63 61 75 73 65 73 20 e, as it causes
0119E0: 74 68 65 20 6C 61 73 74 20 73 65 63 74 69 6F 6E the last section
0119F0: 20 0D 8A 09 6F 66 20 64 61 74 61 20 74 6F 20 62 ...of data to b
011A00: 65 20 77 72 69 74 74 65 6E 20 74 6F 20 74 68 65 e written to the
011A10: 20 64 69 73 63 2E 0D 0A 0D 0A 52 65 74 75 72 6E disc.....Return
011A20: 73 3A 09 54 52 55 45 20 69 66 20 74 68 65 20 66 s:.TRUE if the f
011A30: 69 6C 65 20 77 61 73 20 63 6C 6F 73 65 64 20 73 ile was closed s
011A40: 75 63 63 65 73 73 66 75 6C 6C 79 2C 20 65 6C 73 uccessfully, els
011A50: 65 20 46 41 4C 53 45 2E 0D 0A 0D 0A 4C 6F 63 61 e FALSE.....Loca
011A60: 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 tion:.CLIBHDR, A
011A70: 4C 49 42 48 44 52 0D 0A 0D 0A 3E 70 61 0D 0A 46 LIBHDR....>pa..F
011A80: 49 4E 44 49 4E 50 55 54 28 66 69 6C 65 6E 61 6D INDINPUT(filenam
011A90: 65 2C 62 75 66 66 65 72 29 0D 0A 0D 0A 45 66 66 e,buffer)....Eff
011AA0: 65 63 74 3A 09 54 6F 20 6F 70 65 6E 20 61 6E 20 ect:.To open an
011AB0: 69 6E 70 75 74 20 66 69 6C 65 2E 20 54 68 65 20 input file. The
011AC0: 66 69 72 73 74 20 70 61 72 61 6D 65 74 65 72 20 first parameter
011AD0: 69 73 20 61 20 73 74 72 69 6E 67 20 0D 8A 09 67 is a string ...g
011AE0: 69 76 69 6E 67 20 74 68 65 20 6E 61 6D 65 20 6F iving the name o
011AF0: 66 20 74 68 65 20 66 69 6C 65 2E 20 54 68 65 20 f the file. The
011B00: 73 65 63 6F 6E 64 20 70 61 72 61 6D 65 74 65 72 second parameter
011B10: 20 69 73 20 61 20 0D 8A 09 76 65 63 74 6F 72 20 is a ...vector
011B20: 77 68 69 63 68 20 77 69 6C 6C 20 62 65 90 20 75 which will be. u
011B30: 73 65 64 90 20 66 6F 72 90 20 74 68 65 20 66 69 sed. for. the fi
011B40: 6C 65 20 62 75 66 66 65 72 2E 20 54 68 69 73 20 le buffer. This
011B50: 0D 8A 09 76 65 63 74 6F 72 20 73 68 6F 75 6C 64 ...vector should
011B60: 20 62 65 20 38 32 90 20 77 6F 72 64 73 90 20 6C be 82. words. l
011B70: 6F 6E 67 90 20 75 6E 64 65 72 90 20 43 50 2F 4D ong. under. CP/M
011B80: 20 61 6E 64 20 31 30 32 34 20 0D 8A 09 77 6F 72 and 1024 ...wor
011B90: 64 73 20 6C 6F 6E 67 20 75 6E 64 65 72 20 41 4D ds long under AM
011BA0: 53 44 4F 53 2E 20 54 68 65 90 20 66 69 6C 65 6E SDOS. The. filen
011BB0: 61 6D 65 20 6D 75 73 74 20 62 65 20 61 20 76 61 ame must be a va
011BC0: 6C 69 64 20 0D 8A 09 43 50 2F 4D 20 6F 72 90 20 lid ...CP/M or.
011BD0: 41 4D 53 44 4F 53 90 20 66 69 6C 65 6E 61 6D 65 AMSDOS. filename
011BE0: 2C 90 20 61 6E 64 90 20 6D 61 79 90 20 69 6E 63 ,. and. may. inc
011BF0: 6C 75 64 65 90 20 61 20 64 72 69 76 65 20 0D 8A lude. a drive ..
011C00: 09 73 70 65 63 69 66 69 65 72 2E 0D 0A 0D 0A 52 .specifier.....R
011C10: 65 74 75 72 6E 73 3A 09 49 66 20 74 68 65 20 66 eturns:.If the f
011C20: 69 6C 65 20 77 61 73 20 6F 70 65 6E 65 64 90 20 ile was opened.
011C30: 73 75 63 63 65 73 73 66 75 6C 6C 79 2C 20 74 68 successfully, th
011C40: 65 20 76 61 6C 75 65 20 27 54 52 55 45 27 20 0D e value 'TRUE' .
011C50: 8A 09 69 73 20 72 65 74 75 72 6E 65 64 2C 20 6F ..is returned, o
011C60: 74 68 65 72 77 69 73 65 20 27 46 41 4C 53 45 27 therwise 'FALSE'
011C70: 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 .....Location:.C
011C80: 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D LIBHDR, ALIBHDR.
011C90: 0A 0D 0A 45 78 61 6D 70 6C 65 3A 09 4C 45 54 20 ...Example:.LET
011CA0: 69 6E 62 75 66 20 3D 20 56 45 43 20 38 32 0D 0A inbuf = VEC 82..
011CB0: 09 54 45 53 54 20 66 69 6E 64 69 6E 70 75 74 28 .TEST findinput(
011CC0: 22 41 3A 6E 61 6D 65 73 2E 64 74 61 22 2C 69 6E "A:names.dta",in
011CD0: 62 75 66 29 20 0D 0A 09 54 48 45 4E 20 73 65 6C buf) ...THEN sel
011CE0: 65 63 74 69 6E 70 75 74 28 69 6E 62 75 66 29 0D ectinput(inbuf).
011CF0: 0A 09 45 4C 53 45 20 65 72 72 6F 72 28 22 43 61 ..ELSE error("Ca
011D00: 6E 6E 6F 74 20 6F 70 65 6E 20 66 69 6C 65 22 29 nnot open file")
011D10: 0D 0A 0D 0A 0D 0A 46 49 4E 44 4F 55 54 50 55 54 ......FINDOUTPUT
011D20: 28 66 69 6C 65 6E 61 6D 65 2C 62 75 66 66 65 72 (filename,buffer
011D30: 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 6F 20 )....Effect:.To
011D40: 6F 70 65 6E 20 61 6E 90 20 6F 75 74 70 75 74 90 open an. output.
011D50: 20 66 69 6C 65 2E 90 20 54 68 65 90 20 66 69 72 file.. The. fir
011D60: 73 74 90 20 70 61 72 61 6D 65 74 65 72 90 20 69 st. parameter. i
011D70: 73 20 61 20 0D 8A 09 73 74 72 69 6E 67 90 20 67 s a ...string. g
011D80: 69 76 69 6E 67 90 20 74 68 65 90 20 6E 61 6D 65 iving. the. name
011D90: 90 20 6F 66 90 20 74 68 65 90 20 66 69 6C 65 2E . of. the. file.
011DA0: 90 20 54 68 65 90 20 73 65 63 6F 6E 64 20 0D 8A . The. second ..
011DB0: 09 70 61 72 61 6D 65 74 65 72 20 69 73 20 61 20 .parameter is a
011DC0: 76 65 63 74 6F 72 20 77 68 69 63 68 20 77 69 6C vector which wil
011DD0: 6C 90 20 62 65 20 75 73 65 64 20 66 6F 72 20 74 l. be used for t
011DE0: 68 65 20 66 69 6C 65 20 0D 8A 09 62 75 66 66 65 he file ...buffe
011DF0: 72 2E 20 54 68 69 73 20 76 65 63 74 6F 72 20 73 r. This vector s
011E00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
011E10: 0F 00 00 00 02 09 50 E5 0F 00 C1 02 00 00 00 02 ......P.........
011E20: 0F 00 C2 02 00 00 00 02 0F 00 C3 02 00 00 00 02 ................
011E30: 0F 00 C4 02 00 00 00 02 0F 00 C5 02 00 00 00 02 ................
011E40: 0F 00 C6 02 00 00 00 02 0F 00 C7 02 00 00 00 02 ................
011E50: 0F 00 C8 02 00 00 00 02 0F 00 C9 02 00 00 00 02 ................
011E60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011E70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011E80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011E90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011EA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011EB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011EC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011ED0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011EE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011EF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011F00: 68 6F 75 6C 64 20 62 65 20 38 32 20 77 6F 72 64 hould be 82 word
011F10: 73 20 6C 6F 6E 67 20 75 6E 64 65 72 20 43 50 2F s long under CP/
011F20: 4D 20 0D 8A 09 61 6E 64 20 31 30 32 34 20 77 6F M ...and 1024 wo
011F30: 72 64 73 20 6C 6F 6E 67 20 75 6E 64 65 72 20 41 rds long under A
011F40: 4D 53 44 4F 53 2E 20 54 68 65 20 66 69 6C 65 6E MSDOS. The filen
011F50: 61 6D 65 20 6D 75 73 74 20 62 65 20 0D 8A 09 61 ame must be ...a
011F60: 20 76 61 6C 69 64 20 43 50 2F 4D 20 6F 72 90 20 valid CP/M or.
011F70: 41 4D 53 44 4F 53 90 20 66 69 6C 65 6E 61 6D 65 AMSDOS. filename
011F80: 2C 90 20 61 6E 64 90 20 6D 61 79 20 69 6E 63 6C ,. and. may incl
011F90: 75 64 65 20 61 20 0D 8A 09 64 72 69 76 65 20 73 ude a ...drive s
011FA0: 70 65 63 69 66 69 65 72 2E 0D 0A 0D 0A 52 65 74 pecifier.....Ret
011FB0: 75 72 6E 73 3A 09 49 66 20 74 68 65 20 66 69 6C urns:.If the fil
011FC0: 65 20 77 61 73 20 6F 70 65 6E 65 64 90 20 73 75 e was opened. su
011FD0: 63 63 65 73 73 66 75 6C 6C 79 2C 20 74 68 65 20 ccessfully, the
011FE0: 76 61 6C 75 65 20 27 54 52 55 45 27 20 0D 8A 09 value 'TRUE' ...
011FF0: 69 73 20 72 65 74 75 72 6E 65 64 2C 20 6F 74 68 is returned, oth
012000: 65 72 77 69 73 65 20 27 46 41 4C 53 45 27 2E 0D erwise 'FALSE'..
012010: 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 ...Location:.CLI
012020: 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D BHDR, ALIBHDR...
012030: 0A 45 78 61 6D 70 6C 65 3A 09 4C 45 54 20 6F 75 .Example:.LET ou
012040: 74 62 75 66 20 3D 20 56 45 43 20 38 32 0D 0A 09 tbuf = VEC 82...
012050: 54 45 53 54 20 66 69 6E 64 6F 75 74 70 75 74 28 TEST findoutput(
012060: 22 41 3A 6E 61 6D 65 73 2E 64 74 61 22 2C 6F 75 "A:names.dta",ou
012070: 74 62 75 66 29 20 0D 0A 09 54 48 45 4E 20 73 65 tbuf) ...THEN se
012080: 6C 65 63 74 6F 75 74 70 75 74 28 6F 75 74 62 75 lectoutput(outbu
012090: 66 29 0D 0A 09 45 4C 53 45 20 65 72 72 6F 72 28 f)...ELSE error(
0120A0: 22 43 61 6E 6E 6F 74 20 6F 70 65 6E 20 66 69 6C "Cannot open fil
0120B0: 65 22 29 0D 0A 0D 0A 3E 70 61 0D 0A 52 45 57 49 e")....>pa..REWI
0120C0: 4E 44 28 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 ND()....Effect:.
0120D0: 54 68 65 20 63 75 72 72 65 6E 74 20 69 6E 70 75 The current inpu
0120E0: 74 20 73 74 72 65 61 6D 90 20 69 73 90 20 72 65 t stream. is. re
0120F0: 77 6F 75 6E 64 2E 90 20 49 66 20 74 68 65 20 63 wound.. If the c
012100: 75 72 72 65 6E 74 20 0D 8A 09 73 74 72 65 61 6D urrent ...stream
012110: 20 69 73 20 74 68 65 20 6B 65 79 62 6F 61 72 64 is the keyboard
012120: 20 74 68 69 73 90 20 68 61 73 90 20 6E 6F 20 65 this. has. no e
012130: 66 66 65 63 74 2C 20 69 66 20 61 20 66 69 6C 65 ffect, if a file
012140: 20 0D 8A 09 74 68 65 20 66 69 6C 65 20 70 6F 69 ...the file poi
012150: 6E 74 65 72 20 69 73 20 73 65 74 20 74 6F 90 20 nter is set to.
012160: 74 68 65 90 20 73 74 61 72 74 20 6F 66 20 74 68 the. start of th
012170: 65 20 66 69 6C 65 2C 20 73 6F 20 0D 8A 09 74 68 e file, so ...th
012180: 65 20 6E 65 78 74 20 69 6E 70 75 74 20 77 69 6C e next input wil
012190: 6C 20 62 65 20 74 61 6B 65 6E 20 66 72 6F 6D 20 l be taken from
0121A0: 74 68 65 20 73 74 61 72 74 2E 20 52 45 57 49 4E the start. REWIN
0121B0: 44 20 69 73 20 0D 8A 09 6E 6F 74 20 70 72 6F 76 D is ...not prov
0121C0: 69 64 65 64 20 69 6E 20 74 68 65 20 41 4D 53 44 ided in the AMSD
0121D0: 4F 53 20 76 65 72 73 69 6F 6E 2E 0D 0A 0D 0A 52 OS version.....R
0121E0: 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D eturns:.Nothing.
0121F0: 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 ...Location:.CLI
012200: 42 48 44 52 0D 0A 0D 0A 0D 0A 3E 2D 2D 2D 21 2D BHDR......>---!-
012210: 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D ----!-----!-----
012220: 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D --!-------!-----
012230: 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D --!-------!-----
012240: 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 --!-------!----R
012250: 0D 0A 0D 0A 45 78 61 6D 70 6C 65 20 6F 66 20 74 ....Example of t
012260: 68 65 20 75 73 65 20 6F 66 20 66 69 6C 65 20 49 he use of file I
012270: 2F 4F 20 72 6F 75 74 69 6E 65 73 3A 0D 0A 0D 0A /O routines:....
012280: 09 09 4C 45 54 20 62 75 66 66 65 72 20 3D 20 56 ..LET buffer = V
012290: 45 43 20 31 30 32 34 0D 0A 09 09 4C 45 54 20 66 EC 1024....LET f
0122A0: 69 6C 65 6E 61 6D 65 20 3D 20 56 45 43 20 32 30 ilename = VEC 20
0122B0: 0D 0A 09 09 77 72 69 74 65 66 28 22 50 6C 65 61 ....writef("Plea
0122C0: 73 65 20 65 6E 74 65 72 20 74 68 65 20 6D 65 73 se enter the mes
0122D0: 73 61 67 65 20 66 69 6C 65 20 6E 61 6D 65 3A 20 sage file name:
0122E0: 22 29 0D 0A 09 09 72 65 61 64 73 28 66 69 6C 65 ")....reads(file
0122F0: 6E 61 6D 65 29 0D 0A 09 09 54 45 53 54 20 66 69 name)....TEST fi
012300: 6E 64 69 6E 70 75 74 28 66 69 6C 65 6E 61 6D 65 ndinput(filename
012310: 2C 62 75 66 66 65 72 29 20 54 48 45 4E 0D 0A 09 ,buffer) THEN...
012320: 09 24 28 0D 0A 09 09 20 20 4C 45 54 20 63 68 61 .$(.... LET cha
012330: 72 20 3D 20 3F 0D 0A 09 09 20 20 73 65 6C 65 63 r = ?.... selec
012340: 74 69 6E 70 75 74 28 62 75 66 66 65 72 29 0D 0A tinput(buffer)..
012350: 09 09 20 20 63 68 61 72 20 3A 3D 20 72 64 63 68 .. char := rdch
012360: 28 29 0D 0A 09 09 20 20 55 4E 54 49 4C 20 63 68 ().... UNTIL ch
012370: 61 72 20 3D 20 73 6F 66 74 65 6F 66 63 68 20 4C ar = softeofch L
012380: 4F 47 4F 52 20 63 68 61 72 20 3D 20 65 6E 64 73 OGOR char = ends
012390: 74 72 65 61 6D 63 68 20 44 4F 0D 0A 09 09 20 20 treamch DO....
0123A0: 20 20 24 28 20 77 72 63 68 28 63 68 61 72 29 20 $( wrch(char)
0123B0: 3B 20 63 68 61 72 20 3A 3D 20 72 64 63 68 28 29 ; char := rdch()
0123C0: 20 24 29 0D 0A 09 09 20 20 65 6E 64 72 65 61 64 $).... endread
0123D0: 28 62 75 66 66 65 72 29 0D 0A 09 09 20 20 73 65 (buffer).... se
0123E0: 6C 65 63 74 69 6E 70 75 74 28 76 64 75 73 74 72 lectinput(vdustr
0123F0: 65 61 6D 29 0D 0A 09 09 24 29 0D 0A 09 09 45 4C eam)....$)....EL
012400: 53 45 20 77 72 69 74 65 66 28 22 4E 6F 20 6D 65 SE writef("No me
012410: 73 73 61 67 65 73 2A 4E 22 29 0D 0A 0D 0A 0D 0A ssages*N")......
012420: 54 68 69 73 20 77 69 6C 6C 20 61 73 6B 20 66 6F This will ask fo
012430: 72 20 61 90 20 66 69 6C 65 90 20 6E 61 6D 65 90 r a. file. name.
012440: 20 61 6E 64 90 20 74 68 65 6E 2C 90 20 69 66 20 and. then,. if
012450: 74 68 61 74 20 66 69 6C 65 20 65 78 69 73 74 73 that file exists
012460: 2C 20 77 69 6C 6C 20 0D 8A 70 72 69 6E 74 20 6F , will ..print o
012470: 75 74 20 74 68 65 20 63 6F 6E 74 65 6E 74 73 20 ut the contents
012480: 6F 66 20 69 74 2E 0D 0A 3E 2D 2D 2D 2D 2D 2D 2D of it...>-------
012490: 2D 2D 2D 2D 2D 2D 2D 20 4C 2D 2D 2D 2D 2D 2D 2D ------- L-------
0124A0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0124B0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0124C0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A !-------!----R..
0124D0: 3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D >---!-----!-----
0124E0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0124F0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
012500: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
012510: 21 2D 2D 2D 2D 52 0D 0A 3E 70 61 0D 0A E2 28 65 !----R..>pa...(e
012520: 29 20 54 68 65 20 50 72 69 6D 69 74 69 76 65 20 ) The Primitive
012530: 49 2F 4F 20 4F 70 65 72 61 74 69 6F 6E 73 E2 0D I/O Operations..
012540: 0A 0D 0A 09 54 68 65 20 6C 69 62 72 61 72 79 20 ....The library
012550: 63 6F 6E 74 61 69 6E 73 90 20 70 72 69 6D 69 74 contains. primit
012560: 69 76 65 90 20 72 6F 75 74 69 6E 65 73 90 20 66 ive. routines. f
012570: 6F 72 90 20 72 65 61 64 69 6E 67 2F 77 72 69 74 or. reading/writ
012580: 69 6E 67 20 74 6F 20 0D 8A 66 69 6C 65 73 2C 20 ing to ..files,
012590: 72 65 61 64 69 6E 67 2F 77 72 69 74 69 6E 67 20 reading/writing
0125A0: 74 6F 20 74 68 65 90 20 56 44 55 2C 90 20 61 6E to the. VDU,. an
0125B0: 64 90 20 77 72 69 74 69 6E 67 90 20 74 6F 20 74 d. writing. to t
0125C0: 68 65 20 70 72 69 6E 74 65 72 2E 20 54 68 65 20 he printer. The
0125D0: 0D 8A 68 69 67 68 65 72 20 6C 65 76 65 6C 20 52 ..higher level R
0125E0: 44 43 48 20 61 6E 64 20 57 52 43 48 20 72 6F 75 DCH and WRCH rou
0125F0: 74 69 6E 65 73 20 73 77 69 74 63 68 20 62 65 74 tines switch bet
012600: 77 65 65 6E 20 74 68 65 73 65 20 72 6F 75 74 69 ween these routi
012610: 6E 65 73 20 77 68 65 6E 20 0D 8A 63 61 6C 6C 65 nes when ..calle
012620: 64 20 75 70 6F 6E 20 74 6F 20 64 6F 90 20 73 6F d upon to do. so
012630: 90 20 62 79 90 20 53 45 4C 45 43 54 49 4E 50 55 . by. SELECTINPU
012640: 54 90 20 6F 72 90 20 53 45 4C 45 43 54 4F 55 54 T. or. SELECTOUT
012650: 50 55 54 2E 90 20 49 74 20 69 73 20 71 75 69 74 PUT.. It is quit
012660: 65 20 0D 8A 70 6F 73 73 69 62 6C 65 20 74 6F 20 e ..possible to
012670: 75 73 65 20 74 68 65 20 70 72 69 6D 69 74 69 76 use the primitiv
012680: 65 90 20 72 6F 75 74 69 6E 65 73 90 20 73 65 70 e. routines. sep
012690: 61 72 61 74 65 6C 79 20 66 72 6F 6D 20 52 44 43 arately from RDC
0126A0: 48 2F 57 52 43 48 20 61 6E 64 20 0D 8A 73 6F 20 H/WRCH and ..so
0126B0: 72 65 61 64 2F 77 72 69 74 65 20 66 69 6C 65 73 read/write files
0126C0: 20 61 6E 64 20 74 68 65 90 20 73 63 72 65 65 6E and the. screen
0126D0: 2F 6B 65 79 62 6F 61 72 64 90 20 61 74 20 74 68 /keyboard. at th
0126E0: 65 20 73 61 6D 65 20 74 69 6D 65 20 77 69 74 68 e same time with
0126F0: 6F 75 74 20 0D 8A 75 73 69 6E 67 20 53 45 4C 45 out ..using SELE
012700: 43 54 49 4E 50 55 54 20 6F 72 20 53 45 4C 45 43 CTINPUT or SELEC
012710: 54 4F 55 54 50 55 54 2E 90 20 54 68 65 73 65 90 TOUTPUT.. These.
012720: 20 72 6F 75 74 69 6E 65 73 90 20 61 72 65 20 52 routines. are R
012730: 44 56 44 55 2C 20 57 52 56 44 55 2C 20 0D 8A 52 DVDU, WRVDU, ..R
012740: 45 41 44 43 48 20 61 6E 64 20 57 52 49 54 45 43 EADCH and WRITEC
012750: 48 2E 0D 0A 0D 0A 3E 2D 2D 2D 2D 2D 2D 2D 2D 2D H.....>---------
012760: 2D 2D 2D 2D 2D 20 4C 2D 2D 2D 2D 2D 2D 2D 21 2D ----- L-------!-
012770: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
012780: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
012790: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A 0D 0A ------!----R....
0127A0: 0D 0A 0D 0A 43 4C 4F 53 45 49 4E 28 62 75 66 66 ....CLOSEIN(buff
0127B0: 65 72 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 er)....Effect:.T
0127C0: 68 65 20 69 6E 70 75 74 20 66 69 6C 65 20 61 73 he input file as
0127D0: 73 6F 63 69 61 74 65 64 20 77 69 74 68 20 74 68 sociated with th
0127E0: 65 20 62 75 66 66 65 72 20 69 73 20 63 6C 6F 73 e buffer is clos
0127F0: 65 64 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 ed.....Returns:.
012800: 54 52 55 45 20 69 66 20 74 68 65 90 20 66 69 6C TRUE if the. fil
012810: 65 90 20 77 61 73 90 20 63 6C 6F 73 65 64 90 20 e. was. closed.
012820: 73 75 63 63 65 73 73 66 75 6C 6C 79 2C 20 46 41 successfully, FA
012830: 4C 53 45 20 69 66 20 0D 8A 09 6E 6F 74 2E 0D 0A LSE if ...not...
012840: 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 ..Location:.CLIB
012850: 48 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A HDR, ALIBHDR....
012860: 0D 0A 43 4C 4F 53 45 4F 55 54 28 62 75 66 66 65 ..CLOSEOUT(buffe
012870: 72 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 r)....Effect:.Th
012880: 65 20 6F 75 74 70 75 74 20 66 69 6C 65 20 61 73 e output file as
012890: 73 6F 63 69 61 74 65 64 20 77 69 74 68 90 20 74 sociated with. t
0128A0: 68 65 20 62 75 66 66 65 72 20 69 73 20 63 6C 6F he buffer is clo
0128B0: 73 65 64 2E 20 0D 8A 09 49 74 90 20 69 73 90 20 sed. ...It. is.
0128C0: 65 73 73 65 6E 74 69 61 6C 90 90 20 74 68 61 74 essential.. that
0128D0: 90 90 20 65 69 74 68 65 72 90 90 20 74 68 69 73 .. either.. this
0128E0: 90 90 20 72 6F 75 74 69 6E 65 90 20 6F 72 20 0D .. routine. or .
0128F0: 8A 09 45 4E 44 57 52 49 54 45 20 69 73 20 75 73 ..ENDWRITE is us
012900: 65 64 20 61 66 74 65 72 20 77 72 69 74 69 6E 67 ed after writing
012910: 20 74 6F 20 61 20 66 69 6C 65 2C 20 61 73 20 69 to a file, as i
012920: 74 20 63 61 75 73 65 73 20 0D 8A 09 74 68 65 20 t causes ...the
012930: 6C 61 73 74 20 73 65 63 74 69 6F 6E 20 6F 66 20 last section of
012940: 64 61 74 61 20 74 6F 20 62 65 20 77 72 69 74 74 data to be writt
012950: 65 6E 20 74 6F 20 74 68 65 20 64 69 73 63 2E 0D en to the disc..
012960: 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 52 55 45 ...Returns:.TRUE
012970: 20 69 66 20 74 68 65 20 66 69 6C 65 20 77 61 73 if the file was
012980: 20 63 6C 6F 73 65 64 20 73 75 63 63 65 73 73 66 closed successf
012990: 75 6C 6C 79 2C 20 65 6C 73 65 20 46 41 4C 53 45 ully, else FALSE
0129A0: 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 .....Location:.C
0129B0: 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D LIBHDR, ALIBHDR.
0129C0: 0A 0D 0A 0D 0A 46 4C 55 53 48 28 29 0D 0A 0D 0A .....FLUSH()....
0129D0: 45 66 66 65 63 74 3A 09 45 6D 70 74 69 65 73 20 Effect:.Empties
0129E0: 74 68 65 20 6B 65 79 62 6F 61 72 64 20 62 75 66 the keyboard buf
0129F0: 66 65 72 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A fer.....Returns:
012A00: 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 .Nothing....Loca
012A10: 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 tion:.CLIBHDR, A
012A20: 4C 49 42 48 44 52 0D 0A 0D 0A 3E 70 61 0D 0A 50 LIBHDR....>pa..P
012A30: 52 42 55 53 59 28 29 0D 0A 0D 0A 45 66 66 65 63 RBUSY()....Effec
012A40: 74 3A 09 46 69 6E 64 73 20 6F 75 74 20 69 66 20 t:.Finds out if
012A50: 74 68 65 20 70 72 69 6E 74 65 72 20 69 73 20 62 the printer is b
012A60: 75 73 79 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A usy.....Returns:
012A70: 09 54 52 55 45 20 69 66 20 62 75 73 79 2C 20 46 .TRUE if busy, F
012A80: 41 4C 53 45 20 69 66 20 6E 6F 74 0D 0A 0D 0A 4C ALSE if not....L
012A90: 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 ocation:.CLIBHDR
012AA0: 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 45 78 61 , ALIBHDR....Exa
012AB0: 6D 70 6C 65 3A 09 49 46 20 70 72 62 75 73 79 28 mple:.IF prbusy(
012AC0: 29 20 54 48 45 4E 20 77 72 69 74 65 73 28 22 50 ) THEN writes("P
012AD0: 75 74 20 74 68 65 20 70 72 69 6E 74 65 72 20 6F ut the printer o
012AE0: 6E 20 6C 69 6E 65 2A 4E 22 29 0D 0A 09 57 48 49 n line*N")...WHI
012AF0: 4C 45 20 70 72 62 75 73 79 28 29 20 4C 4F 4F 50 LE prbusy() LOOP
012B00: 0D 0A 0D 0A 0D 0A 50 52 43 48 28 63 68 61 72 29 ......PRCH(char)
012B10: 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 53 65 6E 64 ....Effect:.Send
012B20: 73 20 61 20 63 68 61 72 61 63 74 65 72 20 74 6F s a character to
012B30: 90 20 74 68 65 90 20 70 72 69 6E 74 65 72 2E 90 . the. printer..
012B40: 20 49 66 20 74 68 65 20 70 72 69 6E 74 65 72 20 If the printer
012B50: 69 73 20 0D 8A 09 62 75 73 79 20 74 68 65 6E 20 is ...busy then
012B60: 50 52 43 48 20 77 61 69 74 73 20 75 6E 74 69 6C PRCH waits until
012B70: 90 20 74 68 65 20 63 68 61 72 61 63 74 65 72 20 . the character
012B80: 63 61 6E 20 62 65 20 73 65 6E 74 2E 20 0D 8A 09 can be sent. ...
012B90: 50 52 42 55 53 59 20 73 68 6F 75 6C 64 20 62 65 PRBUSY should be
012BA0: 20 75 73 65 64 90 20 74 6F 90 20 74 65 73 74 90 used. to. test.
012BB0: 20 66 6F 72 20 74 68 65 20 70 72 69 6E 74 65 72 for the printer
012BC0: 20 62 65 69 6E 67 20 0D 8A 09 62 75 73 79 2E 20 being ...busy.
012BD0: 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69 73 20 This routine is
012BE0: 63 61 6C 6C 65 64 20 62 79 20 57 52 43 48 20 69 called by WRCH i
012BF0: 66 20 74 68 65 20 70 72 69 6E 74 65 72 20 69 73 f the printer is
012C00: 20 0D 8A 09 74 68 65 20 73 65 6C 65 63 74 65 64 ...the selected
012C10: 20 6F 75 74 70 75 74 20 73 74 72 65 61 6D 2E 0D output stream..
012C20: 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 52 55 45 ...Returns:.TRUE
012C30: 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C ....Location:.CL
012C40: 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A IBHDR, ALIBHDR..
012C50: 0D 0A 0D 0A 52 44 54 45 53 54 28 29 0D 0A 0D 0A ....RDTEST()....
012C60: 45 66 66 65 63 74 3A 09 46 69 6E 64 73 20 6F 75 Effect:.Finds ou
012C70: 74 20 69 66 20 61 20 6B 65 79 20 68 61 73 20 62 t if a key has b
012C80: 65 65 6E 20 70 72 65 73 73 65 64 2E 0D 0A 0D 0A een pressed.....
012C90: 52 65 74 75 72 6E 73 3A 09 54 52 55 45 20 69 66 Returns:.TRUE if
012CA0: 20 61 20 6B 65 79 20 68 61 73 20 62 65 65 6E 20 a key has been
012CB0: 70 72 65 73 73 65 64 2C 20 46 41 4C 53 45 20 69 pressed, FALSE i
012CC0: 66 20 6E 6F 74 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 f not.....Locati
012CD0: 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 on:.CLIBHDR, ALI
012CE0: 42 48 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C 65 3A BHDR....Example:
012CF0: 09 57 48 49 4C 45 20 72 64 74 65 73 74 28 29 20 .WHILE rdtest()
012D00: 44 4F 20 72 64 63 68 28 29 0D 0A 0D 0A 0D 0A 52 DO rdch()......R
012D10: 44 56 44 55 28 29 0D 0A 0D 0A 45 66 66 65 63 74 DVDU()....Effect
012D20: 3A 09 52 65 61 64 73 20 61 90 20 63 68 61 72 61 :.Reads a. chara
012D30: 63 74 65 72 90 20 66 72 6F 6D 90 20 74 68 65 90 cter. from. the.
012D40: 20 6B 65 79 62 6F 61 72 64 2C 90 20 77 68 61 74 keyboard,. what
012D50: 65 76 65 72 20 74 68 65 20 0D 8A 09 63 75 72 72 ever the ...curr
012D60: 65 6E 74 6C 79 90 20 73 65 6C 65 63 74 65 64 90 ently. selected.
012D70: 20 69 6E 70 75 74 90 20 73 74 72 65 61 6D 2E 90 input. stream..
012D80: 20 54 68 69 73 90 20 72 6F 75 74 69 6E 65 90 20 This. routine.
012D90: 69 73 20 0D 8A 09 63 61 6C 6C 65 64 20 62 79 20 is ...called by
012DA0: 52 44 43 48 20 69 66 20 74 68 65 90 20 6B 65 79 RDCH if the. key
012DB0: 62 6F 61 72 64 90 20 69 73 20 74 68 65 20 73 65 board. is the se
012DC0: 6C 65 63 74 65 64 20 69 6E 70 75 74 20 0D 8A 09 lected input ...
012DD0: 73 74 72 65 61 6D 2E 20 52 44 56 44 55 20 69 73 stream. RDVDU is
012DE0: 20 70 72 65 2D 64 65 66 69 6E 65 64 90 20 69 6E pre-defined. in
012DF0: 90 20 74 68 65 20 43 50 2F 4D 20 63 6F 6D 70 69 . the CP/M compi
012E00: 6C 65 72 20 73 6F 20 0D 8A 09 74 68 61 74 20 69 ler so ...that i
012E10: 74 90 20 63 61 6E 90 20 62 75 66 66 65 72 90 20 t. can. buffer.
012E20: 63 68 61 72 61 63 74 65 72 73 90 20 74 6F 90 20 characters. to.
012E30: 61 6C 6C 6F 77 90 20 66 6F 72 20 62 72 65 61 6B allow. for break
012E40: 20 0D 8A 09 74 65 73 74 69 6E 67 20 77 69 74 68 ...testing with
012E50: 6F 75 74 20 6C 6F 73 69 6E 67 20 63 68 61 72 61 out losing chara
012E60: 63 74 65 72 73 2E 0D 0A 0D 0A 52 65 74 75 72 6E cters.....Return
012E70: 73 3A 09 54 68 65 20 63 68 61 72 61 63 74 65 72 s:.The character
012E80: 20 72 65 61 64 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 read.....Locati
012E90: 6F 6E 3A 09 50 72 65 2D 64 65 66 69 6E 65 64 20 on:.Pre-defined
012EA0: 69 6E 20 43 50 2F 4D 20 63 6F 6D 70 69 6C 65 72 in CP/M compiler
012EB0: 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 3E 70 61 , ALIBHDR....>pa
012EC0: 0D 0A 52 45 41 44 43 48 28 62 75 66 66 65 72 29 ..READCH(buffer)
012ED0: 09 0D 0A 09 0D 0A 45 66 66 65 63 74 3A 09 52 65 ......Effect:.Re
012EE0: 61 64 73 20 61 20 63 68 61 72 61 63 74 65 72 20 ads a character
012EF0: 66 72 6F 6D 20 61 90 20 66 69 6C 65 2C 20 77 68 from a. file, wh
012F00: 61 74 65 76 65 72 20 74 68 65 20 63 75 72 72 65 atever the curre
012F10: 6E 74 6C 79 20 0D 8A 09 73 65 6C 65 63 74 65 64 ntly ...selected
012F20: 20 69 6E 70 75 74 20 73 74 72 65 61 6D 2E 20 54 input stream. T
012F30: 68 65 20 62 75 66 66 65 72 90 20 69 73 20 6E 6F he buffer. is no
012F40: 74 20 6E 65 65 64 65 64 20 75 6E 64 65 72 20 0D t needed under .
012F50: 8A 09 41 4D 53 44 4F 53 2E 20 54 68 69 73 20 72 ..AMSDOS. This r
012F60: 6F 75 74 69 6E 65 20 69 73 20 63 61 6C 6C 65 64 outine is called
012F70: 90 20 62 79 90 20 52 44 43 48 90 20 69 66 20 61 . by. RDCH. if a
012F80: 20 66 69 6C 65 20 69 73 20 0D 8A 09 74 68 65 20 file is ...the
012F90: 73 65 6C 65 63 74 65 64 20 69 6E 70 75 74 20 73 selected input s
012FA0: 74 72 65 61 6D 2E 0D 0A 0D 0A 52 65 74 75 72 6E tream.....Return
012FB0: 73 3A 09 54 68 65 20 63 68 61 72 61 63 74 65 72 s:.The character
012FC0: 20 72 65 61 64 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 read.....Locati
012FD0: 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 on:.CLIBHDR, ALI
012FE0: 42 48 44 52 0D 0A 0D 0A 0D 0A 52 45 57 49 4E 44 BHDR......REWIND
012FF0: 49 4E 28 62 75 66 66 65 72 29 0D 0A 0D 0A 45 66 IN(buffer)....Ef
013000: 66 65 63 74 3A 09 54 68 65 20 66 69 6C 65 20 70 fect:.The file p
013010: 6F 69 6E 74 65 72 20 66 6F 72 20 74 68 65 20 73 ointer for the s
013020: 70 65 63 69 66 69 65 64 90 20 66 69 6C 65 20 69 pecified. file i
013030: 73 20 73 65 74 20 74 6F 20 74 68 65 20 0D 8A 09 s set to the ...
013040: 73 74 61 72 74 20 6F 66 20 74 68 65 20 66 69 6C start of the fil
013050: 65 2E 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 e. This routine
013060: 69 73 20 63 61 6C 6C 65 64 20 62 79 20 52 45 57 is called by REW
013070: 49 4E 44 20 69 66 20 0D 8A 09 61 20 66 69 6C 65 IND if ...a file
013080: 20 69 73 20 74 68 65 20 73 65 6C 65 63 74 65 64 is the selected
013090: 90 20 69 6E 70 75 74 90 20 73 74 72 65 61 6D 2E . input. stream.
0130A0: 20 52 45 57 49 4E 44 49 4E 20 69 73 20 6E 6F 74 REWINDIN is not
0130B0: 20 0D 8A 09 70 72 6F 76 69 64 65 64 20 69 6E 20 ...provided in
0130C0: 74 68 65 20 41 4D 53 44 4F 53 20 76 65 72 73 69 the AMSDOS versi
0130D0: 6F 6E 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 on.....Returns:.
0130E0: 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 Nothing....Locat
0130F0: 69 6F 6E 3A 09 43 4C 49 42 48 44 52 0D 0A 0D 0A ion:.CLIBHDR....
013100: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
013110: 10 00 00 00 02 09 50 E5 10 00 C1 02 00 00 00 02 ......P.........
013120: 10 00 C2 02 00 00 00 02 10 00 C3 02 00 00 00 02 ................
013130: 10 00 C4 02 00 00 00 02 10 00 C5 02 00 00 00 02 ................
013140: 10 00 C6 02 00 00 00 02 10 00 C7 02 00 00 00 02 ................
013150: 10 00 C8 02 00 00 00 02 10 00 C9 02 00 00 00 02 ................
013160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
013170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
013180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
013190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0131A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0131B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0131C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0131D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0131E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0131F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
013200: 0D 0A 57 52 49 54 45 43 48 28 63 68 61 72 2C 62 ..WRITECH(char,b
013210: 75 66 66 65 72 29 0D 0A 0D 0A 45 66 66 65 63 74 uffer)....Effect
013220: 3A 09 57 72 69 74 65 73 20 61 20 63 68 61 72 61 :.Writes a chara
013230: 63 74 65 72 20 74 6F 90 20 61 90 20 66 69 6C 65 cter to. a. file
013240: 2C 20 77 68 61 74 65 76 65 72 20 74 68 65 20 63 , whatever the c
013250: 75 72 72 65 6E 74 6C 79 20 0D 8A 09 73 65 6C 65 urrently ...sele
013260: 63 74 65 64 20 6F 75 74 70 75 74 20 73 74 72 65 cted output stre
013270: 61 6D 2E 20 54 68 65 20 62 75 66 66 65 72 20 69 am. The buffer i
013280: 73 20 6E 6F 74 20 6E 65 65 64 65 64 20 75 6E 64 s not needed und
013290: 65 72 20 0D 8A 09 41 4D 53 44 4F 53 2E 20 54 68 er ...AMSDOS. Th
0132A0: 69 73 20 72 6F 75 74 69 6E 65 20 69 73 20 63 61 is routine is ca
0132B0: 6C 6C 65 64 90 20 62 79 90 20 57 52 43 48 90 20 lled. by. WRCH.
0132C0: 69 73 20 61 20 66 69 6C 65 20 69 73 20 0D 8A 09 is a file is ...
0132D0: 74 68 65 20 73 65 6C 65 63 74 65 64 20 6F 75 74 the selected out
0132E0: 70 75 74 20 73 74 72 65 61 6D 2E 0D 0A 0D 0A 52 put stream.....R
0132F0: 65 74 75 72 6E 73 3A 09 54 52 55 45 20 69 66 20 eturns:.TRUE if
013300: 73 75 63 63 65 73 73 66 75 6C 2C 20 46 41 4C 53 successful, FALS
013310: 45 20 69 66 20 61 20 64 69 73 63 20 65 72 72 6F E if a disc erro
013320: 72 20 6F 63 63 75 72 72 65 64 0D 0A 09 0D 0A 4C r occurred.....L
013330: 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 ocation:.CLIBHDR
013340: 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 45 78 61 , ALIBHDR....Exa
013350: 6D 70 6C 65 73 3A 09 77 72 69 74 65 63 68 28 27 mples:.writech('
013360: 24 27 2C 6F 75 74 66 69 6C 65 62 75 66 29 09 09 $',outfilebuf)..
013370: 2F 2F 20 43 50 2F 4D 20 76 65 72 73 69 6F 6E 0D // CP/M version.
013380: 0A 09 77 72 69 74 65 63 68 28 27 24 27 29 09 09 ..writech('$')..
013390: 09 2F 2F 20 41 4D 53 44 4F 53 20 76 65 72 73 69 .// AMSDOS versi
0133A0: 6F 6E 0D 0A 0D 0A 0D 0A 57 52 56 44 55 28 63 68 on......WRVDU(ch
0133B0: 61 72 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 57 ar)....Effect:.W
0133C0: 72 69 74 65 73 90 20 61 90 20 63 68 61 72 61 63 rites. a. charac
0133D0: 74 65 72 90 20 74 6F 90 90 20 74 68 65 90 20 73 ter. to.. the. s
0133E0: 63 72 65 65 6E 2C 90 20 77 68 61 74 65 76 65 72 creen,. whatever
0133F0: 90 20 74 68 65 20 0D 8A 09 63 75 72 72 65 6E 74 . the ...current
013400: 6C 79 20 73 65 6C 65 63 74 65 64 90 20 6F 75 74 ly selected. out
013410: 70 75 74 90 20 73 74 72 65 61 6D 2E 90 20 54 68 put. stream.. Th
013420: 69 73 90 20 72 6F 75 74 69 6E 65 90 20 69 73 20 is. routine. is
013430: 0D 8A 09 63 61 6C 6C 65 64 20 62 79 20 57 52 43 ...called by WRC
013440: 48 20 69 66 90 20 74 68 65 90 20 73 63 72 65 65 H if. the. scree
013450: 6E 90 20 69 73 20 74 68 65 20 73 65 6C 65 63 74 n. is the select
013460: 65 64 20 6F 75 74 70 75 74 20 0D 8A 09 73 74 72 ed output ...str
013470: 65 61 6D 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A eam.....Returns:
013480: 09 54 52 55 45 0D 0A 0D 0A 4C 6F 63 61 74 69 6F .TRUE....Locatio
013490: 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 n:.CLIBHDR, ALIB
0134A0: 48 44 52 0D 0A 3E 70 61 0D 0A E2 28 66 29 20 4D HDR..>pa...(f) M
0134B0: 69 73 63 65 6C 6C 61 6E 65 6F 75 73 20 52 6F 75 iscellaneous Rou
0134C0: 74 69 6E 65 73 E2 0D 0A 0D 0A 0D 0A 41 50 54 4F tines.......APTO
0134D0: 56 45 43 28 66 75 6E 63 74 69 6F 6E 2C 61 72 72 VEC(function,arr
0134E0: 61 79 73 69 7A 65 29 0D 0A 0D 0A 45 66 66 65 63 aysize)....Effec
0134F0: 74 3A 09 54 68 69 73 20 77 69 6C 6C 20 63 72 65 t:.This will cre
013500: 61 74 65 20 61 20 64 79 6E 61 6D 69 63 20 61 72 ate a dynamic ar
013510: 72 61 79 20 6F 66 20 73 69 7A 65 20 61 72 72 61 ray of size arra
013520: 79 73 69 7A 65 20 61 6E 64 20 0D 8A 09 74 68 65 ysize and ...the
013530: 6E 20 70 61 73 73 20 74 68 65 20 61 64 64 72 65 n pass the addre
013540: 73 73 90 20 6F 66 90 20 74 68 69 73 90 20 61 72 ss. of. this. ar
013550: 72 61 79 90 20 61 6C 6F 6E 67 20 77 69 74 68 20 ray. along with
013560: 69 74 73 20 0D 8A 09 73 69 7A 65 20 74 6F 20 74 its ...size to t
013570: 68 65 20 66 75 6E 63 74 69 6F 6E 2E 20 49 74 20 he function. It
013580: 77 69 6C 6C 20 72 65 74 75 72 6E 20 74 68 65 20 will return the
013590: 72 65 73 75 6C 74 20 6F 66 20 74 68 65 20 0D 8A result of the ..
0135A0: 09 66 75 6E 63 74 69 6F 6E 20 61 6E 64 20 69 73 .function and is
0135B0: 20 65 71 75 69 76 61 6C 65 6E 74 20 74 6F 3A 0D equivalent to:.
0135C0: 0A 0D 0A 09 4C 45 54 20 61 70 74 6F 76 65 63 28 ....LET aptovec(
0135D0: 66 75 6E 63 74 69 6F 6E 2C 61 72 72 61 79 73 69 function,arraysi
0135E0: 7A 65 29 20 3D 20 56 41 4C 4F 46 0D 0A 0D 0A 09 ze) = VALOF.....
0135F0: 24 28 20 20 4C 45 54 20 76 20 3D 20 56 45 43 20 $( LET v = VEC
013600: 61 72 72 61 79 73 69 7A 65 09 2F 2F 20 69 6C 6C arraysize.// ill
013610: 65 67 61 6C 20 69 6E 20 42 43 50 4C 0D 0A 09 20 egal in BCPL...
013620: 20 20 20 52 45 53 55 4C 54 49 53 20 66 75 6E 63 RESULTIS func
013630: 74 69 6F 6E 28 76 2C 61 72 72 61 79 73 69 7A 65 tion(v,arraysize
013640: 29 0D 0A 09 24 29 0D 0A 0D 0A 52 65 74 75 72 6E )...$)....Return
013650: 73 3A 09 74 68 65 20 76 61 6C 75 65 20 72 65 74 s:.the value ret
013660: 75 72 6E 65 64 20 62 79 20 74 68 65 20 66 75 6E urned by the fun
013670: 63 74 69 6F 6E 0D 0A 0D 0A 4C 6F 63 61 74 69 6F ction....Locatio
013680: 6E 3A 09 50 72 65 2D 64 65 66 69 6E 65 64 2C 20 n:.Pre-defined,
013690: 70 72 65 2D 64 65 66 69 6E 65 64 0D 0A 0D 0A 0D pre-defined.....
0136A0: 0A 42 59 54 45 4D 4F 56 45 28 73 74 61 72 74 2C .BYTEMOVE(start,
0136B0: 64 65 73 74 2C 73 69 7A 65 29 0D 0A 0D 0A 45 66 dest,size)....Ef
0136C0: 66 65 63 74 3A 09 54 68 69 73 20 69 73 20 61 90 fect:.This is a.
0136D0: 20 62 6C 6F 63 6B 90 20 62 79 74 65 90 20 6D 6F block. byte. mo
0136E0: 76 65 90 20 72 6F 75 74 69 6E 65 2E 90 20 49 74 ve. routine.. It
0136F0: 90 20 77 6F 72 6B 73 20 77 69 74 68 20 0D 8A 09 . works with ...
013700: 61 63 74 75 61 6C 20 62 79 74 65 20 61 64 64 72 actual byte addr
013710: 65 73 73 65 73 20 28 74 68 61 74 90 20 69 73 90 esses (that. is.
013720: 20 74 68 65 20 61 64 64 72 65 73 73 65 73 20 75 the addresses u
013730: 73 65 64 20 62 79 20 0D 8A 09 74 68 65 20 5A 38 sed by ...the Z8
013740: 30 20 70 72 6F 63 65 73 73 6F 72 29 20 73 6F 90 0 processor) so.
013750: 20 69 66 90 20 61 72 72 61 79 90 20 6E 61 6D 65 if. array. name
013760: 73 90 20 61 72 65 20 75 73 65 64 20 61 73 20 61 s. are used as a
013770: 20 0D 8A 09 70 61 72 61 6D 65 74 65 72 20 74 68 ...parameter th
013780: 65 6E 20 74 68 65 79 90 20 73 68 6F 75 6C 64 90 en they. should.
013790: 20 62 65 90 20 6D 75 6C 74 69 70 6C 69 65 64 90 be. multiplied.
0137A0: 20 62 79 20 74 77 6F 20 61 73 20 0D 8A 09 42 43 by two as ...BC
0137B0: 50 4C 20 77 6F 72 6B 73 20 77 69 74 68 20 77 6F PL works with wo
0137C0: 72 64 20 61 64 64 72 65 73 73 65 73 2E 20 54 68 rd addresses. Th
0137D0: 65 20 6F 6C 64 20 61 6E 64 20 6E 65 77 20 62 6C e old and new bl
0137E0: 6F 63 6B 73 20 0D 8A 09 6D 61 79 20 6F 76 65 72 ocks ...may over
0137F0: 6C 61 70 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A lap.....Returns:
013800: 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 .Nothing....Loca
013810: 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 31 2C 20 tion:.CLIBHDR1,
013820: 41 4C 49 42 48 44 52 31 0D 0A 0D 0A 45 78 61 6D ALIBHDR1....Exam
013830: 70 6C 65 3A 09 62 79 74 65 6D 6F 76 65 28 62 75 ple:.bytemove(bu
013840: 66 66 65 72 2A 32 2B 33 36 2C 62 75 66 66 65 72 ffer*2+36,buffer
013850: 2A 32 2B 31 36 2C 31 36 29 0D 0A 0D 0A 0D 0A 43 *2+16,16)......C
013860: 41 4C 4C 28 61 64 64 72 65 73 73 2C 40 61 66 2C ALL(address,@af,
013870: 40 62 63 2C 40 64 65 2C 40 68 6C 2C 40 69 78 29 @bc,@de,@hl,@ix)
013880: 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 43 61 6C 6C ....Effect:.Call
013890: 73 20 61 20 6D 61 63 68 69 6E 65 20 63 6F 64 65 s a machine code
0138A0: 90 20 72 6F 75 74 69 6E 65 90 20 61 74 90 20 61 . routine. at. a
0138B0: 20 62 79 74 65 20 61 64 64 72 65 73 73 2E 20 41 byte address. A
0138C0: 6C 6C 20 0D 8A 09 70 61 72 61 6D 65 74 65 72 73 ll ...parameters
0138D0: 20 4D 55 53 54 20 62 65 90 20 73 75 70 70 6C 69 MUST be. suppli
0138E0: 65 64 90 20 61 73 90 20 76 61 6C 75 65 73 20 61 ed. as. values a
0138F0: 72 65 20 72 65 74 75 72 6E 65 64 2E 20 0D 8A 09 re returned. ...
013900: 54 68 65 20 76 61 6C 75 65 73 20 72 65 74 75 72 The values retur
013910: 6E 65 64 20 62 79 90 20 74 68 65 90 20 6D 61 63 ned by. the. mac
013920: 68 69 6E 65 90 20 63 6F 64 65 20 72 6F 75 74 69 hine. code routi
013930: 6E 65 20 61 72 65 20 0D 8A 09 70 61 73 73 65 64 ne are ...passed
013940: 20 62 61 63 6B 20 69 6E 20 74 68 65 20 76 61 72 back in the var
013950: 69 61 62 6C 65 73 2E 0D 0A 0D 0A 52 65 74 75 72 iables.....Retur
013960: 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C ns:.Nothing....L
013970: 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 ocation:.CLIBHDR
013980: 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A 0D 0A 3E 1, ALIBHDR1....>
013990: 70 61 0D 0A 43 41 50 49 54 41 4C 43 48 28 63 68 pa..CAPITALCH(ch
0139A0: 61 72 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 49 ar)....Effect:.I
0139B0: 66 20 74 68 65 20 63 68 61 72 61 63 74 65 72 20 f the character
0139C0: 69 73 20 61 20 6C 6F 77 65 72 20 63 61 73 65 20 is a lower case
0139D0: 6C 65 74 74 65 72 20 74 68 65 20 75 70 70 65 72 letter the upper
0139E0: 20 63 61 73 65 20 0D 8A 09 65 71 75 69 76 61 6C case ...equival
0139F0: 65 6E 74 90 20 69 73 90 90 20 72 65 74 75 72 6E ent. is.. return
013A00: 65 64 2C 90 90 20 6F 74 68 65 72 77 69 73 65 90 ed,.. otherwise.
013A10: 90 20 74 68 65 90 20 6F 72 69 67 69 6E 61 6C 20 . the. original
013A20: 0D 8A 09 63 68 61 72 61 63 74 65 72 20 69 73 20 ...character is
013A30: 72 65 74 75 72 6E 65 64 2E 0D 0A 0D 0A 52 65 74 returned.....Ret
013A40: 75 72 6E 73 3A 09 54 68 65 20 63 6F 6E 76 65 72 urns:.The conver
013A50: 74 65 64 20 63 68 61 72 61 63 74 65 72 0D 0A 0D ted character...
013A60: 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 .Location:.CLIBH
013A70: 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 0D DR, ALIBHDR.....
013A80: 0A 43 4F 4D 50 43 48 28 63 68 61 72 31 2C 63 68 .COMPCH(char1,ch
013A90: 61 72 32 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 ar2)....Effect:.
013AA0: 43 6F 6D 70 61 72 65 73 90 20 74 77 6F 90 20 63 Compares. two. c
013AB0: 68 61 72 61 63 74 65 72 73 2C 90 20 69 67 6E 6F haracters,. igno
013AC0: 72 69 6E 67 90 20 74 68 65 90 20 64 69 73 74 69 ring. the. disti
013AD0: 6E 63 74 69 6F 6E 20 0D 8A 09 62 65 74 77 65 65 nction ...betwee
013AE0: 6E 90 20 75 70 70 65 72 90 20 61 6E 64 90 90 20 n. upper. and..
013AF0: 6C 6F 77 65 72 90 90 20 63 61 73 65 2E 90 90 20 lower.. case...
013B00: 49 74 90 20 72 65 74 75 72 6E 73 90 20 74 68 65 It. returns. the
013B10: 20 0D 8A 09 64 69 66 66 65 72 65 6E 63 65 20 62 ...difference b
013B20: 65 74 77 65 65 6E 20 74 68 65 20 74 77 6F 20 63 etween the two c
013B30: 68 61 72 61 63 74 65 72 73 2E 0D 0A 0D 0A 52 65 haracters.....Re
013B40: 74 75 72 6E 73 3A 09 54 68 65 20 64 69 66 66 65 turns:.The diffe
013B50: 72 65 6E 63 65 20 62 65 74 77 65 65 6E 20 74 68 rence between th
013B60: 65 20 63 68 61 72 61 63 74 65 72 73 0D 0A 0D 0A e characters....
013B70: 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 Location:.CLIBHD
013B80: 52 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A 0D 0A R1, ALIBHDR1....
013B90: 0D 0A 43 4F 4D 50 53 54 52 49 4E 47 28 73 74 72 ..COMPSTRING(str
013BA0: 69 6E 67 31 2C 73 74 72 69 6E 67 32 29 0D 0A 0D ing1,string2)...
013BB0: 0A 45 66 66 65 63 74 3A 09 43 6F 6D 70 61 72 65 .Effect:.Compare
013BC0: 73 20 74 77 6F 20 73 74 72 69 6E 67 73 2C 20 69 s two strings, i
013BD0: 67 6E 6F 72 69 6E 67 20 74 68 65 20 64 69 73 74 gnoring the dist
013BE0: 69 6E 63 74 69 6F 6E 20 62 65 74 77 65 65 6E 20 inction between
013BF0: 0D 8A 09 75 70 70 65 72 20 61 6E 64 90 20 6C 6F ...upper and. lo
013C00: 77 65 72 90 20 63 61 73 65 2E 90 20 54 68 65 90 wer. case.. The.
013C10: 20 72 65 73 75 6C 74 90 20 69 73 90 20 7A 65 72 result. is. zer
013C20: 6F 90 20 69 66 20 74 68 65 20 0D 8A 09 73 74 72 o. if the ...str
013C30: 69 6E 67 73 20 61 72 65 90 20 74 68 65 90 20 73 ings are. the. s
013C40: 61 6D 65 2C 90 20 70 6F 73 69 74 69 76 65 90 20 ame,. positive.
013C50: 69 66 90 20 73 74 72 69 6E 67 31 20 66 6F 6C 6C if. string1 foll
013C60: 6F 77 73 20 0D 8A 09 73 74 72 69 6E 67 32 90 20 ows ...string2.
013C70: 61 6C 70 68 61 62 65 74 69 63 61 6C 6C 79 2C 90 alphabetically,.
013C80: 20 61 6E 64 90 90 20 6E 65 67 61 74 69 76 65 90 and.. negative.
013C90: 90 20 69 66 90 20 73 74 72 69 6E 67 32 20 0D 8A . if. string2 ..
013CA0: 09 66 6F 6C 6C 6F 77 73 20 73 74 72 69 6E 67 31 .follows string1
013CB0: 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 68 .....Returns:.Th
013CC0: 65 20 72 65 73 75 6C 74 20 6F 66 20 74 68 65 20 e result of the
013CD0: 63 6F 6D 70 61 72 69 73 6F 6E 2C 20 61 73 20 61 comparison, as a
013CE0: 62 6F 76 65 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E bove....Location
013CF0: 3A 09 43 4C 49 42 48 44 52 31 2C 20 41 4C 49 42 :.CLIBHDR1, ALIB
013D00: 48 44 52 31 0D 0A 0D 0A 0D 0A 44 45 43 56 41 4C HDR1......DECVAL
013D10: 28 64 69 67 69 74 29 0D 0A 0D 0A 45 66 66 65 63 (digit)....Effec
013D20: 74 3A 09 54 68 69 73 20 72 65 74 75 72 6E 73 20 t:.This returns
013D30: 74 68 65 20 64 65 63 69 6D 61 6C 20 76 61 6C 75 the decimal valu
013D40: 65 20 6F 66 20 61 20 68 65 78 61 64 65 63 69 6D e of a hexadecim
013D50: 61 6C 20 64 69 67 69 74 2E 0D 0A 0D 0A 52 65 74 al digit.....Ret
013D60: 75 72 6E 73 3A 09 54 68 65 20 64 65 63 69 6D 61 urns:.The decima
013D70: 6C 20 76 61 6C 75 65 20 6F 66 20 74 68 65 20 64 l value of the d
013D80: 69 67 69 74 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E igit....Location
013D90: 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 :.CLIBHDR, ALIBH
013DA0: 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C 65 3A 09 64 DR....Example:.d
013DB0: 65 63 76 61 6C 28 27 41 27 29 09 09 2F 2F 20 72 ecval('A')..// r
013DC0: 65 74 75 72 6E 73 20 31 30 0D 0A 0D 0A 3E 70 61 eturns 10....>pa
013DD0: 0D 0A 44 45 4C 45 54 45 28 66 69 6C 65 6E 61 6D ..DELETE(filenam
013DE0: 65 2C 62 75 66 66 65 72 29 0D 0A 0D 0A 45 66 66 e,buffer)....Eff
013DF0: 65 63 74 3A 09 54 68 65 20 66 69 72 73 74 20 70 ect:.The first p
013E00: 61 72 61 6D 65 74 65 72 20 69 73 20 61 20 73 74 arameter is a st
013E10: 72 69 6E 67 20 73 70 65 63 69 66 79 69 6E 67 20 ring specifying
013E20: 74 68 65 20 6E 61 6D 65 20 6F 66 20 0D 8A 09 61 the name of ...a
013E30: 20 66 69 6C 65 2E 20 54 68 69 73 20 66 69 6C 65 file. This file
013E40: 20 69 73 90 20 74 68 65 6E 90 20 64 65 6C 65 74 is. then. delet
013E50: 65 64 20 66 72 6F 6D 20 74 68 65 20 64 69 73 63 ed from the disc
013E60: 2E 20 54 68 65 20 0D 8A 09 43 50 2F 4D 20 76 65 . The ...CP/M ve
013E70: 72 73 69 6F 6E 20 72 65 71 75 69 72 65 73 20 61 rsion requires a
013E80: 6E 90 20 38 32 90 20 77 6F 72 64 90 20 62 75 66 n. 82. word. buf
013E90: 66 65 72 2C 20 74 68 65 20 41 4D 53 44 4F 53 20 fer, the AMSDOS
013EA0: 0D 8A 09 76 65 72 73 69 6F 6E 20 72 65 71 75 69 ...version requi
013EB0: 72 65 73 20 6E 6F 20 62 75 66 66 65 72 2E 0D 0A res no buffer...
013EC0: 0D 0A 52 65 74 75 72 6E 73 3A 09 54 52 55 45 20 ..Returns:.TRUE
013ED0: 69 66 20 74 68 65 20 6F 70 65 72 61 74 69 6F 6E if the operation
013EE0: 20 73 75 63 63 65 65 64 65 64 2C 20 46 41 4C 53 succeeded, FALS
013EF0: 45 20 69 66 20 61 20 64 69 73 63 20 65 72 72 6F E if a disc erro
013F00: 72 20 0D 8A 09 6F 63 63 75 72 72 65 64 2E 0D 0A r ...occurred...
013F10: 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 ..Location:.CLIB
013F20: 48 44 52 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A HDR1, ALIBHDR1..
013F30: 0D 0A 45 78 61 6D 70 6C 65 73 3A 09 64 65 6C 65 ..Examples:.dele
013F40: 74 65 28 22 74 65 6D 70 66 69 6C 65 22 2C 62 75 te("tempfile",bu
013F50: 66 66 65 72 29 09 2F 2F 20 43 50 2F 4D 20 76 65 ffer).// CP/M ve
013F60: 72 73 69 6F 6E 0D 0A 09 64 65 6C 65 74 65 28 22 rsion...delete("
013F70: 74 65 6D 70 66 69 6C 65 22 29 09 09 2F 2F 20 41 tempfile")..// A
013F80: 4D 53 44 4F 53 20 76 65 72 73 69 6F 6E 0D 0A 0D MSDOS version...
013F90: 0A 0D 0A 4C 45 56 45 4C 28 61 72 72 61 79 29 0D ...LEVEL(array).
013FA0: 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 69 73 20 ...Effect:.This
013FB0: 72 65 74 75 72 6E 73 20 74 68 65 90 20 73 74 61 returns the. sta
013FC0: 74 65 90 20 6F 66 90 20 74 68 65 90 20 42 43 50 te. of. the. BCP
013FD0: 4C 90 20 70 72 6F 67 72 61 6D 20 69 6E 20 74 68 L. program in th
013FE0: 65 20 0D 8A 09 61 72 72 61 79 20 67 69 76 65 6E e ...array given
013FF0: 2E 20 54 68 65 20 61 72 72 61 79 90 20 6D 75 73 . The array. mus
014000: 74 90 20 62 65 90 20 61 74 90 20 6C 65 61 73 74 t. be. at. least
014010: 20 34 20 77 6F 72 64 73 20 69 6E 20 0D 8A 09 73 4 words in ...s
014020: 69 7A 65 2E 20 54 68 69 73 20 72 6F 75 74 69 6E ize. This routin
014030: 65 90 20 69 73 90 20 75 73 65 64 90 20 77 69 74 e. is. used. wit
014040: 68 90 20 4C 4F 4E 47 4A 55 4D 50 90 20 74 6F 20 h. LONGJUMP. to
014050: 61 6C 6C 6F 77 20 0D 8A 09 6A 75 6D 70 73 20 62 allow ...jumps b
014060: 65 74 77 65 65 6E 20 70 72 6F 63 65 64 75 72 65 etween procedure
014070: 73 20 65 74 63 2E 90 20 53 65 65 90 20 73 65 63 s etc.. See. sec
014080: 74 69 6F 6E 20 39 20 66 6F 72 20 6D 6F 72 65 20 tion 9 for more
014090: 0D 8A 09 64 65 74 61 69 6C 73 2E 0D 0A 0D 0A 52 ...details.....R
0140A0: 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D eturns:.Nothing.
0140B0: 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 50 72 65 ...Location:.Pre
0140C0: 2D 64 65 66 69 6E 65 64 2C 20 70 72 65 2D 64 65 -defined, pre-de
0140D0: 66 69 6E 65 64 0D 0A 0D 0A 0D 0A 4C 4F 4E 47 4A fined......LONGJ
0140E0: 55 4D 50 28 61 64 64 72 65 73 73 2C 61 72 72 61 UMP(address,arra
0140F0: 79 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 y)....Effect:.Th
014100: 69 73 20 77 69 6C 6C 20 73 65 74 20 74 68 65 90 is will set the.
014110: 20 73 74 61 74 65 90 20 6F 66 90 20 74 68 65 20 state. of. the
014120: 70 72 6F 67 72 61 6D 20 61 63 63 6F 72 64 69 6E program accordin
014130: 67 20 74 6F 20 0D 8A 09 74 68 65 90 20 61 72 72 g to ...the. arr
014140: 61 79 90 20 67 69 76 65 6E 2E 90 20 54 68 65 90 ay. given.. The.
014150: 20 61 72 72 61 79 90 90 20 6D 75 73 74 90 20 68 array.. must. h
014160: 61 76 65 90 20 62 65 65 6E 90 20 73 65 74 20 0D ave. been. set .
014170: 8A 09 70 72 65 76 69 6F 75 73 6C 79 20 62 79 20 ..previously by
014180: 74 68 65 20 75 73 65 90 20 6F 66 90 20 4C 45 56 the use. of. LEV
014190: 45 4C 2E 90 20 4F 6E 63 65 90 20 74 68 65 20 73 EL.. Once. the s
0141A0: 74 61 74 65 20 68 61 73 20 0D 8A 09 62 65 65 6E tate has ...been
0141B0: 20 73 65 74 20 69 74 20 77 69 6C 6C 20 6A 75 6D set it will jum
0141C0: 70 90 20 74 6F 90 20 61 64 64 72 65 73 73 2E 90 p. to. address..
0141D0: 20 53 65 65 20 73 65 63 74 69 6F 6E 20 39 20 66 See section 9 f
0141E0: 6F 72 20 0D 8A 09 6D 6F 72 65 20 64 65 74 61 69 or ...more detai
0141F0: 6C 73 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 ls.....Returns:.
014200: 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 Nothing....Locat
014210: 69 6F 6E 3A 09 50 72 65 2D 64 65 66 69 6E 65 64 ion:.Pre-defined
014220: 2C 20 70 72 65 2D 64 65 66 69 6E 65 64 0D 0A 0D , pre-defined...
014230: 0A 3E 70 61 0D 0A 52 41 4E 44 4F 4D 28 29 0D 0A .>pa..RANDOM()..
014240: 0D 0A 45 66 66 65 63 74 3A 09 54 68 69 73 20 66 ..Effect:.This f
014250: 75 6E 63 74 69 6F 6E 90 20 72 65 74 75 72 6E 73 unction. returns
014260: 90 20 61 90 20 73 65 71 75 65 6E 63 65 90 20 6F . a. sequence. o
014270: 66 90 20 70 73 65 75 64 6F 2D 72 61 6E 64 6F 6D f. pseudo-random
014280: 20 0D 8A 09 6E 75 6D 62 65 72 73 2E 20 54 68 65 ...numbers. The
014290: 20 73 65 71 75 65 6E 63 65 20 77 69 6C 6C 90 20 sequence will.
0142A0: 61 6C 77 61 79 73 90 20 62 65 20 74 68 65 20 73 always. be the s
0142B0: 61 6D 65 20 75 6E 6C 65 73 73 20 0D 8A 09 74 68 ame unless ...th
0142C0: 65 20 73 65 65 64 20 69 73 20 69 6E 69 74 69 61 e seed is initia
0142D0: 6C 69 73 65 64 20 66 69 72 73 74 2E 20 54 68 65 lised first. The
0142E0: 20 73 65 65 64 20 69 73 20 73 74 6F 72 65 64 20 seed is stored
0142F0: 69 6E 20 61 20 0D 8A 09 73 74 61 74 69 63 20 76 in a ...static v
014300: 61 72 69 61 62 6C 65 20 63 61 6C 6C 65 64 90 20 ariable called.
014310: 27 72 61 6E 64 6F 6D 73 65 65 64 27 2C 90 20 61 'randomseed',. a
014320: 6E 64 20 74 68 69 73 20 73 68 6F 75 6C 64 20 0D nd this should .
014330: 8A 09 62 65 90 20 69 6E 69 74 69 61 6C 69 73 65 ..be. initialise
014340: 64 90 20 74 6F 90 90 20 64 69 66 66 65 72 65 6E d. to.. differen
014350: 74 90 90 20 76 61 6C 75 65 73 90 90 20 74 6F 90 t.. values.. to.
014360: 20 70 72 6F 64 75 63 65 20 0D 8A 09 64 69 66 66 produce ...diff
014370: 65 72 65 6E 74 20 73 65 71 75 65 6E 63 65 73 2E erent sequences.
014380: 90 20 54 68 65 90 20 73 65 71 75 65 6E 63 65 90 . The. sequence.
014390: 20 72 75 6E 73 90 20 74 68 72 6F 75 67 68 20 61 runs. through a
0143A0: 6C 6C 20 0D 8A 09 70 6F 73 73 69 62 6C 65 20 32 ll ...possible 2
0143B0: 20 62 79 74 65 20 76 61 6C 75 65 73 2E 0D 0A 0D byte values....
0143C0: 0A 52 65 74 75 72 6E 73 3A 09 41 20 72 61 6E 64 .Returns:.A rand
0143D0: 6F 6D 6C 79 20 67 65 6E 65 72 61 74 65 64 20 69 omly generated i
0143E0: 6E 74 65 67 65 72 2E 0D 0A 0D 0A 4C 6F 63 61 74 nteger.....Locat
0143F0: 69 6F 6E 3A 09 43 4C 49 42 48 44 52 31 2C 20 41 ion:.CLIBHDR1, A
014400: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
014410: 11 00 00 00 02 09 50 E5 11 00 C1 02 00 00 00 02 ......P.........
014420: 11 00 C2 02 00 00 00 02 11 00 C3 02 00 00 00 02 ................
014430: 11 00 C4 02 00 00 00 02 11 00 C5 02 00 00 00 02 ................
014440: 11 00 C6 02 00 00 00 02 11 00 C7 02 00 00 00 02 ................
014450: 11 00 C8 02 00 00 00 02 11 00 C9 02 00 00 00 02 ................
014460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
014470: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
014480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
014490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
014500: 4C 49 42 48 44 52 31 0D 0A 0D 0A 0D 0A 52 45 4E LIBHDR1......REN
014510: 41 4D 45 28 66 69 6C 65 6E 61 6D 65 31 2C 66 69 AME(filename1,fi
014520: 6C 65 6E 61 6D 65 32 2C 62 75 66 66 65 72 29 0D lename2,buffer).
014530: 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 65 20 66 ...Effect:.The f
014540: 69 72 73 74 20 70 61 72 61 6D 65 74 65 72 20 69 irst parameter i
014550: 73 20 61 20 73 74 72 69 6E 67 20 73 70 65 63 69 s a string speci
014560: 66 79 69 6E 67 20 74 68 65 20 6E 61 6D 65 20 6F fying the name o
014570: 66 20 0D 8A 09 61 20 66 69 6C 65 2E 20 54 68 65 f ...a file. The
014580: 20 66 69 6C 65 20 69 73 90 20 72 65 6E 61 6D 65 file is. rename
014590: 64 90 20 74 6F 90 20 74 68 65 20 73 65 63 6F 6E d. to. the secon
0145A0: 64 20 6E 61 6D 65 2E 20 54 68 65 20 0D 8A 09 43 d name. The ...C
0145B0: 50 2F 4D 20 76 65 72 73 69 6F 6E 20 72 65 71 75 P/M version requ
0145C0: 69 72 65 73 20 61 6E 90 20 38 32 90 20 77 6F 72 ires an. 82. wor
0145D0: 64 90 20 62 75 66 66 65 72 2C 20 74 68 65 20 41 d. buffer, the A
0145E0: 4D 53 44 4F 53 20 0D 8A 09 76 65 72 73 69 6F 6E MSDOS ...version
0145F0: 20 72 65 71 75 69 72 65 73 20 6E 6F 20 62 75 66 requires no buf
014600: 66 65 72 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A fer.....Returns:
014610: 09 54 52 55 45 20 69 66 20 74 68 65 20 6F 70 65 .TRUE if the ope
014620: 72 61 74 69 6F 6E 20 73 75 63 63 65 65 64 65 64 ration succeeded
014630: 2C 20 46 41 4C 53 45 20 69 66 20 61 20 64 69 73 , FALSE if a dis
014640: 63 20 65 72 72 6F 72 20 0D 8A 09 6F 63 63 75 72 c error ...occur
014650: 72 65 64 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E red.....Location
014660: 3A 09 43 4C 49 42 48 44 52 31 2C 20 41 4C 49 42 :.CLIBHDR1, ALIB
014670: 48 44 52 31 0D 0A 0D 0A 09 45 78 61 6D 70 6C 65 HDR1.....Example
014680: 73 3A 0D 0A 09 72 65 6E 61 6D 65 28 22 6F 6C 64 s:...rename("old
014690: 6E 61 6D 65 22 2C 22 6E 65 77 6E 61 6D 65 22 2C name","newname",
0146A0: 62 75 66 66 65 72 29 20 2F 2F 20 43 50 2F 4D 20 buffer) // CP/M
0146B0: 76 65 72 73 69 6F 6E 0D 0A 09 72 65 6E 61 6D 65 version...rename
0146C0: 28 22 6F 6C 64 6E 61 6D 65 22 2C 22 6E 65 77 6E ("oldname","newn
0146D0: 61 6D 65 22 29 20 20 20 20 20 20 20 20 2F 2F 90 ame") //.
0146E0: 41 4D 53 44 4F 53 20 76 65 72 73 69 6F 6E 0D 0A AMSDOS version..
0146F0: 0D 0A 0D 0A 53 54 4F 50 28 72 65 74 75 72 6E 63 ....STOP(returnc
014700: 6F 64 65 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 ode)....Effect:.
014710: 45 78 65 63 75 74 69 6F 6E 20 6F 66 20 74 68 65 Execution of the
014720: 20 70 72 6F 67 72 61 6D 90 20 74 65 72 6D 69 6E program. termin
014730: 61 74 65 73 2E 90 20 55 6E 64 65 72 20 43 50 2F ates.. Under CP/
014740: 4D 20 50 6C 75 73 20 0D 8A 09 74 68 65 20 73 75 M Plus ...the su
014750: 70 70 6C 69 65 64 20 70 61 72 61 6D 65 74 65 72 pplied parameter
014760: 90 20 69 73 90 20 75 73 65 64 90 20 74 6F 90 20 . is. used. to.
014770: 73 65 74 90 20 74 68 65 20 70 72 6F 67 72 61 6D set. the program
014780: 20 0D 8A 09 72 65 74 75 72 6E 20 63 6F 64 65 2E ...return code.
014790: 90 20 42 79 90 20 63 6F 6E 76 65 6E 74 69 6F 6E . By. convention
0147A0: 90 20 61 90 20 72 65 74 75 72 6E 90 20 63 6F 64 . a. return. cod
0147B0: 65 90 20 62 65 74 77 65 65 6E 20 0D 8A 09 23 78 e. between ...#x
0147C0: 46 46 30 30 20 61 6E 64 20 23 78 46 46 46 45 20 FF00 and #xFFFE
0147D0: 69 73 20 61 6E 20 65 72 72 6F 72 20 63 6F 64 65 is an error code
0147E0: 2E 20 54 68 65 20 72 65 74 75 72 6E 20 63 6F 64 . The return cod
0147F0: 65 20 69 73 20 0D 8A 09 69 67 6E 6F 72 65 64 20 e is ...ignored
014800: 75 6E 64 65 72 20 43 50 2F 4D 20 32 2E 32 20 61 under CP/M 2.2 a
014810: 6E 64 20 41 4D 53 44 4F 53 2E 0D 0A 0D 0A 52 65 nd AMSDOS.....Re
014820: 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D 0A turns:.Nothing..
014830: 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 ..Location:.CLIB
014840: 48 44 52 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A HDR1, ALIBHDR1..
014850: 0D 0A 3E 70 61 0D 0A 55 50 50 45 52 43 41 53 45 ..>pa..UPPERCASE
014860: 28 63 68 61 72 29 0D 0A 0D 0A 45 66 66 65 63 74 (char)....Effect
014870: 3A 09 54 68 69 73 20 69 73 20 74 68 65 20 73 61 :.This is the sa
014880: 6D 65 20 61 73 20 43 41 50 49 54 41 4C 43 48 2E me as CAPITALCH.
014890: 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 68 65 ....Returns:.The
0148A0: 20 63 6F 6E 76 65 72 74 65 64 20 63 68 61 72 61 converted chara
0148B0: 63 74 65 72 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E cter....Location
0148C0: 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 :.CLIBHDR, ALIBH
0148D0: 44 52 0D 0A 0D 0A 0D 0A 56 45 52 53 49 4F 4E 28 DR......VERSION(
0148E0: 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 52 65 74 )....Effect:.Ret
0148F0: 75 72 6E 73 20 61 90 20 6E 75 6D 62 65 72 90 20 urns a. number.
014900: 69 64 65 6E 74 69 66 79 69 6E 67 90 20 74 68 65 identifying. the
014910: 90 20 6F 70 65 72 61 74 69 6E 67 90 20 73 79 73 . operating. sys
014920: 74 65 6D 20 0D 8A 09 61 6E 64 20 63 6F 6D 70 75 tem ...and compu
014930: 74 65 72 20 6F 6E 20 77 68 69 63 68 90 20 74 68 ter on which. th
014940: 65 90 20 70 72 6F 67 72 61 6D 20 69 73 20 62 65 e. program is be
014950: 69 6E 67 20 65 78 65 63 75 74 65 64 2E 20 0D 8A ing executed. ..
014960: 09 54 68 65 20 76 61 6C 75 65 73 20 72 65 74 75 .The values retu
014970: 72 6E 65 64 20 61 72 65 3A 0D 0A 09 09 31 20 3D rned are:....1 =
014980: 20 43 50 43 2C 20 41 4D 53 44 4F 53 0D 0A 09 09 CPC, AMSDOS....
014990: 32 20 3D 20 43 50 43 2C 20 43 50 2F 4D 20 32 2E 2 = CPC, CP/M 2.
0149A0: 32 0D 0A 09 09 33 20 3D 20 43 50 43 2C 20 43 50 2....3 = CPC, CP
0149B0: 2F 4D 20 50 6C 75 73 0D 0A 09 09 34 20 3D 20 50 /M Plus....4 = P
0149C0: 43 57 2C 20 43 50 2F 4D 20 50 6C 75 73 0D 0A 0D CW, CP/M Plus...
0149D0: 0A 52 65 74 75 72 6E 73 3A 09 54 68 65 20 76 65 .Returns:.The ve
0149E0: 72 73 69 6F 6E 20 6E 75 6D 62 65 72 0D 0A 0D 0A rsion number....
0149F0: 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 Location:.CLIBHD
014A00: 52 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A 0D 0A R1, ALIBHDR1....
014A10: 0D 0A 3E 70 61 0D 0A E2 28 67 29 20 52 6F 75 74 ..>pa...(g) Rout
014A20: 69 6E 65 73 20 70 72 6F 76 69 64 65 64 20 69 6E ines provided in
014A30: 20 74 68 65 20 43 50 2F 4D 20 6C 69 62 72 61 72 the CP/M librar
014A40: 69 65 73 20 6F 6E 6C 79 E2 0D 0A 0D 0A 42 44 4F ies only.....BDO
014A50: 53 41 28 40 63 2C 40 64 65 29 0D 0A 0D 0A 45 66 SA(@c,@de)....Ef
014A60: 66 65 63 74 3A 09 54 68 65 20 42 44 4F 53 20 69 fect:.The BDOS i
014A70: 73 20 63 61 6C 6C 65 64 20 77 69 74 68 20 74 68 s called with th
014A80: 65 20 70 61 72 61 6D 65 74 65 72 73 20 70 61 73 e parameters pas
014A90: 73 65 64 20 69 6E 20 74 68 65 20 43 20 0D 8A 09 sed in the C ...
014AA0: 61 6E 64 20 44 45 20 72 65 67 69 73 74 65 72 73 and DE registers
014AB0: 2E 20 54 68 65 20 61 64 64 72 65 73 73 65 73 90 . The addresses.
014AC0: 20 6F 66 20 74 68 65 20 76 61 72 69 61 62 6C 65 of the variable
014AD0: 73 20 6D 75 73 74 20 0D 8A 09 62 65 20 70 61 73 s must ...be pas
014AE0: 73 65 64 20 69 6E 20 6F 72 64 65 72 20 74 68 61 sed in order tha
014AF0: 74 90 20 72 65 73 75 6C 74 73 90 20 63 61 6E 20 t. results. can
014B00: 62 65 20 72 65 74 75 72 6E 65 64 2E 20 54 68 65 be returned. The
014B10: 20 0D 8A 09 72 65 74 75 72 6E 65 64 20 76 61 6C ...returned val
014B20: 75 65 73 20 6F 66 20 74 68 65 90 20 41 90 20 61 ues of the. A. a
014B30: 6E 64 90 20 48 4C 90 20 72 65 67 69 73 74 65 72 nd. HL. register
014B40: 73 20 66 72 6F 6D 20 74 68 65 20 0D 8A 09 42 44 s from the ...BD
014B50: 4F 53 90 20 61 72 65 90 20 72 65 74 75 72 6E 65 OS. are. returne
014B60: 64 90 20 69 6E 90 90 20 74 68 65 90 90 20 76 61 d. in.. the.. va
014B70: 72 69 61 62 6C 65 73 90 90 20 63 90 20 61 6E 64 riables.. c. and
014B80: 90 20 64 65 20 0D 8A 09 72 65 73 70 65 63 74 69 . de ...respecti
014B90: 76 65 6C 79 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 vely.....Returns
014BA0: 3A 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 :.Nothing....Loc
014BB0: 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 20 6F ation:.CLIBHDR o
014BC0: 6E 6C 79 0D 0A 0D 0A 0D 0A 42 44 4F 53 42 28 63 nly......BDOSB(c
014BD0: 2C 64 65 29 09 0D 0A 0D 0A 45 66 66 65 63 74 3A ,de).....Effect:
014BE0: 09 54 68 69 73 20 69 73 20 73 69 6D 69 6C 61 72 .This is similar
014BF0: 20 74 6F 20 42 44 4F 53 41 90 20 65 78 63 65 70 to BDOSA. excep
014C00: 74 90 20 74 68 61 74 20 72 65 73 75 6C 74 73 20 t. that results
014C10: 61 72 65 20 6E 6F 74 20 0D 8A 09 72 65 74 75 72 are not ...retur
014C20: 6E 65 64 2E 20 54 68 65 20 76 61 6C 75 65 73 20 ned. The values
014C30: 6F 66 20 63 20 61 6E 64 20 64 65 20 61 72 65 20 of c and de are
014C40: 70 61 73 73 65 64 2C 20 6E 6F 74 20 74 68 65 69 passed, not thei
014C50: 72 20 0D 8A 09 61 64 64 72 65 73 73 65 73 2E 0D r ...addresses..
014C60: 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E 6F 74 68 ...Returns:.Noth
014C70: 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A ing....Location:
014C80: 09 43 4C 49 42 48 44 52 20 6F 6E 6C 79 0D 0A 0D .CLIBHDR only...
014C90: 0A 0D 0A 42 49 4F 53 28 6E 2C 40 61 29 0D 0A 0D ...BIOS(n,@a)...
014CA0: 0A 45 66 66 65 63 74 3A 09 42 49 4F 53 20 72 6F .Effect:.BIOS ro
014CB0: 75 74 69 6E 65 20 6E 20 69 73 20 63 61 6C 6C 65 utine n is calle
014CC0: 64 20 61 6E 64 20 74 68 65 20 76 61 6C 75 65 20 d and the value
014CD0: 72 65 74 75 72 6E 65 64 20 62 79 20 74 68 65 20 returned by the
014CE0: 0D 8A 09 42 49 4F 53 20 69 6E 20 41 20 69 73 20 ...BIOS in A is
014CF0: 72 65 74 75 72 6E 65 64 90 20 69 6E 90 20 74 68 returned. in. th
014D00: 65 20 76 61 72 69 61 62 6C 65 20 61 2E 20 54 68 e variable a. Th
014D10: 65 20 61 64 64 72 65 73 73 20 0D 8A 09 6F 66 20 e address ...of
014D20: 61 20 6D 75 73 74 20 62 65 20 70 61 73 73 65 64 a must be passed
014D30: 2E 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69 . This routine i
014D40: 73 20 75 73 65 64 20 62 79 20 50 52 42 55 53 59 s used by PRBUSY
014D50: 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E 6F .....Returns:.No
014D60: 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F thing....Locatio
014D70: 6E 3A 09 43 4C 49 42 48 44 52 20 6F 6E 6C 79 0D n:.CLIBHDR only.
014D80: 0A 0D 0A 0D 0A 46 49 52 4D 57 41 52 45 28 61 64 .....FIRMWARE(ad
014D90: 64 72 65 73 73 2C 40 61 66 2C 40 62 63 2C 40 64 dress,@af,@bc,@d
014DA0: 65 2C 40 68 6C 2C 40 69 78 29 0D 0A 0D 0A 45 66 e,@hl,@ix)....Ef
014DB0: 66 65 63 74 3A 09 4F 6E 20 43 50 2F 4D 20 50 6C fect:.On CP/M Pl
014DC0: 75 73 2C 20 63 61 6C 6C 73 20 74 68 65 20 66 69 us, calls the fi
014DD0: 72 6D 77 61 72 65 20 52 4F 4D 20 28 43 50 43 36 rmware ROM (CPC6
014DE0: 31 32 38 20 6F 6E 6C 79 29 20 6F 72 20 0D 8A 09 128 only) or ...
014DF0: 74 68 65 20 65 78 74 65 6E 64 65 64 20 66 69 72 the extended fir
014E00: 6D 77 61 72 65 90 20 6A 75 6D 70 62 6C 6F 63 6B mware. jumpblock
014E10: 2E 90 20 54 68 65 20 76 61 6C 75 65 73 20 72 65 .. The values re
014E20: 74 75 72 6E 65 64 20 0D 8A 09 62 79 90 20 74 68 turned ...by. th
014E30: 65 90 20 66 69 72 6D 77 61 72 65 90 20 72 6F 75 e. firmware. rou
014E40: 74 69 6E 65 90 20 61 72 65 90 20 70 61 73 73 65 tine. are. passe
014E50: 64 90 20 62 61 63 6B 90 20 69 6E 90 20 74 68 65 d. back. in. the
014E60: 20 0D 8A 09 76 61 72 69 61 62 6C 65 73 2E 20 41 ...variables. A
014E70: 6C 6C 20 70 61 72 61 6D 65 74 65 72 73 20 4D 55 ll parameters MU
014E80: 53 54 20 62 65 20 73 75 70 70 6C 69 65 64 2E 0D ST be supplied..
014E90: 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E 6F 74 68 ...Returns:.Noth
014EA0: 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A ing....Location:
014EB0: 09 43 4C 49 42 48 44 52 31 20 6F 6E 6C 79 0D 0A .CLIBHDR1 only..
014EC0: 0D 0A 3E 70 61 0D 0A 54 41 49 4C 28 73 74 72 69 ..>pa..TAIL(stri
014ED0: 6E 67 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 ng)....Effect:.T
014EE0: 61 6B 65 73 20 61 90 20 76 65 63 74 6F 72 90 20 akes a. vector.
014EF0: 61 73 90 20 70 61 72 61 6D 65 74 65 72 90 20 61 as. parameter. a
014F00: 6E 64 90 20 73 74 6F 72 65 73 90 20 74 68 65 90 nd. stores. the.
014F10: 20 43 50 2F 4D 20 0D 8A 09 63 6F 6D 6D 61 6E 64 CP/M ...command
014F20: 20 74 61 69 6C 20 28 66 72 6F 6D 20 23 78 38 30 tail (from #x80
014F30: 29 90 20 69 6E 90 20 74 68 65 90 20 76 65 63 74 ). in. the. vect
014F40: 6F 72 20 61 73 20 61 20 73 74 72 69 6E 67 2E 20 or as a string.
014F50: 0D 8A 09 54 68 69 73 20 61 6C 6C 6F 77 73 20 42 ...This allows B
014F60: 43 50 4C 20 70 72 6F 67 72 61 6D 73 90 20 74 6F CPL programs. to
014F70: 90 20 61 63 63 65 73 73 20 70 61 72 61 6D 65 74 . access paramet
014F80: 65 72 73 20 74 79 70 65 64 20 0D 8A 09 6F 6E 20 ers typed ...on
014F90: 74 68 65 20 43 50 2F 4D 90 20 63 6F 6D 6D 61 6E the CP/M. comman
014FA0: 64 90 20 6C 69 6E 65 2E 90 20 54 68 65 90 20 76 d. line.. The. v
014FB0: 65 63 74 6F 72 90 20 73 68 6F 75 6C 64 20 62 65 ector. should be
014FC0: 20 36 34 20 0D 8A 09 77 6F 72 64 73 20 6C 6F 6E 64 ...words lon
014FD0: 67 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E g.....Returns:.N
014FE0: 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 othing....Locati
014FF0: 6F 6E 3A 09 43 4C 49 42 48 44 52 31 20 6F 6E 6C on:.CLIBHDR1 onl
015000: 79 0D 0A 0D 0A 0D 0A 0D 0A E2 28 68 29 20 52 6F y.........(h) Ro
015010: 75 74 69 6E 65 73 20 70 72 6F 76 69 64 65 64 20 utines provided
015020: 69 6E 20 74 68 65 20 41 4D 53 44 4F 53 20 6C 69 in the AMSDOS li
015030: 62 72 61 72 69 65 73 20 6F 6E 6C 79 E2 0D 0A 0D braries only....
015040: 0A 0D 0A 45 58 54 45 52 4E 41 4C 28 63 6F 6D 6D ...EXTERNAL(comm
015050: 61 6E 64 2C 6E 70 61 72 6D 73 2C 70 61 72 6D 62 and,nparms,parmb
015060: 6C 6F 63 6B 29 0D 0A 0D 0A 45 66 66 65 63 74 3A lock)....Effect:
015070: 09 54 68 69 73 90 20 61 6C 6C 6F 77 73 90 20 61 .This. allows. a
015080: 90 20 42 43 50 4C 90 20 70 72 6F 67 72 61 6D 90 . BCPL. program.
015090: 20 74 6F 90 20 61 63 63 65 73 73 90 20 61 6E 90 to. access. an.
0150A0: 20 41 4D 53 44 4F 53 20 0D 8A 09 65 78 74 65 72 AMSDOS ...exter
0150B0: 6E 61 6C 20 63 6F 6D 6D 61 6E 64 2E 20 49 74 20 nal command. It
0150C0: 69 73 20 75 73 65 64 20 62 79 20 44 45 4C 45 54 is used by DELET
0150D0: 45 20 61 6E 64 20 52 45 4E 41 4D 45 2E 20 54 68 E and RENAME. Th
0150E0: 65 20 0D 8A 09 70 61 72 61 6D 65 74 65 72 73 20 e ...parameters
0150F0: 61 72 65 20 70 61 73 73 65 64 90 20 69 6E 90 20 are passed. in.
015100: 74 68 65 90 20 66 6F 72 6D 90 20 72 65 71 75 69 the. form. requi
015110: 72 65 64 90 20 62 79 20 74 68 65 20 0D 8A 09 66 red. by the ...f
015120: 69 72 6D 77 61 72 65 20 66 6F 72 90 20 63 61 6C irmware for. cal
015130: 6C 69 6E 67 90 20 61 6E 90 20 65 78 74 65 72 6E ling. an. extern
015140: 61 6C 90 20 63 6F 6D 6D 61 6E 64 2E 90 20 53 65 al. command.. Se
015150: 65 20 74 68 65 20 0D 8A 09 44 45 4C 45 54 45 20 e the ...DELETE
015160: 61 6E 64 20 52 45 4E 41 4D 45 20 72 6F 75 74 69 and RENAME routi
015170: 6E 65 73 20 69 6E 90 20 41 4C 49 42 48 44 52 31 nes in. ALIBHDR1
015180: 20 66 6F 72 20 64 65 74 61 69 6C 73 20 6F 66 20 for details of
015190: 0D 8A 09 68 6F 77 20 74 6F 20 75 73 65 20 74 68 ...how to use th
0151A0: 69 73 20 72 6F 75 74 69 6E 65 2E 0D 0A 0D 0A 52 is routine.....R
0151B0: 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D eturns:.Nothing.
0151C0: 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 41 4C 49 ...Location:.ALI
0151D0: 42 48 44 52 31 20 6F 6E 6C 79 0D 0A 0D 0A 0D 0A BHDR1 only......
0151E0: 54 49 4D 45 28 29 0D 0A 0D 0A 45 66 66 65 63 74 TIME()....Effect
0151F0: 3A 09 52 65 74 75 72 6E 73 90 20 74 68 65 90 20 :.Returns. the.
015200: 74 69 6D 65 90 20 69 6E 90 20 75 6E 69 74 73 90 time. in. units.
015210: 90 20 6F 66 90 20 31 2F 33 30 30 90 20 73 65 63 . of. 1/300. sec
015220: 6F 6E 64 2C 90 20 61 73 20 0D 8A 09 6D 61 69 6E ond,. as ...main
015230: 74 61 69 6E 65 64 20 62 79 20 74 68 65 20 41 4D tained by the AM
015240: 53 44 4F 53 20 66 69 72 6D 77 61 72 65 2E 0D 0A SDOS firmware...
015250: 0D 0A 52 65 74 75 72 6E 73 3A 09 54 68 65 20 74 ..Returns:.The t
015260: 69 6D 65 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A ime....Location:
015270: 09 41 4C 49 42 48 44 52 31 20 6F 6E 6C 79 0D 0A .ALIBHDR1 only..
015280: 3E 70 61 0D 0A E2 28 69 29 20 52 6F 75 74 69 6E >pa...(i) Routin
015290: 65 73 20 70 72 6F 76 69 64 65 64 20 6F 6E 6C 79 es provided only
0152A0: 20 66 6F 72 20 63 6F 6D 70 61 74 69 62 69 6C 69 for compatibili
0152B0: 74 79 E2 0D 0A 0D 0A 3E 2D 2D 2D 2D 2D 2D 2D 21 ty.....>-------!
0152C0: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 -------!-------!
0152D0: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 -------!-------!
0152E0: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 -------!-------!
0152F0: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A 54 -------!----R..T
015300: 68 65 73 65 20 61 72 65 20 72 6F 75 74 69 6E 65 hese are routine
015310: 73 20 74 68 61 74 20 6D 61 79 20 62 65 20 75 73 s that may be us
015320: 65 64 20 69 6E 20 65 78 69 73 74 69 6E 67 20 42 ed in existing B
015330: 43 50 4C 20 70 72 6F 67 72 61 6D 73 2C 20 62 75 CPL programs, bu
015340: 74 20 74 68 65 20 0D 8A 69 6E 66 69 78 65 64 20 t the ..infixed
015350: 62 79 74 65 20 6F 70 65 72 61 74 6F 72 20 6E 6F byte operator no
015360: 77 20 6D 61 6B 65 73 20 74 68 65 69 72 20 75 73 w makes their us
015370: 65 20 75 6E 6E 65 63 65 73 73 61 72 79 2E 0D 0A e unnecessary...
015380: 3E 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 >--------------
015390: 4C 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D L-------!-------
0153A0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0153B0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0153C0: 21 2D 2D 2D 2D 52 0D 0A 0D 0A 47 45 54 42 59 54 !----R....GETBYT
0153D0: 45 28 73 74 72 69 6E 67 2C 70 6F 73 29 0D 0A 0D E(string,pos)...
0153E0: 0A 45 66 66 65 63 74 3A 09 47 65 74 73 20 61 90 .Effect:.Gets a.
0153F0: 20 63 68 61 72 61 63 74 65 72 90 20 66 72 6F 6D character. from
015400: 90 20 61 90 20 73 74 72 69 6E 67 2E 90 20 54 68 . a. string.. Th
015410: 69 73 90 20 72 6F 75 74 69 6E 65 90 20 69 73 20 is. routine. is
015420: 0D 8A 09 69 6E 63 6C 75 64 65 64 20 66 6F 72 20 ...included for
015430: 63 6F 6D 70 61 74 69 62 69 6C 69 74 79 20 77 69 compatibility wi
015440: 74 68 20 6F 6C 64 65 72 20 42 43 50 4C 20 73 79 th older BCPL sy
015450: 73 74 65 6D 73 20 61 6E 64 20 0D 8A 09 77 6F 75 stems and ...wou
015460: 6C 64 20 75 73 75 61 6C 6C 79 20 62 65 20 72 65 ld usually be re
015470: 70 6C 61 63 65 64 20 62 79 3A 20 20 73 74 72 69 placed by: stri
015480: 6E 67 25 70 6F 73 0D 0A 0D 0A 52 65 74 75 72 6E ng%pos....Return
015490: 73 3A 09 54 68 65 20 63 68 61 72 61 63 74 65 72 s:.The character
0154A0: 20 66 72 6F 6D 20 74 68 65 20 73 74 72 69 6E 67 from the string
0154B0: 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C ....Location:.CL
0154C0: 49 42 48 44 52 31 2C 20 41 4C 49 42 48 44 52 31 IBHDR1, ALIBHDR1
0154D0: 0D 0A 0D 0A 0D 0A 50 41 43 4B 53 54 52 49 4E 47 ......PACKSTRING
0154E0: 28 76 65 63 74 6F 72 2C 73 74 72 69 6E 67 29 0D (vector,string).
0154F0: 0A 0D 0A 45 66 66 65 63 74 3A 09 50 61 63 6B 73 ...Effect:.Packs
015500: 20 61 20 76 65 63 74 6F 72 20 63 6F 6E 74 61 69 a vector contai
015510: 6E 69 6E 67 20 6F 6E 65 90 20 63 68 61 72 61 63 ning one. charac
015520: 74 65 72 20 70 65 72 20 77 6F 72 64 20 69 6E 74 ter per word int
015530: 6F 20 0D 8A 09 61 20 73 74 72 69 6E 67 90 20 63 o ...a string. c
015540: 6F 6E 74 61 69 6E 69 6E 67 90 20 74 77 6F 90 20 ontaining. two.
015550: 63 68 61 72 61 63 74 65 72 73 90 20 70 65 72 90 characters. per.
015560: 20 77 6F 72 64 2E 20 54 68 69 73 20 0D 8A 09 72 word. This ...r
015570: 6F 75 74 69 6E 65 20 69 73 20 69 6E 63 6C 75 64 outine is includ
015580: 65 64 20 66 6F 72 90 20 63 6F 6D 70 61 74 69 62 ed for. compatib
015590: 69 6C 69 74 79 20 77 69 74 68 20 6F 6C 64 65 72 ility with older
0155A0: 20 42 43 50 4C 20 0D 8A 09 73 79 73 74 65 6D 73 BCPL ...systems
0155B0: 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E 6F .....Returns:.No
0155C0: 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F thing....Locatio
0155D0: 6E 3A 09 43 4C 49 42 48 44 52 31 2C 20 41 4C 49 n:.CLIBHDR1, ALI
0155E0: 42 48 44 52 31 0D 0A 0D 0A 0D 0A 50 55 54 42 59 BHDR1......PUTBY
0155F0: 54 45 28 73 74 72 69 6E 67 2C 70 6F 73 2C 63 68 TE(string,pos,ch
015600: 61 72 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 50 ar)....Effect:.P
015610: 75 74 73 20 61 90 20 63 68 61 72 61 63 74 65 72 uts a. character
015620: 90 20 69 6E 74 6F 90 20 61 90 20 73 74 72 69 6E . into. a. strin
015630: 67 2E 90 20 54 68 69 73 90 20 72 6F 75 74 69 6E g.. This. routin
015640: 65 90 20 69 73 20 0D 8A 09 69 6E 63 6C 75 64 65 e. is ...include
015650: 64 20 66 6F 72 20 63 6F 6D 70 61 74 69 62 69 6C d for compatibil
015660: 69 74 79 90 20 77 69 74 68 90 20 6F 6C 64 65 72 ity. with. older
015670: 90 20 42 43 50 4C 20 73 79 73 74 65 6D 73 2C 20 . BCPL systems,
015680: 0D 8A 09 61 6E 64 20 77 6F 75 6C 64 20 75 73 75 ...and would usu
015690: 61 6C 6C 79 20 62 65 20 72 65 70 6C 61 63 65 64 ally be replaced
0156A0: 20 62 79 3A 09 0D 0A 09 09 73 74 72 69 6E 67 25 by:.....string%
0156B0: 70 6F 73 20 3A 3D 20 63 68 61 72 0D 0A 0D 0A 52 pos := char....R
0156C0: 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D eturns:.Nothing.
0156D0: 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 ...Location:.CLI
0156E0: 42 48 44 52 31 2C 20 41 4C 49 42 48 44 52 31 0D BHDR1, ALIBHDR1.
0156F0: 0A 0D 0A 0D 0A 55 4E 50 41 43 4B 53 54 52 49 4E .....UNPACKSTRIN
015700: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
015710: 12 00 00 00 02 09 50 E5 12 00 C1 02 00 00 00 02 ......P.........
015720: 12 00 C2 02 00 00 00 02 12 00 C3 02 00 00 00 02 ................
015730: 12 00 C4 02 00 00 00 02 12 00 C5 02 00 00 00 02 ................
015740: 12 00 C6 02 00 00 00 02 12 00 C7 02 00 00 00 02 ................
015750: 12 00 C8 02 00 00 00 02 12 00 C9 02 00 00 00 02 ................
015760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
015770: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
015780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
015790: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0157A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0157B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0157C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0157D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0157E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0157F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
015800: 47 28 73 74 72 69 6E 67 2C 76 65 63 74 6F 72 29 G(string,vector)
015810: 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 55 6E 70 61 ....Effect:.Unpa
015820: 63 6B 73 20 61 20 73 74 72 69 6E 67 90 20 63 6F cks a string. co
015830: 6E 74 61 69 6E 69 6E 67 90 20 74 77 6F 90 20 63 ntaining. two. c
015840: 68 61 72 61 63 74 65 72 73 20 70 65 72 20 77 6F haracters per wo
015850: 72 64 20 0D 8A 09 69 6E 74 6F 20 61 20 76 65 63 rd ...into a vec
015860: 74 6F 72 20 63 6F 6E 74 61 69 6E 69 6E 67 20 6F tor containing o
015870: 6E 65 90 20 63 68 61 72 61 63 74 65 72 20 70 65 ne. character pe
015880: 72 20 77 6F 72 64 2E 20 54 68 69 73 20 0D 8A 09 r word. This ...
015890: 72 6F 75 74 69 6E 65 20 69 73 20 69 6E 63 6C 75 routine is inclu
0158A0: 64 65 64 20 66 6F 72 90 20 63 6F 6D 70 61 74 69 ded for. compati
0158B0: 62 69 6C 69 74 79 20 77 69 74 68 20 6F 6C 64 65 bility with olde
0158C0: 72 20 42 43 50 4C 20 0D 8A 09 73 79 73 74 65 6D r BCPL ...system
0158D0: 73 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E s.....Returns:.N
0158E0: 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 othing....Locati
0158F0: 6F 6E 3A 09 43 4C 49 42 48 44 52 31 2C 20 41 4C on:.CLIBHDR1, AL
015900: 49 42 48 44 52 31 0D 0A 3E 70 61 0D 0A E2 28 6A IBHDR1..>pa...(j
015910: 29 20 41 4D 53 44 4F 53 20 47 72 61 70 68 69 63 ) AMSDOS Graphic
015920: 73 20 61 6E 64 20 6F 74 68 65 72 20 72 6F 75 74 s and other rout
015930: 69 6E 65 73 E2 0D 0A 0D 0A 3E 2D 2D 2D 21 2D 2D ines.....>---!--
015940: 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D ---!-----!------
015950: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -!-------!------
015960: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -!-------!------
015970: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D -!-------!----R.
015980: 0A 09 54 68 65 73 65 20 72 6F 75 74 69 6E 65 73 ..These routines
015990: 20 61 72 65 20 69 6E 63 6C 75 64 65 64 20 69 6E are included in
0159A0: 20 74 68 65 20 66 69 6C 65 20 22 41 4D 53 44 4F the file "AMSDO
0159B0: 53 22 2C 20 61 6E 64 20 61 72 65 20 72 65 6C 65 S", and are rele
0159C0: 76 61 6E 74 20 0D 8A 6F 6E 6C 79 20 74 6F 20 43 vant ..only to C
0159D0: 50 43 20 6D 61 63 68 69 6E 65 73 2E 20 54 68 65 PC machines. The
0159E0: 79 90 20 70 72 6F 76 69 64 65 90 20 74 68 65 90 y. provide. the.
0159F0: 20 6D 65 61 6E 73 90 20 66 6F 72 20 61 20 42 43 means. for a BC
015A00: 50 4C 20 70 72 6F 67 72 61 6D 20 74 6F 20 0D 8A PL program to ..
015A10: 61 63 63 65 73 73 20 74 68 65 20 63 6F 6D 70 75 access the compu
015A20: 74 65 72 27 73 90 20 67 72 61 70 68 69 63 73 90 ter's. graphics.
015A30: 20 61 6E 64 90 20 6F 74 68 65 72 90 20 66 69 72 and. other. fir
015A40: 6D 77 61 72 65 90 20 66 61 63 69 6C 69 74 69 65 mware. facilitie
015A50: 73 2C 20 61 6E 64 20 0D 8A 69 6E 20 6D 6F 73 74 s, and ..in most
015A60: 20 63 61 73 65 73 20 63 6F 72 72 65 73 70 6F 6E cases correspon
015A70: 64 20 64 69 72 65 63 74 6C 79 90 20 74 6F 90 20 d directly. to.
015A80: 61 20 4C 6F 63 6F 6D 6F 74 69 76 65 20 42 41 53 a Locomotive BAS
015A90: 49 43 20 63 6F 6D 6D 61 6E 64 2E 20 46 6F 72 20 IC command. For
015AA0: 0D 8A 64 65 74 61 69 6C 73 20 6F 66 20 68 6F 77 ..details of how
015AB0: 20 74 6F 20 75 73 65 90 20 74 68 65 73 65 90 20 to use. these.
015AC0: 72 6F 75 74 69 6E 65 73 90 20 63 6F 6E 73 75 6C routines. consul
015AD0: 74 20 74 68 65 20 66 69 6C 65 20 41 4D 53 44 4F t the file AMSDO
015AE0: 53 2C 20 77 68 69 63 68 20 0D 8A 6C 69 73 74 73 S, which ..lists
015AF0: 20 74 68 65 20 65 71 75 69 76 61 6C 65 6E 74 20 the equivalent
015B00: 42 41 53 49 43 20 72 6F 75 74 69 6E 65 73 2E 0D BASIC routines..
015B10: 0A 0D 0A 4C 69 73 74 20 6F 66 20 72 6F 75 74 69 ...List of routi
015B20: 6E 65 73 3A 0D 0A 0D 0A 62 6F 72 64 65 72 2C 20 nes:....border,
015B30: 63 6C 67 2C 20 63 6C 73 2C 20 63 75 72 73 64 69 clg, cls, cursdi
015B40: 2C 20 63 75 72 73 65 6E 2C 90 20 63 75 72 73 6F , cursen,. curso
015B50: 66 66 2C 90 20 63 75 72 73 6F 6E 2C 20 64 72 61 ff,. curson, dra
015B60: 77 2C 20 64 72 61 77 72 2C 20 65 6E 74 2C 20 0D w, drawr, ent, .
015B70: 8A 65 6E 76 2C 20 66 72 61 6D 65 2C 20 67 70 65 .env, frame, gpe
015B80: 6E 2C 20 67 70 61 70 65 72 2C 20 67 74 65 73 74 n, gpaper, gtest
015B90: 2C 90 20 67 74 65 73 74 72 2C 90 20 67 77 69 6E ,. gtestr,. gwin
015BA0: 64 6F 77 2C 20 67 77 72 63 68 2C 20 69 6E 6B 2C dow, gwrch, ink,
015BB0: 20 69 6E 6B 65 79 2C 20 0D 8A 69 6E 6B 6D 6F 64 inkey, ..inkmod
015BC0: 65 2C 20 6B 65 79 76 61 6C 69 64 2C 20 6C 6F 63 e, keyvalid, loc
015BD0: 61 74 65 2C 20 6D 6F 64 65 2C 90 20 6D 6F 76 65 ate, mode,. move
015BE0: 2C 90 20 6D 6F 76 65 72 2C 20 6F 70 61 71 75 65 ,. mover, opaque
015BF0: 2C 20 6F 72 69 67 69 6E 2C 20 70 61 70 65 72 2C , origin, paper,
015C00: 20 0D 8A 70 65 6E 2C 20 70 6C 6F 74 2C 20 70 6C ..pen, plot, pl
015C10: 6F 74 72 2C 90 20 72 65 6C 65 61 73 65 2C 90 20 otr,. release,.
015C20: 72 73 78 2C 90 20 73 6F 75 6E 64 2C 90 20 73 70 rsx,. sound,. sp
015C30: 65 65 64 69 6E 6B 2C 20 73 70 65 65 64 6B 65 79 eedink, speedkey
015C40: 2C 20 73 74 72 65 61 6D 2C 20 0D 8A 73 74 72 73 , stream, ..strs
015C50: 77 61 70 2C 20 74 61 67 2C 20 74 61 67 6F 66 66 wap, tag, tagoff
015C60: 2C 20 74 72 61 6E 73 70 61 72 65 6E 74 2C 20 77 , transparent, w
015C70: 69 6E 64 6F 77 2C 20 78 70 6F 73 2C 20 79 70 6F indow, xpos, ypo
015C80: 73 0D 0A 0D 0A 0D 0A 0D 0A E2 28 6B 29 20 44 45 s.........(k) DE
015C90: 42 55 47 E2 0D 0A 0D 0A 09 54 68 65 72 65 20 69 BUG......There i
015CA0: 73 20 6F 6E 65 20 66 75 72 74 68 65 72 90 20 6C s one further. l
015CB0: 69 62 72 61 72 79 90 20 72 6F 75 74 69 6E 65 90 ibrary. routine.
015CC0: 20 70 72 6F 76 69 64 65 64 2C 90 20 77 68 69 63 provided,. whic
015CD0: 68 20 69 73 20 75 73 65 66 75 6C 20 0D 8A 77 68 h is useful ..wh
015CE0: 65 6E 20 64 65 62 75 67 67 69 6E 67 20 70 72 6F en debugging pro
015CF0: 67 72 61 6D 73 2E 20 54 68 65 20 72 6F 75 74 69 grams. The routi
015D00: 6E 65 2C 20 44 45 42 55 47 2C 20 69 73 20 73 75 ne, DEBUG, is su
015D10: 70 70 6C 69 65 64 20 69 6E 20 61 20 73 65 70 61 pplied in a sepa
015D20: 72 61 74 65 20 0D 8A 66 69 6C 65 2C 20 61 6C 73 rate ..file, als
015D30: 6F 20 63 61 6C 6C 65 64 20 27 44 45 42 55 47 27 o called 'DEBUG'
015D40: 2C 20 61 6E 64 20 70 72 6F 76 69 64 65 73 20 76 , and provides v
015D50: 61 72 69 6F 75 73 20 6F 70 74 69 6F 6E 73 20 66 arious options f
015D60: 6F 72 20 64 69 73 70 6C 61 79 69 6E 67 20 0D 8A or displaying ..
015D70: 76 61 72 69 61 62 6C 65 20 6E 61 6D 65 73 20 61 variable names a
015D80: 6E 64 20 63 6F 6E 74 65 6E 74 73 2E 20 54 68 65 nd contents. The
015D90: 73 65 90 20 6F 70 74 69 6F 6E 73 90 20 6D 61 79 se. options. may
015DA0: 20 62 65 20 63 68 61 6E 67 65 64 20 77 69 74 68 be changed with
015DB0: 20 6C 61 74 65 72 20 0D 8A 72 65 6C 65 61 73 65 later ..release
015DC0: 73 20 6F 66 20 42 43 50 4C 20 61 6E 64 20 73 6F s of BCPL and so
015DD0: 90 20 74 6F 90 20 65 6E 73 75 72 65 90 20 61 63 . to. ensure. ac
015DE0: 63 75 72 61 63 79 2C 90 20 65 78 61 63 74 20 64 curacy,. exact d
015DF0: 65 74 61 69 6C 73 20 61 72 65 20 6F 6E 6C 79 20 etails are only
015E00: 0D 8A 67 69 76 65 6E 20 69 6E 20 74 68 65 20 66 ..given in the f
015E10: 69 6C 65 2E 0D 0A 09 54 6F 20 75 73 65 20 44 45 ile....To use DE
015E20: 42 55 47 2C 20 70 75 74 20 74 68 65 90 20 64 69 BUG, put the. di
015E30: 72 65 63 74 69 76 65 90 20 27 47 45 54 90 20 22 rective. 'GET. "
015E40: 44 45 42 55 47 22 27 20 6E 65 61 72 20 74 68 65 DEBUG"' near the
015E50: 20 73 74 61 72 74 20 6F 66 20 0D 8A 74 68 65 20 start of ..the
015E60: 70 72 6F 67 72 61 6D 20 2D 2D 20 73 6F 20 69 74 program -- so it
015E70: 20 69 73 20 63 6F 6D 70 69 6C 65 64 20 61 66 74 is compiled aft
015E80: 65 72 20 74 68 65 20 6C 69 62 72 61 72 79 20 72 er the library r
015E90: 6F 75 74 69 6E 65 73 20 61 6E 64 20 62 65 66 6F outines and befo
015EA0: 72 65 20 0D 8A 74 68 65 20 66 69 72 73 74 20 74 re ..the first t
015EB0: 69 6D 65 20 44 45 42 55 47 20 69 73 20 63 61 6C ime DEBUG is cal
015EC0: 6C 65 64 2E 0D 0A 09 49 74 20 69 73 20 70 6F 73 led....It is pos
015ED0: 73 69 62 6C 65 20 74 6F 20 63 6F 6D 70 69 6C 65 sible to compile
015EE0: 20 74 68 65 90 20 70 72 6F 67 72 61 6D 20 77 69 the. program wi
015EF0: 74 68 6F 75 74 20 44 45 42 55 47 20 62 65 69 6E thout DEBUG bein
015F00: 67 20 63 61 6C 6C 65 64 2C 20 0D 8A 62 75 74 20 g called, ..but
015F10: 77 69 74 68 6F 75 74 20 74 68 65 20 6E 65 65 64 without the need
015F20: 20 74 6F 90 20 72 65 6D 6F 76 65 90 20 74 68 65 to. remove. the
015F30: 90 20 63 61 6C 6C 73 20 74 68 65 6D 73 65 6C 76 . calls themselv
015F40: 65 73 2E 20 53 69 6D 70 6C 79 20 72 65 70 6C 61 es. Simply repla
015F50: 63 65 20 0D 8A 27 47 45 54 91 22 44 45 42 55 47 ce ..'GET."DEBUG
015F60: 22 27 20 62 79 20 27 4C 45 54 20 64 65 62 75 67 "' by 'LET debug
015F70: 28 29 20 42 45 20 52 45 54 55 52 4E 27 2E 20 54 () BE RETURN'. T
015F80: 68 69 73 20 77 69 6C 6C 20 73 75 62 73 74 69 74 his will substit
015F90: 75 74 65 20 61 20 64 75 6D 6D 79 20 0D 8A 72 6F ute a dummy ..ro
015FA0: 75 74 69 6E 65 2E 0D 0A 0D 0A 3E 70 61 0D 0A 1A utine.....>pa...
015FB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
015FC0: 2F 83 00 21 04 68 69 73 20 77 69 6C 6C 20 73 75 /..!.his will su
015FD0: 62 73 74 69 74 75 74 65 20 61 20 64 75 6D 6D 79 bstitute a dummy
015FE0: 20 0D 8A 72 6F 75 74 69 6E 65 2E 0D 0A 0D 0A 3E ..routine.....>
015FF0: 70 61 0D 0A 1A 00 00 00 00 00 00 00 00 00 00 00 pa..............
016000: 00 42 43 50 4C 4D 33 20 20 20 20 20 00 00 00 00 .BCPLM3 ....
016010: 00 00 0A 00 00 C6 06 00 C5 59 00 00 00 00 00 00 .........Y......
016020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016040: C5 59 00 53 05 65 0D 0A 20 20 20 20 20 20 20 20 .Y.S.e..
016050: 55 6E 65 78 70 65 63 74 65 64 20 6E 6F 64 65 20 Unexpected node
016060: 69 6E 20 65 78 70 72 65 73 73 69 6F 6E 0D 0A 20 in expression..
016070: 20 20 20 20 20 20 20 44 65 63 6C 61 72 61 74 69 Declarati
016080: 3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D >---!-----!-----
016090: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0160A0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0160B0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0160C0: 21 2D 2D 2D 2D 52 0D 0A 3E 70 6E 20 34 39 0D 0A !----R..>pn 49..
0160D0: 3E 74 6D 20 33 0D 0A 3E 62 6D 20 31 31 0D 0A 3E >tm 3..>bm 11..>
0160E0: 68 6D 20 30 0D 0A 3E 66 6D 20 32 0D 0A 3E 66 6F hm 0..>fm 2..>fo
0160F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
016100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
016110: 20 20 25 0D 0A 3E 63 65 20 E2 39 2E 20 44 49 46 %..>ce .9. DIF
016120: 46 45 52 45 4E 43 45 53 20 46 52 4F 4D 20 53 54 FERENCES FROM ST
016130: 41 4E 44 41 52 44 20 42 43 50 4C E2 0D 0A 0D 0A ANDARD BCPL.....
016140: 0D 0A E2 54 68 65 20 49 4E 4C 49 4E 45 20 63 6F ...The INLINE co
016150: 6D 6D 61 6E 64 E2 0D 0A 0D 0A 09 54 68 69 73 20 mmand......This
016160: 69 73 20 61 6E 20 65 78 74 65 6E 73 69 6F 6E 20 is an extension
016170: 74 6F 20 74 68 65 20 6E 6F 72 6D 61 6C 20 42 43 to the normal BC
016180: 50 4C 20 63 6F 6D 6D 61 6E 64 20 73 65 74 20 61 PL command set a
016190: 6E 64 20 61 6C 6C 6F 77 73 20 5A 38 30 20 0D 8A nd allows Z80 ..
0161A0: 63 6F 64 65 20 74 6F 20 62 65 90 20 69 6E 63 6F code to be. inco
0161B0: 72 70 6F 72 61 74 65 64 90 20 64 69 72 65 63 74 rporated. direct
0161C0: 6C 79 90 20 69 6E 74 6F 90 20 61 90 20 42 43 50 ly. into. a. BCP
0161D0: 4C 90 20 70 72 6F 67 72 61 6D 2E 20 54 68 65 20 L. program. The
0161E0: 69 6E 6C 69 6E 65 20 0D 8A 63 6F 6D 6D 61 6E 64 inline ..command
0161F0: 20 69 73 20 66 6F 6C 6C 6F 77 65 64 20 62 79 20 is followed by
016200: 61 90 20 6C 69 73 74 90 20 6F 66 90 20 63 6F 6E a. list. of. con
016210: 73 74 61 6E 74 73 20 73 65 70 61 72 61 74 65 64 stants separated
016220: 20 62 79 20 63 6F 6D 6D 61 73 2E 20 54 68 65 20 by commas. The
016230: 0D 8A 6C 6F 77 20 62 79 74 65 20 6F 66 20 74 68 ..low byte of th
016240: 65 73 65 20 63 6F 6E 73 74 61 6E 74 73 90 20 69 ese constants. i
016250: 73 90 20 74 61 6B 65 6E 90 20 61 6E 64 20 69 6E s. taken. and in
016260: 73 65 72 74 65 64 20 64 69 72 65 63 74 6C 79 20 serted directly
016270: 69 6E 74 6F 20 74 68 65 20 0D 8A 6F 62 6A 65 63 into the ..objec
016280: 74 20 63 6F 64 65 2E 20 54 68 69 73 20 61 6C 6C t code. This all
016290: 6F 77 73 20 70 72 6F 63 65 64 75 72 65 73 20 74 ows procedures t
0162A0: 6F 20 63 61 6C 6C 20 66 69 72 6D 77 61 72 65 20 o call firmware
0162B0: 72 6F 75 74 69 6E 65 73 20 65 74 63 2E 20 61 6E routines etc. an
0162C0: 64 20 0D 8A 68 61 73 20 62 65 65 6E 20 75 73 65 d ..has been use
0162D0: 64 20 69 6E 90 20 74 68 65 90 20 4C 49 42 48 44 d in. the. LIBHD
0162E0: 52 90 20 66 69 6C 65 73 2E 90 20 49 6E 90 20 6F R. files.. In. o
0162F0: 72 64 65 72 90 20 74 6F 20 75 73 65 20 74 68 69 rder. to use thi
016300: 73 20 66 61 63 69 6C 69 74 79 20 0D 8A 70 72 6F s facility ..pro
016310: 70 65 72 6C 79 20 79 6F 75 20 6D 75 73 74 90 20 perly you must.
016320: 62 65 90 20 61 77 61 72 65 90 20 6F 66 90 20 74 be. aware. of. t
016330: 68 65 90 20 77 61 79 90 20 74 68 61 74 90 20 74 he. way. that. t
016340: 68 65 90 20 63 6F 6D 70 69 6C 65 72 20 73 74 6F he. compiler sto
016350: 72 65 73 20 0D 8A 76 61 72 69 61 62 6C 65 73 20 res ..variables
016360: 61 6E 64 20 72 65 67 69 73 74 65 72 73 20 77 68 and registers wh
016370: 69 63 68 90 20 6D 75 73 74 90 20 62 65 90 20 6C ich. must. be. l
016380: 65 66 74 90 20 69 6E 74 61 63 74 2E 90 20 53 65 eft. intact.. Se
016390: 65 20 61 70 70 65 6E 64 69 78 20 31 20 0D 8A 28 e appendix 1 ..(
0163A0: 74 65 63 68 6E 69 63 61 6C 20 69 6E 66 6F 72 6D technical inform
0163B0: 61 74 69 6F 6E 29 2E 0D 0A 0D 0A 09 65 2E 67 2E ation)......e.g.
0163C0: 20 20 49 4E 4C 49 4E 45 20 32 30 35 2C 23 78 35 INLINE 205,#x5
0163D0: 41 2C 23 78 42 42 0D 0A 0D 0A 77 69 6C 6C 20 63 A,#xBB....will c
0163E0: 61 6C 6C 20 74 68 65 20 41 4D 53 44 4F 53 20 70 all the AMSDOS p
0163F0: 72 69 6E 74 20 63 68 61 72 61 63 74 65 72 20 72 rint character r
016400: 6F 75 74 69 6E 65 20 2D 2D 20 54 58 54 20 4F 55 outine -- TXT OU
016410: 54 50 55 54 2E 0D 0A 0D 0A 0D 0A E2 54 68 65 20 TPUT........The
016420: 69 6E 66 69 78 65 64 20 62 79 74 65 20 6F 70 65 infixed byte ope
016430: 72 61 74 6F 72 20 25 E2 0D 0A 0D 0A 09 54 68 69 rator %......Thi
016440: 73 20 69 73 20 61 6E 20 65 78 74 65 6E 73 69 6F s is an extensio
016450: 6E 90 20 74 6F 90 20 73 74 61 6E 64 61 72 64 90 n. to. standard.
016460: 20 42 43 50 4C 90 20 77 68 69 63 68 90 20 69 73 BCPL. which. is
016470: 20 73 75 70 70 6F 72 74 65 64 2E 20 54 68 65 20 supported. The
016480: 0D 8A 69 6E 66 69 78 65 64 20 62 79 74 65 20 6F ..infixed byte o
016490: 70 65 72 61 74 6F 72 20 77 69 6C 6C 20 65 78 74 perator will ext
0164A0: 72 61 63 74 20 61 20 70 61 72 74 69 63 75 6C 61 ract a particula
0164B0: 72 20 62 79 74 65 20 66 72 6F 6D 20 61 20 76 65 r byte from a ve
0164C0: 63 74 6F 72 2E 20 49 6E 20 0D 8A 75 73 65 20 74 ctor. In ..use t
0164D0: 68 69 73 20 6F 70 65 72 61 74 6F 72 20 69 73 20 his operator is
0164E0: 76 65 72 79 90 20 73 69 6D 69 6C 61 72 90 20 74 very. similar. t
0164F0: 6F 90 20 74 68 65 90 20 21 20 6F 70 65 72 61 74 o. the. ! operat
016500: 6F 72 20 65 78 63 65 70 74 20 74 68 61 74 20 69 or except that i
016510: 74 20 0D 8A 63 61 6E 6E 6F 74 20 62 65 20 75 73 t ..cannot be us
016520: 65 64 20 61 73 20 61 20 75 6E 61 72 79 20 6F 70 ed as a unary op
016530: 65 72 61 74 6F 72 90 20 61 6E 64 20 74 68 61 74 erator. and that
016540: 20 74 68 65 20 73 65 63 6F 6E 64 20 6F 70 65 72 the second oper
016550: 61 6E 64 20 61 6C 77 61 79 73 20 0D 8A 67 69 76 and always ..giv
016560: 65 73 20 74 68 65 20 62 79 74 65 20 6F 66 66 73 es the byte offs
016570: 65 74 20 66 72 6F 6D 20 74 68 65 90 20 66 69 72 et from the. fir
016580: 73 74 90 20 6F 70 65 72 61 74 6F 72 2E 90 20 54 st. operator.. T
016590: 68 65 20 6D 61 69 6E 20 75 73 65 20 6F 66 20 74 he main use of t
0165A0: 68 69 73 20 0D 8A 6F 70 65 72 61 74 6F 72 20 69 his ..operator i
0165B0: 73 20 77 69 74 68 20 73 74 72 69 6E 67 73 20 74 s with strings t
0165C0: 6F 90 20 65 78 74 72 61 63 74 90 20 61 90 20 70 o. extract. a. p
0165D0: 61 72 74 69 63 75 6C 61 72 20 63 68 61 72 61 63 articular charac
0165E0: 74 65 72 20 66 72 6F 6D 20 74 68 65 20 0D 8A 73 ter from the ..s
0165F0: 74 72 69 6E 67 2E 0D 0A 0D 0A 09 65 2E 67 2E 20 tring......e.g.
016600: 20 4C 45 54 20 76 20 3D 20 56 45 43 20 31 39 0D LET v = VEC 19.
016610: 0A 09 09 46 4F 52 20 61 20 3D 20 31 20 54 4F 20 ...FOR a = 1 TO
016620: 33 39 20 44 4F 20 76 25 61 20 3A 3D 20 27 20 27 39 DO v%a := ' '
016630: 0D 0A 09 09 76 25 30 20 3A 3D 20 33 39 20 20 20 ....v%0 := 39
016640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
016650: 20 20 2F 2F 20 73 65 74 20 74 68 65 20 73 74 72 // set the str
016660: 69 6E 67 20 6C 65 6E 67 74 68 20 62 79 74 65 0D ing length byte.
016670: 0A 0D 0A 77 69 6C 6C 20 63 72 65 61 74 65 20 61 ...will create a
016680: 20 73 74 72 69 6E 67 20 63 6F 6E 74 61 69 6E 69 string containi
016690: 6E 67 20 33 39 20 73 70 61 63 65 73 2E 0D 0A 0D ng 39 spaces....
0166A0: 0A 0D 0A E2 55 6E 64 65 66 69 6E 65 64 20 69 6E ....Undefined in
0166B0: 69 74 69 61 6C 20 76 61 6C 75 65 73 E2 0D 0A 0D itial values....
0166C0: 0A 09 54 68 65 20 69 6E 69 74 69 61 6C 20 76 61 ..The initial va
0166D0: 6C 75 65 20 6F 66 20 61 20 73 69 6D 70 6C 65 90 lue of a simple.
0166E0: 20 76 61 72 69 61 62 6C 65 90 20 64 65 63 6C 61 variable. decla
0166F0: 72 65 64 20 69 6E 20 61 20 4C 45 54 20 63 6F 6D red in a LET com
016700: 6D 61 6E 64 20 0D 8A 6D 61 79 20 62 65 20 75 6E mand ..may be un
016710: 64 65 66 69 6E 65 64 2E 20 54 68 69 73 20 69 73 defined. This is
016720: 20 64 6F 6E 65 20 62 79 90 20 75 73 69 6E 67 90 done by. using.
016730: 20 61 20 71 75 65 73 74 69 6F 6E 20 6D 61 72 6B a question mark
016740: 20 28 3F 29 2E 20 54 68 69 73 20 69 73 20 0D 8A (?). This is ..
016750: 75 73 65 64 20 74 6F 20 61 69 64 20 72 65 61 64 used to aid read
016760: 61 62 69 6C 69 74 79 20 6F 66 90 20 70 72 6F 67 ability of. prog
016770: 72 61 6D 73 90 20 62 79 90 20 69 6E 64 69 63 61 rams. by. indica
016780: 74 69 6E 67 90 20 74 68 61 74 20 74 68 65 72 65 ting. that there
016790: 20 69 73 20 6E 6F 20 0D 8A 72 65 6C 65 76 61 6E is no ..relevan
0167A0: 74 20 69 6E 69 74 69 61 6C 20 76 61 6C 75 65 20 t initial value
0167B0: 6F 66 20 61 20 76 61 72 69 61 62 6C 65 2E 0D 0A of a variable...
0167C0: 0D 0A 0D 0A E2 46 49 4E 44 49 4E 50 55 54 20 61 .....FINDINPUT a
0167D0: 6E 64 20 46 49 4E 44 4F 55 54 50 55 54 E2 0D 0A nd FINDOUTPUT...
0167E0: 0D 0A 09 54 68 65 20 70 72 6F 63 65 64 75 72 65 ...The procedure
0167F0: 73 90 20 66 6F 72 90 20 6F 70 65 6E 69 6E 67 90 s. for. opening.
016800: 20 66 69 6C 65 73 90 20 61 72 65 90 20 73 6C 69 files. are. sli
016810: 67 68 74 6C 79 90 20 64 69 66 66 65 72 65 6E 74 ghtly. different
016820: 20 66 72 6F 6D 20 0D 8A 73 74 61 6E 64 61 72 64 from ..standard
016830: 20 42 43 50 4C 20 69 6E 20 74 68 61 74 90 20 61 BCPL in that. a
016840: 90 20 62 75 66 66 65 72 90 20 6D 75 73 74 90 20 . buffer. must.
016850: 62 65 90 20 73 70 65 63 69 66 69 65 64 90 20 61 be. specified. a
016860: 73 20 61 20 70 61 72 61 6D 65 74 65 72 2C 20 0D s a parameter, .
016870: 8A 69 6E 73 74 65 61 64 20 6F 66 20 74 68 65 6D .instead of them
016880: 20 72 65 74 75 72 6E 69 6E 67 20 61 20 73 74 72 returning a str
016890: 65 61 6D 20 69 64 65 6E 74 69 66 69 65 72 2E 0D eam identifier..
0168A0: 0A 3E 70 61 0D 0A E2 47 6C 6F 62 61 6C 20 56 61 .>pa...Global Va
0168B0: 72 69 61 62 6C 65 73 E2 0D 0A 0D 0A 0D 0A 09 57 riables........W
0168C0: 68 65 6E 20 61 20 70 72 6F 63 65 64 75 72 65 20 hen a procedure
0168D0: 69 73 20 64 65 66 69 6E 65 64 90 20 69 6E 90 20 is defined. in.
0168E0: 73 74 61 6E 64 61 72 64 20 42 43 50 4C 20 74 68 standard BCPL th
0168F0: 65 20 63 6F 6D 70 69 6C 65 72 20 63 68 65 63 6B e compiler check
016900: 73 20 0D 8A 74 6F 20 73 65 65 20 69 66 20 61 20 s ..to see if a
016910: 47 4C 4F 42 41 4C 20 76 61 72 69 61 62 6C 65 20 GLOBAL variable
016920: 77 69 74 68 20 74 68 65 90 20 73 61 6D 65 90 20 with the. same.
016930: 6E 61 6D 65 20 69 73 20 69 6E 20 73 63 6F 70 65 name is in scope
016940: 2E 20 49 66 20 69 74 20 69 73 20 0D 8A 69 6E 20 . If it is ..in
016950: 73 63 6F 70 65 2C 20 74 68 65 6E 20 74 68 61 74 scope, then that
016960: 20 76 61 72 69 61 62 6C 65 20 77 69 6C 6C 90 20 variable will.
016970: 62 65 90 20 69 6E 69 74 69 61 6C 69 73 65 64 20 be. initialised
016980: 77 69 74 68 20 74 68 65 20 61 64 64 72 65 73 73 with the address
016990: 20 6F 66 20 0D 8A 74 68 65 20 70 72 6F 63 65 64 of ..the proced
0169A0: 75 72 65 2E 20 49 66 20 74 68 65 72 65 20 69 73 ure. If there is
0169B0: 20 6E 6F 20 73 75 63 68 20 76 61 72 69 61 62 6C no such variabl
0169C0: 65 20 69 6E 20 73 63 6F 70 65 20 74 68 65 6E 20 e in scope then
0169D0: 61 20 6E 65 77 20 53 54 41 54 49 43 20 0D 8A 76 a new STATIC ..v
0169E0: 61 72 69 61 62 6C 65 20 77 69 6C 6C 90 20 62 65 ariable will. be
0169F0: 90 20 63 72 65 61 74 65 64 90 20 61 6E 64 90 20 . created. and.
016A00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
016A10: 13 00 00 00 02 09 50 E5 13 00 C1 02 00 00 00 02 ......P.........
016A20: 13 00 C2 02 00 00 00 02 13 00 C3 02 00 00 00 02 ................
016A30: 13 00 C4 02 00 00 00 02 13 00 C5 02 00 00 00 02 ................
016A40: 13 00 C6 02 00 00 00 02 13 00 C7 02 00 00 00 02 ................
016A50: 13 00 C8 02 00 00 00 02 13 00 C9 02 00 00 00 02 ................
016A60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016A70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016A80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016A90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016AA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016AB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016AC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016AD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016AE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016AF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016B00: 74 68 61 74 90 20 76 61 72 69 61 62 6C 65 90 20 that. variable.
016B10: 69 6E 69 74 69 61 6C 69 73 65 64 90 20 77 69 74 initialised. wit
016B20: 68 20 74 68 65 20 0D 8A 61 64 64 72 65 73 73 20 h the ..address
016B30: 6F 66 20 74 68 65 20 70 72 6F 63 65 64 75 72 65 of the procedure
016B40: 2E 20 57 68 65 6E 20 61 20 70 72 6F 63 65 64 75 . When a procedu
016B50: 72 65 20 63 61 6C 6C 20 69 73 20 6D 61 64 65 20 re call is made
016B60: 74 68 65 20 63 6F 64 65 20 6C 6F 6F 6B 73 20 0D the code looks .
016B70: 8A 75 70 20 74 68 65 20 61 64 64 72 65 73 73 20 .up the address
016B80: 69 6E 20 74 68 65 90 20 72 65 6C 65 76 61 6E 74 in the. relevant
016B90: 90 20 76 61 72 69 61 62 6C 65 90 20 61 6E 64 20 . variable. and
016BA0: 63 61 6C 6C 73 20 74 68 61 74 20 61 64 64 72 65 calls that addre
016BB0: 73 73 2E 20 54 68 65 20 0D 8A 72 65 61 73 6F 6E ss. The ..reason
016BC0: 20 66 6F 72 20 74 68 69 73 90 20 69 6E 64 69 72 for this. indir
016BD0: 65 63 74 90 20 63 61 6C 6C 69 6E 67 90 20 69 73 ect. calling. is
016BE0: 90 20 74 6F 90 20 65 6E 61 62 6C 65 90 20 65 61 . to. enable. ea
016BF0: 73 79 20 63 6F 6D 6D 75 6E 69 63 61 74 69 6F 6E sy communication
016C00: 20 0D 8A 62 65 74 77 65 65 6E 20 73 65 70 61 72 ..between separ
016C10: 61 74 65 6C 79 20 63 6F 6D 70 69 6C 65 64 20 75 ately compiled u
016C20: 6E 69 74 73 2E 0D 0A 09 41 73 20 74 68 65 20 41 nits....As the A
016C30: 52 4E 4F 52 20 63 6F 6D 70 69 6C 65 72 20 64 6F RNOR compiler do
016C40: 65 73 20 6E 6F 74 20 61 6C 6C 6F 77 20 73 65 70 es not allow sep
016C50: 61 72 61 74 65 20 63 6F 6D 70 69 6C 61 74 69 6F arate compilatio
016C60: 6E 20 74 68 65 72 65 20 69 73 20 0D 8A 6E 6F 20 n there is ..no
016C70: 6E 65 65 64 20 66 6F 72 20 74 68 69 73 20 69 6E need for this in
016C80: 64 69 72 65 63 74 20 61 70 70 72 6F 61 63 68 20 direct approach
016C90: 61 6E 64 90 20 73 6F 90 20 61 20 63 61 6C 6C 20 and. so. a call
016CA0: 69 73 20 6D 61 64 65 20 64 69 72 65 63 74 6C 79 is made directly
016CB0: 20 74 6F 20 0D 8A 74 68 65 20 61 64 64 72 65 73 to ..the addres
016CC0: 73 90 20 6F 66 90 20 74 68 65 90 20 70 72 6F 63 s. of. the. proc
016CD0: 65 64 75 72 65 2E 90 20 54 68 69 73 90 20 61 6C edure.. This. al
016CE0: 73 6F 90 20 6D 65 61 6E 73 90 20 74 68 61 74 90 so. means. that.
016CF0: 20 74 68 65 90 20 6E 75 6D 62 65 72 20 0D 8A 61 the. number ..a
016D00: 73 73 6F 63 69 61 74 65 64 20 77 69 74 68 20 61 ssociated with a
016D10: 20 47 4C 4F 42 41 4C 20 76 61 72 69 61 62 6C 65 GLOBAL variable
016D20: 20 69 6E 90 20 69 74 73 20 64 65 66 69 6E 69 74 in. its definit
016D30: 69 6F 6E 20 69 73 20 6D 65 61 6E 69 6E 67 6C 65 ion is meaningle
016D40: 73 73 20 61 73 20 0D 8A 74 68 65 72 65 20 69 73 ss as ..there is
016D50: 20 6E 6F 90 20 61 63 74 75 61 6C 90 20 47 4C 4F no. actual. GLO
016D60: 42 41 4C 90 20 76 65 63 74 6F 72 2E 90 20 54 68 BAL. vector.. Th
016D70: 65 90 20 69 6E 64 65 78 90 20 6E 75 6D 62 65 72 e. index. number
016D80: 90 20 69 73 2C 20 68 6F 77 65 76 65 72 2C 20 0D . is, however, .
016D90: 8A 72 65 74 61 69 6E 65 64 20 66 6F 72 20 63 6F .retained for co
016DA0: 6D 70 61 74 61 62 69 6C 69 74 79 20 77 69 74 68 mpatability with
016DB0: 90 20 6F 74 68 65 72 90 20 63 6F 6D 70 69 6C 65 . other. compile
016DC0: 72 73 2E 90 20 54 68 65 20 6F 75 74 63 6F 6D 65 rs.. The outcome
016DD0: 20 6F 66 20 61 6C 6C 20 0D 8A 74 68 69 73 20 69 of all ..this i
016DE0: 73 20 74 68 61 74 90 20 61 6C 74 68 6F 75 67 68 s that. although
016DF0: 90 20 69 74 90 20 69 73 90 20 70 6F 73 73 69 62 . it. is. possib
016E00: 6C 65 90 20 74 6F 90 20 72 65 61 64 90 20 74 68 le. to. read. th
016E10: 65 90 20 61 64 64 72 65 73 73 90 20 6F 66 20 61 e. address. of a
016E20: 20 0D 8A 70 72 6F 63 65 64 75 72 65 2C 20 61 6E ..procedure, an
016E30: 64 20 73 6F 20 70 61 73 73 20 70 72 6F 63 65 64 d so pass proced
016E40: 75 72 65 73 20 61 73 20 70 61 72 61 6D 65 74 65 ures as paramete
016E50: 72 73 2C 20 69 74 20 69 73 20 6E 6F 74 20 70 6F rs, it is not po
016E60: 73 73 69 62 6C 65 20 74 6F 20 0D 8A 61 73 73 69 ssible to ..assi
016E70: 67 6E 20 74 6F 20 61 20 70 72 6F 63 65 64 75 72 gn to a procedur
016E80: 65 2E 20 59 6F 75 20 63 61 6E 2C 20 68 6F 77 65 e. You can, howe
016E90: 76 65 72 2C 20 73 65 74 20 75 70 20 61 20 67 6C ver, set up a gl
016EA0: 6F 62 61 6C 20 76 61 72 69 61 62 6C 65 20 77 69 obal variable wi
016EB0: 74 68 20 0D 8A 61 20 64 69 66 66 65 72 65 6E 74 th ..a different
016EC0: 20 6E 61 6D 65 20 66 72 6F 6D 90 20 61 90 20 70 name from. a. p
016ED0: 72 6F 63 65 64 75 72 65 90 20 61 6E 64 90 20 74 rocedure. and. t
016EE0: 68 65 6E 90 20 61 73 73 69 67 6E 20 74 68 65 20 hen. assign the
016EF0: 70 72 6F 63 65 64 75 72 65 27 73 20 0D 8A 61 64 procedure's ..ad
016F00: 64 72 65 73 73 20 74 6F 20 74 68 61 74 20 67 6C dress to that gl
016F10: 6F 62 61 6C 20 76 61 72 69 61 62 6C 65 20 69 6E obal variable in
016F20: 90 20 79 6F 75 72 90 20 70 72 6F 67 72 61 6D 2E . your. program.
016F30: 20 54 68 69 73 20 6D 65 61 6E 73 20 74 68 61 74 This means that
016F40: 20 74 68 65 20 0D 8A 70 72 6F 63 65 64 75 72 65 the ..procedure
016F50: 20 63 61 6E 20 74 68 65 6E 20 62 65 20 61 73 73 can then be ass
016F60: 69 67 6E 65 64 20 74 6F 2E 0D 0A 20 20 20 20 20 igned to...
016F70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
016F80: 20 20 0D 0A 0D 0A E2 4C 45 56 45 4C 20 61 6E 64 .....LEVEL and
016F90: 20 4C 4F 4E 47 4A 55 4D 50 E2 0D 0A 0D 0A 09 4C LONGJUMP......L
016FA0: 45 56 45 4C 90 20 77 6F 72 6B 73 90 20 69 6E 90 EVEL. works. in.
016FB0: 20 61 90 90 20 73 6C 69 67 68 74 6C 79 90 90 20 a.. slightly..
016FC0: 64 69 66 66 65 72 65 6E 74 90 90 20 77 61 79 90 different.. way.
016FD0: 20 66 72 6F 6D 90 20 6D 6F 73 74 90 20 42 43 50 from. most. BCP
016FE0: 4C 20 0D 8A 69 6D 70 6C 65 6D 65 6E 74 61 74 69 L ..implementati
016FF0: 6F 6E 73 2E 90 20 49 74 90 20 75 73 75 61 6C 6C ons.. It. usuall
017000: 79 90 90 20 72 65 74 75 72 6E 73 90 90 20 61 90 y.. returns.. a.
017010: 90 20 73 69 6E 67 6C 65 90 90 20 31 90 90 20 77 . single.. 1.. w
017020: 6F 72 64 90 20 76 61 6C 75 65 20 0D 8A 72 65 70 ord. value ..rep
017030: 72 65 73 65 6E 74 69 6E 67 20 74 68 65 20 73 74 resenting the st
017040: 61 74 65 20 6F 66 20 74 68 65 20 42 43 50 4C 90 ate of the BCPL.
017050: 20 73 74 61 63 6B 90 20 61 74 90 20 61 20 70 6F stack. at. a po
017060: 69 6E 74 20 69 6E 20 74 68 65 20 70 72 6F 67 72 int in the progr
017070: 61 6D 2E 20 0D 8A 44 75 65 20 74 6F 20 74 68 65 am. ..Due to the
017080: 20 6C 69 6D 69 74 61 74 69 6F 6E 73 90 20 6F 66 limitations. of
017090: 90 20 74 68 65 90 20 5A 38 30 90 20 69 6E 90 20 . the. Z80. in.
0170A0: 73 74 61 63 6B 90 20 61 64 64 72 65 73 73 69 6E stack. addressin
0170B0: 67 90 20 69 74 20 69 73 20 6E 6F 74 20 0D 8A 70 g. it is not ..p
0170C0: 6F 73 73 69 62 6C 65 20 74 6F 20 70 61 63 6B 20 ossible to pack
0170D0: 74 68 65 90 20 72 65 71 75 69 72 65 64 90 20 69 the. required. i
0170E0: 6E 66 6F 72 6D 61 74 69 6F 6E 90 20 69 6E 74 6F nformation. into
0170F0: 90 20 6F 6E 65 90 20 77 6F 72 64 20 77 69 74 68 . one. word with
017100: 20 74 68 69 73 20 0D 8A 69 6D 70 6C 65 6D 65 6E this ..implemen
017110: 74 61 74 69 6F 6E 20 6F 66 20 42 43 50 4C 2E 20 tation of BCPL.
017120: 49 6E 73 74 65 61 64 20 74 68 65 20 4C 45 56 45 Instead the LEVE
017130: 4C 20 70 72 6F 63 65 64 75 72 65 20 72 65 74 75 L procedure retu
017140: 72 6E 73 20 69 74 73 20 72 65 73 75 6C 74 20 0D rns its result .
017150: 8A 69 6E 20 61 20 34 20 77 6F 72 64 20 76 65 63 .in a 4 word vec
017160: 74 6F 72 20 70 61 73 73 65 64 20 74 6F 90 20 74 tor passed to. t
017170: 68 65 20 70 72 6F 63 65 64 75 72 65 2E 20 53 65 he procedure. Se
017180: 65 20 61 70 70 65 6E 64 69 78 20 31 20 28 74 65 e appendix 1 (te
017190: 63 68 69 6E 63 61 6C 20 0D 8A 69 6E 66 6F 72 6D chincal ..inform
0171A0: 61 74 69 6F 6E 29 20 66 6F 72 20 65 78 61 63 74 ation) for exact
0171B0: 20 64 65 74 61 69 6C 73 2E 0D 0A 0D 0A 09 65 2E details......e.
0171C0: 67 2E 0D 0A 0D 0A 09 09 4C 45 54 20 65 72 72 6F g.......LET erro
0171D0: 72 6C 65 76 65 6C 20 3D 20 56 45 43 20 33 0D 0A rlevel = VEC 3..
0171E0: 09 09 6C 65 76 65 6C 28 65 72 72 6F 72 6C 65 76 ..level(errorlev
0171F0: 65 6C 29 0D 0A 0D 0A 0D 0A E2 45 78 74 65 6E 73 el).......Extens
017200: 69 6F 6E 73 20 6E 6F 74 20 73 75 70 70 6F 72 74 ions not support
017210: 65 64 E2 0D 0A 0D 0A 09 54 68 65 20 66 6F 6C 6C ed......The foll
017220: 6F 77 69 6E 67 20 66 65 61 74 75 72 65 73 2C 20 owing features,
017230: 77 68 69 63 68 20 61 72 65 20 6D 65 6E 74 69 6F which are mentio
017240: 6E 65 64 90 20 69 6E 20 74 68 65 20 42 43 50 4C ned. in the BCPL
017250: 20 62 6F 6F 6B 2C 20 61 72 65 20 0D 8A 6E 6F 74 book, are ..not
017260: 20 73 75 70 70 6F 72 74 65 64 3A 20 73 65 70 61 supported: sepa
017270: 72 61 74 65 90 20 63 6F 6D 70 69 6C 61 74 69 6F rate. compilatio
017280: 6E 2C 90 20 66 6C 6F 61 74 69 6E 67 90 20 70 6F n,. floating. po
017290: 69 6E 74 90 20 65 78 74 65 6E 73 69 6F 6E 2C 20 int. extension,
0172A0: 74 68 65 20 0D 8A 66 69 65 6C 64 20 73 65 6C 65 the ..field sele
0172B0: 63 74 6F 72 20 65 78 74 65 6E 73 69 6F 6E 2E 0D ctor extension..
0172C0: 0A 0D 0A 0D 0A 3E 70 61 0D 0A 3E 63 65 20 E2 41 .....>pa..>ce .A
0172D0: 31 2E 20 54 45 43 48 4E 49 43 41 4C 20 49 4E 46 1. TECHNICAL INF
0172E0: 4F 52 4D 41 54 49 4F 4E E2 0D 0A 0D 0A 0D 0A 09 ORMATION........
0172F0: 54 68 65 20 63 6F 6D 70 69 6C 65 72 20 61 6C 6C The compiler all
017300: 6F 63 61 74 65 73 20 64 79 6E 61 6D 69 63 20 73 ocates dynamic s
017310: 74 6F 72 61 67 65 20 66 72 6F 6D 20 74 68 65 20 torage from the
017320: 68 61 72 64 77 61 72 65 20 73 74 61 63 6B 20 66 hardware stack f
017330: 6F 72 20 0D 8A 6F 72 64 69 6E 61 72 79 20 6C 6F or ..ordinary lo
017340: 63 61 6C 20 76 61 72 69 61 62 6C 65 73 2E 20 54 cal variables. T
017350: 68 65 73 65 90 20 61 72 65 90 20 61 63 63 65 73 hese. are. acces
017360: 73 65 64 90 20 62 79 90 20 69 6E 64 65 78 69 6E sed. by. indexin
017370: 67 20 74 68 65 20 73 74 61 63 6B 20 0D 8A 75 73 g the stack ..us
017380: 69 6E 67 20 74 68 65 20 49 58 20 72 65 67 69 73 ing the IX regis
017390: 74 65 72 20 77 68 69 63 68 20 70 6F 69 6E 74 73 ter which points
0173A0: 20 74 6F 20 74 68 65 20 68 69 67 68 20 62 79 74 to the high byt
0173B0: 65 20 6F 66 20 74 68 65 20 6C 61 73 74 20 66 6F e of the last fo
0173C0: 72 6D 61 6C 20 0D 8A 70 61 72 61 6D 65 74 65 72 rmal ..parameter
0173D0: 20 6D 69 6E 75 73 20 31 32 37 2E 90 20 54 68 65 minus 127.. The
0173E0: 90 20 66 6F 72 6D 61 6C 90 20 70 61 72 61 6D 65 . formal. parame
0173F0: 74 65 72 73 90 20 61 72 65 90 20 73 74 6F 72 65 ters. are. store
017400: 64 90 20 69 6E 20 72 65 76 65 72 73 65 20 0D 8A d. in reverse ..
017410: 6F 72 64 65 72 2C 20 63 6F 6D 69 6E 67 20 64 6F order, coming do
017420: 77 6E 90 20 69 6E 90 20 6D 65 6D 6F 72 79 2E 90 wn. in. memory..
017430: 20 49 6D 6D 65 64 69 61 74 65 6C 79 90 20 62 65 Immediately. be
017440: 6C 6F 77 90 20 74 68 65 90 20 66 69 72 73 74 20 low. the. first
017450: 66 6F 72 6D 61 6C 20 0D 8A 70 61 72 61 6D 65 74 formal ..paramet
017460: 65 72 20 69 73 20 74 68 65 20 72 65 74 75 72 6E er is the return
017470: 20 61 64 64 72 65 73 73 90 20 66 72 6F 6D 90 20 address. from.
017480: 74 68 65 90 20 70 72 6F 63 65 64 75 72 65 20 77 the. procedure w
017490: 68 69 63 68 20 63 61 6C 6C 65 64 20 74 68 65 20 hich called the
0174A0: 0D 8A 63 75 72 72 65 6E 74 6C 79 20 61 63 74 69 ..currently acti
0174B0: 76 65 20 70 72 6F 63 65 64 75 72 65 2E 20 42 65 ve procedure. Be
0174C0: 6C 6F 77 20 74 68 69 73 20 69 73 20 74 68 65 20 low this is the
0174D0: 6F 6C 64 20 49 58 20 72 65 67 69 73 74 65 72 20 old IX register
0174E0: 66 72 6F 6D 20 74 68 65 20 0D 8A 63 61 6C 6C 69 from the ..calli
0174F0: 6E 67 20 70 72 6F 63 65 64 75 72 65 20 61 6E 64 ng procedure and
017500: 20 62 65 6C 6F 77 20 74 68 69 73 20 61 20 76 61 below this a va
017510: 6C 75 65 20 77 68 69 63 68 20 72 65 70 72 65 73 lue which repres
017520: 65 6E 74 73 20 74 68 65 20 73 74 61 74 65 20 6F ents the state o
017530: 66 20 0D 8A 74 68 65 20 76 65 63 74 6F 72 20 73 f ..the vector s
017540: 70 61 63 65 2E 20 4C 6F 63 61 6C 20 76 61 72 69 pace. Local vari
017550: 61 62 6C 65 73 20 6E 6F 77 20 63 6F 6D 65 20 64 ables now come d
017560: 6F 77 6E 20 66 72 6F 6D 20 74 68 69 73 20 73 70 own from this sp
017570: 61 63 65 20 69 6E 20 74 68 65 20 0D 8A 6F 72 64 ace in the ..ord
017580: 65 72 20 74 68 61 74 20 74 68 65 79 20 61 72 65 er that they are
017590: 20 64 65 63 6C 61 72 65 64 20 61 6E 64 20 53 50 declared and SP
0175A0: 20 77 69 6C 6C 90 20 70 6F 69 6E 74 20 74 6F 20 will. point to
0175B0: 74 68 65 20 6C 6F 77 20 62 79 74 65 20 6F 66 20 the low byte of
0175C0: 74 68 65 20 0D 8A 6C 61 73 74 20 6C 6F 63 61 6C the ..last local
0175D0: 20 76 61 72 69 61 62 6C 65 20 63 75 72 72 65 6E variable curren
0175E0: 74 6C 79 20 69 6E 20 73 63 6F 70 65 2E 0D 0A 09 tly in scope....
0175F0: 57 68 65 6E 20 61 20 6E 65 77 90 20 6C 6F 63 61 When a new. loca
017600: 6C 90 20 76 61 72 69 61 62 6C 65 90 20 69 73 90 l. variable. is.
017610: 20 64 65 63 6C 61 72 65 64 2C 90 20 69 74 73 90 declared,. its.
017620: 20 69 6E 69 74 69 61 6C 90 20 76 61 6C 75 65 20 initial. value
017630: 69 73 20 0D 8A 63 61 6C 63 75 6C 61 74 65 64 20 is ..calculated
017640: 61 6E 64 20 74 68 65 6E 20 70 75 73 68 65 64 20 and then pushed
017650: 6F 6E 74 6F 20 74 68 65 20 73 74 61 63 6B 2E 20 onto the stack.
017660: 57 68 65 6E 20 61 20 76 65 63 74 6F 72 20 69 73 When a vector is
017670: 20 61 6C 6C 6F 63 61 74 65 64 2C 20 0D 8A 73 70 allocated, ..sp
017680: 61 63 65 20 69 73 20 74 61 6B 65 6E 20 66 72 6F ace is taken fro
017690: 6D 90 20 74 68 65 90 20 76 65 63 74 6F 72 90 20 m. the. vector.
0176A0: 73 70 61 63 65 2C 90 20 77 68 69 63 68 90 20 69 space,. which. i
0176B0: 73 20 64 69 72 65 63 74 6C 79 20 61 66 74 65 72 s directly after
0176C0: 20 74 68 65 20 0D 8A 70 72 6F 67 72 61 6D 2C 20 the ..program,
0176D0: 61 6E 64 20 61 20 70 6F 69 6E 74 65 72 20 74 6F and a pointer to
0176E0: 20 74 68 69 73 20 73 70 61 63 65 20 69 73 20 70 this space is p
0176F0: 75 73 68 65 64 20 6F 6E 74 6F 20 74 68 65 20 73 ushed onto the s
017700: 74 61 63 6B 2E 0D 0A 0D 0A 65 2E 67 2E 20 66 6F tack.....e.g. fo
017710: 72 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 r the following
017720: 70 72 6F 63 65 64 75 72 65 0D 0A 0D 0A 20 20 20 procedure....
017730: 20 20 20 20 20 20 20 20 20 20 20 20 20 4C 45 54 LET
017740: 20 78 28 61 2C 62 29 20 42 45 0D 0A 20 20 20 20 x(a,b) BE..
017750: 20 20 20 20 20 20 20 20 20 20 20 20 24 28 0D 0A $(..
017760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
017770: 20 20 4C 45 54 20 7A 20 3D 20 30 0D 0A 20 20 20 LET z = 0..
017780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2E .
017790: 2E 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ....
0177A0: 20 20 20 20 24 29 0D 0A 0D 0A 61 74 20 74 68 65 $)....at the
0177B0: 20 70 6F 69 6E 74 20 6D 61 72 6B 65 64 20 62 79 point marked by
0177C0: 20 74 68 65 20 64 6F 74 73 20 74 68 65 20 73 74 the dots the st
0177D0: 61 63 6B 20 6C 6F 6F 6B 73 20 6C 69 6B 65 20 74 ack looks like t
0177E0: 68 69 73 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 his....
0177F0: 20 20 20 20 20 20 20 62 20 20 20 20 20 20 20 20 b
017800: 20 49 58 20 2B 20 31 32 37 0D 0A 20 20 20 20 20 IX + 127..
017810: 20 20 20 20 20 20 20 20 20 20 20 61 20 20 20 20 a
017820: 20 20 20 20 20 49 58 20 2B 20 31 32 35 0D 0A 20 IX + 125..
017830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
017840: 65 74 20 61 64 64 72 20 20 49 58 20 2B 20 31 32 et addr IX + 12
017850: 33 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 3..
017860: 20 20 20 6F 6C 64 20 49 58 20 20 20 20 49 58 20 old IX IX
017870: 2B 20 31 32 31 0D 0A 20 20 20 20 20 20 20 20 20 + 121..
017880: 20 20 20 20 20 20 20 76 65 63 20 70 74 72 20 20 vec ptr
017890: 20 49 58 20 2B 20 31 31 39 0D 0A 20 20 20 20 20 IX + 119..
0178A0: 20 20 20 20 20 20 20 20 20 20 20 7A 20 20 20 20 z
0178B0: 20 20 20 20 20 49 58 20 2B 20 31 31 37 2C 20 53 IX + 117, S
0178C0: 50 20 70 6F 69 6E 74 73 20 68 65 72 65 0D 0A 0D P points here...
0178D0: 0A 09 57 68 65 6E 20 6C 6F 63 61 6C 20 76 61 72 ..When local var
0178E0: 69 61 62 6C 65 73 20 61 72 65 90 20 75 6E 64 65 iables are. unde
0178F0: 63 6C 61 72 65 64 90 20 28 69 2E 65 2E 90 20 61 clared. (i.e.. a
017900: 74 90 20 74 68 65 90 20 65 6E 64 20 6F 66 20 74 t. the. end of t
017910: 68 65 69 72 20 0D 8A 62 6C 6F 63 6B 29 2C 20 74 heir ..block), t
017920: 68 65 20 73 74 61 63 6B 20 70 6F 69 6E 74 65 72 he stack pointer
017930: 20 69 73 20 6D 6F 76 65 64 20 75 70 20 74 6F 20 is moved up to
017940: 72 65 6C 65 61 73 65 20 74 68 65 20 73 70 61 63 release the spac
017950: 65 20 75 73 65 64 2E 0D 0A 3E 70 61 0D 0A 09 53 e used...>pa...S
017960: 74 61 74 69 63 20 76 61 72 69 61 62 6C 65 73 20 tatic variables
017970: 61 72 65 20 61 6C 6C 6F 63 61 74 65 64 20 74 68 are allocated th
017980: 65 69 72 90 20 73 70 61 63 65 90 20 61 74 20 63 eir. space. at c
017990: 6F 6D 70 69 6C 65 20 74 69 6D 65 2E 20 54 68 65 ompile time. The
0179A0: 79 20 0D 8A 61 72 65 20 65 6D 62 65 64 64 65 64 y ..are embedded
0179B0: 20 69 6E 20 74 68 65 20 63 6F 64 65 20 61 6E 64 in the code and
0179C0: 90 20 61 72 65 20 72 65 2D 69 6E 69 74 69 61 6C . are re-initial
0179D0: 69 73 65 64 20 65 61 63 68 20 74 69 6D 65 20 74 ised each time t
0179E0: 68 65 20 70 72 6F 67 72 61 6D 20 0D 8A 69 73 20 he program ..is
0179F0: 72 75 6E 2E 20 54 68 65 20 73 74 61 63 6B 20 69 run. The stack i
017A00: 73 20 70 6C 61 63 65 64 90 20 61 74 90 20 74 68 s placed. at. th
017A10: 65 90 20 74 6F 70 20 6F 66 20 74 68 65 20 61 76 e. top of the av
017A20: 61 69 6C 61 62 6C 65 20 6D 65 6D 6F 72 79 2E 20 ailable memory.
017A30: 46 6F 72 20 0D 8A 43 50 2F 4D 20 76 65 72 73 69 For ..CP/M versi
017A40: 6F 6E 73 20 74 68 69 73 20 69 73 20 63 61 6C 63 ons this is calc
017A50: 75 6C 61 74 65 64 20 66 72 6F 6D 20 74 68 65 20 ulated from the
017A60: 73 74 61 72 74 20 6F 66 20 74 68 65 20 42 44 4F start of the BDO
017A70: 53 2E 20 0D 0A 09 49 6E 20 41 4D 53 44 4F 53 20 S. ...In AMSDOS
017A80: 76 65 72 73 69 6F 6E 73 2C 20 73 74 61 74 69 63 versions, static
017A90: 20 76 61 72 69 61 62 6C 65 20 73 70 61 63 65 20 variable space
017AA0: 69 73 20 64 65 74 65 72 6D 69 6E 65 64 20 61 74 is determined at
017AB0: 20 63 6F 6D 70 69 6C 65 20 0D 8A 74 69 6D 65 2C compile ..time,
017AC0: 20 70 6F 73 73 69 62 6C 79 20 75 73 69 6E 67 20 possibly using
017AD0: 74 68 65 20 48 90 20 6F 70 74 69 6F 6E 2E 90 20 the H. option..
017AE0: 41 73 20 61 6C 72 65 61 64 79 20 6D 65 6E 74 69 As already menti
017AF0: 6F 6E 65 64 20 76 65 63 74 6F 72 20 73 70 61 63 oned vector spac
017B00: 65 20 0D 8A 69 73 20 74 61 6B 65 6E 20 66 72 6F e ..is taken fro
017B10: 6D 20 74 68 65 20 61 72 65 61 20 6F 66 20 6D 65 m the area of me
017B20: 6D 6F 72 79 20 64 69 72 65 63 74 6C 79 20 61 66 mory directly af
017B30: 74 65 72 20 74 68 65 20 70 72 6F 67 72 61 6D 2E ter the program.
017B40: 20 54 68 65 20 73 74 61 72 74 20 0D 8A 6F 66 20 The start ..of
017B50: 61 20 70 72 6F 67 72 61 6D 20 69 73 20 23 78 31 a program is #x1
017B60: 30 30 90 20 66 6F 72 90 20 43 50 2F 4D 90 20 76 00. for. CP/M. v
017B70: 65 72 73 69 6F 6E 73 90 20 61 6E 64 90 20 64 65 ersions. and. de
017B80: 66 61 75 6C 74 73 20 74 6F 20 74 68 65 20 66 69 faults to the fi
017B90: 72 73 74 20 0D 8A 75 73 61 62 6C 65 20 62 79 74 rst ..usable byt
017BA0: 65 20 6F 66 20 6D 65 6D 6F 72 79 20 66 6F 72 20 e of memory for
017BB0: 41 4D 53 44 4F 53 2E 20 54 68 69 73 20 6D 61 79 AMSDOS. This may
017BC0: 90 20 62 65 20 63 68 61 6E 67 65 64 20 62 79 20 . be changed by
017BD0: 75 73 65 20 6F 66 20 74 68 65 20 4F 20 0D 8A 6F use of the O ..o
017BE0: 70 74 69 6F 6E 2E 0D 0A 0D 0A 0D 0A 09 54 68 69 ption........Thi
017BF0: 73 20 6C 65 61 76 65 73 20 61 20 6D 65 6D 6F 72 s leaves a memor
017C00: 79 20 6D 61 70 20 6C 6F 6F 6B 69 6E 67 20 6C 69 y map looking li
017C10: 6B 65 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 ke:......
017C20: 20 20 20 20 20 20 20 20 20 7C 20 48 61 72 64 77 | Hardw
017C30: 61 72 65 20 73 74 61 63 6B 20 20 20 7C 0D 0A 20 are stack |..
017C40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C |
017C50: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
017C60: 2D 2D 7C 20 3C 20 53 50 0D 0A 20 20 20 20 20 20 --| < SP..
017C70: 20 20 20 20 20 20 20 20 20 20 7C 20 20 20 20 20 |
017C80: 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 0D 0A |..
017C90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
017CA0: 7C 20 65 6D 70 74 79 20 20 20 20 20 20 20 20 20 | empty
017CB0: 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 |..
017CC0: 20 20 20 20 20 20 7C 20 20 20 20 20 20 20 20 20 |
017CD0: 20 20 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 20 |..
017CE0: 20 20 20 20 20 20 20 20 20 20 20 20 7C 2D 2D 2D |---
017CF0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C ---------------|
017D00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
017D10: 14 00 00 00 02 09 50 E5 14 00 C1 02 00 00 00 02 ......P.........
017D20: 14 00 C2 02 00 00 00 02 14 00 C3 02 00 00 00 02 ................
017D30: 14 00 C4 02 00 00 00 02 14 00 C5 02 00 00 00 02 ................
017D40: 14 00 C6 02 00 00 00 02 14 00 C7 02 00 00 00 02 ................
017D50: 14 00 C8 02 00 00 00 02 14 00 C9 02 00 00 00 02 ................
017D60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017D70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017D80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017D90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017E00: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
017E10: 20 20 7C 20 56 65 63 74 6F 72 73 20 20 20 20 20 | Vectors
017E20: 20 20 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 |..
017E30: 20 20 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D 2D |-------
017E40: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 0D 0A 20 20 -----------|..
017E50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20 |
017E60: 50 72 6F 67 72 61 6D 20 61 6E 64 20 20 20 20 20 Program and
017E70: 20 7C 0D 0A 09 09 09 7C 20 73 74 61 74 69 63 20 |.....| static
017E80: 76 61 72 69 61 62 6C 65 73 20 7C 0D 0A 20 20 20 variables |..
017E90: 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 2D 2D |--
017EA0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
017EB0: 7C 20 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 | ..
017EC0: 20 20 20 20 7C 20 72 75 6E 74 69 6D 65 20 72 6F | runtime ro
017ED0: 75 74 69 6E 65 73 20 7C 0D 0A 20 20 20 20 20 20 utines |..
017EE0: 20 20 20 20 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D |-----
017EF0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 20 3C -------------| <
017F00: 20 70 72 6F 67 72 61 6D 20 73 74 61 72 74 0D 0A program start..
017F10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
017F20: 7C 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |
017F30: 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 |..
017F40: 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D 2D 2D 2D |---------
017F50: 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 20 3C 20 30 0D 0A ---------| < 0..
017F60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
017F70: 0D 0A 09 57 68 65 6E 20 77 72 69 74 69 6E 67 20 ...When writing
017F80: 61 6E 79 20 69 6E 6C 69 6E 65 90 20 63 6F 64 65 any inline. code
017F90: 90 20 74 68 65 90 20 75 73 65 72 90 20 6D 75 73 . the. user. mus
017FA0: 74 90 20 65 6E 73 75 72 65 20 74 68 61 74 20 74 t. ensure that t
017FB0: 68 65 20 49 58 20 0D 8A 72 65 67 69 73 74 65 72 he IX ..register
017FC0: 20 61 6E 64 20 74 68 65 20 53 50 20 61 72 65 90 and the SP are.
017FD0: 20 72 65 73 74 6F 72 65 64 90 20 74 6F 90 20 74 restored. to. t
017FE0: 68 65 69 72 20 66 6F 72 6D 65 72 20 70 6F 73 69 heir former posi
017FF0: 74 69 6F 6E 73 20 77 68 65 6E 20 74 68 65 20 0D tions when the .
018000: 8A 63 6F 64 65 20 66 69 6E 69 73 68 65 73 2E 20 .code finishes.
018010: 46 61 69 6C 75 72 65 20 74 6F 90 20 64 6F 90 20 Failure to. do.
018020: 74 68 69 73 90 20 77 69 6C 6C 90 20 61 6C 6D 6F this. will. almo
018030: 73 74 90 20 63 65 72 74 61 69 6E 6C 79 20 63 61 st. certainly ca
018040: 75 73 65 20 74 68 65 20 0D 8A 70 72 6F 67 72 61 use the ..progra
018050: 6D 20 74 6F 90 20 63 72 61 73 68 2E 90 20 54 68 m to. crash.. Th
018060: 65 90 20 41 6D 73 74 72 61 64 90 20 61 6C 73 6F e. Amstrad. also
018070: 90 20 72 65 71 75 69 72 65 73 90 20 74 68 61 74 . requires. that
018080: 90 20 74 68 65 90 20 61 6C 74 65 72 6E 61 74 65 . the. alternate
018090: 20 0D 8A 72 65 67 69 73 74 65 72 20 73 65 74 20 ..register set
0180A0: 69 73 20 6E 6F 74 20 75 73 65 64 2E 0D 0A 0D 0A is not used.....
0180B0: 09 54 68 65 20 4C 45 56 45 4C 20 6C 69 62 72 61 .The LEVEL libra
0180C0: 72 79 20 70 72 6F 63 65 64 75 72 65 20 73 74 6F ry procedure sto
0180D0: 72 65 73 90 20 69 6E 66 6F 72 6D 61 74 69 6F 6E res. information
0180E0: 20 61 62 6F 75 74 20 74 68 65 20 73 74 61 74 65 about the state
0180F0: 20 6F 66 20 0D 8A 63 6F 6D 70 75 74 61 74 69 6F of ..computatio
018100: 6E 20 69 6E 20 61 20 34 20 77 6F 72 64 20 76 65 n in a 4 word ve
018110: 63 74 6F 72 2E 20 54 68 65 90 20 34 90 20 76 61 ctor. The. 4. va
018120: 6C 75 65 73 20 77 68 69 63 68 20 61 72 65 20 73 lues which are s
018130: 74 6F 72 65 64 20 61 72 65 20 61 73 20 0D 8A 66 tored are as ..f
018140: 6F 6C 6C 6F 77 73 0D 0A 0D 0A 09 77 6F 72 64 20 ollows.....word
018150: 30 20 2D 2D 20 54 68 65 20 6F 6C 64 20 76 65 63 0 -- The old vec
018160: 74 6F 72 20 62 61 73 65 20 70 6F 69 6E 74 65 72 tor base pointer
018170: 0D 0A 09 77 6F 72 64 20 31 20 2D 2D 20 54 68 65 ...word 1 -- The
018180: 20 76 65 63 74 6F 72 20 74 6F 70 20 70 6F 69 6E vector top poin
018190: 74 65 72 0D 0A 09 77 6F 72 64 20 32 20 2D 2D 20 ter...word 2 --
0181A0: 49 58 0D 0A 09 77 6F 72 64 20 33 20 2D 2D 20 53 IX...word 3 -- S
0181B0: 50 0D 0A 0D 0A 09 57 68 65 6E 20 4C 4F 4E 47 4A P.....When LONGJ
0181C0: 55 4D 50 20 69 73 20 75 73 65 64 90 20 74 68 69 UMP is used. thi
0181D0: 73 90 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 90 20 s. information.
0181E0: 69 73 90 20 75 73 65 64 90 20 74 6F 20 72 65 73 is. used. to res
0181F0: 74 6F 72 65 20 74 68 65 20 0D 8A 73 74 61 74 65 tore the ..state
018200: 20 6F 66 20 63 6F 6D 70 75 74 61 74 69 6F 6E 2E of computation.
018210: 0D 0A 3E 70 61 0D 0A 09 54 68 65 20 31 34 74 68 ..>pa...The 14th
018220: 20 61 6E 64 20 31 35 74 68 90 20 62 79 74 65 73 and 15th. bytes
018230: 90 20 6F 66 90 20 61 6E 79 90 20 6F 62 6A 65 63 . of. any. objec
018240: 74 90 20 70 72 6F 67 72 61 6D 20 70 72 6F 64 75 t. program produ
018250: 63 65 64 20 61 6C 77 61 79 73 20 0D 8A 70 6F 69 ced always ..poi
018260: 6E 74 20 74 6F 20 74 68 65 20 62 61 73 65 20 6F nt to the base o
018270: 66 20 74 68 65 20 63 75 72 72 65 6E 74 90 20 76 f the current. v
018280: 65 63 74 6F 72 20 61 6C 6C 6F 63 61 74 69 6F 6E ector allocation
018290: 2E 20 54 68 65 20 31 36 74 68 20 61 6E 64 20 31 . The 16th and 1
0182A0: 37 74 68 20 0D 8A 62 79 74 65 73 20 61 6C 77 61 7th ..bytes alwa
0182B0: 79 73 20 70 6F 69 6E 74 20 74 6F 20 74 68 65 20 ys point to the
0182C0: 74 6F 70 20 6F 66 20 74 68 65 20 63 75 72 72 65 top of the curre
0182D0: 6E 74 20 76 65 63 74 6F 72 20 61 6C 6C 6F 63 61 nt vector alloca
0182E0: 74 69 6F 6E 2E 20 41 6C 6C 20 6F 66 20 0D 8A 74 tion. All of ..t
0182F0: 68 65 20 76 65 63 74 6F 72 20 73 70 61 63 65 20 he vector space
018300: 72 65 71 75 69 72 65 64 20 66 6F 72 90 20 61 6E required for. an
018310: 79 90 20 70 61 72 74 69 63 75 6C 61 72 20 70 72 y. particular pr
018320: 6F 63 65 64 75 72 65 20 61 63 74 69 76 61 74 69 ocedure activati
018330: 6F 6E 20 69 73 20 0D 8A 61 6C 6C 6F 63 61 74 65 on is ..allocate
018340: 64 20 6F 6E 20 65 6E 74 72 79 20 74 6F 20 74 68 d on entry to th
018350: 61 74 20 70 72 6F 63 65 64 75 72 65 90 20 61 6E at procedure. an
018360: 64 20 64 65 2D 61 6C 6C 6F 63 61 74 65 64 20 6F d de-allocated o
018370: 6E 20 65 78 69 74 2E 20 57 68 65 6E 20 61 20 0D n exit. When a .
018380: 8A 76 65 63 74 6F 72 20 69 73 20 64 65 63 6C 61 .vector is decla
018390: 72 65 64 20 77 69 74 68 69 6E 20 61 20 70 72 6F red within a pro
0183A0: 63 65 64 75 72 65 90 20 69 74 90 20 69 73 90 20 cedure. it. is.
0183B0: 67 69 76 65 6E 20 61 20 63 68 75 6E 6B 20 6F 66 given a chunk of
0183C0: 20 6D 65 6D 6F 72 79 20 0D 8A 77 69 74 68 69 6E memory ..within
0183D0: 20 74 68 69 73 20 61 6C 6C 6F 63 61 74 69 6F 6E this allocation
0183E0: 2E 0D 0A 0D 0A 09 54 68 65 20 63 6F 6D 70 69 6C ......The compil
0183F0: 65 72 20 69 73 20 61 90 20 74 77 6F 90 20 70 61 er is a. two. pa
018400: 73 73 90 20 63 6F 6D 70 69 6C 65 72 2E 90 20 54 ss. compiler.. T
018410: 68 65 90 20 66 69 72 73 74 20 70 61 73 73 20 72 he. first pass r
018420: 65 61 64 73 20 74 68 65 20 0D 8A 73 6F 75 72 63 eads the ..sourc
018430: 65 20 74 65 78 74 20 6F 66 20 74 68 65 20 70 72 e text of the pr
018440: 6F 67 72 61 6D 2C 20 64 6F 65 73 20 73 79 6E 74 ogram, does synt
018450: 61 78 20 61 6E 61 6C 79 73 69 73 20 6F 66 20 69 ax analysis of i
018460: 74 20 61 6E 64 20 70 72 6F 64 75 63 65 73 20 61 t and produces a
018470: 6E 20 0D 8A 61 70 70 6C 69 63 61 74 69 76 65 20 n ..applicative
018480: 65 78 70 72 65 73 73 69 6F 6E 20 74 72 65 65 20 expression tree
018490: 77 68 69 63 68 90 20 72 65 70 72 65 73 65 6E 74 which. represent
0184A0: 73 90 20 74 68 65 20 70 72 6F 67 72 61 6D 2E 20 s. the program.
0184B0: 54 68 65 20 73 65 63 6F 6E 64 20 0D 8A 70 61 73 The second ..pas
0184C0: 73 20 67 6F 65 73 20 6F 76 65 72 20 74 68 69 73 s goes over this
0184D0: 20 74 72 65 65 20 61 6E 64 20 70 72 6F 64 75 63 tree and produc
0184E0: 65 73 90 20 63 6F 64 65 20 66 6F 72 20 69 74 2E es. code for it.
0184F0: 20 54 68 65 20 73 65 63 6F 6E 64 20 70 61 73 73 The second pass
018500: 20 69 73 20 0D 8A 69 6E 20 66 61 63 74 20 64 6F is ..in fact do
018510: 6E 65 20 74 77 69 63 65 3B 20 74 68 65 20 66 69 ne twice; the fi
018520: 72 73 74 20 74 69 6D 65 20 6E 6F 20 63 6F 64 65 rst time no code
018530: 20 69 73 20 70 72 6F 64 75 63 65 64 20 62 75 74 is produced but
018540: 20 74 68 65 20 70 72 6F 67 72 61 6D 20 0D 8A 69 the program ..i
018550: 73 20 63 68 65 63 6B 65 64 20 66 6F 72 20 61 6E s checked for an
018560: 79 20 73 65 6D 61 6E 74 69 63 90 20 65 72 72 6F y semantic. erro
018570: 72 73 90 20 73 75 63 68 90 20 61 73 20 75 6E 64 rs. such. as und
018580: 65 66 69 6E 65 64 20 69 64 65 6E 74 69 66 69 65 efined identifie
018590: 72 73 20 6F 72 20 0D 8A 69 6C 6C 65 67 61 6C 20 rs or ..illegal
0185A0: 61 73 73 69 67 6E 6D 65 6E 74 73 2E 20 49 66 20 assignments. If
0185B0: 74 68 69 73 20 70 61 73 73 90 20 72 75 6E 73 90 this pass. runs.
0185C0: 20 73 6D 6F 6F 74 68 6C 79 20 77 69 74 68 20 6E smoothly with n
0185D0: 6F 20 65 72 72 6F 72 73 20 62 65 69 6E 67 20 0D o errors being .
0185E0: 8A 70 69 63 6B 65 64 20 75 70 20 74 68 65 6E 20 .picked up then
0185F0: 74 68 65 20 73 65 63 6F 6E 64 20 70 61 73 73 90 the second pass.
018600: 20 77 69 6C 6C 20 62 65 20 72 65 70 65 61 74 65 will be repeate
018610: 64 2C 20 74 68 69 73 20 74 69 6D 65 20 67 65 6E d, this time gen
018620: 65 72 61 74 69 6E 67 20 0D 8A 63 6F 64 65 2E 0D erating ..code..
018630: 0A 3E 70 61 0D 0A 3E 63 65 20 E2 41 32 2E 20 53 .>pa..>ce .A2. S
018640: 55 4D 4D 41 52 59 20 41 4E 44 20 49 4E 44 45 58 UMMARY AND INDEX
018650: 20 4F 46 20 4C 49 42 52 41 52 59 20 52 4F 55 54 OF LIBRARY ROUT
018660: 49 4E 45 53 E2 0D 0A 0D 0A 0D 0A 09 54 68 65 20 INES........The
018670: 6C 65 74 74 65 72 20 20 61 74 20 74 68 65 20 73 letter at the s
018680: 74 61 72 74 20 6F 66 90 20 65 61 63 68 90 20 6C tart of. each. l
018690: 69 6E 65 90 20 69 6E 20 74 68 65 20 20 66 6F 6C ine. in the fol
0186A0: 6C 6F 77 69 6E 67 20 6C 69 73 74 20 6F 66 20 0D lowing list of .
0186B0: 8A 6C 69 62 72 61 72 79 20 72 6F 75 74 69 6E 65 .library routine
0186C0: 73 20 69 6E 64 69 63 61 74 65 73 20 74 68 65 20 s indicates the
0186D0: 64 65 67 72 65 65 90 20 6F 66 20 70 6F 72 74 61 degree. of porta
0186E0: 62 69 6C 69 74 79 20 6F 66 20 74 68 65 20 72 6F bility of the ro
0186F0: 75 74 69 6E 65 73 2E 20 0D 8A 46 75 6C 6C 20 64 utines. ..Full d
018700: 65 74 61 69 6C 73 20 61 72 65 20 67 69 76 65 6E etails are given
018710: 20 69 6E 20 41 70 70 65 6E 64 69 78 20 33 2E 0D in Appendix 3..
018720: 0A 09 4E 6F 74 65 3A 20 41 20 6D 65 61 6E 73 20 ..Note: A means
018730: 41 4D 53 44 4F 53 20 76 65 72 73 69 6F 6E 20 6F AMSDOS version o
018740: 6E 6C 79 2C 20 43 20 6D 65 61 6E 73 20 43 50 2F nly, C means CP/
018750: 4D 20 76 65 72 73 69 6F 6E 20 6F 6E 6C 79 0D 0A M version only..
018760: 0D 0A 09 53 20 69 6E 64 69 63 61 74 65 73 20 72 ...S indicates r
018770: 6F 75 74 69 6E 65 20 69 73 20 70 61 72 74 20 6F outine is part o
018780: 66 20 74 68 65 20 73 74 61 6E 64 61 72 64 20 42 f the standard B
018790: 43 50 4C 20 49 2F 4F 20 6C 69 62 72 61 72 79 0D CPL I/O library.
0187A0: 0A 09 44 20 69 6E 64 69 63 61 74 65 73 20 61 20 ..D indicates a
0187B0: 73 74 61 6E 64 61 72 64 20 42 43 50 4C 90 20 72 standard BCPL. r
0187C0: 6F 75 74 69 6E 65 90 20 62 75 74 20 77 69 74 68 outine. but with
0187D0: 20 61 20 73 6C 69 67 68 74 20 64 69 66 66 65 72 a slight differ
0187E0: 65 6E 63 65 0D 8A 20 20 20 20 20 20 69 6E 20 74 ence.. in t
0187F0: 68 65 20 77 61 79 20 69 74 20 69 73 20 75 73 65 he way it is use
018800: 64 2E 0D 0A 09 46 20 69 6E 64 69 63 61 74 65 73 d....F indicates
018810: 20 66 72 65 71 75 65 6E 74 6C 79 20 66 6F 75 6E frequently foun
018820: 64 20 73 69 6D 69 6C 61 72 20 72 6F 75 74 69 6E d similar routin
018830: 65 73 20 69 6E 20 42 43 50 4C 20 73 79 73 74 65 es in BCPL syste
018840: 6D 73 0D 0A 09 41 6C 6C 20 75 6E 6D 61 72 6B 65 ms...All unmarke
018850: 64 20 72 6F 75 74 69 6E 65 73 20 61 72 65 20 41 d routines are A
018860: 72 6E 6F 72 20 42 43 50 4C 20 73 70 65 63 69 66 rnor BCPL specif
018870: 69 63 2E 0D 0A 0D 0A 0D 0A 3E 2D 2D 21 2D 2D 2D ic.......>--!---
018880: 21 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 21 2D 2D !------------!--
018890: 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D --!-------!-----
0188A0: 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D --!-------!-----
0188B0: 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D --!-------!-----
0188C0: 2D 2D 2D 2D 52 0D 0A 09 09 6E 61 6D 65 20 09 70 ----R....name .p
0188D0: 67 09 64 65 73 63 72 69 70 74 69 6F 6E 0D 0A 0D g.description...
0188E0: 0A 09 53 09 61 70 74 6F 76 65 63 20 09 34 30 09 ..S.aptovec .40.
0188F0: 63 61 6C 6C 20 61 20 72 6F 75 74 69 6E 65 20 77 call a routine w
018900: 69 74 68 20 61 20 64 79 6E 61 6D 69 63 61 6C 6C ith a dynamicall
018910: 79 20 61 6C 6C 6F 63 61 74 65 64 20 76 65 63 74 y allocated vect
018920: 6F 72 0D 0A 43 09 09 62 64 6F 73 61 20 09 34 35 or..C..bdosa .45
018930: 09 63 61 6C 6C 20 74 68 65 20 42 44 4F 53 2C 20 .call the BDOS,
018940: 72 65 74 75 72 6E 69 6E 67 20 76 61 6C 75 65 73 returning values
018950: 0D 0A 43 09 09 62 64 6F 73 62 20 09 34 35 09 63 ..C..bdosb .45.c
018960: 61 6C 6C 20 74 68 65 20 42 44 4F 53 2C 20 6E 6F all the BDOS, no
018970: 74 20 72 65 74 75 72 6E 69 6E 67 20 76 61 6C 75 t returning valu
018980: 65 73 0D 0A 43 09 09 62 69 6F 73 20 09 34 35 09 es..C..bios .45.
018990: 63 61 6C 6C 20 74 68 65 20 42 49 4F 53 2C 20 72 call the BIOS, r
0189A0: 65 74 75 72 6E 69 6E 67 20 61 20 76 61 6C 75 65 eturning a value
0189B0: 0D 0A 09 09 62 79 74 65 6D 6F 76 65 20 09 34 30 ....bytemove .40
0189C0: 09 6D 6F 76 65 20 61 20 62 6C 6F 63 6B 20 6F 66 .move a block of
0189D0: 20 6D 65 6D 6F 72 79 20 75 73 69 6E 67 20 62 79 memory using by
0189E0: 74 65 20 61 64 64 72 65 73 73 65 73 0D 0A 09 46 te addresses...F
0189F0: 09 63 61 6C 6C 20 09 34 30 09 63 61 6C 6C 20 61 .call .40.call a
018A00: 20 6D 61 63 68 69 6E 65 20 63 6F 64 65 20 72 6F machine code ro
018A10: 75 74 69 6E 65 0D 0A 09 46 09 63 61 70 69 74 61 utine...F.capita
018A20: 6C 63 68 20 09 34 31 09 63 6F 6E 76 65 72 74 20 lch .41.convert
018A30: 63 68 61 72 61 63 74 65 72 20 66 72 6F 6D 20 6C character from l
018A40: 6F 77 65 72 20 74 6F 20 75 70 70 65 72 20 63 61 ower to upper ca
018A50: 73 65 0D 0A 09 09 63 6C 6F 73 65 69 6E 20 09 33 se....closein .3
018A60: 37 09 63 6C 6F 73 65 20 61 6E 20 69 6E 70 75 74 7.close an input
018A70: 20 66 69 6C 65 0D 0A 09 09 63 6C 6F 73 65 6F 75 file....closeou
018A80: 74 20 09 33 37 09 63 6C 6F 73 65 20 61 6E 20 6F t .37.close an o
018A90: 75 74 70 75 74 20 66 69 6C 65 0D 0A 09 46 09 63 utput file...F.c
018AA0: 6F 6D 70 63 68 20 09 34 31 09 63 6F 6D 70 61 72 ompch .41.compar
018AB0: 65 20 74 77 6F 20 63 68 61 72 61 63 74 65 72 73 e two characters
018AC0: 0D 0A 09 46 09 63 6F 6D 70 73 74 72 69 6E 67 20 ...F.compstring
018AD0: 09 34 31 09 63 6F 6D 70 61 72 65 20 74 77 6F 20 .41.compare two
018AE0: 73 74 72 69 6E 67 73 0D 0A 09 09 64 65 62 75 67 strings....debug
018AF0: 20 09 34 38 09 64 65 62 75 67 67 69 6E 67 20 61 .48.debugging a
018B00: 69 64 0D 0A 09 09 64 65 63 76 61 6C 20 09 34 31 id....decval .41
018B10: 09 63 6F 6E 76 65 72 74 20 61 20 68 65 78 61 64 .convert a hexad
018B20: 65 63 69 6D 61 6C 20 64 69 67 69 74 20 74 6F 20 ecimal digit to
018B30: 64 65 63 69 6D 61 6C 0D 0A 09 46 09 64 65 6C 65 decimal...F.dele
018B40: 74 65 20 09 34 32 09 64 65 6C 65 74 65 20 61 20 te .42.delete a
018B50: 66 69 6C 65 0D 0A 09 53 09 65 6E 64 72 65 61 64 file...S.endread
018B60: 09 33 34 09 63 6C 6F 73 65 20 74 68 65 20 63 75 .34.close the cu
018B70: 72 72 65 6E 74 20 69 6E 70 75 74 20 73 74 72 65 rrent input stre
018B80: 61 6D 0D 0A 09 53 09 65 6E 64 77 72 69 74 65 20 am...S.endwrite
018B90: 09 33 34 09 63 6C 6F 73 65 20 74 68 65 20 63 75 .34.close the cu
018BA0: 72 72 65 6E 74 20 6F 75 74 70 75 74 20 73 74 72 rrent output str
018BB0: 65 61 6D 0D 0A 41 09 09 65 78 74 65 72 6E 61 6C eam..A..external
018BC0: 20 09 34 36 09 63 61 6C 6C 20 61 6E 20 65 78 74 .46.call an ext
018BD0: 65 72 6E 61 6C 20 63 6F 6D 6D 61 6E 64 0D 0A 09 ernal command...
018BE0: 44 09 66 69 6E 64 69 6E 70 75 74 20 09 33 35 09 D.findinput .35.
018BF0: 6F 70 65 6E 20 61 6E 20 69 6E 70 75 74 20 66 69 open an input fi
018C00: 6C 65 0D 0A 09 44 09 66 69 6E 64 6F 75 74 70 75 le...D.findoutpu
018C10: 74 20 09 33 36 09 6F 70 65 6E 20 61 6E 20 6F 75 t .36.open an ou
018C20: 74 70 75 74 20 66 69 6C 65 0D 0A 43 09 09 66 69 tput file..C..fi
018C30: 72 6D 77 61 72 65 20 09 34 35 09 63 61 6C 6C 20 rmware .45.call
018C40: 74 68 65 20 66 69 72 6D 77 61 72 65 20 28 43 50 the firmware (CP
018C50: 2F 4D 20 50 6C 75 73 20 6F 6E 6C 79 29 0D 0A 09 /M Plus only)...
018C60: 09 66 6C 75 73 68 20 09 33 37 09 66 6C 75 73 68 .flush .37.flush
018C70: 20 74 68 65 20 6B 65 79 62 6F 61 72 64 20 62 75 the keyboard bu
018C80: 66 66 65 72 0D 0A 09 53 09 67 65 74 62 79 74 65 ffer...S.getbyte
018C90: 20 09 34 37 09 67 65 74 20 61 20 62 79 74 65 20 .47.get a byte
018CA0: 66 72 6F 6D 20 61 20 73 74 72 69 6E 67 0D 0A 09 from a string...
018CB0: 53 09 69 6E 70 75 74 20 09 33 33 09 72 65 74 75 S.input .33.retu
018CC0: 72 6E 20 74 68 65 20 63 75 72 72 65 6E 74 6C 79 rn the currently
018CD0: 20 73 65 6C 65 63 74 65 64 20 6F 75 74 70 75 74 selected output
018CE0: 20 73 74 72 65 61 6D 0D 0A 09 44 09 6C 65 76 65 stream...D.leve
018CF0: 6C 20 09 34 32 09 67 65 74 20 70 6F 69 6E 74 65 l .42.get pointe
018D00: 72 20 74 6F 20 63 75 72 72 65 6E 74 20 65 6E 76 r to current env
018D10: 69 72 6F 6E 6D 65 6E 74 0D 0A 09 44 09 6C 6F 6E ironment...D.lon
018D20: 67 6A 75 6D 70 20 09 34 32 09 6A 75 6D 70 20 74 gjump .42.jump t
018D30: 6F 20 6F 75 74 65 72 20 6C 65 76 65 6C 20 6F 66 o outer level of
018D40: 20 70 72 6F 67 72 61 6D 0D 0A 09 53 09 6E 65 77 program...S.new
018D50: 6C 69 6E 65 20 09 32 37 09 73 74 61 72 74 20 61 line .27.start a
018D60: 20 6E 65 77 20 6C 69 6E 65 20 69 6E 20 74 68 65 new line in the
018D70: 20 6F 75 74 70 75 74 0D 0A 09 53 09 6E 65 77 70 output...S.newp
018D80: 61 67 65 20 09 32 37 09 73 74 61 72 74 20 61 20 age .27.start a
018D90: 6E 65 77 20 70 61 67 65 20 69 6E 20 74 68 65 20 new page in the
018DA0: 6F 75 74 70 75 74 0D 0A 09 53 09 6F 75 74 70 75 output...S.outpu
018DB0: 74 20 09 33 33 09 72 65 74 75 72 6E 20 74 68 65 t .33.return the
018DC0: 20 63 75 72 72 65 6E 74 6C 79 20 73 65 6C 65 63 currently selec
018DD0: 74 65 64 20 6F 75 74 70 75 74 20 73 74 72 65 61 ted output strea
018DE0: 6D 0D 0A 3E 70 61 0D 0A 0D 0A 0D 0A 09 53 09 70 m..>pa.......S.p
018DF0: 61 63 6B 73 74 72 69 6E 67 20 09 34 37 09 63 6F ackstring .47.co
018E00: 6D 70 61 63 74 20 61 20 73 74 72 69 6E 67 0D 0A mpact a string..
018E10: 09 09 70 72 62 75 73 79 20 09 33 38 09 73 65 65 ..prbusy .38.see
018E20: 20 69 66 20 74 68 65 20 70 72 69 6E 74 65 72 20 if the printer
018E30: 69 73 20 62 75 73 79 0D 0A 09 09 70 72 63 68 20 is busy....prch
018E40: 09 33 38 09 73 65 6E 64 20 61 20 63 68 61 72 61 .38.send a chara
018E50: 63 74 65 72 20 74 6F 20 74 68 65 20 70 72 69 6E cter to the prin
018E60: 74 65 72 0D 0A 09 53 09 70 75 74 62 79 74 65 20 ter...S.putbyte
018E70: 09 34 37 09 70 75 74 20 61 20 62 79 74 65 20 69 .47.put a byte i
018E80: 6E 74 6F 20 61 20 73 74 72 69 6E 67 0D 0A 09 46 nto a string...F
018E90: 09 72 61 6E 64 6F 6D 20 09 34 32 09 72 65 74 75 .random .42.retu
018EA0: 72 6E 20 61 20 70 73 65 75 64 6F 2D 72 61 6E 64 rn a pseudo-rand
018EB0: 6F 6D 20 6E 75 6D 62 65 72 0D 0A 09 53 09 72 64 om number...S.rd
018EC0: 63 68 20 09 33 31 09 72 65 61 64 20 61 20 63 68 ch .31.read a ch
018ED0: 61 72 61 63 74 65 72 0D 0A 09 09 72 64 74 65 73 aracter....rdtes
018EE0: 74 20 09 33 38 09 73 65 65 20 69 66 20 61 20 6B t .38.see if a k
018EF0: 65 79 20 68 61 73 20 62 65 65 6E 20 70 72 65 73 ey has been pres
018F00: 73 65 64 0D 0A 09 09 72 64 76 64 75 20 09 33 38 sed....rdvdu .38
018F10: 09 72 65 61 64 20 63 68 61 72 61 63 74 65 72 20 .read character
018F20: 66 72 6F 6D 20 74 68 65 20 6B 65 79 62 6F 61 72 from the keyboar
018F30: 64 0D 0A 09 09 72 65 61 64 63 68 20 09 33 39 09 d....readch .39.
018F40: 72 65 61 64 20 61 20 63 68 61 72 61 63 74 65 72 read a character
018F50: 20 66 72 6F 6D 20 74 68 65 20 69 6E 70 75 74 20 from the input
018F60: 66 69 6C 65 0D 0A 09 53 09 72 65 61 64 6E 20 09 file...S.readn .
018F70: 33 31 09 72 65 61 64 20 61 20 64 65 63 69 6D 61 31.read a decima
018F80: 6C 20 6E 75 6D 62 65 72 0D 0A 09 53 09 72 65 61 l number...S.rea
018F90: 64 73 20 09 33 31 09 72 65 61 64 20 61 20 73 74 ds .31.read a st
018FA0: 72 69 6E 67 0D 0A 43 09 09 72 65 61 64 73 65 63 ring..C..readsec
018FB0: 74 6F 72 09 2D 09 72 65 61 64 20 61 20 31 32 38 tor.-.read a 128
018FC0: 20 62 79 74 65 20 73 65 63 74 6F 72 20 66 72 6F byte sector fro
018FD0: 6D 20 64 69 73 63 0D 0A 09 46 09 72 65 6E 61 6D m disc...F.renam
018FE0: 65 20 09 34 32 09 72 65 6E 61 6D 65 20 61 20 66 e .42.rename a f
018FF0: 69 6C 65 0D 0A 43 09 53 09 72 65 77 69 6E 64 20 ile..C.S.rewind
019000: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
019010: 15 00 00 00 02 09 50 E5 15 00 C1 02 00 00 00 02 ......P.........
019020: 15 00 C2 02 00 00 00 02 15 00 C3 02 00 00 00 02 ................
019030: 15 00 C4 02 00 00 00 02 15 00 C5 02 00 00 00 02 ................
019040: 15 00 C6 02 00 00 00 02 15 00 C7 02 00 00 00 02 ................
019050: 15 00 C8 02 00 00 00 02 15 00 C9 02 00 00 00 02 ................
019060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
019070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
019080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
019090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
019100: 09 33 36 09 72 65 77 69 6E 64 20 74 68 65 20 69 .36.rewind the i
019110: 6E 70 75 74 20 73 74 72 65 61 6D 0D 0A 43 09 09 nput stream..C..
019120: 72 65 77 69 6E 64 69 6E 20 09 33 39 09 72 65 77 rewindin .39.rew
019130: 69 6E 64 20 61 6E 20 69 6E 70 75 74 20 66 69 6C ind an input fil
019140: 65 0D 0A 09 53 09 73 65 6C 65 63 74 69 6E 70 75 e...S.selectinpu
019150: 74 20 09 33 33 09 63 68 61 6E 67 65 20 74 68 65 t .33.change the
019160: 20 69 6E 70 75 74 20 73 74 72 65 61 6D 0D 0A 09 input stream...
019170: 53 09 73 65 6C 65 63 74 6F 75 74 70 75 74 20 33 S.selectoutput 3
019180: 34 09 63 68 61 6E 67 65 20 74 68 65 20 6F 75 74 4.change the out
019190: 70 75 74 20 73 74 72 65 61 6D 0D 0A 43 09 09 73 put stream..C..s
0191A0: 65 74 66 63 62 09 2D 09 73 65 74 20 75 70 20 61 etfcb.-.set up a
0191B0: 20 66 69 6C 65 20 63 6F 6E 74 72 6F 6C 20 62 6C file control bl
0191C0: 6F 63 6B 0D 0A 09 53 09 73 74 6F 70 20 09 34 33 ock...S.stop .43
0191D0: 09 73 74 6F 70 20 61 20 70 72 6F 67 72 61 6D 20 .stop a program
0191E0: 61 6E 64 20 73 65 74 20 72 65 74 75 72 6E 20 63 and set return c
0191F0: 6F 64 65 0D 0A 09 09 73 74 72 74 6F 6E 75 6D 20 ode....strtonum
019200: 09 33 32 09 63 6F 6E 76 65 72 74 20 61 20 73 74 .32.convert a st
019210: 72 69 6E 67 20 74 6F 20 61 20 64 65 63 69 6D 61 ring to a decima
019220: 6C 20 6E 75 6D 62 65 72 0D 0A 43 09 09 74 61 69 l number..C..tai
019230: 6C 20 09 34 36 09 72 65 74 75 72 6E 73 20 74 68 l .46.returns th
019240: 65 20 43 50 2F 4D 20 63 6F 6D 6D 61 6E 64 20 74 e CP/M command t
019250: 61 69 6C 20 61 73 20 61 20 73 74 72 69 6E 67 0D ail as a string.
019260: 0A 41 09 46 09 74 69 6D 65 20 09 34 36 09 72 65 .A.F.time .46.re
019270: 74 75 72 6E 20 74 68 65 20 74 69 6D 65 0D 0A 09 turn the time...
019280: 53 09 75 6E 70 61 63 6B 73 74 72 69 6E 67 09 34 S.unpackstring.4
019290: 37 09 65 78 70 61 6E 64 20 61 20 73 74 72 69 6E 7.expand a strin
0192A0: 67 20 69 6E 74 6F 20 61 20 76 65 63 74 6F 72 0D g into a vector.
0192B0: 0A 09 53 09 75 6E 72 64 63 68 20 09 33 32 09 70 ..S.unrdch .32.p
0192C0: 75 74 20 62 61 63 6B 20 74 68 65 20 6C 61 73 74 ut back the last
0192D0: 20 72 65 61 64 20 63 68 61 72 61 63 74 65 72 0D read character.
0192E0: 0A 09 46 09 75 70 70 65 72 63 61 73 65 20 09 34 ..F.uppercase .4
0192F0: 34 09 73 61 6D 65 20 61 73 20 63 61 70 69 74 61 4.same as capita
019300: 6C 63 68 0D 0A 09 09 76 65 72 73 69 6F 6E 20 09 lch....version .
019310: 34 34 09 72 65 74 75 72 6E 20 74 68 65 20 6F 70 44.return the op
019320: 65 72 61 74 69 6E 67 20 73 79 73 74 65 6D 20 61 erating system a
019330: 6E 64 20 63 6F 6D 70 75 74 65 72 0D 0A 09 53 09 nd computer...S.
019340: 77 72 63 68 20 09 32 37 09 77 72 69 74 65 20 61 wrch .27.write a
019350: 20 63 68 61 72 61 63 74 65 72 0D 0A 09 09 77 72 character....wr
019360: 69 74 65 63 68 20 09 33 39 09 77 72 69 74 65 20 itech .39.write
019370: 61 20 63 68 61 72 61 63 74 65 72 20 74 6F 20 74 a character to t
019380: 68 65 20 6F 75 74 70 75 74 20 66 69 6C 65 0D 0A he output file..
019390: 09 53 09 77 72 69 74 65 64 20 09 32 37 09 77 72 .S.writed .27.wr
0193A0: 69 74 65 20 61 20 64 65 63 69 6D 61 6C 20 6E 75 ite a decimal nu
0193B0: 6D 62 65 72 0D 0A 09 53 09 77 72 69 74 65 66 20 mber...S.writef
0193C0: 09 32 38 09 66 6F 72 6D 61 74 74 65 64 20 77 72 .28.formatted wr
0193D0: 69 74 65 0D 0A 09 53 09 77 72 69 74 65 68 65 78 ite...S.writehex
0193E0: 20 09 32 39 09 77 72 69 74 65 20 61 20 68 65 78 .29.write a hex
0193F0: 61 64 65 63 69 6D 61 6C 20 6E 75 6D 62 65 72 0D adecimal number.
019400: 0A 09 53 09 77 72 69 74 65 6E 20 09 32 39 09 77 ..S.writen .29.w
019410: 72 69 74 65 20 61 20 64 65 63 69 6D 61 6C 20 6E rite a decimal n
019420: 75 6D 62 65 72 20 69 6E 20 6D 69 6E 69 6D 75 6D umber in minimum
019430: 20 77 69 64 74 68 0D 0A 09 53 09 77 72 69 74 65 width...S.write
019440: 6F 63 74 20 09 32 39 09 77 72 69 74 65 20 61 6E oct .29.write an
019450: 20 6F 63 74 61 6C 20 6E 75 6D 62 65 72 0D 0A 09 octal number...
019460: 53 09 77 72 69 74 65 73 20 09 32 39 09 77 72 69 S.writes .29.wri
019470: 74 65 20 61 20 73 74 72 69 6E 67 0D 0A 43 09 09 te a string..C..
019480: 77 72 69 74 65 73 65 63 74 6F 72 09 2D 09 77 72 writesector.-.wr
019490: 69 74 65 20 61 20 31 32 38 20 62 79 74 65 20 73 ite a 128 byte s
0194A0: 65 63 74 6F 72 20 74 6F 20 64 69 73 63 0D 0A 09 ector to disc...
0194B0: 46 09 77 72 69 74 65 74 20 09 33 30 09 77 72 69 F.writet .30.wri
0194C0: 74 65 20 61 20 73 74 72 69 6E 67 20 61 6E 64 20 te a string and
0194D0: 70 61 64 20 77 69 74 68 20 73 70 61 63 65 73 0D pad with spaces.
0194E0: 0A 09 46 09 77 72 69 74 65 75 20 09 33 30 09 77 ..F.writeu .30.w
0194F0: 72 69 74 65 20 61 6E 20 75 6E 73 69 67 6E 65 64 rite an unsigned
019500: 20 64 65 63 69 6D 61 6C 20 6E 75 6D 62 65 72 0D decimal number.
019510: 0A 09 09 77 72 76 64 75 20 09 33 39 09 77 72 69 ...wrvdu .39.wri
019520: 74 65 20 63 68 61 72 61 63 74 65 72 20 74 6F 20 te character to
019530: 74 68 65 20 73 63 72 65 65 6E 0D 0A 3E 70 61 0D the screen..>pa.
019540: 0A 3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D .>---!-----!----
019550: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -!-------!------
019560: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -!-------!------
019570: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -!-------!------
019580: 2D 21 2D 2D 2D 2D 52 0D 0A 3E 63 65 20 E2 41 33 -!----R..>ce .A3
019590: 2E 20 50 4F 52 54 41 42 49 4C 49 54 59 E2 0D 0A . PORTABILITY...
0195A0: 0D 0A 0D 0A 09 4D 6F 73 74 20 6F 66 20 74 68 65 .....Most of the
0195B0: 20 61 62 6F 76 65 90 20 49 2F 4F 90 20 72 6F 75 above. I/O. rou
0195C0: 74 69 6E 65 73 90 20 77 69 6C 6C 90 20 62 65 90 tines. will. be.
0195D0: 20 66 6F 75 6E 64 20 69 6E 20 76 69 72 74 75 61 found in virtua
0195E0: 6C 6C 79 20 61 6C 6C 20 0D 8A 76 65 72 73 69 6F lly all ..versio
0195F0: 6E 73 20 6F 66 20 42 43 50 4C 2E 20 53 6F 6D 65 ns of BCPL. Some
019600: 20 61 72 65 90 20 6C 65 73 73 90 20 73 74 61 6E are. less. stan
019610: 64 61 72 64 2C 90 20 61 6E 64 90 20 73 6F 6D 65 dard,. and. some
019620: 20 61 72 65 20 73 70 65 63 69 66 69 63 20 74 6F are specific to
019630: 20 0D 8A 41 72 6E 6F 72 20 42 43 50 4C 2E 20 49 ..Arnor BCPL. I
019640: 66 20 61 20 70 72 6F 67 72 61 6D 20 6D 61 79 90 f a program may.
019650: 20 62 65 90 20 72 65 71 75 69 72 65 64 20 74 6F be. required to
019660: 20 72 75 6E 20 75 6E 64 65 72 20 6F 74 68 65 72 run under other
019670: 20 76 65 72 73 69 6F 6E 73 20 0D 8A 6F 66 20 42 versions ..of B
019680: 43 50 4C 20 74 68 65 73 65 20 6C 65 73 73 90 20 CPL these less.
019690: 73 74 61 6E 64 61 72 64 90 20 72 6F 75 74 69 6E standard. routin
0196A0: 65 73 90 20 73 68 6F 75 6C 64 90 20 62 65 90 20 es. should. be.
0196B0: 75 73 65 64 90 20 61 73 20 6C 69 74 74 6C 65 20 used. as little
0196C0: 61 73 20 0D 8A 70 6F 73 73 69 62 6C 65 2E 0D 0A as ..possible...
0196D0: 0D 0A 0D 0A 0D 0A 52 6F 75 74 69 6E 65 73 20 74 ......Routines t
0196E0: 68 61 74 20 61 72 65 20 70 61 72 74 20 6F 66 20 hat are part of
0196F0: 74 68 65 90 20 73 74 61 6E 64 61 72 64 20 42 43 the. standard BC
019700: 50 4C 20 49 2F 4F 20 6C 69 62 72 61 72 79 20 28 PL I/O library (
019710: 74 68 6F 73 65 20 6D 61 72 6B 65 64 20 0D 8A 27 those marked ..'
019720: 64 27 20 61 72 65 20 75 73 65 64 20 69 6E 20 61 d' are used in a
019730: 20 73 6C 69 67 68 74 6C 79 20 64 69 66 66 65 72 slightly differ
019740: 65 6E 74 20 77 61 79 20 69 6E 20 41 72 6E 6F 72 ent way in Arnor
019750: 20 42 43 50 4C 29 3A 0D 0A 0D 0A 61 70 74 6F 76 BCPL):....aptov
019760: 65 63 2C 90 20 65 6E 64 72 65 61 64 2C 90 20 65 ec,. endread,. e
019770: 6E 64 77 72 69 74 65 2C 90 20 66 69 6E 64 69 6E ndwrite,. findin
019780: 70 75 74 28 64 29 2C 90 20 66 69 6E 64 6F 75 74 put(d),. findout
019790: 70 75 74 28 64 29 2C 90 20 67 65 74 62 79 74 65 put(d),. getbyte
0197A0: 2C 20 0D 8A 69 6E 70 75 74 2C 20 6C 65 76 65 6C , ..input, level
0197B0: 28 64 29 2C 20 6C 6F 6E 67 6A 75 6D 70 28 64 29 (d), longjump(d)
0197C0: 2C 90 20 6E 65 77 6C 69 6E 65 2C 90 20 6E 65 77 ,. newline,. new
0197D0: 70 61 67 65 2C 90 20 6F 75 74 70 75 74 2C 20 70 page,. output, p
0197E0: 61 63 6B 73 74 72 69 6E 67 2C 20 0D 8A 70 75 74 ackstring, ..put
0197F0: 62 79 74 65 2C 20 72 64 63 68 2C 20 72 65 61 64 byte, rdch, read
019800: 6E 2C 20 72 65 61 64 73 2C 90 20 72 65 77 69 6E n, reads,. rewin
019810: 64 2C 20 73 65 6C 65 63 74 69 6E 70 75 74 2C 20 d, selectinput,
019820: 73 65 6C 65 63 74 6F 75 74 70 75 74 2C 20 73 74 selectoutput, st
019830: 6F 70 2C 20 0D 8A 75 6E 70 61 63 6B 73 74 72 69 op, ..unpackstri
019840: 6E 67 2C 90 20 75 6E 72 64 63 68 2C 90 20 77 72 ng,. unrdch,. wr
019850: 63 68 2C 90 90 20 77 72 69 74 65 64 2C 90 90 20 ch,.. writed,..
019860: 77 72 69 74 65 66 2C 90 90 20 77 72 69 74 65 68 writef,.. writeh
019870: 65 78 2C 90 20 77 72 69 74 65 6E 2C 20 0D 8A 77 ex,. writen, ..w
019880: 72 69 74 65 6F 63 74 2C 20 77 72 69 74 65 73 2E riteoct, writes.
019890: 0D 0A 0D 0A 0D 0A 52 6F 75 74 69 6E 65 73 20 74 ......Routines t
0198A0: 68 61 74 20 61 72 65 20 6E 6F 74 20 65 6E 74 69 hat are not enti
0198B0: 72 65 6C 79 20 73 74 61 6E 64 61 72 64 20 28 74 rely standard (t
0198C0: 68 6F 75 67 68 20 6D 61 6E 79 20 42 43 50 4C 20 hough many BCPL
0198D0: 73 79 73 74 65 6D 73 20 68 61 76 65 20 0D 8A 73 systems have ..s
0198E0: 6F 6D 65 74 68 69 6E 67 20 73 69 6D 69 6C 61 72 omething similar
0198F0: 29 3A 0D 0A 0D 0A 63 61 6C 6C 2C 20 63 61 70 69 ):....call, capi
019900: 74 61 6C 63 68 2C 20 63 6F 6D 70 63 68 2C 90 20 talch, compch,.
019910: 63 6F 6D 70 73 74 72 69 6E 67 2C 90 20 64 65 6C compstring,. del
019920: 65 74 65 2C 90 20 72 61 6E 64 6F 6D 2C 90 20 72 ete,. random,. r
019930: 65 6E 61 6D 65 2C 20 74 69 6D 65 2C 20 0D 8A 75 ename, time, ..u
019940: 70 70 65 72 63 61 73 65 2C 20 77 72 69 74 65 74 ppercase, writet
019950: 2C 20 77 72 69 74 65 75 2E 0D 0A 0D 0A 0D 0A 52 , writeu.......R
019960: 6F 75 74 69 6E 65 73 20 73 70 65 63 69 66 69 63 outines specific
019970: 20 74 6F 20 41 72 6E 6F 72 20 42 43 50 4C 3A 0D to Arnor BCPL:.
019980: 0A 0D 0A 62 64 6F 73 61 2C 90 20 62 64 6F 73 62 ...bdosa,. bdosb
019990: 2C 90 20 62 69 6F 73 2C 90 20 62 79 74 65 6D 6F ,. bios,. bytemo
0199A0: 76 65 2C 90 20 63 6C 6F 73 65 69 6E 2C 90 20 63 ve,. closein,. c
0199B0: 6C 6F 73 65 6F 75 74 2C 90 20 64 65 62 75 67 2C loseout,. debug,
0199C0: 90 20 64 65 63 76 61 6C 2C 20 0D 8A 65 78 74 65 . decval, ..exte
0199D0: 72 6E 61 6C 2C 90 20 66 69 72 6D 77 61 72 65 2C rnal,. firmware,
0199E0: 90 20 66 6C 75 73 68 2C 90 20 70 72 62 75 73 79 . flush,. prbusy
0199F0: 2C 90 20 70 72 63 68 2C 90 20 72 64 74 65 73 74 ,. prch,. rdtest
019A00: 2C 90 20 72 64 76 64 75 2C 90 20 72 65 61 64 63 ,. rdvdu,. readc
019A10: 68 2C 20 0D 8A 72 65 61 64 73 65 63 74 6F 72 2C h, ..readsector,
019A20: 90 20 72 65 77 69 6E 64 69 6E 2C 90 20 73 65 74 . rewindin,. set
019A30: 66 63 62 2C 90 20 73 74 72 74 6F 6E 75 6D 2C 90 fcb,. strtonum,.
019A40: 90 20 74 61 69 6C 2C 90 20 76 65 72 73 69 6F 6E . tail,. version
019A50: 2C 90 20 77 72 69 74 65 63 68 2C 20 0D 8A 77 72 ,. writech, ..wr
019A60: 69 74 65 73 65 63 74 6F 72 2C 20 77 72 76 64 75 itesector, wrvdu
019A70: 2C 20 70 6C 75 73 20 61 6C 6C 20 74 68 65 20 72 , plus all the r
019A80: 6F 75 74 69 6E 65 73 90 20 69 6E 20 74 68 65 20 outines. in the
019A90: 66 69 6C 65 20 22 41 4D 53 44 4F 53 22 2C 20 77 file "AMSDOS", w
019AA0: 68 69 63 68 20 0D 8A 61 72 65 20 61 6C 73 6F 20 hich ..are also
019AB0: 43 50 43 20 6D 61 63 68 69 6E 65 20 73 70 65 63 CPC machine spec
019AC0: 69 66 69 63 20 61 73 20 77 65 6C 6C 2E 0D 0A 0D ific as well....
019AD0: 0A 0D 0A 3E 70 61 0D 0A 20 20 20 20 20 20 20 20 ...>pa..
019AE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
019AF0: 20 20 E2 41 34 2E 20 45 52 52 4F 52 20 4D 45 53 .A4. ERROR MES
019B00: 53 41 47 45 53 E2 0D 0A 0D 0A 0D 0A 09 54 68 65 SAGES........The
019B10: 72 65 20 61 72 65 20 74 68 72 65 65 20 6D 61 69 re are three mai
019B20: 6E 20 73 65 74 73 20 6F 66 20 65 72 72 6F 72 20 n sets of error
019B30: 6D 65 73 73 61 67 65 73 20 77 68 69 63 68 20 63 messages which c
019B40: 61 6E 20 6F 63 63 75 72 2E 20 54 68 65 73 65 20 an occur. These
019B50: 0D 8A 61 72 65 20 66 61 74 61 6C 20 65 72 72 6F ..are fatal erro
019B60: 72 73 20 77 68 69 63 68 20 63 61 75 73 65 20 74 rs which cause t
019B70: 68 65 90 20 63 6F 6D 70 69 6C 65 72 20 74 6F 20 he. compiler to
019B80: 61 62 6F 72 74 20 69 6D 6D 65 64 69 61 74 65 6C abort immediatel
019B90: 79 2C 20 70 68 61 73 65 20 0D 8A 31 20 65 72 72 y, phase ..1 err
019BA0: 6F 72 73 20 77 68 69 63 68 20 77 69 6C 6C 20 73 ors which will s
019BB0: 74 6F 70 90 20 74 68 65 90 20 63 6F 6D 70 69 6C top. the. compil
019BC0: 61 74 69 6F 6E 90 20 61 66 74 65 72 90 20 70 68 ation. after. ph
019BD0: 61 73 65 20 31 20 61 6E 64 20 66 69 6E 61 6C 6C ase 1 and finall
019BE0: 79 20 0D 8A 70 68 61 73 65 20 32 20 65 72 72 6F y ..phase 2 erro
019BF0: 72 73 20 77 68 69 63 68 20 77 69 6C 6C 20 73 74 rs which will st
019C00: 6F 70 20 63 6F 6D 70 69 6C 61 74 69 6F 6E 20 61 op compilation a
019C10: 74 20 74 68 65 20 65 6E 64 20 6F 66 20 74 68 65 t the end of the
019C20: 20 66 69 72 73 74 20 72 75 6E 20 0D 8A 6F 66 20 first run ..of
019C30: 70 68 61 73 65 20 32 2E 0D 0A 09 4D 6F 73 74 20 phase 2....Most
019C40: 65 72 72 6F 72 20 6D 65 73 73 61 67 65 73 20 67 error messages g
019C50: 69 76 65 90 20 61 90 20 6C 69 6E 65 90 20 6E 75 ive. a. line. nu
019C60: 6D 62 65 72 2C 90 20 66 6F 72 20 65 78 61 6D 70 mber,. for examp
019C70: 6C 65 20 22 45 78 70 65 63 74 69 6E 67 20 0D 8A le "Expecting ..
019C80: 63 6F 6D 6D 61 6E 64 20 6E 65 61 72 20 6C 69 6E command near lin
019C90: 65 20 32 37 22 2E 20 54 68 65 90 20 77 6F 72 64 e 27". The. word
019CA0: 90 20 22 6E 65 61 72 22 90 20 69 73 20 75 73 65 . "near". is use
019CB0: 64 20 62 65 63 61 75 73 65 20 74 68 65 20 63 6F d because the co
019CC0: 6D 70 69 6C 65 72 20 0D 8A 67 69 76 65 73 20 74 mpiler ..gives t
019CD0: 68 65 20 6C 69 6E 65 20 6E 75 6D 62 65 72 20 61 he line number a
019CE0: 74 20 77 68 69 63 68 20 69 74 90 20 64 69 73 63 t which it. disc
019CF0: 6F 76 65 72 65 64 20 74 68 65 20 70 72 6F 62 6C overed the probl
019D00: 65 6D 2C 20 61 6E 64 20 74 68 69 73 20 69 73 20 em, and this is
019D10: 0D 8A 6E 6F 74 20 6E 65 63 65 73 73 61 72 69 6C ..not necessaril
019D20: 79 20 74 68 65 20 73 61 6D 65 20 6C 69 6E 65 90 y the same line.
019D30: 20 74 68 61 74 90 20 6E 65 65 64 73 20 63 6F 72 that. needs cor
019D40: 72 65 63 74 69 6E 67 2E 20 54 68 65 20 6C 69 6E recting. The lin
019D50: 65 20 6E 75 6D 62 65 72 20 0D 8A 72 65 66 65 72 e number ..refer
019D60: 73 20 74 6F 20 74 68 65 20 70 6F 73 69 74 69 6F s to the positio
019D70: 6E 20 6F 66 20 74 68 65 90 20 6C 69 6E 65 90 20 n of the. line.
019D80: 77 69 74 68 69 6E 90 20 74 68 65 90 20 66 69 6C within. the. fil
019D90: 65 2C 20 61 6E 64 20 6E 6F 74 20 74 6F 20 74 68 e, and not to th
019DA0: 65 20 0D 8A 74 6F 74 61 6C 20 6E 75 6D 62 65 72 e ..total number
019DB0: 20 6F 66 20 6C 69 6E 65 73 20 63 6F 6D 70 69 6C of lines compil
019DC0: 65 64 20 73 6F 20 66 61 72 2E 0D 0A 0D 0A 0D 0A ed so far.......
019DD0: E2 28 69 29 20 46 61 74 61 6C 20 45 72 72 6F 72 .(i) Fatal Error
019DE0: 73 E2 0D 0A 0D 0A 0D 0A 4F 75 74 20 6F 66 20 6D s.......Out of m
019DF0: 65 6D 6F 72 79 0D 0A 0D 0A 09 54 68 65 20 63 6F emory.....The co
019E00: 6D 70 69 6C 65 72 20 68 61 73 20 72 75 6E 20 6F mpiler has run o
019E10: 75 74 90 20 6F 66 90 20 72 6F 6F 6D 90 20 66 6F ut. of. room. fo
019E20: 72 90 20 74 68 65 20 70 72 6F 67 72 61 6D 20 6F r. the program o
019E30: 72 20 69 74 73 20 73 79 6D 62 6F 6C 20 0D 8A 74 r its symbol ..t
019E40: 61 62 6C 65 2E 20 43 61 6E 20 73 6F 6D 65 74 69 able. Can someti
019E50: 6D 65 73 20 62 65 20 73 6F 6C 76 65 64 20 62 79 mes be solved by
019E60: 20 72 65 2D 75 73 69 6E 67 20 6C 6F 63 61 6C 20 re-using local
019E70: 76 61 72 69 61 62 6C 65 20 6E 61 6D 65 73 2E 0D variable names..
019E80: 0A 0D 0A 0D 0A 4F 75 74 20 6F 66 20 73 79 6D 62 .....Out of symb
019E90: 6F 6C 20 73 70 61 63 65 0D 0A 0D 0A 09 56 65 72 ol space.....Ver
019EA0: 79 20 73 69 6D 69 6C 61 72 20 74 6F 20 74 68 65 y similar to the
019EB0: 20 61 62 6F 76 65 20 65 78 63 65 70 74 90 20 74 above except. t
019EC0: 68 61 74 90 20 74 68 65 20 70 72 6F 67 72 61 6D hat. the program
019ED0: 20 6D 61 79 20 6E 6F 74 20 62 65 20 74 6F 6F 20 may not be too
019EE0: 0D 8A 62 69 67 2E 20 54 72 79 20 63 6F 6D 70 69 ..big. Try compi
019EF0: 6C 69 6E 67 20 69 74 20 74 6F 20 64 69 73 63 20 ling it to disc
019F00: 77 68 69 63 68 20 61 6C 6C 6F 77 73 20 74 77 69 which allows twi
019F10: 63 65 20 61 73 20 6D 75 63 68 20 73 79 6D 62 6F ce as much symbo
019F20: 6C 20 73 70 61 63 65 2E 0D 0A 09 49 66 20 79 6F l space....If yo
019F30: 75 20 61 72 65 20 63 6F 6D 70 69 6C 69 6E 67 20 u are compiling
019F40: 61 90 20 70 69 65 63 65 90 20 6F 66 90 20 74 65 a. piece. of. te
019F50: 78 74 90 20 69 6E 20 6D 65 6D 6F 72 79 20 66 72 xt. in memory fr
019F60: 6F 6D 20 50 52 4F 54 45 58 54 20 6F 72 20 0D 8A om PROTEXT or ..
019F70: 4D 41 58 41 4D 20 74 68 65 6E 20 73 61 76 69 6E MAXAM then savin
019F80: 67 20 74 68 65 20 74 65 78 74 20 74 6F 90 20 64 g the text to. d
019F90: 69 73 63 2C 90 20 63 6C 65 61 72 69 6E 67 20 74 isc,. clearing t
019FA0: 68 65 20 6D 65 6D 6F 72 79 20 61 6E 64 20 74 68 he memory and th
019FB0: 65 6E 20 72 65 2D 0D 8A 63 6F 6D 70 69 6C 69 6E en re-..compilin
019FC0: 67 20 6D 61 79 20 73 6F 6C 76 65 20 74 68 69 73 g may solve this
019FD0: 20 70 72 6F 62 6C 65 6D 2E 0D 0A 0D 0A 0D 0A 49 problem.......I
019FE0: 2F 4F 20 65 72 72 6F 72 0D 0A 0D 0A 09 41 6E 20 /O error.....An
019FF0: 65 72 72 6F 72 20 68 61 73 20 6F 63 63 75 72 72 error has occurr
01A000: 65 64 20 77 68 65 6E 90 20 77 72 69 74 69 6E 67 ed when. writing
01A010: 90 20 74 6F 90 20 74 68 65 20 6F 75 74 70 75 74 . to. the output
01A020: 20 66 69 6C 65 2E 20 4D 61 79 20 6D 65 61 6E 20 file. May mean
01A030: 0D 8A 74 68 61 74 20 74 68 65 20 64 69 73 63 20 ..that the disc
01A040: 69 73 20 66 75 6C 6C 2E 0D 0A 0D 0A 0D 0A 43 61 is full.......Ca
01A050: 6E 27 74 20 6F 70 65 6E 20 69 6E 70 75 74 20 66 n't open input f
01A060: 69 6C 65 0D 0A 0D 0A 09 54 68 65 20 66 69 6C 65 ile.....The file
01A070: 6E 61 6D 65 20 67 69 76 65 6E 20 69 6E 20 61 20 name given in a
01A080: 47 45 54 90 20 64 69 72 65 63 74 69 76 65 90 20 GET. directive.
01A090: 63 6F 75 6C 64 90 20 6E 6F 74 20 62 65 20 66 6F could. not be fo
01A0A0: 75 6E 64 20 6F 6E 20 74 68 65 20 0D 8A 64 69 73 und on the ..dis
01A0B0: 63 2E 0D 0A 0D 0A 0D 0A 43 61 6E 27 74 20 6F 70 c.......Can't op
01A0C0: 65 6E 20 6F 75 74 70 75 74 20 66 69 6C 65 0D 0A en output file..
01A0D0: 0D 0A 09 54 68 65 20 63 6F 6D 70 69 6C 65 72 20 ...The compiler
01A0E0: 77 61 73 20 74 72 79 69 6E 67 20 74 6F 20 6F 70 was trying to op
01A0F0: 65 6E 20 61 20 66 69 6C 65 20 74 6F 20 6F 75 74 en a file to out
01A100: 70 75 74 20 74 68 65 20 63 6F 6D 70 69 6C 65 64 put the compiled
01A110: 20 63 6F 64 65 20 0D 8A 74 6F 2C 20 62 75 74 20 code ..to, but
01A120: 66 6F 72 20 73 6F 6D 65 20 72 65 61 73 6F 6E 20 for some reason
01A130: 77 61 73 20 6E 6F 74 20 61 62 6C 65 20 74 6F 20 was not able to
01A140: 6F 70 65 6E 20 69 74 2E 0D 0A 3E 70 61 0D 0A 42 open it...>pa..B
01A150: 72 6F 6B 65 6E 20 69 6E 0D 0A 0D 0A 09 45 53 43 roken in.....ESC
01A160: 20 6F 72 20 53 54 4F 50 20 77 61 73 20 70 72 65 or STOP was pre
01A170: 73 73 65 64 20 74 77 69 63 65 20 69 6E 20 61 20 ssed twice in a
01A180: 72 6F 77 2E 20 50 72 65 73 73 69 6E 67 20 69 74 row. Pressing it
01A190: 20 6F 6E 63 65 20 77 69 6C 6C 20 68 61 6C 74 20 once will halt
01A1A0: 0D 8A 74 68 65 20 63 6F 6D 70 69 6C 65 72 20 61 ..the compiler a
01A1B0: 6E 64 20 63 61 75 73 65 90 20 69 74 90 20 74 6F nd cause. it. to
01A1C0: 90 20 77 61 69 74 90 20 66 6F 72 90 20 61 6E 6F . wait. for. ano
01A1D0: 74 68 65 72 20 6B 65 79 20 70 72 65 73 73 2E 20 ther key press.
01A1E0: 50 72 65 73 73 69 6E 67 20 0D 8A 65 73 63 61 70 Pressing ..escap
01A1F0: 65 20 61 67 61 69 6E 20 63 61 75 73 65 73 20 74 e again causes t
01A200: 68 69 73 20 65 72 72 6F 72 20 77 68 69 6C 65 90 his error while.
01A210: 20 61 6E 79 20 6F 74 68 65 72 20 6B 65 79 20 63 any other key c
01A220: 61 75 73 65 73 20 63 6F 6D 70 69 6C 61 74 69 6F auses compilatio
01A230: 6E 20 0D 8A 74 6F 20 63 6F 6E 74 69 6E 75 65 2E n ..to continue.
01A240: 0D 0A 0D 0A 0D 0A 55 6E 64 65 66 69 6E 65 64 20 ......Undefined
01A250: 53 54 41 52 54 0D 0A 0D 0A 09 41 6C 6C 20 70 72 START.....All pr
01A260: 6F 67 72 61 6D 73 20 6D 75 73 74 90 20 68 61 76 ograms must. hav
01A270: 65 90 20 61 90 20 70 72 6F 63 65 64 75 72 65 90 e. a. procedure.
01A280: 20 63 61 6C 6C 65 64 90 20 53 54 41 52 54 2E 90 called. START..
01A290: 20 54 68 65 20 70 72 6F 67 72 61 6D 20 0D 8A 73 The program ..s
01A2A0: 75 62 6D 69 74 74 65 64 20 64 69 64 20 6E 6F 74 ubmitted did not
01A2B0: 20 68 61 76 65 20 74 68 69 73 20 70 72 6F 63 65 have this proce
01A2C0: 64 75 72 65 2E 0D 0A 0D 0A 0D 0A 42 61 64 20 47 dure.......Bad G
01A2D0: 45 54 0D 0A 0D 0A 09 44 75 65 20 74 6F 20 74 68 ET.....Due to th
01A2E0: 65 20 6C 69 6D 69 74 61 74 69 6F 6E 73 20 6F 66 e limitations of
01A2F0: 20 41 4D 53 44 4F 53 90 20 6F 6E 6C 79 90 20 6F AMSDOS. only. o
01A300: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
01A310: 16 00 00 00 02 09 50 E5 16 00 C1 02 00 00 00 02 ......P.........
01A320: 16 00 C2 02 00 00 00 02 16 00 C3 02 00 00 00 02 ................
01A330: 16 00 C4 02 00 00 00 02 16 00 C5 02 00 00 00 02 ................
01A340: 16 00 C6 02 00 00 00 02 16 00 C7 02 00 00 00 02 ................
01A350: 16 00 C8 02 00 00 00 02 16 00 C9 02 00 00 00 02 ................
01A360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A400: 6E 65 20 66 69 6C 65 20 63 61 6E 20 62 65 20 6F ne file can be o
01A410: 70 65 6E 65 64 20 66 6F 72 20 0D 8A 69 6E 70 75 pened for ..inpu
01A420: 74 20 61 74 20 61 6E 79 90 20 6F 6E 65 90 20 74 t at any. one. t
01A430: 69 6D 65 2E 90 20 41 90 20 66 69 6C 65 90 20 77 ime.. A. file. w
01A440: 61 73 90 20 6F 70 65 6E 65 64 90 20 77 68 69 63 as. opened. whic
01A450: 68 90 20 63 6F 6E 74 61 69 6E 65 64 20 61 20 47 h. contained a G
01A460: 45 54 20 0D 8A 64 69 72 65 63 74 69 76 65 2E 20 ET ..directive.
01A470: 57 69 6C 6C 20 61 6C 73 6F 20 6F 63 63 75 72 90 Will also occur.
01A480: 20 69 66 90 20 61 90 20 70 69 65 63 65 90 20 6F if. a. piece. o
01A490: 66 20 73 74 6F 72 65 64 20 50 52 4F 54 45 58 54 f stored PROTEXT
01A4A0: 2F 4D 41 58 41 4D 20 74 65 78 74 20 0D 8A 61 74 /MAXAM text ..at
01A4B0: 74 65 6D 70 74 73 20 74 6F 20 47 45 54 20 69 74 tempts to GET it
01A4C0: 73 65 6C 66 2E 0D 0A 0D 0A 0D 0A 4E 6F 6E 2D 41 self.......Non-A
01A4D0: 53 43 49 49 20 66 69 6C 65 0D 0A 0D 0A 09 54 68 SCII file.....Th
01A4E0: 65 20 63 6F 6D 70 69 6C 65 72 20 77 61 73 20 69 e compiler was i
01A4F0: 6E 73 74 72 75 63 74 65 64 20 74 6F 20 6F 70 65 nstructed to ope
01A500: 6E 90 20 61 90 20 66 69 6C 65 20 62 75 74 20 74 n. a. file but t
01A510: 68 61 74 20 66 69 6C 65 20 64 69 64 20 6E 6F 74 hat file did not
01A520: 20 0D 8A 63 6F 6E 74 61 69 6E 20 41 53 43 49 49 ..contain ASCII
01A530: 20 74 65 78 74 90 20 77 68 69 63 68 90 20 69 73 text. which. is
01A540: 90 20 72 65 71 75 69 72 65 64 90 20 66 6F 72 90 . required. for.
01A550: 20 74 68 65 90 20 63 6F 6D 70 69 6C 65 72 2E 90 the. compiler..
01A560: 20 55 73 65 72 73 20 6F 66 20 0D 8A 43 50 43 20 Users of ..CPC
01A570: 76 65 72 73 69 6F 6E 73 20 6F 66 20 50 52 4F 54 versions of PROT
01A580: 45 58 54 20 73 68 6F 75 6C 64 20 75 73 65 20 70 EXT should use p
01A590: 72 6F 67 72 61 6D 20 6D 6F 64 65 2C 20 77 68 69 rogram mode, whi
01A5A0: 63 68 20 77 69 6C 6C 20 73 61 76 65 20 74 68 65 ch will save the
01A5B0: 20 66 69 6C 65 20 0D 8A 69 6E 20 41 53 43 49 49 file ..in ASCII
01A5C0: 20 66 6F 72 6D 61 74 2E 0D 0A 0D 0A 0D 0A 46 69 format.......Fi
01A5D0: 6C 65 20 69 6E 74 61 63 74 0D 0A 0D 0A 09 54 68 le intact.....Th
01A5E0: 69 73 20 6F 63 63 75 72 73 20 6F 6E 20 43 50 2F is occurs on CP/
01A5F0: 4D 20 76 65 72 73 69 6F 6E 73 20 77 68 65 6E 20 M versions when
01A600: 74 68 65 20 64 65 73 74 69 6E 61 74 69 6F 6E 20 the destination
01A610: 66 69 6C 65 20 65 78 69 73 74 65 64 20 62 75 74 file existed but
01A620: 20 0D 8A 74 68 65 20 75 73 65 72 20 74 79 70 65 ..the user type
01A630: 64 20 4E 20 77 68 65 6E 20 61 73 6B 65 64 20 69 d N when asked i
01A640: 66 20 74 68 65 20 66 69 6C 65 20 73 68 6F 75 6C f the file shoul
01A650: 64 20 62 65 20 64 65 6C 65 74 65 64 2E 0D 0A 0D d be deleted....
01A660: 0A 0D 0A 42 61 64 20 53 4F 55 52 43 45 20 6E 61 ...Bad SOURCE na
01A670: 6D 65 0D 0A 0D 0A 09 43 50 2F 4D 20 76 65 72 73 me.....CP/M vers
01A680: 69 6F 6E 73 20 63 68 65 63 6B 20 74 68 65 20 73 ions check the s
01A690: 6F 75 72 63 65 20 6E 61 6D 65 20 67 69 76 65 6E ource name given
01A6A0: 2C 20 61 6E 64 20 69 66 20 69 74 20 69 73 20 69 , and if it is i
01A6B0: 6E 76 61 6C 69 64 20 69 6E 20 0D 8A 73 6F 6D 65 nvalid in ..some
01A6C0: 20 77 61 79 20 65 2E 67 2E 20 68 61 73 20 61 6E way e.g. has an
01A6D0: 20 65 78 74 65 6E 73 69 6F 6E 20 6F 66 90 20 6D extension of. m
01A6E0: 6F 72 65 20 74 68 61 6E 20 33 20 6C 65 74 74 65 ore than 3 lette
01A6F0: 72 73 20 74 68 65 6E 20 74 68 69 73 20 65 72 72 rs then this err
01A700: 6F 72 20 0D 8A 77 69 6C 6C 20 62 65 20 67 69 76 or ..will be giv
01A710: 65 6E 2E 0D 0A 0D 0A 0D 0A 42 61 64 20 44 45 53 en.......Bad DES
01A720: 54 49 4E 41 54 49 4F 4E 20 6E 61 6D 65 0D 0A 0D TINATION name...
01A730: 0A 09 41 73 20 61 62 6F 76 65 2E 0D 0A 3E 70 61 ..As above...>pa
01A740: 0D 0A E2 28 69 69 29 20 53 79 6E 74 61 78 20 45 ...(ii) Syntax E
01A750: 72 72 6F 72 73 E2 0D 0A 0D 0A 09 50 68 61 73 65 rrors......Phase
01A760: 20 31 20 65 72 72 6F 72 73 20 61 72 65 20 61 6C 1 errors are al
01A770: 6C 20 73 79 6E 74 61 78 20 65 72 72 6F 72 73 20 l syntax errors
01A780: 77 69 74 68 69 6E 20 74 68 65 20 70 72 6F 67 72 within the progr
01A790: 61 6D 2E 20 4F 66 74 65 6E 20 74 68 65 20 0D 8A am. Often the ..
01A7A0: 63 61 75 73 65 20 77 69 6C 6C 20 62 65 20 61 20 cause will be a
01A7B0: 6D 69 73 73 69 6E 67 20 24 29 20 6F 72 20 29 90 missing $) or ).
01A7C0: 20 77 68 69 63 68 20 77 69 6C 6C 20 70 72 6F 62 which will prob
01A7D0: 61 62 6C 79 20 63 61 75 73 65 20 77 68 61 74 20 ably cause what
01A7E0: 6D 61 79 20 61 74 20 0D 8A 66 69 72 73 74 20 73 may at ..first s
01A7F0: 65 65 6D 90 74 6F 20 62 65 20 61 6E 20 6F 64 64 eem.to be an odd
01A800: 90 20 65 72 72 6F 72 90 20 6D 65 73 73 61 67 65 . error. message
01A810: 2E 20 53 79 6E 74 61 78 20 65 72 72 6F 72 73 20 . Syntax errors
01A820: 61 72 65 20 72 65 70 6F 72 74 65 64 20 61 73 20 are reported as
01A830: 0D 8A 6F 63 63 75 72 72 69 6E 67 20 6E 65 61 72 ..occurring near
01A840: 20 61 20 63 65 72 74 61 69 6E 20 6C 69 6E 65 2E a certain line.
01A850: 90 20 54 68 69 73 90 20 69 73 90 20 74 68 65 20 . This. is. the
01A860: 6C 69 6E 65 20 77 69 74 68 69 6E 20 61 20 70 61 line within a pa
01A870: 72 74 69 63 75 6C 61 72 20 0D 8A 66 69 6C 65 2E rticular ..file.
01A880: 20 49 66 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 If the compiler
01A890: 20 6C 69 73 74 69 6E 67 90 20 69 73 90 20 73 77 listing. is. sw
01A8A0: 69 74 63 68 65 64 90 20 6F 66 66 20 77 68 65 6E itched. off when
01A8B0: 20 74 68 65 20 65 72 72 6F 72 20 6F 63 63 75 72 the error occur
01A8C0: 73 20 0D 8A 74 68 65 6E 20 61 20 62 75 66 66 65 s ..then a buffe
01A8D0: 72 2C 20 68 6F 6C 64 69 6E 67 20 74 68 65 20 6C r, holding the l
01A8E0: 61 73 74 20 66 65 77 20 6C 69 6E 65 73 20 6F 66 ast few lines of
01A8F0: 20 74 65 78 74 20 72 65 61 64 20 66 72 6F 6D 20 text read from
01A900: 74 68 65 20 73 6F 75 72 63 65 20 0D 8A 63 6F 64 the source ..cod
01A910: 65 2C 20 77 69 6C 6C 20 62 65 20 64 69 73 70 6C e, will be displ
01A920: 61 79 65 64 2E 0D 0A 0D 0A 0D 0A 42 61 64 20 65 ayed.......Bad e
01A930: 78 70 72 65 73 73 69 6F 6E 0D 0A 0D 0A 09 54 68 xpression.....Th
01A940: 65 20 65 78 70 72 65 73 73 69 6F 6E 20 62 65 69 e expression bei
01A950: 6E 67 20 65 78 61 6D 69 6E 65 64 90 20 77 61 73 ng examined. was
01A960: 90 20 66 61 75 6C 74 79 90 20 69 6E 90 20 73 6F . faulty. in. so
01A970: 6D 65 90 20 77 61 79 2E 20 4D 61 79 62 65 20 61 me. way. Maybe a
01A980: 20 0D 8A 63 6F 6D 6D 61 6E 64 20 6E 61 6D 65 20 ..command name
01A990: 77 61 73 20 75 73 65 64 20 61 73 20 61 6E 20 69 was used as an i
01A9A0: 64 65 6E 74 69 66 69 65 72 2E 0D 0A 0D 0A 0D 0A dentifier.......
01A9B0: 42 61 64 20 76 65 63 74 6F 72 20 64 65 66 69 6E Bad vector defin
01A9C0: 69 74 69 6F 6E 0D 0A 0D 0A 09 41 20 76 65 63 74 ition.....A vect
01A9D0: 6F 72 20 64 65 66 69 6E 69 74 69 6F 6E 20 77 61 or definition wa
01A9E0: 73 20 62 61 64 90 20 69 6E 90 20 73 6F 6D 65 90 s bad. in. some.
01A9F0: 20 77 61 79 2E 20 49 6E 20 70 61 72 74 69 63 75 way. In particu
01AA00: 6C 61 72 20 6F 6E 6C 79 20 6F 6E 65 20 0D 8A 76 lar only one ..v
01AA10: 65 63 74 6F 72 20 6D 61 79 20 62 65 90 20 64 65 ector may be. de
01AA20: 63 6C 61 72 65 64 90 20 69 6E 90 20 61 6E 79 90 clared. in. any.
01AA30: 20 4C 45 54 90 20 63 6F 6D 6D 61 6E 64 90 20 28 LET. command. (
01AA40: 61 6C 74 68 6F 75 67 68 20 73 69 6D 75 6C 74 61 although simulta
01AA50: 6E 65 6F 75 73 20 0D 8A 64 65 66 69 6E 69 74 69 neous ..definiti
01AA60: 6F 6E 73 20 61 72 65 20 61 6C 6C 6F 77 65 64 29 ons are allowed)
01AA70: 2E 0D 0A 0D 0A 0D 0A 42 61 64 20 70 72 6F 63 65 .......Bad proce
01AA80: 64 75 72 65 20 64 65 66 69 6E 69 74 69 6F 6E 0D dure definition.
01AA90: 0A 0D 0A 09 41 20 70 72 6F 63 65 64 75 72 65 20 ....A procedure
01AAA0: 64 65 66 69 6E 69 74 69 6F 6E 20 77 61 73 20 62 definition was b
01AAB0: 61 64 6C 79 90 20 6D 61 64 65 2E 90 20 4D 61 79 adly. made.. May
01AAC0: 90 20 68 61 76 65 20 62 65 65 6E 20 73 6F 6D 65 . have been some
01AAD0: 20 6F 74 68 65 72 20 0D 8A 66 6F 72 6D 20 6F 66 other ..form of
01AAE0: 20 64 65 66 69 6E 69 74 69 6F 6E 20 77 68 69 63 definition whic
01AAF0: 68 20 77 65 6E 74 20 77 72 6F 6E 67 2E 0D 0A 0D h went wrong....
01AB00: 0A 0D 0A 42 61 64 20 46 4F 52 20 6C 6F 6F 70 0D ...Bad FOR loop.
01AB10: 0A 0D 0A 09 54 68 65 20 46 4F 52 20 6C 6F 6F 70 ....The FOR loop
01AB20: 20 77 61 73 20 62 61 64 6C 79 20 66 6F 72 6D 65 was badly forme
01AB30: 64 20 69 6E 20 73 6F 6D 65 20 77 61 79 2E 0D 0A d in some way...
01AB40: 0D 0A 0D 0A 6E 65 65 64 20 3A 20 6F 72 20 3D 20 ....need : or =
01AB50: 69 6E 20 63 6F 6E 73 74 61 6E 74 20 64 65 66 69 in constant defi
01AB60: 6E 69 74 69 6F 6E 0D 0A 0D 0A 09 43 6F 6E 73 74 nition.....Const
01AB70: 61 6E 74 2C 20 47 6C 6F 62 61 6C 20 61 6E 64 90 ant, Global and.
01AB80: 20 53 74 61 74 69 63 90 20 64 65 66 69 6E 69 74 Static. definit
01AB90: 69 6F 6E 73 90 20 72 65 71 75 69 72 65 90 20 62 ions. require. b
01ABA0: 6F 74 68 90 20 3A 90 20 61 6E 64 20 3D 20 0D 8A oth. :. and = ..
01ABB0: 62 65 74 77 65 65 6E 20 74 68 65 20 69 64 65 6E between the iden
01ABC0: 74 69 66 69 65 72 20 61 6E 64 20 74 68 65 90 20 tifier and the.
01ABD0: 63 6F 6E 73 74 61 6E 74 90 20 65 78 70 72 65 73 constant. expres
01ABE0: 73 69 6F 6E 2E 20 4F 6E 65 20 6F 72 20 74 68 65 sion. One or the
01ABF0: 20 6F 74 68 65 72 20 0D 8A 69 73 20 6D 69 73 73 other ..is miss
01AC00: 69 6E 67 0D 0A 0D 0A 0D 0A 4D 69 73 73 69 6E 67 ing......Missing
01AC10: 20 24 29 0D 0A 0D 0A 09 41 20 24 29 20 77 61 73 $).....A $) was
01AC20: 20 65 78 70 65 63 74 65 64 20 62 75 74 20 6E 6F expected but no
01AC30: 74 90 20 66 6F 75 6E 64 2E 90 20 43 68 65 63 6B t. found.. Check
01AC40: 20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 6F the number of o
01AC50: 70 65 6E 69 6E 67 20 61 6E 64 20 0D 8A 63 6C 6F pening and ..clo
01AC60: 73 69 6E 67 20 73 65 63 74 69 6F 6E 20 62 72 61 sing section bra
01AC70: 63 6B 65 74 73 20 69 6E 20 74 68 65 20 70 72 6F ckets in the pro
01AC80: 67 72 61 6D 2E 0D 0A 3E 70 61 0D 0A 4D 69 73 73 gram...>pa..Miss
01AC90: 69 6E 67 20 24 28 0D 0A 0D 0A 09 41 20 63 6F 6D ing $(.....A com
01ACA0: 70 6F 75 6E 64 20 73 74 61 74 65 6D 65 6E 74 20 pound statement
01ACB0: 77 61 73 20 6E 65 65 64 65 64 20 62 75 74 90 20 was needed but.
01ACC0: 74 68 65 20 6F 70 65 6E 69 6E 67 20 24 28 20 77 the opening $( w
01ACD0: 61 73 20 6E 6F 74 20 66 6F 75 6E 64 2E 20 0D 8A as not found. ..
01ACE0: 49 6E 20 70 61 72 74 69 63 75 6C 61 72 20 61 6C In particular al
01ACF0: 6C 20 53 57 49 54 43 48 4F 4E 20 73 74 61 74 65 l SWITCHON state
01AD00: 6D 65 6E 74 73 20 6D 75 73 74 20 62 65 20 63 6F ments must be co
01AD10: 6D 70 6F 75 6E 64 2E 0D 0A 0D 0A 0D 0A 4D 69 73 mpound.......Mis
01AD20: 73 69 6E 67 20 29 0D 0A 0D 0A 09 41 20 63 6C 6F sing ).....A clo
01AD30: 73 69 6E 67 20 62 72 61 63 6B 65 74 20 69 6E 90 sing bracket in.
01AD40: 20 61 6E 90 20 65 78 70 72 65 73 73 69 6F 6E 90 an. expression.
01AD50: 20 6F 72 20 70 72 6F 63 65 64 75 72 65 20 63 61 or procedure ca
01AD60: 6C 6C 2F 64 65 66 69 6E 69 74 69 6F 6E 20 0D 8A ll/definition ..
01AD70: 77 61 73 20 6D 69 73 73 69 6E 67 2E 0D 0A 0D 0A was missing.....
01AD80: 0D 0A 53 65 63 74 69 6F 6E 20 74 61 67 20 6D 69 ..Section tag mi
01AD90: 73 6D 61 74 63 68 0D 0A 0D 0A 09 41 20 73 65 63 smatch.....A sec
01ADA0: 74 69 6F 6E 20 62 72 61 63 6B 65 74 20 77 61 73 tion bracket was
01ADB0: 20 74 61 67 67 65 64 20 62 75 74 90 20 74 68 65 tagged but. the
01ADC0: 90 20 74 61 67 20 64 69 64 20 6E 6F 74 20 68 61 . tag did not ha
01ADD0: 76 65 20 61 20 6D 61 74 63 68 69 6E 67 20 0D 8A ve a matching ..
01ADE0: 6F 70 65 6E 69 6E 67 20 73 65 63 74 69 6F 6E 20 opening section
01ADF0: 62 72 61 63 6B 65 74 2E 20 4D 61 79 20 62 65 20 bracket. May be
01AE00: 63 61 75 73 65 64 90 20 62 79 90 20 6F 6D 69 74 caused. by. omit
01AE10: 74 69 6E 67 20 74 68 65 20 73 70 61 63 65 20 61 ting the space a
01AE20: 66 74 65 72 20 61 20 0D 8A 73 65 63 74 69 6F 6E fter a ..section
01AE30: 20 62 72 61 63 6B 65 74 2E 0D 0A 0D 0A 0D 0A 45 bracket.......E
01AE40: 78 70 65 63 74 69 6E 67 20 63 6F 6D 6D 61 6E 64 xpecting command
01AE50: 0D 0A 0D 0A 09 41 20 63 6F 6D 6D 61 6E 64 20 77 .....A command w
01AE60: 61 73 20 65 78 70 65 63 74 65 64 20 62 75 74 20 as expected but
01AE70: 6F 6E 65 90 20 77 61 73 90 20 6E 6F 74 20 66 6F one. was. not fo
01AE80: 75 6E 64 2E 20 54 68 69 73 20 63 61 6E 20 62 65 und. This can be
01AE90: 20 63 61 75 73 65 64 20 0D 8A 62 79 2C 20 66 6F caused ..by, fo
01AEA0: 72 20 65 78 61 6D 70 6C 65 2C 20 6F 6D 69 74 74 r example, omitt
01AEB0: 69 6E 67 20 74 68 65 20 63 6F 6C 6F 6E 20 69 6E ing the colon in
01AEC0: 90 20 61 6E 20 61 73 73 69 67 6E 6D 65 6E 74 20 . an assignment
01AED0: 63 6F 6D 6D 61 6E 64 2C 20 6F 72 20 62 79 20 61 command, or by a
01AEE0: 20 0D 8A 64 65 63 6C 61 72 61 74 69 6F 6E 20 61 ..declaration a
01AEF0: 70 70 65 61 72 69 6E 67 20 61 66 74 65 72 20 61 ppearing after a
01AF00: 20 63 6F 6D 6D 61 6E 64 2E 0D 0A 0D 0A 0D 0A 45 command.......E
01AF10: 78 70 65 63 74 69 6E 67 20 6E 75 6D 62 65 72 0D xpecting number.
01AF20: 0A 0D 0A 09 41 20 6E 75 6D 62 65 72 20 77 61 73 ....A number was
01AF30: 20 65 78 70 65 63 74 65 64 20 62 75 74 20 6E 6F expected but no
01AF40: 74 20 66 6F 75 6E 64 2E 20 55 73 75 61 6C 6C 79 t found. Usually
01AF50: 20 66 6F 6C 6C 6F 77 69 6E 67 20 61 20 23 2E 0D following a #..
01AF60: 0A 0D 0A 0D 0A 45 78 70 65 63 74 69 6E 67 20 2C .....Expecting ,
01AF70: 0D 0A 0D 0A 09 54 68 65 20 63 6F 6D 70 69 6C 65 .....The compile
01AF80: 72 20 77 61 73 20 65 78 70 65 63 74 69 6E 67 90 r was expecting.
01AF90: 20 61 90 20 63 6F 6D 6D 61 90 20 28 2C 29 90 20 a. comma. (,).
01AFA0: 62 75 74 90 20 64 69 64 90 20 6E 6F 74 20 66 69 but. did. not fi
01AFB0: 6E 64 20 6F 6E 65 2E 20 0D 8A 4F 63 63 75 72 73 nd one. ..Occurs
01AFC0: 20 69 6E 20 61 20 63 6F 6E 64 69 74 69 6F 6E 61 in a conditiona
01AFD0: 6C 20 65 78 70 72 65 73 73 69 6F 6E 2E 0D 0A 0D l expression....
01AFE0: 0A 0D 0A 45 4C 53 45 20 65 78 70 65 63 74 65 64 ...ELSE expected
01AFF0: 0D 0A 0D 0A 09 54 68 65 20 45 4C 53 45 20 70 61 .....The ELSE pa
01B000: 72 74 20 69 6E 20 61 90 20 54 45 53 54 90 20 73 rt in a. TEST. s
01B010: 74 61 74 65 6D 65 6E 74 90 20 69 73 90 20 6E 6F tatement. is. no
01B020: 74 90 20 6F 70 74 69 6F 6E 61 6C 20 61 6E 64 20 t. optional and
01B030: 77 61 73 20 6E 6F 74 20 0D 8A 70 72 65 73 65 6E was not ..presen
01B040: 74 20 69 6E 20 74 68 69 73 20 63 61 73 65 2E 0D t in this case..
01B050: 0A 0D 0A 0D 0A 49 4E 54 4F 20 65 78 70 65 63 74 .....INTO expect
01B060: 65 64 0D 0A 0D 0A 09 54 68 65 20 63 6F 6E 74 72 ed.....The contr
01B070: 6F 6C 20 65 78 70 72 65 73 73 69 6F 6E 20 6F 66 ol expression of
01B080: 20 61 90 20 53 57 54 49 43 48 4F 4E 90 20 63 6F a. SWTICHON. co
01B090: 6D 6D 61 6E 64 20 6D 75 73 74 20 62 65 20 66 6F mmand must be fo
01B0A0: 6C 6C 6F 77 65 64 20 62 79 20 0D 8A 74 68 65 20 llowed by ..the
01B0B0: 6B 65 79 77 6F 72 64 20 49 4E 54 4F 2E 20 49 6E keyword INTO. In
01B0C0: 20 74 68 69 73 20 63 61 73 65 20 69 74 20 77 61 this case it wa
01B0D0: 73 20 6E 6F 74 2E 0D 8A 3E 70 61 0D 0A 3A 20 65 s not...>pa..: e
01B0E0: 78 70 65 63 74 65 64 0D 0A 0D 0A 09 41 20 63 6F xpected.....A co
01B0F0: 6C 6F 6E 20 69 73 20 65 78 70 65 63 74 65 64 20 lon is expected
01B100: 61 66 74 65 72 20 61 20 63 61 73 65 20 6C 61 62 after a case lab
01B110: 65 6C 20 6F 72 20 44 45 46 41 55 4C 54 20 62 75 el or DEFAULT bu
01B120: 74 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 20 0D t the compiler .
01B130: 8A 64 69 64 20 6E 6F 74 20 66 69 6E 64 20 6F 6E .did not find on
01B140: 65 2E 0D 0A 0D 0A 0D 0A 45 78 70 65 63 74 69 6E e.......Expectin
01B150: 67 20 69 64 65 6E 74 69 66 69 65 72 0D 0A 0D 0A g identifier....
01B160: 09 54 68 65 20 63 6F 6D 70 69 6C 65 72 20 77 61 .The compiler wa
01B170: 73 20 65 78 70 65 63 74 69 6E 67 20 61 6E 90 20 s expecting an.
01B180: 69 64 65 6E 74 69 66 69 65 72 90 20 65 2E 67 2E identifier. e.g.
01B190: 90 20 61 66 74 65 72 20 4C 45 54 20 62 75 74 20 . after LET but
01B1A0: 64 69 64 20 0D 8A 6E 6F 74 20 66 69 6E 64 20 6F did ..not find o
01B1B0: 6E 65 2E 0D 0A 0D 0A 0D 0A 53 74 72 69 6E 67 20 ne.......String
01B1C0: 74 6F 6F 20 6C 6F 6E 67 0D 0A 0D 0A 09 42 43 50 too long.....BCP
01B1D0: 4C 20 63 6F 6E 73 74 61 6E 74 20 73 74 72 69 6E L constant strin
01B1E0: 67 73 20 63 61 6E 20 6F 6E 6C 79 20 62 65 20 32 gs can only be 2
01B1F0: 35 35 20 63 68 61 72 61 63 74 65 72 73 20 6C 6F 55 characters lo
01B200: 6E 67 2E 0D 0A 0D 0A 0D 0A 42 61 64 20 63 68 61 ng.......Bad cha
01B210: 72 61 63 74 65 72 0D 0A 0D 0A 09 54 68 65 20 63 racter.....The c
01B220: 68 61 72 61 63 74 65 72 20 72 65 61 64 20 77 61 haracter read wa
01B230: 73 90 20 69 6C 6C 65 67 61 6C 90 20 69 6E 90 20 s. illegal. in.
01B240: 74 68 65 90 20 70 72 65 73 65 6E 74 20 63 6F 6E the. present con
01B250: 74 65 78 74 2E 20 65 2E 67 2E 20 69 74 20 0D 8A text. e.g. it ..
01B260: 63 6F 75 6C 64 20 68 61 76 65 20 62 65 65 6E 20 could have been
01B270: 61 20 7B 20 69 6E 73 74 65 61 64 20 6F 66 20 2F a { instead of /
01B280: 2A 0D 0A 0D 0A 0D 0A 42 61 64 20 63 68 61 72 61 *......Bad chara
01B290: 63 74 65 72 20 63 6F 6E 73 74 61 6E 74 0D 0A 0D cter constant...
01B2A0: 0A 09 41 20 63 68 61 72 61 63 74 65 72 90 20 63 ..A character. c
01B2B0: 6F 6E 73 74 61 6E 74 90 20 77 61 73 90 20 62 61 onstant. was. ba
01B2C0: 64 6C 79 90 20 66 6F 72 6D 65 64 2C 90 20 75 73 dly. formed,. us
01B2D0: 75 61 6C 6C 79 90 20 63 61 75 73 65 64 90 20 62 ually. caused. b
01B2E0: 79 90 20 61 20 0D 8A 63 61 72 72 69 61 67 65 20 y. a ..carriage
01B2F0: 72 65 74 75 72 6E 20 66 6F 6C 6C 6F 77 69 6E 67 return following
01B300: 20 61 6E 20 61 73 74 65 72 69 73 6B 2E 0D 0A 0D an asterisk....
01B310: 0A 0D 0A 42 61 64 20 6F 70 74 69 6F 6E 20 6C 69 ...Bad option li
01B320: 6E 65 0D 0A 0D 0A 09 54 68 65 20 6F 70 74 69 6F ne.....The optio
01B330: 6E 73 20 69 6E 20 61 6E 20 6F 70 74 69 6F 6E 20 ns in an option
01B340: 63 6F 6D 6D 61 6E 64 90 20 6D 75 73 74 90 20 62 command. must. b
01B350: 65 20 73 65 70 61 72 61 74 65 64 20 62 79 20 63 e separated by c
01B360: 6F 6D 6D 61 73 20 61 6E 64 20 0D 8A 6D 75 73 74 ommas and ..must
01B370: 20 65 6E 64 20 77 69 74 68 20 61 20 73 65 6D 69 end with a semi
01B380: 2D 63 6F 6C 6F 6E 20 6F 72 20 61 74 20 74 68 65 -colon or at the
01B390: 20 65 6E 64 20 6F 66 20 74 68 65 20 6C 69 6E 65 end of the line
01B3A0: 2E 0D 0A 0D 0A 0D 0A 3F 20 69 73 20 6F 6E 6C 79 .......? is only
01B3B0: 20 61 6C 6C 6F 77 65 64 20 69 6E 20 64 65 66 69 allowed in defi
01B3C0: 6E 69 74 69 6F 6E 73 0D 0A 0D 0A 09 53 65 6C 66 nitions.....Self
01B3D0: 2D 65 78 70 6C 61 6E 61 74 6F 72 79 2E 90 20 54 -explanatory.. T
01B3E0: 68 65 90 20 6F 6E 6C 79 90 20 75 6E 64 65 66 69 he. only. undefi
01B3F0: 6E 65 64 90 20 76 61 6C 75 65 73 90 20 61 6C 6C ned. values. all
01B400: 6F 77 65 64 90 20 61 72 65 90 20 74 68 65 20 0D owed. are. the .
01B410: 8A 69 6E 69 74 69 61 6C 69 73 61 74 69 6F 6E 20 .initialisation
01B420: 76 61 6C 75 65 73 20 6F 66 20 73 69 6D 70 6C 65 values of simple
01B430: 20 76 61 72 69 61 62 6C 65 73 20 69 6E 20 61 20 variables in a
01B440: 4C 45 54 20 63 6F 6D 6D 61 6E 64 2E 20 3F 20 61 LET command. ? a
01B450: 6E 79 77 68 65 72 65 20 0D 8A 65 6C 73 65 20 69 nywhere ..else i
01B460: 73 20 69 6C 6C 65 67 61 6C 2E 0D 0A 3E 70 61 0D s illegal...>pa.
01B470: 0A E2 28 69 69 69 29 20 53 65 6D 61 6E 74 69 63 ..(iii) Semantic
01B480: 20 45 72 72 6F 72 73 E2 0D 0A 0D 0A 0D 0A 09 54 Errors........T
01B490: 68 65 20 72 65 73 74 20 6F 66 20 74 68 65 90 20 he rest of the.
01B4A0: 65 72 72 6F 72 73 90 20 61 72 65 90 20 73 65 6D errors. are. sem
01B4B0: 61 6E 74 69 63 90 20 65 72 72 6F 72 73 90 20 77 antic. errors. w
01B4C0: 68 69 63 68 20 6F 63 63 75 72 20 64 75 72 69 6E hich occur durin
01B4D0: 67 20 0D 8A 70 68 61 73 65 20 74 77 6F 20 6F 66 g ..phase two of
01B4E0: 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 2E 90 20 the compiler..
01B4F0: 54 68 65 73 65 90 20 61 72 65 90 20 75 73 75 61 These. are. usua
01B500: 6C 6C 79 90 20 64 75 65 90 20 74 6F 20 74 68 65 lly. due. to the
01B510: 20 75 73 65 20 6F 66 20 61 6E 20 0D 8A 69 6E 76 use of an ..inv
01B520: 61 6C 69 64 20 69 64 65 6E 74 69 66 69 65 72 20 alid identifier
01B530: 6E 61 6D 65 20 6F 72 20 61 20 62 61 64 6C 79 20 name or a badly
01B540: 63 6F 6E 73 74 72 75 63 74 65 64 20 6C 6F 6F 70 constructed loop
01B550: 2E 0D 0A 0D 0A 0D 0A 45 78 70 72 65 73 73 69 6F .......Expressio
01B560: 6E 2F 69 64 20 6D 69 73 6D 61 74 63 68 0D 0A 0D n/id mismatch...
01B570: 0A 09 54 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 ..The number of
01B580: 6C 65 66 74 20 61 6E 64 20 72 69 67 68 74 90 20 left and right.
01B590: 68 61 6E 64 90 20 73 69 64 65 73 20 69 6E 20 61 hand. sides in a
01B5A0: 20 6D 75 6C 74 69 70 6C 65 20 61 73 73 69 67 6E multiple assign
01B5B0: 6D 65 6E 74 20 0D 8A 6F 72 20 64 65 63 6C 61 72 ment ..or declar
01B5C0: 61 74 69 6F 6E 20 77 61 73 20 6E 6F 74 20 65 71 ation was not eq
01B5D0: 75 61 6C 2E 0D 0A 0D 0A 0D 0A 49 6E 76 61 6C 69 ual.......Invali
01B5E0: 64 20 61 73 73 69 67 6E 6D 65 6E 74 0D 0A 0D 0A d assignment....
01B5F0: 09 59 6F 75 20 68 61 76 65 20 61 74 74 65 6D 70 .You have attemp
01B600: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
01B610: 17 00 00 00 02 09 50 E5 17 00 C1 02 00 00 00 02 ......P.........
01B620: 17 00 C2 02 00 00 00 02 17 00 C3 02 00 00 00 02 ................
01B630: 17 00 C4 02 00 00 00 02 17 00 C5 02 00 00 00 02 ................
01B640: 17 00 C6 02 00 00 00 02 17 00 C7 02 00 00 00 02 ................
01B650: 17 00 C8 02 00 00 00 02 17 00 C9 02 00 00 00 02 ................
01B660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B6A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B6B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B6C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B6D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B6E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B6F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B700: 74 65 64 20 74 6F 20 61 73 73 69 67 6E 20 74 6F ted to assign to
01B710: 20 73 6F 6D 65 74 68 69 6E 67 20 77 68 69 63 68 something which
01B720: 20 69 73 20 6E 6F 74 20 61 73 73 69 67 6E 61 62 is not assignab
01B730: 6C 65 2E 20 0D 8A 65 2E 67 2E 20 61 20 63 6F 6E le. ..e.g. a con
01B740: 73 74 61 6E 74 20 6F 72 20 70 72 6F 63 65 64 75 stant or procedu
01B750: 72 65 2E 0D 0A 0D 0A 0D 0A 52 45 53 55 4C 54 49 re.......RESULTI
01B760: 53 20 6F 75 74 73 69 64 65 20 61 20 56 41 4C 4F S outside a VALO
01B770: 46 0D 0A 0D 0A 09 41 20 52 45 53 55 4C 54 49 53 F.....A RESULTIS
01B780: 20 63 6F 6D 6D 61 6E 64 20 77 61 73 20 66 6F 75 command was fou
01B790: 6E 64 20 6F 75 74 73 69 64 65 20 61 20 56 41 4C nd outside a VAL
01B7A0: 4F 46 20 62 6C 6F 63 6B 2E 0D 0A 0D 0A 0D 0A 4C OF block.......L
01B7B0: 4F 4F 50 20 66 6F 75 6E 64 20 6F 75 74 73 69 64 OOP found outsid
01B7C0: 65 20 6C 6F 6F 70 0D 0A 0D 0A 09 41 20 4C 4F 4F e loop.....A LOO
01B7D0: 50 20 63 6F 6D 6D 61 6E 64 20 69 73 20 6F 6E 6C P command is onl
01B7E0: 79 20 6C 65 67 61 6C 20 69 6E 73 69 64 65 20 6F y legal inside o
01B7F0: 6E 65 20 6F 66 20 74 68 65 20 6C 6F 6F 70 69 6E ne of the loopin
01B800: 67 20 63 6F 6E 73 74 72 75 63 74 73 2E 0D 0A 0D g constructs....
01B810: 0A 0D 0A 42 52 45 41 4B 20 66 6F 75 6E 64 20 6F ...BREAK found o
01B820: 75 74 73 69 64 65 20 6C 6F 6F 70 0D 0A 0D 0A 09 utside loop.....
01B830: 41 20 42 52 45 41 4B 20 63 6F 6D 6D 61 6E 64 20 A BREAK command
01B840: 69 73 20 6F 6E 6C 79 20 6C 65 67 61 6C 20 69 6E is only legal in
01B850: 73 69 64 65 20 6F 6E 65 20 6F 66 20 74 68 65 20 side one of the
01B860: 6C 6F 6F 70 69 6E 67 20 63 6F 6E 73 74 72 75 63 looping construc
01B870: 74 73 2E 0D 0A 0D 0A 0D 0A 52 45 54 55 52 4E 20 ts.......RETURN
01B880: 66 6F 75 6E 64 20 6F 75 74 73 69 64 65 20 50 52 found outside PR
01B890: 4F 43 2F 46 55 4E 43 0D 0A 0D 0A 09 41 20 52 45 OC/FUNC.....A RE
01B8A0: 54 55 52 4E 20 63 6F 6D 6D 61 6E 64 20 69 73 90 TURN command is.
01B8B0: 20 6F 6E 6C 79 90 20 6C 65 67 61 6C 90 20 77 69 only. legal. wi
01B8C0: 74 68 69 6E 90 20 61 90 20 70 72 6F 63 65 64 75 thin. a. procedu
01B8D0: 72 65 20 6F 72 20 66 75 6E 63 74 69 6F 6E 20 0D re or function .
01B8E0: 8A 62 6F 64 79 2E 0D 0A 0D 0A 0D 0A 45 4E 44 43 .body.......ENDC
01B8F0: 41 53 45 20 6F 75 74 73 69 64 65 20 61 20 53 57 ASE outside a SW
01B900: 49 54 43 48 4F 4E 0D 0A 0D 0A 09 41 6E 20 45 4E ITCHON.....An EN
01B910: 44 43 41 53 45 20 73 74 61 74 65 6D 65 6E 74 20 DCASE statement
01B920: 77 61 73 90 20 66 6F 75 6E 64 90 20 6F 75 74 73 was. found. outs
01B930: 69 64 65 90 20 74 68 65 90 20 62 6F 64 79 90 20 ide. the. body.
01B940: 6F 66 20 61 20 53 57 49 54 43 48 4F 4E 20 0D 8A of a SWITCHON ..
01B950: 63 6F 6D 6D 61 6E 64 2E 0D 0A 0D 0A 0D 0A 56 41 command.......VA
01B960: 4C 4F 46 20 6D 75 73 74 20 63 6F 6E 74 61 69 6E LOF must contain
01B970: 20 52 45 53 55 4C 54 49 53 0D 0A 0D 0A 09 41 20 RESULTIS.....A
01B980: 56 41 4C 4F 46 20 65 78 70 72 65 73 73 69 6F 6E VALOF expression
01B990: 20 6D 75 73 74 20 63 6F 6E 74 61 69 6E 20 61 74 must contain at
01B9A0: 20 6C 65 61 73 74 20 6F 6E 65 20 52 45 53 55 4C least one RESUL
01B9B0: 54 49 53 20 63 6F 6D 6D 61 6E 64 0D 0A 3E 70 61 TIS command..>pa
01B9C0: 0D 0A 49 6E 76 61 6C 69 64 20 61 70 70 6C 69 63 ..Invalid applic
01B9D0: 61 74 69 6F 6E 20 6F 66 20 4C 56 0D 0A 0D 0A 09 ation of LV.....
01B9E0: 54 68 65 20 4C 56 20 6F 72 20 40 20 6F 70 65 72 The LV or @ oper
01B9F0: 61 74 6F 72 20 77 61 73 90 20 75 73 65 64 90 20 ator was. used.
01BA00: 69 6E 90 20 61 6E 20 69 6E 63 6F 72 72 65 63 74 in. an incorrect
01BA10: 20 63 6F 6E 74 65 78 74 20 69 2E 65 2E 20 6F 6E context i.e. on
01BA20: 20 61 20 0D 8A 63 6F 6E 73 74 61 6E 74 2E 20 4C a ..constant. L
01BA30: 56 20 69 73 20 27 6C 65 66 74 20 76 61 6C 75 65 V is 'left value
01BA40: 27 20 61 6E 64 20 6D 65 61 6E 73 20 74 68 65 20 ' and means the
01BA50: 65 76 61 6C 75 61 74 69 6F 6E 20 6F 66 20 61 6E evaluation of an
01BA60: 20 65 78 70 72 65 73 73 69 6F 6E 20 0D 8A 74 6F expression ..to
01BA70: 20 6F 62 74 61 69 6E 20 61 6E 20 61 64 64 72 65 obtain an addre
01BA80: 73 73 2E 0D 0A 0D 0A 0D 0A 44 79 6E 61 6D 69 63 ss.......Dynamic
01BA90: 20 66 72 65 65 20 76 61 72 69 61 62 6C 65 20 75 free variable u
01BAA0: 73 65 64 0D 0A 0D 0A 09 41 20 76 61 72 69 61 62 sed.....A variab
01BAB0: 6C 65 20 77 61 73 90 20 75 73 65 64 90 20 69 6E le was. used. in
01BAC0: 90 20 61 6E 90 20 65 6D 62 65 64 64 65 64 90 20 . an. embedded.
01BAD0: 70 72 6F 63 65 64 75 72 65 90 20 77 68 69 63 68 procedure. which
01BAE0: 90 20 68 61 64 20 62 65 65 6E 20 0D 8A 64 65 63 . had been ..dec
01BAF0: 6C 61 72 65 64 20 69 6E 20 61 6E 20 6F 75 74 65 lared in an oute
01BB00: 72 20 70 72 6F 63 65 64 75 72 65 2E 0D 0A 0D 0A r procedure.....
01BB10: 0D 0A 43 41 53 45 2F 44 45 46 41 55 4C 54 20 66 ..CASE/DEFAULT f
01BB20: 6F 75 6E 64 20 6F 75 74 73 69 64 65 20 53 57 49 ound outside SWI
01BB30: 54 43 48 4F 4E 0D 0A 0D 0A 09 43 41 53 45 20 6F TCHON.....CASE o
01BB40: 72 90 20 44 45 46 41 55 4C 54 90 20 73 74 61 74 r. DEFAULT. stat
01BB50: 65 6D 65 6E 74 73 90 20 61 72 65 90 20 6F 6E 6C ements. are. onl
01BB60: 79 90 20 76 61 6C 69 64 90 20 69 6E 73 69 64 65 y. valid. inside
01BB70: 90 20 61 20 53 57 49 54 43 48 4F 4E 20 0D 8A 73 . a SWITCHON ..s
01BB80: 74 61 74 65 6D 65 6E 74 2E 0D 0A 0D 0A 0D 0A 55 tatement.......U
01BB90: 6E 64 65 66 69 6E 65 64 20 69 64 65 6E 74 69 66 ndefined identif
01BBA0: 69 65 72 0D 0A 0D 0A 09 41 20 76 61 72 69 61 62 ier.....A variab
01BBB0: 6C 65 20 77 61 73 20 75 73 65 64 20 77 68 69 63 le was used whic
01BBC0: 68 20 68 61 64 20 6E 6F 74 20 62 65 65 6E 20 64 h had not been d
01BBD0: 65 66 69 6E 65 64 20 6F 72 20 77 61 73 20 6E 6F efined or was no
01BBE0: 74 20 69 6E 20 73 63 6F 70 65 20 0D 8A 77 68 65 t in scope ..whe
01BBF0: 6E 20 69 74 20 77 61 73 20 75 73 65 64 2E 0D 0A n it was used...
01BC00: 0D 0A 0D 0A 4C 61 62 65 6C 73 20 6E 65 65 64 20 ....Labels need
01BC10: 61 20 67 6C 6F 62 61 6C 0D 0A 0D 0A 09 41 20 6C a global.....A l
01BC20: 61 62 65 6C 20 77 61 73 20 64 65 66 69 6E 65 64 abel was defined
01BC30: 20 77 68 65 6E 20 69 6E 20 74 68 65 90 20 73 63 when in the. sc
01BC40: 6F 70 65 90 20 6F 66 20 61 20 6C 6F 63 61 6C 20 ope. of a local
01BC50: 76 61 72 69 61 62 6C 65 20 6F 66 20 74 68 65 20 variable of the
01BC60: 0D 8A 73 61 6D 65 20 6E 61 6D 65 2E 20 41 73 20 ..same name. As
01BC70: 74 68 65 20 76 61 72 69 61 62 6C 65 90 20 77 69 the variable. wi
01BC80: 6C 6C 90 20 62 65 90 20 69 6E 69 74 69 61 6C 69 ll. be. initiali
01BC90: 73 65 64 90 20 74 6F 20 74 68 65 20 76 61 6C 75 sed. to the valu
01BCA0: 65 20 6F 66 20 74 68 65 20 0D 8A 6C 61 62 65 6C e of the ..label
01BCB0: 2C 20 69 74 20 6D 75 73 74 20 62 65 20 61 20 47 , it must be a G
01BCC0: 4C 4F 42 41 4C 20 6F 72 20 53 54 41 54 49 43 2E LOBAL or STATIC.
01BCD0: 90 20 49 66 20 6E 6F 20 76 61 72 69 61 62 6C 65 . If no variable
01BCE0: 20 6F 66 20 74 68 65 20 73 61 6D 65 20 6E 61 6D of the same nam
01BCF0: 65 20 0D 8A 69 73 20 69 6E 20 73 63 6F 70 65 20 e ..is in scope
01BD00: 74 68 65 6E 20 6F 6E 65 20 77 69 6C 6C 20 62 65 then one will be
01BD10: 20 63 72 65 61 74 65 64 2E 0D 0A 0D 0A 0D 0A 4E created.......N
01BD20: 65 65 64 20 63 6F 6E 73 74 61 6E 74 20 65 78 70 eed constant exp
01BD30: 72 65 73 73 69 6F 6E 0D 0A 0D 0A 09 41 20 63 6F ression.....A co
01BD40: 6E 73 74 61 6E 74 20 65 78 70 72 65 73 73 69 6F nstant expressio
01BD50: 6E 90 20 77 61 73 90 20 72 65 71 75 69 72 65 64 n. was. required
01BD60: 90 20 62 75 74 90 20 6E 6F 74 90 20 66 6F 75 6E . but. not. foun
01BD70: 64 2E 20 45 78 61 6D 70 6C 65 73 20 6F 66 20 0D d. Examples of .
01BD80: 8A 63 6F 6E 73 74 61 6E 74 73 20 62 65 69 6E 67 .constants being
01BD90: 20 72 65 71 75 69 72 65 64 20 61 72 65 90 20 74 required are. t
01BDA0: 68 65 90 20 49 4E 4C 49 4E 45 90 20 73 74 61 74 he. INLINE. stat
01BDB0: 65 6D 65 6E 74 2C 20 64 65 63 6C 61 72 61 74 69 ement, declarati
01BDC0: 6F 6E 73 20 61 6E 64 20 0D 8A 43 41 53 45 20 6C ons and ..CASE l
01BDD0: 61 62 65 6C 73 2E 0D 0A 0D 0A 0D 0A 28 69 76 29 abels.......(iv)
01BDE0: 20 49 6E 74 65 72 6E 61 6C 20 63 6F 6D 70 69 6C Internal compil
01BDF0: 65 72 20 65 72 72 6F 72 73 0D 0A 20 20 20 20 20 er errors..
01BE00: 20 20 20 0D 0A 09 54 68 65 72 65 20 69 73 20 61 ...There is a
01BE10: 20 66 6F 75 72 74 68 20 74 79 70 65 20 6F 66 90 fourth type of.
01BE20: 20 65 72 72 6F 72 90 20 62 75 74 90 20 79 6F 75 error. but. you
01BE30: 20 73 68 6F 75 6C 64 20 6E 65 76 65 72 20 73 65 should never se
01BE40: 65 20 74 68 65 73 65 2E 20 0D 8A 54 68 65 73 65 e these. ..These
01BE50: 20 61 72 65 20 69 6E 74 65 72 6E 61 6C 20 63 6F are internal co
01BE60: 6D 70 69 6C 65 72 20 65 72 72 6F 72 73 90 20 61 mpiler errors. a
01BE70: 6E 64 90 20 69 6E 64 69 63 61 74 65 20 70 6F 73 nd. indicate pos
01BE80: 73 69 62 6C 65 20 62 75 67 73 20 69 6E 20 74 68 sible bugs in th
01BE90: 65 20 0D 8A 63 6F 6D 70 69 6C 65 72 2E 0D 0A 09 e ..compiler....
01BEA0: 50 6C 65 61 73 65 20 72 65 70 6F 72 74 20 61 6E Please report an
01BEB0: 79 20 69 6E 63 69 64 65 6E 63 65 20 6F 66 20 6F y incidence of o
01BEC0: 6E 65 20 6F 66 20 74 68 65 73 65 20 65 72 72 6F ne of these erro
01BED0: 72 73 20 74 6F 20 41 72 6E 6F 72 2E 0D 0A 0D 0A rs to Arnor.....
01BEE0: 20 20 20 20 20 20 20 20 45 72 72 6F 72 20 69 6E Error in
01BEF0: 20 74 72 61 6E 73 6C 61 74 69 6F 6E 20 6E 6F 64 translation nod
01BF00: 65 0D 0A 20 20 20 20 20 20 20 20 55 6E 65 78 70 e.. Unexp
01BF10: 65 63 74 65 64 20 6E 6F 64 65 20 69 6E 20 65 78 ected node in ex
01BF20: 70 72 65 73 73 69 6F 6E 0D 0A 20 20 20 20 20 20 pression..
01BF30: 20 20 44 65 63 6C 61 72 61 74 69 6F 6E 20 65 72 Declaration er
01BF40: 72 6F 72 0D 0A 1A 0D 0A 20 20 20 20 20 20 20 20 ror.....
01BF50: 55 6E 65 78 70 65 63 74 65 64 20 6E 6F 64 65 20 Unexpected node
01BF60: 69 6E 20 65 78 70 72 65 73 73 69 6F 6E 0D 0A 20 in expression..
01BF70: 20 20 20 20 20 20 20 44 65 63 6C 61 72 61 74 69 Declarati
01BF80: 8A 63 6F 6E 73 74 61 6E 74 73 20 62 65 69 6E 67 .constants being
01BF90: 20 72 65 71 75 69 72 65 64 20 61 72 65 90 20 74 required are. t
01BFA0: 68 65 90 20 49 4E 4C 49 4E 45 90 20 73 74 61 74 he. INLINE. stat
01BFB0: 65 6D 65 6E 74 2C 20 64 65 63 6C 61 72 61 74 69 ement, declarati
01BFC0: 6F 6E 73 20 61 6E 64 20 0D 8A 43 41 53 45 20 6C ons and ..CASE l
01BFD0: 61 62 65 6C 73 2E 0D 0A 0D 0A 0D 0A 28 69 76 29 abels.......(iv)
01BFE0: 20 49 6E 74 65 72 6E 61 6C 20 63 6F 6D 70 69 6C Internal compil
01BFF0: 65 72 20 65 72 72 6F 72 73 0D 0A 20 20 20 20 20 er errors..
01C000: 20 20 20 0D 0A 09 54 68 65 72 65 20 69 73 20 61 ...There is a
01C010: 20 66 6F 75 72 74 68 20 74 79 70 65 20 6F 66 90 fourth type of.
01C020: 20 65 72 72 6F 72 90 20 62 75 74 90 20 79 6F 75 error. but. you
01C030: 20 73 68 6F 75 6C 64 20 6E 65 76 65 72 20 73 65 should never se
01C040: 65 20 74 68 65 73 65 2E 20 0D 8A 54 68 65 73 65 e these. ..These
01C050: 20 61 72 65 20 69 6E 74 65 72 6E 61 6C 20 63 6F are internal co
01C060: 6D 70 69 6C 65 72 20 65 72 72 6F 72 73 90 20 61 mpiler errors. a
01C070: 6E 64 90 20 69 6E 64 69 63 61 74 65 20 70 6F 73 nd. indicate pos
01C080: 73 69 62 6C 65 20 62 75 67 73 20 69 6E 20 74 68 sible bugs in th
01C090: 65 20 0D 8A 63 6F 6D 70 69 6C 65 72 2E 0D 0A 09 e ..compiler....
01C0A0: 50 6C 65 61 73 65 20 72 65 70 6F 72 74 20 61 6E Please report an
01C0B0: 79 20 69 6E 63 69 64 65 6E 63 65 20 6F 66 20 6F y incidence of o
01C0C0: 6E 65 20 6F 66 20 74 68 65 73 65 20 65 72 72 6F ne of these erro
01C0D0: 72 73 20 74 6F 20 41 72 6E 6F 72 2E 0D 0A 0D 0A rs to Arnor.....
01C0E0: 20 20 20 20 20 20 20 20 45 72 72 6F 72 20 69 6E Error in
01C0F0: 20 74 72 61 6E 73 6C 61 74 69 6F 6E 20 6E 6F 64 translation nod
01C100: 6F 70 74 69 6F 6E 20 62 2D 0D 0A 67 65 74 20 22 option b-..get "
01C110: 63 6C 69 62 68 64 72 22 0D 0A 0D 0A 2F 2A 20 41 clibhdr"..../* A
01C120: 20 73 69 6D 70 6C 65 20 66 75 6C 6C 20 73 63 72 simple full scr
01C130: 65 65 6E 20 65 64 69 74 6F 72 20 2A 2F 0D 0A 2F een editor */../
01C140: 2A 20 43 50 2F 4D 20 76 65 72 73 69 6F 6E 20 66 * CP/M version f
01C150: 6F 72 20 43 50 2F 4D 20 32 2E 32 20 61 6E 64 20 or CP/M 2.2 and
01C160: 43 50 2F 4D 20 50 6C 75 73 20 2A 2F 0D 0A 2F 2F CP/M Plus */..//
01C170: 20 6D 6F 64 69 66 69 65 64 20 30 32 2F 31 32 2F modified 02/12/
01C180: 31 39 38 36 0D 0A 0D 0A 4D 41 4E 49 46 45 53 54 1986....MANIFEST
01C190: 20 24 28 20 69 6E 73 20 3D 20 54 52 55 45 20 3B $( ins = TRUE ;
01C1A0: 20 6F 76 65 72 20 3D 20 46 41 4C 53 45 20 3B 20 over = FALSE ;
01C1B0: 63 75 72 73 6C 65 66 74 20 3D 20 23 78 46 32 20 cursleft = #xF2
01C1C0: 3B 20 63 75 72 73 72 69 67 68 74 20 3D 20 23 78 ; cursright = #x
01C1D0: 46 33 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 F3..
01C1E0: 63 75 72 73 75 70 20 3D 20 23 78 46 30 20 3B 20 cursup = #xF0 ;
01C1F0: 63 75 72 73 64 6F 77 6E 20 3D 20 23 78 46 31 20 cursdown = #xF1
01C200: 3B 20 65 73 63 61 70 65 20 3D 20 23 78 46 43 20 ; escape = #xFC
01C210: 3B 20 69 67 6E 6F 72 65 20 3D 20 23 78 45 46 0D ; ignore = #xEF.
01C220: 0A 20 20 20 20 20 20 20 20 20 20 20 20 73 74 6F . sto
01C230: 70 20 3D 20 33 0D 0A 20 20 20 20 20 20 20 20 20 p = 3..
01C240: 20 20 20 73 63 75 72 73 75 70 20 3D 20 23 78 46 scursup = #xF
01C250: 34 20 3B 20 73 63 75 72 73 64 6F 77 6E 20 3D 20 4 ; scursdown =
01C260: 23 78 46 35 20 3B 20 73 63 75 72 73 6C 65 66 74 #xF5 ; scursleft
01C270: 20 3D 20 23 78 46 36 0D 0A 20 20 20 20 20 20 20 = #xF6..
01C280: 20 20 20 20 20 73 63 75 72 73 72 69 67 68 74 20 scursright
01C290: 3D 20 23 78 46 37 0D 0A 20 20 20 20 20 20 20 20 = #xF7..
01C2A0: 20 20 20 20 63 63 75 72 73 75 70 20 3D 20 23 78 ccursup = #x
01C2B0: 46 38 20 3B 20 63 63 75 72 73 64 6F 77 6E 20 3D F8 ; ccursdown =
01C2C0: 20 23 78 46 39 0D 0A 20 20 20 20 20 20 20 20 20 #xF9..
01C2D0: 20 20 20 63 63 75 72 73 6C 65 66 74 20 3D 20 23 ccursleft = #
01C2E0: 78 46 41 20 3B 20 63 63 75 72 73 72 69 67 68 74 xFA ; ccursright
01C2F0: 20 3D 20 23 78 46 42 0D 0A 20 20 20 20 20 20 20 = #xFB..
01C300: 20 20 20 20 20 63 6F 70 65 6E 73 71 20 3D 20 32 copensq = 2
01C310: 37 20 3B 20 63 63 6C 6F 73 65 73 71 20 3D 20 32 7 ; cclosesq = 2
01C320: 39 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 6D 9.. m
01C330: 61 78 73 63 72 68 65 69 67 68 74 20 3D 20 33 31 axscrheight = 31
01C340: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 6D 61 .. ma
01C350: 78 63 68 72 20 3D 20 32 32 39 39 38 20 20 20 20 xchr = 22998
01C360: 20 2F 2F 20 63 61 6E 20 62 65 20 69 6E 63 72 65 // can be incre
01C370: 61 73 65 64 20 66 6F 72 20 43 50 2F 4D 20 50 6C ased for CP/M Pl
01C380: 75 73 20 6F 6E 6C 79 0D 0A 20 20 20 20 20 20 20 us only..
01C390: 20 20 20 24 29 0D 0A 0D 0A 0D 0A 2F 2A 0D 0A 20 $)....../*..
01C3A0: 20 20 74 65 78 74 65 6E 64 20 70 6F 69 6E 74 73 textend points
01C3B0: 20 74 6F 20 74 68 65 20 6C 61 73 74 20 63 68 61 to the last cha
01C3C0: 72 61 63 74 65 72 20 69 6E 20 74 68 65 20 66 69 racter in the fi
01C3D0: 6C 65 20 77 68 69 63 68 20 77 69 6C 6C 20 61 6C le which will al
01C3E0: 77 61 79 73 20 62 65 20 61 0D 0A 20 20 20 63 68 ways be a.. ch
01C3F0: 61 72 61 63 74 65 72 20 31 33 2E 20 74 65 78 74 aracter 13. text
01C400: 70 74 72 20 70 6F 69 6E 74 73 20 74 6F 20 74 68 ptr points to th
01C410: 65 20 66 69 72 73 74 20 63 68 61 72 61 63 74 65 e first characte
01C420: 72 20 6F 66 20 74 68 65 20 63 75 72 72 65 6E 74 r of the current
01C430: 20 6C 69 6E 65 2E 0D 0A 20 20 20 74 65 78 74 73 line... texts
01C440: 74 61 72 74 20 70 6F 69 6E 74 73 20 74 6F 20 74 tart points to t
01C450: 68 65 20 73 74 61 72 74 20 6F 66 20 74 68 65 20 he start of the
01C460: 74 65 78 74 20 73 70 61 63 65 2E 0D 0A 2A 2F 0D text space...*/.
01C470: 0A 0D 0A 53 54 41 54 49 43 20 24 28 20 69 6E 73 ...STATIC $( ins
01C480: 65 72 74 20 3D 20 69 6E 73 20 3B 20 74 65 78 74 ert = ins ; text
01C490: 65 6E 64 20 3D 20 30 20 3B 20 74 65 78 74 70 74 end = 0 ; textpt
01C4A0: 72 20 3D 20 30 20 3B 20 74 65 78 74 73 74 61 72 r = 0 ; textstar
01C4B0: 74 20 3D 20 30 0D 0A 20 20 20 20 20 20 20 20 20 t = 0..
01C4C0: 20 78 20 3D 20 31 20 3B 20 79 20 3D 20 31 20 3B x = 1 ; y = 1 ;
01C4D0: 20 70 72 65 76 20 3D 20 30 20 3B 20 66 69 6C 65 prev = 0 ; file
01C4E0: 20 3D 20 30 20 3B 20 62 75 66 66 70 72 69 6E 74 = 0 ; buffprint
01C4F0: 20 3D 20 46 41 4C 53 45 0D 0A 20 20 20 20 20 20 = FALSE..
01C500: 20 20 20 20 6C 69 6E 65 6E 75 6D 62 65 72 20 3D linenumber =
01C510: 20 31 20 20 3B 20 73 63 72 68 65 69 67 68 74 3D 1 ; scrheight=
01C520: 30 20 20 3B 20 76 65 72 3D 30 20 24 29 0D 0A 0D 0 ; ver=0 $)...
01C530: 0A 47 4C 4F 42 41 4C 20 24 28 20 65 72 72 76 65 .GLOBAL $( errve
01C540: 63 20 3A 20 30 20 3B 20 65 72 72 6C 61 62 20 3A c : 0 ; errlab :
01C550: 20 31 20 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 62 1 $)......LET b
01C560: 79 74 65 6D 6F 76 65 28 73 6F 75 72 63 65 2C 64 ytemove(source,d
01C570: 65 73 74 2C 6E 75 6D 62 65 72 29 20 42 45 0D 0A est,number) BE..
01C580: 0D 0A 24 28 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 ..$(.. inline 2
01C590: 32 31 2C 31 30 32 2C 31 32 33 20 20 20 20 20 20 21,102,123
01C5A0: 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 32 33 29 // ld h,(ix+123)
01C5B0: 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 32 31 2C 31 .. inline 221,1
01C5C0: 31 30 2C 31 32 32 20 20 20 20 20 20 2F 2F 20 6C 10,122 // l
01C5D0: 64 20 6C 2C 28 69 78 2B 31 32 32 29 0D 0A 20 20 d l,(ix+122)..
01C5E0: 69 6E 6C 69 6E 65 20 32 32 31 2C 38 36 2C 31 32 inline 221,86,12
01C5F0: 35 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 64 2C 5 // ld d,
01C600: 28 69 78 2B 31 32 35 29 0D 0A 20 20 69 6E 6C 69 (ix+125).. inli
01C610: 6E 65 20 32 32 31 2C 39 34 2C 31 32 34 20 20 20 ne 221,94,124
01C620: 20 20 20 20 2F 2F 20 6C 64 20 65 2C 28 69 78 2B // ld e,(ix+
01C630: 31 32 34 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 124).. inline 2
01C640: 32 31 2C 37 30 2C 31 32 37 20 20 20 20 20 20 20 21,70,127
01C650: 2F 2F 20 6C 64 20 62 2C 28 69 78 2B 31 32 37 29 // ld b,(ix+127)
01C660: 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 32 31 2C 37 .. inline 221,7
01C670: 38 2C 31 32 36 20 20 20 20 20 20 20 2F 2F 20 6C 8,126 // l
01C680: 64 20 63 2C 28 69 78 2B 31 32 36 29 0D 0A 20 20 d c,(ix+126)..
01C690: 69 6E 6C 69 6E 65 20 31 36 37 20 20 20 20 20 20 inline 167
01C6A0: 20 20 20 20 20 20 20 20 2F 2F 20 61 6E 64 20 61 // and a
01C6B0: 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 33 37 2C 38 .. inline 237,8
01C6C0: 32 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 73 2 // s
01C6D0: 62 63 20 68 6C 2C 64 65 0D 0A 20 20 69 6E 6C 69 bc hl,de.. inli
01C6E0: 6E 65 20 32 35 20 20 20 20 20 20 20 20 20 20 20 ne 25
01C6F0: 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 64 65 // add hl,de
01C700: 0D 0A 20 20 69 6E 6C 69 6E 65 20 35 36 2C 34 20 .. inline 56,4
01C710: 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 6A // j
01C720: 72 20 63 2C 2B 34 0D 0A 20 20 69 6E 6C 69 6E 65 r c,+4.. inline
01C730: 20 32 33 37 2C 31 37 36 20 20 20 20 20 20 20 20 237,176
01C740: 20 20 2F 2F 20 6C 64 69 72 0D 0A 20 20 69 6E 6C // ldir.. inl
01C750: 69 6E 65 20 32 34 2C 38 20 20 20 20 20 20 20 20 ine 24,8
01C760: 20 20 20 20 20 2F 2F 20 6A 72 20 2B 38 0D 0A 20 // jr +8..
01C770: 20 69 6E 6C 69 6E 65 20 31 31 20 20 20 20 20 20 inline 11
01C780: 20 20 20 20 20 20 20 20 20 2F 2F 20 64 65 63 20 // dec
01C790: 62 63 0D 0A 20 20 69 6E 6C 69 6E 65 20 39 20 20 bc.. inline 9
01C7A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F //
01C7B0: 20 61 64 64 20 68 6C 2C 62 63 0D 0A 20 20 69 6E add hl,bc.. in
01C7C0: 6C 69 6E 65 20 32 33 35 20 20 20 20 20 20 20 20 line 235
01C7D0: 20 20 20 20 20 20 2F 2F 20 65 78 20 64 65 2C 68 // ex de,h
01C7E0: 6C 0D 0A 20 20 69 6E 6C 69 6E 65 20 39 20 20 20 l.. inline 9
01C7F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 //
01C800: 61 64 64 20 68 6C 2C 62 63 0D 0A 20 20 69 6E 6C add hl,bc.. inl
01C810: 69 6E 65 20 32 33 35 20 20 20 20 20 20 20 20 20 ine 235
01C820: 20 20 20 20 20 2F 2F 20 65 78 20 64 65 2C 68 6C // ex de,hl
01C830: 0D 0A 20 20 69 6E 6C 69 6E 65 20 33 20 20 20 20 .. inline 3
01C840: 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 69 // i
01C850: 6E 63 20 62 63 0D 0A 20 20 69 6E 6C 69 6E 65 20 nc bc.. inline
01C860: 32 33 37 2C 31 38 34 20 20 20 20 20 20 20 20 20 237,184
01C870: 20 2F 2F 20 6C 64 64 72 0D 0A 24 29 0D 0A 0D 0A // lddr..$)....
01C880: 4C 45 54 20 63 61 6C 6C 28 61 64 64 72 2C 61 66 LET call(addr,af
01C890: 2C 62 63 2C 64 65 2C 68 6C 2C 69 78 29 20 42 45 ,bc,de,hl,ix) BE
01C8A0: 0D 0A 0D 0A 24 28 20 20 4C 45 54 20 73 61 76 65 ....$( LET save
01C8B0: 33 20 3D 20 56 45 43 20 31 0D 0A 20 20 20 20 62 3 = VEC 1.. b
01C8C0: 79 74 65 6D 6F 76 65 28 23 78 39 30 2C 20 73 61 ytemove(#x90, sa
01C8D0: 76 65 33 2A 32 2C 20 33 29 0D 0A 20 20 20 20 30 ve3*2, 3).. 0
01C8E0: 25 23 78 39 30 20 3A 3D 20 23 78 43 33 0D 0A 20 %#x90 := #xC3..
01C8F0: 20 20 20 30 25 23 78 39 31 20 3A 3D 20 61 64 64 0%#x91 := add
01C900: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
01C910: 18 00 00 00 02 09 50 E5 18 00 C1 02 00 00 00 02 ......P.........
01C920: 18 00 C2 02 00 00 00 02 18 00 C3 02 00 00 00 02 ................
01C930: 18 00 C4 02 00 00 00 02 18 00 C5 02 00 00 00 02 ................
01C940: 18 00 C6 02 00 00 00 02 18 00 C7 02 00 00 00 02 ................
01C950: 18 00 C8 02 00 00 00 02 18 00 C9 02 00 00 00 02 ................
01C960: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C970: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C990: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C9A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C9B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C9C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C9D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C9E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C9F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01CA00: 72 20 26 20 23 78 46 46 0D 0A 20 20 20 20 30 25 r & #xFF.. 0%
01CA10: 23 78 39 32 20 3A 3D 20 28 20 61 64 64 72 20 26 #x92 := ( addr &
01CA20: 20 23 78 46 46 30 30 20 29 20 3E 3E 20 38 0D 0A #xFF00 ) >> 8..
01CA30: 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 .. inline #xD
01CA40: 44 2C 23 78 45 35 20 20 20 20 20 20 20 20 20 20 D,#xE5
01CA50: 20 20 2F 2F 20 70 75 73 68 20 69 78 0D 0A 20 20 // push ix..
01CA60: 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 inline #xDD,#x
01CA70: 36 36 2C 23 78 37 37 20 20 20 20 20 20 20 2F 2F 66,#x77 //
01CA80: 20 6C 64 20 68 2C 28 69 78 2B 31 31 39 29 0D 0A ld h,(ix+119)..
01CA90: 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C inline #xDD,
01CAA0: 23 78 36 45 2C 23 78 37 36 20 20 20 20 20 20 20 #x6E,#x76
01CAB0: 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 31 38 29 // ld l,(ix+118)
01CAC0: 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 32 .. inline #x2
01CAD0: 39 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 9
01CAE0: 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 0D 0A // add hl,hl..
01CAF0: 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 35 45 20 inline #x5E
01CB00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01CB10: 2F 2F 20 6C 64 20 65 2C 28 68 6C 29 0D 0A 20 20 // ld e,(hl)..
01CB20: 20 20 69 6E 6C 69 6E 65 20 23 78 32 33 20 20 20 inline #x23
01CB30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F //
01CB40: 20 69 6E 63 20 68 6C 0D 0A 20 20 20 20 69 6E 6C inc hl.. inl
01CB50: 69 6E 65 20 23 78 35 36 20 20 20 20 20 20 20 20 ine #x56
01CB60: 20 20 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 64 // ld d
01CB70: 2C 28 68 6C 29 0D 0A 20 20 20 20 69 6E 6C 69 6E ,(hl).. inlin
01CB80: 65 20 23 78 44 35 20 20 20 20 20 20 20 20 20 20 e #xD5
01CB90: 20 20 20 20 20 20 20 2F 2F 20 70 75 73 68 20 64 // push d
01CBA0: 65 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 e.. inline #x
01CBB0: 44 44 2C 23 78 36 36 2C 23 78 37 39 20 20 20 20 DD,#x66,#x79
01CBC0: 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 // ld h,(ix+1
01CBD0: 32 31 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 21).. inline
01CBE0: 23 78 44 44 2C 23 78 36 45 2C 23 78 37 38 20 20 #xDD,#x6E,#x78
01CBF0: 20 20 20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 // ld l,(ix
01CC00: 2B 31 32 30 29 0D 0A 20 20 20 20 69 6E 6C 69 6E +120).. inlin
01CC10: 65 20 23 78 32 39 20 20 20 20 20 20 20 20 20 20 e #x29
01CC20: 20 20 20 20 20 20 20 2F 2F 20 61 64 64 20 68 6C // add hl
01CC30: 2C 68 6C 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 ,hl.. inline
01CC40: 23 78 34 45 20 20 20 20 20 20 20 20 20 20 20 20 #x4E
01CC50: 20 20 20 20 20 2F 2F 20 6C 64 20 63 2C 28 68 6C // ld c,(hl
01CC60: 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 ).. inline #x
01CC70: 32 33 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23
01CC80: 20 20 20 2F 2F 20 69 6E 63 20 68 6C 0D 0A 20 20 // inc hl..
01CC90: 20 20 69 6E 6C 69 6E 65 20 23 78 34 36 20 20 20 inline #x46
01CCA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F //
01CCB0: 20 6C 64 20 62 2C 28 68 6C 29 0D 0A 20 20 20 20 ld b,(hl)..
01CCC0: 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 36 inline #xDD,#x66
01CCD0: 2C 23 78 37 46 20 20 20 20 20 20 20 2F 2F 20 6C ,#x7F // l
01CCE0: 64 20 68 2C 28 69 78 2B 31 32 37 29 0D 0A 20 20 d h,(ix+127)..
01CCF0: 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 inline #xDD,#x
01CD00: 36 45 2C 23 78 37 45 20 20 20 20 20 20 20 2F 2F 6E,#x7E //
01CD10: 20 6C 64 20 6C 2C 28 69 78 2B 31 32 36 29 0D 0A ld l,(ix+126)..
01CD20: 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 32 39 20 inline #x29
01CD30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01CD40: 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 0D 0A 20 20 // add hl,hl..
01CD50: 20 20 69 6E 6C 69 6E 65 20 23 78 35 45 20 20 20 inline #x5E
01CD60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F //
01CD70: 20 6C 64 20 65 2C 28 68 6C 29 0D 0A 20 20 20 20 ld e,(hl)..
01CD80: 69 6E 6C 69 6E 65 20 23 78 32 33 20 20 20 20 20 inline #x23
01CD90: 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 69 // i
01CDA0: 6E 63 20 68 6C 0D 0A 20 20 20 20 69 6E 6C 69 6E nc hl.. inlin
01CDB0: 65 20 23 78 35 36 20 20 20 20 20 20 20 20 20 20 e #x56
01CDC0: 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 64 2C 28 // ld d,(
01CDD0: 68 6C 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 hl).. inline
01CDE0: 23 78 44 35 20 20 20 20 20 20 20 20 20 20 20 20 #xD5
01CDF0: 20 20 20 20 20 2F 2F 20 70 75 73 68 20 64 65 0D // push de.
01CE00: 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 . inline #xDD
01CE10: 2C 23 78 36 36 2C 23 78 37 44 20 20 20 20 20 20 ,#x66,#x7D
01CE20: 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 32 35 // ld h,(ix+125
01CE30: 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 ).. inline #x
01CE40: 44 44 2C 23 78 36 45 2C 23 78 37 43 20 20 20 20 DD,#x6E,#x7C
01CE50: 20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 // ld l,(ix+1
01CE60: 32 34 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 24).. inline
01CE70: 23 78 32 39 20 20 20 20 20 20 20 20 20 20 20 20 #x29
01CE80: 20 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 // add hl,h
01CE90: 6C 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 l.. inline #x
01CEA0: 35 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5E
01CEB0: 20 20 20 2F 2F 20 6C 64 20 65 2C 28 68 6C 29 0D // ld e,(hl).
01CEC0: 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 32 33 . inline #x23
01CED0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01CEE0: 20 2F 2F 20 69 6E 63 20 68 6C 0D 0A 20 20 20 20 // inc hl..
01CEF0: 69 6E 6C 69 6E 65 20 23 78 35 36 20 20 20 20 20 inline #x56
01CF00: 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 6C // l
01CF10: 64 20 64 2C 28 68 6C 29 0D 0A 20 20 20 20 69 6E d d,(hl).. in
01CF20: 6C 69 6E 65 20 23 78 44 35 20 20 20 20 20 20 20 line #xD5
01CF30: 20 20 20 20 20 20 20 20 20 20 2F 2F 20 70 75 73 // pus
01CF40: 68 20 64 65 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 h de.. inline
01CF50: 20 23 78 44 44 2C 23 78 36 36 2C 23 78 37 42 20 #xDD,#x66,#x7B
01CF60: 20 20 20 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 // ld h,(i
01CF70: 78 2B 31 32 33 29 0D 0A 20 20 20 20 69 6E 6C 69 x+123).. inli
01CF80: 6E 65 20 23 78 44 44 2C 23 78 36 45 2C 23 78 37 ne #xDD,#x6E,#x7
01CF90: 41 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 6C 2C A // ld l,
01CFA0: 28 69 78 2B 31 32 32 29 0D 0A 20 20 20 20 69 6E (ix+122).. in
01CFB0: 6C 69 6E 65 20 23 78 32 39 20 20 20 20 20 20 20 line #x29
01CFC0: 20 20 20 20 20 20 20 20 20 20 2F 2F 20 61 64 64 // add
01CFD0: 20 68 6C 2C 68 6C 0D 0A 20 20 20 20 69 6E 6C 69 hl,hl.. inli
01CFE0: 6E 65 20 23 78 35 45 20 20 20 20 20 20 20 20 20 ne #x5E
01CFF0: 20 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 65 2C // ld e,
01D000: 28 68 6C 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 (hl).. inline
01D010: 20 23 78 32 33 20 20 20 20 20 20 20 20 20 20 20 #x23
01D020: 20 20 20 20 20 20 2F 2F 20 69 6E 63 20 68 6C 0D // inc hl.
01D030: 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 35 36 . inline #x56
01D040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D050: 20 2F 2F 20 6C 64 20 64 2C 28 68 6C 29 0D 0A 20 // ld d,(hl)..
01D060: 20 20 20 69 6E 6C 69 6E 65 20 23 78 45 31 20 20 inline #xE1
01D070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F /
01D080: 2F 20 70 6F 70 20 68 6C 0D 0A 20 20 20 20 69 6E / pop hl.. in
01D090: 6C 69 6E 65 20 23 78 44 44 2C 23 78 45 31 20 20 line #xDD,#xE1
01D0A0: 20 20 20 20 20 20 20 20 20 20 2F 2F 20 70 6F 70 // pop
01D0B0: 20 69 78 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 ix.. inline
01D0C0: 23 78 46 31 20 20 20 20 20 20 20 20 20 20 20 20 #xF1
01D0D0: 20 20 20 20 20 2F 2F 20 70 6F 70 20 61 66 0D 0A // pop af..
01D0E0: 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 43 44 2C inline #xCD,
01D0F0: 23 78 39 30 2C 23 78 30 30 20 20 20 20 20 20 20 #x90,#x00
01D100: 2F 2F 20 63 61 6C 6C 20 26 39 30 0D 0A 20 20 20 // call &90..
01D110: 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 32 inline #xDD,#x2
01D120: 32 2C 23 78 39 30 2C 23 78 30 30 20 20 2F 2F 20 2,#x90,#x00 //
01D130: 6C 64 20 28 26 39 30 29 2C 69 78 0D 0A 20 20 20 ld (&90),ix..
01D140: 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 45 inline #xDD,#xE
01D150: 31 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 1 //
01D160: 70 6F 70 20 69 78 0D 0A 20 20 20 20 69 6E 6C 69 pop ix.. inli
01D170: 6E 65 20 23 78 46 35 20 20 20 20 20 20 20 20 20 ne #xF5
01D180: 20 20 20 20 20 20 20 20 2F 2F 20 70 75 73 68 20 // push
01D190: 61 66 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 af.. inline #
01D1A0: 78 45 35 20 20 20 20 20 20 20 20 20 20 20 20 20 xE5
01D1B0: 20 20 20 20 2F 2F 20 70 75 73 68 20 68 6C 0D 0A // push hl..
01D1C0: 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C inline #xDD,
01D1D0: 23 78 36 36 2C 23 78 37 42 20 20 20 20 20 20 20 #x66,#x7B
01D1E0: 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 32 33 29 // ld h,(ix+123)
01D1F0: 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 .. inline #xD
01D200: 44 2C 23 78 36 45 2C 23 78 37 41 20 20 20 20 20 D,#x6E,#x7A
01D210: 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 32 // ld l,(ix+12
01D220: 32 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 2).. inline #
01D230: 78 32 39 20 20 20 20 20 20 20 20 20 20 20 20 20 x29
01D240: 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C // add hl,hl
01D250: 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 37 .. inline #x7
01D260: 33 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3
01D270: 20 20 2F 2F 20 6C 64 20 28 68 6C 29 2C 65 0D 0A // ld (hl),e..
01D280: 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 32 33 20 inline #x23
01D290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D2A0: 2F 2F 20 69 6E 63 20 68 6C 0D 0A 20 20 20 20 69 // inc hl.. i
01D2B0: 6E 6C 69 6E 65 20 23 78 37 32 20 20 20 20 20 20 nline #x72
01D2C0: 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 6C 64 // ld
01D2D0: 20 28 68 6C 29 2C 64 0D 0A 20 20 20 20 69 6E 6C (hl),d.. inl
01D2E0: 69 6E 65 20 23 78 44 44 2C 23 78 36 36 2C 23 78 ine #xDD,#x66,#x
01D2F0: 37 44 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 68 7D // ld h
01D300: 2C 28 69 78 2B 31 32 35 29 0D 0A 20 20 20 20 69 ,(ix+125).. i
01D310: 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 45 2C nline #xDD,#x6E,
01D320: 23 78 37 43 20 20 20 20 20 20 20 2F 2F 20 6C 64 #x7C // ld
01D330: 20 6C 2C 28 69 78 2B 31 32 34 29 0D 0A 20 20 20 l,(ix+124)..
01D340: 20 69 6E 6C 69 6E 65 20 23 78 32 39 20 20 20 20 inline #x29
01D350: 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 //
01D360: 61 64 64 20 68 6C 2C 68 6C 0D 0A 20 20 20 20 69 add hl,hl.. i
01D370: 6E 6C 69 6E 65 20 23 78 44 31 20 20 20 20 20 20 nline #xD1
01D380: 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 70 6F // po
01D390: 70 20 64 65 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 p de.. inline
01D3A0: 20 23 78 37 33 20 20 20 20 20 20 20 20 20 20 20 #x73
01D3B0: 20 20 20 20 20 20 2F 2F 20 6C 64 20 28 68 6C 29 // ld (hl)
01D3C0: 2C 65 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 ,e.. inline #
01D3D0: 78 32 33 20 20 20 20 20 20 20 20 20 20 20 20 20 x23
01D3E0: 20 20 20 20 2F 2F 20 69 6E 63 20 68 6C 0D 0A 20 // inc hl..
01D3F0: 20 20 20 69 6E 6C 69 6E 65 20 23 78 37 32 20 20 inline #x72
01D400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F /
01D410: 2F 20 6C 64 20 28 68 6C 29 2C 64 0D 0A 20 20 20 / ld (hl),d..
01D420: 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 inline #xDD,#x6
01D430: 36 2C 23 78 37 46 20 20 20 20 20 20 20 2F 2F 20 6,#x7F //
01D440: 6C 64 20 68 2C 28 69 78 2B 31 32 37 29 0D 0A 20 ld h,(ix+127)..
01D450: 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 inline #xDD,#
01D460: 78 36 45 2C 23 78 37 45 20 20 20 20 20 20 20 2F x6E,#x7E /
01D470: 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 32 36 29 0D / ld l,(ix+126).
01D480: 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 32 39 . inline #x29
01D490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D4A0: 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 0D 0A 20 // add hl,hl..
01D4B0: 20 20 20 69 6E 6C 69 6E 65 20 23 78 45 44 2C 23 inline #xED,#
01D4C0: 78 35 42 2C 23 78 39 30 2C 23 78 30 30 20 20 2F x5B,#x90,#x00 /
01D4D0: 2F 20 6C 64 20 64 65 2C 28 26 39 30 29 0D 0A 20 / ld de,(&90)..
01D4E0: 20 20 20 69 6E 6C 69 6E 65 20 23 78 37 33 20 20 inline #x73
01D4F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F /
01D500: 2F 20 6C 64 20 28 68 6C 29 2C 65 0D 0A 20 20 20 / ld (hl),e..
01D510: 20 69 6E 6C 69 6E 65 20 23 78 32 33 20 20 20 20 inline #x23
01D520: 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 //
01D530: 69 6E 63 20 68 6C 0D 0A 20 20 20 20 69 6E 6C 69 inc hl.. inli
01D540: 6E 65 20 23 78 37 32 20 20 20 20 20 20 20 20 20 ne #x72
01D550: 20 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 28 68 // ld (h
01D560: 6C 29 2C 64 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 l),d.. inline
01D570: 20 23 78 44 44 2C 23 78 36 36 2C 23 78 37 39 20 #xDD,#x66,#x79
01D580: 20 20 20 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 // ld h,(i
01D590: 78 2B 31 32 31 29 0D 0A 20 20 20 20 69 6E 6C 69 x+121).. inli
01D5A0: 6E 65 20 23 78 44 44 2C 23 78 36 45 2C 23 78 37 ne #xDD,#x6E,#x7
01D5B0: 38 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 6C 2C 8 // ld l,
01D5C0: 28 69 78 2B 31 32 30 29 0D 0A 20 20 20 20 69 6E (ix+120).. in
01D5D0: 6C 69 6E 65 20 23 78 32 39 20 20 20 20 20 20 20 line #x29
01D5E0: 20 20 20 20 20 20 20 20 20 20 2F 2F 20 61 64 64 // add
01D5F0: 20 68 6C 2C 68 6C 0D 0A 20 20 20 20 69 6E 6C 69 hl,hl.. inli
01D600: 6E 65 20 23 78 37 31 20 20 20 20 20 20 20 20 20 ne #x71
01D610: 20 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 28 68 // ld (h
01D620: 6C 29 2C 63 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 l),c.. inline
01D630: 20 23 78 32 33 20 20 20 20 20 20 20 20 20 20 20 #x23
01D640: 20 20 20 20 20 20 2F 2F 20 69 6E 63 20 68 6C 0D // inc hl.
01D650: 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 37 30 . inline #x70
01D660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D670: 20 2F 2F 20 6C 64 20 28 68 6C 29 2C 62 0D 0A 20 // ld (hl),b..
01D680: 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 inline #xDD,#
01D690: 78 36 36 2C 23 78 37 37 20 20 20 20 20 20 20 2F x66,#x77 /
01D6A0: 2F 20 6C 64 20 68 2C 28 69 78 2B 31 31 39 29 0D / ld h,(ix+119).
01D6B0: 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 . inline #xDD
01D6C0: 2C 23 78 36 45 2C 23 78 37 36 20 20 20 20 20 20 ,#x6E,#x76
01D6D0: 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 31 38 // ld l,(ix+118
01D6E0: 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 ).. inline #x
01D6F0: 32 39 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29
01D700: 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 0D // add hl,hl.
01D710: 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 31 . inline #xD1
01D720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D730: 20 2F 2F 20 70 6F 70 20 64 65 0D 0A 20 20 20 20 // pop de..
01D740: 69 6E 6C 69 6E 65 20 23 78 37 33 20 20 20 20 20 inline #x73
01D750: 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 6C // l
01D760: 64 20 28 68 6C 29 2C 65 0D 0A 20 20 20 20 69 6E d (hl),e.. in
01D770: 6C 69 6E 65 20 23 78 32 33 20 20 20 20 20 20 20 line #x23
01D780: 20 20 20 20 20 20 20 20 20 20 2F 2F 20 69 6E 63 // inc
01D790: 20 68 6C 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 hl.. inline
01D7A0: 23 78 37 32 20 20 20 20 20 20 20 20 20 20 20 20 #x72
01D7B0: 20 20 20 20 20 2F 2F 20 6C 64 20 28 68 6C 29 2C // ld (hl),
01D7C0: 64 0D 0A 20 20 20 20 62 79 74 65 6D 6F 76 65 28 d.. bytemove(
01D7D0: 73 61 76 65 33 2A 32 2C 20 23 78 39 30 2C 20 33 save3*2, #x90, 3
01D7E0: 29 0D 0A 24 29 0D 0A 0D 0A 4C 45 54 20 66 69 72 )..$)....LET fir
01D7F0: 6D 77 61 72 65 28 61 64 64 72 2C 61 66 2C 62 63 mware(addr,af,bc
01D800: 2C 64 65 2C 68 6C 2C 69 78 29 20 42 45 0D 0A 0D ,de,hl,ix) BE...
01D810: 0A 24 28 20 20 4C 45 54 20 73 61 76 65 36 20 3D .$( LET save6 =
01D820: 20 56 45 43 20 33 0D 0A 20 20 20 20 62 79 74 65 VEC 3.. byte
01D830: 6D 6F 76 65 28 23 78 38 30 2C 20 73 61 76 65 36 move(#x80, save6
01D840: 2A 32 2C 20 36 29 0D 0A 20 20 20 20 30 25 23 78 *2, 6).. 0%#x
01D850: 38 30 20 3A 3D 20 23 78 43 44 0D 0A 20 20 20 20 80 := #xCD..
01D860: 30 25 23 78 38 31 20 3A 3D 20 30 25 28 30 25 31 0%#x81 := 0%(0%1
01D870: 20 2B 20 32 35 36 2A 30 25 32 20 2B 20 38 37 20 + 256*0%2 + 87
01D880: 2B 31 29 0D 0A 20 20 20 20 30 25 23 78 38 32 20 +1).. 0%#x82
01D890: 3A 3D 20 30 25 28 30 25 31 20 2B 20 32 35 36 2A := 0%(0%1 + 256*
01D8A0: 30 25 32 20 2B 20 38 37 20 2B 32 29 0D 0A 20 20 0%2 + 87 +2)..
01D8B0: 20 20 30 25 23 78 38 33 20 3A 3D 20 61 64 64 72 0%#x83 := addr
01D8C0: 20 26 20 23 78 46 46 0D 0A 20 20 20 20 30 25 23 & #xFF.. 0%#
01D8D0: 78 38 34 20 3A 3D 20 28 20 61 64 64 72 20 26 20 x84 := ( addr &
01D8E0: 23 78 46 46 30 30 20 29 20 3E 3E 20 38 0D 0A 20 #xFF00 ) >> 8..
01D8F0: 20 20 20 30 25 23 78 38 35 20 3A 3D 20 23 78 43 0%#x85 := #xC
01D900: 39 0D 0A 20 20 20 20 63 61 6C 6C 20 28 23 78 38 9.. call (#x8
01D910: 30 2C 61 66 2C 62 63 2C 64 65 2C 68 6C 2C 69 78 0,af,bc,de,hl,ix
01D920: 29 0D 0A 20 20 20 20 62 79 74 65 6D 6F 76 65 28 ).. bytemove(
01D930: 73 61 76 65 36 2A 32 2C 20 23 78 38 30 2C 20 36 save6*2, #x80, 6
01D940: 29 0D 0A 24 29 0D 0A 0D 0A 61 6E 64 20 76 65 72 )..$)....and ver
01D950: 73 69 6F 6E 28 29 20 3D 20 56 41 4C 4F 46 0D 0A sion() = VALOF..
01D960: 0D 0A 24 28 20 20 4C 45 54 20 63 2C 64 65 3D 31 ..$( LET c,de=1
01D970: 32 2C 3F 0D 0A 20 20 20 20 4C 45 54 20 61 66 2C 2,?.. LET af,
01D980: 62 63 2C 68 6C 2C 69 78 20 3D 20 3F 2C 3F 2C 3F bc,hl,ix = ?,?,?
01D990: 2C 3F 0D 0A 20 20 20 20 62 64 6F 73 61 28 40 63 ,?.. bdosa(@c
01D9A0: 2C 40 64 65 29 0D 0A 20 20 20 20 49 46 20 28 64 ,@de).. IF (d
01D9B0: 65 20 26 20 23 78 46 46 29 20 3C 20 23 78 33 30 e & #xFF) < #x30
01D9C0: 20 54 48 45 4E 20 52 45 53 55 4C 54 49 53 20 32 THEN RESULTIS 2
01D9D0: 0D 0A 20 20 20 20 66 69 72 6D 77 61 72 65 28 23 .. firmware(#
01D9E0: 78 45 33 2C 40 61 66 2C 40 62 63 2C 40 64 65 2C xE3,@af,@bc,@de,
01D9F0: 40 68 6C 2C 40 69 78 29 0D 0A 20 20 20 20 52 45 @hl,@ix).. RE
01DA00: 53 55 4C 54 49 53 20 33 20 2B 20 28 20 28 61 66 SULTIS 3 + ( (af
01DA10: 20 26 20 23 78 46 46 30 30 29 20 3E 3E 20 38 20 & #xFF00) >> 8
01DA20: 29 0D 0A 24 29 0D 0A 0D 0A 4C 45 54 20 65 73 63 )..$)....LET esc
01DA30: 63 6F 64 65 28 78 29 20 42 45 0D 0A 0D 0A 24 28 code(x) BE....$(
01DA40: 20 20 77 72 63 68 28 32 37 29 20 3B 20 77 72 63 wrch(27) ; wrc
01DA50: 68 28 78 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 h(x)..$)......LE
01DA60: 54 20 63 6C 65 61 72 73 63 72 28 29 20 42 45 0D T clearscr() BE.
01DA70: 0A 24 28 0D 0A 20 20 20 20 54 45 53 54 20 76 65 .$(.. TEST ve
01DA80: 72 3D 32 20 54 48 45 4E 20 77 72 63 68 28 31 32 r=2 THEN wrch(12
01DA90: 29 20 45 4C 53 45 20 65 73 63 63 6F 64 65 28 27 ) ELSE esccode('
01DAA0: 45 27 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 E')..$)......LET
01DAB0: 20 74 61 62 28 78 2C 79 29 20 42 45 0D 0A 0D 0A tab(x,y) BE....
01DAC0: 24 28 0D 0A 0D 0A 20 20 54 45 53 54 20 76 65 72 $(.... TEST ver
01DAD0: 3D 32 20 54 48 45 4E 0D 0A 20 20 24 28 0D 0A 20 =2 THEN.. $(..
01DAE0: 20 20 20 62 64 6F 73 62 28 36 2C 33 31 29 20 3B bdosb(6,31) ;
01DAF0: 20 62 64 6F 73 62 28 36 2C 78 29 20 3B 20 62 64 bdosb(6,x) ; bd
01DB00: 6F 73 62 28 36 2C 79 29 0D 0A 20 20 24 29 0D 0A osb(6,y).. $)..
01DB10: 20 20 45 4C 53 45 0D 0A 20 20 24 28 0D 0A 20 20 ELSE.. $(..
01DB20: 20 20 20 65 73 63 63 6F 64 65 28 27 59 27 29 20 esccode('Y')
01DB30: 3B 20 77 72 63 68 28 79 2B 33 32 2D 31 29 20 3B ; wrch(y+32-1) ;
01DB40: 20 77 72 63 68 28 78 2B 33 32 2D 31 29 0D 0A 20 wrch(x+32-1)..
01DB50: 20 24 29 0D 0A 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C $)....$)......L
01DB60: 45 54 20 73 70 61 63 65 73 28 6E 75 6D 62 65 72 ET spaces(number
01DB70: 29 20 42 45 20 24 28 20 46 4F 52 20 61 20 3D 20 ) BE $( FOR a =
01DB80: 31 20 54 4F 20 6E 75 6D 62 65 72 20 44 4F 20 77 1 TO number DO w
01DB90: 72 63 68 28 27 20 27 29 20 24 29 0D 0A 0D 0A 0D rch(' ') $).....
01DBA0: 0A 4C 45 54 20 61 73 63 69 69 28 63 68 61 72 29 .LET ascii(char)
01DBB0: 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 54 45 53 BE....$(.. TES
01DBC0: 54 20 63 68 61 72 3D 31 33 20 54 48 45 4E 20 6E T char=13 THEN n
01DBD0: 65 77 6C 69 6E 65 28 29 20 45 4C 53 45 20 77 72 ewline() ELSE wr
01DBE0: 63 68 28 63 68 61 72 29 0D 0A 24 29 0D 0A 0D 0A ch(char)..$)....
01DBF0: 0D 0A 4C 45 54 20 63 75 72 73 6F 6E 28 29 20 42 ..LET curson() B
01DC00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
01DC10: 19 00 00 00 02 09 50 E5 19 00 C1 02 00 00 00 02 ......P.........
01DC20: 19 00 C2 02 00 00 00 02 19 00 C3 02 00 00 00 02 ................
01DC30: 19 00 C4 02 00 00 00 02 19 00 C5 02 00 00 00 02 ................
01DC40: 19 00 C6 02 00 00 00 02 19 00 C7 02 00 00 00 02 ................
01DC50: 19 00 C8 02 00 00 00 02 19 00 C9 02 00 00 00 02 ................
01DC60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DC70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DC80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DC90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DCA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DCB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DCC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DCD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DCE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DCF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DD00: 45 20 72 65 74 75 72 6E 0D 0A 4C 45 54 20 63 75 E return..LET cu
01DD10: 72 73 65 6E 28 29 20 42 45 20 72 65 74 75 72 6E rsen() BE return
01DD20: 0D 0A 4C 45 54 20 63 75 72 73 64 69 28 29 20 42 ..LET cursdi() B
01DD30: 45 20 72 65 74 75 72 6E 0D 0A 0D 0A 4C 45 54 20 E return....LET
01DD40: 62 65 65 70 28 29 20 42 45 20 24 28 20 77 72 63 beep() BE $( wrc
01DD50: 68 28 37 29 20 24 29 0D 0A 0D 0A 0D 0A 2F 2A 20 h(7) $)....../*
01DD60: 54 68 69 73 20 72 6F 75 74 69 6E 65 20 72 65 74 This routine ret
01DD70: 75 72 6E 73 20 74 68 65 20 6E 75 6D 62 65 72 20 urns the number
01DD80: 6F 66 20 63 68 61 72 61 63 74 65 72 73 20 75 70 of characters up
01DD90: 20 74 6F 20 61 6E 64 20 69 6E 63 6C 75 64 69 6E to and includin
01DDA0: 67 20 74 68 65 0D 0A 20 20 20 6E 65 78 74 20 43 g the.. next C
01DDB0: 52 20 2A 2F 0D 0A 0D 0A 4C 45 54 20 6C 69 6E 65 R */....LET line
01DDC0: 6C 65 6E 67 74 68 28 66 72 6F 6D 29 20 3D 20 56 length(from) = V
01DDD0: 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 ALOF....$(.. LE
01DDE0: 54 20 73 6F 66 61 72 20 3D 20 31 0D 0A 20 20 57 T sofar = 1.. W
01DDF0: 48 49 4C 45 20 21 66 72 6F 6D 20 4E 45 20 31 33 HILE !from NE 13
01DE00: 20 44 4F 20 24 28 20 73 6F 66 61 72 20 3A 3D 20 DO $( sofar :=
01DE10: 73 6F 66 61 72 20 2B 20 31 20 3B 20 66 72 6F 6D sofar + 1 ; from
01DE20: 20 3A 3D 20 66 72 6F 6D 20 2B 20 31 20 24 29 0D := from + 1 $).
01DE30: 0A 20 20 52 45 53 55 4C 54 49 53 20 73 6F 66 61 . RESULTIS sofa
01DE40: 72 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 2F 2A 20 r..$)......../*
01DE50: 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C This routine wil
01DE60: 6C 20 70 72 69 6E 74 20 6E 75 6D 20 63 68 61 72 l print num char
01DE70: 61 63 74 65 72 73 20 6F 66 20 6C 69 6E 65 20 61 acters of line a
01DE80: 6E 64 20 74 68 65 6E 20 66 69 6C 6C 20 74 68 65 nd then fill the
01DE90: 20 72 65 73 74 20 6F 66 20 74 68 65 0D 0A 20 20 rest of the..
01DEA0: 20 6C 69 6E 65 20 77 69 74 68 20 73 70 61 63 65 line with space
01DEB0: 73 20 2A 2F 0D 0A 0D 0A 41 4E 44 20 70 72 69 6E s */....AND prin
01DEC0: 74 63 6C 72 28 6C 69 6E 65 2C 6E 75 6D 29 20 42 tclr(line,num) B
01DED0: 45 0D 0A 0D 0A 24 28 0D 0A 20 20 46 4F 52 20 61 E....$(.. FOR a
01DEE0: 20 3D 20 30 20 54 4F 20 6E 75 6D 2D 31 20 44 4F = 0 TO num-1 DO
01DEF0: 20 77 72 63 68 28 6C 69 6E 65 21 61 29 0D 0A 20 wrch(line!a)..
01DF00: 20 73 70 61 63 65 73 28 37 39 2D 6E 75 6D 29 0D spaces(79-num).
01DF10: 0A 24 29 0D 0A 0D 0A 0D 0A 2F 2A 20 54 68 69 73 .$)....../* This
01DF20: 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 70 72 routine will pr
01DF30: 69 6E 74 20 65 69 74 68 65 72 20 74 68 65 20 77 int either the w
01DF40: 68 6F 6C 65 20 62 75 66 66 65 72 20 66 72 6F 6D hole buffer from
01DF50: 20 78 20 6F 6E 20 6F 72 20 6A 75 73 74 20 74 68 x on or just th
01DF60: 65 20 6E 65 77 0D 0A 20 20 20 63 68 61 72 61 63 e new.. charac
01DF70: 74 65 72 20 2A 2F 0D 0A 0D 0A 41 4E 44 20 72 65 ter */....AND re
01DF80: 70 72 69 6E 74 28 6C 69 6E 65 2C 70 6F 73 29 20 print(line,pos)
01DF90: 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 54 45 53 54 BE....$(.. TEST
01DFA0: 20 69 6E 73 65 72 74 20 54 48 45 4E 20 46 4F 52 insert THEN FOR
01DFB0: 20 61 20 3D 20 70 6F 73 20 54 4F 20 6C 69 6E 65 a = pos TO line
01DFC0: 21 30 2D 31 20 44 4F 20 77 72 63 68 28 6C 69 6E !0-1 DO wrch(lin
01DFD0: 65 21 61 29 0D 0A 20 20 45 4C 53 45 20 77 72 63 e!a).. ELSE wrc
01DFE0: 68 28 6C 69 6E 65 21 70 6F 73 29 0D 0A 24 29 0D h(line!pos)..$).
01DFF0: 0A 0D 0A 0D 0A 0D 0A 2F 2A 20 54 68 69 73 20 72 ......./* This r
01E000: 6F 75 74 69 6E 65 20 77 69 6C 6C 20 72 65 6D 6F outine will remo
01E010: 76 65 20 61 20 63 68 61 72 61 63 74 65 72 20 66 ve a character f
01E020: 72 6F 6D 20 74 68 65 20 62 75 66 66 65 72 20 2A rom the buffer *
01E030: 2F 0D 0A 0D 0A 41 4E 44 20 64 65 6C 65 74 65 28 /....AND delete(
01E040: 6C 69 6E 65 2C 78 29 20 42 45 0D 0A 0D 0A 24 28 line,x) BE....$(
01E050: 0D 0A 20 20 54 45 53 54 20 69 6E 73 65 72 74 20 .. TEST insert
01E060: 54 48 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 THEN.. $(..
01E070: 6C 69 6E 65 21 30 20 3A 3D 20 6C 69 6E 65 21 30 line!0 := line!0
01E080: 20 2D 20 31 0D 0A 20 20 20 20 46 4F 52 20 61 20 - 1.. FOR a
01E090: 3D 20 78 20 54 4F 20 6C 69 6E 65 21 30 20 44 4F = x TO line!0 DO
01E0A0: 20 6C 69 6E 65 21 61 20 3A 3D 20 6C 69 6E 65 21 line!a := line!
01E0B0: 28 61 2B 31 29 0D 0A 20 20 24 29 0D 0A 20 20 45 (a+1).. $).. E
01E0C0: 4C 53 45 20 6C 69 6E 65 21 78 20 3A 3D 20 27 20 LSE line!x := '
01E0D0: 27 0D 0A 24 29 0D 0A 0D 0A 0D 0A 2F 2A 20 54 68 '..$)....../* Th
01E0E0: 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 is routine will
01E0F0: 69 6E 73 65 72 74 20 61 20 63 68 61 72 61 63 74 insert a charact
01E100: 65 72 20 69 6E 74 6F 20 74 68 65 20 62 75 66 66 er into the buff
01E110: 65 72 20 61 74 20 74 68 65 20 70 6F 69 6E 74 20 er at the point
01E120: 67 69 76 65 6E 20 2A 2F 0D 0A 0D 0A 41 4E 44 20 given */....AND
01E130: 62 69 6E 73 65 72 74 28 6C 69 6E 65 2C 70 6F 73 binsert(line,pos
01E140: 69 74 69 6F 6E 2C 63 68 61 72 61 63 74 65 72 29 ition,character)
01E150: 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 54 45 53 BE....$(.. TES
01E160: 54 20 69 6E 73 65 72 74 20 54 48 45 4E 0D 0A 20 T insert THEN..
01E170: 20 24 28 0D 0A 20 20 20 20 46 4F 52 20 61 20 3D $(.. FOR a =
01E180: 20 6C 69 6E 65 21 30 20 54 4F 20 70 6F 73 69 74 line!0 TO posit
01E190: 69 6F 6E 20 42 59 20 2D 31 20 6C 69 6E 65 21 28 ion BY -1 line!(
01E1A0: 61 2B 31 29 20 3A 3D 20 6C 69 6E 65 21 61 0D 0A a+1) := line!a..
01E1B0: 20 20 20 20 6C 69 6E 65 21 70 6F 73 69 74 69 6F line!positio
01E1C0: 6E 20 3A 3D 20 63 68 61 72 61 63 74 65 72 0D 0A n := character..
01E1D0: 20 20 20 20 6C 69 6E 65 21 30 20 3A 3D 20 6C 69 line!0 := li
01E1E0: 6E 65 21 30 20 2B 20 31 0D 0A 20 20 24 29 0D 0A ne!0 + 1.. $)..
01E1F0: 20 20 45 4C 53 45 20 6C 69 6E 65 21 70 6F 73 69 ELSE line!posi
01E200: 74 69 6F 6E 20 3A 3D 20 63 68 61 72 61 63 74 65 tion := characte
01E210: 72 0D 0A 24 29 0D 0A 0D 0A 0D 0A 41 4E 44 20 76 r..$)......AND v
01E220: 61 6C 69 64 61 74 65 28 6C 69 6E 65 2C 78 29 20 alidate(line,x)
01E230: 3D 20 56 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 = VALOF....$(..
01E240: 20 49 46 20 78 20 3C 3D 20 6C 69 6E 65 21 30 20 IF x <= line!0
01E250: 54 48 45 4E 20 52 45 53 55 4C 54 49 53 20 78 0D THEN RESULTIS x.
01E260: 0A 20 20 74 61 62 28 6C 69 6E 65 21 30 2C 79 29 . tab(line!0,y)
01E270: 0D 0A 20 20 52 45 53 55 4C 54 49 53 20 6C 69 6E .. RESULTIS lin
01E280: 65 21 30 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 2F e!0..$)......../
01E290: 2A 0D 0A 0D 0A 20 20 54 68 65 20 6C 69 6E 65 20 *.... The line
01E2A0: 67 69 76 65 6E 20 69 73 20 69 6E 20 62 75 66 66 given is in buff
01E2B0: 65 72 20 69 6E 20 74 68 65 20 66 6F 6C 6C 6F 77 er in the follow
01E2C0: 69 6E 67 20 66 6F 72 6D 61 74 0D 0A 0D 0A 20 20 ing format....
01E2D0: 20 30 3A 20 6C 65 6E 67 74 68 0D 0A 20 20 20 31 0: length.. 1
01E2E0: 2D 20 73 74 72 69 6E 67 20 69 6E 20 75 6E 70 61 - string in unpa
01E2F0: 63 6B 65 64 20 66 6F 72 6D 61 74 20 66 6F 6C 6C cked format foll
01E300: 6F 77 65 64 20 62 79 20 31 33 0D 0A 0D 0A 20 20 owed by 13....
01E310: 54 68 65 20 72 6F 75 74 69 6E 65 20 72 65 61 63 The routine reac
01E320: 74 73 20 74 6F 20 6B 65 79 20 61 6E 64 20 74 61 ts to key and ta
01E330: 6B 65 73 20 74 68 65 20 61 70 70 72 6F 70 72 69 kes the appropri
01E340: 61 74 65 20 61 63 74 69 6F 6E 0D 0A 0D 0A 2A 2F ate action....*/
01E350: 0D 0A 0D 0A 41 4E 44 20 62 75 69 6C 64 62 75 66 ....AND buildbuf
01E360: 66 28 62 75 66 66 65 72 2C 6B 65 79 29 20 3D 20 f(buffer,key) =
01E370: 56 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 74 VALOF....$(.. t
01E380: 61 62 28 78 2C 79 29 0D 0A 20 20 53 57 49 54 43 ab(x,y).. SWITC
01E390: 48 4F 4E 20 6B 65 79 20 49 4E 54 4F 0D 0A 20 20 HON key INTO..
01E3A0: 24 28 0D 0A 20 20 20 20 43 41 53 45 20 31 33 3A $(.. CASE 13:
01E3B0: 0D 0A 20 20 20 20 20 20 78 20 3A 3D 20 76 61 6C .. x := val
01E3C0: 69 64 61 74 65 28 62 75 66 66 65 72 2C 78 29 0D idate(buffer,x).
01E3D0: 0A 20 20 20 20 20 20 62 69 6E 73 65 72 74 28 62 . binsert(b
01E3E0: 75 66 66 65 72 2C 78 2C 31 33 29 0D 0A 20 20 20 uffer,x,13)..
01E3F0: 20 20 20 77 72 63 68 28 31 33 29 0D 0A 20 20 20 wrch(13)..
01E400: 20 20 20 70 72 69 6E 74 63 6C 72 28 62 75 66 66 printclr(buff
01E410: 65 72 2B 31 2C 6C 69 6E 65 6C 65 6E 67 74 68 28 er+1,linelength(
01E420: 62 75 66 66 65 72 2B 31 29 2D 31 29 20 3B 20 52 buffer+1)-1) ; R
01E430: 45 53 55 4C 54 49 53 20 31 33 0D 0A 20 20 20 20 ESULTIS 13..
01E440: 43 41 53 45 20 63 75 72 73 6C 65 66 74 3A 20 43 CASE cursleft: C
01E450: 41 53 45 20 73 63 75 72 73 6C 65 66 74 3A 0D 0A ASE scursleft:..
01E460: 20 20 20 20 20 20 54 45 53 54 20 78 3E 31 20 54 TEST x>1 T
01E470: 48 45 4E 0D 0A 20 20 20 20 20 20 20 20 78 20 3A HEN.. x :
01E480: 3D 20 78 20 2D 20 31 0D 0A 20 20 20 20 20 20 45 = x - 1.. E
01E490: 4C 53 45 20 62 65 65 70 28 29 0D 0A 20 20 20 20 LSE beep()..
01E4A0: 20 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 43 ENDCASE.. C
01E4B0: 41 53 45 20 63 75 72 73 72 69 67 68 74 3A 20 43 ASE cursright: C
01E4C0: 41 53 45 20 73 63 75 72 73 72 69 67 68 74 3A 0D ASE scursright:.
01E4D0: 0A 20 20 20 20 20 20 54 45 53 54 20 78 20 3C 3D . TEST x <=
01E4E0: 20 62 75 66 66 65 72 21 30 2D 31 20 54 48 45 4E buffer!0-1 THEN
01E4F0: 0D 0A 20 20 20 20 20 20 20 20 78 20 3A 3D 20 78 .. x := x
01E500: 20 2B 20 31 0D 0A 20 20 20 20 20 20 45 4C 53 45 + 1.. ELSE
01E510: 20 62 65 65 70 28 29 0D 0A 20 20 20 20 20 20 45 beep().. E
01E520: 4E 44 43 41 53 45 0D 0A 20 20 20 20 43 41 53 45 NDCASE.. CASE
01E530: 20 63 63 75 72 73 6C 65 66 74 3A 20 20 78 20 3A ccursleft: x :
01E540: 3D 20 31 20 3B 20 45 4E 44 43 41 53 45 0D 0A 20 = 1 ; ENDCASE..
01E550: 20 20 20 43 41 53 45 20 63 63 75 72 73 72 69 67 CASE ccursrig
01E560: 68 74 3A 20 78 20 3A 3D 20 62 75 66 66 65 72 21 ht: x := buffer!
01E570: 30 20 3B 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 0 ; ENDCASE..
01E580: 20 43 41 53 45 20 73 63 75 72 73 75 70 3A 20 43 CASE scursup: C
01E590: 41 53 45 20 73 63 75 72 73 64 6F 77 6E 3A 0D 0A ASE scursdown:..
01E5A0: 20 20 20 20 43 41 53 45 20 63 63 75 72 73 75 70 CASE ccursup
01E5B0: 3A 20 43 41 53 45 20 63 63 75 72 73 64 6F 77 6E : CASE ccursdown
01E5C0: 3A 0D 0A 20 20 20 20 43 41 53 45 20 63 6F 70 65 :.. CASE cope
01E5D0: 6E 73 71 3A 20 43 41 53 45 20 63 63 6C 6F 73 65 nsq: CASE cclose
01E5E0: 73 71 3A 0D 0A 20 20 20 20 43 41 53 45 20 65 73 sq:.. CASE es
01E5F0: 63 61 70 65 3A 20 43 41 53 45 20 73 74 6F 70 3A cape: CASE stop:
01E600: 20 43 41 53 45 20 63 75 72 73 75 70 3A 20 43 41 CASE cursup: CA
01E610: 53 45 20 63 75 72 73 64 6F 77 6E 3A 20 52 45 53 SE cursdown: RES
01E620: 55 4C 54 49 53 20 6B 65 79 0D 0A 20 20 20 20 43 ULTIS key.. C
01E630: 41 53 45 20 31 32 37 3A 0D 0A 20 20 20 20 20 20 ASE 127:..
01E640: 78 20 3A 3D 20 76 61 6C 69 64 61 74 65 28 62 75 x := validate(bu
01E650: 66 66 65 72 2C 78 29 0D 0A 20 20 20 20 20 20 49 ffer,x).. I
01E660: 46 20 78 20 3D 20 31 20 54 48 45 4E 20 52 45 53 F x = 1 THEN RES
01E670: 55 4C 54 49 53 20 31 32 37 0D 0A 20 20 20 20 20 ULTIS 127..
01E680: 20 78 20 3A 3D 20 78 20 2D 20 31 0D 0A 20 20 20 x := x - 1..
01E690: 20 20 20 74 61 62 28 78 2C 79 29 0D 0A 20 20 20 tab(x,y)..
01E6A0: 20 20 20 64 65 6C 65 74 65 28 62 75 66 66 65 72 delete(buffer
01E6B0: 2C 78 29 0D 0A 20 20 20 20 20 20 72 65 70 72 69 ,x).. repri
01E6C0: 6E 74 28 62 75 66 66 65 72 2C 78 29 0D 0A 20 20 nt(buffer,x)..
01E6D0: 20 20 20 20 49 46 20 69 6E 73 65 72 74 20 54 48 IF insert TH
01E6E0: 45 4E 20 77 72 63 68 28 27 20 27 29 0D 0A 20 20 EN wrch(' ')..
01E6F0: 20 20 20 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 ENDCASE..
01E700: 20 44 45 46 41 55 4C 54 3A 0D 0A 20 20 20 20 20 DEFAULT:..
01E710: 20 78 20 3A 3D 20 76 61 6C 69 64 61 74 65 28 62 x := validate(b
01E720: 75 66 66 65 72 2C 78 29 0D 0A 20 20 20 20 20 20 uffer,x)..
01E730: 54 45 53 54 20 62 75 66 66 65 72 21 30 20 3C 20 TEST buffer!0 <
01E740: 38 30 20 54 48 45 4E 0D 0A 20 20 20 20 20 20 24 80 THEN.. $
01E750: 28 0D 0A 20 20 20 20 20 20 20 20 62 69 6E 73 65 (.. binse
01E760: 72 74 28 62 75 66 66 65 72 2C 78 2C 6B 65 79 29 rt(buffer,x,key)
01E770: 0D 0A 20 20 20 20 20 20 20 20 72 65 70 72 69 6E .. reprin
01E780: 74 28 62 75 66 66 65 72 2C 78 29 0D 0A 20 20 20 t(buffer,x)..
01E790: 20 20 20 20 20 49 46 20 69 6E 73 65 72 74 20 4C IF insert L
01E7A0: 4F 47 4F 52 20 78 3C 62 75 66 66 65 72 21 30 20 OGOR x<buffer!0
01E7B0: 54 48 45 4E 20 78 20 3A 3D 20 78 20 2B 20 31 0D THEN x := x + 1.
01E7C0: 0A 20 20 20 20 20 20 24 29 0D 0A 20 20 20 20 20 . $)..
01E7D0: 20 45 4C 53 45 20 62 65 65 70 28 29 0D 0A 20 20 ELSE beep()..
01E7E0: 20 20 20 20 45 4E 44 43 41 53 45 20 3B 0D 0A 20 ENDCASE ;..
01E7F0: 20 20 20 43 41 53 45 20 69 67 6E 6F 72 65 3A 0D CASE ignore:.
01E800: 0A 20 20 24 29 0D 0A 20 20 52 45 53 55 4C 54 49 . $).. RESULTI
01E810: 53 20 46 41 4C 53 45 0D 0A 24 29 0D 0A 0D 0A 0D S FALSE..$).....
01E820: 0A 0D 0A 2F 2A 20 54 68 69 73 20 69 73 20 74 68 .../* This is th
01E830: 65 20 62 75 66 66 65 72 20 65 64 69 74 20 72 6F e buffer edit ro
01E840: 75 74 69 6E 65 20 2A 2F 0D 0A 0D 0A 4C 45 54 20 utine */....LET
01E850: 62 75 66 66 65 72 28 6C 69 6E 65 29 20 3D 20 56 buffer(line) = V
01E860: 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 ALOF....$(.. LE
01E870: 54 20 6B 65 79 70 72 65 73 73 20 3D 20 30 0D 0A T keypress = 0..
01E880: 20 20 24 28 0D 0A 20 20 20 20 74 61 62 28 36 2C $(.. tab(6,
01E890: 73 63 72 68 65 69 67 68 74 29 20 3B 20 77 72 69 scrheight) ; wri
01E8A0: 74 65 66 28 22 25 49 34 22 2C 6C 69 6E 65 6E 75 tef("%I4",linenu
01E8B0: 6D 62 65 72 29 0D 0A 20 20 20 20 74 61 62 28 31 mber).. tab(1
01E8C0: 38 2C 73 63 72 68 65 69 67 68 74 29 20 3B 20 77 8,scrheight) ; w
01E8D0: 72 69 74 65 66 28 22 25 49 32 22 2C 78 29 0D 0A ritef("%I2",x)..
01E8E0: 20 20 20 20 74 61 62 28 78 2C 79 29 0D 0A 20 20 tab(x,y)..
01E8F0: 20 20 63 75 72 73 65 6E 28 29 0D 0A 20 20 20 20 cursen()..
01E900: 6B 65 79 70 72 65 73 73 20 3A 3D 20 72 64 63 68 keypress := rdch
01E910: 28 29 0D 0A 20 20 20 20 63 75 72 73 64 69 28 29 ().. cursdi()
01E920: 0D 0A 20 20 20 20 6B 65 79 70 72 65 73 73 20 3A .. keypress :
01E930: 3D 20 62 75 69 6C 64 62 75 66 66 28 6C 69 6E 65 = buildbuff(line
01E940: 2C 6B 65 79 70 72 65 73 73 29 0D 0A 20 20 24 29 ,keypress).. $)
01E950: 20 52 45 50 45 41 54 55 4E 54 49 4C 20 6B 65 79 REPEATUNTIL key
01E960: 70 72 65 73 73 0D 0A 20 20 70 72 65 76 21 79 20 press.. prev!y
01E970: 3A 3D 20 6C 69 6E 65 6C 65 6E 67 74 68 28 6C 69 := linelength(li
01E980: 6E 65 2B 31 29 2D 31 0D 0A 20 20 52 45 53 55 4C ne+1)-1.. RESUL
01E990: 54 49 53 20 6B 65 79 70 72 65 73 73 0D 0A 24 29 TIS keypress..$)
01E9A0: 0D 0A 0D 0A 0D 0A 41 4E 44 20 69 6E 69 74 62 75 ......AND initbu
01E9B0: 66 66 28 6C 69 6E 65 2C 66 72 6F 6D 29 20 42 45 ff(line,from) BE
01E9C0: 0D 0A 0D 0A 24 28 0D 0A 20 20 21 6C 69 6E 65 20 ....$(.. !line
01E9D0: 3A 3D 20 30 0D 0A 20 20 24 28 0D 0A 20 20 20 20 := 0.. $(..
01E9E0: 21 6C 69 6E 65 20 3A 3D 20 21 6C 69 6E 65 20 2B !line := !line +
01E9F0: 20 31 0D 0A 20 20 20 20 6C 69 6E 65 21 28 21 6C 1.. line!(!l
01EA00: 69 6E 65 29 20 3A 3D 20 74 65 78 74 73 74 61 72 ine) := textstar
01EA10: 74 25 66 72 6F 6D 0D 0A 20 20 20 20 66 72 6F 6D t%from.. from
01EA20: 20 3A 3D 20 66 72 6F 6D 20 2B 20 31 0D 0A 20 20 := from + 1..
01EA30: 24 29 20 52 45 50 45 41 54 55 4E 54 49 4C 20 74 $) REPEATUNTIL t
01EA40: 65 78 74 73 74 61 72 74 25 28 66 72 6F 6D 2D 31 extstart%(from-1
01EA50: 29 20 3D 20 31 33 0D 0A 24 29 0D 0A 0D 0A 0D 0A ) = 13..$)......
01EA60: 0D 0A 0D 0A 2F 2A 20 54 68 65 20 61 62 6F 76 65 ..../* The above
01EA70: 20 72 6F 75 74 69 6E 65 73 20 77 6F 72 6B 20 77 routines work w
01EA80: 69 74 68 20 70 6F 69 6E 74 65 72 73 20 61 6E 64 ith pointers and
01EA90: 20 77 6F 72 64 73 2E 20 54 68 65 20 6E 65 78 74 words. The next
01EAA0: 20 73 65 74 20 6F 66 20 72 6F 75 74 69 6E 65 73 set of routines
01EAB0: 0D 0A 20 20 20 77 6F 72 6B 20 77 69 74 68 20 62 .. work with b
01EAC0: 79 74 65 73 20 61 6E 64 20 61 72 72 61 79 20 69 ytes and array i
01EAD0: 6E 64 69 63 65 73 20 2A 2F 0D 0A 0D 0A 0D 0A 4C ndices */......L
01EAE0: 45 54 20 6C 69 6E 65 6C 65 6E 67 74 68 28 66 72 ET linelength(fr
01EAF0: 6F 6D 29 20 3D 20 56 41 4C 4F 46 0D 0A 0D 0A 24 om) = VALOF....$
01EB00: 28 0D 0A 20 20 4C 45 54 20 73 6F 66 61 72 20 3D (.. LET sofar =
01EB10: 20 31 0D 0A 20 20 57 48 49 4C 45 20 74 65 78 74 1.. WHILE text
01EB20: 73 74 61 72 74 25 66 72 6F 6D 20 4E 45 20 31 33 start%from NE 13
01EB30: 20 44 4F 20 24 28 20 73 6F 66 61 72 20 3A 3D 20 DO $( sofar :=
01EB40: 73 6F 66 61 72 20 2B 20 31 20 3B 20 66 72 6F 6D sofar + 1 ; from
01EB50: 20 3A 3D 20 66 72 6F 6D 20 2B 20 31 20 24 29 0D := from + 1 $).
01EB60: 0A 20 20 52 45 53 55 4C 54 49 53 20 73 6F 66 61 . RESULTIS sofa
01EB70: 72 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 4C 45 54 r..$)........LET
01EB80: 20 77 72 69 74 65 28 66 72 6F 6D 2C 78 2C 79 29 write(from,x,y)
01EB90: 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 74 61 62 BE....$(.. tab
01EBA0: 28 78 2C 79 29 0D 0A 20 20 46 4F 52 20 61 20 3D (x,y).. FOR a =
01EBB0: 20 66 72 6F 6D 20 54 4F 20 66 72 6F 6D 20 2B 20 from TO from +
01EBC0: 6C 69 6E 65 6C 65 6E 67 74 68 28 66 72 6F 6D 29 linelength(from)
01EBD0: 20 2D 20 32 20 44 4F 20 77 72 63 68 28 74 65 78 - 2 DO wrch(tex
01EBE0: 74 73 74 61 72 74 25 61 29 0D 0A 20 20 70 72 65 tstart%a).. pre
01EBF0: 76 21 79 20 3A 3D 20 6C 69 6E 65 6C 65 6E 67 74 v!y := linelengt
01EC00: 68 28 66 72 6F 6D 29 20 2D 20 31 0D 0A 24 29 0D h(from) - 1..$).
01EC10: 0A 0D 0A 0D 0A 4C 45 54 20 73 74 61 74 75 73 28 .....LET status(
01EC20: 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 74 61 ) BE....$(.. ta
01EC30: 62 28 31 2C 73 63 72 68 65 69 67 68 74 29 0D 0A b(1,scrheight)..
01EC40: 20 20 54 45 53 54 20 76 65 72 3D 34 20 54 48 45 TEST ver=4 THE
01EC50: 4E 0D 0A 20 20 20 20 77 72 69 74 65 66 28 22 4C N.. writef("L
01EC60: 69 6E 65 3A 25 49 34 20 43 6F 6C 75 6D 6E 3A 25 ine:%I4 Column:%
01EC70: 49 32 20 28 53 54 4F 50 20 74 6F 20 6D 65 6E 75 I2 (STOP to menu
01EC80: 29 22 2C 6C 69 6E 65 6E 75 6D 62 65 72 2C 78 29 )",linenumber,x)
01EC90: 0D 0A 20 20 45 4C 53 45 0D 0A 20 20 20 20 77 72 .. ELSE.. wr
01ECA0: 69 74 65 66 28 22 4C 69 6E 65 3A 25 49 34 20 43 itef("Line:%I4 C
01ECB0: 6F 6C 75 6D 6E 3A 25 49 32 20 28 45 53 43 20 74 olumn:%I2 (ESC t
01ECC0: 6F 20 6D 65 6E 75 29 22 2C 6C 69 6E 65 6E 75 6D o menu)",linenum
01ECD0: 62 65 72 2C 78 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A ber,x)..$)......
01ECE0: 0D 0A 4C 45 54 20 63 6C 73 28 29 20 42 45 0D 0A ..LET cls() BE..
01ECF0: 0D 0A 24 28 0D 0A 20 20 63 6C 65 61 72 73 63 72 ..$(.. clearscr
01ED00: 28 29 0D 0A 20 20 63 75 72 73 6F 6E 28 29 20 3B ().. curson() ;
01ED10: 20 63 75 72 73 64 69 28 29 0D 0A 20 20 46 4F 52 cursdi().. FOR
01ED20: 20 61 20 3D 20 31 20 54 4F 20 73 63 72 68 65 69 a = 1 TO scrhei
01ED30: 67 68 74 2D 31 20 44 4F 20 70 72 65 76 21 61 20 ght-1 DO prev!a
01ED40: 3A 3D 20 30 0D 0A 20 20 73 74 61 74 75 73 28 29 := 0.. status()
01ED50: 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A ..$)............
01ED60: 2F 2A 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 /* This routine
01ED70: 77 69 6C 6C 20 6D 6F 76 65 20 74 68 65 20 74 65 will move the te
01ED80: 78 74 20 6F 6E 20 74 68 65 20 73 63 72 65 65 6E xt on the screen
01ED90: 20 64 6F 77 6E 20 61 20 6C 69 6E 65 20 61 6E 64 down a line and
01EDA0: 20 61 6C 74 65 72 20 74 68 65 0D 0A 20 20 20 70 alter the.. p
01EDB0: 72 65 76 69 6F 75 73 20 61 72 72 61 79 20 2A 2F revious array */
01EDC0: 0D 0A 0D 0A 4C 45 54 20 64 6F 77 6E 28 29 20 42 ....LET down() B
01EDD0: 45 0D 0A 0D 0A 24 28 0D 0A 20 20 74 61 62 28 31 E....$(.. tab(1
01EDE0: 2C 31 29 20 3B 20 72 65 76 6C 66 28 29 20 3B 20 ,1) ; revlf() ;
01EDF0: 77 72 63 68 28 31 33 29 0D 0A 20 20 73 74 61 74 wrch(13).. stat
01EE00: 75 73 28 29 20 3B 20 73 70 61 63 65 73 28 70 72 us() ; spaces(pr
01EE10: 65 76 21 28 73 63 72 68 65 69 67 68 74 2D 31 29 ev!(scrheight-1)
01EE20: 2D 33 33 29 0D 0A 20 20 46 4F 52 20 61 20 3D 20 -33).. FOR a =
01EE30: 73 63 72 68 65 69 67 68 74 2D 31 20 54 4F 20 32 scrheight-1 TO 2
01EE40: 20 42 59 20 2D 31 20 44 4F 20 70 72 65 76 21 61 BY -1 DO prev!a
01EE50: 20 3A 3D 20 70 72 65 76 21 28 61 2D 31 29 0D 0A := prev!(a-1)..
01EE60: 20 20 70 72 65 76 21 31 20 3A 3D 20 30 0D 0A 24 prev!1 := 0..$
01EE70: 29 0D 0A 0D 0A 41 4E 44 20 72 65 76 6C 66 28 29 )....AND revlf()
01EE80: 20 42 45 0D 0A 24 28 0D 0A 20 20 54 45 53 54 20 BE..$(.. TEST
01EE90: 76 65 72 3D 32 20 54 48 45 4E 0D 0A 20 20 20 20 ver=2 THEN..
01EEA0: 77 72 63 68 28 31 31 29 0D 0A 20 20 45 4C 53 45 wrch(11).. ELSE
01EEB0: 0D 0A 20 20 24 28 0D 0A 20 20 20 20 65 73 63 63 .. $(.. escc
01EEC0: 6F 64 65 28 27 49 27 29 0D 0A 20 20 24 29 0D 0A ode('I').. $)..
01EED0: 24 29 0D 0A 0D 0A 2F 2A 20 54 68 69 73 20 72 6F $)..../* This ro
01EEE0: 75 74 69 6E 65 20 77 69 6C 6C 20 6D 6F 76 65 20 utine will move
01EEF0: 74 68 65 20 74 65 78 74 20 75 70 20 6F 6E 65 20 the text up one
01EF00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
01EF10: 1A 00 00 00 02 09 50 E5 1A 00 C1 02 00 00 00 02 ......P.........
01EF20: 1A 00 C2 02 00 00 00 02 1A 00 C3 02 00 00 00 02 ................
01EF30: 1A 00 C4 02 00 00 00 02 1A 00 C5 02 00 00 00 02 ................
01EF40: 1A 00 C6 02 00 00 00 02 1A 00 C7 02 00 00 00 02 ................
01EF50: 1A 00 C8 02 00 00 00 02 1A 00 C9 02 00 00 00 02 ................
01EF60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EF70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EF80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EF90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EFA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EFB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EFC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EFD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EFE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EFF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01F000: 6C 69 6E 65 20 61 6E 64 20 61 6C 74 65 72 20 74 line and alter t
01F010: 68 65 20 70 72 65 76 69 6F 75 73 20 61 72 72 61 he previous arra
01F020: 79 20 2A 2F 0D 0A 0D 0A 4C 45 54 20 75 70 28 29 y */....LET up()
01F030: 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 74 61 62 BE....$(.. tab
01F040: 28 31 2C 73 63 72 68 65 69 67 68 74 29 20 3B 20 (1,scrheight) ;
01F050: 73 70 61 63 65 73 28 34 30 29 0D 0A 20 20 77 72 spaces(40).. wr
01F060: 63 68 28 31 30 29 20 3B 20 77 72 63 68 28 31 33 ch(10) ; wrch(13
01F070: 29 0D 0A 20 20 46 4F 52 20 61 20 3D 20 31 20 54 ).. FOR a = 1 T
01F080: 4F 20 73 63 72 68 65 69 67 68 74 2D 32 20 44 4F O scrheight-2 DO
01F090: 20 70 72 65 76 21 61 20 3A 3D 20 70 72 65 76 21 prev!a := prev!
01F0A0: 28 61 2B 31 29 0D 0A 20 20 70 72 65 76 21 28 73 (a+1).. prev!(s
01F0B0: 63 72 68 65 69 67 68 74 2D 31 29 20 3A 3D 20 30 crheight-1) := 0
01F0C0: 0D 0A 20 20 73 74 61 74 75 73 28 29 0D 0A 24 29 .. status()..$)
01F0D0: 0D 0A 0D 0A 0D 0A 0D 0A 2F 2A 0D 0A 20 20 20 54 ......../*.. T
01F0E0: 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C his routine will
01F0F0: 20 72 65 70 72 69 6E 74 20 74 68 65 20 73 63 72 reprint the scr
01F100: 65 65 6E 20 66 72 6F 6D 20 74 68 65 20 79 20 70 een from the y p
01F110: 6F 73 69 74 69 6F 6E 20 61 6E 64 20 74 65 78 74 osition and text
01F120: 20 70 6F 73 69 74 69 6F 6E 0D 0A 20 20 20 67 69 position.. gi
01F130: 76 65 6E 2E 0D 0A 2A 2F 0D 0A 0D 0A 4C 45 54 20 ven...*/....LET
01F140: 73 63 72 65 65 6E 28 66 72 6F 6D 2C 79 70 6F 73 screen(from,ypos
01F150: 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 46 4F ) BE....$(.. FO
01F160: 52 20 79 20 3D 20 79 70 6F 73 20 54 4F 20 73 63 R y = ypos TO sc
01F170: 72 68 65 69 67 68 74 2D 31 20 44 4F 0D 0A 20 20 rheight-1 DO..
01F180: 24 28 0D 0A 20 20 20 20 4C 45 54 20 6C 20 3D 20 $(.. LET l =
01F190: 30 0D 0A 20 20 20 20 74 61 62 28 31 2C 79 29 0D 0.. tab(1,y).
01F1A0: 0A 20 20 20 20 49 46 20 66 72 6F 6D 20 3E 20 74 . IF from > t
01F1B0: 65 78 74 65 6E 64 20 54 48 45 4E 20 24 28 20 73 extend THEN $( s
01F1C0: 70 61 63 65 73 28 38 30 29 20 3B 20 70 72 65 76 paces(80) ; prev
01F1D0: 21 79 20 3A 3D 20 30 20 3B 20 42 52 45 41 4B 20 !y := 0 ; BREAK
01F1E0: 24 29 0D 0A 20 20 20 20 6C 20 3A 3D 20 6C 69 6E $).. l := lin
01F1F0: 65 6C 65 6E 67 74 68 28 66 72 6F 6D 29 20 2D 20 elength(from) -
01F200: 31 0D 0A 20 20 20 20 46 4F 52 20 61 20 3D 20 66 1.. FOR a = f
01F210: 72 6F 6D 20 54 4F 20 66 72 6F 6D 20 2B 20 6C 20 rom TO from + l
01F220: 2D 20 31 20 44 4F 20 77 72 63 68 28 74 65 78 74 - 1 DO wrch(text
01F230: 73 74 61 72 74 25 61 29 0D 0A 20 20 20 20 73 70 start%a).. sp
01F240: 61 63 65 73 28 70 72 65 76 21 79 2D 6C 29 0D 0A aces(prev!y-l)..
01F250: 20 20 20 20 70 72 65 76 21 79 20 3A 3D 20 6C 0D prev!y := l.
01F260: 0A 20 20 20 20 66 72 6F 6D 20 3A 3D 20 66 72 6F . from := fro
01F270: 6D 20 2B 20 6C 20 2B 20 31 0D 0A 20 20 24 29 0D m + l + 1.. $).
01F280: 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 4C 45 54 20 66 .$)........LET f
01F290: 6F 72 77 61 72 64 28 70 74 72 29 20 3D 20 56 41 orward(ptr) = VA
01F2A0: 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 49 46 20 LOF....$(.. IF
01F2B0: 70 74 72 20 2B 20 6C 69 6E 65 6C 65 6E 67 74 68 ptr + linelength
01F2C0: 28 70 74 72 29 20 3E 20 74 65 78 74 65 6E 64 20 (ptr) > textend
01F2D0: 54 48 45 4E 0D 0A 20 20 20 20 24 28 20 62 65 65 THEN.. $( bee
01F2E0: 70 28 29 20 3B 20 52 45 53 55 4C 54 49 53 20 70 p() ; RESULTIS p
01F2F0: 74 72 20 24 29 0D 0A 20 20 70 74 72 20 3A 3D 20 tr $).. ptr :=
01F300: 70 74 72 20 2B 20 6C 69 6E 65 6C 65 6E 67 74 68 ptr + linelength
01F310: 28 70 74 72 29 0D 0A 20 20 52 45 53 55 4C 54 49 (ptr).. RESULTI
01F320: 53 20 70 74 72 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 S ptr..$)....AND
01F330: 20 62 61 63 6B 6C 69 6E 65 28 70 74 72 29 20 3D backline(ptr) =
01F340: 20 56 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 VALOF....$(..
01F350: 49 46 20 70 74 72 20 3D 20 30 20 54 48 45 4E 20 IF ptr = 0 THEN
01F360: 24 28 20 62 65 65 70 28 29 20 3B 20 52 45 53 55 $( beep() ; RESU
01F370: 4C 54 49 53 20 70 74 72 20 24 29 0D 0A 20 20 70 LTIS ptr $).. p
01F380: 74 72 20 3A 3D 20 70 74 72 20 2D 20 31 0D 0A 20 tr := ptr - 1..
01F390: 20 20 20 52 45 50 45 41 54 57 48 49 4C 45 20 74 REPEATWHILE t
01F3A0: 65 78 74 73 74 61 72 74 25 28 70 74 72 2D 31 29 extstart%(ptr-1)
01F3B0: 20 4E 45 20 31 33 20 4C 4F 47 41 4E 44 20 70 74 NE 13 LOGAND pt
01F3C0: 72 20 4E 45 20 30 0D 0A 20 20 52 45 53 55 4C 54 r NE 0.. RESULT
01F3D0: 49 53 20 70 74 72 0D 0A 24 29 0D 0A 0D 0A 0D 0A IS ptr..$)......
01F3E0: 2F 2A 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 /* This routine
01F3F0: 77 69 6C 6C 20 72 65 63 6F 6E 73 74 72 75 63 74 will reconstruct
01F400: 20 74 68 65 20 73 63 72 65 65 6E 20 2A 2F 0D 0A the screen */..
01F410: 0D 0A 4C 45 54 20 72 65 63 6F 6E 73 74 72 75 63 ..LET reconstruc
01F420: 74 28 66 72 6F 6D 29 20 42 45 0D 0A 0D 0A 24 28 t(from) BE....$(
01F430: 0D 0A 20 20 4C 45 54 20 74 70 74 72 20 3D 20 66 .. LET tptr = f
01F440: 72 6F 6D 0D 0A 20 20 63 6C 73 28 29 0D 0A 20 20 rom.. cls()..
01F450: 46 4F 52 20 61 20 3D 20 79 20 54 4F 20 32 20 42 FOR a = y TO 2 B
01F460: 59 20 2D 31 20 44 4F 0D 0A 20 20 24 28 0D 0A 20 Y -1 DO.. $(..
01F470: 20 20 20 54 45 53 54 20 74 70 74 72 20 3D 20 30 TEST tptr = 0
01F480: 20 54 48 45 4E 20 24 28 20 79 20 3A 3D 20 79 20 THEN $( y := y
01F490: 2D 20 61 20 2B 20 31 20 3B 20 42 52 45 41 4B 20 - a + 1 ; BREAK
01F4A0: 24 29 0D 0A 20 20 20 20 45 4C 53 45 20 74 70 74 $).. ELSE tpt
01F4B0: 72 20 3A 3D 20 62 61 63 6B 6C 69 6E 65 28 74 70 r := backline(tp
01F4C0: 74 72 29 0D 0A 20 20 24 29 0D 0A 20 20 73 63 72 tr).. $).. scr
01F4D0: 65 65 6E 28 74 70 74 72 2C 31 29 0D 0A 24 29 0D een(tptr,1)..$).
01F4E0: 0A 0D 0A 0D 0A 4C 45 54 20 65 72 72 6F 72 28 6D .....LET error(m
01F4F0: 65 73 73 61 67 65 29 20 42 45 0D 0A 0D 0A 24 28 essage) BE....$(
01F500: 0D 0A 20 20 74 61 62 28 31 2C 73 63 72 68 65 69 .. tab(1,scrhei
01F510: 67 68 74 29 20 3B 20 77 72 69 74 65 66 28 22 25 ght) ; writef("%
01F520: 53 2E 20 48 69 74 20 61 6E 79 20 6B 65 79 20 74 S. Hit any key t
01F530: 6F 20 63 6F 6E 74 69 6E 75 65 22 2C 6D 65 73 73 o continue",mess
01F540: 61 67 65 29 0D 0A 20 20 62 65 65 70 28 29 0D 0A age).. beep()..
01F550: 20 20 72 64 63 68 28 29 0D 0A 20 20 74 61 62 28 rdch().. tab(
01F560: 33 33 2C 73 63 72 68 65 69 67 68 74 29 20 3B 20 33,scrheight) ;
01F570: 73 70 61 63 65 73 28 32 30 29 20 3B 20 73 74 61 spaces(20) ; sta
01F580: 74 75 73 28 29 0D 0A 20 20 62 75 66 66 70 72 69 tus().. buffpri
01F590: 6E 74 20 3A 3D 20 54 52 55 45 0D 0A 20 20 72 65 nt := TRUE.. re
01F5A0: 63 6F 6E 73 74 72 75 63 74 28 74 65 78 74 70 74 construct(textpt
01F5B0: 72 29 0D 0A 20 20 6C 6F 6E 67 6A 75 6D 70 28 65 r).. longjump(e
01F5C0: 72 72 6C 61 62 2C 65 72 72 76 65 63 29 0D 0A 24 rrlab,errvec)..$
01F5D0: 29 0D 0A 0D 0A 0D 0A 0D 0A 4C 45 54 20 6D 61 6B )........LET mak
01F5E0: 65 73 70 61 63 65 28 61 74 2C 73 69 7A 65 29 20 espace(at,size)
01F5F0: 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 62 79 74 65 BE....$(.. byte
01F600: 6D 6F 76 65 28 74 65 78 74 73 74 61 72 74 2A 32 move(textstart*2
01F610: 2B 61 74 2C 74 65 78 74 73 74 61 72 74 2A 32 2B +at,textstart*2+
01F620: 61 74 2B 73 69 7A 65 2C 74 65 78 74 65 6E 64 2D at+size,textend-
01F630: 61 74 2B 31 29 0D 0A 20 20 74 65 78 74 65 6E 64 at+1).. textend
01F640: 20 3A 3D 20 74 65 78 74 65 6E 64 20 2B 20 73 69 := textend + si
01F650: 7A 65 0D 0A 24 29 0D 0A 0D 0A 0D 0A 41 4E 44 20 ze..$)......AND
01F660: 63 6C 6F 73 65 73 70 61 63 65 28 61 74 2C 73 69 closespace(at,si
01F670: 7A 65 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 ze) BE....$(..
01F680: 62 79 74 65 6D 6F 76 65 28 74 65 78 74 73 74 61 bytemove(textsta
01F690: 72 74 2A 32 2B 61 74 2B 73 69 7A 65 2C 74 65 78 rt*2+at+size,tex
01F6A0: 74 73 74 61 72 74 2A 32 2B 61 74 2C 74 65 78 74 tstart*2+at,text
01F6B0: 65 6E 64 2D 61 74 2D 73 69 7A 65 2B 31 29 0D 0A end-at-size+1)..
01F6C0: 20 20 74 65 78 74 65 6E 64 20 3A 3D 20 74 65 78 textend := tex
01F6D0: 74 65 6E 64 20 2D 20 73 69 7A 65 0D 0A 24 29 0D tend - size..$).
01F6E0: 0A 0D 0A 0D 0A 0D 0A 41 4E 44 20 63 6F 70 79 28 .......AND copy(
01F6F0: 66 72 6F 6D 2C 64 65 73 74 2C 6E 75 6D 62 65 72 from,dest,number
01F700: 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 46 4F ) BE....$(.. FO
01F710: 52 20 61 20 3D 20 30 20 54 4F 20 6E 75 6D 62 65 R a = 0 TO numbe
01F720: 72 2D 31 20 44 4F 20 74 65 78 74 73 74 61 72 74 r-1 DO textstart
01F730: 25 28 64 65 73 74 2B 61 29 20 3A 3D 20 66 72 6F %(dest+a) := fro
01F740: 6D 21 61 0D 0A 24 29 0D 0A 0D 0A 0D 0A 2F 2A 20 m!a..$)....../*
01F750: 41 20 62 75 66 66 65 72 20 6C 69 6E 65 20 69 73 A buffer line is
01F760: 20 74 6F 20 62 65 20 69 6E 73 65 72 74 65 64 20 to be inserted
01F770: 61 74 20 61 74 20 2A 2F 0D 0A 0D 0A 4C 45 54 20 at at */....LET
01F780: 6C 69 6E 73 65 72 74 28 6C 69 6E 65 2C 61 74 29 linsert(line,at)
01F790: 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 54 BE....$(.. LET
01F7A0: 20 63 75 72 72 65 6E 74 2C 20 6E 65 77 20 3D 20 current, new =
01F7B0: 6C 69 6E 65 6C 65 6E 67 74 68 28 61 74 29 2C 20 linelength(at),
01F7C0: 6C 69 6E 65 21 30 0D 0A 20 20 54 45 53 54 20 6E line!0.. TEST n
01F7D0: 65 77 2D 63 75 72 72 65 6E 74 2B 74 65 78 74 65 ew-current+texte
01F7E0: 6E 64 20 3C 20 6D 61 78 63 68 72 20 54 48 45 4E nd < maxchr THEN
01F7F0: 0D 0A 20 20 24 28 0D 0A 20 20 20 20 54 45 53 54 .. $(.. TEST
01F800: 20 63 75 72 72 65 6E 74 3E 6E 65 77 20 54 48 45 current>new THE
01F810: 4E 20 63 6C 6F 73 65 73 70 61 63 65 28 61 74 2C N closespace(at,
01F820: 63 75 72 72 65 6E 74 2D 6E 65 77 29 0D 0A 20 20 current-new)..
01F830: 20 20 45 4C 53 45 20 49 46 20 63 75 72 72 65 6E ELSE IF curren
01F840: 74 3C 6E 65 77 20 54 48 45 4E 20 6D 61 6B 65 73 t<new THEN makes
01F850: 70 61 63 65 28 61 74 2C 6E 65 77 2D 63 75 72 72 pace(at,new-curr
01F860: 65 6E 74 29 0D 0A 20 20 20 20 63 6F 70 79 28 6C ent).. copy(l
01F870: 69 6E 65 2B 31 2C 61 74 2C 6E 65 77 29 0D 0A 20 ine+1,at,new)..
01F880: 20 24 29 0D 0A 20 20 45 4C 53 45 20 65 72 72 6F $).. ELSE erro
01F890: 72 28 22 4E 6F 20 72 6F 6F 6D 22 29 0D 0A 24 29 r("No room")..$)
01F8A0: 0D 0A 0D 0A 0D 0A 0D 0A 4C 45 54 20 67 65 74 66 ........LET getf
01F8B0: 69 6C 65 6E 61 6D 65 28 78 2C 79 2C 6E 61 6D 65 ilename(x,y,name
01F8C0: 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 74 61 ) BE....$(.. ta
01F8D0: 62 28 78 2C 79 29 20 3B 20 77 72 69 74 65 73 28 b(x,y) ; writes(
01F8E0: 22 45 6E 74 65 72 20 66 69 6C 65 20 6E 61 6D 65 "Enter file name
01F8F0: 3A 20 22 29 0D 0A 20 20 63 75 72 73 65 6E 28 29 : ").. cursen()
01F900: 20 3B 20 72 65 61 64 73 28 6E 61 6D 65 29 20 3B ; reads(name) ;
01F910: 20 63 75 72 73 64 69 28 29 0D 0A 20 20 6E 65 77 cursdi().. new
01F920: 6C 69 6E 65 28 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A line()..$)......
01F930: 0D 0A 4C 45 54 20 6C 6F 61 64 74 65 78 74 28 6C ..LET loadtext(l
01F940: 69 6E 65 29 20 3D 20 56 41 4C 4F 46 0D 0A 0D 0A ine) = VALOF....
01F950: 24 28 0D 0A 20 20 4C 45 54 20 6E 61 6D 65 20 3D $(.. LET name =
01F960: 20 56 45 43 20 32 30 0D 0A 20 20 67 65 74 66 69 VEC 20.. getfi
01F970: 6C 65 6E 61 6D 65 28 32 35 2C 31 39 2C 6E 61 6D lename(25,19,nam
01F980: 65 29 0D 0A 20 20 54 45 53 54 20 66 69 6E 64 69 e).. TEST findi
01F990: 6E 70 75 74 28 6E 61 6D 65 2C 66 69 6C 65 29 20 nput(name,file)
01F9A0: 54 48 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 THEN.. $(..
01F9B0: 4C 45 54 20 63 68 61 72 20 3D 20 30 0D 0A 20 20 LET char = 0..
01F9C0: 20 20 74 65 78 74 70 74 72 2C 20 78 2C 20 79 2C textptr, x, y,
01F9D0: 20 6C 69 6E 65 6E 75 6D 62 65 72 2C 20 74 65 78 linenumber, tex
01F9E0: 74 65 6E 64 20 3A 3D 20 30 2C 20 31 2C 20 31 2C tend := 0, 1, 1,
01F9F0: 20 31 2C 20 2D 31 0D 0A 20 20 20 20 74 65 78 74 1, -1.. text
01FA00: 73 74 61 72 74 25 30 20 3A 3D 20 31 33 0D 0A 20 start%0 := 13..
01FA10: 20 20 20 63 68 61 72 20 3A 3D 20 72 65 61 64 63 char := readc
01FA20: 68 28 66 69 6C 65 29 0D 0A 20 20 20 20 55 4E 54 h(file).. UNT
01FA30: 49 4C 20 63 68 61 72 20 3D 20 73 6F 66 74 65 6F IL char = softeo
01FA40: 66 63 68 20 4C 4F 47 4F 52 20 63 68 61 72 20 3D fch LOGOR char =
01FA50: 20 65 6E 64 73 74 72 65 61 6D 63 68 20 4C 4F 47 endstreamch LOG
01FA60: 4F 52 20 74 65 78 74 65 6E 64 20 3D 20 6D 61 78 OR textend = max
01FA70: 63 68 72 20 44 4F 0D 0A 20 20 20 20 24 28 0D 0A chr DO.. $(..
01FA80: 20 20 20 20 20 20 55 4E 4C 45 53 53 20 63 68 61 UNLESS cha
01FA90: 72 20 3D 20 31 30 20 54 48 45 4E 0D 0A 20 20 20 r = 10 THEN..
01FAA0: 20 20 20 24 28 0D 0A 20 20 20 20 20 20 20 20 74 $(.. t
01FAB0: 65 78 74 65 6E 64 20 3A 3D 20 74 65 78 74 65 6E extend := texten
01FAC0: 64 20 2B 20 31 0D 0A 20 20 20 20 20 20 20 20 74 d + 1.. t
01FAD0: 65 78 74 73 74 61 72 74 25 74 65 78 74 65 6E 64 extstart%textend
01FAE0: 20 3A 3D 20 63 68 61 72 0D 0A 20 20 20 20 20 20 := char..
01FAF0: 24 29 0D 0A 20 20 20 20 20 20 63 68 61 72 20 3A $).. char :
01FB00: 3D 20 72 65 61 64 63 68 28 66 69 6C 65 29 0D 0A = readch(file)..
01FB10: 20 20 20 20 24 29 0D 0A 20 20 20 20 55 4E 4C 45 $).. UNLE
01FB20: 53 53 20 74 65 78 74 73 74 61 72 74 25 74 65 78 SS textstart%tex
01FB30: 74 65 6E 64 20 3D 20 31 33 20 44 4F 0D 0A 20 20 tend = 13 DO..
01FB40: 20 20 24 28 0D 0A 20 20 20 20 20 20 74 65 78 74 $(.. text
01FB50: 65 6E 64 20 3A 3D 20 74 65 78 74 65 6E 64 20 2B end := textend +
01FB60: 20 31 0D 0A 20 20 20 20 20 20 74 65 78 74 73 74 1.. textst
01FB70: 61 72 74 25 74 65 78 74 65 6E 64 20 3A 3D 20 31 art%textend := 1
01FB80: 33 20 20 20 20 0D 0A 20 20 20 20 24 29 0D 0A 20 3 .. $)..
01FB90: 20 20 20 49 46 20 74 65 78 74 65 6E 64 20 3E 3D IF textend >=
01FBA0: 20 6D 61 78 63 68 72 20 54 48 45 4E 0D 0A 20 20 maxchr THEN..
01FBB0: 20 20 24 28 0D 0A 20 20 20 20 20 20 74 65 78 74 $(.. text
01FBC0: 65 6E 64 20 3A 3D 20 74 65 78 74 65 6E 64 20 2D end := textend -
01FBD0: 20 31 0D 0A 20 20 20 20 20 20 74 65 78 74 73 74 1.. textst
01FBE0: 61 72 74 25 74 65 78 74 65 6E 64 20 3A 3D 20 31 art%textend := 1
01FBF0: 33 0D 0A 20 20 20 20 20 20 63 6C 6F 73 65 69 6E 3.. closein
01FC00: 28 66 69 6C 65 29 0D 0A 20 20 20 20 20 20 69 6E (file).. in
01FC10: 69 74 62 75 66 66 28 6C 69 6E 65 2C 30 29 0D 0A itbuff(line,0)..
01FC20: 20 20 20 20 20 20 65 72 72 6F 72 28 22 4E 6F 20 error("No
01FC30: 72 6F 6F 6D 22 29 0D 0A 20 20 20 20 24 29 0D 0A room").. $)..
01FC40: 20 20 20 20 49 46 20 74 65 78 74 65 6E 64 20 3D IF textend =
01FC50: 20 2D 31 20 54 48 45 4E 20 74 65 78 74 65 6E 64 -1 THEN textend
01FC60: 20 3A 3D 20 30 0D 0A 20 20 20 20 63 6C 6F 73 65 := 0.. close
01FC70: 69 6E 28 66 69 6C 65 29 0D 0A 20 20 20 20 52 45 in(file).. RE
01FC80: 53 55 4C 54 49 53 20 54 52 55 45 0D 0A 20 20 24 SULTIS TRUE.. $
01FC90: 29 0D 0A 20 20 45 4C 53 45 0D 0A 20 20 24 28 0D ).. ELSE.. $(.
01FCA0: 0A 20 20 20 20 77 72 69 74 65 66 28 22 25 53 20 . writef("%S
01FCB0: 6E 6F 74 20 66 6F 75 6E 64 22 2C 6E 61 6D 65 29 not found",name)
01FCC0: 0D 0A 20 20 20 20 72 64 63 68 28 29 0D 0A 20 20 .. rdch()..
01FCD0: 20 20 52 45 53 55 4C 54 49 53 20 46 41 4C 53 45 RESULTIS FALSE
01FCE0: 0D 0A 20 20 24 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A .. $)..$)......
01FCF0: 41 4E 44 20 73 61 76 65 74 65 78 74 28 29 20 3D AND savetext() =
01FD00: 20 56 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 VALOF....$(..
01FD10: 4C 45 54 20 6E 61 6D 65 20 3D 20 56 45 43 20 32 LET name = VEC 2
01FD20: 30 0D 0A 20 20 4C 45 54 20 64 69 73 63 65 72 72 0.. LET discerr
01FD30: 6F 72 28 66 69 6C 65 29 20 3D 20 56 41 4C 4F 46 or(file) = VALOF
01FD40: 0D 0A 20 20 24 28 0D 0A 20 20 20 20 77 72 69 74 .. $(.. writ
01FD50: 65 73 28 22 44 69 73 63 20 65 72 72 6F 72 2E 20 es("Disc error.
01FD60: 48 69 74 20 61 20 6B 65 79 22 29 0D 0A 20 20 20 Hit a key")..
01FD70: 20 72 64 63 68 28 29 0D 0A 20 20 20 20 63 6C 6F rdch().. clo
01FD80: 73 65 6F 75 74 28 66 69 6C 65 29 0D 0A 20 20 20 seout(file)..
01FD90: 20 52 45 53 55 4C 54 49 53 20 46 41 4C 53 45 0D RESULTIS FALSE.
01FDA0: 0A 20 20 24 29 0D 0A 20 20 67 65 74 66 69 6C 65 . $).. getfile
01FDB0: 6E 61 6D 65 28 32 35 2C 31 39 2C 6E 61 6D 65 29 name(25,19,name)
01FDC0: 0D 0A 20 20 54 45 53 54 20 66 69 6E 64 6F 75 74 .. TEST findout
01FDD0: 70 75 74 28 6E 61 6D 65 2C 66 69 6C 65 29 20 54 put(name,file) T
01FDE0: 48 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 46 HEN.. $(.. F
01FDF0: 4F 52 20 61 20 3D 20 30 20 54 4F 20 74 65 78 74 OR a = 0 TO text
01FE00: 65 6E 64 20 44 4F 0D 0A 20 20 20 20 24 28 0D 0A end DO.. $(..
01FE10: 20 20 20 20 20 20 55 4E 4C 45 53 53 20 77 72 69 UNLESS wri
01FE20: 74 65 63 68 28 74 65 78 74 73 74 61 72 74 25 61 tech(textstart%a
01FE30: 2C 66 69 6C 65 29 20 54 48 45 4E 20 52 45 53 55 ,file) THEN RESU
01FE40: 4C 54 49 53 20 64 69 73 63 65 72 72 6F 72 28 66 LTIS discerror(f
01FE50: 69 6C 65 29 0D 0A 20 20 20 20 20 20 49 46 20 74 ile).. IF t
01FE60: 65 78 74 73 74 61 72 74 25 61 20 3D 20 31 33 20 extstart%a = 13
01FE70: 54 48 45 4E 20 55 4E 4C 45 53 53 20 77 72 69 74 THEN UNLESS writ
01FE80: 65 63 68 28 31 30 2C 66 69 6C 65 29 20 54 48 45 ech(10,file) THE
01FE90: 4E 0D 0A 20 20 20 20 20 20 20 20 52 45 53 55 4C N.. RESUL
01FEA0: 54 49 53 20 64 69 73 63 65 72 72 6F 72 28 66 69 TIS discerror(fi
01FEB0: 6C 65 29 0D 0A 20 20 20 20 24 29 0D 0A 20 20 20 le).. $)..
01FEC0: 20 63 6C 6F 73 65 6F 75 74 28 66 69 6C 65 29 0D closeout(file).
01FED0: 0A 20 20 20 20 52 45 53 55 4C 54 49 53 20 54 52 . RESULTIS TR
01FEE0: 55 45 0D 0A 20 20 24 29 0D 0A 20 20 45 4C 53 45 UE.. $).. ELSE
01FEF0: 0D 0A 20 20 24 28 0D 0A 20 20 20 20 77 72 69 74 .. $(.. writ
01FF00: 65 73 28 22 43 61 6E 6E 6F 74 20 6F 70 65 6E 20 es("Cannot open
01FF10: 22 29 20 3B 20 77 72 69 74 65 73 28 6E 61 6D 65 ") ; writes(name
01FF20: 29 0D 0A 20 20 20 20 52 45 53 55 4C 54 49 53 20 ).. RESULTIS
01FF30: 46 41 4C 53 45 0D 0A 20 20 24 29 0D 0A 24 29 0D FALSE.. $)..$).
01FF40: 0A 0D 0A 0D 0A 41 4E 44 20 67 6F 6C 69 6E 65 28 .....AND goline(
01FF50: 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 ) BE....$(.. LE
01FF60: 54 20 6C 69 6E 65 6E 75 6D 20 3D 20 30 0D 0A 20 T linenum = 0..
01FF70: 20 6C 69 6E 65 6E 75 6D 62 65 72 20 3A 3D 20 31 linenumber := 1
01FF80: 0D 0A 20 20 74 61 62 28 32 35 2C 31 39 29 0D 0A .. tab(25,19)..
01FF90: 20 20 77 72 69 74 65 66 28 22 45 6E 74 65 72 20 writef("Enter
01FFA0: 6C 69 6E 65 20 6E 75 6D 62 65 72 3A 20 22 29 0D line number: ").
01FFB0: 0A 20 20 63 75 72 73 65 6E 28 29 20 3B 20 6C 69 . cursen() ; li
01FFC0: 6E 65 6E 75 6D 20 3A 3D 20 72 65 61 64 6E 28 29 nenum := readn()
01FFD0: 20 3B 20 63 75 72 73 64 69 28 29 0D 0A 20 20 74 ; cursdi().. t
01FFE0: 65 78 74 70 74 72 2C 20 78 20 3A 3D 20 30 2C 20 extptr, x := 0,
01FFF0: 31 0D 0A 20 20 46 4F 52 20 63 6F 75 6E 74 20 3D 1.. FOR count =
020000: 20 32 20 54 4F 20 6C 69 6E 65 6E 75 6D 20 44 4F 2 TO linenum DO
020010: 0D 0A 20 20 24 28 0D 0A 20 20 20 20 4C 45 54 20 .. $(.. LET
020020: 6F 70 74 72 20 3D 20 74 65 78 74 70 74 72 0D 0A optr = textptr..
020030: 20 20 20 20 74 65 78 74 70 74 72 20 3A 3D 20 66 textptr := f
020040: 6F 72 77 61 72 64 28 74 65 78 74 70 74 72 29 0D orward(textptr).
020050: 0A 20 20 20 20 49 46 20 6F 70 74 72 20 3D 20 74 . IF optr = t
020060: 65 78 74 70 74 72 20 54 48 45 4E 20 42 52 45 41 extptr THEN BREA
020070: 4B 0D 0A 20 20 20 20 6C 69 6E 65 6E 75 6D 62 65 K.. linenumbe
020080: 72 20 3A 3D 20 6C 69 6E 65 6E 75 6D 62 65 72 20 r := linenumber
020090: 2B 20 31 0D 0A 20 20 24 29 0D 0A 20 20 79 20 3A + 1.. $).. y :
0200A0: 3D 20 31 32 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A = 12..$)........
0200B0: 2F 2A 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 /* This routine
0200C0: 63 68 65 63 6B 73 20 66 6F 72 20 61 20 6D 61 74 checks for a mat
0200D0: 63 68 20 2A 2F 0D 0A 0D 0A 41 4E 44 20 6D 61 74 ch */....AND mat
0200E0: 63 68 28 66 72 6F 6D 2C 74 61 72 67 65 74 29 20 ch(from,target)
0200F0: 3D 20 56 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 = VALOF....$(..
020100: 20 46 4F 52 20 61 20 3D 20 31 20 54 4F 20 74 61 FOR a = 1 TO ta
020110: 72 67 65 74 25 30 20 44 4F 0D 0A 20 20 20 20 49 rget%0 DO.. I
020120: 46 20 74 65 78 74 73 74 61 72 74 25 28 66 72 6F F textstart%(fro
020130: 6D 2B 61 2D 31 29 20 4E 45 20 74 61 72 67 65 74 m+a-1) NE target
020140: 25 61 20 54 48 45 4E 20 52 45 53 55 4C 54 49 53 %a THEN RESULTIS
020150: 20 46 41 4C 53 45 0D 0A 20 20 52 45 53 55 4C 54 FALSE.. RESULT
020160: 49 53 20 54 52 55 45 0D 0A 24 29 0D 0A 0D 0A 0D IS TRUE..$).....
020170: 0A 0D 0A 2F 2A 20 54 68 69 73 20 69 73 20 74 68 .../* This is th
020180: 65 20 66 69 6E 64 20 73 74 72 69 6E 67 20 72 6F e find string ro
020190: 75 74 69 6E 65 20 2A 2F 0D 0A 0D 0A 41 4E 44 20 utine */....AND
0201A0: 66 69 6E 64 73 74 72 69 6E 67 28 29 20 42 45 0D findstring() BE.
0201B0: 0A 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 6F 70 74 ...$(.. LET opt
0201C0: 72 2C 20 6F 78 2C 20 6F 79 2C 20 6F 6C 69 6E 65 r, ox, oy, oline
0201D0: 20 3D 20 74 65 78 74 70 74 72 2C 20 78 2C 20 79 = textptr, x, y
0201E0: 2C 20 6C 69 6E 65 6E 75 6D 62 65 72 0D 0A 20 20 , linenumber..
0201F0: 4C 45 54 20 73 65 61 72 63 68 20 3D 20 56 45 43 LET search = VEC
020200: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
020210: 1B 00 00 00 02 09 50 E5 1B 00 C1 02 00 00 00 02 ......P.........
020220: 1B 00 C2 02 00 00 00 02 1B 00 C3 02 00 00 00 02 ................
020230: 1B 00 C4 02 00 00 00 02 1B 00 C5 02 00 00 00 02 ................
020240: 1B 00 C6 02 00 00 00 02 1B 00 C7 02 00 00 00 02 ................
020250: 1B 00 C8 02 00 00 00 02 1B 00 C9 02 00 00 00 02 ................
020260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
020270: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
020280: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
020290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0202A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0202B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0202C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0202D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0202E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0202F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
020300: 20 32 30 0D 0A 20 20 74 61 62 28 32 35 2C 31 39 20.. tab(25,19
020310: 29 0D 0A 20 20 77 72 69 74 65 66 28 22 45 6E 74 ).. writef("Ent
020320: 65 72 20 73 74 72 69 6E 67 3A 20 22 29 0D 0A 20 er string: ")..
020330: 20 63 75 72 73 65 6E 28 29 20 3B 20 72 65 61 64 cursen() ; read
020340: 73 28 73 65 61 72 63 68 29 20 3B 20 63 75 72 73 s(search) ; curs
020350: 64 69 28 29 0D 0A 20 20 74 65 78 74 70 74 72 20 di().. textptr
020360: 3A 3D 20 74 65 78 74 70 74 72 20 2B 20 78 20 2D := textptr + x -
020370: 20 31 0D 0A 20 20 55 4E 4C 45 53 53 20 74 65 78 1.. UNLESS tex
020380: 74 73 74 61 72 74 25 74 65 78 74 70 74 72 3D 31 tstart%textptr=1
020390: 33 20 54 48 45 4E 20 74 65 78 74 70 74 72 20 3A 3 THEN textptr :
0203A0: 3D 20 74 65 78 74 70 74 72 20 2B 20 31 0D 0A 20 = textptr + 1..
0203B0: 20 55 4E 4C 45 53 53 20 74 65 78 74 70 74 72 20 UNLESS textptr
0203C0: 3E 3D 20 74 65 78 74 65 6E 64 20 44 4F 0D 0A 20 >= textend DO..
0203D0: 20 24 28 0D 0A 20 20 20 20 54 45 53 54 20 74 65 $(.. TEST te
0203E0: 78 74 73 74 61 72 74 25 74 65 78 74 70 74 72 3D xtstart%textptr=
0203F0: 31 33 20 54 48 45 4E 0D 0A 20 20 20 20 20 20 6C 13 THEN.. l
020400: 69 6E 65 6E 75 6D 62 65 72 20 3A 3D 20 6C 69 6E inenumber := lin
020410: 65 6E 75 6D 62 65 72 20 2B 20 31 0D 0A 20 20 20 enumber + 1..
020420: 20 45 4C 53 45 0D 0A 20 20 20 20 24 28 0D 0A 20 ELSE.. $(..
020430: 20 20 20 20 20 49 46 20 6D 61 74 63 68 28 74 65 IF match(te
020440: 78 74 70 74 72 2C 73 65 61 72 63 68 29 20 54 48 xtptr,search) TH
020450: 45 4E 0D 0A 20 20 20 20 20 20 24 28 0D 0A 20 20 EN.. $(..
020460: 20 20 20 20 20 20 6F 70 74 72 20 3A 3D 20 74 65 optr := te
020470: 78 74 70 74 72 0D 0A 20 20 20 20 20 20 20 20 57 xtptr.. W
020480: 48 49 4C 45 20 74 65 78 74 73 74 61 72 74 25 28 HILE textstart%(
020490: 74 65 78 74 70 74 72 2D 31 29 20 4E 45 20 31 33 textptr-1) NE 13
0204A0: 20 4C 4F 47 41 4E 44 20 74 65 78 74 70 74 72 20 LOGAND textptr
0204B0: 4E 45 20 30 20 44 4F 0D 0A 20 20 20 20 20 20 20 NE 0 DO..
0204C0: 20 20 20 74 65 78 74 70 74 72 20 3A 3D 20 74 65 textptr := te
0204D0: 78 74 70 74 72 20 2D 20 31 0D 0A 20 20 20 20 20 xtptr - 1..
0204E0: 20 20 20 78 2C 20 79 20 3A 3D 20 6F 70 74 72 20 x, y := optr
0204F0: 2D 20 74 65 78 74 70 74 72 20 2B 20 31 2C 20 31 - textptr + 1, 1
020500: 32 0D 0A 20 20 20 20 20 20 20 20 42 52 45 41 4B 2.. BREAK
020510: 0D 0A 20 20 20 20 20 20 24 29 0D 0A 20 20 20 20 .. $)..
020520: 24 29 0D 0A 20 20 20 20 74 65 78 74 70 74 72 20 $).. textptr
020530: 3A 3D 20 74 65 78 74 70 74 72 20 2B 20 31 0D 0A := textptr + 1..
020540: 20 20 20 20 49 46 20 74 65 78 74 70 74 72 20 3E IF textptr >
020550: 3D 20 74 65 78 74 65 6E 64 20 54 48 45 4E 0D 0A = textend THEN..
020560: 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 74 65 $(.. te
020570: 78 74 70 74 72 2C 20 78 2C 20 79 2C 20 6C 69 6E xtptr, x, y, lin
020580: 65 6E 75 6D 62 65 72 20 3A 3D 20 6F 70 74 72 2C enumber := optr,
020590: 20 6F 78 2C 20 6F 79 2C 20 6F 6C 69 6E 65 0D 0A ox, oy, oline..
0205A0: 20 20 20 20 20 20 42 52 45 41 4B 0D 0A 20 20 20 BREAK..
0205B0: 20 24 29 0D 0A 20 20 24 29 20 52 45 50 45 41 54 $).. $) REPEAT
0205C0: 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 2F 2A 20 54 ..$)......../* T
0205D0: 68 69 73 20 69 73 20 74 68 65 20 6D 61 69 6E 20 his is the main
0205E0: 6D 65 6E 75 20 72 6F 75 74 69 6E 65 20 2A 2F 0D menu routine */.
0205F0: 0A 0D 0A 4C 45 54 20 6D 65 6E 75 28 6C 69 6E 65 ...LET menu(line
020600: 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 ) BE....$(.. LE
020610: 54 20 74 70 74 72 20 3D 20 30 0D 0A 20 20 6C 69 T tptr = 0.. li
020620: 6E 73 65 72 74 28 6C 69 6E 65 2C 74 65 78 74 70 nsert(line,textp
020630: 74 72 29 0D 0A 20 20 24 28 0D 0A 20 20 20 20 4C tr).. $(.. L
020640: 45 54 20 6B 65 79 20 3D 20 30 0D 0A 20 20 20 20 ET key = 0..
020650: 63 6C 65 61 72 73 63 72 28 29 0D 0A 20 20 20 20 clearscr()..
020660: 74 61 62 28 33 32 2C 34 29 20 20 3B 20 77 72 69 tab(32,4) ; wri
020670: 74 65 73 28 22 42 43 50 4C 20 65 64 69 74 6F 72 tes("BCPL editor
020680: 22 29 0D 0A 20 20 20 20 74 61 62 28 33 32 2C 35 ").. tab(32,5
020690: 29 20 20 3B 20 77 72 69 74 65 73 28 22 2D 2D 2D ) ; writes("---
0206A0: 2D 2D 2D 2D 2D 2D 2D 2D 22 29 0D 0A 20 20 20 20 --------")..
0206B0: 74 61 62 28 33 32 2C 39 29 20 20 3B 20 77 72 69 tab(32,9) ; wri
0206C0: 74 65 73 28 22 4C 3A 20 4C 6F 61 64 20 74 65 78 tes("L: Load tex
0206D0: 74 22 29 0D 0A 20 20 20 20 74 61 62 28 33 32 2C t").. tab(32,
0206E0: 31 30 29 20 3B 20 77 72 69 74 65 73 28 22 53 3A 10) ; writes("S:
0206F0: 20 53 61 76 65 20 74 65 78 74 22 29 0D 0A 20 20 Save text")..
020700: 20 20 74 61 62 28 33 32 2C 31 31 29 20 3B 20 77 tab(32,11) ; w
020710: 72 69 74 65 73 28 22 45 3A 20 45 64 69 74 20 74 rites("E: Edit t
020720: 65 78 74 22 29 0D 0A 20 20 20 20 74 61 62 28 33 ext").. tab(3
020730: 32 2C 31 32 29 20 3B 20 77 72 69 74 65 73 28 22 2,12) ; writes("
020740: 47 3A 20 47 6F 74 6F 20 6C 69 6E 65 22 29 0D 0A G: Goto line")..
020750: 20 20 20 20 74 61 62 28 33 32 2C 31 33 29 20 3B tab(32,13) ;
020760: 20 77 72 69 74 65 73 28 22 46 3A 20 46 69 6E 64 writes("F: Find
020770: 20 73 74 72 69 6E 67 22 29 0D 0A 20 20 20 20 74 string").. t
020780: 61 62 28 33 32 2C 31 34 29 20 3B 20 77 72 69 74 ab(32,14) ; writ
020790: 65 73 28 22 51 3A 20 51 75 69 74 22 29 0D 0A 20 es("Q: Quit")..
0207A0: 20 20 20 74 61 62 28 33 32 2C 31 37 29 20 3B 20 tab(32,17) ;
0207B0: 77 72 69 74 65 73 28 22 53 65 6C 65 63 74 20 6F writes("Select o
0207C0: 70 74 69 6F 6E 3A 20 22 29 0D 0A 20 20 20 20 24 ption: ").. $
0207D0: 28 20 63 75 72 73 65 6E 28 29 0D 0A 20 20 20 20 ( cursen()..
0207E0: 20 20 20 6B 65 79 20 3A 3D 20 72 64 63 68 28 29 key := rdch()
0207F0: 0D 0A 20 20 20 20 20 20 20 63 75 72 73 64 69 28 .. cursdi(
020800: 29 0D 0A 20 20 20 20 24 29 20 52 45 50 45 41 54 ).. $) REPEAT
020810: 57 48 49 4C 45 20 6B 65 79 20 3D 20 69 67 6E 6F WHILE key = igno
020820: 72 65 0D 0A 20 20 20 20 53 57 49 54 43 48 4F 4E re.. SWITCHON
020830: 20 6B 65 79 20 49 4E 54 4F 0D 0A 20 20 20 20 24 key INTO.. $
020840: 28 0D 0A 20 20 20 20 20 20 43 41 53 45 20 27 4C (.. CASE 'L
020850: 27 3A 20 43 41 53 45 20 27 6C 27 3A 20 77 72 63 ': CASE 'l': wrc
020860: 68 28 27 4C 27 29 20 3B 20 49 46 20 6C 6F 61 64 h('L') ; IF load
020870: 74 65 78 74 28 6C 69 6E 65 29 20 54 48 45 4E 20 text(line) THEN
020880: 42 52 45 41 4B 20 3B 20 45 4E 44 43 41 53 45 0D BREAK ; ENDCASE.
020890: 0A 20 20 20 20 20 20 43 41 53 45 20 27 53 27 3A . CASE 'S':
0208A0: 20 43 41 53 45 20 27 73 27 3A 20 77 72 63 68 28 CASE 's': wrch(
0208B0: 27 53 27 29 20 3B 20 49 46 20 73 61 76 65 74 65 'S') ; IF savete
0208C0: 78 74 28 29 20 54 48 45 4E 20 42 52 45 41 4B 20 xt() THEN BREAK
0208D0: 3B 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 ; ENDCASE..
0208E0: 20 43 41 53 45 20 27 47 27 3A 20 43 41 53 45 20 CASE 'G': CASE
0208F0: 27 67 27 3A 20 77 72 63 68 28 27 47 27 29 20 3B 'g': wrch('G') ;
020900: 20 67 6F 6C 69 6E 65 28 29 20 3B 20 42 52 45 41 goline() ; BREA
020910: 4B 0D 0A 20 20 20 20 20 20 43 41 53 45 20 27 46 K.. CASE 'F
020920: 27 3A 20 43 41 53 45 20 27 66 27 3A 20 77 72 63 ': CASE 'f': wrc
020930: 68 28 27 46 27 29 20 3B 20 78 20 3A 3D 20 76 61 h('F') ; x := va
020940: 6C 69 64 61 74 65 28 6C 69 6E 65 2C 78 29 0D 0A lidate(line,x)..
020950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
020960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
020970: 20 20 20 20 20 20 66 69 6E 64 73 74 72 69 6E 67 findstring
020980: 28 29 20 3B 20 42 52 45 41 4B 0D 0A 20 20 20 20 () ; BREAK..
020990: 20 20 43 41 53 45 20 27 45 27 3A 20 43 41 53 45 CASE 'E': CASE
0209A0: 20 27 65 27 3A 20 77 72 63 68 28 27 45 27 29 20 'e': wrch('E')
0209B0: 3B 20 42 52 45 41 4B 0D 0A 20 20 20 20 20 20 43 ; BREAK.. C
0209C0: 41 53 45 20 27 51 27 3A 20 43 41 53 45 20 27 71 ASE 'Q': CASE 'q
0209D0: 27 3A 20 77 72 63 68 28 27 51 27 29 20 3B 20 66 ': wrch('Q') ; f
0209E0: 69 6E 69 73 68 0D 0A 20 20 20 20 24 29 0D 0A 20 inish.. $)..
0209F0: 20 20 20 62 65 65 70 28 29 0D 0A 20 20 24 29 20 beep().. $)
020A00: 52 45 50 45 41 54 0D 0A 20 20 72 65 63 6F 6E 73 REPEAT.. recons
020A10: 74 72 75 63 74 28 74 65 78 74 70 74 72 29 0D 0A truct(textptr)..
020A20: 24 29 0D 0A 0D 0A 0D 0A 0D 0A 2F 2A 20 54 68 69 $)......../* Thi
020A30: 73 20 72 6F 75 74 69 6E 65 20 64 65 61 6C 73 20 s routine deals
020A40: 77 69 74 68 20 74 68 65 20 64 65 6C 65 74 69 6F with the deletio
020A50: 6E 20 6F 66 20 61 20 43 52 20 2A 2F 0D 0A 0D 0A n of a CR */....
020A60: 4C 45 54 20 64 65 6C 65 74 65 6C 28 6C 69 6E 65 LET deletel(line
020A70: 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 54 45 ) BE....$(.. TE
020A80: 53 54 20 74 65 78 74 70 74 72 20 4E 45 20 30 20 ST textptr NE 0
020A90: 54 48 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 THEN.. $(..
020AA0: 4C 45 54 20 6F 70 74 72 2C 20 74 70 74 72 20 3D LET optr, tptr =
020AB0: 20 74 65 78 74 70 74 72 2C 20 62 61 63 6B 6C 69 textptr, backli
020AC0: 6E 65 28 74 65 78 74 70 74 72 29 0D 0A 20 20 20 ne(textptr)..
020AD0: 20 54 45 53 54 20 6C 69 6E 65 6C 65 6E 67 74 68 TEST linelength
020AE0: 28 74 70 74 72 29 20 2B 20 6C 69 6E 65 21 30 20 (tptr) + line!0
020AF0: 2D 20 31 20 3C 20 38 30 20 54 48 45 4E 0D 0A 20 - 1 < 80 THEN..
020B00: 20 20 20 24 28 0D 0A 20 20 20 20 20 20 49 46 20 $(.. IF
020B10: 6C 69 6E 65 21 30 2D 6C 69 6E 65 6C 65 6E 67 74 line!0-linelengt
020B20: 68 28 74 65 78 74 70 74 72 29 2B 74 65 78 74 65 h(textptr)+texte
020B30: 6E 64 20 3E 3D 20 6D 61 78 63 68 72 20 54 48 45 nd >= maxchr THE
020B40: 4E 20 65 72 72 6F 72 28 22 4E 6F 20 72 6F 6F 6D N error("No room
020B50: 22 29 0D 0A 20 20 20 20 20 20 74 65 78 74 73 74 ").. textst
020B60: 61 72 74 25 28 74 65 78 74 70 74 72 2D 31 29 20 art%(textptr-1)
020B70: 3A 3D 20 30 0D 0A 20 20 20 20 20 20 6C 69 6E 73 := 0.. lins
020B80: 65 72 74 28 6C 69 6E 65 2C 74 65 78 74 70 74 72 ert(line,textptr
020B90: 2D 31 29 0D 0A 20 20 20 20 20 20 74 65 78 74 70 -1).. textp
020BA0: 74 72 20 3A 3D 20 74 70 74 72 0D 0A 20 20 20 20 tr := tptr..
020BB0: 20 20 6C 69 6E 65 6E 75 6D 62 65 72 20 3A 3D 20 linenumber :=
020BC0: 6C 69 6E 65 6E 75 6D 62 65 72 20 2D 20 31 0D 0A linenumber - 1..
020BD0: 20 20 20 20 20 20 78 20 3A 3D 20 6C 69 6E 65 6C x := linel
020BE0: 65 6E 67 74 68 28 74 65 78 74 70 74 72 29 20 2D ength(textptr) -
020BF0: 20 6C 69 6E 65 21 30 20 2B 20 31 0D 0A 20 20 20 line!0 + 1..
020C00: 20 20 20 54 45 53 54 20 79 20 3D 20 31 20 54 48 TEST y = 1 TH
020C10: 45 4E 0D 0A 20 20 20 20 20 20 24 28 0D 0A 20 20 EN.. $(..
020C20: 20 20 20 20 20 20 77 72 69 74 65 28 74 65 78 74 write(text
020C30: 70 74 72 2C 31 2C 31 29 0D 0A 20 20 20 20 20 20 ptr,1,1)..
020C40: 24 29 0D 0A 20 20 20 20 20 20 45 4C 53 45 20 79 $).. ELSE y
020C50: 20 3A 3D 20 79 20 2D 20 31 0D 0A 20 20 20 20 24 := y - 1.. $
020C60: 29 0D 0A 20 20 20 20 45 4C 53 45 20 65 72 72 6F ).. ELSE erro
020C70: 72 28 22 4C 69 6E 65 20 74 6F 6F 20 6C 6F 6E 67 r("Line too long
020C80: 20 74 6F 20 6A 6F 69 6E 22 29 0D 0A 20 20 24 29 to join").. $)
020C90: 0D 0A 20 20 45 4C 53 45 20 65 72 72 6F 72 28 22 .. ELSE error("
020CA0: 54 6F 70 20 6F 66 20 66 69 6C 65 22 29 0D 0A 24 Top of file")..$
020CB0: 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 61 64 64 6C 28 )......LET addl(
020CC0: 6C 69 6E 65 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A line) BE....$(..
020CD0: 20 20 4C 45 54 20 63 6F 70 79 20 3D 20 56 45 43 LET copy = VEC
020CE0: 20 38 30 0D 0A 20 20 4C 45 54 20 70 74 72 20 3D 80.. LET ptr =
020CF0: 20 31 0D 0A 20 20 46 4F 52 20 61 20 3D 20 30 20 1.. FOR a = 0
020D00: 54 4F 20 6C 69 6E 65 21 30 20 44 4F 20 63 6F 70 TO line!0 DO cop
020D10: 79 21 61 20 3A 3D 20 6C 69 6E 65 21 61 0D 0A 20 y!a := line!a..
020D20: 20 57 48 49 4C 45 20 6C 69 6E 65 21 70 74 72 20 WHILE line!ptr
020D30: 4E 45 20 31 33 20 44 4F 20 70 74 72 20 3A 3D 20 NE 13 DO ptr :=
020D40: 70 74 72 20 2B 20 31 0D 0A 20 20 46 4F 52 20 61 ptr + 1.. FOR a
020D50: 20 3D 20 70 74 72 20 54 4F 20 6C 69 6E 65 21 30 = ptr TO line!0
020D60: 2D 31 20 44 4F 20 6C 69 6E 65 21 61 20 3A 3D 20 -1 DO line!a :=
020D70: 6C 69 6E 65 21 28 61 2B 31 29 0D 0A 20 20 6C 69 line!(a+1).. li
020D80: 6E 65 21 30 20 3A 3D 20 6C 69 6E 65 21 30 20 2D ne!0 := line!0 -
020D90: 20 31 0D 0A 20 20 6C 69 6E 73 65 72 74 28 63 6F 1.. linsert(co
020DA0: 70 79 2C 74 65 78 74 70 74 72 29 0D 0A 20 20 78 py,textptr).. x
020DB0: 2C 20 6C 69 6E 65 6E 75 6D 62 65 72 20 3A 3D 20 , linenumber :=
020DC0: 31 2C 20 6C 69 6E 65 6E 75 6D 62 65 72 20 2B 20 1, linenumber +
020DD0: 31 0D 0A 20 20 74 65 78 74 70 74 72 20 3A 3D 20 1.. textptr :=
020DE0: 66 6F 72 77 61 72 64 28 74 65 78 74 70 74 72 29 forward(textptr)
020DF0: 0D 0A 20 20 54 45 53 54 20 79 20 3D 20 73 63 72 .. TEST y = scr
020E00: 68 65 69 67 68 74 2D 31 20 54 48 45 4E 0D 0A 20 height-1 THEN..
020E10: 20 24 28 0D 0A 20 20 20 20 75 70 28 29 0D 0A 20 $(.. up()..
020E20: 20 20 20 77 72 69 74 65 28 74 65 78 74 70 74 72 write(textptr
020E30: 2C 31 2C 73 63 72 68 65 69 67 68 74 2D 31 29 0D ,1,scrheight-1).
020E40: 0A 20 20 24 29 0D 0A 20 20 45 4C 53 45 20 79 20 . $).. ELSE y
020E50: 3A 3D 20 79 20 2B 20 31 0D 0A 24 29 0D 0A 0D 0A := y + 1..$)....
020E60: 0D 0A 4C 45 54 20 6D 6F 76 65 75 70 28 29 20 42 ..LET moveup() B
020E70: 45 0D 0A 0D 0A 24 28 0D 0A 20 20 55 4E 4C 45 53 E....$(.. UNLES
020E80: 53 20 74 65 78 74 70 74 72 20 3D 20 30 20 54 48 S textptr = 0 TH
020E90: 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 74 65 EN.. $(.. te
020EA0: 78 74 70 74 72 20 3A 3D 20 62 61 63 6B 6C 69 6E xtptr := backlin
020EB0: 65 28 74 65 78 74 70 74 72 29 0D 0A 20 20 20 20 e(textptr)..
020EC0: 6C 69 6E 65 6E 75 6D 62 65 72 20 3A 3D 20 6C 69 linenumber := li
020ED0: 6E 65 6E 75 6D 62 65 72 20 2D 20 31 0D 0A 20 20 nenumber - 1..
020EE0: 20 20 54 45 53 54 20 79 20 3D 20 31 20 54 48 45 TEST y = 1 THE
020EF0: 4E 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 20 20 N.. $(..
020F00: 20 64 6F 77 6E 28 29 0D 0A 20 20 20 20 20 20 77 down().. w
020F10: 72 69 74 65 28 74 65 78 74 70 74 72 2C 31 2C 31 rite(textptr,1,1
020F20: 29 0D 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45 ).. $).. E
020F30: 4C 53 45 20 79 20 3A 3D 20 79 20 2D 20 31 0D 0A LSE y := y - 1..
020F40: 20 20 24 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 $)..$)......LE
020F50: 54 20 75 70 63 75 72 73 28 6C 69 6E 65 29 20 42 T upcurs(line) B
020F60: 45 0D 0A 0D 0A 24 28 0D 0A 20 20 6C 69 6E 73 65 E....$(.. linse
020F70: 72 74 28 6C 69 6E 65 2C 74 65 78 74 70 74 72 29 rt(line,textptr)
020F80: 0D 0A 20 20 6D 6F 76 65 75 70 28 29 0D 0A 24 29 .. moveup()..$)
020F90: 0D 0A 0D 0A 0D 0A 4C 45 54 20 6D 6F 76 65 64 6F ......LET movedo
020FA0: 77 6E 28 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 wn() BE....$(..
020FB0: 20 4C 45 54 20 6F 70 74 72 20 3D 20 74 65 78 74 LET optr = text
020FC0: 70 74 72 0D 0A 20 20 74 65 78 74 70 74 72 20 3A ptr.. textptr :
020FD0: 3D 20 66 6F 72 77 61 72 64 28 74 65 78 74 70 74 = forward(textpt
020FE0: 72 29 0D 0A 20 20 55 4E 4C 45 53 53 20 74 65 78 r).. UNLESS tex
020FF0: 74 70 74 72 20 3D 20 6F 70 74 72 20 54 48 45 4E tptr = optr THEN
021000: 0D 0A 20 20 24 28 0D 0A 20 20 20 20 6C 69 6E 65 .. $(.. line
021010: 6E 75 6D 62 65 72 20 3A 3D 20 6C 69 6E 65 6E 75 number := linenu
021020: 6D 62 65 72 20 2B 20 31 0D 0A 20 20 20 20 54 45 mber + 1.. TE
021030: 53 54 20 79 20 3D 20 73 63 72 68 65 69 67 68 74 ST y = scrheight
021040: 2D 31 20 54 48 45 4E 0D 0A 20 20 20 20 24 28 0D -1 THEN.. $(.
021050: 0A 20 20 20 20 20 20 75 70 28 29 0D 0A 20 20 20 . up()..
021060: 20 20 20 77 72 69 74 65 28 74 65 78 74 70 74 72 write(textptr
021070: 2C 31 2C 73 63 72 68 65 69 67 68 74 2D 31 29 0D ,1,scrheight-1).
021080: 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45 4C 53 . $).. ELS
021090: 45 20 79 20 3A 3D 20 79 20 2B 20 31 0D 0A 20 20 E y := y + 1..
0210A0: 24 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 4C 45 $)..$)........LE
0210B0: 54 20 64 6F 77 6E 63 75 72 73 28 6C 69 6E 65 29 T downcurs(line)
0210C0: 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 6C 69 6E BE....$(.. lin
0210D0: 73 65 72 74 28 6C 69 6E 65 2C 74 65 78 74 70 74 sert(line,textpt
0210E0: 72 29 0D 0A 20 20 6D 6F 76 65 64 6F 77 6E 28 29 r).. movedown()
0210F0: 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 4C 45 54 20 ..$)........LET
021100: 73 75 70 63 75 72 73 28 6C 69 6E 65 29 20 42 45 supcurs(line) BE
021110: 0D 0A 0D 0A 24 28 0D 0A 20 20 6C 69 6E 73 65 72 ....$(.. linser
021120: 74 28 6C 69 6E 65 2C 74 65 78 74 70 74 72 29 0D t(line,textptr).
021130: 0A 20 20 46 4F 52 20 61 20 3D 20 31 20 54 4F 20 . FOR a = 1 TO
021140: 73 63 72 68 65 69 67 68 74 2D 34 20 44 4F 0D 0A scrheight-4 DO..
021150: 20 20 24 28 0D 0A 20 20 20 20 49 46 20 74 65 78 $(.. IF tex
021160: 74 70 74 72 20 3D 20 30 20 54 48 45 4E 20 42 52 tptr = 0 THEN BR
021170: 45 41 4B 0D 0A 20 20 20 20 6D 6F 76 65 75 70 28 EAK.. moveup(
021180: 29 0D 0A 20 20 24 29 0D 0A 24 29 0D 0A 0D 0A 4C ).. $)..$)....L
021190: 45 54 20 73 64 6F 77 6E 63 75 72 73 28 6C 69 6E ET sdowncurs(lin
0211A0: 65 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 6C e) BE....$(.. l
0211B0: 69 6E 73 65 72 74 28 6C 69 6E 65 2C 74 65 78 74 insert(line,text
0211C0: 70 74 72 29 0D 0A 20 20 46 4F 52 20 61 20 3D 20 ptr).. FOR a =
0211D0: 31 20 54 4F 20 73 63 72 68 65 69 67 68 74 2D 34 1 TO scrheight-4
0211E0: 20 44 4F 0D 0A 20 20 24 28 0D 0A 20 20 20 20 4C DO.. $(.. L
0211F0: 45 54 20 6F 70 74 72 20 3D 20 74 65 78 74 70 74 ET optr = textpt
021200: 72 0D 0A 20 20 20 20 6D 6F 76 65 64 6F 77 6E 28 r.. movedown(
021210: 29 0D 0A 20 20 20 20 49 46 20 6F 70 74 72 20 3D ).. IF optr =
021220: 20 74 65 78 74 70 74 72 20 54 48 45 4E 20 42 52 textptr THEN BR
021230: 45 41 4B 0D 0A 20 20 24 29 0D 0A 24 29 0D 0A 0D EAK.. $)..$)...
021240: 0A 0D 0A 0D 0A 4C 45 54 20 74 6F 70 28 6C 69 6E .....LET top(lin
021250: 65 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 6C e) BE....$(.. l
021260: 69 6E 73 65 72 74 28 6C 69 6E 65 2C 74 65 78 74 insert(line,text
021270: 70 74 72 29 0D 0A 20 20 74 65 78 74 70 74 72 2C ptr).. textptr,
021280: 20 78 2C 20 79 2C 20 6C 69 6E 65 6E 75 6D 62 65 x, y, linenumbe
021290: 72 20 3A 3D 20 30 2C 20 31 2C 20 31 2C 20 31 0D r := 0, 1, 1, 1.
0212A0: 0A 20 20 72 65 63 6F 6E 73 74 72 75 63 74 28 74 . reconstruct(t
0212B0: 65 78 74 70 74 72 29 0D 0A 24 29 0D 0A 0D 0A 0D extptr)..$).....
0212C0: 0A 4C 45 54 20 62 6F 74 74 6F 6D 28 6C 69 6E 65 .LET bottom(line
0212D0: 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 ) BE....$(.. LE
0212E0: 54 20 6F 70 74 72 20 3D 20 30 0D 0A 20 20 6C 69 T optr = 0.. li
0212F0: 6E 73 65 72 74 28 6C 69 6E 65 2C 74 65 78 74 70 nsert(line,textp
021300: 74 72 29 0D 0A 20 20 74 65 78 74 70 74 72 2C 20 tr).. textptr,
021310: 78 2C 20 79 2C 20 6C 69 6E 65 6E 75 6D 62 65 72 x, y, linenumber
021320: 20 3A 3D 20 30 2C 20 31 2C 20 31 2C 20 30 0D 0A := 0, 1, 1, 0..
021330: 20 20 24 28 0D 0A 20 20 20 20 6F 70 74 72 20 3A $(.. optr :
021340: 3D 20 74 65 78 74 70 74 72 0D 0A 20 20 20 20 74 = textptr.. t
021350: 65 78 74 70 74 72 20 3A 3D 20 66 6F 72 77 61 72 extptr := forwar
021360: 64 28 74 65 78 74 70 74 72 29 0D 0A 20 20 20 20 d(textptr)..
021370: 79 20 3A 3D 20 79 20 2B 20 31 0D 0A 20 20 20 20 y := y + 1..
021380: 6C 69 6E 65 6E 75 6D 62 65 72 20 3A 3D 20 6C 69 linenumber := li
021390: 6E 65 6E 75 6D 62 65 72 20 2B 20 31 0D 0A 20 20 nenumber + 1..
0213A0: 24 29 20 52 45 50 45 41 54 55 4E 54 49 4C 20 6F $) REPEATUNTIL o
0213B0: 70 74 72 20 3D 20 74 65 78 74 70 74 72 0D 0A 20 ptr = textptr..
0213C0: 20 49 46 20 79 20 3E 20 73 63 72 68 65 69 67 68 IF y > scrheigh
0213D0: 74 2D 31 20 54 48 45 4E 20 79 20 3A 3D 20 73 63 t-1 THEN y := sc
0213E0: 72 68 65 69 67 68 74 2D 31 0D 0A 20 20 72 65 63 rheight-1.. rec
0213F0: 6F 6E 73 74 72 75 63 74 28 74 65 78 74 70 74 72 onstruct(textptr
021400: 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 2F 2A 20 41 6C )..$)....../* Al
021410: 6C 20 6C 69 6E 65 73 20 65 6E 64 20 69 6E 20 31 l lines end in 1
021420: 33 20 2A 2F 0D 0A 2F 2A 20 54 68 65 20 65 64 69 3 */../* The edi
021430: 74 20 62 75 66 66 65 72 20 69 73 20 68 65 6C 64 t buffer is held
021440: 20 69 6E 20 75 6E 70 61 63 6B 65 64 20 66 6F 72 in unpacked for
021450: 6D 61 74 2E 20 54 68 65 20 77 68 6F 6C 65 20 74 mat. The whole t
021460: 65 78 74 20 69 73 20 73 74 6F 72 65 64 20 69 6E ext is stored in
021470: 0D 0A 20 20 20 70 61 63 6B 65 64 20 66 6F 72 6D .. packed form
021480: 61 74 20 2A 2F 0D 0A 0D 0A 4C 45 54 20 73 74 61 at */....LET sta
021490: 72 74 28 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 rt() BE....$(..
0214A0: 20 4C 45 54 20 66 69 6C 65 62 75 66 66 20 3D 20 LET filebuff =
0214B0: 56 45 43 20 38 31 0D 0A 20 20 4C 45 54 20 70 72 VEC 81.. LET pr
0214C0: 65 76 69 6F 75 73 20 3D 20 56 45 43 20 6D 61 78 evious = VEC max
0214D0: 73 63 72 68 65 69 67 68 74 2D 31 0D 0A 20 20 4C scrheight-1.. L
0214E0: 45 54 20 74 65 78 74 20 3D 20 56 45 43 20 6D 61 ET text = VEC ma
0214F0: 78 63 68 72 2F 32 2B 31 0D 0A 20 20 4C 45 54 20 xchr/2+1.. LET
021500: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
021510: 1C 00 00 00 02 09 50 E5 1C 00 C1 02 00 00 00 02 ......P.........
021520: 1C 00 C2 02 00 00 00 02 1C 00 C3 02 00 00 00 02 ................
021530: 1C 00 C4 02 00 00 00 02 1C 00 C5 02 00 00 00 02 ................
021540: 1C 00 C6 02 00 00 00 02 1C 00 C7 02 00 00 00 02 ................
021550: 1C 00 C8 02 00 00 00 02 1C 00 C9 02 00 00 00 02 ................
021560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021590: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021600: 69 6E 62 75 66 66 20 3D 20 56 45 43 20 38 31 0D inbuff = VEC 81.
021610: 0A 20 20 4C 45 54 20 65 72 72 6F 72 20 3D 20 56 . LET error = V
021620: 45 43 20 34 0D 0A 20 20 4C 45 54 20 63 6F 70 79 EC 4.. LET copy
021630: 70 74 72 2C 20 6C 61 73 74 6B 65 79 2C 20 6E 65 ptr, lastkey, ne
021640: 77 73 63 72 65 65 6E 20 3D 20 30 2C 20 30 2C 20 wscreen = 0, 0,
021650: 54 52 55 45 0D 0A 20 20 76 65 72 20 3A 3D 20 76 TRUE.. ver := v
021660: 65 72 73 69 6F 6E 28 29 0D 0A 20 20 73 63 72 68 ersion().. scrh
021670: 65 69 67 68 74 20 3A 3D 20 76 65 72 3D 34 20 2D eight := ver=4 -
021680: 3E 20 33 31 2C 20 76 65 72 3D 33 20 2D 3E 20 32 > 31, ver=3 -> 2
021690: 34 2C 20 32 35 0D 0A 20 20 74 65 78 74 70 74 72 4, 25.. textptr
0216A0: 2C 20 74 65 78 74 65 6E 64 2C 20 74 65 78 74 73 , textend, texts
0216B0: 74 61 72 74 2C 20 65 72 72 76 65 63 20 3A 3D 20 tart, errvec :=
0216C0: 30 2C 20 30 2C 20 74 65 78 74 2C 20 65 72 72 6F 0, 0, text, erro
0216D0: 72 0D 0A 20 20 70 72 65 76 2C 20 66 69 6C 65 20 r.. prev, file
0216E0: 3A 3D 20 70 72 65 76 69 6F 75 73 2C 20 66 69 6C := previous, fil
0216F0: 65 62 75 66 66 0D 0A 20 20 63 6C 73 28 29 0D 0A ebuff.. cls()..
021700: 20 20 74 65 78 74 73 74 61 72 74 25 30 20 3A 3D textstart%0 :=
021710: 20 31 33 0D 0A 20 20 24 28 0D 0A 20 20 20 20 6C 13.. $(.. l
021720: 65 76 65 6C 28 65 72 72 76 65 63 29 0D 0A 20 20 evel(errvec)..
021730: 20 20 69 6E 69 74 62 75 66 66 28 69 6E 62 75 66 initbuff(inbuf
021740: 66 2C 74 65 78 74 70 74 72 29 0D 0A 20 20 20 20 f,textptr)..
021750: 49 46 20 6E 65 77 73 63 72 65 65 6E 20 54 48 45 IF newscreen THE
021760: 4E 20 73 63 72 65 65 6E 28 74 65 78 74 70 74 72 N screen(textptr
021770: 2C 79 29 0D 0A 20 20 20 20 65 72 72 6C 61 62 3A ,y).. errlab:
021780: 0D 0A 20 20 20 20 49 46 20 62 75 66 66 70 72 69 .. IF buffpri
021790: 6E 74 20 54 48 45 4E 0D 0A 20 20 20 20 24 28 0D nt THEN.. $(.
0217A0: 0A 20 20 20 20 20 20 74 61 62 28 31 2C 79 29 0D . tab(1,y).
0217B0: 0A 20 20 20 20 20 20 46 4F 52 20 61 20 3D 20 31 . FOR a = 1
0217C0: 20 54 4F 20 69 6E 62 75 66 66 21 30 2D 31 20 44 TO inbuff!0-1 D
0217D0: 4F 20 77 72 63 68 28 69 6E 62 75 66 66 21 61 29 O wrch(inbuff!a)
0217E0: 20 3B 20 73 70 61 63 65 73 28 38 30 2D 69 6E 62 ; spaces(80-inb
0217F0: 75 66 66 21 30 29 0D 0A 20 20 20 20 20 20 62 75 uff!0).. bu
021800: 66 66 70 72 69 6E 74 20 3A 3D 20 46 41 4C 53 45 ffprint := FALSE
021810: 0D 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 6C 61 .. $).. la
021820: 73 74 6B 65 79 20 3A 3D 20 62 75 66 66 65 72 28 stkey := buffer(
021830: 69 6E 62 75 66 66 29 0D 0A 20 20 20 20 6E 65 77 inbuff).. new
021840: 73 63 72 65 65 6E 20 3A 3D 20 46 41 4C 53 45 0D screen := FALSE.
021850: 0A 20 20 20 20 53 57 49 54 43 48 4F 4E 20 6C 61 . SWITCHON la
021860: 73 74 6B 65 79 20 49 4E 54 4F 0D 0A 20 20 20 20 stkey INTO..
021870: 24 28 0D 0A 20 20 20 20 20 20 43 41 53 45 20 31 $(.. CASE 1
021880: 32 37 3A 20 6E 65 77 73 63 72 65 65 6E 20 3A 3D 27: newscreen :=
021890: 20 54 52 55 45 20 3B 20 64 65 6C 65 74 65 6C 28 TRUE ; deletel(
0218A0: 69 6E 62 75 66 66 29 20 3B 20 45 4E 44 43 41 53 inbuff) ; ENDCAS
0218B0: 45 0D 0A 20 20 20 20 20 20 43 41 53 45 20 31 33 E.. CASE 13
0218C0: 3A 20 6E 65 77 73 63 72 65 65 6E 20 3A 3D 20 54 : newscreen := T
0218D0: 52 55 45 20 3B 20 61 64 64 6C 28 69 6E 62 75 66 RUE ; addl(inbuf
0218E0: 66 29 20 3B 20 45 4E 44 43 41 53 45 0D 0A 20 20 f) ; ENDCASE..
0218F0: 20 20 20 20 43 41 53 45 20 63 75 72 73 75 70 3A CASE cursup:
021900: 20 43 41 53 45 20 73 63 75 72 73 75 70 3A 20 75 CASE scursup: u
021910: 70 63 75 72 73 28 69 6E 62 75 66 66 29 20 3B 20 pcurs(inbuff) ;
021920: 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 20 43 ENDCASE.. C
021930: 41 53 45 20 63 75 72 73 64 6F 77 6E 3A 20 43 41 ASE cursdown: CA
021940: 53 45 20 73 63 75 72 73 64 6F 77 6E 3A 20 64 6F SE scursdown: do
021950: 77 6E 63 75 72 73 28 69 6E 62 75 66 66 29 20 3B wncurs(inbuff) ;
021960: 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 20 ENDCASE..
021970: 43 41 53 45 20 63 63 75 72 73 75 70 3A 20 73 75 CASE ccursup: su
021980: 70 63 75 72 73 28 69 6E 62 75 66 66 29 20 3B 20 pcurs(inbuff) ;
021990: 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 20 43 ENDCASE.. C
0219A0: 41 53 45 20 63 63 75 72 73 64 6F 77 6E 3A 20 73 ASE ccursdown: s
0219B0: 64 6F 77 6E 63 75 72 73 28 69 6E 62 75 66 66 29 downcurs(inbuff)
0219C0: 20 3B 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 ; ENDCASE..
0219D0: 20 20 43 41 53 45 20 63 6F 70 65 6E 73 71 3A 20 CASE copensq:
0219E0: 74 6F 70 28 69 6E 62 75 66 66 29 20 3B 20 45 4E top(inbuff) ; EN
0219F0: 44 43 41 53 45 0D 0A 20 20 20 20 20 20 43 41 53 DCASE.. CAS
021A00: 45 20 63 63 6C 6F 73 65 73 71 3A 20 62 6F 74 74 E cclosesq: bott
021A10: 6F 6D 28 69 6E 62 75 66 66 29 20 3B 20 45 4E 44 om(inbuff) ; END
021A20: 43 41 53 45 0D 0A 20 20 20 20 20 20 43 41 53 45 CASE.. CASE
021A30: 20 65 73 63 61 70 65 3A 20 43 41 53 45 20 73 74 escape: CASE st
021A40: 6F 70 3A 20 6D 65 6E 75 28 69 6E 62 75 66 66 29 op: menu(inbuff)
021A50: 20 3B 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 ; ENDCASE..
021A60: 24 29 0D 0A 20 20 24 29 20 52 45 50 45 41 54 0D $).. $) REPEAT.
021A70: 0A 24 29 0D 0A 2E 0D 0A 1A 6F 6F 20 6C 6F 6E 67 .$)......oo long
021A80: 32 37 3A 20 6E 65 77 73 63 72 65 65 6E 20 3A 3D 27: newscreen :=
021A90: 20 54 52 55 45 20 3B 20 64 65 6C 65 74 65 6C 28 TRUE ; deletel(
021AA0: 69 6E 62 75 66 66 29 20 3B 20 45 4E 44 43 41 53 inbuff) ; ENDCAS
021AB0: 45 0D 0A 20 20 20 20 20 20 43 41 53 45 20 31 33 E.. CASE 13
021AC0: 3A 20 6E 65 77 73 63 72 65 65 6E 20 3A 3D 20 54 : newscreen := T
021AD0: 52 55 45 20 3B 20 61 64 64 6C 28 69 6E 62 75 66 RUE ; addl(inbuf
021AE0: 66 29 20 3B 20 45 4E 44 43 41 53 45 0D 0A 20 20 f) ; ENDCASE..
021AF0: 20 20 20 20 43 41 53 45 20 63 75 72 73 75 70 3A CASE cursup:
021B00: 20 43 41 53 45 20 73 63 75 72 73 75 70 3A 20 75 CASE scursup: u
021B10: 70 63 75 72 73 28 69 6E 62 75 66 66 29 20 3B 20 pcurs(inbuff) ;
021B20: 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 20 43 ENDCASE.. C
021B30: 41 53 45 20 63 75 72 73 64 6F 77 6E 3A 20 43 41 ASE cursdown: CA
021B40: 53 45 20 73 63 75 72 73 64 6F 77 6E 3A 20 64 6F SE scursdown: do
021B50: 77 6E 63 75 72 73 28 69 6E 62 75 66 66 29 20 3B wncurs(inbuff) ;
021B60: 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 20 ENDCASE..
021B70: 43 41 53 45 20 63 63 75 72 73 75 70 3A 20 73 75 CASE ccursup: su
021B80: 70 63 75 72 73 28 69 6E 62 75 66 66 29 20 3B 20 pcurs(inbuff) ;
021B90: 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 20 43 ENDCASE.. C
021BA0: 41 53 45 20 63 63 75 72 73 64 6F 77 6E 3A 20 73 ASE ccursdown: s
021BB0: 64 6F 77 6E 63 75 72 73 28 69 6E 62 75 66 66 29 downcurs(inbuff)
021BC0: 20 3B 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 ; ENDCASE..
021BD0: 20 20 43 41 53 45 20 63 6F 70 65 6E 73 71 3A 20 CASE copensq:
021BE0: 74 6F 70 28 69 6E 62 75 66 66 29 20 3B 20 45 4E top(inbuff) ; EN
021BF0: 44 43 41 53 45 0D 0A 20 20 20 20 20 20 43 41 53 DCASE.. CAS
021C00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021C10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021C20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021C30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021C40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021C50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021C60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021C70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021C80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021C90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021CA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021CB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021CC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021CD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021CE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021CF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021D00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021D10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021D20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021D30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021D40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021D50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021D60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021D70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021D80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021D90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021DA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021DB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021DC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021DD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021DE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021DF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021E00: 21 2E 39 11 9B 3B 01 11 00 3E 0A C3 9E 01 00 00 !.9..;...>......
021E10: 00 00 00 00 00 00 CD 5C 01 F5 78 06 10 29 CB 11 .......\..x..)..
021E20: 17 30 01 19 10 F7 F1 CB 7F C8 EB 21 00 00 A7 ED .0.........!....
021E30: 52 C9 CD 5C 01 F5 3E 10 CB 21 CB 10 CB 15 CB 14 R..\..>..!......
021E40: A7 ED 52 38 03 03 18 01 19 3D 20 EC 50 59 EB F1 ..R8.....= .PY..
021E50: A7 C8 7C EE FF 67 7D EE FF 6F 23 C9 44 4D 21 00 ..|..g}..o#.DM!.
021E60: 00 3E 00 CB 78 28 0A A7 ED 42 44 4D 21 00 00 3E .>..x(...BDM!..>
021E70: 80 CB 7A C8 EE 80 A7 ED 52 EB 21 00 00 C9 A7 28 ..z.....R.!....(
021E80: 17 EB 4E 23 46 23 EB A7 ED 42 28 0C 09 EB 23 23 ..N#F#...B(...##
021E90: 3D 20 EF 5E 23 56 EB E9 EB 5E 23 56 EB E9 32 15 = .^#V...^#V..2.
021EA0: 01 32 14 01 E5 EB 78 B1 28 11 5E 23 56 23 D5 5E .2....x.(.^#V#.^
021EB0: 23 56 23 E3 73 23 72 E1 0B 18 EB CB 45 28 01 23 #V#.s#r.....E(.#
021EC0: 22 12 01 22 10 01 ED 43 0E 01 C1 CD 78 03 F9 00 ".."...C....x...
021ED0: 00 60 69 CD 9D 01 C3 00 00 00 00 00 00 00 00 00 .`i.............
021EE0: 00 D1 DD E5 ED 4B 10 01 C5 ED 4B 12 01 ED 43 10 .....K....K...C.
021EF0: 01 09 22 12 01 EB E9 7A B3 C8 29 1B 18 F9 7A B3 .."....z..)...z.
021F00: C8 CB 3C CB 1D 1B 18 F6 C1 E1 E5 C5 29 ED 5B 10 ..<.........).[.
021F10: 01 73 23 72 23 ED 5B 12 01 73 23 72 23 DD E5 D1 .s#r#.[..s#r#...
021F20: 73 23 72 23 EB 21 04 00 39 EB 73 23 72 C9 C1 C1 s#r#.!..9.s#r...
021F30: E1 29 5E 23 56 23 ED 53 10 01 5E 23 56 23 ED 53 .)^#V#.S..^#V#.S
021F40: 12 01 5E 23 56 23 D5 DD E1 5E 23 66 6B F9 60 69 ..^#V#...^#fk.`i
021F50: E9 E1 C1 D1 D5 C5 E5 2A 10 01 E5 D5 2A 12 01 22 .......*....*.."
021F60: 10 01 CB 3C CB 1D E5 EB 23 29 38 49 EB 2A 10 01 ...<....#)8I.*..
021F70: 19 38 42 22 12 01 EB 21 CE FF 39 A7 ED 52 38 35 .8B"...!..9..R85
021F80: 60 69 CD 9D 01 E1 E1 2A 10 01 22 12 01 E1 22 10 `i.....*.."...".
021F90: 01 C9 D1 DD E5 ED 4B 10 01 C5 ED 4B 12 01 ED 43 ......K....K...C
021FA0: 10 01 09 38 10 22 12 01 44 4D 21 CE FF 39 A7 ED ...8."..DM!..9..
021FB0: 42 38 02 EB E9 CD CC 02 53 74 61 63 6B 20 6F 76 B8......Stack ov
021FC0: 65 72 66 6C 6F 77 0D 0A 00 C3 D6 01 E1 7E 23 E5 erflow.......~#.
021FD0: A7 C8 CD D7 02 18 F5 0E 02 5F C3 05 00 3A 14 01 ........._...:..
021FE0: 3D 32 14 01 C0 3A 15 01 32 14 01 CD 66 03 A7 C8 =2...:..2...f...
021FF0: E5 C5 F5 3A 0E 01 FE 08 28 0E 4F 06 00 21 D9 01 ...:....(.O..!..
022000: 09 3C 32 0E 01 F1 77 F5 F1 C1 E1 FE 03 28 03 FE .<2...w......(..
022010: FC C0 CD 66 03 A7 28 FA FE 03 28 03 FE FC C0 0E ...f..(...(.....
022020: 6C 11 00 FF CD 05 00 CD CC 02 0D 0A 2A 2A 20 42 l...........** B
022030: 52 45 41 4B 20 2A 2A 0D 0A 00 C3 D6 01 3A 0E 01 REAK **......:..
022040: A7 28 19 3A 0E 01 3D 32 0E 01 4F 06 00 3A D9 01 .(.:..=2..O..:..
022050: 28 10 21 DA 01 11 D9 01 ED B0 18 06 CD 66 03 A7 (.!..........f..
022060: 28 FA 5F 16 00 C9 E5 D5 C5 DD E5 0E 06 1E FF CD (._.............
022070: 05 00 DD E1 C1 D1 E1 C9 2A 06 00 2B CB 45 C8 2B ........*..+.E.+
022080: C9 C3 8C 03 08 07 06 05 04 03 02 01 21 00 00 CD ............!...
022090: 92 02 DD 21 88 FF DD 39 2A 86 03 11 D2 03 3E 02 ...!...9*.....>.
0220A0: C3 7E 01 DD 66 7F DD 6E 7E E5 CD 7B 0D E1 C3 DC .~..f..n~..{....
0220B0: 03 DD 66 7F DD 6E 7E E5 CD C5 0D E1 C3 DC 03 2A ..f..n~........*
0220C0: 86 03 E5 DD 66 7F DD 6E 7E E5 CD C4 0F E1 E1 C3 ....f..n~.......
0220D0: DC 03 01 00 B1 03 00 00 A3 03 BF 03 E1 22 10 01 ........£...."..
0220E0: DD E1 C9 21 00 00 CD 92 02 DD 21 9E FF DD 39 DD ...!......!...9.
0220F0: E5 E1 11 6A 00 19 CB 3C CB 1D E5 2A 14 04 E5 DD ...j...<...*....
022100: 66 69 DD 6E 68 29 6E 26 00 7C EE 80 67 22 14 04 fi.nh)n&.|..g"..
022110: 21 01 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA !......BKz..W.R.
022120: 9B 05 C5 DD 66 69 DD 6E 68 29 DD 56 5D DD 5E 5C ....fi.nh).V].^\
022130: 19 6E 26 00 E5 DD 66 5B DD 6E 5A 11 25 00 A7 ED .n&...f[.nZ.%...
022140: 52 C2 8A 05 DD 66 61 DD 6E 60 29 5E 23 56 EB E5 R....fa.n`)^#V..
022150: DD 66 5D DD 6E 5C 23 DD 74 5D DD 75 5C DD 66 69 .f].n\#.t].u\.fi
022160: DD 6E 68 29 DD 56 5D DD 5E 5C 19 6E 26 00 E5 DD .nh).V].^\.n&...
022170: 66 5D DD 6E 5C 23 E5 DD 66 69 DD 6E 68 29 D1 19 f].n\#..fi.nh)..
022180: 6E 26 00 E5 CD B0 16 E1 EB E5 DD 66 61 DD 6E 60 n&.........fa.n`
022190: 23 DD 74 61 DD 75 60 DD 66 57 DD 6E 56 11 57 05 #.ta.u`.fW.nV.W.
0221A0: 3E 07 C3 7E 01 DD 66 59 DD 6E 58 E5 CD A7 05 E1 >..~..fY.nX.....
0221B0: 21 00 00 EB C3 75 05 DD 66 59 DD 6E 58 E5 CD 8C !....u..fY.nX...
0221C0: 03 E1 21 00 00 EB C3 75 05 21 00 00 E5 DD 66 59 ..!....u.!....fY
0221D0: DD 6E 58 E5 CD 00 06 E1 E1 21 00 00 EB C3 75 05 .nX......!....u.
0221E0: DD 66 55 DD 6E 54 E5 DD 66 59 DD 6E 58 E5 CD ED .fU.nT..fY.nX...
0221F0: 07 E1 E1 21 01 00 EB C3 75 05 DD 66 55 DD 6E 54 ...!....u..fU.nT
022200: E5 DD 66 59 DD 6E 58 E5 CD 6B 07 E1 E1 21 01 00 ..fY.nX..k...!..
022210: EB C3 75 05 DD 66 55 DD 6E 54 E5 DD 66 59 DD 6E ..u..fU.nT..fY.n
022220: 58 E5 CD 00 06 E1 E1 21 01 00 EB C3 75 05 21 00 X......!....u.!.
022230: 00 EB C3 75 05 DD 66 57 DD 6E 56 E5 CD 8C 03 E1 ...u..fW.nV.....
022240: DD 66 61 DD 6E 60 2B DD 74 61 DD 75 60 21 00 00 .fa.n`+.ta.u`!..
022250: EB C3 75 05 C3 75 05 24 00 2E 05 49 00 14 05 58 ..u..u.$...I...X
022260: 00 FA 04 4F 00 E0 04 4E 00 C9 04 43 00 B7 04 53 ...O...N...C...S
022270: 00 A5 04 35 05 EB EB DD 66 5D DD 6E 5C 19 DD 74 ...5....f].n\..t
022280: 5D DD 75 5C E1 E1 E1 C3 95 05 DD 66 5B DD 6E 5A ].u\.......f[.nZ
022290: E5 CD 8C 03 E1 E1 E1 23 C3 13 04 E1 22 14 04 E1 .......#...."...
0222A0: E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 .".....!......!.
0222B0: FF DD 39 2A CC 05 E5 DD 66 7F DD 6E 7E 29 6E 26 ..9*....f..n~)n&
0222C0: 00 7C EE 80 67 22 CC 05 21 01 00 11 00 00 EB 42 .|..g"..!......B
0222D0: 4B 7A EE 80 57 ED 52 DA F5 05 C5 DD 66 7F DD 6E Kz..W.R.....f..n
0222E0: 7E 29 DD 56 75 DD 5E 74 19 6E 26 00 E5 CD 8C 03 ~).Vu.^t.n&.....
0222F0: E1 E1 23 18 D6 E1 22 CC 05 E1 22 10 01 DD E1 C9 ..#..."...".....
022300: 21 2A 00 CD 92 02 DD 21 8A FF DD 39 21 00 00 E5 !*.....!...9!...
022310: DD 66 7D DD 6E 7C E5 2A 10 01 CB 3C CB 1D E5 DD .f}.n|.*...<....
022320: 66 7D DD 6E 7C 7C EE 80 67 11 00 80 A7 ED 52 D2 f}.n||..g.....R.
022330: 54 06 DD 66 7F DD 6E 7E 2B DD 74 7F DD 75 7E DD T..f..n~+.t..u~.
022340: 66 73 DD 6E 72 7C EE FF 67 7D EE FF 6F 23 DD 74 fs.nr|..g}..o#.t
022350: 73 DD 75 72 DD 66 73 DD 6E 72 11 0A 00 CD 32 01 s.ur.fs.nr....2.
022360: EB E5 DD 66 71 DD 6E 70 DD 56 75 DD 5E 74 19 29 ...fq.np.Vu.^t.)
022370: D1 73 23 72 DD 66 73 DD 6E 72 11 0A 00 CD 32 01 .s#r.fs.nr....2.
022380: DD 74 73 DD 75 72 DD 66 75 DD 6E 74 23 DD 74 75 .ts.ur.fu.nt#.tu
022390: DD 75 74 DD 7E 73 DD B6 72 C2 54 06 2A B5 06 E5 .ut.~s..r.T.*...
0223A0: DD 66 7F DD 6E 7E 7C EE 80 67 22 B5 06 DD 66 75 .f..n~|..g"...fu
0223B0: DD 6E 74 23 11 00 00 EB 42 4B 7A EE 80 57 ED 52 .nt#....BKz..W.R
0223C0: DA D0 06 C5 21 20 00 E5 CD 8C 03 E1 E1 23 18 E4 ....! .......#..
0223D0: E1 22 B5 06 DD 66 7D DD 6E 7C 7C EE 80 67 11 00 ."...f}.n||..g..
0223E0: 80 A7 ED 52 D2 EF 06 21 2D 00 E5 CD 8C 03 E1 2A ...R...!-......*
0223F0: 05 07 E5 21 00 00 7C EE 80 67 22 05 07 DD 66 75 ...!..|..g"...fu
022400: DD 6E 74 2B 11 00 00 44 4D 7C EE 80 67 ED 52 DA .nt+...DM|..g.R.
022410: 32 07 C5 DD 66 71 DD 6E 70 DD 56 6D DD 5E 6C 19 2...fq.np.Vm.^l.
022420: 29 5E 23 56 EB 11 30 00 19 E5 CD 8C 03 E1 E1 2B )^#V..0........+
022430: 18 D2 E1 22 05 07 21 06 00 39 F9 2A 10 01 22 12 ..."..!..9.*..".
022440: 01 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 ..".....!......!
022450: 88 FF DD 39 21 00 00 E5 DD 66 7F DD 6E 7E E5 CD ...9!....f..n~..
022460: 00 06 E1 E1 E1 22 10 01 DD E1 C9 21 00 00 CD 92 .....".....!....
022470: 02 DD 21 8A FF DD 39 DD 56 7F DD 5E 7E 7A EE 80 ..!...9.V..^~z..
022480: 57 21 01 80 A7 ED 52 D2 A4 07 DD 66 7F DD 6E 7E W!....R....f..n~
022490: 2B E5 DD 66 7D DD 6E 7C 11 04 00 CD FE 01 E5 CD +..f}.n|........
0224A0: 6B 07 E1 E1 21 D5 03 C3 CA 07 30 00 31 00 32 00 k...!.....0.1.2.
0224B0: 33 00 34 00 35 00 36 00 37 00 38 00 39 00 41 00 3.4.5.6.7.8.9.A.
0224C0: 42 00 43 00 44 00 45 00 46 00 E5 DD 66 7D DD 6E B.C.D.E.F...f}.n
0224D0: 7C 11 0F 00 7C A2 67 7D A3 6F D1 19 29 5E 23 56 |...|.g}£o..)^#V
0224E0: EB E5 CD 8C 03 E1 E1 22 10 01 DD E1 C9 21 00 00 .......".....!..
0224F0: CD 92 02 DD 21 8A FF DD 39 DD 56 7F DD 5E 7E 7A ....!...9.V..^~z
022500: EE 80 57 21 01 80 A7 ED 52 D2 26 08 DD 66 7F DD ..W!....R.&..f..
022510: 6E 7E 2B E5 DD 66 7D DD 6E 7C 11 03 00 CD FE 01 n~+..f}.n|......
022520: E5 CD ED 07 E1 E1 DD 66 7D DD 6E 7C 11 07 00 7C .......f}.n|...|
022530: A2 67 7D A3 6F 11 30 00 19 E5 CD 8C 03 E1 E1 22 .g}£o.0........"
022540: 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD .....!......!...
022550: 39 21 0D 01 E5 CD 8C 03 E1 E1 22 10 01 DD E1 C9 9!........".....
022560: 21 00 00 CD 92 02 DD 21 86 FF DD 39 2A 88 03 7C !......!...9*..|
022570: B5 CA 93 08 2A 88 03 E5 21 00 00 22 88 03 DD 66 ....*...!.."...f
022580: 79 DD 6E 78 22 8A 03 DD 66 79 DD 6E 78 EB E1 C3 y.nx"...fy.nx...
022590: AF 08 E1 2A 84 03 7C B5 C2 A2 08 CD 3D 03 EB C3 ...*..|.....=...
0225A0: AB 08 2A 84 03 E5 CD C4 0E E1 EB EB C3 AF 08 E1 ..*.............
0225B0: 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF ".....!......!..
0225C0: DD 39 2A 8A 03 22 88 03 E1 22 10 01 DD E1 C9 21 .9*.."...".....!
0225D0: 00 00 CD 92 02 DD 21 88 FF DD 39 21 00 00 E5 E5 ......!...9!....
0225E0: 2A F5 08 E5 DD 66 77 DD 6E 76 7C EE 80 67 22 F5 *....fw.nv|..g".
0225F0: 08 21 01 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 .!......BKz..W.R
022600: DA 20 09 C5 21 08 00 E5 CD 8C 03 E1 21 20 00 E5 . ..!.......! ..
022610: CD 8C 03 E1 21 08 00 E5 CD 8C 03 E1 E1 23 18 D4 ....!........#..
022620: E1 22 F5 08 21 00 00 DD 74 77 DD 75 76 CD 60 08 ."..!...tw.uv.`.
022630: EB DD 74 75 DD 75 74 DD 66 75 DD 6E 74 11 0D 00 ..tu.ut.fu.nt...
022640: A7 ED 52 CA 00 0A DD 66 75 DD 6E 74 11 FC 00 A7 ..R....fu.nt....
022650: ED 52 CA 00 0A DD 66 75 DD 6E 74 11 03 00 A7 ED .R....fu.nt.....
022660: 52 CA 00 0A DD 66 75 DD 6E 74 11 7F 00 A7 ED 52 R....fu.nt.....R
022670: C2 AF 09 DD 7E 77 DD B6 76 C2 87 09 21 07 00 E5 ....~w..v...!...
022680: CD 8C 03 E1 C3 AC 09 21 08 00 E5 CD 8C 03 E1 21 .......!.......!
022690: 20 00 E5 CD 8C 03 E1 21 08 00 E5 CD 8C 03 E1 DD ......!........
0226A0: 66 77 DD 6E 76 2B DD 74 77 DD 75 76 C3 F3 09 DD fw.nv+.tw.uv....
0226B0: 66 77 DD 6E 76 11 FF 00 A7 ED 52 C2 C9 09 21 07 fw.nv.....R...!.
0226C0: 00 E5 CD 8C 03 E1 C3 F3 09 DD 66 75 DD 6E 74 E5 ..........fu.nt.
0226D0: CD 8C 03 E1 DD 66 77 DD 6E 76 23 DD 74 77 DD 75 .....fw.nv#.tw.u
0226E0: 76 DD 66 7F DD 6E 7E 29 DD 56 77 DD 5E 76 19 DD v.f..n~).Vw.^v..
0226F0: 7E 74 77 CD 60 08 EB DD 74 75 DD 75 74 C3 37 09 ~tw.`...tu.ut.7.
022700: DD 66 75 DD 6E 74 11 FC 00 A7 ED 52 CA 1E 0A DD .fu.nt.....R....
022710: 66 75 DD 6E 74 11 03 00 A7 ED 52 C2 27 0A DD 7E fu.nt.....R.'..~
022720: 77 DD B6 76 C2 E0 08 DD 66 75 DD 6E 74 11 FC 00 w..v....fu.nt...
022730: A7 ED 52 CA 45 0A DD 66 75 DD 6E 74 11 03 00 A7 ..R.E..fu.nt....
022740: ED 52 C2 4B 0A 21 00 00 C3 51 0A DD 66 77 DD 6E .R.K.!...Q..fw.n
022750: 76 E5 DD 66 7F DD 6E 7E 29 D1 73 DD 66 75 DD 6E v..f..n~).s.fu.n
022760: 74 11 03 00 A7 ED 52 21 FF FF 28 03 21 00 00 E5 t.....R!..(.!...
022770: DD 66 75 DD 6E 74 11 FC 00 A7 ED 52 21 FF FF 28 .fu.nt.....R!..(
022780: 03 21 00 00 D1 7C B2 67 7D B3 6F 7C EE FF 67 7D .!...|.g}.o|..g}
022790: EE FF 6F EB E1 E1 C3 9B 0A E1 E1 E1 22 10 01 DD ..o........."...
0227A0: E1 C9 21 02 01 CD 92 02 DD 21 86 FF DD 39 2A 10 ..!......!...9*.
0227B0: 01 CB 3C CB 1D E5 DD 66 79 DD 6E 78 E5 CD CF 08 ..<....fy.nx....
0227C0: E1 21 0A 00 E5 DD 66 79 DD 6E 78 E5 CD E5 0A E1 .!....fy.nx.....
0227D0: E1 EB EB E1 C3 D8 0A E1 2A 10 01 22 12 01 E1 22 ........*.."..."
0227E0: 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A FF DD .....!......!...
0227F0: 39 21 01 00 E5 21 00 00 E5 DD 66 7D DD 6E 7C 29 9!...!....f}.n|)
022800: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
022810: 1D 00 00 00 02 09 50 E5 1D 00 C1 02 00 00 00 02 ......P.........
022820: 1D 00 C2 02 00 00 00 02 1D 00 C3 02 00 00 00 02 ................
022830: 1D 00 C4 02 00 00 00 02 1D 00 C5 02 00 00 00 02 ................
022840: 1D 00 C6 02 00 00 00 02 1D 00 C7 02 00 00 00 02 ................
022850: 1D 00 C8 02 00 00 00 02 1D 00 C9 02 00 00 00 02 ................
022860: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022870: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022880: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022890: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0228A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0228B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0228C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0228D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0228E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0228F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022900: 6E 26 00 DD 56 75 DD 5E 74 7C EE 80 67 7A EE 80 n&..Vu.^t|..gz..
022910: 57 A7 ED 52 DA A3 0B DD 66 7D DD 6E 7C 29 DD 56 W..R.£..f}.n|).V
022920: 75 DD 5E 74 19 6E 26 00 E5 CD B0 16 E1 EB 7C EE u.^t.n&.......|.
022930: 80 67 11 00 80 A7 ED 52 DA A3 0B DD 66 7D DD 6E .g.....R.£..f}.n
022940: 7C 29 DD 56 75 DD 5E 74 19 6E 26 00 E5 CD B0 16 |).Vu.^t.n&.....
022950: E1 DD 66 7F DD 6E 7E 7C EE 80 67 7A EE 80 57 A7 ..f..n~|..gz..W.
022960: ED 52 DA A3 0B DD 66 7D DD 6E 7C 29 DD 56 75 DD .R.£..f}.n|).Vu.
022970: 5E 74 19 6E 26 00 E5 CD B0 16 E1 D5 DD 66 73 DD ^t.n&........fs.
022980: 6E 72 DD 56 7F DD 5E 7E CD 16 01 D1 19 DD 74 73 nr.V..^~......ts
022990: DD 75 72 DD 66 75 DD 6E 74 23 DD 74 75 DD 75 74 .ur.fu.nt#.tu.ut
0229A0: C3 F9 0A DD 66 73 DD 6E 72 EB E1 E1 C3 B1 0B E1 ....fs.nr.......
0229B0: E1 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 ..".....!......!
0229C0: 8A FF DD 39 21 0F 00 E5 DD 66 7F DD 6E 7E 29 E5 ...9!....f..n~).
0229D0: DD 66 7F DD 6E 7E E5 DD 66 7D DD 6E 7C E5 CD 11 .f..n~..f}.n|...
0229E0: 12 E1 E1 DD E5 E1 11 72 00 19 CB 3C CB 1D E5 DD .......r...<....
0229F0: E5 E1 11 74 00 19 CB 3C CB 1D E5 CD 2D 14 E1 E1 ...t...<....-...
022A00: DD 66 7F DD 6E 7E 11 11 00 19 29 36 A4 23 36 00 .f..n~....)6.#6.
022A10: DD 66 75 DD 6E 74 11 FF 00 A7 ED 52 21 FF FF 20 .fu.nt.....R!..
022A20: 03 21 00 00 EB E1 E1 C3 2C 0C E1 E1 E1 22 10 01 .!......,...."..
022A30: DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 2A ...!......!...9*
022A40: 84 03 E5 21 00 00 22 84 03 DD 56 79 DD 5E 78 7A ...!.."...Vy.^xz
022A50: EE 80 57 21 00 80 A7 ED 52 D2 6B 0C DD 66 79 DD ..W!....R.k..fy.
022A60: 6E 78 E5 CD 7D 0F E1 EB C3 6E 0C 21 FF FF EB E1 nx..}....n.!....
022A70: C3 74 0C E1 E1 22 10 01 DD E1 C9 21 00 00 CD 92 .t...".....!....
022A80: 02 DD 21 86 FF DD 39 ED 5B 84 03 7A EE 80 57 21 ..!...9.[..z..W!
022A90: 00 80 A7 ED 52 D2 A0 0C 2A 84 03 E5 CD 94 0F E1 ....R...*.......
022AA0: E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A .".....!......!.
022AB0: FF DD 39 21 16 00 E5 DD 66 7F DD 6E 7E 29 E5 DD ..9!....f..n~)..
022AC0: 66 7F DD 6E 7E E5 DD 66 7D DD 6E 7C E5 CD 11 12 f..n~..f}.n|....
022AD0: E1 E1 DD 66 7F DD 6E 7E 29 E5 21 13 00 E5 CD 6F ...f..n~).!....o
022AE0: 14 E1 E1 DD E5 E1 11 72 00 19 CB 3C CB 1D E5 DD .......r...<....
022AF0: E5 E1 11 74 00 19 CB 3C CB 1D E5 CD 2D 14 E1 E1 ...t...<....-...
022B00: DD 66 7F DD 6E 7E 11 11 00 19 29 36 24 23 36 00 .f..n~....)6$#6.
022B10: DD 66 75 DD 6E 74 11 FF 00 A7 ED 52 21 FF FF 20 .fu.nt.....R!..
022B20: 03 21 00 00 EB E1 E1 C3 2C 0D E1 E1 E1 22 10 01 .!......,...."..
022B30: DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 2A ...!......!...9*
022B40: 86 03 E5 21 00 00 22 86 03 DD 56 79 DD 5E 78 7A ...!.."...Vy.^xz
022B50: EE 80 57 21 00 80 A7 ED 52 D2 6B 0D DD 66 79 DD ..W!....R.k..fy.
022B60: 6E 78 E5 CD 94 10 E1 EB C3 6E 0D 21 FF FF EB E1 nx.......n.!....
022B70: C3 74 0D E1 E1 22 10 01 DD E1 C9 21 00 00 CD 92 .t...".....!....
022B80: 02 DD 21 88 FF DD 39 DD 66 7F DD 6E 7E 11 0D 01 ..!...9.f..n~...
022B90: A7 ED 52 C2 A7 0D 21 0D 00 E5 CD 7B 0D E1 21 0A ..R...!....{..!.
022BA0: 00 DD 74 7F DD 75 7E DD 66 7F DD 6E 7E E5 21 02 ..t..u~.f..n~.!.
022BB0: 00 E5 CD 6F 14 E1 E1 21 FF FF EB C3 BE 0D E1 22 ...o...!......."
022BC0: 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD .....!......!...
022BD0: 39 DD 66 7F DD 6E 7E 11 0D 01 A7 ED 52 C2 F1 0D 9.f..n~.....R...
022BE0: 21 0D 00 E5 CD C5 0D E1 21 0A 00 DD 74 7F DD 75 !.......!...t..u
022BF0: 7E DD 66 7F DD 6E 7E E5 21 05 00 E5 CD 6F 14 E1 ~.f..n~.!....o..
022C00: E1 21 FF FF EB C3 08 0E E1 22 10 01 DD E1 C9 21 .!.......".....!
022C10: 00 00 CD 92 02 DD 21 86 FF DD 39 E5 DD E5 E1 11 ......!...9.....
022C20: 78 00 19 CB 3C CB 1D E5 21 0F 00 E5 CD 92 14 E1 x...<...!.......
022C30: E1 DD 66 79 DD 6E 78 11 00 00 A7 ED 52 21 FF FF ..fy.nx.....R!..
022C40: 28 03 21 00 00 EB E1 C3 4B 0E E1 E1 22 10 01 DD (.!.....K..."...
022C50: E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 21 0B ..!......!...9!.
022C60: 00 E5 E5 DD E5 E1 11 76 00 19 CB 3C CB 1D E5 DD .......v...<....
022C70: E5 E1 11 78 00 19 CB 3C CB 1D E5 CD 2D 14 E1 E1 ...x...<....-...
022C80: DD 66 79 DD 6E 78 11 01 00 A7 ED 52 21 FF FF 28 .fy.nx.....R!..(
022C90: 03 21 00 00 EB E1 E1 C3 9C 0E E1 E1 E1 22 10 01 .!..........."..
022CA0: DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 CD ...!......!...9.
022CB0: 52 0E EB 7C B5 CA BD 0E CD 3D 03 18 F2 E1 22 10 R..|.....=....".
022CC0: 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 ....!......!...9
022CD0: 21 00 00 E5 21 00 00 E5 DD 66 7F DD 6E 7E 11 11 !...!....f..n~..
022CE0: 00 19 29 5E 23 56 EB 11 A4 00 A7 ED 52 C2 1A 0F ..)^#V......R...
022CF0: DD 66 7F DD 6E 7E E5 CD 37 11 E1 EB 7C EE FF 67 .f..n~..7...|..g
022D00: 7D EE FF 6F DD 74 75 DD 75 74 DD 66 7F DD 6E 7E }..o.tu.ut.f..n~
022D10: 11 11 00 19 29 36 24 23 36 00 DD 66 7F DD 6E 7E ....)6$#6..f..n~
022D20: 11 11 00 19 29 5E 23 56 EB E5 DD 66 7F DD 6E 7E ....)^#V...f..n~
022D30: 29 D1 19 6E 26 00 DD 74 77 DD 75 76 DD 66 7F DD )..n&..tw.uv.f..
022D40: 6E 7E 11 11 00 19 29 5E 23 56 EB 23 E5 DD 66 7F n~....)^#V.#..f.
022D50: DD 6E 7E 11 11 00 19 29 D1 73 23 72 DD 66 77 DD .n~....).s#r.fw.
022D60: 6E 76 DD 56 75 DD 5E 74 7C B2 67 7D B3 6F EB E1 nv.Vu.^t|.g}.o..
022D70: E1 C3 76 0F E1 E1 E1 22 10 01 DD E1 C9 21 00 00 ..v....".....!..
022D80: CD 92 02 DD 21 88 FF DD 39 21 FF FF EB E1 22 10 ....!...9!....".
022D90: 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 ....!......!...9
022DA0: DD 66 7F DD 6E 7E 29 11 20 00 19 36 00 DD 66 7F .f..n~). ..6..f.
022DB0: DD 6E 7E 11 11 00 19 29 36 A4 23 36 00 E1 22 10 .n~....)6.#6..".
022DC0: 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A FF DD 39 ....!......!...9
022DD0: 21 FF FF E5 DD 66 7D DD 6E 7C 11 0D 01 A7 ED 52 !....f}.n|.....R
022DE0: C2 0A 10 DD 66 7F DD 6E 7E E5 21 0D 00 E5 CD C4 ....f..n~.!.....
022DF0: 0F E1 E1 EB 7C B5 C2 01 10 21 00 00 EB E1 C3 8D ....|....!......
022E00: 10 21 0A 00 DD 74 7D DD 75 7C DD 66 7F DD 6E 7E .!...t}.u|.f..n~
022E10: 11 11 00 19 29 5E 23 56 EB 11 A4 00 A7 ED 52 C2 ....)^#V......R.
022E20: 44 10 DD 66 7F DD 6E 7E E5 CD A4 11 E1 EB DD 74 D..f..n~.......t
022E30: 75 DD 75 74 DD 66 7F DD 6E 7E 11 11 00 19 29 36 u.ut.f..n~....)6
022E40: 24 23 36 00 DD 66 7F DD 6E 7E 11 11 00 19 29 5E $#6..f..n~....)^
022E50: 23 56 EB E5 DD 66 7F DD 6E 7E 29 D1 19 DD 7E 7C #V...f..n~)...~|
022E60: 77 DD 66 7F DD 6E 7E 11 11 00 19 29 5E 23 56 EB w.f..n~....)^#V.
022E70: 23 E5 DD 66 7F DD 6E 7E 11 11 00 19 29 D1 73 23 #..f..n~....).s#
022E80: 72 DD 66 75 DD 6E 74 EB E1 C3 8D 10 E1 E1 22 10 r.fu.nt.......".
022E90: 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 ....!......!...9
022EA0: 21 10 00 E5 DD 66 7F DD 6E 7E 29 E5 DD 66 7F DD !....f..n~)..f..
022EB0: 6E 7E 11 11 00 19 29 5E 23 56 EB 11 A4 00 A7 ED n~....)^#V......
022EC0: 52 CA D4 10 DD 66 7F DD 6E 7E E5 21 1A 00 E5 CD R....f..n~.!....
022ED0: C4 0F E1 E1 DD 66 7F DD 6E 7E 11 11 00 19 29 5E .....f..n~....)^
022EE0: 23 56 EB 11 24 00 A7 ED 52 CA F7 10 DD 66 7F DD #V..$...R....f..
022EF0: 6E 7E E5 CD A4 11 E1 DD E5 E1 11 74 00 19 CB 3C n~.........t...<
022F00: CB 1D E5 DD E5 E1 11 76 00 19 CB 3C CB 1D E5 CD .......v...<....
022F10: 2D 14 E1 E1 DD 66 77 DD 6E 76 11 FF 00 A7 ED 52 -....fw.nv.....R
022F20: 21 FF FF 20 03 21 00 00 EB E1 E1 C3 30 11 E1 E1 !.. .!......0...
022F30: E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 .".....!......!.
022F40: FF DD 39 21 14 00 E5 DD 66 7F DD 6E 7E 29 E5 DD ..9!....f..n~)..
022F50: 66 7F DD 6E 7E 29 11 24 00 19 E5 21 1A 00 E5 CD f..n~).$...!....
022F60: 6F 14 E1 E1 DD E5 E1 11 74 00 19 CB 3C CB 1D E5 o.......t...<...
022F70: DD E5 E1 11 76 00 19 CB 3C CB 1D E5 CD 2D 14 E1 ....v...<....-..
022F80: E1 DD 66 77 DD 6E 76 11 00 00 A7 ED 52 21 FF FF ..fw.nv.....R!..
022F90: 28 03 21 00 00 EB E1 E1 C3 9D 11 E1 E1 E1 22 10 (.!...........".
022FA0: 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 ....!......!...9
022FB0: 21 15 00 E5 DD 66 7F DD 6E 7E 29 E5 DD 66 7F DD !....f..n~)..f..
022FC0: 6E 7E 29 11 24 00 19 E5 21 1A 00 E5 CD 6F 14 E1 n~).$...!....o..
022FD0: E1 DD E5 E1 11 74 00 19 CB 3C CB 1D E5 DD E5 E1 .....t...<......
022FE0: 11 76 00 19 CB 3C CB 1D E5 CD 2D 14 E1 E1 DD 66 .v...<....-....f
022FF0: 77 DD 6E 76 11 00 00 A7 ED 52 21 FF FF 28 03 21 w.nv.....R!..(.!
023000: 00 00 EB E1 E1 C3 0A 12 E1 E1 E1 22 10 01 DD E1 ..........."....
023010: C9 21 00 00 CD 92 02 DD 21 8A FF DD 39 21 01 00 .!......!...9!..
023020: E5 21 01 00 E5 21 00 00 E5 21 FF FF E5 2A 3F 12 .!...!...!...*?.
023030: E5 21 0B 00 7C EE 80 67 22 3F 12 21 01 00 11 00 .!..|..g"?.!....
023040: 00 EB 42 4B 7A EE 80 57 ED 52 DA 62 12 C5 DD 66 ..BKz..W.R.b...f
023050: 7F DD 6E 7E 29 DD 56 6B DD 5E 6A 19 36 20 E1 23 ..n~).Vk.^j.6 .#
023060: 18 DC E1 22 3F 12 DD 66 7F DD 6E 7E 29 36 00 DD ..."?..f..n~)6..
023070: 66 7D DD 6E 7C 29 6E 26 00 DD 56 75 DD 5E 74 7C f}.n|)n&..Vu.^t|
023080: EE 80 67 7A EE 80 57 A7 ED 52 DA 6D 13 DD 66 7D ..gz..W..R.m..f}
023090: DD 6E 7C 29 DD 56 75 DD 5E 74 19 6E 26 00 E5 CD .n|).Vu.^t.n&...
0230A0: 43 16 E1 EB DD 74 71 DD 75 70 DD 66 75 DD 6E 74 C....tq.up.fu.nt
0230B0: 23 DD 74 75 DD 75 74 DD 66 73 DD 6E 72 11 02 00 #.tu.ut.fs.nr...
0230C0: A7 ED 52 C2 0F 13 DD 66 6F DD 6E 6E 7C B5 CA 0F ..R....fo.nn|...
0230D0: 13 DD 66 71 DD 6E 70 11 3A 00 A7 ED 52 C2 0F 13 ..fq.np.:...R...
0230E0: DD 66 7F DD 6E 7E 29 23 6E 26 00 11 BF FF 19 23 .f..n~)#n&.....#
0230F0: E5 DD 66 7F DD 6E 7E 29 D1 73 21 01 00 DD 74 73 ..f..n~).s!...ts
023100: DD 75 72 21 00 00 DD 74 6F DD 75 6E C3 6F 12 DD .ur!...to.un.o..
023110: 66 71 DD 6E 70 11 2E 00 A7 ED 52 C2 2A 13 21 09 fq.np.....R.*.!.
023120: 00 DD 74 73 DD 75 72 C3 6D 13 DD 66 73 DD 6E 72 ..ts.ur.m..fs.nr
023130: 11 09 00 A7 ED 52 CA 48 13 DD 66 71 DD 6E 70 11 .....R.H..fq.np.
023140: 20 00 A7 ED 52 C2 4B 13 C3 6D 13 DD 66 7F DD 6E ...R.K..m..f..n
023150: 7E 29 DD 56 73 DD 5E 72 19 DD 7E 70 77 DD 66 73 ~).Vs.^r..~pw.fs
023160: DD 6E 72 23 DD 74 73 DD 75 72 C3 6F 12 DD 66 71 .nr#.ts.ur.o..fq
023170: DD 6E 70 11 2E 00 A7 ED 52 C2 07 14 DD 66 7D DD .np.....R....f}.
023180: 6E 7C 29 6E 26 00 DD 56 75 DD 5E 74 7C EE 80 67 n|)n&..Vu.^t|..g
023190: 7A EE 80 57 A7 ED 52 DA 07 14 DD 66 7D DD 6E 7C z..W..R....f}.n|
0231A0: 29 DD 56 75 DD 5E 74 19 6E 26 00 E5 CD 43 16 E1 ).Vu.^t.n&...C..
0231B0: EB DD 74 71 DD 75 70 DD 66 75 DD 6E 74 23 DD 74 ..tq.up.fu.nt#.t
0231C0: 75 DD 75 74 DD 66 71 DD 6E 70 11 20 00 A7 ED 52 u.ut.fq.np. ...R
0231D0: CA E2 13 DD 66 73 DD 6E 72 11 0C 00 A7 ED 52 C2 ....fs.nr.....R.
0231E0: E5 13 C3 07 14 DD 66 7F DD 6E 7E 29 DD 56 73 DD ......f..n~).Vs.
0231F0: 5E 72 19 DD 7E 70 77 DD 66 73 DD 6E 72 23 DD 74 ^r..~pw.fs.nr#.t
023200: 73 DD 75 72 C3 7C 13 DD 66 7F DD 6E 7E 29 11 0C s.ur.|..f..n~)..
023210: 00 19 36 00 DD 66 7F DD 6E 7E 29 11 20 00 19 36 ..6..f..n~). ..6
023220: 00 21 08 00 39 F9 E1 22 10 01 DD E1 C9 21 00 00 .!..9..".....!..
023230: CD 92 02 DD 21 8A FF DD 39 DD 66 7F DD 6E 7E 29 ....!...9.f..n~)
023240: 5E 23 56 DD 66 7D DD 6E 7C 29 4E DD E5 CD 05 00 ^#V.f}.n|)N.....
023250: DD E1 EB DD 66 7F DD 6E 7E 29 73 23 72 DD 66 7D ....f..n~)s#r.f}
023260: DD 6E 7C 29 77 23 36 00 E1 22 10 01 DD E1 C9 21 .n|)w#6..".....!
023270: 00 00 CD 92 02 DD 21 8A FF DD 39 DD 56 7F DD 5E ......!...9.V..^
023280: 7E DD 4E 7C DD E5 CD 05 00 DD E1 E1 22 10 01 DD ~.N|........"...
023290: E1 C9 21 04 00 CD 92 02 DD 21 8A FF DD 39 2A 10 ..!......!...9*.
0232A0: 01 CB 3C CB 1D E5 21 00 00 29 11 80 00 19 6E 26 ..<...!..)....n&
0232B0: 00 E5 DD 66 75 DD 6E 74 29 D1 73 21 00 00 29 11 ...fu.nt).s!..).
0232C0: 81 00 19 6E 26 00 E5 DD 66 75 DD 6E 74 29 23 D1 ...n&...fu.nt)#.
0232D0: 73 21 00 00 29 11 82 00 19 6E 26 00 E5 DD 66 75 s!..)....n&...fu
0232E0: DD 6E 74 29 11 02 00 19 D1 73 21 00 00 29 11 80 .nt).....s!..)..
0232F0: 00 19 36 C3 DD 66 7D DD 6E 7C 2B 54 5D 29 19 E5 ..6..f}.n|+T])..
023300: 21 00 00 29 11 02 00 19 6E 26 00 EB 21 00 01 CD !..)....n&..!...
023310: 16 01 E5 21 00 00 29 23 6E 26 00 D1 19 D1 19 23 ...!..)#n&.....#
023320: E5 21 00 00 29 D1 19 6E 26 00 E5 21 00 00 29 11 .!..)..n&..!..).
023330: 81 00 19 D1 73 DD 66 7D DD 6E 7C 2B 54 5D 29 19 ....s.f}.n|+T]).
023340: E5 21 00 00 29 11 02 00 19 6E 26 00 EB 21 00 01 .!..)....n&..!..
023350: CD 16 01 E5 21 00 00 29 23 6E 26 00 D1 19 D1 19 ....!..)#n&.....
023360: 11 02 00 19 E5 21 00 00 29 D1 19 6E 26 00 E5 21 .....!..)..n&..!
023370: 00 00 29 11 82 00 19 D1 73 DD E5 CD 80 00 DD E1 ..).....s.......
023380: DD 66 7F DD 6E 7E 29 77 23 36 00 DD 66 75 DD 6E .f..n~)w#6..fu.n
023390: 74 29 6E 26 00 E5 21 00 00 29 11 80 00 19 D1 73 t)n&..!..).....s
0233A0: DD 66 75 DD 6E 74 29 23 6E 26 00 E5 21 00 00 29 .fu.nt)#n&..!..)
0233B0: 11 81 00 19 D1 73 DD 66 75 DD 6E 74 29 11 02 00 .....s.fu.nt)...
0233C0: 19 6E 26 00 E5 21 00 00 29 11 82 00 19 D1 73 E1 .n&..!..).....s.
0233D0: 2A 10 01 22 12 01 E1 22 10 01 DD E1 C9 21 00 00 *.."...".....!..
0233E0: CD 92 02 DD 21 88 FF DD 39 DD 66 7F DD 6E 7E 22 ....!...9.f..n~"
0233F0: 84 03 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD ...".....!......
023400: 21 88 FF DD 39 DD 66 7F DD 6E 7E 22 86 03 E1 22 !...9.f..n~"..."
023410: 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD .....!......!...
023420: 39 2A 84 03 EB E1 22 10 01 DD E1 C9 21 00 00 CD 9*....".....!...
023430: 92 02 DD 21 86 FF DD 39 2A 86 03 EB E1 22 10 01 ...!...9*...."..
023440: DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 DD ...!......!...9.
023450: 66 7F DD 6E 7E 7C EE 80 67 11 61 80 A7 ED 52 DA f..n~|..g.a...R.
023460: 82 16 DD 56 7F DD 5E 7E 7A EE 80 57 21 7A 80 A7 ...V..^~z..W!z..
023470: ED 52 DA 82 16 DD 66 7F DD 6E 7E 11 E0 FF 19 C3 .R....f..n~.....
023480: 88 16 DD 66 7F DD 6E 7E EB E1 22 10 01 DD E1 C9 ...f..n~..".....
023490: 21 00 00 CD 92 02 DD 21 88 FF DD 39 DD 66 7F DD !......!...9.f..
0234A0: 6E 7E E5 CD 43 16 E1 EB EB E1 22 10 01 DD E1 C9 n~..C.....".....
0234B0: 21 00 00 CD 92 02 DD 21 88 FF DD 39 DD 66 7F DD !......!...9.f..
0234C0: 6E 7E 7C EE 80 67 11 30 80 A7 ED 52 DA EF 16 DD n~|..g.0...R....
0234D0: 56 7F DD 5E 7E 7A EE 80 57 21 39 80 A7 ED 52 DA V..^~z..W!9...R.
0234E0: EF 16 DD 66 7F DD 6E 7E 11 D0 FF 19 C3 FD 16 DD ...f..n~........
0234F0: 66 7F DD 6E 7E 11 BF FF 19 11 0A 00 19 EB E1 22 f..n~.........."
023500: 10 01 DD E1 C9 C3 20 17 18 17 16 15 14 13 12 11 ...... .........
023510: 10 0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 ................
023520: C3 28 17 00 04 03 02 01 21 00 00 CD 92 02 DD 21 .(......!......!
023530: 8C FF DD 39 DD 66 7B DD 6E 7A DD 56 7D DD 5E 7C ...9.f{.nz.V}.^|
023540: DD 46 7F DD 4E 7E A7 ED 52 19 38 04 ED B0 18 08 .F..N~..R.8.....
023550: 0B 09 EB 09 EB 03 ED B8 E1 22 10 01 DD E1 C9 21 .........".....!
023560: 04 00 CD 92 02 DD 21 92 FF DD 39 2A 10 01 CB 3C ......!...9*...<
023570: CB 1D E5 21 03 00 E5 DD 66 6D DD 6E 6C 29 E5 21 ...!....fm.nl).!
023580: 90 00 E5 CD 28 17 21 06 00 39 F9 21 00 00 29 11 ....(.!..9.!..).
023590: 90 00 19 36 C3 DD 66 75 DD 6E 74 11 FF 00 7C A2 ...6..fu.nt...|.
0235A0: 67 7D A3 6F E5 21 00 00 29 11 91 00 19 D1 73 DD g}£o.!..).....s.
0235B0: 66 75 DD 6E 74 11 00 FF 7C A2 67 7D A3 6F 11 08 fu.nt...|.g}£o..
0235C0: 00 CD FE 01 E5 21 00 00 29 11 92 00 19 D1 73 DD .....!..).....s.
0235D0: E5 DD 66 77 DD 6E 76 29 5E 23 56 D5 DD 66 79 DD ..fw.nv)^#V..fy.
0235E0: 6E 78 29 4E 23 46 DD 66 7F DD 6E 7E 29 5E 23 56 nx)N#F.f..n~)^#V
0235F0: D5 DD 66 7D DD 6E 7C 29 5E 23 56 D5 DD 66 7B DD ..f}.n|)^#V..f{.
023600: 6E 7A 29 5E 23 56 E1 DD E1 F1 CD 90 00 DD 22 90 nz)^#V........".
023610: 00 DD E1 F5 E5 DD 66 7B DD 6E 7A 29 73 23 72 DD ......f{.nz)s#r.
023620: 66 7D DD 6E 7C 29 D1 73 23 72 DD 66 7F DD 6E 7E f}.n|).s#r.f..n~
023630: 29 ED 5B 90 00 73 23 72 DD 66 79 DD 6E 78 29 71 ).[..s#r.fy.nx)q
023640: 23 70 DD 66 77 DD 6E 76 29 D1 73 23 72 21 03 00 #p.fw.nv).s#r!..
023650: E5 21 90 00 E5 DD 66 6D DD 6E 6C 29 E5 CD 28 17 .!....fm.nl)..(.
023660: 21 06 00 39 F9 E1 2A 10 01 22 12 01 E1 22 10 01 !..9..*.."..."..
023670: DD E1 C9 21 08 00 CD 92 02 DD 21 92 FF DD 39 2A ...!......!...9*
023680: 10 01 CB 3C CB 1D E5 21 06 00 E5 DD 66 6D DD 6E ...<...!....fm.n
023690: 6C 29 E5 21 80 00 E5 CD 28 17 21 06 00 39 F9 21 l).!....(.!..9.!
0236A0: 00 00 29 11 80 00 19 36 CD 21 00 00 29 11 02 00 ..)....6.!..)...
0236B0: 19 6E 26 00 EB 21 00 01 CD 16 01 E5 21 00 00 29 .n&..!......!..)
0236C0: 23 6E 26 00 D1 19 11 57 00 19 23 E5 21 00 00 29 #n&....W..#.!..)
0236D0: D1 19 6E 26 00 E5 21 00 00 29 11 81 00 19 D1 73 ..n&..!..).....s
0236E0: 21 00 00 29 11 02 00 19 6E 26 00 EB 21 00 01 CD !..)....n&..!...
0236F0: 16 01 E5 21 00 00 29 23 6E 26 00 D1 19 11 57 00 ...!..)#n&....W.
023700: 19 11 02 00 19 E5 21 00 00 29 D1 19 6E 26 00 E5 ......!..)..n&..
023710: 21 00 00 29 11 82 00 19 D1 73 DD 66 75 DD 6E 74 !..).....s.fu.nt
023720: 11 FF 00 7C A2 67 7D A3 6F E5 21 00 00 29 11 83 ...|.g}£o.!..)..
023730: 00 19 D1 73 DD 66 75 DD 6E 74 11 00 FF 7C A2 67 ...s.fu.nt...|.g
023740: 7D A3 6F 11 08 00 CD FE 01 E5 21 00 00 29 11 84 }£o.......!..)..
023750: 00 19 D1 73 21 00 00 29 11 85 00 19 36 C9 DD 66 ...s!..)....6..f
023760: 7F DD 6E 7E E5 DD 66 7D DD 6E 7C E5 DD 66 7B DD ..n~..f}.n|..f{.
023770: 6E 7A E5 DD 66 79 DD 6E 78 E5 DD 66 77 DD 6E 76 nz..fy.nx..fw.nv
023780: E5 21 80 00 E5 CD 5F 17 21 0C 00 39 F9 21 06 00 .!...._.!..9.!..
023790: E5 21 80 00 E5 DD 66 6D DD 6E 6C 29 E5 CD 28 17 .!....fm.nl)..(.
0237A0: 21 06 00 39 F9 E1 2A 10 01 22 12 01 E1 22 10 01 !..9..*.."..."..
0237B0: DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 21 ...!......!...9!
0237C0: 0C 00 E5 E5 E5 E5 E5 E5 DD E5 E1 11 76 00 19 CB ............v...
0237D0: 3C CB 1D E5 DD E5 E1 11 78 00 19 CB 3C CB 1D E5 <.......x...<...
0237E0: CD 2D 14 E1 E1 DD 66 77 DD 6E 76 11 FF 00 7C A2 .-....fw.nv...|.
0237F0: 67 7D A3 6F 7C EE 80 67 11 30 80 A7 ED 52 D2 0D g}£o|..g.0...R..
023800: 1A 21 02 00 EB 21 0C 00 39 F9 C3 7F 1A DD E5 E1 .!...!..9.......
023810: 11 6E 00 19 CB 3C CB 1D E5 DD E5 E1 11 70 00 19 .n...<.......p..
023820: CB 3C CB 1D E5 DD E5 E1 11 76 00 19 CB 3C CB 1D .<.......v...<..
023830: E5 DD E5 E1 11 72 00 19 CB 3C CB 1D E5 DD E5 E1 .....r...<......
023840: 11 74 00 19 CB 3C CB 1D E5 21 E3 00 E5 CD 73 18 .t...<...!....s.
023850: 21 0C 00 39 F9 DD 66 75 DD 6E 74 11 00 FF 7C A2 !..9..fu.nt...|.
023860: 67 7D A3 6F 11 08 00 CD FE 01 EB 21 03 00 19 EB g}£o.......!....
023870: 21 0C 00 39 F9 C3 7F 1A 21 08 00 39 F9 E1 E1 E1 !..9....!..9....
023880: 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF ".....!......!..
023890: DD 39 21 1B 00 E5 CD 8C 03 E1 DD 66 7F DD 6E 7E .9!........f..n~
0238A0: E5 CD 8C 03 E1 E1 22 10 01 DD E1 C9 21 00 00 CD ......".....!...
0238B0: 92 02 DD 21 86 FF DD 39 2A 1E 17 11 02 00 A7 ED ...!...9*.......
0238C0: 52 C2 CF 1A 21 0C 00 E5 CD 8C 03 E1 C3 D7 1A 21 R...!..........!
0238D0: 45 00 E5 CD 86 1A E1 E1 22 10 01 DD E1 C9 21 00 E.......".....!.
0238E0: 00 CD 92 02 DD 21 8A FF DD 39 2A 1E 17 11 02 00 .....!...9*.....
0238F0: A7 ED 52 C2 26 1B 21 1F 00 E5 21 06 00 E5 CD 6F ..R.&.!...!....o
023900: 14 E1 E1 DD 66 7D DD 6E 7C E5 21 06 00 E5 CD 6F ....f}.n|.!....o
023910: 14 E1 E1 DD 66 7F DD 6E 7E E5 21 06 00 E5 CD 6F ....f..n~.!....o
023920: 14 E1 E1 C3 4E 1B 21 59 00 E5 CD 86 1A E1 DD 66 ....N.!Y.......f
023930: 7F DD 6E 7E 11 20 00 19 2B E5 CD 8C 03 E1 DD 66 ..n~. ..+......f
023940: 7D DD 6E 7C 11 20 00 19 2B E5 CD 8C 03 E1 E1 22 }.n|. ..+......"
023950: 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD .....!......!...
023960: 39 2A 76 1B E5 DD 66 7F DD 6E 7E 7C EE 80 67 22 9*v...f..n~|..g"
023970: 76 1B 21 01 00 11 00 00 EB 42 4B 7A EE 80 57 ED v.!......BKz..W.
023980: 52 DA 91 1B C5 21 20 00 E5 CD 8C 03 E1 E1 23 18 R....! .......#.
023990: E4 E1 22 76 1B E1 22 10 01 DD E1 C9 21 00 00 CD .."v..".....!...
0239A0: 92 02 DD 21 88 FF DD 39 DD 66 7F DD 6E 7E 11 0D ...!...9.f..n~..
0239B0: 00 A7 ED 52 C2 BD 1B CD 45 08 C3 C8 1B DD 66 7F ...R....E.....f.
0239C0: DD 6E 7E E5 CD 8C 03 E1 E1 22 10 01 DD E1 C9 21 .n~......".....!
0239D0: 00 00 CD 92 02 DD 21 86 FF DD 39 C3 DE 1B E1 22 ......!...9...."
0239E0: 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD .....!......!...
0239F0: 39 C3 F4 1B E1 22 10 01 DD E1 C9 21 00 00 CD 92 9....".....!....
023A00: 02 DD 21 86 FF DD 39 C3 0A 1C E1 22 10 01 DD E1 ..!...9...."....
023A10: C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 21 07 00 .!......!...9!..
023A20: E5 CD 8C 03 E1 E1 22 10 01 DD E1 C9 21 00 00 CD ......".....!...
023A30: 92 02 DD 21 88 FF DD 39 21 01 00 E5 DD 66 7F DD ...!...9!....f..
023A40: 6E 7E 29 5E 23 56 EB 11 0D 00 A7 ED 52 CA 6C 1C n~)^#V......R.l.
023A50: DD 66 77 DD 6E 76 23 DD 74 77 DD 75 76 DD 66 7F .fw.nv#.tw.uv.f.
023A60: DD 6E 7E 23 DD 74 7F DD 75 7E 18 D0 DD 66 77 DD .n~#.t..u~...fw.
023A70: 6E 76 EB E1 C3 78 1C E1 E1 22 10 01 DD E1 C9 21 nv...x...".....!
023A80: 00 00 CD 92 02 DD 21 8A FF DD 39 2A A1 1C E5 DD ......!...9*....
023A90: 66 7F DD 6E 7E 2B 7C EE 80 67 22 A1 1C 21 00 00 f..n~+|..g"..!..
023AA0: 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA CB 1C C5 ....BKz..W.R....
023AB0: DD 66 7D DD 6E 7C DD 56 73 DD 5E 72 19 29 5E 23 .f}.n|.Vs.^r.)^#
023AC0: 56 EB E5 CD 8C 03 E1 E1 23 18 D5 E1 22 A1 1C 21 V.......#..."..!
023AD0: 4F 00 DD 56 7F DD 5E 7E A7 ED 52 E5 CD 55 1B E1 O..V..^~..R..U..
023AE0: E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A .".....!......!.
023AF0: FF DD 39 2A 08 17 7C B5 CA 4A 1D 2A 19 1D E5 DD ..9*..|..J.*....
023B00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
023B10: 1E 00 00 00 02 09 50 E5 1E 00 C1 02 00 00 00 02 ......P.........
023B20: 1E 00 C2 02 00 00 00 02 1E 00 C3 02 00 00 00 02 ................
023B30: 1E 00 C4 02 00 00 00 02 1E 00 C5 02 00 00 00 02 ................
023B40: 1E 00 C6 02 00 00 00 02 1E 00 C7 02 00 00 00 02 ................
023B50: 1E 00 C8 02 00 00 00 02 1E 00 C9 02 00 00 00 02 ................
023B60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023B70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023B80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023B90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023BA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023BB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023BC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023BD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023BE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023BF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023C00: 66 7D DD 6E 7C 29 5E 23 56 EB 2B 7C EE 80 67 22 f}.n|)^#V.+|..g"
023C10: 19 1D DD 66 7F DD 6E 7E 11 00 00 EB 42 4B 7A EE ...f..n~....BKz.
023C20: 80 57 ED 52 DA 43 1D C5 DD 66 7D DD 6E 7C DD 56 .W.R.C...f}.n|.V
023C30: 73 DD 5E 72 19 29 5E 23 56 EB E5 CD 8C 03 E1 E1 s.^r.)^#V.......
023C40: 23 18 D5 E1 22 19 1D C3 61 1D DD 66 7D DD 6E 7C #..."...a..f}.n|
023C50: DD 56 7F DD 5E 7E 19 29 5E 23 56 EB E5 CD 8C 03 .V..^~.)^#V.....
023C60: E1 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 ..".....!......!
023C70: 8A FF DD 39 2A 08 17 7C B5 CA F2 1D DD 66 7D DD ...9*..|.....f}.
023C80: 6E 7C 29 5E 23 56 EB 2B E5 DD 66 7D DD 6E 7C 29 n|)^#V.+..f}.n|)
023C90: D1 73 23 72 2A B1 1D E5 DD 66 7D DD 6E 7C 29 5E .s#r*....f}.n|)^
023CA0: 23 56 EB 7C EE 80 67 22 B1 1D DD 66 7F DD 6E 7E #V.|..g"...f..n~
023CB0: 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA EB 1D C5 ....BKz..W.R....
023CC0: DD 66 73 DD 6E 72 23 EB DD 66 7D DD 6E 7C 19 29 .fs.nr#..f}.n|.)
023CD0: 5E 23 56 EB E5 DD 66 7D DD 6E 7C DD 56 73 DD 5E ^#V...f}.n|.Vs.^
023CE0: 72 19 29 D1 73 23 72 E1 23 18 C5 E1 22 B1 1D C3 r.).s#r.#..."...
023CF0: 05 1E DD 66 7D DD 6E 7C DD 56 7F DD 5E 7E 19 29 ...f}.n|.V..^~.)
023D00: 36 20 23 36 00 E1 22 10 01 DD E1 C9 21 00 00 CD 6 #6..".....!...
023D10: 92 02 DD 21 8C FF DD 39 2A 08 17 7C B5 CA AC 1E ...!...9*..|....
023D20: 2A 3D 1E E5 DD 66 7D DD 6E 7C 7C EE 80 67 22 3D *=...f}.n||..g"=
023D30: 1E DD 66 7B DD 6E 7A 29 5E 23 56 EB 11 00 00 44 ..f{.nz)^#V....D
023D40: 4D 7C EE 80 67 ED 52 DA 76 1E C5 DD 66 7B DD 6E M|..g.R.v...f{.n
023D50: 7A DD 56 71 DD 5E 70 19 29 5E 23 56 EB E5 DD 66 z.Vq.^p.)^#V...f
023D60: 71 DD 6E 70 23 EB DD 66 7B DD 6E 7A 19 29 D1 73 q.np#..f{.nz.).s
023D70: 23 72 E1 2B 18 C6 E1 22 3D 1E DD 66 7B DD 6E 7A #r.+..."=..f{.nz
023D80: DD 56 7D DD 5E 7C 19 29 DD 56 7F DD 5E 7E 73 23 .V}.^|.).V..^~s#
023D90: 72 DD 66 7B DD 6E 7A 29 5E 23 56 EB 23 E5 DD 66 r.f{.nz)^#V.#..f
023DA0: 7B DD 6E 7A 29 D1 73 23 72 C3 C3 1E DD 66 7B DD {.nz).s#r....f{.
023DB0: 6E 7A DD 56 7D DD 5E 7C 19 29 DD 56 7F DD 5E 7E nz.V}.^|.).V..^~
023DC0: 73 23 72 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 s#r.".....!.....
023DD0: DD 21 8A FF DD 39 DD 66 7D DD 6E 7C 29 5E 23 56 .!...9.f}.n|)^#V
023DE0: EB DD 56 7F DD 5E 7E 7C EE 80 67 7A EE 80 57 A7 ..V..^~|..gz..W.
023DF0: ED 52 DA FF 1E DD 66 7F DD 6E 7E EB C3 23 1F 2A .R....f..n~..#.*
023E00: 12 17 E5 DD 66 7D DD 6E 7C 29 5E 23 56 EB E5 CD ....f}.n|)^#V...
023E10: DE 1A E1 E1 DD 66 7D DD 6E 7C 29 5E 23 56 EB EB .....f}.n|)^#V..
023E20: C3 23 1F E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 .#..".....!.....
023E30: DD 21 8A FF DD 39 2A 12 17 E5 2A 10 17 E5 CD DE .!...9*...*.....
023E40: 1A E1 E1 DD 66 7F DD 6E 7E 11 16 21 3E 13 C3 7E ....f..n~..!>..~
023E50: 01 2A 10 17 E5 DD 66 7D DD 6E 7C E5 CD CA 1E E1 .*....f}.n|.....
023E60: E1 EB 22 10 17 21 0D 00 E5 2A 10 17 E5 DD 66 7D .."..!...*....f}
023E70: DD 6E 7C E5 CD 0C 1E 21 06 00 39 F9 21 0D 00 E5 .n|....!..9.!...
023E80: CD 8C 03 E1 DD 66 7D DD 6E 7C 23 E5 CD 2C 1C E1 .....f}.n|#..,..
023E90: EB 2B E5 DD 66 7D DD 6E 7C 23 E5 CD 7F 1C E1 E1 .+..f}.n|#......
023EA0: 21 0D 00 EB C3 6B 21 ED 5B 10 17 7A EE 80 57 21 !....k!.[..z..W!
023EB0: 01 80 A7 ED 52 D2 C2 1F 2A 10 17 2B 22 10 17 C3 ....R...*..+"...
023EC0: C5 1F CD 11 1C C3 64 21 DD 66 7D DD 6E 7C 29 5E ......d!.f}.n|)^
023ED0: 23 56 EB 2B ED 5B 10 17 7C EE 80 67 7A EE 80 57 #V.+.[..|..gz..W
023EE0: A7 ED 52 DA F0 1F 2A 10 17 23 22 10 17 C3 F3 1F ..R...*..#".....
023EF0: CD 11 1C C3 64 21 21 01 00 22 10 17 C3 64 21 DD ....d!!.."...d!.
023F00: 66 7D DD 6E 7C 29 5E 23 56 EB 22 10 17 C3 64 21 f}.n|)^#V."...d!
023F10: DD 66 7F DD 6E 7E EB C3 6B 21 2A 10 17 E5 DD 66 .f..n~..k!*....f
023F20: 7D DD 6E 7C E5 CD CA 1E E1 E1 EB 22 10 17 2A 10 }.n|......."..*.
023F30: 17 11 01 00 A7 ED 52 C2 41 20 21 7F 00 EB C3 6B ......R.A !....k
023F40: 21 2A 10 17 2B 22 10 17 2A 12 17 E5 2A 10 17 E5 !*..+"..*...*...
023F50: CD DE 1A E1 E1 2A 10 17 E5 DD 66 7D DD 6E 7C E5 .....*....f}.n|.
023F60: CD 68 1D E1 E1 2A 10 17 E5 DD 66 7D DD 6E 7C E5 .h...*....f}.n|.
023F70: CD E7 1C E1 E1 2A 08 17 7C B5 CA 85 20 21 20 00 .....*..|... ! .
023F80: E5 CD 8C 03 E1 C3 64 21 2A 10 17 E5 DD 66 7D DD ......d!*....f}.
023F90: 6E 7C E5 CD CA 1E E1 E1 EB 22 10 17 DD 66 7D DD n|......."...f}.
023FA0: 6E 7C 29 5E 23 56 EB 7C EE 80 67 11 50 80 A7 ED n|)^#V.|..g.P...
023FB0: 52 D2 0D 21 DD 66 7F DD 6E 7E E5 2A 10 17 E5 DD R..!.f..n~.*....
023FC0: 66 7D DD 6E 7C E5 CD 0C 1E 21 06 00 39 F9 2A 10 f}.n|....!..9.*.
023FD0: 17 E5 DD 66 7D DD 6E 7C E5 CD E7 1C E1 E1 2A 08 ...f}.n|......*.
023FE0: 17 7C B5 C2 03 21 DD 66 7D DD 6E 7C 29 5E 23 56 .|...!.f}.n|)^#V
023FF0: EB EB 2A 10 17 7C EE 80 67 7A EE 80 57 A7 ED 52 ..*..|..gz..W..R
024000: D2 0A 21 2A 10 17 23 22 10 17 C3 10 21 CD 11 1C ..!*..#"....!...
024010: C3 64 21 C3 64 21 EF 00 13 21 7F 00 1A 20 F1 00 .d!.d!...!... ..
024020: 10 20 F0 00 10 20 03 00 10 20 FC 00 10 20 1D 00 . ... ... ... ..
024030: 10 20 1B 00 10 20 F9 00 10 20 F8 00 10 20 F5 00 . ... ... ... ..
024040: 10 20 F4 00 10 20 FB 00 FF 1F FA 00 F6 1F F7 00 . ... ..........
024050: C8 1F F3 00 C8 1F F6 00 A7 1F F2 00 A7 1F 0D 00 ................
024060: 51 1F 88 20 21 00 00 EB C3 6B 21 E1 22 10 01 DD Q.. !....k!."...
024070: E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 21 00 ..!......!...9!.
024080: 00 E5 2A 1C 17 E5 21 06 00 E5 CD DE 1A E1 E1 2A ..*...!........*
024090: 1A 17 E5 21 CD 10 C3 9E 21 01 03 25 49 34 E5 CD ...!....!..%I4..
0240A0: E3 03 E1 E1 2A 1C 17 E5 21 12 00 E5 CD DE 1A E1 ....*...!.......
0240B0: E1 2A 10 17 E5 21 DE 10 C3 C0 21 01 03 25 49 32 .*...!....!..%I2
0240C0: E5 CD E3 03 E1 E1 2A 12 17 E5 2A 10 17 E5 CD DE ......*...*.....
0240D0: 1A E1 E1 CD E5 1B CD 60 08 EB DD 74 77 DD 75 76 .......`...tw.uv
0240E0: CD FB 1B DD 66 77 DD 6E 76 E5 DD 66 7F DD 6E 7E ....fw.nv..f..n~
0240F0: E5 CD 2A 1F E1 E1 EB DD 74 77 DD 75 76 DD 66 77 ..*.....tw.uv.fw
024100: DD 6E 76 7C B5 CA 82 21 DD 66 7F DD 6E 7E 23 E5 .nv|...!.f..n~#.
024110: CD 2C 1C E1 EB 2B E5 2A 14 17 ED 5B 12 17 19 29 .,...+.*...[...)
024120: D1 73 23 72 DD 66 77 DD 6E 76 EB E1 C3 30 22 E1 .s#r.fw.nv...0".
024130: E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A .".....!......!.
024140: FF DD 39 DD 66 7D DD 6E 7C 29 36 00 23 36 00 DD ..9.f}.n|)6.#6..
024150: 66 7D DD 6E 7C 29 5E 23 56 EB 23 E5 DD 66 7D DD f}.n|)^#V.#..f}.
024160: 6E 7C 29 D1 73 23 72 2A 0E 17 29 DD 56 7F DD 5E n|).s#r*..).V..^
024170: 7E 19 6E 26 00 E5 DD 66 7D DD 6E 7C 29 5E 23 56 ~.n&...f}.n|)^#V
024180: EB EB DD 66 7D DD 6E 7C 19 29 D1 73 23 72 DD 66 ...f}.n|.).s#r.f
024190: 7F DD 6E 7E 23 DD 74 7F DD 75 7E DD 66 7F DD 6E ..n~#.t..u~.f..n
0241A0: 7E 2B E5 2A 0E 17 29 D1 19 6E 26 00 11 0D 00 A7 ~+.*..)..n&.....
0241B0: ED 52 C2 4F 22 E1 22 10 01 DD E1 C9 21 00 00 CD .R.O".".....!...
0241C0: 92 02 DD 21 88 FF DD 39 21 01 00 E5 2A 0E 17 29 ...!...9!...*..)
0241D0: DD 56 7F DD 5E 7E 19 6E 26 00 11 0D 00 A7 ED 52 .V..^~.n&......R
0241E0: CA FF 22 DD 66 77 DD 6E 76 23 DD 74 77 DD 75 76 ..".fw.nv#.tw.uv
0241F0: DD 66 7F DD 6E 7E 23 DD 74 7F DD 75 7E 18 CD DD .f..n~#.t..u~...
024200: 66 77 DD 6E 76 EB E1 C3 0B 23 E1 E1 22 10 01 DD fw.nv....#.."...
024210: E1 C9 21 00 00 CD 92 02 DD 21 8C FF DD 39 DD 66 ..!......!...9.f
024220: 7F DD 6E 7E E5 DD 66 7D DD 6E 7C E5 CD DE 1A E1 ..n~..f}.n|.....
024230: E1 2A 59 23 E5 DD 66 7B DD 6E 7A E5 CD BC 22 E1 .*Y#..f{.nz...".
024240: DD 66 7B DD 6E 7A 19 11 FE FF 19 7C EE 80 67 22 .f{.nz.....|..g"
024250: 59 23 DD 66 7B DD 6E 7A 11 00 00 EB 42 4B 7A EE Y#.f{.nz....BKz.
024260: 80 57 ED 52 DA 7F 23 C5 2A 0E 17 29 DD 56 71 DD .W.R..#.*..).Vq.
024270: 5E 70 19 6E 26 00 E5 CD 8C 03 E1 E1 23 18 D9 E1 ^p.n&.......#...
024280: 22 59 23 DD 66 7B DD 6E 7A E5 CD BC 22 E1 EB 2B "Y#.f{.nz..."..+
024290: E5 2A 14 17 DD 56 7F DD 5E 7E 19 29 D1 73 23 72 .*...V..^~.).s#r
0242A0: E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 .".....!......!.
0242B0: FF DD 39 2A 1C 17 E5 21 01 00 E5 CD DE 1A E1 E1 ..9*...!........
0242C0: 2A 1E 17 11 04 00 A7 ED 52 C2 09 24 2A 10 17 E5 *.......R..$*...
0242D0: 2A 1A 17 E5 21 ED 11 C3 FD 23 22 4C 69 6E 65 3A *...!....#"Line:
0242E0: 25 49 34 20 43 6F 6C 75 6D 6E 3A 25 49 32 20 28 %I4 Column:%I2 (
0242F0: 53 54 4F 50 20 74 6F 20 6D 65 6E 75 29 E5 CD E3 STOP to menu)...
024300: 03 21 06 00 39 F9 C3 43 24 2A 10 17 E5 2A 1A 17 .!..9..C$*...*..
024310: E5 21 0C 12 C3 3A 24 01 21 4C 69 6E 65 3A 25 49 .!...:$.!Line:%I
024320: 34 20 43 6F 6C 75 6D 6E 3A 25 49 32 20 28 45 53 4 Column:%I2 (ES
024330: 43 20 74 6F 20 6D 65 6E 75 29 E5 CD E3 03 21 06 C to menu)....!.
024340: 00 39 F9 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 .9..".....!.....
024350: DD 21 86 FF DD 39 CD AC 1A CD CF 1B CD FB 1B 2A .!...9.........*
024360: 72 24 E5 2A 1C 17 2B 7C EE 80 67 22 72 24 21 01 r$.*..+|..g"r$!.
024370: 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA 95 24 .....BKz..W.R..$
024380: C5 2A 14 17 DD 56 77 DD 5E 76 19 29 36 00 23 36 .*...Vw.^v.)6.#6
024390: 00 E1 23 18 DC E1 22 72 24 CD A7 23 E1 22 10 01 ..#..."r$..#."..
0243A0: DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 21 ...!......!...9!
0243B0: 01 00 E5 21 01 00 E5 CD DE 1A E1 E1 CD 3C 25 21 ...!.........<%!
0243C0: 0D 00 E5 CD 8C 03 E1 CD A7 23 2A 1C 17 2B EB 2A .........#*..+.*
0243D0: 14 17 19 29 5E 23 56 EB 11 DF FF 19 E5 CD 55 1B ...)^#V.......U.
0243E0: E1 2A F4 24 E5 21 02 00 7C EE 80 67 22 F4 24 2A .*.$.!..|..g".$*
0243F0: 1C 17 2B 11 00 00 44 4D 7C EE 80 67 ED 52 DA 27 ..+...DM|..g.R.'
024400: 25 C5 DD 66 77 DD 6E 76 2B EB 2A 14 17 19 29 5E %..fw.nv+.*...)^
024410: 23 56 EB E5 2A 14 17 DD 56 77 DD 5E 76 19 29 D1 #V..*...Vw.^v.).
024420: 73 23 72 E1 2B 18 CC E1 22 F4 24 2A 14 17 23 29 s#r.+...".$*..#)
024430: 36 00 23 36 00 E1 22 10 01 DD E1 C9 21 00 00 CD 6.#6..".....!...
024440: 92 02 DD 21 86 FF DD 39 2A 1E 17 11 02 00 A7 ED ...!...9*.......
024450: 52 C2 5F 25 21 0B 00 E5 CD 8C 03 E1 C3 67 25 21 R._%!........g%!
024460: 49 00 E5 CD 86 1A E1 E1 22 10 01 DD E1 C9 21 00 I.......".....!.
024470: 00 CD 92 02 DD 21 86 FF DD 39 2A 1C 17 E5 21 01 .....!...9*...!.
024480: 00 E5 CD DE 1A E1 E1 21 28 00 E5 CD 55 1B E1 21 .......!(...U..!
024490: 0A 00 E5 CD 8C 03 E1 21 0D 00 E5 CD 8C 03 E1 2A .......!.......*
0244A0: B5 25 E5 2A 1C 17 11 FE FF 19 7C EE 80 67 22 B5 .%.*......|..g".
0244B0: 25 21 01 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 %!......BKz..W.R
0244C0: DA E9 25 C5 DD 66 77 DD 6E 76 23 EB 2A 14 17 19 ..%..fw.nv#.*...
0244D0: 29 5E 23 56 EB E5 2A 14 17 DD 56 77 DD 5E 76 19 )^#V..*...Vw.^v.
0244E0: 29 D1 73 23 72 E1 23 18 CB E1 22 B5 25 2A 1C 17 ).s#r.#...".%*..
0244F0: 2B EB 2A 14 17 19 29 36 00 23 36 00 CD A7 23 E1 +.*...)6.#6...#.
024500: 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A FF ".....!......!..
024510: DD 39 2A 28 26 E5 2A 1C 17 2B 7C EE 80 67 22 28 .9*(&.*..+|..g"(
024520: 26 DD 66 7F DD 6E 7E 11 00 00 EB 42 4B 7A EE 80 &.f..n~....BKz..
024530: 57 ED 52 DA 27 27 C5 21 00 00 E5 DD 66 73 DD 6E W.R.''.!....fs.n
024540: 72 E5 21 01 00 E5 CD DE 1A E1 E1 2A 0A 17 DD 56 r.!........*...V
024550: 7D DD 5E 7C 7C EE 80 67 7A EE 80 57 A7 ED 52 D2 }.^||..gz..W..R.
024560: 7F 26 21 50 00 E5 CD 55 1B E1 2A 14 17 DD 56 73 .&!P...U..*...Vs
024570: DD 5E 72 19 29 36 00 23 36 00 E1 E1 C3 27 27 DD .^r.)6.#6....''.
024580: 66 7D DD 6E 7C E5 CD BC 22 E1 EB 2B DD 74 71 DD f}.n|..."..+.tq.
024590: 75 70 2A B2 26 E5 DD 66 7D DD 6E 7C DD 56 71 DD up*.&..f}.n|.Vq.
0245A0: 5E 70 19 2B 7C EE 80 67 22 B2 26 DD 66 7D DD 6E ^p.+|..g".&.f}.n
0245B0: 7C 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA D8 26 |....BKz..W.R..&
0245C0: C5 2A 0E 17 29 DD 56 6D DD 5E 6C 19 6E 26 00 E5 .*..).Vm.^l.n&..
0245D0: CD 8C 03 E1 E1 23 18 D9 E1 22 B2 26 2A 14 17 DD .....#...".&*...
0245E0: 56 73 DD 5E 72 19 29 5E 23 56 EB DD 56 71 DD 5E Vs.^r.)^#V..Vq.^
0245F0: 70 A7 ED 52 E5 CD 55 1B E1 2A 14 17 DD 56 73 DD p..R..U..*...Vs.
024600: 5E 72 19 29 DD 56 71 DD 5E 70 73 23 72 DD 66 7D ^r.).Vq.^ps#r.f}
024610: DD 6E 7C DD 56 71 DD 5E 70 19 23 DD 74 7D DD 75 .n|.Vq.^p.#.t}.u
024620: 7C E1 E1 23 C3 27 26 E1 22 28 26 E1 22 10 01 DD |..#.'&."(&."...
024630: E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 DD 66 ..!......!...9.f
024640: 7F DD 6E 7E E5 CD BC 22 E1 DD 66 7F DD 6E 7E 19 ..n~..."..f..n~.
024650: EB 2A 0A 17 7C EE 80 67 7A EE 80 57 A7 ED 52 D2 .*..|..gz..W..R.
024660: 6F 27 CD 11 1C DD 66 7F DD 6E 7E EB C3 91 27 DD o'....f..n~...'.
024670: 66 7F DD 6E 7E E5 CD BC 22 E1 DD 66 7F DD 6E 7E f..n~..."..f..n~
024680: 19 DD 74 7F DD 75 7E DD 66 7F DD 6E 7E EB C3 91 ..t..u~.f..n~...
024690: 27 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 '.".....!......!
0246A0: 88 FF DD 39 DD 7E 7F DD B6 7E C2 BA 27 CD 11 1C ...9.~...~..'...
0246B0: DD 66 7F DD 6E 7E EB C3 F4 27 DD 66 7F DD 6E 7E .f..n~...'.f..n~
0246C0: 2B DD 74 7F DD 75 7E DD 66 7F DD 6E 7E 2B E5 2A +.t..u~.f..n~+.*
0246D0: 0E 17 29 D1 19 6E 26 00 11 0D 00 A7 ED 52 CA EA ..)..n&......R..
0246E0: 27 DD 7E 7F DD B6 7E C2 BA 27 DD 66 7F DD 6E 7E '.~...~..'.f..n~
0246F0: EB C3 F4 27 E1 22 10 01 DD E1 C9 21 00 00 CD 92 ...'.".....!....
024700: 02 DD 21 88 FF DD 39 DD 66 7F DD 6E 7E E5 CD 4A ..!...9.f..n~..J
024710: 24 2A 23 28 E5 21 02 00 7C EE 80 67 22 23 28 2A $*#(.!..|..g"#(*
024720: 12 17 11 00 00 44 4D 7C EE 80 67 ED 52 DA 67 28 .....DM|..g.R.g(
024730: C5 DD 7E 77 DD B6 76 C2 51 28 2A 12 17 DD 56 73 ..~w..v.Q(*...Vs
024740: DD 5E 72 A7 ED 52 23 22 12 17 E1 C3 67 28 C3 63 .^r..R#"....g(.c
024750: 28 DD 66 77 DD 6E 76 E5 CD 98 27 E1 EB DD 74 77 (.fw.nv...'...tw
024760: DD 75 76 E1 2B 18 BB E1 22 23 28 21 01 00 E5 DD .uv.+..."#(!....
024770: 66 77 DD 6E 76 E5 CD 06 26 E1 E1 E1 E1 22 10 01 fw.nv...&...."..
024780: DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 2A ...!......!...9*
024790: 1C 17 E5 21 01 00 E5 CD DE 1A E1 E1 DD 66 7F DD ...!.........f..
0247A0: 6E 7E E5 21 55 14 C3 C6 28 01 1B 25 53 2E 20 48 n~.!U...(..%S. H
0247B0: 69 74 20 61 6E 79 20 6B 65 79 20 74 6F 20 63 6F it any key to co
0247C0: 6E 74 69 6E 75 65 E5 CD E3 03 E1 E1 CD 11 1C CD ntinue..........
0247D0: 60 08 2A 1C 17 E5 21 21 00 E5 CD DE 1A E1 E1 21 `.*...!!.......!
0247E0: 14 00 E5 CD 55 1B E1 CD A7 23 21 FF FF 22 18 17 ....U....#!.."..
0247F0: 2A 0C 17 E5 CD FB 27 E1 2A 24 17 E5 2A 26 17 E5 *.....'.*$..*&..
024800: CD 2E 02 E1 E1 E1 22 10 01 DD E1 C9 21 00 00 CD ......".....!...
024810: 92 02 DD 21 8A FF DD 39 2A 0A 17 DD 56 7D DD 5E ...!...9*...V}.^
024820: 7C A7 ED 52 23 E5 2A 0E 17 29 DD 56 7D DD 5E 7C |..R#.*..).V}.^|
024830: 19 DD 56 7F DD 5E 7E 19 E5 2A 0E 17 29 DD 56 7D ..V..^~..*..).V}
024840: DD 5E 7C 19 E5 CD 28 17 21 06 00 39 F9 2A 0A 17 .^|...(.!..9.*..
024850: DD 56 7F DD 5E 7E 19 22 0A 17 E1 22 10 01 DD E1 .V..^~."..."....
024860: C9 21 00 00 CD 92 02 DD 21 8A FF DD 39 2A 0A 17 .!......!...9*..
024870: DD 56 7D DD 5E 7C A7 ED 52 DD 56 7F DD 5E 7E A7 .V}.^|..R.V..^~.
024880: ED 52 23 E5 2A 0E 17 29 DD 56 7D DD 5E 7C 19 E5 .R#.*..).V}.^|..
024890: 2A 0E 17 29 DD 56 7D DD 5E 7C 19 DD 56 7F DD 5E *..).V}.^|..V..^
0248A0: 7E 19 E5 CD 28 17 21 06 00 39 F9 2A 0A 17 DD 56 ~...(.!..9.*...V
0248B0: 7F DD 5E 7E A7 ED 52 22 0A 17 E1 22 10 01 DD E1 ..^~..R"..."....
0248C0: C9 21 00 00 CD 92 02 DD 21 8C FF DD 39 2A E3 29 .!......!...9*.)
0248D0: E5 DD 66 7F DD 6E 7E 2B 7C EE 80 67 22 E3 29 21 ..f..n~+|..g".)!
0248E0: 00 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA 1F ......BKz..W.R..
0248F0: 2A C5 DD 66 7B DD 6E 7A DD 56 71 DD 5E 70 19 29 *..f{.nz.Vq.^p.)
024900: 5E 23 56 EB E5 DD 66 7D DD 6E 7C DD 56 71 DD 5E ^#V...f}.n|.Vq.^
024910: 70 19 E5 2A 0E 17 29 D1 19 D1 73 E1 23 18 C3 E1 p..*..)...s.#...
024920: 22 E3 29 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 ".).".....!.....
024930: DD 21 8A FF DD 39 DD 66 7F DD 6E 7E E5 CD BC 22 .!...9.f..n~..."
024940: E1 EB E5 DD 66 7D DD 6E 7C 29 5E 23 56 EB E5 DD ....f}.n|)^#V...
024950: 66 73 DD 6E 72 DD 56 75 DD 5E 74 A7 ED 52 ED 5B fs.nr.Vu.^t..R.[
024960: 0A 17 19 7C EE 80 67 11 D6 D9 A7 ED 52 D2 00 2B ...|..g.....R..+
024970: DD 66 73 DD 6E 72 DD 56 75 DD 5E 74 7C EE 80 67 .fs.nr.Vu.^t|..g
024980: 7A EE 80 57 A7 ED 52 D2 A9 2A DD 66 75 DD 6E 74 z..W..R..*.fu.nt
024990: DD 56 73 DD 5E 72 A7 ED 52 E5 DD 66 7F DD 6E 7E .Vs.^r..R..f..n~
0249A0: E5 CD 61 29 E1 E1 C3 DF 2A DD 66 75 DD 6E 74 DD ..a)....*.fu.nt.
0249B0: 56 73 DD 5E 72 7C EE 80 67 7A EE 80 57 A7 ED 52 Vs.^r|..gz..W..R
0249C0: D2 DF 2A DD 66 73 DD 6E 72 DD 56 75 DD 5E 74 A7 ..*.fs.nr.Vu.^t.
0249D0: ED 52 E5 DD 66 7F DD 6E 7E E5 CD 0C 29 E1 E1 DD .R..f..n~...)...
0249E0: 66 73 DD 6E 72 E5 DD 66 7F DD 6E 7E E5 DD 66 7D fs.nr..f..n~..f}
0249F0: DD 6E 7C 23 E5 CD C1 29 21 06 00 39 F9 C3 13 2B .n|#...)!..9...+
024A00: 21 83 15 C3 0E 2B 07 4E 6F 20 72 6F 6F 6D E5 CD !....+.No room..
024A10: 83 28 E1 E1 E1 E1 22 10 01 DD E1 C9 21 00 00 CD .(....".....!...
024A20: 92 02 DD 21 8C FF DD 39 DD 66 7D DD 6E 7C E5 DD ...!...9.f}.n|..
024A30: 66 7B DD 6E 7A E5 CD DE 1A E1 E1 21 A1 15 C3 54 f{.nz......!...T
024A40: 2B 01 11 45 6E 74 65 72 20 66 69 6C 65 20 6E 61 +..Enter file na
024A50: 6D 65 3A 20 E5 CD A7 05 E1 CD E5 1B DD 66 7F DD me: .........f..
024A60: 6E 7E E5 CD CF 08 E1 CD FB 1B CD 45 08 E1 22 10 n~.........E..".
024A70: 01 DD E1 C9 21 2A 00 CD 92 02 DD 21 88 FF DD 39 ....!*.....!...9
024A80: 2A 10 01 CB 3C CB 1D E5 DD 66 77 DD 6E 76 E5 21 *...<....fw.nv.!
024A90: 13 00 E5 21 19 00 E5 CD 1C 2B 21 06 00 39 F9 2A ...!.....+!..9.*
024AA0: 16 17 E5 DD 66 77 DD 6E 76 E5 CD B8 0B E1 E1 EB ....fw.nv.......
024AB0: 7C B5 CA E6 2C 21 00 00 E5 21 00 00 22 0C 17 21 |...,!...!.."..!
024AC0: 01 00 22 10 17 21 01 00 22 12 17 21 01 00 22 1A .."..!.."..!..".
024AD0: 17 21 FF FF 22 0A 17 2A 0E 17 29 36 0D 2A 16 17 .!.."..*..)6.*..
024AE0: E5 CD C4 0E E1 EB DD 74 75 DD 75 74 DD 66 75 DD .......tu.ut.fu.
024AF0: 6E 74 11 1A 00 A7 ED 52 CA 4A 2C DD 66 75 DD 6E nt.....R.J,.fu.n
024B00: 74 11 FF FF A7 ED 52 CA 4A 2C 2A 0A 17 11 D6 59 t.....R.J,*....Y
024B10: A7 ED 52 CA 4A 2C DD 66 75 DD 6E 74 11 0A 00 A7 ..R.J,.fu.nt....
024B20: ED 52 CA 39 2C 2A 0A 17 23 22 0A 17 2A 0E 17 29 .R.9,*..#"..*..)
024B30: ED 5B 0A 17 19 DD 7E 74 77 2A 16 17 E5 CD C4 0E .[....~tw*......
024B40: E1 EB DD 74 75 DD 75 74 18 A2 2A 0E 17 29 ED 5B ...tu.ut..*..).[
024B50: 0A 17 19 6E 26 00 11 0D 00 A7 ED 52 CA 71 2C 2A ...n&......R.q,*
024B60: 0A 17 23 22 0A 17 2A 0E 17 29 ED 5B 0A 17 19 36 ..#"..*..).[...6
024B70: 0D 2A 0A 17 7C EE 80 67 11 D6 D9 A7 ED 52 DA BF .*..|..g.....R..
024B80: 2C 2A 0A 17 2B 22 0A 17 2A 0E 17 29 ED 5B 0A 17 ,*..+"..*..).[..
024B90: 19 36 0D 2A 16 17 E5 CD 7D 0F E1 21 00 00 E5 DD .6.*....}..!....
024BA0: 66 7F DD 6E 7E E5 CD 37 22 E1 E1 21 59 16 C3 BA f..n~..7"..!Y...
024BB0: 2C 01 07 4E 6F 20 72 6F 6F 6D E5 CD 83 28 E1 2A ,..No room...(.*
024BC0: 0A 17 11 FF FF A7 ED 52 C2 D1 2C 21 00 00 22 0A .......R..,!..".
024BD0: 17 2A 16 17 E5 CD 7D 0F E1 21 FF FF EB E1 E1 C3 .*....}..!......
024BE0: 13 2D E1 C3 12 2D DD 66 77 DD 6E 76 E5 21 7A 16 .-...-.fw.nv.!z.
024BF0: C3 01 2D 01 0C 25 53 20 6E 6F 74 20 66 6F 75 6E ..-..%S not foun
024C00: 64 E5 CD E3 03 E1 E1 CD 60 08 21 00 00 EB E1 C3 d.......`.!.....
024C10: 13 2D E1 2A 10 01 22 12 01 E1 22 10 01 DD E1 C9 .-.*.."...".....
024C20: 21 2A 00 CD 92 02 DD 21 86 FF DD 39 2A 10 01 CB !*.....!...9*...
024C30: 3C CB 1D E5 C3 81 2D 21 00 00 CD 92 02 DD 21 88 <.....-!......!.
024C40: FF DD 39 21 A5 16 C3 60 2D 01 15 44 69 73 63 20 ..9!...`-..Disc
024C50: 65 72 72 6F 72 2E 20 48 69 74 20 61 20 6B 65 79 error. Hit a key
024C60: E5 CD A7 05 E1 CD 60 08 DD 66 7F DD 6E 7E E5 CD ......`..f..n~..
024C70: 94 10 E1 21 00 00 EB C3 7A 2D E1 22 10 01 DD E1 ...!....z-."....
024C80: C9 DD 66 79 DD 6E 78 E5 21 13 00 E5 21 19 00 E5 ..fy.nx.!...!...
024C90: CD 1C 2B 21 06 00 39 F9 2A 16 17 E5 DD 66 79 DD ..+!..9.*....fy.
024CA0: 6E 78 E5 CD A7 0C E1 E1 EB 7C B5 CA 56 2E 2A C0 nx.......|..V.*.
024CB0: 2D E5 2A 0A 17 7C EE 80 67 22 C0 2D 21 00 00 11 -.*..|..g".-!...
024CC0: 00 00 EB 42 4B 7A EE 80 57 ED 52 DA 3F 2E C5 2A ...BKz..W.R.?..*
024CD0: 16 17 E5 2A 0E 17 29 DD 56 75 DD 5E 74 19 6E 26 ...*..).Vu.^t.n&
024CE0: 00 E5 CD C4 0F E1 E1 EB 7C B5 C2 FF 2D 2A 16 17 ........|...-*..
024CF0: E5 CD 37 2D E1 EB EB 21 06 00 39 F9 C3 82 2E 2A ..7-...!..9....*
024D00: 0E 17 29 DD 56 75 DD 5E 74 19 6E 26 00 11 0D 00 ..).Vu.^t.n&....
024D10: A7 ED 52 C2 3B 2E 2A 16 17 E5 21 0A 00 E5 CD C4 ..R.;.*...!.....
024D20: 0F E1 E1 EB 7C B5 C2 3B 2E 2A 16 17 E5 CD 37 2D ....|..;.*....7-
024D30: E1 EB EB 21 06 00 39 F9 C3 82 2E E1 23 18 80 E1 ...!..9.....#...
024D40: 22 C0 2D 2A 16 17 E5 CD 94 10 E1 21 FF FF EB E1 ".-*.......!....
024D50: C3 82 2E C3 81 2E 21 2E 17 C3 69 2E 0C 43 61 6E ......!...i..Can
024D60: 6E 6F 74 20 6F 70 65 6E 20 E5 CD A7 05 E1 DD 66 not open ......f
024D70: 79 DD 6E 78 E5 CD A7 05 E1 21 00 00 EB E1 C3 82 y.nx.....!......
024D80: 2E E1 2A 10 01 22 12 01 E1 22 10 01 DD E1 C9 21 ..*.."...".....!
024D90: 00 00 CD 92 02 DD 21 86 FF DD 39 21 00 00 E5 21 ......!...9!...!
024DA0: 01 00 22 1A 17 21 13 00 E5 21 19 00 E5 CD DE 1A .."..!...!......
024DB0: E1 E1 21 5C 17 C3 CC 2E 13 45 6E 74 65 72 20 6C ..!\.....Enter l
024DC0: 69 6E 65 20 6E 75 6D 62 65 72 3A 20 E5 CD E3 03 ine number: ....
024DD0: E1 CD E5 1B CD A2 0A EB DD 74 79 DD 75 78 CD FB .........ty.ux..
024DE0: 1B 21 00 00 22 0C 17 21 01 00 22 10 17 2A 02 2F .!.."..!.."..*./
024DF0: E5 DD 66 79 DD 6E 78 7C EE 80 67 22 02 2F 21 02 ..fy.nx|..g"./!.
024E00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
024E10: 1F 00 00 00 02 09 50 E5 1F 00 C1 02 00 00 00 02 ......P.........
024E20: 1F 00 C2 02 00 00 00 02 1F 00 C3 02 00 00 00 02 ................
024E30: 1F 00 C4 02 00 00 00 02 1F 00 C5 02 00 00 00 02 ................
024E40: 1F 00 C6 02 00 00 00 02 1F 00 C7 02 00 00 00 02 ................
024E50: 1F 00 C8 02 00 00 00 02 1F 00 C9 02 00 00 00 02 ................
024E60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024E70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024E80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024E90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024ED0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024F00: 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA 42 2F .....BKz..W.R.B/
024F10: C5 2A 0C 17 E5 2A 0C 17 E5 CD 32 27 E1 EB 22 0C .*...*....2'..".
024F20: 17 DD 66 73 DD 6E 72 ED 5B 0C 17 A7 ED 52 C2 36 ..fs.nr.[....R.6
024F30: 2F E1 E1 C3 42 2F 2A 1A 17 23 22 1A 17 E1 E1 23 /...B/*..#"....#
024F40: 18 BF E1 22 02 2F 21 0C 00 22 12 17 E1 E1 22 10 ..."./!.."....".
024F50: 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A FF DD 39 ....!......!...9
024F60: 2A 79 2F E5 DD 66 7F DD 6E 7E 29 6E 26 00 7C EE *y/..f..n~)n&.|.
024F70: 80 67 22 79 2F 21 01 00 11 00 00 EB 42 4B 7A EE .g"y/!......BKz.
024F80: 80 57 ED 52 DA C6 2F C5 DD 66 7F DD 6E 7E 29 DD .W.R../..f..n~).
024F90: 56 73 DD 5E 72 19 6E 26 00 E5 DD 66 7D DD 6E 7C Vs.^r.n&...f}.n|
024FA0: DD 56 73 DD 5E 72 19 2B E5 2A 0E 17 29 D1 19 6E .Vs.^r.+.*..)..n
024FB0: 26 00 D1 A7 ED 52 CA C2 2F 21 00 00 EB E1 E1 C3 &....R../!......
024FC0: D1 2F E1 23 18 B2 E1 22 79 2F 21 FF FF EB C3 D1 ./.#..."y/!.....
024FD0: 2F E1 22 10 01 DD E1 C9 21 2A 00 CD 92 02 DD 21 /.".....!*.....!
024FE0: 86 FF DD 39 2A 0C 17 E5 2A 10 17 E5 2A 12 17 E5 ...9*...*...*...
024FF0: 2A 1A 17 E5 2A 10 01 CB 3C CB 1D E5 21 13 00 E5 *...*...<...!...
025000: 21 19 00 E5 CD DE 1A E1 E1 21 08 18 C3 1F 30 01 !........!....0.
025010: 0E 45 6E 74 65 72 20 73 74 72 69 6E 67 3A 20 E5 .Enter string: .
025020: CD E3 03 E1 CD E5 1B DD 66 71 DD 6E 70 E5 CD CF ........fq.np...
025030: 08 E1 CD FB 1B 2A 0C 17 ED 5B 10 17 19 2B 22 0C .....*...[...+".
025040: 17 2A 0E 17 29 ED 5B 0C 17 19 6E 26 00 11 0D 00 .*..).[...n&....
025050: A7 ED 52 CA 5D 30 2A 0C 17 23 22 0C 17 2A 0C 17 ..R.]0*..#"..*..
025060: ED 5B 0A 17 7C EE 80 67 7A EE 80 57 A7 ED 52 D2 .[..|..gz..W..R.
025070: 38 31 2A 0E 17 29 ED 5B 0C 17 19 6E 26 00 11 0D 81*..).[...n&...
025080: 00 A7 ED 52 C2 91 30 2A 1A 17 23 22 1A 17 C3 F2 ...R..0*..#"....
025090: 30 DD 66 71 DD 6E 70 E5 2A 0C 17 E5 CD 54 2F E1 0.fq.np.*....T/.
0250A0: E1 EB 7C B5 CA F2 30 2A 0C 17 DD 74 79 DD 75 78 ..|...0*...ty.ux
0250B0: 2A 0C 17 2B E5 2A 0E 17 29 D1 19 6E 26 00 11 0D *..+.*..)..n&...
0250C0: 00 A7 ED 52 CA D8 30 2A 0C 17 7C B5 CA D8 30 2A ...R..0*..|...0*
0250D0: 0C 17 2B 22 0C 17 18 D8 DD 66 79 DD 6E 78 ED 5B ..+".....fy.nx.[
0250E0: 0C 17 A7 ED 52 23 22 10 17 21 0C 00 22 12 17 C3 ....R#"..!.."...
0250F0: 38 31 2A 0C 17 23 22 0C 17 2A 0C 17 ED 5B 0A 17 81*..#"..*...[..
025100: 7C EE 80 67 7A EE 80 57 A7 ED 52 DA 35 31 DD 66 |..gz..W..R.51.f
025110: 79 DD 6E 78 22 0C 17 DD 66 77 DD 6E 76 22 10 17 y.nx"...fw.nv"..
025120: DD 66 75 DD 6E 74 22 12 17 DD 66 73 DD 6E 72 22 .fu.nt"...fs.nr"
025130: 1A 17 C3 38 31 C3 72 30 E1 21 08 00 39 F9 2A 10 ...81.r0.!..9.*.
025140: 01 22 12 01 E1 22 10 01 DD E1 C9 21 00 00 CD 92 ."...".....!....
025150: 02 DD 21 88 FF DD 39 21 00 00 E5 2A 0C 17 E5 DD ..!...9!...*....
025160: 66 7F DD 6E 7E E5 CD 2A 2A E1 E1 21 00 00 E5 CD f..n~..**..!....
025170: AC 1A 21 04 00 E5 21 20 00 E5 CD DE 1A E1 E1 21 ..!...! .......!
025180: C3 18 C3 92 31 01 0B 42 43 50 4C 20 65 64 69 74 ....1..BCPL edit
025190: 6F 72 E5 CD A7 05 E1 21 05 00 E5 21 20 00 E5 CD or.....!...! ...
0251A0: DE 1A E1 E1 21 D5 18 C3 B6 31 0B 2D 2D 2D 2D 2D ....!....1.-----
0251B0: 2D 2D 2D 2D 2D 2D E5 CD A7 05 E1 21 09 00 E5 21 ------.....!...!
0251C0: 20 00 E5 CD DE 1A E1 E1 21 E7 18 C3 DB 31 0C 4C .......!....1.L
0251D0: 3A 20 4C 6F 61 64 20 74 65 78 74 E5 CD A7 05 E1 : Load text.....
0251E0: 21 0A 00 E5 21 20 00 E5 CD DE 1A E1 E1 21 FA 18 !...! .......!..
0251F0: C3 01 32 01 0C 53 3A 20 53 61 76 65 20 74 65 78 ..2..S: Save tex
025200: 74 E5 CD A7 05 E1 21 0B 00 E5 21 20 00 E5 CD DE t.....!...! ....
025210: 1A E1 E1 21 0D 19 C3 27 32 01 0C 45 3A 20 45 64 ...!...'2..E: Ed
025220: 69 74 20 74 65 78 74 E5 CD A7 05 E1 21 0C 00 E5 it text.....!...
025230: 21 20 00 E5 CD DE 1A E1 E1 21 20 19 C3 4D 32 01 ! .......! ..M2.
025240: 0C 47 3A 20 47 6F 74 6F 20 6C 69 6E 65 E5 CD A7 .G: Goto line...
025250: 05 E1 21 0D 00 E5 21 20 00 E5 CD DE 1A E1 E1 21 ..!...! .......!
025260: 33 19 C3 75 32 01 0E 46 3A 20 46 69 6E 64 20 73 3..u2..F: Find s
025270: 74 72 69 6E 67 E5 CD A7 05 E1 21 0E 00 E5 21 20 tring.....!...!
025280: 00 E5 CD DE 1A E1 E1 21 47 19 C3 96 32 01 07 51 .......!G...2..Q
025290: 3A 20 51 75 69 74 E5 CD A7 05 E1 21 11 00 E5 21 : Quit.....!...!
0252A0: 20 00 E5 CD DE 1A E1 E1 21 57 19 C3 BE 32 0F 53 .......!W...2.S
0252B0: 65 6C 65 63 74 20 6F 70 74 69 6F 6E 3A 20 E5 CD elect option: ..
0252C0: A7 05 E1 CD E5 1B CD 60 08 EB DD 74 75 DD 75 74 .......`...tu.ut
0252D0: CD FB 1B DD 66 75 DD 6E 74 11 EF 00 A7 ED 52 CA ....fu.nt.....R.
0252E0: C3 32 DD 66 75 DD 6E 74 11 74 33 3E 0C C3 7E 01 .2.fu.nt.t3>..~.
0252F0: 21 4C 00 E5 CD 8C 03 E1 DD 66 7F DD 6E 7E E5 CD !L.......f..n~..
025300: 74 2B E1 EB 7C B5 CA 0D 33 E1 C3 AD 33 C3 A6 33 t+..|...3...3..3
025310: 21 53 00 E5 CD 8C 03 E1 CD 20 2D EB 7C B5 CA 25 !S....... -.|..%
025320: 33 E1 C3 AD 33 C3 A6 33 21 47 00 E5 CD 8C 03 E1 3...3..3!G......
025330: CD 8F 2E E1 C3 AD 33 21 46 00 E5 CD 8C 03 E1 2A ......3!F......*
025340: 10 17 E5 DD 66 7F DD 6E 7E E5 CD CA 1E E1 E1 EB ....f..n~.......
025350: 22 10 17 CD D8 2F E1 C3 AD 33 21 45 00 E5 CD 8C "..../...3!E....
025360: 03 E1 E1 C3 AD 33 21 51 00 E5 CD 8C 03 E1 C3 D6 .....3!Q........
025370: 01 C3 A6 33 71 00 66 33 51 00 66 33 65 00 5A 33 ...3q.f3Q.f3e.Z3
025380: 45 00 5A 33 66 00 37 33 46 00 37 33 67 00 28 33 E.Z3f.73F.73g.(3
025390: 47 00 28 33 73 00 10 33 53 00 10 33 6C 00 F0 32 G.(3s..3S..3l..2
0253A0: 4C 00 F0 32 A6 33 CD 11 1C E1 C3 6B 31 2A 0C 17 L..2.3.....k1*..
0253B0: E5 CD FB 27 E1 E1 E1 22 10 01 DD E1 C9 21 00 00 ...'...".....!..
0253C0: CD 92 02 DD 21 88 FF DD 39 2A 0C 17 7C B5 CA E4 ....!...9*..|...
0253D0: 34 2A 0C 17 E5 2A 0C 17 E5 CD 98 27 E1 EB E5 DD 4*...*.....'....
0253E0: 66 7F DD 6E 7E 29 5E 23 56 EB E5 DD 66 75 DD 6E f..n~)^#V...fu.n
0253F0: 74 E5 CD BC 22 E1 EB D1 19 2B 7C EE 80 67 11 50 t..."....+|..g.P
025400: 80 A7 ED 52 D2 BD 34 2A 0C 17 E5 CD BC 22 E1 D5 ...R..4*....."..
025410: DD 66 7F DD 6E 7E 29 5E 23 56 EB D1 A7 ED 52 ED .f..n~)^#V....R.
025420: 5B 0A 17 19 7C EE 80 67 11 D6 D9 A7 ED 52 DA 45 [...|..g.....R.E
025430: 34 21 1C 1A C3 40 34 01 07 4E 6F 20 72 6F 6F 6D 4!...@4..No room
025440: E5 CD 83 28 E1 2A 0C 17 2B E5 2A 0E 17 29 D1 19 ...(.*..+.*..)..
025450: 36 00 2A 0C 17 2B E5 DD 66 7F DD 6E 7E E5 CD 2A 6.*..+..f..n~..*
025460: 2A E1 E1 DD 66 75 DD 6E 74 22 0C 17 2A 1A 17 2B *...fu.nt"..*..+
025470: 22 1A 17 DD 66 7F DD 6E 7E 29 5E 23 56 EB E5 2A "...f..n~)^#V..*
025480: 0C 17 E5 CD BC 22 E1 EB D1 A7 ED 52 23 22 10 17 .....".....R#"..
025490: 2A 12 17 11 01 00 A7 ED 52 C2 B3 34 21 01 00 E5 *.......R..4!...
0254A0: 21 01 00 E5 2A 0C 17 E5 CD 12 23 21 06 00 39 F9 !...*.....#!..9.
0254B0: C3 BA 34 2A 12 17 2B 22 12 17 C3 DF 34 21 62 1A ..4*..+"....4!b.
0254C0: C3 DA 34 01 15 4C 69 6E 65 20 74 6F 6F 20 6C 6F ..4..Line too lo
0254D0: 6E 67 20 74 6F 20 6A 6F 69 6E E5 CD 83 28 E1 E1 ng to join...(..
0254E0: E1 C3 FB 34 21 75 1A C3 F6 34 0B 54 6F 70 20 6F ...4!u...4.Top o
0254F0: 66 20 66 69 6C 65 E5 CD 83 28 E1 E1 22 10 01 DD f file...(.."...
025500: E1 C9 21 A2 00 CD 92 02 DD 21 88 FF DD 39 2A 10 ..!......!...9*.
025510: 01 CB 3C CB 1D E5 21 01 00 E5 2A 34 35 E5 DD 66 ..<...!...*45..f
025520: 7F DD 6E 7E 29 5E 23 56 EB 7C EE 80 67 22 34 35 ..n~)^#V.|..g"45
025530: 21 00 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA !......BKz..W.R.
025540: 6C 35 C5 DD 66 7F DD 6E 7E DD 56 71 DD 5E 70 19 l5..f..n~.Vq.^p.
025550: 29 5E 23 56 EB E5 DD 66 77 DD 6E 76 DD 56 71 DD )^#V...fw.nv.Vq.
025560: 5E 70 19 29 D1 73 23 72 E1 23 18 C7 E1 22 34 35 ^p.).s#r.#..."45
025570: DD 66 7F DD 6E 7E DD 56 75 DD 5E 74 19 29 5E 23 .f..n~.Vu.^t.)^#
025580: 56 EB 11 0D 00 A7 ED 52 CA 9A 35 DD 66 75 DD 6E V......R..5.fu.n
025590: 74 23 DD 74 75 DD 75 74 18 D6 2A B8 35 E5 DD 66 t#.tu.ut..*.5..f
0255A0: 7F DD 6E 7E 29 5E 23 56 EB 2B 7C EE 80 67 22 B8 ..n~)^#V.+|..g".
0255B0: 35 DD 66 75 DD 6E 74 11 00 00 EB 42 4B 7A EE 80 5.fu.nt....BKz..
0255C0: 57 ED 52 DA F2 35 C5 DD 66 71 DD 6E 70 23 EB DD W.R..5..fq.np#..
0255D0: 66 7F DD 6E 7E 19 29 5E 23 56 EB E5 DD 66 7F DD f..n~.)^#V...f..
0255E0: 6E 7E DD 56 71 DD 5E 70 19 29 D1 73 23 72 E1 23 n~.Vq.^p.).s#r.#
0255F0: 18 C5 E1 22 B8 35 DD 66 7F DD 6E 7E 29 5E 23 56 ...".5.f..n~)^#V
025600: EB 2B E5 DD 66 7F DD 6E 7E 29 D1 73 23 72 2A 0C .+..f..n~).s#r*.
025610: 17 E5 DD 66 77 DD 6E 76 E5 CD 2A 2A E1 E1 21 01 ...fw.nv..**..!.
025620: 00 22 10 17 2A 1A 17 23 22 1A 17 2A 0C 17 E5 CD ."..*..#"..*....
025630: 32 27 E1 EB 22 0C 17 2A 1C 17 2B EB 2A 12 17 A7 2'.."..*..+.*...
025640: ED 52 C2 60 36 CD 6E 25 2A 1C 17 2B E5 21 01 00 .R.`6.n%*..+.!..
025650: E5 2A 0C 17 E5 CD 12 23 21 06 00 39 F9 C3 67 36 .*.....#!..9..g6
025660: 2A 12 17 23 22 12 17 E1 E1 2A 10 01 22 12 01 E1 *..#"....*.."...
025670: 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF ".....!......!..
025680: DD 39 2A 0C 17 7C B5 CA CA 36 2A 0C 17 E5 CD 98 .9*..|...6*.....
025690: 27 E1 EB 22 0C 17 2A 1A 17 2B 22 1A 17 2A 12 17 '.."..*..+"..*..
0256A0: 11 01 00 A7 ED 52 C2 C3 36 CD A3 24 21 01 00 E5 .....R..6.£$!...
0256B0: 21 01 00 E5 2A 0C 17 E5 CD 12 23 21 06 00 39 F9 !...*.....#!..9.
0256C0: C3 CA 36 2A 12 17 2B 22 12 17 E1 22 10 01 DD E1 ..6*..+"..."....
0256D0: C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 2A 0C 17 .!......!...9*..
0256E0: E5 DD 66 7F DD 6E 7E E5 CD 2A 2A E1 E1 CD 76 36 ..f..n~..**...v6
0256F0: E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 .".....!......!.
025700: FF DD 39 2A 0C 17 E5 2A 0C 17 E5 CD 32 27 E1 EB ..9*...*....2'..
025710: 22 0C 17 2A 0C 17 DD 56 79 DD 5E 78 A7 ED 52 CA "..*...Vy.^x..R.
025720: 59 37 2A 1A 17 23 22 1A 17 2A 1C 17 2B EB 2A 12 Y7*..#"..*..+.*.
025730: 17 A7 ED 52 C2 52 37 CD 6E 25 2A 1C 17 2B E5 21 ...R.R7.n%*..+.!
025740: 01 00 E5 2A 0C 17 E5 CD 12 23 21 06 00 39 F9 C3 ...*.....#!..9..
025750: 59 37 2A 12 17 23 22 12 17 E1 E1 22 10 01 DD E1 Y7*..#"...."....
025760: C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 2A 0C 17 .!......!...9*..
025770: E5 DD 66 7F DD 6E 7E E5 CD 2A 2A E1 E1 CD F7 36 ..f..n~..**....6
025780: E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 .".....!......!.
025790: FF DD 39 2A 0C 17 E5 DD 66 7F DD 6E 7E E5 CD 2A ..9*....f..n~..*
0257A0: 2A E1 E1 2A B9 37 E5 2A 1C 17 11 FC FF 19 7C EE *..*.7.*......|.
0257B0: 80 67 22 B9 37 21 01 00 11 00 00 EB 42 4B 7A EE .g".7!......BKz.
0257C0: 80 57 ED 52 DA DB 37 C5 2A 0C 17 7C B5 C2 D4 37 .W.R..7.*..|...7
0257D0: E1 C3 DB 37 CD 76 36 E1 23 18 DD E1 22 B9 37 E1 ...7.v6.#...".7.
0257E0: 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF ".....!......!..
0257F0: DD 39 2A 0C 17 E5 DD 66 7F DD 6E 7E E5 CD 2A 2A .9*....f..n~..**
025800: E1 E1 2A 18 38 E5 2A 1C 17 11 FC FF 19 7C EE 80 ..*.8.*......|..
025810: 67 22 18 38 21 01 00 11 00 00 EB 42 4B 7A EE 80 g".8!......BKz..
025820: 57 ED 52 DA 48 38 C5 2A 0C 17 E5 CD F7 36 DD 66 W.R.H8.*.....6.f
025830: 73 DD 6E 72 ED 5B 0C 17 A7 ED 52 C2 43 38 E1 E1 s.nr.[....R.C8..
025840: C3 48 38 E1 E1 23 18 CF E1 22 18 38 E1 22 10 01 .H8..#...".8."..
025850: DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 2A ...!......!...9*
025860: 0C 17 E5 DD 66 7F DD 6E 7E E5 CD 2A 2A E1 E1 21 ....f..n~..**..!
025870: 00 00 22 0C 17 21 01 00 22 10 17 21 01 00 22 12 .."..!.."..!..".
025880: 17 21 01 00 22 1A 17 2A 0C 17 E5 CD FB 27 E1 E1 .!.."..*.....'..
025890: 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF ".....!......!..
0258A0: DD 39 21 00 00 E5 2A 0C 17 E5 DD 66 7F DD 6E 7E .9!...*....f..n~
0258B0: E5 CD 2A 2A E1 E1 21 00 00 22 0C 17 21 01 00 22 ..**..!.."..!.."
0258C0: 10 17 21 01 00 22 12 17 21 00 00 22 1A 17 2A 0C ..!.."..!.."..*.
0258D0: 17 DD 74 77 DD 75 76 2A 0C 17 E5 CD 32 27 E1 EB ..tw.uv*....2'..
0258E0: 22 0C 17 2A 12 17 23 22 12 17 2A 1A 17 23 22 1A "..*..#"..*..#".
0258F0: 17 DD 66 77 DD 6E 76 ED 5B 0C 17 A7 ED 52 C2 CE ..fw.nv.[....R..
025900: 38 2A 1C 17 2B ED 5B 12 17 7C EE 80 67 7A EE 80 8*..+.[..|..gz..
025910: 57 A7 ED 52 D2 1E 39 2A 1C 17 2B 22 12 17 2A 0C W..R..9*..+"..*.
025920: 17 E5 CD FB 27 E1 E1 E1 22 10 01 DD E1 C9 21 6A ....'...".....!j
025930: 5B CD 92 02 DD 21 86 FF DD 39 2A 10 01 CB 3C CB [....!...9*...<.
025940: 1D E5 2A 10 01 11 A4 00 19 CB 3C CB 1D E5 2A 10 ..*.......<...*.
025950: 01 11 E2 00 19 CB 3C CB 1D E5 2A 10 01 11 BC 5A ......<...*....Z
025960: 19 CB 3C CB 1D E5 2A 10 01 11 60 5B 19 CB 3C CB ..<...*...`[..<.
025970: 1D E5 21 00 00 E5 21 00 00 E5 21 FF FF E5 CD B3 ..!...!...!.....
025980: 19 EB 22 1E 17 2A 1E 17 11 04 00 A7 ED 52 C2 97 .."..*.......R..
025990: 39 21 1F 00 C3 AC 39 2A 1E 17 11 03 00 A7 ED 52 9!....9*.......R
0259A0: C2 A9 39 21 18 00 C3 AC 39 21 19 00 22 1C 17 21 ..9!....9!.."..!
0259B0: 00 00 22 0C 17 21 00 00 22 0A 17 DD 66 75 DD 6E .."..!.."...fu.n
0259C0: 74 22 0E 17 DD 66 71 DD 6E 70 22 24 17 DD 66 77 t"...fq.np"$..fw
0259D0: DD 6E 76 22 14 17 DD 66 79 DD 6E 78 22 16 17 CD .nv"...fy.nx"...
0259E0: 4A 24 2A 0E 17 29 36 0D 2A 24 17 E5 CD 08 02 E1 J$*..)6.*$......
0259F0: 2A 0C 17 E5 DD 66 73 DD 6E 72 E5 CD 37 22 E1 E1 *....fs.nr..7"..
025A00: DD 66 6B DD 6E 6A 7C B5 CA 18 3A 2A 12 17 E5 2A .fk.nj|...:*...*
025A10: 0C 17 E5 CD 06 26 E1 E1 2A 18 17 7C B5 CA 93 3A .....&..*..|...:
025A20: 2A 12 17 E5 21 01 00 E5 CD DE 1A E1 E1 2A 48 3A *...!........*H:
025A30: E5 DD 66 73 DD 6E 72 29 5E 23 56 EB 2B 7C EE 80 ..fs.nr)^#V.+|..
025A40: 67 22 48 3A 21 01 00 11 00 00 EB 42 4B 7A EE 80 g"H:!......BKz..
025A50: 57 ED 52 DA 72 3A C5 DD 66 73 DD 6E 72 DD 56 67 W.R.r:..fs.nr.Vg
025A60: DD 5E 66 19 29 5E 23 56 EB E5 CD 8C 03 E1 E1 23 .^f.)^#V.......#
025A70: 18 D5 E1 22 48 3A DD 66 73 DD 6E 72 29 5E 23 56 ..."H:.fs.nr)^#V
025A80: EB EB 21 50 00 A7 ED 52 E5 CD 55 1B E1 21 00 00 ..!P...R..U..!..
025A90: 22 18 17 DD 66 73 DD 6E 72 E5 CD 72 21 E1 EB DD "...fs.nr..r!...
025AA0: 74 6D DD 75 6C 21 00 00 DD 74 6B DD 75 6A DD 66 tm.ul!...tk.uj.f
025AB0: 6D DD 6E 6C 11 4F 3B 3E 0C C3 7E 01 21 FF FF DD m.nl.O;>..~.!...
025AC0: 74 6B DD 75 6A DD 66 73 DD 6E 72 E5 CD BD 33 E1 tk.uj.fs.nr...3.
025AD0: C3 81 3B 21 FF FF DD 74 6B DD 75 6A DD 66 73 DD ..;!...tk.uj.fs.
025AE0: 6E 72 E5 CD 02 35 E1 C3 81 3B DD 66 73 DD 6E 72 nr...5...;.fs.nr
025AF0: E5 CD D1 36 E1 C3 81 3B DD 66 73 DD 6E 72 E5 CD ...6...;.fs.nr..
025B00: 61 37 E1 C3 81 3B DD 66 73 DD 6E 72 E5 CD 87 37 a7...;.fs.nr...7
025B10: E1 C3 81 3B DD 66 73 DD 6E 72 E5 CD E6 37 E1 C3 ...;.fs.nr...7..
025B20: 81 3B DD 66 73 DD 6E 72 E5 CD 53 38 E1 C3 81 3B .;.fs.nr..S8...;
025B30: DD 66 73 DD 6E 72 E5 CD 96 38 E1 C3 81 3B DD 66 .fs.nr...8...;.f
025B40: 73 DD 6E 72 E5 CD 4B 31 E1 C3 81 3B C3 81 3B 03 s.nr..K1...;..;.
025B50: 00 3E 3B FC 00 3E 3B 1D 00 30 3B 1B 00 22 3B F9 .>;..>;..0;..";.
025B60: 00 14 3B F8 00 06 3B F5 00 F8 3A F1 00 F8 3A F4 ..;...;...:...:.
025B70: 00 EA 3A F0 00 EA 3A 0D 00 D3 3A 7F 00 BC 3A 81 ..:...:...:...:.
025B80: 3B C3 E8 39 21 06 00 39 F9 E1 E1 E1 E1 E1 2A 10 ;..9!..9......*.
025B90: 01 22 12 01 E1 22 10 01 DD E1 C9 26 17 18 3A 1E ."...".....&..:.
025BA0: 17 00 00 1C 17 00 00 1A 17 01 00 18 17 00 00 16 ................
025BB0: 17 00 00 14 17 00 00 12 17 01 00 10 17 01 00 0E ................
025BC0: 17 00 00 0C 17 00 00 0A 17 00 00 08 17 FF FF 8A ................
025BD0: 03 00 00 88 03 00 00 86 03 00 00 84 03 00 00 02 ................
025BE0: F6 14 3B F8 00 06 3B F5 00 F8 3A F1 00 F8 3A F4 ..;...;...:...:.
025BF0: 00 EA 3A F0 00 EA 3A 0D 00 D3 3A 7F 00 BC 3A 81 ..:...:...:...:.
025C00: DD 66 6B DD 6E 6A 7C B5 CA 18 3A 2A 12 17 E5 2A .fk.nj|...:*...*
025C10: 0C 17 E5 CD 06 26 E1 E1 2A 18 17 7C B5 CA 93 3A .....&..*..|...:
025C20: 2A 12 17 E5 21 01 00 E5 CD DE 1A E1 E1 2A 48 3A *...!........*H:
025C30: E5 DD 66 73 DD 6E 72 29 5E 23 56 EB 2B 7C EE 80 ..fs.nr)^#V.+|..
025C40: 67 22 48 3A 21 01 00 11 00 00 EB 42 4B 7A EE 80 g"H:!......BKz..
025C50: 57 ED 52 DA 72 3A C5 DD 66 73 DD 6E 72 DD 56 67 W.R.r:..fs.nr.Vg
025C60: DD 5E 66 19 29 5E 23 56 EB E5 CD 8C 03 E1 E1 23 .^f.)^#V.......#
025C70: 18 D5 E1 22 48 3A DD 66 73 DD 6E 72 29 5E 23 56 ..."H:.fs.nr)^#V
025C80: EB EB 21 50 00 A7 ED 52 E5 CD 55 1B E1 21 00 00 ..!P...R..U..!..
025C90: 22 18 17 DD 66 73 DD 6E 72 E5 CD 72 21 E1 EB DD "...fs.nr..r!...
025CA0: 74 6D DD 75 6C 21 00 00 DD 74 6B DD 75 6A DD 66 tm.ul!...tk.uj.f
025CB0: 6D DD 6E 6C 11 4F 3B 3E 0C C3 7E 01 21 FF FF DD m.nl.O;>..~.!...
025CC0: 74 6B DD 75 6A DD 66 73 DD 6E 72 E5 CD BD 33 E1 tk.uj.fs.nr...3.
025CD0: C3 81 3B 21 FF FF DD 74 6B DD 75 6A DD 66 73 DD ..;!...tk.uj.fs.
025CE0: 6E 72 E5 CD 02 35 E1 C3 81 3B DD 66 73 DD 6E 72 nr...5...;.fs.nr
025CF0: E5 CD D1 36 E1 C3 81 3B DD 66 73 DD 6E 72 E5 CD ...6...;.fs.nr..
025D00: 2F 2F 20 43 4C 49 42 48 44 52 20 20 20 73 74 61 // CLIBHDR sta
025D10: 6E 64 61 72 64 20 43 50 2F 4D 20 6C 69 62 72 61 ndard CP/M libra
025D20: 72 79 20 68 65 61 64 65 72 2C 20 6C 61 73 74 20 ry header, last
025D30: 6D 6F 64 69 66 69 65 64 20 32 31 2F 30 33 2F 31 modified 21/03/1
025D40: 39 38 37 0D 0A 0D 0A 0D 0A 4D 41 4E 49 46 45 53 987......MANIFES
025D50: 54 20 24 28 20 62 79 74 65 73 70 65 72 77 6F 72 T $( bytesperwor
025D60: 64 20 3D 20 32 20 3B 20 62 69 74 73 70 65 72 77 d = 2 ; bitsperw
025D70: 6F 72 64 20 3D 20 31 36 0D 0A 20 20 20 20 20 20 ord = 16..
025D80: 20 20 20 20 20 20 73 6F 66 74 65 6F 66 63 68 20 softeofch
025D90: 3D 20 32 36 20 20 20 3B 20 65 6E 64 73 74 72 65 = 26 ; endstre
025DA0: 61 6D 63 68 20 3D 20 2D 31 0D 0A 20 20 20 20 20 amch = -1..
025DB0: 20 20 20 20 20 20 20 76 64 75 73 74 72 65 61 6D vdustream
025DC0: 20 3D 20 30 20 20 20 20 3B 20 70 72 69 6E 74 73 = 0 ; prints
025DD0: 74 72 65 61 6D 20 3D 20 31 0D 0A 20 20 20 20 20 tream = 1..
025DE0: 20 20 20 20 20 20 20 6D 61 78 69 6E 74 20 3D 20 maxint =
025DF0: 33 32 37 36 37 20 20 20 3B 20 6D 69 6E 69 6E 74 32767 ; minint
025E00: 20 3D 20 2D 33 32 37 36 38 0D 0A 20 20 20 20 20 = -32768..
025E10: 20 20 20 20 20 20 20 6E 65 77 6C 69 6E 65 63 68 newlinech
025E20: 20 3D 20 32 36 39 0D 0A 20 20 20 20 20 20 20 20 = 269..
025E30: 20 24 29 0D 0A 0D 0A 53 54 41 54 49 43 20 20 20 $)....STATIC
025E40: 24 28 20 72 65 61 64 73 74 72 65 61 6D 20 3D 20 $( readstream =
025E50: 30 20 3B 20 77 72 69 74 65 73 74 72 65 61 6D 20 0 ; writestream
025E60: 3D 20 30 0D 0A 20 20 20 20 20 20 20 20 20 20 20 = 0..
025E70: 20 72 65 74 75 72 6E 65 64 20 3D 20 30 20 20 20 returned = 0
025E80: 3B 20 6C 61 73 74 63 68 61 72 20 3D 20 30 0D 0A ; lastchar = 0..
025E90: 20 20 20 20 20 20 20 20 20 24 29 0D 0A 0D 0A 0D $).....
025EA0: 0A 2F 2A 2A 2A 2A 20 4F 55 54 50 55 54 20 52 4F ./**** OUTPUT RO
025EB0: 55 54 49 4E 45 53 20 2A 2A 2A 2A 2F 0D 0A 0D 0A UTINES ****/....
025EC0: 4C 45 54 20 77 72 63 68 28 63 68 61 72 29 20 42 LET wrch(char) B
025ED0: 45 0D 0A 24 28 0D 0A 20 20 53 57 49 54 43 48 4F E..$(.. SWITCHO
025EE0: 4E 20 77 72 69 74 65 73 74 72 65 61 6D 20 49 4E N writestream IN
025EF0: 54 4F 0D 0A 20 20 24 28 0D 0A 20 20 20 20 20 43 TO.. $(.. C
025F00: 41 53 45 20 76 64 75 73 74 72 65 61 6D 20 20 20 ASE vdustream
025F10: 3A 20 20 77 72 76 64 75 28 63 68 61 72 29 20 3B : wrvdu(char) ;
025F20: 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 43 ENDCASE.. C
025F30: 41 53 45 20 70 72 69 6E 74 73 74 72 65 61 6D 20 ASE printstream
025F40: 3A 20 20 70 72 63 68 28 63 68 61 72 29 20 3B 20 : prch(char) ;
025F50: 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 44 45 ENDCASE.. DE
025F60: 46 41 55 4C 54 20 20 20 20 20 20 20 20 20 20 3A FAULT :
025F70: 20 20 77 72 69 74 65 63 68 28 63 68 61 72 2C 77 writech(char,w
025F80: 72 69 74 65 73 74 72 65 61 6D 29 0D 0A 20 20 24 ritestream).. $
025F90: 29 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 77 72 69 )..$)....AND wri
025FA0: 74 65 66 28 73 74 72 69 6E 67 2C 61 2C 62 2C 63 tef(string,a,b,c
025FB0: 2C 64 2C 65 2C 66 2C 67 2C 68 2C 69 2C 6A 2C 6B ,d,e,f,g,h,i,j,k
025FC0: 29 20 42 45 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 ) BE..$(.. LET
025FD0: 70 70 74 72 20 3D 20 40 61 0D 0A 20 20 46 4F 52 pptr = @a.. FOR
025FE0: 20 63 70 74 72 20 3D 20 31 20 54 4F 20 73 74 72 cptr = 1 TO str
025FF0: 69 6E 67 25 30 20 44 4F 0D 0A 20 20 24 28 0D 0A ing%0 DO.. $(..
026000: 20 20 20 20 4C 45 54 20 6B 20 3D 20 73 74 72 69 LET k = stri
026010: 6E 67 25 63 70 74 72 0D 0A 20 20 20 20 54 45 53 ng%cptr.. TES
026020: 54 20 6B 20 3D 20 27 25 27 20 54 48 45 4E 0D 0A T k = '%' THEN..
026030: 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 4C 45 $(.. LE
026040: 54 20 61 72 67 20 3D 20 21 70 70 74 72 0D 0A 20 T arg = !pptr..
026050: 20 20 20 20 20 63 70 74 72 20 3A 3D 20 63 70 74 cptr := cpt
026060: 72 20 2B 20 31 0D 0A 20 20 20 20 20 20 24 28 0D r + 1.. $(.
026070: 0A 20 20 20 20 20 20 20 20 4C 45 54 20 63 68 2C . LET ch,
026080: 20 73 69 7A 65 20 3D 20 73 74 72 69 6E 67 25 63 size = string%c
026090: 70 74 72 2C 20 64 65 63 76 61 6C 28 73 74 72 69 ptr, decval(stri
0260A0: 6E 67 25 28 63 70 74 72 2B 31 29 29 0D 0A 20 20 ng%(cptr+1))..
0260B0: 20 20 20 20 20 20 70 70 74 72 20 3A 3D 20 70 70 pptr := pp
0260C0: 74 72 20 2B 20 31 0D 0A 20 20 20 20 20 20 20 20 tr + 1..
0260D0: 63 70 74 72 20 3A 3D 20 63 70 74 72 20 2B 20 56 cptr := cptr + V
0260E0: 41 4C 4F 46 0D 0A 20 20 20 20 20 20 20 20 53 57 ALOF.. SW
0260F0: 49 54 43 48 4F 4E 20 63 68 20 49 4E 54 4F 0D 0A ITCHON ch INTO..
026100: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
026110: 20 00 00 00 02 09 50 E5 20 00 C1 02 00 00 00 02 .....P. .......
026120: 20 00 C2 02 00 00 00 02 20 00 C3 02 00 00 00 02 ....... .......
026130: 20 00 C4 02 00 00 00 02 20 00 C5 02 00 00 00 02 ....... .......
026140: 20 00 C6 02 00 00 00 02 20 00 C7 02 00 00 00 02 ....... .......
026150: 20 00 C8 02 00 00 00 02 20 00 C9 02 00 00 00 02 ....... .......
026160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0261A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0261B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0261C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0261D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0261E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0261F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026200: 20 20 20 20 20 20 20 20 24 28 0D 0A 20 20 20 20 $(..
026210: 20 20 20 20 20 20 43 41 53 45 20 27 53 27 3A 20 CASE 'S':
026220: 77 72 69 74 65 73 28 61 72 67 29 20 20 20 3B 20 writes(arg) ;
026230: 52 45 53 55 4C 54 49 53 20 30 0D 0A 20 20 20 20 RESULTIS 0..
026240: 20 20 20 20 20 20 43 41 53 45 20 27 43 27 3A 20 CASE 'C':
026250: 77 72 63 68 28 61 72 67 29 20 20 20 20 20 3B 20 wrch(arg) ;
026260: 52 45 53 55 4C 54 49 53 20 30 0D 0A 20 20 20 20 RESULTIS 0..
026270: 20 20 20 20 20 20 43 41 53 45 20 27 4E 27 3A 20 CASE 'N':
026280: 77 72 69 74 65 64 28 61 72 67 2C 30 29 20 3B 20 writed(arg,0) ;
026290: 52 45 53 55 4C 54 49 53 20 30 0D 0A 20 20 20 20 RESULTIS 0..
0262A0: 20 20 20 20 20 20 43 41 53 45 20 27 4F 27 3A 20 CASE 'O':
0262B0: 77 72 69 74 65 6F 63 74 28 61 72 67 2C 73 69 7A writeoct(arg,siz
0262C0: 65 29 20 3B 20 52 45 53 55 4C 54 49 53 20 31 0D e) ; RESULTIS 1.
0262D0: 0A 20 20 20 20 20 20 20 20 20 20 43 41 53 45 20 . CASE
0262E0: 27 58 27 3A 20 77 72 69 74 65 68 65 78 28 61 72 'X': writehex(ar
0262F0: 67 2C 73 69 7A 65 29 20 3B 20 52 45 53 55 4C 54 g,size) ; RESULT
026300: 49 53 20 31 0D 0A 20 20 20 20 20 20 20 20 20 20 IS 1..
026310: 43 41 53 45 20 27 49 27 3A 20 77 72 69 74 65 64 CASE 'I': writed
026320: 28 61 72 67 2C 73 69 7A 65 29 20 20 20 3B 20 52 (arg,size) ; R
026330: 45 53 55 4C 54 49 53 20 31 0D 0A 20 20 20 20 20 ESULTIS 1..
026340: 20 20 20 20 20 43 41 53 45 20 27 24 27 3A 20 52 CASE '$': R
026350: 45 53 55 4C 54 49 53 20 30 0D 0A 20 20 20 20 20 ESULTIS 0..
026360: 20 20 20 20 20 44 45 46 41 55 4C 54 20 3A 20 77 DEFAULT : w
026370: 72 63 68 28 63 68 29 20 3B 20 70 70 74 72 20 3A rch(ch) ; pptr :
026380: 3D 20 70 70 74 72 20 2D 20 31 20 20 20 3B 20 52 = pptr - 1 ; R
026390: 45 53 55 4C 54 49 53 20 30 0D 0A 20 20 20 20 20 ESULTIS 0..
0263A0: 20 20 20 24 29 0D 0A 20 20 20 20 20 20 24 29 0D $).. $).
0263B0: 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45 4C 53 . $).. ELS
0263C0: 45 20 77 72 63 68 28 6B 29 0D 0A 20 20 24 29 0D E wrch(k).. $).
0263D0: 0A 24 29 0D 0A 0D 0A 41 4E 44 20 77 72 69 74 65 .$)....AND write
0263E0: 73 28 73 29 20 42 45 20 46 4F 52 20 63 20 3D 20 s(s) BE FOR c =
0263F0: 31 20 54 4F 20 73 25 30 20 44 4F 20 77 72 63 68 1 TO s%0 DO wrch
026400: 28 73 25 63 29 0D 0A 0D 0A 41 4E 44 20 77 72 69 (s%c)....AND wri
026410: 74 65 64 28 6E 75 6D 2C 64 29 20 42 45 0D 0A 24 ted(num,d) BE..$
026420: 28 0D 0A 20 20 4C 45 54 20 74 65 6D 70 20 3D 20 (.. LET temp =
026430: 56 45 43 20 32 30 0D 0A 20 20 41 4E 44 20 70 74 VEC 20.. AND pt
026440: 72 2C 20 6E 20 3D 20 30 2C 20 6E 75 6D 0D 0A 20 r, n = 0, num..
026450: 20 49 46 20 6E 75 6D 3C 30 20 54 48 45 4E 20 64 IF num<0 THEN d
026460: 2C 20 6E 20 3A 3D 20 64 2D 31 2C 20 2D 6E 0D 0A , n := d-1, -n..
026470: 20 20 74 65 6D 70 21 70 74 72 2C 20 6E 2C 20 70 temp!ptr, n, p
026480: 74 72 20 3A 3D 20 6E 20 52 45 4D 20 31 30 2C 20 tr := n REM 10,
026490: 6E 2F 31 30 2C 20 70 74 72 2B 31 20 52 45 50 45 n/10, ptr+1 REPE
0264A0: 41 54 55 4E 54 49 4C 20 6E 20 3D 20 30 0D 0A 20 ATUNTIL n = 0..
0264B0: 20 46 4F 52 20 6A 20 3D 20 70 74 72 2B 31 20 54 FOR j = ptr+1 T
0264C0: 4F 20 64 20 44 4F 20 77 72 63 68 28 27 20 27 29 O d DO wrch(' ')
0264D0: 0D 0A 20 20 49 46 20 6E 75 6D 3C 30 20 54 48 45 .. IF num<0 THE
0264E0: 4E 20 77 72 63 68 28 27 2D 27 29 0D 0A 20 20 46 N wrch('-').. F
0264F0: 4F 52 20 6A 20 3D 20 70 74 72 2D 31 20 54 4F 20 OR j = ptr-1 TO
026500: 30 20 42 59 20 2D 31 20 44 4F 20 77 72 63 68 28 0 BY -1 DO wrch(
026510: 74 65 6D 70 21 6A 2B 27 30 27 29 0D 0A 24 29 0D temp!j+'0')..$).
026520: 0A 0D 0A 41 4E 44 20 77 72 69 74 65 6E 28 6E 29 ...AND writen(n)
026530: 20 42 45 20 77 72 69 74 65 64 28 6E 2C 30 29 0D BE writed(n,0).
026540: 0A 0D 0A 41 4E 44 20 77 72 69 74 65 68 65 78 28 ...AND writehex(
026550: 6E 75 6D 2C 64 29 20 42 45 0D 0A 24 28 0D 0A 20 num,d) BE..$(..
026560: 20 49 46 20 44 3E 31 20 54 48 45 4E 20 77 72 69 IF D>1 THEN wri
026570: 74 65 68 65 78 28 6E 75 6D 3E 3E 34 2C 20 64 2D tehex(num>>4, d-
026580: 31 29 0D 0A 20 20 77 72 63 68 28 28 6E 75 6D 20 1).. wrch((num
026590: 4C 4F 47 41 4E 44 20 31 35 29 21 54 41 42 4C 45 LOGAND 15)!TABLE
0265A0: 20 27 30 27 2C 27 31 27 2C 27 32 27 2C 27 33 27 '0','1','2','3'
0265B0: 2C 27 34 27 2C 27 35 27 2C 27 36 27 2C 27 37 27 ,'4','5','6','7'
0265C0: 2C 27 38 27 2C 27 39 27 2C 0D 0A 20 20 20 20 20 ,'8','9',..
0265D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0265E0: 20 20 20 20 20 20 20 20 27 41 27 2C 27 42 27 2C 'A','B',
0265F0: 27 43 27 2C 27 44 27 2C 27 45 27 2C 27 46 27 29 'C','D','E','F')
026600: 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 77 72 69 74 ..$)....AND writ
026610: 65 6F 63 74 28 6E 75 6D 2C 64 29 20 42 45 0D 0A eoct(num,d) BE..
026620: 24 28 0D 0A 20 20 49 46 20 64 3E 31 20 54 48 45 $(.. IF d>1 THE
026630: 4E 20 77 72 69 74 65 6F 63 74 28 6E 75 6D 3E 3E N writeoct(num>>
026640: 33 2C 64 2D 31 29 0D 0A 20 20 77 72 63 68 28 28 3,d-1).. wrch((
026650: 6E 75 6D 20 4C 4F 47 41 4E 44 20 37 29 2B 27 30 num LOGAND 7)+'0
026660: 27 29 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 6E 65 ')..$)....AND ne
026670: 77 6C 69 6E 65 28 29 20 42 45 20 20 77 72 63 68 wline() BE wrch
026680: 28 6E 65 77 6C 69 6E 65 63 68 29 0D 0A 0D 0A 0D (newlinech).....
026690: 0A 2F 2A 2A 2A 2A 20 49 4E 50 55 54 20 52 4F 55 ./**** INPUT ROU
0266A0: 54 49 4E 45 53 20 2A 2A 2A 2A 2F 0D 0A 0D 0A 41 TINES ****/....A
0266B0: 4E 44 20 72 64 63 68 28 29 20 3D 20 56 41 4C 4F ND rdch() = VALO
0266C0: 46 0D 0A 24 28 0D 0A 20 20 55 4E 4C 45 53 53 20 F..$(.. UNLESS
0266D0: 72 65 74 75 72 6E 65 64 20 3D 20 30 20 54 48 45 returned = 0 THE
0266E0: 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 4C 45 54 N.. $(.. LET
0266F0: 20 63 20 3D 20 72 65 74 75 72 6E 65 64 0D 0A 20 c = returned..
026700: 20 20 20 72 65 74 75 72 6E 65 64 20 3A 3D 20 30 returned := 0
026710: 0D 0A 20 20 20 20 6C 61 73 74 63 68 61 72 20 3A .. lastchar :
026720: 3D 20 63 0D 0A 20 20 20 20 52 45 53 55 4C 54 49 = c.. RESULTI
026730: 53 20 63 0D 0A 20 20 24 29 0D 0A 20 20 52 45 53 S c.. $).. RES
026740: 55 4C 54 49 53 20 72 65 61 64 73 74 72 65 61 6D ULTIS readstream
026750: 20 3D 20 30 20 2D 3E 20 72 64 76 64 75 28 29 2C = 0 -> rdvdu(),
026760: 20 72 65 61 64 63 68 28 72 65 61 64 73 74 72 65 readch(readstre
026770: 61 6D 29 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 75 am)..$)....AND u
026780: 6E 72 64 63 68 28 29 20 42 45 20 72 65 74 75 72 nrdch() BE retur
026790: 6E 65 64 20 3A 3D 20 6C 61 73 74 63 68 61 72 0D ned := lastchar.
0267A0: 0A 0D 0A 41 4E 44 20 72 65 61 64 73 28 61 72 72 ...AND reads(arr
0267B0: 61 79 29 20 3D 20 56 41 4C 4F 46 0D 0A 24 28 0D ay) = VALOF..$(.
0267C0: 0A 20 20 4D 41 4E 49 46 45 53 54 20 24 28 20 65 . MANIFEST $( e
0267D0: 73 63 61 70 65 20 3D 20 23 78 46 43 20 20 3B 20 scape = #xFC ;
0267E0: 20 73 74 6F 70 3D 33 20 3B 20 6D 61 78 6C 65 6E stop=3 ; maxlen
0267F0: 3D 32 35 35 20 24 29 0D 0A 20 20 4C 45 54 20 70 =255 $).. LET p
026800: 74 72 2C 20 63 20 3D 20 30 2C 20 3F 0D 0A 20 20 tr, c = 0, ?..
026810: 24 28 0D 0A 20 20 20 20 46 4F 52 20 69 3D 31 20 $(.. FOR i=1
026820: 74 6F 20 70 74 72 20 44 4F 20 24 28 20 77 72 63 to ptr DO $( wrc
026830: 68 28 38 29 20 3B 20 77 72 63 68 28 27 20 27 29 h(8) ; wrch(' ')
026840: 20 3B 20 77 72 63 68 28 38 29 20 24 29 0D 0A 20 ; wrch(8) $)..
026850: 20 20 20 70 74 72 3A 3D 30 0D 0A 20 20 20 20 63 ptr:=0.. c
026860: 20 3A 3D 20 72 64 63 68 28 29 0D 0A 20 20 20 20 := rdch()..
026870: 55 4E 54 49 4C 20 63 3D 31 33 20 7C 20 63 3D 65 UNTIL c=13 | c=e
026880: 73 63 61 70 65 20 7C 20 63 3D 73 74 6F 70 20 44 scape | c=stop D
026890: 4F 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 20 20 O.. $(..
0268A0: 20 54 45 53 54 20 63 3D 31 32 37 20 54 48 45 4E TEST c=127 THEN
0268B0: 0D 0A 20 20 20 20 20 20 24 28 0D 0A 20 20 20 20 .. $(..
0268C0: 20 20 20 20 54 45 53 54 20 70 74 72 3D 30 20 54 TEST ptr=0 T
0268D0: 48 45 4E 20 77 72 63 68 28 37 29 0D 0A 20 20 20 HEN wrch(7)..
0268E0: 20 20 20 20 20 45 4C 53 45 0D 0A 20 20 20 20 20 ELSE..
0268F0: 20 20 20 24 28 0D 0A 20 20 20 20 20 20 20 20 20 $(..
026900: 20 77 72 63 68 28 38 29 20 3B 20 77 72 63 68 28 wrch(8) ; wrch(
026910: 27 20 27 29 20 3B 20 77 72 63 68 28 38 29 0D 0A ' ') ; wrch(8)..
026920: 20 20 20 20 20 20 20 20 20 20 70 74 72 20 3A 3D ptr :=
026930: 20 70 74 72 2D 31 0D 0A 20 20 20 20 20 20 20 20 ptr-1..
026940: 24 29 0D 0A 20 20 20 20 20 20 24 29 0D 0A 20 20 $).. $)..
026950: 20 20 20 20 45 4C 53 45 0D 0A 20 20 20 20 20 20 ELSE..
026960: 24 28 0D 0A 20 20 20 20 20 20 20 20 54 45 53 54 $(.. TEST
026970: 20 70 74 72 3D 6D 61 78 6C 65 6E 20 54 48 45 4E ptr=maxlen THEN
026980: 20 77 72 63 68 28 37 29 0D 0A 20 20 20 20 20 20 wrch(7)..
026990: 20 20 45 4C 53 45 0D 0A 20 20 20 20 20 20 20 20 ELSE..
0269A0: 24 28 20 77 72 63 68 28 63 29 0D 0A 20 20 20 20 $( wrch(c)..
0269B0: 20 20 20 20 20 20 20 70 74 72 20 3A 3D 20 70 74 ptr := pt
0269C0: 72 20 2B 20 31 0D 0A 20 20 20 20 20 20 20 20 20 r + 1..
0269D0: 20 20 61 72 72 61 79 25 70 74 72 20 3A 3D 20 63 array%ptr := c
0269E0: 0D 0A 20 20 20 20 20 20 20 20 24 29 0D 0A 20 20 .. $)..
0269F0: 20 20 20 20 24 29 0D 0A 20 20 20 20 20 20 63 20 $).. c
026A00: 3A 3D 20 72 64 63 68 28 29 0D 0A 20 20 20 20 24 := rdch().. $
026A10: 29 0D 0A 20 20 24 29 0D 0A 20 20 52 45 50 45 41 ).. $).. REPEA
026A20: 54 57 48 49 4C 45 20 28 63 3D 65 73 63 61 70 65 TWHILE (c=escape
026A30: 20 7C 20 63 3D 20 73 74 6F 70 29 20 26 20 28 70 | c= stop) & (p
026A40: 74 72 20 5C 3D 20 30 29 0D 0A 20 20 61 72 72 61 tr \= 0).. arra
026A50: 79 25 30 20 3A 3D 20 28 63 3D 65 73 63 61 70 65 y%0 := (c=escape
026A60: 20 7C 20 63 3D 73 74 6F 70 29 20 2D 3E 20 30 2C | c=stop) -> 0,
026A70: 20 70 74 72 0D 0A 20 20 52 45 53 55 4C 54 49 53 ptr.. RESULTIS
026A80: 20 4E 4F 54 20 28 63 3D 65 73 63 61 70 65 20 7C NOT (c=escape |
026A90: 20 63 3D 73 74 6F 70 29 0D 0A 24 29 0D 0A 0D 0A c=stop)..$)....
026AA0: 41 4E 44 20 72 65 61 64 6E 28 29 20 3D 20 56 41 AND readn() = VA
026AB0: 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 69 LOF..$(.. LET i
026AC0: 6E 70 75 74 20 3D 20 56 45 43 20 31 32 38 0D 0A nput = VEC 128..
026AD0: 20 20 72 65 61 64 73 28 69 6E 70 75 74 29 0D 0A reads(input)..
026AE0: 20 20 52 45 53 55 4C 54 49 53 20 73 74 72 74 6F RESULTIS strto
026AF0: 6E 75 6D 28 69 6E 70 75 74 2C 31 30 29 0D 0A 24 num(input,10)..$
026B00: 29 0D 0A 0D 0A 41 4E 44 20 73 74 72 74 6F 6E 75 )....AND strtonu
026B10: 6D 28 73 74 72 69 6E 67 2C 62 61 73 65 29 20 3D m(string,base) =
026B20: 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C 45 VALOF..$(.. LE
026B30: 54 20 70 74 72 2C 20 74 6F 74 61 6C 20 3D 20 31 T ptr, total = 1
026B40: 2C 20 30 0D 0A 20 20 57 48 49 4C 45 20 70 74 72 , 0.. WHILE ptr
026B50: 20 3C 3D 20 73 74 72 69 6E 67 25 30 20 4C 4F 47 <= string%0 LOG
026B60: 41 4E 44 20 28 30 3C 3D 64 65 63 76 61 6C 28 73 AND (0<=decval(s
026B70: 74 72 69 6E 67 25 70 74 72 29 3C 62 61 73 65 29 tring%ptr)<base)
026B80: 20 44 4F 0D 0A 20 20 24 28 0D 0A 20 20 20 20 74 DO.. $(.. t
026B90: 6F 74 61 6C 20 3A 3D 20 74 6F 74 61 6C 20 2A 20 otal := total *
026BA0: 62 61 73 65 20 2B 20 64 65 63 76 61 6C 28 73 74 base + decval(st
026BB0: 72 69 6E 67 25 70 74 72 29 0D 0A 20 20 20 20 70 ring%ptr).. p
026BC0: 74 72 20 3A 3D 20 70 74 72 20 2B 20 31 0D 0A 20 tr := ptr + 1..
026BD0: 20 24 29 0D 0A 20 20 52 45 53 55 4C 54 49 53 20 $).. RESULTIS
026BE0: 74 6F 74 61 6C 0D 0A 24 29 0D 0A 0D 0A 0D 0A 2F total..$)....../
026BF0: 2A 2A 2A 2A 20 46 49 4C 45 20 49 2F 4F 20 52 4F **** FILE I/O RO
026C00: 55 54 49 4E 45 53 20 2A 2A 2A 2A 2F 0D 0A 0D 0A UTINES ****/....
026C10: 41 4E 44 20 66 69 6E 64 69 6E 70 75 74 28 6E 61 AND findinput(na
026C20: 6D 65 2C 20 62 75 66 66 65 72 29 20 3D 20 56 41 me, buffer) = VA
026C30: 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 63 LOF..$(.. LET c
026C40: 2C 20 64 65 20 3D 20 31 35 2C 20 62 75 66 66 65 , de = 15, buffe
026C50: 72 2A 32 0D 0A 20 20 73 65 74 66 63 62 28 6E 61 r*2.. setfcb(na
026C60: 6D 65 2C 20 62 75 66 66 65 72 29 20 20 20 20 2F me, buffer) /
026C70: 2F 20 73 65 74 20 74 68 65 20 66 63 62 0D 0A 20 / set the fcb..
026C80: 20 62 64 6F 73 61 28 40 63 2C 20 40 64 65 29 20 bdosa(@c, @de)
026C90: 20 20 20 20 20 20 20 20 20 2F 2F 20 6F 70 65 6E // open
026CA0: 20 66 69 6C 65 0D 0A 20 20 62 75 66 66 65 72 21 file.. buffer!
026CB0: 31 37 20 3A 3D 20 31 36 34 20 20 20 20 20 20 20 17 := 164
026CC0: 20 2F 2F 20 73 65 74 20 73 65 63 74 6F 72 20 70 // set sector p
026CD0: 6F 69 6E 74 65 72 0D 0A 20 20 52 45 53 55 4C 54 ointer.. RESULT
026CE0: 49 53 20 63 20 5C 3D 20 32 35 35 0D 0A 24 29 0D IS c \= 255..$).
026CF0: 0A 0D 0A 41 4E 44 20 65 6E 64 72 65 61 64 28 29 ...AND endread()
026D00: 20 3D 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 20 = VALOF..$(..
026D10: 4C 45 54 20 62 75 66 3D 72 65 61 64 73 74 72 65 LET buf=readstre
026D20: 61 6D 0D 0A 20 20 72 65 61 64 73 74 72 65 61 6D am.. readstream
026D30: 20 3A 3D 20 76 64 75 73 74 72 65 61 6D 0D 0A 20 := vdustream..
026D40: 20 52 45 53 55 4C 54 49 53 20 62 75 66 3E 30 20 RESULTIS buf>0
026D50: 2D 3E 20 63 6C 6F 73 65 69 6E 28 62 75 66 29 2C -> closein(buf),
026D60: 20 54 52 55 45 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 TRUE..$)....AND
026D70: 20 72 65 77 69 6E 64 28 29 20 42 45 20 49 46 20 rewind() BE IF
026D80: 72 65 61 64 73 74 72 65 61 6D 20 3E 20 30 20 54 readstream > 0 T
026D90: 48 45 4E 20 72 65 77 69 6E 64 69 6E 28 72 65 61 HEN rewindin(rea
026DA0: 64 73 74 72 65 61 6D 29 0D 0A 0D 0A 41 4E 44 20 dstream)....AND
026DB0: 66 69 6E 64 6F 75 74 70 75 74 28 6E 61 6D 65 2C findoutput(name,
026DC0: 62 75 66 66 65 72 29 20 3D 20 56 41 4C 4F 46 0D buffer) = VALOF.
026DD0: 0A 24 28 0D 0A 20 20 4C 45 54 20 63 2C 20 64 65 .$(.. LET c, de
026DE0: 20 3D 20 32 32 2C 20 62 75 66 66 65 72 2A 32 0D = 22, buffer*2.
026DF0: 0A 20 20 73 65 74 66 63 62 28 6E 61 6D 65 2C 20 . setfcb(name,
026E00: 62 75 66 66 65 72 29 0D 0A 20 20 62 64 6F 73 62 buffer).. bdosb
026E10: 28 31 39 2C 20 62 75 66 66 65 72 2A 32 29 0D 0A (19, buffer*2)..
026E20: 20 20 62 64 6F 73 61 28 40 63 2C 20 40 64 65 29 bdosa(@c, @de)
026E30: 0D 0A 20 20 62 75 66 66 65 72 21 31 37 20 3A 3D .. buffer!17 :=
026E40: 20 33 36 0D 0A 20 20 52 45 53 55 4C 54 49 53 20 36.. RESULTIS
026E50: 63 20 5C 3D 20 32 35 35 0D 0A 24 29 0D 0A 0D 0A c \= 255..$)....
026E60: 41 4E 44 20 65 6E 64 77 72 69 74 65 28 29 20 3D AND endwrite() =
026E70: 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C 45 VALOF..$(.. LE
026E80: 54 20 62 75 66 20 3D 20 77 72 69 74 65 73 74 72 T buf = writestr
026E90: 65 61 6D 0D 0A 20 20 77 72 69 74 65 73 74 72 65 eam.. writestre
026EA0: 61 6D 20 3A 3D 20 76 64 75 73 74 72 65 61 6D 0D am := vdustream.
026EB0: 0A 20 20 52 45 53 55 4C 54 49 53 20 62 75 66 3E . RESULTIS buf>
026EC0: 30 20 2D 3E 20 63 6C 6F 73 65 6F 75 74 28 62 75 0 -> closeout(bu
026ED0: 66 29 2C 20 54 52 55 45 0D 0A 24 29 0D 0A 0D 0A f), TRUE..$)....
026EE0: 0D 0A 2F 2A 2A 2A 2A 20 50 52 49 4D 49 54 49 56 ../**** PRIMITIV
026EF0: 45 20 49 2F 4F 20 52 4F 55 54 49 4E 45 53 20 2A E I/O ROUTINES *
026F00: 2A 2A 2A 2F 0D 0A 0D 0A 41 4E 44 20 77 72 76 64 ***/....AND wrvd
026F10: 75 28 63 29 20 3D 20 56 41 4C 4F 46 0D 0A 24 28 u(c) = VALOF..$(
026F20: 0D 0A 20 20 49 46 20 63 3D 6E 65 77 6C 69 6E 65 .. IF c=newline
026F30: 63 68 20 54 48 45 4E 20 24 28 20 77 72 76 64 75 ch THEN $( wrvdu
026F40: 28 31 33 29 20 3B 20 63 3A 3D 31 30 20 24 29 0D (13) ; c:=10 $).
026F50: 0A 20 20 62 64 6F 73 62 28 32 2C 63 29 0D 0A 20 . bdosb(2,c)..
026F60: 20 52 45 53 55 4C 54 49 53 20 54 52 55 45 0D 0A RESULTIS TRUE..
026F70: 24 29 0D 0A 0D 0A 41 4E 44 20 70 72 63 68 28 63 $)....AND prch(c
026F80: 29 20 3D 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 ) = VALOF..$(..
026F90: 20 49 46 20 63 3D 6E 65 77 6C 69 6E 65 63 68 20 IF c=newlinech
026FA0: 54 48 45 4E 20 24 28 20 70 72 63 68 28 31 33 29 THEN $( prch(13)
026FB0: 20 3B 20 63 3A 3D 31 30 20 24 29 0D 0A 20 20 62 ; c:=10 $).. b
026FC0: 64 6F 73 62 28 35 2C 63 29 0D 0A 20 20 52 45 53 dosb(5,c).. RES
026FD0: 55 4C 54 49 53 20 54 52 55 45 0D 0A 24 29 0D 0A ULTIS TRUE..$)..
026FE0: 0D 0A 41 4E 44 20 70 72 62 75 73 79 28 29 20 3D ..AND prbusy() =
026FF0: 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C 45 VALOF..$(.. LE
027000: 54 20 61 3D 3F 0D 0A 20 20 62 69 6F 73 28 31 35 T a=?.. bios(15
027010: 2C 40 61 29 0D 0A 20 20 52 45 53 55 4C 54 49 53 ,@a).. RESULTIS
027020: 20 61 20 3D 20 30 20 20 20 20 20 20 20 20 2F 2F a = 0 //
027030: 20 54 52 55 45 20 69 66 20 70 72 69 6E 74 65 72 TRUE if printer
027040: 20 62 75 73 79 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 busy..$)....AND
027050: 20 72 64 74 65 73 74 28 29 20 3D 20 56 41 4C 4F rdtest() = VALO
027060: 46 0D 0A 24 28 20 20 0D 0A 20 20 4C 45 54 20 63 F..$( .. LET c
027070: 2C 64 65 20 3D 20 31 31 2C 3F 0D 0A 20 20 62 64 ,de = 11,?.. bd
027080: 6F 73 61 28 40 63 2C 40 64 65 29 0D 0A 20 20 52 osa(@c,@de).. R
027090: 45 53 55 4C 54 49 53 20 63 3D 31 0D 0A 24 29 0D ESULTIS c=1..$).
0270A0: 0A 0D 0A 41 4E 44 20 66 6C 75 73 68 28 29 20 42 ...AND flush() B
0270B0: 45 20 57 48 49 4C 45 20 72 64 74 65 73 74 28 29 E WHILE rdtest()
0270C0: 20 72 64 76 64 75 28 29 0D 0A 0D 0A 41 4E 44 20 rdvdu()....AND
0270D0: 72 65 61 64 63 68 28 62 75 66 66 65 72 29 20 3D readch(buffer) =
0270E0: 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C 45 VALOF..$(.. LE
0270F0: 54 20 63 68 61 72 61 63 74 65 72 2C 20 66 61 69 T character, fai
027100: 6C 20 3D 20 30 2C 20 46 41 4C 53 45 0D 0A 20 20 l = 0, FALSE..
027110: 49 46 20 62 75 66 66 65 72 21 31 37 20 3D 20 31 IF buffer!17 = 1
027120: 36 34 20 54 48 45 4E 0D 0A 20 20 24 28 0D 0A 20 64 THEN.. $(..
027130: 20 20 20 66 61 69 6C 20 3A 3D 20 4E 4F 54 20 72 fail := NOT r
027140: 65 61 64 73 65 63 74 6F 72 28 62 75 66 66 65 72 eadsector(buffer
027150: 29 20 20 20 20 2F 2F 20 72 65 61 64 20 61 20 73 ) // read a s
027160: 65 63 74 6F 72 0D 0A 20 20 20 20 62 75 66 66 65 ector.. buffe
027170: 72 21 31 37 20 3A 3D 20 33 36 0D 0A 20 20 24 29 r!17 := 36.. $)
027180: 0D 0A 20 20 63 68 61 72 61 63 74 65 72 20 3A 3D .. character :=
027190: 20 62 75 66 66 65 72 25 28 62 75 66 66 65 72 21 buffer%(buffer!
0271A0: 31 37 29 0D 0A 20 20 62 75 66 66 65 72 21 31 37 17).. buffer!17
0271B0: 20 3A 3D 20 62 75 66 66 65 72 21 31 37 20 2B 20 := buffer!17 +
0271C0: 31 0D 0A 20 20 52 45 53 55 4C 54 49 53 20 63 68 1.. RESULTIS ch
0271D0: 61 72 61 63 74 65 72 20 4C 4F 47 4F 52 20 66 61 aracter LOGOR fa
0271E0: 69 6C 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 63 6C il..$)....AND cl
0271F0: 6F 73 65 69 6E 28 62 75 66 66 65 72 29 20 3D 20 osein(buffer) =
027200: 54 52 55 45 0D 0A 0D 0A 41 4E 44 20 72 65 77 69 TRUE....AND rewi
027210: 6E 64 69 6E 28 62 75 66 66 65 72 29 20 42 45 20 ndin(buffer) BE
027220: 24 28 20 62 75 66 66 65 72 25 33 32 20 3A 3D 20 $( buffer%32 :=
027230: 30 20 20 3B 20 20 62 75 66 66 65 72 21 31 37 20 0 ; buffer!17
027240: 3A 3D 20 31 36 34 20 24 29 0D 0A 0D 0A 41 4E 44 := 164 $)....AND
027250: 20 77 72 69 74 65 63 68 28 63 68 61 72 2C 20 62 writech(char, b
027260: 75 66 66 65 72 29 20 3D 20 56 41 4C 4F 46 0D 0A uffer) = VALOF..
027270: 24 28 0D 0A 20 20 4C 45 54 20 73 75 63 63 65 73 $(.. LET succes
027280: 73 20 3D 20 54 52 55 45 0D 0A 20 20 49 46 20 63 s = TRUE.. IF c
027290: 68 61 72 3D 6E 65 77 6C 69 6E 65 63 68 20 54 48 har=newlinech TH
0272A0: 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 55 4E EN.. $(.. UN
0272B0: 4C 45 53 53 20 77 72 69 74 65 63 68 28 31 33 2C LESS writech(13,
0272C0: 62 75 66 66 65 72 29 20 52 45 53 55 4C 54 49 53 buffer) RESULTIS
0272D0: 20 46 41 4C 53 45 0D 0A 20 20 20 20 63 68 61 72 FALSE.. char
0272E0: 3A 3D 31 30 0D 0A 20 20 24 29 0D 0A 20 20 49 46 :=10.. $).. IF
0272F0: 20 62 75 66 66 65 72 21 31 37 20 3D 20 31 36 34 buffer!17 = 164
027300: 20 54 48 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 THEN.. $(..
027310: 20 73 75 63 63 65 73 73 20 3A 3D 20 77 72 69 74 success := writ
027320: 65 73 65 63 74 6F 72 28 62 75 66 66 65 72 29 0D esector(buffer).
027330: 0A 20 20 20 20 62 75 66 66 65 72 21 31 37 20 3A . buffer!17 :
027340: 3D 20 33 36 0D 0A 20 20 24 29 0D 0A 20 20 62 75 = 36.. $).. bu
027350: 66 66 65 72 25 28 62 75 66 66 65 72 21 31 37 29 ffer%(buffer!17)
027360: 20 3A 3D 20 63 68 61 72 0D 0A 20 20 62 75 66 66 := char.. buff
027370: 65 72 21 31 37 20 3A 3D 20 62 75 66 66 65 72 21 er!17 := buffer!
027380: 31 37 20 2B 20 31 0D 0A 20 20 52 45 53 55 4C 54 17 + 1.. RESULT
027390: 49 53 20 73 75 63 63 65 73 73 0D 0A 24 29 0D 0A IS success..$)..
0273A0: 0D 0A 41 4E 44 20 63 6C 6F 73 65 6F 75 74 28 62 ..AND closeout(b
0273B0: 75 66 66 65 72 29 20 3D 20 56 41 4C 4F 46 0D 0A uffer) = VALOF..
0273C0: 24 28 0D 0A 20 20 4C 45 54 20 63 2C 20 64 65 20 $(.. LET c, de
0273D0: 3D 20 31 36 2C 62 75 66 66 65 72 2A 32 0D 0A 20 = 16,buffer*2..
0273E0: 20 55 4E 4C 45 53 53 20 62 75 66 66 65 72 21 31 UNLESS buffer!1
0273F0: 37 20 3D 20 31 36 34 20 54 48 45 4E 20 77 72 69 7 = 164 THEN wri
027400: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
027410: 21 00 00 00 02 09 50 E5 21 00 C1 02 00 00 00 02 !.....P.!.......
027420: 21 00 C2 02 00 00 00 02 21 00 C3 02 00 00 00 02 !.......!.......
027430: 21 00 C4 02 00 00 00 02 21 00 C5 02 00 00 00 02 !.......!.......
027440: 21 00 C6 02 00 00 00 02 21 00 C7 02 00 00 00 02 !.......!.......
027450: 21 00 C8 02 00 00 00 02 21 00 C9 02 00 00 00 02 !.......!.......
027460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027470: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0274A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0274B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0274C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0274D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0274E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0274F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027500: 74 65 63 68 28 32 36 2C 62 75 66 66 65 72 29 0D tech(26,buffer).
027510: 0A 20 20 55 4E 4C 45 53 53 20 62 75 66 66 65 72 . UNLESS buffer
027520: 21 31 37 20 3D 20 33 36 20 54 48 45 4E 20 77 72 !17 = 36 THEN wr
027530: 69 74 65 73 65 63 74 6F 72 28 62 75 66 66 65 72 itesector(buffer
027540: 29 0D 0A 20 20 62 64 6F 73 61 28 40 63 2C 40 64 ).. bdosa(@c,@d
027550: 65 29 0D 0A 20 20 52 45 53 55 4C 54 49 53 20 63 e).. RESULTIS c
027560: 20 5C 3D 20 32 35 35 0D 0A 24 29 0D 0A 0D 0A 41 \= 255..$)....A
027570: 4E 44 20 72 65 61 64 73 65 63 74 6F 72 28 62 75 ND readsector(bu
027580: 66 66 65 72 29 20 3D 20 56 41 4C 4F 46 0D 0A 24 ffer) = VALOF..$
027590: 28 0D 0A 20 20 4C 45 54 20 72 65 73 75 6C 74 2C (.. LET result,
0275A0: 20 62 75 66 66 20 3D 20 32 30 2C 20 62 75 66 66 buff = 20, buff
0275B0: 65 72 2A 32 0D 0A 20 20 62 64 6F 73 62 28 32 36 er*2.. bdosb(26
0275C0: 2C 20 62 75 66 66 65 72 2A 32 2B 33 36 29 0D 0A , buffer*2+36)..
0275D0: 20 20 62 64 6F 73 61 28 40 72 65 73 75 6C 74 2C bdosa(@result,
0275E0: 20 40 62 75 66 66 29 0D 0A 20 20 52 45 53 55 4C @buff).. RESUL
0275F0: 54 49 53 20 72 65 73 75 6C 74 20 3D 20 30 20 20 TIS result = 0
027600: 20 20 20 2F 2F 20 54 52 55 45 20 69 73 20 73 75 // TRUE is su
027610: 63 63 65 73 73 66 75 6C 20 61 6E 64 20 6E 6F 74 ccessful and not
027620: 20 68 61 72 64 20 45 4F 46 0D 0A 24 29 0D 0A 0D hard EOF..$)...
027630: 0A 41 4E 44 20 77 72 69 74 65 73 65 63 74 6F 72 .AND writesector
027640: 28 62 75 66 66 65 72 29 20 3D 20 56 41 4C 4F 46 (buffer) = VALOF
027650: 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 72 65 73 75 ..$(.. LET resu
027660: 6C 74 2C 20 62 75 66 66 20 3D 20 32 31 2C 20 62 lt, buff = 21, b
027670: 75 66 66 65 72 2A 32 0D 0A 20 20 62 64 6F 73 62 uffer*2.. bdosb
027680: 28 32 36 2C 20 62 75 66 66 65 72 2A 32 2B 33 36 (26, buffer*2+36
027690: 29 0D 0A 20 20 62 64 6F 73 61 28 40 72 65 73 75 ).. bdosa(@resu
0276A0: 6C 74 2C 20 40 62 75 66 66 29 0D 0A 20 20 52 45 lt, @buff).. RE
0276B0: 53 55 4C 54 49 53 20 72 65 73 75 6C 74 20 3D 20 SULTIS result =
0276C0: 30 20 20 20 20 20 20 2F 2F 20 54 52 55 45 20 69 0 // TRUE i
0276D0: 66 20 77 72 69 74 74 65 6E 20 73 75 63 63 65 73 f written succes
0276E0: 73 66 75 6C 6C 79 0D 0A 24 29 0D 0A 0D 0A 41 4E sfully..$)....AN
0276F0: 44 20 73 65 74 66 63 62 28 6E 61 6D 65 2C 20 62 D setfcb(name, b
027700: 75 66 66 65 72 29 20 42 45 0D 0A 24 28 0D 0A 20 uffer) BE..$(..
027710: 20 4C 45 54 20 6E 70 74 72 2C 20 66 70 74 72 2C LET nptr, fptr,
027720: 20 63 2C 20 64 72 76 66 6C 61 67 20 3D 20 31 2C c, drvflag = 1,
027730: 20 31 2C 20 30 2C 20 54 52 55 45 0D 0A 20 20 46 1, 0, TRUE.. F
027740: 4F 52 20 69 20 3D 20 31 20 54 4F 20 31 31 20 62 OR i = 1 TO 11 b
027750: 75 66 66 65 72 25 69 20 3A 3D 20 27 20 27 0D 0A uffer%i := ' '..
027760: 20 20 62 75 66 66 65 72 25 30 20 3A 3D 20 30 0D buffer%0 := 0.
027770: 0A 20 20 57 48 49 4C 45 20 6E 70 74 72 20 3C 3D . WHILE nptr <=
027780: 20 6E 61 6D 65 25 30 20 44 4F 0D 0A 20 20 24 28 name%0 DO.. $(
027790: 0D 0A 20 20 20 20 63 20 3A 3D 20 75 70 70 65 72 .. c := upper
0277A0: 63 61 73 65 28 6E 61 6D 65 25 6E 70 74 72 29 0D case(name%nptr).
0277B0: 0A 20 20 20 20 6E 70 74 72 20 3A 3D 20 6E 70 74 . nptr := npt
0277C0: 72 20 2B 20 31 0D 0A 20 20 20 20 49 46 20 66 70 r + 1.. IF fp
0277D0: 74 72 20 3D 20 32 20 4C 4F 47 41 4E 44 20 64 72 tr = 2 LOGAND dr
0277E0: 76 66 6C 61 67 20 4C 4F 47 41 4E 44 20 63 20 3D vflag LOGAND c =
0277F0: 20 27 3A 27 20 54 48 45 4E 0D 0A 20 20 20 20 24 ':' THEN.. $
027800: 28 0D 0A 20 20 20 20 20 20 62 75 66 66 65 72 25 (.. buffer%
027810: 30 20 3A 3D 20 62 75 66 66 65 72 25 31 20 2D 20 0 := buffer%1 -
027820: 27 41 27 20 2B 20 31 0D 0A 20 20 20 20 20 20 66 'A' + 1.. f
027830: 70 74 72 2C 20 64 72 76 66 6C 61 67 20 3A 3D 20 ptr, drvflag :=
027840: 31 2C 20 46 41 4C 53 45 0D 0A 20 20 20 20 20 20 1, FALSE..
027850: 4C 4F 4F 50 0D 0A 20 20 20 20 24 29 0D 0A 20 20 LOOP.. $)..
027860: 20 20 49 46 20 63 20 3D 20 27 2E 27 20 54 48 45 IF c = '.' THE
027870: 4E 20 24 28 20 66 70 74 72 20 3A 3D 20 39 20 3B N $( fptr := 9 ;
027880: 20 42 52 45 41 4B 20 24 29 0D 0A 20 20 20 20 49 BREAK $).. I
027890: 46 20 66 70 74 72 20 3D 20 39 20 4C 4F 47 4F 52 F fptr = 9 LOGOR
0278A0: 20 63 20 3D 20 27 20 27 20 54 48 45 4E 20 42 52 c = ' ' THEN BR
0278B0: 45 41 4B 0D 0A 20 20 20 20 62 75 66 66 65 72 25 EAK.. buffer%
0278C0: 66 70 74 72 20 3A 3D 20 63 0D 0A 20 20 20 20 66 fptr := c.. f
0278D0: 70 74 72 20 3A 3D 20 66 70 74 72 20 2B 20 31 0D ptr := fptr + 1.
0278E0: 0A 20 20 24 29 0D 0A 20 20 49 46 20 63 20 3D 20 . $).. IF c =
0278F0: 27 2E 27 20 54 48 45 4E 0D 0A 20 20 20 20 57 48 '.' THEN.. WH
027900: 49 4C 45 20 6E 70 74 72 20 3C 3D 20 6E 61 6D 65 ILE nptr <= name
027910: 25 30 20 44 4F 0D 0A 20 20 20 20 24 28 0D 0A 20 %0 DO.. $(..
027920: 20 20 20 20 20 63 20 3A 3D 20 75 70 70 65 72 63 c := upperc
027930: 61 73 65 28 6E 61 6D 65 25 6E 70 74 72 29 0D 0A ase(name%nptr)..
027940: 20 20 20 20 20 20 6E 70 74 72 20 3A 3D 20 6E 70 nptr := np
027950: 74 72 20 2B 20 31 0D 0A 20 20 20 20 20 20 49 46 tr + 1.. IF
027960: 20 63 20 3D 20 27 20 27 20 4C 4F 47 4F 52 20 66 c = ' ' LOGOR f
027970: 70 74 72 20 3D 20 31 32 20 54 48 45 4E 20 42 52 ptr = 12 THEN BR
027980: 45 41 4B 0D 0A 20 20 20 20 20 20 62 75 66 66 65 EAK.. buffe
027990: 72 25 66 70 74 72 20 3A 3D 20 63 0D 0A 20 20 20 r%fptr := c..
0279A0: 20 20 20 66 70 74 72 20 3A 3D 20 66 70 74 72 20 fptr := fptr
0279B0: 2B 20 31 0D 0A 20 20 20 20 24 29 0D 0A 20 20 62 + 1.. $).. b
0279C0: 75 66 66 65 72 25 31 32 2C 20 62 75 66 66 65 72 uffer%12, buffer
0279D0: 25 33 32 20 3A 3D 20 30 2C 20 30 0D 0A 24 29 0D %32 := 0, 0..$).
0279E0: 0A 0D 0A 0D 0A 2F 2A 2A 2A 2A 20 4D 49 53 43 45 ...../**** MISCE
0279F0: 4C 4C 41 4E 45 4F 55 53 20 52 4F 55 54 49 4E 45 LLANEOUS ROUTINE
027A00: 53 20 2A 2A 2A 2A 2F 0D 0A 0D 0A 41 4E 44 20 62 S ****/....AND b
027A10: 64 6F 73 61 28 63 2C 64 65 29 20 42 45 0D 0A 24 dosa(c,de) BE..$
027A20: 28 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 32 31 2C (.. INLINE 221,
027A30: 31 30 32 2C 31 32 37 20 20 20 20 20 20 2F 2F 20 102,127 //
027A40: 6C 64 20 68 2C 28 69 78 2B 31 32 37 29 0D 0A 20 ld h,(ix+127)..
027A50: 20 49 4E 4C 49 4E 45 20 32 32 31 2C 31 31 30 2C INLINE 221,110,
027A60: 31 32 36 20 20 20 20 20 20 2F 2F 20 6C 64 20 6C 126 // ld l
027A70: 2C 28 69 78 2B 31 32 36 29 0D 0A 20 20 49 4E 4C ,(ix+126).. INL
027A80: 49 4E 45 20 34 31 20 20 20 20 20 20 20 20 20 20 INE 41
027A90: 20 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 // add hl,h
027AA0: 6C 0D 0A 20 20 49 4E 4C 49 4E 45 20 39 34 20 20 l.. INLINE 94
027AB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 //
027AC0: 6C 64 20 65 2C 28 68 6C 29 0D 0A 20 20 49 4E 4C ld e,(hl).. INL
027AD0: 49 4E 45 20 33 35 20 20 20 20 20 20 20 20 20 20 INE 35
027AE0: 20 20 20 20 20 2F 2F 20 69 6E 63 20 68 6C 0D 0A // inc hl..
027AF0: 20 20 49 4E 4C 49 4E 45 20 38 36 20 20 20 20 20 INLINE 86
027B00: 20 20 20 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 // ld
027B10: 64 2C 28 68 6C 29 0D 0A 20 20 49 4E 4C 49 4E 45 d,(hl).. INLINE
027B20: 20 32 32 31 2C 31 30 32 2C 31 32 35 20 20 20 20 221,102,125
027B30: 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 32 // ld h,(ix+12
027B40: 35 29 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 32 31 5).. INLINE 221
027B50: 2C 31 31 30 2C 31 32 34 20 20 20 20 20 20 2F 2F ,110,124 //
027B60: 20 6C 64 20 6C 2C 28 69 78 2B 31 32 34 29 0D 0A ld l,(ix+124)..
027B70: 20 20 49 4E 4C 49 4E 45 20 34 31 20 20 20 20 20 INLINE 41
027B80: 20 20 20 20 20 20 20 20 20 20 2F 2F 20 61 64 64 // add
027B90: 20 68 6C 2C 68 6C 0D 0A 20 20 49 4E 4C 49 4E 45 hl,hl.. INLINE
027BA0: 20 37 38 20 20 20 20 20 20 20 20 20 20 20 20 20 78
027BB0: 20 20 2F 2F 20 6C 64 20 63 2C 28 68 6C 29 0D 0A // ld c,(hl)..
027BC0: 20 20 49 4E 4C 49 4E 45 20 32 32 31 2C 32 32 39 INLINE 221,229
027BD0: 20 20 20 20 20 20 20 20 20 20 2F 2F 20 70 75 73 // pus
027BE0: 68 20 69 78 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 h ix.. INLINE 2
027BF0: 30 35 2C 35 2C 30 20 20 20 20 20 20 20 20 20 20 05,5,0
027C00: 2F 2F 20 63 61 6C 6C 20 62 64 6F 73 0D 0A 20 20 // call bdos..
027C10: 49 4E 4C 49 4E 45 20 32 32 31 2C 32 32 35 20 20 INLINE 221,225
027C20: 20 20 20 20 20 20 20 20 2F 2F 20 70 6F 70 20 69 // pop i
027C30: 78 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 33 35 20 x.. INLINE 235
027C40: 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 //
027C50: 65 78 20 64 65 2C 68 6C 0D 0A 20 20 49 4E 4C 49 ex de,hl.. INLI
027C60: 4E 45 20 32 32 31 2C 31 30 32 2C 31 32 37 20 20 NE 221,102,127
027C70: 20 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B // ld h,(ix+
027C80: 31 32 37 29 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 127).. INLINE 2
027C90: 32 31 2C 31 31 30 2C 31 32 36 20 20 20 20 20 20 21,110,126
027CA0: 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 32 36 29 // ld l,(ix+126)
027CB0: 0D 0A 20 20 49 4E 4C 49 4E 45 20 34 31 20 20 20 .. INLINE 41
027CC0: 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 61 // a
027CD0: 64 64 20 68 6C 2C 68 6C 0D 0A 20 20 49 4E 4C 49 dd hl,hl.. INLI
027CE0: 4E 45 20 31 31 35 20 20 20 20 20 20 20 20 20 20 NE 115
027CF0: 20 20 20 20 2F 2F 20 6C 64 20 28 68 6C 29 2C 65 // ld (hl),e
027D00: 0D 0A 20 20 49 4E 4C 49 4E 45 20 33 35 20 20 20 .. INLINE 35
027D10: 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 69 // i
027D20: 6E 63 20 68 6C 0D 0A 20 20 49 4E 4C 49 4E 45 20 nc hl.. INLINE
027D30: 31 31 34 20 20 20 20 20 20 20 20 20 20 20 20 20 114
027D40: 20 2F 2F 20 6C 64 20 28 68 6C 29 2C 64 0D 0A 20 // ld (hl),d..
027D50: 20 49 4E 4C 49 4E 45 20 32 32 31 2C 31 30 32 2C INLINE 221,102,
027D60: 31 32 35 20 20 20 20 20 20 2F 2F 20 6C 64 20 68 125 // ld h
027D70: 2C 28 69 78 2B 31 32 35 29 0D 0A 20 20 49 4E 4C ,(ix+125).. INL
027D80: 49 4E 45 20 32 32 31 2C 31 31 30 2C 31 32 34 20 INE 221,110,124
027D90: 20 20 20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 // ld l,(ix
027DA0: 2B 31 32 34 29 0D 0A 20 20 49 4E 4C 49 4E 45 20 +124).. INLINE
027DB0: 34 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41
027DC0: 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 0D 0A 20 // add hl,hl..
027DD0: 20 49 4E 4C 49 4E 45 20 31 31 39 20 20 20 20 20 INLINE 119
027DE0: 20 20 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 28 // ld (
027DF0: 68 6C 29 2C 61 0D 0A 20 20 49 4E 4C 49 4E 45 20 hl),a.. INLINE
027E00: 33 35 20 20 20 20 20 20 20 20 20 20 20 20 20 20 35
027E10: 20 2F 2F 20 69 6E 63 20 68 6C 0D 0A 20 20 49 4E // inc hl.. IN
027E20: 4C 49 4E 45 20 35 34 2C 30 20 20 20 20 20 20 20 LINE 54,0
027E30: 20 20 20 20 20 20 2F 2F 20 6C 64 20 28 68 6C 29 // ld (hl)
027E40: 2C 30 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 62 64 ,0..$)....AND bd
027E50: 6F 73 62 28 63 2C 64 65 29 20 42 45 0D 0A 24 28 osb(c,de) BE..$(
027E60: 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 32 31 2C 38 .. INLINE 221,8
027E70: 36 2C 31 32 37 20 20 20 20 20 20 20 2F 2F 20 6C 6,127 // l
027E80: 64 20 64 2C 28 69 78 2B 31 32 37 29 0D 0A 20 20 d d,(ix+127)..
027E90: 49 4E 4C 49 4E 45 20 32 32 31 2C 39 34 2C 31 32 INLINE 221,94,12
027EA0: 36 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 65 2C 6 // ld e,
027EB0: 28 69 78 2B 31 32 36 29 0D 0A 20 20 49 4E 4C 49 (ix+126).. INLI
027EC0: 4E 45 20 32 32 31 2C 37 38 2C 31 32 34 20 20 20 NE 221,78,124
027ED0: 20 20 20 20 2F 2F 20 6C 64 20 63 2C 28 69 78 2B // ld c,(ix+
027EE0: 31 32 34 29 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 124).. INLINE 2
027EF0: 32 31 2C 32 32 39 20 20 20 20 20 20 20 20 20 20 21,229
027F00: 2F 2F 20 70 75 73 68 20 69 78 0D 0A 20 20 49 4E // push ix.. IN
027F10: 4C 49 4E 45 20 32 30 35 2C 35 2C 30 20 20 20 20 LINE 205,5,0
027F20: 20 20 20 20 20 20 2F 2F 20 63 61 6C 6C 20 62 64 // call bd
027F30: 6F 73 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 32 31 os.. INLINE 221
027F40: 2C 32 32 35 20 20 20 20 20 20 20 20 20 20 2F 2F ,225 //
027F50: 20 70 6F 70 20 69 78 0D 0A 24 29 0D 0A 0D 0A 41 pop ix..$)....A
027F60: 4E 44 20 62 69 6F 73 28 6E 2C 61 29 20 42 45 0D ND bios(n,a) BE.
027F70: 0A 24 28 0D 0A 20 20 4C 45 54 20 73 61 76 65 3D .$(.. LET save=
027F80: 56 45 43 20 31 0D 0A 20 20 73 61 76 65 25 30 20 VEC 1.. save%0
027F90: 3A 3D 20 30 25 23 78 38 30 20 3B 20 73 61 76 65 := 0%#x80 ; save
027FA0: 25 31 20 3A 3D 20 30 25 23 78 38 31 20 3B 20 73 %1 := 0%#x81 ; s
027FB0: 61 76 65 25 32 20 3A 3D 20 30 25 23 78 38 32 0D ave%2 := 0%#x82.
027FC0: 0A 20 20 30 25 23 78 38 30 20 3A 3D 20 23 78 43 . 0%#x80 := #xC
027FD0: 33 0D 0A 20 20 30 25 23 78 38 31 20 3A 3D 20 30 3.. 0%#x81 := 0
027FE0: 25 28 30 25 31 20 2B 20 32 35 36 2A 30 25 32 20 %(0%1 + 256*0%2
027FF0: 2B 20 28 6E 2D 31 29 2A 33 20 2B 31 29 0D 0A 20 + (n-1)*3 +1)..
028000: 20 30 25 23 78 38 32 20 3A 3D 20 30 25 28 30 25 0%#x82 := 0%(0%
028010: 31 20 2B 20 32 35 36 2A 30 25 32 20 2B 20 28 6E 1 + 256*0%2 + (n
028020: 2D 31 29 2A 33 20 2B 32 29 0D 0A 20 20 49 4E 4C -1)*3 +2).. INL
028030: 49 4E 45 20 32 32 31 2C 32 32 39 20 20 20 20 20 INE 221,229
028040: 20 20 20 20 20 2F 2F 20 70 75 73 68 20 69 78 0D // push ix.
028050: 0A 20 20 49 4E 4C 49 4E 45 20 23 78 43 44 2C 23 . INLINE #xCD,#
028060: 78 38 30 2C 23 78 30 30 20 20 20 2F 2F 20 63 61 x80,#x00 // ca
028070: 6C 6C 20 62 69 6F 73 20 72 6F 75 74 69 6E 65 0D ll bios routine.
028080: 0A 20 20 49 4E 4C 49 4E 45 20 32 32 31 2C 32 32 . INLINE 221,22
028090: 35 20 20 20 20 20 20 20 20 20 20 2F 2F 20 70 6F 5 // po
0280A0: 70 20 69 78 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 p ix.. INLINE 2
0280B0: 32 31 2C 31 30 32 2C 31 32 37 20 20 20 20 20 20 21,102,127
0280C0: 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 32 37 29 // ld h,(ix+127)
0280D0: 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 32 31 2C 31 .. INLINE 221,1
0280E0: 31 30 2C 31 32 36 20 20 20 20 20 20 2F 2F 20 6C 10,126 // l
0280F0: 64 20 6C 2C 28 69 78 2B 31 32 36 29 0D 0A 20 20 d l,(ix+126)..
028100: 49 4E 4C 49 4E 45 20 34 31 20 20 20 20 20 20 20 INLINE 41
028110: 20 20 20 20 20 20 20 20 2F 2F 20 61 64 64 20 68 // add h
028120: 6C 2C 68 6C 0D 0A 20 20 49 4E 4C 49 4E 45 20 31 l,hl.. INLINE 1
028130: 31 39 20 20 20 20 20 20 20 20 20 20 20 20 20 20 19
028140: 2F 2F 20 6C 64 20 28 68 6C 29 2C 61 0D 0A 20 20 // ld (hl),a..
028150: 49 4E 4C 49 4E 45 20 33 35 20 20 20 20 20 20 20 INLINE 35
028160: 20 20 20 20 20 20 20 20 2F 2F 20 69 6E 63 20 68 // inc h
028170: 6C 0D 0A 20 20 49 4E 4C 49 4E 45 20 35 34 2C 30 l.. INLINE 54,0
028180: 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 //
028190: 6C 64 20 28 68 6C 29 2C 30 0D 0A 20 20 30 25 23 ld (hl),0.. 0%#
0281A0: 78 38 30 20 3A 3D 20 73 61 76 65 25 30 20 3B 20 x80 := save%0 ;
0281B0: 30 25 23 78 38 31 20 3A 3D 20 73 61 76 65 25 31 0%#x81 := save%1
0281C0: 20 3B 20 30 25 23 78 38 32 20 3A 3D 20 73 61 76 ; 0%#x82 := sav
0281D0: 65 25 32 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 73 e%2..$)....AND s
0281E0: 65 6C 65 63 74 69 6E 70 75 74 28 73 74 72 65 61 electinput(strea
0281F0: 6D 29 20 20 42 45 20 72 65 61 64 73 74 72 65 61 m) BE readstrea
028200: 6D 20 20 3A 3D 20 73 74 72 65 61 6D 0D 0A 41 4E m := stream..AN
028210: 44 20 73 65 6C 65 63 74 6F 75 74 70 75 74 28 73 D selectoutput(s
028220: 74 72 65 61 6D 29 20 42 45 20 77 72 69 74 65 73 tream) BE writes
028230: 74 72 65 61 6D 20 3A 3D 20 73 74 72 65 61 6D 0D tream := stream.
028240: 0A 41 4E 44 20 69 6E 70 75 74 28 29 20 20 3D 20 .AND input() =
028250: 72 65 61 64 73 74 72 65 61 6D 0D 0A 41 4E 44 20 readstream..AND
028260: 6F 75 74 70 75 74 28 29 20 3D 20 77 72 69 74 65 output() = write
028270: 73 74 72 65 61 6D 0D 0A 41 4E 44 20 75 70 70 65 stream..AND uppe
028280: 72 63 61 73 65 28 63 68 61 72 29 20 3D 20 27 61 rcase(char) = 'a
028290: 27 3C 3D 63 68 61 72 3C 3D 27 7A 27 20 2D 3E 20 '<=char<='z' ->
0282A0: 63 68 61 72 20 2D 20 33 32 2C 20 63 68 61 72 0D char - 32, char.
0282B0: 0A 41 4E 44 20 63 61 70 69 74 61 6C 63 68 28 63 .AND capitalch(c
0282C0: 29 20 3D 20 75 70 70 65 72 63 61 73 65 28 63 29 ) = uppercase(c)
0282D0: 0D 0A 41 4E 44 20 64 65 63 76 61 6C 28 64 69 67 ..AND decval(dig
0282E0: 69 74 29 20 3D 20 27 30 27 3C 3D 64 69 67 69 74 it) = '0'<=digit
0282F0: 3C 3D 27 39 27 20 20 2D 3E 20 64 69 67 69 74 2D <='9' -> digit-
028300: 27 30 27 2C 20 64 69 67 69 74 2D 27 41 27 2B 31 '0', digit-'A'+1
028310: 30 0D 0A 0D 0A 1A 43 50 2F 4D 20 6C 69 62 72 61 0.....CP/M libra
028320: 72 79 20 68 65 61 64 65 72 2C 20 6C 61 73 74 20 ry header, last
028330: 6D 6F 64 69 66 69 65 64 20 32 31 2F 30 33 2F 31 modified 21/03/1
028340: 39 38 37 0D 0A 0D 0A 0D 0A 4D 41 4E 49 46 45 53 987......MANIFES
028350: 54 20 24 28 20 62 79 74 65 73 70 65 72 77 6F 72 T $( bytesperwor
028360: 64 20 3D 20 32 20 3B 20 62 69 74 73 70 65 72 77 d = 2 ; bitsperw
028370: 6F 72 64 20 3D 20 31 36 0D 0A 20 20 20 20 20 20 ord = 16..
028380: 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 //
028390: 6C 64 20 28 68 6C 29 2C 30 0D 0A 20 20 30 25 23 ld (hl),0.. 0%#
0283A0: 78 38 30 20 3A 3D 20 73 61 76 65 25 30 20 3B 20 x80 := save%0 ;
0283B0: 30 25 23 78 38 31 20 3A 3D 20 73 61 76 65 25 31 0%#x81 := save%1
0283C0: 20 3B 20 30 25 23 78 38 32 20 3A 3D 20 73 61 76 ; 0%#x82 := sav
0283D0: 65 25 32 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 73 e%2..$)....AND s
0283E0: 65 6C 65 63 74 69 6E 70 75 74 28 73 74 72 65 61 electinput(strea
0283F0: 6D 29 20 20 42 45 20 72 65 61 64 73 74 72 65 61 m) BE readstrea
028400: 6D 20 20 3A 3D 20 73 74 72 65 61 6D 0D 0A 41 4E m := stream..AN
028410: 44 20 73 65 6C 65 63 74 6F 75 74 70 75 74 28 73 D selectoutput(s
028420: 74 72 65 61 6D 29 20 42 45 20 77 72 69 74 65 73 tream) BE writes
028430: 74 72 65 61 6D 20 3A 3D 20 73 74 72 65 61 6D 0D tream := stream.
028440: 0A 41 4E 44 20 69 6E 70 75 74 28 29 20 20 3D 20 .AND input() =
028450: 72 65 61 64 73 74 72 65 61 6D 0D 0A 41 4E 44 20 readstream..AND
028460: 6F 75 74 70 75 74 28 29 20 3D 20 77 72 69 74 65 output() = write
028470: 73 74 72 65 61 6D 0D 0A 41 4E 44 20 75 70 70 65 stream..AND uppe
028480: 72 63 61 73 65 28 63 68 61 72 29 20 3D 20 27 61 rcase(char) = 'a
028490: 27 3C 3D 63 68 61 72 3C 3D 27 7A 27 20 2D 3E 20 '<=char<='z' ->
0284A0: 63 68 61 72 20 2D 20 33 32 2C 20 63 68 61 72 0D char - 32, char.
0284B0: 0A 41 4E 44 20 63 61 70 69 74 61 6C 63 68 28 63 .AND capitalch(c
0284C0: 29 20 3D 20 75 70 70 65 72 63 61 73 65 28 63 29 ) = uppercase(c)
0284D0: 0D 0A 41 4E 44 20 64 65 63 76 61 6C 28 64 69 67 ..AND decval(dig
0284E0: 69 74 29 20 3D 20 27 30 27 3C 3D 64 69 67 69 74 it) = '0'<=digit
0284F0: 3C 3D 27 39 27 20 20 2D 3E 20 64 69 67 69 74 2D <='9' -> digit-
028500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0285A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0285B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0285C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0285D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0285E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0285F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0286A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0286B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0286C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0286D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0286E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0286F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
028700: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
028710: 22 00 00 00 02 09 50 E5 22 00 C1 02 00 00 00 02 ".....P.".......
028720: 22 00 C2 02 00 00 00 02 22 00 C3 02 00 00 00 02 ".......".......
028730: 22 00 C4 02 00 00 00 02 22 00 C5 02 00 00 00 02 ".......".......
028740: 22 00 C6 02 00 00 00 02 22 00 C7 02 00 00 00 02 ".......".......
028750: 22 00 C8 02 00 00 00 02 22 00 C9 02 00 00 00 02 ".......".......
028760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
028770: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
028780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
028790: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0287A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0287B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0287C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0287D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0287E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0287F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
028800: 2F 2F 20 43 4C 49 42 48 44 52 31 20 20 20 61 64 // CLIBHDR1 ad
028810: 64 69 74 69 6F 6E 61 6C 20 43 50 2F 4D 20 6C 69 ditional CP/M li
028820: 62 72 61 72 79 20 68 65 61 64 65 72 2C 20 6C 61 brary header, la
028830: 73 74 20 6D 6F 64 69 66 69 65 64 20 31 39 2F 31 st modified 19/1
028840: 31 2F 31 39 38 36 0D 0A 0D 0A 0D 0A 53 54 41 54 1/1986......STAT
028850: 49 43 20 24 28 20 72 61 6E 64 6F 6D 73 65 65 64 IC $( randomseed
028860: 20 3D 20 30 20 24 29 0D 0A 0D 0A 4C 45 54 20 72 = 0 $)....LET r
028870: 61 6E 64 6F 6D 28 29 20 3D 20 56 41 4C 4F 46 0D andom() = VALOF.
028880: 0A 24 28 0D 0A 20 20 72 61 6E 64 6F 6D 73 65 65 .$(.. randomsee
028890: 64 20 3A 3D 20 72 61 6E 64 6F 6D 73 65 65 64 20 d := randomseed
0288A0: 2A 20 23 78 41 33 45 44 20 2B 20 23 78 31 44 33 * #xA3ED + #x1D3
0288B0: 31 0D 0A 20 20 52 45 53 55 4C 54 49 53 20 72 61 1.. RESULTIS ra
0288C0: 6E 64 6F 6D 73 65 65 64 0D 0A 24 29 0D 0A 0D 0A ndomseed..$)....
0288D0: 41 4E 44 20 73 74 6F 70 28 63 6F 64 65 29 20 42 AND stop(code) B
0288E0: 45 0D 0A 24 28 0D 0A 20 20 62 64 6F 73 62 28 31 E..$(.. bdosb(1
0288F0: 30 38 2C 63 6F 64 65 29 0D 0A 20 20 66 69 6E 69 08,code).. fini
028900: 73 68 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 74 61 sh..$)....AND ta
028910: 69 6C 28 73 74 72 69 6E 67 29 20 42 45 0D 0A 24 il(string) BE..$
028920: 28 0D 0A 20 20 73 74 72 69 6E 67 25 30 20 3A 3D (.. string%0 :=
028930: 20 30 25 23 78 38 30 0D 0A 20 20 46 4F 52 20 61 0%#x80.. FOR a
028940: 20 3D 20 31 20 54 4F 20 73 74 72 69 6E 67 25 30 = 1 TO string%0
028950: 20 44 4F 20 73 74 72 69 6E 67 25 61 20 3A 3D 20 DO string%a :=
028960: 30 25 28 23 78 38 30 2B 61 29 0D 0A 24 29 0D 0A 0%(#x80+a)..$)..
028970: 0D 0A 41 4E 44 20 64 65 6C 65 74 65 28 6E 61 6D ..AND delete(nam
028980: 65 2C 62 75 66 66 65 72 29 20 3D 20 56 41 4C 4F e,buffer) = VALO
028990: 46 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 63 2C 20 F..$(.. LET c,
0289A0: 64 65 20 3D 20 31 39 2C 20 62 75 66 66 65 72 2A de = 19, buffer*
0289B0: 32 0D 0A 20 20 73 65 74 66 63 62 28 6E 61 6D 65 2.. setfcb(name
0289C0: 2C 62 75 66 66 65 72 29 0D 0A 20 20 62 64 6F 73 ,buffer).. bdos
0289D0: 61 28 40 63 2C 40 64 65 29 0D 0A 20 20 52 45 53 a(@c,@de).. RES
0289E0: 55 4C 54 49 53 20 63 5C 3D 32 35 35 0D 0A 24 29 ULTIS c\=255..$)
0289F0: 0D 0A 0D 0A 41 4E 44 20 72 65 6E 61 6D 65 28 6E ....AND rename(n
028A00: 61 6D 65 31 2C 6E 61 6D 65 32 2C 62 75 66 66 65 ame1,name2,buffe
028A10: 72 29 20 3D 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A r) = VALOF..$(..
028A20: 20 20 4C 45 54 20 63 2C 20 64 65 20 3D 20 32 33 LET c, de = 23
028A30: 2C 20 62 75 66 66 65 72 2A 32 0D 0A 20 20 73 65 , buffer*2.. se
028A40: 74 66 63 62 28 6E 61 6D 65 31 2C 62 75 66 66 65 tfcb(name1,buffe
028A50: 72 29 0D 0A 20 20 73 65 74 66 63 62 28 6E 61 6D r).. setfcb(nam
028A60: 65 32 2C 62 75 66 66 65 72 2B 31 36 29 0D 0A 20 e2,buffer+16)..
028A70: 20 62 79 74 65 6D 6F 76 65 28 62 75 66 66 65 72 bytemove(buffer
028A80: 2A 32 2B 33 32 2C 62 75 66 66 65 72 2A 32 2B 31 *2+32,buffer*2+1
028A90: 36 2C 31 36 29 0D 0A 20 20 62 64 6F 73 61 28 40 6,16).. bdosa(@
028AA0: 63 2C 40 64 65 29 0D 0A 20 20 52 45 53 55 4C 54 c,@de).. RESULT
028AB0: 49 53 20 63 5C 3D 32 35 35 0D 0A 24 29 0D 0A 0D IS c\=255..$)...
028AC0: 0A 41 4E 44 20 77 72 69 74 65 74 28 73 2C 6E 29 .AND writet(s,n)
028AD0: 20 42 45 0D 0A 24 28 20 20 0D 0A 20 20 77 72 69 BE..$( .. wri
028AE0: 74 65 73 28 73 29 0D 0A 20 20 46 4F 52 20 69 20 tes(s).. FOR i
028AF0: 3D 20 31 20 74 6F 20 6E 2D 73 25 30 20 44 4F 20 = 1 to n-s%0 DO
028B00: 77 72 63 68 28 27 20 27 29 0D 0A 24 29 0D 0A 0D wrch(' ')..$)...
028B10: 0A 41 4E 44 20 77 72 69 74 65 75 28 6E 2C 64 29 .AND writeu(n,d)
028B20: 20 42 45 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 6D BE..$(.. LET m
028B30: 20 3D 20 28 6E 3E 3E 31 29 2F 35 0D 0A 20 20 55 = (n>>1)/5.. U
028B40: 4E 4C 45 53 53 20 6D 3D 30 20 44 4F 0D 0A 20 20 NLESS m=0 DO..
028B50: 24 28 0D 0A 20 20 20 20 77 72 69 74 65 64 28 6D $(.. writed(m
028B60: 2C 64 2D 31 29 0D 0A 20 20 20 20 64 20 3A 3D 20 ,d-1).. d :=
028B70: 31 0D 0A 20 20 24 29 0D 0A 20 20 77 72 69 74 65 1.. $).. write
028B80: 64 28 6E 2D 6D 2A 31 30 2C 64 29 0D 0A 24 29 0D d(n-m*10,d)..$).
028B90: 0A 0D 0A 41 4E 44 20 6E 65 77 70 61 67 65 28 29 ...AND newpage()
028BA0: 20 42 45 20 20 77 72 63 68 28 31 32 29 0D 0A 0D BE wrch(12)...
028BB0: 0A 41 4E 44 20 63 6F 6D 70 63 68 28 63 68 31 2C .AND compch(ch1,
028BC0: 63 68 32 29 20 3D 20 63 61 70 69 74 61 6C 63 68 ch2) = capitalch
028BD0: 28 63 68 31 29 20 2D 20 63 61 70 69 74 61 6C 63 (ch1) - capitalc
028BE0: 68 28 63 68 32 29 0D 0A 0D 0A 41 4E 44 20 63 6F h(ch2)....AND co
028BF0: 6D 70 73 74 72 69 6E 67 28 73 31 2C 73 32 29 20 mpstring(s1,s2)
028C00: 3D 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C = VALOF..$(.. L
028C10: 45 54 20 6C 65 6E 31 2C 6C 65 6E 32 20 3D 20 73 ET len1,len2 = s
028C20: 31 25 30 2C 20 73 32 25 30 0D 0A 20 20 4C 45 54 1%0, s2%0.. LET
028C30: 20 73 68 6F 72 74 65 72 20 3D 20 6C 65 6E 31 3C shorter = len1<
028C40: 6C 65 6E 32 20 2D 3E 20 73 31 2C 20 73 32 0D 0A len2 -> s1, s2..
028C50: 20 20 46 4F 52 20 69 20 3D 20 31 20 74 6F 20 73 FOR i = 1 to s
028C60: 68 6F 72 74 65 72 25 30 20 44 4F 0D 0A 20 20 24 horter%0 DO.. $
028C70: 28 0D 0A 20 20 20 20 4C 45 54 20 72 65 73 20 3D (.. LET res =
028C80: 20 63 6F 6D 70 63 68 28 73 31 25 69 2C 20 73 32 compch(s1%i, s2
028C90: 25 69 29 0D 0A 20 20 20 20 55 4E 4C 45 53 53 20 %i).. UNLESS
028CA0: 72 65 73 3D 30 20 52 45 53 55 4C 54 49 53 20 72 res=0 RESULTIS r
028CB0: 65 73 0D 0A 20 20 24 29 0D 0A 20 20 52 45 53 55 es.. $).. RESU
028CC0: 4C 54 49 53 20 6C 65 6E 31 3D 6C 65 6E 32 20 2D LTIS len1=len2 -
028CD0: 3E 20 30 2C 20 73 68 6F 72 74 65 72 3D 73 31 20 > 0, shorter=s1
028CE0: 2D 3E 20 2D 31 2C 31 0D 0A 24 29 0D 0A 0D 0A 41 -> -1,1..$)....A
028CF0: 4E 44 20 62 79 74 65 6D 6F 76 65 28 73 6F 75 72 ND bytemove(sour
028D00: 63 65 2C 64 65 73 74 2C 6E 75 6D 62 65 72 29 20 ce,dest,number)
028D10: 42 45 0D 0A 24 28 0D 0A 20 20 69 6E 6C 69 6E 65 BE..$(.. inline
028D20: 20 32 32 31 2C 31 30 32 2C 31 32 33 20 20 20 20 221,102,123
028D30: 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 32 // ld h,(ix+12
028D40: 33 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 32 31 3).. inline 221
028D50: 2C 31 31 30 2C 31 32 32 20 20 20 20 20 20 2F 2F ,110,122 //
028D60: 20 6C 64 20 6C 2C 28 69 78 2B 31 32 32 29 0D 0A ld l,(ix+122)..
028D70: 20 20 69 6E 6C 69 6E 65 20 32 32 31 2C 38 36 2C inline 221,86,
028D80: 31 32 35 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 125 // ld
028D90: 64 2C 28 69 78 2B 31 32 35 29 0D 0A 20 20 69 6E d,(ix+125).. in
028DA0: 6C 69 6E 65 20 32 32 31 2C 39 34 2C 31 32 34 20 line 221,94,124
028DB0: 20 20 20 20 20 20 2F 2F 20 6C 64 20 65 2C 28 69 // ld e,(i
028DC0: 78 2B 31 32 34 29 0D 0A 20 20 69 6E 6C 69 6E 65 x+124).. inline
028DD0: 20 32 32 31 2C 37 30 2C 31 32 37 20 20 20 20 20 221,70,127
028DE0: 20 20 2F 2F 20 6C 64 20 62 2C 28 69 78 2B 31 32 // ld b,(ix+12
028DF0: 37 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 32 31 7).. inline 221
028E00: 2C 37 38 2C 31 32 36 20 20 20 20 20 20 20 2F 2F ,78,126 //
028E10: 20 6C 64 20 63 2C 28 69 78 2B 31 32 36 29 0D 0A ld c,(ix+126)..
028E20: 20 20 69 6E 6C 69 6E 65 20 31 36 37 20 20 20 20 inline 167
028E30: 20 20 20 20 20 20 20 20 20 20 2F 2F 20 61 6E 64 // and
028E40: 20 61 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 33 37 a.. inline 237
028E50: 2C 38 32 20 20 20 20 20 20 20 20 20 20 20 2F 2F ,82 //
028E60: 20 73 62 63 20 68 6C 2C 64 65 0D 0A 20 20 69 6E sbc hl,de.. in
028E70: 6C 69 6E 65 20 32 35 20 20 20 20 20 20 20 20 20 line 25
028E80: 20 20 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C // add hl,
028E90: 64 65 0D 0A 20 20 69 6E 6C 69 6E 65 20 35 36 2C de.. inline 56,
028EA0: 34 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 4 //
028EB0: 20 6A 72 20 63 2C 2B 34 0D 0A 20 20 69 6E 6C 69 jr c,+4.. inli
028EC0: 6E 65 20 32 33 37 2C 31 37 36 20 20 20 20 20 20 ne 237,176
028ED0: 20 20 20 20 2F 2F 20 6C 64 69 72 0D 0A 20 20 69 // ldir.. i
028EE0: 6E 6C 69 6E 65 20 32 34 2C 38 20 20 20 20 20 20 nline 24,8
028EF0: 20 20 20 20 20 20 20 2F 2F 20 6A 72 20 2B 38 0D // jr +8.
028F00: 0A 20 20 69 6E 6C 69 6E 65 20 31 31 20 20 20 20 . inline 11
028F10: 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 64 65 // de
028F20: 63 20 62 63 0D 0A 20 20 69 6E 6C 69 6E 65 20 39 c bc.. inline 9
028F30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
028F40: 2F 2F 20 61 64 64 20 68 6C 2C 62 63 0D 0A 20 20 // add hl,bc..
028F50: 69 6E 6C 69 6E 65 20 32 33 35 20 20 20 20 20 20 inline 235
028F60: 20 20 20 20 20 20 20 20 2F 2F 20 65 78 20 64 65 // ex de
028F70: 2C 68 6C 0D 0A 20 20 69 6E 6C 69 6E 65 20 39 20 ,hl.. inline 9
028F80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F /
028F90: 2F 20 61 64 64 20 68 6C 2C 62 63 0D 0A 20 20 69 / add hl,bc.. i
028FA0: 6E 6C 69 6E 65 20 32 33 35 20 20 20 20 20 20 20 nline 235
028FB0: 20 20 20 20 20 20 20 2F 2F 20 65 78 20 64 65 2C // ex de,
028FC0: 68 6C 0D 0A 20 20 69 6E 6C 69 6E 65 20 33 20 20 hl.. inline 3
028FD0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F //
028FE0: 20 69 6E 63 20 62 63 0D 0A 20 20 69 6E 6C 69 6E inc bc.. inlin
028FF0: 65 20 32 33 37 2C 31 38 34 20 20 20 20 20 20 20 e 237,184
029000: 20 20 20 2F 2F 20 6C 64 64 72 0D 0A 24 29 0D 0A // lddr..$)..
029010: 0D 0A 41 4E 44 20 63 61 6C 6C 28 61 64 64 72 2C ..AND call(addr,
029020: 61 66 2C 62 63 2C 64 65 2C 68 6C 2C 69 78 29 20 af,bc,de,hl,ix)
029030: 42 45 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 73 61 BE..$(.. LET sa
029040: 76 65 33 20 3D 20 56 45 43 20 31 0D 0A 20 20 62 ve3 = VEC 1.. b
029050: 79 74 65 6D 6F 76 65 28 23 78 39 30 2C 20 73 61 ytemove(#x90, sa
029060: 76 65 33 2A 32 2C 20 33 29 0D 0A 20 20 30 25 23 ve3*2, 3).. 0%#
029070: 78 39 30 20 3A 3D 20 23 78 43 33 0D 0A 20 20 30 x90 := #xC3.. 0
029080: 25 23 78 39 31 20 3A 3D 20 61 64 64 72 20 26 20 %#x91 := addr &
029090: 23 78 46 46 0D 0A 20 20 30 25 23 78 39 32 20 3A #xFF.. 0%#x92 :
0290A0: 3D 20 28 20 61 64 64 72 20 26 20 23 78 46 46 30 = ( addr & #xFF0
0290B0: 30 20 29 20 3E 3E 20 38 0D 0A 20 20 69 6E 6C 69 0 ) >> 8.. inli
0290C0: 6E 65 20 23 78 44 44 2C 23 78 45 35 20 20 20 20 ne #xDD,#xE5
0290D0: 20 20 20 20 20 20 20 20 2F 2F 20 70 75 73 68 20 // push
0290E0: 69 78 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 44 ix.. inline #xD
0290F0: 44 2C 23 78 36 36 2C 23 78 37 37 20 20 20 20 20 D,#x66,#x77
029100: 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 31 // ld h,(ix+11
029110: 39 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 44 9).. inline #xD
029120: 44 2C 23 78 36 45 2C 23 78 37 36 20 20 20 20 20 D,#x6E,#x76
029130: 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 31 // ld l,(ix+11
029140: 38 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 32 8).. inline #x2
029150: 39 2C 23 78 35 45 2C 23 78 35 36 2C 23 78 32 33 9,#x5E,#x56,#x23
029160: 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 3A 6C // add hl,hl:l
029170: 64 20 65 2C 28 68 6C 29 3A 69 6E 63 20 68 6C 3A d e,(hl):inc hl:
029180: 6C 64 20 64 2C 28 68 6C 29 0D 0A 20 20 69 6E 6C ld d,(hl).. inl
029190: 69 6E 65 20 23 78 44 35 20 20 20 20 20 20 20 20 ine #xD5
0291A0: 20 20 20 20 20 20 20 20 20 2F 2F 20 70 75 73 68 // push
0291B0: 20 64 65 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 de.. inline #x
0291C0: 44 44 2C 23 78 36 36 2C 23 78 37 39 20 20 20 20 DD,#x66,#x79
0291D0: 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 // ld h,(ix+1
0291E0: 32 31 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 21).. inline #x
0291F0: 44 44 2C 23 78 36 45 2C 23 78 37 38 20 20 20 20 DD,#x6E,#x78
029200: 20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 // ld l,(ix+1
029210: 32 30 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 20).. inline #x
029220: 32 39 2C 23 78 34 45 2C 23 78 32 33 2C 23 78 34 29,#x4E,#x23,#x4
029230: 36 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 3A 6 // add hl,hl:
029240: 6C 64 20 63 2C 28 68 6C 29 3A 69 6E 63 20 68 6C ld c,(hl):inc hl
029250: 3A 6C 64 20 62 2C 28 68 6C 29 0D 0A 20 20 69 6E :ld b,(hl).. in
029260: 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 36 2C 23 line #xDD,#x66,#
029270: 78 37 46 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 x7F // ld
029280: 68 2C 28 69 78 2B 31 32 37 29 0D 0A 20 20 69 6E h,(ix+127).. in
029290: 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 45 2C 23 line #xDD,#x6E,#
0292A0: 78 37 45 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 x7E // ld
0292B0: 6C 2C 28 69 78 2B 31 32 36 29 0D 0A 20 20 69 6E l,(ix+126).. in
0292C0: 6C 69 6E 65 20 23 78 32 39 2C 23 78 35 45 2C 23 line #x29,#x5E,#
0292D0: 78 32 33 2C 23 78 35 36 20 20 2F 2F 20 61 64 64 x23,#x56 // add
0292E0: 20 68 6C 2C 68 6C 3A 6C 64 20 65 2C 28 68 6C 29 hl,hl:ld e,(hl)
0292F0: 3A 69 6E 63 20 68 6C 3A 6C 64 20 64 2C 28 68 6C :inc hl:ld d,(hl
029300: 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 44 35 ).. inline #xD5
029310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
029320: 20 2F 2F 20 70 75 73 68 20 64 65 0D 0A 20 20 69 // push de.. i
029330: 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 36 2C nline #xDD,#x66,
029340: 23 78 37 44 20 20 20 20 20 20 20 2F 2F 20 6C 64 #x7D // ld
029350: 20 68 2C 28 69 78 2B 31 32 35 29 0D 0A 20 20 69 h,(ix+125).. i
029360: 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 45 2C nline #xDD,#x6E,
029370: 23 78 37 43 20 20 20 20 20 20 20 2F 2F 20 6C 64 #x7C // ld
029380: 20 6C 2C 28 69 78 2B 31 32 34 29 0D 0A 20 20 69 l,(ix+124).. i
029390: 6E 6C 69 6E 65 20 23 78 32 39 2C 23 78 35 45 2C nline #x29,#x5E,
0293A0: 23 78 32 33 2C 23 78 35 36 20 20 2F 2F 20 61 64 #x23,#x56 // ad
0293B0: 64 20 68 6C 2C 68 6C 3A 6C 64 20 65 2C 28 68 6C d hl,hl:ld e,(hl
0293C0: 29 3A 69 6E 63 20 68 6C 3A 6C 64 20 64 2C 28 68 ):inc hl:ld d,(h
0293D0: 6C 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 44 l).. inline #xD
0293E0: 35 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5
0293F0: 20 20 2F 2F 20 70 75 73 68 20 64 65 0D 0A 20 20 // push de..
029400: 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 36 inline #xDD,#x66
029410: 2C 23 78 37 42 20 20 20 20 20 20 20 2F 2F 20 6C ,#x7B // l
029420: 64 20 68 2C 28 69 78 2B 31 32 33 29 0D 0A 20 20 d h,(ix+123)..
029430: 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 45 inline #xDD,#x6E
029440: 2C 23 78 37 41 20 20 20 20 20 20 20 2F 2F 20 6C ,#x7A // l
029450: 64 20 6C 2C 28 69 78 2B 31 32 32 29 0D 0A 20 20 d l,(ix+122)..
029460: 69 6E 6C 69 6E 65 20 23 78 32 39 2C 23 78 35 45 inline #x29,#x5E
029470: 2C 23 78 32 33 2C 23 78 35 36 20 20 2F 2F 20 61 ,#x23,#x56 // a
029480: 64 64 20 68 6C 2C 68 6C 3A 6C 64 20 65 2C 28 68 dd hl,hl:ld e,(h
029490: 6C 29 3A 69 6E 63 20 68 6C 3A 6C 64 20 64 2C 28 l):inc hl:ld d,(
0294A0: 68 6C 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 hl).. inline #x
0294B0: 45 31 2C 23 78 44 44 2C 23 78 45 31 2C 23 78 46 E1,#xDD,#xE1,#xF
0294C0: 31 20 20 2F 2F 20 70 6F 70 20 68 6C 3A 70 6F 70 1 // pop hl:pop
0294D0: 20 69 78 3A 70 6F 70 20 61 66 0D 0A 20 20 69 6E ix:pop af.. in
0294E0: 6C 69 6E 65 20 23 78 43 44 2C 23 78 39 30 2C 23 line #xCD,#x90,#
0294F0: 78 30 30 20 20 20 20 20 20 20 2F 2F 20 63 61 6C x00 // cal
029500: 6C 20 26 39 30 0D 0A 20 20 69 6E 6C 69 6E 65 20 l &90.. inline
029510: 23 78 44 44 2C 23 78 32 32 2C 23 78 39 30 2C 23 #xDD,#x22,#x90,#
029520: 78 30 30 20 20 2F 2F 20 6C 64 20 28 26 39 30 29 x00 // ld (&90)
029530: 2C 69 78 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 ,ix.. inline #x
029540: 44 44 2C 23 78 45 31 20 20 20 20 20 20 20 20 20 DD,#xE1
029550: 20 20 20 2F 2F 20 70 6F 70 20 69 78 0D 0A 20 20 // pop ix..
029560: 69 6E 6C 69 6E 65 20 23 78 46 35 2C 23 78 45 35 inline #xF5,#xE5
029570: 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 70 // p
029580: 75 73 68 20 61 66 3A 70 75 73 68 20 68 6C 0D 0A ush af:push hl..
029590: 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 inline #xDD,#x
0295A0: 36 36 2C 23 78 37 42 20 20 20 20 20 20 20 2F 2F 66,#x7B //
0295B0: 20 6C 64 20 68 2C 28 69 78 2B 31 32 33 29 0D 0A ld h,(ix+123)..
0295C0: 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 inline #xDD,#x
0295D0: 36 45 2C 23 78 37 41 20 20 20 20 20 20 20 2F 2F 6E,#x7A //
0295E0: 20 6C 64 20 6C 2C 28 69 78 2B 31 32 32 29 0D 0A ld l,(ix+122)..
0295F0: 20 20 69 6E 6C 69 6E 65 20 23 78 32 39 2C 23 78 inline #x29,#x
029600: 37 33 2C 23 78 32 33 2C 23 78 37 32 20 20 2F 2F 73,#x23,#x72 //
029610: 20 61 64 64 20 68 6C 2C 68 6C 3A 6C 64 20 28 68 add hl,hl:ld (h
029620: 6C 29 2C 65 3A 69 6E 63 20 68 6C 3A 6C 64 20 28 l),e:inc hl:ld (
029630: 68 6C 29 2C 64 0D 0A 20 20 69 6E 6C 69 6E 65 20 hl),d.. inline
029640: 23 78 44 44 2C 23 78 36 36 2C 23 78 37 44 20 20 #xDD,#x66,#x7D
029650: 20 20 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 // ld h,(ix
029660: 2B 31 32 35 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 +125).. inline
029670: 23 78 44 44 2C 23 78 36 45 2C 23 78 37 43 20 20 #xDD,#x6E,#x7C
029680: 20 20 20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 // ld l,(ix
029690: 2B 31 32 34 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 +124).. inline
0296A0: 23 78 32 39 2C 23 78 44 31 20 20 20 20 20 20 20 #x29,#xD1
0296B0: 20 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 // add hl,h
0296C0: 6C 3A 70 6F 70 20 64 65 0D 0A 20 20 69 6E 6C 69 l:pop de.. inli
0296D0: 6E 65 20 23 78 37 33 2C 23 78 32 33 2C 23 78 37 ne #x73,#x23,#x7
0296E0: 32 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 28 68 2 // ld (h
0296F0: 6C 29 2C 65 3A 69 6E 63 20 68 6C 3A 6C 64 20 28 l),e:inc hl:ld (
029700: 68 6C 29 2C 64 0D 0A 20 20 69 6E 6C 69 6E 65 20 hl),d.. inline
029710: 23 78 44 44 2C 23 78 36 36 2C 23 78 37 46 20 20 #xDD,#x66,#x7F
029720: 20 20 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 // ld h,(ix
029730: 2B 31 32 37 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 +127).. inline
029740: 23 78 44 44 2C 23 78 36 45 2C 23 78 37 45 20 20 #xDD,#x6E,#x7E
029750: 20 20 20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 // ld l,(ix
029760: 2B 31 32 36 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 +126).. inline
029770: 23 78 32 39 20 20 20 20 20 20 20 20 20 20 20 20 #x29
029780: 20 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 // add hl,h
029790: 6C 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 45 44 l.. inline #xED
0297A0: 2C 23 78 35 42 2C 23 78 39 30 2C 23 78 30 30 20 ,#x5B,#x90,#x00
0297B0: 20 2F 2F 20 6C 64 20 64 65 2C 28 26 39 30 29 0D // ld de,(&90).
0297C0: 0A 20 20 69 6E 6C 69 6E 65 20 23 78 37 33 2C 23 . inline #x73,#
0297D0: 78 32 33 2C 23 78 37 32 20 20 20 20 20 20 20 2F x23,#x72 /
0297E0: 2F 20 6C 64 20 28 68 6C 29 2C 65 3A 69 6E 63 20 / ld (hl),e:inc
0297F0: 68 6C 3A 6C 64 20 28 68 6C 29 2C 64 0D 0A 20 20 hl:ld (hl),d..
029800: 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 36 inline #xDD,#x66
029810: 2C 23 78 37 39 20 20 20 20 20 20 20 2F 2F 20 6C ,#x79 // l
029820: 64 20 68 2C 28 69 78 2B 31 32 31 29 0D 0A 20 20 d h,(ix+121)..
029830: 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 45 inline #xDD,#x6E
029840: 2C 23 78 37 38 20 20 20 20 20 20 20 2F 2F 20 6C ,#x78 // l
029850: 64 20 6C 2C 28 69 78 2B 31 32 30 29 0D 0A 20 20 d l,(ix+120)..
029860: 69 6E 6C 69 6E 65 20 23 78 32 39 2C 23 78 37 31 inline #x29,#x71
029870: 2C 23 78 32 33 2C 23 78 37 30 20 20 2F 2F 20 61 ,#x23,#x70 // a
029880: 64 64 20 68 6C 2C 68 6C 3A 6C 64 20 28 68 6C 29 dd hl,hl:ld (hl)
029890: 2C 63 3A 69 6E 63 20 68 6C 3A 6C 64 20 28 68 6C ,c:inc hl:ld (hl
0298A0: 29 2C 62 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 ),b.. inline #x
0298B0: 44 44 2C 23 78 36 36 2C 23 78 37 37 20 20 20 20 DD,#x66,#x77
0298C0: 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 // ld h,(ix+1
0298D0: 31 39 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 19).. inline #x
0298E0: 44 44 2C 23 78 36 45 2C 23 78 37 36 20 20 20 20 DD,#x6E,#x76
0298F0: 20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 // ld l,(ix+1
029900: 31 38 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 18).. inline #x
029910: 32 39 2C 23 78 44 31 20 20 20 20 20 20 20 20 20 29,#xD1
029920: 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 3A // add hl,hl:
029930: 70 6F 70 20 64 65 0D 0A 20 20 69 6E 6C 69 6E 65 pop de.. inline
029940: 20 23 78 37 33 2C 23 78 32 33 2C 23 78 37 32 20 #x73,#x23,#x72
029950: 20 20 20 20 20 20 2F 2F 20 6C 64 20 28 68 6C 29 // ld (hl)
029960: 2C 65 3A 69 6E 63 20 68 6C 3A 6C 64 20 28 68 6C ,e:inc hl:ld (hl
029970: 29 2C 64 0D 0A 20 20 62 79 74 65 6D 6F 76 65 28 ),d.. bytemove(
029980: 73 61 76 65 33 2A 32 2C 20 23 78 39 30 2C 20 33 save3*2, #x90, 3
029990: 29 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 66 69 72 )..$)....AND fir
0299A0: 6D 77 61 72 65 28 61 64 64 72 2C 61 66 2C 62 63 mware(addr,af,bc
0299B0: 2C 64 65 2C 68 6C 2C 69 78 29 20 42 45 0D 0A 24 ,de,hl,ix) BE..$
0299C0: 28 0D 0A 20 20 4C 45 54 20 73 61 76 65 36 20 3D (.. LET save6 =
0299D0: 20 56 45 43 20 33 0D 0A 20 20 62 79 74 65 6D 6F VEC 3.. bytemo
0299E0: 76 65 28 23 78 38 30 2C 20 73 61 76 65 36 2A 32 ve(#x80, save6*2
0299F0: 2C 20 36 29 0D 0A 20 20 30 25 23 78 38 30 20 3A , 6).. 0%#x80 :
029A00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
029A10: 23 00 00 00 02 09 50 E5 23 00 C1 02 00 00 00 02 #.....P.#.......
029A20: 23 00 C2 02 00 00 00 02 23 00 C3 02 00 00 00 02 #.......#.......
029A30: 23 00 C4 02 00 00 00 02 23 00 C5 02 00 00 00 02 #.......#.......
029A40: 23 00 C6 02 00 00 00 02 23 00 C7 02 00 00 00 02 #.......#.......
029A50: 23 00 C8 02 00 00 00 02 23 00 C9 02 00 00 00 02 #.......#.......
029A60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029A70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029A80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029A90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029AA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029AB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029AC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029AD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029AE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029AF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029B00: 3D 20 23 78 43 44 0D 0A 20 20 30 25 23 78 38 31 = #xCD.. 0%#x81
029B10: 20 3A 3D 20 30 25 28 30 25 31 20 2B 20 32 35 36 := 0%(0%1 + 256
029B20: 2A 30 25 32 20 2B 20 38 37 20 2B 31 29 0D 0A 20 *0%2 + 87 +1)..
029B30: 20 30 25 23 78 38 32 20 3A 3D 20 30 25 28 30 25 0%#x82 := 0%(0%
029B40: 31 20 2B 20 32 35 36 2A 30 25 32 20 2B 20 38 37 1 + 256*0%2 + 87
029B50: 20 2B 32 29 0D 0A 20 20 30 25 23 78 38 33 20 3A +2).. 0%#x83 :
029B60: 3D 20 61 64 64 72 20 26 20 23 78 46 46 0D 0A 20 = addr & #xFF..
029B70: 20 30 25 23 78 38 34 20 3A 3D 20 28 20 61 64 64 0%#x84 := ( add
029B80: 72 20 26 20 23 78 46 46 30 30 20 29 20 3E 3E 20 r & #xFF00 ) >>
029B90: 38 0D 0A 20 20 30 25 23 78 38 35 20 3A 3D 20 23 8.. 0%#x85 := #
029BA0: 78 43 39 0D 0A 20 20 63 61 6C 6C 20 28 23 78 38 xC9.. call (#x8
029BB0: 30 2C 61 66 2C 62 63 2C 64 65 2C 68 6C 2C 69 78 0,af,bc,de,hl,ix
029BC0: 29 0D 0A 20 20 62 79 74 65 6D 6F 76 65 28 73 61 ).. bytemove(sa
029BD0: 76 65 36 2A 32 2C 20 23 78 38 30 2C 20 36 29 0D ve6*2, #x80, 6).
029BE0: 0A 24 29 0D 0A 0D 0A 41 4E 44 20 76 65 72 73 69 .$)....AND versi
029BF0: 6F 6E 28 29 20 3D 20 56 41 4C 4F 46 0D 0A 24 28 on() = VALOF..$(
029C00: 0D 0A 20 20 4C 45 54 20 63 2C 64 65 3D 31 32 2C .. LET c,de=12,
029C10: 3F 0D 0A 20 20 4C 45 54 20 61 66 2C 62 63 2C 68 ?.. LET af,bc,h
029C20: 6C 2C 69 78 20 3D 20 3F 2C 3F 2C 3F 2C 3F 0D 0A l,ix = ?,?,?,?..
029C30: 20 20 62 64 6F 73 61 28 40 63 2C 40 64 65 29 0D bdosa(@c,@de).
029C40: 0A 20 20 49 46 20 28 64 65 20 26 20 23 78 46 46 . IF (de & #xFF
029C50: 29 20 3C 20 23 78 33 30 20 54 48 45 4E 20 52 45 ) < #x30 THEN RE
029C60: 53 55 4C 54 49 53 20 32 0D 0A 20 20 66 69 72 6D SULTIS 2.. firm
029C70: 77 61 72 65 28 23 78 45 33 2C 40 61 66 2C 40 62 ware(#xE3,@af,@b
029C80: 63 2C 40 64 65 2C 40 68 6C 2C 40 69 78 29 0D 0A c,@de,@hl,@ix)..
029C90: 20 20 52 45 53 55 4C 54 49 53 20 33 20 2B 20 28 RESULTIS 3 + (
029CA0: 20 61 66 20 3E 3E 20 38 20 29 0D 0A 24 29 0D 0A af >> 8 )..$)..
029CB0: 0D 0A 41 4E 44 20 67 65 74 62 79 74 65 28 73 2C ..AND getbyte(s,
029CC0: 69 29 20 3D 20 73 25 69 0D 0A 41 4E 44 20 70 75 i) = s%i..AND pu
029CD0: 74 62 79 74 65 28 73 2C 69 2C 63 29 20 42 45 20 tbyte(s,i,c) BE
029CE0: 73 25 69 20 3A 3D 20 63 0D 0A 41 4E 44 20 75 6E s%i := c..AND un
029CF0: 70 61 63 6B 73 74 72 69 6E 67 28 73 2C 76 29 20 packstring(s,v)
029D00: 42 45 20 46 4F 52 20 69 20 3D 20 30 20 54 4F 20 BE FOR i = 0 TO
029D10: 73 25 30 20 44 4F 20 76 21 69 20 3A 3D 20 73 25 s%0 DO v!i := s%
029D20: 69 0D 0A 41 4E 44 20 70 61 63 6B 73 74 72 69 6E i..AND packstrin
029D30: 67 28 76 2C 73 29 20 42 45 0D 0A 24 28 0D 0A 20 g(v,s) BE..$(..
029D40: 20 4C 45 54 20 6E 20 3D 20 21 76 20 4C 4F 47 41 LET n = !v LOGA
029D50: 4E 44 20 23 78 46 46 0D 0A 20 20 46 4F 52 20 69 ND #xFF.. FOR i
029D60: 20 3D 20 31 20 54 4F 20 6E 20 44 4F 20 73 25 69 = 1 TO n DO s%i
029D70: 20 3A 3D 20 73 21 69 0D 0A 24 29 0D 0A 1A 46 0D := s!i..$)...F.
029D80: 72 20 26 20 23 78 46 46 30 30 20 29 20 3E 3E 20 r & #xFF00 ) >>
029D90: 38 0D 0A 20 20 30 25 23 78 38 35 20 3A 3D 20 23 8.. 0%#x85 := #
029DA0: 78 43 39 0D 0A 20 20 63 61 6C 6C 20 28 23 78 38 xC9.. call (#x8
029DB0: 30 2C 61 66 2C 62 63 2C 64 65 2C 68 6C 2C 69 78 0,af,bc,de,hl,ix
029DC0: 29 0D 0A 20 20 62 79 74 65 6D 6F 76 65 28 73 61 ).. bytemove(sa
029DD0: 76 65 36 2A 32 2C 20 23 78 38 30 2C 20 36 29 0D ve6*2, #x80, 6).
029DE0: 0A 24 29 0D 0A 0D 0A 41 4E 44 20 76 65 72 73 69 .$)....AND versi
029DF0: 6F 6E 28 29 20 3D 20 56 41 4C 4F 46 0D 0A 24 28 on() = VALOF..$(
029E00: 0D 0A 20 20 4C 45 54 20 63 2C 64 65 3D 31 32 2C .. LET c,de=12,
029E10: 3F 0D 0A 20 20 4C 45 54 20 61 66 2C 62 63 2C 68 ?.. LET af,bc,h
029E20: 6C 2C 69 78 20 3D 20 3F 2C 3F 2C 3F 2C 3F 0D 0A l,ix = ?,?,?,?..
029E30: 20 20 62 64 6F 73 61 28 40 63 2C 40 64 65 29 0D bdosa(@c,@de).
029E40: 0A 20 20 49 46 20 28 64 65 20 26 20 23 78 46 46 . IF (de & #xFF
029E50: 29 20 3C 20 23 78 33 30 20 54 48 45 4E 20 52 45 ) < #x30 THEN RE
029E60: 53 55 4C 54 49 53 20 32 0D 0A 20 20 66 69 72 6D SULTIS 2.. firm
029E70: 77 61 72 65 28 23 78 45 33 2C 40 61 66 2C 40 62 ware(#xE3,@af,@b
029E80: 63 2C 40 64 65 2C 40 68 6C 2C 40 69 78 29 0D 0A c,@de,@hl,@ix)..
029E90: 20 20 52 45 53 55 4C 54 49 53 20 33 20 2B 20 28 RESULTIS 3 + (
029EA0: 20 61 66 20 3E 3E 20 38 20 29 0D 0A 24 29 0D 0A af >> 8 )..$)..
029EB0: 0D 0A 41 4E 44 20 67 65 74 62 79 74 65 28 73 2C ..AND getbyte(s,
029EC0: 69 29 20 3D 20 73 25 69 0D 0A 41 4E 44 20 70 75 i) = s%i..AND pu
029ED0: 74 62 79 74 65 28 73 2C 69 2C 63 29 20 42 45 20 tbyte(s,i,c) BE
029EE0: 73 25 69 20 3A 3D 20 63 0D 0A 41 4E 44 20 75 6E s%i := c..AND un
029EF0: 70 61 63 6B 73 74 72 69 6E 67 28 73 2C 76 29 20 packstring(s,v)
029F00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029FA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029FB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029FC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029FD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029FE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029FF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A0A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A0B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A0C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A0D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A0E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A0F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02A100: 2F 2A 20 54 68 69 73 20 69 73 20 61 20 63 6F 70 /* This is a cop
02A110: 79 20 72 6F 75 74 69 6E 65 2E 20 4C 61 73 74 20 y routine. Last
02A120: 6D 6F 64 69 66 69 65 64 20 30 35 2F 31 31 2F 31 modified 05/11/1
02A130: 39 38 36 20 2A 2F 0D 0A 0D 0A 6F 70 74 69 6F 6E 986 */....option
02A140: 20 62 2D 0D 0A 0D 0A 2F 2A 20 49 6E 63 6C 75 64 b-..../* Includ
02A150: 65 20 74 68 65 20 6C 69 62 72 61 72 79 20 2A 2F e the library */
02A160: 0D 0A 0D 0A 47 45 54 20 22 63 6C 69 62 68 64 72 ....GET "clibhdr
02A170: 22 0D 0A 0D 0A 4C 45 54 20 73 74 61 72 74 28 29 "....LET start()
02A180: 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 54 BE....$(.. LET
02A190: 20 69 6E 6E 61 6D 65 20 3D 20 56 45 43 20 32 30 inname = VEC 20
02A1A0: 0D 0A 20 20 4C 45 54 20 69 6E 62 75 66 66 20 3D .. LET inbuff =
02A1B0: 20 56 45 43 20 38 32 0D 0A 20 20 4C 45 54 20 6F VEC 82.. LET o
02A1C0: 75 74 6E 61 6D 65 20 3D 20 56 45 43 20 32 30 0D utname = VEC 20.
02A1D0: 0A 20 20 4C 45 54 20 6F 75 74 62 75 66 66 20 3D . LET outbuff =
02A1E0: 20 56 45 43 20 38 32 0D 0A 20 20 4C 45 54 20 63 VEC 82.. LET c
02A1F0: 20 3D 20 30 0D 0A 20 20 77 72 69 74 65 73 28 22 = 0.. writes("
02A200: 49 6E 70 75 74 20 66 69 6C 65 20 6E 61 6D 65 3A Input file name:
02A210: 20 20 22 29 0D 0A 20 20 72 65 61 64 73 28 69 6E ").. reads(in
02A220: 6E 61 6D 65 29 0D 0A 20 20 49 46 20 69 6E 6E 61 name).. IF inna
02A230: 6D 65 25 30 20 3D 20 30 20 54 48 45 4E 20 46 49 me%0 = 0 THEN FI
02A240: 4E 49 53 48 0D 0A 20 20 6E 65 77 6C 69 6E 65 28 NISH.. newline(
02A250: 29 0D 0A 20 20 77 72 69 74 65 73 28 22 4F 75 74 ).. writes("Out
02A260: 70 75 74 20 66 69 6C 65 20 6E 61 6D 65 3A 20 22 put file name: "
02A270: 29 0D 0A 20 20 72 65 61 64 73 28 6F 75 74 6E 61 ).. reads(outna
02A280: 6D 65 29 0D 0A 20 20 49 46 20 6F 75 74 6E 61 6D me).. IF outnam
02A290: 65 25 30 20 3D 20 30 20 54 48 45 4E 20 46 49 4E e%0 = 0 THEN FIN
02A2A0: 49 53 48 0D 0A 20 20 54 45 53 54 20 66 69 6E 64 ISH.. TEST find
02A2B0: 69 6E 70 75 74 28 69 6E 6E 61 6D 65 2C 20 69 6E input(inname, in
02A2C0: 62 75 66 66 29 20 54 48 45 4E 0D 0A 20 20 24 28 buff) THEN.. $(
02A2D0: 0D 0A 20 20 20 20 73 65 6C 65 63 74 69 6E 70 75 .. selectinpu
02A2E0: 74 28 69 6E 62 75 66 66 29 0D 0A 20 20 20 20 54 t(inbuff).. T
02A2F0: 45 53 54 20 66 69 6E 64 6F 75 74 70 75 74 28 6F EST findoutput(o
02A300: 75 74 6E 61 6D 65 2C 20 6F 75 74 62 75 66 66 29 utname, outbuff)
02A310: 20 54 48 45 4E 0D 0A 20 20 20 20 24 28 0D 0A 20 THEN.. $(..
02A320: 20 20 20 20 20 73 65 6C 65 63 74 6F 75 74 70 75 selectoutpu
02A330: 74 28 6F 75 74 62 75 66 66 29 0D 0A 20 20 20 20 t(outbuff)..
02A340: 20 20 24 28 0D 0A 20 20 20 20 20 20 20 20 63 20 $(.. c
02A350: 3A 3D 20 72 64 63 68 28 29 0D 0A 20 20 20 20 20 := rdch()..
02A360: 20 20 20 55 4E 4C 45 53 53 20 63 3D 65 6E 64 73 UNLESS c=ends
02A370: 74 72 65 61 6D 63 68 20 44 4F 20 77 72 63 68 28 treamch DO wrch(
02A380: 63 29 0D 0A 20 20 20 20 20 20 24 29 0D 0A 20 20 c).. $)..
02A390: 20 20 20 20 52 45 50 45 41 54 55 4E 54 49 4C 20 REPEATUNTIL
02A3A0: 63 20 3D 20 65 6E 64 73 74 72 65 61 6D 63 68 0D c = endstreamch.
02A3B0: 0A 20 20 20 20 20 20 65 6E 64 77 72 69 74 65 28 . endwrite(
02A3C0: 29 0D 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45 ).. $).. E
02A3D0: 4C 53 45 20 77 72 69 74 65 73 28 22 43 61 6E 27 LSE writes("Can'
02A3E0: 74 20 6F 70 65 6E 20 6F 75 74 70 75 74 20 66 69 t open output fi
02A3F0: 6C 65 22 29 0D 0A 20 20 20 20 65 6E 64 72 65 61 le").. endrea
02A400: 64 28 29 0D 0A 20 20 24 29 0D 0A 20 20 45 4C 53 d().. $).. ELS
02A410: 45 20 77 72 69 74 65 73 28 22 43 61 6E 27 74 20 E writes("Can't
02A420: 6F 70 65 6E 20 69 6E 70 75 74 20 66 69 6C 65 22 open input file"
02A430: 29 0D 0A 24 29 0D 0A 2E 0D 0A 0D 0A 1A 69 6F 6E )..$)........ion
02A440: 20 62 2D 0D 0A 0D 0A 2F 2A 20 49 6E 63 6C 75 64 b-..../* Includ
02A450: 65 20 74 68 65 20 6C 69 62 72 61 72 79 20 2A 2F e the library */
02A460: 0D 0A 0D 0A 47 45 54 20 22 63 6C 69 62 68 64 72 ....GET "clibhdr
02A470: 22 0D 0A 0D 0A 4C 45 54 20 73 74 61 72 74 28 29 "....LET start()
02A480: 6D 65 29 0D 0A 20 20 49 46 20 6F 75 74 6E 61 6D me).. IF outnam
02A490: 65 25 30 20 3D 20 30 20 54 48 45 4E 20 46 49 4E e%0 = 0 THEN FIN
02A4A0: 49 53 48 0D 0A 20 20 54 45 53 54 20 66 69 6E 64 ISH.. TEST find
02A4B0: 69 6E 70 75 74 28 69 6E 6E 61 6D 65 2C 20 69 6E input(inname, in
02A4C0: 62 75 66 66 29 20 54 48 45 4E 0D 0A 20 20 24 28 buff) THEN.. $(
02A4D0: 0D 0A 20 20 20 20 73 65 6C 65 63 74 69 6E 70 75 .. selectinpu
02A4E0: 74 28 69 6E 62 75 66 66 29 0D 0A 20 20 20 20 54 t(inbuff).. T
02A4F0: 45 53 54 20 66 69 6E 64 6F 75 74 70 75 74 28 6F EST findoutput(o
02A500: 2F 2A 20 42 43 50 4C 20 64 65 62 75 67 20 70 72 /* BCPL debug pr
02A510: 6F 63 65 64 75 72 65 20 30 32 2F 31 31 2F 31 39 ocedure 02/11/19
02A520: 38 36 20 2A 2F 0D 0A 0D 0A 2F 2A 20 20 20 20 20 86 */..../*
02A530: 20 64 65 62 75 67 28 6F 70 74 2C 6E 2C 64 31 2C debug(opt,n,d1,
02A540: 64 32 2C 64 33 2C 64 34 2C 64 35 2C 64 36 2C 64 d2,d3,d4,d5,d6,d
02A550: 37 2C 64 38 2C 64 39 2C 64 31 30 2C 64 31 31 2C 7,d8,d9,d10,d11,
02A560: 64 31 32 29 0D 0A 0D 0A 20 20 20 20 20 20 20 20 d12)....
02A570: 54 68 65 20 66 69 72 73 74 20 70 61 72 61 6D 65 The first parame
02A580: 74 65 72 20 73 70 65 63 69 66 69 65 73 20 74 68 ter specifies th
02A590: 65 20 72 65 71 75 69 72 65 64 20 6F 70 74 69 6F e required optio
02A5A0: 6E 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 n.....
02A5B0: 20 20 20 20 20 20 20 30 20 3A 20 70 61 75 73 65 0 : pause
02A5C0: 20 65 78 65 63 75 74 69 6F 6E 2C 20 77 61 69 74 execution, wait
02A5D0: 20 66 6F 72 20 61 20 6B 65 79 20 74 6F 20 62 65 for a key to be
02A5E0: 20 70 72 65 73 73 65 64 0D 0A 20 20 20 20 20 20 pressed..
02A5F0: 20 20 20 20 20 20 20 20 20 20 20 31 20 3A 20 64 1 : d
02A600: 69 73 70 6C 61 79 20 76 61 6C 75 65 73 20 6F 66 isplay values of
02A610: 20 76 61 72 69 61 62 6C 65 73 20 69 6E 20 64 65 variables in de
02A620: 63 69 6D 61 6C 0D 0A 20 20 20 20 20 20 20 20 20 cimal..
02A630: 20 20 20 20 20 20 20 2D 31 20 3A 20 64 69 73 70 -1 : disp
02A640: 6C 61 79 20 6E 61 6D 65 73 20 61 6E 64 20 76 61 lay names and va
02A650: 6C 75 65 73 20 6F 66 20 76 61 72 69 61 62 6C 65 lues of variable
02A660: 73 20 69 6E 20 64 65 63 69 6D 61 6C 0D 0A 20 20 s in decimal..
02A670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32 2
02A680: 20 3A 20 64 69 73 70 6C 61 79 20 76 61 6C 75 65 : display value
02A690: 20 6F 66 20 73 74 72 69 6E 67 73 0D 0A 20 20 20 of strings..
02A6A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2D 32 20 -2
02A6B0: 3A 20 64 69 73 70 6C 61 79 20 6E 61 6D 65 20 61 : display name a
02A6C0: 6E 64 20 76 61 6C 75 65 20 6F 66 20 73 74 72 69 nd value of stri
02A6D0: 6E 67 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ngs..
02A6E0: 20 20 20 20 20 20 33 20 3A 20 64 69 73 70 6C 61 3 : displa
02A6F0: 79 20 63 6F 6E 74 65 6E 74 73 20 6F 66 20 76 65 y contents of ve
02A700: 63 74 6F 72 73 0D 0A 20 20 20 20 20 20 20 20 20 ctors..
02A710: 20 20 20 20 20 20 20 2D 33 20 3A 20 64 69 73 70 -3 : disp
02A720: 6C 61 79 20 6E 61 6D 65 20 61 6E 64 20 63 6F 6E lay name and con
02A730: 74 65 6E 74 73 20 6F 66 20 76 65 63 74 6F 72 73 tents of vectors
02A740: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
02A750: 20 20 20 34 20 3A 20 64 69 73 70 6C 61 79 20 76 4 : display v
02A760: 61 6C 75 65 73 20 6F 66 20 76 61 72 69 61 62 6C alues of variabl
02A770: 65 73 20 69 6E 20 68 65 78 61 64 65 63 69 6D 61 es in hexadecima
02A780: 6C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 l..
02A790: 20 20 20 2D 34 20 3A 20 64 69 73 70 6C 61 79 20 -4 : display
02A7A0: 6E 61 6D 65 73 20 61 6E 64 20 76 61 6C 75 65 73 names and values
02A7B0: 20 6F 66 20 76 61 72 69 61 62 6C 65 73 20 69 6E of variables in
02A7C0: 20 68 65 78 61 64 65 63 69 6D 61 6C 0D 0A 0D 0A hexadecimal....
02A7D0: 0D 0A 20 20 20 20 20 20 20 20 54 68 65 20 73 65 .. The se
02A7E0: 63 6F 6E 64 20 70 61 72 61 6D 65 74 65 72 20 28 cond parameter (
02A7F0: 6E 29 20 69 73 20 74 68 65 20 6E 75 6D 62 65 72 n) is the number
02A800: 20 6F 66 20 76 61 72 69 61 62 6C 65 73 20 6F 72 of variables or
02A810: 20 73 74 72 69 6E 67 73 0D 0A 20 20 20 20 20 20 strings..
02A820: 20 20 6F 72 20 76 65 63 74 6F 72 73 20 74 6F 20 or vectors to
02A830: 62 65 20 64 69 73 70 6C 61 79 65 64 2E 0D 0A 0D be displayed....
02A840: 0A 20 20 20 20 20 20 20 20 49 66 20 6F 70 74 20 . If opt
02A850: 69 73 20 70 6F 73 69 74 69 76 65 20 74 68 65 72 is positive ther
02A860: 65 20 66 6F 6C 6C 6F 77 73 20 61 20 6C 69 73 74 e follows a list
02A870: 20 6F 66 20 69 64 65 6E 74 69 66 69 65 72 73 2E of identifiers.
02A880: 0D 0A 20 20 20 20 20 20 20 20 49 66 20 6F 70 74 .. If opt
02A890: 20 69 73 20 6E 65 67 61 74 69 76 65 20 74 68 65 is negative the
02A8A0: 72 65 20 66 6F 6C 6C 6F 77 73 20 61 20 6C 69 73 re follows a lis
02A8B0: 74 20 6F 66 20 70 61 69 72 73 20 2D 20 61 20 73 t of pairs - a s
02A8C0: 74 72 69 6E 67 0D 0A 20 20 20 20 20 20 20 20 67 tring.. g
02A8D0: 69 76 69 6E 67 20 74 68 65 20 69 64 65 6E 74 69 iving the identi
02A8E0: 66 69 65 72 20 6E 61 6D 65 20 61 6E 64 20 74 68 fier name and th
02A8F0: 65 20 69 64 65 6E 74 69 66 69 65 72 2E 0D 0A 0D e identifier....
02A900: 0A 20 20 20 20 20 20 20 20 46 6F 72 20 6F 70 74 . For opt
02A910: 69 6F 6E 73 20 33 20 61 6E 64 20 2D 33 20 65 61 ions 3 and -3 ea
02A920: 63 68 20 69 64 65 6E 74 69 66 69 65 72 20 69 73 ch identifier is
02A930: 20 66 6F 6C 6C 6F 77 65 64 20 62 79 20 74 68 65 followed by the
02A940: 20 6C 65 6E 67 74 68 20 6F 66 0D 0A 20 20 20 20 length of..
02A950: 20 20 20 20 74 68 65 20 76 65 63 74 6F 72 2C 20 the vector,
02A960: 74 68 61 74 20 69 73 20 74 68 65 20 6E 75 6D 62 that is the numb
02A970: 65 72 20 6F 66 20 62 79 74 65 73 20 74 6F 20 64 er of bytes to d
02A980: 69 73 70 6C 61 79 2E 0D 0A 0D 0A 20 20 20 20 20 isplay.....
02A990: 20 20 20 45 78 61 6D 70 6C 65 73 3A 0D 0A 20 20 Examples:..
02A9A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02A9B0: 20 20 20 20 20 20 64 65 62 75 67 28 31 2C 33 2C debug(1,3,
02A9C0: 76 61 72 31 2C 76 61 72 32 2C 76 61 72 33 29 0D var1,var2,var3).
02A9D0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
02A9E0: 20 20 20 20 20 20 20 20 20 64 65 62 75 67 28 2D debug(-
02A9F0: 31 2C 33 2C 22 76 61 72 31 22 2C 76 61 72 31 2C 1,3,"var1",var1,
02AA00: 22 76 61 72 32 22 2C 76 61 72 32 2C 22 76 61 72 "var2",var2,"var
02AA10: 33 22 2C 76 61 72 33 29 0D 0A 20 20 20 20 20 20 3",var3)..
02AA20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02AA30: 20 20 64 65 62 75 67 28 32 2C 31 2C 73 74 72 29 debug(2,1,str)
02AA40: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
02AA50: 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 28 debug(
02AA60: 2D 32 2C 32 2C 22 73 74 72 31 22 2C 73 74 72 31 -2,2,"str1",str1
02AA70: 2C 22 73 74 72 32 22 2C 73 74 72 32 29 0D 0A 20 ,"str2",str2)..
02AA80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02AA90: 20 20 20 20 20 20 20 64 65 62 75 67 28 33 2C 31 debug(3,1
02AAA0: 2C 76 65 63 74 6F 72 2C 33 32 29 0D 0A 20 20 20 ,vector,32)..
02AAB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02AAC0: 20 20 20 20 20 64 65 62 75 67 28 2D 33 2C 31 2C debug(-3,1,
02AAD0: 22 76 65 63 74 6F 72 22 2C 76 65 63 74 6F 72 2C "vector",vector,
02AAE0: 33 32 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 32)..
02AAF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 deb
02AB00: 75 67 28 34 2C 32 2C 68 65 78 31 2C 68 65 78 32 ug(4,2,hex1,hex2
02AB10: 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 )..
02AB20: 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 debug
02AB30: 28 2D 34 2C 33 2C 22 68 65 78 31 22 2C 68 65 78 (-4,3,"hex1",hex
02AB40: 31 2C 22 68 65 78 32 22 2C 68 65 78 32 2C 22 68 1,"hex2",hex2,"h
02AB50: 65 78 33 22 2C 68 65 78 33 29 0D 0A 2A 2F 0D 0A ex3",hex3)..*/..
02AB60: 0D 0A 0D 0A 41 4E 44 20 64 65 62 75 67 28 6F 70 ....AND debug(op
02AB70: 74 2C 6E 2C 64 31 2C 64 32 2C 64 33 2C 64 34 2C t,n,d1,d2,d3,d4,
02AB80: 64 35 2C 64 36 2C 64 37 2C 64 38 2C 64 39 2C 64 d5,d6,d7,d8,d9,d
02AB90: 31 30 2C 64 31 31 2C 64 31 32 29 20 62 65 0D 0A 10,d11,d12) be..
02ABA0: 0D 0A 24 28 20 20 20 20 20 20 4D 41 4E 49 46 45 ..$( MANIFE
02ABB0: 53 54 20 24 28 20 65 73 63 61 70 65 3D 23 78 46 ST $( escape=#xF
02ABC0: 43 20 3B 20 73 74 6F 70 3D 33 20 24 29 0D 0A 20 C ; stop=3 $)..
02ABD0: 20 20 20 20 20 20 20 4C 45 54 20 70 61 72 6D 2C LET parm,
02ABE0: 20 63 68 2C 20 6C 65 6E 20 3D 20 40 64 31 2C 20 ch, len = @d1,
02ABF0: 3F 2C 20 3F 0D 0A 20 20 20 20 20 20 20 20 4C 45 ?, ?.. LE
02AC00: 54 20 77 72 6E 75 6D 2C 20 77 72 77 69 64 20 3D T wrnum, wrwid =
02AC10: 20 77 72 69 74 65 64 2C 20 30 0D 0A 20 20 20 20 writed, 0..
02AC20: 20 20 20 20 53 57 49 54 43 48 4F 4E 20 28 6F 70 SWITCHON (op
02AC30: 74 3E 30 20 2D 3E 20 6F 70 74 2C 20 2D 6F 70 74 t>0 -> opt, -opt
02AC40: 29 20 49 4E 54 4F 0D 0A 20 20 20 20 20 20 20 20 ) INTO..
02AC50: 24 28 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 $(..
02AC60: 20 20 20 20 43 41 53 45 20 31 20 3A 20 77 72 69 CASE 1 : wri
02AC70: 74 65 73 28 22 2A 6E 42 43 50 4C 20 44 65 62 75 tes("*nBCPL Debu
02AC80: 67 2E 20 56 61 72 69 61 62 6C 65 20 76 61 6C 75 g. Variable valu
02AC90: 65 73 3A 20 22 29 0D 0A 20 20 20 20 20 20 20 20 es: ")..
02ACA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02ACB0: 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 20 ENDCASE..
02ACC0: 20 20 20 20 20 20 20 20 20 20 43 41 53 45 20 32 CASE 2
02ACD0: 20 3A 20 77 72 69 74 65 73 28 22 2A 6E 42 43 50 : writes("*nBCP
02ACE0: 4C 20 44 65 62 75 67 2E 20 53 74 72 69 6E 67 20 L Debug. String
02ACF0: 63 6F 6E 74 65 6E 74 73 3A 20 22 29 0D 0A 20 20 contents: ")..
02AD00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
02AD10: 24 00 00 00 02 09 50 E5 24 00 C1 02 00 00 00 02 $.....P.$.......
02AD20: 24 00 C2 02 00 00 00 02 24 00 C3 02 00 00 00 02 $.......$.......
02AD30: 24 00 C4 02 00 00 00 02 24 00 C5 02 00 00 00 02 $.......$.......
02AD40: 24 00 C6 02 00 00 00 02 24 00 C7 02 00 00 00 02 $.......$.......
02AD50: 24 00 C8 02 00 00 00 02 24 00 C9 02 00 00 00 02 $.......$.......
02AD60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AD70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AD80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AD90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02ADA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02ADB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02ADC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02ADD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02ADE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02ADF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AE00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02AE10: 20 20 20 20 20 20 20 45 4E 44 43 41 53 45 0D 0A ENDCASE..
02AE20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02AE30: 43 41 53 45 20 33 20 3A 20 77 72 69 74 65 73 28 CASE 3 : writes(
02AE40: 22 2A 6E 42 43 50 4C 20 44 65 62 75 67 2E 20 56 "*nBCPL Debug. V
02AE50: 65 63 74 6F 72 20 63 6F 6E 74 65 6E 74 73 3A 20 ector contents:
02AE60: 22 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ")..
02AE70: 20 20 20 20 20 20 20 20 20 20 20 20 20 45 4E 44 END
02AE80: 43 41 53 45 0D 0A 20 20 20 20 20 20 20 20 20 20 CASE..
02AE90: 20 20 20 20 20 20 43 41 53 45 20 34 20 3A 20 77 CASE 4 : w
02AEA0: 72 69 74 65 73 28 22 2A 6E 42 43 50 4C 20 44 65 rites("*nBCPL De
02AEB0: 62 75 67 2E 20 56 61 72 69 61 62 6C 65 20 76 61 bug. Variable va
02AEC0: 6C 75 65 73 2C 20 68 65 78 3A 20 22 29 0D 0A 20 lues, hex: ")..
02AED0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02AEE0: 20 20 20 20 20 20 20 20 77 72 6E 75 6D 20 3A 3D wrnum :=
02AEF0: 20 77 72 69 74 65 68 65 78 0D 0A 20 20 20 20 20 writehex..
02AF00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02AF10: 20 20 20 20 77 72 77 69 64 20 3A 3D 20 34 0D 0A wrwid := 4..
02AF20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02AF30: 20 20 20 20 20 20 20 20 20 45 4E 44 43 41 53 45 ENDCASE
02AF40: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
02AF50: 20 20 44 45 46 41 55 4C 54 3A 0D 0A 20 20 20 20 DEFAULT:..
02AF60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02AF70: 20 20 20 20 77 72 69 74 65 73 28 22 2A 6E 50 72 writes("*nPr
02AF80: 65 73 73 20 61 20 6B 65 79 20 74 6F 20 72 65 73 ess a key to res
02AF90: 75 6D 65 20 65 78 65 63 75 74 69 6F 6E 3A 20 22 ume execution: "
02AFA0: 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 )..
02AFB0: 20 20 20 20 20 20 20 20 20 20 20 63 68 3A 3D 72 ch:=r
02AFC0: 64 63 68 28 29 20 3B 20 49 46 20 63 68 3D 65 73 dch() ; IF ch=es
02AFD0: 63 61 70 65 20 7C 20 63 68 3D 73 74 6F 70 20 20 cape | ch=stop
02AFE0: 74 68 65 6E 20 46 49 4E 49 53 48 0D 0A 20 20 20 then FINISH..
02AFF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B000: 20 20 20 20 20 6E 65 77 6C 69 6E 65 28 29 0D 0A newline()..
02B010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B020: 20 20 20 20 20 20 20 20 52 45 54 55 52 4E 0D 0A RETURN..
02B030: 20 20 20 20 20 20 20 20 24 29 0D 0A 0D 0A 20 20 $)....
02B040: 20 20 20 20 20 20 6E 65 77 6C 69 6E 65 28 29 0D newline().
02B050: 0A 20 20 20 20 20 20 20 20 49 46 20 6F 70 74 20 . IF opt
02B060: 3E 20 30 20 26 20 6F 70 74 20 4E 45 20 33 20 44 > 0 & opt NE 3 D
02B070: 4F 20 77 72 69 74 65 73 28 22 20 20 22 29 0D 0A O writes(" ")..
02B080: 0D 0A 20 20 20 20 20 20 20 20 46 4F 52 20 69 20 .. FOR i
02B090: 3D 20 31 20 54 4F 20 6E 20 44 4F 0D 0A 20 20 20 = 1 TO n DO..
02B0A0: 20 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 20 $(..
02B0B0: 20 20 20 20 20 53 57 49 54 43 48 4F 4E 20 6F 70 SWITCHON op
02B0C0: 74 20 49 4E 54 4F 0D 0A 20 20 20 20 20 20 20 20 t INTO..
02B0D0: 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 20 20 $(..
02B0E0: 20 20 20 20 20 20 20 20 43 41 53 45 20 31 3A 0D CASE 1:.
02B0F0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
02B100: 20 43 41 53 45 20 34 3A 0D 0A 20 20 20 20 20 20 CASE 4:..
02B110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B120: 20 20 77 72 6E 75 6D 28 21 70 61 72 6D 2C 77 72 wrnum(!parm,wr
02B130: 77 69 64 29 20 3B 20 77 72 63 68 28 27 20 27 29 wid) ; wrch(' ')
02B140: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
02B150: 20 20 20 20 20 20 20 20 20 20 70 61 72 6D 20 3A parm :
02B160: 3D 20 70 61 72 6D 20 2B 20 31 0D 0A 20 20 20 20 = parm + 1..
02B170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B180: 20 20 20 20 45 4E 44 43 41 53 45 0D 0A 0D 0A 20 ENDCASE....
02B190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 C
02B1A0: 41 53 45 20 2D 31 3A 0D 0A 20 20 20 20 20 20 20 ASE -1:..
02B1B0: 20 20 20 20 20 20 20 20 20 43 41 53 45 20 2D 34 CASE -4
02B1C0: 3A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 :..
02B1D0: 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 write
02B1E0: 73 28 22 20 20 22 29 0D 0A 20 20 20 20 20 20 20 s(" ")..
02B1F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B200: 20 77 72 69 74 65 73 28 21 70 61 72 6D 29 0D 0A writes(!parm)..
02B210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B220: 20 20 20 20 20 20 20 20 77 72 69 74 65 73 28 22 writes("
02B230: 20 3D 20 22 29 0D 0A 20 20 20 20 20 20 20 20 20 = ")..
02B240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 w
02B250: 72 6E 75 6D 28 70 61 72 6D 21 31 2C 77 72 77 69 rnum(parm!1,wrwi
02B260: 64 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 d)..
02B270: 20 20 20 20 20 20 20 20 20 20 20 20 6E 65 77 6C newl
02B280: 69 6E 65 28 29 0D 0A 20 20 20 20 20 20 20 20 20 ine()..
02B290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 p
02B2A0: 61 72 6D 20 3A 3D 20 70 61 72 6D 20 2B 20 32 0D arm := parm + 2.
02B2B0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
02B2C0: 20 20 20 20 20 20 20 20 20 45 4E 44 43 41 53 45 ENDCASE
02B2D0: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ....
02B2E0: 20 20 20 20 43 41 53 45 20 32 3A 0D 0A 20 20 20 CASE 2:..
02B2F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B300: 20 20 20 20 20 77 72 63 68 28 27 22 27 29 20 3B wrch('"') ;
02B310: 20 77 72 69 74 65 73 28 21 70 61 72 6D 29 20 3B writes(!parm) ;
02B320: 20 77 72 63 68 28 27 22 27 29 0D 0A 20 20 20 20 wrch('"')..
02B330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B340: 20 20 20 20 77 72 63 68 28 27 20 27 29 0D 0A 20 wrch(' ')..
02B350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B360: 20 20 20 20 20 20 20 70 61 72 6D 20 3A 3D 20 70 parm := p
02B370: 61 72 6D 20 2B 20 31 0D 0A 20 20 20 20 20 20 20 arm + 1..
02B380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B390: 20 45 4E 44 43 41 53 45 0D 0A 0D 0A 20 20 20 20 ENDCASE....
02B3A0: 20 20 20 20 20 20 20 20 20 20 20 20 43 41 53 45 CASE
02B3B0: 20 2D 32 3A 0D 0A 20 20 20 20 20 20 20 20 20 20 -2:..
02B3C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 72 wr
02B3D0: 69 74 65 73 28 22 20 20 22 29 0D 0A 20 20 20 20 ites(" ")..
02B3E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B3F0: 20 20 20 20 77 72 69 74 65 73 28 21 70 61 72 6D writes(!parm
02B400: 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 )..
02B410: 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 write
02B420: 73 28 22 20 3D 20 22 29 20 3B 20 77 72 63 68 28 s(" = ") ; wrch(
02B430: 27 22 27 29 0D 0A 20 20 20 20 20 20 20 20 20 20 '"')..
02B440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 72 wr
02B450: 69 74 65 73 28 70 61 72 6D 21 31 29 20 3B 20 77 ites(parm!1) ; w
02B460: 72 63 68 28 27 22 27 29 0D 0A 20 20 20 20 20 20 rch('"')..
02B470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B480: 20 20 6E 65 77 6C 69 6E 65 28 29 0D 0A 20 20 20 newline()..
02B490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B4A0: 20 20 20 20 20 70 61 72 6D 20 3A 3D 20 70 61 72 parm := par
02B4B0: 6D 20 2B 20 32 0D 0A 20 20 20 20 20 20 20 20 20 m + 2..
02B4C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 E
02B4D0: 4E 44 43 41 53 45 0D 0A 0D 0A 20 20 20 20 20 20 NDCASE....
02B4E0: 20 20 20 20 20 20 20 20 20 20 43 41 53 45 20 33 CASE 3
02B4F0: 3A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 :..
02B500: 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 debug
02B510: 76 65 63 74 6F 72 28 21 70 61 72 6D 2C 70 61 72 vector(!parm,par
02B520: 6D 21 31 29 0D 0A 20 20 20 20 20 20 20 20 20 20 m!1)..
02B530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 pa
02B540: 72 6D 20 3A 3D 20 70 61 72 6D 20 2B 20 32 0D 0A rm := parm + 2..
02B550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B560: 20 20 20 20 20 20 20 20 45 4E 44 43 41 53 45 0D ENDCASE.
02B570: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
02B580: 20 20 20 43 41 53 45 20 2D 33 3A 0D 0A 20 20 20 CASE -3:..
02B590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B5A0: 20 20 20 20 20 77 72 69 74 65 73 28 21 70 61 72 writes(!par
02B5B0: 6D 29 20 3B 20 6E 65 77 6C 69 6E 65 28 29 0D 0A m) ; newline()..
02B5C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B5D0: 20 20 20 20 20 20 20 20 64 65 62 75 67 76 65 63 debugvec
02B5E0: 74 6F 72 28 70 61 72 6D 21 31 2C 70 61 72 6D 21 tor(parm!1,parm!
02B5F0: 32 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 2)..
02B600: 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 6D parm
02B610: 20 3A 3D 20 70 61 72 6D 20 2B 20 33 0D 0A 20 20 := parm + 3..
02B620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B630: 20 20 20 20 20 20 45 4E 44 43 41 53 45 0D 0A 0D ENDCASE...
02B640: 0A 20 20 20 20 20 20 20 20 20 20 20 20 24 29 0D . $).
02B650: 0A 20 20 20 20 20 20 20 20 24 29 0D 0A 20 20 20 . $)..
02B660: 20 20 20 20 20 49 46 20 6F 70 74 20 3E 20 30 20 IF opt > 0
02B670: 26 20 6F 70 74 20 6E 65 20 33 20 44 4F 20 6E 65 & opt ne 3 DO ne
02B680: 77 6C 69 6E 65 28 29 0D 0A 24 29 0D 0A 0D 0A 41 wline()..$)....A
02B690: 4E 44 20 64 65 62 75 67 76 65 63 74 6F 72 28 61 ND debugvector(a
02B6A0: 64 64 72 2C 6C 65 6E 29 20 42 45 0D 0A 0D 0A 24 ddr,len) BE....$
02B6B0: 28 20 20 20 20 20 20 4C 45 54 20 61 73 63 69 69 ( LET ascii
02B6C0: 20 3D 20 76 65 63 20 31 36 0D 0A 20 20 20 20 20 = vec 16..
02B6D0: 20 20 20 4C 45 54 20 61 73 63 70 74 72 2C 20 6C LET ascptr, l
02B6E0: 69 6E 65 2C 20 63 68 20 3D 20 31 2C 20 30 2C 20 ine, ch = 1, 0,
02B6F0: 30 0D 0A 20 20 20 20 20 20 20 20 61 73 63 69 69 0.. ascii
02B700: 25 30 20 3A 3D 20 31 36 0D 0A 20 20 20 20 20 20 %0 := 16..
02B710: 20 20 46 4F 52 20 6C 69 6E 65 20 3D 20 30 20 54 FOR line = 0 T
02B720: 4F 20 28 6C 65 6E 2D 31 29 2F 31 36 20 44 4F 0D O (len-1)/16 DO.
02B730: 0A 20 20 20 20 20 20 20 20 24 28 20 20 20 20 20 . $(
02B740: 20 77 72 69 74 65 73 28 22 20 20 22 29 0D 0A 20 writes(" ")..
02B750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 w
02B760: 72 69 74 65 68 65 78 28 32 2A 61 64 64 72 2B 6C ritehex(2*addr+l
02B770: 69 6E 65 2A 31 36 2C 34 29 20 20 20 20 20 20 2F ine*16,4) /
02B780: 2F 20 6E 6F 74 65 20 32 2A 61 64 64 72 20 69 73 / note 2*addr is
02B790: 20 70 68 79 73 69 63 61 6C 20 61 64 64 72 0D 0A physical addr..
02B7A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B7B0: 77 72 69 74 65 73 28 22 20 20 22 29 0D 0A 20 20 writes(" ")..
02B7C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 73 as
02B7D0: 63 70 74 72 20 3A 3D 20 31 0D 0A 20 20 20 20 20 cptr := 1..
02B7E0: 20 20 20 20 20 20 20 20 20 20 20 46 4F 52 20 62 FOR b
02B7F0: 79 74 65 20 3D 20 30 20 54 4F 20 31 35 20 44 4F yte = 0 TO 15 DO
02B800: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
02B810: 20 20 24 28 20 20 20 20 20 20 63 68 20 3A 3D 20 $( ch :=
02B820: 61 64 64 72 25 28 6C 69 6E 65 2A 31 36 2B 62 79 addr%(line*16+by
02B830: 74 65 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 te)..
02B840: 20 20 20 20 20 20 20 20 20 20 20 20 20 77 72 69 wri
02B850: 74 65 68 65 78 28 63 68 2C 32 29 0D 0A 20 20 20 tehex(ch,2)..
02B860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B870: 20 20 20 20 20 77 72 63 68 28 27 20 27 29 0D 0A wrch(' ')..
02B880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B890: 20 20 20 20 20 20 20 20 49 46 20 62 79 74 65 3D IF byte=
02B8A0: 37 20 74 68 65 6E 20 77 72 63 68 28 27 20 27 29 7 then wrch(' ')
02B8B0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
02B8C0: 20 20 20 20 20 20 20 20 20 20 61 73 63 69 69 25 ascii%
02B8D0: 61 73 63 70 74 72 20 3A 3D 20 28 33 31 3C 63 68 ascptr := (31<ch
02B8E0: 3C 31 32 38 29 20 2D 3E 20 63 68 20 2C 20 27 2E <128) -> ch , '.
02B8F0: 27 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 '..
02B900: 20 20 20 20 20 20 20 20 20 20 20 61 73 63 70 74 ascpt
02B910: 72 20 3A 3D 20 61 73 63 70 74 72 20 2B 20 31 0D r := ascptr + 1.
02B920: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
02B930: 20 24 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 $)..
02B940: 20 20 20 20 20 77 72 63 68 28 27 20 27 29 0D 0A wrch(' ')..
02B950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B960: 77 72 69 74 65 73 28 61 73 63 69 69 29 0D 0A 20 writes(ascii)..
02B970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6E n
02B980: 65 77 6C 69 6E 65 28 29 0D 0A 20 20 20 20 20 20 ewline()..
02B990: 20 20 24 29 0D 0A 24 29 0D 0A 1A 31 30 2F 31 39 $)..$)...10/19
02B9A0: 38 36 20 2A 2F 0D 0A 0D 0A 2F 2A 20 20 20 20 20 86 */..../*
02B9B0: 20 64 65 62 75 67 28 6F 70 74 2C 6E 2C 64 31 2C debug(opt,n,d1,
02B9C0: 64 32 2C 64 33 2C 64 34 2C 64 35 2C 64 36 2C 64 d2,d3,d4,d5,d6,d
02B9D0: 37 2C 64 38 2C 64 39 2C 64 31 30 2C 64 31 31 2C 7,d8,d9,d10,d11,
02B9E0: 64 31 32 29 0D 0A 0D 0A 20 20 20 20 20 20 20 20 d12)....
02B9F0: 54 68 65 20 66 69 72 73 74 20 70 61 72 61 6D 65 The first parame
02BA00: 31 34 20 4E 20 53 20 22 5E 27 23 46 30 27 22 20 14 N S "^'#F0'"
02BA10: 63 75 72 73 6F 72 20 75 70 20 20 20 20 20 20 20 cursor up
02BA20: 20 20 20 20 4B 65 79 20 64 65 66 69 6E 69 74 69 Key definiti
02BA30: 6F 6E 73 20 66 6F 72 20 42 43 50 4C 20 65 64 69 ons for BCPL edi
02BA40: 74 6F 72 20 6F 6E 20 50 43 57 0D 0A 31 34 20 41 tor on PCW..14 A
02BA50: 20 22 5E 27 23 46 38 27 22 20 61 6C 74 2D 63 75 "^'#F8'" alt-cu
02BA60: 72 73 6F 72 20 75 70 0D 0A 36 20 4E 20 53 20 22 rsor up..6 N S "
02BA70: 5E 27 23 46 33 27 22 20 63 75 72 73 6F 72 20 72 ^'#F3'" cursor r
02BA80: 69 67 68 74 0D 0A 36 20 41 20 22 5E 27 23 46 42 ight..6 A "^'#FB
02BA90: 27 22 20 20 61 6C 74 2D 63 75 72 73 6F 72 20 72 '" alt-cursor r
02BAA0: 69 67 68 74 0D 0A 37 39 20 4E 20 53 20 22 5E 27 ight..79 N S "^'
02BAB0: 23 46 31 27 22 20 63 75 72 73 6F 72 20 64 6F 77 #F1'" cursor dow
02BAC0: 6E 0D 0A 37 39 20 41 20 22 5E 27 23 46 39 27 22 n..79 A "^'#F9'"
02BAD0: 20 61 6C 74 2D 63 75 72 73 6F 72 20 64 6F 77 6E alt-cursor down
02BAE0: 0D 0A 31 35 20 4E 20 53 20 22 5E 27 23 46 32 27 ..15 N S "^'#F2'
02BAF0: 22 20 63 75 72 73 6F 72 20 6C 65 66 74 0D 0A 31 " cursor left..1
02BB00: 35 20 41 20 22 5E 27 23 46 41 27 22 20 61 6C 74 5 A "^'#FA'" alt
02BB10: 2D 63 75 72 73 6F 72 20 6C 65 66 74 0D 0A 36 36 -cursor left..66
02BB20: 20 4E 20 22 5E 27 23 46 43 27 22 20 73 74 6F 70 N "^'#FC'" stop
02BB30: 0D 0A 32 36 20 41 20 22 5E 27 32 37 27 22 20 61 ..26 A "^'27'" a
02BB40: 6C 74 2D 5B 0D 0A 31 37 20 41 20 22 5E 27 32 39 lt-[..17 A "^'29
02BB50: 27 22 20 61 6C 74 2D 5D 0D 0A 0D 0A 1A 46 42 27 '" alt-].....FB'
02BB60: 22 20 20 61 6C 74 2D 63 75 72 73 6F 72 20 72 69 " alt-cursor ri
02BB70: 67 68 74 0D 0A 37 39 20 4E 20 53 20 22 5E 27 23 ght..79 N S "^'#
02BB80: 65 77 6C 69 6E 65 28 29 0D 0A 20 20 20 20 20 20 ewline()..
02BB90: 20 20 24 29 0D 0A 24 29 0D 0A 1A 31 30 2F 31 39 $)..$)...10/19
02BBA0: 38 36 20 2A 2F 0D 0A 0D 0A 2F 2A 20 20 20 20 20 86 */..../*
02BBB0: 20 64 65 62 75 67 28 6F 70 74 2C 6E 2C 64 31 2C debug(opt,n,d1,
02BBC0: 64 32 2C 64 33 2C 64 34 2C 64 35 2C 64 36 2C 64 d2,d3,d4,d5,d6,d
02BBD0: 37 2C 64 38 2C 64 39 2C 64 31 30 2C 64 31 31 2C 7,d8,d9,d10,d11,
02BBE0: 64 31 32 29 0D 0A 0D 0A 20 20 20 20 20 20 20 20 d12)....
02BBF0: 54 68 65 20 66 69 72 73 74 20 70 61 72 61 6D 65 The first parame
02BC00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BC90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BCA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BCB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BCC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BCD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BCE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BCF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BD90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BDA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BDB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BDC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BDD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BDE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BDF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02BE00: 0D 0A 2F 2A 20 54 68 69 73 20 69 73 20 61 20 42 ../* This is a B
02BE10: 43 50 4C 20 62 65 61 75 74 69 66 69 65 72 2E 20 CPL beautifier.
02BE20: 49 74 20 77 69 6C 6C 20 74 75 72 6E 20 61 6C 6C It will turn all
02BE30: 20 6B 65 79 77 6F 72 64 73 20 69 6E 74 6F 20 75 keywords into u
02BE40: 70 70 65 72 20 63 61 73 65 20 61 6E 64 0D 0A 20 pper case and..
02BE50: 20 20 61 6C 6C 20 69 64 65 6E 74 69 66 69 65 72 all identifier
02BE60: 73 20 69 6E 74 6F 20 6C 6F 77 65 72 20 63 61 73 s into lower cas
02BE70: 65 20 2A 2F 0D 0A 0D 0A 2F 2F 20 6D 6F 64 69 66 e */....// modif
02BE80: 69 65 64 20 33 30 2F 31 30 2F 31 39 38 36 0D 0A ied 30/10/1986..
02BE90: 0D 0A 2F 2A 20 72 65 61 64 20 69 6E 20 74 68 65 ../* read in the
02BEA0: 20 73 74 61 6E 64 61 72 64 20 6C 69 62 72 61 72 standard librar
02BEB0: 79 20 68 65 61 64 65 72 20 2A 2F 0D 0A 0D 0A 4F y header */....O
02BEC0: 50 54 49 4F 4E 20 42 2D 0D 0A 0D 0A 47 45 54 20 PTION B-....GET
02BED0: 22 63 6C 69 62 68 64 72 22 0D 0A 0D 0A 4F 50 54 "clibhdr"....OPT
02BEE0: 49 4F 4E 20 42 2B 0D 0A 0D 0A 4D 41 4E 49 46 45 ION B+....MANIFE
02BEF0: 53 54 0D 0A 24 28 0D 0A 20 20 69 6E 64 65 6E 74 ST..$(.. indent
02BF00: 73 69 7A 65 20 3D 20 32 0D 0A 20 20 63 6F 6D 6D size = 2.. comm
02BF10: 65 6E 74 73 20 3D 20 33 35 0D 0A 24 29 0D 0A 0D ents = 35..$)...
02BF20: 0A 0D 0A 47 4C 4F 42 41 4C 0D 0A 24 28 0D 0A 20 ...GLOBAL..$(..
02BF30: 20 6B 65 79 77 6F 72 64 73 3A 20 30 0D 0A 20 20 keywords: 0..
02BF40: 69 6E 70 75 74 3A 20 31 0D 0A 20 20 6F 75 74 70 input: 1.. outp
02BF50: 75 74 3A 20 32 0D 0A 20 20 65 72 72 76 65 63 3A ut: 2.. errvec:
02BF60: 20 33 0D 0A 20 20 65 72 72 6F 72 3A 20 34 0D 0A 3.. error: 4..
02BF70: 20 20 6C 61 73 74 63 68 72 3A 20 35 0D 0A 20 20 lastchr: 5..
02BF80: 6B 65 79 65 6E 64 3A 20 36 0D 0A 24 29 0D 0A 0D keyend: 6..$)...
02BF90: 0A 53 54 41 54 49 43 0D 0A 24 28 0D 0A 20 20 69 .STATIC..$(.. i
02BFA0: 6E 64 65 6E 74 20 3D 20 30 0D 0A 20 20 6E 6C 64 ndent = 0.. nld
02BFB0: 6F 6E 65 20 3D 20 54 52 55 45 0D 0A 20 20 69 64 one = TRUE.. id
02BFC0: 66 6C 61 67 20 3D 20 46 41 4C 53 45 0D 0A 20 20 flag = FALSE..
02BFD0: 63 6F 6C 75 6D 6E 20 3D 20 30 0D 0A 24 29 0D 0A column = 0..$)..
02BFE0: 0D 0A 4C 45 54 20 65 72 72 28 6D 65 73 73 61 67 ..LET err(messag
02BFF0: 65 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 6E e) BE....$(.. n
02C000: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
02C010: 25 00 00 00 02 09 50 E5 25 00 C1 02 00 00 00 02 %.....P.%.......
02C020: 25 00 C2 02 00 00 00 02 25 00 C3 02 00 00 00 02 %.......%.......
02C030: 25 00 C4 02 00 00 00 02 25 00 C5 02 00 00 00 02 %.......%.......
02C040: 25 00 C6 02 00 00 00 02 25 00 C7 02 00 00 00 02 %.......%.......
02C050: 25 00 C8 02 00 00 00 02 25 00 C9 02 00 00 00 02 %.......%.......
02C060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C0A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C0B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C0C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C0D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C0E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C0F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C100: 65 77 6C 69 6E 65 28 29 0D 0A 20 20 77 72 69 74 ewline().. writ
02C110: 65 73 28 6D 65 73 73 61 67 65 29 0D 0A 20 20 6E es(message).. n
02C120: 65 77 6C 69 6E 65 28 29 0D 0A 20 20 6C 6F 6E 67 ewline().. long
02C130: 6A 75 6D 70 28 65 72 72 6F 72 2C 20 65 72 72 76 jump(error, errv
02C140: 65 63 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 ec)..$)......LET
02C150: 20 73 70 61 63 65 28 63 68 61 72 29 20 3D 20 28 space(char) = (
02C160: 20 63 68 61 72 3D 27 20 27 20 7C 20 63 68 61 72 char=' ' | char
02C170: 3D 39 20 29 0D 0A 0D 0A 4C 45 54 20 72 61 77 63 =9 )....LET rawc
02C180: 68 72 28 29 20 3D 20 56 41 4C 4F 46 0D 0A 0D 0A hr() = VALOF....
02C190: 24 28 0D 0A 20 20 4C 45 54 20 74 65 6D 70 20 3D $(.. LET temp =
02C1A0: 20 72 65 61 64 63 68 28 69 6E 70 75 74 29 0D 0A readch(input)..
02C1B0: 20 20 57 48 49 4C 45 20 74 65 6D 70 20 3D 20 31 WHILE temp = 1
02C1C0: 30 20 44 4F 20 74 65 6D 70 20 3A 3D 20 72 65 61 0 DO temp := rea
02C1D0: 64 63 68 28 69 6E 70 75 74 29 0D 0A 20 20 49 46 dch(input).. IF
02C1E0: 20 6C 61 73 74 63 68 72 20 3D 20 65 6E 64 73 74 lastchr = endst
02C1F0: 72 65 61 6D 63 68 20 4C 4F 47 41 4E 44 20 74 65 reamch LOGAND te
02C200: 6D 70 20 3D 20 65 6E 64 73 74 72 65 61 6D 63 68 mp = endstreamch
02C210: 20 54 48 45 4E 20 65 72 72 28 22 55 6E 65 78 70 THEN err("Unexp
02C220: 65 63 74 65 64 20 45 4F 46 22 29 0D 0A 20 20 6C ected EOF").. l
02C230: 61 73 74 63 68 72 20 3A 3D 20 74 65 6D 70 0D 0A astchr := temp..
02C240: 20 20 52 45 53 55 4C 54 49 53 20 6C 61 73 74 63 RESULTIS lastc
02C250: 68 72 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 hr..$)......LET
02C260: 67 65 74 63 68 72 28 29 20 3D 20 56 41 4C 4F 46 getchr() = VALOF
02C270: 0D 0A 0D 0A 24 28 0D 0A 20 20 72 61 77 63 68 72 ....$(.. rawchr
02C280: 28 29 0D 0A 20 20 49 46 20 27 41 27 20 3C 3D 20 ().. IF 'A' <=
02C290: 6C 61 73 74 63 68 72 20 3C 3D 20 27 5A 27 20 54 lastchr <= 'Z' T
02C2A0: 48 45 4E 20 6C 61 73 74 63 68 72 20 3A 3D 20 6C HEN lastchr := l
02C2B0: 61 73 74 63 68 72 20 2B 20 33 32 0D 0A 20 20 52 astchr + 32.. R
02C2C0: 45 53 55 4C 54 49 53 20 6C 61 73 74 63 68 72 0D ESULTIS lastchr.
02C2D0: 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 6F 75 74 .$)......LET out
02C2E0: 28 63 68 61 72 61 63 74 65 72 29 20 42 45 0D 0A (character) BE..
02C2F0: 0D 0A 24 28 0D 0A 20 20 55 4E 4C 45 53 53 20 6E ..$(.. UNLESS n
02C300: 6C 64 6F 6E 65 20 4C 4F 47 4F 52 20 63 68 61 72 ldone LOGOR char
02C310: 61 63 74 65 72 20 3D 20 31 33 20 54 48 45 4E 0D acter = 13 THEN.
02C320: 0A 20 20 24 28 0D 0A 20 20 20 20 6E 6C 64 6F 6E . $(.. nldon
02C330: 65 20 3A 3D 20 54 52 55 45 0D 0A 20 20 20 20 46 e := TRUE.. F
02C340: 4F 52 20 73 70 61 63 65 20 3D 20 31 20 54 4F 20 OR space = 1 TO
02C350: 69 6E 64 65 6E 74 20 6F 75 74 28 27 20 27 29 0D indent out(' ').
02C360: 0A 20 20 24 29 0D 0A 20 20 54 45 53 54 20 63 68 . $).. TEST ch
02C370: 61 72 61 63 74 65 72 20 3D 20 31 33 20 54 48 45 aracter = 13 THE
02C380: 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 6E 65 77 N.. $(.. new
02C390: 6C 69 6E 65 28 29 0D 0A 20 20 20 20 77 72 69 74 line().. writ
02C3A0: 65 63 68 28 31 33 2C 6F 75 74 70 75 74 29 0D 0A ech(13,output)..
02C3B0: 20 20 20 20 77 72 69 74 65 63 68 28 31 30 2C 6F writech(10,o
02C3C0: 75 74 70 75 74 29 0D 0A 0D 0A 20 20 20 20 6E 6C utput).... nl
02C3D0: 64 6F 6E 65 20 3A 3D 20 46 41 4C 53 45 0D 0A 20 done := FALSE..
02C3E0: 20 20 20 69 64 66 6C 61 67 20 3A 3D 20 46 41 4C idflag := FAL
02C3F0: 53 45 0D 0A 20 20 20 20 63 6F 6C 75 6D 6E 20 3A SE.. column :
02C400: 3D 20 30 0D 0A 20 20 24 29 0D 0A 20 20 45 4C 53 = 0.. $).. ELS
02C410: 45 0D 0A 20 20 24 28 0D 0A 20 20 20 20 63 6F 6C E.. $(.. col
02C420: 75 6D 6E 20 3A 3D 20 63 6F 6C 75 6D 6E 20 2B 20 umn := column +
02C430: 31 0D 0A 20 20 20 20 77 72 63 68 28 63 68 61 72 1.. wrch(char
02C440: 61 63 74 65 72 29 0D 0A 20 20 20 20 77 72 69 74 acter).. writ
02C450: 65 63 68 28 63 68 61 72 61 63 74 65 72 2C 6F 75 ech(character,ou
02C460: 74 70 75 74 29 0D 0A 20 20 24 29 0D 0A 24 29 0D tput).. $)..$).
02C470: 0A 0D 0A 0D 0A 4C 45 54 20 68 65 78 76 61 6C 28 .....LET hexval(
02C480: 63 68 61 72 29 20 3D 20 56 41 4C 4F 46 0D 0A 0D char) = VALOF...
02C490: 0A 24 28 0D 0A 20 20 54 45 53 54 20 27 30 27 20 .$(.. TEST '0'
02C4A0: 3C 3D 20 63 68 61 72 20 3C 3D 20 27 39 27 20 54 <= char <= '9' T
02C4B0: 48 45 4E 20 52 45 53 55 4C 54 49 53 20 63 68 61 HEN RESULTIS cha
02C4C0: 72 20 2D 20 27 30 27 0D 0A 20 20 45 4C 53 45 20 r - '0'.. ELSE
02C4D0: 54 45 53 54 20 27 61 27 20 3C 3D 20 63 68 61 72 TEST 'a' <= char
02C4E0: 20 3C 3D 20 27 66 27 20 54 48 45 4E 20 52 45 53 <= 'f' THEN RES
02C4F0: 55 4C 54 49 53 20 63 68 61 72 20 2D 20 27 61 27 ULTIS char - 'a'
02C500: 20 2B 20 31 30 0D 0A 20 20 45 4C 53 45 20 52 45 + 10.. ELSE RE
02C510: 53 55 4C 54 49 53 20 31 30 30 0D 0A 24 29 0D 0A SULTIS 100..$)..
02C520: 0D 0A 0D 0A 4C 45 54 20 72 65 61 64 6E 75 6D 28 ....LET readnum(
02C530: 62 61 73 65 2C 20 66 69 72 73 74 29 20 42 45 0D base, first) BE.
02C540: 0A 0D 0A 24 28 0D 0A 20 20 57 48 49 4C 45 20 68 ...$(.. WHILE h
02C550: 65 78 76 61 6C 28 66 69 72 73 74 29 20 3C 20 62 exval(first) < b
02C560: 61 73 65 20 44 4F 0D 0A 20 20 24 28 0D 0A 20 20 ase DO.. $(..
02C570: 20 20 6F 75 74 28 68 65 78 76 61 6C 28 66 69 72 out(hexval(fir
02C580: 73 74 29 20 3C 20 31 30 20 2D 3E 20 66 69 72 73 st) < 10 -> firs
02C590: 74 2C 20 66 69 72 73 74 20 2D 20 33 32 29 0D 0A t, first - 32)..
02C5A0: 20 20 20 20 66 69 72 73 74 20 3A 3D 20 67 65 74 first := get
02C5B0: 63 68 72 28 29 0D 0A 20 20 24 29 0D 0A 20 20 69 chr().. $).. i
02C5C0: 64 66 6C 61 67 20 3A 3D 20 32 0D 0A 24 29 0D 0A dflag := 2..$)..
02C5D0: 0D 0A 0D 0A 4C 45 54 20 73 74 72 69 6E 67 73 61 ....LET stringsa
02C5E0: 6D 65 28 73 74 72 69 6E 67 31 2C 20 73 74 72 69 me(string1, stri
02C5F0: 6E 67 32 29 20 3D 20 56 41 4C 4F 46 0D 0A 0D 0A ng2) = VALOF....
02C600: 24 28 0D 0A 20 20 49 46 20 21 73 74 72 69 6E 67 $(.. IF !string
02C610: 31 20 4E 45 20 21 73 74 72 69 6E 67 32 20 54 48 1 NE !string2 TH
02C620: 45 4E 20 52 45 53 55 4C 54 49 53 20 46 41 4C 53 EN RESULTIS FALS
02C630: 45 0D 0A 20 20 46 4F 52 20 70 74 72 20 3D 20 31 E.. FOR ptr = 1
02C640: 20 54 4F 20 21 73 74 72 69 6E 67 31 0D 0A 20 20 TO !string1..
02C650: 49 46 20 73 74 72 69 6E 67 31 21 70 74 72 20 4E IF string1!ptr N
02C660: 45 20 73 74 72 69 6E 67 32 21 70 74 72 20 54 48 E string2!ptr TH
02C670: 45 4E 20 52 45 53 55 4C 54 49 53 20 46 41 4C 53 EN RESULTIS FALS
02C680: 45 0D 0A 20 20 52 45 53 55 4C 54 49 53 20 54 52 E.. RESULTIS TR
02C690: 55 45 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 UE..$)......LET
02C6A0: 73 79 73 77 6F 72 64 28 77 6F 72 64 29 20 3D 20 sysword(word) =
02C6B0: 56 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 4C VALOF....$(.. L
02C6C0: 45 54 20 73 74 61 72 74 20 3D 20 6B 65 79 77 6F ET start = keywo
02C6D0: 72 64 73 0D 0A 20 20 57 48 49 4C 45 20 73 74 61 rds.. WHILE sta
02C6E0: 72 74 20 3C 20 6B 65 79 65 6E 64 20 44 4F 0D 0A rt < keyend DO..
02C6F0: 20 20 24 28 0D 0A 20 20 20 20 49 46 20 73 74 72 $(.. IF str
02C700: 69 6E 67 73 61 6D 65 28 73 74 61 72 74 20 2B 20 ingsame(start +
02C710: 31 2C 20 77 6F 72 64 29 20 54 48 45 4E 20 52 45 1, word) THEN RE
02C720: 53 55 4C 54 49 53 20 73 74 61 72 74 0D 0A 20 20 SULTIS start..
02C730: 20 20 73 74 61 72 74 20 3A 3D 20 73 74 61 72 74 start := start
02C740: 20 2B 20 73 74 61 72 74 21 31 20 2B 20 32 0D 0A + start!1 + 2..
02C750: 20 20 24 29 0D 0A 20 20 52 45 53 55 4C 54 49 53 $).. RESULTIS
02C760: 20 46 41 4C 53 45 0D 0A 24 29 0D 0A 0D 0A 0D 0A FALSE..$)......
02C770: 4C 45 54 20 69 64 73 70 61 63 65 28 29 20 42 45 LET idspace() BE
02C780: 0D 0A 0D 0A 24 28 0D 0A 20 20 49 46 20 69 64 66 ....$(.. IF idf
02C790: 6C 61 67 20 54 48 45 4E 20 6F 75 74 28 27 20 27 lag THEN out(' '
02C7A0: 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 77 )..$)......LET w
02C7B0: 72 69 74 65 77 6F 72 64 28 77 6F 72 64 29 20 42 riteword(word) B
02C7C0: 45 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 70 E....$(.. LET p
02C7D0: 74 72 2C 20 69 64 66 20 3D 20 73 79 73 77 6F 72 tr, idf = syswor
02C7E0: 64 28 77 6F 72 64 29 2C 20 31 0D 0A 20 20 54 45 d(word), 1.. TE
02C7F0: 53 54 20 70 74 72 20 54 48 45 4E 0D 0A 20 20 24 ST ptr THEN.. $
02C800: 28 0D 0A 20 20 20 20 49 46 20 21 70 74 72 20 4C (.. IF !ptr L
02C810: 4F 47 4F 52 20 69 64 66 6C 61 67 20 54 48 45 4E OGOR idflag THEN
02C820: 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 20 46 out(' ').. F
02C830: 4F 52 20 63 70 74 72 20 3D 20 31 20 54 4F 20 77 OR cptr = 1 TO w
02C840: 6F 72 64 21 30 20 6F 75 74 28 77 6F 72 64 21 63 ord!0 out(word!c
02C850: 70 74 72 20 2D 20 33 32 29 0D 0A 20 20 20 20 49 ptr - 32).. I
02C860: 46 20 21 70 74 72 20 54 48 45 4E 0D 0A 20 20 20 F !ptr THEN..
02C870: 20 24 28 0D 0A 20 20 20 20 20 20 6F 75 74 28 27 $(.. out('
02C880: 20 27 29 0D 0A 20 20 20 20 20 20 69 64 66 20 3A ').. idf :
02C890: 3D 20 30 0D 0A 20 20 20 20 24 29 0D 0A 20 20 24 = 0.. $).. $
02C8A0: 29 0D 0A 20 20 45 4C 53 45 0D 0A 20 20 24 28 0D ).. ELSE.. $(.
02C8B0: 0A 20 20 20 20 69 64 73 70 61 63 65 28 29 0D 0A . idspace()..
02C8C0: 20 20 20 20 46 4F 52 20 70 74 72 20 3D 20 31 20 FOR ptr = 1
02C8D0: 54 4F 20 77 6F 72 64 21 30 20 44 4F 20 6F 75 74 TO word!0 DO out
02C8E0: 28 77 6F 72 64 21 70 74 72 29 0D 0A 20 20 20 20 (word!ptr)..
02C8F0: 69 64 66 20 3A 3D 20 32 0D 0A 20 20 24 29 0D 0A idf := 2.. $)..
02C900: 20 20 69 64 66 6C 61 67 20 3A 3D 20 69 64 66 0D idflag := idf.
02C910: 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 69 64 65 .$)......LET ide
02C920: 6E 74 28 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 nt() BE....$(..
02C930: 20 4C 45 54 20 77 6F 72 64 62 75 66 66 20 3D 20 LET wordbuff =
02C940: 56 45 43 20 32 30 0D 0A 20 20 4C 45 54 20 77 70 VEC 20.. LET wp
02C950: 74 72 20 3D 20 30 0D 0A 20 20 57 48 49 4C 45 20 tr = 0.. WHILE
02C960: 27 61 27 20 3C 3D 20 6C 61 73 74 63 68 72 20 3C 'a' <= lastchr <
02C970: 3D 20 27 7A 27 20 4C 4F 47 4F 52 20 27 30 27 20 = 'z' LOGOR '0'
02C980: 3C 3D 20 6C 61 73 74 63 68 72 20 3C 3D 20 27 39 <= lastchr <= '9
02C990: 27 20 44 4F 0D 0A 20 20 24 28 0D 0A 20 20 20 20 ' DO.. $(..
02C9A0: 77 70 74 72 20 3A 3D 20 77 70 74 72 20 2B 20 31 wptr := wptr + 1
02C9B0: 0D 0A 20 20 20 20 77 6F 72 64 62 75 66 66 21 77 .. wordbuff!w
02C9C0: 70 74 72 20 3A 3D 20 6C 61 73 74 63 68 72 0D 0A ptr := lastchr..
02C9D0: 20 20 20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 getchr()..
02C9E0: 24 29 0D 0A 20 20 77 6F 72 64 62 75 66 66 21 30 $).. wordbuff!0
02C9F0: 20 3A 3D 20 77 70 74 72 0D 0A 20 20 77 72 69 74 := wptr.. writ
02CA00: 65 77 6F 72 64 28 77 6F 72 64 62 75 66 66 29 0D eword(wordbuff).
02CA10: 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 73 74 72 .$)......LET str
02CA20: 63 68 72 28 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A chr() BE....$(..
02CA30: 20 20 54 45 53 54 20 6C 61 73 74 63 68 72 20 3D TEST lastchr =
02CA40: 20 27 2A 2A 27 20 54 48 45 4E 0D 0A 20 20 24 28 '**' THEN.. $(
02CA50: 0D 0A 20 20 20 20 6F 75 74 28 27 2A 2A 27 29 0D .. out('**').
02CA60: 0A 20 20 20 20 6F 75 74 28 72 61 77 63 68 72 28 . out(rawchr(
02CA70: 29 29 0D 0A 20 20 24 29 0D 0A 20 20 45 4C 53 45 )).. $).. ELSE
02CA80: 20 6F 75 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 out(lastchr)..
02CA90: 20 72 61 77 63 68 72 28 29 0D 0A 24 29 0D 0A 0D rawchr()..$)...
02CAA0: 0A 0D 0A 4C 45 54 20 63 6F 6E 64 6E 6C 28 29 20 ...LET condnl()
02CAB0: 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 49 46 20 6E BE....$(.. IF n
02CAC0: 6C 64 6F 6E 65 20 54 48 45 4E 20 6F 75 74 28 31 ldone THEN out(1
02CAD0: 33 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 4C 45 3)..$)........LE
02CAE0: 54 20 70 75 6E 63 74 75 61 74 65 28 29 20 42 45 T punctuate() BE
02CAF0: 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 74 65 ....$(.. LET te
02CB00: 6D 70 20 3D 20 30 0D 0A 20 20 53 57 49 54 43 48 mp = 0.. SWITCH
02CB10: 4F 4E 20 6C 61 73 74 63 68 72 20 49 4E 54 4F 0D ON lastchr INTO.
02CB20: 0A 20 20 24 28 0D 0A 20 20 20 20 43 41 53 45 20 . $(.. CASE
02CB30: 27 24 27 3A 0D 0A 20 20 20 20 63 6F 6E 64 6E 6C '$':.. condnl
02CB40: 28 29 0D 0A 20 20 20 20 74 65 6D 70 20 3A 3D 20 ().. temp :=
02CB50: 67 65 74 63 68 72 28 29 0D 0A 20 20 20 20 67 65 getchr().. ge
02CB60: 74 63 68 72 28 29 0D 0A 20 20 20 20 54 45 53 54 tchr().. TEST
02CB70: 20 74 65 6D 70 20 3D 20 27 28 27 20 54 48 45 4E temp = '(' THEN
02CB80: 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 .. $(..
02CB90: 6F 75 74 28 27 24 27 29 0D 0A 20 20 20 20 20 20 out('$')..
02CBA0: 6F 75 74 28 27 28 27 29 0D 0A 20 20 20 20 20 20 out('(')..
02CBB0: 69 64 65 6E 74 28 29 0D 0A 20 20 20 20 20 20 69 ident().. i
02CBC0: 6E 64 65 6E 74 20 3A 3D 20 69 6E 64 65 6E 74 20 ndent := indent
02CBD0: 2B 20 69 6E 64 65 6E 74 73 69 7A 65 0D 0A 20 20 + indentsize..
02CBE0: 20 20 24 29 0D 0A 20 20 20 20 45 4C 53 45 0D 0A $).. ELSE..
02CBF0: 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 69 6E $(.. in
02CC00: 64 65 6E 74 20 3A 3D 20 69 6E 64 65 6E 74 20 2D dent := indent -
02CC10: 20 69 6E 64 65 6E 74 73 69 7A 65 0D 0A 20 20 20 indentsize..
02CC20: 20 20 20 6F 75 74 28 27 24 27 29 0D 0A 20 20 20 out('$')..
02CC30: 20 20 20 6F 75 74 28 27 29 27 29 0D 0A 20 20 20 out(')')..
02CC40: 20 20 20 69 64 65 6E 74 28 29 0D 0A 20 20 20 20 ident()..
02CC50: 24 29 0D 0A 20 20 20 20 55 4E 4C 45 53 53 20 6C $).. UNLESS l
02CC60: 61 73 74 63 68 72 20 3D 20 31 33 20 54 48 45 4E astchr = 13 THEN
02CC70: 20 6F 75 74 28 31 33 29 0D 0A 20 20 20 20 45 4E out(13).. EN
02CC80: 44 43 41 53 45 0D 0A 20 20 20 20 43 41 53 45 20 DCASE.. CASE
02CC90: 27 3B 27 3A 0D 0A 20 20 20 20 6F 75 74 28 31 33 ';':.. out(13
02CCA0: 29 0D 0A 20 20 20 20 67 65 74 63 68 72 28 29 0D ).. getchr().
02CCB0: 0A 20 20 20 20 45 4E 44 43 41 53 45 0D 0A 20 20 . ENDCASE..
02CCC0: 20 20 43 41 53 45 20 27 22 27 3A 0D 0A 20 20 20 CASE '"':..
02CCD0: 20 69 64 73 70 61 63 65 28 29 0D 0A 20 20 20 20 idspace()..
02CCE0: 6F 75 74 28 27 22 27 29 0D 0A 20 20 20 20 72 61 out('"').. ra
02CCF0: 77 63 68 72 28 29 0D 0A 20 20 20 20 55 4E 54 49 wchr().. UNTI
02CD00: 4C 20 6C 61 73 74 63 68 72 20 3D 20 27 22 27 20 L lastchr = '"'
02CD10: 73 74 72 63 68 72 28 29 0D 0A 20 20 20 20 6F 75 strchr().. ou
02CD20: 74 28 27 22 27 29 0D 0A 20 20 20 20 67 65 74 63 t('"').. getc
02CD30: 68 72 28 29 0D 0A 20 20 20 20 69 64 66 6C 61 67 hr().. idflag
02CD40: 20 3A 3D 20 32 0D 0A 20 20 20 20 52 45 54 55 52 := 2.. RETUR
02CD50: 4E 0D 0A 20 20 20 20 43 41 53 45 20 27 3C 27 3A N.. CASE '<':
02CD60: 20 43 41 53 45 20 27 3E 27 3A 0D 0A 20 20 20 20 CASE '>':..
02CD70: 74 65 6D 70 20 3A 3D 20 6C 61 73 74 63 68 72 0D temp := lastchr.
02CD80: 0A 20 20 20 20 67 65 74 63 68 72 28 29 0D 0A 20 . getchr()..
02CD90: 20 20 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 out(' ')..
02CDA0: 20 54 45 53 54 20 6C 61 73 74 63 68 72 20 3D 20 TEST lastchr =
02CDB0: 27 3D 27 20 4C 4F 47 4F 52 20 6C 61 73 74 63 68 '=' LOGOR lastch
02CDC0: 72 20 3D 20 74 65 6D 70 20 54 48 45 4E 0D 0A 20 r = temp THEN..
02CDD0: 20 20 20 24 28 0D 0A 20 20 20 20 20 20 6F 75 74 $(.. out
02CDE0: 28 74 65 6D 70 29 0D 0A 20 20 20 20 20 20 6F 75 (temp).. ou
02CDF0: 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 20 20 20 t(lastchr)..
02CE00: 20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 20 20 getchr()..
02CE10: 24 29 0D 0A 20 20 20 20 45 4C 53 45 20 6F 75 74 $).. ELSE out
02CE20: 28 74 65 6D 70 29 0D 0A 20 20 20 20 6F 75 74 28 (temp).. out(
02CE30: 27 20 27 29 0D 0A 20 20 20 20 45 4E 44 43 41 53 ' ').. ENDCAS
02CE40: 45 0D 0A 20 20 20 20 43 41 53 45 20 27 3A 27 3A E.. CASE ':':
02CE50: 0D 0A 20 20 20 20 54 45 53 54 20 67 65 74 63 68 .. TEST getch
02CE60: 72 28 29 20 3D 20 27 3D 27 20 54 48 45 4E 0D 0A r() = '=' THEN..
02CE70: 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 6F 75 $(.. ou
02CE80: 74 28 27 20 27 29 0D 0A 20 20 20 20 20 20 6F 75 t(' ').. ou
02CE90: 74 28 27 3A 27 29 0D 0A 20 20 20 20 20 20 6F 75 t(':').. ou
02CEA0: 74 28 27 3D 27 29 0D 0A 20 20 20 20 20 20 6F 75 t('=').. ou
02CEB0: 74 28 27 20 27 29 0D 0A 20 20 20 20 20 20 67 65 t(' ').. ge
02CEC0: 74 63 68 72 28 29 0D 0A 20 20 20 20 24 29 0D 0A tchr().. $)..
02CED0: 20 20 20 20 45 4C 53 45 0D 0A 20 20 20 20 24 28 ELSE.. $(
02CEE0: 0D 0A 20 20 20 20 20 20 6F 75 74 28 27 3A 27 29 .. out(':')
02CEF0: 0D 0A 20 20 20 20 20 20 69 64 66 6C 61 67 20 3A .. idflag :
02CF00: 3D 20 31 0D 0A 20 20 20 20 20 20 52 45 54 55 52 = 1.. RETUR
02CF10: 4E 0D 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45 N.. $).. E
02CF20: 4E 44 43 41 53 45 0D 0A 20 20 20 20 43 41 53 45 NDCASE.. CASE
02CF30: 20 27 2D 27 3A 0D 0A 20 20 20 20 6F 75 74 28 27 '-':.. out('
02CF40: 20 27 29 0D 0A 20 20 20 20 54 45 53 54 20 67 65 ').. TEST ge
02CF50: 74 63 68 72 28 29 20 3D 20 27 3E 27 20 54 48 45 tchr() = '>' THE
02CF60: 4E 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 20 20 N.. $(..
02CF70: 20 6F 75 74 28 27 2D 27 29 0D 0A 20 20 20 20 20 out('-')..
02CF80: 20 6F 75 74 28 27 3E 27 29 0D 0A 20 20 20 20 20 out('>')..
02CF90: 20 67 65 74 63 68 72 28 29 0D 0A 20 20 20 20 24 getchr().. $
02CFA0: 29 0D 0A 20 20 20 20 45 4C 53 45 20 6F 75 74 28 ).. ELSE out(
02CFB0: 27 2D 27 29 0D 0A 20 20 20 20 6F 75 74 28 27 20 '-').. out('
02CFC0: 27 29 0D 0A 20 20 20 20 45 4E 44 43 41 53 45 0D ').. ENDCASE.
02CFD0: 0A 20 20 20 20 43 41 53 45 20 27 2F 27 3A 0D 0A . CASE '/':..
02CFE0: 20 20 20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 getchr()..
02CFF0: 20 20 54 45 53 54 20 6C 61 73 74 63 68 72 20 3D TEST lastchr =
02D000: 20 27 2A 2A 27 20 54 48 45 4E 0D 0A 20 20 20 20 '**' THEN..
02D010: 24 28 0D 0A 20 20 20 20 20 20 74 65 6D 70 20 3A $(.. temp :
02D020: 3D 20 69 6E 64 65 6E 74 0D 0A 20 20 20 20 20 20 = indent..
02D030: 69 6E 64 65 6E 74 20 3A 3D 20 30 0D 0A 20 20 20 indent := 0..
02D040: 20 20 20 63 6F 6E 64 6E 6C 28 29 0D 0A 20 20 20 condnl()..
02D050: 20 20 20 6F 75 74 28 27 2F 27 29 0D 0A 20 20 20 out('/')..
02D060: 20 20 20 6F 75 74 28 27 2A 2A 27 29 0D 0A 20 20 out('**')..
02D070: 20 20 20 20 72 61 77 63 68 72 28 29 0D 0A 20 20 rawchr()..
02D080: 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 20 20 $(..
02D090: 55 4E 54 49 4C 20 6C 61 73 74 63 68 72 20 3D 20 UNTIL lastchr =
02D0A0: 27 2A 2A 27 20 44 4F 0D 0A 20 20 20 20 20 20 20 '**' DO..
02D0B0: 20 24 28 0D 0A 20 20 20 20 20 20 20 20 20 20 6F $(.. o
02D0C0: 75 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 20 20 ut(lastchr)..
02D0D0: 20 20 20 20 20 20 20 72 61 77 63 68 72 28 29 0D rawchr().
02D0E0: 0A 20 20 20 20 20 20 20 20 24 29 0D 0A 20 20 20 . $)..
02D0F0: 20 20 20 20 20 6F 75 74 28 27 2A 2A 27 29 0D 0A out('**')..
02D100: 20 20 20 20 20 20 20 20 72 61 77 63 68 72 28 29 rawchr()
02D110: 0D 0A 20 20 20 20 20 20 24 29 0D 0A 20 20 20 20 .. $)..
02D120: 20 20 52 45 50 45 41 54 55 4E 54 49 4C 20 6C 61 REPEATUNTIL la
02D130: 73 74 63 68 72 20 3D 20 27 2F 27 0D 0A 20 20 20 stchr = '/'..
02D140: 20 20 20 6F 75 74 28 27 2F 27 29 0D 0A 20 20 20 out('/')..
02D150: 20 20 20 6F 75 74 28 31 33 29 0D 0A 20 20 20 20 out(13)..
02D160: 20 20 49 46 20 67 65 74 63 68 72 28 29 20 3D 20 IF getchr() =
02D170: 31 33 20 54 48 45 4E 20 67 65 74 63 68 72 28 29 13 THEN getchr()
02D180: 0D 0A 20 20 20 20 20 20 69 6E 64 65 6E 74 20 3A .. indent :
02D190: 3D 20 74 65 6D 70 0D 0A 20 20 20 20 24 29 0D 0A = temp.. $)..
02D1A0: 20 20 20 20 45 4C 53 45 20 54 45 53 54 20 6C 61 ELSE TEST la
02D1B0: 73 74 63 68 72 20 3D 20 27 2F 27 20 54 48 45 4E stchr = '/' THEN
02D1C0: 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 .. $(..
02D1D0: 49 46 20 63 6F 6C 75 6D 6E 20 3E 20 63 6F 6D 6D IF column > comm
02D1E0: 65 6E 74 73 20 54 48 45 4E 20 6F 75 74 28 31 33 ents THEN out(13
02D1F0: 29 0D 0A 20 20 20 20 20 20 46 4F 52 20 61 20 3D ).. FOR a =
02D200: 20 63 6F 6C 75 6D 6E 20 54 4F 20 63 6F 6D 6D 65 column TO comme
02D210: 6E 74 73 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 nts out(' ')..
02D220: 20 20 20 20 6F 75 74 28 27 2F 27 29 0D 0A 20 20 out('/')..
02D230: 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 20 20 $(..
02D240: 6F 75 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 20 out(lastchr)..
02D250: 20 20 20 20 20 20 72 61 77 63 68 72 28 29 0D 0A rawchr()..
02D260: 20 20 20 20 20 20 24 29 0D 0A 20 20 20 20 20 20 $)..
02D270: 52 45 50 45 41 54 55 4E 54 49 4C 20 6C 61 73 74 REPEATUNTIL last
02D280: 63 68 72 20 3D 20 31 33 0D 0A 20 20 20 20 20 20 chr = 13..
02D290: 6F 75 74 28 31 33 29 0D 0A 0D 0A 20 20 20 20 20 out(13)....
02D2A0: 20 49 46 20 67 65 74 63 68 72 28 29 20 3D 20 31 IF getchr() = 1
02D2B0: 33 20 54 48 45 4E 20 67 65 74 63 68 72 28 29 0D 3 THEN getchr().
02D2C0: 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45 4C 53 . $).. ELS
02D2D0: 45 20 54 45 53 54 20 6C 61 73 74 63 68 72 20 3D E TEST lastchr =
02D2E0: 20 27 5C 27 20 54 48 45 4E 0D 0A 20 20 20 20 24 '\' THEN.. $
02D2F0: 28 0D 0A 20 20 20 20 20 20 6F 75 74 28 27 20 27 (.. out(' '
02D300: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
02D310: 26 00 00 00 02 09 50 E5 26 00 C1 02 00 00 00 02 &.....P.&.......
02D320: 26 00 C2 02 00 00 00 02 26 00 C3 02 00 00 00 02 &.......&.......
02D330: 26 00 C4 02 00 00 00 02 26 00 C5 02 00 00 00 02 &.......&.......
02D340: 26 00 C6 02 00 00 00 02 26 00 C7 02 00 00 00 02 &.......&.......
02D350: 26 00 C8 02 00 00 00 02 26 00 C9 02 00 00 00 02 &.......&.......
02D360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D3A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D3B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D3C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D3D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D3E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D3F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D400: 29 0D 0A 20 20 20 20 20 20 6F 75 74 28 27 2F 27 ).. out('/'
02D410: 29 0D 0A 20 20 20 20 20 20 6F 75 74 28 27 5C 27 ).. out('\'
02D420: 29 0D 0A 20 20 20 20 20 20 6F 75 74 28 27 20 27 ).. out(' '
02D430: 29 0D 0A 20 20 20 20 20 20 67 65 74 63 68 72 28 ).. getchr(
02D440: 29 0D 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45 ).. $).. E
02D450: 4C 53 45 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 LSE.. $(..
02D460: 20 20 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 out(' ')..
02D470: 20 20 20 6F 75 74 28 27 2F 27 29 0D 0A 20 20 20 out('/')..
02D480: 20 20 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 out(' ')..
02D490: 20 24 29 0D 0A 20 20 20 20 45 4E 44 43 41 53 45 $).. ENDCASE
02D4A0: 0D 0A 20 20 20 20 43 41 53 45 20 27 5C 27 3A 0D .. CASE '\':.
02D4B0: 0A 20 20 20 20 67 65 74 63 68 72 28 29 0D 0A 20 . getchr()..
02D4C0: 20 20 20 54 45 53 54 20 6C 61 73 74 63 68 72 20 TEST lastchr
02D4D0: 3D 20 27 3D 27 20 4C 4F 47 4F 52 20 6C 61 73 74 = '=' LOGOR last
02D4E0: 63 68 72 20 3D 20 27 2F 27 20 54 48 45 4E 0D 0A chr = '/' THEN..
02D4F0: 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 6F 75 $(.. ou
02D500: 74 28 27 20 27 29 0D 0A 20 20 20 20 20 20 6F 75 t(' ').. ou
02D510: 74 28 27 5C 27 29 0D 0A 20 20 20 20 20 20 6F 75 t('\').. ou
02D520: 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 20 20 20 t(lastchr)..
02D530: 20 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 20 out(' ')..
02D540: 20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 20 20 getchr()..
02D550: 24 29 0D 0A 20 20 20 20 45 4C 53 45 20 6F 75 74 $).. ELSE out
02D560: 28 27 5C 27 29 0D 0A 20 20 20 20 45 4E 44 43 41 ('\').. ENDCA
02D570: 53 45 0D 0A 20 20 20 20 43 41 53 45 20 27 29 27 SE.. CASE ')'
02D580: 3A 20 43 41 53 45 20 27 5D 27 3A 0D 0A 20 20 20 : CASE ']':..
02D590: 20 6F 75 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 out(lastchr)..
02D5A0: 20 20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 20 getchr()..
02D5B0: 20 69 64 66 6C 61 67 20 3A 3D 20 32 0D 0A 20 20 idflag := 2..
02D5C0: 20 20 52 45 54 55 52 4E 0D 0A 20 20 20 20 43 41 RETURN.. CA
02D5D0: 53 45 20 27 27 27 3A 0D 0A 20 20 20 20 69 64 73 SE ''':.. ids
02D5E0: 70 61 63 65 28 29 0D 0A 20 20 20 20 6F 75 74 28 pace().. out(
02D5F0: 27 27 27 29 0D 0A 20 20 20 20 72 61 77 63 68 72 ''').. rawchr
02D600: 28 29 0D 0A 0D 0A 20 20 20 20 73 74 72 63 68 72 ().... strchr
02D610: 28 29 0D 0A 20 20 20 20 6F 75 74 28 27 27 27 29 ().. out(''')
02D620: 0D 0A 20 20 20 20 67 65 74 63 68 72 28 29 0D 0A .. getchr()..
02D630: 20 20 20 20 69 64 66 6C 61 67 20 3A 3D 20 32 0D idflag := 2.
02D640: 0A 20 20 20 20 52 45 54 55 52 4E 0D 0A 20 20 20 . RETURN..
02D650: 20 43 41 53 45 20 27 21 27 3A 0D 0A 20 20 20 20 CASE '!':..
02D660: 49 46 20 69 64 66 6C 61 67 20 3D 20 31 20 54 48 IF idflag = 1 TH
02D670: 45 4E 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 EN out(' ')..
02D680: 20 6F 75 74 28 27 21 27 29 0D 0A 20 20 20 20 67 out('!').. g
02D690: 65 74 63 68 72 28 29 0D 0A 20 20 20 20 45 4E 44 etchr().. END
02D6A0: 43 41 53 45 0D 0A 20 20 20 20 43 41 53 45 20 27 CASE.. CASE '
02D6B0: 2B 27 3A 20 43 41 53 45 20 27 26 27 3A 20 43 41 +': CASE '&': CA
02D6C0: 53 45 20 27 7C 27 3A 20 43 41 53 45 20 27 3D 27 SE '|': CASE '='
02D6D0: 3A 20 43 41 53 45 20 27 2A 2A 27 3A 0D 0A 20 20 : CASE '**':..
02D6E0: 20 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 20 out(' ')..
02D6F0: 6F 75 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 20 out(lastchr)..
02D700: 20 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 20 out(' ')..
02D710: 67 65 74 63 68 72 28 29 0D 0A 20 20 20 20 45 4E getchr().. EN
02D720: 44 43 41 53 45 0D 0A 20 20 20 20 43 41 53 45 20 DCASE.. CASE
02D730: 27 2C 27 3A 0D 0A 20 20 20 20 6F 75 74 28 6C 61 ',':.. out(la
02D740: 73 74 63 68 72 29 0D 0A 20 20 20 20 6F 75 74 28 stchr).. out(
02D750: 27 20 27 29 0D 0A 20 20 20 20 67 65 74 63 68 72 ' ').. getchr
02D760: 28 29 0D 0A 20 20 20 20 45 4E 44 43 41 53 45 0D ().. ENDCASE.
02D770: 0A 20 20 20 20 44 45 46 41 55 4C 54 3A 20 6F 75 . DEFAULT: ou
02D780: 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 20 20 20 t(lastchr)..
02D790: 67 65 74 63 68 72 28 29 0D 0A 20 20 24 29 0D 0A getchr().. $)..
02D7A0: 20 20 69 64 66 6C 61 67 20 3A 3D 20 46 41 4C 53 idflag := FALS
02D7B0: 45 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 62 E..$)......LET b
02D7C0: 65 61 75 74 69 66 79 28 29 20 42 45 0D 0A 0D 0A eautify() BE....
02D7D0: 24 28 0D 0A 20 20 4C 45 54 20 74 65 6D 70 20 3D $(.. LET temp =
02D7E0: 20 30 0D 0A 20 20 57 48 49 4C 45 20 28 6C 61 73 0.. WHILE (las
02D7F0: 74 63 68 72 20 4E 45 20 65 6E 64 73 74 72 65 61 tchr NE endstrea
02D800: 6D 63 68 29 20 26 20 28 6C 61 73 74 63 68 72 20 mch) & (lastchr
02D810: 4E 45 20 73 6F 66 74 65 6F 66 63 68 29 20 44 4F NE softeofch) DO
02D820: 0D 0A 20 20 24 28 0D 0A 20 20 20 20 57 48 49 4C .. $(.. WHIL
02D830: 45 20 73 70 61 63 65 28 6C 61 73 74 63 68 72 29 E space(lastchr)
02D840: 20 44 4F 20 67 65 74 63 68 72 28 29 0D 0A 20 20 DO getchr()..
02D850: 20 20 54 45 53 54 20 27 61 27 20 3C 3D 20 6C 61 TEST 'a' <= la
02D860: 73 74 63 68 72 20 3C 3D 20 27 7A 27 20 54 48 45 stchr <= 'z' THE
02D870: 4E 20 69 64 65 6E 74 28 29 0D 0A 20 20 20 20 45 N ident().. E
02D880: 4C 53 45 20 54 45 53 54 20 27 30 27 20 3C 3D 20 LSE TEST '0' <=
02D890: 6C 61 73 74 63 68 72 20 3C 3D 20 27 39 27 20 54 lastchr <= '9' T
02D8A0: 48 45 4E 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 HEN.. $(..
02D8B0: 20 20 20 69 64 73 70 61 63 65 28 29 0D 0A 20 20 idspace()..
02D8C0: 20 20 20 20 72 65 61 64 6E 75 6D 28 31 30 2C 20 readnum(10,
02D8D0: 6C 61 73 74 63 68 72 29 0D 0A 20 20 20 20 24 29 lastchr).. $)
02D8E0: 0D 0A 20 20 20 20 45 4C 53 45 20 54 45 53 54 20 .. ELSE TEST
02D8F0: 6C 61 73 74 63 68 72 20 3D 20 27 23 27 20 54 48 lastchr = '#' TH
02D900: 45 4E 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 20 EN.. $(..
02D910: 20 20 69 64 73 70 61 63 65 28 29 0D 0A 20 20 20 idspace()..
02D920: 20 20 20 6F 75 74 28 27 23 27 29 0D 0A 20 20 20 out('#')..
02D930: 20 20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 20 getchr()..
02D940: 20 20 20 53 57 49 54 43 48 4F 4E 20 6C 61 73 74 SWITCHON last
02D950: 63 68 72 20 49 4E 54 4F 0D 0A 20 20 20 20 20 20 chr INTO..
02D960: 24 28 0D 0A 20 20 20 20 20 20 20 20 43 41 53 45 $(.. CASE
02D970: 20 27 78 27 3A 20 6F 75 74 28 27 78 27 29 0D 0A 'x': out('x')..
02D980: 20 20 20 20 20 20 20 20 72 65 61 64 6E 75 6D 28 readnum(
02D990: 31 36 2C 20 67 65 74 63 68 72 28 29 29 0D 0A 20 16, getchr())..
02D9A0: 20 20 20 20 20 20 20 45 4E 44 43 41 53 45 0D 0A ENDCASE..
02D9B0: 20 20 20 20 20 20 20 20 43 41 53 45 20 27 62 27 CASE 'b'
02D9C0: 3A 20 6F 75 74 28 27 62 27 29 0D 0A 20 20 20 20 : out('b')..
02D9D0: 20 20 20 20 72 65 61 64 6E 75 6D 28 32 2C 20 67 readnum(2, g
02D9E0: 65 74 63 68 72 28 29 29 0D 0A 20 20 20 20 20 20 etchr())..
02D9F0: 20 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 ENDCASE..
02DA00: 20 20 20 43 41 53 45 20 27 6F 27 3A 20 6F 75 74 CASE 'o': out
02DA10: 28 27 6F 27 29 0D 0A 20 20 20 20 20 20 20 20 72 ('o').. r
02DA20: 65 61 64 6E 75 6D 28 38 2C 20 67 65 74 63 68 72 eadnum(8, getchr
02DA30: 28 29 29 0D 0A 20 20 20 20 20 20 20 20 45 4E 44 ()).. END
02DA40: 43 41 53 45 0D 0A 20 20 20 20 20 20 20 20 44 45 CASE.. DE
02DA50: 46 41 55 4C 54 3A 20 72 65 61 64 6E 75 6D 28 38 FAULT: readnum(8
02DA60: 2C 20 6C 61 73 74 63 68 72 29 0D 0A 20 20 20 20 , lastchr)..
02DA70: 20 20 24 29 0D 0A 20 20 20 20 24 29 0D 0A 20 20 $).. $)..
02DA80: 20 20 45 4C 53 45 20 54 45 53 54 20 6C 61 73 74 ELSE TEST last
02DA90: 63 68 72 20 3D 20 31 33 20 54 48 45 4E 0D 0A 20 chr = 13 THEN..
02DAA0: 20 20 20 24 28 0D 0A 20 20 20 20 20 20 6F 75 74 $(.. out
02DAB0: 28 31 33 29 0D 0A 20 20 20 20 20 20 67 65 74 63 (13).. getc
02DAC0: 68 72 28 29 0D 0A 20 20 20 20 24 29 0D 0A 20 20 hr().. $)..
02DAD0: 20 20 45 4C 53 45 20 70 75 6E 63 74 75 61 74 65 ELSE punctuate
02DAE0: 28 29 0D 0A 20 20 24 29 0D 0A 24 29 0D 0A 0D 0A ().. $)..$)....
02DAF0: 0D 0A 4C 45 54 20 66 69 6C 65 73 28 29 20 42 45 ..LET files() BE
02DB00: 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 6E 61 6D 65 ..$(.. LET name
02DB10: 69 6E 20 3D 20 56 45 43 20 31 30 0D 0A 20 20 41 in = VEC 10.. A
02DB20: 4E 44 20 6E 61 6D 65 6F 75 74 20 3D 20 56 45 43 ND nameout = VEC
02DB30: 20 31 30 0D 0A 20 20 77 72 69 74 65 73 28 22 45 10.. writes("E
02DB40: 6E 74 65 72 20 74 68 65 20 69 6E 70 75 74 20 66 nter the input f
02DB50: 69 6C 65 20 6E 61 6D 65 3A 20 20 22 29 0D 0A 20 ile name: ")..
02DB60: 20 72 65 61 64 73 28 6E 61 6D 65 69 6E 29 0D 0A reads(namein)..
02DB70: 20 20 6E 65 77 6C 69 6E 65 28 29 0D 0A 20 20 77 newline().. w
02DB80: 72 69 74 65 73 28 22 45 6E 74 65 72 20 74 68 65 rites("Enter the
02DB90: 20 6F 75 74 70 75 74 20 66 69 6C 65 20 6E 61 6D output file nam
02DBA0: 65 3A 20 22 29 0D 0A 20 20 72 65 61 64 73 28 6E e: ").. reads(n
02DBB0: 61 6D 65 6F 75 74 29 0D 0A 20 20 6E 65 77 6C 69 ameout).. newli
02DBC0: 6E 65 28 29 0D 0A 20 20 55 4E 4C 45 53 53 20 66 ne().. UNLESS f
02DBD0: 69 6E 64 69 6E 70 75 74 28 6E 61 6D 65 69 6E 2C indinput(namein,
02DBE0: 20 69 6E 70 75 74 29 20 54 48 45 4E 20 65 72 72 input) THEN err
02DBF0: 28 22 43 61 6E 27 74 20 6F 70 65 6E 20 69 6E 70 ("Can't open inp
02DC00: 75 74 22 29 0D 0A 20 20 55 4E 4C 45 53 53 20 66 ut").. UNLESS f
02DC10: 69 6E 64 6F 75 74 70 75 74 28 6E 61 6D 65 6F 75 indoutput(nameou
02DC20: 74 2C 20 6F 75 74 70 75 74 29 20 54 48 45 4E 20 t, output) THEN
02DC30: 65 72 72 28 22 43 61 6E 27 74 20 6F 70 65 6E 20 err("Can't open
02DC40: 6F 75 74 70 75 74 22 29 0D 0A 24 29 0D 0A 0D 0A output")..$)....
02DC50: 0D 0A 0D 0A 4C 45 54 20 72 65 61 64 77 6F 72 64 ....LET readword
02DC60: 73 28 73 74 72 69 6E 67 29 20 42 45 0D 0A 0D 0A s(string) BE....
02DC70: 24 28 0D 0A 20 20 4C 45 54 20 6C 65 6E 67 74 68 $(.. LET length
02DC80: 2C 20 72 65 73 74 2C 20 6C 65 6E 67 74 68 70 74 , rest, lengthpt
02DC90: 72 20 3D 20 73 74 72 69 6E 67 25 30 2C 20 31 2C r = string%0, 1,
02DCA0: 20 30 0D 0A 20 20 57 48 49 4C 45 20 6C 65 6E 67 0.. WHILE leng
02DCB0: 74 68 20 3E 20 72 65 73 74 20 44 4F 0D 0A 20 20 th > rest DO..
02DCC0: 24 28 0D 0A 20 20 20 20 54 45 53 54 20 73 74 72 $(.. TEST str
02DCD0: 69 6E 67 25 72 65 73 74 20 3D 20 27 42 27 20 54 ing%rest = 'B' T
02DCE0: 48 45 4E 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 HEN.. $(..
02DCF0: 20 20 20 21 6B 65 79 65 6E 64 20 3A 3D 20 54 52 !keyend := TR
02DD00: 55 45 0D 0A 20 20 20 20 20 20 72 65 73 74 20 3A UE.. rest :
02DD10: 3D 20 72 65 73 74 20 2B 20 31 0D 0A 20 20 20 20 = rest + 1..
02DD20: 24 29 0D 0A 20 20 20 20 45 4C 53 45 20 21 6B 65 $).. ELSE !ke
02DD30: 79 65 6E 64 20 3A 3D 20 46 41 4C 53 45 0D 0A 20 yend := FALSE..
02DD40: 20 20 20 6C 65 6E 67 74 68 70 74 72 20 3A 3D 20 lengthptr :=
02DD50: 6B 65 79 65 6E 64 20 2B 20 31 0D 0A 20 20 20 20 keyend + 1..
02DD60: 6B 65 79 65 6E 64 20 3A 3D 20 6B 65 79 65 6E 64 keyend := keyend
02DD70: 20 2B 20 32 0D 0A 20 20 20 20 21 6C 65 6E 67 74 + 2.. !lengt
02DD80: 68 70 74 72 20 3A 3D 20 30 0D 0A 20 20 20 20 57 hptr := 0.. W
02DD90: 48 49 4C 45 20 73 74 72 69 6E 67 25 72 65 73 74 HILE string%rest
02DDA0: 20 4E 45 20 27 2C 27 20 44 4F 0D 0A 20 20 20 20 NE ',' DO..
02DDB0: 24 28 0D 0A 20 20 20 20 20 20 21 6B 65 79 65 6E $(.. !keyen
02DDC0: 64 20 3A 3D 20 73 74 72 69 6E 67 25 72 65 73 74 d := string%rest
02DDD0: 0D 0A 20 20 20 20 20 20 6B 65 79 65 6E 64 2C 20 .. keyend,
02DDE0: 72 65 73 74 2C 20 21 6C 65 6E 67 74 68 70 74 72 rest, !lengthptr
02DDF0: 20 3A 3D 20 6B 65 79 65 6E 64 20 2B 20 31 2C 20 := keyend + 1,
02DE00: 72 65 73 74 20 2B 20 31 2C 20 21 6C 65 6E 67 74 rest + 1, !lengt
02DE10: 68 70 74 72 20 2B 20 31 0D 0A 20 20 20 20 24 29 hptr + 1.. $)
02DE20: 0D 0A 20 20 20 20 72 65 73 74 20 3A 3D 20 72 65 .. rest := re
02DE30: 73 74 20 2B 20 31 0D 0A 20 20 24 29 0D 0A 24 29 st + 1.. $)..$)
02DE40: 0D 0A 0D 0A 0D 0A 41 4E 44 20 72 65 61 64 73 79 ......AND readsy
02DE50: 73 28 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 s() BE....$(..
02DE60: 72 65 61 64 77 6F 72 64 73 28 22 61 6E 64 2C 62 readwords("and,b
02DE70: 65 2C 62 72 65 61 6B 2C 62 79 2C 63 61 73 65 2C e,break,by,case,
02DE80: 64 6F 2C 64 65 66 61 75 6C 74 2C 42 65 71 2C 42 do,default,Beq,B
02DE90: 65 71 76 2C 65 6C 73 65 2C 65 6E 64 63 61 73 65 eqv,else,endcase
02DEA0: 2C 66 61 6C 73 65 2C 66 6F 72 2C 22 29 0D 0A 20 ,false,for,")..
02DEB0: 20 72 65 61 64 77 6F 72 64 73 28 22 66 69 6E 69 readwords("fini
02DEC0: 73 68 2C 67 6F 74 6F 2C 42 67 65 2C 42 67 72 2C sh,goto,Bge,Bgr,
02DED0: 67 6C 6F 62 61 6C 2C 67 65 74 2C 69 66 2C 69 6E global,get,if,in
02DEE0: 74 6F 2C 6C 65 74 2C 42 6C 76 2C 42 6C 65 2C 42 to,let,Blv,Ble,B
02DEF0: 6C 73 2C 42 6C 6F 67 6F 72 2C 42 6C 6F 67 61 6E ls,Blogor,Blogan
02DF00: 64 2C 22 29 0D 0A 20 20 72 65 61 64 77 6F 72 64 d,").. readword
02DF10: 73 28 22 6C 6F 6F 70 2C 42 6C 73 68 69 66 74 2C s("loop,Blshift,
02DF20: 6D 61 6E 69 66 65 73 74 2C 42 6E 65 2C 6E 6F 74 manifest,Bne,not
02DF30: 2C 42 6E 65 71 76 2C 6F 72 2C 72 65 73 75 6C 74 ,Bneqv,or,result
02DF40: 69 73 2C 72 65 74 75 72 6E 2C 42 72 65 6D 2C 42 is,return,Brem,B
02DF50: 72 73 68 69 66 74 2C 22 29 0D 0A 20 20 72 65 61 rshift,").. rea
02DF60: 64 77 6F 72 64 73 28 22 42 72 76 2C 72 65 70 65 dwords("Brv,repe
02DF70: 61 74 2C 72 65 70 65 61 74 77 68 69 6C 65 2C 72 at,repeatwhile,r
02DF80: 65 70 65 61 74 75 6E 74 69 6C 2C 73 77 69 74 63 epeatuntil,switc
02DF90: 68 6F 6E 2C 73 74 61 74 69 63 2C 74 6F 2C 74 65 hon,static,to,te
02DFA0: 73 74 2C 74 72 75 65 2C 22 29 0D 0A 20 20 72 65 st,true,").. re
02DFB0: 61 64 77 6F 72 64 73 28 22 74 68 65 6E 2C 74 61 adwords("then,ta
02DFC0: 62 6C 65 2C 75 6E 74 69 6C 2C 75 6E 6C 65 73 73 ble,until,unless
02DFD0: 2C 76 65 63 2C 76 61 6C 6F 66 2C 77 68 69 6C 65 ,vec,valof,while
02DFE0: 2C 69 6E 6C 69 6E 65 2C 6F 70 74 69 6F 6E 2C 22 ,inline,option,"
02DFF0: 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 73 )..$)......LET s
02E000: 74 61 72 74 28 29 20 42 45 0D 0A 0D 0A 24 28 0D tart() BE....$(.
02E010: 0A 20 20 4C 45 54 20 77 6F 72 64 61 72 72 61 79 . LET wordarray
02E020: 20 3D 20 56 45 43 20 35 30 30 0D 0A 20 20 41 4E = VEC 500.. AN
02E030: 44 20 69 6E 62 75 66 66 20 3D 20 56 45 43 20 38 D inbuff = VEC 8
02E040: 32 0D 0A 20 20 41 4E 44 20 6F 75 74 62 75 66 66 2.. AND outbuff
02E050: 20 3D 20 56 45 43 20 38 32 0D 0A 20 20 41 4E 44 = VEC 82.. AND
02E060: 20 6E 61 6D 65 69 6E 20 3D 20 56 45 43 20 31 30 namein = VEC 10
02E070: 0D 0A 20 20 41 4E 44 20 6E 61 6D 65 6F 75 74 20 .. AND nameout
02E080: 3D 20 56 45 43 20 31 30 0D 0A 20 20 41 4E 44 20 = VEC 10.. AND
02E090: 6C 65 76 20 3D 20 56 45 43 20 33 0D 0A 20 20 6C lev = VEC 3.. l
02E0A0: 65 76 65 6C 28 6C 65 76 29 0D 0A 20 20 65 72 72 evel(lev).. err
02E0B0: 76 65 63 2C 20 69 6E 70 75 74 2C 20 6F 75 74 70 vec, input, outp
02E0C0: 75 74 20 3A 3D 20 6C 65 76 2C 20 69 6E 62 75 66 ut := lev, inbuf
02E0D0: 66 2C 20 6F 75 74 62 75 66 66 0D 0A 20 20 6B 65 f, outbuff.. ke
02E0E0: 79 77 6F 72 64 73 2C 20 6B 65 79 65 6E 64 20 3A ywords, keyend :
02E0F0: 3D 20 77 6F 72 64 61 72 72 61 79 2C 20 77 6F 72 = wordarray, wor
02E100: 64 61 72 72 61 79 0D 0A 20 20 72 65 61 64 73 79 darray.. readsy
02E110: 73 28 29 0D 0A 20 20 66 69 6C 65 73 28 29 0D 0A s().. files()..
02E120: 20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 62 65 getchr().. be
02E130: 61 75 74 69 66 79 28 29 0D 0A 20 20 65 72 72 6F autify().. erro
02E140: 72 3A 20 63 6C 6F 73 65 69 6E 28 69 6E 70 75 74 r: closein(input
02E150: 29 0D 0A 20 20 63 6C 6F 73 65 6F 75 74 28 6F 75 ).. closeout(ou
02E160: 74 70 75 74 29 0D 0A 20 20 6E 65 77 6C 69 6E 65 tput).. newline
02E170: 28 29 0D 0A 20 20 77 72 69 74 65 73 28 22 42 43 ().. writes("BC
02E180: 50 4C 20 62 65 61 75 74 69 66 69 65 72 20 66 69 PL beautifier fi
02E190: 6E 69 73 68 65 64 22 29 0D 0A 24 29 0D 0A 2E 0D nished")..$)....
02E1A0: 0A 1A 20 77 69 6C 6C 20 74 75 72 6E 20 61 6C 6C .. will turn all
02E1B0: 20 6B 65 79 77 6F 72 64 73 20 69 6E 74 6F 20 75 keywords into u
02E1C0: 70 70 65 72 20 63 61 73 65 20 61 6E 64 0D 0A 20 pper case and..
02E1D0: 20 20 61 6C 6C 20 69 64 65 6E 74 69 66 69 65 72 all identifier
02E1E0: 73 20 69 6E 74 6F 20 6C 6F 77 65 72 20 63 61 73 s into lower cas
02E1F0: 65 20 2A 2F 0D 0A 0D 0A 2F 2F 20 6D 6F 64 69 66 e */....// modif
02E200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E4A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E4B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E4C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E4D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E4E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E4F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E5A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E5B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E5C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E5D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E5E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E5F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E600: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00 Track-Info......
02E610: 27 00 00 00 02 09 50 E5 27 00 C1 02 00 00 00 02 '.....P.'.......
02E620: 27 00 C2 02 00 00 00 02 27 00 C3 02 00 00 00 02 '.......'.......
02E630: 27 00 C4 02 00 00 00 02 27 00 C5 02 00 00 00 02 '.......'.......
02E640: 27 00 C6 02 00 00 00 02 27 00 C7 02 00 00 00 02 '.......'.......
02E650: 27 00 C8 02 00 00 00 02 27 00 C9 02 00 00 00 02 '.......'.......
02E660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E900: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E910: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E920: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E930: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E940: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E950: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E960: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E970: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E980: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E990: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
RESULT OF SEARCH :
PRO=281 CHEA=0 COD=55 MUSI=0 COP=40 GRA=129 WRIT=195 198=12 199=0 STARTER=0 KBI=0 CAAV=0 L.TOURNIER=0
EXTENDED CPC DSK File SAMdisk120814( PBCPL COMx BCPLM1 BCPLM1 !
"#$%&'()*+,-./0BCPLM1 1BCPLM2 23456789ABCPLM2 BCDEFGHIJKLMNOPQBCPLM2
RBCPLM3 STUVWXYZabBCPLM3 5cdefghiBDC B jklmnopqrstuvwxyBDC B
)zBEDC COMvCIBHDR ICLIBHDR1 )OPY B DEBUG (£KEYDEFS PCWTIDY B
Dvx)0!R!R8 PYgo#DM!x( BDM!zR!(N#F#B(## #V#V22x(#V##V#s#rE(#""CxiKKC"z)z)s#r#s#
r#s#r#!9s#r)#V#S#V#S#V##fki**"#)8I*8B"!9R85i*""KKC8"DM!9B8Stack overflow #22f(O
!2w(f((l ** BREAK ** (2O(!f(*+E+s"h*+(+"K!p"M*KMR*KR"+"*",!".!*"!"12!!6 !"x.(#
x(# ,KsW!*"Ylq5!$*,*R7!$*7*42g!"5*(!$!7!$*74!"!H 2g*l"5! !$*5lR7!$!74 Phase 1 c
omplete. Tree size Phase 2 complete. Code size Phase 1 errors Phase 2 errors Arn
or BCPL compiler v (c) PJB & Arnor Ltd., 1986 !3$00.1020!J$*K! 6#!("0#!4w#! 4"3
6O!4"I6O!"2f22 2222 2!star+E(+")A 2!* 8(((80 2! (( !(!2Wy3$!$*17"$88*#"202H(I(((
(0 q523*Y near line ESC to abort, any other key continues+00!*W#2E#2F!"G(!P S
TOP to abort, any other key continuesG(X!( (222!w220 *£*R2**w+"***R2**r+s+"*
# 0'kkdk kk/R00 y0g(! *5#"5*7#"7F#*£!w#1w#2w#"##*R0* 0"!"1 2!J4Too many files!(
$x(#E4 Can't open ww w 666 8 (X w8 (.( (, (+6 6 6 (7YW6J4Bad SOURCE nameJ4Bad
DESTINATION namex3#E zK(!£u!t"7 6B zK66 #u!t"COM£!V"R #s!r"# J4Disc Ful
l#!V"( !£!V"R " P#!#s!r"7!"!p zKp!$y(!$!$3Y(N3J4File intact3y2yppOutput file ex
ists Delete (Y/N) and is R/O*+# ( # ( "0(7a .((O *q5M *g q5A q5u B!8 &(& q5#u
g 5 q5"u &q5"u M +V+!R+r+sCg q5u g 3 q53g / q5/g N **N!F#q5NR $v is only a
llowed in definitions q5#u g vBad expression*W"$0! *$(#####F##foHz8*$*$yq5u "$"
("&(*$K&( z 8*$*$q5u 6(vExpecting ,q5u *$q5B(!B!K z*$8q5u "$O! (#*$q5u "$y$# 9
# # 5" " 8( Q( A+XXXXXX % ! *W*YsW!+"Y7K 1q5 q5SYSWI( !(+( q5!I((6q56O(vExpe
cting identifier*q5g Aq52( DO q5u EvBad vector definitionA ROq5O !B! q5G q5u Fv
Bad PROCEDURE definitionvMissing )(R g q5u 6 q567KI(( JS vExpecting command'(((
)(pq5'(Z g u G!q ! ##Vx###OM.&8A"140- ZZ#ZZZ*fHP q5 Oq5SK6Lq5u g q5u Kq5u K !I-v
ELSE expected**q5q5u !!*vINTO expected!q5u !Sv expectedq5!Sg q5!/u ,!/u ! q5u K
pvBad FOR loopq5Pg !(q5*W*Y!!9sW!"Y(*(&vNeed or in constant definitionq5u !qp!
7KO(SYSWH!GoI(vMissing $)*B($*3KB vSection tag mismatchq5vMissing $(#G q5 G!(###
'Z()40 (G(xG(G*M"l*."7!"9"A"C"G"U*K2**"*Z"2r2v2n2z2tc n**R*hs#r7*js#r**R(#**G#J4
Undefined START*A!9R2!1JR0P1L-40"p'!Z!(L!L!)V!V!+!*p"e### $$#2 A j%J4Error in tr
anslation node! "GX6#6 "jX "hX*#+!s#z K7!DM!!#V#z£ut##$p C/!!4ut### levelongjuma
ptoverdvd!!#V#&2+6#6#6#Vw#w##+V+n+V+n*Q*9*+V++V+n"*9C93"QTB $Vd3Undefined identi
fier,nf S+++V+!1V++V+GUFUTUUUVUWUXUYUDtEJ4Declaration error!1!51DTETG'F'T'U'V'W'
X'Y'+V+&2+6#6#6# s#r+V++F+N6 ! 6 !+V++i+F+N+F+NV+ 6 3Expression/id mismatcv%nf0#
)Q"QKSB8"Snf**( !!( X*U"U+V++*IR *GK7q#p273*S*O*9*22!"S"QV++I*z*g."z "7!z3""z*
S! !oS*Os#r22"*9C9"O"S"U7s#rV+F(T(V(X(n3 &v%! "OX!2!R9*U*UF(G(T(U(**T(#U(X(Y(Z((
(((***"*"*!,"*!,+V++F+n6 ++F+N+V+6 +F+N+V+ij6O(&(8Q1v%281(v%+V+v%!)s#r+V+v%)08W,
!6#6zs#r(v%(!()(v%+!7s+00620,0 (61s1wOM+V+6 +V++V+0F#6 +++V+V+&26#6##w2 P+V++ V
+n+V++V+0&26##s#r+V++V+"S+V+nz+V+h+++V+&2+6#w#6#Es#rbkSE !"" " "+V++,7V+n7 !(!nf
s#r+++V+GV+O "283( 13v%*33G x26(xv%+++V+xGV+ !"" " "+++++V+,!73V+n X7!3+V+n7s#r
DM2r222v2w2s*7"x "t " "+V++,7V+n*x-77!r3 +V+v%n2n!n!P3RESULTIS outside a VA
LO!z! +!v!"3LOOP found outside loo!r!v(F3m-3BREAK found outside loo3RETURN found
outside FUNC/PRO+V+v%+V+285((3Labels need a globa67NFa"+V+n*v*x*r*t"t"r"x"v****
""""F( nfnfX*l##"lR2 2r2v "t*7"x2w2s+V+n*x-7!r3 2r2v22 "t "x " "2w2s*7+V++n7
!v3V+,77!r3 +V++"!V+nz+++V+0KEa"V+hV!z( ##V7 ####7(*7"E+*r+s+p+q+"**22 "+V+v% T
X **C!"C*A+V+n*AR##7##*7ut*ARuE(+*A++++nfnf++++*C *7##"A"C7!3""w((3CASE/DEFAULT
outside a SWITCHO#+V+0*KADM!9B2is#r7#s#r*A####"A+V+nwn#*7"C+V+n!!#3ENDCASE used
outside SWITCHO *d* "dX2nfv%! %*dXnfv%*7K7*dq#pnf !0!&%(!4% "tXg."r%%"v "x*9*nfn
fn2"*9C97!v3!M%2-7!r3"*dX"d g" BKzWRDMgR#+A%G%L%i*!%1M&O&R&K&&C&3&.1''I'&' 'NK(/
f(5()9L)'*$v*((*V*6**8*Ql+!*****%**J4Unexpected node in expression!28 !0$fn0!1*1
+V+v%!&go#+V+v%!& (go#&*n*p2n2o "p+V+n!n 3VALOF must contain RESULTI73"p"n!!!!+
V+!U'1O'8(&'3Invalid application of L28 (0!'n-&!'!F 1!'nf+V+v%+V+v%!')#V+V+v%!(g
o!*7### X*7((Ox 7s#r(+V+(7s#r6 +V++(V+0+!(R!(!+!(R! !+++V+08 ++V+v%!(2)))i#++++
V+08+!0)R+V+v%!R!(2+++V+08+*+V+v%!z)2))))))))) )) )))i*88G)!*!*!*!*!*! *T)T))T))
T))T))))T))+*o/!J*b/!J*R!8!o/!j*b/!j*R!0!+*(!'+!* go+!*go+!*g£o+!*go+*+* !"" " "
nf,!73nfv% X!73nfv%7s#r +!w+n&!#V#!+ !+V++rsV+rs!v%2!+r+sM95+V++F+n+F+N+V+iM(2O(
.M(MO(I,0&v%v%M(O(,0&v%v%v%W,O(28 0$V011K(L(7Gcx2c!,12c-----J... $/.t..MR/OR/v%!
4-7-c(!Y-(###!! (08F nfDM7R !c-(###ib/!p.7-o/b/o/N.V00O J+V+O 12840# v%!4-7-+!p
.-+V+08+V++Fr+Ns##q#p7Rc! c! **c!" "+V+,7!32c""+V+,**c!" "+V+ P,7!32c""+V+,5/c+
V+,*KC"*KC"0%-z.t.+F+N+V+i +V++F+n0808X+!/gzW08v%!/gg!zgkgO(,0&v%W,!0!gzW03Need
constant expressio!B01Ol0M0500900$0001%0.0028(V7+V+7+V+0+V+0070R70!1701701i70W£7
0W7770z(T70z(%T7g1x)0!Rg1!R8 PYgo#DM!x( BDM!zR!otu018"13Invalid assignmen( nfXO
# #N#F####BK#V#B(## #V*DM!9B5iKB83*KAx(TZDM!9B88iKA*Z"*K9q#p#s#r#w""9J4Out of me
mory*9 B**7 *7####*7"EjnfR 3G($(!d3Dynamic free variable used,7nf223# *#" 423# 4
*#" 4 BKVqp6q#pFnfsrBKOx2GyOx o&!9!(4$*U(+V+!)44 inglobal definition###$!l4 3$
!k4"$2l4. Compilation abandoned.*(l3+0!4$Please insert system disc then press an
y keyV5z4 0###VT#(*!9DMB8J4Out of symbol spacer+s6#6#6#w#8"7O#8y'O!#V!9DM*B520!
( *1#"120f2f8 60$9!4"0Ow228S800o&9"M2# zM2b 8Ro&9"Mo 8o&9"Mx 8"o& "M08800o&9"
MvExpecting number' !))o&0&"'8M2!8G( #2##x/ Q 7/ 5*(27 *1#"1* 7*(/ 5 / r j 2
U M2 8 %02- 2 22$ /( $9!4H)l8$9!4I2". %*+22+21+2!£R"52( 7 72" !)" !qN7)08
8#wyvString too long 7 2 2!vBad charactervBad character constant2f(8(8J4Broken i
n+5,67&!8*9(A)BAB%QRq5N(vBad GET!599!lb9!b D9+( -n92929,99 99q5Mn9299!s(9+(-(vBa
d option linew99 q5q5,9q5! (!w#8.( w#+w)T))008)))002)08ag'0)))) 8*7)!#() xX!8(##
# 7 *1#"1)*(!#8())88G ''**""NnTtS s BbPpC c 8ag87'0a87087andbebreakbycasedod
efaulteqeqvelseendcasefalseforfinishgotogegrgtglobalgetifintoinlineletlvlelsltlo
gorlogandlooplshiftmanifestnenotneqvorresultisreturn£remrshiftrvrepeatrepeatwhil
erepeatuntilswitchonstatictotesttruethentableuntilunlessvecvalofwhileoptionabs7-
o/b/o/N.V00O J+V+O 1testtruethentableuntilunlessvecvalofwhileoptionabs7-o/b/o/N.
V00O J+V+O 1BCPLM1 produce the error message 'dynamic free variable used'.
p---!-----!-----!-------!-------!-------!-------!-------!-------!----R tm 3 b
m 11 hm 0 fm 2 ce BCPL ce THE SYSTEMS PROGRAMMING LANGUAGE ce Amstr
ad PCW8256/8512 ce Amstrad CPC6128/664/464 ce by
Phillip Blenkinsopp ce CONTENTS 1 Abo
ut BCPL 3 2 Using Arnor BCPL under CP/M 5 3 Using Arnor BCPL under AMSDOS
8 4 Compiler options 12 5 Some key facts about BCPL14 6 Two BCPL programs1
6 7 Summary of the BCPL language18 8 The Arnor BCPL libraries26 9 Differen
ces from standard BCPL49 APPENDICES 1 Technical information51 2 Summ
ary and index of library routines54 3 Portability56 4 Error messages57
Copyright (c) Arnor Ltd.,1986 Issue 1, 1986 (v1.00/2.00) AMSTRA
PD is a registered trademark of Amstrad Consumer Electronics plc. CP/M and CP/M
Plus are trademarks of Digital Research Inc. All rights reserved. It is ille
gal to reproduce or transmit either this manual or the accompanying computer pr
ogram in any form without the written permission of the copyright holder. Softw
are piracy is theft. The BCPL compiler was developed using the MAXAM assembl
er ROM. This manual was written on the PROTEXT word processor and checked usin
g PROSPELL. ce Arnor Ltd., 118 Whitehorse Road, Croydon, CR0 2JF. op fo
% ce 1. ABOUT BCPL BCPL is often
described as a "systems programming language". This makes BCPL sound very gran
d and technical, but this is not the case. BCPL is certainly a very good langua
ge for writing programs such as operating systems, compilers and word processor
s but the features that make BCPL ideal for these applications also make it an
excellent general purpose language. What are these features First, flexibility
. BCPL programs are not constrained by rules as to which operations can be perf
ormed on which type of variable. Indeed there are no different variable types -
- all variables are simple numbers and other types and structures are achieved
by using variables differently. This makes BCPL very different from other lang
uages such as BASIC and PASCAL. A string is treated as a variable pointing to a
string, similarly a vector. Even procedures are simply variables containing th
e address of the procedure, and these may be assigned to or passed as parameter
s. This flexibility allows the BCPL programmer to access any part of memory (i
ndeed any individual bit) and so do things that can normally only be done in ma
chine code. Of course freedom always carries a price -- responsibility. In lang
uages such as PASCAL the compiler detects an attempt to perform an illegal or m
eaningless operation. In BCPL it rarely does so and it is quite possible to cra
sh the system by corrupting the system memory or jumping to an illegal address.
An essential book to read This manual gives an introduction to certain
aspects of BCPL, as well as a summary of the facilities implemented in this ver
sion. It does not attempt to be a complete guide to BCPL programming, and assu
mes some knowledge of programming (for example in BASIC). Note that examples of
the use of most features of BCPL are to be found among the example programs co
ntained on the disc. The definitive book on BCPL, both as an introduction and
a reference is "BCPL -- the language and its compiler" by Martin Richards an
d Colin Whitby-Strevens. This book is essential reading for the BCPL programmer
. It is published by Cambridge University Press at a reasonable price in paper
back. Martin Richards originally designed BCPL in Cambridge in 1967. This book
will henceforth be referred to as "the BCPL book". In particular the book conta
ins an excellent section on "Advanced facilities" which covers, among other thi
ngs, pointers, bit operations, recursion and scope rules. For the purposes of
this manual, the BCPL book is regarded as defining "standard" BCPL, and any mi
nor variations or enhancements to this standard are pointed out. op ce 2. USI
NG ARNOR BCPL UNDER CP/M CPC users may use BCPL under CP/M (either 2.2 or P
lus). The supplied disc has the CP/M version of the program on one side, and th
e AMSDOS version on the other. Note PCW8256/8512 users should ignore the AM
SDOS side of the disc and the EPROM, as well as any references to Amsdos or the
EPROM/ROM version, throughout this manual. These are for CPC users only. T
he newcomer to the language is advised to pass over chapters 2, 3 and 4 on the
first reading as they describe the mechanics of using the compiler, rather than
details of the language. List of files contained on the disc -- CP/M side
The main files are BCPL.COMthe main compiler program CLIBHDRthe main I/O li
brary CLIBHDR1the extra I/O library containing less used routines DEBUGa routi
ne useful for debugging BCPL programs The disc also contains the following ex
ample files ---!-----!-----L-------!-------!-------!-------!-------!-------!-
---R AS6502.Ba 6502 cross assembler, written in BCPL BEDC.BBCPL editor source
code, CP/M version BEDC.COMBCPL editor object code, PCP/M version COPY.Ba si
mple example program which copies a file KEYDEFS.PCWa key definition file for
use with BEDC.COM on the PCW8256/8512. TIDY.BA BCPL program to format BCPL sou
rce code tidily ---!-----!-----!-------!-------!-------!-------!-------!-------
!----R Creating a working disc NOTE Under no circumstances should the or
iginal disc be used as a working disc for normal use. The required files should
be copied onto a system disc and the original retained in a safe place, as a b
ackup. A system disc should be created using DISCKIT (DISCKIT3, DISCKIT2 or
FORMAT, as appropriate on the CPC range) to format a disc. The first four files
in the above list should then be copied (using PIP) from the supplied BCPL dis
c onto the newly formatted disc, together with (if using CP/M Plus) the EMS fil
e from the CP/M System Utilities disc. This will create a disc suitable for us
e, but you might also decide to add further files, such as an editor or SETKEYS
.COM (see below), to the disc. pa Entering and editing BCPL programs under CP
/M Any editor or word processor may beused for typing in BCPL programs, as l
ong as an ASCII file can be produced. The CP/M version of PROTEXT is especially
suitable (using program mode), as is the Arnor program editor supplied with ot
her Arnor CP/M programs. Alternatively CPC users can use the AMSDOS versions of
PROTEXT or MAXAM. If you do not have a suitable editor the program BEDC.COM c
an be used, and this should also be copied onto the system disc. This is a sim
ple full screen editor which is compatible with PROTEXT editing commands. No
te If using BEDC.COM with a PCW8256/8512, the keys must be defined using SETKE
YS. Suitable definitions are provided in the file KEYDEFS.PCW and the syntax us
ed is SETKEYS KEYDEFS.PCW This can be incorporated into a PROFILE.SUB file
, in which case, both SETKEYS.COM and SUBMIT.COM must also be copied onto the w
orking disc. Compiling a BCPL program under CP/M The CP/M version of th
e compiler takes a file containing BCPL source code and produces a COM file con
taining an executable CP/M object code program. There is no intermediate compil
ation stage. The command to compile a program is bcpl source destination
where source and destination are the names of the files from which code is take
n and to which it is written. The destination filename is optional and if omitt
ed will default to the source file name with a .COM extension. The extensions o
n both filenames are optional. If the source name has no extension then the com
piler will first search for a file with no extension and then for a file with a
.B extension. The same applies in the GET directive on both CP/M and AMSDOS ve
rsions. If the destination file has no extension then this will default to .COM
. e.g.bcpl as6502 will first look for the file AS6502 and if it is not pre
sent will then look for the file AS6502.B. The compiler will read this file and
then send the object code produced to a file AS6502.COM. pa Under CP/M Plus
the compiler returns an error return code if an error occurred. It can then be
convenient to use SUBMIT to compile and run the program with a single command.
The CP/M conditional command facility can be used so the the program is only ex
ecuted if no error occurred. For example a file COMPILE.SUB may contain the fol
lowing bcpl program.b y program The second line causes the previous versi
on to be deleted. Note that this will only work under CP/M Plus (CPC6128 and PC
W8256/8512) and not under CP/M 2.2. Including other files Other BCPL so
urce files may be included at any point in a program by using the GET directive
. GET "file" causes compilation to continue with the new file. At the end
of the included file compilation resumes at the point after the GET directive
in the original file. Most programs will start by including the library routi
nes GET "CLIBHDR" GET "CLIBHDR1"// often not needed GET "DEBUG"// used when
debugging (see section 8k) Note that the GET directives to include the libra
ry routines must be in the order shown because routines in CLIBHDR1 call other
routines in CLIBHDR. Compilation stops on the CP/M version when afull stop '
.' is found in the initial source file which was specified in the original com
mand line, or when the end P of that file is reached. pa ce 3. USING ARNOR BC
PL UNDER AMSDOS NOTE PCW8256/8512 users should ignore this chapter. BCPL
may be used from Amsdos on the CPC range, either in ROM form or from a disc. I
f the ROM version is being used, the files BCPL.BAS and BCPL.BIN are not requir
ed, though the library files will still be required. NOTE Under no circumsta
nces should the original disc be used as a working disc for normal use. The req
uired files should be copied onto a system disc and the original retained in a
safe place, as a backup. Creating a Working disc A new disc should be form
atted and the first six files from the list below should be copied onto it, usi
ng either FILECOPY or PIP from CP/M, depending on the model being used, or the
COPY command from the UTOPIA ROM if that is installed. This will produce a disc
containing all the essential files. ROM users can omit the first two files cal
led BCPL.BAS and BCPL.BIN. Installing the ROM version Fit the 16K EPROM i
nto your ROM board following the instructions supplied with the rom board. The
ROM selection number is not critical, though it must not clash with any existin
g ROMs, even if they are not installed on the ROM board. (The disc rom for exam
ple uses ROM select 7). Suitable boards may be purchased from Arnor if you do
not already have one. The BCPL ROM provides an extremely convenient and fast e
nvironment for developing BCPL programs, particularly when used in conjunction
with PROTEXT or MAXAM. Programs can be typed in using PROTEXT or MAXAM and com
piled directly from memory. The ROM version may only be used on the CPC464, CPC
664, and CPC6128 computers. List of files contained on the disc -- AMSDOS
side The following files are most important BCPL.BASthe loader for the com
piler program BCPL.BINthe main compiler program ALIBHDRthe main I/O library A
LIBHDR1the extra I/O library containing less used routines AMSDOSa further I/O
library containing graphics routines DEBUGa routine useful for debugging BCPL p
rograms pa The disc also contains the following example files BED.BBCPL edi
tor source code, AMSDOS version BED.BINBCPL editor object code, AMSDOS version
BED1.Ba file containing directives to compile BED DIS.Ba Z80 disassembler writ
ten in BCPL INVADE.Ba space invaders game, written in BCPL Loading the AMSDO
S disc version To load the compiler typeRUN"BCPL" Entering and editing B
CPL programs under AMSDOS Any editor or word processor may beused for typing
in BCPL programs, as long as an ASCII file can be produced. PROTEXT (using pro
gram mode) and MAXAM are especially suitable, in particular the ROM versions ar
e recommended for convenience. If you do not have a suitable editor the program
BED.BIN can be used. This is a simple full screen editor which is compatible w
ith PROTEXT editing commands. Any source files created should preferably be sa
ved to disc with a '.B' suffix to the filename. This is not essential, but does
help identify the type of files on a disc. Compiling a BCPL program under A
MSDOS Apart from having to load the disc version, the disc and ROM versions
are used in exactly the same way. There are, however, a few differences when co
mpared with the CP/M version. The major difference is that the CP/M version all
ows the inclusion of source files within other source files. The AMSDOS version
does not allow this although it does allow the inclusion of stored PROTEXT/MAX
AM text. Due to this limitation the AMSDOS version has a simple front end which
allows you to type in source code which will then be submitted directly to the
compiler. pa To run the compiler type BCPL The screen will clear and th
e BCPL signon message will be printed. You will then be prompted with "Output f
ile name". The name you type here is the name of the file into which the progra
m will be compiled. It is also possible (unless the program is too large) to co
mpile directly into memory. To do this just press RETURN (or ENTER) in respons
e to the question. You will then be presented with the BCPL prompt '--'. The c
ompiler is now ready to accept BCPL code for compilation. This will almost alwa
ys consist of one or more GET directives. There are two forms permitted (i)G
ET "file"to include another previously prepared file (ii)GETto include the cu
rrent text (PROTEXT P/MAXAM) Any number of GET directives may be typed. Afte
r each one the compiler will perform the first part of the compilation. To end
the compilation and produce the object code type a full stop '.'. Note If
the '.B' extensionof a source filenameis omitted from the filename in a GET com
mand when the filename contains it, Amsdos will initially produce the message '
filenot found'but will continue to search for a file with the .B extension and
compile it. pa Testing BCPL programs under AMSDOS If a program is compiled
to memory, as described above, the command 'GO' may be used to run the program.
Typing 'GO' will run the most recently compiled BCPL program. If no program h
as been compiled, or an error occurred on compilation, then GO will simply prin
t the message "No program". WARNING - it is possible to corrupt a compiled pro
gram in memory by editing the PROTEXT or MAXAM text, so after editing the progr
am should always be compiled again before using GO. With large programs it is
quite likely that there will be insufficient memory to compile to memory. There
are three courses of action that may be taken here (i) if you are using the
disc version, buy a ROM board and use the ROM version. You will gain an extra
16K of memory. (ii) compile directly to disc. (iii) use the CP/M version.
Extra facilities for ROM users ROMON7 Some programs (particularly games)
will not run with a rom installed. The command ROMON7 is provided to enable th
e BCPL rom (and any others) to be turned off. All roms except the AMSDOS rom wi
ll be turned off. Note that ROMON7 will reset the computer and lose the conten
ts of memory. RUN"DISC When the BCPL ROM is installed, pressing CTRL-ENTER
will generate the command RUN"DISC. Thus a file 'DISC' will be run when CTRL-E
NTER is pressed. pa ce 4. COMPILER OPTIONS The OPTION directive contro
ls various compiler facilities. It does not cause any code to be generated. The
re are 5 options on the AMSDOS versions of the compiler and 3 on the CP/M versi
on. Multiple options may be selected with a single OPTION directive by separat
ing the options with commas. The OPTION directive may appear anywhere in a pro
gram so options can be selected for any part of a program. The three options
common to all versions are as follows If the option is followed by a '+' sig
n the option will be switched on and if followed by a '--', it will be switche
d off. L -- switch listing on or off. e.g. OPTION L+ S -- switch stack
checking on or off. If checking is on then the compiler will check for stack o
verflow at the entry point of each procedure. If stack checking is off then the
stack may overflow and crash the machine. e.g. OPTION S-- B -- switch br
eak checking on or off. If checking is on then the object code produced will ch
eck whether the break key (ESC or STOP) has been pressed at the start of loops
and at the entry points of procedures. A number may be specified to control how
often the key is checked. The default is 10, which means it is checked once fo
r every ten loops or procedures. e.g. OPTION B-- OPTION B+25 The de
faults for the above options are listing off, stack checking on, break checking
on. pa The remaining two options are only available on AMSDOS versions.
O -- sets the code origin to the value of the number which follows it. e.g
. OPTION O #x172 will produce code which will run at address 172 (hex). H
-- sets the highest byte usable by the compiled code. This is so that programs
compiled on one machine can be run on another. e.g. OPTION H 40000 The or
igin defaults to the first unused byte of memory at compile time (after any BAS
IC program or text) and the highest byte defaults to the last unused byte of me
mory at compile time (usually HIMEM). The main use for the H and O options is
when producing stand alone code to be run from a disc with no BASIC support et
c. These options enable all of the memory to be used for a program. It should b
e noted however that if the Z80 stack pointer goes below #x4000 or above #xC00
0 then the machine will probably crash due to the ROM paging which uses these a
reas of memory. pa ce 5. SOME KEY FACTS ABOUT BCPL (i) BCPL is a struct
ured language A BCPL program is made up of a number of named procedure Ps, e
ach of which is quite separate. There is one special procedure, called 'start'
, which must be present in every BCPL program. This is where execution will beg
in. This procedure will call other procedures, which will in turn call other pr
ocedures, and so on. You will later come across terms such as blocks, compound
commands and scope -- terms that apply to structured languages in general. Exa
mples of other structured programming languages are Pascal, Modula2 and C. Loco
motive BASIC and Mallard BASIC are not structured languages. (ii) BCPL is
a compiled language BASIC is usually an interpreted language. When a program
is run, the BASIC interpreter reads each line and executes the appropriate mac
hine code instructions. This decoding is done every time a line is executed. Th
e result is that BASIC programs run very slowly when compared with a machine co
de program doing the same thing. A BCPL program must be submitted to the compil
er before it can be run. The compiler translates the entire program into machin
e code instructions. The machine code program is saved and can then be run. Si
nce each BCPL line is only translated once, a BCPL program runs a lot faster th
an a corresponding BASIC program. The disadvantage of using a compiled language
is that you have to wait for the program to be compiled each time before you c
an test it. This is not a problem with Arnor BCPL since it compiles extremely
quickly. (iii) BCPL is a typeless language Most languages have a number
of internal variable types. BASIC usually has 6 -- integer, real, string, integ
er array, real array, and string array. PASCAL and C have rather more, and have
the ability for the programmer to define his own using "record" or "struct".
BCPL has just one internal variable type -- a variable can be assigned a single
word value. This is referred to as a bit-pattern indicating that no inherent m
eaning is attached to this value. The meaning of the value is determined by the
way that the programmer uses it, and this meaning can change. In Arnor's imple
mentation of BCPL each value is 16 bits long. There follow some examples of how
some of the common data types are used in BCPL. Note that in each case a 'LET'
declaration is required to define a variable before it can be used. pa Simul
ating different variable types IntegerLET number number 42 This assign
s the value 42 (that is the bit pattern 0000000000101010) to the variable 'numb
er'. CharacterLET char char 'A' This assigns the number 65 (the ASCII
code representing the letter'A') to the variable 'char'. VectorLET array VE
C 10 FOR i0 TO 10 DO array!i i This sets aside an 11 word (22 byte) area of
memory, and assigns the address of the start of this area to the variable 'arr
ay'. The vector is accessed by the indirection operator '!', where 'array!i' me
ans the contents of address (array+i). !array means the same as array!0. Two
dimensional array MANIFEST $( m3, n4 $) LET array VEC (m+1)*(n+1) -- 1 LE
T getarray(i,j) array!(m*i+j) LET putarray(i,j,value) BE array!(m*i+j) value
Multi-dimensional arrays can be implemented by defining a vector and calcula
ting the required word from the array subscripts. StringLET text "BCPL is a
typeless language" This stores the string "BCPL is a typeless language" somew
here in memory, preceded by a byte containing the length of the string. The va
lue assigned to the variable 'text' is the address of this length byte. Note th
at this is only possible because the memory address is the same length as the B
CPL word (this is not a coincidence!). Note There is a very important differe
nce between the use of single and double quotes, and confusing these can lead t
o bugs that are very difficult to find, so be careful! The BCPL book contains a
very useful section on the pitfalls of BCPL programming. Single quotes encl
ose a character and define a constant whose value is the ASCII code of that cha
racter. Double quotes enclose a string and define a constant whose value is t
he address of that string. pa ce 6. TWO BCPL PROGRAMS (i) A very simple BCP
L program This simply displays a message on the screen. GET "CLIBHDR" L
ET start() BE $( writes("Hello everyone!") $) Points to note 1. LET
and BE are BCPL keywo Prds. BCPL keywords are printed in upper case throughou
t this manual for clarity. It is not necessary to type them in upper case as th
e compiler ignores the distinction. 2. start(). This is the procedure that mu
st be present. The brackets indicate that 'start' is the name of a procedure. T
hey will often contain parameters for the procedure. 3. $( and $). These are
section brackets, marking the start and end of the procedure 'start'. 4. wr
ites. This is a BCPL procedure (note the brackets containing the parameter). It
is not a BCPL keyword and so the procedure must be defined somewhere (see belo
w). 5. GET "CLIBHDR". This is a directive (an instruction to the compiler) t
o compile the BCPL code contained in the file 'CLIBHDR'. This file is a library
of useful procedures, including one called 'writes'. (ii) A slightly more
complex BCPL program GET "clibhdr" /* This is a copy routine */ LET
start() BE $( LET inname VEC 20 LET inbuff VEC 82 LET outname VEC
20 LET outbuff VEC 82 LET c 0 pa writes("Input file name ") reads(
inname) writes("*nOutput file name ") reads(outname) TEST findinput(inn
ame, inbuff) THEN $( selectinput(inbuff) TEST findoutput(outname, o
utbuff) THEN $( selectoutput(outbuff) $( c rdch()
UNLESS cendstreamch DO wrch(c) $) REPEATUNTIL c endstream
ch endwrite() $) ELSE writes("Can't open output file") end
read() $) ELSE writes("Can't open input file") $) Points to note 1.
The use of /* and */ to enclose comments. 2. The use of LET to declare the v
ariables 'inname', 'inbuff', 'outname', 'outbuff', and 'c'. All variables must
be declared before use, and the declarations must appear before any commands.
3. The use of VEC to define vectors as described above. 4. reads. Another l
ibrary procedure, to read a string from the keyboard into the vector given as p
arameter. 5. findoutput, findinput, readch, writech. Library procedures to o
pen files, and read and write characters. 6. TEST ... THEN ... ELSE. A condit
ional command. Section brackets are used to enclose the block of commands that
will be executed if the test succeeds or fails. 7. REPEATUNTIL. The precedin
g block (enclosed in section brackets) is repeated until the condition becomes
true (in this case when the end of the file is reached). pa ce 7. SUMMARY OF
THE BCPL LANGUAGE The BCPL language is best considered in two parts. First
the standard language comprising the commands and syntax for expressions, cons
tants etc. Second the input/output library routines which are mostly procedures
written in BCPL. There are a fairly standard set of these, but this implementa
tion includes additional I/O routines. Elements -----L---!-------!-------!
-------!-------!-------!-------!-------!--R (i)Variable name. Must start with a
letter and may also contain digits and full stops. All characters significant.
(ii)Number. Can be decimal, octal (prefix with # or #O), hexadecimal (prefix
with #X), or binary (prefix with #B). (iii) String constant. Enclose in double
quotes. (iv)Character constant. Enclose in single quotes. Certain characters
are represented within a string or character constant in a special way *" t
he " symbol *' the ' symbol ** the * symbol *B the backspace character *C a
carriage return (13) *N the newline character (in fact two characters, 13 and 1
0) *P the new page (form feed) character (12) *S a space *T the tab character
*Xnn a hexadecimal number between 0 and FF, e.g. *XF1 (v)Truth values, TRUE
and FALSE. Pre-defined constants whose values are the bit patterns representin
g true and false. Operators Addressing operators !indirection (subscr
ipt), e.g. !a, a!b address of, the inverse of !, so (!a) a Arithmetic opera
tors +addition --subtraction *multiplication /integer division REMinteger
remainder pa Relational operators equal to (or EQ) not equal to (or or N
E) less than (or LT) greater than (or GT) less than or equal to (or LE) great
er than or equal to (or GE) Logical operators or (or / or LOGOR) &and (
or / or LOGAND) not (or or NOT) EQVbitwise equivalence NEQVexclusive or
Shift operators logical shift left, e.g. a4 shifts left 4 bits logical shif
t right Other co P mponents of expressions (i)Function call (s
ee below) (ii)Conditional expression, e.g. a -- b, c This means evaluate a as
a truth value. If true then the value of the expression is b, otherwise c. (i
ii)TABLE, e.g. TABLE a,b,c,d This is an expression whose value is the address i
n memory at which the table of values is stored. The values must be constants.
(iv)VALOF (see below) Order of precedence of operators (highest first)
1. Bracketed expression 9. 2. Function c
all 10. 3. ! as subscript
11. & 4. , ! as indirection
12. 5. % 13. EQV NE
QV 6. * / REM ABS 14. -- (conditional
expression) 7. + -- 15. TABLE
8. 16. VALOF pa Note PCW use
rs will find two of the operator symbols not shown on their keyboards. They are
obtained by the following key combinations --EXTRA key and the key marked wit
h a 1/2 symbol. --EXTRA key and the full stop key. Section brackets and co
mpound commands Many of the commands described below apply to a single comman
d. For example REPEAT will repeat a command until the required condition is tr
ue. Section brackets are used to group several commands as a 'compound command'
, which is considered as a single command for these purposes. The section brack
ets are $( and $). The commands to be grouped should be enclosed between these
symbols. Commands Assignment is used to assign a value to a variabl
e. There are three basic forms of the assignment statement variable express
ion variable!subscript expression !variable expression Conditional comm
ands IF expression THEN command UNLESS expression DO command TEST expressio
n THEN command ELSE command Note that IF does not take an ELSE clause, TEST m
ust be used. The ELSE clause must be present in a TEST command. REPEAT and
WHILE command REPEAT command REPEATUNTIL expression command REPEATWHILE ex
pression WHILE expression DO command UNTIL expression DO command pa FOR loop
FOR i a TO b DO command FOR i a TO b BY c DO command In the first case
i takes values starting at a, incrementing by 1 until greater than b. In the
second case i is incremented by c. c must be a constant expression. SWITCH
ON SWITCHON expression INTO compound command The compound command consists
of a sequence of commands with case labels attached to commands. A case label
takes the form 'CASE constant', and causes execution to start at the following
instruction if expression has the value constant. Execution will continue unti
l an ENDCASE command, or to the end of the SWITCHON compound command. The label
'DEFAULT' marks the place where execution is to start if expression does not
evaluate to any of the constants specified by case labels. For an example of th
e use of SWITCHON see the 'writef' routine in CLIBHDR or ALIBHDR. Blocks and
scope of identifiers A BCPL program is made up of one or more blocks. A bloc
k consists of a sequence of declarations (see below) followed by a sequence of
commands. To be precise a BCPL program is a single block, and any block may co
ntain nested sub-blocks. The scope of an identifier (variable or procedure) d
efines those parts of a program where that identifier can be used. Each identi
fier must be declared with a declaration. The scope of that identifier is that
same declaration (thus allowing recursive definitions), and all subsequent decl
arations and commands within that block. Thus if a routine is called which is
outside the block (and routines are usually separate blocks) then variables def
ined within the original block may not be used. There is an important restri
ction. Variables defined within a block may not be used within a procedure defi
ned within that block (even though they are in scope). An attempt to do so will
produce the error message 'dynamic free variable used'. pa produce the error
message 'dynamic free variable used'. p PBCPLM2 //zhis will substitute a
dummy routine. pa ---!-----!-----!-------!-------!-------!-------!-------!
-------!----R pn 22 tm 3 bm 11 hm 0 fm 2 fo
% -----L---!-------!-------!-------!-------!-------!-------!-------!--R Dec
larations The LET declaration All variables and routines must be declared
before they can be used. There are several forms of declaration LET variable
expression This defines a variable and gives it an initial value. If no in
itial value is relevant '' may be used in place of the expression. LET array
VEC constant This creates a vector with the variable 'array' containing the
address of the vector. Procedures LET proc(p1, p2, ...) expression L
ET proc(p1, p2, ...) BE command These define a procedure with parameters p1,
p2,.... The first form provides a function, as a value is returned. The express
ion is often a VALOF clause. This takes the following form VALOF command
The command is usually a compound command which contains one or more RESULTIS c
ommands RESULTIS expression When a RESULTIS command is executed the VALOF
command has finished and the value of the expression is returned. The second
form of the procedure declaration defines a routine. No value is returned.
Either form of procedure is invoked by a command proc(a,b,...) A function
call can appear in an expression. pa Other declarations GLOBAL $( var1 c
1 var2 c2 ... $) STATIC $( var1val1 var2val2 ... $) Dynamic variables (
those defined with LET) only have an allocated area of memory when they are wit
hin scope. Variables defined with GLOBAL or STATIC have a permanently allocated
word of memory. The STATIC declaration allows an initial value to be set. The
GLOBAL declaration is redundant in this implementation as it is used when sepa
rate compilation is available. It is included for compatibility with other BCPL
compilers. A global vector can be defined as follows. Declare the name of th
e vector as a static variable, then declare a dummy vector in 'start' and assi
gn this to the static variable. This ensures that the vector is in scope throug
hout the program. Example STATIC $( errlev0 $) LET start() BE $( LET er
rvecVEC 3 errlev errvec ... MANIFEST $( name1val1 name2val2 ... $)
The MANIFEST declaration attaches a name to a constant. It is not a variable
and should be used liberally within a BCPL program to aid readability, and to e
nable constants used by a program to be easily changed if necessary. Simul
taneous declarations A LET declaration may be followed by any number of AND
declarations. All these declarations are considered as a single declaration for
the purposes of scope of identifiers. This allows mutually recursive procedure
s LET proc1(...) BE $( ... proc2(...) ... $) AND proc2(...) BE $( .
.. proc1(...) ... $) pa Strings Strings are stored as follows One byte
being the length of the string The string, one character per byte Since BCPL
works with 16 bit words a special means is needed to access the individual cha
racters of a string. This is the infixed byte operator '%'. To access the nth c
haracter of a string use string%n To access the length of a string use str
ing%0 These can be read and written to, allowing strings to be manipulated in
any desired manner. Transfer of control FINISH This causes execution
of the program to stop. RETURN Control returns to the calling routine.
BREAK Used within a repetitive command (UNTIL, WHILE, REPEAT, REPEATUNTIL, R
EPEATWHILE, or FOR) it causes execution to resume at the first command after th
e repetitive com Pmand. LOOP Control passes to the point where the repeti
tive command condition is tested. For a FOR command control passes to the poin
t where the control variable is incremented. ENDCASE Control passes to the
command after the end of the SWITCHIN compound command. GOTO expression
Rarely required in BCPL, the GOTO command evaluates the expression and jumps to
the address obtained. The expression is usually a label which is defined by be
ing attached to a command, e.g.labelname command pa Comments and layout of
programs There are two ways of putting comments within BCPL programs. // c
auses the remainder of the line to be ignored /* causes all text to be ignored
until the compiler reaches the symbol */ Additionally a in column 1 causes
the whole line to be ignored. Thus PROTEXT stored commands are ignored. Mult
iple command lines are allowed. Commands must be separated by a semicolon () if
there would otherwise be an an ambiguity. Blank lines and spaces are ignored
except where they are required to separate items. PROTEXT soft spaces, soft li
ne feeds, and markers are ignored. pa ---!-----!-----!-------!-------!-------
!-------!-------!-------!----R ce 8. THE ARNOR BCPL LIBRAR
IES The libraries supplied with the compiler provide procedures for writin
g to the screen, printer or files and reading from the keyboard or files. Each
of these procedures is described below. The two versions of the compiler need d
ifferent libraries which, although they look the same from the outside, have di
fferent internal workings determined by the different operating systems. There
is an additional AMSDOS library which contains routines which are only relevan
t to the CPC machines. Manifest constants defined in the libraries These s
hould be used where appropriate to make programs both readable and portable. Th
ey define implementation dependent constants. ---!-----!-----!-------L-------
!-------!-------!-------!-------!----R namevalue meaning and use bitsperwo
rd16BCPL word size, for program portability bytesperword2BCPL word size, for pr
ogram portability endstreamch--1hard end of file character maxint32767the larg
est possible integer minint--32768the smallest possible integer newlinech269th
e new line character, *N, which is expanded to carriage return followed by line
feed printstream1stream number to select output to printer softeofch26soft en
d of file character tickspersec300multiply the value returned by 'time' by this
to get the time in seconds. AMSDOS only. vdustream0stream number to select sc
reen/keyboard ---!-----!-----L-------!-------!-------!-------!-------!-----
--!----R Key to procedure descriptions Effect brief explanation of the proce
dure Returnsdetails any value returned by the procedure. All library procedure
s may be called as routines, whether or not they return a value. Only those pro
cedures that return a value may be called as a function. Note that several pro
cedures return values in a supplied vector, but these will be listed as 'nothin
g' since there is no function value returned. Locationthis indicates where the
procedure is defined. The location for the CP/M version is given first, follow
ed by the location for the AMSDOS version. Most of the library procedures are
written in BCPL and are contained in one of the library files. A few routines
are pre-defined, i.e. they are written into the compiler. pa -------------- L
-------!-------!-------!-------!-------!-------!----R (a) Output Routines
NEWLINE() EffectStarts a new line in the currently selected output. The exac
t effect in Arnor BCPL is to output a carriage return (13) followed by a line f
eed (10). ReturnsNothing LocationCLIBHDR, ALIBHDR NEWPAGE() Effect
Starts a new page in the currently selected output. The exact effect in Arnor B
CPL is to output the form feed character (12). ReturnsNothing LocationCLI
BHDR1, ALIBHDR1 WRCH(char) EffectThe character is sent to the currently
selected output stream. Wrch('*N') has the same effect as newline(), i.e. carr
iage return and line feed are output. ReturnsTRUE if successful, FALSE if an
error occurred. LocationCLIBHDR, ALIBHDR Exampleswrch(char) wr P
ch('A') WRITED(integer,width) EffectThe integer is output as a signed
decimal integer, right justified in a field of the specified width. If this wi
dth is insufficient then it will be output in the minimum width. The number out
put will be in the range (--32768,32767). ReturnsNothing LocationCLIBHDR,
ALIBHDR pa WRITEF(format,a,b,c,d,e,f,g,h,i,j,k) EffectWRITEF allows charac
ters to be printed out according to certain formats. The procedure takes one st
ring parameter which gives the template to be used for printing. It also takes
another set of parameters (up to 11) which give the items to be printed. Note
that it is not necessary to provide a BCPL procedure with all of its formal pa
rameters. The template parameter is a string which may include the % character
followed by a conversion character(s). The template string is printed out with
the other parameters inserted into it in place of the % character. The conver
sion characters available are listed below. Some of these must be followed by a
number to specify the required field width. These are marked with 'n', which
can be a decimal or hex digit (so 'F' gives the maximum width of 15). ------
-------- !-----L-!-------!-------!-------!-------!-------!----R S -- print a s
tring C -- print a character Xn -- print ahex value. If the field width is to
o small, only the least significant digits will be output. On -- print an oct
al value. If the field width is too small, only the least significant digits wi
ll be output. In --print an integer in decimal. If the field width is too sma
ll, the integer will be output using the least number of spaces. N -- print a
n integer in decimal with no leading spaces % -- print the % character $ --
skip a parameter -------------- L-------!-------!-------!-------!-------!---
----!----R ReturnsNothing LocationCLIBHDR, ALIBHDR Example LET conve
rt 100 writef("%N in hexadecimal is %X4*N", convert, convert) would print
100 in hexadecimal is 0064 pa WRITEHEX(integer,width) EffectThe integer
is output as an unsigned hexadecimal integer, right justified in a field of th
e specified width, with leading zeros. If this width is insufficient then the
least significant digits are output. ReturnsNothing LocationCLIBHDR, ALIB
HDR Examplewritehex(number,4) WRITEN(integer) EffectThe integer is ou
tput in decimal in the minimum width. This is the same as WRITED(integer,0).
ReturnsNothing LocationCLIBHDR, ALIBHDR WRITEOCT(integer,width) Effe
ctThe integer is output as an unsigned octal integer, right justified in a fiel
d of the specified width, with leading zeros. If this width is insufficient the
n the least significant digits are output. ReturnsNothing LocationCLIBHDR
, ALIBHDR Examplewriteoct(number,6) WRITES(string) EffectThe string i
s output. ReturnsNothing LocationCLIBHDR, ALIBHDR Examplewrites("Enter
filename ") pa WRITET(string,width) EffectThe string is output in the spe
cified field width. If the width is longer than the string then spaces are out
put at the right. If the width is shorter than the string, the whole string is
printed. ReturnsNothing LocationCLIBHDR1, ALIBHDR1 WRITEU(unsigned,wi
dth) EffectThe first parameter is treated as an unsigned integer and output
in decimal, right justified in the specified width. If the width is too small t
he number is printed in the minimum width. The number output will be in the ra
nge (0,65535). ReturnsNothing LocationCLIBHDR1, ALIBHDR1 pa (b) Input Ro
utines RDCH() EffectReads a character from the current input stream.
ReturnsThe character read. LocationCLIBHDR, ALIBHDR READN() EffectRea
ds a decimal integer from the current input stream. Leading spaces are ignored.
ReturnsThe number read. LocationCLIBHDR, ALIBHDR READS(string) Ef
fectA string is read from the current input stream. The parameter is a vector i
n which the string will be stored. The string must be terminated by a carriage
return. The DEL, or DEL key may be used to delete backwards. If ESC or STOP is
pressed when the cursor is not at the start of the string, all characters are
deleted. If PESC or STOP is pressed when the cursor is at the start of the s
tring, a string of zero length is returned. The string is limited to a length o
f 255 bytes, so the vector string should be 128 words in length. ReturnsFAL
SE if ESC or STOP pressed, otherwise TRUE LocationCLIBHDR, ALIBHDR Example
LET input VEC 128 UNLESS reads(input) DO error("Escape") pa STRTONUM(strin
g,base) EffectThis function takes a string as its first parameter and the ba
se of the result as its second. It converts the string to a number in that base
and returns it as the result. ReturnsThe number obtained by the conversion
LocationCLIBHDR, ALIBHDR ExampleA READX function to input a hexadecimal nu
mber is easily written LET readx() VALOF $( LET string VEC 1
28 reads(string) RESULTIS strtonum(string,16) $) U
NRDCH() EffectPuts back the last character read from the currently selected
stream. This routine should not be called twice without an intervening call to
RDCH, the second call will have no effect. Characters can only be returned to
the current stream if RDCH is used, the facility is not provided at the primiti
ve I/O routine level (that is RDVDU and READCH). ReturnsNothing LocationC
LIBHDR, ALIBHDR Examplech rdch() REPEATUNTIL ch13 unrdch() pa (c) Strea
m Selection Routines INPUT() EffectThis will return a value representing
the current input stream. Zero means the keyboard is the current input stream
, any other value is the address of the buffer associated with the file from wh
ich input is being taken. ReturnsThe current input stream LocationCLIBHDR
, ALIBHDR OUTPUT() EffectThis will return a value representing the curre
nt output stream. Zero means the VDU is the current stream, one means the prin
ter is the current stream, any other value is the address of the buffer associ
ated with the file to which output is being sent. ReturnsThe current output
stream LocationCLIBHDR, ALIBHDR SELECTINPUT(stream) EffectThis is use
d to change the currently selected input stream (i.e. that used by rdch). A str
eam value of zero selects the keyboard. Any other value must be the address of
the buffer associated with a file, and causes input to be taken from that file
. The file must previously have been opened using FINDINPUT. ReturnsNothing
LocationCLIBHDR, ALIBHDR pa SELECTOUTPUT(stream) EffectThis is used to
change the currently selected output stream (i.e. that used by wrch, writef et
c.). A stream value of zero selects the VDU, a value of one selects the printe
r. Any other value must be the address of the buffer associated with a file, an
d causes output to be sent to that file. The file must have been previously op
ened using FINDOUTPUT. ReturnsNothing LocationCLIBHDR, ALIBHDR Examples
selectoutput(outfilebuf) selectoutput(printstream) (d) File I/O Routin
es ENDREAD() EffectThe currently selected input stream is closed. Ret
urnsTRUE if the file was closed successfully, FALSE if not. LocationCLIBHDR,
ALIBHDR ENDWRITE() EffectThe currently selected output stream is closed
. It is essential that either this routine or CLOSEOUT is used after writing t
o a file, as it causes the last section of data to be written to the disc. R
eturnsTRUE if the file was closed successfully, else FALSE. LocationCLIBHDR,
ALIBHDR pa FINDINPUT(filename,buffer) EffectTo open an input file. The fi
rst parameter is a string giving the name of the file. The second parameter is
a vector which will be used for the file buffer. This vector should be 82 word
s long under CP/M and 1024 words long under AMSDOS. The filename must be a vali
d CP/M or AMSDOS filename, and may include a drive specifier. ReturnsIf the
file was opened successfully, the value 'TRUE' is returned, otherwise 'FALSE'.
LocationCLIBHDR, ALIBHDR ExampleLET inbuf VEC 82 TEST findinput("Anames
.dta",inbuf) THEN selectinput(inbuf) ELSE error("Cannot open file") FIND
OUTPUT(filename,buffer) EffectTo open an output file. The first parameter is
a string giving the name of the file. The second parameter is a vector which w
ill be used for the file buffer. This vector s Phould be 82 words long under C
P/M and 1024 words long under AMSDOS. The filename must be a valid CP/M or AMS
DOS filename, and may include a drive specifier. ReturnsIf the file was open
ed successfully, the value 'TRUE' is returned, otherwise 'FALSE'. LocationCL
IBHDR, ALIBHDR ExampleLET outbuf VEC 82 TEST findoutput("Anames.dta",outbuf
) THEN selectoutput(outbuf) ELSE error("Cannot open file") pa REWIND()
EffectThe current input stream is rewound. If the current stream is the keyboa
rd this has no effect, if a file the file pointer is set to the start of the fi
le, so the next input will be taken from the start. REWIND is not provided in
the AMSDOS version. ReturnsNothing LocationCLIBHDR ---!-----!-----!--
-----!-------!-------!-------!-------!-------!----R Example of the use of fil
e I/O routines LET buffer VEC 1024 LET filename VEC 20 writef("Please ent
er the message file name ") reads(filename) TEST findinput(filename,buffer) TH
EN $( LET char selectinput(buffer) char rdch() UNTIL char softe
ofch LOGOR char endstreamch DO $( wrch(char) char rdch() $) endread(b
uffer) selectinput(vdustream) $) ELSE writef("No messages*N") This wil
l ask for a file name and then, if that file exists, will print out the content
s of it. -------------- L-------!-------!-------!-------!-------!-------!----R
---!-----!-----!-------!-------!-------!-------!-------!-------!----R pa (e)
The Primitive I/O Operations The library contains primitive routines for read
ing/writing to files, reading/writing to the VDU, and writing to the printer. T
he higher level RDCH and WRCH routines switch between these routines when call
ed upon to do so by SELECTINPUT or SELECTOUTPUT. It is quite possible to use th
e primitive routines separately from RDCH/WRCH and so read/write files and the
screen/keyboard at the same time without using SELECTINPUT or SELECTOUTPUT. The
se routines are RDVDU, WRVDU, READCH and WRITECH. -------------- L-------!--
-----!-------!-------!-------!-------!----R CLOSEIN(buffer) EffectThe
input file associated with the buffer is closed. ReturnsTRUE if the file was
closed successfully, FALSE if not. LocationCLIBHDR, ALIBHDR CLOSEOUT(bu
ffer) EffectThe output file associated with the buffer is closed. It is esse
ntial that either this routine or ENDWRITE is used after writing to a file, as
it causes the last section of data to be written to the disc. ReturnsTRUE if
the file was closed successfully, else FALSE. LocationCLIBHDR, ALIBHDR
FLUSH() EffectEmpties the keyboard buffer. ReturnsNothing LocationCLIBH
DR, ALIBHDR pa PRBUSY() EffectFinds out if the printer is busy. Return
sTRUE if busy, FALSE if not LocationCLIBHDR, ALIBHDR ExampleIF prbusy() TH
EN writes("Put the printer on line*N") WHILE prbusy() LOOP PRCH(char) E
ffectSends a character to the printer. If the printer is busy then PRCH waits u
ntil the character can be sent. PRBUSY should be used to test for the printer b
eing busy. This routine is called by WRCH if the printer is the selected outpu
t stream. ReturnsTRUE LocationCLIBHDR, ALIBHDR RDTEST() EffectFind
s out if a key has been pressed. ReturnsTRUE if a key has been pressed, FALSE
if not. LocationCLIBHDR, ALIBHDR ExampleWHILE rdtest() DO rdch() RDV
DU() EffectReads a character from the keyboard, whatever the currently selec
ted input stream. This routine is called by RDCH if the keyboard is the selecte
d input stream. RDVDU is pre-defined in the CP/M compiler so that it can buffe
r characters to allow for break testing without losing characters. ReturnsTh
e character read. LocationPre-defined in CP/M compiler, ALIBHDR pa READCH
(buffer) EffectReads a character from a file, whatever the currently selecte
d input stream. The buffer is not needed under AMSDOS. This routine is called b
y RDCH if a file is the selected input stream. ReturnsThe character read.
LocationCLIBHDR, ALIBHDR REWINDIN(buffer) EffectThe file pointer for th
e specified file is set to the start of the file. This routine is called by REW
IND if a file is the selected input stream. REWINDIN is not provided in the AM
SDOS version. ReturnsNothing LocationCLIBHDR P WRITECH(char,buffer)
EffectWrites a character to a file, whatever the currently selected output s
tream. The buffer is not needed under AMSDOS. This routine is called by WRCH is
a file is the selected output stream. ReturnsTRUE if successful, FALSE if a
disc error occurred LocationCLIBHDR, ALIBHDR Exampleswritech('$',outfileb
uf)// CP/M version writech('$')// AMSDOS version WRVDU(char) EffectWrit
es a character to the screen, whatever the currently selected output stream. Th
is routine is called by WRCH if the screen is the selected output stream. R
eturnsTRUE LocationCLIBHDR, ALIBHDR pa (f) Miscellaneous Routines APTO
VEC(function,arraysize) EffectThis will create a dynamic array of size arrays
ize and then pass the address of this array along with its size to the functio
n. It will return the result of the function and is equivalent to LET aptove
c(function,arraysize) VALOF $( LET v VEC arraysize// illegal in BCPL
RESULTIS function(v,arraysize) $) Returnsthe value returned by the function
LocationPre-defined, pre-defined BYTEMOVE(start,dest,size) EffectThis
is a block byte move routine. It works with actual byte addresses (that is the
addresses used by the Z80 processor) so if array names are used as a paramete
r then they should be multiplied by two as BCPL works with word addresses. The
old and new blocks may overlap. ReturnsNothing LocationCLIBHDR1, ALIBHDR1
Examplebytemove(buffer*2+36,buffer*2+16,16) CALL(address,af,bc,de,hl,ix
) EffectCalls a machine code routine at a byte address. All parameters MUST
be supplied as values are returned. The values returned by the machine code rou
tine are passed back in the variables. ReturnsNothing LocationCLIBHDR1, A
LIBHDR1 pa CAPITALCH(char) EffectIf the character is a lower case letter
the upper case equivalent is returned, otherwise the original character is ret
urned. ReturnsThe converted character LocationCLIBHDR, ALIBHDR COMPCH
(char1,char2) EffectCompares two characters, ignoring the distinction betwee
n upper and lower case. It returns the difference between the two characters.
ReturnsThe difference between the characters LocationCLIBHDR1, ALIBHDR1
COMPSTRING(string1,string2) EffectCompares two strings, ignoring the distin
ction between upper and lower case. The result is zero if the strings are the
same, positive if string1 follows string2 alphabetically, and negative if strin
g2 follows string1. ReturnsThe result of the comparison, as above Locatio
nCLIBHDR1, ALIBHDR1 DECVAL(digit) EffectThis returns the decimal value o
f a hexadecimal digit. ReturnsThe decimal value of the digit LocationCLIBH
DR, ALIBHDR Exampledecval('A')// returns 10 pa DELETE(filename,buffer)
EffectThe first parameter is a string specifying the name of a file. This file
is then deleted from the disc. The CP/M version requires an 82 word buffer, th
e AMSDOS version requires no buffer. ReturnsTRUE if the operation succeeded,
FALSE if a disc error occurred. LocationCLIBHDR1, ALIBHDR1 Examplesdelet
e("tempfile",buffer)// CP/M version delete("tempfile")// AMSDOS version LE
VEL(array) EffectThis returns the state of the BCPL program in the array giv
en. The array must be at least 4 words in size. This routine is used with LONGJ
UMP to allow jumps between procedures etc. See section 9 for more details.
ReturnsNothing LocationPre-defined, pre-defined LONGJUMP(address,array)
EffectThis will set the state of the program according to the array given. T
he array must have been set previously by the use of LEVEL. Once the state has
been set it will jump to address. See section 9 for more details. ReturnsNo
thing LocationPre-defined, pre-defined pa RANDOM() EffectThis function
returns a sequence of pseudo-random numbers. The sequence will always be the s
ame unless the seed is initialised first. The seed is stored in a static varia
ble called 'randomseed', and this should be initialised to different values to
produce different sequences. The sequence runs through all possible 2 byte val
ues. ReturnsA randomly generated integer. LocationCLIBHDR1, A PLIBHDR1
RENAME(filename1,filename2,buffer) EffectThe first parameter is a string s
pecifying the name of a file. The file is renamed to the second name. The CP/M
version requires an 82 word buffer, the AMSDOS version requires no buffer.
ReturnsTRUE if the operation succeeded, FALSE if a disc error occurred. Loca
tionCLIBHDR1, ALIBHDR1 Examples rename("oldname","newname",buffer) // CP/M v
ersion rename("oldname","newname") //AMSDOS version STOP(returncode
) EffectExecution of the program terminates. Under CP/M Plus the supplied pa
rameter is used to set the program return code. By convention a return code bet
ween #xFF00 and #xFFFE is an error code. The return code is ignored under CP/M
2.2 and AMSDOS. ReturnsNothing LocationCLIBHDR1, ALIBHDR1 pa UPPERCAS
E(char) EffectThis is the same as CAPITALCH. ReturnsThe converted characte
r LocationCLIBHDR, ALIBHDR VERSION() EffectReturns a number identifyi
ng the operating system and computer on which the program is being executed. T
he values returned are 1 CPC, AMSDOS 2 CPC, CP/M 2.2 3 CPC, CP/M Plus 4
PCW, CP/M Plus ReturnsThe version number LocationCLIBHDR1, ALIBHDR1 p
a (g) Routines provided in the CP/M libraries only BDOSA(c,de) EffectThe
BDOS is called with the parameters passed in the C and DE registers. The addres
ses of the variables must be passed in order that results can be returned. The
returned values of the A and HL registers from the BDOS are returned in the va
riables c and de respectively. ReturnsNothing LocationCLIBHDR only B
DOSB(c,de) EffectThis is similar to BDOSA except that results are not return
ed. The values of c and de are passed, not their addresses. ReturnsNothing
LocationCLIBHDR only BIOS(n,a) EffectBIOS routine n is called and the
value returned by the BIOS in A is returned in the variable a. The address of
a must be passed. This routine is used by PRBUSY. ReturnsNothing LocationC
LIBHDR only FIRMWARE(address,af,bc,de,hl,ix) EffectOn CP/M Plus, calls t
he firmware ROM (CPC6128 only) or the extended firmware jumpblock. The values r
eturned by the firmware routine are passed back in the variables. All paramete
rs MUST be supplied. ReturnsNothing LocationCLIBHDR1 only pa TAIL(stri
ng) EffectTakes a vector as parameter and stores the CP/M command tail (from
#x80) in the vector as a string. This allows BCPL programs to access parameter
s typed on the CP/M command line. The vector should be 64 words long. Retur
nsNothing LocationCLIBHDR1 only (h) Routines provided in the AMSDOS li
braries only EXTERNAL(command,nparms,parmblock) EffectThis allows a BCPL
program to access an AMSDOS external command. It is used by DELETE and RENAME.
The parameters are passed in the form required by the firmware for calling an
external command. See the DELETE and RENAME routines in ALIBHDR1 for details o
f how to use this routine. ReturnsNothing LocationALIBHDR1 only TIME
() EffectReturns the time in units of 1/300 second, as maintained by the AMS
DOS firmware. ReturnsThe time LocationALIBHDR1 only pa (i) Routines prov
ided only for compatibility -------!-------!-------!-------!-------!-------!-
------!-------!----R These are routines that may be used in existing BCPL progr
ams, but the infixed byte operator now makes their use unnecessary. ----------
---- L-------!-------!-------!-------!-------!-------!----R GETBYTE(string,po
s) EffectGets a character from a string. This routine is included for compat
ibility with older BCPL systems and would usually be replaced by string%pos
ReturnsThe character from the string LocationCLIBHDR1, ALIBHDR1 PACKSTR
ING(vector,string) EffectPacks a vector containing one character per word int
o a string containing two characters per word. This routine is included for co
mpatibility with older BCPL systems. ReturnsNothing LocationCLIBHDR1, ALI
BHDR1 PUTBYTE(string,pos,char) EffectPuts a character into a string. Thi
s routine is included for compatibility with older BCPL systems, and would usu
ally be replaced by string%pos char ReturnsNothing LocationCLIBHDR1, ALI
BHDR1 UNPACKSTRIN PG(string,vector) EffectUnpacks a string containing t
wo characters per word into a vector containing one character per word. This r
outine is included for compatibility with older BCPL systems. ReturnsNothing
LocationCLIBHDR1, ALIBHDR1 pa (j) AMSDOS Graphics and other routines --
-!-----!-----!-------!-------!-------!-------!-------!-------!----R These routi
nes are included in the file "AMSDOS", and are relevant only to CPC machines. T
hey provide the means for a BCPL program to access the computer's graphics and
other firmware facilities, and in most cases correspond directly to a Locomotiv
e BASIC command. For details of how to use these routines consult the file AMSD
OS, which lists the equivalent BASIC routines. List of routines border, c
lg, cls, cursdi, cursen, cursoff, curson, draw, drawr, ent, env, frame, gpen, g
paper, gtest, gtestr, gwindow, gwrch, ink, inkey, inkmode, keyvalid, locate, mo
de, move, mover, opaque, origin, paper, pen, plot, plotr, release, rsx, sound,
speedink, speedkey, stream, strswap, tag, tagoff, transparent, window, xpos, yp
os (k) DEBUG There is one further library routine provided, which is u
seful when debugging programs. The routine, DEBUG, is supplied in a separate f
ile, also called 'DEBUG', and provides various options for displaying variable
names and contents. These options may be changed with later releases of BCPL an
d so to ensure accuracy, exact details are only given in the file. To use DEBU
G, put the directive 'GET "DEBUG"' near the start of the program -- so it is co
mpiled after the library routines and before the first time DEBUG is called. I
t is possible to compile the program without DEBUG being called, but without th
e need to remove the calls themselves. Simply replace 'GET"DEBUG"' by 'LET debu
g() BE RETURN'. This will substitute a dummy routine. pa /!his will substit
ute a dummy routine. pa BCPLM3 YYSe Unexpected node in expres
sion Declarati---!-----!-----!-------!-------!-------!-------!-------!-
------!----R pn 49 tm 3 bm 11 hm 0 fm 2 fo
% ce 9. DIFFERENCES FROM STANDARD BCPL The INLINE command This is an
extension to the normal BCPL command set and allows Z80 code to be incorporated
directly into a BCPL program. The inline command is followed by a list of cons
tants separated by commas. The low byte of these constants is taken and inserte
d directly into the object code. This allows procedures to call firmware routin
es etc. and has been used in the LIBHDR files. In order to use this facility p
roperly you must be aware of the way that the compiler stores variables and reg
isters which must be left intact. See appendix 1 (technical information). e.
g. INLINE 205,#x5A,#xBB will call the AMSDOS print character routine -- TXT
OUTPUT. The infixed byte operator % This is an extension to standard BCP
L which is supported. The infixed byte operator will extract a particular byte
from a vector. In use this operator is very similar to the ! operator except th
at it cannot be used as a unary operator and that the second operand always gi
ves the byte offset from the first operator. The main use of this operator is w
ith strings to extract a particular character from the string. e.g. LET v
VEC 19 FOR a 1 TO 39 DO v%a ' ' v%0 39 // set the strin
g length byte will create a string containing 39 spaces. Undefined initi
al values The initial value of a simple variable declared in a LET command m
ay be undefined. This is done by using a question mark (). This is used to aid
readability of programs by indicating that there is no relevant initial value o
f a variable. FINDINPUT and FINDOUTPUT The procedures for opening files
are slightly different from standard BCPL in that a buffer must be specified as
a parameter, instead of them returning a stream identifier. pa Global Variab
les When a procedure is defined in standard BCPL the compiler checks to se
e if a GLOBAL variable with the same name is in scope. If it is in scope, then
that variable will be initialised with the address of the procedure. If there i
s no such variable in scope then a new STATIC variable will be created and Pt
hat variable initialised with the address of the procedure. When a procedure ca
ll is made the code looks up the address in the relevant variable and calls tha
t address. The reason for this indirect calling is to enable easy communication
between separately compiled units. As the ARNOR compiler does not allow separ
ate compilation there is no need for this indirect approach and so a call is ma
de directly to the address of the procedure. This also means that the number a
ssociated with a GLOBAL variable in its definition is meaningless as there is n
o actual GLOBAL vector. The index number is, however, retained for compatabilit
y with other compilers. The outcome of all this is that although it is possible
to read the address of a procedure, and so pass procedures as parameters, it i
s not possible to assign to a procedure. You can, however, set up a global vari
able with a different name from a procedure and then assign the procedure's ad
dress to that global variable in your program. This means that the procedure ca
n then be assigned to. LEVEL and LONGJUMP LEVEL w
orks in a slightly different way from most BCPL implementations. It usually ret
urns a single 1 word value representing the state of the BCPL stack at a point
in the program. Due to the limitations of the Z80 in stack addressing it is not
possible to pack the required information into one word with this implementat
ion of BCPL. Instead the LEVEL procedure returns its result in a 4 word vector
passed to the procedure. See appendix 1 (techincal information) for exact detai
ls. e.g. LET errorlevel VEC 3 level(errorlevel) Extensions not supp
orted The following features, which are mentioned in the BCPL book, are not
supported separate compilation, floating point extension, the field selector ex
tension. pa ce A1. TECHNICAL INFORMATION The compiler allocates dynam
ic storage from the hardware stack for ordinary local variables. These are acce
ssed by indexing the stack using the IX register which points to the high byte
of the last formal parameter minus 127. The formal parameters are stored in rev
erse order, coming down in memory. Immediately below the first formal paramete
r is the return address from the procedure which called the currently active pr
ocedure. Below this is the old IX register from the calling procedure and below
this a value which represents the state of the vector space. Local variables n
ow come down from this space in the order that they are declared and SP will po
int to the low byte of the last local variable currently in scope. When a new
local variable is declared, its initial value is calculated and then pushed ont
o the stack. When a vector is allocated, space is taken from the vector space,
which is directly after the program, and a pointer to this space is pushed onto
the stack. e.g. for the following procedure LET x(a,b) BE
$( LET z 0 ...
$) at the point marked by the dots the stack looks like this
b IX + 127 a IX + 125
ret addr IX + 123 old IX IX + 121 vec
ptr IX + 119 z IX + 117, SP points here When local
variables are undeclared (i.e. at the end of their block), the stack pointer i
s moved up to release the space used. pa Static variables are allocated their
space at compile time. They are embedded in the code and are re-initialised eac
h time the program is run. The stack is placed at the top of the available memo
ry. For CP/M versions this is calculated from the start of the BDOS. In AMSDO
S versions, static variable space is determined at compile time, possibly using
the H option. As already mentioned vector space is taken from the area of memo
ry directly after the program. The start of a program is #x100 for CP/M version
s and defaults to the first usable byte of memory for AMSDOS. This may be chang
ed by use of the O option. This leaves a memory map looking like
Hardware stack ------------------ SP
empty
------------------ P Vect
ors ------------------ Program and
static variables ------------------
runtime routines ------------------ program start
------------------ 0
When writing any inline code the user must ensure that the IX register and
the SP are restored to their former positions when the code finishes. Failure t
o do this will almost certainly cause the program to crash. The Amstrad also re
quires that the alternate register set is not used. The LEVEL library proced
ure stores information about the state of computation in a 4 word vector. The 4
values which are stored are as follows word 0 -- The old vector base pointe
r word 1 -- The vector top pointer word 2 -- IX word 3 -- SP When LONGJUMP
is used this information is used to restore the state of computation. pa The
14th and 15th bytes of any object program produced always point to the base of
the current vector allocation. The 16th and 17th bytes always point to the top
of the current vector allocation. All of the vector space required for any par
ticular procedure activation is allocated on entry to that procedure and de-all
ocated on exit. When a vector is declared within a procedure it is given a chun
k of memory within this allocation. The compiler is a two pass compiler. The
first pass reads the source text of the program, does syntax analysis of it an
d produces an applicative expression tree which represents the program. The sec
ond pass goes over this tree and produces code for it. The second pass is in f
act done twice the first time no code is produced but the program is checked fo
r any semantic errors such as undefined identifiers or illegal assignments. If
this pass runs smoothly with no errors being picked up then the second pass wil
l be repeated, this time generating code. pa ce A2. SUMMARY AND INDEX OF LIBR
ARY ROUTINES The letter at the start of each line in the following list o
f library routines indicates the degree of portability of the routines. Full d
etails are given in Appendix 3. Note A means AMSDOS version only, C means CP/M
version only S indicates routine is part of the standard BCPL I/O library D
indicates a standard BCPL routine but with a slight difference in the way
it is used. F indicates frequently found similar routines in BCPL systems All
unmarked routines are Arnor BCPL specific. --!---!------------!----!-------
!-------!-------!-------!-------!---------R name pgdescription Saptovec 40ca
ll a routine with a dynamically allocated vector Cbdosa 45call the BDOS, return
ing values Cbdosb 45call the BDOS, not returning values Cbios 45call the BIOS,
returning a value bytemove 40move a block of memory using byte addresses Fcal
l 40call a machine code routine Fcapitalch 41convert character from lower to up
per case closein 37close an input file closeout 37close an output file Fcompc
h 41compare two characters Fcompstring 41compare two strings debug 48debugging
aid decval 41convert a hexadecimal digit to decimal Fdelete 42delete a file
Sendread34close the current input stream Sendwrite 34close the current output s
tream Aexternal 46call an external command Dfindinput 35open an input file Df
indoutput 36open an output file Cfirmware 45call the firmware (CP/M Plus only)
flush 37flush the keyboard buffer Sgetbyte 47get a byte from a string Sinput
33return the currently selected output stream Dlevel 42get pointer to current e
nvironment Dlongjump 42jump to outer level of program Snewline 27start a new l
ine in the output Snewpage 27start a new page in the output Soutput 33return t
he currently selected output stream pa Spackstring 47compact a string prb
usy 38see if the printer is busy prch 38send a character to the printer Sputby
te 47put a byte into a string Frandom 42return a pseudo-random number Srdch 31
read a character rdtest 38see if a key has been pressed rdvdu 38read character
from the keyboard readch 39read a character from the input file Sreadn 31read
a decimal number Sreads 31read a string Creadsector-read a 128 byte sector fr
om disc Frename 42rename a file CSrewind P36rewind the input stream Crewind
in 39rewind an input file Sselectinput 33change the input stream Sselectoutput
34change the output stream Csetfcb-set up a file control block Sstop 43stop a
program and set return code strtonum 32convert a string to a decimal number C
tail 46returns the CP/M command tail as a string AFtime 46return the time Sunp
ackstring47expand a string into a vector Sunrdch 32put back the last read chara
cter Fuppercase 44same as capitalch version 44return the operating system and
computer Swrch 27write a character writech 39write a character to the output f
ile Swrited 27write a decimal number Swritef 28formatted write Swritehex 29wr
ite a hexadecimal number Swriten 29write a decimal number in minimum width Swr
iteoct 29write an octal number Swrites 29write a string Cwritesector-write a 1
28 byte sector to disc Fwritet 30write a string and pad with spaces Fwriteu 30
write an unsigned decimal number wrvdu 39write character to the screen pa ---
!-----!-----!-------!-------!-------!-------!-------!-------!----R ce A3. PORTA
BILITY Most of the above I/O routines will be found in virtually all versi
ons of BCPL. Some are less standard, and some are specific to Arnor BCPL. If a
program may be required to run under other versions of BCPL these less standard
routines should be used as little as possible. Routines that are part o
f the standard BCPL I/O library (those marked 'd' are used in a slightly differ
ent way in Arnor BCPL) aptovec, endread, endwrite, findinput(d), findoutput(d
), getbyte, input, level(d), longjump(d), newline, newpage, output, packstring,
putbyte, rdch, readn, reads, rewind, selectinput, selectoutput, stop, unpacks
tring, unrdch, wrch, writed, writef, writehex, writen, writeoct, writes. R
outines that are not entirely standard (though many BCPL systems have something
similar) call, capitalch, compch, compstring, delete, random, rename, time,
uppercase, writet, writeu. Routines specific to Arnor BCPL bdosa, bdosb
, bios, bytemove, closein, closeout, debug, decval, external, firmware, flush,
prbusy, prch, rdtest, rdvdu, readch, readsector, rewindin, setfcb, strtonum, ta
il, version, writech, writesector, wrvdu, plus all the routines in the file "AM
SDOS", which are also CPC machine specific as well. pa
A4. ERROR MESSAGES There are three main sets of error messages whic
h can occur. These are fatal errors which cause the compiler to abort immediate
ly, phase 1 errors which will stop the compilation after phase 1 and finally p
hase 2 errors which will stop compilation at the end of the first run of phase
2. Most error messages give a line number, for example "Expecting command near
line 27". The word "near" is used because the compiler gives the line number a
t which it discovered the problem, and this is not necessarily the same line th
at needs correcting. The line number refers to the position of the line within
the file, and not to the total number of lines compiled so far. (i) Fatal
Errors Out of memory The compiler has run out of room for the program or
its symbol table. Can sometimes be solved by re-using local variable names.
Out of symbol space Very similar to the above except that the program may
not be too big. Try compiling it to disc which allows twice as much symbol spac
e. If you are compiling a piece of text in memory from PROTEXT or MAXAM then s
aving the text to disc, clearing the memory and then re- compiling may solve thi
s problem. I/O error An error has occurred when writing to the output fi
le. May mean that the disc is full. Can't open input file The filename
given in a GET directive could not be found on the disc. Can't open output
file The compiler was trying to open a file to output the compiled code to,
but for some reason was not able to open it. pa Broken in ESC or STOP was
pressed twice in a row. Pressing it once will halt the compiler and cause it to
wait for another key press. Pressing escape again causes this error while any
other key causes compilation to continue. Undefined START All programs
must have a procedure called START. The program submitted did not have this pro
cedure. Bad GET Due to the limitations of AMSDOS only o Pne file can be
opened for input at any one time. A file was opened which contained a GET dir
ective. Will also occur if a piece of stored PROTEXT/MAXAM text attempts to GET
itself. Non-ASCII file The compiler was instructed to open a file but t
hat file did not contain ASCII text which is required for the compiler. Users o
f CPC versions of PROTEXT should use program mode, which will save the file in
ASCII format. File intact This occurs on CP/M versions when the destina
tion file existed but the user typed N when asked if the file should be deleted
. Bad SOURCE name CP/M versions check the source name given, and if it i
s invalid in some way e.g. has an extension of more than 3 letters then this er
ror will be given. Bad DESTINATION name As above. pa (ii) Syntax Erro
rs Phase 1 errors are all syntax errors within the program. Often the cause
will be a missing $) or ) which will probably cause what may at first seemto be
an odd error message. Syntax errors are reported as occurring near a certain l
ine. This is the line within a particular file. If the compiler listing is swit
ched off when the error occurs then a buffer, holding the last few lines of tex
t read from the source code, will be displayed. Bad expression The expr
ession being examined was faulty in some way. Maybe a command name was used as
an identifier. Bad vector definition A vector definition was bad in some
way. In particular only one vector may be declared in any LET command (althoug
h simultaneous definitions are allowed). Bad procedure definition A pro
cedure definition was badly made. May have been some other form of definition w
hich went wrong. Bad FOR loop The FOR loop was badly formed in some way.
need or in constant definition Constant, Global and Static definition
s require both and between the identifier and the constant expression. One or
the other is missing Missing $) A $) was expected but not found. Check
the number of opening and closing section brackets in the program. pa Missin
g $( A compound statement was needed but the opening $( was not found. In pa
rticular all SWITCHON statements must be compound. Missing ) A closing b
racket in an expression or procedure call/definition was missing. Section
tag mismatch A section bracket was tagged but the tag did not have a matching
opening section bracket. May be caused by omitting the space after a section
bracket. Expecting command A command was expected but one was not found.
This can be caused by, for example, omitting the colon in an assignment comman
d, or by a declaration appearing after a command. Expecting number A nu
mber was expected but not found. Usually following a #. Expecting , The
compiler was expecting a comma (,) but did not find one. Occurs in a conditiona
l expression. ELSE expected The ELSE part in a TEST statement is not opt
ional and was not present in this case. INTO expected The control expre
ssion of a SWTICHON command must be followed by the keyword INTO. In this case
it was not. pa expected A colon is expected after a case label or DEFAULT b
ut the compiler did not find one. Expecting identifier The compiler was
expecting an identifier e.g. after LET but did not find one. String too l
ong BCPL constant strings can only be 255 characters long. Bad character
The character read was illegal in the present context. e.g. it could have b
een a instead of /* Bad character constant A character constant was bad
ly formed, usually caused by a carriage return following an asterisk. Bad
option line The options in an option command must be separated by commas and
must end with a semi-colon or at the end of the line. is only allowed in
definitions Self-explanatory. The only undefined values allowed are the init
ialisation values of simple variables in a LET command. anywhere else is illeg
al. pa (iii) Semantic Errors The rest of the errors are semantic errors w
hich occur during phase two of the compiler. These are usually due to the use o
f an invalid identifier name or a badly constructed loop. Expression/id mi
smatch The number of left and right hand sides in a multiple assignment or d
eclaration was not equal. Invalid assignment You have attemp Pted to as
sign to something which is not assignable. e.g. a constant or procedure. R
ESULTIS outside a VALOF A RESULTIS command was found outside a VALOF block.
LOOP found outside loop A LOOP command is only legal inside one of the lo
oping constructs. BREAK found outside loop A BREAK command is only legal
inside one of the looping constructs. RETURN found outside PROC/FUNC A
RETURN command is only legal within a procedure or function body. ENDCASE
outside a SWITCHON An ENDCASE statement was found outside the body of a SWITC
HON command. VALOF must contain RESULTIS A VALOF expression must contai
n at least one RESULTIS command pa Invalid application of LV The LV or ope
rator was used in an incorrect context i.e. on a constant. LV is 'left value' a
nd means the evaluation of an expression to obtain an address. Dynamic fre
e variable used A variable was used in an embedded procedure which had been
declared in an outer procedure. CASE/DEFAULT found outside SWITCHON CASE
or DEFAULT statements are only valid inside a SWITCHON statement. Undefin
ed identifier A variable was used which had not been defined or was not in sc
ope when it was used. Labels need a global A label was defined when in
the scope of a local variable of the same name. As the variable will be initial
ised to the value of the label, it must be a GLOBAL or STATIC. If no variable o
f the same name is in scope then one will be created. Need constant expres
sion A constant expression was required but not found. Examples of constants
being required are the INLINE statement, declarations and CASE labels. (i
v) Internal compiler errors There is a fourth type of error but you s
hould never see these. These are internal compiler errors and indicate possible
bugs in the compiler. Please report any incidence of one of these errors to A
rnor. Error in translation node Unexpected node in expressio
n Declaration error Unexpected node in expression D
eclaraticonstants being required are the INLINE statement, declarations and CAS
E labels. (iv) Internal compiler errors There is a fourth type o
f error but you should never see these. These are internal compiler errors and
indicate possible bugs in the compiler. Please report any incidence of one of
these errors to Arnor. Error in translation nodoption b- get "clibhd
r" /* A simple full screen editor */ /* CP/M version for CP/M 2.2 and CP/M P
lus */ // modified 02/12/1986 MANIFEST $( ins TRUE over FALSE cursleft
#xF2 cursright #xF3 cursup #xF0 cursdown #xF1 escape #xFC i
gnore #xEF stop 3 scursup #xF4 scursdown #xF5 sc
ursleft #xF6 scursright #xF7 ccursup #xF8 ccursdow
n #xF9 ccursleft #xFA ccursright #xFB copensq 27
cclosesq 29 maxscrheight 31 maxchr 22998 // ca
n be increased for CP/M Plus only $) /* textend points to th
e last character in the file which will always be a character 13. textptr po
ints to the first character of the current line. textstart points to the sta
rt of the text space. */ STATIC $( insert ins textend 0 textptr 0 text
start 0 x 1 y 1 prev 0 file 0 buffprint FALSE li
nenumber 1 scrheight0 ver0 $) GLOBAL $( errvec 0 errlab 1 $) LET
bytemove(source,dest,number) BE $( inline 221,102,123 // ld h,(ix+12
3) inline 221,110,122 // ld l,(ix+122) inline 221,86,125 // ld
d,(ix+125) inline 221,94,124 // ld e,(ix+124) inline 221,70,127
// ld b,(ix+127) inline 221,78,126 // ld c,(ix+126) inline 167
// and a inline 237,82 // sbc hl,de inline 25
// add hl,de inline 56,4 // jr c,+4 inline 237,176
// ldir inline 24,8 // jr +8 inline 11 // de
c bc inline 9 // add hl,bc inline 235 // ex de
,hl inline 9 // add hl,bc inline 235 // ex de,
hl inline 3 // inc bc inline 237,184 // lddr $)
LET call(addr,af,bc,de,hl,ix) BE $( LET save3 VEC 1 bytemove(#x90, s
ave3*2, 3) 0%#x90 #xC3 0%#x91 add Pr & #xFF 0%#x92 ( addr & #
xFF00 ) 8 inline #xDD,#xE5 // push ix inline #xDD,#x66,#
x77 // ld h,(ix+119) inline #xDD,#x6E,#x76 // ld l,(ix+118)
inline #x29 // add hl,hl inline #x5E // l
d e,(hl) inline #x23 // inc hl inline #x56
// ld d,(hl) inline #xD5 // push de inline #xDD,#
x66,#x79 // ld h,(ix+121) inline #xDD,#x6E,#x78 // ld l,(ix+120
) inline #x29 // add hl,hl inline #x4E
// ld c,(hl) inline #x23 // inc hl inline #x46
// ld b,(hl) inline #xDD,#x66,#x7F // ld h,(ix+127) in
line #xDD,#x6E,#x7E // ld l,(ix+126) inline #x29 // a
dd hl,hl inline #x5E // ld e,(hl) inline #x23
// inc hl inline #x56 // ld d,(hl) inline #xD5
// push de inline #xDD,#x66,#x7D // ld h,(ix+125)
inline #xDD,#x6E,#x7C // ld l,(ix+124) inline #x29
// add hl,hl inline #x5E // ld e,(hl) inline #x23
// inc hl inline #x56 // ld d,(hl) inline
#xD5 // push de inline #xDD,#x66,#x7B // ld h,(ix+12
3) inline #xDD,#x6E,#x7A // ld l,(ix+122) inline #x29
// add hl,hl inline #x5E // ld e,(hl) inline #x2
3 // inc hl inline #x56 // ld d,(hl) i
nline #xE1 // pop hl inline #xDD,#xE1 // pop ix
inline #xF1 // pop af inline #xCD,#x90,#x00 // c
all &90 inline #xDD,#x22,#x90,#x00 // ld (&90),ix inline #xDD,#xE1
// pop ix inline #xF5 // push af inline #xE5
// push hl inline #xDD,#x66,#x7B // ld h,(ix+123)
inline #xDD,#x6E,#x7A // ld l,(ix+122) inline #x29
// add hl,hl inline #x73 // ld (hl),e inline #x23
// inc hl inline #x72 // ld (hl),d inline
#xDD,#x66,#x7D // ld h,(ix+125) inline #xDD,#x6E,#x7C // ld l,(
ix+124) inline #x29 // add hl,hl inline #xD1
// pop de inline #x73 // ld (hl),e inline #x23
// inc hl inline #x72 // ld (hl),d inl
ine #xDD,#x66,#x7F // ld h,(ix+127) inline #xDD,#x6E,#x7E // ld
l,(ix+126) inline #x29 // add hl,hl inline #xED,#x5B,
#x90,#x00 // ld de,(&90) inline #x73 // ld (hl),e inl
ine #x23 // inc hl inline #x72 // ld (hl),d
inline #xDD,#x66,#x79 // ld h,(ix+121) inline #xDD,#x6E,#x78
// ld l,(ix+120) inline #x29 // add hl,hl inline #
x71 // ld (hl),c inline #x23 // inc hl
inline #x70 // ld (hl),b inline #xDD,#x66,#x77 // ld
h,(ix+119) inline #xDD,#x6E,#x76 // ld l,(ix+118) inline #x29
// add hl,hl inline #xD1 // pop de inli
ne #x73 // ld (hl),e inline #x23 // inc hl
inline #x72 // ld (hl),d bytemove(save3*2, #x90, 3) $
) LET firmware(addr,af,bc,de,hl,ix) BE $( LET save6 VEC 3 bytemove(
#x80, save6*2, 6) 0%#x80 #xCD 0%#x81 0%(0%1 + 256*0%2 + 87 +1)
0%#x82 0%(0%1 + 256*0%2 + 87 +2) 0%#x83 addr & #xFF 0%#x84 ( addr &
#xFF00 ) 8 0%#x85 #xC9 call (#x80,af,bc,de,hl,ix) bytemove(sav
e6*2, #x80, 6) $) and version() VALOF $( LET c,de12, LET af,bc,hl,
ix ,,, bdosa(c,de) IF (de & #xFF) #x30 THEN RESULTIS 2 firmware
(#xE3,af,bc,de,hl,ix) RESULTIS 3 + ( (af & #xFF00) 8 ) $) LET esccode(
x) BE $( wrch(27) wrch(x) $) LET clearscr() BE $( TEST ver2 THE
N wrch(12) ELSE esccode('E') $) LET tab(x,y) BE $( TEST ver2 THEN
$( bdosb(6,31) bdosb(6,x) bdosb(6,y) $) ELSE $( esccode
('Y') wrch(y+32-1) wrch(x+32-1) $) $) LET spaces(number) BE $( FOR
a 1 TO number DO wrch(' ') $) LET ascii(char) BE $( TEST char13 THEN
newline() ELSE wrch(char) $) LET curson() B PE return LET cursen() BE r
eturn LET cursdi() BE return LET beep() BE $( wrch(7) $) /* This routin
e returns the number of characters up to and including the next CR */ LET
linelength(from) VALOF $( LET sofar 1 WHILE !from NE 13 DO $( sofar
sofar + 1 from from + 1 $) RESULTIS sofar $) /* This routine will
print num characters of line and then fill the rest of the line with spaces
*/ AND printclr(line,num) BE $( FOR a 0 TO num-1 DO wrch(line!a) sp
aces(79-num) $) /* This routine will print either the whole buffer from x
on or just the new character */ AND reprint(line,pos) BE $( TEST in
sert THEN FOR a pos TO line!0-1 DO wrch(line!a) ELSE wrch(line!pos) $)
/* This routine will remove a character from the buffer */ AND delete(line
,x) BE $( TEST insert THEN $( line!0 line!0 - 1 FOR a x TO
line!0 DO line!a line!(a+1) $) ELSE line!x ' ' $) /* This routine
will insert a character into the buffer at the point given */ AND binsert(lin
e,position,character) BE $( TEST insert THEN $( FOR a line!0 TO p
osition BY -1 line!(a+1) line!a line!position character line!0 line
!0 + 1 $) ELSE line!position character $) AND validate(line,x) VAL
OF $( IF x line!0 THEN RESULTIS x tab(line!0,y) RESULTIS line!0 $)
/* The line given is in buffer in the following format 0 leng
th 1- string in unpacked format followed by 13 The routine reacts to ke
y and takes the appropriate action */ AND buildbuff(buffer,key) VALOF
$( tab(x,y) SWITCHON key INTO $( CASE 13 x validate(buffer
,x) binsert(buffer,x,13) wrch(13) printclr(buffer+1,linelen
gth(buffer+1)-1) RESULTIS 13 CASE cursleft CASE scursleft TEST x1 T
HEN x x - 1 ELSE beep() ENDCASE CASE cursright CASE
scursright TEST x buffer!0-1 THEN x x + 1 ELSE beep()
ENDCASE CASE ccursleft x 1 ENDCASE CASE ccursright x buffer
!0 ENDCASE CASE scursup CASE scursdown CASE ccursup CASE ccursdown
CASE copensq CASE cclosesq CASE escape CASE stop CASE cursup CASE cursdo
wn RESULTIS key CASE 127 x validate(buffer,x) IF x 1 THEN R
ESULTIS 127 x x - 1 tab(x,y) delete(buffer,x) repri
nt(buffer,x) IF insert THEN wrch(' ') ENDCASE DEFAULT
x validate(buffer,x) TEST buffer!0 80 THEN $( binsert(b
uffer,x,key) reprint(buffer,x) IF insert LOGOR xbuffer!0 THEN
x x + 1 $) ELSE beep() ENDCASE CASE ignore $)
RESULTIS FALSE $) /* This is the buffer edit routine */ LET buffer(li
ne) VALOF $( LET keypress 0 $( tab(6,scrheight) writef("%I4",li
nenumber) tab(18,scrheight) writef("%I2",x) tab(x,y) cursen()
keypress rdch() cursdi() keypress buildbuff(line,keypress) $)
REPEATUNTIL keypress prev!y linelength(line+1)-1 RESULTIS keypress $)
AND initbuff(line,from) BE $( !line 0 $( !line !line + 1
line!(!line) textstart%from from from + 1 $) REPEATUNTIL textstart%(f
rom-1) 13 $) /* The above routines work with pointers and words. The
next set of routines work with bytes and array indices */ LET linelengt
h(from) VALOF $( LET sofar 1 WHILE textstart%from NE 13 DO $( sofar
sofar + 1 from from + 1 $) RESULTIS sofar $) LET write(from,x,y) BE
$( tab(x,y) FOR a from TO from + linelength(from) - 2 DO wrch(textsta
rt%a) prev!y linelength(from) - 1 $) LET status() BE $( tab(1,sc
rheight) TEST ver4 THEN writef("Line%I4 Column%I2 (STOP to menu)",linenu
mber,x) ELSE writef("Line%I4 Column%I2 (ESC to menu)",linenumber,x) $)
LET cls() BE $( clearscr() curson() cursdi() FOR a 1 TO scr
height-1 DO prev!a 0 status() $) /* This routine will move the t
ext on the screen down a line and alter the previous array */ LET down()
BE $( tab(1,1) revlf() wrch(13) status() spaces(prev!(scrheight-1)-3
3) FOR a scrheight-1 TO 2 BY -1 DO prev!a prev!(a-1) prev!1 0 $) AN
D revlf() BE $( TEST ver2 THEN wrch(11) ELSE $( esccode('I')
$) $) /* This routine will move the text up one Pline and alter the pr
evious array */ LET up() BE $( tab(1,scrheight) spaces(40) wrch(10)
wrch(13) FOR a 1 TO scrheight-2 DO prev!a prev!(a+1) prev!(scrheight-1
) 0 status() $) /* This routine will reprint the screen from the
y position and text position given. */ LET screen(from,ypos) BE $(
FOR y ypos TO scrheight-1 DO $( LET l 0 tab(1,y) IF from
textend THEN $( spaces(80) prev!y 0 BREAK $) l linelength(from) - 1
FOR a from TO from + l - 1 DO wrch(textstart%a) spaces(prev!y-l) pr
ev!y l from from + l + 1 $) $) LET forward(ptr) VALOF $(
IF ptr + linelength(ptr) textend THEN $( beep() RESULTIS ptr $) ptr
ptr + linelength(ptr) RESULTIS ptr $) AND backline(ptr) VALOF $(
IF ptr 0 THEN $( beep() RESULTIS ptr $) ptr ptr - 1 REPEATWHILE texts
tart%(ptr-1) NE 13 LOGAND ptr NE 0 RESULTIS ptr $) /* This routine will
reconstruct the screen */ LET reconstruct(from) BE $( LET tptr from
cls() FOR a y TO 2 BY -1 DO $( TEST tptr 0 THEN $( y y - a + 1
BREAK $) ELSE tptr backline(tptr) $) screen(tptr,1) $) LET err
or(message) BE $( tab(1,scrheight) writef("%S. Hit any key to continue",m
essage) beep() rdch() tab(33,scrheight) spaces(20) status() buffpr
int TRUE reconstruct(textptr) longjump(errlab,errvec) $) LET make
space(at,size) BE $( bytemove(textstart*2+at,textstart*2+at+size,textend-a
t+1) textend textend + size $) AND closespace(at,size) BE $( byt
emove(textstart*2+at+size,textstart*2+at,textend-at-size+1) textend textend
- size $) AND copy(from,dest,number) BE $( FOR a 0 TO number-1 DO
textstart%(dest+a) from!a $) /* A buffer line is to be inserted at at */
LET linsert(line,at) BE $( LET current, new linelength(at), line!0
TEST new-current+textend maxchr THEN $( TEST currentnew THEN closespac
e(at,current-new) ELSE IF currentnew THEN makespace(at,new-current) co
py(line+1,at,new) $) ELSE error("No room") $) LET getfilename(x,y,
name) BE $( tab(x,y) writes("Enter file name ") cursen() reads(name)
cursdi() newline() $) LET loadtext(line) VALOF $( LET name V
EC 20 getfilename(25,19,name) TEST findinput(name,file) THEN $( LE
T char 0 textptr, x, y, linenumber, textend 0, 1, 1, 1, -1 textstart
%0 13 char readch(file) UNTIL char softeofch LOGOR char endstreamc
h LOGOR textend maxchr DO $( UNLESS char 10 THEN $(
textend textend + 1 textstart%textend char $) char r
eadch(file) $) UNLESS textstart%textend 13 DO $( textend
textend + 1 textstart%textend 13 $) IF textend maxchr TH
EN $( textend textend - 1 textstart%textend 13 close
in(file) initbuff(line,0) error("No room") $) IF textend
-1 THEN textend 0 closein(file) RESULTIS TRUE $) ELSE $(
writef("%S not found",name) rdch() RESULTIS FALSE $) $) A
ND savetext() VALOF $( LET name VEC 20 LET discerror(file) VALOF
$( writes("Disc error. Hit a key") rdch() closeout(file) RES
ULTIS FALSE $) getfilename(25,19,name) TEST findoutput(name,file) THEN
$( FOR a 0 TO textend DO $( UNLESS writech(textstart%a,file
) THEN RESULTIS discerror(file) IF textstart%a 13 THEN UNLESS writech(10
,file) THEN RESULTIS discerror(file) $) closeout(file) R
ESULTIS TRUE $) ELSE $( writes("Cannot open ") writes(name)
RESULTIS FALSE $) $) AND goline() BE $( LET linenum 0 linenum
ber 1 tab(25,19) writef("Enter line number ") cursen() linenum readn
() cursdi() textptr, x 0, 1 FOR count 2 TO linenum DO $( LET op
tr textptr textptr forward(textptr) IF optr textptr THEN BREAK
linenumber linenumber + 1 $) y 12 $) /* This routine checks for
a match */ AND match(from,target) VALOF $( FOR a 1 TO target%0 DO
IF textstart%(from+a-1) NE target%a THEN RESULTIS FALSE RESULTIS TRUE $)
/* This is the find string routine */ AND findstring() BE $( LET
optr, ox, oy, oline textptr, x, y, linenumber LET search VEC P 20 tab(
25,19) writef("Enter string ") cursen() reads(search) cursdi() textpt
r textptr + x - 1 UNLESS textstart%textptr13 THEN textptr textptr + 1 UN
LESS textptr textend DO $( TEST textstart%textptr13 THEN linenum
ber linenumber + 1 ELSE $( IF match(textptr,search) THEN
$( optr textptr WHILE textstart%(textptr-1) NE 13 LOGAND te
xtptr NE 0 DO textptr textptr - 1 x, y optr - textptr + 1,
12 BREAK $) $) textptr textptr + 1 IF textptr
textend THEN $( textptr, x, y, linenumber optr, ox, oy, oline
BREAK $) $) REPEAT $) /* This is the main menu routine */ L
ET menu(line) BE $( LET tptr 0 linsert(line,textptr) $( LET ke
y 0 clearscr() tab(32,4) writes("BCPL editor") tab(32,5) wri
tes("-----------") tab(32,9) writes("L Load text") tab(32,10) write
s("S Save text") tab(32,11) writes("E Edit text") tab(32,12) writes(
"G Goto line") tab(32,13) writes("F Find string") tab(32,14) writes(
"Q Quit") tab(32,17) writes("Select option ") $( cursen() key
rdch() cursdi() $) REPEATWHILE key ignore SWITCHON key INTO
$( CASE 'L' CASE 'l' wrch('L') IF loadtext(line) THEN BREAK ENDCA
SE CASE 'S' CASE 's' wrch('S') IF savetext() THEN BREAK ENDCASE
CASE 'G' CASE 'g' wrch('G') goline() BREAK CASE 'F' CASE 'f' wrch('F')
x validate(line,x) findstring() BREAK
CASE 'E' CASE 'e' wrch('E') BREAK CASE 'Q' CASE 'q' wrch('Q') fi
nish $) beep() $) REPEAT reconstruct(textptr) $) /* This
routine deals with the deletion of a CR */ LET deletel(line) BE $( TES
T textptr NE 0 THEN $( LET optr, tptr textptr, backline(textptr) T
EST linelength(tptr) + line!0 - 1 80 THEN $( IF line!0-linelength(t
extptr)+textend maxchr THEN error("No room") textstart%(textptr-1) 0
linsert(line,textptr-1) textptr tptr linenumber linenumber
- 1 x linelength(textptr) - line!0 + 1 TEST y 1 THEN $(
write(textptr,1,1) $) ELSE y y - 1 $) ELSE erro
r("Line too long to join") $) ELSE error("Top of file") $) LET addl(
line) BE $( LET copy VEC 80 LET ptr 1 FOR a 0 TO line!0 DO copy!a
line!a WHILE line!ptr NE 13 DO ptr ptr + 1 FOR a ptr TO line!0-1 DO li
ne!a line!(a+1) line!0 line!0 - 1 linsert(copy,textptr) x, linenumber
1, linenumber + 1 textptr forward(textptr) TEST y scrheight-1 THEN
$( up() write(textptr,1,scrheight-1) $) ELSE y y + 1 $) L
ET moveup() BE $( UNLESS textptr 0 THEN $( textptr backline(text
ptr) linenumber linenumber - 1 TEST y 1 THEN $( down()
write(textptr,1,1) $) ELSE y y - 1 $) $) LET upcurs(li
ne) BE $( linsert(line,textptr) moveup() $) LET movedown() BE
$( LET optr textptr textptr forward(textptr) UNLESS textptr optr THE
N $( linenumber linenumber + 1 TEST y scrheight-1 THEN $(
up() write(textptr,1,scrheight-1) $) ELSE y y + 1 $)
$) LET downcurs(line) BE $( linsert(line,textptr) movedown() $)
LET supcurs(line) BE $( linsert(line,textptr) FOR a 1 TO scrhe
ight-4 DO $( IF textptr 0 THEN BREAK moveup() $) $) LET sdo
wncurs(line) BE $( linsert(line,textptr) FOR a 1 TO scrheight-4 DO
$( LET optr textptr movedown() IF optr textptr THEN BREAK $)
$) LET top(line) BE $( linsert(line,textptr) textptr, x, y, li
nenumber 0, 1, 1, 1 reconstruct(textptr) $) LET bottom(line) BE $(
LET optr 0 linsert(line,textptr) textptr, x, y, linenumber 0, 1, 1, 0
$( optr textptr textptr forward(textptr) y y + 1 line
number linenumber + 1 $) REPEATUNTIL optr textptr IF y scrheight-1 THEN
y scrheight-1 reconstruct(textptr) $) /* All lines end in 13 */ /* T
he edit buffer is held in unpacked format. The whole text is stored in packe
d format */ LET start() BE $( LET filebuff VEC 81 LET previous VEC
maxscrheight-1 LET text VEC maxchr/2+1 LET Pinbuff VEC 81 LET erro
r VEC 4 LET copyptr, lastkey, newscreen 0, 0, TRUE ver version() scr
height ver4 - 31, ver3 - 24, 25 textptr, textend, textstart, errvec 0, 0, t
ext, error prev, file previous, filebuff cls() textstart%0 13 $(
level(errvec) initbuff(inbuff,textptr) IF newscreen THEN screen(te
xtptr,y) errlab IF buffprint THEN $( tab(1,y) FOR a
1 TO inbuff!0-1 DO wrch(inbuff!a) spaces(80-inbuff!0) buffprint FALSE
$) lastkey buffer(inbuff) newscreen FALSE SWITCHON lastke
y INTO $( CASE 127 newscreen TRUE deletel(inbuff) ENDCASE
CASE 13 newscreen TRUE addl(inbuff) ENDCASE CASE cursup CASE scursup u
pcurs(inbuff) ENDCASE CASE cursdown CASE scursdown downcurs(inbuff) END
CASE CASE ccursup supcurs(inbuff) ENDCASE CASE ccursdown sdowncur
s(inbuff) ENDCASE CASE copensq top(inbuff) ENDCASE CASE cclosesq
bottom(inbuff) ENDCASE CASE escape CASE stop menu(inbuff) ENDCASE
$) $) REPEAT $) . oo long27 newscreen TRUE deletel(inbuff) ENDCASE
CASE 13 newscreen TRUE addl(inbuff) ENDCASE CASE cursup CASE scurs
up upcurs(inbuff) ENDCASE CASE cursdown CASE scursdown downcurs(inbuff)
ENDCASE CASE ccursup supcurs(inbuff) ENDCASE CASE ccursdown sdow
ncurs(inbuff) ENDCASE CASE copensq top(inbuff) ENDCASE CAS!.9 x)
0!R!R8 PYgo#DM!x( BDM!zR!(N#F#B(## #V#V22x(#V##V#s#rE(#""CxiKKC"z)z)s#r#s#r#s#r#
!9s#r)#V#S#V#S#V##fki**"#)8I*8B"!9R85i*""KKC8"DM!9B8Stack overflow #22f(O!2w(f(
(l ** BREAK ** (2O(!f(*+E+!!9*fn fn *fn£"!!9j*finh)n&g"!BKzWRfinh)Vn&fnZ%Rfan)
#Vfn#tufinh)Vn&fn#finh)n&fan#taufWnVWfYnX!ufYnX!u!fYnX!ufUnTfYnX!ufUnTfYnXk!ufUn
TfYnX!u!ufWnVfan+tau!uu$.IXONCS5fntufnZ#""!!9*fn)n&g"!BKzWRfn)Vutn&#""!*!9!fn*fn
gRTfn+tufsnrgo#tsurfsnr 2fqnpVut)s#rfsnr 2tsurfunt#tuutsrT*fng"funt#BKzWR! #"fng
R!-*!g"funt+DMgR2fqnpVml)#V0+"!9*""!!9!fn"!!9VzW!Rfn+fnk!0123456789ABCDEFfng£o)#
V"!!9VzW!R&fn+fnfng£o0"!!9! "!!9**!"fynx"fynx**"!!9*""!!9!*fwnvg"!BKzWR !! !#"!t
wuvtuutfunt R funtR funtR funtRwv!!! !fwnv+twuvfwnvR!funtfwnv#twuvfn)Vwvtwtuut7f
untR funtR' wvfuntRE funtRK !Q fwnvfn)sfuntR!(!funtR!(!gogo "!!9*fynx! fynx *""
!!9!!fn) Pn&VutgzWR£fn)Vutn&gR£fn)Vutn&fngzWR£fn)Vutn&fsnrVtsurfunt#tuut fsnr"!
!9!fn)fnfnrt-fn)6#6funtR! !,"!!9*!"VyxzW!Rkfynxn!t"!!9zW!R*"!!9!fn)fnfnfn)!ort-f
n)6$#6funtR! !, "!!9*!"VyxzW!Rk fynxn !t "!!9fn R ! ! tufn!o! "!!9fn R ! ! tuf
n!o!"!!9x!fynxR!(!K"!!9!vx-fynxR!(!"!!9R"!!9!!fn)#VRfn7gotuutfn)6$#6fn)#Vfn)n&tw
uvfn)#V#fn)s#rfwnvVutgov"!!9!"!!9fn) 6fn)6#6"!!9!fn R fn! !! tufn)#VRDfntuutfn)6
$#6fn)#Vfn)wfn)#V#fn)s#rfunt"!!9!fn)fn)#VRfn!fn)#V$Rfntv-fwnvR! !0"!!9!fn)fn)$!o
tv-fwnvR!(!"!!9!fn)fn)$!otv-fwnvR!(! "!!9!!!!*!g"!BKzWRbfn)Vkj6 #"fn)6fn)n&Vutgz
WRmfn)Vutn&Ctqupfunt#tuutfsnrRfonnfqnpRfn)#n&#fn)s!tsur!tounofqnp.R*!tsurmfsnrRH
fqnp RKmfn)Vsrpwfsnr#tsurofqnp.Rfn)n&VutgzWRfn)Vutn&Ctqupfunt#tuutfqnp RfsnrRfn)
Vsrpwfsnr#tsurfn)6fn) 6!9"!!9fn)#Vfn)Nfn)s#rfn)w#6"!!9VN"!!9*!)n&funt)s!)n&funt)
#s!)n&funt)s!)6fn+T)!)n&!!)#n&#!)n&!)sfn+T)!)n&!!)#n&!)n&!)sfn)w#6funt)n&!)sfunt
)#n&!)sfunt)n&!)s*""!!9fn""!!9fn""!!9*"!!9*"!!9fngaRVzW!zRfnfn"!!9fnC"!!9fng0RVz
W!9Rfnfn " (!!9fnzVFNR8"!!9*!fmnl)!(!9!)6funtg£o!)sfuntg£o!)sfwnv)#Vfynx)N#Ffn
)#Vfn)#Vfnz)#V"fnz)s#rfn)s#rfn)s#rfynx)q#pfwnv)s#r!!fmnl)(!9*""!!9*!fmnl)!(!9!)6
!)n&!!)#n&W#!)n&!)s!)n&!!)#n&W!)n&!)sfuntg£o!)sfuntg£o!)s!)6fnfnfnzfynxfwnv!!9!!
fmnl)(!9*""!!9!vx-fwnvg£og0R !!9npvrt!s!9funtg£o!!9!9"!!9!fn"!!9*R!!E"!!9*R&!!of
n!ofn!oN!Yfn +fn +"!!9*vfng"v!BKzWR! #"v"!!9fn REfn"!!9"!!9"!!9 "!!9!"!!9!fn)#V
Rlfwnv#twuvfn#tufwnvx"!!9*fn+g"!BKzWRfnVsr)#V#"!OVRU"!!9*J* Pfn)#V+g"fnBKzWRCfn
Vsr)#V#"afnV)#V"!!9*fn)#V+fn)s#r*fn)#Vg"fnBKzWRfsnr#fn)#VfnVsr)s#r#"fnV)6 #6"!!9
**fng"fnz)#VDMgRvfnzVqp)#Vfqnp#fnz)s#r+"fnzV)Vs#rfnz)#V#fnz)s#rfnzV)Vs#r"!!9fn)#
VVgzWRfn#*fn)#Vfn)#V#"!!9**fn!*fn"! *fn!9! fn#,+fn#! k!zW!R*+"d!fn)#V+gzWR*#"d!!
"d!fn)#V"d!fnk!*fn"*RA !k!*+"***fnh*fn* ! d!*fn"fn)#VgPR !fn*fn!9*fn*!fn)#V*gzWR
!*#"!d!d!! Q !k!"!!9!*!*!!%I4*!*!!%I2**twuvfwnvfn*twuvfwnv!fn#,+*)s#
rfwnv0""!!9fn)6#6fn)#V#fn)s#r*)Vn&fn)#Vfn)s#rfn#tufn+*)n& RO""!!9!*)Vn& R"fwnv#t
wuvfn#tufwnv#"!!9fnfn*Y#fnz"fnzg"Y#fnzBKzWR#*)Vqpn&#"Y#fnz"+*V)s#r"!!9*!*R$**!#"
Line%I4 Column%I2 (STOP to menu)!9C$**!$!Line%I4 Column%I2 (ESC to menu)!9"!!9*r
$*+g"r$!BKzWR$*Vwv)6#6#"r$#"!!9!!%! #*+*)#VU*$!g"$*+DMgR'%fwnv+*)#V*Vwv)s#r+"$*#
)6#6"!!9*R%!g%!I"!!9*!!(U! ! *%*g"%!BKzWR%fwnv#*)#V*Vwv)s#r#"%*+*)6#6#"!!9*(&*+g
"(&fnBKzWR''!fsnr!* VgzWR&!PU*Vsr)6#6''fn"+tqup*&fnVqp+g"&fnBKzWR&*)Vmln&#"&*Vsr
)#VVqpRU*Vsr)Vqps#rfnVqp#tu#'&"(&"!!9fn"fn* gzWRo'fn'fn"fntufn'"!!9'fn'fn+tufn+*
)n& R''fn'"!!9fnJ$*#(!g"#(*DMgRg(wvQ(*VsrR#"g(c(fwnv'twuv+"#(!fwnv&"!!9*!fn!U(%S
. Hit any key to continue*!!!U#!"*'*$*&."!!9* VR#*)VV*)V(!9* V" "!!9* VRVR#*)V*)
VV(!9* VR" "!!9*)fn+g")!BKzWR*fnzVqp)#VfnVqp*)s#")"!!9fn"fn)#VfsnrVutR gR+fsnrVu
tgzWR*funtVsrRfna)*funtVsrgzWR*fsnrVutRfn)fsnrfnfn#)!9+!+No room("!!9fnfnz!T+Ent
er file name fnE"!*!9*fwnv!!+!9*fwnv,!!"!"!"!"!" *)6 *tuutfuntRJ,funtRJ,* YRJ,fu
nt R9,* #" *) tw*tuut*) n& Rq,* #" *) 6 * gR,* +" *) 6 *!fn7"!Y,No room(* R,!" *
!--fwnv!z-%S not found!-*""!*!9*-!!9!-Disc error. Hit a keyfn!z-"fynx!!+!9*fynxV
.*-* g"-!BKzWR.**)Vutn&-*7-!9.*)Vutn& R.*! .*7-!9.#"-*!..!.i.Cannot open fynx!.*
""!!9!!"!!!.Enter line number tyux!"!"*/fynxg"/! PBKzWRB/**2'"fsnrR6/B/*#"#"/!
""!!9*y/fn)n&g"y/!BKzWR/fn)Vsrn&fnVsr+*)n&R/!/#"y/!/"!*!9*****!!!0Enter string f
qnp*+"*)n& R0*#"* gzWR81*)n& R0*#"0fqnp*T/0*tyux*+*)n& R0*0*+"fynxR#"!"81*#"* gz
WR51fynx"fwnv"funt"fsnr"81r0!9*""!!9!*fn**!!! !1BCPL editor!! !1-----------!! !1
L Load text! ! !2S Save text!! ! '2E Edit text!! ! M2G Goto line! ! !3u2F Find s
tring!! !G2Q Quit!! !W2Select option tuutfuntR2funtt3!Lfnt+ 333!S -%333!G.3!F*fn
"/3!E3!Q3qf3Qf3eZ3EZ3f73F73g(3G(3s3S3l2L23k1*'"!!9*4**'fn)#Vfunt"+gPR4*"fn)#VR g
RE4!4No room(*+*)6*+fn**funt"*+"fn)#V*"R#"*R4!!*#!94*+"4!b4Line too long to join
(4!u4Top of file("!!9*!*45fn)#Vg"45!BKzWRl5fnVqp)#VfwnvVqp)s#r#"45fnVut)#V R5fun
t#tuut*5fn)#V+g"5funtBKzWR5fqnp#fn)#VfnVqp)s#r#"5fn)#V+fn)s#r*fwnv**!"*#"*2'"*+*
R6n%*+!*#!9g6*#"*""!!9*6*'"*+"*R6£$!!*#!96*+""!!9*fn**v6"!!9**2'"*VyxRY7*#"*+*RR
7n%*+!*#!9Y7*#""!!9*fn**6"!!9*fn***7*g"7!BKzWR7*77v6#"7"!!9*fn***8*g"8!BKzWRH8*6
fsnrRC8H8#"8"!!9*fn**!"!"!"!"*'"!!9!*fn**!"!"!"!"*twuv*2'"*#"*#"fwnvR8*+gzWR9*+"
*'"!j!9****Z*!!!"*R9!9*R9!9!"!"!" funt"fqnp"$fwnv"fynx"J$*)6 *$*fsnr7"fknj**&**!
*Hfsnr)#V+g"H!BKzWRrfsnrVgf)#V#"Hfsnr)#V!PRU!"fsnrr!tmul!tkujfmnlO!tkujfsnr3!tku
jfsnr5fsnr6fsnra7fsnr7fsnr7fsnrS8fsnr8fsnrK10" 9!9*""& fknj**&**!*Hfsnr)#V+g"H!
BKzWRrfsnrVgf)#V#"Hfsnr)#V!PRU!"fsnrr!tmul!tkujfmnlO!tkujfsnr3!tkujfsnr5fsnr6fsn
r// CLIBHDR standard CP/M library header, last modified 21/03/1987 MANIFE
ST $( bytesperword 2 bitsperword 16 softeofch 26 endstreamch
-1 vdustream 0 printstream 1 maxint 32767
minint -32768 newlinech 269 $) STATIC $( readstrea
m 0 writestream 0 returned 0 lastchar 0 $) /
**** OUTPUT ROUTINES ****/ LET wrch(char) BE $( SWITCHON writestream INTO
$( CASE vdustream wrvdu(char) ENDCASE CASE printstream pr
ch(char) ENDCASE DEFAULT writech(char,writestream) $) $)
AND writef(string,a,b,c,d,e,f,g,h,i,j,k) BE $( LET pptr a FOR cptr 1
TO string%0 DO $( LET k string%cptr TEST k '%' THEN $(
LET arg !pptr cptr cptr + 1 $( LET ch, size string%c
ptr, decval(string%(cptr+1)) pptr pptr + 1 cptr cptr + VALOF
SWITCHON ch INTO P $( CASE 'S' writes(a
rg) RESULTIS 0 CASE 'C' wrch(arg) RESULTIS 0 CASE
'N' writed(arg,0) RESULTIS 0 CASE 'O' writeoct(arg,size) RESULTIS 1
CASE 'X' writehex(arg,size) RESULTIS 1 CASE 'I' writed(a
rg,size) RESULTIS 1 CASE '$' RESULTIS 0 DEFAULT wrch(c
h) pptr pptr - 1 RESULTIS 0 $) $) $) ELSE wrch(k)
$) $) AND writes(s) BE FOR c 1 TO s%0 DO wrch(s%c) AND writed(num,d)
BE $( LET temp VEC 20 AND ptr, n 0, num IF num0 THEN d, n d-1, -n
temp!ptr, n, ptr n REM 10, n/10, ptr+1 REPEATUNTIL n 0 FOR j ptr+1 TO d
DO wrch(' ') IF num0 THEN wrch('-') FOR j ptr-1 TO 0 BY -1 DO wrch(temp!
j+'0') $) AND writen(n) BE writed(n,0) AND writehex(num,d) BE $( IF D
1 THEN writehex(num4, d-1) wrch((num LOGAND 15)!TABLE '0','1','2','3','4','5'
,'6','7','8','9', 'A','B','C','D','E','F') $)
AND writeoct(num,d) BE $( IF d1 THEN writeoct(num3,d-1) wrch((num LOGAND
7)+'0') $) AND newline() BE wrch(newlinech) /**** INPUT ROUTINES ****/
AND rdch() VALOF $( UNLESS returned 0 THEN $( LET c returned
returned 0 lastchar c RESULTIS c $) RESULTIS readstream
0 - rdvdu(), readch(readstream) $) AND unrdch() BE returned lastchar AND
reads(array) VALOF $( MANIFEST $( escape #xFC stop3 maxlen255 $) L
ET ptr, c 0, $( FOR i1 to ptr DO $( wrch(8) wrch(' ') wrch(8) $)
ptr0 c rdch() UNTIL c13 cescape cstop DO $( TEST c127
THEN $( TEST ptr0 THEN wrch(7) ELSE $(
wrch(8) wrch(' ') wrch(8) ptr ptr-1 $) $)
ELSE $( TEST ptrmaxlen THEN wrch(7) ELSE $
( wrch(c) ptr ptr + 1 array%ptr c $) $
) c rdch() $) $) REPEATWHILE (cescape c stop) & (ptr 0)
array%0 (cescape cstop) - 0, ptr RESULTIS NOT (cescape cstop) $) AND r
eadn() VALOF $( LET input VEC 128 reads(input) RESULTIS strtonum(inp
ut,10) $) AND strtonum(string,base) VALOF $( LET ptr, total 1, 0 WH
ILE ptr string%0 LOGAND (0decval(string%ptr)base) DO $( total total *
base + decval(string%ptr) ptr ptr + 1 $) RESULTIS total $) /**
** FILE I/O ROUTINES ****/ AND findinput(name, buffer) VALOF $( LET c, d
e 15, buffer*2 setfcb(name, buffer) // set the fcb bdosa(c, de)
// open file buffer!17 164 // set sector pointer RESULTIS c 25
5 $) AND endread() VALOF $( LET bufreadstream readstream vdustream
RESULTIS buf0 - closein(buf), TRUE $) AND rewind() BE IF readstream 0 TH
EN rewindin(readstream) AND findoutput(name,buffer) VALOF $( LET c, de
22, buffer*2 setfcb(name, buffer) bdosb(19, buffer*2) bdosa(c, de) b
uffer!17 36 RESULTIS c 255 $) AND endwrite() VALOF $( LET buf wri
testream writestream vdustream RESULTIS buf0 - closeout(buf), TRUE $)
/**** PRIMITIVE I/O ROUTINES ****/ AND wrvdu(c) VALOF $( IF cnewlinec
h THEN $( wrvdu(13) c10 $) bdosb(2,c) RESULTIS TRUE $) AND prch(c) V
ALOF $( IF cnewlinech THEN $( prch(13) c10 $) bdosb(5,c) RESULTIS TRU
E $) AND prbusy() VALOF $( LET a bios(15,a) RESULTIS a 0
// TRUE if printer busy $) AND rdtest() VALOF $( LET c,de 11, bdo
sa(c,de) RESULTIS c1 $) AND flush() BE WHILE rdtest() rdvdu() AND read
ch(buffer) VALOF $( LET character, fail 0, FALSE IF buffer!17 164 THEN
$( fail NOT readsector(buffer) // read a sector buffer!17 36
$) character buffer%(buffer!17) buffer!17 buffer!17 + 1 RESULTIS c
haracter LOGOR fail $) AND closein(buffer) TRUE AND rewindin(buffer) BE
$( buffer%32 0 buffer!17 164 $) AND writech(char, buffer) VALOF $(
LET success TRUE IF charnewlinech THEN $( UNLESS writech(13,buffer)
RESULTIS FALSE char10 $) IF buffer!17 164 THEN $( success w
ritesector(buffer) buffer!17 36 $) buffer%(buffer!17) char buffe
r!17 buffer!17 + 1 RESULTIS success $) AND closeout(buffer) VALOF $(
LET c, de 16,buffer*2 UNLESS buffer!17 164 THEN wri !P!!!!!!!!!tech(26,b
uffer) UNLESS buffer!17 36 THEN writesector(buffer) bdosa(c,de) RESULT
IS c 255 $) AND readsector(buffer) VALOF $( LET result, buff 20, buff
er*2 bdosb(26, buffer*2+36) bdosa(result, buff) RESULTIS result 0
// TRUE is successful and not hard EOF $) AND writesector(buffer) VALOF $(
LET result, buff 21, buffer*2 bdosb(26, buffer*2+36) bdosa(result, bu
ff) RESULTIS result 0 // TRUE if written successfully $) AND setfcb
(name, buffer) BE $( LET nptr, fptr, c, drvflag 1, 1, 0, TRUE FOR i 1 T
O 11 buffer%i ' ' buffer%0 0 WHILE nptr name%0 DO $( c upperca
se(name%nptr) nptr nptr + 1 IF fptr 2 LOGAND drvflag LOGAND c '' TH
EN $( buffer%0 buffer%1 - 'A' + 1 fptr, drvflag 1, FALSE
LOOP $) IF c '.' THEN $( fptr 9 BREAK $) IF fptr 9 LOGOR
c ' ' THEN BREAK buffer%fptr c fptr fptr + 1 $) IF c '.' TH
EN WHILE nptr name%0 DO $( c uppercase(name%nptr) nptr
nptr + 1 IF c ' ' LOGOR fptr 12 THEN BREAK buffer%fptr c
fptr fptr + 1 $) buffer%12, buffer%32 0, 0 $) /**** MISCELLAN
EOUS ROUTINES ****/ AND bdosa(c,de) BE $( INLINE 221,102,127 // ld h
,(ix+127) INLINE 221,110,126 // ld l,(ix+126) INLINE 41
// add hl,hl INLINE 94 // ld e,(hl) INLINE 35
// inc hl INLINE 86 // ld d,(hl) INLINE 221,102,125 //
ld h,(ix+125) INLINE 221,110,124 // ld l,(ix+124) INLINE 41
// add hl,hl INLINE 78 // ld c,(hl) INLINE 221,229
// push ix INLINE 205,5,0 // call bdos INLINE 221,225
// pop ix INLINE 235 // ex de,hl INLINE 221,102,127
// ld h,(ix+127) INLINE 221,110,126 // ld l,(ix+126) INLINE 41
// add hl,hl INLINE 115 // ld (hl),e INLINE 35
// inc hl INLINE 114 // ld (hl),d INLINE 221,102,125
// ld h,(ix+125) INLINE 221,110,124 // ld l,(ix+124) INLINE 41
// add hl,hl INLINE 119 // ld (hl),a INLINE 35
// inc hl INLINE 54,0 // ld (hl),0 $) AND bdosb(
c,de) BE $( INLINE 221,86,127 // ld d,(ix+127) INLINE 221,94,126
// ld e,(ix+126) INLINE 221,78,124 // ld c,(ix+124) INLINE 221,2
29 // push ix INLINE 205,5,0 // call bdos INLINE 221,225
// pop ix $) AND bios(n,a) BE $( LET saveVEC 1 save%0 0%#x
80 save%1 0%#x81 save%2 0%#x82 0%#x80 #xC3 0%#x81 0%(0%1 + 256*0%2 +
(n-1)*3 +1) 0%#x82 0%(0%1 + 256*0%2 + (n-1)*3 +2) INLINE 221,229
// push ix INLINE #xCD,#x80,#x00 // call bios routine INLINE 221,225
// pop ix INLINE 221,102,127 // ld h,(ix+127) INLINE 221,110,
126 // ld l,(ix+126) INLINE 41 // add hl,hl INLINE 119
// ld (hl),a INLINE 35 // inc hl INLINE 54,0
// ld (hl),0 0%#x80 save%0 0%#x81 save%1 0%#x82 save%2 $)
AND selectinput(stream) BE readstream stream AND selectoutput(stream) BE wri
testream stream AND input() readstream AND output() writestream AND upper
case(char) 'a'char'z' - char - 32, char AND capitalch(c) uppercase(c) AND de
cval(digit) '0'digit'9' - digit-'0', digit-'A'+10 CP/M library header, last
modified 21/03/1987 MANIFEST $( bytesperword 2 bitsperword 16
// ld (hl),0 0%#x80 save%0 0%#x81 save%1 0%#x82 save%2 $)
AND selectinput(stream) BE readstream stream AND selectoutput(stream) BE wr
itestream stream AND input() readstream AND output() writestream AND uppe
rcase(char) 'a'char'z' - char - 32, char AND capitalch(c) uppercase(c) AND d
ecval(digit) '0'digit'9' - digit- "P"""""""""// CLIBHDR1 additional CP/M li
brary header, last modified 19/11/1986 STATIC $( randomseed 0 $) LET ra
ndom() VALOF $( randomseed randomseed * #xA3ED + #x1D31 RESULTIS random
seed $) AND stop(code) BE $( bdosb(108,code) finish $) AND tail(s
tring) BE $( string%0 0%#x80 FOR a 1 TO string%0 DO string%a 0%(#x80+a
) $) AND delete(name,buffer) VALOF $( LET c, de 19, buffer*2 setfcb
(name,buffer) bdosa(c,de) RESULTIS c255 $) AND rename(name1,name2,buff
er) VALOF $( LET c, de 23, buffer*2 setfcb(name1,buffer) setfcb(name
2,buffer+16) bytemove(buffer*2+32,buffer*2+16,16) bdosa(c,de) RESULTIS
c255 $) AND writet(s,n) BE $( writes(s) FOR i 1 to n-s%0 DO wrch('
') $) AND writeu(n,d) BE $( LET m (n1)/5 UNLESS m0 DO $( wr
ited(m,d-1) d 1 $) writed(n-m*10,d) $) AND newpage() BE wrch(12
) AND compch(ch1,ch2) capitalch(ch1) - capitalch(ch2) AND compstring(s1,s
2) VALOF $( LET len1,len2 s1%0, s2%0 LET shorter len1len2 - s1, s2
FOR i 1 to shorter%0 DO $( LET res compch(s1%i, s2%i) UNLESS res0
RESULTIS res $) RESULTIS len1len2 - 0, shorters1 - -1,1 $) AND bytemo
ve(source,dest,number) BE $( inline 221,102,123 // ld h,(ix+123) inl
ine 221,110,122 // ld l,(ix+122) inline 221,86,125 // ld d,(ix+125
) inline 221,94,124 // ld e,(ix+124) inline 221,70,127 // ld b
,(ix+127) inline 221,78,126 // ld c,(ix+126) inline 167
// and a inline 237,82 // sbc hl,de inline 25 //
add hl,de inline 56,4 // jr c,+4 inline 237,176 // ld
ir inline 24,8 // jr +8 inline 11 // dec bc i
nline 9 // add hl,bc inline 235 // ex de,hl in
line 9 // add hl,bc inline 235 // ex de,hl inl
ine 3 // inc bc inline 237,184 // lddr $) AND cal
l(addr,af,bc,de,hl,ix) BE $( LET save3 VEC 1 bytemove(#x90, save3*2, 3)
0%#x90 #xC3 0%#x91 addr & #xFF 0%#x92 ( addr & #xFF00 ) 8 inline
#xDD,#xE5 // push ix inline #xDD,#x66,#x77 // ld h,(ix+119)
inline #xDD,#x6E,#x76 // ld l,(ix+118) inline #x29,#x5E,#x56,#x23
// add hl,hlld e,(hl)inc hlld d,(hl) inline #xD5 // push de
inline #xDD,#x66,#x79 // ld h,(ix+121) inline #xDD,#x6E,#x78 //
ld l,(ix+120) inline #x29,#x4E,#x23,#x46 // add hl,hlld c,(hl)inc hlld b,(h
l) inline #xDD,#x66,#x7F // ld h,(ix+127) inline #xDD,#x6E,#x7E
// ld l,(ix+126) inline #x29,#x5E,#x23,#x56 // add hl,hlld e,(hl)inc hlld
d,(hl) inline #xD5 // push de inline #xDD,#x66,#x7D
// ld h,(ix+125) inline #xDD,#x6E,#x7C // ld l,(ix+124) inline #x29,
#x5E,#x23,#x56 // add hl,hlld e,(hl)inc hlld d,(hl) inline #xD5
// push de inline #xDD,#x66,#x7B // ld h,(ix+123) inline #xDD,#x
6E,#x7A // ld l,(ix+122) inline #x29,#x5E,#x23,#x56 // add hl,hlld e,(
hl)inc hlld d,(hl) inline #xE1,#xDD,#xE1,#xF1 // pop hlpop ixpop af inlin
e #xCD,#x90,#x00 // call &90 inline #xDD,#x22,#x90,#x00 // ld (&90),ix
inline #xDD,#xE1 // pop ix inline #xF5,#xE5 // push
afpush hl inline #xDD,#x66,#x7B // ld h,(ix+123) inline #xDD,#x6E,#
x7A // ld l,(ix+122) inline #x29,#x73,#x23,#x72 // add hl,hlld (hl),ei
nc hlld (hl),d inline #xDD,#x66,#x7D // ld h,(ix+125) inline #xDD,#x
6E,#x7C // ld l,(ix+124) inline #x29,#xD1 // add hl,hlpop de
inline #x73,#x23,#x72 // ld (hl),einc hlld (hl),d inline #xDD,#x66,
#x7F // ld h,(ix+127) inline #xDD,#x6E,#x7E // ld l,(ix+126) i
nline #x29 // add hl,hl inline #xED,#x5B,#x90,#x00 // ld de,
(&90) inline #x73,#x23,#x72 // ld (hl),einc hlld (hl),d inline #xDD,
#x66,#x79 // ld h,(ix+121) inline #xDD,#x6E,#x78 // ld l,(ix+120)
inline #x29,#x71,#x23,#x70 // add hl,hlld (hl),cinc hlld (hl),b inline #
xDD,#x66,#x77 // ld h,(ix+119) inline #xDD,#x6E,#x76 // ld l,(ix+
118) inline #x29,#xD1 // add hl,hlpop de inline #x73,#x23,#x72
// ld (hl),einc hlld (hl),d bytemove(save3*2, #x90, 3) $) AND firmw
are(addr,af,bc,de,hl,ix) BE $( LET save6 VEC 3 bytemove(#x80, save6*2, 6
) 0%#x80 #P######### #xCD 0%#x81 0%(0%1 + 256*0%2 + 87 +1) 0%#x82 0
%(0%1 + 256*0%2 + 87 +2) 0%#x83 addr & #xFF 0%#x84 ( addr & #xFF00 ) 8
0%#x85 #xC9 call (#x80,af,bc,de,hl,ix) bytemove(save6*2, #x80, 6) $)
AND version() VALOF $( LET c,de12, LET af,bc,hl,ix ,,, bdosa(c,de
) IF (de & #xFF) #x30 THEN RESULTIS 2 firmware(#xE3,af,bc,de,hl,ix) RE
SULTIS 3 + ( af 8 ) $) AND getbyte(s,i) s%i AND putbyte(s,i,c) BE s%i c
AND unpackstring(s,v) BE FOR i 0 TO s%0 DO v!i s%i AND packstring(v,s) BE $
( LET n !v LOGAND #xFF FOR i 1 TO n DO s%i s!i $) F r & #xFF00 ) 8
0%#x85 #xC9 call (#x80,af,bc,de,hl,ix) bytemove(save6*2, #x80, 6) $)
AND version() VALOF $( LET c,de12, LET af,bc,hl,ix ,,, bdosa(c,de)
IF (de & #xFF) #x30 THEN RESULTIS 2 firmware(#xE3,af,bc,de,hl,ix) RES
ULTIS 3 + ( af 8 ) $) AND getbyte(s,i) s%i AND putbyte(s,i,c) BE s%i c
AND unpackstring(s,v) /* This is a copy routine. Last modified 05/11/1986 */
option b- /* Include the library */ GET "clibhdr" LET start() BE $(
LET inname VEC 20 LET inbuff VEC 82 LET outname VEC 20 LET outbuf
f VEC 82 LET c 0 writes("Input file name ") reads(inname) IF inna
me%0 0 THEN FINISH newline() writes("Output file name ") reads(outname
) IF outname%0 0 THEN FINISH TEST findinput(inname, inbuff) THEN $(
selectinput(inbuff) TEST findoutput(outname, outbuff) THEN $(
selectoutput(outbuff) $( c rdch() UNLESS cendstreamc
h DO wrch(c) $) REPEATUNTIL c endstreamch endwrite()
$) ELSE writes("Can't open output file") endread() $) ELSE write
s("Can't open input file") $) . ion b- /* Include the library */ GET
"clibhdr" LET start()me) IF outname%0 0 THEN FINISH TEST findinput(inn
ame, inbuff) THEN $( selectinput(inbuff) TEST findoutput(o/* BCPL d
ebug procedure 02/11/1986 */ /* debug(opt,n,d1,d2,d3,d4,d5,d6,d7,d8,d9,d
10,d11,d12) The first parameter specifies the required option.
0 pause execution, wait for a key to be pressed
1 display values of variables in decimal -1 display names an
d values of variables in decimal 2 display value of strings
-2 display name and value of strings 3 displ
ay contents of vectors -3 display name and contents of vectors
4 display values of variables in hexadecimal
-4 display names and values of variables in hexadecimal The seco
nd parameter (n) is the number of variables or strings or vectors to be
displayed. If opt is positive there follows a list of identifiers.
If opt is negative there follows a list of pairs - a string giv
ing the identifier name and the identifier. For options 3 and -3 each
identifier is followed by the length of the vector, that is the number
of bytes to display. Examples debug(1,3,var
1,var2,var3) debug(-1,3,"var1",var1,"var2",var2,"var3",
var3) debug(2,1,str) debug(-2,
2,"str1",str1,"str2",str2) debug(3,1,vector,32)
debug(-3,1,"vector",vector,32) debug(
4,2,hex1,hex2) debug(-4,3,"hex1",hex1,"hex2",hex2,"hex3
",hex3) */ AND debug(opt,n,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12) be $
( MANIFEST $( escape#xFC stop3 $) LET parm, ch, len d1, ,
LET wrnum, wrwid writed, 0 SWITCHON (opt0 - opt, -opt) INTO
$( CASE 1 writes("*nBCPL Debug. Variable values ")
ENDCASE CASE 2 writes("*nBCPL Debug. String
contents ") $P$$$$$$$$$ ENDCASE CASE
3 writes("*nBCPL Debug. Vector contents ") ENDCASE
CASE 4 writes("*nBCPL Debug. Variable values, hex ")
wrnum writehex wrwid 4
ENDCASE DEFAULT writes("*
nPress a key to resume execution ") chrdch() IF chesca
pe chstop then FINISH newline()
RETURN $) newline() IF opt 0 & opt NE 3 DO wri
tes(" ") FOR i 1 TO n DO $( SWITCHON opt INTO
$( CASE 1 CASE 4
wrnum(!parm,wrwid) wrch(' ') parm parm + 1
ENDCASE CASE -1 CAS
E -4 writes(" ") writes(!parm
) writes(" ") wrnum(parm!1,wr
wid) newline() parm parm + 2
ENDCASE CASE 2
wrch('"') writes(!parm) wrch('"') wrch(' ')
parm parm + 1 ENDCASE
CASE -2 writes(" ") wr
ites(!parm) writes(" ") wrch('"')
writes(parm!1) wrch('"') newline()
parm parm + 2 ENDCASE C
ASE 3 debugvector(!parm,parm!1)
parm parm + 2 ENDCASE CASE -3
writes(!parm) newline() debugvec
tor(parm!1,parm!2) parm parm + 3
ENDCASE $) $) IF opt 0 & opt ne 3 DO newli
ne() $) AND debugvector(addr,len) BE $( LET ascii vec 16 L
ET ascptr, line, ch 1, 0, 0 ascii%0 16 FOR line 0 TO (len-1
)/16 DO $( writes(" ") writehex(2*addr+line*16,4
) // note 2*addr is physical addr writes(" ")
ascptr 1 FOR byte 0 TO 15 DO $( c
h addr%(line*16+byte) writehex(ch,2)
wrch(' ') IF byte7 then wrch(' ')
ascii%ascptr (31ch128) - ch , '.' ascptr
ascptr + 1 $) wrch(' ') write
s(ascii) newline() $) $) 10/1986 */ /* debug
(opt,n,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12) The first parame14 N S
"'#F0'" cursor up Key definitions for BCPL editor on PCW 14 A "'#F8'
" alt-cursor up 6 N S "'#F3'" cursor right 6 A "'#FB'" alt-cursor right 79 N
S "'#F1'" cursor down 79 A "'#F9'" alt-cursor down 15 N S "'#F2'" cursor left
15 A "'#FA'" alt-cursor left 66 N "'#FC'" stop 26 A "'27'" alt- 17 A "'29'"
alt- FB'" alt-cursor right 79 N S "'#ewline() $) $) 10/1986 */
/* debug(opt,n,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12) The fi
rst parame /* This is a BCPL beautifier. It will turn all keywords into upper c
ase and all identifiers into lower case */ // modified 30/10/1986 /* r
ead in the standard library header */ OPTION B- GET "clibhdr" OPTION B+
MANIFEST $( indentsize 2 comments 35 $) GLOBAL $( keyword
s 0 input 1 output 2 errvec 3 error 4 lastchr 5 keyend 6 $)
STATIC $( indent 0 nldone TRUE idflag FALSE column 0 $) L
ET err(message) BE $( n %P%%%%%%%%%ewline() writes(message) newline
() longjump(error, errvec) $) LET space(char) ( char' ' char9 ) LE
T rawchr() VALOF $( LET temp readch(input) WHILE temp 10 DO temp re
adch(input) IF lastchr endstreamch LOGAND temp endstreamch THEN err("Unexpe
cted EOF") lastchr temp RESULTIS lastchr $) LET getchr() VALOF
$( rawchr() IF 'A' lastchr 'Z' THEN lastchr lastchr + 32 RESULTIS la
stchr $) LET out(character) BE $( UNLESS nldone LOGOR character 13
THEN $( nldone TRUE FOR space 1 TO indent out(' ') $) TEST
character 13 THEN $( newline() writech(13,output) writech(10,
output) nldone FALSE idflag FALSE column 0 $) ELSE
$( column column + 1 wrch(character) writech(character,output)
$) $) LET hexval(char) VALOF $( TEST '0' char '9' THEN RESULTIS
char - '0' ELSE TEST 'a' char 'f' THEN RESULTIS char - 'a' + 10 ELSE RE
SULTIS 100 $) LET readnum(base, first) BE $( WHILE hexval(first) ba
se DO $( out(hexval(first) 10 - first, first - 32) first getchr()
$) idflag 2 $) LET stringsame(string1, string2) VALOF $( IF
!string1 NE !string2 THEN RESULTIS FALSE FOR ptr 1 TO !string1 IF string
1!ptr NE string2!ptr THEN RESULTIS FALSE RESULTIS TRUE $) LET sysword(w
ord) VALOF $( LET start keywords WHILE start keyend DO $( IF
stringsame(start + 1, word) THEN RESULTIS start start start + start!1 + 2
$) RESULTIS FALSE $) LET idspace() BE $( IF idflag THEN out('
') $) LET writeword(word) BE $( LET ptr, idf sysword(word), 1 T
EST ptr THEN $( IF !ptr LOGOR idflag THEN out(' ') FOR cptr 1 TO w
ord!0 out(word!cptr - 32) IF !ptr THEN $( out(' ') idf
0 $) $) ELSE $( idspace() FOR ptr 1 TO word!0 DO out(wo
rd!ptr) idf 2 $) idflag idf $) LET ident() BE $( LET wo
rdbuff VEC 20 LET wptr 0 WHILE 'a' lastchr 'z' LOGOR '0' lastchr '9'
DO $( wptr wptr + 1 wordbuff!wptr lastchr getchr() $)
wordbuff!0 wptr writeword(wordbuff) $) LET strchr() BE $( TEST
lastchr '**' THEN $( out('**') out(rawchr()) $) ELSE out(las
tchr) rawchr() $) LET condnl() BE $( IF nldone THEN out(13) $)
LET punctuate() BE $( LET temp 0 SWITCHON lastchr INTO $(
CASE '$' condnl() temp getchr() getchr() TEST temp '(' T
HEN $( out('$') out('(') ident() indent indent
+ indentsize $) ELSE $( indent indent - indentsize
out('$') out(')') ident() $) UNLESS lastchr 13 THEN o
ut(13) ENDCASE CASE '' out(13) getchr() ENDCASE CA
SE '"' idspace() out('"') rawchr() UNTIL lastchr '"' strchr
() out('"') getchr() idflag 2 RETURN CASE '' CASE ''
temp lastchr getchr() out(' ') TEST lastchr '' LOGOR lastch
r temp THEN $( out(temp) out(lastchr) getchr() $
) ELSE out(temp) out(' ') ENDCASE CASE '' TEST getchr()
'' THEN $( out(' ') out('') out('') out(' ')
getchr() $) ELSE $( out('') idflag 1
RETURN $) ENDCASE CASE '-' out(' ') TEST getchr() ''
THEN $( out('-') out('') getchr() $) ELSE ou
t('-') out(' ') ENDCASE CASE '/' getchr() TEST lastchr
'**' THEN $( temp indent indent 0 condnl() o
ut('/') out('**') rawchr() $( UNTIL lastchr '**'
DO $( out(lastchr) rawchr() $)
out('**') rawchr() $) REPEATUNTIL lastchr '/' out
('/') out(13) IF getchr() 13 THEN getchr() indent temp
$) ELSE TEST lastchr '/' THEN $( IF column comments THEN o
ut(13) FOR a column TO comments out(' ') out('/') $(
out(lastchr) rawchr() $) REPEATUNTIL lastchr 13
out(13) IF getchr() 13 THEN getchr() $) ELSE TEST lastchr
'' THEN $( out(' ' &P&&&&&&&&&) out('/') out('')
out(' ') getchr() $) ELSE $( out(' ') o
ut('/') out(' ') $) ENDCASE CASE '' getchr() TES
T lastchr '' LOGOR lastchr '/' THEN $( out(' ') out('')
out(lastchr) out(' ') getchr() $) ELSE out('')
ENDCASE CASE ')' CASE '' out(lastchr) getchr() idflag 2
RETURN CASE ''' idspace() out(''') rawchr() strchr(
) out(''') getchr() idflag 2 RETURN CASE '!' IF i
dflag 1 THEN out(' ') out('!') getchr() ENDCASE CASE '+' CA
SE '&' CASE '' CASE '' CASE '**' out(' ') out(lastchr) out(' ')
getchr() ENDCASE CASE ',' out(lastchr) out(' ') get
chr() ENDCASE DEFAULT out(lastchr) getchr() $) idflag FALS
E $) LET beautify() BE $( LET temp 0 WHILE (lastchr NE endstream
ch) & (lastchr NE softeofch) DO $( WHILE space(lastchr) DO getchr()
TEST 'a' lastchr 'z' THEN ident() ELSE TEST '0' lastchr '9' THEN
$( idspace() readnum(10, lastchr) $) ELSE TEST lastchr
'#' THEN $( idspace() out('#') getchr() SWITCHO
N lastchr INTO $( CASE 'x' out('x') readnum(16, getchr(
)) ENDCASE CASE 'b' out('b') readnum(2, getchr())
ENDCASE CASE 'o' out('o') readnum(8, getchr())
ENDCASE DEFAULT readnum(8, lastchr) $) $) ELSE TEST la
stchr 13 THEN $( out(13) getchr() $) ELSE punctuat
e() $) $) LET files() BE $( LET namein VEC 10 AND nameout VEC
10 writes("Enter the input file name ") reads(namein) newline() wri
tes("Enter the output file name ") reads(nameout) newline() UNLESS find
input(namein, input) THEN err("Can't open input") UNLESS findoutput(nameout,
output) THEN err("Can't open output") $) LET readwords(string) BE $(
LET length, rest, lengthptr string%0, 1, 0 WHILE length rest DO $(
TEST string%rest 'B' THEN $( !keyend TRUE rest rest + 1
$) ELSE !keyend FALSE lengthptr keyend + 1 keyend keyend
+ 2 !lengthptr 0 WHILE string%rest NE ',' DO $( !keyend
string%rest keyend, rest, !lengthptr keyend + 1, rest + 1, !lengthptr +
1 $) rest rest + 1 $) $) AND readsys() BE $( readword
s("and,be,break,by,case,do,default,Beq,Beqv,else,endcase,false,for,") readwor
ds("finish,goto,Bge,Bgr,global,get,if,into,let,Blv,Ble,Bls,Blogor,Blogand,")
readwords("loop,Blshift,manifest,Bne,not,Bneqv,or,resultis,return,Brem,Brshift,"
) readwords("Brv,repeat,repeatwhile,repeatuntil,switchon,static,to,test,true,
") readwords("then,table,until,unless,vec,valof,while,inline,option,") $)
LET start() BE $( LET wordarray VEC 500 AND inbuff VEC 82 AND o
utbuff VEC 82 AND namein VEC 10 AND nameout VEC 10 AND lev VEC 3
level(lev) errvec, input, output lev, inbuff, outbuff keywords, keyend
wordarray, wordarray readsys() files() getchr() beautify() error
closein(input) closeout(output) newline() writes("BCPL beautifier finis
hed") $) . will turn all keywords into upper case and all identifiers in
to lower case */ // modif 'P'''''''''