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 32 32 30 37 32 35 00 ..SAMdisk220725.
000030: 2A 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 00 00 00 Track-Info......
000110: 00 00 01 00 02 09 4E E5 00 00 C1 02 00 00 00 02 ......N.........
000120: 00 00 C6 02 00 00 00 02 00 00 C2 02 00 00 00 02 ................
000130: 00 00 C7 02 00 00 00 02 00 00 C3 02 00 00 00 02 ................
000140: 00 00 C8 02 00 00 00 02 00 00 C4 02 00 00 00 02 ................
000150: 00 00 C9 02 00 00 00 02 00 00 C5 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 45 44 43 20 20 20 20 43 4F 4D 00 00 00 76 .BEDC COM...v
000210: 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 00 ................
000220: 00 42 43 50 4C 20 20 20 20 43 4F 4D 00 00 00 78 .BCPL COM...x
000230: 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 00 ................
000240: 00 43 4C 49 42 48 44 52 20 20 20 20 00 00 00 49 .CLIBHDR ...I
000250: 20 21 22 23 24 25 26 27 28 29 00 00 00 00 00 00 !"#$%&'()......
000260: 00 C3 4F 50 59 20 20 20 20 42 20 20 00 00 00 07 ..OPY B ....
000270: 2A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 *...............
000280: 00 4B 45 59 44 45 46 53 20 50 43 57 00 00 00 03 .KEYDEFS PCW....
000290: 2B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +...............
0002A0: 00 44 45 42 55 47 20 20 20 20 20 20 00 00 00 28 .DEBUG ...(
0002B0: 2C 2D 2E 2F 30 00 00 00 00 00 00 00 00 00 00 00 ,-./0...........
0002C0: 00 54 49 44 59 20 20 20 20 42 20 20 00 00 00 44 .TIDY B ...D
0002D0: 31 32 33 34 35 36 37 38 39 00 00 00 00 00 00 00 123456789.......
0002E0: 00 43 4C 49 42 48 44 52 31 20 20 20 00 00 00 29 .CLIBHDR1 ...)
0002F0: 3A 3B 3C 3D 3E 3F 00 00 00 00 00 00 00 00 00 00 :;<=>?..........
000300: 00 42 C5 44 43 20 20 20 20 42 20 A0 00 00 00 80 .B.DC B .....
000310: 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 FGHIJKLMNOPQRSTU
000320: 00 42 C5 44 43 20 20 20 20 42 20 A0 01 00 00 29 .B.DC B ....)
000330: 56 57 58 59 5A 5B 00 00 00 00 00 00 00 00 00 00 VWXYZ[..........
000340: E5 42 43 50 4C 4D 31 20 20 20 20 20 00 00 00 80 .BCPLM1 ....
000350: 40 41 42 43 44 45 5C 5D 5E 5F 60 61 62 63 64 65 @ABCDE\]^_`abcde
000360: E5 42 43 50 4C 4D 31 20 20 20 20 20 01 00 00 80 .BCPLM1 ....
000370: 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 fghijklmnopqrstu
000380: E5 42 43 50 4C 4D 31 20 20 20 20 20 02 00 00 04 .BCPLM1 ....
000390: 76 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 v...............
0003A0: E5 42 43 50 4C 4D 32 20 20 20 20 20 00 00 00 80 .BCPLM2 ....
0003B0: 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 wxyz{|}~........
0003C0: E5 42 43 50 4C 4D 32 20 20 20 20 20 01 00 00 80 .BCPLM2 ....
0003D0: 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 ................
0003E0: E5 42 43 50 4C 4D 32 20 20 20 20 20 02 00 00 08 .BCPLM2 ....
0003F0: 97 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000400: 09 3C 32 0E 01 F1 77 F5 F1 C1 E1 FE 03 28 03 FE .<2...w......(..
000410: FC C0 CD 66 03 A7 28 FA FE 03 28 03 FE FC C0 0E ...f..(...(.....
000420: 6C 11 00 FF CD 05 00 CD CC 02 0D 0A 2A 2A 20 42 l...........** B
000430: 52 45 41 4B 20 2A 2A 0D 0A 00 C3 D6 01 3A 0E 01 REAK **......:..
000440: A7 28 19 3A 0E 01 3D 32 0E 01 4F 06 00 3A D9 01 .(.:..=2..O..:..
000450: 28 10 21 DA 01 11 D9 01 ED B0 18 06 CD 66 03 A7 (.!..........f..
000460: 28 FA 5F 16 00 C9 E5 D5 C5 DD E5 0E 06 1E FF CD (._.............
000470: 05 00 DD E1 C1 D1 E1 C9 2A 06 00 2B CB 45 C8 2B ........*..+.E.+
000480: C9 C3 8C 03 08 07 06 05 04 03 02 01 21 00 00 CD ............!...
000490: 92 02 DD 21 88 FF DD 39 2A 86 03 11 D2 03 3E 02 ...!...9*.....>.
0004A0: C3 7E 01 DD 66 7F DD 6E 7E E5 CD 7B 0D E1 C3 DC .~..f..n~..{....
0004B0: 03 DD 66 7F DD 6E 7E E5 CD C5 0D E1 C3 DC 03 2A ..f..n~........*
0004C0: 86 03 E5 DD 66 7F DD 6E 7E E5 CD C4 0F E1 E1 C3 ....f..n~.......
0004D0: DC 03 01 00 B1 03 00 00 A3 03 BF 03 E1 22 10 01 ........£...."..
0004E0: DD E1 C9 21 00 00 CD 92 02 DD 21 9E FF DD 39 DD ...!......!...9.
0004F0: E5 E1 11 6A 00 19 CB 3C CB 1D E5 2A 14 04 E5 DD ...j...<...*....
000500: 66 69 DD 6E 68 29 6E 26 00 7C EE 80 67 22 14 04 fi.nh)n&.|..g"..
000510: 21 01 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA !......BKz..W.R.
000520: 9B 05 C5 DD 66 69 DD 6E 68 29 DD 56 5D DD 5E 5C ....fi.nh).V].^\
000530: 19 6E 26 00 E5 DD 66 5B DD 6E 5A 11 25 00 A7 ED .n&...f[.nZ.%...
000540: 52 C2 8A 05 DD 66 61 DD 6E 60 29 5E 23 56 EB E5 R....fa.n`)^#V..
000550: DD 66 5D DD 6E 5C 23 DD 74 5D DD 75 5C DD 66 69 .f].n\#.t].u\.fi
000560: DD 6E 68 29 DD 56 5D DD 5E 5C 19 6E 26 00 E5 DD .nh).V].^\.n&...
000570: 66 5D DD 6E 5C 23 E5 DD 66 69 DD 6E 68 29 D1 19 f].n\#..fi.nh)..
000580: 6E 26 00 E5 CD B0 16 E1 EB E5 DD 66 61 DD 6E 60 n&.........fa.n`
000590: 23 DD 74 61 DD 75 60 DD 66 57 DD 6E 56 11 57 05 #.ta.u`.fW.nV.W.
0005A0: 3E 07 C3 7E 01 DD 66 59 DD 6E 58 E5 CD A7 05 E1 >..~..fY.nX.....
0005B0: 21 00 00 EB C3 75 05 DD 66 59 DD 6E 58 E5 CD 8C !....u..fY.nX...
0005C0: 03 E1 21 00 00 EB C3 75 05 21 00 00 E5 DD 66 59 ..!....u.!....fY
0005D0: DD 6E 58 E5 CD 00 06 E1 E1 21 00 00 EB C3 75 05 .nX......!....u.
0005E0: DD 66 55 DD 6E 54 E5 DD 66 59 DD 6E 58 E5 CD ED .fU.nT..fY.nX...
0005F0: 07 E1 E1 21 01 00 EB C3 75 05 DD 66 55 DD 6E 54 ...!....u..fU.nT
000600: E5 42 43 50 4C 4D 33 20 20 20 20 20 00 00 00 80 .BCPLM3 ....
000610: 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 ...........£....
000620: E5 42 43 50 4C 4D 33 20 20 20 20 20 01 00 00 35 .BCPLM3 ...5
000630: A8 A9 AA AB AC AD AE 00 00 00 00 00 00 00 00 00 ................
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 DD 66 59 DD 6E 58 E5 CD 6B 07 E1 E1 21 01 00 ..fY.nX..k...!..
000810: EB C3 75 05 DD 66 55 DD 6E 54 E5 DD 66 59 DD 6E ..u..fU.nT..fY.n
000820: 58 E5 CD 00 06 E1 E1 21 01 00 EB C3 75 05 21 00 X......!....u.!.
000830: 00 EB C3 75 05 DD 66 57 DD 6E 56 E5 CD 8C 03 E1 ...u..fW.nV.....
000840: DD 66 61 DD 6E 60 2B DD 74 61 DD 75 60 21 00 00 .fa.n`+.ta.u`!..
000850: EB C3 75 05 C3 75 05 24 00 2E 05 49 00 14 05 58 ..u..u.$...I...X
000860: 00 FA 04 4F 00 E0 04 4E 00 C9 04 43 00 B7 04 53 ...O...N...C...S
000870: 00 A5 04 35 05 EB EB DD 66 5D DD 6E 5C 19 DD 74 ...5....f].n\..t
000880: 5D DD 75 5C E1 E1 E1 C3 95 05 DD 66 5B DD 6E 5A ].u\.......f[.nZ
000890: E5 CD 8C 03 E1 E1 E1 23 C3 13 04 E1 22 14 04 E1 .......#...."...
0008A0: E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 .".....!......!.
0008B0: FF DD 39 2A CC 05 E5 DD 66 7F DD 6E 7E 29 6E 26 ..9*....f..n~)n&
0008C0: 00 7C EE 80 67 22 CC 05 21 01 00 11 00 00 EB 42 .|..g"..!......B
0008D0: 4B 7A EE 80 57 ED 52 DA F5 05 C5 DD 66 7F DD 6E Kz..W.R.....f..n
0008E0: 7E 29 DD 56 75 DD 5E 74 19 6E 26 00 E5 CD 8C 03 ~).Vu.^t.n&.....
0008F0: E1 E1 23 18 D6 E1 22 CC 05 E1 22 10 01 DD E1 C9 ..#..."...".....
000900: 21 2A 00 CD 92 02 DD 21 8A FF DD 39 21 00 00 E5 !*.....!...9!...
000910: DD 66 7D DD 6E 7C E5 2A 10 01 CB 3C CB 1D E5 DD .f}.n|.*...<....
000920: 66 7D DD 6E 7C 7C EE 80 67 11 00 80 A7 ED 52 D2 f}.n||..g.....R.
000930: 54 06 DD 66 7F DD 6E 7E 2B DD 74 7F DD 75 7E DD T..f..n~+.t..u~.
000940: 66 73 DD 6E 72 7C EE FF 67 7D EE FF 6F 23 DD 74 fs.nr|..g}..o#.t
000950: 73 DD 75 72 DD 66 73 DD 6E 72 11 0A 00 CD 32 01 s.ur.fs.nr....2.
000960: EB E5 DD 66 71 DD 6E 70 DD 56 75 DD 5E 74 19 29 ...fq.np.Vu.^t.)
000970: D1 73 23 72 DD 66 73 DD 6E 72 11 0A 00 CD 32 01 .s#r.fs.nr....2.
000980: DD 74 73 DD 75 72 DD 66 75 DD 6E 74 23 DD 74 75 .ts.ur.fu.nt#.tu
000990: DD 75 74 DD 7E 73 DD B6 72 C2 54 06 2A B5 06 E5 .ut.~s..r.T.*...
0009A0: DD 66 7F DD 6E 7E 7C EE 80 67 22 B5 06 DD 66 75 .f..n~|..g"...fu
0009B0: DD 6E 74 23 11 00 00 EB 42 4B 7A EE 80 57 ED 52 .nt#....BKz..W.R
0009C0: DA D0 06 C5 21 20 00 E5 CD 8C 03 E1 E1 23 18 E4 ....! .......#..
0009D0: E1 22 B5 06 DD 66 7D DD 6E 7C 7C EE 80 67 11 00 ."...f}.n||..g..
0009E0: 80 A7 ED 52 D2 EF 06 21 2D 00 E5 CD 8C 03 E1 2A ...R...!-......*
0009F0: 05 07 E5 21 00 00 7C EE 80 67 22 05 07 DD 66 75 ...!..|..g"...fu
000A00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000AA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000AB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000AC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000AD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000AE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000AF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000BA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000BB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000BC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000BD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000BE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000BF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000C00: DD 6E 74 2B 11 00 00 44 4D 7C EE 80 67 ED 52 DA .nt+...DM|..g.R.
000C10: 32 07 C5 DD 66 71 DD 6E 70 DD 56 6D DD 5E 6C 19 2...fq.np.Vm.^l.
000C20: 29 5E 23 56 EB 11 30 00 19 E5 CD 8C 03 E1 E1 2B )^#V..0........+
000C30: 18 D2 E1 22 05 07 21 06 00 39 F9 2A 10 01 22 12 ..."..!..9.*..".
000C40: 01 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 ..".....!......!
000C50: 88 FF DD 39 21 00 00 E5 DD 66 7F DD 6E 7E E5 CD ...9!....f..n~..
000C60: 00 06 E1 E1 E1 22 10 01 DD E1 C9 21 00 00 CD 92 .....".....!....
000C70: 02 DD 21 8A FF DD 39 DD 56 7F DD 5E 7E 7A EE 80 ..!...9.V..^~z..
000C80: 57 21 01 80 A7 ED 52 D2 A4 07 DD 66 7F DD 6E 7E W!....R....f..n~
000C90: 2B E5 DD 66 7D DD 6E 7C 11 04 00 CD FE 01 E5 CD +..f}.n|........
000CA0: 6B 07 E1 E1 21 D5 03 C3 CA 07 30 00 31 00 32 00 k...!.....0.1.2.
000CB0: 33 00 34 00 35 00 36 00 37 00 38 00 39 00 41 00 3.4.5.6.7.8.9.A.
000CC0: 42 00 43 00 44 00 45 00 46 00 E5 DD 66 7D DD 6E B.C.D.E.F...f}.n
000CD0: 7C 11 0F 00 7C A2 67 7D A3 6F D1 19 29 5E 23 56 |...|.g}£o..)^#V
000CE0: EB E5 CD 8C 03 E1 E1 22 10 01 DD E1 C9 21 00 00 .......".....!..
000CF0: CD 92 02 DD 21 8A FF DD 39 DD 56 7F DD 5E 7E 7A ....!...9.V..^~z
000D00: EE 80 57 21 01 80 A7 ED 52 D2 26 08 DD 66 7F DD ..W!....R.&..f..
000D10: 6E 7E 2B E5 DD 66 7D DD 6E 7C 11 03 00 CD FE 01 n~+..f}.n|......
000D20: E5 CD ED 07 E1 E1 DD 66 7D DD 6E 7C 11 07 00 7C .......f}.n|...|
000D30: A2 67 7D A3 6F 11 30 00 19 E5 CD 8C 03 E1 E1 22 .g}£o.0........"
000D40: 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD .....!......!...
000D50: 39 21 0D 01 E5 CD 8C 03 E1 E1 22 10 01 DD E1 C9 9!........".....
000D60: 21 00 00 CD 92 02 DD 21 86 FF DD 39 2A 88 03 7C !......!...9*..|
000D70: B5 CA 93 08 2A 88 03 E5 21 00 00 22 88 03 DD 66 ....*...!.."...f
000D80: 79 DD 6E 78 22 8A 03 DD 66 79 DD 6E 78 EB E1 C3 y.nx"...fy.nx...
000D90: AF 08 E1 2A 84 03 7C B5 C2 A2 08 CD 3D 03 EB C3 ...*..|.....=...
000DA0: AB 08 2A 84 03 E5 CD C4 0E E1 EB EB C3 AF 08 E1 ..*.............
000DB0: 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF ".....!......!..
000DC0: DD 39 2A 8A 03 22 88 03 E1 22 10 01 DD E1 C9 21 .9*.."...".....!
000DD0: 00 00 CD 92 02 DD 21 88 FF DD 39 21 00 00 E5 E5 ......!...9!....
000DE0: 2A F5 08 E5 DD 66 77 DD 6E 76 7C EE 80 67 22 F5 *....fw.nv|..g".
000DF0: 08 21 01 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 .!......BKz..W.R
000E00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000ED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001000: DA 20 09 C5 21 08 00 E5 CD 8C 03 E1 21 20 00 E5 . ..!.......! ..
001010: CD 8C 03 E1 21 08 00 E5 CD 8C 03 E1 E1 23 18 D4 ....!........#..
001020: E1 22 F5 08 21 00 00 DD 74 77 DD 75 76 CD 60 08 ."..!...tw.uv.`.
001030: EB DD 74 75 DD 75 74 DD 66 75 DD 6E 74 11 0D 00 ..tu.ut.fu.nt...
001040: A7 ED 52 CA 00 0A DD 66 75 DD 6E 74 11 FC 00 A7 ..R....fu.nt....
001050: ED 52 CA 00 0A DD 66 75 DD 6E 74 11 03 00 A7 ED .R....fu.nt.....
001060: 52 CA 00 0A DD 66 75 DD 6E 74 11 7F 00 A7 ED 52 R....fu.nt.....R
001070: C2 AF 09 DD 7E 77 DD B6 76 C2 87 09 21 07 00 E5 ....~w..v...!...
001080: CD 8C 03 E1 C3 AC 09 21 08 00 E5 CD 8C 03 E1 21 .......!.......!
001090: 20 00 E5 CD 8C 03 E1 21 08 00 E5 CD 8C 03 E1 DD ......!........
0010A0: 66 77 DD 6E 76 2B DD 74 77 DD 75 76 C3 F3 09 DD fw.nv+.tw.uv....
0010B0: 66 77 DD 6E 76 11 FF 00 A7 ED 52 C2 C9 09 21 07 fw.nv.....R...!.
0010C0: 00 E5 CD 8C 03 E1 C3 F3 09 DD 66 75 DD 6E 74 E5 ..........fu.nt.
0010D0: CD 8C 03 E1 DD 66 77 DD 6E 76 23 DD 74 77 DD 75 .....fw.nv#.tw.u
0010E0: 76 DD 66 7F DD 6E 7E 29 DD 56 77 DD 5E 76 19 DD v.f..n~).Vw.^v..
0010F0: 7E 74 77 CD 60 08 EB DD 74 75 DD 75 74 C3 37 09 ~tw.`...tu.ut.7.
001100: DD 66 75 DD 6E 74 11 FC 00 A7 ED 52 CA 1E 0A DD .fu.nt.....R....
001110: 66 75 DD 6E 74 11 03 00 A7 ED 52 C2 27 0A DD 7E fu.nt.....R.'..~
001120: 77 DD B6 76 C2 E0 08 DD 66 75 DD 6E 74 11 FC 00 w..v....fu.nt...
001130: A7 ED 52 CA 45 0A DD 66 75 DD 6E 74 11 03 00 A7 ..R.E..fu.nt....
001140: ED 52 C2 4B 0A 21 00 00 C3 51 0A DD 66 77 DD 6E .R.K.!...Q..fw.n
001150: 76 E5 DD 66 7F DD 6E 7E 29 D1 73 DD 66 75 DD 6E v..f..n~).s.fu.n
001160: 74 11 03 00 A7 ED 52 21 FF FF 28 03 21 00 00 E5 t.....R!..(.!...
001170: DD 66 75 DD 6E 74 11 FC 00 A7 ED 52 21 FF FF 28 .fu.nt.....R!..(
001180: 03 21 00 00 D1 7C B2 67 7D B3 6F 7C EE FF 67 7D .!...|.g}.o|..g}
001190: EE FF 6F EB E1 E1 C3 9B 0A E1 E1 E1 22 10 01 DD ..o........."...
0011A0: E1 C9 21 02 01 CD 92 02 DD 21 86 FF DD 39 2A 10 ..!......!...9*.
0011B0: 01 CB 3C CB 1D E5 DD 66 79 DD 6E 78 E5 CD CF 08 ..<....fy.nx....
0011C0: E1 21 0A 00 E5 DD 66 79 DD 6E 78 E5 CD E5 0A E1 .!....fy.nx.....
0011D0: E1 EB EB E1 C3 D8 0A E1 2A 10 01 22 12 01 E1 22 ........*.."..."
0011E0: 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A FF DD .....!......!...
0011F0: 39 21 01 00 E5 21 00 00 E5 DD 66 7D DD 6E 7C 29 9!...!....f}.n|)
001200: 21 2E 39 11 9B 3B 01 11 00 3E 0A C3 9E 01 00 00 !.9..;...>......
001210: 00 00 00 00 00 00 CD 5C 01 F5 78 06 10 29 CB 11 .......\..x..)..
001220: 17 30 01 19 10 F7 F1 CB 7F C8 EB 21 00 00 A7 ED .0.........!....
001230: 52 C9 CD 5C 01 F5 3E 10 CB 21 CB 10 CB 15 CB 14 R..\..>..!......
001240: A7 ED 52 38 03 03 18 01 19 3D 20 EC 50 59 EB F1 ..R8.....= .PY..
001250: A7 C8 7C EE FF 67 7D EE FF 6F 23 C9 44 4D 21 00 ..|..g}..o#.DM!.
001260: 00 3E 00 CB 78 28 0A A7 ED 42 44 4D 21 00 00 3E .>..x(...BDM!..>
001270: 80 CB 7A C8 EE 80 A7 ED 52 EB 21 00 00 C9 A7 28 ..z.....R.!....(
001280: 17 EB 4E 23 46 23 EB A7 ED 42 28 0C 09 EB 23 23 ..N#F#...B(...##
001290: 3D 20 EF 5E 23 56 EB E9 EB 5E 23 56 EB E9 32 15 = .^#V...^#V..2.
0012A0: 01 32 14 01 E5 EB 78 B1 28 11 5E 23 56 23 D5 5E .2....x.(.^#V#.^
0012B0: 23 56 23 E3 73 23 72 E1 0B 18 EB CB 45 28 01 23 #V#.s#r.....E(.#
0012C0: 22 12 01 22 10 01 ED 43 0E 01 C1 CD 78 03 F9 00 ".."...C....x...
0012D0: 00 60 69 CD 9D 01 C3 00 00 00 00 00 00 00 00 00 .`i.............
0012E0: 00 D1 DD E5 ED 4B 10 01 C5 ED 4B 12 01 ED 43 10 .....K....K...C.
0012F0: 01 09 22 12 01 EB E9 7A B3 C8 29 1B 18 F9 7A B3 .."....z..)...z.
001300: C8 CB 3C CB 1D 1B 18 F6 C1 E1 E5 C5 29 ED 5B 10 ..<.........).[.
001310: 01 73 23 72 23 ED 5B 12 01 73 23 72 23 DD E5 D1 .s#r#.[..s#r#...
001320: 73 23 72 23 EB 21 04 00 39 EB 73 23 72 C9 C1 C1 s#r#.!..9.s#r...
001330: E1 29 5E 23 56 23 ED 53 10 01 5E 23 56 23 ED 53 .)^#V#.S..^#V#.S
001340: 12 01 5E 23 56 23 D5 DD E1 5E 23 66 6B F9 60 69 ..^#V#...^#fk.`i
001350: E9 E1 C1 D1 D5 C5 E5 2A 10 01 E5 D5 2A 12 01 22 .......*....*.."
001360: 10 01 CB 3C CB 1D E5 EB 23 29 38 49 EB 2A 10 01 ...<....#)8I.*..
001370: 19 38 42 22 12 01 EB 21 CE FF 39 A7 ED 52 38 35 .8B"...!..9..R85
001380: 60 69 CD 9D 01 E1 E1 2A 10 01 22 12 01 E1 22 10 `i.....*.."...".
001390: 01 C9 D1 DD E5 ED 4B 10 01 C5 ED 4B 12 01 ED 43 ......K....K...C
0013A0: 10 01 09 38 10 22 12 01 44 4D 21 CE FF 39 A7 ED ...8."..DM!..9..
0013B0: 42 38 02 EB E9 CD CC 02 53 74 61 63 6B 20 6F 76 B8......Stack ov
0013C0: 65 72 66 6C 6F 77 0D 0A 00 C3 D6 01 E1 7E 23 E5 erflow.......~#.
0013D0: A7 C8 CD D7 02 18 F5 0E 02 5F C3 05 00 3A 14 01 ........._...:..
0013E0: 3D 32 14 01 C0 3A 15 01 32 14 01 CD 66 03 A7 C8 =2...:..2...f...
0013F0: E5 C5 F5 3A 0E 01 FE 08 28 0E 4F 06 00 21 D9 01 ...:....(.O..!..
001400: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
001410: 01 00 01 00 02 09 4E E5 01 00 C1 02 00 00 00 02 ......N.........
001420: 01 00 C6 02 00 00 00 02 01 00 C2 02 00 00 00 02 ................
001430: 01 00 C7 02 00 00 00 02 01 00 C3 02 00 00 00 02 ................
001440: 01 00 C8 02 00 00 00 02 01 00 C4 02 00 00 00 02 ................
001450: 01 00 C9 02 00 00 00 02 01 00 C5 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: 6E 26 00 DD 56 75 DD 5E 74 7C EE 80 67 7A EE 80 n&..Vu.^t|..gz..
001510: 57 A7 ED 52 DA A3 0B DD 66 7D DD 6E 7C 29 DD 56 W..R.£..f}.n|).V
001520: 75 DD 5E 74 19 6E 26 00 E5 CD B0 16 E1 EB 7C EE u.^t.n&.......|.
001530: 80 67 11 00 80 A7 ED 52 DA A3 0B DD 66 7D DD 6E .g.....R.£..f}.n
001540: 7C 29 DD 56 75 DD 5E 74 19 6E 26 00 E5 CD B0 16 |).Vu.^t.n&.....
001550: E1 DD 66 7F DD 6E 7E 7C EE 80 67 7A EE 80 57 A7 ..f..n~|..gz..W.
001560: ED 52 DA A3 0B DD 66 7D DD 6E 7C 29 DD 56 75 DD .R.£..f}.n|).Vu.
001570: 5E 74 19 6E 26 00 E5 CD B0 16 E1 D5 DD 66 73 DD ^t.n&........fs.
001580: 6E 72 DD 56 7F DD 5E 7E CD 16 01 D1 19 DD 74 73 nr.V..^~......ts
001590: DD 75 72 DD 66 75 DD 6E 74 23 DD 74 75 DD 75 74 .ur.fu.nt#.tu.ut
0015A0: C3 F9 0A DD 66 73 DD 6E 72 EB E1 E1 C3 B1 0B E1 ....fs.nr.......
0015B0: E1 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 ..".....!......!
0015C0: 8A FF DD 39 21 0F 00 E5 DD 66 7F DD 6E 7E 29 E5 ...9!....f..n~).
0015D0: DD 66 7F DD 6E 7E E5 DD 66 7D DD 6E 7C E5 CD 11 .f..n~..f}.n|...
0015E0: 12 E1 E1 DD E5 E1 11 72 00 19 CB 3C CB 1D E5 DD .......r...<....
0015F0: E5 E1 11 74 00 19 CB 3C CB 1D E5 CD 2D 14 E1 E1 ...t...<....-...
001600: DD 66 7F DD 6E 7E 11 11 00 19 29 36 A4 23 36 00 .f..n~....)6.#6.
001610: DD 66 75 DD 6E 74 11 FF 00 A7 ED 52 21 FF FF 20 .fu.nt.....R!..
001620: 03 21 00 00 EB E1 E1 C3 2C 0C E1 E1 E1 22 10 01 .!......,...."..
001630: DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 2A ...!......!...9*
001640: 84 03 E5 21 00 00 22 84 03 DD 56 79 DD 5E 78 7A ...!.."...Vy.^xz
001650: EE 80 57 21 00 80 A7 ED 52 D2 6B 0C DD 66 79 DD ..W!....R.k..fy.
001660: 6E 78 E5 CD 7D 0F E1 EB C3 6E 0C 21 FF FF EB E1 nx..}....n.!....
001670: C3 74 0C E1 E1 22 10 01 DD E1 C9 21 00 00 CD 92 .t...".....!....
001680: 02 DD 21 86 FF DD 39 ED 5B 84 03 7A EE 80 57 21 ..!...9.[..z..W!
001690: 00 80 A7 ED 52 D2 A0 0C 2A 84 03 E5 CD 94 0F E1 ....R...*.......
0016A0: E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A .".....!......!.
0016B0: FF DD 39 21 16 00 E5 DD 66 7F DD 6E 7E 29 E5 DD ..9!....f..n~)..
0016C0: 66 7F DD 6E 7E E5 DD 66 7D DD 6E 7C E5 CD 11 12 f..n~..f}.n|....
0016D0: E1 E1 DD 66 7F DD 6E 7E 29 E5 21 13 00 E5 CD 6F ...f..n~).!....o
0016E0: 14 E1 E1 DD E5 E1 11 72 00 19 CB 3C CB 1D E5 DD .......r...<....
0016F0: E5 E1 11 74 00 19 CB 3C CB 1D E5 CD 2D 14 E1 E1 ...t...<....-...
001700: 21 00 00 29 11 02 00 19 6E 26 00 EB 21 00 01 CD !..)....n&..!...
001710: 16 01 E5 21 00 00 29 23 6E 26 00 D1 19 D1 19 23 ...!..)#n&.....#
001720: E5 21 00 00 29 D1 19 6E 26 00 E5 21 00 00 29 11 .!..)..n&..!..).
001730: 81 00 19 D1 73 DD 66 7D DD 6E 7C 2B 54 5D 29 19 ....s.f}.n|+T]).
001740: E5 21 00 00 29 11 02 00 19 6E 26 00 EB 21 00 01 .!..)....n&..!..
001750: CD 16 01 E5 21 00 00 29 23 6E 26 00 D1 19 D1 19 ....!..)#n&.....
001760: 11 02 00 19 E5 21 00 00 29 D1 19 6E 26 00 E5 21 .....!..)..n&..!
001770: 00 00 29 11 82 00 19 D1 73 DD E5 CD 80 00 DD E1 ..).....s.......
001780: DD 66 7F DD 6E 7E 29 77 23 36 00 DD 66 75 DD 6E .f..n~)w#6..fu.n
001790: 74 29 6E 26 00 E5 21 00 00 29 11 80 00 19 D1 73 t)n&..!..).....s
0017A0: DD 66 75 DD 6E 74 29 23 6E 26 00 E5 21 00 00 29 .fu.nt)#n&..!..)
0017B0: 11 81 00 19 D1 73 DD 66 75 DD 6E 74 29 11 02 00 .....s.fu.nt)...
0017C0: 19 6E 26 00 E5 21 00 00 29 11 82 00 19 D1 73 E1 .n&..!..).....s.
0017D0: 2A 10 01 22 12 01 E1 22 10 01 DD E1 C9 21 00 00 *.."...".....!..
0017E0: CD 92 02 DD 21 88 FF DD 39 DD 66 7F DD 6E 7E 22 ....!...9.f..n~"
0017F0: 84 03 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD ...".....!......
001800: 21 88 FF DD 39 DD 66 7F DD 6E 7E 22 86 03 E1 22 !...9.f..n~"..."
001810: 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD .....!......!...
001820: 39 2A 84 03 EB E1 22 10 01 DD E1 C9 21 00 00 CD 9*....".....!...
001830: 92 02 DD 21 86 FF DD 39 2A 86 03 EB E1 22 10 01 ...!...9*...."..
001840: DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 DD ...!......!...9.
001850: 66 7F DD 6E 7E 7C EE 80 67 11 61 80 A7 ED 52 DA f..n~|..g.a...R.
001860: 82 16 DD 56 7F DD 5E 7E 7A EE 80 57 21 7A 80 A7 ...V..^~z..W!z..
001870: ED 52 DA 82 16 DD 66 7F DD 6E 7E 11 E0 FF 19 C3 .R....f..n~.....
001880: 88 16 DD 66 7F DD 6E 7E EB E1 22 10 01 DD E1 C9 ...f..n~..".....
001890: 21 00 00 CD 92 02 DD 21 88 FF DD 39 DD 66 7F DD !......!...9.f..
0018A0: 6E 7E E5 CD 43 16 E1 EB EB E1 22 10 01 DD E1 C9 n~..C.....".....
0018B0: 21 00 00 CD 92 02 DD 21 88 FF DD 39 DD 66 7F DD !......!...9.f..
0018C0: 6E 7E 7C EE 80 67 11 30 80 A7 ED 52 DA EF 16 DD n~|..g.0...R....
0018D0: 56 7F DD 5E 7E 7A EE 80 57 21 39 80 A7 ED 52 DA V..^~z..W!9...R.
0018E0: EF 16 DD 66 7F DD 6E 7E 11 D0 FF 19 C3 FD 16 DD ...f..n~........
0018F0: 66 7F DD 6E 7E 11 BF FF 19 11 0A 00 19 EB E1 22 f..n~.........."
001900: DD 66 7F DD 6E 7E 11 11 00 19 29 36 24 23 36 00 .f..n~....)6$#6.
001910: DD 66 75 DD 6E 74 11 FF 00 A7 ED 52 21 FF FF 20 .fu.nt.....R!..
001920: 03 21 00 00 EB E1 E1 C3 2C 0D E1 E1 E1 22 10 01 .!......,...."..
001930: DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 2A ...!......!...9*
001940: 86 03 E5 21 00 00 22 86 03 DD 56 79 DD 5E 78 7A ...!.."...Vy.^xz
001950: EE 80 57 21 00 80 A7 ED 52 D2 6B 0D DD 66 79 DD ..W!....R.k..fy.
001960: 6E 78 E5 CD 94 10 E1 EB C3 6E 0D 21 FF FF EB E1 nx.......n.!....
001970: C3 74 0D E1 E1 22 10 01 DD E1 C9 21 00 00 CD 92 .t...".....!....
001980: 02 DD 21 88 FF DD 39 DD 66 7F DD 6E 7E 11 0D 01 ..!...9.f..n~...
001990: A7 ED 52 C2 A7 0D 21 0D 00 E5 CD 7B 0D E1 21 0A ..R...!....{..!.
0019A0: 00 DD 74 7F DD 75 7E DD 66 7F DD 6E 7E E5 21 02 ..t..u~.f..n~.!.
0019B0: 00 E5 CD 6F 14 E1 E1 21 FF FF EB C3 BE 0D E1 22 ...o...!......."
0019C0: 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD .....!......!...
0019D0: 39 DD 66 7F DD 6E 7E 11 0D 01 A7 ED 52 C2 F1 0D 9.f..n~.....R...
0019E0: 21 0D 00 E5 CD C5 0D E1 21 0A 00 DD 74 7F DD 75 !.......!...t..u
0019F0: 7E DD 66 7F DD 6E 7E E5 21 05 00 E5 CD 6F 14 E1 ~.f..n~.!....o..
001A00: E1 21 FF FF EB C3 08 0E E1 22 10 01 DD E1 C9 21 .!.......".....!
001A10: 00 00 CD 92 02 DD 21 86 FF DD 39 E5 DD E5 E1 11 ......!...9.....
001A20: 78 00 19 CB 3C CB 1D E5 21 0F 00 E5 CD 92 14 E1 x...<...!.......
001A30: E1 DD 66 79 DD 6E 78 11 00 00 A7 ED 52 21 FF FF ..fy.nx.....R!..
001A40: 28 03 21 00 00 EB E1 C3 4B 0E E1 E1 22 10 01 DD (.!.....K..."...
001A50: E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 21 0B ..!......!...9!.
001A60: 00 E5 E5 DD E5 E1 11 76 00 19 CB 3C CB 1D E5 DD .......v...<....
001A70: E5 E1 11 78 00 19 CB 3C CB 1D E5 CD 2D 14 E1 E1 ...x...<....-...
001A80: DD 66 79 DD 6E 78 11 01 00 A7 ED 52 21 FF FF 28 .fy.nx.....R!..(
001A90: 03 21 00 00 EB E1 E1 C3 9C 0E E1 E1 E1 22 10 01 .!..........."..
001AA0: DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 CD ...!......!...9.
001AB0: 52 0E EB 7C B5 CA BD 0E CD 3D 03 18 F2 E1 22 10 R..|.....=....".
001AC0: 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 ....!......!...9
001AD0: 21 00 00 E5 21 00 00 E5 DD 66 7F DD 6E 7E 11 11 !...!....f..n~..
001AE0: 00 19 29 5E 23 56 EB 11 A4 00 A7 ED 52 C2 1A 0F ..)^#V......R...
001AF0: DD 66 7F DD 6E 7E E5 CD 37 11 E1 EB 7C EE FF 67 .f..n~..7...|..g
001B00: 10 01 DD E1 C9 C3 20 17 18 17 16 15 14 13 12 11 ...... .........
001B10: 10 0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 ................
001B20: C3 28 17 00 04 03 02 01 21 00 00 CD 92 02 DD 21 .(......!......!
001B30: 8C FF DD 39 DD 66 7B DD 6E 7A DD 56 7D DD 5E 7C ...9.f{.nz.V}.^|
001B40: DD 46 7F DD 4E 7E A7 ED 52 19 38 04 ED B0 18 08 .F..N~..R.8.....
001B50: 0B 09 EB 09 EB 03 ED B8 E1 22 10 01 DD E1 C9 21 .........".....!
001B60: 04 00 CD 92 02 DD 21 92 FF DD 39 2A 10 01 CB 3C ......!...9*...<
001B70: CB 1D E5 21 03 00 E5 DD 66 6D DD 6E 6C 29 E5 21 ...!....fm.nl).!
001B80: 90 00 E5 CD 28 17 21 06 00 39 F9 21 00 00 29 11 ....(.!..9.!..).
001B90: 90 00 19 36 C3 DD 66 75 DD 6E 74 11 FF 00 7C A2 ...6..fu.nt...|.
001BA0: 67 7D A3 6F E5 21 00 00 29 11 91 00 19 D1 73 DD g}£o.!..).....s.
001BB0: 66 75 DD 6E 74 11 00 FF 7C A2 67 7D A3 6F 11 08 fu.nt...|.g}£o..
001BC0: 00 CD FE 01 E5 21 00 00 29 11 92 00 19 D1 73 DD .....!..).....s.
001BD0: E5 DD 66 77 DD 6E 76 29 5E 23 56 D5 DD 66 79 DD ..fw.nv)^#V..fy.
001BE0: 6E 78 29 4E 23 46 DD 66 7F DD 6E 7E 29 5E 23 56 nx)N#F.f..n~)^#V
001BF0: D5 DD 66 7D DD 6E 7C 29 5E 23 56 D5 DD 66 7B DD ..f}.n|)^#V..f{.
001C00: 6E 7A 29 5E 23 56 E1 DD E1 F1 CD 90 00 DD 22 90 nz)^#V........".
001C10: 00 DD E1 F5 E5 DD 66 7B DD 6E 7A 29 73 23 72 DD ......f{.nz)s#r.
001C20: 66 7D DD 6E 7C 29 D1 73 23 72 DD 66 7F DD 6E 7E f}.n|).s#r.f..n~
001C30: 29 ED 5B 90 00 73 23 72 DD 66 79 DD 6E 78 29 71 ).[..s#r.fy.nx)q
001C40: 23 70 DD 66 77 DD 6E 76 29 D1 73 23 72 21 03 00 #p.fw.nv).s#r!..
001C50: E5 21 90 00 E5 DD 66 6D DD 6E 6C 29 E5 CD 28 17 .!....fm.nl)..(.
001C60: 21 06 00 39 F9 E1 2A 10 01 22 12 01 E1 22 10 01 !..9..*.."..."..
001C70: DD E1 C9 21 08 00 CD 92 02 DD 21 92 FF DD 39 2A ...!......!...9*
001C80: 10 01 CB 3C CB 1D E5 21 06 00 E5 DD 66 6D DD 6E ...<...!....fm.n
001C90: 6C 29 E5 21 80 00 E5 CD 28 17 21 06 00 39 F9 21 l).!....(.!..9.!
001CA0: 00 00 29 11 80 00 19 36 CD 21 00 00 29 11 02 00 ..)....6.!..)...
001CB0: 19 6E 26 00 EB 21 00 01 CD 16 01 E5 21 00 00 29 .n&..!......!..)
001CC0: 23 6E 26 00 D1 19 11 57 00 19 23 E5 21 00 00 29 #n&....W..#.!..)
001CD0: D1 19 6E 26 00 E5 21 00 00 29 11 81 00 19 D1 73 ..n&..!..).....s
001CE0: 21 00 00 29 11 02 00 19 6E 26 00 EB 21 00 01 CD !..)....n&..!...
001CF0: 16 01 E5 21 00 00 29 23 6E 26 00 D1 19 11 57 00 ...!..)#n&....W.
001D00: 7D EE FF 6F DD 74 75 DD 75 74 DD 66 7F DD 6E 7E }..o.tu.ut.f..n~
001D10: 11 11 00 19 29 36 24 23 36 00 DD 66 7F DD 6E 7E ....)6$#6..f..n~
001D20: 11 11 00 19 29 5E 23 56 EB E5 DD 66 7F DD 6E 7E ....)^#V...f..n~
001D30: 29 D1 19 6E 26 00 DD 74 77 DD 75 76 DD 66 7F DD )..n&..tw.uv.f..
001D40: 6E 7E 11 11 00 19 29 5E 23 56 EB 23 E5 DD 66 7F n~....)^#V.#..f.
001D50: DD 6E 7E 11 11 00 19 29 D1 73 23 72 DD 66 77 DD .n~....).s#r.fw.
001D60: 6E 76 DD 56 75 DD 5E 74 7C B2 67 7D B3 6F EB E1 nv.Vu.^t|.g}.o..
001D70: E1 C3 76 0F E1 E1 E1 22 10 01 DD E1 C9 21 00 00 ..v....".....!..
001D80: CD 92 02 DD 21 88 FF DD 39 21 FF FF EB E1 22 10 ....!...9!....".
001D90: 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 ....!......!...9
001DA0: DD 66 7F DD 6E 7E 29 11 20 00 19 36 00 DD 66 7F .f..n~). ..6..f.
001DB0: DD 6E 7E 11 11 00 19 29 36 A4 23 36 00 E1 22 10 .n~....)6.#6..".
001DC0: 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A FF DD 39 ....!......!...9
001DD0: 21 FF FF E5 DD 66 7D DD 6E 7C 11 0D 01 A7 ED 52 !....f}.n|.....R
001DE0: C2 0A 10 DD 66 7F DD 6E 7E E5 21 0D 00 E5 CD C4 ....f..n~.!.....
001DF0: 0F E1 E1 EB 7C B5 C2 01 10 21 00 00 EB E1 C3 8D ....|....!......
001E00: 10 21 0A 00 DD 74 7D DD 75 7C DD 66 7F DD 6E 7E .!...t}.u|.f..n~
001E10: 11 11 00 19 29 5E 23 56 EB 11 A4 00 A7 ED 52 C2 ....)^#V......R.
001E20: 44 10 DD 66 7F DD 6E 7E E5 CD A4 11 E1 EB DD 74 D..f..n~.......t
001E30: 75 DD 75 74 DD 66 7F DD 6E 7E 11 11 00 19 29 36 u.ut.f..n~....)6
001E40: 24 23 36 00 DD 66 7F DD 6E 7E 11 11 00 19 29 5E $#6..f..n~....)^
001E50: 23 56 EB E5 DD 66 7F DD 6E 7E 29 D1 19 DD 7E 7C #V...f..n~)...~|
001E60: 77 DD 66 7F DD 6E 7E 11 11 00 19 29 5E 23 56 EB w.f..n~....)^#V.
001E70: 23 E5 DD 66 7F DD 6E 7E 11 11 00 19 29 D1 73 23 #..f..n~....).s#
001E80: 72 DD 66 75 DD 6E 74 EB E1 C3 8D 10 E1 E1 22 10 r.fu.nt.......".
001E90: 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 ....!......!...9
001EA0: 21 10 00 E5 DD 66 7F DD 6E 7E 29 E5 DD 66 7F DD !....f..n~)..f..
001EB0: 6E 7E 11 11 00 19 29 5E 23 56 EB 11 A4 00 A7 ED n~....)^#V......
001EC0: 52 CA D4 10 DD 66 7F DD 6E 7E E5 21 1A 00 E5 CD R....f..n~.!....
001ED0: C4 0F E1 E1 DD 66 7F DD 6E 7E 11 11 00 19 29 5E .....f..n~....)^
001EE0: 23 56 EB 11 24 00 A7 ED 52 CA F7 10 DD 66 7F DD #V..$...R....f..
001EF0: 6E 7E E5 CD A4 11 E1 DD E5 E1 11 74 00 19 CB 3C n~.........t...<
001F00: 19 11 02 00 19 E5 21 00 00 29 D1 19 6E 26 00 E5 ......!..)..n&..
001F10: 21 00 00 29 11 82 00 19 D1 73 DD 66 75 DD 6E 74 !..).....s.fu.nt
001F20: 11 FF 00 7C A2 67 7D A3 6F E5 21 00 00 29 11 83 ...|.g}£o.!..)..
001F30: 00 19 D1 73 DD 66 75 DD 6E 74 11 00 FF 7C A2 67 ...s.fu.nt...|.g
001F40: 7D A3 6F 11 08 00 CD FE 01 E5 21 00 00 29 11 84 }£o.......!..)..
001F50: 00 19 D1 73 21 00 00 29 11 85 00 19 36 C9 DD 66 ...s!..)....6..f
001F60: 7F DD 6E 7E E5 DD 66 7D DD 6E 7C E5 DD 66 7B DD ..n~..f}.n|..f{.
001F70: 6E 7A E5 DD 66 79 DD 6E 78 E5 DD 66 77 DD 6E 76 nz..fy.nx..fw.nv
001F80: E5 21 80 00 E5 CD 5F 17 21 0C 00 39 F9 21 06 00 .!...._.!..9.!..
001F90: E5 21 80 00 E5 DD 66 6D DD 6E 6C 29 E5 CD 28 17 .!....fm.nl)..(.
001FA0: 21 06 00 39 F9 E1 2A 10 01 22 12 01 E1 22 10 01 !..9..*.."..."..
001FB0: DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 21 ...!......!...9!
001FC0: 0C 00 E5 E5 E5 E5 E5 E5 DD E5 E1 11 76 00 19 CB ............v...
001FD0: 3C CB 1D E5 DD E5 E1 11 78 00 19 CB 3C CB 1D E5 <.......x...<...
001FE0: CD 2D 14 E1 E1 DD 66 77 DD 6E 76 11 FF 00 7C A2 .-....fw.nv...|.
001FF0: 67 7D A3 6F 7C EE 80 67 11 30 80 A7 ED 52 D2 0D g}£o|..g.0...R..
002000: 1A 21 02 00 EB 21 0C 00 39 F9 C3 7F 1A DD E5 E1 .!...!..9.......
002010: 11 6E 00 19 CB 3C CB 1D E5 DD E5 E1 11 70 00 19 .n...<.......p..
002020: CB 3C CB 1D E5 DD E5 E1 11 76 00 19 CB 3C CB 1D .<.......v...<..
002030: E5 DD E5 E1 11 72 00 19 CB 3C CB 1D E5 DD E5 E1 .....r...<......
002040: 11 74 00 19 CB 3C CB 1D E5 21 E3 00 E5 CD 73 18 .t...<...!....s.
002050: 21 0C 00 39 F9 DD 66 75 DD 6E 74 11 00 FF 7C A2 !..9..fu.nt...|.
002060: 67 7D A3 6F 11 08 00 CD FE 01 EB 21 03 00 19 EB g}£o.......!....
002070: 21 0C 00 39 F9 C3 7F 1A 21 08 00 39 F9 E1 E1 E1 !..9....!..9....
002080: 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF ".....!......!..
002090: DD 39 21 1B 00 E5 CD 8C 03 E1 DD 66 7F DD 6E 7E .9!........f..n~
0020A0: E5 CD 8C 03 E1 E1 22 10 01 DD E1 C9 21 00 00 CD ......".....!...
0020B0: 92 02 DD 21 86 FF DD 39 2A 1E 17 11 02 00 A7 ED ...!...9*.......
0020C0: 52 C2 CF 1A 21 0C 00 E5 CD 8C 03 E1 C3 D7 1A 21 R...!..........!
0020D0: 45 00 E5 CD 86 1A E1 E1 22 10 01 DD E1 C9 21 00 E.......".....!.
0020E0: 00 CD 92 02 DD 21 8A FF DD 39 2A 1E 17 11 02 00 .....!...9*.....
0020F0: A7 ED 52 C2 26 1B 21 1F 00 E5 21 06 00 E5 CD 6F ..R.&.!...!....o
002100: CB 1D E5 DD E5 E1 11 76 00 19 CB 3C CB 1D E5 CD .......v...<....
002110: 2D 14 E1 E1 DD 66 77 DD 6E 76 11 FF 00 A7 ED 52 -....fw.nv.....R
002120: 21 FF FF 20 03 21 00 00 EB E1 E1 C3 30 11 E1 E1 !.. .!......0...
002130: E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 .".....!......!.
002140: FF DD 39 21 14 00 E5 DD 66 7F DD 6E 7E 29 E5 DD ..9!....f..n~)..
002150: 66 7F DD 6E 7E 29 11 24 00 19 E5 21 1A 00 E5 CD f..n~).$...!....
002160: 6F 14 E1 E1 DD E5 E1 11 74 00 19 CB 3C CB 1D E5 o.......t...<...
002170: DD E5 E1 11 76 00 19 CB 3C CB 1D E5 CD 2D 14 E1 ....v...<....-..
002180: E1 DD 66 77 DD 6E 76 11 00 00 A7 ED 52 21 FF FF ..fw.nv.....R!..
002190: 28 03 21 00 00 EB E1 E1 C3 9D 11 E1 E1 E1 22 10 (.!...........".
0021A0: 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 ....!......!...9
0021B0: 21 15 00 E5 DD 66 7F DD 6E 7E 29 E5 DD 66 7F DD !....f..n~)..f..
0021C0: 6E 7E 29 11 24 00 19 E5 21 1A 00 E5 CD 6F 14 E1 n~).$...!....o..
0021D0: E1 DD E5 E1 11 74 00 19 CB 3C CB 1D E5 DD E5 E1 .....t...<......
0021E0: 11 76 00 19 CB 3C CB 1D E5 CD 2D 14 E1 E1 DD 66 .v...<....-....f
0021F0: 77 DD 6E 76 11 00 00 A7 ED 52 21 FF FF 28 03 21 w.nv.....R!..(.!
002200: 00 00 EB E1 E1 C3 0A 12 E1 E1 E1 22 10 01 DD E1 ..........."....
002210: C9 21 00 00 CD 92 02 DD 21 8A FF DD 39 21 01 00 .!......!...9!..
002220: E5 21 01 00 E5 21 00 00 E5 21 FF FF E5 2A 3F 12 .!...!...!...*?.
002230: E5 21 0B 00 7C EE 80 67 22 3F 12 21 01 00 11 00 .!..|..g"?.!....
002240: 00 EB 42 4B 7A EE 80 57 ED 52 DA 62 12 C5 DD 66 ..BKz..W.R.b...f
002250: 7F DD 6E 7E 29 DD 56 6B DD 5E 6A 19 36 20 E1 23 ..n~).Vk.^j.6 .#
002260: 18 DC E1 22 3F 12 DD 66 7F DD 6E 7E 29 36 00 DD ..."?..f..n~)6..
002270: 66 7D DD 6E 7C 29 6E 26 00 DD 56 75 DD 5E 74 7C f}.n|)n&..Vu.^t|
002280: EE 80 67 7A EE 80 57 A7 ED 52 DA 6D 13 DD 66 7D ..gz..W..R.m..f}
002290: DD 6E 7C 29 DD 56 75 DD 5E 74 19 6E 26 00 E5 CD .n|).Vu.^t.n&...
0022A0: 43 16 E1 EB DD 74 71 DD 75 70 DD 66 75 DD 6E 74 C....tq.up.fu.nt
0022B0: 23 DD 74 75 DD 75 74 DD 66 73 DD 6E 72 11 02 00 #.tu.ut.fs.nr...
0022C0: A7 ED 52 C2 0F 13 DD 66 6F DD 6E 6E 7C B5 CA 0F ..R....fo.nn|...
0022D0: 13 DD 66 71 DD 6E 70 11 3A 00 A7 ED 52 C2 0F 13 ..fq.np.:...R...
0022E0: DD 66 7F DD 6E 7E 29 23 6E 26 00 11 BF FF 19 23 .f..n~)#n&.....#
0022F0: E5 DD 66 7F DD 6E 7E 29 D1 73 21 01 00 DD 74 73 ..f..n~).s!...ts
002300: 14 E1 E1 DD 66 7D DD 6E 7C E5 21 06 00 E5 CD 6F ....f}.n|.!....o
002310: 14 E1 E1 DD 66 7F DD 6E 7E E5 21 06 00 E5 CD 6F ....f..n~.!....o
002320: 14 E1 E1 C3 4E 1B 21 59 00 E5 CD 86 1A E1 DD 66 ....N.!Y.......f
002330: 7F DD 6E 7E 11 20 00 19 2B E5 CD 8C 03 E1 DD 66 ..n~. ..+......f
002340: 7D DD 6E 7C 11 20 00 19 2B E5 CD 8C 03 E1 E1 22 }.n|. ..+......"
002350: 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD .....!......!...
002360: 39 2A 76 1B E5 DD 66 7F DD 6E 7E 7C EE 80 67 22 9*v...f..n~|..g"
002370: 76 1B 21 01 00 11 00 00 EB 42 4B 7A EE 80 57 ED v.!......BKz..W.
002380: 52 DA 91 1B C5 21 20 00 E5 CD 8C 03 E1 E1 23 18 R....! .......#.
002390: E4 E1 22 76 1B E1 22 10 01 DD E1 C9 21 00 00 CD .."v..".....!...
0023A0: 92 02 DD 21 88 FF DD 39 DD 66 7F DD 6E 7E 11 0D ...!...9.f..n~..
0023B0: 00 A7 ED 52 C2 BD 1B CD 45 08 C3 C8 1B DD 66 7F ...R....E.....f.
0023C0: DD 6E 7E E5 CD 8C 03 E1 E1 22 10 01 DD E1 C9 21 .n~......".....!
0023D0: 00 00 CD 92 02 DD 21 86 FF DD 39 C3 DE 1B E1 22 ......!...9...."
0023E0: 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD .....!......!...
0023F0: 39 C3 F4 1B E1 22 10 01 DD E1 C9 21 00 00 CD 92 9....".....!....
002400: 02 DD 21 86 FF DD 39 C3 0A 1C E1 22 10 01 DD E1 ..!...9...."....
002410: C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 21 07 00 .!......!...9!..
002420: E5 CD 8C 03 E1 E1 22 10 01 DD E1 C9 21 00 00 CD ......".....!...
002430: 92 02 DD 21 88 FF DD 39 21 01 00 E5 DD 66 7F DD ...!...9!....f..
002440: 6E 7E 29 5E 23 56 EB 11 0D 00 A7 ED 52 CA 6C 1C n~)^#V......R.l.
002450: DD 66 77 DD 6E 76 23 DD 74 77 DD 75 76 DD 66 7F .fw.nv#.tw.uv.f.
002460: DD 6E 7E 23 DD 74 7F DD 75 7E 18 D0 DD 66 77 DD .n~#.t..u~...fw.
002470: 6E 76 EB E1 C3 78 1C E1 E1 22 10 01 DD E1 C9 21 nv...x...".....!
002480: 00 00 CD 92 02 DD 21 8A FF DD 39 2A A1 1C E5 DD ......!...9*....
002490: 66 7F DD 6E 7E 2B 7C EE 80 67 22 A1 1C 21 00 00 f..n~+|..g"..!..
0024A0: 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA CB 1C C5 ....BKz..W.R....
0024B0: DD 66 7D DD 6E 7C DD 56 73 DD 5E 72 19 29 5E 23 .f}.n|.Vs.^r.)^#
0024C0: 56 EB E5 CD 8C 03 E1 E1 23 18 D5 E1 22 A1 1C 21 V.......#..."..!
0024D0: 4F 00 DD 56 7F DD 5E 7E A7 ED 52 E5 CD 55 1B E1 O..V..^~..R..U..
0024E0: E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A .".....!......!.
0024F0: FF DD 39 2A 08 17 7C B5 CA 4A 1D 2A 19 1D E5 DD ..9*..|..J.*....
002500: DD 75 72 21 00 00 DD 74 6F DD 75 6E C3 6F 12 DD .ur!...to.un.o..
002510: 66 71 DD 6E 70 11 2E 00 A7 ED 52 C2 2A 13 21 09 fq.np.....R.*.!.
002520: 00 DD 74 73 DD 75 72 C3 6D 13 DD 66 73 DD 6E 72 ..ts.ur.m..fs.nr
002530: 11 09 00 A7 ED 52 CA 48 13 DD 66 71 DD 6E 70 11 .....R.H..fq.np.
002540: 20 00 A7 ED 52 C2 4B 13 C3 6D 13 DD 66 7F DD 6E ...R.K..m..f..n
002550: 7E 29 DD 56 73 DD 5E 72 19 DD 7E 70 77 DD 66 73 ~).Vs.^r..~pw.fs
002560: DD 6E 72 23 DD 74 73 DD 75 72 C3 6F 12 DD 66 71 .nr#.ts.ur.o..fq
002570: DD 6E 70 11 2E 00 A7 ED 52 C2 07 14 DD 66 7D DD .np.....R....f}.
002580: 6E 7C 29 6E 26 00 DD 56 75 DD 5E 74 7C EE 80 67 n|)n&..Vu.^t|..g
002590: 7A EE 80 57 A7 ED 52 DA 07 14 DD 66 7D DD 6E 7C z..W..R....f}.n|
0025A0: 29 DD 56 75 DD 5E 74 19 6E 26 00 E5 CD 43 16 E1 ).Vu.^t.n&...C..
0025B0: EB DD 74 71 DD 75 70 DD 66 75 DD 6E 74 23 DD 74 ..tq.up.fu.nt#.t
0025C0: 75 DD 75 74 DD 66 71 DD 6E 70 11 20 00 A7 ED 52 u.ut.fq.np. ...R
0025D0: CA E2 13 DD 66 73 DD 6E 72 11 0C 00 A7 ED 52 C2 ....fs.nr.....R.
0025E0: E5 13 C3 07 14 DD 66 7F DD 6E 7E 29 DD 56 73 DD ......f..n~).Vs.
0025F0: 5E 72 19 DD 7E 70 77 DD 66 73 DD 6E 72 23 DD 74 ^r..~pw.fs.nr#.t
002600: 73 DD 75 72 C3 7C 13 DD 66 7F DD 6E 7E 29 11 0C s.ur.|..f..n~)..
002610: 00 19 36 00 DD 66 7F DD 6E 7E 29 11 20 00 19 36 ..6..f..n~). ..6
002620: 00 21 08 00 39 F9 E1 22 10 01 DD E1 C9 21 00 00 .!..9..".....!..
002630: CD 92 02 DD 21 8A FF DD 39 DD 66 7F DD 6E 7E 29 ....!...9.f..n~)
002640: 5E 23 56 DD 66 7D DD 6E 7C 29 4E DD E5 CD 05 00 ^#V.f}.n|)N.....
002650: DD E1 EB DD 66 7F DD 6E 7E 29 73 23 72 DD 66 7D ....f..n~)s#r.f}
002660: DD 6E 7C 29 77 23 36 00 E1 22 10 01 DD E1 C9 21 .n|)w#6..".....!
002670: 00 00 CD 92 02 DD 21 8A FF DD 39 DD 56 7F DD 5E ......!...9.V..^
002680: 7E DD 4E 7C DD E5 CD 05 00 DD E1 E1 22 10 01 DD ~.N|........"...
002690: E1 C9 21 04 00 CD 92 02 DD 21 8A FF DD 39 2A 10 ..!......!...9*.
0026A0: 01 CB 3C CB 1D E5 21 00 00 29 11 80 00 19 6E 26 ..<...!..)....n&
0026B0: 00 E5 DD 66 75 DD 6E 74 29 D1 73 21 00 00 29 11 ...fu.nt).s!..).
0026C0: 81 00 19 6E 26 00 E5 DD 66 75 DD 6E 74 29 23 D1 ...n&...fu.nt)#.
0026D0: 73 21 00 00 29 11 82 00 19 6E 26 00 E5 DD 66 75 s!..)....n&...fu
0026E0: DD 6E 74 29 11 02 00 19 D1 73 21 00 00 29 11 80 .nt).....s!..)..
0026F0: 00 19 36 C3 DD 66 7D DD 6E 7C 2B 54 5D 29 19 E5 ..6..f}.n|+T])..
002700: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
002710: 02 00 01 00 02 09 50 E5 02 00 C1 02 00 00 00 02 ......P.........
002720: 02 00 C6 02 00 00 00 02 02 00 C2 02 00 00 00 02 ................
002730: 02 00 C7 02 00 00 00 02 02 00 C3 02 00 00 00 02 ................
002740: 02 00 C8 02 00 00 00 02 02 00 C4 02 00 00 00 02 ................
002750: 02 00 C9 02 00 00 00 02 02 00 C5 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: 66 7D DD 6E 7C 29 5E 23 56 EB 2B 7C EE 80 67 22 f}.n|)^#V.+|..g"
002810: 19 1D DD 66 7F DD 6E 7E 11 00 00 EB 42 4B 7A EE ...f..n~....BKz.
002820: 80 57 ED 52 DA 43 1D C5 DD 66 7D DD 6E 7C DD 56 .W.R.C...f}.n|.V
002830: 73 DD 5E 72 19 29 5E 23 56 EB E5 CD 8C 03 E1 E1 s.^r.)^#V.......
002840: 23 18 D5 E1 22 19 1D C3 61 1D DD 66 7D DD 6E 7C #..."...a..f}.n|
002850: DD 56 7F DD 5E 7E 19 29 5E 23 56 EB E5 CD 8C 03 .V..^~.)^#V.....
002860: E1 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 ..".....!......!
002870: 8A FF DD 39 2A 08 17 7C B5 CA F2 1D DD 66 7D DD ...9*..|.....f}.
002880: 6E 7C 29 5E 23 56 EB 2B E5 DD 66 7D DD 6E 7C 29 n|)^#V.+..f}.n|)
002890: D1 73 23 72 2A B1 1D E5 DD 66 7D DD 6E 7C 29 5E .s#r*....f}.n|)^
0028A0: 23 56 EB 7C EE 80 67 22 B1 1D DD 66 7F DD 6E 7E #V.|..g"...f..n~
0028B0: 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA EB 1D C5 ....BKz..W.R....
0028C0: DD 66 73 DD 6E 72 23 EB DD 66 7D DD 6E 7C 19 29 .fs.nr#..f}.n|.)
0028D0: 5E 23 56 EB E5 DD 66 7D DD 6E 7C DD 56 73 DD 5E ^#V...f}.n|.Vs.^
0028E0: 72 19 29 D1 73 23 72 E1 23 18 C5 E1 22 B1 1D C3 r.).s#r.#..."...
0028F0: 05 1E DD 66 7D DD 6E 7C DD 56 7F DD 5E 7E 19 29 ...f}.n|.V..^~.)
002900: 36 20 23 36 00 E1 22 10 01 DD E1 C9 21 00 00 CD 6 #6..".....!...
002910: 92 02 DD 21 8C FF DD 39 2A 08 17 7C B5 CA AC 1E ...!...9*..|....
002920: 2A 3D 1E E5 DD 66 7D DD 6E 7C 7C EE 80 67 22 3D *=...f}.n||..g"=
002930: 1E DD 66 7B DD 6E 7A 29 5E 23 56 EB 11 00 00 44 ..f{.nz)^#V....D
002940: 4D 7C EE 80 67 ED 52 DA 76 1E C5 DD 66 7B DD 6E M|..g.R.v...f{.n
002950: 7A DD 56 71 DD 5E 70 19 29 5E 23 56 EB E5 DD 66 z.Vq.^p.)^#V...f
002960: 71 DD 6E 70 23 EB DD 66 7B DD 6E 7A 19 29 D1 73 q.np#..f{.nz.).s
002970: 23 72 E1 2B 18 C6 E1 22 3D 1E DD 66 7B DD 6E 7A #r.+..."=..f{.nz
002980: DD 56 7D DD 5E 7C 19 29 DD 56 7F DD 5E 7E 73 23 .V}.^|.).V..^~s#
002990: 72 DD 66 7B DD 6E 7A 29 5E 23 56 EB 23 E5 DD 66 r.f{.nz)^#V.#..f
0029A0: 7B DD 6E 7A 29 D1 73 23 72 C3 C3 1E DD 66 7B DD {.nz).s#r....f{.
0029B0: 6E 7A DD 56 7D DD 5E 7C 19 29 DD 56 7F DD 5E 7E nz.V}.^|.).V..^~
0029C0: 73 23 72 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 s#r.".....!.....
0029D0: DD 21 8A FF DD 39 DD 66 7D DD 6E 7C 29 5E 23 56 .!...9.f}.n|)^#V
0029E0: EB DD 56 7F DD 5E 7E 7C EE 80 67 7A EE 80 57 A7 ..V..^~|..gz..W.
0029F0: ED 52 DA FF 1E DD 66 7F DD 6E 7E EB C3 23 1F 2A .R....f..n~..#.*
002A00: 5E 72 19 29 DD 56 71 DD 5E 70 73 23 72 DD 66 7D ^r.).Vq.^ps#r.f}
002A10: DD 6E 7C DD 56 71 DD 5E 70 19 23 DD 74 7D DD 75 .n|.Vq.^p.#.t}.u
002A20: 7C E1 E1 23 C3 27 26 E1 22 28 26 E1 22 10 01 DD |..#.'&."(&."...
002A30: E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 DD 66 ..!......!...9.f
002A40: 7F DD 6E 7E E5 CD BC 22 E1 DD 66 7F DD 6E 7E 19 ..n~..."..f..n~.
002A50: EB 2A 0A 17 7C EE 80 67 7A EE 80 57 A7 ED 52 D2 .*..|..gz..W..R.
002A60: 6F 27 CD 11 1C DD 66 7F DD 6E 7E EB C3 91 27 DD o'....f..n~...'.
002A70: 66 7F DD 6E 7E E5 CD BC 22 E1 DD 66 7F DD 6E 7E f..n~..."..f..n~
002A80: 19 DD 74 7F DD 75 7E DD 66 7F DD 6E 7E EB C3 91 ..t..u~.f..n~...
002A90: 27 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 '.".....!......!
002AA0: 88 FF DD 39 DD 7E 7F DD B6 7E C2 BA 27 CD 11 1C ...9.~...~..'...
002AB0: DD 66 7F DD 6E 7E EB C3 F4 27 DD 66 7F DD 6E 7E .f..n~...'.f..n~
002AC0: 2B DD 74 7F DD 75 7E DD 66 7F DD 6E 7E 2B E5 2A +.t..u~.f..n~+.*
002AD0: 0E 17 29 D1 19 6E 26 00 11 0D 00 A7 ED 52 CA EA ..)..n&......R..
002AE0: 27 DD 7E 7F DD B6 7E C2 BA 27 DD 66 7F DD 6E 7E '.~...~..'.f..n~
002AF0: EB C3 F4 27 E1 22 10 01 DD E1 C9 21 00 00 CD 92 ...'.".....!....
002B00: 02 DD 21 88 FF DD 39 DD 66 7F DD 6E 7E E5 CD 4A ..!...9.f..n~..J
002B10: 24 2A 23 28 E5 21 02 00 7C EE 80 67 22 23 28 2A $*#(.!..|..g"#(*
002B20: 12 17 11 00 00 44 4D 7C EE 80 67 ED 52 DA 67 28 .....DM|..g.R.g(
002B30: C5 DD 7E 77 DD B6 76 C2 51 28 2A 12 17 DD 56 73 ..~w..v.Q(*...Vs
002B40: DD 5E 72 A7 ED 52 23 22 12 17 E1 C3 67 28 C3 63 .^r..R#"....g(.c
002B50: 28 DD 66 77 DD 6E 76 E5 CD 98 27 E1 EB DD 74 77 (.fw.nv...'...tw
002B60: DD 75 76 E1 2B 18 BB E1 22 23 28 21 01 00 E5 DD .uv.+..."#(!....
002B70: 66 77 DD 6E 76 E5 CD 06 26 E1 E1 E1 E1 22 10 01 fw.nv...&...."..
002B80: DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 2A ...!......!...9*
002B90: 1C 17 E5 21 01 00 E5 CD DE 1A E1 E1 DD 66 7F DD ...!.........f..
002BA0: 6E 7E E5 21 55 14 C3 C6 28 01 1B 25 53 2E 20 48 n~.!U...(..%S. H
002BB0: 69 74 20 61 6E 79 20 6B 65 79 20 74 6F 20 63 6F it any key to co
002BC0: 6E 74 69 6E 75 65 E5 CD E3 03 E1 E1 CD 11 1C CD ntinue..........
002BD0: 60 08 2A 1C 17 E5 21 21 00 E5 CD DE 1A E1 E1 21 `.*...!!.......!
002BE0: 14 00 E5 CD 55 1B E1 CD A7 23 21 FF FF 22 18 17 ....U....#!.."..
002BF0: 2A 0C 17 E5 CD FB 27 E1 2A 24 17 E5 2A 26 17 E5 *.....'.*$..*&..
002C00: 12 17 E5 DD 66 7D DD 6E 7C 29 5E 23 56 EB E5 CD ....f}.n|)^#V...
002C10: DE 1A E1 E1 DD 66 7D DD 6E 7C 29 5E 23 56 EB EB .....f}.n|)^#V..
002C20: C3 23 1F E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 .#..".....!.....
002C30: DD 21 8A FF DD 39 2A 12 17 E5 2A 10 17 E5 CD DE .!...9*...*.....
002C40: 1A E1 E1 DD 66 7F DD 6E 7E 11 16 21 3E 13 C3 7E ....f..n~..!>..~
002C50: 01 2A 10 17 E5 DD 66 7D DD 6E 7C E5 CD CA 1E E1 .*....f}.n|.....
002C60: E1 EB 22 10 17 21 0D 00 E5 2A 10 17 E5 DD 66 7D .."..!...*....f}
002C70: DD 6E 7C E5 CD 0C 1E 21 06 00 39 F9 21 0D 00 E5 .n|....!..9.!...
002C80: CD 8C 03 E1 DD 66 7D DD 6E 7C 23 E5 CD 2C 1C E1 .....f}.n|#..,..
002C90: EB 2B E5 DD 66 7D DD 6E 7C 23 E5 CD 7F 1C E1 E1 .+..f}.n|#......
002CA0: 21 0D 00 EB C3 6B 21 ED 5B 10 17 7A EE 80 57 21 !....k!.[..z..W!
002CB0: 01 80 A7 ED 52 D2 C2 1F 2A 10 17 2B 22 10 17 C3 ....R...*..+"...
002CC0: C5 1F CD 11 1C C3 64 21 DD 66 7D DD 6E 7C 29 5E ......d!.f}.n|)^
002CD0: 23 56 EB 2B ED 5B 10 17 7C EE 80 67 7A EE 80 57 #V.+.[..|..gz..W
002CE0: A7 ED 52 DA F0 1F 2A 10 17 23 22 10 17 C3 F3 1F ..R...*..#".....
002CF0: CD 11 1C C3 64 21 21 01 00 22 10 17 C3 64 21 DD ....d!!.."...d!.
002D00: 66 7D DD 6E 7C 29 5E 23 56 EB 22 10 17 C3 64 21 f}.n|)^#V."...d!
002D10: DD 66 7F DD 6E 7E EB C3 6B 21 2A 10 17 E5 DD 66 .f..n~..k!*....f
002D20: 7D DD 6E 7C E5 CD CA 1E E1 E1 EB 22 10 17 2A 10 }.n|......."..*.
002D30: 17 11 01 00 A7 ED 52 C2 41 20 21 7F 00 EB C3 6B ......R.A !....k
002D40: 21 2A 10 17 2B 22 10 17 2A 12 17 E5 2A 10 17 E5 !*..+"..*...*...
002D50: CD DE 1A E1 E1 2A 10 17 E5 DD 66 7D DD 6E 7C E5 .....*....f}.n|.
002D60: CD 68 1D E1 E1 2A 10 17 E5 DD 66 7D DD 6E 7C E5 .h...*....f}.n|.
002D70: CD E7 1C E1 E1 2A 08 17 7C B5 CA 85 20 21 20 00 .....*..|... ! .
002D80: E5 CD 8C 03 E1 C3 64 21 2A 10 17 E5 DD 66 7D DD ......d!*....f}.
002D90: 6E 7C E5 CD CA 1E E1 E1 EB 22 10 17 DD 66 7D DD n|......."...f}.
002DA0: 6E 7C 29 5E 23 56 EB 7C EE 80 67 11 50 80 A7 ED n|)^#V.|..g.P...
002DB0: 52 D2 0D 21 DD 66 7F DD 6E 7E E5 2A 10 17 E5 DD R..!.f..n~.*....
002DC0: 66 7D DD 6E 7C E5 CD 0C 1E 21 06 00 39 F9 2A 10 f}.n|....!..9.*.
002DD0: 17 E5 DD 66 7D DD 6E 7C E5 CD E7 1C E1 E1 2A 08 ...f}.n|......*.
002DE0: 17 7C B5 C2 03 21 DD 66 7D DD 6E 7C 29 5E 23 56 .|...!.f}.n|)^#V
002DF0: EB EB 2A 10 17 7C EE 80 67 7A EE 80 57 A7 ED 52 ..*..|..gz..W..R
002E00: CD 2E 02 E1 E1 E1 22 10 01 DD E1 C9 21 00 00 CD ......".....!...
002E10: 92 02 DD 21 8A FF DD 39 2A 0A 17 DD 56 7D DD 5E ...!...9*...V}.^
002E20: 7C A7 ED 52 23 E5 2A 0E 17 29 DD 56 7D DD 5E 7C |..R#.*..).V}.^|
002E30: 19 DD 56 7F DD 5E 7E 19 E5 2A 0E 17 29 DD 56 7D ..V..^~..*..).V}
002E40: DD 5E 7C 19 E5 CD 28 17 21 06 00 39 F9 2A 0A 17 .^|...(.!..9.*..
002E50: DD 56 7F DD 5E 7E 19 22 0A 17 E1 22 10 01 DD E1 .V..^~."..."....
002E60: C9 21 00 00 CD 92 02 DD 21 8A FF DD 39 2A 0A 17 .!......!...9*..
002E70: DD 56 7D DD 5E 7C A7 ED 52 DD 56 7F DD 5E 7E A7 .V}.^|..R.V..^~.
002E80: ED 52 23 E5 2A 0E 17 29 DD 56 7D DD 5E 7C 19 E5 .R#.*..).V}.^|..
002E90: 2A 0E 17 29 DD 56 7D DD 5E 7C 19 DD 56 7F DD 5E *..).V}.^|..V..^
002EA0: 7E 19 E5 CD 28 17 21 06 00 39 F9 2A 0A 17 DD 56 ~...(.!..9.*...V
002EB0: 7F DD 5E 7E A7 ED 52 22 0A 17 E1 22 10 01 DD E1 ..^~..R"..."....
002EC0: C9 21 00 00 CD 92 02 DD 21 8C FF DD 39 2A E3 29 .!......!...9*.)
002ED0: E5 DD 66 7F DD 6E 7E 2B 7C EE 80 67 22 E3 29 21 ..f..n~+|..g".)!
002EE0: 00 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA 1F ......BKz..W.R..
002EF0: 2A C5 DD 66 7B DD 6E 7A DD 56 71 DD 5E 70 19 29 *..f{.nz.Vq.^p.)
002F00: 5E 23 56 EB E5 DD 66 7D DD 6E 7C DD 56 71 DD 5E ^#V...f}.n|.Vq.^
002F10: 70 19 E5 2A 0E 17 29 D1 19 D1 73 E1 23 18 C3 E1 p..*..)...s.#...
002F20: 22 E3 29 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 ".).".....!.....
002F30: DD 21 8A FF DD 39 DD 66 7F DD 6E 7E E5 CD BC 22 .!...9.f..n~..."
002F40: E1 EB E5 DD 66 7D DD 6E 7C 29 5E 23 56 EB E5 DD ....f}.n|)^#V...
002F50: 66 73 DD 6E 72 DD 56 75 DD 5E 74 A7 ED 52 ED 5B fs.nr.Vu.^t..R.[
002F60: 0A 17 19 7C EE 80 67 11 D6 D9 A7 ED 52 D2 00 2B ...|..g.....R..+
002F70: DD 66 73 DD 6E 72 DD 56 75 DD 5E 74 7C EE 80 67 .fs.nr.Vu.^t|..g
002F80: 7A EE 80 57 A7 ED 52 D2 A9 2A DD 66 75 DD 6E 74 z..W..R..*.fu.nt
002F90: DD 56 73 DD 5E 72 A7 ED 52 E5 DD 66 7F DD 6E 7E .Vs.^r..R..f..n~
002FA0: E5 CD 61 29 E1 E1 C3 DF 2A DD 66 75 DD 6E 74 DD ..a)....*.fu.nt.
002FB0: 56 73 DD 5E 72 7C EE 80 67 7A EE 80 57 A7 ED 52 Vs.^r|..gz..W..R
002FC0: D2 DF 2A DD 66 73 DD 6E 72 DD 56 75 DD 5E 74 A7 ..*.fs.nr.Vu.^t.
002FD0: ED 52 E5 DD 66 7F DD 6E 7E E5 CD 0C 29 E1 E1 DD .R..f..n~...)...
002FE0: 66 73 DD 6E 72 E5 DD 66 7F DD 6E 7E E5 DD 66 7D fs.nr..f..n~..f}
002FF0: DD 6E 7C 23 E5 CD C1 29 21 06 00 39 F9 C3 13 2B .n|#...)!..9...+
003000: D2 0A 21 2A 10 17 23 22 10 17 C3 10 21 CD 11 1C ..!*..#"....!...
003010: C3 64 21 C3 64 21 EF 00 13 21 7F 00 1A 20 F1 00 .d!.d!...!... ..
003020: 10 20 F0 00 10 20 03 00 10 20 FC 00 10 20 1D 00 . ... ... ... ..
003030: 10 20 1B 00 10 20 F9 00 10 20 F8 00 10 20 F5 00 . ... ... ... ..
003040: 10 20 F4 00 10 20 FB 00 FF 1F FA 00 F6 1F F7 00 . ... ..........
003050: C8 1F F3 00 C8 1F F6 00 A7 1F F2 00 A7 1F 0D 00 ................
003060: 51 1F 88 20 21 00 00 EB C3 6B 21 E1 22 10 01 DD Q.. !....k!."...
003070: E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 21 00 ..!......!...9!.
003080: 00 E5 2A 1C 17 E5 21 06 00 E5 CD DE 1A E1 E1 2A ..*...!........*
003090: 1A 17 E5 21 CD 10 C3 9E 21 01 03 25 49 34 E5 CD ...!....!..%I4..
0030A0: E3 03 E1 E1 2A 1C 17 E5 21 12 00 E5 CD DE 1A E1 ....*...!.......
0030B0: E1 2A 10 17 E5 21 DE 10 C3 C0 21 01 03 25 49 32 .*...!....!..%I2
0030C0: E5 CD E3 03 E1 E1 2A 12 17 E5 2A 10 17 E5 CD DE ......*...*.....
0030D0: 1A E1 E1 CD E5 1B CD 60 08 EB DD 74 77 DD 75 76 .......`...tw.uv
0030E0: CD FB 1B DD 66 77 DD 6E 76 E5 DD 66 7F DD 6E 7E ....fw.nv..f..n~
0030F0: E5 CD 2A 1F E1 E1 EB DD 74 77 DD 75 76 DD 66 77 ..*.....tw.uv.fw
003100: DD 6E 76 7C B5 CA 82 21 DD 66 7F DD 6E 7E 23 E5 .nv|...!.f..n~#.
003110: CD 2C 1C E1 EB 2B E5 2A 14 17 ED 5B 12 17 19 29 .,...+.*...[...)
003120: D1 73 23 72 DD 66 77 DD 6E 76 EB E1 C3 30 22 E1 .s#r.fw.nv...0".
003130: E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A .".....!......!.
003140: FF DD 39 DD 66 7D DD 6E 7C 29 36 00 23 36 00 DD ..9.f}.n|)6.#6..
003150: 66 7D DD 6E 7C 29 5E 23 56 EB 23 E5 DD 66 7D DD f}.n|)^#V.#..f}.
003160: 6E 7C 29 D1 73 23 72 2A 0E 17 29 DD 56 7F DD 5E n|).s#r*..).V..^
003170: 7E 19 6E 26 00 E5 DD 66 7D DD 6E 7C 29 5E 23 56 ~.n&...f}.n|)^#V
003180: EB EB DD 66 7D DD 6E 7C 19 29 D1 73 23 72 DD 66 ...f}.n|.).s#r.f
003190: 7F DD 6E 7E 23 DD 74 7F DD 75 7E DD 66 7F DD 6E ..n~#.t..u~.f..n
0031A0: 7E 2B E5 2A 0E 17 29 D1 19 6E 26 00 11 0D 00 A7 ~+.*..)..n&.....
0031B0: ED 52 C2 4F 22 E1 22 10 01 DD E1 C9 21 00 00 CD .R.O".".....!...
0031C0: 92 02 DD 21 88 FF DD 39 21 01 00 E5 2A 0E 17 29 ...!...9!...*..)
0031D0: DD 56 7F DD 5E 7E 19 6E 26 00 11 0D 00 A7 ED 52 .V..^~.n&......R
0031E0: CA FF 22 DD 66 77 DD 6E 76 23 DD 74 77 DD 75 76 ..".fw.nv#.tw.uv
0031F0: DD 66 7F DD 6E 7E 23 DD 74 7F DD 75 7E 18 CD DD .f..n~#.t..u~...
003200: 21 83 15 C3 0E 2B 07 4E 6F 20 72 6F 6F 6D E5 CD !....+.No room..
003210: 83 28 E1 E1 E1 E1 22 10 01 DD E1 C9 21 00 00 CD .(....".....!...
003220: 92 02 DD 21 8C FF DD 39 DD 66 7D DD 6E 7C E5 DD ...!...9.f}.n|..
003230: 66 7B DD 6E 7A E5 CD DE 1A E1 E1 21 A1 15 C3 54 f{.nz......!...T
003240: 2B 01 11 45 6E 74 65 72 20 66 69 6C 65 20 6E 61 +..Enter file na
003250: 6D 65 3A 20 E5 CD A7 05 E1 CD E5 1B DD 66 7F DD me: .........f..
003260: 6E 7E E5 CD CF 08 E1 CD FB 1B CD 45 08 E1 22 10 n~.........E..".
003270: 01 DD E1 C9 21 2A 00 CD 92 02 DD 21 88 FF DD 39 ....!*.....!...9
003280: 2A 10 01 CB 3C CB 1D E5 DD 66 77 DD 6E 76 E5 21 *...<....fw.nv.!
003290: 13 00 E5 21 19 00 E5 CD 1C 2B 21 06 00 39 F9 2A ...!.....+!..9.*
0032A0: 16 17 E5 DD 66 77 DD 6E 76 E5 CD B8 0B E1 E1 EB ....fw.nv.......
0032B0: 7C B5 CA E6 2C 21 00 00 E5 21 00 00 22 0C 17 21 |...,!...!.."..!
0032C0: 01 00 22 10 17 21 01 00 22 12 17 21 01 00 22 1A .."..!.."..!..".
0032D0: 17 21 FF FF 22 0A 17 2A 0E 17 29 36 0D 2A 16 17 .!.."..*..)6.*..
0032E0: E5 CD C4 0E E1 EB DD 74 75 DD 75 74 DD 66 75 DD .......tu.ut.fu.
0032F0: 6E 74 11 1A 00 A7 ED 52 CA 4A 2C DD 66 75 DD 6E nt.....R.J,.fu.n
003300: 74 11 FF FF A7 ED 52 CA 4A 2C 2A 0A 17 11 D6 59 t.....R.J,*....Y
003310: A7 ED 52 CA 4A 2C DD 66 75 DD 6E 74 11 0A 00 A7 ..R.J,.fu.nt....
003320: ED 52 CA 39 2C 2A 0A 17 23 22 0A 17 2A 0E 17 29 .R.9,*..#"..*..)
003330: ED 5B 0A 17 19 DD 7E 74 77 2A 16 17 E5 CD C4 0E .[....~tw*......
003340: E1 EB DD 74 75 DD 75 74 18 A2 2A 0E 17 29 ED 5B ...tu.ut..*..).[
003350: 0A 17 19 6E 26 00 11 0D 00 A7 ED 52 CA 71 2C 2A ...n&......R.q,*
003360: 0A 17 23 22 0A 17 2A 0E 17 29 ED 5B 0A 17 19 36 ..#"..*..).[...6
003370: 0D 2A 0A 17 7C EE 80 67 11 D6 D9 A7 ED 52 DA BF .*..|..g.....R..
003380: 2C 2A 0A 17 2B 22 0A 17 2A 0E 17 29 ED 5B 0A 17 ,*..+"..*..).[..
003390: 19 36 0D 2A 16 17 E5 CD 7D 0F E1 21 00 00 E5 DD .6.*....}..!....
0033A0: 66 7F DD 6E 7E E5 CD 37 22 E1 E1 21 59 16 C3 BA f..n~..7"..!Y...
0033B0: 2C 01 07 4E 6F 20 72 6F 6F 6D E5 CD 83 28 E1 2A ,..No room...(.*
0033C0: 0A 17 11 FF FF A7 ED 52 C2 D1 2C 21 00 00 22 0A .......R..,!..".
0033D0: 17 2A 16 17 E5 CD 7D 0F E1 21 FF FF EB E1 E1 C3 .*....}..!......
0033E0: 13 2D E1 C3 12 2D DD 66 77 DD 6E 76 E5 21 7A 16 .-...-.fw.nv.!z.
0033F0: C3 01 2D 01 0C 25 53 20 6E 6F 74 20 66 6F 75 6E ..-..%S not foun
003400: 66 77 DD 6E 76 EB E1 C3 0B 23 E1 E1 22 10 01 DD fw.nv....#.."...
003410: E1 C9 21 00 00 CD 92 02 DD 21 8C FF DD 39 DD 66 ..!......!...9.f
003420: 7F DD 6E 7E E5 DD 66 7D DD 6E 7C E5 CD DE 1A E1 ..n~..f}.n|.....
003430: E1 2A 59 23 E5 DD 66 7B DD 6E 7A E5 CD BC 22 E1 .*Y#..f{.nz...".
003440: DD 66 7B DD 6E 7A 19 11 FE FF 19 7C EE 80 67 22 .f{.nz.....|..g"
003450: 59 23 DD 66 7B DD 6E 7A 11 00 00 EB 42 4B 7A EE Y#.f{.nz....BKz.
003460: 80 57 ED 52 DA 7F 23 C5 2A 0E 17 29 DD 56 71 DD .W.R..#.*..).Vq.
003470: 5E 70 19 6E 26 00 E5 CD 8C 03 E1 E1 23 18 D9 E1 ^p.n&.......#...
003480: 22 59 23 DD 66 7B DD 6E 7A E5 CD BC 22 E1 EB 2B "Y#.f{.nz..."..+
003490: E5 2A 14 17 DD 56 7F DD 5E 7E 19 29 D1 73 23 72 .*...V..^~.).s#r
0034A0: E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 .".....!......!.
0034B0: FF DD 39 2A 1C 17 E5 21 01 00 E5 CD DE 1A E1 E1 ..9*...!........
0034C0: 2A 1E 17 11 04 00 A7 ED 52 C2 09 24 2A 10 17 E5 *.......R..$*...
0034D0: 2A 1A 17 E5 21 ED 11 C3 FD 23 22 4C 69 6E 65 3A *...!....#"Line:
0034E0: 25 49 34 20 43 6F 6C 75 6D 6E 3A 25 49 32 20 28 %I4 Column:%I2 (
0034F0: 53 54 4F 50 20 74 6F 20 6D 65 6E 75 29 E5 CD E3 STOP to menu)...
003500: 03 21 06 00 39 F9 C3 43 24 2A 10 17 E5 2A 1A 17 .!..9..C$*...*..
003510: E5 21 0C 12 C3 3A 24 01 21 4C 69 6E 65 3A 25 49 .!...:$.!Line:%I
003520: 34 20 43 6F 6C 75 6D 6E 3A 25 49 32 20 28 45 53 4 Column:%I2 (ES
003530: 43 20 74 6F 20 6D 65 6E 75 29 E5 CD E3 03 21 06 C to menu)....!.
003540: 00 39 F9 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 .9..".....!.....
003550: DD 21 86 FF DD 39 CD AC 1A CD CF 1B CD FB 1B 2A .!...9.........*
003560: 72 24 E5 2A 1C 17 2B 7C EE 80 67 22 72 24 21 01 r$.*..+|..g"r$!.
003570: 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA 95 24 .....BKz..W.R..$
003580: C5 2A 14 17 DD 56 77 DD 5E 76 19 29 36 00 23 36 .*...Vw.^v.)6.#6
003590: 00 E1 23 18 DC E1 22 72 24 CD A7 23 E1 22 10 01 ..#..."r$..#."..
0035A0: DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 21 ...!......!...9!
0035B0: 01 00 E5 21 01 00 E5 CD DE 1A E1 E1 CD 3C 25 21 ...!.........<%!
0035C0: 0D 00 E5 CD 8C 03 E1 CD A7 23 2A 1C 17 2B EB 2A .........#*..+.*
0035D0: 14 17 19 29 5E 23 56 EB 11 DF FF 19 E5 CD 55 1B ...)^#V.......U.
0035E0: E1 2A F4 24 E5 21 02 00 7C EE 80 67 22 F4 24 2A .*.$.!..|..g".$*
0035F0: 1C 17 2B 11 00 00 44 4D 7C EE 80 67 ED 52 DA 27 ..+...DM|..g.R.'
003600: 64 E5 CD E3 03 E1 E1 CD 60 08 21 00 00 EB E1 C3 d.......`.!.....
003610: 13 2D E1 2A 10 01 22 12 01 E1 22 10 01 DD E1 C9 .-.*.."...".....
003620: 21 2A 00 CD 92 02 DD 21 86 FF DD 39 2A 10 01 CB !*.....!...9*...
003630: 3C CB 1D E5 C3 81 2D 21 00 00 CD 92 02 DD 21 88 <.....-!......!.
003640: FF DD 39 21 A5 16 C3 60 2D 01 15 44 69 73 63 20 ..9!...`-..Disc
003650: 65 72 72 6F 72 2E 20 48 69 74 20 61 20 6B 65 79 error. Hit a key
003660: E5 CD A7 05 E1 CD 60 08 DD 66 7F DD 6E 7E E5 CD ......`..f..n~..
003670: 94 10 E1 21 00 00 EB C3 7A 2D E1 22 10 01 DD E1 ...!....z-."....
003680: C9 DD 66 79 DD 6E 78 E5 21 13 00 E5 21 19 00 E5 ..fy.nx.!...!...
003690: CD 1C 2B 21 06 00 39 F9 2A 16 17 E5 DD 66 79 DD ..+!..9.*....fy.
0036A0: 6E 78 E5 CD A7 0C E1 E1 EB 7C B5 CA 56 2E 2A C0 nx.......|..V.*.
0036B0: 2D E5 2A 0A 17 7C EE 80 67 22 C0 2D 21 00 00 11 -.*..|..g".-!...
0036C0: 00 00 EB 42 4B 7A EE 80 57 ED 52 DA 3F 2E C5 2A ...BKz..W.R.?..*
0036D0: 16 17 E5 2A 0E 17 29 DD 56 75 DD 5E 74 19 6E 26 ...*..).Vu.^t.n&
0036E0: 00 E5 CD C4 0F E1 E1 EB 7C B5 C2 FF 2D 2A 16 17 ........|...-*..
0036F0: E5 CD 37 2D E1 EB EB 21 06 00 39 F9 C3 82 2E 2A ..7-...!..9....*
003700: 0E 17 29 DD 56 75 DD 5E 74 19 6E 26 00 11 0D 00 ..).Vu.^t.n&....
003710: A7 ED 52 C2 3B 2E 2A 16 17 E5 21 0A 00 E5 CD C4 ..R.;.*...!.....
003720: 0F E1 E1 EB 7C B5 C2 3B 2E 2A 16 17 E5 CD 37 2D ....|..;.*....7-
003730: E1 EB EB 21 06 00 39 F9 C3 82 2E E1 23 18 80 E1 ...!..9.....#...
003740: 22 C0 2D 2A 16 17 E5 CD 94 10 E1 21 FF FF EB E1 ".-*.......!....
003750: C3 82 2E C3 81 2E 21 2E 17 C3 69 2E 0C 43 61 6E ......!...i..Can
003760: 6E 6F 74 20 6F 70 65 6E 20 E5 CD A7 05 E1 DD 66 not open ......f
003770: 79 DD 6E 78 E5 CD A7 05 E1 21 00 00 EB E1 C3 82 y.nx.....!......
003780: 2E E1 2A 10 01 22 12 01 E1 22 10 01 DD E1 C9 21 ..*.."...".....!
003790: 00 00 CD 92 02 DD 21 86 FF DD 39 21 00 00 E5 21 ......!...9!...!
0037A0: 01 00 22 1A 17 21 13 00 E5 21 19 00 E5 CD DE 1A .."..!...!......
0037B0: E1 E1 21 5C 17 C3 CC 2E 13 45 6E 74 65 72 20 6C ..!\.....Enter l
0037C0: 69 6E 65 20 6E 75 6D 62 65 72 3A 20 E5 CD E3 03 ine number: ....
0037D0: E1 CD E5 1B CD A2 0A EB DD 74 79 DD 75 78 CD FB .........ty.ux..
0037E0: 1B 21 00 00 22 0C 17 21 01 00 22 10 17 2A 02 2F .!.."..!.."..*./
0037F0: E5 DD 66 79 DD 6E 78 7C EE 80 67 22 02 2F 21 02 ..fy.nx|..g"./!.
003800: 25 C5 DD 66 77 DD 6E 76 2B EB 2A 14 17 19 29 5E %..fw.nv+.*...)^
003810: 23 56 EB E5 2A 14 17 DD 56 77 DD 5E 76 19 29 D1 #V..*...Vw.^v.).
003820: 73 23 72 E1 2B 18 CC E1 22 F4 24 2A 14 17 23 29 s#r.+...".$*..#)
003830: 36 00 23 36 00 E1 22 10 01 DD E1 C9 21 00 00 CD 6.#6..".....!...
003840: 92 02 DD 21 86 FF DD 39 2A 1E 17 11 02 00 A7 ED ...!...9*.......
003850: 52 C2 5F 25 21 0B 00 E5 CD 8C 03 E1 C3 67 25 21 R._%!........g%!
003860: 49 00 E5 CD 86 1A E1 E1 22 10 01 DD E1 C9 21 00 I.......".....!.
003870: 00 CD 92 02 DD 21 86 FF DD 39 2A 1C 17 E5 21 01 .....!...9*...!.
003880: 00 E5 CD DE 1A E1 E1 21 28 00 E5 CD 55 1B E1 21 .......!(...U..!
003890: 0A 00 E5 CD 8C 03 E1 21 0D 00 E5 CD 8C 03 E1 2A .......!.......*
0038A0: B5 25 E5 2A 1C 17 11 FE FF 19 7C EE 80 67 22 B5 .%.*......|..g".
0038B0: 25 21 01 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 %!......BKz..W.R
0038C0: DA E9 25 C5 DD 66 77 DD 6E 76 23 EB 2A 14 17 19 ..%..fw.nv#.*...
0038D0: 29 5E 23 56 EB E5 2A 14 17 DD 56 77 DD 5E 76 19 )^#V..*...Vw.^v.
0038E0: 29 D1 73 23 72 E1 23 18 CB E1 22 B5 25 2A 1C 17 ).s#r.#...".%*..
0038F0: 2B EB 2A 14 17 19 29 36 00 23 36 00 CD A7 23 E1 +.*...)6.#6...#.
003900: 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A FF ".....!......!..
003910: DD 39 2A 28 26 E5 2A 1C 17 2B 7C EE 80 67 22 28 .9*(&.*..+|..g"(
003920: 26 DD 66 7F DD 6E 7E 11 00 00 EB 42 4B 7A EE 80 &.f..n~....BKz..
003930: 57 ED 52 DA 27 27 C5 21 00 00 E5 DD 66 73 DD 6E W.R.''.!....fs.n
003940: 72 E5 21 01 00 E5 CD DE 1A E1 E1 2A 0A 17 DD 56 r.!........*...V
003950: 7D DD 5E 7C 7C EE 80 67 7A EE 80 57 A7 ED 52 D2 }.^||..gz..W..R.
003960: 7F 26 21 50 00 E5 CD 55 1B E1 2A 14 17 DD 56 73 .&!P...U..*...Vs
003970: DD 5E 72 19 29 36 00 23 36 00 E1 E1 C3 27 27 DD .^r.)6.#6....''.
003980: 66 7D DD 6E 7C E5 CD BC 22 E1 EB 2B DD 74 71 DD f}.n|..."..+.tq.
003990: 75 70 2A B2 26 E5 DD 66 7D DD 6E 7C DD 56 71 DD up*.&..f}.n|.Vq.
0039A0: 5E 70 19 2B 7C EE 80 67 22 B2 26 DD 66 7D DD 6E ^p.+|..g".&.f}.n
0039B0: 7C 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA D8 26 |....BKz..W.R..&
0039C0: C5 2A 0E 17 29 DD 56 6D DD 5E 6C 19 6E 26 00 E5 .*..).Vm.^l.n&..
0039D0: CD 8C 03 E1 E1 23 18 D9 E1 22 B2 26 2A 14 17 DD .....#...".&*...
0039E0: 56 73 DD 5E 72 19 29 5E 23 56 EB DD 56 71 DD 5E Vs.^r.)^#V..Vq.^
0039F0: 70 A7 ED 52 E5 CD 55 1B E1 2A 14 17 DD 56 73 DD p..R..U..*...Vs.
003A00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
003A10: 03 00 01 00 02 09 50 E5 03 00 C1 02 00 00 00 02 ......P.........
003A20: 03 00 C6 02 00 00 00 02 03 00 C2 02 00 00 00 02 ................
003A30: 03 00 C7 02 00 00 00 02 03 00 C3 02 00 00 00 02 ................
003A40: 03 00 C8 02 00 00 00 02 03 00 C4 02 00 00 00 02 ................
003A50: 03 00 C9 02 00 00 00 02 03 00 C5 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: 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA 42 2F .....BKz..W.R.B/
003B10: C5 2A 0C 17 E5 2A 0C 17 E5 CD 32 27 E1 EB 22 0C .*...*....2'..".
003B20: 17 DD 66 73 DD 6E 72 ED 5B 0C 17 A7 ED 52 C2 36 ..fs.nr.[....R.6
003B30: 2F E1 E1 C3 42 2F 2A 1A 17 23 22 1A 17 E1 E1 23 /...B/*..#"....#
003B40: 18 BF E1 22 02 2F 21 0C 00 22 12 17 E1 E1 22 10 ..."./!.."....".
003B50: 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A FF DD 39 ....!......!...9
003B60: 2A 79 2F E5 DD 66 7F DD 6E 7E 29 6E 26 00 7C EE *y/..f..n~)n&.|.
003B70: 80 67 22 79 2F 21 01 00 11 00 00 EB 42 4B 7A EE .g"y/!......BKz.
003B80: 80 57 ED 52 DA C6 2F C5 DD 66 7F DD 6E 7E 29 DD .W.R../..f..n~).
003B90: 56 73 DD 5E 72 19 6E 26 00 E5 DD 66 7D DD 6E 7C Vs.^r.n&...f}.n|
003BA0: DD 56 73 DD 5E 72 19 2B E5 2A 0E 17 29 D1 19 6E .Vs.^r.+.*..)..n
003BB0: 26 00 D1 A7 ED 52 CA C2 2F 21 00 00 EB E1 E1 C3 &....R../!......
003BC0: D1 2F E1 23 18 B2 E1 22 79 2F 21 FF FF EB C3 D1 ./.#..."y/!.....
003BD0: 2F E1 22 10 01 DD E1 C9 21 2A 00 CD 92 02 DD 21 /.".....!*.....!
003BE0: 86 FF DD 39 2A 0C 17 E5 2A 10 17 E5 2A 12 17 E5 ...9*...*...*...
003BF0: 2A 1A 17 E5 2A 10 01 CB 3C CB 1D E5 21 13 00 E5 *...*...<...!...
003C00: 21 19 00 E5 CD DE 1A E1 E1 21 08 18 C3 1F 30 01 !........!....0.
003C10: 0E 45 6E 74 65 72 20 73 74 72 69 6E 67 3A 20 E5 .Enter string: .
003C20: CD E3 03 E1 CD E5 1B DD 66 71 DD 6E 70 E5 CD CF ........fq.np...
003C30: 08 E1 CD FB 1B 2A 0C 17 ED 5B 10 17 19 2B 22 0C .....*...[...+".
003C40: 17 2A 0E 17 29 ED 5B 0C 17 19 6E 26 00 11 0D 00 .*..).[...n&....
003C50: A7 ED 52 CA 5D 30 2A 0C 17 23 22 0C 17 2A 0C 17 ..R.]0*..#"..*..
003C60: ED 5B 0A 17 7C EE 80 67 7A EE 80 57 A7 ED 52 D2 .[..|..gz..W..R.
003C70: 38 31 2A 0E 17 29 ED 5B 0C 17 19 6E 26 00 11 0D 81*..).[...n&...
003C80: 00 A7 ED 52 C2 91 30 2A 1A 17 23 22 1A 17 C3 F2 ...R..0*..#"....
003C90: 30 DD 66 71 DD 6E 70 E5 2A 0C 17 E5 CD 54 2F E1 0.fq.np.*....T/.
003CA0: E1 EB 7C B5 CA F2 30 2A 0C 17 DD 74 79 DD 75 78 ..|...0*...ty.ux
003CB0: 2A 0C 17 2B E5 2A 0E 17 29 D1 19 6E 26 00 11 0D *..+.*..)..n&...
003CC0: 00 A7 ED 52 CA D8 30 2A 0C 17 7C B5 CA D8 30 2A ...R..0*..|...0*
003CD0: 0C 17 2B 22 0C 17 18 D8 DD 66 79 DD 6E 78 ED 5B ..+".....fy.nx.[
003CE0: 0C 17 A7 ED 52 23 22 10 17 21 0C 00 22 12 17 C3 ....R#"..!.."...
003CF0: 38 31 2A 0C 17 23 22 0C 17 2A 0C 17 ED 5B 0A 17 81*..#"..*...[..
003D00: 38 2A 1C 17 2B ED 5B 12 17 7C EE 80 67 7A EE 80 8*..+.[..|..gz..
003D10: 57 A7 ED 52 D2 1E 39 2A 1C 17 2B 22 12 17 2A 0C W..R..9*..+"..*.
003D20: 17 E5 CD FB 27 E1 E1 E1 22 10 01 DD E1 C9 21 6A ....'...".....!j
003D30: 5B CD 92 02 DD 21 86 FF DD 39 2A 10 01 CB 3C CB [....!...9*...<.
003D40: 1D E5 2A 10 01 11 A4 00 19 CB 3C CB 1D E5 2A 10 ..*.......<...*.
003D50: 01 11 E2 00 19 CB 3C CB 1D E5 2A 10 01 11 BC 5A ......<...*....Z
003D60: 19 CB 3C CB 1D E5 2A 10 01 11 60 5B 19 CB 3C CB ..<...*...`[..<.
003D70: 1D E5 21 00 00 E5 21 00 00 E5 21 FF FF E5 CD B3 ..!...!...!.....
003D80: 19 EB 22 1E 17 2A 1E 17 11 04 00 A7 ED 52 C2 97 .."..*.......R..
003D90: 39 21 1F 00 C3 AC 39 2A 1E 17 11 03 00 A7 ED 52 9!....9*.......R
003DA0: C2 A9 39 21 18 00 C3 AC 39 21 19 00 22 1C 17 21 ..9!....9!.."..!
003DB0: 00 00 22 0C 17 21 00 00 22 0A 17 DD 66 75 DD 6E .."..!.."...fu.n
003DC0: 74 22 0E 17 DD 66 71 DD 6E 70 22 24 17 DD 66 77 t"...fq.np"$..fw
003DD0: DD 6E 76 22 14 17 DD 66 79 DD 6E 78 22 16 17 CD .nv"...fy.nx"...
003DE0: 4A 24 2A 0E 17 29 36 0D 2A 24 17 E5 CD 08 02 E1 J$*..)6.*$......
003DF0: 2A 0C 17 E5 DD 66 73 DD 6E 72 E5 CD 37 22 E1 E1 *....fs.nr..7"..
003E00: DD 66 6B DD 6E 6A 7C B5 CA 18 3A 2A 12 17 E5 2A .fk.nj|...:*...*
003E10: 0C 17 E5 CD 06 26 E1 E1 2A 18 17 7C B5 CA 93 3A .....&..*..|...:
003E20: 2A 12 17 E5 21 01 00 E5 CD DE 1A E1 E1 2A 48 3A *...!........*H:
003E30: E5 DD 66 73 DD 6E 72 29 5E 23 56 EB 2B 7C EE 80 ..fs.nr)^#V.+|..
003E40: 67 22 48 3A 21 01 00 11 00 00 EB 42 4B 7A EE 80 g"H:!......BKz..
003E50: 57 ED 52 DA 72 3A C5 DD 66 73 DD 6E 72 DD 56 67 W.R.r:..fs.nr.Vg
003E60: DD 5E 66 19 29 5E 23 56 EB E5 CD 8C 03 E1 E1 23 .^f.)^#V.......#
003E70: 18 D5 E1 22 48 3A DD 66 73 DD 6E 72 29 5E 23 56 ..."H:.fs.nr)^#V
003E80: EB EB 21 50 00 A7 ED 52 E5 CD 55 1B E1 21 00 00 ..!P...R..U..!..
003E90: 22 18 17 DD 66 73 DD 6E 72 E5 CD 72 21 E1 EB DD "...fs.nr..r!...
003EA0: 74 6D DD 75 6C 21 00 00 DD 74 6B DD 75 6A DD 66 tm.ul!...tk.uj.f
003EB0: 6D DD 6E 6C 11 4F 3B 3E 0C C3 7E 01 21 FF FF DD m.nl.O;>..~.!...
003EC0: 74 6B DD 75 6A DD 66 73 DD 6E 72 E5 CD BD 33 E1 tk.uj.fs.nr...3.
003ED0: C3 81 3B 21 FF FF DD 74 6B DD 75 6A DD 66 73 DD ..;!...tk.uj.fs.
003EE0: 6E 72 E5 CD 02 35 E1 C3 81 3B DD 66 73 DD 6E 72 nr...5...;.fs.nr
003EF0: E5 CD D1 36 E1 C3 81 3B DD 66 73 DD 6E 72 E5 CD ...6...;.fs.nr..
003F00: 7C EE 80 67 7A EE 80 57 A7 ED 52 DA 35 31 DD 66 |..gz..W..R.51.f
003F10: 79 DD 6E 78 22 0C 17 DD 66 77 DD 6E 76 22 10 17 y.nx"...fw.nv"..
003F20: DD 66 75 DD 6E 74 22 12 17 DD 66 73 DD 6E 72 22 .fu.nt"...fs.nr"
003F30: 1A 17 C3 38 31 C3 72 30 E1 21 08 00 39 F9 2A 10 ...81.r0.!..9.*.
003F40: 01 22 12 01 E1 22 10 01 DD E1 C9 21 00 00 CD 92 ."...".....!....
003F50: 02 DD 21 88 FF DD 39 21 00 00 E5 2A 0C 17 E5 DD ..!...9!...*....
003F60: 66 7F DD 6E 7E E5 CD 2A 2A E1 E1 21 00 00 E5 CD f..n~..**..!....
003F70: AC 1A 21 04 00 E5 21 20 00 E5 CD DE 1A E1 E1 21 ..!...! .......!
003F80: C3 18 C3 92 31 01 0B 42 43 50 4C 20 65 64 69 74 ....1..BCPL edit
003F90: 6F 72 E5 CD A7 05 E1 21 05 00 E5 21 20 00 E5 CD or.....!...! ...
003FA0: DE 1A E1 E1 21 D5 18 C3 B6 31 0B 2D 2D 2D 2D 2D ....!....1.-----
003FB0: 2D 2D 2D 2D 2D 2D E5 CD A7 05 E1 21 09 00 E5 21 ------.....!...!
003FC0: 20 00 E5 CD DE 1A E1 E1 21 E7 18 C3 DB 31 0C 4C .......!....1.L
003FD0: 3A 20 4C 6F 61 64 20 74 65 78 74 E5 CD A7 05 E1 : Load text.....
003FE0: 21 0A 00 E5 21 20 00 E5 CD DE 1A E1 E1 21 FA 18 !...! .......!..
003FF0: C3 01 32 01 0C 53 3A 20 53 61 76 65 20 74 65 78 ..2..S: Save tex
004000: 74 E5 CD A7 05 E1 21 0B 00 E5 21 20 00 E5 CD DE t.....!...! ....
004010: 1A E1 E1 21 0D 19 C3 27 32 01 0C 45 3A 20 45 64 ...!...'2..E: Ed
004020: 69 74 20 74 65 78 74 E5 CD A7 05 E1 21 0C 00 E5 it text.....!...
004030: 21 20 00 E5 CD DE 1A E1 E1 21 20 19 C3 4D 32 01 ! .......! ..M2.
004040: 0C 47 3A 20 47 6F 74 6F 20 6C 69 6E 65 E5 CD A7 .G: Goto line...
004050: 05 E1 21 0D 00 E5 21 20 00 E5 CD DE 1A E1 E1 21 ..!...! .......!
004060: 33 19 C3 75 32 01 0E 46 3A 20 46 69 6E 64 20 73 3..u2..F: Find s
004070: 74 72 69 6E 67 E5 CD A7 05 E1 21 0E 00 E5 21 20 tring.....!...!
004080: 00 E5 CD DE 1A E1 E1 21 47 19 C3 96 32 01 07 51 .......!G...2..Q
004090: 3A 20 51 75 69 74 E5 CD A7 05 E1 21 11 00 E5 21 : Quit.....!...!
0040A0: 20 00 E5 CD DE 1A E1 E1 21 57 19 C3 BE 32 0F 53 .......!W...2.S
0040B0: 65 6C 65 63 74 20 6F 70 74 69 6F 6E 3A 20 E5 CD elect option: ..
0040C0: A7 05 E1 CD E5 1B CD 60 08 EB DD 74 75 DD 75 74 .......`...tu.ut
0040D0: CD FB 1B DD 66 75 DD 6E 74 11 EF 00 A7 ED 52 CA ....fu.nt.....R.
0040E0: C3 32 DD 66 75 DD 6E 74 11 74 33 3E 0C C3 7E 01 .2.fu.nt.t3>..~.
0040F0: 21 4C 00 E5 CD 8C 03 E1 DD 66 7F DD 6E 7E E5 CD !L.......f..n~..
004100: 61 37 E1 C3 81 3B DD 66 73 DD 6E 72 E5 CD 87 37 a7...;.fs.nr...7
004110: E1 C3 81 3B DD 66 73 DD 6E 72 E5 CD E6 37 E1 C3 ...;.fs.nr...7..
004120: 81 3B DD 66 73 DD 6E 72 E5 CD 53 38 E1 C3 81 3B .;.fs.nr..S8...;
004130: DD 66 73 DD 6E 72 E5 CD 96 38 E1 C3 81 3B DD 66 .fs.nr...8...;.f
004140: 73 DD 6E 72 E5 CD 4B 31 E1 C3 81 3B C3 81 3B 03 s.nr..K1...;..;.
004150: 00 3E 3B FC 00 3E 3B 1D 00 30 3B 1B 00 22 3B F9 .>;..>;..0;..";.
004160: 00 14 3B F8 00 06 3B F5 00 F8 3A F1 00 F8 3A F4 ..;...;...:...:.
004170: 00 EA 3A F0 00 EA 3A 0D 00 D3 3A 7F 00 BC 3A 81 ..:...:...:...:.
004180: 3B C3 E8 39 21 06 00 39 F9 E1 E1 E1 E1 E1 2A 10 ;..9!..9......*.
004190: 01 22 12 01 E1 22 10 01 DD E1 C9 26 17 18 3A 1E ."...".....&..:.
0041A0: 17 00 00 1C 17 00 00 1A 17 01 00 18 17 00 00 16 ................
0041B0: 17 00 00 14 17 00 00 12 17 01 00 10 17 01 00 0E ................
0041C0: 17 00 00 0C 17 00 00 0A 17 00 00 08 17 FF FF 8A ................
0041D0: 03 00 00 88 03 00 00 86 03 00 00 84 03 00 00 02 ................
0041E0: F6 14 3B F8 00 06 3B F5 00 F8 3A F1 00 F8 3A F4 ..;...;...:...:.
0041F0: 00 EA 3A F0 00 EA 3A 0D 00 D3 3A 7F 00 BC 3A 81 ..:...:...:...:.
004200: C8 CB 3C CB 1D 1B 18 F6 C1 E1 E5 C5 29 ED 5B 10 ..<.........).[.
004210: 01 73 23 72 23 ED 5B 12 01 73 23 72 23 DD E5 D1 .s#r#.[..s#r#...
004220: 73 23 72 23 EB 21 04 00 39 EB 73 23 72 C9 C1 C1 s#r#.!..9.s#r...
004230: E1 29 5E 23 56 23 ED 53 10 01 5E 23 56 23 ED 53 .)^#V#.S..^#V#.S
004240: 12 01 5E 23 56 23 D5 DD E1 5E 23 66 6B F9 60 69 ..^#V#...^#fk.`i
004250: E9 E1 C1 D1 D5 C5 E5 2A 10 01 E5 D5 2A 12 01 22 .......*....*.."
004260: 10 01 CB 3C CB 1D E5 EB 23 29 38 49 EB 2A 10 01 ...<....#)8I.*..
004270: 19 38 42 22 12 01 EB 21 CE FF 39 A7 ED 52 38 35 .8B"...!..9..R85
004280: 60 69 CD 9D 01 E1 E1 2A 10 01 22 12 01 E1 22 10 `i.....*.."...".
004290: 01 C9 D1 DD E5 ED 4B 10 01 C5 ED 4B 12 01 ED 43 ......K....K...C
0042A0: 10 01 09 38 10 22 12 01 44 4D 21 CE FF 39 A7 ED ...8."..DM!..9..
0042B0: 42 38 02 EB E9 CD CC 02 53 74 61 63 6B 20 6F 76 B8......Stack ov
0042C0: 65 72 66 6C 6F 77 0D 0A 00 C3 D6 01 E1 7E 23 E5 erflow.......~#.
0042D0: A7 C8 CD D7 02 18 F5 0E 02 5F C3 05 00 3A 14 01 ........._...:..
0042E0: 3D 32 14 01 C0 3A 15 01 32 14 01 CD 66 03 A7 C8 =2...:..2...f...
0042F0: E5 C5 F5 3A 0E 01 FE 08 28 0E 4F 06 00 21 D9 01 ...:....(.O..!..
004300: 74 2B E1 EB 7C B5 CA 0D 33 E1 C3 AD 33 C3 A6 33 t+..|...3...3..3
004310: 21 53 00 E5 CD 8C 03 E1 CD 20 2D EB 7C B5 CA 25 !S....... -.|..%
004320: 33 E1 C3 AD 33 C3 A6 33 21 47 00 E5 CD 8C 03 E1 3...3..3!G......
004330: CD 8F 2E E1 C3 AD 33 21 46 00 E5 CD 8C 03 E1 2A ......3!F......*
004340: 10 17 E5 DD 66 7F DD 6E 7E E5 CD CA 1E E1 E1 EB ....f..n~.......
004350: 22 10 17 CD D8 2F E1 C3 AD 33 21 45 00 E5 CD 8C "..../...3!E....
004360: 03 E1 E1 C3 AD 33 21 51 00 E5 CD 8C 03 E1 C3 D6 .....3!Q........
004370: 01 C3 A6 33 71 00 66 33 51 00 66 33 65 00 5A 33 ...3q.f3Q.f3e.Z3
004380: 45 00 5A 33 66 00 37 33 46 00 37 33 67 00 28 33 E.Z3f.73F.73g.(3
004390: 47 00 28 33 73 00 10 33 53 00 10 33 6C 00 F0 32 G.(3s..3S..3l..2
0043A0: 4C 00 F0 32 A6 33 CD 11 1C E1 C3 6B 31 2A 0C 17 L..2.3.....k1*..
0043B0: E5 CD FB 27 E1 E1 E1 22 10 01 DD E1 C9 21 00 00 ...'...".....!..
0043C0: CD 92 02 DD 21 88 FF DD 39 2A 0C 17 7C B5 CA E4 ....!...9*..|...
0043D0: 34 2A 0C 17 E5 2A 0C 17 E5 CD 98 27 E1 EB E5 DD 4*...*.....'....
0043E0: 66 7F DD 6E 7E 29 5E 23 56 EB E5 DD 66 75 DD 6E f..n~)^#V...fu.n
0043F0: 74 E5 CD BC 22 E1 EB D1 19 2B 7C EE 80 67 11 50 t..."....+|..g.P
004400: 80 A7 ED 52 D2 BD 34 2A 0C 17 E5 CD BC 22 E1 D5 ...R..4*....."..
004410: DD 66 7F DD 6E 7E 29 5E 23 56 EB D1 A7 ED 52 ED .f..n~)^#V....R.
004420: 5B 0A 17 19 7C EE 80 67 11 D6 D9 A7 ED 52 DA 45 [...|..g.....R.E
004430: 34 21 1C 1A C3 40 34 01 07 4E 6F 20 72 6F 6F 6D 4!...@4..No room
004440: E5 CD 83 28 E1 2A 0C 17 2B E5 2A 0E 17 29 D1 19 ...(.*..+.*..)..
004450: 36 00 2A 0C 17 2B E5 DD 66 7F DD 6E 7E E5 CD 2A 6.*..+..f..n~..*
004460: 2A E1 E1 DD 66 75 DD 6E 74 22 0C 17 2A 1A 17 2B *...fu.nt"..*..+
004470: 22 1A 17 DD 66 7F DD 6E 7E 29 5E 23 56 EB E5 2A "...f..n~)^#V..*
004480: 0C 17 E5 CD BC 22 E1 EB D1 A7 ED 52 23 22 10 17 .....".....R#"..
004490: 2A 12 17 11 01 00 A7 ED 52 C2 B3 34 21 01 00 E5 *.......R..4!...
0044A0: 21 01 00 E5 2A 0C 17 E5 CD 12 23 21 06 00 39 F9 !...*.....#!..9.
0044B0: C3 BA 34 2A 12 17 2B 22 12 17 C3 DF 34 21 62 1A ..4*..+"....4!b.
0044C0: C3 DA 34 01 15 4C 69 6E 65 20 74 6F 6F 20 6C 6F ..4..Line too lo
0044D0: 6E 67 20 74 6F 20 6A 6F 69 6E E5 CD 83 28 E1 E1 ng to join...(..
0044E0: E1 C3 FB 34 21 75 1A C3 F6 34 0B 54 6F 70 20 6F ...4!u...4.Top o
0044F0: 66 20 66 69 6C 65 E5 CD 83 28 E1 E1 22 10 01 DD f file...(.."...
004500: C3 76 03 00 00 00 00 00 00 00 00 CD 5C 01 F5 78 .v..........\..x
004510: 06 10 29 CB 11 17 30 01 19 10 F7 F1 CB 7F C8 EB ..)...0.........
004520: 21 00 00 A7 ED 52 C9 CD 5C 01 F5 3E 10 CB 21 CB !....R..\..>..!.
004530: 10 CB 15 CB 14 A7 ED 52 38 03 03 18 01 19 3D 20 .......R8.....=
004540: EC 50 59 EB F1 A7 C8 7C EE FF 67 7D EE FF 6F 23 .PY....|..g}..o#
004550: C9 44 4D 21 00 00 3E 00 CB 78 28 0A A7 ED 42 44 .DM!..>..x(...BD
004560: 4D 21 00 00 3E 80 CB 7A C8 EE 80 A7 ED 52 EB 21 M!..>..z.....R.!
004570: 00 00 C9 A7 28 17 EB 4E 23 46 23 EB A7 ED 42 28 ....(..N#F#...B(
004580: 0C 09 EB 23 23 3D 20 EF 5E 23 56 EB E9 EB 5E 23 ...##= .^#V...^#
004590: 56 EB E9 32 15 01 32 14 01 E5 EB 78 B1 28 11 5E V..2..2....x.(.^
0045A0: 23 56 23 D5 5E 23 56 23 E3 73 23 72 E1 0B 18 EB #V#.^#V#.s#r....
0045B0: CB 45 28 01 23 22 12 01 22 10 01 ED 43 0E 01 C1 .E(.#".."...C...
0045C0: CD 78 03 F9 00 00 60 69 CD 9D 01 C3 00 00 00 00 .x....`i........
0045D0: 00 00 00 00 00 00 D1 DD E5 ED 4B 10 01 C5 ED 4B ..........K....K
0045E0: 12 01 ED 43 10 01 09 22 12 01 EB E9 7A B3 C8 29 ...C..."....z..)
0045F0: 1B 18 F9 7A B3 C8 CB 3C CB 1D 1B 18 F6 C1 E1 E5 ...z...<........
004600: C5 29 ED 5B 10 01 73 23 72 23 ED 5B 12 01 73 23 .).[..s#r#.[..s#
004610: 72 23 DD E5 D1 73 23 72 23 EB 21 04 00 39 EB 73 r#...s#r#.!..9.s
004620: 23 72 C9 C1 C1 E1 29 5E 23 56 23 ED 53 10 01 5E #r....)^#V#.S..^
004630: 23 56 23 ED 53 12 01 5E 23 56 23 D5 DD E1 5E 23 #V#.S..^#V#...^#
004640: 66 6B F9 60 69 E9 E1 C1 D1 D5 C5 E5 2A 10 01 E5 fk.`i.......*...
004650: D5 2A 12 01 22 10 01 CB 3C CB 1D E5 EB 23 29 38 .*.."...<....#)8
004660: 49 EB 2A 10 01 19 38 42 22 12 01 EB 21 CE FF 39 I.*...8B"...!..9
004670: A7 ED 52 38 35 60 69 CD 9D 01 E1 E1 2A 10 01 22 ..R85`i.....*.."
004680: 12 01 E1 22 10 01 C9 D1 DD E5 ED 4B 10 01 C5 ED ...".......K....
004690: 4B 12 01 ED 43 10 01 09 38 10 22 12 01 44 4D 21 K...C...8."..DM!
0046A0: CE FF 39 A7 ED 42 38 02 EB E9 CD CC 02 53 74 61 ..9..B8......Sta
0046B0: 63 6B 20 6F 76 65 72 66 6C 6F 77 0D 0A 00 C3 D6 ck overflow.....
0046C0: 01 E1 7E 23 E5 A7 C8 CD D7 02 18 F5 0E 02 5F C3 ..~#.........._.
0046D0: 05 00 3A 14 01 3D 32 14 01 C0 3A 15 01 32 14 01 ..:..=2...:..2..
0046E0: CD 66 03 A7 C8 E5 C5 F5 3A 0E 01 FE 08 28 0E 4F .f......:....(.O
0046F0: 06 00 21 D9 01 09 3C 32 0E 01 F1 77 F5 F1 C1 E1 ..!...<2...w....
004700: E1 C9 21 A2 00 CD 92 02 DD 21 88 FF DD 39 2A 10 ..!......!...9*.
004710: 01 CB 3C CB 1D E5 21 01 00 E5 2A 34 35 E5 DD 66 ..<...!...*45..f
004720: 7F DD 6E 7E 29 5E 23 56 EB 7C EE 80 67 22 34 35 ..n~)^#V.|..g"45
004730: 21 00 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA !......BKz..W.R.
004740: 6C 35 C5 DD 66 7F DD 6E 7E DD 56 71 DD 5E 70 19 l5..f..n~.Vq.^p.
004750: 29 5E 23 56 EB E5 DD 66 77 DD 6E 76 DD 56 71 DD )^#V...fw.nv.Vq.
004760: 5E 70 19 29 D1 73 23 72 E1 23 18 C7 E1 22 34 35 ^p.).s#r.#..."45
004770: DD 66 7F DD 6E 7E DD 56 75 DD 5E 74 19 29 5E 23 .f..n~.Vu.^t.)^#
004780: 56 EB 11 0D 00 A7 ED 52 CA 9A 35 DD 66 75 DD 6E V......R..5.fu.n
004790: 74 23 DD 74 75 DD 75 74 18 D6 2A B8 35 E5 DD 66 t#.tu.ut..*.5..f
0047A0: 7F DD 6E 7E 29 5E 23 56 EB 2B 7C EE 80 67 22 B8 ..n~)^#V.+|..g".
0047B0: 35 DD 66 75 DD 6E 74 11 00 00 EB 42 4B 7A EE 80 5.fu.nt....BKz..
0047C0: 57 ED 52 DA F2 35 C5 DD 66 71 DD 6E 70 23 EB DD W.R..5..fq.np#..
0047D0: 66 7F DD 6E 7E 19 29 5E 23 56 EB E5 DD 66 7F DD f..n~.)^#V...f..
0047E0: 6E 7E DD 56 71 DD 5E 70 19 29 D1 73 23 72 E1 23 n~.Vq.^p.).s#r.#
0047F0: 18 C5 E1 22 B8 35 DD 66 7F DD 6E 7E 29 5E 23 56 ...".5.f..n~)^#V
004800: EB 2B E5 DD 66 7F DD 6E 7E 29 D1 73 23 72 2A 0C .+..f..n~).s#r*.
004810: 17 E5 DD 66 77 DD 6E 76 E5 CD 2A 2A E1 E1 21 01 ...fw.nv..**..!.
004820: 00 22 10 17 2A 1A 17 23 22 1A 17 2A 0C 17 E5 CD ."..*..#"..*....
004830: 32 27 E1 EB 22 0C 17 2A 1C 17 2B EB 2A 12 17 A7 2'.."..*..+.*...
004840: ED 52 C2 60 36 CD 6E 25 2A 1C 17 2B E5 21 01 00 .R.`6.n%*..+.!..
004850: E5 2A 0C 17 E5 CD 12 23 21 06 00 39 F9 C3 67 36 .*.....#!..9..g6
004860: 2A 12 17 23 22 12 17 E1 E1 2A 10 01 22 12 01 E1 *..#"....*.."...
004870: 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF ".....!......!..
004880: DD 39 2A 0C 17 7C B5 CA CA 36 2A 0C 17 E5 CD 98 .9*..|...6*.....
004890: 27 E1 EB 22 0C 17 2A 1A 17 2B 22 1A 17 2A 12 17 '.."..*..+"..*..
0048A0: 11 01 00 A7 ED 52 C2 C3 36 CD A3 24 21 01 00 E5 .....R..6.£$!...
0048B0: 21 01 00 E5 2A 0C 17 E5 CD 12 23 21 06 00 39 F9 !...*.....#!..9.
0048C0: C3 CA 36 2A 12 17 2B 22 12 17 E1 22 10 01 DD E1 ..6*..+"..."....
0048D0: C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 2A 0C 17 .!......!...9*..
0048E0: E5 DD 66 7F DD 6E 7E E5 CD 2A 2A E1 E1 CD 76 36 ..f..n~..**...v6
0048F0: E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 .".....!......!.
004900: FE 03 28 03 FE FC C0 CD 66 03 A7 28 FA FE 03 28 ..(.....f..(...(
004910: 03 FE FC C0 0E 6C 11 00 FF CD 05 00 CD CC 02 0D .....l..........
004920: 0A 2A 2A 20 42 52 45 41 4B 20 2A 2A 0D 0A 00 C3 .** BREAK **....
004930: D6 01 3A 0E 01 A7 28 19 3A 0E 01 3D 32 0E 01 4F ..:...(.:..=2..O
004940: 06 00 3A D9 01 28 10 21 DA 01 11 D9 01 ED B0 18 ..:..(.!........
004950: 06 CD 66 03 A7 28 FA 5F 16 00 C9 E5 D5 C5 DD E5 ..f..(._........
004960: 0E 06 1E FF CD 05 00 DD E1 C1 D1 E1 C9 2A 06 00 .............*..
004970: 2B CB 45 C8 2B C9 ED 73 22 3E CD 68 05 2A 06 00 +.E.+..s">.h.*..
004980: 2B 7D E6 01 28 01 2B 22 4B 3E 21 70 3F 22 4D 3E +}..(.+"K>!p?"M>
004990: 2A 4B 3E ED 5B 4D 3E A7 ED 52 CB 3C CB 1D CB 3C *K>.[M>..R.<...<
0049A0: CB 1D EB 2A 4B 3E A7 ED 52 22 1C 3E 2B 22 2A 3E ...*K>..R".>+"*>
0049B0: 22 2C 3E 21 00 01 22 2E 3E 21 2A 3E 22 CB 3E 21 ",>!..".>!*>".>!
0049C0: 00 00 22 31 3E 3E 00 32 21 3E 3A 80 00 5F 16 00 .."1>>.2!>:.._..
0049D0: 21 81 00 19 36 0D 21 81 00 22 C9 3E CD DC 0B E5 !...6.!..".>....
0049E0: C5 78 A7 CA CE 09 11 08 3E 7E FE 2E 28 05 12 23 .x......>~..(..#
0049F0: 13 10 F6 3E 20 12 CD DC 0B 78 A7 28 0C 11 08 3E ...> ....x.(...>
004A00: 7E 12 23 13 10 FA 3E 20 12 CD 2C 0B C1 E1 CD B8 ~.#...> ..,.....
004A10: 08 CD 92 05 ED 7B 4B 3E ED 73 57 3E 21 2A 04 22 .....{K>.sW>!*."
004A20: 59 3E 0E 6C 11 00 00 CD 05 00 CD 71 35 CD 07 0F Y>.l.......q5...
004A30: E5 21 D2 04 CD 24 08 2A 2C 3E ED 5B 2A 3E A7 ED .!...$.*,>.[*>..
004A40: 52 CD 37 08 21 0E 05 CD 24 08 2A 5B 3E CD 37 08 R.7.!...$.*[>.7.
004A50: 2A 5B 3E 7C B5 C2 84 34 3E 00 32 67 3E 21 00 00 *[>|...4>.2g>!..
004A60: 22 35 3E E1 E5 CD B8 14 2A 5B 3E 7C B5 28 1B 21 "5>.....*[>|.(.!
004A70: F0 04 CD 24 08 21 00 00 CD 37 08 21 1F 05 CD 24 ...$.!...7.!...$
004A80: 08 2A 5B 3E CD 37 08 C3 84 34 21 08 3E 22 C9 3E .*[>.7...4!.>".>
004A90: CD DC 0B DD 21 CD 3E CD 48 0A 3E 01 32 67 3E 2A ....!.>.H.>.2g>*
004AA0: 6C 3E 22 35 3E E1 CD B8 14 DD 21 CD 3E CD D2 0A l>"5>.....!.>...
004AB0: 21 F0 04 CD 24 08 2A 35 3E ED 5B 6C 3E A7 ED 52 !...$.*5>.[l>..R
004AC0: CD 37 08 21 1F 05 CD 24 08 21 00 00 CD 37 08 C3 .7.!...$.!...7..
004AD0: 84 34 0D 50 68 61 73 65 20 31 20 63 6F 6D 70 6C .4.Phase 1 compl
004AE0: 65 74 65 2E 20 54 72 65 65 20 73 69 7A 65 3A 00 ete. Tree size:.
004AF0: 0D 50 68 61 73 65 20 32 20 63 6F 6D 70 6C 65 74 .Phase 2 complet
004B00: FF DD 39 2A 0C 17 E5 2A 0C 17 E5 CD 32 27 E1 EB ..9*...*....2'..
004B10: 22 0C 17 2A 0C 17 DD 56 79 DD 5E 78 A7 ED 52 CA "..*...Vy.^x..R.
004B20: 59 37 2A 1A 17 23 22 1A 17 2A 1C 17 2B EB 2A 12 Y7*..#"..*..+.*.
004B30: 17 A7 ED 52 C2 52 37 CD 6E 25 2A 1C 17 2B E5 21 ...R.R7.n%*..+.!
004B40: 01 00 E5 2A 0C 17 E5 CD 12 23 21 06 00 39 F9 C3 ...*.....#!..9..
004B50: 59 37 2A 12 17 23 22 12 17 E1 E1 22 10 01 DD E1 Y7*..#"...."....
004B60: C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 2A 0C 17 .!......!...9*..
004B70: E5 DD 66 7F DD 6E 7E E5 CD 2A 2A E1 E1 CD F7 36 ..f..n~..**....6
004B80: E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 .".....!......!.
004B90: FF DD 39 2A 0C 17 E5 DD 66 7F DD 6E 7E E5 CD 2A ..9*....f..n~..*
004BA0: 2A E1 E1 2A B9 37 E5 2A 1C 17 11 FC FF 19 7C EE *..*.7.*......|.
004BB0: 80 67 22 B9 37 21 01 00 11 00 00 EB 42 4B 7A EE .g".7!......BKz.
004BC0: 80 57 ED 52 DA DB 37 C5 2A 0C 17 7C B5 C2 D4 37 .W.R..7.*..|...7
004BD0: E1 C3 DB 37 CD 76 36 E1 23 18 DD E1 22 B9 37 E1 ...7.v6.#...".7.
004BE0: 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF ".....!......!..
004BF0: DD 39 2A 0C 17 E5 DD 66 7F DD 6E 7E E5 CD 2A 2A .9*....f..n~..**
004C00: E1 E1 2A 18 38 E5 2A 1C 17 11 FC FF 19 7C EE 80 ..*.8.*......|..
004C10: 67 22 18 38 21 01 00 11 00 00 EB 42 4B 7A EE 80 g".8!......BKz..
004C20: 57 ED 52 DA 48 38 C5 2A 0C 17 E5 CD F7 36 DD 66 W.R.H8.*.....6.f
004C30: 73 DD 6E 72 ED 5B 0C 17 A7 ED 52 C2 43 38 E1 E1 s.nr.[....R.C8..
004C40: C3 48 38 E1 E1 23 18 CF E1 22 18 38 E1 22 10 01 .H8..#...".8."..
004C50: DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 2A ...!......!...9*
004C60: 0C 17 E5 DD 66 7F DD 6E 7E E5 CD 2A 2A E1 E1 21 ....f..n~..**..!
004C70: 00 00 22 0C 17 21 01 00 22 10 17 21 01 00 22 12 .."..!.."..!..".
004C80: 17 21 01 00 22 1A 17 2A 0C 17 E5 CD FB 27 E1 E1 .!.."..*.....'..
004C90: 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF ".....!......!..
004CA0: DD 39 21 00 00 E5 2A 0C 17 E5 DD 66 7F DD 6E 7E .9!...*....f..n~
004CB0: E5 CD 2A 2A E1 E1 21 00 00 22 0C 17 21 01 00 22 ..**..!.."..!.."
004CC0: 10 17 21 01 00 22 12 17 21 00 00 22 1A 17 2A 0C ..!.."..!.."..*.
004CD0: 17 DD 74 77 DD 75 76 2A 0C 17 E5 CD 32 27 E1 EB ..tw.uv*....2'..
004CE0: 22 0C 17 2A 12 17 23 22 12 17 2A 1A 17 23 22 1A "..*..#"..*..#".
004CF0: 17 DD 66 77 DD 6E 76 ED 5B 0C 17 A7 ED 52 C2 CE ..fw.nv.[....R..
004D00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
004D10: 04 00 01 00 02 09 4E E5 04 00 C1 02 00 00 00 02 ......N.........
004D20: 04 00 C6 02 00 00 00 02 04 00 C2 02 00 00 00 02 ................
004D30: 04 00 C7 02 00 00 00 02 04 00 C3 02 00 00 00 02 ................
004D40: 04 00 C8 02 00 00 00 02 04 00 C4 02 00 00 00 02 ................
004D50: 04 00 C9 02 00 00 00 02 04 00 C5 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: 65 2E 20 43 6F 64 65 20 73 69 7A 65 3A 00 0D 50 e. Code size:..P
004E10: 68 61 73 65 20 31 20 65 72 72 6F 72 73 3A 00 0D hase 1 errors:..
004E20: 50 68 61 73 65 20 32 20 65 72 72 6F 72 73 3A 00 Phase 2 errors:.
004E30: 02 00 00 0D 41 72 6E 6F 72 20 42 43 50 4C 20 63 ....Arnor BCPL c
004E40: 6F 6D 70 69 6C 65 72 20 76 00 20 28 63 29 20 50 ompiler v. (c) P
004E50: 4A 42 20 26 20 41 72 6E 6F 72 20 4C 74 64 2E 2C JB & Arnor Ltd.,
004E60: 20 31 39 38 36 0D 0D 00 21 33 05 CD 24 08 3A 30 1986...!3..$.:0
004E70: 05 C6 30 CD D6 07 3E 2E CD D6 07 3A 31 05 C6 30 ..0...>....:1..0
004E80: CD D6 07 3A 32 05 C6 30 CD D6 07 21 4A 05 CD 24 ...:2..0...!J..$
004E90: 08 C9 2A 4B 3E CD 10 06 21 40 3C 06 20 36 00 23 ..*K>...!@<. 6.#
004EA0: 10 FB 21 04 3B 7E A7 28 22 11 60 3C 7E FE 80 30 ..!.;~.(".`<~..0
004EB0: 05 12 23 13 18 F6 1B 1A F6 80 12 E5 21 60 3C CD ..#.........!`<.
004EC0: D7 34 D1 1A E6 7F 77 EB 23 18 DA 21 0A 06 CD D7 .4....w.#..!....
004ED0: 34 22 33 3E 36 4F 21 0B 06 CD D7 34 22 49 3E 36 4"3>6O!....4"I>6
004EE0: 4F 21 00 00 22 5B 3E 3E 05 32 66 3E 3E FF 32 C6 O!.."[>>.2f>>.2.
004EF0: 3E 32 C5 3E 3E 0A 32 C8 3E 3E 00 32 06 3E 32 07 >2.>>.2.>>.2.>2.
004F00: 3E 32 5D 3E 3E 0D 32 21 3E C9 A4 73 74 61 72 F4 >2]>>.2!>..star.
004F10: 2B CB 45 28 01 2B 22 AE 3E C9 CD 29 06 FE 41 D8 +.E(.+".>..)..A.
004F20: FE 5B D0 C6 20 32 21 3E C9 E5 D5 C5 DD E5 DD 2A .[.. 2!>.......*
004F30: CB 3E CD EE 0A 38 02 3E 1A DD E1 FE 8A 28 12 FE .>...8.>.....(..
004F40: 90 28 E9 FE 7F 28 E5 FE 80 38 08 FE 8D 30 04 18 .(...(...8...0..
004F50: DB 3E 0A F5 CD AA 07 F1 C1 D1 E1 32 21 3E FE 0A .>.........2!>..
004F60: 28 C7 3A 5D 3E A7 28 0A 3A 21 3E FE 1A 28 03 CD (.:]>.(.:!>..(..
004F70: D6 07 3A 21 3E C9 3E 00 32 C7 3E E1 ED 7B 57 3E ..:!>.>.2.>..{W>
004F80: E5 3A 5D 3E A7 CC 79 07 CD 8D 33 E1 CD 24 08 21 .:]>..y...3..$.!
004F90: EE 06 CD 24 08 2A 31 3E CD 37 08 CD 22 07 CD 24 ...$.*1>.7.."..$
004FA0: 08 CD FC 0B FE FC CA B3 38 FE 03 CA B3 38 2A 5B ........8....8*[
004FB0: 3E 23 22 5B 3E 3A 5D 3E F5 3E 00 32 30 3E 32 5D >#"[>:]>.>.20>2]
004FC0: 3E 3A 1E 3E FE 48 28 1B FE 49 28 17 FE 16 28 13 >:.>.H(..I(...(.
004FD0: FE 01 28 0F FE 40 28 0B 3A 30 3E A7 20 05 CD 71 ..(..@(.:0>. ..q
004FE0: 35 18 DE F1 32 5D 3E CD 8D 33 2A 59 3E E9 20 6E 5...2]>..3*Y>. n
004FF0: 65 61 72 20 6C 69 6E 65 20 00 0D 0A 45 53 43 20 ear line ...ESC
005000: AA 0D 3C 00 E4 0D 00 2A 57 3E E5 2A 59 3E E5 ED ..<....*W>.*Y>..
005010: 73 57 3E 21 2B 0F 22 59 3E 3E 37 CD 4B 13 3A 1E sW>!+."Y>>7.K.:.
005020: 3E FE 16 20 31 CD 71 35 CD E0 0F 3A 1E 3E FE 01 >.. 1.q5...:.>..
005030: 20 0F E5 CD 71 35 CD E0 0F 3E 01 D1 CD D4 0F 18 ...q5...>......
005040: EA E5 CD 07 0F 3E 16 D1 CD D4 0F D1 ED 53 59 3E .....>.......SY>
005050: D1 ED 53 57 3E C9 FE 49 28 04 FE 40 20 05 21 00 ..SW>..I(..@ .!.
005060: 00 18 E8 FE 1E 28 08 FE 2B 28 04 FE 12 20 15 F5 .....(..+(... ..
005070: CD 71 35 21 5B 13 CD EB 13 E5 CD 07 0F D1 F1 CD .q5![...........
005080: D4 0F 18 C7 CD E4 10 3A 1E 3E FE 49 28 BD FE 40 .......:.>.I(..@
005090: 28 B9 C3 09 11 CD AC 0F 3A 1E 3E FE 36 C0 E5 CD (.......:.>.6...
0050A0: 71 35 CD 95 0F D1 3E 36 CD D4 0F C9 3A 1E 3E FE q5....>6....:.>.
0050B0: 4F 28 18 CD 76 06 45 78 70 65 63 74 69 6E 67 20 O(..v.Expecting
0050C0: 69 64 65 6E 74 69 66 69 65 72 00 2A 1F 3E E5 CD identifier.*.>..
0050D0: 71 35 E1 C9 E5 EB CD 67 0D D1 EB CD 03 08 EB C9 q5.....g........
0050E0: CD 95 0F 3A 1E 3E FE 08 20 41 E5 CD 71 35 FE 32 ...:.>.. A..q5.2
0050F0: 28 0A CD AA 10 D1 3E 44 CD D4 0F C9 E1 E5 7E FE (.....>D......~.
005100: 4F 20 0F CD 71 35 3E 00 CD 75 0D D1 3E 45 CD D4 O ..q5>..u..>E..
005110: 0F C9 CD 76 06 42 61 64 20 76 65 63 74 6F 72 20 ...v.Bad vector
005120: 64 65 66 69 6E 69 74 69 6F 6E 00 FE 41 20 52 7E definition..A R~
005130: FE 4F C2 B3 0F E5 CD 71 35 3A 1E 3E FE 4F 20 05 .O.....q5:.>.O .
005140: CD 95 0F 18 03 21 00 00 E5 3E 42 21 9D 10 CD 60 .....!...>B!...`
005150: 14 3A 1E 3E FE 02 20 19 CD 71 35 CD 02 11 3E 47 .:.>.. ..q5...>G
005160: CD 99 14 E3 C1 D1 C5 CD D4 0F D1 EB CD 03 08 EB ................
005170: C9 FE 08 20 0C CD 71 35 3E 00 CD 75 0D 3E 46 18 ... ..q5>..u.>F.
005180: DF CD 76 06 42 61 64 20 50 52 4F 43 45 44 55 52 ..v.Bad PROCEDUR
005190: 45 20 64 65 66 69 6E 69 74 69 6F 6E 00 CD 76 06 E definition..v.
0051A0: 4D 69 73 73 69 6E 67 20 29 00 3E 01 18 02 3E 00 Missing ).>...>.
0051B0: F5 A7 28 11 3A 1E 3E FE 52 20 0A CD 67 0D E5 CD ..(.:.>.R ..g...
0051C0: 71 35 E1 18 05 3E 00 CD 75 0D 3A 1E 3E FE 36 20 q5...>..u.:.>.6
0051D0: 11 F1 E5 F5 CD 71 35 F1 CD B0 10 D1 3E 36 CD D4 .....q5.....>6..
0051E0: 0F C9 F1 C9 3E 37 CD 4B 13 CD 02 11 3A 1E 3E FE ....>7.K....:.>.
0051F0: 49 28 0E FE 40 28 0A E5 CD E4 10 D1 3E 4A CD D4 I(..@(......>J..
005200: 74 6F 20 61 62 6F 72 74 2C 20 61 6E 79 20 6F 74 to abort, any ot
005210: 68 65 72 20 6B 65 79 20 63 6F 6E 74 69 6E 75 65 her key continue
005220: 73 00 CD 2B 0C FE 30 30 04 21 FA 06 C9 2A 01 00 s..+..00.!...*..
005230: 11 57 00 19 23 7E 32 45 07 23 7E 32 46 07 21 E3 .W..#~2E.#~2F.!.
005240: 00 22 47 07 CD 00 00 00 00 A7 28 DD 21 50 07 C9 ."G.......(.!P..
005250: 0D 0A 53 54 4F 50 20 74 6F 20 61 62 6F 72 74 2C ..STOP to abort,
005260: 20 61 6E 79 20 6F 74 68 65 72 20 6B 65 79 20 63 any other key c
005270: 6F 6E 74 69 6E 75 65 73 00 3A 07 3E 47 3A 06 3E ontinues.:.>G:.>
005280: B8 28 1E 58 16 00 21 C6 3D 19 7E FE 1A 28 07 FE .(.X..!.=.~..(..
005290: 0A 28 03 CD D6 07 3A 07 3E CD CD 07 32 07 3E 18 .(....:.>...2.>.
0052A0: D8 3E 00 32 06 3E 32 07 3E C9 F5 3A 06 3E 5F 16 .>.2.>2.>..:.>_.
0052B0: 00 21 C6 3D 19 F1 77 3A 06 3E CD CD 07 32 06 3E .!.=..w:.>...2.>
0052C0: 5F 3A 07 3E BB C0 CD CD 07 32 07 3E C9 FE 3F 30 _:.>.....2.>..?0
0052D0: 02 3C C9 3E 00 C9 FE 0D 20 07 3E 0A CD 12 0C 3E .<.>.... .>....>
0052E0: 0D CD 12 0C C9 E5 D5 2A CB 3E 11 A3 00 19 ED 5B .......*.>.£...[
0052F0: 2A 3E A7 ED 52 D2 9B 32 2A 2A 3E 77 2B 22 2A 3E *>..R..2**>w+"*>
005300: D1 E1 C9 D5 E5 2A CB 3E 11 A5 00 19 ED 5B 2A 3E .....*.>.....[*>
005310: A7 ED 52 D2 9B 32 D1 2A 2A 3E 72 2B 73 2B 22 2A ..R..2.**>r+s+"*
005320: 3E EB D1 C9 7E A7 C8 CB 7F 20 06 CD D6 07 23 18 >...~.... ....#.
005330: F3 E6 7F CD D6 07 C9 E5 D5 C5 F5 7C B5 20 0A 3E ...........|. .>
005340: 30 CD 12 0C F1 C1 D1 E1 C9 0E 01 11 10 27 CD 6B 0............'.k
005350: 08 11 E8 03 CD 6B 08 11 64 00 CD 6B 08 11 0A 00 .....k..d..k....
005360: CD 6B 08 11 01 00 CD 6B 08 18 D9 3E 2F 3C A7 ED .k.....k...>/<..
005370: 52 30 FA 19 FE 30 20 05 79 A7 C0 3E 30 0E 00 CD R0...0 .y..>0...
005380: 12 0C C9 E5 D5 C5 F5 3A 67 3E A7 28 14 F1 F5 DD .......:g>.(....
005390: E5 DD 21 CD 3E CD 80 0A DD E1 2A 35 3E 23 22 35 ..!.>.....*5>#"5
0053A0: 3E 2A 37 3E 23 22 37 3E F1 C1 D1 E1 C9 7D CD 83 >*7>#"7>.....}..
0053B0: 08 7C CD 83 08 C9 46 23 DD E5 E5 2A CB 3E 11 A3 .|....F#...*.>.£
0053C0: 00 19 3A 21 3E 77 23 3A 31 3E 77 23 3A 32 3E 77 ..:!>w#:1>w#:2>w
0053D0: 23 22 CB 3E 19 23 23 ED 5B 2A 3E A7 ED 52 30 1C #".>.##.[*>..R0.
0053E0: E1 E5 C5 DD 2A CB 3E CD 05 0A 30 22 C1 E1 21 00 ....*.>...0"..!.
0053F0: 00 22 31 3E 3E 0D 32 21 3E DD E1 C9 CD 4A 34 54 ."1>>.2!>....J4T
005400: 0F C9 CD 53 11 7C B5 20 15 CD 76 06 45 78 70 65 ...S.|. ..v.Expe
005410: 63 74 69 6E 67 20 63 6F 6D 6D 61 6E 64 00 3A 1E cting command.:.
005420: 3E FE 27 28 09 FE 28 28 05 FE 29 28 01 C9 CD 70 >.'(..((..)(...p
005430: 14 F5 E5 CD 71 35 E1 F1 FE 27 28 04 FE 5A 20 05 ....q5...'(..Z .
005440: CD 67 0D 18 D9 F5 E5 3E 00 CD 75 0D D1 F1 CD D4 .g.....>..u.....
005450: 0F 18 CB 3A 1E 3E 47 21 71 11 7E A7 20 04 21 00 ...:.>G!q.~. .!.
005460: 00 C9 B8 20 07 23 5E 23 56 EB 78 E9 23 23 23 18 ... .#^#V.x.###.
005470: E9 4F C0 11 4D C0 11 2E C0 11 0C C0 11 17 C0 11 .O..M...........
005480: 26 C0 11 38 C0 11 41 C0 11 0F F9 11 22 F9 11 14 &..8..A....."...
005490: 07 12 31 07 12 34 07 12 30 07 12 2D 1F 12 0D D8 ..1..4..0..-....
0054A0: 12 1C 5A 12 03 5A 12 23 5A 12 0E 5A 12 0B 5A 12 ..Z..Z.#Z..Z..Z.
0054B0: 2A 66 12 05 9B 12 07 C4 12 48 95 12 50 3F 13 00 *f.......H..P?..
0054C0: CD AE 10 3A 1E 3E FE 3E 20 0E E5 CD 71 35 CD AE ...:.>.> ...q5..
0054D0: 10 3E 3E D1 CD D4 0F C9 FE 3F 20 14 7E FE 4F C2 .>>......? .~.O.
0054E0: B3 0F E5 CD 71 35 CD 53 11 D1 3E 3F CD D4 0F C9 ....q5.S..>?....
0054F0: 7E FE 4B C2 09 11 36 4C C9 F5 CD 71 35 3E 00 CD ~.K...6L...q5>..
005500: 75 0D F1 CD 67 0D C9 F5 CD 71 35 3E 00 CD 75 0D u...g....q5>..u.
005510: E5 3E 06 CD 4B 13 CD 02 11 D1 F1 CD D4 0F C9 CD .>..K...........
005520: 71 35 3E 00 CD 75 0D 3E 06 CD 4B 13 E5 CD 02 11 q5>..u.>..K.....
005530: E5 3E 0A 21 49 12 CD 60 14 CD 02 11 D1 3E 2D CD .>.!I..`.....>-.
005540: D4 0F D1 EB CD 03 08 EB C9 CD 76 06 45 4C 53 45 ..........v.ELSE
005550: 20 65 78 70 65 63 74 65 64 00 2A 2A 3E CD E5 07 expected.**>...
005560: E5 CD 71 35 E1 C9 CD 71 35 3E 00 CD 75 0D E5 3E ..q5...q5>..u..>
005570: 15 21 84 12 CD 60 14 21 E4 10 CD EB 13 D1 3E 2A .!...`.!......>*
005580: CD D4 0F C9 CD 76 06 49 4E 54 4F 20 65 78 70 65 .....v.INTO expe
005590: 63 74 65 64 00 21 07 0F C3 EB 13 CD 71 35 3E 00 cted.!......q5>.
0055A0: CD 75 0D E5 3E 3F 21 B6 12 CD 60 14 CD 53 11 D1 .u..>?!...`..S..
0055B0: 3E 05 CD D4 0F C9 CD 76 06 3A 20 65 78 70 65 63 >......v.: expec
0055C0: 74 65 64 00 CD 71 35 3E 3F 21 B6 12 CD 60 14 CD ted..q5>?!...`..
0055D0: 53 11 3E 07 CD 67 0D C9 CD 71 35 CD AC 0F E5 21 S.>..g...q5....!
0055E0: 2F 13 3E 08 CD 60 14 3E 00 CD 75 0D E5 3E 2C 21 /.>..`.>..u..>,!
0055F0: 2F 13 CD 60 14 3E 00 CD 75 0D E5 21 00 00 3A 1E /..`.>..u..!..:.
005600: 6F 6F 20 6D 61 6E 79 20 66 69 6C 65 73 00 C1 E1 oo many files...
005610: E5 C5 21 28 09 CD 24 08 C1 E1 78 A7 28 07 7E CD ..!(..$...x.(.~.
005620: D6 07 23 10 F9 C3 45 34 0D 0A 43 61 6E 27 74 20 ..#...E4..Can't
005630: 6F 70 65 6E 20 00 C5 1A DD 77 09 13 1A DD 77 0A open ....w....w.
005640: 13 1A DD 77 0B 06 08 DD E5 D1 13 3E 20 12 13 10 ...w.......> ...
005650: FA C1 DD E5 D1 DD 36 00 00 DD 36 0C 00 DD 36 20 ......6...6...6
005660: 00 CD F9 09 38 5C FE 20 28 58 13 12 CD F9 09 D8 ....8\. (X......
005670: 0E 08 FE 3A 20 16 DD 7E 01 D6 40 DD 77 00 CD F9 ...: ..~..@.w...
005680: 09 38 3F FE 20 28 3B 12 CD F9 09 D8 FE 2E 28 0F .8?. (;.......(.
005690: FE 20 28 2C 0D 28 2B 13 12 CD F9 09 D8 18 ED DD . (,.(+.........
0056A0: 36 09 20 DD 36 0A 20 DD 36 0B 20 11 09 00 DD 19 6. .6. .6. .....
0056B0: DD E5 D1 0E 04 CD F9 09 D8 0D 28 06 12 13 18 F5 ..........(.....
0056C0: 37 C9 A7 C9 D5 59 57 CD 36 09 D1 D8 EB E9 CD 4A 7....YW.6......J
0056D0: 34 42 61 64 20 53 4F 55 52 43 45 20 6E 61 6D 65 4Bad SOURCE name
0056E0: 00 CD 4A 34 42 61 64 20 44 45 53 54 49 4E 41 54 ..J4Bad DESTINAT
0056F0: 49 4F 4E 20 6E 61 6D 65 00 78 FE 01 D8 05 7E CD ION name.x....~.
005700: 33 0C 23 A7 C9 DD E5 DD E5 DD E5 11 45 0A 7A 4B 3.#.........E.zK
005710: 11 CE 09 CD C4 09 0E 0F D1 CD 05 00 3C 28 0F DD ............<(..
005720: E1 D1 21 A3 00 19 DD 75 21 DD 74 22 37 C9 DD E1 ..!£...u!.t"7...
005730: DD 7E 09 FE 20 20 0A DD 36 09 42 DD E5 DD E5 18 .~.. ..6.B.....
005740: D5 DD E1 A7 C9 20 20 20 DD E5 DD E5 DD E5 11 7D ..... .......}
005750: 0A 7A 4B 11 E1 09 CD C4 09 DD E1 DD 36 0C 00 DD .zK.........6...
005760: 36 20 00 DD E5 D1 0E 16 CD 05 00 3C CA C5 0A E1 6 .........<....
005770: 11 23 00 19 DD E1 DD 75 21 DD 74 22 C9 43 4F 4D .#.....u!.t".COM
005780: DD E5 E1 11 A3 00 19 DD 5E 21 DD 56 22 A7 ED 52 ....£...^!.V"..R
005790: 20 0D F5 CD A8 0A DD E5 E1 11 23 00 19 EB F1 12 .........#.....
0057A0: 13 DD 73 21 DD 72 22 C9 DD E5 DD E5 DD E5 E1 11 ..s!.r".........
0057B0: 23 00 19 EB 0E 1A CD 05 00 D1 0E 15 CD 05 00 B7 #...............
0057C0: 20 03 DD E1 C9 CD 4A 34 44 69 73 63 20 46 75 6C .....J4Disc Ful
0057D0: 6C 00 DD E5 E1 11 23 00 19 DD 5E 21 DD 56 22 A7 l.....#...^!.V".
0057E0: 28 03 CD A8 0A 0E 10 DD E5 D1 CD 05 00 C9 DD E5 (...............
0057F0: D1 21 A3 00 19 DD 5E 21 DD 56 22 A7 ED 52 20 22 .!£...^!.V"..R "
005800: 3E FE 04 20 08 CD 71 35 3E 00 CD 75 0D E5 3E 06 >.. ..q5>..u..>.
005810: CD 4B 13 CD 02 11 3E 0D CD 70 14 D1 CD D4 0F E3 .K....>..p......
005820: CD 03 08 E1 E3 CD 03 08 E1 E3 CD 03 08 E1 C9 CD ................
005830: 76 06 42 61 64 20 46 4F 52 20 6C 6F 6F 70 00 CD v.Bad FOR loop..
005840: 71 35 CD AE 10 3E 50 CD 67 0D C9 E5 21 1E 3E BE q5...>P.g...!.>.
005850: 28 02 E1 C9 F5 CD 71 35 F1 E1 C9 2A 57 3E E5 2A (.....q5...*W>.*
005860: 59 3E E5 21 00 00 E5 21 00 00 39 E5 E5 ED 73 57 Y>.!...!..9...sW
005870: 3E 21 D1 13 22 59 3E CD AC 0F 3A 1E 3E FE 08 28 >!.."Y>...:.>..(
005880: 2A FE 3F 28 26 CD 76 06 4E 65 65 64 20 3A 20 6F *.?(&.v.Need : o
005890: 72 20 3D 20 69 6E 20 63 6F 6E 73 74 61 6E 74 20 r = in constant
0058A0: 64 65 66 69 6E 69 74 69 6F 6E 00 E3 CD 71 35 3E definition...q5>
0058B0: 00 CD 75 0D D1 D5 3E 1E CD D4 0F E3 21 00 00 CD ..u...>.....!...
0058C0: 03 08 C1 DD E1 DD 71 00 DD 70 01 21 FA FF 09 E5 ......q..p.!....
0058D0: E5 3E 37 CD 4B 13 3A 1E 3E FE 4F 28 9A E1 E1 E1 .>7.K.:.>.O(....
0058E0: D1 ED 53 59 3E D1 ED 53 57 3E C9 ED 5B 1F 3E D5 ..SY>..SW>..[.>.
0058F0: E5 3E 48 21 47 14 CD 60 14 E1 CD 6F 14 3A 1E 3E .>H!G..`...o.:.>
005900: FE 49 28 0E CD 76 06 4D 69 73 73 69 6E 67 20 24 .I(..v.Missing $
005910: 29 00 EB 2A 1F 3E C1 A7 ED 42 28 24 2A 33 3E ED )..*.>...B($*3>.
005920: 4B 1F 3E A7 ED 42 20 1D CD 76 06 53 65 63 74 69 K.>..B ..v.Secti
005930: 6F 6E 20 74 61 67 20 6D 69 73 6D 61 74 63 68 00 on tag mismatch.
005940: D5 CD 71 35 D1 EB C9 CD 76 06 4D 69 73 73 69 6E ..q5....v.Missin
005950: 67 20 24 28 00 E1 7E 23 E5 A7 C8 CD D6 07 18 F5 g $(..~#........
005960: C5 D5 47 3A 1E 3E B8 20 06 CD 71 35 D1 C1 C9 E9 ..G:.>. ..q5....
005970: F5 3A C5 3E A7 20 02 F1 C9 F1 E5 C5 47 21 8D 14 .:.>. ......G!..
005980: 7E B8 28 04 23 23 18 F8 23 7E C1 E1 C9 27 5A 28 ~.(.##..#~...'Z(
005990: 5B 29 5C 34 5D 30 5E 0D 5F C5 F5 3A C5 3E A7 28 [)\4]0^._..:.>.(
0059A0: 02 3E 01 47 3A C6 3E A7 28 02 04 04 78 87 47 28 .>.G:.>.(...x.G(
0059B0: 03 C6 0C 47 F1 80 C1 C9 E5 2A 4D 3E 22 6C 3E CD ...G.....*M>"l>.
0059C0: C3 16 2A 2E 3E 22 37 3E 21 00 00 22 39 3E 22 41 ..*.>"7>!.."9>"A
0059D0: 3E 22 43 3E 22 47 3E 22 55 3E 2A 4B 3E 3E 00 32 >"C>"G>"U>*K>>.2
0059E0: 3C 3E 2A 2A 3E 22 3D 3E 2A 1C 3E 11 5A 00 19 22 <>**>"=>*.>.Z.."
0059F0: 3F 3E 3E 40 32 72 3E 32 76 3E 32 6E 3E 32 7A 3E ?>>@2r>2v>2n>2z>
005A00: DD E5 DD E5 DD E5 E1 11 23 00 19 EB 0E 1A CD 05 ........#.......
005A10: 00 D1 D5 0E 14 CD 05 00 DD E1 D1 B7 C0 21 23 00 .............!#.
005A20: 19 EB 1A 13 DD 73 21 DD 72 22 37 C9 21 08 3E 22 .....s!.r"7.!.>"
005A30: C9 3E CD DC 0B DD 21 70 3F 11 7D 0A 7A 4B 11 E1 .>....!p?.}.zK..
005A40: 09 CD C4 09 0E 0F 11 70 3F CD 05 00 3C C8 21 AC .......p?...<.!.
005A50: 0B CD 24 08 3A 79 3F CB 7F 28 06 21 D0 0B CD 24 ..$.:y?..(.!...$
005A60: 08 21 BF 0B CD 24 08 CD FC 0B CD 33 0C FE 59 28 .!...$.....3..Y(
005A70: 19 1E 4E 0E 02 CD 1D 0C CD 8D 33 CD 4A 34 46 69 ..N.......3.J4Fi
005A80: 6C 65 20 69 6E 74 61 63 74 00 0E 02 5F CD 1D 0C le intact..._...
005A90: CD 8D 33 3A 79 3F E6 7F 32 79 3F 11 70 3F 0E 1E ..3:y?..2y?.p?..
005AA0: CD 05 00 11 70 3F 0E 13 CD 05 00 C9 4F 75 74 70 ....p?......Outp
005AB0: 75 74 20 66 69 6C 65 20 65 78 69 73 74 73 00 3A ut file exists.:
005AC0: 20 44 65 6C 65 74 65 20 28 59 2F 4E 29 3F 20 00 Delete (Y/N)? .
005AD0: 20 61 6E 64 20 69 73 20 52 2F 4F 00 2A C9 3E 2B and is R/O.*.>+
005AE0: 06 00 23 7E FE 20 28 FA FE 0D C8 E5 04 23 7E FE ..#~. (......#~.
005AF0: 20 28 04 FE 0D 20 F5 22 C9 3E E1 C9 CD 02 0C 30 (... .".>.....0
005B00: FB C9 C5 D5 0E 06 1E FF CD 1D 0C A7 28 01 37 D1 ............(.7.
005B10: C1 C9 D5 C5 0E 02 5F CD 1D 0C C1 D1 C9 E5 D5 C5 ......_.........
005B20: DD E5 CD 05 00 DD E1 C1 D1 E1 C9 C5 0E 0C CD 1D ................
005B30: 0C C1 C9 FE 61 D8 FE 7B D0 D6 20 C9 3A 1E 3E FE ....a..{.. .:.>.
005B40: 2E 28 08 FE 0C 28 04 FE 4F 20 09 2A 1F 3E E5 CD .(...(..O .*.>..
005B50: 71 35 E1 C9 FE 4D 20 0C 2A 1F 3E CD 67 0D E5 CD q5...M .*.>.g...
005B60: 71 35 E1 C9 FE 41 20 13 CD 71 35 3E 00 CD 75 0D q5...A ..q5>..u.
005B70: E5 3E 42 21 9D 10 CD 60 14 E1 C9 FE 38 20 02 3E .>B!...`....8 .>
005B80: 26 FE 17 28 04 FE 26 20 0D F5 CD 71 35 3E 23 CD &..(..& ...q5>#.
005B90: 75 0D F1 C3 67 0D FE 35 20 09 CD 71 35 3E 22 CD u...g..5 ..q5>".
005BA0: 75 0D C9 FE 3D 20 26 CD 71 35 3E 22 CD 75 0D 7E u...= &.q5>".u.~
005BB0: FE 4D 20 14 E5 E5 2B 56 2B 5E 21 00 00 A7 ED 52 .M ...+V+^!....R
005BC0: EB E1 2B 72 2B 73 E1 C9 3E 43 C3 67 0D FE 20 20 ..+r+s..>C.g..
005BD0: 0D CD 71 35 3E 18 CD 75 0D 3E 20 C3 67 0D FE 33 ..q5>..u.> .g..3
005BE0: 20 0B CD 71 35 CD 02 11 3E 33 C3 67 0D FE 2F 20 ..q5...>3.g../
005BF0: 0B CD 71 35 CD AE 10 3E 2F C3 67 0D FE 4E 20 1C ..q5...>/.g..N .
005C00: 32 7E 3E CD 74 16 CD 12 16 CD 63 16 CD 0A 17 E1 2~>.t.....c.....
005C10: CD 6E 15 2A 2A 3E ED 5B 3D 3E A7 ED 52 CB 3C CB .n.**>.[=>..R.<.
005C20: 1D CB 3C CB 1D EB 2A 68 3E 73 23 72 ED 5B 37 3E ..<...*h>s#r.[7>
005C30: 2A 6A 3E 73 23 72 2A 3D 3E ED 5B 2A 3E A7 ED 52 *j>s#r*=>.[*>..R
005C40: 28 0C 19 06 04 23 7E CD 83 08 10 F9 18 EF 2A AE (....#~.......*.
005C50: 3E CD AD 08 2A 47 3E 7E 23 B6 C0 CD 4A 34 55 6E >...*G>~#...J4Un
005C60: 64 65 66 69 6E 65 64 20 53 54 41 52 54 00 7C B5 defined START.|.
005C70: C8 E5 2A 3F 3E ED 5B 41 3E 19 EB 21 CE FF 39 A7 ..*?>.[A>..!..9.
005C80: ED 52 DA 9B 32 E1 7E EB 21 8E 15 C3 F6 31 4A 3F .R..2.~.!....1J?
005C90: 17 16 52 17 3E 30 1B 50 A9 1C 1E 02 1D 14 88 1D ..R.>0.P........
005CA0: 31 8C 1D 4C EA 1D 2D 7C 1E 34 E5 1E 5D E5 1E 30 1..L..-|.4..]..0
005CB0: EF 1E 5E EF 1E 22 70 1F 03 D8 1F 1C B4 1F 27 07 ..^.."p.......'.
005CC0: 21 5A 07 21 28 4C 21 5B 4C 21 29 56 21 5C 56 21 !Z.!(L![L!)V!\V!
005CD0: 2B DA 21 2A 70 22 05 65 23 07 D3 23 0B EA 23 0D +.!*p".e#..#..#.
005CE0: 15 24 5F 15 24 23 AB 1F 12 3C 1D 0F 32 20 3F 41 .$_.$#...<..2 ?A
005CF0: 20 0E 6A 25 00 CD 4A 34 45 72 72 6F 72 20 69 6E .j%..J4Error in
005D00: 20 74 72 61 6E 73 6C 61 74 69 6F 6E 20 6E 6F 64 translation nod
005D10: 65 00 3E 21 CD 83 08 CD F0 20 22 47 3E CD 58 16 e.>!..... "G>.X.
005D20: 36 00 23 36 00 3E 11 CD 83 08 CD F0 20 22 6A 3E 6.#6.>...... "j>
005D30: CD 58 16 3E 01 CD 83 08 CD F0 20 22 68 3E CD 58 .X.>...... "h>.X
005D40: 16 3E 3E CD 83 08 3A C8 3E CD 83 08 3E C3 CD 83 .>>...:.>...>...
005D50: 08 2A 98 3E CD AD 08 C9 7E CD 83 08 23 7E CD 83 .*.>....~...#~..
005D60: 08 2B C9 21 03 01 11 73 02 7E CD 83 08 23 1B 7A .+.!...s.~...#.z
005D70: B3 20 F6 C9 ED 4B 37 3E 21 0E 00 09 44 4D DD 21 . ...K7>!...DM.!
005D80: 8A 3E 21 9D 16 5E 23 56 23 7A A3 FE FF C8 EB 09 .>!..^#V#z£.....
005D90: DD 75 00 DD 74 01 EB DD 23 DD 23 18 E8 00 00 02 .u..t...#.#.....
005DA0: 00 04 00 08 00 24 00 70 00 8F 00 90 00 C8 00 D3 .....$.p........
005DB0: 00 E9 00 F0 00 FA 00 20 01 43 01 84 01 CF 01 2F ....... .C...../
005DC0: 02 FF FF DD 21 B0 3E 21 E8 16 7E A7 C8 E5 DD E5 ....!.>!..~.....
005DD0: CD D7 34 DD E1 DD 75 00 DD 74 01 DD 23 DD 23 E1 ..4...u..t..#.#.
005DE0: 7E 23 CB 7F 20 E4 18 F8 6C 65 76 65 EC 6C 6F 6E ~#.. ...leve.lon
005DF0: 67 6A 75 6D F0 61 70 74 6F 76 65 E3 72 64 76 64 gjum.aptove.rdvd
005E00: 2A 2A 3E E5 3E 4E CD E5 07 21 C6 3C 46 04 7E CD **>.>N...!.<F.~.
005E10: E5 07 23 10 F9 CD 71 35 E1 3E 4E C9 FE 52 20 24 ..#...q5.>N..R $
005E20: CD 76 06 3F 20 69 73 20 6F 6E 6C 79 20 61 6C 6C .v.? is only all
005E30: 6F 77 65 64 20 69 6E 20 64 65 66 69 6E 69 74 69 owed in definiti
005E40: 6F 6E 73 00 FE 60 20 0D CD 71 35 3E 23 CD 75 0D ons..` ..q5>#.u.
005E50: 3E 60 C3 67 0D CD 76 06 42 61 64 20 65 78 70 72 >`.g..v.Bad expr
005E60: 65 73 73 69 6F 6E 00 D5 ED 5B 2A 3E CD E5 07 CD ession...[*>....
005E70: 03 08 EB D1 C9 57 D5 CD 3C 0C D1 22 24 3E 3A 30 .....W..<.."$>:0
005E80: 3E A7 C0 21 B2 0E 3A 1E 3E 5F 7E A7 20 04 2A 24 >..!..:.>_~. .*$
005E90: 3E C9 BB 28 06 23 23 23 23 18 EF 23 46 23 7E 23 >..(.####..#F#~#
005EA0: 66 6F 3A 1E 3E E9 0E 1E 18 01 48 7A B8 38 04 2A fo:.>.....Hz.8.*
005EB0: 24 3E C9 2A 24 3E E5 C5 D5 79 F5 CD 71 35 F1 CD $>.*$>...y..q5..
005EC0: 75 0D 22 24 3E E1 22 28 3E E1 22 26 3E 3A 28 3E u."$>."(>."&>:(>
005ED0: D1 2A 24 3E CD D4 0F E5 ED 4B 26 3E ED 5B 28 3E .*$>.....K&>.[(>
005EE0: E1 C3 7B 0D 7A FE 0D 38 04 2A 24 3E C9 2A 24 3E ..{.z..8.*$>.*$>
005EF0: C5 D5 E5 CD 71 35 3E 00 CD 75 0D 3A 1E 3E FE 36 ....q5>..u.:.>.6
005F00: 28 0F CD 76 06 45 78 70 65 63 74 69 6E 67 20 2C (..v.Expecting ,
005F10: 00 E5 CD 71 35 3E 00 CD 75 0D 3E 3C D1 CD D4 0F ...q5>..u.><....
005F20: EB E1 CD 03 08 EB D1 C1 C3 7B 0D 2A 24 3E D5 C5 .........{.*$>..
005F30: E5 CD 71 35 3A 1E 3E FE 42 28 05 CD AE 10 18 03 ..q5:.>.B(......
005F40: 21 00 00 E5 3E 42 21 9D 10 CD 60 14 E1 D1 3E 4B !...>B!...`...>K
005F50: CD D4 0F C1 D1 C3 7B 0D 7A 2A 24 3E FE 1E 38 01 ......{.z*$>..8.
005F60: C9 D5 E5 D5 CD 71 35 3E 1E CD 75 0D 22 24 3E D1 .....q5>..u."$>.
005F70: 7B D1 CD D4 0F EB 3A 1E 3E 4F 21 AB 0E 7E A7 20 {.....:.>O!..~.
005F80: 05 EB D1 C3 7B 0D B9 28 03 23 18 F1 D5 2A 24 3E ....{..(.#...*$>
005F90: E5 C5 CD 71 35 3E 1E CD 75 0D 22 24 3E C1 79 D1 ...q5>..u."$>.y.
005FA0: CD D4 0F D1 3E 1B CD D4 0F 18 CA 08 1F 18 10 19 ....>...........
005FB0: 11 00 24 23 AA 0D 39 23 AA 0D 3B 23 AA 0D 35 22 ..$#..9#..;#..5"
005FC0: AA 0D 3D 22 AA 0D 38 28 AA 0D 51 28 AA 0D 41 00 ..="..8(..Q(..A.
005FD0: 2B 0E 08 00 58 0E 1F 00 58 0E 18 00 58 0E 10 00 +...X...X...X...
005FE0: 58 0E 19 00 58 0E 11 00 58 0E 1D 19 A6 0D 25 19 X...X...X.....%.
005FF0: A6 0D 1B 17 AA 0D 1A 17 AA 0D 09 15 AA 0D 21 15 ..............!.
006000: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
006010: 05 00 01 00 02 09 50 E5 05 00 C1 02 00 00 00 02 ......P.........
006020: 05 00 C6 02 00 00 00 02 05 00 C2 02 00 00 00 02 ................
006030: 05 00 C7 02 00 00 00 02 05 00 C3 02 00 00 00 02 ................
006040: 05 00 C8 02 00 00 00 02 05 00 C4 02 00 00 00 02 ................
006050: 05 00 C9 02 00 00 00 02 05 00 C5 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: F5 00 A2 3E A4 3E A6 3E AC 3E 21 B0 3E DD 21 02 ...>.>.>.>!.>.!.
006110: 17 06 04 C5 5E 23 56 23 E5 DD E5 CD 26 32 DD E1 ....^#V#....&2..
006120: 2B 36 00 23 36 02 23 36 01 23 DD 5E 00 DD 56 01 +6.#6.#6.#.^..V.
006130: 1A 77 13 23 1A 77 E1 DD 23 DD 23 C1 10 D5 C9 EB .w.#.w..#.#.....
006140: 2B 56 2B 5E E5 EB CD 6E 15 E1 2B 56 2B 5E EB C3 +V+^...n..+V+^..
006150: 6E 15 2A 51 3E E5 3A 3B 3E F5 2A 39 3E E5 2A 1C n.*Q>.:;>.*9>.*.
006160: 3E E5 EB 2B 56 2B 5E 2B E5 EB CD CC 17 E1 56 2B >..+V+^+......V+
006170: 5E EB CD 6E 15 E1 22 1C 3E C1 2A 39 3E ED 43 39 ^..n..".>.*9>.C9
006180: 3E CD 90 17 C1 3A 3B 3E CD D3 33 E1 22 51 3E C9 >....:;>..3."Q>.
006190: 54 5D A7 ED 42 C8 D5 DD E1 DD 7E 05 FE 09 20 24 T]..B.....~... $
0061A0: D5 C5 DD 5E 02 DD 56 03 CD 64 33 55 6E 64 65 66 ...^..V..d3Undef
0061B0: 69 6E 65 64 20 69 64 65 6E 74 69 66 69 65 72 2C ined identifier,
0061C0: A0 C1 DD E1 DD 6E 00 DD 66 01 18 C4 7E FE 01 20 .....n..f...~..
0061D0: 53 2B E5 2B 2B 56 2B 5E 1A 21 F0 17 CD F6 31 E1 S+.++V+^.!....1.
0061E0: 56 2B 5E 2B E5 EB CD CC 17 E1 56 2B 5E EB 18 3D V+^+......V+^..=
0061F0: 47 55 18 46 55 18 54 55 18 55 55 18 56 55 18 57 GU.FU.TU.UU.VU.W
006200: 55 18 58 55 18 59 55 18 44 74 18 45 D0 18 00 CD U.XU.YU.Dt.E....
006210: 4A 34 44 65 63 6C 61 72 61 74 69 6F 6E 20 65 72 J4Declaration er
006220: 72 6F 72 00 E5 EB 21 F0 17 CD F6 31 E1 7E EB 21 ror...!....1.~.!
006230: 35 18 C3 F6 31 44 54 18 45 54 18 47 27 19 46 27 5...1DT.ET.G'.F'
006240: 19 54 27 19 55 27 19 56 27 19 57 27 19 58 27 19 .T'.U'.V'.W'.X'.
006250: 59 27 19 00 C9 EB 2B 56 2B 5E D5 CD 26 32 2B 36 Y'....+V+^..&2+6
006260: 00 23 36 02 23 36 00 23 E5 CD F0 20 EB E1 73 23 .#6.#6.#... ..s#
006270: 72 EB C1 C9 EB 2B 56 2B 5E 2B 46 2B 4E 1A FE 36 r....+V+^+F+N..6
006280: 20 21 0A FE 36 20 21 EB 2B 56 2B 5E 2B E5 60 69 !..6 !.+V+^+.`i
006290: 2B 46 2B 4E 2B E5 CD C2 18 E1 46 2B 4E E1 56 2B +F+N+.....F+N.V+
0062A0: 5E 18 DA 0A FE 36 20 1A CD 3F 33 45 78 70 72 65 ^....6 ..?3Expre
0062B0: 73 73 69 6F 6E 2F 69 64 20 6D 69 73 6D 61 74 63 ssion/id mismatc
0062C0: E8 C9 C5 CD EE 1C E1 CD 76 25 3E E5 CD 83 08 C9 ........v%>.....
0062D0: D5 DD E1 DD 6E FC DD 66 FD CD 19 30 23 29 ED 5B ....n..f...0#).[
0062E0: 51 3E 19 22 51 3E D5 ED 4B 53 3E A7 ED 42 38 04 Q>."Q>..KS>..B8.
0062F0: 09 22 53 3E DD 6E FE DD 66 FF CD ED 1C 3E 2A CD ."S>.n..f....>*.
006300: 52 D2 9B 32 E1 D1 C9 CD 8A 20 3E 00 32 72 3E 3C R..2..... >.2r><
006310: 32 76 3E CD F0 20 22 74 3E 2A 37 3E 22 78 3E 3A 2v>.. "t>*7>"x>:
006320: 3B 3E 32 77 3E 32 73 3E 1A CD B3 1A EB 2B 56 2B ;>2w>2s>.....+V+
006330: 5E EB CD 6E 15 3E C3 2A 78 3E CD 80 2D ED 5B 37 ^..n.>.*x>..-.[7
006340: 3E DD 21 72 3E CD BA 33 CD 9D 20 C9 CD 8A 20 CD >.!r>..3.. ... .
006350: B0 20 3E FF 18 08 CD 8A 20 CD B0 20 3E 00 F5 3E . >..... .. >..>
006360: 00 32 72 3E 32 76 3E 32 82 3E 32 86 3E CD F0 20 .2r>2v>2.>2.>..
006370: 22 74 3E CD F0 20 22 78 3E CD F0 20 22 84 3E CD "t>.. "x>.. ".>.
006380: F0 20 22 88 3E 3A 3B 3E 32 77 3E 32 73 3E 2A 37 . ".>:;>2w>2s>*7
006390: 3E F1 F5 E5 F5 1A CD B3 1A EB 2B 56 2B 5E 2B E5 >.........+V+^+.
0063A0: EB CD 6E 15 ED 5B 37 3E DD 21 76 3E CD BA 33 E1 ..n..[7>.!v>..3.
0063B0: 56 2B 5E EB F1 CD E2 2C D1 F1 F5 EE FF CD D1 1D V+^....,........
0063C0: F1 ED 5B 37 3E CD D1 1D ED 5B 37 3E DD 21 72 3E ..[7>....[7>.!r>
0063D0: CD BA 33 CD C3 20 CD 9D 20 C9 EB 2B 56 2B 5E 2B ..3.. .. ..+V+^+
0063E0: E5 D5 CD 1A 22 D1 CD F1 21 E1 56 2B 5E EB C3 6E ...."...!.V+^..n
0063F0: 15 7A B3 C8 EB 2B E5 2B 2B 56 2B 5E EB CD 19 30 .z...+.++V+^...0
006400: EB ED 4B 45 3E CD 61 22 E1 56 2B 5E E5 CD 68 1D ..KE>.a".V+^..h.
006410: DD E1 DD 5E FC DD 56 FD 18 D7 21 00 00 7A B3 28 ...^..V...!..z.(
006420: 0D 23 23 D5 DD E1 DD 5E FA DD 56 FB 18 EF E5 ED .##....^..V.....
006430: 5B 37 3E 19 7B E6 01 20 01 23 23 23 23 3E C3 CD [7>.{.. .####>..
006440: 83 08 CD AD 08 3A 37 3E E6 01 28 05 3E 00 CD 83 .....:7>..(.>...
006450: 08 2A 37 3E 22 45 3E E1 7C B5 C8 CD 83 08 2B 18 .*7>"E>.|.....+.
006460: F7 2A 3D 3E 72 2B 73 2B 70 2B 71 2B 22 3D 3E C9 .*=>r+s+p+q+"=>.
006470: 2A 7E 3E E5 2A 80 3E E5 3E 00 32 7E 3E 3A 3B 3E *~>.*.>.>.2~>:;>
006480: 32 7F 3E CD F0 20 22 80 3E EB 2B 56 2B 5E E5 EB 2.>.. ".>.+V+^..
006490: CD 76 25 CD F0 20 54 5D 3E 11 CD 83 08 CD 58 16 .v%.. T]>.....X.
0064A0: 3E 3E CD 83 08 CD F0 20 7E CD 83 08 3E C3 CD 83 >>..... ~...>...
0064B0: 08 2A 94 3E CD AD 08 E1 D5 EB 2A 43 3E E5 21 00 .*.>......*C>.!.
0064C0: 00 22 43 3E 2A 41 3E E5 EB 2B 56 2B 5E EB CD 6E ."C>*A>..+V+^..n
0064D0: 15 D1 D5 2A 41 3E A7 ED 52 23 23 3E C3 CD 83 08 ...*A>..R##>....
0064E0: ED 5B 37 3E 19 23 23 CD AD 08 D1 E1 DD E1 E5 D5 .[7>.##.........
0064F0: 2A 37 3E DD 75 00 DD 74 01 2A 41 3E A7 ED 52 CB *7>.u..t.*A>..R.
006500: 83 08 2A 8C 3E CD AD 08 E1 7C B5 28 0D 3E 11 CD ..*.>....|.(.>..
006510: 83 08 CD AD 08 3E 19 CD 83 08 21 21 19 CD CC 1C .....>....!!....
006520: C9 05 CB 3C CB 1D E5 D5 3A 3C 3E A7 28 0D 3E C3 ...<....:<>.(.>.
006530: CD 83 08 CD F0 20 CD 58 16 E3 E5 2A 55 3E E3 22 ..... .X...*U>."
006540: 55 3E 2B 56 2B 5E 2B E5 2A 49 3E A7 ED 52 20 0A U>+V+^+.*I>..R .
006550: 2A 47 3E ED 4B 37 3E 71 23 70 CD AC 32 ED 5B 37 *G>.K7>q#p..2.[7
006560: 3E CD 98 33 D1 2A 53 3E E5 2A 4F 3E E5 2A 39 3E >..3.*S>.*O>.*9>
006570: E5 2A 1C 3E E5 3A 3B 3E F5 3E 7F 32 3B 3E 3A 3C .*.>.:;>.>.2;>:<
006580: 3E 3C 32 3C 3E 21 00 00 22 53 3E 22 51 3E EB 56 ><2<>!.."S>"Q>.V
006590: 2B 5E 2B E5 EB CD D5 1C CD 49 1A D1 2A 7A 3E E5 +^+......I..*z>.
0065A0: 2A 7C 3E E5 3A 3B 3E 67 2E 00 22 7A 3E CD F0 20 *|>.:;>g.."z>..
0065B0: 22 7C 3E EB CD 18 1A ED 5B 37 3E DD 21 7A 3E CD "|>.....[7>.!z>.
0065C0: BA 33 E1 22 7C 3E E1 22 7A 3E 2A 53 3E 7C B5 21 .3."|>."z>*S>|.!
0065D0: E8 1A 20 03 21 15 1B CD 6F 14 ED 5B 53 3E 2A 4F .. .!...o..[S>*O
0065E0: 3E 73 23 72 3A 3C 3E 3D 32 3C 3E F1 32 3B 3E E1 >s#r:<>=2<>.2;>.
0065F0: 22 1C 3E C1 2A 39 3E ED 43 39 3E CD 90 17 E1 22 ".>.*9>.C9>...."
006600: 4F 3E E1 22 53 3E E1 22 55 3E 3A 3C 3E A7 C8 E1 O>."S>."U>:<>...
006610: ED 5B 37 3E 73 23 72 C9 E5 DD E1 56 2B 5E EB DD .[7>s#r....V+^..
006620: 7E 05 FE 46 28 10 FE 54 28 0C FE 56 28 08 FE 58 ~..F(..T(..V(..X
006630: 28 04 CD 6E 15 C9 7E FE 33 20 05 EB CD D1 26 C9 (..n..~.3 ....&.
006640: CD 76 25 3E EB CD 83 08 C9 E5 D5 3E 21 CD 83 08 .v%>.......>!...
006650: CD F0 20 22 4F 3E CD 58 16 3E CD CD 83 08 CD 97 .. "O>.X.>......
006660: 1A CD AD 08 3E DD CD 83 08 3E 21 CD 83 08 3A 3B ....>....>!...:;
006670: 3E D6 06 32 3B 3E 3C 5F 16 00 21 00 00 A7 ED 52 >..2;><_..!....R
006680: CD AD 08 3E DD CD 83 08 3E 39 CD 83 08 2A 55 3E ...>....>9...*U>
006690: 7E CD B3 1A D1 E1 C9 2A 55 3E 7E FE 46 28 10 FE ~......*U>~.F(..
0066A0: 47 28 0C FE 54 28 08 FE 55 28 04 2A A8 3E C9 2A G(..T(..U(.*.>.*
0066B0: 9C 3E C9 FE 54 28 23 FE 55 28 1F FE 58 28 1B FE .>..T(#.U(..X(..
0066C0: 59 28 17 FE 5A 28 13 FE 5B 28 0F FE 5C 28 0B FE Y(..Z(..[(..\(..
0066D0: 5D 28 07 FE 5E 28 03 FE 5F C0 3E CD CD 83 08 E5 ](..^(.._.>.....
0066E0: 2A AA 3E CD AD 08 E1 C9 3E 2A CD 83 08 2A 8C 3E *.>.....>*...*.>
0066F0: CD AD 08 3E 22 CD 83 08 2A 8E 3E CD AD 08 3E E1 ...>"...*.>...>.
006700: 3C CB 1D CB 3C CB 1D DD 75 02 45 7D A7 28 2B 2A <...<...u.E}.(+*
006710: 41 3E ED 5B 3F 3E 19 2B 2B 2B 2B E5 DD E1 DD 6E A>.[?>.++++....n
006720: 00 DD 66 01 CD AD 08 DD 6E 02 DD 66 03 CD AD 08 ..f.....n..f....
006730: DD 2B DD 2B DD 2B DD 2B 10 E4 2A 43 3E 7C B5 20 .+.+.+.+..*C>|.
006740: 05 2A 37 3E 23 23 CD AD 08 E1 22 41 3E E1 22 43 .*7>##...."A>."C
006750: 3E ED 5B 37 3E DD 21 7E 3E CD BA 33 E1 22 80 3E >.[7>.!~>..3.".>
006760: E1 22 7E 3E C9 3A 7E 3E CB 77 28 28 1B 1B D5 CD ."~>.:~>.w((....
006770: 3F 33 43 41 53 45 2F 44 45 46 41 55 4C 54 20 6F ?3CASE/DEFAULT o
006780: 75 74 73 69 64 65 20 61 20 53 57 49 54 43 48 4F utside a SWITCHO
006790: CE C3 CA 23 EB 2B 56 2B 5E E5 EB CD 19 30 EB 2A ...#.+V+^....0.*
0067A0: 3F 3E ED 4B 41 3E 09 44 4D 21 CE FF 39 A7 ED 42 ?>.KA>.DM!..9..B
0067B0: DA 9B 32 60 69 73 23 72 ED 5B 37 3E 23 73 23 72 ..2`is#r.[7>#s#r
0067C0: 2A 41 3E 23 23 23 23 22 41 3E E1 2B 56 2B 5E EB *A>####"A>.+V+^.
0067D0: C3 6E 15 3A 7E 3E CB 77 C2 6E 23 2A 37 3E 22 43 .n.:~>.w.n#*7>"C
0067E0: 3E EB 2B 56 2B 5E EB C3 6E 15 DD 21 7E 3E 21 F4 >.+V+^..n..!~>!.
0067F0: 23 C3 DF 1F CD 3F 33 45 4E 44 43 41 53 45 20 75 #....?3ENDCASE u
006800: 73 65 64 20 6F 75 74 73 69 64 65 20 53 57 49 54 sed outside SWIT
006810: 43 48 4F CE C9 D5 DD E1 CD 8A 20 2A 64 3E E5 3E CHO....... *d>.>
006820: 2A CD 83 08 CD F0 20 22 64 3E CD 58 16 3E E5 CD *..... "d>.X.>..
006830: 83 08 3A 3B 3E 3D 3D 32 3B 3E DD 6E FA DD 66 FB ..:;>==2;>.n..f.
006840: CD 76 25 21 20 25 CD CC 1C 2A 64 3E CD 58 16 DD .v%! %...*d>.X..
006850: 6E F8 DD 66 F9 CD 76 25 2A 37 3E E5 DD 7E 00 CD n..f..v%*7>..~..
006860: B3 1A ED 4B 37 3E 03 2A 64 3E 71 23 70 DD 6E FE ...K7>.*d>q#p.n.
006870: DD 66 FF 7C B5 20 05 21 01 00 18 03 CD 19 30 E5 .f.|. .!......0.
006880: CB 7C 21 26 25 28 03 21 34 25 CD CC 1C CD F0 20 .|!&%(.!4%.....
006890: 22 74 3E CD 58 16 3E C5 CD 83 08 3A 3B 3E 67 2E "t>.X.>....:;>g.
0068A0: 00 22 72 3E 25 25 22 76 3E CD F0 20 22 78 3E 2A ."r>%%"v>.. "x>*
0068B0: 39 3E E5 2A 1C 3E E5 DD 6E F6 DD 66 F7 CD ED 1C 9>.*.>..n..f....
0068C0: DD 6E FC DD 66 FD CD 6E 15 3A 3B 3E C6 04 32 3B .n..f..n.:;>..2;
0068D0: 3E E1 22 1C 3E C1 2A 39 3E ED 43 39 3E CD 90 17 >.".>.*9>.C9>...
0068E0: ED 5B 37 3E DD 21 76 3E CD BA 33 3E E1 CD 83 08 .[7>.!v>..3>....
0068F0: D1 21 4D 25 CD 0B 32 3E C3 E1 CD 80 2D ED 5B 37 .!M%..2>....-.[7
006900: CD 83 08 3E 22 CD 83 08 2A 8C 3E CD AD 08 21 2C ...>"...*.>...!,
006910: 1B CD CC 1C C9 3E E1 CD 83 08 3E 22 CD 83 08 2A .....>....>"...*
006920: 8C 3E CD AD 08 21 2C 1B CD CC 1C C9 03 DD E1 C9 .>...!,.........
006930: EB 2B 56 2B 5E 2B 46 2B 6E 60 1A FE 36 20 2B E5 .+V+^+F+n`..6 +.
006940: EB 2B 46 2B 4E 2B 56 2B 5E E1 D5 C5 7E FE 36 20 .+F+N+V+^...~.6
006950: 14 2B 46 2B 4E 2B 56 2B 5E E1 D5 EB 60 69 CD 6A .+F+N+V+^...`i.j
006960: 1B E1 D1 18 D5 E1 E1 C3 A8 18 7E FE 36 CA A8 18 ..........~.6...
006970: 1A FE 4F 28 12 FE 26 28 1C FE 38 CA F8 1B FE 51 ..O(..&(..8....Q
006980: CA 1E 1C CD C3 31 C9 D5 CD 76 25 D1 CD AC 32 38 .....1...v%...28
006990: 03 CD A8 31 C9 CD A2 1C 28 1F D5 CD 76 25 3E E5 ...1....(...v%>.
0069A0: CD 83 08 E1 2B 56 2B 5E EB CD 76 25 21 B3 1B CD ....+V+^..v%!...
0069B0: CC 1C C9 05 29 D1 73 23 72 E5 EB 2B 56 2B 5E EB ....).s#r..+V+^.
0069C0: CD 76 25 3E 29 CD 83 08 E1 E5 EB CD 3B 30 38 0B .v%>).......;08.
0069D0: D1 CD 57 2C 21 F4 1B CD CC 1C C9 3E 36 CD 83 08 ..W,!......>6...
0069E0: 7B CD 83 08 3E 23 CD 83 08 3E 36 CD 83 08 7A CD {...>#...>6...z.
0069F0: 83 08 E1 C9 03 73 23 72 CD A2 1C 28 14 D5 CD 76 .....s#r...(...v
006A00: 25 3E E5 CD 83 08 D1 CD C7 28 21 B3 1B CD CC 1C %>.......(!.....
006A10: C9 E5 CD C7 28 3E 29 CD 83 08 E1 C3 C9 1B CD A2 ....(>).........
006A20: 1C 28 17 D5 CD 76 25 3E E5 CD 83 08 E1 CD 7B 2B .(...v%>......{+
006A30: 21 37 1C CD CC 1C C9 02 D1 73 E5 EB CD 7B 2B D1 !7.......s...{+.
006A40: D5 CD 3B 30 30 0B 3E 36 CD 83 08 7B CD 83 08 D1 ..;00.>6...{....
006A50: C9 D1 CD AC 32 D8 DD 7E 05 FE 02 30 13 3E DD CD ....2..~...0.>..
006A60: 83 08 3E 7E CD 83 08 DD 7E 08 3D CD 83 08 18 2C ..>~....~.=....,
006A70: FE 04 30 20 DD 7E 06 A7 28 0C 3E 36 CD 83 08 DD ..0 .~..(.>6....
006A80: 7E 07 CD 83 08 C9 3E 11 CD 83 08 CD D9 31 3E 73 ~.....>......1>s
006A90: CD 83 08 C9 3E 3A CD 83 08 CD D9 31 3E 77 CD 83 ....>:.....1>w..
006AA0: 08 C9 7E FE 4F C8 FE 4D C9 EB 2B 56 2B 5E EB 7E ..~.O..M..+V+^.~
006AB0: FE 36 20 10 2B 56 2B 5E E5 EB CD C4 1C E1 2B 56 .6 .+V+^......+V
006AC0: 2B 5E 18 EA CD 19 30 7D CD 83 08 C9 46 23 7E CD +^....0}....F#~.
006AD0: 83 08 10 F9 C9 7C B5 C8 7E FE 36 20 10 2B E5 2B .....|..~.6 .+.+
006AE0: 2B 56 2B 5E EB CD D5 1C E1 56 2B 5E EB EB CD 26 +V+^.....V+^...&
006AF0: 32 36 00 23 36 01 23 23 3A 3B 3E 77 3D 3D 32 3B 26.#6.##:;>w==2;
006B00: 3E DD 21 72 3E CD BA 33 3E E1 CD 83 08 3E 22 CD >.!r>..3>....>".
006B10: 83 08 2A 64 3E CD 58 16 E1 22 64 3E CD 9D 20 C9 ..*d>.X.."d>.. .
006B20: 05 7C EE 80 67 22 0D 11 00 00 EB 42 4B 7A EE 80 .|..g".....BKz..
006B30: 57 ED 52 DA 0C 11 00 00 44 4D 7C EE 80 67 ED 52 W.R.....DM|..g.R
006B40: DA 3E 23 CD 83 08 C9 3E 2B CD 83 08 C9 03 01 00 .>#....>+.......
006B50: 41 25 FF FF 47 25 00 00 4C 25 3E 11 CD 83 08 60 A%..G%..L%>....`
006B60: 69 CD AD 08 3E 19 CD 83 08 C9 3E C3 CD 83 08 2A i...>.....>....*
006B70: 9A 3E CD AD 08 C9 7E EB 21 7E 25 C3 F6 31 4D 06 .>....~.!~%..1M.
006B80: 26 4F 17 26 52 16 26 4B 7B 26 60 AA 26 43 90 26 &O.&R.&K{&`.&C.&
006B90: 33 C8 26 2E 31 27 0C 3D 27 17 49 27 26 E6 27 20 3.&.1'.='.I'&.'
006BA0: FC 27 4E 4B 28 2F 66 28 35 C7 28 3D 18 29 39 4C .'NK(/f(5.(=.)9L
006BB0: 29 3B 27 2A 24 76 2A 08 9B 28 1F B1 28 19 40 2A );'*$v*..(..(.@*
006BC0: 18 56 2A 11 36 2A 10 60 2A 38 8A 2A 51 6C 2B 21 .V*.6*.`*8.*Ql+!
006BD0: A9 2A 09 94 2A 1B BA 2A 1A CB 2A 1D DC 2A 25 EB .*..*..*..*..*%.
006BE0: 2A 3C FA 2A 00 CD 4A 34 55 6E 65 78 70 65 63 74 *<.*..J4Unexpect
006BF0: 65 64 20 6E 6F 64 65 20 69 6E 20 65 78 70 72 65 ed node in expre
006C00: 73 73 69 6F 6E 00 3E 21 CD 83 08 1B 1B 1A CD 83 ssion.>!........
006C10: 08 13 1A CD 83 08 C9 DD E5 CD AC 32 38 18 DD 7E ...........28..~
006C20: 05 FE 04 20 14 3E 21 CD 83 08 DD 7E 07 CD 83 08 ... .>!....~....
006C30: DD 7E 08 CD 83 08 DD E1 C9 FE 02 30 24 3E DD CD .~.........0$>..
006C40: 83 08 3E 66 CD 83 08 DD 7E 08 CD 83 08 3E DD CD ..>f....~....>..
006C50: 83 08 3E 6E CD 83 08 DD 7E 08 3D CD 83 08 DD E1 ..>n....~.=.....
006C60: C9 FE 04 30 0B 3E 21 CD 83 08 CD D9 31 DD E1 C9 ...0.>!.....1...
006C70: 3E 2A CD 83 08 CD D9 31 DD E1 C9 DD E5 CD EA 1D >*.....1........
006C80: 3E EB CD 83 08 DD E1 C9 DD E5 CD EA 1D DD E1 C9 >...............
006C90: EB 2B 56 2B 5E EB CD 76 25 21 A0 26 CD CC 1C C9 .+V+^..v%!.&....
006CA0: 09 7C EE FF 67 7D EE FF 6F 23 EB 2B 56 2B 5E EB .|..g}..o#.+V+^.
006CB0: CD 76 25 21 BA 26 CD CC 1C C9 0D CB 7C 28 09 7C .v%!.&......|(.|
006CC0: EE FF 67 7D EE FF 6F 23 CD D1 26 3E EB CD 83 08 ..g}..o#..&>....
006CD0: C9 DD E5 2A 6E 3E E5 2A 70 3E E5 3E 00 32 6E 3E ...*n>.*p>.>.2n>
006CE0: 3A 3B 3E 32 6F 3E CD F0 20 22 70 3E EB 2B 56 2B :;>2o>.. "p>.+V+
006CF0: 5E EB CD 6E 15 DD 21 6E 3E DD CB 00 7E 20 20 CD ^..n..!n>...~ .
006D00: 3E C9 EB 2B 56 2B 5E 2B E5 EB 7C B5 20 0B E1 56 >..+V+^+..|. ..V
006D10: 2B 5E EB 7C B5 C8 C3 6E 15 2B 56 2B 5E 2B D5 56 +^.|...n.+V+^+.V
006D20: 2B 5E E3 E5 EB CD 19 30 D1 E5 CD 26 32 36 04 23 +^.....0...&26.#
006D30: 23 D1 73 23 72 E1 2B 56 2B 5E 18 CD EB 2B 56 2B #.s#r.+V+^...+V+
006D40: 5E E5 D5 CD 1A 22 D1 CD 53 1D E1 2B 56 2B 5E EB ^...."..S..+V+^.
006D50: C3 6E 15 7A B3 C8 EB 2B 56 2B 5E E5 CD 68 1D E1 .n.z...+V+^..h..
006D60: 2B 2B 2B 56 2B 5E 18 EB 3E 08 F5 CD 26 32 F1 2B +++V+^..>...&2.+
006D70: 36 00 23 77 23 36 01 23 ED 5B 45 3E 73 23 72 62 6.#w#6.#.[E>s#rb
006D80: 6B 13 13 ED 53 45 3E C9 3E 00 18 02 3E FF CD B0 k...SE>.>...>...
006D90: 20 21 00 00 22 82 3E 22 86 3E CD F0 20 22 84 3E !..".>".>.. ".>
006DA0: CD F0 20 22 88 3E EB 2B 56 2B 5E 2B F5 E5 F5 EB .. ".>.+V+^+....
006DB0: CD E2 2C F1 ED 5B 37 3E CD D1 1D E1 56 2B 5E EB ..,..[7>....V+^.
006DC0: CD 6E 15 F1 EE FF ED 5B 37 3E CD D1 1D CD C3 20 .n.....[7>.....
006DD0: C9 DD E5 DD 21 82 3E A7 28 04 DD 21 86 3E DD 6E ....!.>.(..!.>.n
006DE0: 02 DD 66 03 73 23 72 DD E1 C9 EB 2B 3A 3B 3E F5 ..f.s#r....+:;>.
006DF0: E5 2B 2B 56 2B 5E EB CD 47 1E E1 56 2B 5E EB E5 .++V+^..G..V+^..
006E00: 7E FE 4F 20 22 EB CD AC 32 38 33 DD 7E 05 FE 02 ~.O "...283.~...
006E10: 28 04 FE 03 20 11 E1 3E CD CD 83 08 CD D9 31 C1 (... ..>......1.
006E20: 3A 3B 3E CD D3 33 C9 E1 CD 76 25 3E CD CD 83 08 :;>..3...v%>....
006E30: 2A 96 3E CD AD 08 C1 3A 3B 3E CD D3 33 C9 E1 C1 *.>....:;>..3...
006E40: 3A 3B 3E CD D3 33 C9 47 7C B5 20 02 78 C9 04 3A :;>..3.G|. .x..:
006E50: 3B 3E 3D 3D 32 3B 3E 7E FE 36 28 0C 78 F5 CD 76 ;>==2;>~.6(.x..v
006E60: 25 3E E5 CD 83 08 F1 C9 2B E5 2B 2B 56 2B 5E 78 %>......+.++V+^x
006E70: EB CD 47 1E E1 F5 56 2B 5E EB 18 E2 CD B0 20 21 ..G...V+^..... !
006E80: 00 00 22 82 3E 22 86 3E CD F0 20 22 84 3E CD F0 ..".>".>.. ".>..
006E90: 20 22 88 3E EB 2B E5 2B 2B 2B 2B 56 2B 5E EB 3E ".>.+.++++V+^.>
006EA0: 00 CD E2 2C DD 21 82 3E ED 5B 37 3E CD BA 33 E1 ...,.!.>.[7>..3.
006EB0: 56 2B 5E E5 EB CD 6E 15 3E C3 CD 83 08 CD F0 20 V+^...n.>......
006EC0: E5 CD 58 16 ED 5B 37 3E DD 21 86 3E CD BA 33 E1 ..X..[7>.!.>..3.
006ED0: E3 2B 56 2B 5E EB CD 6E 15 E1 ED 5B 37 3E 73 23 .+V+^..n...[7>s#
006EE0: 72 CD C3 20 C9 CD 8A 20 CD B0 20 3E 00 18 08 CD r.. ... .. >....
006EF0: 8A 20 CD B0 20 3E FF 44 4D F5 3E 00 32 72 3E 32 . .. >.DM.>.2r>2
006F00: 3F 33 56 41 4C 4F 46 20 6D 75 73 74 20 63 6F 6E ?3VALOF must con
006F10: 74 61 69 6E 20 52 45 53 55 4C 54 49 D3 18 07 ED tain RESULTI....
006F20: 5B 37 3E CD BA 33 E1 22 70 3E E1 22 6E 3E DD E1 [7>..3."p>."n>..
006F30: C9 3E 21 CD 83 08 21 FF FF CD AD 08 C9 3E 21 CD .>!...!......>!.
006F40: 83 08 21 00 00 CD AD 08 C9 EB 2B 56 2B 5E 1A 21 ..!.......+V+^.!
006F50: 55 27 C3 F6 31 4F 7C 27 38 C7 28 26 DD 27 00 CD U'..1O|'8.(&.'..
006F60: 3F 33 49 6E 76 61 6C 69 64 20 61 70 70 6C 69 63 ?3Invalid applic
006F70: 61 74 69 6F 6E 20 6F 66 20 4C D6 C9 DD E5 CD AC ation of L......
006F80: 32 38 20 DD 7E 05 FE 04 28 D5 FE 02 30 18 21 CD 28 .~...(...0.!.
006F90: 27 CD CC 1C DD 6E 08 2D 26 00 CD AD 08 21 D2 27 '....n.-&....!.'
006FA0: CD CC 1C DD E1 C9 3E 21 CD 83 08 DD CB 06 46 20 ......>!......F
006FB0: 0C CD D9 31 21 D8 27 CD CC 1C DD E1 C9 DD 6E 07 ...1!.'.......n.
006FC0: DD 66 08 CB 3C CB 1D CD AD 08 DD E1 C9 04 DD E5 .f..<...........
006FD0: E1 11 05 19 CB 3C CB 1D 04 CB 3C CB 1D EB 2B 56 .....<....<...+V
006FE0: 2B 5E EB C3 76 25 EB 2B 56 2B 5E EB CD 76 25 21 +^..v%.+V+^..v%!
006FF0: F6 27 CD CC 1C C9 05 29 5E 23 56 EB EB 2B 56 2B .'.....)^#V..+V+
007000: 5E EB CD 76 25 21 0C 28 CD CC 1C C9 08 7C EE FF ^..v%!.(.....|..
007010: 67 7D EE FF 6F 3E 21 CD 83 08 2A 37 3E 01 03 00 g}..o>!...*7>...
007020: 7D CB 3C CB 1D 23 23 23 E6 01 20 03 01 04 00 CD }.<..###.. .....
007030: AD 08 3E C3 CD 83 08 CD F0 20 E5 CD 58 16 2A 37 ..>...... ..X.*7
007040: 3E 7D E6 01 28 03 CD 83 08 E1 C9 CD 15 28 1B 1A >}..(........(..
007050: 4F 06 00 03 1A CD 83 08 1B 0B 78 B1 20 F6 ED 5B O.........x. ..[
007060: 37 3E 73 23 72 C9 CD 15 28 E5 EB 2B 56 2B 5E CD 7>s#r...(..+V+^.
007070: 7B 28 E1 ED 5B 37 3E 73 23 72 C9 EB 7C B5 C8 7E {(..[7>s#r..|..~
007080: FE 36 20 10 2B 56 2B 5E 2B E5 EB CD 94 28 E1 56 .6 .+V+^+....(.V
007090: 2B 5E 18 E7 CD 19 30 CD AD 08 C9 CD E8 2B 21 A5 +^....0......+!.
0070A0: 28 CD CC 1C C9 0B A7 ED 52 21 FF FF 28 03 21 00 (.......R!..(.!.
0070B0: 00 CD E8 2B 21 BB 28 CD CC 1C C9 0B A7 ED 52 21 ...+!.(.......R!
0070C0: FF FF 20 03 21 00 00 D5 EB 2B 2B 2B 56 2B 5E CD .. .!....+++V+^.
0070D0: 3B 30 38 0A D1 CD E8 2B 3E 19 CD 83 08 C9 E1 D5 ;08....+>.......
0070E0: 2B 56 2B 5E EB CD 76 25 D1 21 EF 28 C3 0B 32 03 +V+^..v%.!.(..2.
0070F0: 01 00 0C 29 FF FF 12 29 00 00 17 29 3E 11 CD 83 ...)...)...)>...
007100: 82 3E 32 86 3E 3C 32 76 3E 3A 3B 3E 32 77 3E 32 .>2.><2v>:;>2w>2
007110: 73 3E 2A 37 3E 22 78 3E CD F0 20 22 74 3E CD F0 s>*7>"x>.. "t>..
007120: 20 22 84 3E CD F0 20 22 88 3E 1A CD B3 1A F1 EB ".>.. ".>......
007130: 2B 56 2B 5E 2B F5 E5 F5 EB CD E2 2C F1 ED 5B 37 +V+^+......,..[7
007140: 3E CD D1 1D E1 56 2B 5E EB CD 6E 15 3E C3 2A 78 >....V+^..n.>.*x
007150: 3E CD 80 2D F1 EE FF ED 5B 37 3E CD D1 1D ED 5B >..-....[7>....[
007160: 37 3E DD 21 72 3E CD BA 33 CD C3 20 CD 9D 20 C9 7>.!r>..3.. .. .
007170: EB 2B 56 2B 5E EB CD 76 25 3E EB CD 83 08 3A 6E .+V+^..v%>....:n
007180: 3E F6 80 32 6E 3E DD 21 6E 3E 21 8F 1F 18 50 CD >..2n>.!n>!...P.
007190: 3F 33 52 45 53 55 4C 54 49 53 20 6F 75 74 73 69 ?3RESULTIS outsi
0071A0: 64 65 20 61 20 56 41 4C 4F C6 C9 DD 21 7A 3E 21 de a VALO...!z>!
0071B0: 10 20 18 2B DD 21 76 3E 21 BD 1F 18 22 CD 3F 33 . .+.!v>!...".?3
0071C0: 4C 4F 4F 50 20 66 6F 75 6E 64 20 6F 75 74 73 69 LOOP found outsi
0071D0: 64 65 20 6C 6F 6F F0 C9 DD 21 72 3E 21 F4 1F DD de loo...!r>!...
0071E0: CB 00 76 28 01 E9 DD 46 01 3A 3B 3E CD DA 33 3E ..v(...F.:;>..3>
0071F0: C3 C3 6D 2D CD 3F 33 42 52 45 41 4B 20 66 6F 75 ..m-.?3BREAK fou
007200: 6E 64 20 6F 75 74 73 69 64 65 20 6C 6F 6F F0 C9 nd outside loo..
007210: CD 3F 33 52 45 54 55 52 4E 20 66 6F 75 6E 64 20 .?3RETURN found
007220: 6F 75 74 73 69 64 65 20 46 55 4E 43 2F 50 52 4F outside FUNC/PRO
007230: C3 C9 EB 2B 56 2B 5E EB CD 76 25 3E E9 CD 83 08 ...+V+^..v%>....
007240: C9 EB 2B 56 2B 5E E5 CD AC 32 38 35 DD 7E 05 FE ..+V+^...285.~..
007250: 08 28 1D FE 09 28 19 CD 3F 33 4C 61 62 65 6C 73 .(...(..?3Labels
007260: 20 6E 65 65 64 20 61 20 67 6C 6F 62 61 EC 18 11 need a globa...
007270: DD 36 05 08 ED 5B 37 3E DD 4E 07 DD 46 08 CD 61 .6...[7>.N..F..a
007280: 22 E1 2B 56 2B 5E EB C3 6E 15 C1 2A 76 3E E5 2A ".+V+^..n..*v>.*
007290: 78 3E E5 2A 72 3E E5 2A 74 3E E5 C5 C9 C1 E1 22 x>.*r>.*t>....."
0072A0: 74 3E E1 22 72 3E E1 22 78 3E E1 22 76 3E C5 C9 t>."r>."x>."v>..
0072B0: C1 2A 82 3E E5 2A 84 3E E5 2A 86 3E E5 2A 88 3E .*.>.*.>.*.>.*.>
0072C0: E5 C5 C9 C1 E1 22 88 3E E1 22 86 3E E1 22 84 3E .....".>.".>.".>
0072D0: E1 22 82 3E C5 C9 DD CB 00 46 28 0A DD 6E 02 DD .".>.....F(..n..
0072E0: 66 03 CD AD 08 C9 DD 6E 02 DD 66 03 CD 58 16 C9 f......n..f..X..
0072F0: D5 2A 6C 3E E5 23 23 22 6C 3E ED 5B 3D 3E A7 ED .*l>.##"l>.[=>..
007300: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
007310: 06 00 01 00 02 09 4E E5 06 00 C1 02 00 00 00 02 ......N.........
007320: 06 00 C6 02 00 00 00 02 06 00 C2 02 00 00 00 02 ................
007330: 06 00 C7 02 00 00 00 02 06 00 C3 02 00 00 00 02 ................
007340: 06 00 C8 02 00 00 00 02 06 00 C4 02 00 00 00 02 ................
007350: 06 00 C9 02 00 00 00 02 06 00 C5 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: 08 60 69 CD AD 08 3E 19 CD 83 08 C9 3E 23 CD 83 .`i...>.....>#..
007410: 08 C9 3E 2B CD 83 08 C9 D5 EB 2B 2B 2B 56 2B 5E ..>+......+++V+^
007420: CD 3B 30 38 0F D1 CD E8 2B 21 30 29 CD CC 1C C9 .;08....+!0)....
007430: 03 A7 ED 52 E1 D5 2B 56 2B 5E EB CD 76 25 D1 21 ...R..+V+^..v%.!
007440: 00 00 A7 ED 52 EB 21 EF 28 C3 0B 32 D5 EB 2B 2B ....R.!.(..2..++
007450: 2B 56 2B 5E CD 3B 30 38 10 D1 CD E8 2B 3E CD CD +V+^.;08....+>..
007460: 83 08 2A 90 3E CD AD 08 C9 E1 D5 2B 56 2B 5E EB ..*.>......+V+^.
007470: CD 76 25 D1 21 7A 29 C3 0B 32 0E 01 00 DC 29 02 .v%.!z)..2....).
007480: 00 C9 29 03 00 DD 29 04 00 C9 29 05 00 E3 29 06 ..)...)...)...).
007490: 00 E9 29 07 00 EF 29 08 00 C9 29 09 00 F5 29 0A ..)...)...)...).
0074A0: 00 FB 29 10 00 C9 29 20 00 C9 29 40 00 C9 29 00 ..)...) ..)@..).
0074B0: 01 C9 29 3E 11 CD 83 08 60 69 CD AD 08 3E CD CD ..)>....`i...>..
0074C0: 83 08 2A 90 3E CD AD 08 C9 3E 00 CB 38 CB 19 38 ..*.>....>..8..8
0074D0: 03 3C 18 F7 47 3E 29 CD 83 08 10 F9 C9 21 01 2A .<..G>)......!.*
0074E0: C3 CC 1C 21 06 2A C3 CC 1C 21 0C 2A C3 CC 1C 21 ...!.*...!.*...!
0074F0: 12 2A C3 CC 1C 21 19 2A C3 CC 1C 21 20 2A C3 CC .*...!.*...! *..
007500: 1C 04 54 5D 29 19 05 54 5D 29 29 19 05 54 5D 29 ..T])..T]))..T])
007510: 19 29 06 54 5D 29 19 29 19 06 54 5D 29 29 29 19 .).T]).)..T]))).
007520: 06 29 54 5D 29 29 19 CD E8 2B 3E CD CD 83 08 2A .)T]))...+>....*
007530: 92 3E CD AD 08 C9 CD 6F 2F 21 4A 2A CD CC 1C C9 .>.....o/!J*....
007540: CD 62 2F 21 4A 2A CD CC 1C C9 0B A7 ED 52 21 FF .b/!J*.......R!.
007550: FF 38 03 21 00 00 CD 6F 2F 21 6A 2A CD CC 1C C9 .8.!...o/!j*....
007560: CD 62 2F 21 6A 2A CD CC 1C C9 0B A7 ED 52 21 FF .b/!j*.......R!.
007570: FF 30 03 21 00 00 CD E8 2B 3E CD CD 83 08 2A 92 .0.!....+>....*.
007580: 3E CD AD 08 3E EB CD 83 08 C9 CD C7 28 21 F6 27 >...>.......(!.'
007590: CD CC 1C C9 CD E8 2B 21 9E 2A CD CC 1C C9 0A 7C ......+!.*.....|
0075A0: AA EE FF 67 7D AB EE FF 6F CD E8 2B 21 B3 2A CD ...g}...o..+!.*.
0075B0: CC 1C C9 06 7C AA 67 7D AB 6F CD E8 2B 21 C4 2A ....|.g}.o..+!.*
0075C0: CD CC 1C C9 06 7C A2 67 7D A3 6F CD E8 2B 21 D5 .....|.g}£o..+!.
0075D0: 2A CD CC 1C C9 06 7C B2 67 7D B3 6F CD E8 2B 3E *.....|.g}.o..+>
0075E0: CD CD 83 08 2A 9E 3E CD AD 08 C9 CD E8 2B 3E CD ....*.>......+>.
0075F0: CD 83 08 2A A0 3E CD AD 08 C9 CD B0 20 DD E5 D5 ...*.>...... ...
007600: 52 20 33 3A 3C 3E 47 DD 7E 04 B8 28 24 A7 28 21 R 3:<>G.~..($.(!
007610: CD 64 33 44 79 6E 61 6D 69 63 20 66 72 65 65 20 .d3Dynamic free
007620: 76 61 72 69 61 62 6C 65 20 75 73 65 64 2C A0 37 variable used,.7
007630: C9 DD E5 E1 A7 C9 DD 6E 00 DD 66 01 C3 AF 32 3E .......n..f...2>
007640: 00 32 C7 3E CD 8D 33 E1 7E 23 CB 7F 20 05 CD D6 .2.>..3.~#.. ...
007650: 07 18 F5 E6 7F CD D6 07 E5 2A 5B 3E 23 22 5B 3E .........*[>#"[>
007660: CD 0D 34 C9 3E 00 32 C7 3E CD 8D 33 E1 D5 7E 23 ..4.>.2.>..3..~#
007670: CB 7F 20 05 CD D6 07 18 F5 E6 7F CD D6 07 E3 CD .. .............
007680: 3E 34 2A 5B 3E 23 22 5B 3E CD 0D 34 C9 3E 0D CD >4*[>#"[>..4.>..
007690: 12 0C 3E 0A CD 12 0C C9 42 4B E5 DD E1 DD 7E 06 ..>.....BK....~.
0076A0: A7 C0 DD 5E 07 DD 56 08 DD 71 07 DD 70 08 DD 36 ...^..V..q..p..6
0076B0: 06 01 EB 7C B5 C8 71 23 70 C9 DD CB 00 46 C0 DD ...|..q#p....F..
0076C0: CB 00 C6 DD 6E 02 DD 66 03 DD 73 02 DD 72 03 42 ....n..f..s..r.B
0076D0: 4B 18 E0 4F 78 32 3B 3E 47 79 4F 78 91 C8 FE 02 K..Ox2;>GyOx....
0076E0: 20 06 3E E1 CD 83 08 C9 FE 04 20 0B 3E E1 CD 83 .>....... .>...
0076F0: 08 3E E1 CD 83 08 C9 6F 26 00 3E 21 CD 83 08 CD .>.....o&.>!....
007700: AD 08 3E 39 CD 83 08 3E F9 CD 83 08 C9 21 28 34 ..>9...>.....!(4
007710: CD 24 08 2A 55 3E 7C B5 28 07 2B 56 2B 5E EB 18 .$.*U>|.(.+V+^..
007720: 03 21 29 34 CD 3E 34 C9 20 69 6E A0 67 6C 6F 62 .!)4.>4. in.glob
007730: 61 6C 20 64 65 66 69 6E 69 74 69 6F 6E F3 23 23 al definition.##
007740: 23 CD 24 08 C9 21 6C 34 18 0A E1 CD 8D 33 CD 24 #.$..!l4.....3.$
007750: 08 21 6B 34 ED 7B 22 3E CD 24 08 3E 00 32 C7 3E .!k4.{">.$.>.2.>
007760: 0E 6C 11 00 FF CD 05 00 C3 84 34 2E 0D 43 6F 6D .l........4..Com
007770: 70 69 6C 61 74 69 6F 6E 20 61 62 61 6E 64 6F 6E pilation abandon
007780: 65 64 2E 00 2A 5B 3E 7C B5 28 08 0E 6C 11 00 FF ed..*[>|.(..l...
007790: CD 05 00 CD 8D 33 CD 2B 0C FE 30 D2 00 00 21 AA .....3.+..0...!.
0077A0: 34 CD 24 08 CD FC 0B C3 00 00 50 6C 65 61 73 65 4.$.......Please
0077B0: 20 69 6E 73 65 72 74 20 73 79 73 74 65 6D 20 64 insert system d
0077C0: 69 73 63 20 74 68 65 6E 20 70 72 65 73 73 20 61 isc then press a
0077D0: 6E 79 20 6B 65 79 00 E5 CD 56 35 7A B3 CA FE 34 ny key...V5z...4
0077E0: E1 E5 D5 13 13 13 1A BE 20 08 FE 80 30 0C 23 13 ........ ...0.#.
0077F0: 18 F4 D1 EB 23 5E 23 56 18 E1 E1 D1 A7 C9 E3 54 ....#^#V.......T
007800: DD E1 21 00 00 22 82 3E 22 86 3E CD F0 20 22 84 ..!..".>".>.. ".
007810: 3E CD F0 20 22 88 3E DD 6E FA DD 66 FB 3E 00 DD >.. ".>.n..f.>..
007820: E5 CD E2 2C DD 21 82 3E ED 5B 37 3E CD BA 33 DD ...,.!.>.[7>..3.
007830: E1 DD 6E FE DD 66 FF CD 76 25 3E C3 CD 83 08 CD ..n..f..v%>.....
007840: F0 20 E5 CD 58 16 DD E5 DD 21 86 3E ED 5B 37 3E . ..X....!.>.[7>
007850: CD BA 33 DD E1 DD 6E FC DD 66 FD CD 76 25 E1 ED ..3...n..f..v%..
007860: 5B 37 3E 73 23 72 DD E1 CD C3 20 C9 EB CD 7B 2B [7>s#r.... ...{+
007870: 21 77 2B CD CC 1C C9 03 6E 26 00 DD E5 E5 DD E1 !w+.....n&......
007880: 06 06 21 B8 3E 5E 23 56 23 D5 10 F9 3A C4 3E F5 ..!.>^#V#...:.>.
007890: 21 CF 2B 11 B8 3E 01 0D 00 ED B0 DD E5 E1 DD 21 !.+..>.........!
0078A0: B8 3E 2B 56 2B 5E 2B DD 72 06 DD 73 05 56 2B 5E .>+V+^+.r..s.V+^
0078B0: DD 72 09 DD 73 08 21 C4 3E CD 76 25 F1 32 C4 3E .r..s.!.>.v%.2.>
0078C0: 06 06 21 C4 3E D1 2B 72 2B 73 10 F9 DD E1 C9 02 ..!.>.+r+s......
0078D0: 00 4D BA 3E 00 00 39 00 00 BF 3E 35 EB 2B 56 2B .M.>..9...>5.+V+
0078E0: 5E 2B 46 2B 6E 60 18 0B EB 2B 46 2B 4E 2B 56 2B ^+F+n`...+F+N+V+
0078F0: 5E 60 69 7E FE 4D 28 32 FE 4F 28 2E 1A FE 4D 28 ^`i~.M(2.O(...M(
007900: 4D FE 4F 28 49 E5 EB 7E CD D6 2C 30 0B EB CD 88 M.O(I..~..,0....
007910: 26 3E D5 CD 83 08 18 08 CD 76 25 3E E5 CD 83 08 &>.......v%>....
007920: E1 CD 76 25 3E D1 CD 83 08 C9 1A FE 4D 28 1F FE ..v%>.......M(..
007930: 4F 28 1B E5 EB 7E CD D6 2C 30 06 EB CD 88 26 18 O(...~..,0....&.
007940: 08 CD 76 25 3E EB CD 83 08 E1 CD 76 25 C9 D5 CD ..v%>......v%...
007950: 76 25 D1 CD 57 2C C9 1A FE 4F 28 11 3E 11 CD 83 v%..W,...O(.>...
007960: 08 1B 1B 1A CD 83 08 13 1A CD 83 08 C9 DD E5 CD ................
007970: AC 32 38 18 DD 7E 05 FE 04 20 14 3E 11 CD 83 08 .28..~... .>....
007980: DD 7E 07 CD 83 08 DD 7E 08 CD 83 08 DD E1 C9 FE .~.....~........
007990: 02 30 24 3E DD CD 83 08 3E 56 CD 83 08 DD 7E 08 .0$>....>V....~.
0079A0: CD 83 08 3E DD CD 83 08 3E 5E CD 83 08 DD 7E 08 ...>....>^....~.
0079B0: 3D CD 83 08 DD E1 C9 FE 04 30 0B 3E 11 CD 83 08 =........0.>....
0079C0: CD D9 31 DD E1 C9 3E ED CD 83 08 3E 5B CD 83 08 ..1...>....>[...
0079D0: CD D9 31 DD E1 C9 FE 4B 28 06 FE 4C 28 02 A7 C9 ..1....K(..L(...
0079E0: 37 C9 DD E5 47 3A 63 3E F5 78 32 63 3E EB 21 FC 7...G:c>.x2c>.!.
0079F0: 2C 1A CD F6 31 F1 32 63 3E DD E1 C9 19 B5 2D 18 ,...1.2c>.....-.
007A00: 5D 01 03 00 03 7E 23 CB 7F 28 F9 2A 1C 3E 09 E5 ]....~#..(.*.>..
007A10: 21 CE FF 39 44 4D E1 A7 ED 42 38 17 CD 4A 34 4F !..9DM...B8..J4O
007A20: 75 74 20 6F 66 20 73 79 6D 62 6F 6C 20 73 70 61 ut of symbol spa
007A30: 63 65 00 EB E3 ED 5B 1C 3E 72 2B 73 EB D1 E5 36 ce....[.>r+s...6
007A40: 00 23 36 00 23 36 00 23 1A 77 23 13 FE 80 38 F8 .#6.#6.#.w#...8.
007A50: 22 1C 3E E1 37 C9 0E 00 7E 81 4F 7E 23 FE 80 38 ".>.7...~.O~#..8
007A60: F7 79 E6 0F CB 27 4F 06 00 21 40 3C 09 5E 23 56 .y...'O..!@<.^#V
007A70: C9 21 CE FF 39 44 4D 2A 1C 3E A7 ED 42 D2 1C 35 .!..9DM*.>..B..5
007A80: 3E 00 32 30 3E 3A 21 3E FE 20 20 05 CD 1A 06 18 >.20>:!>. .....
007A90: F4 FE 09 28 F7 FE 0D 20 20 2A 31 3E 23 22 31 3E ...(... *1>#"1>
007AA0: 3E FF 32 30 3E 3A 66 3E 3D 32 66 3E CC 97 38 CD >.20>:f>=2f>..8.
007AB0: 1A 06 FE 3E 20 CF C3 C8 36 CD EA 3A 30 24 CD B3 ...> ...6..:0$..
007AC0: 39 21 60 3C CD D7 34 22 1F 3E 30 07 3E 4F 77 32 9!`<..4".>0.>Ow2
007AD0: 1E 3E C9 7E 32 1E 3E FE 13 CA E3 38 FE 53 CA FE .>.~2.>....8.S..
007AE0: 38 C9 CD F9 3A 30 11 D6 30 6F 26 00 CD D2 39 22 8...:0..0o&...9"
007AF0: 1F 3E 3E 4D 32 1E 3E C9 FE 23 20 7A 3E 4D 32 1E .>>M2.>..# z>M2.
007B00: 3E CD 1A 06 FE 62 20 14 CD 1A 06 CD D6 3A 38 52 >....b ......:8R
007B10: 6F 26 00 CD FB 39 22 1F 3E 3E 4D C9 FE 6F 20 14 o&...9".>>M..o .
007B20: CD 1A 06 CD D6 3A 38 3A 6F 26 00 CD E7 39 22 1F .....:8:o&...9".
007B30: 3E 3E 4D C9 FE 78 20 14 CD 1A 06 CD D6 3A 38 22 >>M..x ......:8"
007B40: 6F 26 00 CD 0D 3A 22 1F 3E 3E 4D C9 FE 30 38 12 o&...:".>>M..08.
007B50: FE 38 30 0E D6 30 6F 26 00 CD E7 39 22 1F 3E 3E .80..0o&...9".>>
007B60: 4D C9 CD 76 06 45 78 70 65 63 74 69 6E 67 20 6E M..v.Expecting n
007B70: 75 6D 62 65 72 00 FE 27 20 21 CD 29 06 CD 29 3A umber..' !.)..):
007B80: 6F 26 00 30 02 26 01 22 1F 3E CD 1A 06 FE 27 C2 o&.0.&.".>....'.
007B90: 7D 38 CD 1A 06 3E 4D 32 1E 3E C9 21 C6 38 47 7E }8...>M2.>.!.8G~
007BA0: A7 28 10 B8 20 09 23 CD 1A 06 7E 32 1E 3E C9 23 .(.. .#...~2.>.#
007BB0: 23 18 EC 78 FE 2F 20 51 CD 1A 06 FE 5C 20 05 3E #..x./ Q....\ .>
007BC0: 1B C3 8A 37 FE 2F 20 0A CD 1A 06 FE 0D 20 F9 C3 ...7./ ...... ..
007BD0: 85 35 FE 2A 28 06 3E 3B 32 1E 3E C9 CD 1A 06 FE .5.*(.>;2.>.....
007BE0: 1A CA CA 37 FE 0D 20 07 2A 31 3E 23 22 31 3E FE ...7.. .*1>#"1>.
007BF0: 2A 20 E9 CD 1A 06 FE 1A CA CA 37 FE 2A 28 F4 FE * ........7.*(..
007C00: C6 2D 10 CD 2D 11 D4 2D 08 DB 2D 1F 4A 2E 1B 98 .-..-..-..-.J...
007C10: 2E 1A DE 2E 20 24 2F 2E 74 2E 0C 86 2E 4D 52 2F .... $/.t....MR/
007C20: 4F 52 2F 00 EB CD 76 25 21 34 2D CD CC 1C 3E CA OR/...v%!4-...>.
007C30: CD 37 2D C9 02 7C B5 F5 3A 63 3E A7 28 14 21 59 .7-..|..:c>.(.!Y
007C40: 2D C1 7E B8 28 04 23 23 18 F8 23 7E DD 21 82 3E -.~.(.##..#~.!.>
007C50: 18 1B F1 DD 21 86 3E 18 14 C2 CA CA C2 D2 DA DA ....!.>.........
007C60: D2 C3 C3 C2 20 CA 28 D2 30 DA 38 C3 18 DD CB 00 .... .(.0.8.....
007C70: 46 20 07 CD 83 08 CD D6 20 C9 DD 6E 02 DD 66 03 F ...... ..n..f.
007C80: F5 44 4D ED 5B 37 3E A7 ED 52 11 7E 00 19 7C A7 .DM.[7>..R.~..|.
007C90: 20 19 F1 E5 21 63 2D BE 28 04 23 23 18 F9 23 7E ...!c-.(.##..#~
007CA0: CD 83 08 E1 7D C6 80 CD 83 08 C9 F1 CD 83 08 60 ....}..........`
007CB0: 69 CD AD 08 C9 CD 62 2F 3E D2 21 70 2E F5 CD CC i.....b/>.!p....
007CC0: 1C F1 CD 37 2D C9 CD 6F 2F 3E DA 18 ED CD 62 2F ...7-..o/>....b/
007CD0: 3E DA 18 E6 CD 6F 2F 3E D2 18 DF 3E C2 F5 CD 4E >....o/>...>...N
007CE0: 2E D5 DD E1 D5 DD 56 FD DD 5E FC CD 3B 30 30 4F ......V..^..;00O
007CF0: E1 EB 7C B5 20 4A EB 2B 56 2B 5E 1A FE 4F 20 31 ..|. J.+V+^..O 1
007D00: D5 CD AC 32 D1 38 34 DD 7E 05 FE 02 30 23 3E DD ...2.84.~...0#>.
007D10: CD 83 08 3E 7E CD 83 08 DD 7E 08 CD 83 08 3E DD ...>~....~....>.
007D20: CD 83 08 3E B6 CD 83 08 DD 7E 08 3D CD 83 08 18 ...>.....~.=....
007D30: 0A EB CD 76 25 21 34 2D CD CC 1C F1 C3 37 2D D1 ...v%!4-.....7-.
007D40: CD E8 2B 21 70 2E F1 C3 BD 2D 3E CA 18 8F D5 EB ..+!p....->.....
007D50: 2B 56 2B 5E CD 3B 30 38 03 D1 A7 C9 E1 E5 2B 56 +V+^.;08......+V
007D60: 2B 5E 2B 46 72 2B 4E 73 23 23 71 23 70 D1 37 C9 +^+Fr+Ns##q#p.7.
007D70: 03 A7 ED 52 3A 63 3E A7 C8 3E C3 CD 83 08 DD 21 ...R:c>..>.....!
007D80: 82 3E CD D6 20 C9 3A 63 3E A7 C0 3E C3 CD 83 08 .>.. .:c>..>....
007D90: DD 21 86 3E CD D6 20 C9 2A 82 3E E5 2A 84 3E E5 .!.>.. .*.>.*.>.
007DA0: 3A 63 3E F5 21 00 00 22 82 3E CD F0 20 22 84 3E :c>.!..".>.. ".>
007DB0: EB 2B 56 2B 5E E5 EB 3E 00 CD E2 2C ED 5B 37 3E .+V+^..>...,.[7>
007DC0: DD 21 82 3E CD BA 33 D1 F1 32 63 3E E1 22 84 3E .!.>..3..2c>.".>
007DD0: E1 22 82 3E EB 2B 56 2B 5E EB CD E2 2C C9 2A 86 .".>.+V+^...,.*.
007DE0: 3E E5 2A 88 3E E5 3A 63 3E F5 21 00 00 22 86 3E >.*.>.:c>.!..".>
007DF0: CD F0 20 22 88 3E EB 2B 56 2B 5E E5 EB 3E FF CD .. ".>.+V+^..>..
007E00: 2F 20 D9 CD 1A 06 C3 85 35 FE 5C 20 19 CD 1A 06 / ......5.\ ....
007E10: FE 2F 20 04 3E 1A 18 72 FE 3D 20 04 3E 1F 18 6A ./ .>..r.= .>..j
007E20: 3E 20 32 1E 3E C9 FE 3C 20 19 CD 1A 06 FE 3D 20 > 2.>..< .....=
007E30: 04 3E 18 18 55 FE 3C 20 04 3E 1D 18 4D 3E 19 32 .>..U.< .>..M>.2
007E40: 1E 3E C9 FE 3E 20 19 CD 1A 06 FE 3D 20 04 3E 10 .>..> .....= .>.
007E50: 18 38 FE 3E 20 04 3E 25 18 30 3E 11 32 1E 3E C9 .8.> .>%.0>.2.>.
007E60: FE 2D 20 11 CD 1A 06 FE 3E 20 04 3E 3C 18 1B 3E .- .....> .><..>
007E70: 3D 32 1E 3E C9 FE 3A 20 1A CD 1A 06 FE 3D 20 04 =2.>..: .....= .
007E80: 3E 3E 18 06 3E 3F 32 1E 3E C9 F5 CD 1A 06 F1 32 >>..>?2.>......2
007E90: 1E 3E C9 FE 24 20 2F CD 1A 06 FE 28 20 0F 3E 24 .>..$ /....( .>$
007EA0: CD B3 39 21 60 3C CD D7 34 3E 48 18 12 FE 29 C2 ..9!`<..4>H...).
007EB0: 6C 38 3E 24 CD B3 39 21 60 3C CD D7 34 3E 49 32 l8>$..9!`<..4>I2
007EC0: 1E 3E 22 1F 3E C9 FE 2E 20 25 2A CB 3E 2B 7E 32 .>".>... %*.>+~2
007ED0: 32 3E 2B 7E 32 31 3E 2B 7E 32 21 3E 11 A3 00 A7 2>+~21>+~2!>.£..
007EE0: ED 52 22 CB 3E A7 C2 85 35 3E 40 32 1E 3E C9 FE .R".>...5>@2.>..
007EF0: 1A 28 D7 FE 3D 20 1B CD 1A 06 FE 3E 20 05 3E 10 .(..= .....> .>.
007F00: C3 8A 37 FE 3C 20 05 3E 18 C3 8A 37 3E 08 32 1E ..7.< .>...7>.2.
007F10: 3E C9 FE 22 20 3D 21 C6 3C 0E 00 CD 29 06 FE 22 >.." =!.<...).."
007F20: 20 09 21 C6 3C 71 3E 4E C3 8A 37 CD 29 3A 30 05 .!.<q>N..7.):0.
007F30: CD 3A 38 3E 0A CD 3A 38 18 E1 23 0C 77 79 A7 C0 .:8>..:8..#.wy..
007F40: CD 76 06 53 74 72 69 6E 67 20 74 6F 6F 20 6C 6F .v.String too lo
007F50: 6E 67 00 FE 7E 20 10 CD 1A 06 FE 3D 3E 1F CA 8A ng..~ .....=>...
007F60: 37 3E 20 32 1E 3E C9 3E 20 32 21 3E CD 76 06 42 7> 2.>.> 2!>.v.B
007F70: 61 64 20 63 68 61 72 61 63 74 65 72 00 CD 76 06 ad character..v.
007F80: 42 61 64 20 63 68 61 72 61 63 74 65 72 20 63 6F Bad character co
007F90: 6E 73 74 61 6E 74 00 3E 05 32 66 3E CD 02 0C D0 nstant.>.2f>....
007FA0: FE EF 28 F8 CD C0 38 C0 CD FC 0B FE EF 28 F9 CD ..(...8......(..
007FB0: C0 38 C0 CD 4A 34 42 72 6F 6B 65 6E 20 69 6E 00 .8..J4Broken in.
007FC0: FE FC C8 FE 03 C9 2B 35 2C 36 3B 37 40 17 26 1B ......+5,6;7@.&.
007FD0: 7C 1A 21 38 2A 39 28 41 29 42 5B 41 5D 42 25 51 |.!8*9(A)B[A]B%Q
007FE0: 3F 52 00 CD 71 35 FE 4E 28 0B CD 76 06 42 61 64 ?R..q5.N(..v.Bad
007FF0: 20 47 45 54 00 21 C6 3C CD B6 08 C3 85 35 CD AB GET.!.<.....5..
008000: E2 2C ED 5B 37 3E DD 21 86 3E CD BA 33 D1 F1 32 .,.[7>.!.>..3..2
008010: 63 3E E1 22 88 3E E1 22 86 3E EB 2B 56 2B 5E EB c>.".>.".>.+V+^.
008020: CD E2 2C C9 CD 35 2F 3A 63 3E EE FF EB 2B 56 2B ..,..5/:c>...+V+
008030: 5E EB CD E2 2C 2A 82 3E ED 4B 86 3E ED 43 82 3E ^...,*.>.K.>.C.>
008040: 22 86 3E 2A 84 3E ED 4B 88 3E ED 43 84 3E 22 88 ".>*.>.K.>.C.>".
008050: 3E C9 D5 CD 3B 30 E1 D2 25 2D 7A B3 CA 86 2E C3 >...;0..%-z.....
008060: 74 2E EB 2B 46 2B 4E 2B 56 2B 5E 60 69 18 0A EB t..+F+N+V+^`i...
008070: 2B 56 2B 5E 2B 46 2B 6E 60 D5 E5 CD 3B 30 38 1C +V+^+F+n`...;08.
008080: D1 D5 CD 3B 30 38 58 E1 D1 CD F3 2B 21 93 2F CD ...;08X....+!./.
008090: CC 1C C9 08 7C EE 80 67 7A EE 80 57 E1 C1 D5 E5 ....|..gz..W....
0080A0: EB CD 3B 30 38 1D E1 CD 76 25 21 BE 2F CD CC 1C ..;08...v%!./...
0080B0: 3E 11 CD 83 08 E1 7C EE 80 67 CD AD 08 C9 04 7C >.....|..g.....|
0080C0: EE 80 67 3E 21 CD 83 08 7A EE 80 67 6B CD AD 08 ..g>!...z..gk...
0080D0: 3E 11 CD 83 08 E1 E1 7C EE 80 67 CD AD 08 C9 E1 >......|..g.....
0080E0: E1 D5 7E FE 4F 28 15 CD D6 2C 30 06 EB CD 88 26 ..~.O(...,0....&
0080F0: 18 0E CD 76 25 3E EB CD 83 08 18 04 EB CD 57 2C ...v%>........W,
008100: 21 14 30 CD CC 1C 3E 21 CD 83 08 E1 7C EE 80 67 !.0...>!....|..g
008110: CD AD 08 C9 04 7A EE 80 57 EB CD 3B 30 EB D8 CD .....z..W..;0...
008120: 3F 33 4E 65 65 64 20 63 6F 6E 73 74 61 6E 74 20 ?3Need constant
008130: 65 78 70 72 65 73 73 69 6F EE C9 1A 21 42 30 C3 expressio...!B0.
008140: F6 31 4F 6C 30 4D 8C 30 35 A8 30 3D B0 30 39 BA .1Ol0M.05.0=.09.
008150: 30 3B C4 30 24 CE 30 1B D9 30 1A E5 30 1D 0E 31 0;.0$.0..0..0..1
008160: 25 FB 30 2E F1 30 0C F6 30 00 A7 C9 DD E5 CD AC %.0..0..0.......
008170: 32 38 15 DD 7E 05 FE 04 28 04 DD E1 A7 C9 DD 5E 28..~...(......^
008180: 07 DD 56 08 DD E1 37 C9 DD E1 A7 C9 EB 2B 56 2B ..V...7......+V+
008190: 5E 37 C9 EB 2B 56 2B 5E E5 CD 3B 30 E1 D0 D5 2B ^7..+V+^..;0...+
0081A0: 56 2B 5E CD 3B 30 E1 C9 CD 93 30 D0 19 EB 37 C9 V+^.;0....0...7.
0081B0: CD 93 30 D0 A7 ED 52 EB 37 C9 CD 93 30 D0 CD 21 ..0...R.7...0..!
0081C0: 31 EB 37 C9 CD 93 30 D0 CD 3D 31 EB 37 C9 CD 93 1.7...0..=1.7...
0081D0: 30 D0 CD 3D 31 60 69 37 C9 CD 93 30 D0 7C A2 57 0..=1`i7...0.|.W
0081E0: 7D A3 5F 37 C9 CD 93 30 D0 7C B2 57 7D B3 5F 37 }£_7...0.|.W}._7
0081F0: C9 11 FF FF 37 C9 11 00 00 37 C9 CD 93 30 D0 7A ....7....7...0.z
008200: 39 18 03 CD A8 39 21 5D 3E FE 6C CA 62 39 21 C5 9....9!]>.l.b9!.
008210: 3E FE 62 20 44 CD A8 39 FE 2B 28 0D FE 2D C2 6E >.b D..9.+(..-.n
008220: 39 3E 00 32 C5 3E C3 89 39 3E FF 32 C5 3E CD A8 9>.2.>..9>.2.>..
008230: 39 FE 2C CA 8C 39 FE 3B CA 8C 39 FE 0D CA 8C 39 9.,..9.;..9....9
008240: FE 1A CA 8C 39 CD 71 35 FE 4D C2 6E 39 3A 1F 3E ....9.q5.M.n9:.>
008250: 32 C8 3E CD AB 39 C3 8C 39 21 C6 3E FE 73 28 02 2.>..9..9!.>.s(.
008260: 18 0C E5 CD A8 39 FE 2B 28 17 FE 2D 28 17 CD 76 .....9.+(..-(..v
008270: 06 42 61 64 20 6F 70 74 69 6F 6E 20 6C 69 6E 65 .Bad option line
008280: 00 3E FF 18 02 3E 00 E1 77 CD A8 39 FE 3B CA A2 .>...>..w..9.;..
008290: 39 FE 0D CA 71 35 FE 1A CA 71 35 FE 2C CA 03 39 9...q5...q5.,..9
0082A0: 18 CC CD 1A 06 C3 71 35 CD 1A 06 3A 21 3E FE 20 ......q5...:!>.
0082B0: 28 F6 C9 21 60 3C 77 23 CD 1A 06 CD F5 3A 38 08 (..!`<w#.....:8.
0082C0: FE 2E 28 04 FE 5F 20 04 77 23 18 EC 2B 7E F6 80 ..(.._ .w#..+~..
0082D0: 77 C9 CD 1A 06 CD F9 3A D0 29 5D 54 29 29 19 D6 w......:.)]T))..
0082E0: 30 5F 16 00 19 18 EB CD 1A 06 FE 30 D8 FE 38 D0 0_.........0..8.
0082F0: 29 29 29 D6 30 5F 16 00 19 18 EC CD 1A 06 FE 30 ))).0_.........0
008300: D8 FE 32 D0 29 D6 30 5F 16 00 19 18 EE CD 1A 06 ..2.).0_........
008310: CD F9 3A 38 08 FE 61 D8 FE 67 D0 D6 27 D6 30 29 ..:8..a..g..'.0)
008320: 29 29 29 5F 16 00 19 18 E4 FE 0D CA 7D 38 FE 2A )))_........}8.*
008330: 37 3F C0 E5 D5 CD 29 06 21 B2 3A 5F 7E 23 BB 28 7?....).!.:_~#.(
008340: 29 A7 20 F8 7B FE 78 CA 94 3A FE 58 CA 94 3A 5F ). .{.x..:.X..:_
008350: 21 B7 3A 7E A7 CA 7D 38 BB 28 04 23 23 18 F4 23 !.:~..}8.(.##..#
008360: 7E A7 20 03 3E 0D 37 D1 E1 C9 7B FE 0D 20 07 2A ~. .>.7...{.. .*
008370: 31 3E 23 22 31 3E CD 29 06 FE 2A 28 0F 21 B2 3A 1>#"1>.)..*(.!.:
008380: 5F 7E 23 A7 CA 7D 38 BB 28 E0 18 F5 D1 E1 CD 29 _~#..}8.(......)
008390: 06 C3 29 3A CD 1A 06 CD D6 3A DA 7D 38 87 87 87 ..):.....:.}8...
0083A0: 87 F5 CD 1A 06 CD D6 3A DA 7D 38 47 F1 B0 D1 E1 .......:.}8G....
0083B0: A7 C9 20 09 0D 0A 00 27 27 2A 2A 22 22 4E 00 6E .. ....''**""N.n
0083C0: 00 54 09 74 09 53 20 73 20 42 08 62 08 50 0C 70 .T.t.S s B.b.P.p
0083D0: 0C 43 0D 63 0D 00 CD F9 3A 38 0B FE 61 D8 FE 67 .C.c....:8..a..g
0083E0: 38 02 37 C9 D6 27 D6 30 A7 C9 FE 61 38 05 FE 7B 8.7..'.0...a8..{
0083F0: D0 37 C9 A7 C9 CD EA 3A D8 FE 30 38 05 FE 3A D0 .7.....:..08..:.
008400: B3 28 07 CB 3C CB 1D 1B 18 F5 54 5D 37 C9 CD 93 .(..<.....T]7...
008410: 30 D0 7A B3 28 07 CB 25 CB 14 1B 18 F5 54 5D 37 0.z.(..%.....T]7
008420: C9 CD 67 31 F5 78 06 10 29 CB 11 17 30 01 19 10 ..g1.x..)...0...
008430: F7 F1 CB 7F C8 EB 21 00 00 A7 ED 52 C9 CD 67 31 ......!....R..g1
008440: F5 3E 10 CB 21 CB 10 CB 15 CB 14 A7 ED 52 38 03 .>..!........R8.
008450: 03 18 01 19 3D 20 EC 50 59 EB F1 A7 C8 7C EE FF ....= .PY....|..
008460: 67 7D EE FF 6F 23 C9 44 4D 21 00 00 3E 00 CB 78 g}..o#.DM!..>..x
008470: 28 0A A7 ED 42 44 4D 21 00 00 3E 80 CB 7A C8 EE (...BDM!..>..z..
008480: 80 A7 ED 52 EB 21 00 00 C9 6F 3E DD CD 83 08 3E ...R.!...o>....>
008490: 74 CD 83 08 7D CD 83 08 3E DD CD 83 08 3E 75 CD t...}...>....>u.
0084A0: 83 08 7D 3D CD 83 08 C9 DD 7E 05 FE 02 30 07 DD ..}=.....~...0..
0084B0: 7E 08 CD 89 31 C9 FE 08 38 09 3E 22 CD 83 08 CD ~...1...8.>"....
0084C0: D9 31 C9 CD 3F 33 49 6E 76 61 6C 69 64 20 61 73 .1..?3Invalid as
0084D0: 73 69 67 6E 6D 65 6E F4 C9 DD 7E 06 A7 28 0D DD signmen...~..(..
0084E0: 7E 07 CD 83 08 DD 7E 08 CD 83 08 C9 DD 6E 07 DD ~.....~......n..
0084F0: 66 08 CD 58 16 C9 4F 7E A7 20 02 23 E9 B9 20 06 f..X..O~. .#.. .
008500: 23 4E 23 46 C5 C9 23 23 23 18 EC 7E 23 42 4B 5E #N#F..###..~#BK^
008510: 23 56 23 EB A7 ED 42 28 07 EB 23 23 3D 20 F0 E9 #V#...B(..##= ..
008520: EB 5E 23 56 EB E9 2A 1C 3E 01 09 00 09 44 4D 21 .^#V..*.>....DM!
008530: CE FF 39 A7 ED 42 DA 1C 35 60 69 ED 4B 3F 3E A7 ..9..B..5`i.K?>.
008540: ED 42 38 33 D5 2A 3F 3E ED 4B 41 3E 78 B1 28 1C .B83.*?>.KA>x.(.
008550: 0B 09 54 5D 01 5A 00 09 44 4D 21 CE FF 39 A7 ED ..T].Z..DM!..9..
008560: 42 38 38 60 69 ED 4B 41 3E EB ED B8 2A 3F 3E 11 B88`i.KA>...*?>.
008570: 5A 00 19 22 3F 3E D1 2A 1C 3E E5 ED 4B 39 3E 71 Z.."?>.*.>..K9>q
008580: 23 70 23 73 23 72 23 3A 3C 3E 77 11 05 00 19 22 #p#s#r#:<>w...."
008590: 1C 3E E1 22 39 3E 11 05 00 19 C9 CD 4A 34 4F 75 .>."9>......J4Ou
0085A0: 74 20 6F 66 20 6D 65 6D 6F 72 79 00 2A 39 3E 7C t of memory.*9>|
0085B0: B5 20 42 2A 1C 3E E5 D5 2A 37 3E 7D E6 01 20 0C . B*.>..*7>}.. .
0085C0: 3E 18 CD 83 08 3E 02 CD 83 08 18 0F 3E C3 CD 83 >....>......>...
0085D0: 08 2A 37 3E 23 23 23 23 CD AD 08 2A 37 3E 22 45 .*7>####...*7>"E
0085E0: 3E 3E 00 CD 83 08 CD 83 08 D1 3E 09 CD 6A 1D E1 >>........>..j..
0085F0: E5 DD E1 A7 C9 E5 DD E1 DD 6E 02 DD 66 03 A7 ED .........n..f...
008600: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
008610: 07 00 01 00 02 09 50 E5 07 00 C1 02 00 00 00 02 ......P.........
008620: 07 00 C6 02 00 00 00 02 07 00 C2 02 00 00 00 02 ................
008630: 07 00 C7 02 00 00 00 02 07 00 C3 02 00 00 00 02 ................
008640: 07 00 C8 02 00 00 00 02 07 00 C4 02 00 00 00 02 ................
008650: 07 00 C9 02 00 00 00 02 07 00 C5 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: 37 C9 A7 C9 61 6E 64 81 62 65 82 62 72 65 61 6B 7...and.be.break
008710: 83 62 79 84 63 61 73 65 85 64 6F 86 64 65 66 61 .by.case.do.defa
008720: 75 6C 74 87 65 71 88 65 71 76 89 65 6C 73 65 8A ult.eq.eqv.else.
008730: 65 6E 64 63 61 73 65 8B 66 61 6C 73 65 8C 66 6F endcase.false.fo
008740: 72 8D 66 69 6E 69 73 68 8E 67 6F 74 6F 8F 67 65 r.finish.goto.ge
008750: 90 67 72 91 67 74 91 67 6C 6F 62 61 6C 92 67 65 .gr.gt.global.ge
008760: 74 93 69 66 94 69 6E 74 6F 95 69 6E 6C 69 6E 65 t.if.into.inline
008770: D0 6C 65 74 96 6C 76 97 6C 65 98 6C 73 99 6C 74 .let.lv.le.ls.lt
008780: 99 6C 6F 67 6F 72 9A 6C 6F 67 61 6E 64 9B 6C 6F .logor.logand.lo
008790: 6F 70 9C 6C 73 68 69 66 74 9D 6D 61 6E 69 66 65 op.lshift.manife
0087A0: 73 74 9E 6E 65 9F 6E 6F 74 A0 6E 65 71 76 A1 6F st.ne.not.neqv.o
0087B0: 72 8A 72 65 73 75 6C 74 69 73 A2 72 65 74 75 72 r.resultis.retur
0087C0: 6E A3 72 65 6D A4 72 73 68 69 66 74 A5 72 76 A6 n£rem.rshift.rv.
0087D0: 72 65 70 65 61 74 A7 72 65 70 65 61 74 77 68 69 repeat.repeatwhi
0087E0: 6C 65 A8 72 65 70 65 61 74 75 6E 74 69 6C A9 73 le.repeatuntil.s
0087F0: 77 69 74 63 68 6F 6E AA 73 74 61 74 69 63 AB 74 witchon.static.t
008800: 6F AC 74 65 73 74 AD 74 72 75 65 AE 74 68 65 6E o.test.true.then
008810: 86 74 61 62 6C 65 AF 75 6E 74 69 6C B0 75 6E 6C .table.until.unl
008820: 65 73 73 B1 76 65 63 B2 76 61 6C 6F 66 B3 77 68 ess.vec.valof.wh
008830: 69 6C 65 B4 6F 70 74 69 6F 6E D3 61 62 73 E0 00 ile.option.abs..
008840: 1C F1 CD 37 2D C9 CD 6F 2F 3E DA 18 ED CD 62 2F ...7-..o/>....b/
008850: 3E DA 18 E6 CD 6F 2F 3E D2 18 DF 3E C2 F5 CD 4E >....o/>...>...N
008860: 2E D5 DD E1 D5 DD 56 FD DD 5E FC CD 3B 30 30 4F ......V..^..;00O
008870: E1 EB 7C B5 20 4A EB 2B 56 2B 5E 1A FE 4F 20 31 ..|. J.+V+^..O 1
008880: 1A AC 74 65 73 74 AD 74 72 75 65 AE 74 68 65 6E ..test.true.then
008890: 86 74 61 62 6C 65 AF 75 6E 74 69 6C B0 75 6E 6C .table.until.unl
0088A0: 65 73 73 B1 76 65 63 B2 76 61 6C 6F 66 B3 77 68 ess.vec.valof.wh
0088B0: 69 6C 65 B4 6F 70 74 69 6F 6E D3 61 62 73 E0 00 ile.option.abs..
0088C0: 1C F1 CD 37 2D C9 CD 6F 2F 3E DA 18 ED CD 62 2F ...7-..o/>....b/
0088D0: 3E DA 18 E6 CD 6F 2F 3E D2 18 DF 3E C2 F5 CD 4E >....o/>...>...N
0088E0: 2E D5 DD E1 D5 DD 56 FD DD 5E FC CD 3B 30 30 4F ......V..^..;00O
0088F0: E1 EB 7C B5 20 4A EB 2B 56 2B 5E 1A FE 4F 20 31 ..|. J.+V+^..O 1
008900: 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 77 72 69 74 ..$)....AND writ
008910: 65 6F 63 74 28 6E 75 6D 2C 64 29 20 42 45 0D 0A eoct(num,d) BE..
008920: 24 28 0D 0A 20 20 49 46 20 64 3E 31 20 54 48 45 $(.. IF d>1 THE
008930: 4E 20 77 72 69 74 65 6F 63 74 28 6E 75 6D 3E 3E N writeoct(num>>
008940: 33 2C 64 2D 31 29 0D 0A 20 20 77 72 63 68 28 28 3,d-1).. wrch((
008950: 6E 75 6D 20 4C 4F 47 41 4E 44 20 37 29 2B 27 30 num LOGAND 7)+'0
008960: 27 29 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 6E 65 ')..$)....AND ne
008970: 77 6C 69 6E 65 28 29 20 42 45 20 20 77 72 63 68 wline() BE wrch
008980: 28 6E 65 77 6C 69 6E 65 63 68 29 0D 0A 0D 0A 0D (newlinech).....
008990: 0A 2F 2A 2A 2A 2A 20 49 4E 50 55 54 20 52 4F 55 ./**** INPUT ROU
0089A0: 54 49 4E 45 53 20 2A 2A 2A 2A 2F 0D 0A 0D 0A 41 TINES ****/....A
0089B0: 4E 44 20 72 64 63 68 28 29 20 3D 20 56 41 4C 4F ND rdch() = VALO
0089C0: 46 0D 0A 24 28 0D 0A 20 20 55 4E 4C 45 53 53 20 F..$(.. UNLESS
0089D0: 72 65 74 75 72 6E 65 64 20 3D 20 30 20 54 48 45 returned = 0 THE
0089E0: 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 4C 45 54 N.. $(.. LET
0089F0: 20 63 20 3D 20 72 65 74 75 72 6E 65 64 0D 0A 20 c = returned..
008A00: 20 20 20 72 65 74 75 72 6E 65 64 20 3A 3D 20 30 returned := 0
008A10: 0D 0A 20 20 20 20 6C 61 73 74 63 68 61 72 20 3A .. lastchar :
008A20: 3D 20 63 0D 0A 20 20 20 20 52 45 53 55 4C 54 49 = c.. RESULTI
008A30: 53 20 63 0D 0A 20 20 24 29 0D 0A 20 20 52 45 53 S c.. $).. RES
008A40: 55 4C 54 49 53 20 72 65 61 64 73 74 72 65 61 6D ULTIS readstream
008A50: 20 3D 20 30 20 2D 3E 20 72 64 76 64 75 28 29 2C = 0 -> rdvdu(),
008A60: 20 72 65 61 64 63 68 28 72 65 61 64 73 74 72 65 readch(readstre
008A70: 61 6D 29 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 75 am)..$)....AND u
008A80: 6E 72 64 63 68 28 29 20 42 45 20 72 65 74 75 72 nrdch() BE retur
008A90: 6E 65 64 20 3A 3D 20 6C 61 73 74 63 68 61 72 0D ned := lastchar.
008AA0: 0A 0D 0A 41 4E 44 20 72 65 61 64 73 28 61 72 72 ...AND reads(arr
008AB0: 61 79 29 20 3D 20 56 41 4C 4F 46 0D 0A 24 28 0D ay) = VALOF..$(.
008AC0: 0A 20 20 4D 41 4E 49 46 45 53 54 20 24 28 20 65 . MANIFEST $( e
008AD0: 73 63 61 70 65 20 3D 20 23 78 46 43 20 20 3B 20 scape = #xFC ;
008AE0: 20 73 74 6F 70 3D 33 20 3B 20 6D 61 78 6C 65 6E stop=3 ; maxlen
008AF0: 3D 32 35 35 20 24 29 0D 0A 20 20 4C 45 54 20 70 =255 $).. LET p
008B00: 2F 2F 20 43 4C 49 42 48 44 52 20 20 20 73 74 61 // CLIBHDR sta
008B10: 6E 64 61 72 64 20 43 50 2F 4D 20 6C 69 62 72 61 ndard CP/M libra
008B20: 72 79 20 68 65 61 64 65 72 2C 20 6C 61 73 74 20 ry header, last
008B30: 6D 6F 64 69 66 69 65 64 20 30 31 2F 31 32 2F 31 modified 01/12/1
008B40: 39 38 36 0D 0A 0D 0A 0D 0A 4D 41 4E 49 46 45 53 986......MANIFES
008B50: 54 20 24 28 20 62 79 74 65 73 70 65 72 77 6F 72 T $( bytesperwor
008B60: 64 20 3D 20 32 20 3B 20 62 69 74 73 70 65 72 77 d = 2 ; bitsperw
008B70: 6F 72 64 20 3D 20 31 36 0D 0A 20 20 20 20 20 20 ord = 16..
008B80: 20 20 20 20 20 20 73 6F 66 74 65 6F 66 63 68 20 softeofch
008B90: 3D 20 32 36 20 20 20 3B 20 65 6E 64 73 74 72 65 = 26 ; endstre
008BA0: 61 6D 63 68 20 3D 20 2D 31 0D 0A 20 20 20 20 20 amch = -1..
008BB0: 20 20 20 20 20 20 20 76 64 75 73 74 72 65 61 6D vdustream
008BC0: 20 3D 20 30 20 20 20 20 3B 20 70 72 69 6E 74 73 = 0 ; prints
008BD0: 74 72 65 61 6D 20 3D 20 31 0D 0A 20 20 20 20 20 tream = 1..
008BE0: 20 20 20 20 20 20 20 6D 61 78 69 6E 74 20 3D 20 maxint =
008BF0: 33 32 37 36 37 20 20 20 3B 20 6D 69 6E 69 6E 74 32767 ; minint
008C00: 20 3D 20 2D 33 32 37 36 38 0D 0A 20 20 20 20 20 = -32768..
008C10: 20 20 20 20 20 20 20 6E 65 77 6C 69 6E 65 63 68 newlinech
008C20: 20 3D 20 32 36 39 0D 0A 20 20 20 20 20 20 20 20 = 269..
008C30: 20 24 29 0D 0A 0D 0A 53 54 41 54 49 43 20 20 20 $)....STATIC
008C40: 24 28 20 72 65 61 64 73 74 72 65 61 6D 20 3D 20 $( readstream =
008C50: 30 20 3B 20 77 72 69 74 65 73 74 72 65 61 6D 20 0 ; writestream
008C60: 3D 20 30 0D 0A 20 20 20 20 20 20 20 20 20 20 20 = 0..
008C70: 20 72 65 74 75 72 6E 65 64 20 3D 20 30 20 20 20 returned = 0
008C80: 3B 20 6C 61 73 74 63 68 61 72 20 3D 20 30 0D 0A ; lastchar = 0..
008C90: 20 20 20 20 20 20 20 20 20 24 29 0D 0A 0D 0A 0D $).....
008CA0: 0A 2F 2A 2A 2A 2A 20 4F 55 54 50 55 54 20 52 4F ./**** OUTPUT RO
008CB0: 55 54 49 4E 45 53 20 2A 2A 2A 2A 2F 0D 0A 0D 0A UTINES ****/....
008CC0: 4C 45 54 20 77 72 63 68 28 63 68 61 72 29 20 42 LET wrch(char) B
008CD0: 45 0D 0A 24 28 0D 0A 20 20 53 57 49 54 43 48 4F E..$(.. SWITCHO
008CE0: 4E 20 77 72 69 74 65 73 74 72 65 61 6D 20 49 4E N writestream IN
008CF0: 54 4F 0D 0A 20 20 24 28 0D 0A 20 20 20 20 20 43 TO.. $(.. C
008D00: 74 72 2C 20 63 20 3D 20 30 2C 20 3F 0D 0A 20 20 tr, c = 0, ?..
008D10: 24 28 0D 0A 20 20 20 20 46 4F 52 20 69 3D 31 20 $(.. FOR i=1
008D20: 74 6F 20 70 74 72 20 44 4F 20 24 28 20 77 72 63 to ptr DO $( wrc
008D30: 68 28 38 29 20 3B 20 77 72 63 68 28 27 20 27 29 h(8) ; wrch(' ')
008D40: 20 3B 20 77 72 63 68 28 38 29 20 24 29 0D 0A 20 ; wrch(8) $)..
008D50: 20 20 20 70 74 72 3A 3D 30 0D 0A 20 20 20 20 63 ptr:=0.. c
008D60: 20 3A 3D 20 72 64 63 68 28 29 0D 0A 20 20 20 20 := rdch()..
008D70: 55 4E 54 49 4C 20 63 3D 31 33 20 7C 20 63 3D 65 UNTIL c=13 | c=e
008D80: 73 63 61 70 65 20 7C 20 63 3D 73 74 6F 70 20 44 scape | c=stop D
008D90: 4F 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 20 20 O.. $(..
008DA0: 20 54 45 53 54 20 63 3D 31 32 37 20 54 48 45 4E TEST c=127 THEN
008DB0: 0D 0A 20 20 20 20 20 20 24 28 0D 0A 20 20 20 20 .. $(..
008DC0: 20 20 20 20 54 45 53 54 20 70 74 72 3D 30 20 54 TEST ptr=0 T
008DD0: 48 45 4E 20 77 72 63 68 28 37 29 0D 0A 20 20 20 HEN wrch(7)..
008DE0: 20 20 20 20 20 45 4C 53 45 0D 0A 20 20 20 20 20 ELSE..
008DF0: 20 20 20 24 28 0D 0A 20 20 20 20 20 20 20 20 20 $(..
008E00: 20 77 72 63 68 28 38 29 20 3B 20 77 72 63 68 28 wrch(8) ; wrch(
008E10: 27 20 27 29 20 3B 20 77 72 63 68 28 38 29 0D 0A ' ') ; wrch(8)..
008E20: 20 20 20 20 20 20 20 20 20 20 70 74 72 20 3A 3D ptr :=
008E30: 20 70 74 72 2D 31 0D 0A 20 20 20 20 20 20 20 20 ptr-1..
008E40: 24 29 0D 0A 20 20 20 20 20 20 24 29 0D 0A 20 20 $).. $)..
008E50: 20 20 20 20 45 4C 53 45 0D 0A 20 20 20 20 20 20 ELSE..
008E60: 24 28 0D 0A 20 20 20 20 20 20 20 20 54 45 53 54 $(.. TEST
008E70: 20 70 74 72 3D 6D 61 78 6C 65 6E 20 54 48 45 4E ptr=maxlen THEN
008E80: 20 77 72 63 68 28 37 29 0D 0A 20 20 20 20 20 20 wrch(7)..
008E90: 20 20 45 4C 53 45 0D 0A 20 20 20 20 20 20 20 20 ELSE..
008EA0: 24 28 20 77 72 63 68 28 63 29 0D 0A 20 20 20 20 $( wrch(c)..
008EB0: 20 20 20 20 20 20 20 70 74 72 20 3A 3D 20 70 74 ptr := pt
008EC0: 72 20 2B 20 31 0D 0A 20 20 20 20 20 20 20 20 20 r + 1..
008ED0: 20 20 61 72 72 61 79 25 70 74 72 20 3A 3D 20 63 array%ptr := c
008EE0: 0D 0A 20 20 20 20 20 20 20 20 24 29 0D 0A 20 20 .. $)..
008EF0: 20 20 20 20 24 29 0D 0A 20 20 20 20 20 20 63 20 $).. c
008F00: 41 53 45 20 76 64 75 73 74 72 65 61 6D 20 20 20 ASE vdustream
008F10: 3A 20 20 77 72 76 64 75 28 63 68 61 72 29 20 3B : wrvdu(char) ;
008F20: 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 43 ENDCASE.. C
008F30: 41 53 45 20 70 72 69 6E 74 73 74 72 65 61 6D 20 ASE printstream
008F40: 3A 20 20 70 72 63 68 28 63 68 61 72 29 20 3B 20 : prch(char) ;
008F50: 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 44 45 ENDCASE.. DE
008F60: 46 41 55 4C 54 20 20 20 20 20 20 20 20 20 20 3A FAULT :
008F70: 20 20 77 72 69 74 65 63 68 28 63 68 61 72 2C 77 writech(char,w
008F80: 72 69 74 65 73 74 72 65 61 6D 29 0D 0A 20 20 24 ritestream).. $
008F90: 29 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 77 72 69 )..$)....AND wri
008FA0: 74 65 66 28 73 74 72 69 6E 67 2C 61 2C 62 2C 63 tef(string,a,b,c
008FB0: 2C 64 2C 65 2C 66 2C 67 2C 68 2C 69 2C 6A 2C 6B ,d,e,f,g,h,i,j,k
008FC0: 29 20 42 45 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 ) BE..$(.. LET
008FD0: 70 70 74 72 20 3D 20 40 61 0D 0A 20 20 46 4F 52 pptr = @a.. FOR
008FE0: 20 63 70 74 72 20 3D 20 31 20 54 4F 20 73 74 72 cptr = 1 TO str
008FF0: 69 6E 67 25 30 20 44 4F 0D 0A 20 20 24 28 0D 0A ing%0 DO.. $(..
009000: 20 20 20 20 4C 45 54 20 6B 20 3D 20 73 74 72 69 LET k = stri
009010: 6E 67 25 63 70 74 72 0D 0A 20 20 20 20 54 45 53 ng%cptr.. TES
009020: 54 20 6B 20 3D 20 27 25 27 20 54 48 45 4E 0D 0A T k = '%' THEN..
009030: 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 4C 45 $(.. LE
009040: 54 20 61 72 67 20 3D 20 21 70 70 74 72 0D 0A 20 T arg = !pptr..
009050: 20 20 20 20 20 63 70 74 72 20 3A 3D 20 63 70 74 cptr := cpt
009060: 72 20 2B 20 31 0D 0A 20 20 20 20 20 20 24 28 0D r + 1.. $(.
009070: 0A 20 20 20 20 20 20 20 20 4C 45 54 20 63 68 2C . LET ch,
009080: 20 73 69 7A 65 20 3D 20 73 74 72 69 6E 67 25 63 size = string%c
009090: 70 74 72 2C 20 64 65 63 76 61 6C 28 73 74 72 69 ptr, decval(stri
0090A0: 6E 67 25 28 63 70 74 72 2B 31 29 29 0D 0A 20 20 ng%(cptr+1))..
0090B0: 20 20 20 20 20 20 70 70 74 72 20 3A 3D 20 70 70 pptr := pp
0090C0: 74 72 20 2B 20 31 0D 0A 20 20 20 20 20 20 20 20 tr + 1..
0090D0: 63 70 74 72 20 3A 3D 20 63 70 74 72 20 2B 20 56 cptr := cptr + V
0090E0: 41 4C 4F 46 0D 0A 20 20 20 20 20 20 20 20 53 57 ALOF.. SW
0090F0: 49 54 43 48 4F 4E 20 63 68 20 49 4E 54 4F 0D 0A ITCHON ch INTO..
009100: 3A 3D 20 72 64 63 68 28 29 0D 0A 20 20 20 20 24 := rdch().. $
009110: 29 0D 0A 20 20 24 29 0D 0A 20 20 52 45 50 45 41 ).. $).. REPEA
009120: 54 57 48 49 4C 45 20 28 63 3D 65 73 63 61 70 65 TWHILE (c=escape
009130: 20 7C 20 63 3D 20 73 74 6F 70 29 20 26 20 28 70 | c= stop) & (p
009140: 74 72 20 5C 3D 20 30 29 0D 0A 20 20 61 72 72 61 tr \= 0).. arra
009150: 79 25 30 20 3A 3D 20 28 63 3D 65 73 63 61 70 65 y%0 := (c=escape
009160: 20 7C 20 63 3D 73 74 6F 70 29 20 2D 3E 20 30 2C | c=stop) -> 0,
009170: 20 70 74 72 0D 0A 20 20 52 45 53 55 4C 54 49 53 ptr.. RESULTIS
009180: 20 4E 4F 54 20 28 63 3D 65 73 63 61 70 65 20 7C NOT (c=escape |
009190: 20 63 3D 73 74 6F 70 29 0D 0A 24 29 0D 0A 0D 0A c=stop)..$)....
0091A0: 41 4E 44 20 72 65 61 64 6E 28 29 20 3D 20 56 41 AND readn() = VA
0091B0: 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 69 LOF..$(.. LET i
0091C0: 6E 70 75 74 20 3D 20 56 45 43 20 31 32 38 0D 0A nput = VEC 128..
0091D0: 20 20 72 65 61 64 73 28 69 6E 70 75 74 29 0D 0A reads(input)..
0091E0: 20 20 52 45 53 55 4C 54 49 53 20 73 74 72 74 6F RESULTIS strto
0091F0: 6E 75 6D 28 69 6E 70 75 74 2C 31 30 29 0D 0A 24 num(input,10)..$
009200: 29 0D 0A 0D 0A 41 4E 44 20 73 74 72 74 6F 6E 75 )....AND strtonu
009210: 6D 28 73 74 72 69 6E 67 2C 62 61 73 65 29 20 3D m(string,base) =
009220: 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C 45 VALOF..$(.. LE
009230: 54 20 70 74 72 2C 20 74 6F 74 61 6C 20 3D 20 31 T ptr, total = 1
009240: 2C 20 30 0D 0A 20 20 57 48 49 4C 45 20 70 74 72 , 0.. WHILE ptr
009250: 20 3C 3D 20 73 74 72 69 6E 67 25 30 20 4C 4F 47 <= string%0 LOG
009260: 41 4E 44 20 28 30 3C 3D 64 65 63 76 61 6C 28 73 AND (0<=decval(s
009270: 74 72 69 6E 67 25 70 74 72 29 3C 3D 62 61 73 65 tring%ptr)<=base
009280: 29 20 44 4F 0D 0A 20 20 24 28 0D 0A 20 20 20 20 ) DO.. $(..
009290: 74 6F 74 61 6C 20 3A 3D 20 74 6F 74 61 6C 20 2A total := total *
0092A0: 20 62 61 73 65 20 2B 20 64 65 63 76 61 6C 28 73 base + decval(s
0092B0: 74 72 69 6E 67 25 70 74 72 29 0D 0A 20 20 20 20 tring%ptr)..
0092C0: 70 74 72 20 3A 3D 20 70 74 72 20 2B 20 31 0D 0A ptr := ptr + 1..
0092D0: 20 20 24 29 0D 0A 20 20 52 45 53 55 4C 54 49 53 $).. RESULTIS
0092E0: 20 74 6F 74 61 6C 0D 0A 24 29 0D 0A 0D 0A 0D 0A total..$)......
0092F0: 2F 2A 2A 2A 2A 20 46 49 4C 45 20 49 2F 4F 20 52 /**** FILE I/O R
009300: 20 20 20 20 20 20 20 20 24 28 0D 0A 20 20 20 20 $(..
009310: 20 20 20 20 20 20 43 41 53 45 20 27 53 27 3A 20 CASE 'S':
009320: 77 72 69 74 65 73 28 61 72 67 29 20 20 20 3B 20 writes(arg) ;
009330: 52 45 53 55 4C 54 49 53 20 30 0D 0A 20 20 20 20 RESULTIS 0..
009340: 20 20 20 20 20 20 43 41 53 45 20 27 43 27 3A 20 CASE 'C':
009350: 77 72 63 68 28 61 72 67 29 20 20 20 20 20 3B 20 wrch(arg) ;
009360: 52 45 53 55 4C 54 49 53 20 30 0D 0A 20 20 20 20 RESULTIS 0..
009370: 20 20 20 20 20 20 43 41 53 45 20 27 4E 27 3A 20 CASE 'N':
009380: 77 72 69 74 65 64 28 61 72 67 2C 30 29 20 3B 20 writed(arg,0) ;
009390: 52 45 53 55 4C 54 49 53 20 30 0D 0A 20 20 20 20 RESULTIS 0..
0093A0: 20 20 20 20 20 20 43 41 53 45 20 27 4F 27 3A 20 CASE 'O':
0093B0: 77 72 69 74 65 6F 63 74 28 61 72 67 2C 73 69 7A writeoct(arg,siz
0093C0: 65 29 20 3B 20 52 45 53 55 4C 54 49 53 20 31 0D e) ; RESULTIS 1.
0093D0: 0A 20 20 20 20 20 20 20 20 20 20 43 41 53 45 20 . CASE
0093E0: 27 58 27 3A 20 77 72 69 74 65 68 65 78 28 61 72 'X': writehex(ar
0093F0: 67 2C 73 69 7A 65 29 20 3B 20 52 45 53 55 4C 54 g,size) ; RESULT
009400: 49 53 20 31 0D 0A 20 20 20 20 20 20 20 20 20 20 IS 1..
009410: 43 41 53 45 20 27 49 27 3A 20 77 72 69 74 65 64 CASE 'I': writed
009420: 28 61 72 67 2C 73 69 7A 65 29 20 20 20 3B 20 52 (arg,size) ; R
009430: 45 53 55 4C 54 49 53 20 31 0D 0A 20 20 20 20 20 ESULTIS 1..
009440: 20 20 20 20 20 43 41 53 45 20 27 24 27 3A 20 52 CASE '$': R
009450: 45 53 55 4C 54 49 53 20 30 0D 0A 20 20 20 20 20 ESULTIS 0..
009460: 20 20 20 20 20 44 45 46 41 55 4C 54 20 3A 20 77 DEFAULT : w
009470: 72 63 68 28 63 68 29 20 3B 20 70 70 74 72 20 3A rch(ch) ; pptr :
009480: 3D 20 70 70 74 72 20 2D 20 31 20 20 20 3B 20 52 = pptr - 1 ; R
009490: 45 53 55 4C 54 49 53 20 30 0D 0A 20 20 20 20 20 ESULTIS 0..
0094A0: 20 20 20 24 29 0D 0A 20 20 20 20 20 20 24 29 0D $).. $).
0094B0: 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45 4C 53 . $).. ELS
0094C0: 45 20 77 72 63 68 28 6B 29 0D 0A 20 20 24 29 0D E wrch(k).. $).
0094D0: 0A 24 29 0D 0A 0D 0A 41 4E 44 20 77 72 69 74 65 .$)....AND write
0094E0: 73 28 73 29 20 42 45 20 46 4F 52 20 63 20 3D 20 s(s) BE FOR c =
0094F0: 31 20 54 4F 20 73 25 30 20 44 4F 20 77 72 63 68 1 TO s%0 DO wrch
009500: 4F 55 54 49 4E 45 53 20 2A 2A 2A 2A 2F 0D 0A 0D OUTINES ****/...
009510: 0A 41 4E 44 20 66 69 6E 64 69 6E 70 75 74 28 6E .AND findinput(n
009520: 61 6D 65 2C 20 62 75 66 66 65 72 29 20 3D 20 56 ame, buffer) = V
009530: 41 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 ALOF..$(.. LET
009540: 63 2C 20 64 65 20 3D 20 31 35 2C 20 62 75 66 66 c, de = 15, buff
009550: 65 72 2A 32 0D 0A 20 20 73 65 74 66 63 62 28 6E er*2.. setfcb(n
009560: 61 6D 65 2C 20 62 75 66 66 65 72 29 20 20 20 20 ame, buffer)
009570: 2F 2F 20 73 65 74 20 74 68 65 20 66 63 62 0D 0A // set the fcb..
009580: 20 20 62 64 6F 73 61 28 40 63 2C 20 40 64 65 29 bdosa(@c, @de)
009590: 20 20 20 20 20 20 20 20 20 20 2F 2F 20 6F 70 65 // ope
0095A0: 6E 20 66 69 6C 65 0D 0A 20 20 62 75 66 66 65 72 n file.. buffer
0095B0: 21 31 37 20 3A 3D 20 31 36 34 20 20 20 20 20 20 !17 := 164
0095C0: 20 20 2F 2F 20 73 65 74 20 73 65 63 74 6F 72 20 // set sector
0095D0: 70 6F 69 6E 74 65 72 0D 0A 20 20 52 45 53 55 4C pointer.. RESUL
0095E0: 54 49 53 20 63 20 5C 3D 20 32 35 35 0D 0A 24 29 TIS c \= 255..$)
0095F0: 0D 0A 0D 0A 41 4E 44 20 65 6E 64 72 65 61 64 28 ....AND endread(
009600: 29 20 3D 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 ) = VALOF..$(..
009610: 20 4C 45 54 20 62 75 66 3D 72 65 61 64 73 74 72 LET buf=readstr
009620: 65 61 6D 0D 0A 20 20 72 65 61 64 73 74 72 65 61 eam.. readstrea
009630: 6D 20 3A 3D 20 76 64 75 73 74 72 65 61 6D 0D 0A m := vdustream..
009640: 20 20 52 45 53 55 4C 54 49 53 20 62 75 66 3E 30 RESULTIS buf>0
009650: 20 2D 3E 20 63 6C 6F 73 65 69 6E 28 62 75 66 29 -> closein(buf)
009660: 2C 20 54 52 55 45 0D 0A 24 29 0D 0A 0D 0A 41 4E , TRUE..$)....AN
009670: 44 20 72 65 77 69 6E 64 28 29 20 42 45 20 49 46 D rewind() BE IF
009680: 20 72 65 61 64 73 74 72 65 61 6D 20 3E 20 30 20 readstream > 0
009690: 54 48 45 4E 20 72 65 77 69 6E 64 69 6E 28 72 65 THEN rewindin(re
0096A0: 61 64 73 74 72 65 61 6D 29 0D 0A 0D 0A 41 4E 44 adstream)....AND
0096B0: 20 66 69 6E 64 6F 75 74 70 75 74 28 6E 61 6D 65 findoutput(name
0096C0: 2C 62 75 66 66 65 72 29 20 3D 20 56 41 4C 4F 46 ,buffer) = VALOF
0096D0: 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 63 2C 20 64 ..$(.. LET c, d
0096E0: 65 20 3D 20 32 32 2C 20 62 75 66 66 65 72 2A 32 e = 22, buffer*2
0096F0: 0D 0A 20 20 73 65 74 66 63 62 28 6E 61 6D 65 2C .. setfcb(name,
009700: 28 73 25 63 29 0D 0A 0D 0A 41 4E 44 20 77 72 69 (s%c)....AND wri
009710: 74 65 64 28 6E 75 6D 2C 64 29 20 42 45 0D 0A 24 ted(num,d) BE..$
009720: 28 0D 0A 20 20 4C 45 54 20 74 65 6D 70 20 3D 20 (.. LET temp =
009730: 56 45 43 20 32 30 0D 0A 20 20 41 4E 44 20 70 74 VEC 20.. AND pt
009740: 72 2C 20 6E 20 3D 20 30 2C 20 6E 75 6D 0D 0A 20 r, n = 0, num..
009750: 20 49 46 20 6E 75 6D 3C 30 20 54 48 45 4E 20 64 IF num<0 THEN d
009760: 2C 20 6E 20 3A 3D 20 64 2D 31 2C 20 2D 6E 0D 0A , n := d-1, -n..
009770: 20 20 74 65 6D 70 21 70 74 72 2C 20 6E 2C 20 70 temp!ptr, n, p
009780: 74 72 20 3A 3D 20 6E 20 52 45 4D 20 31 30 2C 20 tr := n REM 10,
009790: 6E 2F 31 30 2C 20 70 74 72 2B 31 20 52 45 50 45 n/10, ptr+1 REPE
0097A0: 41 54 55 4E 54 49 4C 20 6E 20 3D 20 30 0D 0A 20 ATUNTIL n = 0..
0097B0: 20 46 4F 52 20 6A 20 3D 20 70 74 72 2B 31 20 54 FOR j = ptr+1 T
0097C0: 4F 20 64 20 44 4F 20 77 72 63 68 28 27 20 27 29 O d DO wrch(' ')
0097D0: 0D 0A 20 20 49 46 20 6E 75 6D 3C 30 20 54 48 45 .. IF num<0 THE
0097E0: 4E 20 77 72 63 68 28 27 2D 27 29 0D 0A 20 20 46 N wrch('-').. F
0097F0: 4F 52 20 6A 20 3D 20 70 74 72 2D 31 20 54 4F 20 OR j = ptr-1 TO
009800: 30 20 42 59 20 2D 31 20 44 4F 20 77 72 63 68 28 0 BY -1 DO wrch(
009810: 74 65 6D 70 21 6A 2B 27 30 27 29 0D 0A 24 29 0D temp!j+'0')..$).
009820: 0A 0D 0A 41 4E 44 20 77 72 69 74 65 6E 28 6E 29 ...AND writen(n)
009830: 20 42 45 20 77 72 69 74 65 64 28 6E 2C 30 29 0D BE writed(n,0).
009840: 0A 0D 0A 41 4E 44 20 77 72 69 74 65 68 65 78 28 ...AND writehex(
009850: 6E 75 6D 2C 64 29 20 42 45 0D 0A 24 28 0D 0A 20 num,d) BE..$(..
009860: 20 49 46 20 44 3E 31 20 54 48 45 4E 20 77 72 69 IF D>1 THEN wri
009870: 74 65 68 65 78 28 6E 75 6D 3E 3E 34 2C 20 64 2D tehex(num>>4, d-
009880: 31 29 0D 0A 20 20 77 72 63 68 28 28 6E 75 6D 20 1).. wrch((num
009890: 4C 4F 47 41 4E 44 20 31 35 29 21 54 41 42 4C 45 LOGAND 15)!TABLE
0098A0: 20 27 30 27 2C 27 31 27 2C 27 32 27 2C 27 33 27 '0','1','2','3'
0098B0: 2C 27 34 27 2C 27 35 27 2C 27 36 27 2C 27 37 27 ,'4','5','6','7'
0098C0: 2C 27 38 27 2C 27 39 27 2C 0D 0A 20 20 20 20 20 ,'8','9',..
0098D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0098E0: 20 20 20 20 20 20 20 20 27 41 27 2C 27 42 27 2C 'A','B',
0098F0: 27 43 27 2C 27 44 27 2C 27 45 27 2C 27 46 27 29 'C','D','E','F')
009900: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
009910: 08 00 01 00 02 09 4E E5 08 00 C1 02 00 00 00 02 ......N.........
009920: 08 00 C6 02 00 00 00 02 08 00 C2 02 00 00 00 02 ................
009930: 08 00 C7 02 00 00 00 02 08 00 C3 02 00 00 00 02 ................
009940: 08 00 C8 02 00 00 00 02 08 00 C4 02 00 00 00 02 ................
009950: 08 00 C9 02 00 00 00 02 08 00 C5 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: 20 62 75 66 66 65 72 29 0D 0A 20 20 62 64 6F 73 buffer).. bdos
009A10: 62 28 31 39 2C 20 62 75 66 66 65 72 2A 32 29 0D b(19, buffer*2).
009A20: 0A 20 20 62 64 6F 73 61 28 40 63 2C 20 40 64 65 . bdosa(@c, @de
009A30: 29 0D 0A 20 20 62 75 66 66 65 72 21 31 37 20 3A ).. buffer!17 :
009A40: 3D 20 33 36 0D 0A 20 20 52 45 53 55 4C 54 49 53 = 36.. RESULTIS
009A50: 20 63 20 5C 3D 20 32 35 35 0D 0A 24 29 0D 0A 0D c \= 255..$)...
009A60: 0A 41 4E 44 20 65 6E 64 77 72 69 74 65 28 29 20 .AND endwrite()
009A70: 3D 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C = VALOF..$(.. L
009A80: 45 54 20 62 75 66 20 3D 20 77 72 69 74 65 73 74 ET buf = writest
009A90: 72 65 61 6D 0D 0A 20 20 77 72 69 74 65 73 74 72 ream.. writestr
009AA0: 65 61 6D 20 3A 3D 20 76 64 75 73 74 72 65 61 6D eam := vdustream
009AB0: 0D 0A 20 20 52 45 53 55 4C 54 49 53 20 62 75 66 .. RESULTIS buf
009AC0: 3E 30 20 2D 3E 20 63 6C 6F 73 65 6F 75 74 28 62 >0 -> closeout(b
009AD0: 75 66 29 2C 20 54 52 55 45 0D 0A 24 29 0D 0A 0D uf), TRUE..$)...
009AE0: 0A 0D 0A 2F 2A 2A 2A 2A 20 50 52 49 4D 49 54 49 .../**** PRIMITI
009AF0: 56 45 20 49 2F 4F 20 52 4F 55 54 49 4E 45 53 20 VE I/O ROUTINES
009B00: 2A 2A 2A 2A 2F 0D 0A 0D 0A 41 4E 44 20 77 72 76 ****/....AND wrv
009B10: 64 75 28 63 29 20 3D 20 56 41 4C 4F 46 0D 0A 24 du(c) = VALOF..$
009B20: 28 0D 0A 20 20 49 46 20 63 3D 6E 65 77 6C 69 6E (.. IF c=newlin
009B30: 65 63 68 20 54 48 45 4E 20 24 28 20 77 72 76 64 ech THEN $( wrvd
009B40: 75 28 31 33 29 20 3B 20 63 3A 3D 31 30 20 24 29 u(13) ; c:=10 $)
009B50: 0D 0A 20 20 62 64 6F 73 62 28 32 2C 63 29 0D 0A .. bdosb(2,c)..
009B60: 20 20 52 45 53 55 4C 54 49 53 20 54 52 55 45 0D RESULTIS TRUE.
009B70: 0A 24 29 0D 0A 0D 0A 41 4E 44 20 70 72 63 68 28 .$)....AND prch(
009B80: 63 29 20 3D 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A c) = VALOF..$(..
009B90: 20 20 49 46 20 63 3D 6E 65 77 6C 69 6E 65 63 68 IF c=newlinech
009BA0: 20 54 48 45 4E 20 24 28 20 70 72 63 68 28 31 33 THEN $( prch(13
009BB0: 29 20 3B 20 63 3A 3D 31 30 20 24 29 0D 0A 20 20 ) ; c:=10 $)..
009BC0: 62 64 6F 73 62 28 35 2C 63 29 0D 0A 20 20 52 45 bdosb(5,c).. RE
009BD0: 53 55 4C 54 49 53 20 54 52 55 45 0D 0A 24 29 0D SULTIS TRUE..$).
009BE0: 0A 0D 0A 41 4E 44 20 70 72 62 75 73 79 28 29 20 ...AND prbusy()
009BF0: 3D 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C = VALOF..$(.. L
009C00: 48 49 4C 45 20 6E 70 74 72 20 3C 3D 20 6E 61 6D HILE nptr <= nam
009C10: 65 25 30 20 44 4F 0D 0A 20 20 20 20 24 28 0D 0A e%0 DO.. $(..
009C20: 20 20 20 20 20 20 63 20 3A 3D 20 75 70 70 65 72 c := upper
009C30: 63 61 73 65 28 6E 61 6D 65 25 6E 70 74 72 29 0D case(name%nptr).
009C40: 0A 20 20 20 20 20 20 6E 70 74 72 20 3A 3D 20 6E . nptr := n
009C50: 70 74 72 20 2B 20 31 0D 0A 20 20 20 20 20 20 49 ptr + 1.. I
009C60: 46 20 63 20 3D 20 27 20 27 20 4C 4F 47 4F 52 20 F c = ' ' LOGOR
009C70: 66 70 74 72 20 3D 20 31 32 20 54 48 45 4E 20 42 fptr = 12 THEN B
009C80: 52 45 41 4B 0D 0A 20 20 20 20 20 20 62 75 66 66 REAK.. buff
009C90: 65 72 25 66 70 74 72 20 3A 3D 20 63 0D 0A 20 20 er%fptr := c..
009CA0: 20 20 20 20 66 70 74 72 20 3A 3D 20 66 70 74 72 fptr := fptr
009CB0: 20 2B 20 31 0D 0A 20 20 20 20 24 29 0D 0A 20 20 + 1.. $)..
009CC0: 62 75 66 66 65 72 25 31 32 2C 20 62 75 66 66 65 buffer%12, buffe
009CD0: 72 25 33 32 20 3A 3D 20 30 2C 20 30 0D 0A 24 29 r%32 := 0, 0..$)
009CE0: 0D 0A 0D 0A 0D 0A 2F 2A 2A 2A 2A 20 4D 49 53 43 ....../**** MISC
009CF0: 45 4C 4C 41 4E 45 4F 55 53 20 52 4F 55 54 49 4E ELLANEOUS ROUTIN
009D00: 45 53 20 2A 2A 2A 2A 2F 0D 0A 0D 0A 41 4E 44 20 ES ****/....AND
009D10: 62 64 6F 73 61 28 63 2C 64 65 29 20 42 45 0D 0A bdosa(c,de) BE..
009D20: 24 28 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 32 31 $(.. INLINE 221
009D30: 2C 31 30 32 2C 31 32 37 20 20 20 20 20 20 2F 2F ,102,127 //
009D40: 20 6C 64 20 68 2C 28 69 78 2B 31 32 37 29 0D 0A ld h,(ix+127)..
009D50: 20 20 49 4E 4C 49 4E 45 20 32 32 31 2C 31 31 30 INLINE 221,110
009D60: 2C 31 32 36 20 20 20 20 20 20 2F 2F 20 6C 64 20 ,126 // ld
009D70: 6C 2C 28 69 78 2B 31 32 36 29 0D 0A 20 20 49 4E l,(ix+126).. IN
009D80: 4C 49 4E 45 20 34 31 20 20 20 20 20 20 20 20 20 LINE 41
009D90: 20 20 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C // add hl,
009DA0: 68 6C 0D 0A 20 20 49 4E 4C 49 4E 45 20 39 34 20 hl.. INLINE 94
009DB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F //
009DC0: 20 6C 64 20 65 2C 28 68 6C 29 0D 0A 20 20 49 4E ld e,(hl).. IN
009DD0: 4C 49 4E 45 20 33 35 20 20 20 20 20 20 20 20 20 LINE 35
009DE0: 20 20 20 20 20 20 2F 2F 20 69 6E 63 20 68 6C 0D // inc hl.
009DF0: 0A 20 20 49 4E 4C 49 4E 45 20 38 36 20 20 20 20 . INLINE 86
009E00: 45 54 20 61 3D 3F 0D 0A 20 20 62 69 6F 73 28 31 ET a=?.. bios(1
009E10: 35 2C 40 61 29 0D 0A 20 20 52 45 53 55 4C 54 49 5,@a).. RESULTI
009E20: 53 20 61 20 3D 20 30 20 20 20 20 20 20 20 20 2F S a = 0 /
009E30: 2F 20 54 52 55 45 20 69 66 20 70 72 69 6E 74 65 / TRUE if printe
009E40: 72 20 62 75 73 79 0D 0A 24 29 0D 0A 0D 0A 41 4E r busy..$)....AN
009E50: 44 20 72 64 74 65 73 74 28 29 20 3D 20 56 41 4C D rdtest() = VAL
009E60: 4F 46 0D 0A 24 28 20 20 0D 0A 20 20 4C 45 54 20 OF..$( .. LET
009E70: 63 2C 64 65 20 3D 20 31 31 2C 3F 0D 0A 20 20 62 c,de = 11,?.. b
009E80: 64 6F 73 61 28 40 63 2C 40 64 65 29 0D 0A 20 20 dosa(@c,@de)..
009E90: 52 45 53 55 4C 54 49 53 20 63 3D 31 0D 0A 24 29 RESULTIS c=1..$)
009EA0: 0D 0A 0D 0A 41 4E 44 20 66 6C 75 73 68 28 29 20 ....AND flush()
009EB0: 42 45 20 57 48 49 4C 45 20 72 64 74 65 73 74 28 BE WHILE rdtest(
009EC0: 29 20 72 64 76 64 75 28 29 0D 0A 0D 0A 41 4E 44 ) rdvdu()....AND
009ED0: 20 72 65 61 64 63 68 28 62 75 66 66 65 72 29 20 readch(buffer)
009EE0: 3D 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C = VALOF..$(.. L
009EF0: 45 54 20 63 68 61 72 61 63 74 65 72 2C 20 66 61 ET character, fa
009F00: 69 6C 20 3D 20 30 2C 20 46 41 4C 53 45 0D 0A 20 il = 0, FALSE..
009F10: 20 49 46 20 62 75 66 66 65 72 21 31 37 20 3D 20 IF buffer!17 =
009F20: 31 36 34 20 54 48 45 4E 0D 0A 20 20 24 28 0D 0A 164 THEN.. $(..
009F30: 20 20 20 20 66 61 69 6C 20 3A 3D 20 4E 4F 54 20 fail := NOT
009F40: 72 65 61 64 73 65 63 74 6F 72 28 62 75 66 66 65 readsector(buffe
009F50: 72 29 20 20 20 20 2F 2F 20 72 65 61 64 20 61 20 r) // read a
009F60: 73 65 63 74 6F 72 0D 0A 20 20 20 20 62 75 66 66 sector.. buff
009F70: 65 72 21 31 37 20 3A 3D 20 33 36 0D 0A 20 20 24 er!17 := 36.. $
009F80: 29 0D 0A 20 20 63 68 61 72 61 63 74 65 72 20 3A ).. character :
009F90: 3D 20 62 75 66 66 65 72 25 28 62 75 66 66 65 72 = buffer%(buffer
009FA0: 21 31 37 29 0D 0A 20 20 62 75 66 66 65 72 21 31 !17).. buffer!1
009FB0: 37 20 3A 3D 20 62 75 66 66 65 72 21 31 37 20 2B 7 := buffer!17 +
009FC0: 20 31 0D 0A 20 20 52 45 53 55 4C 54 49 53 20 63 1.. RESULTIS c
009FD0: 68 61 72 61 63 74 65 72 20 4C 4F 47 4F 52 20 66 haracter LOGOR f
009FE0: 61 69 6C 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 63 ail..$)....AND c
009FF0: 6C 6F 73 65 69 6E 28 62 75 66 66 65 72 29 20 3D losein(buffer) =
00A000: 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 6C 64 // ld
00A010: 20 64 2C 28 68 6C 29 0D 0A 20 20 49 4E 4C 49 4E d,(hl).. INLIN
00A020: 45 20 32 32 31 2C 31 30 32 2C 31 32 35 20 20 20 E 221,102,125
00A030: 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 // ld h,(ix+1
00A040: 32 35 29 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 32 25).. INLINE 22
00A050: 31 2C 31 31 30 2C 31 32 34 20 20 20 20 20 20 2F 1,110,124 /
00A060: 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 32 34 29 0D / ld l,(ix+124).
00A070: 0A 20 20 49 4E 4C 49 4E 45 20 34 31 20 20 20 20 . INLINE 41
00A080: 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 61 64 // ad
00A090: 64 20 68 6C 2C 68 6C 0D 0A 20 20 49 4E 4C 49 4E d hl,hl.. INLIN
00A0A0: 45 20 37 38 20 20 20 20 20 20 20 20 20 20 20 20 E 78
00A0B0: 20 20 20 2F 2F 20 6C 64 20 63 2C 28 68 6C 29 0D // ld c,(hl).
00A0C0: 0A 20 20 49 4E 4C 49 4E 45 20 32 32 31 2C 32 32 . INLINE 221,22
00A0D0: 39 20 20 20 20 20 20 20 20 20 20 2F 2F 20 70 75 9 // pu
00A0E0: 73 68 20 69 78 0D 0A 20 20 49 4E 4C 49 4E 45 20 sh ix.. INLINE
00A0F0: 32 30 35 2C 35 2C 30 20 20 20 20 20 20 20 20 20 205,5,0
00A100: 20 2F 2F 20 63 61 6C 6C 20 62 64 6F 73 0D 0A 20 // call bdos..
00A110: 20 49 4E 4C 49 4E 45 20 32 32 31 2C 32 32 35 20 INLINE 221,225
00A120: 20 20 20 20 20 20 20 20 20 2F 2F 20 70 6F 70 20 // pop
00A130: 69 78 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 33 35 ix.. INLINE 235
00A140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F //
00A150: 20 65 78 20 64 65 2C 68 6C 0D 0A 20 20 49 4E 4C ex de,hl.. INL
00A160: 49 4E 45 20 32 32 31 2C 31 30 32 2C 31 32 37 20 INE 221,102,127
00A170: 20 20 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 // ld h,(ix
00A180: 2B 31 32 37 29 0D 0A 20 20 49 4E 4C 49 4E 45 20 +127).. INLINE
00A190: 32 32 31 2C 31 31 30 2C 31 32 36 20 20 20 20 20 221,110,126
00A1A0: 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 32 36 // ld l,(ix+126
00A1B0: 29 0D 0A 20 20 49 4E 4C 49 4E 45 20 34 31 20 20 ).. INLINE 41
00A1C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 //
00A1D0: 61 64 64 20 68 6C 2C 68 6C 0D 0A 20 20 49 4E 4C add hl,hl.. INL
00A1E0: 49 4E 45 20 31 31 35 20 20 20 20 20 20 20 20 20 INE 115
00A1F0: 20 20 20 20 20 2F 2F 20 6C 64 20 28 68 6C 29 2C // ld (hl),
00A200: 20 54 52 55 45 0D 0A 0D 0A 41 4E 44 20 72 65 77 TRUE....AND rew
00A210: 69 6E 64 69 6E 28 62 75 66 66 65 72 29 20 42 45 indin(buffer) BE
00A220: 20 24 28 20 62 75 66 66 65 72 25 33 32 20 3A 3D $( buffer%32 :=
00A230: 20 30 20 20 3B 20 20 62 75 66 66 65 72 21 31 37 0 ; buffer!17
00A240: 20 3A 3D 20 31 36 34 20 24 29 0D 0A 0D 0A 41 4E := 164 $)....AN
00A250: 44 20 77 72 69 74 65 63 68 28 63 68 61 72 2C 20 D writech(char,
00A260: 62 75 66 66 65 72 29 20 3D 20 56 41 4C 4F 46 0D buffer) = VALOF.
00A270: 0A 24 28 0D 0A 20 20 4C 45 54 20 73 75 63 63 65 .$(.. LET succe
00A280: 73 73 20 3D 20 54 52 55 45 0D 0A 20 20 49 46 20 ss = TRUE.. IF
00A290: 63 68 61 72 3D 6E 65 77 6C 69 6E 65 63 68 20 54 char=newlinech T
00A2A0: 48 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 55 HEN.. $(.. U
00A2B0: 4E 4C 45 53 53 20 77 72 69 74 65 63 68 28 31 33 NLESS writech(13
00A2C0: 2C 62 75 66 66 65 72 29 20 52 45 53 55 4C 54 49 ,buffer) RESULTI
00A2D0: 53 20 46 41 4C 53 45 0D 0A 20 20 20 20 63 68 61 S FALSE.. cha
00A2E0: 72 3A 3D 31 30 0D 0A 20 20 24 29 0D 0A 20 20 49 r:=10.. $).. I
00A2F0: 46 20 62 75 66 66 65 72 21 31 37 20 3D 20 31 36 F buffer!17 = 16
00A300: 34 20 54 48 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 4 THEN.. $(..
00A310: 20 20 73 75 63 63 65 73 73 20 3A 3D 20 77 72 69 success := wri
00A320: 74 65 73 65 63 74 6F 72 28 62 75 66 66 65 72 29 tesector(buffer)
00A330: 0D 0A 20 20 20 20 62 75 66 66 65 72 21 31 37 20 .. buffer!17
00A340: 3A 3D 20 33 36 0D 0A 20 20 24 29 0D 0A 20 20 62 := 36.. $).. b
00A350: 75 66 66 65 72 25 28 62 75 66 66 65 72 21 31 37 uffer%(buffer!17
00A360: 29 20 3A 3D 20 63 68 61 72 0D 0A 20 20 62 75 66 ) := char.. buf
00A370: 66 65 72 21 31 37 20 3A 3D 20 62 75 66 66 65 72 fer!17 := buffer
00A380: 21 31 37 20 2B 20 31 0D 0A 20 20 52 45 53 55 4C !17 + 1.. RESUL
00A390: 54 49 53 20 73 75 63 63 65 73 73 0D 0A 24 29 0D TIS success..$).
00A3A0: 0A 0D 0A 41 4E 44 20 63 6C 6F 73 65 6F 75 74 28 ...AND closeout(
00A3B0: 62 75 66 66 65 72 29 20 3D 20 56 41 4C 4F 46 0D buffer) = VALOF.
00A3C0: 0A 24 28 0D 0A 20 20 4C 45 54 20 63 2C 20 64 65 .$(.. LET c, de
00A3D0: 20 3D 20 31 36 2C 62 75 66 66 65 72 2A 32 0D 0A = 16,buffer*2..
00A3E0: 20 20 55 4E 4C 45 53 53 20 62 75 66 66 65 72 21 UNLESS buffer!
00A3F0: 31 37 20 3D 20 31 36 34 20 54 48 45 4E 20 77 72 17 = 164 THEN wr
00A400: 65 0D 0A 20 20 49 4E 4C 49 4E 45 20 33 35 20 20 e.. INLINE 35
00A410: 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 //
00A420: 69 6E 63 20 68 6C 0D 0A 20 20 49 4E 4C 49 4E 45 inc hl.. INLINE
00A430: 20 31 31 34 20 20 20 20 20 20 20 20 20 20 20 20 114
00A440: 20 20 2F 2F 20 6C 64 20 28 68 6C 29 2C 64 0D 0A // ld (hl),d..
00A450: 20 20 49 4E 4C 49 4E 45 20 32 32 31 2C 31 30 32 INLINE 221,102
00A460: 2C 31 32 35 20 20 20 20 20 20 2F 2F 20 6C 64 20 ,125 // ld
00A470: 68 2C 28 69 78 2B 31 32 35 29 0D 0A 20 20 49 4E h,(ix+125).. IN
00A480: 4C 49 4E 45 20 32 32 31 2C 31 31 30 2C 31 32 34 LINE 221,110,124
00A490: 20 20 20 20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 // ld l,(i
00A4A0: 78 2B 31 32 34 29 0D 0A 20 20 49 4E 4C 49 4E 45 x+124).. INLINE
00A4B0: 20 34 31 20 20 20 20 20 20 20 20 20 20 20 20 20 41
00A4C0: 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 0D 0A // add hl,hl..
00A4D0: 20 20 49 4E 4C 49 4E 45 20 31 31 39 20 20 20 20 INLINE 119
00A4E0: 20 20 20 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 // ld
00A4F0: 28 68 6C 29 2C 61 0D 0A 20 20 49 4E 4C 49 4E 45 (hl),a.. INLINE
00A500: 20 33 35 20 20 20 20 20 20 20 20 20 20 20 20 20 35
00A510: 20 20 2F 2F 20 69 6E 63 20 68 6C 0D 0A 20 20 49 // inc hl.. I
00A520: 4E 4C 49 4E 45 20 35 34 2C 30 20 20 20 20 20 20 NLINE 54,0
00A530: 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 28 68 6C // ld (hl
00A540: 29 2C 30 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 62 ),0..$)....AND b
00A550: 64 6F 73 62 28 63 2C 64 65 29 20 42 45 0D 0A 24 dosb(c,de) BE..$
00A560: 28 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 32 31 2C (.. INLINE 221,
00A570: 38 36 2C 31 32 37 20 20 20 20 20 20 20 2F 2F 20 86,127 //
00A580: 6C 64 20 64 2C 28 69 78 2B 31 32 37 29 0D 0A 20 ld d,(ix+127)..
00A590: 20 49 4E 4C 49 4E 45 20 32 32 31 2C 39 34 2C 31 INLINE 221,94,1
00A5A0: 32 36 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 65 26 // ld e
00A5B0: 2C 28 69 78 2B 31 32 36 29 0D 0A 20 20 49 4E 4C ,(ix+126).. INL
00A5C0: 49 4E 45 20 32 32 31 2C 37 38 2C 31 32 34 20 20 INE 221,78,124
00A5D0: 20 20 20 20 20 2F 2F 20 6C 64 20 63 2C 28 69 78 // ld c,(ix
00A5E0: 2B 31 32 34 29 0D 0A 20 20 49 4E 4C 49 4E 45 20 +124).. INLINE
00A5F0: 32 32 31 2C 32 32 39 20 20 20 20 20 20 20 20 20 221,229
00A600: 69 74 65 63 68 28 32 36 2C 62 75 66 66 65 72 29 itech(26,buffer)
00A610: 0D 0A 20 20 55 4E 4C 45 53 53 20 62 75 66 66 65 .. UNLESS buffe
00A620: 72 21 31 37 20 3D 20 33 36 20 54 48 45 4E 20 77 r!17 = 36 THEN w
00A630: 72 69 74 65 73 65 63 74 6F 72 28 62 75 66 66 65 ritesector(buffe
00A640: 72 29 0D 0A 20 20 62 64 6F 73 61 28 40 63 2C 40 r).. bdosa(@c,@
00A650: 64 65 29 0D 0A 20 20 52 45 53 55 4C 54 49 53 20 de).. RESULTIS
00A660: 63 20 5C 3D 20 32 35 35 0D 0A 24 29 0D 0A 0D 0A c \= 255..$)....
00A670: 41 4E 44 20 72 65 61 64 73 65 63 74 6F 72 28 62 AND readsector(b
00A680: 75 66 66 65 72 29 20 3D 20 56 41 4C 4F 46 0D 0A uffer) = VALOF..
00A690: 24 28 0D 0A 20 20 4C 45 54 20 72 65 73 75 6C 74 $(.. LET result
00A6A0: 2C 20 62 75 66 66 20 3D 20 32 30 2C 20 62 75 66 , buff = 20, buf
00A6B0: 66 65 72 2A 32 0D 0A 20 20 62 64 6F 73 62 28 32 fer*2.. bdosb(2
00A6C0: 36 2C 20 62 75 66 66 65 72 2A 32 2B 33 36 29 0D 6, buffer*2+36).
00A6D0: 0A 20 20 62 64 6F 73 61 28 40 72 65 73 75 6C 74 . bdosa(@result
00A6E0: 2C 20 40 62 75 66 66 29 0D 0A 20 20 52 45 53 55 , @buff).. RESU
00A6F0: 4C 54 49 53 20 72 65 73 75 6C 74 20 3D 20 30 20 LTIS result = 0
00A700: 20 20 20 20 2F 2F 20 54 52 55 45 20 69 73 20 73 // TRUE is s
00A710: 75 63 63 65 73 73 66 75 6C 20 61 6E 64 20 6E 6F uccessful and no
00A720: 74 20 68 61 72 64 20 45 4F 46 0D 0A 24 29 0D 0A t hard EOF..$)..
00A730: 0D 0A 41 4E 44 20 77 72 69 74 65 73 65 63 74 6F ..AND writesecto
00A740: 72 28 62 75 66 66 65 72 29 20 3D 20 56 41 4C 4F r(buffer) = VALO
00A750: 46 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 72 65 73 F..$(.. LET res
00A760: 75 6C 74 2C 20 62 75 66 66 20 3D 20 32 31 2C 20 ult, buff = 21,
00A770: 62 75 66 66 65 72 2A 32 0D 0A 20 20 62 64 6F 73 buffer*2.. bdos
00A780: 62 28 32 36 2C 20 62 75 66 66 65 72 2A 32 2B 33 b(26, buffer*2+3
00A790: 36 29 0D 0A 20 20 62 64 6F 73 61 28 40 72 65 73 6).. bdosa(@res
00A7A0: 75 6C 74 2C 20 40 62 75 66 66 29 0D 0A 20 20 52 ult, @buff).. R
00A7B0: 45 53 55 4C 54 49 53 20 72 65 73 75 6C 74 20 3D ESULTIS result =
00A7C0: 20 30 20 20 20 20 20 20 2F 2F 20 54 52 55 45 20 0 // TRUE
00A7D0: 69 66 20 77 72 69 74 74 65 6E 20 73 75 63 63 65 if written succe
00A7E0: 73 73 66 75 6C 6C 79 0D 0A 24 29 0D 0A 0D 0A 41 ssfully..$)....A
00A7F0: 4E 44 20 73 65 74 66 63 62 28 6E 61 6D 65 2C 20 ND setfcb(name,
00A800: 20 2F 2F 20 70 75 73 68 20 69 78 0D 0A 20 20 49 // push ix.. I
00A810: 4E 4C 49 4E 45 20 32 30 35 2C 35 2C 30 20 20 20 NLINE 205,5,0
00A820: 20 20 20 20 20 20 20 2F 2F 20 63 61 6C 6C 20 62 // call b
00A830: 64 6F 73 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 32 dos.. INLINE 22
00A840: 31 2C 32 32 35 20 20 20 20 20 20 20 20 20 20 2F 1,225 /
00A850: 2F 20 70 6F 70 20 69 78 0D 0A 24 29 0D 0A 0D 0A / pop ix..$)....
00A860: 41 4E 44 20 62 69 6F 73 28 6E 2C 61 29 20 42 45 AND bios(n,a) BE
00A870: 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 73 61 76 65 ..$(.. LET save
00A880: 3D 56 45 43 20 31 0D 0A 20 20 73 61 76 65 25 30 =VEC 1.. save%0
00A890: 20 3A 3D 20 30 25 23 78 38 30 20 3B 20 73 61 76 := 0%#x80 ; sav
00A8A0: 65 25 31 20 3A 3D 20 30 25 23 78 38 31 20 3B 20 e%1 := 0%#x81 ;
00A8B0: 73 61 76 65 25 32 20 3A 3D 20 30 25 23 78 38 32 save%2 := 0%#x82
00A8C0: 0D 0A 20 20 30 25 23 78 38 30 20 3A 3D 20 23 78 .. 0%#x80 := #x
00A8D0: 43 33 0D 0A 20 20 30 25 23 78 38 31 20 3A 3D 20 C3.. 0%#x81 :=
00A8E0: 30 25 28 30 25 31 20 2B 20 32 35 36 2A 30 25 32 0%(0%1 + 256*0%2
00A8F0: 20 2B 20 28 6E 2D 31 29 2A 33 20 2B 31 29 0D 0A + (n-1)*3 +1)..
00A900: 20 20 30 25 23 78 38 32 20 3A 3D 20 30 25 28 30 0%#x82 := 0%(0
00A910: 25 31 20 2B 20 32 35 36 2A 30 25 32 20 2B 20 28 %1 + 256*0%2 + (
00A920: 6E 2D 31 29 2A 33 20 2B 32 29 0D 0A 20 20 49 4E n-1)*3 +2).. IN
00A930: 4C 49 4E 45 20 32 32 31 2C 32 32 39 20 20 20 20 LINE 221,229
00A940: 20 20 20 20 20 20 2F 2F 20 70 75 73 68 20 69 78 // push ix
00A950: 0D 0A 20 20 49 4E 4C 49 4E 45 20 23 78 43 44 2C .. INLINE #xCD,
00A960: 23 78 38 30 2C 23 78 30 30 20 20 20 2F 2F 20 63 #x80,#x00 // c
00A970: 61 6C 6C 20 62 69 6F 73 20 72 6F 75 74 69 6E 65 all bios routine
00A980: 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 32 31 2C 32 .. INLINE 221,2
00A990: 32 35 20 20 20 20 20 20 20 20 20 20 2F 2F 20 70 25 // p
00A9A0: 6F 70 20 69 78 0D 0A 20 20 49 4E 4C 49 4E 45 20 op ix.. INLINE
00A9B0: 32 32 31 2C 31 30 32 2C 31 32 37 20 20 20 20 20 221,102,127
00A9C0: 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 32 37 // ld h,(ix+127
00A9D0: 29 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 32 31 2C ).. INLINE 221,
00A9E0: 31 31 30 2C 31 32 36 20 20 20 20 20 20 2F 2F 20 110,126 //
00A9F0: 6C 64 20 6C 2C 28 69 78 2B 31 32 36 29 0D 0A 20 ld l,(ix+126)..
00AA00: 62 75 66 66 65 72 29 20 42 45 0D 0A 24 28 0D 0A buffer) BE..$(..
00AA10: 20 20 4C 45 54 20 6E 70 74 72 2C 20 66 70 74 72 LET nptr, fptr
00AA20: 2C 20 63 2C 20 64 72 76 66 6C 61 67 20 3D 20 31 , c, drvflag = 1
00AA30: 2C 20 31 2C 20 30 2C 20 54 52 55 45 0D 0A 20 20 , 1, 0, TRUE..
00AA40: 46 4F 52 20 69 20 3D 20 31 20 54 4F 20 31 31 20 FOR i = 1 TO 11
00AA50: 62 75 66 66 65 72 25 69 20 3A 3D 20 27 20 27 0D buffer%i := ' '.
00AA60: 0A 20 20 62 75 66 66 65 72 25 30 20 3A 3D 20 30 . buffer%0 := 0
00AA70: 0D 0A 20 20 57 48 49 4C 45 20 6E 70 74 72 20 3C .. WHILE nptr <
00AA80: 3D 20 6E 61 6D 65 25 30 20 44 4F 0D 0A 20 20 24 = name%0 DO.. $
00AA90: 28 0D 0A 20 20 20 20 63 20 3A 3D 20 75 70 70 65 (.. c := uppe
00AAA0: 72 63 61 73 65 28 6E 61 6D 65 25 6E 70 74 72 29 rcase(name%nptr)
00AAB0: 0D 0A 20 20 20 20 6E 70 74 72 20 3A 3D 20 6E 70 .. nptr := np
00AAC0: 74 72 20 2B 20 31 0D 0A 20 20 20 20 49 46 20 66 tr + 1.. IF f
00AAD0: 70 74 72 20 3D 20 32 20 4C 4F 47 41 4E 44 20 64 ptr = 2 LOGAND d
00AAE0: 72 76 66 6C 61 67 20 4C 4F 47 41 4E 44 20 63 20 rvflag LOGAND c
00AAF0: 3D 20 27 3A 27 20 54 48 45 4E 0D 0A 20 20 20 20 = ':' THEN..
00AB00: 24 28 0D 0A 20 20 20 20 20 20 62 75 66 66 65 72 $(.. buffer
00AB10: 25 30 20 3A 3D 20 62 75 66 66 65 72 25 31 20 2D %0 := buffer%1 -
00AB20: 20 27 41 27 20 2B 20 31 0D 0A 20 20 20 20 20 20 'A' + 1..
00AB30: 66 70 74 72 2C 20 64 72 76 66 6C 61 67 20 3A 3D fptr, drvflag :=
00AB40: 20 31 2C 20 46 41 4C 53 45 0D 0A 20 20 20 20 20 1, FALSE..
00AB50: 20 4C 4F 4F 50 0D 0A 20 20 20 20 24 29 0D 0A 20 LOOP.. $)..
00AB60: 20 20 20 49 46 20 63 20 3D 20 27 2E 27 20 54 48 IF c = '.' TH
00AB70: 45 4E 20 24 28 20 66 70 74 72 20 3A 3D 20 39 20 EN $( fptr := 9
00AB80: 3B 20 42 52 45 41 4B 20 24 29 0D 0A 20 20 20 20 ; BREAK $)..
00AB90: 49 46 20 66 70 74 72 20 3D 20 39 20 4C 4F 47 4F IF fptr = 9 LOGO
00ABA0: 52 20 63 20 3D 20 27 20 27 20 54 48 45 4E 20 42 R c = ' ' THEN B
00ABB0: 52 45 41 4B 0D 0A 20 20 20 20 62 75 66 66 65 72 REAK.. buffer
00ABC0: 25 66 70 74 72 20 3A 3D 20 63 0D 0A 20 20 20 20 %fptr := c..
00ABD0: 66 70 74 72 20 3A 3D 20 66 70 74 72 20 2B 20 31 fptr := fptr + 1
00ABE0: 0D 0A 20 20 24 29 0D 0A 20 20 49 46 20 63 20 3D .. $).. IF c =
00ABF0: 20 27 2E 27 20 54 48 45 4E 0D 0A 20 20 20 20 57 '.' THEN.. W
00AC00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
00AC10: 09 00 01 00 02 09 4E E5 09 00 C1 02 00 00 00 02 ......N.........
00AC20: 09 00 C6 02 00 00 00 02 09 00 C2 02 00 00 00 02 ................
00AC30: 09 00 C7 02 00 00 00 02 09 00 C3 02 00 00 00 02 ................
00AC40: 09 00 C8 02 00 00 00 02 09 00 C4 02 00 00 00 02 ................
00AC50: 09 00 C9 02 00 00 00 02 09 00 C5 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: 20 49 4E 4C 49 4E 45 20 34 31 20 20 20 20 20 20 INLINE 41
00AD10: 20 20 20 20 20 20 20 20 20 2F 2F 20 61 64 64 20 // add
00AD20: 68 6C 2C 68 6C 0D 0A 20 20 49 4E 4C 49 4E 45 20 hl,hl.. INLINE
00AD30: 31 31 39 20 20 20 20 20 20 20 20 20 20 20 20 20 119
00AD40: 20 2F 2F 20 6C 64 20 28 68 6C 29 2C 61 0D 0A 20 // ld (hl),a..
00AD50: 20 49 4E 4C 49 4E 45 20 33 35 20 20 20 20 20 20 INLINE 35
00AD60: 20 20 20 20 20 20 20 20 20 2F 2F 20 69 6E 63 20 // inc
00AD70: 68 6C 0D 0A 20 20 49 4E 4C 49 4E 45 20 35 34 2C hl.. INLINE 54,
00AD80: 30 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 0 //
00AD90: 20 6C 64 20 28 68 6C 29 2C 30 0D 0A 20 20 30 25 ld (hl),0.. 0%
00ADA0: 23 78 38 30 20 3A 3D 20 73 61 76 65 25 30 20 3B #x80 := save%0 ;
00ADB0: 20 30 25 23 78 38 31 20 3A 3D 20 73 61 76 65 25 0%#x81 := save%
00ADC0: 31 20 3B 20 30 25 23 78 38 32 20 3A 3D 20 73 61 1 ; 0%#x82 := sa
00ADD0: 76 65 25 32 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 ve%2..$)....AND
00ADE0: 73 65 6C 65 63 74 69 6E 70 75 74 28 73 74 72 65 selectinput(stre
00ADF0: 61 6D 29 20 20 42 45 20 72 65 61 64 73 74 72 65 am) BE readstre
00AE00: 61 6D 20 20 3A 3D 20 73 74 72 65 61 6D 0D 0A 41 am := stream..A
00AE10: 4E 44 20 73 65 6C 65 63 74 6F 75 74 70 75 74 28 ND selectoutput(
00AE20: 73 74 72 65 61 6D 29 20 42 45 20 77 72 69 74 65 stream) BE write
00AE30: 73 74 72 65 61 6D 20 3A 3D 20 73 74 72 65 61 6D stream := stream
00AE40: 0D 0A 41 4E 44 20 69 6E 70 75 74 28 29 20 20 3D ..AND input() =
00AE50: 20 72 65 61 64 73 74 72 65 61 6D 0D 0A 41 4E 44 readstream..AND
00AE60: 20 6F 75 74 70 75 74 28 29 20 3D 20 77 72 69 74 output() = writ
00AE70: 65 73 74 72 65 61 6D 0D 0A 41 4E 44 20 75 70 70 estream..AND upp
00AE80: 65 72 63 61 73 65 28 63 68 61 72 29 20 3D 20 27 ercase(char) = '
00AE90: 61 27 3C 3D 63 68 61 72 3C 3D 27 7A 27 20 2D 3E a'<=char<='z' ->
00AEA0: 20 63 68 61 72 20 2D 20 33 32 2C 20 63 68 61 72 char - 32, char
00AEB0: 0D 0A 41 4E 44 20 63 61 70 69 74 61 6C 63 68 28 ..AND capitalch(
00AEC0: 63 29 20 3D 20 75 70 70 65 72 63 61 73 65 28 63 c) = uppercase(c
00AED0: 29 0D 0A 41 4E 44 20 64 65 63 76 61 6C 28 64 69 )..AND decval(di
00AEE0: 67 69 74 29 20 3D 20 27 30 27 3C 3D 64 69 67 69 git) = '0'<=digi
00AEF0: 74 3C 3D 27 39 27 20 20 2D 3E 20 64 69 67 69 74 t<='9' -> digit
00AF00: 31 34 20 4E 20 53 20 22 5E 27 23 46 30 27 22 20 14 N S "^'#F0'"
00AF10: 63 75 72 73 6F 72 20 75 70 20 20 20 20 20 20 20 cursor up
00AF20: 20 20 20 20 4B 65 79 20 64 65 66 69 6E 69 74 69 Key definiti
00AF30: 6F 6E 73 20 66 6F 72 20 42 43 50 4C 20 65 64 69 ons for BCPL edi
00AF40: 74 6F 72 20 6F 6E 20 50 43 57 0D 0A 31 34 20 41 tor on PCW..14 A
00AF50: 20 22 5E 27 23 46 38 27 22 20 61 6C 74 2D 63 75 "^'#F8'" alt-cu
00AF60: 72 73 6F 72 20 75 70 0D 0A 36 20 4E 20 53 20 22 rsor up..6 N S "
00AF70: 5E 27 23 46 33 27 22 20 63 75 72 73 6F 72 20 72 ^'#F3'" cursor r
00AF80: 69 67 68 74 0D 0A 36 20 41 20 22 5E 27 23 46 42 ight..6 A "^'#FB
00AF90: 27 22 20 20 61 6C 74 2D 63 75 72 73 6F 72 20 72 '" alt-cursor r
00AFA0: 69 67 68 74 0D 0A 37 39 20 4E 20 53 20 22 5E 27 ight..79 N S "^'
00AFB0: 23 46 31 27 22 20 63 75 72 73 6F 72 20 64 6F 77 #F1'" cursor dow
00AFC0: 6E 0D 0A 37 39 20 41 20 22 5E 27 23 46 39 27 22 n..79 A "^'#F9'"
00AFD0: 20 61 6C 74 2D 63 75 72 73 6F 72 20 64 6F 77 6E alt-cursor down
00AFE0: 0D 0A 31 35 20 4E 20 53 20 22 5E 27 23 46 32 27 ..15 N S "^'#F2'
00AFF0: 22 20 63 75 72 73 6F 72 20 6C 65 66 74 0D 0A 31 " cursor left..1
00B000: 35 20 41 20 22 5E 27 23 46 41 27 22 20 61 6C 74 5 A "^'#FA'" alt
00B010: 2D 63 75 72 73 6F 72 20 6C 65 66 74 0D 0A 36 36 -cursor left..66
00B020: 20 4E 20 22 5E 27 23 46 43 27 22 20 73 74 6F 70 N "^'#FC'" stop
00B030: 0D 0A 32 36 20 41 20 22 5E 27 32 37 27 22 20 61 ..26 A "^'27'" a
00B040: 6C 74 2D 5B 0D 0A 31 37 20 41 20 22 5E 27 32 39 lt-[..17 A "^'29
00B050: 27 22 20 61 6C 74 2D 5D 0D 0A 0D 0A 1A 46 42 27 '" alt-].....FB'
00B060: 22 20 20 61 6C 74 2D 63 75 72 73 6F 72 20 72 69 " alt-cursor ri
00B070: 67 68 74 0D 0A 37 39 20 4E 20 53 20 22 5E 27 23 ght..79 N S "^'#
00B080: 6D 65 29 0D 0A 20 20 49 46 20 6F 75 74 6E 61 6D me).. IF outnam
00B090: 65 25 30 20 3D 20 30 20 54 48 45 4E 20 46 49 4E e%0 = 0 THEN FIN
00B0A0: 49 53 48 0D 0A 20 20 54 45 53 54 20 66 69 6E 64 ISH.. TEST find
00B0B0: 69 6E 70 75 74 28 69 6E 6E 61 6D 65 2C 20 69 6E input(inname, in
00B0C0: 62 75 66 66 29 20 54 48 45 4E 0D 0A 20 20 24 28 buff) THEN.. $(
00B0D0: 0D 0A 20 20 20 20 73 65 6C 65 63 74 69 6E 70 75 .. selectinpu
00B0E0: 74 28 69 6E 62 75 66 66 29 0D 0A 20 20 20 20 54 t(inbuff).. T
00B0F0: 45 53 54 20 66 69 6E 64 6F 75 74 70 75 74 28 6F EST findoutput(o
00B100: 2D 27 30 27 2C 20 64 69 67 69 74 2D 27 41 27 2B -'0', digit-'A'+
00B110: 31 30 0D 0A 0D 0A 1A 50 2F 4D 20 6C 69 62 72 61 10.....P/M libra
00B120: 72 79 20 68 65 61 64 65 72 2C 20 6C 61 73 74 20 ry header, last
00B130: 6D 6F 64 69 66 69 65 64 20 31 32 2F 31 31 2F 31 modified 12/11/1
00B140: 39 38 36 0D 0A 0D 0A 0D 0A 4D 41 4E 49 46 45 53 986......MANIFES
00B150: 54 20 24 28 20 62 79 74 65 73 70 65 72 77 6F 72 T $( bytesperwor
00B160: 64 20 3D 20 32 20 3B 20 62 69 74 73 70 65 72 77 d = 2 ; bitsperw
00B170: 6F 72 64 20 3D 20 31 36 0D 0A 20 20 20 20 20 20 ord = 16..
00B180: 20 20 20 20 20 20 73 6F 66 74 65 6F 66 63 68 20 softeofch
00B190: 3D 20 32 36 20 20 20 3B 20 65 6E 64 73 74 72 65 = 26 ; endstre
00B1A0: 61 6D 63 68 20 3D 20 2D 31 0D 0A 20 20 20 20 20 amch = -1..
00B1B0: 20 20 20 20 20 20 20 76 64 75 73 74 72 65 61 6D vdustream
00B1C0: 20 3D 20 30 20 20 20 20 3B 20 70 72 69 6E 74 73 = 0 ; prints
00B1D0: 74 72 65 61 6D 20 3D 20 31 0D 0A 20 20 20 20 20 tream = 1..
00B1E0: 20 20 20 20 20 20 20 6D 61 78 69 6E 74 20 3D 20 maxint =
00B1F0: 33 32 37 36 37 20 20 20 3B 20 6D 69 6E 69 6E 74 32767 ; minint
00B200: 20 3D 20 2D 33 32 37 36 38 0D 0A 20 20 20 20 20 = -32768..
00B210: 20 20 20 20 20 20 20 6E 65 77 6C 69 6E 65 63 68 newlinech
00B220: 20 3D 20 32 36 39 0D 0A 20 20 20 20 20 20 20 20 = 269..
00B230: 20 24 29 0D 0A 0D 0A 53 54 41 54 49 43 20 20 20 $)....STATIC
00B240: 24 28 20 72 65 61 64 73 74 72 65 61 6D 20 3D 20 $( readstream =
00B250: 30 20 3B 20 77 72 69 74 65 73 74 72 65 61 6D 20 0 ; writestream
00B260: 3D 20 30 0D 0A 20 20 20 20 20 20 20 20 20 20 20 = 0..
00B270: 20 72 65 74 75 72 6E 65 64 20 3D 20 30 20 20 20 returned = 0
00B280: 3B 20 6C 61 73 74 63 68 61 72 20 3D 20 30 0D 0A ; lastchar = 0..
00B290: 20 20 20 20 20 20 20 20 20 24 29 0D 0A 0D 0A 0D $).....
00B2A0: 0A 2F 2A 2A 2A 2A 20 4F 55 54 50 55 54 20 52 4F ./**** OUTPUT RO
00B2B0: 55 54 49 4E 45 53 20 2A 2A 2A 2A 2F 0D 0A 0D 0A UTINES ****/....
00B2C0: 4C 45 54 20 77 72 63 68 28 63 68 61 72 29 20 42 LET wrch(char) B
00B2D0: 45 0D 0A 24 28 0D 0A 20 20 53 57 49 54 43 48 4F E..$(.. SWITCHO
00B2E0: 4E 20 77 72 69 74 65 73 74 72 65 61 6D 20 49 4E N writestream IN
00B2F0: 54 4F 0D 0A 20 20 24 28 0D 0A 20 20 20 20 20 43 TO.. $(.. C
00B300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B3A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B3B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B3C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B3D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B3E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B3F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B4A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B4B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B4C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B4D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B4E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B4F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B5A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B5B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B5C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B5D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B5E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B5F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B6A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B6B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B6C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B6D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B6E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B6F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B700: 2F 2A 20 42 43 50 4C 20 64 65 62 75 67 20 70 72 /* BCPL debug pr
00B710: 6F 63 65 64 75 72 65 20 30 32 2F 31 31 2F 31 39 ocedure 02/11/19
00B720: 38 36 20 2A 2F 0D 0A 0D 0A 2F 2A 20 20 20 20 20 86 */..../*
00B730: 20 64 65 62 75 67 28 6F 70 74 2C 6E 2C 64 31 2C debug(opt,n,d1,
00B740: 64 32 2C 64 33 2C 64 34 2C 64 35 2C 64 36 2C 64 d2,d3,d4,d5,d6,d
00B750: 37 2C 64 38 2C 64 39 2C 64 31 30 2C 64 31 31 2C 7,d8,d9,d10,d11,
00B760: 64 31 32 29 0D 0A 0D 0A 20 20 20 20 20 20 20 20 d12)....
00B770: 54 68 65 20 66 69 72 73 74 20 70 61 72 61 6D 65 The first parame
00B780: 74 65 72 20 73 70 65 63 69 66 69 65 73 20 74 68 ter specifies th
00B790: 65 20 72 65 71 75 69 72 65 64 20 6F 70 74 69 6F e required optio
00B7A0: 6E 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 n.....
00B7B0: 20 20 20 20 20 20 20 30 20 3A 20 70 61 75 73 65 0 : pause
00B7C0: 20 65 78 65 63 75 74 69 6F 6E 2C 20 77 61 69 74 execution, wait
00B7D0: 20 66 6F 72 20 61 20 6B 65 79 20 74 6F 20 62 65 for a key to be
00B7E0: 20 70 72 65 73 73 65 64 0D 0A 20 20 20 20 20 20 pressed..
00B7F0: 20 20 20 20 20 20 20 20 20 20 20 31 20 3A 20 64 1 : d
00B800: 69 73 70 6C 61 79 20 76 61 6C 75 65 73 20 6F 66 isplay values of
00B810: 20 76 61 72 69 61 62 6C 65 73 20 69 6E 20 64 65 variables in de
00B820: 63 69 6D 61 6C 0D 0A 20 20 20 20 20 20 20 20 20 cimal..
00B830: 20 20 20 20 20 20 20 2D 31 20 3A 20 64 69 73 70 -1 : disp
00B840: 6C 61 79 20 6E 61 6D 65 73 20 61 6E 64 20 76 61 lay names and va
00B850: 6C 75 65 73 20 6F 66 20 76 61 72 69 61 62 6C 65 lues of variable
00B860: 73 20 69 6E 20 64 65 63 69 6D 61 6C 0D 0A 20 20 s in decimal..
00B870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32 2
00B880: 20 3A 20 64 69 73 70 6C 61 79 20 76 61 6C 75 65 : display value
00B890: 20 6F 66 20 73 74 72 69 6E 67 73 0D 0A 20 20 20 of strings..
00B8A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2D 32 20 -2
00B8B0: 3A 20 64 69 73 70 6C 61 79 20 6E 61 6D 65 20 61 : display name a
00B8C0: 6E 64 20 76 61 6C 75 65 20 6F 66 20 73 74 72 69 nd value of stri
00B8D0: 6E 67 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ngs..
00B8E0: 20 20 20 20 20 20 33 20 3A 20 64 69 73 70 6C 61 3 : displa
00B8F0: 79 20 63 6F 6E 74 65 6E 74 73 20 6F 66 20 76 65 y contents of ve
00B900: 2F 2A 20 54 68 69 73 20 69 73 20 61 20 63 6F 70 /* This is a cop
00B910: 79 20 72 6F 75 74 69 6E 65 2E 20 4C 61 73 74 20 y routine. Last
00B920: 6D 6F 64 69 66 69 65 64 20 30 35 2F 31 31 2F 31 modified 05/11/1
00B930: 39 38 36 20 2A 2F 0D 0A 0D 0A 6F 70 74 69 6F 6E 986 */....option
00B940: 20 62 2D 0D 0A 0D 0A 2F 2A 20 49 6E 63 6C 75 64 b-..../* Includ
00B950: 65 20 74 68 65 20 6C 69 62 72 61 72 79 20 2A 2F e the library */
00B960: 0D 0A 0D 0A 47 45 54 20 22 63 6C 69 62 68 64 72 ....GET "clibhdr
00B970: 22 0D 0A 0D 0A 4C 45 54 20 73 74 61 72 74 28 29 "....LET start()
00B980: 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 54 BE....$(.. LET
00B990: 20 69 6E 6E 61 6D 65 20 3D 20 56 45 43 20 32 30 inname = VEC 20
00B9A0: 0D 0A 20 20 4C 45 54 20 69 6E 62 75 66 66 20 3D .. LET inbuff =
00B9B0: 20 56 45 43 20 38 32 0D 0A 20 20 4C 45 54 20 6F VEC 82.. LET o
00B9C0: 75 74 6E 61 6D 65 20 3D 20 56 45 43 20 32 30 0D utname = VEC 20.
00B9D0: 0A 20 20 4C 45 54 20 6F 75 74 62 75 66 66 20 3D . LET outbuff =
00B9E0: 20 56 45 43 20 38 32 0D 0A 20 20 4C 45 54 20 63 VEC 82.. LET c
00B9F0: 20 3D 20 30 0D 0A 20 20 77 72 69 74 65 73 28 22 = 0.. writes("
00BA00: 49 6E 70 75 74 20 66 69 6C 65 20 6E 61 6D 65 3A Input file name:
00BA10: 20 20 22 29 0D 0A 20 20 72 65 61 64 73 28 69 6E ").. reads(in
00BA20: 6E 61 6D 65 29 0D 0A 20 20 49 46 20 69 6E 6E 61 name).. IF inna
00BA30: 6D 65 25 30 20 3D 20 30 20 54 48 45 4E 20 46 49 me%0 = 0 THEN FI
00BA40: 4E 49 53 48 0D 0A 20 20 6E 65 77 6C 69 6E 65 28 NISH.. newline(
00BA50: 29 0D 0A 20 20 77 72 69 74 65 73 28 22 4F 75 74 ).. writes("Out
00BA60: 70 75 74 20 66 69 6C 65 20 6E 61 6D 65 3A 20 22 put file name: "
00BA70: 29 0D 0A 20 20 72 65 61 64 73 28 6F 75 74 6E 61 ).. reads(outna
00BA80: 6D 65 29 0D 0A 20 20 49 46 20 6F 75 74 6E 61 6D me).. IF outnam
00BA90: 65 25 30 20 3D 20 30 20 54 48 45 4E 20 46 49 4E e%0 = 0 THEN FIN
00BAA0: 49 53 48 0D 0A 20 20 54 45 53 54 20 66 69 6E 64 ISH.. TEST find
00BAB0: 69 6E 70 75 74 28 69 6E 6E 61 6D 65 2C 20 69 6E input(inname, in
00BAC0: 62 75 66 66 29 20 54 48 45 4E 0D 0A 20 20 24 28 buff) THEN.. $(
00BAD0: 0D 0A 20 20 20 20 73 65 6C 65 63 74 69 6E 70 75 .. selectinpu
00BAE0: 74 28 69 6E 62 75 66 66 29 0D 0A 20 20 20 20 54 t(inbuff).. T
00BAF0: 45 53 54 20 66 69 6E 64 6F 75 74 70 75 74 28 6F EST findoutput(o
00BB00: 63 74 6F 72 73 0D 0A 20 20 20 20 20 20 20 20 20 ctors..
00BB10: 20 20 20 20 20 20 20 2D 33 20 3A 20 64 69 73 70 -3 : disp
00BB20: 6C 61 79 20 6E 61 6D 65 20 61 6E 64 20 63 6F 6E lay name and con
00BB30: 74 65 6E 74 73 20 6F 66 20 76 65 63 74 6F 72 73 tents of vectors
00BB40: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
00BB50: 20 20 20 34 20 3A 20 64 69 73 70 6C 61 79 20 76 4 : display v
00BB60: 61 6C 75 65 73 20 6F 66 20 76 61 72 69 61 62 6C alues of variabl
00BB70: 65 73 20 69 6E 20 68 65 78 61 64 65 63 69 6D 61 es in hexadecima
00BB80: 6C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 l..
00BB90: 20 20 20 2D 34 20 3A 20 64 69 73 70 6C 61 79 20 -4 : display
00BBA0: 6E 61 6D 65 73 20 61 6E 64 20 76 61 6C 75 65 73 names and values
00BBB0: 20 6F 66 20 76 61 72 69 61 62 6C 65 73 20 69 6E of variables in
00BBC0: 20 68 65 78 61 64 65 63 69 6D 61 6C 0D 0A 0D 0A hexadecimal....
00BBD0: 0D 0A 20 20 20 20 20 20 20 20 54 68 65 20 73 65 .. The se
00BBE0: 63 6F 6E 64 20 70 61 72 61 6D 65 74 65 72 20 28 cond parameter (
00BBF0: 6E 29 20 69 73 20 74 68 65 20 6E 75 6D 62 65 72 n) is the number
00BC00: 20 6F 66 20 76 61 72 69 61 62 6C 65 73 20 6F 72 of variables or
00BC10: 20 73 74 72 69 6E 67 73 0D 0A 20 20 20 20 20 20 strings..
00BC20: 20 20 6F 72 20 76 65 63 74 6F 72 73 20 74 6F 20 or vectors to
00BC30: 62 65 20 64 69 73 70 6C 61 79 65 64 2E 0D 0A 0D be displayed....
00BC40: 0A 20 20 20 20 20 20 20 20 49 66 20 6F 70 74 20 . If opt
00BC50: 69 73 20 70 6F 73 69 74 69 76 65 20 74 68 65 72 is positive ther
00BC60: 65 20 66 6F 6C 6C 6F 77 73 20 61 20 6C 69 73 74 e follows a list
00BC70: 20 6F 66 20 69 64 65 6E 74 69 66 69 65 72 73 2E of identifiers.
00BC80: 0D 0A 20 20 20 20 20 20 20 20 49 66 20 6F 70 74 .. If opt
00BC90: 20 69 73 20 6E 65 67 61 74 69 76 65 20 74 68 65 is negative the
00BCA0: 72 65 20 66 6F 6C 6C 6F 77 73 20 61 20 6C 69 73 re follows a lis
00BCB0: 74 20 6F 66 20 70 61 69 72 73 20 2D 20 61 20 73 t of pairs - a s
00BCC0: 74 72 69 6E 67 0D 0A 20 20 20 20 20 20 20 20 67 tring.. g
00BCD0: 69 76 69 6E 67 20 74 68 65 20 69 64 65 6E 74 69 iving the identi
00BCE0: 66 69 65 72 20 6E 61 6D 65 20 61 6E 64 20 74 68 fier name and th
00BCF0: 65 20 69 64 65 6E 74 69 66 69 65 72 2E 0D 0A 0D e identifier....
00BD00: 75 74 6E 61 6D 65 2C 20 6F 75 74 62 75 66 66 29 utname, outbuff)
00BD10: 20 54 48 45 4E 0D 0A 20 20 20 20 24 28 0D 0A 20 THEN.. $(..
00BD20: 20 20 20 20 20 73 65 6C 65 63 74 6F 75 74 70 75 selectoutpu
00BD30: 74 28 6F 75 74 62 75 66 66 29 0D 0A 20 20 20 20 t(outbuff)..
00BD40: 20 20 24 28 0D 0A 20 20 20 20 20 20 20 20 63 20 $(.. c
00BD50: 3A 3D 20 72 64 63 68 28 29 0D 0A 20 20 20 20 20 := rdch()..
00BD60: 20 20 20 55 4E 4C 45 53 53 20 63 3D 65 6E 64 73 UNLESS c=ends
00BD70: 74 72 65 61 6D 63 68 20 44 4F 20 77 72 63 68 28 treamch DO wrch(
00BD80: 63 29 0D 0A 20 20 20 20 20 20 24 29 0D 0A 20 20 c).. $)..
00BD90: 20 20 20 20 52 45 50 45 41 54 55 4E 54 49 4C 20 REPEATUNTIL
00BDA0: 63 20 3D 20 65 6E 64 73 74 72 65 61 6D 63 68 0D c = endstreamch.
00BDB0: 0A 20 20 20 20 20 20 65 6E 64 77 72 69 74 65 28 . endwrite(
00BDC0: 29 0D 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45 ).. $).. E
00BDD0: 4C 53 45 20 77 72 69 74 65 73 28 22 43 61 6E 27 LSE writes("Can'
00BDE0: 74 20 6F 70 65 6E 20 6F 75 74 70 75 74 20 66 69 t open output fi
00BDF0: 6C 65 22 29 0D 0A 20 20 20 20 65 6E 64 72 65 61 le").. endrea
00BE00: 64 28 29 0D 0A 20 20 24 29 0D 0A 20 20 45 4C 53 d().. $).. ELS
00BE10: 45 20 77 72 69 74 65 73 28 22 43 61 6E 27 74 20 E writes("Can't
00BE20: 6F 70 65 6E 20 69 6E 70 75 74 20 66 69 6C 65 22 open input file"
00BE30: 29 0D 0A 24 29 0D 0A 2E 0D 0A 0D 0A 1A 69 6F 6E )..$)........ion
00BE40: 20 62 2D 0D 0A 0D 0A 2F 2A 20 49 6E 63 6C 75 64 b-..../* Includ
00BE50: 65 20 74 68 65 20 6C 69 62 72 61 72 79 20 2A 2F e the library */
00BE60: 0D 0A 0D 0A 47 45 54 20 22 63 6C 69 62 68 64 72 ....GET "clibhdr
00BE70: 22 0D 0A 0D 0A 4C 45 54 20 73 74 61 72 74 28 29 "....LET start()
00BE80: 6D 65 29 0D 0A 20 20 49 46 20 6F 75 74 6E 61 6D me).. IF outnam
00BE90: 65 25 30 20 3D 20 30 20 54 48 45 4E 20 46 49 4E e%0 = 0 THEN FIN
00BEA0: 49 53 48 0D 0A 20 20 54 45 53 54 20 66 69 6E 64 ISH.. TEST find
00BEB0: 69 6E 70 75 74 28 69 6E 6E 61 6D 65 2C 20 69 6E input(inname, in
00BEC0: 62 75 66 66 29 20 54 48 45 4E 0D 0A 20 20 24 28 buff) THEN.. $(
00BED0: 0D 0A 20 20 20 20 73 65 6C 65 63 74 69 6E 70 75 .. selectinpu
00BEE0: 74 28 69 6E 62 75 66 66 29 0D 0A 20 20 20 20 54 t(inbuff).. T
00BEF0: 45 53 54 20 66 69 6E 64 6F 75 74 70 75 74 28 6F EST findoutput(o
00BF00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
00BF10: 0A 00 01 00 02 09 4E E5 0A 00 C1 02 00 00 00 02 ......N.........
00BF20: 0A 00 C6 02 00 00 00 02 0A 00 C2 02 00 00 00 02 ................
00BF30: 0A 00 C7 02 00 00 00 02 0A 00 C3 02 00 00 00 02 ................
00BF40: 0A 00 C8 02 00 00 00 02 0A 00 C4 02 00 00 00 02 ................
00BF50: 0A 00 C9 02 00 00 00 02 0A 00 C5 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: 0A 20 20 20 20 20 20 20 20 46 6F 72 20 6F 70 74 . For opt
00C010: 69 6F 6E 73 20 33 20 61 6E 64 20 2D 33 20 65 61 ions 3 and -3 ea
00C020: 63 68 20 69 64 65 6E 74 69 66 69 65 72 20 69 73 ch identifier is
00C030: 20 66 6F 6C 6C 6F 77 65 64 20 62 79 20 74 68 65 followed by the
00C040: 20 6C 65 6E 67 74 68 20 6F 66 0D 0A 20 20 20 20 length of..
00C050: 20 20 20 20 74 68 65 20 76 65 63 74 6F 72 2C 20 the vector,
00C060: 74 68 61 74 20 69 73 20 74 68 65 20 6E 75 6D 62 that is the numb
00C070: 65 72 20 6F 66 20 62 79 74 65 73 20 74 6F 20 64 er of bytes to d
00C080: 69 73 70 6C 61 79 2E 0D 0A 0D 0A 20 20 20 20 20 isplay.....
00C090: 20 20 20 45 78 61 6D 70 6C 65 73 3A 0D 0A 20 20 Examples:..
00C0A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C0B0: 20 20 20 20 20 20 64 65 62 75 67 28 31 2C 33 2C debug(1,3,
00C0C0: 76 61 72 31 2C 76 61 72 32 2C 76 61 72 33 29 0D var1,var2,var3).
00C0D0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
00C0E0: 20 20 20 20 20 20 20 20 20 64 65 62 75 67 28 2D debug(-
00C0F0: 31 2C 33 2C 22 76 61 72 31 22 2C 76 61 72 31 2C 1,3,"var1",var1,
00C100: 22 76 61 72 32 22 2C 76 61 72 32 2C 22 76 61 72 "var2",var2,"var
00C110: 33 22 2C 76 61 72 33 29 0D 0A 20 20 20 20 20 20 3",var3)..
00C120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C130: 20 20 64 65 62 75 67 28 32 2C 31 2C 73 74 72 29 debug(2,1,str)
00C140: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
00C150: 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 28 debug(
00C160: 2D 32 2C 32 2C 22 73 74 72 31 22 2C 73 74 72 31 -2,2,"str1",str1
00C170: 2C 22 73 74 72 32 22 2C 73 74 72 32 29 0D 0A 20 ,"str2",str2)..
00C180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C190: 20 20 20 20 20 20 20 64 65 62 75 67 28 33 2C 31 debug(3,1
00C1A0: 2C 76 65 63 74 6F 72 2C 33 32 29 0D 0A 20 20 20 ,vector,32)..
00C1B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C1C0: 20 20 20 20 20 64 65 62 75 67 28 2D 33 2C 31 2C debug(-3,1,
00C1D0: 22 76 65 63 74 6F 72 22 2C 76 65 63 74 6F 72 2C "vector",vector,
00C1E0: 33 32 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 32)..
00C1F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 deb
00C200: 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 )..
00C210: 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 write
00C220: 73 28 22 20 3D 20 22 29 20 3B 20 77 72 63 68 28 s(" = ") ; wrch(
00C230: 27 22 27 29 0D 0A 20 20 20 20 20 20 20 20 20 20 '"')..
00C240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 72 wr
00C250: 69 74 65 73 28 70 61 72 6D 21 31 29 20 3B 20 77 ites(parm!1) ; w
00C260: 72 63 68 28 27 22 27 29 0D 0A 20 20 20 20 20 20 rch('"')..
00C270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C280: 20 20 6E 65 77 6C 69 6E 65 28 29 0D 0A 20 20 20 newline()..
00C290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C2A0: 20 20 20 20 20 70 61 72 6D 20 3A 3D 20 70 61 72 parm := par
00C2B0: 6D 20 2B 20 32 0D 0A 20 20 20 20 20 20 20 20 20 m + 2..
00C2C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 E
00C2D0: 4E 44 43 41 53 45 0D 0A 0D 0A 20 20 20 20 20 20 NDCASE....
00C2E0: 20 20 20 20 20 20 20 20 20 20 43 41 53 45 20 33 CASE 3
00C2F0: 3A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 :..
00C300: 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 debug
00C310: 76 65 63 74 6F 72 28 21 70 61 72 6D 2C 70 61 72 vector(!parm,par
00C320: 6D 21 31 29 0D 0A 20 20 20 20 20 20 20 20 20 20 m!1)..
00C330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 pa
00C340: 72 6D 20 3A 3D 20 70 61 72 6D 20 2B 20 32 0D 0A rm := parm + 2..
00C350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C360: 20 20 20 20 20 20 20 20 45 4E 44 43 41 53 45 0D ENDCASE.
00C370: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
00C380: 20 20 20 43 41 53 45 20 2D 33 3A 0D 0A 20 20 20 CASE -3:..
00C390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C3A0: 20 20 20 20 20 77 72 69 74 65 73 28 21 70 61 72 writes(!par
00C3B0: 6D 29 20 3B 20 6E 65 77 6C 69 6E 65 28 29 0D 0A m) ; newline()..
00C3C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C3D0: 20 20 20 20 20 20 20 20 64 65 62 75 67 76 65 63 debugvec
00C3E0: 74 6F 72 28 70 61 72 6D 21 31 2C 70 61 72 6D 21 tor(parm!1,parm!
00C3F0: 32 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 2)..
00C400: 75 67 28 34 2C 32 2C 68 65 78 31 2C 68 65 78 32 ug(4,2,hex1,hex2
00C410: 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 )..
00C420: 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 debug
00C430: 28 2D 34 2C 33 2C 22 68 65 78 31 22 2C 68 65 78 (-4,3,"hex1",hex
00C440: 31 2C 22 68 65 78 32 22 2C 68 65 78 32 2C 22 68 1,"hex2",hex2,"h
00C450: 65 78 33 22 2C 68 65 78 33 29 0D 0A 2A 2F 0D 0A ex3",hex3)..*/..
00C460: 0D 0A 0D 0A 41 4E 44 20 64 65 62 75 67 28 6F 70 ....AND debug(op
00C470: 74 2C 6E 2C 64 31 2C 64 32 2C 64 33 2C 64 34 2C t,n,d1,d2,d3,d4,
00C480: 64 35 2C 64 36 2C 64 37 2C 64 38 2C 64 39 2C 64 d5,d6,d7,d8,d9,d
00C490: 31 30 2C 64 31 31 2C 64 31 32 29 20 62 65 0D 0A 10,d11,d12) be..
00C4A0: 0D 0A 24 28 20 20 20 20 20 20 4D 41 4E 49 46 45 ..$( MANIFE
00C4B0: 53 54 20 24 28 20 65 73 63 61 70 65 3D 23 78 46 ST $( escape=#xF
00C4C0: 43 20 3B 20 73 74 6F 70 3D 33 20 24 29 0D 0A 20 C ; stop=3 $)..
00C4D0: 20 20 20 20 20 20 20 4C 45 54 20 70 61 72 6D 2C LET parm,
00C4E0: 20 63 68 2C 20 6C 65 6E 20 3D 20 40 64 31 2C 20 ch, len = @d1,
00C4F0: 3F 2C 20 3F 0D 0A 20 20 20 20 20 20 20 20 4C 45 ?, ?.. LE
00C500: 54 20 77 72 6E 75 6D 2C 20 77 72 77 69 64 20 3D T wrnum, wrwid =
00C510: 20 77 72 69 74 65 64 2C 20 30 0D 0A 20 20 20 20 writed, 0..
00C520: 20 20 20 20 53 57 49 54 43 48 4F 4E 20 28 6F 70 SWITCHON (op
00C530: 74 3E 30 20 2D 3E 20 6F 70 74 2C 20 2D 6F 70 74 t>0 -> opt, -opt
00C540: 29 20 49 4E 54 4F 0D 0A 20 20 20 20 20 20 20 20 ) INTO..
00C550: 24 28 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 $(..
00C560: 20 20 20 20 43 41 53 45 20 31 20 3A 20 77 72 69 CASE 1 : wri
00C570: 74 65 73 28 22 2A 6E 42 43 50 4C 20 44 65 62 75 tes("*nBCPL Debu
00C580: 67 2E 20 56 61 72 69 61 62 6C 65 20 76 61 6C 75 g. Variable valu
00C590: 65 73 3A 20 22 29 0D 0A 20 20 20 20 20 20 20 20 es: ")..
00C5A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C5B0: 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 20 ENDCASE..
00C5C0: 20 20 20 20 20 20 20 20 20 20 43 41 53 45 20 32 CASE 2
00C5D0: 20 3A 20 77 72 69 74 65 73 28 22 2A 6E 42 43 50 : writes("*nBCP
00C5E0: 4C 20 44 65 62 75 67 2E 20 53 74 72 69 6E 67 20 L Debug. String
00C5F0: 63 6F 6E 74 65 6E 74 73 3A 20 22 29 0D 0A 20 20 contents: ")..
00C600: 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 6D parm
00C610: 20 3A 3D 20 70 61 72 6D 20 2B 20 33 0D 0A 20 20 := parm + 3..
00C620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C630: 20 20 20 20 20 20 45 4E 44 43 41 53 45 0D 0A 0D ENDCASE...
00C640: 0A 20 20 20 20 20 20 20 20 20 20 20 20 24 29 0D . $).
00C650: 0A 20 20 20 20 20 20 20 20 24 29 0D 0A 20 20 20 . $)..
00C660: 20 20 20 20 20 49 46 20 6F 70 74 20 3E 20 30 20 IF opt > 0
00C670: 26 20 6F 70 74 20 6E 65 20 33 20 44 4F 20 6E 65 & opt ne 3 DO ne
00C680: 77 6C 69 6E 65 28 29 0D 0A 24 29 0D 0A 0D 0A 41 wline()..$)....A
00C690: 4E 44 20 64 65 62 75 67 76 65 63 74 6F 72 28 61 ND debugvector(a
00C6A0: 64 64 72 2C 6C 65 6E 29 20 42 45 0D 0A 0D 0A 24 ddr,len) BE....$
00C6B0: 28 20 20 20 20 20 20 4C 45 54 20 61 73 63 69 69 ( LET ascii
00C6C0: 20 3D 20 76 65 63 20 31 36 0D 0A 20 20 20 20 20 = vec 16..
00C6D0: 20 20 20 4C 45 54 20 61 73 63 70 74 72 2C 20 6C LET ascptr, l
00C6E0: 69 6E 65 2C 20 63 68 20 3D 20 31 2C 20 30 2C 20 ine, ch = 1, 0,
00C6F0: 30 0D 0A 20 20 20 20 20 20 20 20 61 73 63 69 69 0.. ascii
00C700: 25 30 20 3A 3D 20 31 36 0D 0A 20 20 20 20 20 20 %0 := 16..
00C710: 20 20 46 4F 52 20 6C 69 6E 65 20 3D 20 30 20 54 FOR line = 0 T
00C720: 4F 20 28 6C 65 6E 2D 31 29 2F 31 36 20 44 4F 0D O (len-1)/16 DO.
00C730: 0A 20 20 20 20 20 20 20 20 24 28 20 20 20 20 20 . $(
00C740: 20 77 72 69 74 65 73 28 22 20 20 22 29 0D 0A 20 writes(" ")..
00C750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 w
00C760: 72 69 74 65 68 65 78 28 32 2A 61 64 64 72 2B 6C ritehex(2*addr+l
00C770: 69 6E 65 2A 31 36 2C 34 29 20 20 20 20 20 20 2F ine*16,4) /
00C780: 2F 20 6E 6F 74 65 20 32 2A 61 64 64 72 20 69 73 / note 2*addr is
00C790: 20 70 68 79 73 69 63 61 6C 20 61 64 64 72 0D 0A physical addr..
00C7A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C7B0: 77 72 69 74 65 73 28 22 20 20 22 29 0D 0A 20 20 writes(" ")..
00C7C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 73 as
00C7D0: 63 70 74 72 20 3A 3D 20 31 0D 0A 20 20 20 20 20 cptr := 1..
00C7E0: 20 20 20 20 20 20 20 20 20 20 20 46 4F 52 20 62 FOR b
00C7F0: 79 74 65 20 3D 20 30 20 54 4F 20 31 35 20 44 4F yte = 0 TO 15 DO
00C800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C810: 20 20 20 20 20 20 20 45 4E 44 43 41 53 45 0D 0A ENDCASE..
00C820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C830: 43 41 53 45 20 33 20 3A 20 77 72 69 74 65 73 28 CASE 3 : writes(
00C840: 22 2A 6E 42 43 50 4C 20 44 65 62 75 67 2E 20 56 "*nBCPL Debug. V
00C850: 65 63 74 6F 72 20 63 6F 6E 74 65 6E 74 73 3A 20 ector contents:
00C860: 22 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ")..
00C870: 20 20 20 20 20 20 20 20 20 20 20 20 20 45 4E 44 END
00C880: 43 41 53 45 0D 0A 20 20 20 20 20 20 20 20 20 20 CASE..
00C890: 20 20 20 20 20 20 43 41 53 45 20 34 20 3A 20 77 CASE 4 : w
00C8A0: 72 69 74 65 73 28 22 2A 6E 42 43 50 4C 20 44 65 rites("*nBCPL De
00C8B0: 62 75 67 2E 20 56 61 72 69 61 62 6C 65 20 76 61 bug. Variable va
00C8C0: 6C 75 65 73 2C 20 68 65 78 3A 20 22 29 0D 0A 20 lues, hex: ")..
00C8D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C8E0: 20 20 20 20 20 20 20 20 77 72 6E 75 6D 20 3A 3D wrnum :=
00C8F0: 20 77 72 69 74 65 68 65 78 0D 0A 20 20 20 20 20 writehex..
00C900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C910: 20 20 20 20 77 72 77 69 64 20 3A 3D 20 34 0D 0A wrwid := 4..
00C920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C930: 20 20 20 20 20 20 20 20 20 45 4E 44 43 41 53 45 ENDCASE
00C940: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
00C950: 20 20 44 45 46 41 55 4C 54 3A 0D 0A 20 20 20 20 DEFAULT:..
00C960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C970: 20 20 20 20 77 72 69 74 65 73 28 22 2A 6E 50 72 writes("*nPr
00C980: 65 73 73 20 61 20 6B 65 79 20 74 6F 20 72 65 73 ess a key to res
00C990: 75 6D 65 20 65 78 65 63 75 74 69 6F 6E 3A 20 22 ume execution: "
00C9A0: 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 )..
00C9B0: 20 20 20 20 20 20 20 20 20 20 20 63 68 3A 3D 72 ch:=r
00C9C0: 64 63 68 28 29 20 3B 20 49 46 20 63 68 3D 65 73 dch() ; IF ch=es
00C9D0: 63 61 70 65 20 7C 20 63 68 3D 73 74 6F 70 20 20 cape | ch=stop
00C9E0: 74 68 65 6E 20 46 49 4E 49 53 48 0D 0A 20 20 20 then FINISH..
00C9F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00CA00: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
00CA10: 20 20 24 28 20 20 20 20 20 20 63 68 20 3A 3D 20 $( ch :=
00CA20: 61 64 64 72 25 28 6C 69 6E 65 2A 31 36 2B 62 79 addr%(line*16+by
00CA30: 74 65 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 te)..
00CA40: 20 20 20 20 20 20 20 20 20 20 20 20 20 77 72 69 wri
00CA50: 74 65 68 65 78 28 63 68 2C 32 29 0D 0A 20 20 20 tehex(ch,2)..
00CA60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00CA70: 20 20 20 20 20 77 72 63 68 28 27 20 27 29 0D 0A wrch(' ')..
00CA80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00CA90: 20 20 20 20 20 20 20 20 49 46 20 62 79 74 65 3D IF byte=
00CAA0: 37 20 74 68 65 6E 20 77 72 63 68 28 27 20 27 29 7 then wrch(' ')
00CAB0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
00CAC0: 20 20 20 20 20 20 20 20 20 20 61 73 63 69 69 25 ascii%
00CAD0: 61 73 63 70 74 72 20 3A 3D 20 28 33 31 3C 63 68 ascptr := (31<ch
00CAE0: 3C 31 32 38 29 20 2D 3E 20 63 68 20 2C 20 27 2E <128) -> ch , '.
00CAF0: 27 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 '..
00CB00: 20 20 20 20 20 20 20 20 20 20 20 61 73 63 70 74 ascpt
00CB10: 72 20 3A 3D 20 61 73 63 70 74 72 20 2B 20 31 0D r := ascptr + 1.
00CB20: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
00CB30: 20 24 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 $)..
00CB40: 20 20 20 20 20 77 72 63 68 28 27 20 27 29 0D 0A wrch(' ')..
00CB50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00CB60: 77 72 69 74 65 73 28 61 73 63 69 69 29 0D 0A 20 writes(ascii)..
00CB70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6E n
00CB80: 65 77 6C 69 6E 65 28 29 0D 0A 20 20 20 20 20 20 ewline()..
00CB90: 20 20 24 29 0D 0A 24 29 0D 0A 1A 31 30 2F 31 39 $)..$)...10/19
00CBA0: 38 36 20 2A 2F 0D 0A 0D 0A 2F 2A 20 20 20 20 20 86 */..../*
00CBB0: 20 64 65 62 75 67 28 6F 70 74 2C 6E 2C 64 31 2C debug(opt,n,d1,
00CBC0: 64 32 2C 64 33 2C 64 34 2C 64 35 2C 64 36 2C 64 d2,d3,d4,d5,d6,d
00CBD0: 37 2C 64 38 2C 64 39 2C 64 31 30 2C 64 31 31 2C 7,d8,d9,d10,d11,
00CBE0: 64 31 32 29 0D 0A 0D 0A 20 20 20 20 20 20 20 20 d12)....
00CBF0: 54 68 65 20 66 69 72 73 74 20 70 61 72 61 6D 65 The first parame
00CC00: 20 20 20 20 20 6E 65 77 6C 69 6E 65 28 29 0D 0A newline()..
00CC10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00CC20: 20 20 20 20 20 20 20 20 52 45 54 55 52 4E 0D 0A RETURN..
00CC30: 20 20 20 20 20 20 20 20 24 29 0D 0A 0D 0A 20 20 $)....
00CC40: 20 20 20 20 20 20 6E 65 77 6C 69 6E 65 28 29 0D newline().
00CC50: 0A 20 20 20 20 20 20 20 20 49 46 20 6F 70 74 20 . IF opt
00CC60: 3E 20 30 20 26 20 6F 70 74 20 4E 45 20 33 20 44 > 0 & opt NE 3 D
00CC70: 4F 20 77 72 69 74 65 73 28 22 20 20 22 29 0D 0A O writes(" ")..
00CC80: 0D 0A 20 20 20 20 20 20 20 20 46 4F 52 20 69 20 .. FOR i
00CC90: 3D 20 31 20 54 4F 20 6E 20 44 4F 0D 0A 20 20 20 = 1 TO n DO..
00CCA0: 20 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 20 $(..
00CCB0: 20 20 20 20 20 53 57 49 54 43 48 4F 4E 20 6F 70 SWITCHON op
00CCC0: 74 20 49 4E 54 4F 0D 0A 20 20 20 20 20 20 20 20 t INTO..
00CCD0: 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 20 20 $(..
00CCE0: 20 20 20 20 20 20 20 20 43 41 53 45 20 31 3A 0D CASE 1:.
00CCF0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
00CD00: 20 43 41 53 45 20 34 3A 0D 0A 20 20 20 20 20 20 CASE 4:..
00CD10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00CD20: 20 20 77 72 6E 75 6D 28 21 70 61 72 6D 2C 77 72 wrnum(!parm,wr
00CD30: 77 69 64 29 20 3B 20 77 72 63 68 28 27 20 27 29 wid) ; wrch(' ')
00CD40: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
00CD50: 20 20 20 20 20 20 20 20 20 20 70 61 72 6D 20 3A parm :
00CD60: 3D 20 70 61 72 6D 20 2B 20 31 0D 0A 20 20 20 20 = parm + 1..
00CD70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00CD80: 20 20 20 20 45 4E 44 43 41 53 45 0D 0A 0D 0A 20 ENDCASE....
00CD90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 C
00CDA0: 41 53 45 20 2D 31 3A 0D 0A 20 20 20 20 20 20 20 ASE -1:..
00CDB0: 20 20 20 20 20 20 20 20 20 43 41 53 45 20 2D 34 CASE -4
00CDC0: 3A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 :..
00CDD0: 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 write
00CDE0: 73 28 22 20 20 22 29 0D 0A 20 20 20 20 20 20 20 s(" ")..
00CDF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00CE00: 0D 0A 2F 2A 20 54 68 69 73 20 69 73 20 61 20 42 ../* This is a B
00CE10: 43 50 4C 20 62 65 61 75 74 69 66 69 65 72 2E 20 CPL beautifier.
00CE20: 49 74 20 77 69 6C 6C 20 74 75 72 6E 20 61 6C 6C It will turn all
00CE30: 20 6B 65 79 77 6F 72 64 73 20 69 6E 74 6F 20 75 keywords into u
00CE40: 70 70 65 72 20 63 61 73 65 20 61 6E 64 0D 0A 20 pper case and..
00CE50: 20 20 61 6C 6C 20 69 64 65 6E 74 69 66 69 65 72 all identifier
00CE60: 73 20 69 6E 74 6F 20 6C 6F 77 65 72 20 63 61 73 s into lower cas
00CE70: 65 20 2A 2F 0D 0A 0D 0A 2F 2F 20 6D 6F 64 69 66 e */....// modif
00CE80: 69 65 64 20 33 30 2F 31 30 2F 31 39 38 36 0D 0A ied 30/10/1986..
00CE90: 0D 0A 2F 2A 20 72 65 61 64 20 69 6E 20 74 68 65 ../* read in the
00CEA0: 20 73 74 61 6E 64 61 72 64 20 6C 69 62 72 61 72 standard librar
00CEB0: 79 20 68 65 61 64 65 72 20 2A 2F 0D 0A 0D 0A 4F y header */....O
00CEC0: 50 54 49 4F 4E 20 42 2D 0D 0A 0D 0A 47 45 54 20 PTION B-....GET
00CED0: 22 63 6C 69 62 68 64 72 22 0D 0A 0D 0A 4F 50 54 "clibhdr"....OPT
00CEE0: 49 4F 4E 20 42 2B 0D 0A 0D 0A 4D 41 4E 49 46 45 ION B+....MANIFE
00CEF0: 53 54 0D 0A 24 28 0D 0A 20 20 69 6E 64 65 6E 74 ST..$(.. indent
00CF00: 73 69 7A 65 20 3D 20 32 0D 0A 20 20 63 6F 6D 6D size = 2.. comm
00CF10: 65 6E 74 73 20 3D 20 33 35 0D 0A 24 29 0D 0A 0D ents = 35..$)...
00CF20: 0A 0D 0A 47 4C 4F 42 41 4C 0D 0A 24 28 0D 0A 20 ...GLOBAL..$(..
00CF30: 20 6B 65 79 77 6F 72 64 73 3A 20 30 0D 0A 20 20 keywords: 0..
00CF40: 69 6E 70 75 74 3A 20 31 0D 0A 20 20 6F 75 74 70 input: 1.. outp
00CF50: 75 74 3A 20 32 0D 0A 20 20 65 72 72 76 65 63 3A ut: 2.. errvec:
00CF60: 20 33 0D 0A 20 20 65 72 72 6F 72 3A 20 34 0D 0A 3.. error: 4..
00CF70: 20 20 6C 61 73 74 63 68 72 3A 20 35 0D 0A 20 20 lastchr: 5..
00CF80: 6B 65 79 65 6E 64 3A 20 36 0D 0A 24 29 0D 0A 0D keyend: 6..$)...
00CF90: 0A 53 54 41 54 49 43 0D 0A 24 28 0D 0A 20 20 69 .STATIC..$(.. i
00CFA0: 6E 64 65 6E 74 20 3D 20 30 0D 0A 20 20 6E 6C 64 ndent = 0.. nld
00CFB0: 6F 6E 65 20 3D 20 54 52 55 45 0D 0A 20 20 69 64 one = TRUE.. id
00CFC0: 66 6C 61 67 20 3D 20 46 41 4C 53 45 0D 0A 20 20 flag = FALSE..
00CFD0: 63 6F 6C 75 6D 6E 20 3D 20 30 0D 0A 24 29 0D 0A column = 0..$)..
00CFE0: 0D 0A 4C 45 54 20 65 72 72 28 6D 65 73 73 61 67 ..LET err(messag
00CFF0: 65 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 6E e) BE....$(.. n
00D000: 20 77 72 69 74 65 73 28 21 70 61 72 6D 29 0D 0A writes(!parm)..
00D010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D020: 20 20 20 20 20 20 20 20 77 72 69 74 65 73 28 22 writes("
00D030: 20 3D 20 22 29 0D 0A 20 20 20 20 20 20 20 20 20 = ")..
00D040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 w
00D050: 72 6E 75 6D 28 70 61 72 6D 21 31 2C 77 72 77 69 rnum(parm!1,wrwi
00D060: 64 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 d)..
00D070: 20 20 20 20 20 20 20 20 20 20 20 20 6E 65 77 6C newl
00D080: 69 6E 65 28 29 0D 0A 20 20 20 20 20 20 20 20 20 ine()..
00D090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 p
00D0A0: 61 72 6D 20 3A 3D 20 70 61 72 6D 20 2B 20 32 0D arm := parm + 2.
00D0B0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
00D0C0: 20 20 20 20 20 20 20 20 20 45 4E 44 43 41 53 45 ENDCASE
00D0D0: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ....
00D0E0: 20 20 20 20 43 41 53 45 20 32 3A 0D 0A 20 20 20 CASE 2:..
00D0F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D100: 20 20 20 20 20 77 72 63 68 28 27 22 27 29 20 3B wrch('"') ;
00D110: 20 77 72 69 74 65 73 28 21 70 61 72 6D 29 20 3B writes(!parm) ;
00D120: 20 77 72 63 68 28 27 22 27 29 0D 0A 20 20 20 20 wrch('"')..
00D130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D140: 20 20 20 20 77 72 63 68 28 27 20 27 29 0D 0A 20 wrch(' ')..
00D150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D160: 20 20 20 20 20 20 20 70 61 72 6D 20 3A 3D 20 70 parm := p
00D170: 61 72 6D 20 2B 20 31 0D 0A 20 20 20 20 20 20 20 arm + 1..
00D180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D190: 20 45 4E 44 43 41 53 45 0D 0A 0D 0A 20 20 20 20 ENDCASE....
00D1A0: 20 20 20 20 20 20 20 20 20 20 20 20 43 41 53 45 CASE
00D1B0: 20 2D 32 3A 0D 0A 20 20 20 20 20 20 20 20 20 20 -2:..
00D1C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 72 wr
00D1D0: 69 74 65 73 28 22 20 20 22 29 0D 0A 20 20 20 20 ites(" ")..
00D1E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D1F0: 20 20 20 20 77 72 69 74 65 73 28 21 70 61 72 6D writes(!parm
00D200: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
00D210: 0B 00 01 00 02 09 50 E5 0B 00 C1 02 00 00 00 02 ......P.........
00D220: 0B 00 C6 02 00 00 00 02 0B 00 C2 02 00 00 00 02 ................
00D230: 0B 00 C7 02 00 00 00 02 0B 00 C3 02 00 00 00 02 ................
00D240: 0B 00 C8 02 00 00 00 02 0B 00 C4 02 00 00 00 02 ................
00D250: 0B 00 C9 02 00 00 00 02 0B 00 C5 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: 65 77 6C 69 6E 65 28 29 0D 0A 20 20 77 72 69 74 ewline().. writ
00D310: 65 73 28 6D 65 73 73 61 67 65 29 0D 0A 20 20 6E es(message).. n
00D320: 65 77 6C 69 6E 65 28 29 0D 0A 20 20 6C 6F 6E 67 ewline().. long
00D330: 6A 75 6D 70 28 65 72 72 6F 72 2C 20 65 72 72 76 jump(error, errv
00D340: 65 63 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 ec)..$)......LET
00D350: 20 73 70 61 63 65 28 63 68 61 72 29 20 3D 20 28 space(char) = (
00D360: 20 63 68 61 72 3D 27 20 27 20 7C 20 63 68 61 72 char=' ' | char
00D370: 3D 39 20 29 0D 0A 0D 0A 4C 45 54 20 72 61 77 63 =9 )....LET rawc
00D380: 68 72 28 29 20 3D 20 56 41 4C 4F 46 0D 0A 0D 0A hr() = VALOF....
00D390: 24 28 0D 0A 20 20 4C 45 54 20 74 65 6D 70 20 3D $(.. LET temp =
00D3A0: 20 72 65 61 64 63 68 28 69 6E 70 75 74 29 0D 0A readch(input)..
00D3B0: 20 20 57 48 49 4C 45 20 74 65 6D 70 20 3D 20 31 WHILE temp = 1
00D3C0: 30 20 44 4F 20 74 65 6D 70 20 3A 3D 20 72 65 61 0 DO temp := rea
00D3D0: 64 63 68 28 69 6E 70 75 74 29 0D 0A 20 20 49 46 dch(input).. IF
00D3E0: 20 6C 61 73 74 63 68 72 20 3D 20 65 6E 64 73 74 lastchr = endst
00D3F0: 72 65 61 6D 63 68 20 4C 4F 47 41 4E 44 20 74 65 reamch LOGAND te
00D400: 6D 70 20 3D 20 65 6E 64 73 74 72 65 61 6D 63 68 mp = endstreamch
00D410: 20 54 48 45 4E 20 65 72 72 28 22 55 6E 65 78 70 THEN err("Unexp
00D420: 65 63 74 65 64 20 45 4F 46 22 29 0D 0A 20 20 6C ected EOF").. l
00D430: 61 73 74 63 68 72 20 3A 3D 20 74 65 6D 70 0D 0A astchr := temp..
00D440: 20 20 52 45 53 55 4C 54 49 53 20 6C 61 73 74 63 RESULTIS lastc
00D450: 68 72 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 hr..$)......LET
00D460: 67 65 74 63 68 72 28 29 20 3D 20 56 41 4C 4F 46 getchr() = VALOF
00D470: 0D 0A 0D 0A 24 28 0D 0A 20 20 72 61 77 63 68 72 ....$(.. rawchr
00D480: 28 29 0D 0A 20 20 49 46 20 27 41 27 20 3C 3D 20 ().. IF 'A' <=
00D490: 6C 61 73 74 63 68 72 20 3C 3D 20 27 5A 27 20 54 lastchr <= 'Z' T
00D4A0: 48 45 4E 20 6C 61 73 74 63 68 72 20 3A 3D 20 6C HEN lastchr := l
00D4B0: 61 73 74 63 68 72 20 2B 20 33 32 0D 0A 20 20 52 astchr + 32.. R
00D4C0: 45 53 55 4C 54 49 53 20 6C 61 73 74 63 68 72 0D ESULTIS lastchr.
00D4D0: 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 6F 75 74 .$)......LET out
00D4E0: 28 63 68 61 72 61 63 74 65 72 29 20 42 45 0D 0A (character) BE..
00D4F0: 0D 0A 24 28 0D 0A 20 20 55 4E 4C 45 53 53 20 6E ..$(.. UNLESS n
00D500: 6D 70 20 3D 20 30 0D 0A 20 20 53 57 49 54 43 48 mp = 0.. SWITCH
00D510: 4F 4E 20 6C 61 73 74 63 68 72 20 49 4E 54 4F 0D ON lastchr INTO.
00D520: 0A 20 20 24 28 0D 0A 20 20 20 20 43 41 53 45 20 . $(.. CASE
00D530: 27 24 27 3A 0D 0A 20 20 20 20 63 6F 6E 64 6E 6C '$':.. condnl
00D540: 28 29 0D 0A 20 20 20 20 74 65 6D 70 20 3A 3D 20 ().. temp :=
00D550: 67 65 74 63 68 72 28 29 0D 0A 20 20 20 20 67 65 getchr().. ge
00D560: 74 63 68 72 28 29 0D 0A 20 20 20 20 54 45 53 54 tchr().. TEST
00D570: 20 74 65 6D 70 20 3D 20 27 28 27 20 54 48 45 4E temp = '(' THEN
00D580: 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 .. $(..
00D590: 6F 75 74 28 27 24 27 29 0D 0A 20 20 20 20 20 20 out('$')..
00D5A0: 6F 75 74 28 27 28 27 29 0D 0A 20 20 20 20 20 20 out('(')..
00D5B0: 69 64 65 6E 74 28 29 0D 0A 20 20 20 20 20 20 69 ident().. i
00D5C0: 6E 64 65 6E 74 20 3A 3D 20 69 6E 64 65 6E 74 20 ndent := indent
00D5D0: 2B 20 69 6E 64 65 6E 74 73 69 7A 65 0D 0A 20 20 + indentsize..
00D5E0: 20 20 24 29 0D 0A 20 20 20 20 45 4C 53 45 0D 0A $).. ELSE..
00D5F0: 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 69 6E $(.. in
00D600: 64 65 6E 74 20 3A 3D 20 69 6E 64 65 6E 74 20 2D dent := indent -
00D610: 20 69 6E 64 65 6E 74 73 69 7A 65 0D 0A 20 20 20 indentsize..
00D620: 20 20 20 6F 75 74 28 27 24 27 29 0D 0A 20 20 20 out('$')..
00D630: 20 20 20 6F 75 74 28 27 29 27 29 0D 0A 20 20 20 out(')')..
00D640: 20 20 20 69 64 65 6E 74 28 29 0D 0A 20 20 20 20 ident()..
00D650: 24 29 0D 0A 20 20 20 20 55 4E 4C 45 53 53 20 6C $).. UNLESS l
00D660: 61 73 74 63 68 72 20 3D 20 31 33 20 54 48 45 4E astchr = 13 THEN
00D670: 20 6F 75 74 28 31 33 29 0D 0A 20 20 20 20 45 4E out(13).. EN
00D680: 44 43 41 53 45 0D 0A 20 20 20 20 43 41 53 45 20 DCASE.. CASE
00D690: 27 3B 27 3A 0D 0A 20 20 20 20 6F 75 74 28 31 33 ';':.. out(13
00D6A0: 29 0D 0A 20 20 20 20 67 65 74 63 68 72 28 29 0D ).. getchr().
00D6B0: 0A 20 20 20 20 45 4E 44 43 41 53 45 0D 0A 20 20 . ENDCASE..
00D6C0: 20 20 43 41 53 45 20 27 22 27 3A 0D 0A 20 20 20 CASE '"':..
00D6D0: 20 69 64 73 70 61 63 65 28 29 0D 0A 20 20 20 20 idspace()..
00D6E0: 6F 75 74 28 27 22 27 29 0D 0A 20 20 20 20 72 61 out('"').. ra
00D6F0: 77 63 68 72 28 29 0D 0A 20 20 20 20 55 4E 54 49 wchr().. UNTI
00D700: 6C 64 6F 6E 65 20 4C 4F 47 4F 52 20 63 68 61 72 ldone LOGOR char
00D710: 61 63 74 65 72 20 3D 20 31 33 20 54 48 45 4E 0D acter = 13 THEN.
00D720: 0A 20 20 24 28 0D 0A 20 20 20 20 6E 6C 64 6F 6E . $(.. nldon
00D730: 65 20 3A 3D 20 54 52 55 45 0D 0A 20 20 20 20 46 e := TRUE.. F
00D740: 4F 52 20 73 70 61 63 65 20 3D 20 31 20 54 4F 20 OR space = 1 TO
00D750: 69 6E 64 65 6E 74 20 6F 75 74 28 27 20 27 29 0D indent out(' ').
00D760: 0A 20 20 24 29 0D 0A 20 20 54 45 53 54 20 63 68 . $).. TEST ch
00D770: 61 72 61 63 74 65 72 20 3D 20 31 33 20 54 48 45 aracter = 13 THE
00D780: 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 6E 65 77 N.. $(.. new
00D790: 6C 69 6E 65 28 29 0D 0A 20 20 20 20 77 72 69 74 line().. writ
00D7A0: 65 63 68 28 31 33 2C 6F 75 74 70 75 74 29 0D 0A ech(13,output)..
00D7B0: 20 20 20 20 77 72 69 74 65 63 68 28 31 30 2C 6F writech(10,o
00D7C0: 75 74 70 75 74 29 0D 0A 0D 0A 20 20 20 20 6E 6C utput).... nl
00D7D0: 64 6F 6E 65 20 3A 3D 20 46 41 4C 53 45 0D 0A 20 done := FALSE..
00D7E0: 20 20 20 69 64 66 6C 61 67 20 3A 3D 20 46 41 4C idflag := FAL
00D7F0: 53 45 0D 0A 20 20 20 20 63 6F 6C 75 6D 6E 20 3A SE.. column :
00D800: 3D 20 30 0D 0A 20 20 24 29 0D 0A 20 20 45 4C 53 = 0.. $).. ELS
00D810: 45 0D 0A 20 20 24 28 0D 0A 20 20 20 20 63 6F 6C E.. $(.. col
00D820: 75 6D 6E 20 3A 3D 20 63 6F 6C 75 6D 6E 20 2B 20 umn := column +
00D830: 31 0D 0A 20 20 20 20 77 72 63 68 28 63 68 61 72 1.. wrch(char
00D840: 61 63 74 65 72 29 0D 0A 20 20 20 20 77 72 69 74 acter).. writ
00D850: 65 63 68 28 63 68 61 72 61 63 74 65 72 2C 6F 75 ech(character,ou
00D860: 74 70 75 74 29 0D 0A 20 20 24 29 0D 0A 24 29 0D tput).. $)..$).
00D870: 0A 0D 0A 0D 0A 4C 45 54 20 68 65 78 76 61 6C 28 .....LET hexval(
00D880: 63 68 61 72 29 20 3D 20 56 41 4C 4F 46 0D 0A 0D char) = VALOF...
00D890: 0A 24 28 0D 0A 20 20 54 45 53 54 20 27 30 27 20 .$(.. TEST '0'
00D8A0: 3C 3D 20 63 68 61 72 20 3C 3D 20 27 39 27 20 54 <= char <= '9' T
00D8B0: 48 45 4E 20 52 45 53 55 4C 54 49 53 20 63 68 61 HEN RESULTIS cha
00D8C0: 72 20 2D 20 27 30 27 0D 0A 20 20 45 4C 53 45 20 r - '0'.. ELSE
00D8D0: 54 45 53 54 20 27 61 27 20 3C 3D 20 63 68 61 72 TEST 'a' <= char
00D8E0: 20 3C 3D 20 27 66 27 20 54 48 45 4E 20 52 45 53 <= 'f' THEN RES
00D8F0: 55 4C 54 49 53 20 63 68 61 72 20 2D 20 27 61 27 ULTIS char - 'a'
00D900: 4C 20 6C 61 73 74 63 68 72 20 3D 20 27 22 27 20 L lastchr = '"'
00D910: 73 74 72 63 68 72 28 29 0D 0A 20 20 20 20 6F 75 strchr().. ou
00D920: 74 28 27 22 27 29 0D 0A 20 20 20 20 67 65 74 63 t('"').. getc
00D930: 68 72 28 29 0D 0A 20 20 20 20 69 64 66 6C 61 67 hr().. idflag
00D940: 20 3A 3D 20 32 0D 0A 20 20 20 20 52 45 54 55 52 := 2.. RETUR
00D950: 4E 0D 0A 20 20 20 20 43 41 53 45 20 27 3C 27 3A N.. CASE '<':
00D960: 20 43 41 53 45 20 27 3E 27 3A 0D 0A 20 20 20 20 CASE '>':..
00D970: 74 65 6D 70 20 3A 3D 20 6C 61 73 74 63 68 72 0D temp := lastchr.
00D980: 0A 20 20 20 20 67 65 74 63 68 72 28 29 0D 0A 20 . getchr()..
00D990: 20 20 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 out(' ')..
00D9A0: 20 54 45 53 54 20 6C 61 73 74 63 68 72 20 3D 20 TEST lastchr =
00D9B0: 27 3D 27 20 4C 4F 47 4F 52 20 6C 61 73 74 63 68 '=' LOGOR lastch
00D9C0: 72 20 3D 20 74 65 6D 70 20 54 48 45 4E 0D 0A 20 r = temp THEN..
00D9D0: 20 20 20 24 28 0D 0A 20 20 20 20 20 20 6F 75 74 $(.. out
00D9E0: 28 74 65 6D 70 29 0D 0A 20 20 20 20 20 20 6F 75 (temp).. ou
00D9F0: 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 20 20 20 t(lastchr)..
00DA00: 20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 20 20 getchr()..
00DA10: 24 29 0D 0A 20 20 20 20 45 4C 53 45 20 6F 75 74 $).. ELSE out
00DA20: 28 74 65 6D 70 29 0D 0A 20 20 20 20 6F 75 74 28 (temp).. out(
00DA30: 27 20 27 29 0D 0A 20 20 20 20 45 4E 44 43 41 53 ' ').. ENDCAS
00DA40: 45 0D 0A 20 20 20 20 43 41 53 45 20 27 3A 27 3A E.. CASE ':':
00DA50: 0D 0A 20 20 20 20 54 45 53 54 20 67 65 74 63 68 .. TEST getch
00DA60: 72 28 29 20 3D 20 27 3D 27 20 54 48 45 4E 0D 0A r() = '=' THEN..
00DA70: 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 6F 75 $(.. ou
00DA80: 74 28 27 20 27 29 0D 0A 20 20 20 20 20 20 6F 75 t(' ').. ou
00DA90: 74 28 27 3A 27 29 0D 0A 20 20 20 20 20 20 6F 75 t(':').. ou
00DAA0: 74 28 27 3D 27 29 0D 0A 20 20 20 20 20 20 6F 75 t('=').. ou
00DAB0: 74 28 27 20 27 29 0D 0A 20 20 20 20 20 20 67 65 t(' ').. ge
00DAC0: 74 63 68 72 28 29 0D 0A 20 20 20 20 24 29 0D 0A tchr().. $)..
00DAD0: 20 20 20 20 45 4C 53 45 0D 0A 20 20 20 20 24 28 ELSE.. $(
00DAE0: 0D 0A 20 20 20 20 20 20 6F 75 74 28 27 3A 27 29 .. out(':')
00DAF0: 0D 0A 20 20 20 20 20 20 69 64 66 6C 61 67 20 3A .. idflag :
00DB00: 20 2B 20 31 30 0D 0A 20 20 45 4C 53 45 20 52 45 + 10.. ELSE RE
00DB10: 53 55 4C 54 49 53 20 31 30 30 0D 0A 24 29 0D 0A SULTIS 100..$)..
00DB20: 0D 0A 0D 0A 4C 45 54 20 72 65 61 64 6E 75 6D 28 ....LET readnum(
00DB30: 62 61 73 65 2C 20 66 69 72 73 74 29 20 42 45 0D base, first) BE.
00DB40: 0A 0D 0A 24 28 0D 0A 20 20 57 48 49 4C 45 20 68 ...$(.. WHILE h
00DB50: 65 78 76 61 6C 28 66 69 72 73 74 29 20 3C 20 62 exval(first) < b
00DB60: 61 73 65 20 44 4F 0D 0A 20 20 24 28 0D 0A 20 20 ase DO.. $(..
00DB70: 20 20 6F 75 74 28 68 65 78 76 61 6C 28 66 69 72 out(hexval(fir
00DB80: 73 74 29 20 3C 20 31 30 20 2D 3E 20 66 69 72 73 st) < 10 -> firs
00DB90: 74 2C 20 66 69 72 73 74 20 2D 20 33 32 29 0D 0A t, first - 32)..
00DBA0: 20 20 20 20 66 69 72 73 74 20 3A 3D 20 67 65 74 first := get
00DBB0: 63 68 72 28 29 0D 0A 20 20 24 29 0D 0A 20 20 69 chr().. $).. i
00DBC0: 64 66 6C 61 67 20 3A 3D 20 32 0D 0A 24 29 0D 0A dflag := 2..$)..
00DBD0: 0D 0A 0D 0A 4C 45 54 20 73 74 72 69 6E 67 73 61 ....LET stringsa
00DBE0: 6D 65 28 73 74 72 69 6E 67 31 2C 20 73 74 72 69 me(string1, stri
00DBF0: 6E 67 32 29 20 3D 20 56 41 4C 4F 46 0D 0A 0D 0A ng2) = VALOF....
00DC00: 24 28 0D 0A 20 20 49 46 20 21 73 74 72 69 6E 67 $(.. IF !string
00DC10: 31 20 4E 45 20 21 73 74 72 69 6E 67 32 20 54 48 1 NE !string2 TH
00DC20: 45 4E 20 52 45 53 55 4C 54 49 53 20 46 41 4C 53 EN RESULTIS FALS
00DC30: 45 0D 0A 20 20 46 4F 52 20 70 74 72 20 3D 20 31 E.. FOR ptr = 1
00DC40: 20 54 4F 20 21 73 74 72 69 6E 67 31 0D 0A 20 20 TO !string1..
00DC50: 49 46 20 73 74 72 69 6E 67 31 21 70 74 72 20 4E IF string1!ptr N
00DC60: 45 20 73 74 72 69 6E 67 32 21 70 74 72 20 54 48 E string2!ptr TH
00DC70: 45 4E 20 52 45 53 55 4C 54 49 53 20 46 41 4C 53 EN RESULTIS FALS
00DC80: 45 0D 0A 20 20 52 45 53 55 4C 54 49 53 20 54 52 E.. RESULTIS TR
00DC90: 55 45 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 UE..$)......LET
00DCA0: 73 79 73 77 6F 72 64 28 77 6F 72 64 29 20 3D 20 sysword(word) =
00DCB0: 56 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 4C VALOF....$(.. L
00DCC0: 45 54 20 73 74 61 72 74 20 3D 20 6B 65 79 77 6F ET start = keywo
00DCD0: 72 64 73 0D 0A 20 20 57 48 49 4C 45 20 73 74 61 rds.. WHILE sta
00DCE0: 72 74 20 3C 20 6B 65 79 65 6E 64 20 44 4F 0D 0A rt < keyend DO..
00DCF0: 20 20 24 28 0D 0A 20 20 20 20 49 46 20 73 74 72 $(.. IF str
00DD00: 3D 20 31 0D 0A 20 20 20 20 20 20 52 45 54 55 52 = 1.. RETUR
00DD10: 4E 0D 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45 N.. $).. E
00DD20: 4E 44 43 41 53 45 0D 0A 20 20 20 20 43 41 53 45 NDCASE.. CASE
00DD30: 20 27 2D 27 3A 0D 0A 20 20 20 20 6F 75 74 28 27 '-':.. out('
00DD40: 20 27 29 0D 0A 20 20 20 20 54 45 53 54 20 67 65 ').. TEST ge
00DD50: 74 63 68 72 28 29 20 3D 20 27 3E 27 20 54 48 45 tchr() = '>' THE
00DD60: 4E 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 20 20 N.. $(..
00DD70: 20 6F 75 74 28 27 2D 27 29 0D 0A 20 20 20 20 20 out('-')..
00DD80: 20 6F 75 74 28 27 3E 27 29 0D 0A 20 20 20 20 20 out('>')..
00DD90: 20 67 65 74 63 68 72 28 29 0D 0A 20 20 20 20 24 getchr().. $
00DDA0: 29 0D 0A 20 20 20 20 45 4C 53 45 20 6F 75 74 28 ).. ELSE out(
00DDB0: 27 2D 27 29 0D 0A 20 20 20 20 6F 75 74 28 27 20 '-').. out('
00DDC0: 27 29 0D 0A 20 20 20 20 45 4E 44 43 41 53 45 0D ').. ENDCASE.
00DDD0: 0A 20 20 20 20 43 41 53 45 20 27 2F 27 3A 0D 0A . CASE '/':..
00DDE0: 20 20 20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 getchr()..
00DDF0: 20 20 54 45 53 54 20 6C 61 73 74 63 68 72 20 3D TEST lastchr =
00DE00: 20 27 2A 2A 27 20 54 48 45 4E 0D 0A 20 20 20 20 '**' THEN..
00DE10: 24 28 0D 0A 20 20 20 20 20 20 74 65 6D 70 20 3A $(.. temp :
00DE20: 3D 20 69 6E 64 65 6E 74 0D 0A 20 20 20 20 20 20 = indent..
00DE30: 69 6E 64 65 6E 74 20 3A 3D 20 30 0D 0A 20 20 20 indent := 0..
00DE40: 20 20 20 63 6F 6E 64 6E 6C 28 29 0D 0A 20 20 20 condnl()..
00DE50: 20 20 20 6F 75 74 28 27 2F 27 29 0D 0A 20 20 20 out('/')..
00DE60: 20 20 20 6F 75 74 28 27 2A 2A 27 29 0D 0A 20 20 out('**')..
00DE70: 20 20 20 20 72 61 77 63 68 72 28 29 0D 0A 20 20 rawchr()..
00DE80: 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 20 20 $(..
00DE90: 55 4E 54 49 4C 20 6C 61 73 74 63 68 72 20 3D 20 UNTIL lastchr =
00DEA0: 27 2A 2A 27 20 44 4F 0D 0A 20 20 20 20 20 20 20 '**' DO..
00DEB0: 20 24 28 0D 0A 20 20 20 20 20 20 20 20 20 20 6F $(.. o
00DEC0: 75 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 20 20 ut(lastchr)..
00DED0: 20 20 20 20 20 20 20 72 61 77 63 68 72 28 29 0D rawchr().
00DEE0: 0A 20 20 20 20 20 20 20 20 24 29 0D 0A 20 20 20 . $)..
00DEF0: 20 20 20 20 20 6F 75 74 28 27 2A 2A 27 29 0D 0A out('**')..
00DF00: 69 6E 67 73 61 6D 65 28 73 74 61 72 74 20 2B 20 ingsame(start +
00DF10: 31 2C 20 77 6F 72 64 29 20 54 48 45 4E 20 52 45 1, word) THEN RE
00DF20: 53 55 4C 54 49 53 20 73 74 61 72 74 0D 0A 20 20 SULTIS start..
00DF30: 20 20 73 74 61 72 74 20 3A 3D 20 73 74 61 72 74 start := start
00DF40: 20 2B 20 73 74 61 72 74 21 31 20 2B 20 32 0D 0A + start!1 + 2..
00DF50: 20 20 24 29 0D 0A 20 20 52 45 53 55 4C 54 49 53 $).. RESULTIS
00DF60: 20 46 41 4C 53 45 0D 0A 24 29 0D 0A 0D 0A 0D 0A FALSE..$)......
00DF70: 4C 45 54 20 69 64 73 70 61 63 65 28 29 20 42 45 LET idspace() BE
00DF80: 0D 0A 0D 0A 24 28 0D 0A 20 20 49 46 20 69 64 66 ....$(.. IF idf
00DF90: 6C 61 67 20 54 48 45 4E 20 6F 75 74 28 27 20 27 lag THEN out(' '
00DFA0: 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 77 )..$)......LET w
00DFB0: 72 69 74 65 77 6F 72 64 28 77 6F 72 64 29 20 42 riteword(word) B
00DFC0: 45 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 70 E....$(.. LET p
00DFD0: 74 72 2C 20 69 64 66 20 3D 20 73 79 73 77 6F 72 tr, idf = syswor
00DFE0: 64 28 77 6F 72 64 29 2C 20 31 0D 0A 20 20 54 45 d(word), 1.. TE
00DFF0: 53 54 20 70 74 72 20 54 48 45 4E 0D 0A 20 20 24 ST ptr THEN.. $
00E000: 28 0D 0A 20 20 20 20 49 46 20 21 70 74 72 20 4C (.. IF !ptr L
00E010: 4F 47 4F 52 20 69 64 66 6C 61 67 20 54 48 45 4E OGOR idflag THEN
00E020: 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 20 46 out(' ').. F
00E030: 4F 52 20 63 70 74 72 20 3D 20 31 20 54 4F 20 77 OR cptr = 1 TO w
00E040: 6F 72 64 21 30 20 6F 75 74 28 77 6F 72 64 21 63 ord!0 out(word!c
00E050: 70 74 72 20 2D 20 33 32 29 0D 0A 20 20 20 20 49 ptr - 32).. I
00E060: 46 20 21 70 74 72 20 54 48 45 4E 0D 0A 20 20 20 F !ptr THEN..
00E070: 20 24 28 0D 0A 20 20 20 20 20 20 6F 75 74 28 27 $(.. out('
00E080: 20 27 29 0D 0A 20 20 20 20 20 20 69 64 66 20 3A ').. idf :
00E090: 3D 20 30 0D 0A 20 20 20 20 24 29 0D 0A 20 20 24 = 0.. $).. $
00E0A0: 29 0D 0A 20 20 45 4C 53 45 0D 0A 20 20 24 28 0D ).. ELSE.. $(.
00E0B0: 0A 20 20 20 20 69 64 73 70 61 63 65 28 29 0D 0A . idspace()..
00E0C0: 20 20 20 20 46 4F 52 20 70 74 72 20 3D 20 31 20 FOR ptr = 1
00E0D0: 54 4F 20 77 6F 72 64 21 30 20 44 4F 20 6F 75 74 TO word!0 DO out
00E0E0: 28 77 6F 72 64 21 70 74 72 29 0D 0A 20 20 20 20 (word!ptr)..
00E0F0: 69 64 66 20 3A 3D 20 32 0D 0A 20 20 24 29 0D 0A idf := 2.. $)..
00E100: 20 20 20 20 20 20 20 20 72 61 77 63 68 72 28 29 rawchr()
00E110: 0D 0A 20 20 20 20 20 20 24 29 0D 0A 20 20 20 20 .. $)..
00E120: 20 20 52 45 50 45 41 54 55 4E 54 49 4C 20 6C 61 REPEATUNTIL la
00E130: 73 74 63 68 72 20 3D 20 27 2F 27 0D 0A 20 20 20 stchr = '/'..
00E140: 20 20 20 6F 75 74 28 27 2F 27 29 0D 0A 20 20 20 out('/')..
00E150: 20 20 20 6F 75 74 28 31 33 29 0D 0A 20 20 20 20 out(13)..
00E160: 20 20 49 46 20 67 65 74 63 68 72 28 29 20 3D 20 IF getchr() =
00E170: 31 33 20 54 48 45 4E 20 67 65 74 63 68 72 28 29 13 THEN getchr()
00E180: 0D 0A 20 20 20 20 20 20 69 6E 64 65 6E 74 20 3A .. indent :
00E190: 3D 20 74 65 6D 70 0D 0A 20 20 20 20 24 29 0D 0A = temp.. $)..
00E1A0: 20 20 20 20 45 4C 53 45 20 54 45 53 54 20 6C 61 ELSE TEST la
00E1B0: 73 74 63 68 72 20 3D 20 27 2F 27 20 54 48 45 4E stchr = '/' THEN
00E1C0: 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 .. $(..
00E1D0: 49 46 20 63 6F 6C 75 6D 6E 20 3E 20 63 6F 6D 6D IF column > comm
00E1E0: 65 6E 74 73 20 54 48 45 4E 20 6F 75 74 28 31 33 ents THEN out(13
00E1F0: 29 0D 0A 20 20 20 20 20 20 46 4F 52 20 61 20 3D ).. FOR a =
00E200: 20 63 6F 6C 75 6D 6E 20 54 4F 20 63 6F 6D 6D 65 column TO comme
00E210: 6E 74 73 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 nts out(' ')..
00E220: 20 20 20 20 6F 75 74 28 27 2F 27 29 0D 0A 20 20 out('/')..
00E230: 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 20 20 $(..
00E240: 6F 75 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 20 out(lastchr)..
00E250: 20 20 20 20 20 20 72 61 77 63 68 72 28 29 0D 0A rawchr()..
00E260: 20 20 20 20 20 20 24 29 0D 0A 20 20 20 20 20 20 $)..
00E270: 52 45 50 45 41 54 55 4E 54 49 4C 20 6C 61 73 74 REPEATUNTIL last
00E280: 63 68 72 20 3D 20 31 33 0D 0A 20 20 20 20 20 20 chr = 13..
00E290: 6F 75 74 28 31 33 29 0D 0A 0D 0A 20 20 20 20 20 out(13)....
00E2A0: 20 49 46 20 67 65 74 63 68 72 28 29 20 3D 20 31 IF getchr() = 1
00E2B0: 33 20 54 48 45 4E 20 67 65 74 63 68 72 28 29 0D 3 THEN getchr().
00E2C0: 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45 4C 53 . $).. ELS
00E2D0: 45 20 54 45 53 54 20 6C 61 73 74 63 68 72 20 3D E TEST lastchr =
00E2E0: 20 27 5C 27 20 54 48 45 4E 0D 0A 20 20 20 20 24 '\' THEN.. $
00E2F0: 28 0D 0A 20 20 20 20 20 20 6F 75 74 28 27 20 27 (.. out(' '
00E300: 20 20 69 64 66 6C 61 67 20 3A 3D 20 69 64 66 0D idflag := idf.
00E310: 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 69 64 65 .$)......LET ide
00E320: 6E 74 28 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 nt() BE....$(..
00E330: 20 4C 45 54 20 77 6F 72 64 62 75 66 66 20 3D 20 LET wordbuff =
00E340: 56 45 43 20 32 30 0D 0A 20 20 4C 45 54 20 77 70 VEC 20.. LET wp
00E350: 74 72 20 3D 20 30 0D 0A 20 20 57 48 49 4C 45 20 tr = 0.. WHILE
00E360: 27 61 27 20 3C 3D 20 6C 61 73 74 63 68 72 20 3C 'a' <= lastchr <
00E370: 3D 20 27 7A 27 20 4C 4F 47 4F 52 20 27 30 27 20 = 'z' LOGOR '0'
00E380: 3C 3D 20 6C 61 73 74 63 68 72 20 3C 3D 20 27 39 <= lastchr <= '9
00E390: 27 20 44 4F 0D 0A 20 20 24 28 0D 0A 20 20 20 20 ' DO.. $(..
00E3A0: 77 70 74 72 20 3A 3D 20 77 70 74 72 20 2B 20 31 wptr := wptr + 1
00E3B0: 0D 0A 20 20 20 20 77 6F 72 64 62 75 66 66 21 77 .. wordbuff!w
00E3C0: 70 74 72 20 3A 3D 20 6C 61 73 74 63 68 72 0D 0A ptr := lastchr..
00E3D0: 20 20 20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 getchr()..
00E3E0: 24 29 0D 0A 20 20 77 6F 72 64 62 75 66 66 21 30 $).. wordbuff!0
00E3F0: 20 3A 3D 20 77 70 74 72 0D 0A 20 20 77 72 69 74 := wptr.. writ
00E400: 65 77 6F 72 64 28 77 6F 72 64 62 75 66 66 29 0D eword(wordbuff).
00E410: 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 73 74 72 .$)......LET str
00E420: 63 68 72 28 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A chr() BE....$(..
00E430: 20 20 54 45 53 54 20 6C 61 73 74 63 68 72 20 3D TEST lastchr =
00E440: 20 27 2A 2A 27 20 54 48 45 4E 0D 0A 20 20 24 28 '**' THEN.. $(
00E450: 0D 0A 20 20 20 20 6F 75 74 28 27 2A 2A 27 29 0D .. out('**').
00E460: 0A 20 20 20 20 6F 75 74 28 72 61 77 63 68 72 28 . out(rawchr(
00E470: 29 29 0D 0A 20 20 24 29 0D 0A 20 20 45 4C 53 45 )).. $).. ELSE
00E480: 20 6F 75 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 out(lastchr)..
00E490: 20 72 61 77 63 68 72 28 29 0D 0A 24 29 0D 0A 0D rawchr()..$)...
00E4A0: 0A 0D 0A 4C 45 54 20 63 6F 6E 64 6E 6C 28 29 20 ...LET condnl()
00E4B0: 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 49 46 20 6E BE....$(.. IF n
00E4C0: 6C 64 6F 6E 65 20 54 48 45 4E 20 6F 75 74 28 31 ldone THEN out(1
00E4D0: 33 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 4C 45 3)..$)........LE
00E4E0: 54 20 70 75 6E 63 74 75 61 74 65 28 29 20 42 45 T punctuate() BE
00E4F0: 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 74 65 ....$(.. LET te
00E500: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
00E510: 0C 00 01 00 02 09 4E E5 0C 00 C1 02 00 00 00 02 ......N.........
00E520: 0C 00 C6 02 00 00 00 02 0C 00 C2 02 00 00 00 02 ................
00E530: 0C 00 C7 02 00 00 00 02 0C 00 C3 02 00 00 00 02 ................
00E540: 0C 00 C8 02 00 00 00 02 0C 00 C4 02 00 00 00 02 ................
00E550: 0C 00 C9 02 20 20 00 02 0C 00 C5 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: 29 0D 0A 20 20 20 20 20 20 6F 75 74 28 27 2F 27 ).. out('/'
00E610: 29 0D 0A 20 20 20 20 20 20 6F 75 74 28 27 5C 27 ).. out('\'
00E620: 29 0D 0A 20 20 20 20 20 20 6F 75 74 28 27 20 27 ).. out(' '
00E630: 29 0D 0A 20 20 20 20 20 20 67 65 74 63 68 72 28 ).. getchr(
00E640: 29 0D 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45 ).. $).. E
00E650: 4C 53 45 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 LSE.. $(..
00E660: 20 20 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 out(' ')..
00E670: 20 20 20 6F 75 74 28 27 2F 27 29 0D 0A 20 20 20 out('/')..
00E680: 20 20 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 out(' ')..
00E690: 20 24 29 0D 0A 20 20 20 20 45 4E 44 43 41 53 45 $).. ENDCASE
00E6A0: 0D 0A 20 20 20 20 43 41 53 45 20 27 5C 27 3A 0D .. CASE '\':.
00E6B0: 0A 20 20 20 20 67 65 74 63 68 72 28 29 0D 0A 20 . getchr()..
00E6C0: 20 20 20 54 45 53 54 20 6C 61 73 74 63 68 72 20 TEST lastchr
00E6D0: 3D 20 27 3D 27 20 4C 4F 47 4F 52 20 6C 61 73 74 = '=' LOGOR last
00E6E0: 63 68 72 20 3D 20 27 2F 27 20 54 48 45 4E 0D 0A chr = '/' THEN..
00E6F0: 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 6F 75 $(.. ou
00E700: 74 28 27 20 27 29 0D 0A 20 20 20 20 20 20 6F 75 t(' ').. ou
00E710: 74 28 27 5C 27 29 0D 0A 20 20 20 20 20 20 6F 75 t('\').. ou
00E720: 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 20 20 20 t(lastchr)..
00E730: 20 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 20 out(' ')..
00E740: 20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 20 20 getchr()..
00E750: 24 29 0D 0A 20 20 20 20 45 4C 53 45 20 6F 75 74 $).. ELSE out
00E760: 28 27 5C 27 29 0D 0A 20 20 20 20 45 4E 44 43 41 ('\').. ENDCA
00E770: 53 45 0D 0A 20 20 20 20 43 41 53 45 20 27 29 27 SE.. CASE ')'
00E780: 3A 20 43 41 53 45 20 27 5D 27 3A 0D 0A 20 20 20 : CASE ']':..
00E790: 20 6F 75 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 out(lastchr)..
00E7A0: 20 20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 20 getchr()..
00E7B0: 20 69 64 66 6C 61 67 20 3A 3D 20 32 0D 0A 20 20 idflag := 2..
00E7C0: 20 20 52 45 54 55 52 4E 0D 0A 20 20 20 20 43 41 RETURN.. CA
00E7D0: 53 45 20 27 27 27 3A 0D 0A 20 20 20 20 69 64 73 SE ''':.. ids
00E7E0: 70 61 63 65 28 29 0D 0A 20 20 20 20 6F 75 74 28 pace().. out(
00E7F0: 27 27 27 29 0D 0A 20 20 20 20 72 61 77 63 68 72 ''').. rawchr
00E800: 72 65 73 74 20 2B 20 31 2C 20 21 6C 65 6E 67 74 rest + 1, !lengt
00E810: 68 70 74 72 20 2B 20 31 0D 0A 20 20 20 20 24 29 hptr + 1.. $)
00E820: 0D 0A 20 20 20 20 72 65 73 74 20 3A 3D 20 72 65 .. rest := re
00E830: 73 74 20 2B 20 31 0D 0A 20 20 24 29 0D 0A 24 29 st + 1.. $)..$)
00E840: 0D 0A 0D 0A 0D 0A 41 4E 44 20 72 65 61 64 73 79 ......AND readsy
00E850: 73 28 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 s() BE....$(..
00E860: 72 65 61 64 77 6F 72 64 73 28 22 61 6E 64 2C 62 readwords("and,b
00E870: 65 2C 62 72 65 61 6B 2C 62 79 2C 63 61 73 65 2C e,break,by,case,
00E880: 64 6F 2C 64 65 66 61 75 6C 74 2C 42 65 71 2C 42 do,default,Beq,B
00E890: 65 71 76 2C 65 6C 73 65 2C 65 6E 64 63 61 73 65 eqv,else,endcase
00E8A0: 2C 66 61 6C 73 65 2C 66 6F 72 2C 22 29 0D 0A 20 ,false,for,")..
00E8B0: 20 72 65 61 64 77 6F 72 64 73 28 22 66 69 6E 69 readwords("fini
00E8C0: 73 68 2C 67 6F 74 6F 2C 42 67 65 2C 42 67 72 2C sh,goto,Bge,Bgr,
00E8D0: 67 6C 6F 62 61 6C 2C 67 65 74 2C 69 66 2C 69 6E global,get,if,in
00E8E0: 74 6F 2C 6C 65 74 2C 42 6C 76 2C 42 6C 65 2C 42 to,let,Blv,Ble,B
00E8F0: 6C 73 2C 42 6C 6F 67 6F 72 2C 42 6C 6F 67 61 6E ls,Blogor,Blogan
00E900: 64 2C 22 29 0D 0A 20 20 72 65 61 64 77 6F 72 64 d,").. readword
00E910: 73 28 22 6C 6F 6F 70 2C 42 6C 73 68 69 66 74 2C s("loop,Blshift,
00E920: 6D 61 6E 69 66 65 73 74 2C 42 6E 65 2C 6E 6F 74 manifest,Bne,not
00E930: 2C 42 6E 65 71 76 2C 6F 72 2C 72 65 73 75 6C 74 ,Bneqv,or,result
00E940: 69 73 2C 72 65 74 75 72 6E 2C 42 72 65 6D 2C 42 is,return,Brem,B
00E950: 72 73 68 69 66 74 2C 22 29 0D 0A 20 20 72 65 61 rshift,").. rea
00E960: 64 77 6F 72 64 73 28 22 42 72 76 2C 72 65 70 65 dwords("Brv,repe
00E970: 61 74 2C 72 65 70 65 61 74 77 68 69 6C 65 2C 72 at,repeatwhile,r
00E980: 65 70 65 61 74 75 6E 74 69 6C 2C 73 77 69 74 63 epeatuntil,switc
00E990: 68 6F 6E 2C 73 74 61 74 69 63 2C 74 6F 2C 74 65 hon,static,to,te
00E9A0: 73 74 2C 74 72 75 65 2C 22 29 0D 0A 20 20 72 65 st,true,").. re
00E9B0: 61 64 77 6F 72 64 73 28 22 74 68 65 6E 2C 74 61 adwords("then,ta
00E9C0: 62 6C 65 2C 75 6E 74 69 6C 2C 75 6E 6C 65 73 73 ble,until,unless
00E9D0: 2C 76 65 63 2C 76 61 6C 6F 66 2C 77 68 69 6C 65 ,vec,valof,while
00E9E0: 2C 69 6E 6C 69 6E 65 2C 6F 70 74 69 6F 6E 2C 22 ,inline,option,"
00E9F0: 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 73 )..$)......LET s
00EA00: 28 29 0D 0A 0D 0A 20 20 20 20 73 74 72 63 68 72 ().... strchr
00EA10: 28 29 0D 0A 20 20 20 20 6F 75 74 28 27 27 27 29 ().. out(''')
00EA20: 0D 0A 20 20 20 20 67 65 74 63 68 72 28 29 0D 0A .. getchr()..
00EA30: 20 20 20 20 69 64 66 6C 61 67 20 3A 3D 20 32 0D idflag := 2.
00EA40: 0A 20 20 20 20 52 45 54 55 52 4E 0D 0A 20 20 20 . RETURN..
00EA50: 20 43 41 53 45 20 27 21 27 3A 0D 0A 20 20 20 20 CASE '!':..
00EA60: 49 46 20 69 64 66 6C 61 67 20 3D 20 31 20 54 48 IF idflag = 1 TH
00EA70: 45 4E 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 EN out(' ')..
00EA80: 20 6F 75 74 28 27 21 27 29 0D 0A 20 20 20 20 67 out('!').. g
00EA90: 65 74 63 68 72 28 29 0D 0A 20 20 20 20 45 4E 44 etchr().. END
00EAA0: 43 41 53 45 0D 0A 20 20 20 20 43 41 53 45 20 27 CASE.. CASE '
00EAB0: 2B 27 3A 20 43 41 53 45 20 27 26 27 3A 20 43 41 +': CASE '&': CA
00EAC0: 53 45 20 27 7C 27 3A 20 43 41 53 45 20 27 3D 27 SE '|': CASE '='
00EAD0: 3A 20 43 41 53 45 20 27 2A 2A 27 3A 0D 0A 20 20 : CASE '**':..
00EAE0: 20 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 20 out(' ')..
00EAF0: 6F 75 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 20 out(lastchr)..
00EB00: 20 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 20 out(' ')..
00EB10: 67 65 74 63 68 72 28 29 0D 0A 20 20 20 20 45 4E getchr().. EN
00EB20: 44 43 41 53 45 0D 0A 20 20 20 20 43 41 53 45 20 DCASE.. CASE
00EB30: 27 2C 27 3A 0D 0A 20 20 20 20 6F 75 74 28 6C 61 ',':.. out(la
00EB40: 73 74 63 68 72 29 0D 0A 20 20 20 20 6F 75 74 28 stchr).. out(
00EB50: 27 20 27 29 0D 0A 20 20 20 20 67 65 74 63 68 72 ' ').. getchr
00EB60: 28 29 0D 0A 20 20 20 20 45 4E 44 43 41 53 45 0D ().. ENDCASE.
00EB70: 0A 20 20 20 20 44 45 46 41 55 4C 54 3A 20 6F 75 . DEFAULT: ou
00EB80: 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 20 20 20 t(lastchr)..
00EB90: 67 65 74 63 68 72 28 29 0D 0A 20 20 24 29 0D 0A getchr().. $)..
00EBA0: 20 20 69 64 66 6C 61 67 20 3A 3D 20 46 41 4C 53 idflag := FALS
00EBB0: 45 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 62 E..$)......LET b
00EBC0: 65 61 75 74 69 66 79 28 29 20 42 45 0D 0A 0D 0A eautify() BE....
00EBD0: 24 28 0D 0A 20 20 4C 45 54 20 74 65 6D 70 20 3D $(.. LET temp =
00EBE0: 20 30 0D 0A 20 20 57 48 49 4C 45 20 28 6C 61 73 0.. WHILE (las
00EBF0: 74 63 68 72 20 4E 45 20 65 6E 64 73 74 72 65 61 tchr NE endstrea
00EC00: 74 61 72 74 28 29 20 42 45 0D 0A 0D 0A 24 28 0D tart() BE....$(.
00EC10: 0A 20 20 4C 45 54 20 77 6F 72 64 61 72 72 61 79 . LET wordarray
00EC20: 20 3D 20 56 45 43 20 35 30 30 0D 0A 20 20 41 4E = VEC 500.. AN
00EC30: 44 20 69 6E 62 75 66 66 20 3D 20 56 45 43 20 38 D inbuff = VEC 8
00EC40: 32 0D 0A 20 20 41 4E 44 20 6F 75 74 62 75 66 66 2.. AND outbuff
00EC50: 20 3D 20 56 45 43 20 38 32 0D 0A 20 20 41 4E 44 = VEC 82.. AND
00EC60: 20 6E 61 6D 65 69 6E 20 3D 20 56 45 43 20 31 30 namein = VEC 10
00EC70: 0D 0A 20 20 41 4E 44 20 6E 61 6D 65 6F 75 74 20 .. AND nameout
00EC80: 3D 20 56 45 43 20 31 30 0D 0A 20 20 41 4E 44 20 = VEC 10.. AND
00EC90: 6C 65 76 20 3D 20 56 45 43 20 33 0D 0A 20 20 6C lev = VEC 3.. l
00ECA0: 65 76 65 6C 28 6C 65 76 29 0D 0A 20 20 65 72 72 evel(lev).. err
00ECB0: 76 65 63 2C 20 69 6E 70 75 74 2C 20 6F 75 74 70 vec, input, outp
00ECC0: 75 74 20 3A 3D 20 6C 65 76 2C 20 69 6E 62 75 66 ut := lev, inbuf
00ECD0: 66 2C 20 6F 75 74 62 75 66 66 0D 0A 20 20 6B 65 f, outbuff.. ke
00ECE0: 79 77 6F 72 64 73 2C 20 6B 65 79 65 6E 64 20 3A ywords, keyend :
00ECF0: 3D 20 77 6F 72 64 61 72 72 61 79 2C 20 77 6F 72 = wordarray, wor
00ED00: 64 61 72 72 61 79 0D 0A 20 20 72 65 61 64 73 79 darray.. readsy
00ED10: 73 28 29 0D 0A 20 20 66 69 6C 65 73 28 29 0D 0A s().. files()..
00ED20: 20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 62 65 getchr().. be
00ED30: 61 75 74 69 66 79 28 29 0D 0A 20 20 65 72 72 6F autify().. erro
00ED40: 72 3A 20 63 6C 6F 73 65 69 6E 28 69 6E 70 75 74 r: closein(input
00ED50: 29 0D 0A 20 20 63 6C 6F 73 65 6F 75 74 28 6F 75 ).. closeout(ou
00ED60: 74 70 75 74 29 0D 0A 20 20 6E 65 77 6C 69 6E 65 tput).. newline
00ED70: 28 29 0D 0A 20 20 77 72 69 74 65 73 28 22 42 43 ().. writes("BC
00ED80: 50 4C 20 62 65 61 75 74 69 66 69 65 72 20 66 69 PL beautifier fi
00ED90: 6E 69 73 68 65 64 22 29 0D 0A 24 29 0D 0A 2E 0D nished")..$)....
00EDA0: 0A 1A 20 77 69 6C 6C 20 74 75 72 6E 20 61 6C 6C .. will turn all
00EDB0: 20 6B 65 79 77 6F 72 64 73 20 69 6E 74 6F 20 75 keywords into u
00EDC0: 70 70 65 72 20 63 61 73 65 20 61 6E 64 0D 0A 20 pper case and..
00EDD0: 20 20 61 6C 6C 20 69 64 65 6E 74 69 66 69 65 72 all identifier
00EDE0: 73 20 69 6E 74 6F 20 6C 6F 77 65 72 20 63 61 73 s into lower cas
00EDF0: 65 20 2A 2F 0D 0A 0D 0A 2F 2F 20 6D 6F 64 69 66 e */....// modif
00EE00: 6D 63 68 29 20 26 20 28 6C 61 73 74 63 68 72 20 mch) & (lastchr
00EE10: 4E 45 20 73 6F 66 74 65 6F 66 63 68 29 20 44 4F NE softeofch) DO
00EE20: 0D 0A 20 20 24 28 0D 0A 20 20 20 20 57 48 49 4C .. $(.. WHIL
00EE30: 45 20 73 70 61 63 65 28 6C 61 73 74 63 68 72 29 E space(lastchr)
00EE40: 20 44 4F 20 67 65 74 63 68 72 28 29 0D 0A 20 20 DO getchr()..
00EE50: 20 20 54 45 53 54 20 27 61 27 20 3C 3D 20 6C 61 TEST 'a' <= la
00EE60: 73 74 63 68 72 20 3C 3D 20 27 7A 27 20 54 48 45 stchr <= 'z' THE
00EE70: 4E 20 69 64 65 6E 74 28 29 0D 0A 20 20 20 20 45 N ident().. E
00EE80: 4C 53 45 20 54 45 53 54 20 27 30 27 20 3C 3D 20 LSE TEST '0' <=
00EE90: 6C 61 73 74 63 68 72 20 3C 3D 20 27 39 27 20 54 lastchr <= '9' T
00EEA0: 48 45 4E 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 HEN.. $(..
00EEB0: 20 20 20 69 64 73 70 61 63 65 28 29 0D 0A 20 20 idspace()..
00EEC0: 20 20 20 20 72 65 61 64 6E 75 6D 28 31 30 2C 20 readnum(10,
00EED0: 6C 61 73 74 63 68 72 29 0D 0A 20 20 20 20 24 29 lastchr).. $)
00EEE0: 0D 0A 20 20 20 20 45 4C 53 45 20 54 45 53 54 20 .. ELSE TEST
00EEF0: 6C 61 73 74 63 68 72 20 3D 20 27 23 27 20 54 48 lastchr = '#' TH
00EF00: 45 4E 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 20 EN.. $(..
00EF10: 20 20 69 64 73 70 61 63 65 28 29 0D 0A 20 20 20 idspace()..
00EF20: 20 20 20 6F 75 74 28 27 23 27 29 0D 0A 20 20 20 out('#')..
00EF30: 20 20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 20 getchr()..
00EF40: 20 20 20 53 57 49 54 43 48 4F 4E 20 6C 61 73 74 SWITCHON last
00EF50: 63 68 72 20 49 4E 54 4F 0D 0A 20 20 20 20 20 20 chr INTO..
00EF60: 24 28 0D 0A 20 20 20 20 20 20 20 20 43 41 53 45 $(.. CASE
00EF70: 20 27 78 27 3A 20 6F 75 74 28 27 78 27 29 0D 0A 'x': out('x')..
00EF80: 20 20 20 20 20 20 20 20 72 65 61 64 6E 75 6D 28 readnum(
00EF90: 31 36 2C 20 67 65 74 63 68 72 28 29 29 0D 0A 20 16, getchr())..
00EFA0: 20 20 20 20 20 20 20 45 4E 44 43 41 53 45 0D 0A ENDCASE..
00EFB0: 20 20 20 20 20 20 20 20 43 41 53 45 20 27 62 27 CASE 'b'
00EFC0: 3A 20 6F 75 74 28 27 62 27 29 0D 0A 20 20 20 20 : out('b')..
00EFD0: 20 20 20 20 72 65 61 64 6E 75 6D 28 32 2C 20 67 readnum(2, g
00EFE0: 65 74 63 68 72 28 29 29 0D 0A 20 20 20 20 20 20 etchr())..
00EFF0: 20 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 ENDCASE..
00F000: 2F 20 D9 CD 1A 06 C3 85 35 FE 5C 20 19 CD 1A 06 / ......5.\ ....
00F010: FE 2F 20 04 3E 1A 18 72 FE 3D 20 04 3E 1F 18 6A ./ .>..r.= .>..j
00F020: 3E 20 32 1E 3E C9 FE 3C 20 19 CD 1A 06 FE 3D 20 > 2.>..< .....=
00F030: 04 3E 18 18 55 FE 3C 20 04 3E 1D 18 4D 3E 19 32 .>..U.< .>..M>.2
00F040: 1E 3E C9 FE 3E 20 19 CD 1A 06 FE 3D 20 04 3E 10 .>..> .....= .>.
00F050: 18 38 FE 3E 20 04 3E 25 18 30 3E 11 32 1E 3E C9 .8.> .>%.0>.2.>.
00F060: FE 2D 20 11 CD 1A 06 FE 3E 20 04 3E 3C 18 1B 3E .- .....> .><..>
00F070: 3D 32 1E 3E C9 FE 3A 20 1A CD 1A 06 FE 3D 20 04 =2.>..: .....= .
00F080: 3E 3E 18 06 3E 3F 32 1E 3E C9 F5 CD 1A 06 F1 32 >>..>?2.>......2
00F090: 1E 3E C9 FE 24 20 2F CD 1A 06 FE 28 20 0F 3E 24 .>..$ /....( .>$
00F0A0: CD B3 39 21 60 3C CD D7 34 3E 48 18 12 FE 29 C2 ..9!`<..4>H...).
00F0B0: 6C 38 3E 24 CD B3 39 21 60 3C CD D7 34 3E 49 32 l8>$..9!`<..4>I2
00F0C0: 1E 3E 22 1F 3E C9 FE 2E 20 25 2A CB 3E 2B 7E 32 .>".>... %*.>+~2
00F0D0: 32 3E 2B 7E 32 31 3E 2B 7E 32 21 3E 11 A3 00 A7 2>+~21>+~2!>.£..
00F0E0: ED 52 22 CB 3E A7 C2 85 35 3E 40 32 1E 3E C9 FE .R".>...5>@2.>..
00F0F0: 1A 28 D7 FE 3D 20 1B CD 1A 06 FE 3E 20 05 3E 10 .(..= .....> .>.
00F100: C3 8A 37 FE 3C 20 05 3E 18 C3 8A 37 3E 08 32 1E ..7.< .>...7>.2.
00F110: 3E C9 FE 22 20 3D 21 C6 3C 0E 00 CD 29 06 FE 22 >.." =!.<...).."
00F120: 20 09 21 C6 3C 71 3E 4E C3 8A 37 CD 29 3A 30 05 .!.<q>N..7.):0.
00F130: CD 3A 38 3E 0A CD 3A 38 18 E1 23 0C 77 79 A7 C0 .:8>..:8..#.wy..
00F140: CD 76 06 53 74 72 69 6E 67 20 74 6F 6F 20 6C 6F .v.String too lo
00F150: 6E 67 00 FE 7E 20 10 CD 1A 06 FE 3D 3E 1F CA 8A ng..~ .....=>...
00F160: 37 3E 20 32 1E 3E C9 3E 20 32 21 3E CD 76 06 42 7> 2.>.> 2!>.v.B
00F170: 61 64 20 63 68 61 72 61 63 74 65 72 00 CD 76 06 ad character..v.
00F180: 42 61 64 20 63 68 61 72 61 63 74 65 72 20 63 6F Bad character co
00F190: 6E 73 74 61 6E 74 00 3E 05 32 66 3E CD 02 0C D0 nstant.>.2f>....
00F1A0: FE EF 28 F8 CD C0 38 C0 CD FC 0B FE EF 28 F9 CD ..(...8......(..
00F1B0: C0 38 C0 CD 4A 34 42 72 6F 6B 65 6E 20 69 6E 00 .8..J4Broken in.
00F1C0: FE FC C8 FE 03 C9 2B 35 2C 36 3B 37 40 17 26 1B ......+5,6;7@.&.
00F1D0: 7C 1A 21 38 2A 39 28 41 29 42 5B 41 5D 42 25 51 |.!8*9(A)B[A]B%Q
00F1E0: 3F 52 00 CD 71 35 FE 4E 28 0B CD 76 06 42 61 64 ?R..q5.N(..v.Bad
00F1F0: 20 47 45 54 00 21 C6 3C CD B6 08 C3 85 35 CD AB GET.!.<.....5..
00F200: 20 20 20 43 41 53 45 20 27 6F 27 3A 20 6F 75 74 CASE 'o': out
00F210: 28 27 6F 27 29 0D 0A 20 20 20 20 20 20 20 20 72 ('o').. r
00F220: 65 61 64 6E 75 6D 28 38 2C 20 67 65 74 63 68 72 eadnum(8, getchr
00F230: 28 29 29 0D 0A 20 20 20 20 20 20 20 20 45 4E 44 ()).. END
00F240: 43 41 53 45 0D 0A 20 20 20 20 20 20 20 20 44 45 CASE.. DE
00F250: 46 41 55 4C 54 3A 20 72 65 61 64 6E 75 6D 28 38 FAULT: readnum(8
00F260: 2C 20 6C 61 73 74 63 68 72 29 0D 0A 20 20 20 20 , lastchr)..
00F270: 20 20 24 29 0D 0A 20 20 20 20 24 29 0D 0A 20 20 $).. $)..
00F280: 20 20 45 4C 53 45 20 54 45 53 54 20 6C 61 73 74 ELSE TEST last
00F290: 63 68 72 20 3D 20 31 33 20 54 48 45 4E 0D 0A 20 chr = 13 THEN..
00F2A0: 20 20 20 24 28 0D 0A 20 20 20 20 20 20 6F 75 74 $(.. out
00F2B0: 28 31 33 29 0D 0A 20 20 20 20 20 20 67 65 74 63 (13).. getc
00F2C0: 68 72 28 29 0D 0A 20 20 20 20 24 29 0D 0A 20 20 hr().. $)..
00F2D0: 20 20 45 4C 53 45 20 70 75 6E 63 74 75 61 74 65 ELSE punctuate
00F2E0: 28 29 0D 0A 20 20 24 29 0D 0A 24 29 0D 0A 0D 0A ().. $)..$)....
00F2F0: 0D 0A 4C 45 54 20 66 69 6C 65 73 28 29 20 42 45 ..LET files() BE
00F300: 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 6E 61 6D 65 ..$(.. LET name
00F310: 69 6E 20 3D 20 56 45 43 20 31 30 0D 0A 20 20 41 in = VEC 10.. A
00F320: 4E 44 20 6E 61 6D 65 6F 75 74 20 3D 20 56 45 43 ND nameout = VEC
00F330: 20 31 30 0D 0A 20 20 77 72 69 74 65 73 28 22 45 10.. writes("E
00F340: 6E 74 65 72 20 74 68 65 20 69 6E 70 75 74 20 66 nter the input f
00F350: 69 6C 65 20 6E 61 6D 65 3A 20 20 22 29 0D 0A 20 ile name: ")..
00F360: 20 72 65 61 64 73 28 6E 61 6D 65 69 6E 29 0D 0A reads(namein)..
00F370: 20 20 6E 65 77 6C 69 6E 65 28 29 0D 0A 20 20 77 newline().. w
00F380: 72 69 74 65 73 28 22 45 6E 74 65 72 20 74 68 65 rites("Enter the
00F390: 20 6F 75 74 70 75 74 20 66 69 6C 65 20 6E 61 6D output file nam
00F3A0: 65 3A 20 22 29 0D 0A 20 20 72 65 61 64 73 28 6E e: ").. reads(n
00F3B0: 61 6D 65 6F 75 74 29 0D 0A 20 20 6E 65 77 6C 69 ameout).. newli
00F3C0: 6E 65 28 29 0D 0A 20 20 55 4E 4C 45 53 53 20 66 ne().. UNLESS f
00F3D0: 69 6E 64 69 6E 70 75 74 28 6E 61 6D 65 69 6E 2C indinput(namein,
00F3E0: 20 69 6E 70 75 74 29 20 54 48 45 4E 20 65 72 72 input) THEN err
00F3F0: 28 22 43 61 6E 27 74 20 6F 70 65 6E 20 69 6E 70 ("Can't open inp
00F400: 2F 2F 20 43 4C 49 42 48 44 52 31 20 20 20 61 64 // CLIBHDR1 ad
00F410: 64 69 74 69 6F 6E 61 6C 20 43 50 2F 4D 20 6C 69 ditional CP/M li
00F420: 62 72 61 72 79 20 68 65 61 64 65 72 2C 20 6C 61 brary header, la
00F430: 73 74 20 6D 6F 64 69 66 69 65 64 20 31 39 2F 31 st modified 19/1
00F440: 31 2F 31 39 38 36 0D 0A 0D 0A 0D 0A 53 54 41 54 1/1986......STAT
00F450: 49 43 20 24 28 20 72 61 6E 64 6F 6D 73 65 65 64 IC $( randomseed
00F460: 20 3D 20 30 20 24 29 0D 0A 0D 0A 4C 45 54 20 72 = 0 $)....LET r
00F470: 61 6E 64 6F 6D 28 29 20 3D 20 56 41 4C 4F 46 0D andom() = VALOF.
00F480: 0A 24 28 0D 0A 20 20 72 61 6E 64 6F 6D 73 65 65 .$(.. randomsee
00F490: 64 20 3A 3D 20 72 61 6E 64 6F 6D 73 65 65 64 20 d := randomseed
00F4A0: 2A 20 23 78 41 33 45 44 20 2B 20 23 78 31 44 33 * #xA3ED + #x1D3
00F4B0: 31 0D 0A 20 20 52 45 53 55 4C 54 49 53 20 72 61 1.. RESULTIS ra
00F4C0: 6E 64 6F 6D 73 65 65 64 05 08 24 29 0C E0 19 C9 ndomseed..$)....
00F4D0: 05 39 10 81 CD D1 BD C0 A1 8D BD 91 94 A4 81 09 .9..............
00F4E0: 14 34 28 90 A0 34 28 80 81 89 91 BD CD 88 A0 C4 .4(..4(.........
00F4F0: C0 E0 B1 8D BD 91 94 A4 34 28 80 81 99 A5 B9 A5 ........4(......
00F500: CD A0 34 28 90 A4 34 28 34 29 05 39 10 81 D1 85 ..4(..4(4).9....
00F510: A5 B0 A1 CD D1 C9 A5 B9 9C A4 81 09 14 34 28 90 .............4(.
00F520: A0 34 28 80 81 CD D1 C9 A5 B9 9C 94 C0 80 E8 F4 .4(.............
00F530: 80 C0 94 8D E0 E0 C0 34 28 80 81 19 3D 48 81 84 .......4(...=H..
00F540: 80 F4 80 C4 81 51 3C 81 CD D1 C9 A5 B9 9C 94 C0 .....Q<.........
00F550: 81 11 3C 81 CD D1 C9 A5 B9 9C 95 84 80 E8 F4 80 ..<.............
00F560: C0 94 A0 8D E0 E0 C0 AD 84 A4 34 28 90 A4 34 28 ..........4(..4(
00F570: 34 29 05 39 10 81 91 95 B1 95 D1 94 A1 B9 85 B5 4).9............
00F580: 94 B1 89 D5 99 99 95 C8 A4 80 F4 81 59 05 31 3D ............Y.1=
00F590: 18 34 28 90 A0 34 28 80 81 31 15 50 81 8C B0 81 .4(..4(..1.P....
00F5A0: 91 94 80 F4 80 C4 E4 B0 81 89 D5 99 99 95 C8 A8 ................
00F5B0: C8 34 28 80 81 CD 95 D1 99 8D 88 A1 B9 85 B5 94 .4(.............
00F5C0: B1 89 D5 99 99 95 C8 A4 34 28 80 81 89 91 BD CD ........4(......
00F5D0: 84 A1 01 8C B1 01 91 94 A4 34 28 80 81 49 15 4D .........4(..I.M
00F5E0: 55 31 51 25 4C 81 8D 70 F4 C8 D4 D4 34 28 90 A4 U1Q%L..p....4(..
00F5F0: 34 28 34 29 05 39 10 81 C9 95 B9 85 B5 94 A1 BA 4(4).9..........
00F600: 75 74 22 29 0D 0A 20 20 55 4E 4C 45 53 53 20 66 ut").. UNLESS f
00F610: 69 6E 64 6F 75 74 70 75 74 28 6E 61 6D 65 6F 75 indoutput(nameou
00F620: 74 2C 20 6F 75 74 70 75 74 29 20 54 48 45 4E 20 t, output) THEN
00F630: 65 72 72 28 22 43 61 6E 27 74 20 6F 70 65 6E 20 err("Can't open
00F640: 6F 75 74 70 75 74 22 29 0D 0A 24 29 0D 0A 0D 0A output")..$)....
00F650: 0D 0A 0D 0A 4C 45 54 20 72 65 61 64 77 6F 72 64 ....LET readword
00F660: 73 28 73 74 72 69 6E 67 29 20 42 45 0D 0A 0D 0A s(string) BE....
00F670: 24 28 0D 0A 20 20 4C 45 54 20 6C 65 6E 67 74 68 $(.. LET length
00F680: 2C 20 72 65 73 74 2C 20 6C 65 6E 67 74 68 70 74 , rest, lengthpt
00F690: 72 20 3D 20 73 74 72 69 6E 67 25 30 2C 20 31 2C r = string%0, 1,
00F6A0: 20 30 0D 0A 20 20 57 48 49 4C 45 20 6C 65 6E 67 0.. WHILE leng
00F6B0: 74 68 20 3E 20 72 65 73 74 20 44 4F 0D 0A 20 20 th > rest DO..
00F6C0: 24 28 0D 0A 20 20 20 20 54 45 53 54 20 73 74 72 $(.. TEST str
00F6D0: 69 6E 67 25 72 65 73 74 20 3D 20 27 42 27 20 54 ing%rest = 'B' T
00F6E0: 48 45 4E 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 HEN.. $(..
00F6F0: 20 20 20 21 6B 65 79 65 6E 64 20 3A 3D 20 54 52 !keyend := TR
00F700: 55 45 0D 0A 20 20 20 20 20 20 72 65 73 74 20 3A UE.. rest :
00F710: 3D 20 72 65 73 74 20 2B 20 31 0D 0A 20 20 20 20 = rest + 1..
00F720: 24 29 0D 0A 20 20 20 20 45 4C 53 45 20 21 6B 65 $).. ELSE !ke
00F730: 79 65 6E 64 20 3A 3D 20 46 41 4C 53 45 0D 0A 20 yend := FALSE..
00F740: 20 20 20 6C 65 6E 67 74 68 70 74 72 20 3A 3D 20 lengthptr :=
00F750: 6B 65 79 65 6E 64 20 2B 20 31 0D 0A 20 20 20 20 keyend + 1..
00F760: 6B 65 79 65 6E 64 20 3A 3D 20 6B 65 79 65 6E 64 keyend := keyend
00F770: 20 2B 20 32 0D 0A 20 20 20 20 21 6C 65 6E 67 74 + 2.. !lengt
00F780: 68 70 74 72 20 3A 3D 20 30 0D 0A 20 20 20 20 57 hptr := 0.. W
00F790: 48 49 4C 45 20 73 74 72 69 6E 67 25 72 65 73 74 HILE string%rest
00F7A0: 20 4E 45 20 27 2C 27 20 44 4F 0D 0A 20 20 20 20 NE ',' DO..
00F7B0: 24 28 0D 0A 20 20 20 20 20 20 21 6B 65 79 65 6E $(.. !keyen
00F7C0: 64 20 3A 3D 20 73 74 72 69 6E 67 25 72 65 73 74 d := string%rest
00F7D0: 0D 0A 20 20 20 20 20 20 6B 65 79 65 6E 64 2C 20 .. keyend,
00F7E0: 72 65 73 74 2C 20 21 6C 65 6E 67 74 68 70 74 72 rest, !lengthptr
00F7F0: 20 3A 3D 20 6B 65 79 65 6E 64 20 2B 20 31 2C 20 := keyend + 1,
00F800: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
00F810: 0D 00 01 00 02 09 4E E5 0D 00 C1 02 00 00 00 02 ......N.........
00F820: 0D 00 C6 02 00 00 00 02 0D 00 C2 02 00 00 00 02 ................
00F830: 0D 00 C7 02 00 00 00 02 0D 00 C3 02 00 00 00 02 ................
00F840: 0D 00 C8 02 00 00 00 02 0D 00 C4 02 00 00 00 02 ................
00F850: 0D 00 C9 02 00 00 00 02 0D 00 C5 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: 61 6D 65 31 2C 6E 61 6D 65 32 2C 62 75 66 66 65 ame1,name2,buffe
00F910: 72 29 20 3D 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A r) = VALOF..$(..
00F920: 20 20 4C 45 54 20 63 2C 20 64 65 20 3D 20 32 33 LET c, de = 23
00F930: 2C 20 62 75 66 66 65 72 2A 32 0D 0A 20 20 73 65 , buffer*2.. se
00F940: 74 66 63 62 28 6E 61 6D 65 31 2C 62 75 66 66 65 tfcb(name1,buffe
00F950: 72 29 0D 0A 20 20 73 65 74 66 63 62 28 6E 61 6D r).. setfcb(nam
00F960: 65 32 2C 62 75 66 66 65 72 2B 31 36 29 0D 0A 20 e2,buffer+16)..
00F970: 20 62 79 74 65 6D 6F 76 65 28 62 75 66 66 65 72 bytemove(buffer
00F980: 2A 32 2B 33 32 2C 62 75 66 66 65 72 2A 32 2B 31 *2+32,buffer*2+1
00F990: 36 2C 31 36 29 0D 0A 20 20 62 64 6F 73 61 28 40 6,16).. bdosa(@
00F9A0: 63 2C 40 64 65 29 0D 0A 20 20 52 45 53 55 4C 54 c,@de).. RESULT
00F9B0: 49 53 20 63 5C 3D 32 35 35 0D 0A 24 29 0D 0A 0D IS c\=255..$)...
00F9C0: 0A 41 4E 44 20 77 72 69 74 65 74 28 73 2C 6E 29 .AND writet(s,n)
00F9D0: 20 42 45 0D 0A 24 28 20 20 0D 0A 20 20 77 72 69 BE..$( .. wri
00F9E0: 74 65 73 28 73 29 0D 0A 20 20 46 4F 52 20 69 20 tes(s).. FOR i
00F9F0: 3D 20 31 20 74 6F 20 6E 2D 73 25 30 20 44 4F 20 = 1 to n-s%0 DO
00FA00: 77 72 63 68 28 27 20 27 29 0D 0A 24 29 0D 0A 0D wrch(' ')..$)...
00FA10: 0A 41 4E 44 20 77 72 69 74 65 75 28 6E 2C 64 29 .AND writeu(n,d)
00FA20: 20 42 45 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 6D BE..$(.. LET m
00FA30: 20 3D 20 28 6E 3E 3E 31 29 2F 35 0D 0A 20 20 55 = (n>>1)/5.. U
00FA40: 4E 4C 45 53 53 20 6D 3D 30 20 44 4F 0D 0A 20 20 NLESS m=0 DO..
00FA50: 24 28 0D 0A 20 20 20 20 77 72 69 74 65 64 28 6D $(.. writed(m
00FA60: 2C 64 2D 31 29 0D 0A 20 20 20 20 64 20 3A 3D 20 ,d-1).. d :=
00FA70: 31 0D 0A 20 20 24 29 0D 0A 20 20 77 72 69 74 65 1.. $).. write
00FA80: 64 28 6E 2D 6D 2A 31 30 2C 64 29 0D 0A 24 29 0D d(n-m*10,d)..$).
00FA90: 0A 0D 0A 41 4E 44 20 6E 65 77 70 61 67 65 28 29 ...AND newpage()
00FAA0: 20 42 45 20 20 77 72 63 68 28 31 32 29 0D 0A 0D BE wrch(12)...
00FAB0: 0A 41 4E 44 20 63 6F 6D 70 63 68 28 63 68 31 2C .AND compch(ch1,
00FAC0: 63 68 32 29 20 3D 20 63 61 70 69 74 61 6C 63 68 ch2) = capitalch
00FAD0: 28 63 68 31 29 20 2D 20 63 61 70 69 74 61 6C 63 (ch1) - capitalc
00FAE0: 68 28 63 68 32 29 0D 0A 0D 0A 41 4E 44 20 63 6F h(ch2)....AND co
00FAF0: 6D 70 73 74 72 69 6E 67 28 73 31 2C 73 32 29 20 mpstring(s1,s2)
00FB00: 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 36 inline #xDD,#x66
00FB10: 2C 23 78 37 42 20 20 20 20 20 20 20 2F 2F 20 6C ,#x7B // l
00FB20: 64 20 68 2C 28 69 78 2B 31 32 33 29 0D 0A 20 20 d h,(ix+123)..
00FB30: 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 45 inline #xDD,#x6E
00FB40: 2C 23 78 37 41 20 20 20 20 20 20 20 2F 2F 20 6C ,#x7A // l
00FB50: 64 20 6C 2C 28 69 78 2B 31 32 32 29 0D 0A 20 20 d l,(ix+122)..
00FB60: 69 6E 6C 69 6E 65 20 23 78 32 39 2C 23 78 35 45 inline #x29,#x5E
00FB70: 2C 23 78 32 33 2C 23 78 35 36 20 20 2F 2F 20 61 ,#x23,#x56 // a
00FB80: 64 64 20 68 6C 2C 68 6C 3A 6C 64 20 65 2C 28 68 dd hl,hl:ld e,(h
00FB90: 6C 29 3A 69 6E 63 20 68 6C 3A 6C 64 20 64 2C 28 l):inc hl:ld d,(
00FBA0: 68 6C 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 hl).. inline #x
00FBB0: 45 31 2C 23 78 44 44 2C 23 78 45 31 2C 23 78 46 E1,#xDD,#xE1,#xF
00FBC0: 31 20 20 2F 2F 20 70 6F 70 20 68 6C 3A 70 6F 70 1 // pop hl:pop
00FBD0: 20 69 78 3A 70 6F 70 20 61 66 0D 0A 20 20 69 6E ix:pop af.. in
00FBE0: 6C 69 6E 65 20 23 78 43 44 2C 23 78 39 30 2C 23 line #xCD,#x90,#
00FBF0: 78 30 30 20 20 20 20 20 20 20 2F 2F 20 63 61 6C x00 // cal
00FC00: 6C 20 26 39 30 0D 0A 20 20 69 6E 6C 69 6E 65 20 l &90.. inline
00FC10: 23 78 44 44 2C 23 78 32 32 2C 23 78 39 30 2C 23 #xDD,#x22,#x90,#
00FC20: 78 30 30 20 20 2F 2F 20 6C 64 20 28 26 39 30 29 x00 // ld (&90)
00FC30: 2C 69 78 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 ,ix.. inline #x
00FC40: 44 44 2C 23 78 45 31 20 20 20 20 20 20 20 20 20 DD,#xE1
00FC50: 20 20 20 2F 2F 20 70 6F 70 20 69 78 0D 0A 20 20 // pop ix..
00FC60: 69 6E 6C 69 6E 65 20 23 78 46 35 2C 23 78 45 35 inline #xF5,#xE5
00FC70: 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 70 // p
00FC80: 75 73 68 20 61 66 3A 70 75 73 68 20 68 6C 0D 0A ush af:push hl..
00FC90: 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 inline #xDD,#x
00FCA0: 36 36 2C 23 78 37 42 20 20 20 20 20 20 20 2F 2F 66,#x7B //
00FCB0: 20 6C 64 20 68 2C 28 69 78 2B 31 32 33 29 0D 0A ld h,(ix+123)..
00FCC0: 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 inline #xDD,#x
00FCD0: 36 45 2C 23 78 37 41 20 20 20 20 20 20 20 2F 2F 6E,#x7A //
00FCE0: 20 6C 64 20 6C 2C 28 69 78 2B 31 32 32 29 0D 0A ld l,(ix+122)..
00FCF0: 20 20 69 6E 6C 69 6E 65 20 23 78 32 39 2C 23 78 inline #x29,#x
00FD00: 3D 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C = VALOF..$(.. L
00FD10: 45 54 20 6C 65 6E 31 2C 6C 65 6E 32 20 3D 20 73 ET len1,len2 = s
00FD20: 31 25 30 2C 20 73 32 25 30 0D 0A 20 20 4C 45 54 1%0, s2%0.. LET
00FD30: 20 73 68 6F 72 74 65 72 20 3D 20 6C 65 6E 31 3C shorter = len1<
00FD40: 6C 65 6E 32 20 2D 3E 20 73 31 2C 20 73 32 0D 0A len2 -> s1, s2..
00FD50: 20 20 46 4F 52 20 69 20 3D 20 31 20 74 6F 20 73 FOR i = 1 to s
00FD60: 68 6F 72 74 65 72 25 30 20 44 4F 0D 0A 20 20 24 horter%0 DO.. $
00FD70: 28 0D 0A 20 20 20 20 4C 45 54 20 72 65 73 20 3D (.. LET res =
00FD80: 20 63 6F 6D 70 63 68 28 73 31 25 69 2C 20 73 32 compch(s1%i, s2
00FD90: 25 69 29 0D 0A 20 20 20 20 55 4E 4C 45 53 53 20 %i).. UNLESS
00FDA0: 72 65 73 3D 30 20 52 45 53 55 4C 54 49 53 20 72 res=0 RESULTIS r
00FDB0: 65 73 0D 0A 20 20 24 29 0D 0A 20 20 52 45 53 55 es.. $).. RESU
00FDC0: 4C 54 49 53 20 6C 65 6E 31 3D 6C 65 6E 32 20 2D LTIS len1=len2 -
00FDD0: 3E 20 30 2C 20 73 68 6F 72 74 65 72 3D 73 31 20 > 0, shorter=s1
00FDE0: 2D 3E 20 2D 31 2C 31 0D 0A 24 29 0D 0A 0D 0A 41 -> -1,1..$)....A
00FDF0: 4E 44 20 62 79 74 65 6D 6F 76 65 28 73 6F 75 72 ND bytemove(sour
00FE00: 63 65 2C 64 65 73 74 2C 6E 75 6D 62 65 72 29 20 ce,dest,number)
00FE10: 42 45 0D 0A 24 28 0D 0A 20 20 69 6E 6C 69 6E 65 BE..$(.. inline
00FE20: 20 32 32 31 2C 31 30 32 2C 31 32 33 20 20 20 20 221,102,123
00FE30: 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 32 // ld h,(ix+12
00FE40: 33 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 32 31 3).. inline 221
00FE50: 2C 31 31 30 2C 31 32 32 20 20 20 20 20 20 2F 2F ,110,122 //
00FE60: 20 6C 64 20 6C 2C 28 69 78 2B 31 32 32 29 0D 0A ld l,(ix+122)..
00FE70: 20 20 69 6E 6C 69 6E 65 20 32 32 31 2C 38 36 2C inline 221,86,
00FE80: 31 32 35 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 125 // ld
00FE90: 64 2C 28 69 78 2B 31 32 35 29 0D 0A 20 20 69 6E d,(ix+125).. in
00FEA0: 6C 69 6E 65 20 32 32 31 2C 39 34 2C 31 32 34 20 line 221,94,124
00FEB0: 20 20 20 20 20 20 2F 2F 20 6C 64 20 65 2C 28 69 // ld e,(i
00FEC0: 78 2B 31 32 34 29 0D 0A 20 20 69 6E 6C 69 6E 65 x+124).. inline
00FED0: 20 32 32 31 2C 37 30 2C 31 32 37 20 20 20 20 20 221,70,127
00FEE0: 20 20 2F 2F 20 6C 64 20 62 2C 28 69 78 2B 31 32 // ld b,(ix+12
00FEF0: 37 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 32 31 7).. inline 221
00FF00: 37 33 2C 23 78 32 33 2C 23 78 37 32 20 20 2F 2F 73,#x23,#x72 //
00FF10: 20 61 64 64 20 68 6C 2C 68 6C 3A 6C 64 20 28 68 add hl,hl:ld (h
00FF20: 6C 29 2C 65 3A 69 6E 63 20 68 6C 3A 6C 64 20 28 l),e:inc hl:ld (
00FF30: 68 6C 29 2C 64 0D 0A 20 20 69 6E 6C 69 6E 65 20 hl),d.. inline
00FF40: 23 78 44 44 2C 23 78 36 36 2C 23 78 37 44 20 20 #xDD,#x66,#x7D
00FF50: 20 20 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 // ld h,(ix
00FF60: 2B 31 32 35 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 +125).. inline
00FF70: 23 78 44 44 2C 23 78 36 45 2C 23 78 37 43 20 20 #xDD,#x6E,#x7C
00FF80: 20 20 20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 // ld l,(ix
00FF90: 2B 31 32 34 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 +124).. inline
00FFA0: 23 78 32 39 2C 23 78 44 31 20 20 20 20 20 20 20 #x29,#xD1
00FFB0: 20 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 // add hl,h
00FFC0: 6C 3A 70 6F 70 20 64 65 0D 0A 20 20 69 6E 6C 69 l:pop de.. inli
00FFD0: 6E 65 20 23 78 37 33 2C 23 78 32 33 2C 23 78 37 ne #x73,#x23,#x7
00FFE0: 32 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 28 68 2 // ld (h
00FFF0: 6C 29 2C 65 3A 69 6E 63 20 68 6C 3A 6C 64 20 28 l),e:inc hl:ld (
010000: 68 6C 29 2C 64 0D 0A 20 20 69 6E 6C 69 6E 65 20 hl),d.. inline
010010: 23 78 44 44 2C 23 78 36 36 2C 23 78 37 46 20 20 #xDD,#x66,#x7F
010020: 20 20 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 // ld h,(ix
010030: 2B 31 32 37 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 +127).. inline
010040: 23 78 44 44 2C 23 78 36 45 2C 23 78 37 45 20 20 #xDD,#x6E,#x7E
010050: 20 20 20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 // ld l,(ix
010060: 2B 31 32 36 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 +126).. inline
010070: 23 78 32 39 20 20 20 20 20 20 20 20 20 20 20 20 #x29
010080: 20 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 // add hl,h
010090: 6C 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 45 44 l.. inline #xED
0100A0: 2C 23 78 35 42 2C 23 78 39 30 2C 23 78 30 30 20 ,#x5B,#x90,#x00
0100B0: 20 2F 2F 20 6C 64 20 64 65 2C 28 26 39 30 29 0D // ld de,(&90).
0100C0: 0A 20 20 69 6E 6C 69 6E 65 20 23 78 37 33 2C 23 . inline #x73,#
0100D0: 78 32 33 2C 23 78 37 32 20 20 20 20 20 20 20 2F x23,#x72 /
0100E0: 2F 20 6C 64 20 28 68 6C 29 2C 65 3A 69 6E 63 20 / ld (hl),e:inc
0100F0: 68 6C 3A 6C 64 20 28 68 6C 29 2C 64 0D 0A 20 20 hl:ld (hl),d..
010100: 2C 37 38 2C 31 32 36 20 20 20 20 20 20 20 2F 2F ,78,126 //
010110: 20 6C 64 20 63 2C 28 69 78 2B 31 32 36 29 0D 0A ld c,(ix+126)..
010120: 20 20 69 6E 6C 69 6E 65 20 31 36 37 20 20 20 20 inline 167
010130: 20 20 20 20 20 20 20 20 20 20 2F 2F 20 61 6E 64 // and
010140: 20 61 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 33 37 a.. inline 237
010150: 2C 38 32 20 20 20 20 20 20 20 20 20 20 20 2F 2F ,82 //
010160: 20 73 62 63 20 68 6C 2C 64 65 0D 0A 20 20 69 6E sbc hl,de.. in
010170: 6C 69 6E 65 20 32 35 20 20 20 20 20 20 20 20 20 line 25
010180: 20 20 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C // add hl,
010190: 64 65 0D 0A 20 20 69 6E 6C 69 6E 65 20 35 36 2C de.. inline 56,
0101A0: 34 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 4 //
0101B0: 20 6A 72 20 63 2C 2B 34 0D 0A 20 20 69 6E 6C 69 jr c,+4.. inli
0101C0: 6E 65 20 32 33 37 2C 31 37 36 20 20 20 20 20 20 ne 237,176
0101D0: 20 20 20 20 2F 2F 20 6C 64 69 72 0D 0A 20 20 69 // ldir.. i
0101E0: 6E 6C 69 6E 65 20 32 34 2C 38 20 20 20 20 20 20 nline 24,8
0101F0: 20 20 20 20 20 20 20 2F 2F 20 6A 72 20 2B 38 0D // jr +8.
010200: 0A 20 20 69 6E 6C 69 6E 65 20 31 31 20 20 20 20 . inline 11
010210: 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 64 65 // de
010220: 63 20 62 63 0D 0A 20 20 69 6E 6C 69 6E 65 20 39 c bc.. inline 9
010230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
010240: 2F 2F 20 61 64 64 20 68 6C 2C 62 63 0D 0A 20 20 // add hl,bc..
010250: 69 6E 6C 69 6E 65 20 32 33 35 20 20 20 20 20 20 inline 235
010260: 20 20 20 20 20 20 20 20 2F 2F 20 65 78 20 64 65 // ex de
010270: 2C 68 6C 0D 0A 20 20 69 6E 6C 69 6E 65 20 39 20 ,hl.. inline 9
010280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F /
010290: 2F 20 61 64 64 20 68 6C 2C 62 63 0D 0A 20 20 69 / add hl,bc.. i
0102A0: 6E 6C 69 6E 65 20 32 33 35 20 20 20 20 20 20 20 nline 235
0102B0: 20 20 20 20 20 20 20 2F 2F 20 65 78 20 64 65 2C // ex de,
0102C0: 68 6C 0D 0A 20 20 69 6E 6C 69 6E 65 20 33 20 20 hl.. inline 3
0102D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F //
0102E0: 20 69 6E 63 20 62 63 0D 0A 20 20 69 6E 6C 69 6E inc bc.. inlin
0102F0: 65 20 32 33 37 2C 31 38 34 20 20 20 20 20 20 20 e 237,184
010300: 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 36 inline #xDD,#x66
010310: 2C 23 78 37 39 20 20 20 20 20 20 20 2F 2F 20 6C ,#x79 // l
010320: 64 20 68 2C 28 69 78 2B 31 32 31 29 0D 0A 20 20 d h,(ix+121)..
010330: 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 45 inline #xDD,#x6E
010340: 2C 23 78 37 38 20 20 20 20 20 20 20 2F 2F 20 6C ,#x78 // l
010350: 64 20 6C 2C 28 69 78 2B 31 32 30 29 0D 0A 20 20 d l,(ix+120)..
010360: 69 6E 6C 69 6E 65 20 23 78 32 39 2C 23 78 37 31 inline #x29,#x71
010370: 2C 23 78 32 33 2C 23 78 37 30 20 20 2F 2F 20 61 ,#x23,#x70 // a
010380: 64 64 20 68 6C 2C 68 6C 3A 6C 64 20 28 68 6C 29 dd hl,hl:ld (hl)
010390: 2C 63 3A 69 6E 63 20 68 6C 3A 6C 64 20 28 68 6C ,c:inc hl:ld (hl
0103A0: 29 2C 62 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 ),b.. inline #x
0103B0: 44 44 2C 23 78 36 36 2C 23 78 37 37 20 20 20 20 DD,#x66,#x77
0103C0: 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 // ld h,(ix+1
0103D0: 31 39 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 19).. inline #x
0103E0: 44 44 2C 23 78 36 45 2C 23 78 37 36 20 20 20 20 DD,#x6E,#x76
0103F0: 20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 // ld l,(ix+1
010400: 31 38 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 18).. inline #x
010410: 32 39 2C 23 78 44 31 20 20 20 20 20 20 20 20 20 29,#xD1
010420: 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 3A // add hl,hl:
010430: 70 6F 70 20 64 65 0D 0A 20 20 69 6E 6C 69 6E 65 pop de.. inline
010440: 20 23 78 37 33 2C 23 78 32 33 2C 23 78 37 32 20 #x73,#x23,#x72
010450: 20 20 20 20 20 20 2F 2F 20 6C 64 20 28 68 6C 29 // ld (hl)
010460: 2C 65 3A 69 6E 63 20 68 6C 3A 6C 64 20 28 68 6C ,e:inc hl:ld (hl
010470: 29 2C 64 0D 0A 20 20 62 79 74 65 6D 6F 76 65 28 ),d.. bytemove(
010480: 73 61 76 65 33 2A 32 2C 20 23 78 39 30 2C 20 33 save3*2, #x90, 3
010490: 29 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 66 69 72 )..$)....AND fir
0104A0: 6D 77 61 72 65 28 61 64 64 72 2C 61 66 2C 62 63 mware(addr,af,bc
0104B0: 2C 64 65 2C 68 6C 2C 69 78 29 20 42 45 0D 0A 24 ,de,hl,ix) BE..$
0104C0: 28 0D 0A 20 20 4C 45 54 20 73 61 76 65 36 20 3D (.. LET save6 =
0104D0: 20 56 45 43 20 33 0D 0A 20 20 62 79 74 65 6D 6F VEC 3.. bytemo
0104E0: 76 65 28 23 78 38 30 2C 20 73 61 76 65 36 2A 32 ve(#x80, save6*2
0104F0: 2C 20 36 29 0D 0A 20 20 30 25 23 78 38 30 20 3A , 6).. 0%#x80 :
010500: 20 20 20 2F 2F 20 6C 64 64 72 0D 0A 24 29 0D 0A // lddr..$)..
010510: 0D 0A 41 4E 44 20 63 61 6C 6C 28 61 64 64 72 2C ..AND call(addr,
010520: 61 66 2C 62 63 2C 64 65 2C 68 6C 2C 69 78 29 20 af,bc,de,hl,ix)
010530: 42 45 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 73 61 BE..$(.. LET sa
010540: 76 65 33 20 3D 20 56 45 43 20 31 0D 0A 20 20 62 ve3 = VEC 1.. b
010550: 79 74 65 6D 6F 76 65 28 23 78 39 30 2C 20 73 61 ytemove(#x90, sa
010560: 76 65 33 2A 32 2C 20 33 29 0D 0A 20 20 30 25 23 ve3*2, 3).. 0%#
010570: 78 39 30 20 3A 3D 20 23 78 43 33 0D 0A 20 20 30 x90 := #xC3.. 0
010580: 25 23 78 39 31 20 3A 3D 20 61 64 64 72 20 26 20 %#x91 := addr &
010590: 23 78 46 46 0D 0A 20 20 30 25 23 78 39 32 20 3A #xFF.. 0%#x92 :
0105A0: 3D 20 28 20 61 64 64 72 20 26 20 23 78 46 46 30 = ( addr & #xFF0
0105B0: 30 20 29 20 3E 3E 20 38 0D 0A 20 20 69 6E 6C 69 0 ) >> 8.. inli
0105C0: 6E 65 20 23 78 44 44 2C 23 78 45 35 20 20 20 20 ne #xDD,#xE5
0105D0: 20 20 20 20 20 20 20 20 2F 2F 20 70 75 73 68 20 // push
0105E0: 69 78 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 44 ix.. inline #xD
0105F0: 44 2C 23 78 36 36 2C 23 78 37 37 20 20 20 20 20 D,#x66,#x77
010600: 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 31 // ld h,(ix+11
010610: 39 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 44 9).. inline #xD
010620: 44 2C 23 78 36 45 2C 23 78 37 36 20 20 20 20 20 D,#x6E,#x76
010630: 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 31 // ld l,(ix+11
010640: 38 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 32 8).. inline #x2
010650: 39 2C 23 78 35 45 2C 23 78 35 36 2C 23 78 32 33 9,#x5E,#x56,#x23
010660: 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 3A 6C // add hl,hl:l
010670: 64 20 65 2C 28 68 6C 29 3A 69 6E 63 20 68 6C 3A d e,(hl):inc hl:
010680: 6C 64 20 64 2C 28 68 6C 29 0D 0A 20 20 69 6E 6C ld d,(hl).. inl
010690: 69 6E 65 20 23 78 44 35 20 20 20 20 20 20 20 20 ine #xD5
0106A0: 20 20 20 20 20 20 20 20 20 2F 2F 20 70 75 73 68 // push
0106B0: 20 64 65 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 de.. inline #x
0106C0: 44 44 2C 23 78 36 36 2C 23 78 37 39 20 20 20 20 DD,#x66,#x79
0106D0: 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 // ld h,(ix+1
0106E0: 32 31 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 21).. inline #x
0106F0: 44 44 2C 23 78 36 45 2C 23 78 37 38 20 20 20 20 DD,#x6E,#x78
010700: 3D 20 23 78 43 44 0D 0A 20 20 30 25 23 78 38 31 = #xCD.. 0%#x81
010710: 20 3A 3D 20 30 25 28 30 25 31 20 2B 20 32 35 36 := 0%(0%1 + 256
010720: 2A 30 25 32 20 2B 20 38 37 20 2B 31 29 0D 0A 20 *0%2 + 87 +1)..
010730: 20 30 25 23 78 38 32 20 3A 3D 20 30 25 28 30 25 0%#x82 := 0%(0%
010740: 31 20 2B 20 32 35 36 2A 30 25 32 20 2B 20 38 37 1 + 256*0%2 + 87
010750: 20 2B 32 29 0D 0A 20 20 30 25 23 78 38 33 20 3A +2).. 0%#x83 :
010760: 3D 20 61 64 64 72 20 26 20 23 78 46 46 0D 0A 20 = addr & #xFF..
010770: 20 30 25 23 78 38 34 20 3A 3D 20 28 20 61 64 64 0%#x84 := ( add
010780: 72 20 26 20 23 78 46 46 30 30 20 29 20 3E 3E 20 r & #xFF00 ) >>
010790: 38 0D 0A 20 20 30 25 23 78 38 35 20 3A 3D 20 23 8.. 0%#x85 := #
0107A0: 78 43 39 0D 0A 20 20 63 61 6C 6C 20 28 23 78 38 xC9.. call (#x8
0107B0: 30 2C 61 66 2C 62 63 2C 64 65 2C 68 6C 2C 69 78 0,af,bc,de,hl,ix
0107C0: 29 0D 0A 20 20 62 79 74 65 6D 6F 76 65 28 73 61 ).. bytemove(sa
0107D0: 76 65 36 2A 32 2C 20 23 78 38 30 2C 20 36 29 0D ve6*2, #x80, 6).
0107E0: 0A 24 29 0D 0A 0D 0A 41 4E 44 20 76 65 72 73 69 .$)....AND versi
0107F0: 6F 6E 28 29 20 3D 20 56 41 4C 4F 46 0D 0A 24 28 on() = VALOF..$(
010800: 0D 0A 20 20 4C 45 54 20 63 2C 64 65 3D 31 32 2C .. LET c,de=12,
010810: 3F 0D 0A 20 20 4C 45 54 20 61 66 2C 62 63 2C 68 ?.. LET af,bc,h
010820: 6C 2C 69 78 20 3D 20 3F 2C 3F 2C 3F 2C 3F 0D 0A l,ix = ?,?,?,?..
010830: 20 20 62 64 6F 73 61 28 40 63 2C 40 64 65 29 0D bdosa(@c,@de).
010840: 0A 20 20 49 46 20 28 64 65 20 26 20 23 78 46 46 . IF (de & #xFF
010850: 29 20 3C 20 23 78 33 30 20 54 48 45 4E 20 52 45 ) < #x30 THEN RE
010860: 53 55 4C 54 49 53 20 32 0D 0A 20 20 66 69 72 6D SULTIS 2.. firm
010870: 77 61 72 65 28 23 78 45 33 2C 40 61 66 2C 40 62 ware(#xE3,@af,@b
010880: 63 2C 40 64 65 2C 40 68 6C 2C 40 69 78 29 0D 0A c,@de,@hl,@ix)..
010890: 20 20 52 45 53 55 4C 54 49 53 20 33 20 2B 20 28 RESULTIS 3 + (
0108A0: 20 61 66 20 3E 3E 20 38 20 29 0D 0A 24 29 0D 0A af >> 8 )..$)..
0108B0: 0D 0A 41 4E 44 20 67 65 74 62 79 74 65 28 73 2C ..AND getbyte(s,
0108C0: 69 29 20 3D 20 73 25 69 0D 0A 41 4E 44 20 70 75 i) = s%i..AND pu
0108D0: 74 62 79 74 65 28 73 2C 69 2C 63 29 20 42 45 20 tbyte(s,i,c) BE
0108E0: 73 25 69 20 3A 3D 20 63 0D 0A 41 4E 44 20 75 6E s%i := c..AND un
0108F0: 70 61 63 6B 73 74 72 69 6E 67 28 73 2C 76 29 20 packstring(s,v)
010900: 20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 // ld l,(ix+1
010910: 32 30 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 20).. inline #x
010920: 32 39 2C 23 78 34 45 2C 23 78 32 33 2C 23 78 34 29,#x4E,#x23,#x4
010930: 36 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 3A 6 // add hl,hl:
010940: 6C 64 20 63 2C 28 68 6C 29 3A 69 6E 63 20 68 6C ld c,(hl):inc hl
010950: 3A 6C 64 20 62 2C 28 68 6C 29 0D 0A 20 20 69 6E :ld b,(hl).. in
010960: 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 36 2C 23 line #xDD,#x66,#
010970: 78 37 46 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 x7F // ld
010980: 68 2C 28 69 78 2B 31 32 37 29 0D 0A 20 20 69 6E h,(ix+127).. in
010990: 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 45 2C 23 line #xDD,#x6E,#
0109A0: 78 37 45 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 x7E // ld
0109B0: 6C 2C 28 69 78 2B 31 32 36 29 0D 0A 20 20 69 6E l,(ix+126).. in
0109C0: 6C 69 6E 65 20 23 78 32 39 2C 23 78 35 45 2C 23 line #x29,#x5E,#
0109D0: 78 32 33 2C 23 78 35 36 20 20 2F 2F 20 61 64 64 x23,#x56 // add
0109E0: 20 68 6C 2C 68 6C 3A 6C 64 20 65 2C 28 68 6C 29 hl,hl:ld e,(hl)
0109F0: 3A 69 6E 63 20 68 6C 3A 6C 64 20 64 2C 28 68 6C :inc hl:ld d,(hl
010A00: 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 44 35 ).. inline #xD5
010A10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
010A20: 20 2F 2F 20 70 75 73 68 20 64 65 0D 0A 20 20 69 // push de.. i
010A30: 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 36 2C nline #xDD,#x66,
010A40: 23 78 37 44 20 20 20 20 20 20 20 2F 2F 20 6C 64 #x7D // ld
010A50: 20 68 2C 28 69 78 2B 31 32 35 29 0D 0A 20 20 69 h,(ix+125).. i
010A60: 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 45 2C nline #xDD,#x6E,
010A70: 23 78 37 43 20 20 20 20 20 20 20 2F 2F 20 6C 64 #x7C // ld
010A80: 20 6C 2C 28 69 78 2B 31 32 34 29 0D 0A 20 20 69 l,(ix+124).. i
010A90: 6E 6C 69 6E 65 20 23 78 32 39 2C 23 78 35 45 2C nline #x29,#x5E,
010AA0: 23 78 32 33 2C 23 78 35 36 20 20 2F 2F 20 61 64 #x23,#x56 // ad
010AB0: 64 20 68 6C 2C 68 6C 3A 6C 64 20 65 2C 28 68 6C d hl,hl:ld e,(hl
010AC0: 29 3A 69 6E 63 20 68 6C 3A 6C 64 20 64 2C 28 68 ):inc hl:ld d,(h
010AD0: 6C 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 44 l).. inline #xD
010AE0: 35 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5
010AF0: 20 20 2F 2F 20 70 75 73 68 20 64 65 0D 0A 20 20 // push de..
010B00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
010B10: 0E 00 01 00 02 09 50 E5 0E 00 C1 02 00 00 00 02 ......P.........
010B20: 0E 00 C6 02 00 00 00 02 0E 00 C2 02 00 00 00 02 ................
010B30: 0E 00 C7 02 00 00 00 02 0E 00 C3 02 00 00 00 02 ................
010B40: 0E 00 C8 02 00 00 00 02 0E 00 C4 02 00 00 00 02 ................
010B50: 0E 00 C9 02 00 00 00 02 0E 00 C5 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: 42 45 20 46 4F 52 20 69 20 3D 20 30 20 54 4F 20 BE FOR i = 0 TO
010C10: 73 25 30 20 44 4F 20 76 21 69 20 3A 3D 20 73 25 s%0 DO v!i := s%
010C20: 69 0D 0A 41 4E 44 20 70 61 63 6B 73 74 72 69 6E i..AND packstrin
010C30: 67 28 76 2C 73 29 20 42 45 0D 0A 24 28 0D 0A 20 g(v,s) BE..$(..
010C40: 20 4C 45 54 20 6E 20 3D 20 21 76 20 4C 4F 47 41 LET n = !v LOGA
010C50: 4E 44 20 23 78 46 46 0D 0A 20 20 46 4F 52 20 69 ND #xFF.. FOR i
010C60: 20 3D 20 31 20 54 4F 20 6E 20 44 4F 20 73 25 69 = 1 TO n DO s%i
010C70: 20 3A 3D 20 73 21 69 0D 0A 24 29 0D 0A 1A 46 0D := s!i..$)...F.
010C80: 74 65 72 20 73 70 65 63 69 66 69 65 73 20 74 68 ter specifies th
010C90: 65 20 72 65 71 75 69 72 65 64 20 6F 70 74 69 6F e required optio
010CA0: 6E 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 n.....
010CB0: 20 20 20 20 20 20 20 30 20 3A 20 70 61 75 73 65 0 : pause
010CC0: 20 65 78 65 63 75 74 69 6F 6E 2C 20 77 61 69 74 execution, wait
010CD0: 20 66 6F 72 20 61 20 6B 65 79 20 74 6F 20 62 65 for a key to be
010CE0: 20 70 72 65 73 73 65 64 0D 0A 20 20 20 20 20 20 pressed..
010CF0: 20 20 20 20 20 20 20 20 20 20 20 31 20 3A 20 64 1 : d
010D00: 69 73 70 6C 61 79 20 76 61 6C 75 65 73 20 6F 66 isplay values of
010D10: 20 76 61 72 69 61 62 6C 65 73 20 69 6E 20 64 65 variables in de
010D20: 63 69 6D 61 6C 0D 0A 20 20 20 20 20 20 20 20 20 cimal..
010D30: 20 20 20 20 20 20 20 2D 31 20 3A 20 64 69 73 70 -1 : disp
010D40: 6C 61 79 20 6E 61 6D 65 73 20 61 6E 64 20 76 61 lay names and va
010D50: 6C 75 65 73 20 6F 66 20 76 61 72 69 61 62 6C 65 lues of variable
010D60: 73 20 69 6E 20 64 65 63 69 6D 61 6C 0D 0A 20 20 s in decimal..
010D70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32 2
010D80: 20 3A 20 64 69 73 70 6C 61 79 20 76 61 6C 75 65 : display value
010D90: 20 6F 66 20 73 74 72 69 6E 67 73 0D 0A 20 20 20 of strings..
010DA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2D 32 20 -2
010DB0: 3A 20 64 69 73 70 6C 61 79 20 6E 61 6D 65 20 61 : display name a
010DC0: 6E 64 20 76 61 6C 75 65 20 6F 66 20 73 74 72 69 nd value of stri
010DD0: 6E 67 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ngs..
010DE0: 20 20 20 20 20 20 33 20 3A 20 64 69 73 70 6C 61 3 : displa
010DF0: 79 20 63 6F 6E 74 65 6E 74 73 20 6F 66 20 76 65 y contents of ve
010E00: E2 41 72 6E 6F 72 20 4C 74 64 2E 2C 20 31 31 38 .Arnor Ltd., 118
010E10: 20 57 68 69 74 65 68 6F 72 73 65 20 52 6F 61 64 Whitehorse Road
010E20: 2C 20 43 72 6F 79 64 6F 6E 2C 20 43 52 30 20 32 , Croydon, CR0 2
010E30: 4A 46 2E E2 0D 0A 3E 6F 70 0D 0A 3E 66 6F 20 20 JF....>op..>fo
010E40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
010E50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
010E60: 25 20 20 20 20 20 20 20 20 20 20 20 20 0D 0A 3E % ..>
010E70: 63 65 20 E2 31 2E 20 41 42 4F 55 54 20 42 43 50 ce .1. ABOUT BCP
010E80: 4C E2 0D 0A 0D 0A 0D 0A 09 42 43 50 4C 20 69 73 L........BCPL is
010E90: 20 6F 66 74 65 6E 20 64 65 73 63 72 69 62 65 64 often described
010EA0: 20 61 73 90 20 61 20 22 73 79 73 74 65 6D 73 20 as. a "systems
010EB0: 70 72 6F 67 72 61 6D 6D 69 6E 67 20 6C 61 6E 67 programming lang
010EC0: 75 61 67 65 22 2E 20 54 68 69 73 20 0D 8A 6D 61 uage". This ..ma
010ED0: 6B 65 73 20 42 43 50 4C 20 73 6F 75 6E 64 20 76 kes BCPL sound v
010EE0: 65 72 79 20 67 72 61 6E 64 20 61 6E 64 90 20 74 ery grand and. t
010EF0: 65 63 68 6E 69 63 61 6C 2C 90 20 62 75 74 20 74 echnical,. but t
010F00: 68 69 73 20 69 73 20 6E 6F 74 20 74 68 65 20 63 his is not the c
010F10: 61 73 65 2E 20 0D 8A 42 43 50 4C 20 69 73 20 63 ase. ..BCPL is c
010F20: 65 72 74 61 69 6E 6C 79 20 61 20 76 65 72 79 90 ertainly a very.
010F30: 20 67 6F 6F 64 90 20 6C 61 6E 67 75 61 67 65 90 good. language.
010F40: 20 66 6F 72 20 77 72 69 74 69 6E 67 20 70 72 6F for writing pro
010F50: 67 72 61 6D 73 20 73 75 63 68 20 61 73 20 0D 8A grams such as ..
010F60: 6F 70 65 72 61 74 69 6E 67 20 73 79 73 74 65 6D operating system
010F70: 73 2C 20 63 6F 6D 70 69 6C 65 72 73 20 61 6E 64 s, compilers and
010F80: 20 77 6F 72 64 20 70 72 6F 63 65 73 73 6F 72 73 word processors
010F90: 20 62 75 74 20 74 68 65 20 66 65 61 74 75 72 65 but the feature
010FA0: 73 20 74 68 61 74 20 0D 8A 6D 61 6B 65 20 42 43 s that ..make BC
010FB0: 50 4C 20 69 64 65 61 6C 90 20 66 6F 72 90 20 74 PL ideal. for. t
010FC0: 68 65 73 65 90 20 61 70 70 6C 69 63 61 74 69 6F hese. applicatio
010FD0: 6E 73 90 20 61 6C 73 6F 90 20 6D 61 6B 65 90 20 ns. also. make.
010FE0: 69 74 20 61 6E 20 65 78 63 65 6C 6C 65 6E 74 20 it an excellent
010FF0: 0D 8A 67 65 6E 65 72 61 6C 20 70 75 72 70 6F 73 ..general purpos
011000: 65 66 69 6E 65 64 0D 0A 24 29 0D 0A 0D 0A 0D 0A efined..$)......
011010: 4C 45 54 20 69 6E 64 65 78 28 29 20 3D 20 56 41 LET index() = VA
011020: 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 54 45 53 LOF....$(.. TES
011030: 54 20 6C 61 73 74 63 68 72 20 4E 45 20 27 2C 27 T lastchr NE ','
011040: 20 54 48 45 4E 20 52 45 53 55 4C 54 49 53 20 30 THEN RESULTIS 0
011050: 0D 0A 20 20 45 4C 53 45 20 54 45 53 54 20 73 6B .. ELSE TEST sk
011060: 69 70 28 29 20 3D 20 27 78 27 20 54 48 45 4E 20 ip() = 'x' THEN
011070: 24 28 20 73 6B 69 70 28 29 20 3B 20 52 45 53 55 $( skip() ; RESU
011080: 4C 54 49 53 20 31 20 24 29 0D 0A 20 20 20 20 45 LTIS 1 $).. E
011090: 4C 53 45 20 54 45 53 54 20 6C 61 73 74 63 68 72 LSE TEST lastchr
0110A0: 3D 27 79 27 20 54 48 45 4E 20 24 28 20 73 6B 69 ='y' THEN $( ski
0110B0: 70 28 29 20 3B 20 52 45 53 55 4C 54 49 53 20 32 p() ; RESULTIS 2
0110C0: 20 24 29 0D 0A 20 20 20 20 20 20 45 4C 53 45 20 $).. ELSE
0110D0: 24 28 20 6E 6F 6E 66 61 74 61 6C 28 22 42 61 64 $( nonfatal("Bad
0110E0: 20 69 6E 64 65 78 22 29 20 3B 20 52 45 53 55 4C index") ; RESUL
0110F0: 54 49 53 20 30 20 24 29 0D 0A 24 29 0D 0A 0D 0A TIS 0 $)..$)....
011100: 0D 0A 0D 0A 2F 2A 20 30 2D 61 64 64 72 65 73 73 ..../* 0-address
011110: 69 6E 67 20 65 72 72 6F 72 2C 20 31 2D 69 6D 6D ing error, 1-imm
011120: 65 64 69 61 74 65 2C 20 32 2D 61 62 73 6F 6C 75 ediate, 2-absolu
011130: 74 65 2C 20 33 2D 69 6E 64 69 72 65 63 74 20 69 te, 3-indirect i
011140: 6E 64 65 78 65 64 2C 20 34 2D 69 6E 64 65 78 65 ndexed, 4-indexe
011150: 64 20 78 0D 0A 20 20 20 35 2D 69 6E 64 65 78 65 d x.. 5-indexe
011160: 64 20 79 2C 20 36 2D 69 6E 64 65 78 65 64 20 69 d y, 6-indexed i
011170: 6E 64 69 72 65 63 74 20 2A 2F 0D 0A 0D 0A 41 4E ndirect */....AN
011180: 44 20 61 64 64 72 6D 6F 64 65 28 29 20 3D 20 56 D addrmode() = V
011190: 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 ALOF....$(.. LE
0111A0: 54 20 69 6E 64 65 78 6D 6F 64 65 20 3D 20 30 0D T indexmode = 0.
0111B0: 0A 20 20 73 6B 69 70 63 28 29 0D 0A 20 20 53 57 . skipc().. SW
0111C0: 49 54 43 48 4F 4E 20 6C 61 73 74 63 68 72 20 49 ITCHON lastchr I
0111D0: 4E 54 4F 0D 0A 20 20 24 28 0D 0A 20 20 20 20 63 NTO.. $(.. c
0111E0: 61 73 65 20 27 23 27 3A 0D 0A 20 20 20 20 20 20 ase '#':..
0111F0: 73 6B 69 70 28 29 0D 0A 20 20 20 20 20 20 72 65 skip().. re
011200: 65 20 6C 61 6E 67 75 61 67 65 2E 0D 0A 09 57 68 e language....Wh
011210: 61 74 20 61 72 65 20 74 68 65 73 65 20 66 65 61 at are these fea
011220: 74 75 72 65 73 3F 20 46 69 72 73 74 2C 20 66 6C tures? First, fl
011230: 65 78 69 62 69 6C 69 74 79 2E 20 42 43 50 4C 20 exibility. BCPL
011240: 70 72 6F 67 72 61 6D 73 20 61 72 65 20 6E 6F 74 programs are not
011250: 20 0D 8A 63 6F 6E 73 74 72 61 69 6E 65 64 20 62 ..constrained b
011260: 79 20 72 75 6C 65 73 20 61 73 20 74 6F 20 77 68 y rules as to wh
011270: 69 63 68 90 20 6F 70 65 72 61 74 69 6F 6E 73 20 ich. operations
011280: 63 61 6E 20 62 65 20 70 65 72 66 6F 72 6D 65 64 can be performed
011290: 20 6F 6E 20 77 68 69 63 68 20 0D 8A 74 79 70 65 on which ..type
0112A0: 20 6F 66 20 76 61 72 69 61 62 6C 65 2E 20 49 6E of variable. In
0112B0: 64 65 65 64 20 74 68 65 72 65 20 61 72 65 90 20 deed there are.
0112C0: 6E 6F 20 64 69 66 66 65 72 65 6E 74 20 76 61 72 no different var
0112D0: 69 61 62 6C 65 20 74 79 70 65 73 20 2D 2D 20 61 iable types -- a
0112E0: 6C 6C 20 0D 8A 76 61 72 69 61 62 6C 65 73 20 61 ll ..variables a
0112F0: 72 65 90 20 73 69 6D 70 6C 65 90 20 6E 75 6D 62 re. simple. numb
011300: 65 72 73 90 20 61 6E 64 90 20 6F 74 68 65 72 90 ers. and. other.
011310: 20 74 79 70 65 73 90 20 61 6E 64 90 20 73 74 72 types. and. str
011320: 75 63 74 75 72 65 73 20 61 72 65 20 0D 8A 61 63 uctures are ..ac
011330: 68 69 65 76 65 64 90 20 62 79 90 20 75 73 69 6E hieved. by. usin
011340: 67 90 20 76 61 72 69 61 62 6C 65 73 90 20 64 69 g. variables. di
011350: 66 66 65 72 65 6E 74 6C 79 2E 90 90 20 54 68 69 fferently... Thi
011360: 73 90 20 6D 61 6B 65 73 90 20 42 43 50 4C 90 20 s. makes. BCPL.
011370: 76 65 72 79 20 0D 8A 64 69 66 66 65 72 65 6E 74 very ..different
011380: 20 66 72 6F 6D 20 6F 74 68 65 72 20 6C 61 6E 67 from other lang
011390: 75 61 67 65 73 20 73 75 63 68 20 61 73 90 20 42 uages such as. B
0113A0: 41 53 49 43 90 20 61 6E 64 20 50 41 53 43 41 4C ASIC. and PASCAL
0113B0: 2E 20 41 20 73 74 72 69 6E 67 20 69 73 20 0D 8A . A string is ..
0113C0: 74 72 65 61 74 65 64 20 61 73 20 61 20 76 61 72 treated as a var
0113D0: 69 61 62 6C 65 20 70 6F 69 6E 74 69 6E 67 20 74 iable pointing t
0113E0: 6F 90 20 61 90 20 73 74 72 69 6E 67 2C 20 73 69 o. a. string, si
0113F0: 6D 69 6C 61 72 6C 79 20 61 20 76 65 63 74 6F 72 milarly a vector
011400: 00 42 43 50 4C 4D 31 20 20 20 20 20 00 00 00 00 .BCPLM1 ....
011410: 00 00 0A 00 00 C6 06 00 3E 81 00 00 00 00 00 00 ........>.......
011420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011430: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011440: 3E 81 00 93 04 70 72 6F 64 75 63 65 20 74 68 65 >....produce the
011450: 20 65 72 72 6F 72 20 6D 65 73 73 61 67 65 20 27 error message '
011460: 64 79 6E 61 6D 69 63 20 66 72 65 65 20 76 61 72 dynamic free var
011470: 69 61 62 6C 65 20 75 73 65 64 27 2E 0D 0A 3E 70 iable used'...>p
011480: 3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D >---!-----!-----
011490: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0114A0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0114B0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0114C0: 21 2D 2D 2D 2D 52 0D 0A 3E 74 6D 20 33 0D 0A 3E !----R..>tm 3..>
0114D0: 62 6D 20 31 31 0D 0A 3E 68 6D 20 30 0D 0A 3E 66 bm 11..>hm 0..>f
0114E0: 6D 20 32 0D 0A 0D 0A 3E 63 65 E2 20 EC 42 43 50 m 2....>ce. .BCP
0114F0: 4C EC 0D 0A 0D 0A 3E 63 65 20 EC 54 48 45 20 53 L.....>ce .THE S
011500: 59 53 54 45 4D 53 20 50 52 4F 47 52 41 4D 4D 49 YSTEMS PROGRAMMI
011510: 4E 47 20 4C 41 4E 47 55 41 47 45 EC 0D 0A 0D 0A NG LANGUAGE.....
011520: 0D 0A 3E 63 65 20 EC 41 6D 73 74 72 61 64 20 50 ..>ce .Amstrad P
011530: 43 57 38 32 35 36 2F 38 35 31 32 EC 0D 0A 0D 0A CW8256/8512.....
011540: 3E 63 65 20 EC 41 6D 73 74 72 61 64 20 43 50 43 >ce .Amstrad CPC
011550: 36 31 32 38 2F 36 36 34 2F 34 36 34 EC 0D 0A E2 6128/664/464....
011560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
011570: 20 20 20 20 20 20 0D 0A 0D 0A 0D 0A 3E 63 65 20 ......>ce
011580: E2 62 79 20 50 68 69 6C 6C 69 70 20 42 6C 65 6E .by Phillip Blen
011590: 6B 69 6E 73 6F 70 70 E2 0D 0A 0D 0A 0D 0A 0D 0A kinsopp.........
0115A0: 3E 63 65 20 20 20 20 20 20 20 20 20 20 20 20 20 >ce
0115B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0115C0: 20 20 20 E2 43 4F 4E 54 45 4E 54 53 E2 0D 0A 0D .CONTENTS....
0115D0: 0A 09 09 31 20 20 41 62 6F 75 74 20 42 43 50 4C ...1 About BCPL
0115E0: 09 09 09 20 09 20 09 20 33 0D 0A 09 09 32 20 20 ... . . 3....2
0115F0: 55 73 69 6E 67 20 41 72 6E 6F 72 20 42 43 50 4C Using Arnor BCPL
011600: 2E 20 45 76 65 6E 20 0D 8A 70 72 6F 63 65 64 75 . Even ..procedu
011610: 72 65 73 90 20 61 72 65 90 20 73 69 6D 70 6C 79 res. are. simply
011620: 90 20 76 61 72 69 61 62 6C 65 73 90 20 63 6F 6E . variables. con
011630: 74 61 69 6E 69 6E 67 90 90 20 74 68 65 90 20 61 taining.. the. a
011640: 64 64 72 65 73 73 90 20 6F 66 90 20 74 68 65 20 ddress. of. the
011650: 0D 8A 70 72 6F 63 65 64 75 72 65 2C 20 61 6E 64 ..procedure, and
011660: 20 74 68 65 73 65 20 6D 61 79 20 62 65 20 61 73 these may be as
011670: 73 69 67 6E 65 64 20 74 6F 20 6F 72 20 70 61 73 signed to or pas
011680: 73 65 64 20 61 73 20 70 61 72 61 6D 65 74 65 72 sed as parameter
011690: 73 2E 0D 0A 09 54 68 69 73 20 66 6C 65 78 69 62 s....This flexib
0116A0: 69 6C 69 74 79 20 61 6C 6C 6F 77 73 20 74 68 65 ility allows the
0116B0: 20 42 43 50 4C 20 70 72 6F 67 72 61 6D 6D 65 72 BCPL programmer
0116C0: 90 20 74 6F 20 61 63 63 65 73 73 20 61 6E 79 20 . to access any
0116D0: 70 61 72 74 20 6F 66 20 0D 8A 6D 65 6D 6F 72 79 part of ..memory
0116E0: 20 28 69 6E 64 65 65 64 20 61 6E 79 20 69 6E 64 (indeed any ind
0116F0: 69 76 69 64 75 61 6C 20 62 69 74 29 20 61 6E 64 ividual bit) and
011700: 90 20 73 6F 20 64 6F 20 74 68 69 6E 67 73 20 74 . so do things t
011710: 68 61 74 20 63 61 6E 20 6E 6F 72 6D 61 6C 6C 79 hat can normally
011720: 20 0D 8A 6F 6E 6C 79 20 62 65 20 64 6F 6E 65 20 ..only be done
011730: 69 6E 20 6D 61 63 68 69 6E 65 20 63 6F 64 65 2E in machine code.
011740: 20 4F 66 20 63 6F 75 72 73 65 20 66 72 65 65 64 Of course freed
011750: 6F 6D 20 61 6C 77 61 79 73 20 63 61 72 72 69 65 om always carrie
011760: 73 20 61 20 70 72 69 63 65 20 0D 8A 2D 2D 20 72 s a price ..-- r
011770: 65 73 70 6F 6E 73 69 62 69 6C 69 74 79 2E 20 49 esponsibility. I
011780: 6E 20 6C 61 6E 67 75 61 67 65 73 20 73 75 63 68 n languages such
011790: 20 61 73 20 50 41 53 43 41 4C 20 74 68 65 20 63 as PASCAL the c
0117A0: 6F 6D 70 69 6C 65 72 20 64 65 74 65 63 74 73 20 ompiler detects
0117B0: 61 6E 20 0D 8A 61 74 74 65 6D 70 74 20 74 6F 20 an ..attempt to
0117C0: 70 65 72 66 6F 72 6D 20 61 6E 90 20 69 6C 6C 65 perform an. ille
0117D0: 67 61 6C 90 20 6F 72 90 20 6D 65 61 6E 69 6E 67 gal. or. meaning
0117E0: 6C 65 73 73 90 20 6F 70 65 72 61 74 69 6F 6E 2E less. operation.
0117F0: 20 49 6E 20 42 43 50 4C 20 69 74 20 0D 8A 72 61 In BCPL it ..ra
011800: 20 75 6E 64 65 72 20 43 50 2F 4D 09 09 20 35 0D under CP/M.. 5.
011810: 0A 09 09 33 20 20 55 73 69 6E 67 20 41 72 6E 6F ...3 Using Arno
011820: 72 20 42 43 50 4C 20 75 6E 64 65 72 20 41 4D 53 r BCPL under AMS
011830: 44 4F 53 09 09 20 38 0D 0A 09 09 34 20 20 43 6F DOS.. 8....4 Co
011840: 6D 70 69 6C 65 72 20 6F 70 74 69 6F 6E 73 09 09 mpiler options..
011850: 09 20 09 31 32 0D 0A 09 09 35 20 20 53 6F 6D 65 . .12....5 Some
011860: 20 6B 65 79 20 66 61 63 74 73 20 61 62 6F 75 74 key facts about
011870: 20 42 43 50 4C 09 09 09 31 34 0D 0A 09 09 36 20 BCPL...14....6
011880: 20 54 77 6F 20 42 43 50 4C 20 70 72 6F 67 72 61 Two BCPL progra
011890: 6D 73 09 09 09 09 31 36 0D 0A 09 09 37 20 20 53 ms....16....7 S
0118A0: 75 6D 6D 61 72 79 20 6F 66 20 74 68 65 20 42 43 ummary of the BC
0118B0: 50 4C 20 6C 61 6E 67 75 61 67 65 09 09 31 38 0D PL language..18.
0118C0: 0A 09 09 38 20 20 54 68 65 20 41 72 6E 6F 72 20 ...8 The Arnor
0118D0: 42 43 50 4C 20 6C 69 62 72 61 72 69 65 73 09 09 BCPL libraries..
0118E0: 09 32 36 0D 0A 09 09 39 20 20 44 69 66 66 65 72 .26....9 Differ
0118F0: 65 6E 63 65 73 20 66 72 6F 6D 20 73 74 61 6E 64 ences from stand
011900: 61 72 64 20 42 43 50 4C 09 09 34 39 0D 0A 0D 0A ard BCPL..49....
011910: 09 09 20 20 20 41 50 50 45 4E 44 49 43 45 53 0D .. APPENDICES.
011920: 0A 0D 0A 09 09 31 20 20 54 65 63 68 6E 69 63 61 .....1 Technica
011930: 6C 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 09 09 09 l information...
011940: 35 31 0D 0A 09 09 32 20 20 53 75 6D 6D 61 72 79 51....2 Summary
011950: 20 61 6E 64 20 69 6E 64 65 78 20 6F 66 20 6C 69 and index of li
011960: 62 72 61 72 79 20 72 6F 75 74 69 6E 65 73 09 35 brary routines.5
011970: 34 0D 0A 09 09 33 20 20 50 6F 72 74 61 62 69 6C 4....3 Portabil
011980: 69 74 79 09 09 09 09 35 36 09 09 09 09 09 09 09 ity....56.......
011990: 0D 0A 09 09 34 20 20 45 72 72 6F 72 20 6D 65 73 ....4 Error mes
0119A0: 73 61 67 65 73 09 09 09 09 35 37 0D 0A 0D 0A 0D sages....57.....
0119B0: 0A 43 6F 70 79 72 69 67 68 74 20 28 63 29 20 41 .Copyright (c) A
0119C0: 72 6E 6F 72 20 4C 74 64 2E 2C 90 31 39 38 36 20 rnor Ltd.,.1986
0119D0: 20 20 20 20 20 20 20 20 20 20 20 20 49 73 73 75 Issu
0119E0: 65 20 31 2C 20 31 39 38 36 20 28 76 31 2E 30 30 e 1, 1986 (v1.00
0119F0: 2F 32 2E 30 30 29 0D 0A 0D 0A 41 4D 53 54 52 41 /2.00)....AMSTRA
011A00: 72 65 6C 79 20 64 6F 65 73 20 73 6F 90 20 61 6E rely does so. an
011A10: 64 90 20 69 74 90 20 69 73 90 20 71 75 69 74 65 d. it. is. quite
011A20: 90 20 70 6F 73 73 69 62 6C 65 90 20 74 6F 90 20 . possible. to.
011A30: 63 72 61 73 68 90 20 74 68 65 20 73 79 73 74 65 crash. the syste
011A40: 6D 20 62 79 20 0D 8A 63 6F 72 72 75 70 74 69 6E m by ..corruptin
011A50: 67 20 74 68 65 20 73 79 73 74 65 6D 20 6D 65 6D g the system mem
011A60: 6F 72 79 20 6F 72 20 6A 75 6D 70 69 6E 67 20 74 ory or jumping t
011A70: 6F 20 61 6E 20 69 6C 6C 65 67 61 6C 20 61 64 64 o an illegal add
011A80: 72 65 73 73 2E 0D 0A 0D 0A 0D 0A E2 41 6E 20 65 ress........An e
011A90: 73 73 65 6E 74 69 61 6C 20 62 6F 6F 6B 20 74 6F ssential book to
011AA0: 20 72 65 61 64 E2 0D 0A 0D 0A 09 54 68 69 73 20 read......This
011AB0: 6D 61 6E 75 61 6C 20 67 69 76 65 73 20 61 6E 20 manual gives an
011AC0: 69 6E 74 72 6F 64 75 63 74 69 6F 6E 90 20 74 6F introduction. to
011AD0: 90 20 63 65 72 74 61 69 6E 20 61 73 70 65 63 74 . certain aspect
011AE0: 73 20 6F 66 20 42 43 50 4C 2C 20 61 73 20 0D 8A s of BCPL, as ..
011AF0: 77 65 6C 6C 20 61 73 20 61 20 73 75 6D 6D 61 72 well as a summar
011B00: 79 20 6F 66 90 20 74 68 65 90 20 66 61 63 69 6C y of. the. facil
011B10: 69 74 69 65 73 90 20 69 6D 70 6C 65 6D 65 6E 74 ities. implement
011B20: 65 64 20 69 6E 20 74 68 69 73 20 76 65 72 73 69 ed in this versi
011B30: 6F 6E 2E 20 49 74 20 0D 8A 64 6F 65 73 20 6E 6F on. It ..does no
011B40: 74 20 61 74 74 65 6D 70 74 20 74 6F 90 20 62 65 t attempt to. be
011B50: 90 20 61 90 20 63 6F 6D 70 6C 65 74 65 90 20 67 . a. complete. g
011B60: 75 69 64 65 90 20 74 6F 90 20 42 43 50 4C 20 70 uide. to. BCPL p
011B70: 72 6F 67 72 61 6D 6D 69 6E 67 2C 20 61 6E 64 20 rogramming, and
011B80: 0D 8A 61 73 73 75 6D 65 73 20 73 6F 6D 65 20 6B ..assumes some k
011B90: 6E 6F 77 6C 65 64 67 65 20 6F 66 90 20 70 72 6F nowledge of. pro
011BA0: 67 72 61 6D 6D 69 6E 67 90 20 28 66 6F 72 90 20 gramming. (for.
011BB0: 65 78 61 6D 70 6C 65 90 20 69 6E 20 42 41 53 49 example. in BASI
011BC0: 43 29 2E 20 4E 6F 74 65 20 0D 8A 74 68 61 74 20 C). Note ..that
011BD0: 65 78 61 6D 70 6C 65 73 20 6F 66 20 74 68 65 20 examples of the
011BE0: 75 73 65 90 20 6F 66 90 20 6D 6F 73 74 90 20 66 use. of. most. f
011BF0: 65 61 74 75 72 65 73 90 20 6F 66 90 20 42 43 50 eatures. of. BCP
011C00: 44 20 69 73 20 61 20 72 65 67 69 73 74 65 72 65 D is a registere
011C10: 64 20 74 72 61 64 65 6D 61 72 6B 20 6F 66 20 41 d trademark of A
011C20: 6D 73 74 72 61 64 20 43 6F 6E 73 75 6D 65 72 20 mstrad Consumer
011C30: 45 6C 65 63 74 72 6F 6E 69 63 73 20 70 6C 63 2E Electronics plc.
011C40: 0D 0A 43 50 2F 4D 20 61 6E 64 20 43 50 2F 4D 20 ..CP/M and CP/M
011C50: 50 6C 75 73 20 61 72 65 20 74 72 61 64 65 6D 61 Plus are tradema
011C60: 72 6B 73 20 6F 66 20 44 69 67 69 74 61 6C 20 52 rks of Digital R
011C70: 65 73 65 61 72 63 68 20 49 6E 63 2E 0D 0A 0D 0A esearch Inc.....
011C80: 09 41 6C 6C 20 72 69 67 68 74 73 20 72 65 73 65 .All rights rese
011C90: 72 76 65 64 2E 20 49 74 20 69 73 20 69 6C 6C 65 rved. It is ille
011CA0: 67 61 6C 20 74 6F 20 72 65 70 72 6F 64 75 63 65 gal to reproduce
011CB0: 20 6F 72 20 74 72 61 6E 73 6D 69 74 20 65 69 74 or transmit eit
011CC0: 68 65 72 20 0D 8A 74 68 69 73 20 6D 61 6E 75 61 her ..this manua
011CD0: 6C 20 6F 72 20 74 68 65 20 61 63 63 6F 6D 70 61 l or the accompa
011CE0: 6E 79 69 6E 67 90 20 63 6F 6D 70 75 74 65 72 90 nying. computer.
011CF0: 20 70 72 6F 67 72 61 6D 20 69 6E 20 61 6E 79 20 program in any
011D00: 66 6F 72 6D 20 77 69 74 68 6F 75 74 20 0D 8A 74 form without ..t
011D10: 68 65 20 77 72 69 74 74 65 6E 20 70 65 72 6D 69 he written permi
011D20: 73 73 69 6F 6E 20 6F 66 90 20 74 68 65 90 20 63 ssion of. the. c
011D30: 6F 70 79 72 69 67 68 74 90 20 68 6F 6C 64 65 72 opyright. holder
011D40: 2E 90 20 53 6F 66 74 77 61 72 65 20 70 69 72 61 .. Software pira
011D50: 63 79 20 69 73 20 0D 8A 74 68 65 66 74 2E 0D 0A cy is ..theft...
011D60: 0D 0A 09 54 68 65 20 42 43 50 4C 20 63 6F 6D 70 ...The BCPL comp
011D70: 69 6C 65 72 20 77 61 73 20 64 65 76 65 6C 6F 70 iler was develop
011D80: 65 64 20 75 73 69 6E 67 20 74 68 65 20 4D 41 58 ed using the MAX
011D90: 41 4D 20 61 73 73 65 6D 62 6C 65 72 20 52 4F 4D AM assembler ROM
011DA0: 2E 0D 0A 09 54 68 69 73 20 6D 61 6E 75 61 6C 20 ....This manual
011DB0: 77 61 73 20 77 72 69 74 74 65 6E 20 6F 6E 20 74 was written on t
011DC0: 68 65 90 20 50 52 4F 54 45 58 54 20 77 6F 72 64 he. PROTEXT word
011DD0: 20 70 72 6F 63 65 73 73 6F 72 20 61 6E 64 20 63 processor and c
011DE0: 68 65 63 6B 65 64 20 0D 8A 75 73 69 6E 67 20 50 hecked ..using P
011DF0: 52 4F 53 50 45 4C 4C 2E 0D 0A 0D 0A 3E 63 65 20 ROSPELL.....>ce
011E00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
011E10: 0F 00 01 00 02 09 4E E5 0F 00 C1 02 00 00 00 02 ......N.........
011E20: 0F 00 C6 02 00 00 00 02 0F 00 C2 02 00 00 00 02 ................
011E30: 0F 00 C7 02 00 00 00 02 0F 00 C3 02 00 00 00 02 ................
011E40: 0F 00 C8 02 00 00 00 02 0F 00 C4 02 00 00 00 02 ................
011E50: 0F 00 C9 02 00 00 00 02 0F 00 C5 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: 4C 20 61 72 65 20 74 6F 20 62 65 20 66 6F 75 6E L are to be foun
011F10: 64 20 0D 8A 61 6D 6F 6E 67 20 74 68 65 20 65 78 d ..among the ex
011F20: 61 6D 70 6C 65 20 70 72 6F 67 72 61 6D 73 20 63 ample programs c
011F30: 6F 6E 74 61 69 6E 65 64 20 6F 6E 20 74 68 65 20 ontained on the
011F40: 64 69 73 63 2E 0D 0A 0D 0A 09 54 68 65 20 64 65 disc......The de
011F50: 66 69 6E 69 74 69 76 65 90 20 62 6F 6F 6B 90 20 finitive. book.
011F60: 6F 6E 90 20 42 43 50 4C 2C 90 20 62 6F 74 68 90 on. BCPL,. both.
011F70: 20 61 73 90 20 61 6E 90 20 69 6E 74 72 6F 64 75 as. an. introdu
011F80: 63 74 69 6F 6E 90 20 61 6E 64 20 61 20 0D 8A 72 ction. and a ..r
011F90: 65 66 65 72 65 6E 63 65 20 69 73 20 20 22 42 43 eference is "BC
011FA0: 50 4C 90 20 2D 2D 90 20 74 68 65 90 20 6C 61 6E PL. --. the. lan
011FB0: 67 75 61 67 65 90 20 61 6E 64 90 20 69 74 73 90 guage. and. its.
011FC0: 20 63 6F 6D 70 69 6C 65 72 22 90 20 62 79 20 4D compiler". by M
011FD0: 61 72 74 69 6E 20 0D 8A 52 69 63 68 61 72 64 73 artin ..Richards
011FE0: 20 61 6E 64 20 43 6F 6C 69 6E 20 57 68 69 74 62 and Colin Whitb
011FF0: 79 2D 53 74 72 65 76 65 6E 73 2E 0D 0A 09 54 68 y-Strevens....Th
012000: 69 73 20 62 6F 6F 6B 20 69 73 20 65 73 73 65 6E is book is essen
012010: 74 69 61 6C 90 20 72 65 61 64 69 6E 67 90 20 66 tial. reading. f
012020: 6F 72 90 20 74 68 65 90 20 42 43 50 4C 90 20 70 or. the. BCPL. p
012030: 72 6F 67 72 61 6D 6D 65 72 2E 20 49 74 20 69 73 rogrammer. It is
012040: 20 0D 8A 70 75 62 6C 69 73 68 65 64 20 62 79 20 ..published by
012050: 43 61 6D 62 72 69 64 67 65 90 20 55 6E 69 76 65 Cambridge. Unive
012060: 72 73 69 74 79 90 20 50 72 65 73 73 90 20 61 74 rsity. Press. at
012070: 90 20 61 90 20 72 65 61 73 6F 6E 61 62 6C 65 90 . a. reasonable.
012080: 20 70 72 69 63 65 20 69 6E 20 0D 8A 70 61 70 65 price in ..pape
012090: 72 62 61 63 6B 2E 20 4D 61 72 74 69 6E 20 52 69 rback. Martin Ri
0120A0: 63 68 61 72 64 73 20 6F 72 69 67 69 6E 61 6C 6C chards originall
0120B0: 79 90 20 64 65 73 69 67 6E 65 64 90 20 42 43 50 y. designed. BCP
0120C0: 4C 90 20 69 6E 20 43 61 6D 62 72 69 64 67 65 20 L. in Cambridge
0120D0: 69 6E 20 0D 8A 31 39 36 37 2E 20 54 68 69 73 20 in ..1967. This
0120E0: 62 6F 6F 6B 20 77 69 6C 6C 20 68 65 6E 63 65 66 book will hencef
0120F0: 6F 72 74 68 20 62 65 20 72 65 66 65 72 72 65 64 orth be referred
012100: 6F 70 74 69 6F 6E 20 62 2D 0D 0A 67 65 74 20 22 option b-..get "
012110: 63 6C 69 62 68 64 72 22 0D 0A 0D 0A 2F 2A 20 41 clibhdr"..../* A
012120: 20 73 69 6D 70 6C 65 20 66 75 6C 6C 20 73 63 72 simple full scr
012130: 65 65 6E 20 65 64 69 74 6F 72 20 2A 2F 0D 0A 2F een editor */../
012140: 2A 20 43 50 2F 4D 20 76 65 72 73 69 6F 6E 20 66 * CP/M version f
012150: 6F 72 20 43 50 2F 4D 20 32 2E 32 20 61 6E 64 20 or CP/M 2.2 and
012160: 43 50 2F 4D 20 50 6C 75 73 20 2A 2F 0D 0A 2F 2F CP/M Plus */..//
012170: 20 6D 6F 64 69 66 69 65 64 20 30 32 2F 31 32 2F modified 02/12/
012180: 31 39 38 36 0D 0A 0D 0A 4D 41 4E 49 46 45 53 54 1986....MANIFEST
012190: 20 24 28 20 69 6E 73 20 3D 20 54 52 55 45 20 3B $( ins = TRUE ;
0121A0: 20 6F 76 65 72 20 3D 20 46 41 4C 53 45 20 3B 20 over = FALSE ;
0121B0: 63 75 72 73 6C 65 66 74 20 3D 20 23 78 46 32 20 cursleft = #xF2
0121C0: 3B 20 63 75 72 73 72 69 67 68 74 20 3D 20 23 78 ; cursright = #x
0121D0: 46 33 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 F3..
0121E0: 63 75 72 73 75 70 20 3D 20 23 78 46 30 20 3B 20 cursup = #xF0 ;
0121F0: 63 75 72 73 64 6F 77 6E 20 3D 20 23 78 46 31 20 cursdown = #xF1
012200: 3B 20 65 73 63 61 70 65 20 3D 20 23 78 46 43 20 ; escape = #xFC
012210: 3B 20 69 67 6E 6F 72 65 20 3D 20 23 78 45 46 0D ; ignore = #xEF.
012220: 0A 20 20 20 20 20 20 20 20 20 20 20 20 73 74 6F . sto
012230: 70 20 3D 20 33 0D 0A 20 20 20 20 20 20 20 20 20 p = 3..
012240: 20 20 20 73 63 75 72 73 75 70 20 3D 20 23 78 46 scursup = #xF
012250: 34 20 3B 20 73 63 75 72 73 64 6F 77 6E 20 3D 20 4 ; scursdown =
012260: 23 78 46 35 20 3B 20 73 63 75 72 73 6C 65 66 74 #xF5 ; scursleft
012270: 20 3D 20 23 78 46 36 0D 0A 20 20 20 20 20 20 20 = #xF6..
012280: 20 20 20 20 20 73 63 75 72 73 72 69 67 68 74 20 scursright
012290: 3D 20 23 78 46 37 0D 0A 20 20 20 20 20 20 20 20 = #xF7..
0122A0: 20 20 20 20 63 63 75 72 73 75 70 20 3D 20 23 78 ccursup = #x
0122B0: 46 38 20 3B 20 63 63 75 72 73 64 6F 77 6E 20 3D F8 ; ccursdown =
0122C0: 20 23 78 46 39 0D 0A 20 20 20 20 20 20 20 20 20 #xF9..
0122D0: 20 20 20 63 63 75 72 73 6C 65 66 74 20 3D 20 23 ccursleft = #
0122E0: 78 46 41 20 3B 20 63 63 75 72 73 72 69 67 68 74 xFA ; ccursright
0122F0: 20 3D 20 23 78 46 42 0D 0A 20 20 20 20 20 20 20 = #xFB..
012300: 20 74 6F 20 61 73 20 22 74 68 65 20 42 43 50 4C to as "the BCPL
012310: 20 62 6F 6F 6B 22 2E 0D 0A 09 49 6E 20 70 61 72 book"....In par
012320: 74 69 63 75 6C 61 72 20 74 68 65 20 62 6F 6F 6B ticular the book
012330: 20 63 6F 6E 74 61 69 6E 73 90 20 61 6E 20 65 78 contains. an ex
012340: 63 65 6C 6C 65 6E 74 20 73 65 63 74 69 6F 6E 20 cellent section
012350: 6F 6E 20 22 41 64 76 61 6E 63 65 64 20 0D 8A 66 on "Advanced ..f
012360: 61 63 69 6C 69 74 69 65 73 22 90 20 77 68 69 63 acilities". whic
012370: 68 90 20 63 6F 76 65 72 73 2C 90 90 20 61 6D 6F h. covers,.. amo
012380: 6E 67 90 90 20 6F 74 68 65 72 90 90 20 74 68 69 ng.. other.. thi
012390: 6E 67 73 2C 90 90 20 70 6F 69 6E 74 65 72 73 2C ngs,.. pointers,
0123A0: 90 20 62 69 74 20 0D 8A 6F 70 65 72 61 74 69 6F . bit ..operatio
0123B0: 6E 73 2C 20 72 65 63 75 72 73 69 6F 6E 20 61 6E ns, recursion an
0123C0: 64 20 73 63 6F 70 65 20 72 75 6C 65 73 2E 20 0D d scope rules. .
0123D0: 0A 09 46 6F 72 20 74 68 65 20 70 75 72 70 6F 73 ..For the purpos
0123E0: 65 73 20 6F 66 90 20 74 68 69 73 90 20 6D 61 6E es of. this. man
0123F0: 75 61 6C 2C 90 20 74 68 65 90 20 42 43 50 4C 90 ual,. the. BCPL.
012400: 20 62 6F 6F 6B 20 69 73 20 72 65 67 61 72 64 65 book is regarde
012410: 64 20 61 73 20 0D 8A 64 65 66 69 6E 69 6E 67 20 d as ..defining
012420: 22 73 74 61 6E 64 61 72 64 22 20 42 43 50 4C 2C "standard" BCPL,
012430: 20 61 6E 64 20 61 6E 79 90 20 6D 69 6E 6F 72 20 and any. minor
012440: 76 61 72 69 61 74 69 6F 6E 73 20 6F 72 20 65 6E variations or en
012450: 68 61 6E 63 65 6D 65 6E 74 73 20 74 6F 20 0D 8A hancements to ..
012460: 74 68 69 73 20 73 74 61 6E 64 61 72 64 20 61 72 this standard ar
012470: 65 20 70 6F 69 6E 74 65 64 20 6F 75 74 2E 0D 0A e pointed out...
012480: 3E 6F 70 0D 0A 3E 63 65 20 E2 32 2E 20 55 53 49 >op..>ce .2. USI
012490: 4E 47 20 41 52 4E 4F 52 20 42 43 50 4C 20 55 4E NG ARNOR BCPL UN
0124A0: 44 45 52 20 43 50 2F 4D E2 0D 0A 0D 0A 0D 0A 09 DER CP/M........
0124B0: 43 50 43 20 75 73 65 72 73 20 6D 61 79 90 20 75 CPC users may. u
0124C0: 73 65 90 20 42 43 50 4C 90 20 75 6E 64 65 72 90 se. BCPL. under.
0124D0: 20 43 50 2F 4D 90 20 28 65 69 74 68 65 72 90 20 CP/M. (either.
0124E0: 32 2E 32 90 20 6F 72 20 50 6C 75 73 29 2E 20 54 2.2. or Plus). T
0124F0: 68 65 20 0D 8A 73 75 70 70 6C 69 65 64 20 64 69 he ..supplied di
012500: 20 20 20 20 20 63 6F 70 65 6E 73 71 20 3D 20 32 copensq = 2
012510: 37 20 3B 20 63 63 6C 6F 73 65 73 71 20 3D 20 32 7 ; cclosesq = 2
012520: 39 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 6D 9.. m
012530: 61 78 73 63 72 68 65 69 67 68 74 20 3D 20 33 31 axscrheight = 31
012540: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 6D 61 .. ma
012550: 78 63 68 72 20 3D 20 32 32 39 39 38 20 20 20 20 xchr = 22998
012560: 20 2F 2F 20 63 61 6E 20 62 65 20 69 6E 63 72 65 // can be incre
012570: 61 73 65 64 20 66 6F 72 20 43 50 2F 4D 20 50 6C ased for CP/M Pl
012580: 75 73 20 6F 6E 6C 79 0D 0A 20 20 20 20 20 20 20 us only..
012590: 20 20 20 24 29 0D 0A 0D 0A 0D 0A 2F 2A 0D 0A 20 $)....../*..
0125A0: 20 20 74 65 78 74 65 6E 64 20 70 6F 69 6E 74 73 textend points
0125B0: 20 74 6F 20 74 68 65 20 6C 61 73 74 20 63 68 61 to the last cha
0125C0: 72 61 63 74 65 72 20 69 6E 20 74 68 65 20 66 69 racter in the fi
0125D0: 6C 65 20 77 68 69 63 68 20 77 69 6C 6C 20 61 6C le which will al
0125E0: 77 61 79 73 20 62 65 20 61 0D 0A 20 20 20 63 68 ways be a.. ch
0125F0: 61 72 61 63 74 65 72 20 31 33 2E 20 74 65 78 74 aracter 13. text
012600: 70 74 72 20 70 6F 69 6E 74 73 20 74 6F 20 74 68 ptr points to th
012610: 65 20 66 69 72 73 74 20 63 68 61 72 61 63 74 65 e first characte
012620: 72 20 6F 66 20 74 68 65 20 63 75 72 72 65 6E 74 r of the current
012630: 20 6C 69 6E 65 2E 0D 0A 20 20 20 74 65 78 74 73 line... texts
012640: 74 61 72 74 20 70 6F 69 6E 74 73 20 74 6F 20 74 tart points to t
012650: 68 65 20 73 74 61 72 74 20 6F 66 20 74 68 65 20 he start of the
012660: 74 65 78 74 20 73 70 61 63 65 2E 0D 0A 2A 2F 0D text space...*/.
012670: 0A 0D 0A 53 54 41 54 49 43 20 24 28 20 69 6E 73 ...STATIC $( ins
012680: 65 72 74 20 3D 20 69 6E 73 20 3B 20 74 65 78 74 ert = ins ; text
012690: 65 6E 64 20 3D 20 30 20 3B 20 74 65 78 74 70 74 end = 0 ; textpt
0126A0: 72 20 3D 20 30 20 3B 20 74 65 78 74 73 74 61 72 r = 0 ; textstar
0126B0: 74 20 3D 20 30 0D 0A 20 20 20 20 20 20 20 20 20 t = 0..
0126C0: 20 78 20 3D 20 31 20 3B 20 79 20 3D 20 31 20 3B x = 1 ; y = 1 ;
0126D0: 20 70 72 65 76 20 3D 20 30 20 3B 20 66 69 6C 65 prev = 0 ; file
0126E0: 20 3D 20 30 20 3B 20 62 75 66 66 70 72 69 6E 74 = 0 ; buffprint
0126F0: 20 3D 20 46 41 4C 53 45 0D 0A 20 20 20 20 20 20 = FALSE..
012700: 73 63 20 68 61 73 20 74 68 65 20 43 50 2F 4D 20 sc has the CP/M
012710: 76 65 72 73 69 6F 6E 20 6F 66 20 74 68 65 20 70 version of the p
012720: 72 6F 67 72 61 6D 20 6F 6E 20 6F 6E 65 20 73 69 rogram on one si
012730: 64 65 2C 20 61 6E 64 20 74 68 65 20 0D 8A 41 4D de, and the ..AM
012740: 53 44 4F 53 20 76 65 72 73 69 6F 6E 20 6F 6E 20 SDOS version on
012750: 74 68 65 20 6F 74 68 65 72 2E 20 0D 0A 0D 0A 4E the other. ....N
012760: 6F 74 65 3A 20 50 43 57 38 32 35 36 2F 38 35 31 ote: PCW8256/851
012770: 32 20 75 73 65 72 73 20 73 68 6F 75 6C 64 20 69 2 users should i
012780: 67 6E 6F 72 65 20 74 68 65 20 41 4D 53 44 4F 53 gnore the AMSDOS
012790: 20 73 69 64 65 20 6F 66 20 74 68 65 20 64 69 73 side of the dis
0127A0: 63 20 61 6E 64 20 0D 8A 74 68 65 20 45 50 52 4F c and ..the EPRO
0127B0: 4D 2C 20 61 73 90 20 77 65 6C 6C 90 20 61 73 90 M, as. well. as.
0127C0: 20 61 6E 79 90 20 72 65 66 65 72 65 6E 63 65 73 any. references
0127D0: 90 20 74 6F 90 20 41 6D 73 64 6F 73 90 20 6F 72 . to. Amsdos. or
0127E0: 20 74 68 65 20 45 50 52 4F 4D 2F 52 4F 4D 20 0D the EPROM/ROM .
0127F0: 8A 76 65 72 73 69 6F 6E 2C 20 74 68 72 6F 75 67 .version, throug
012800: 68 6F 75 74 20 74 68 69 73 20 6D 61 6E 75 61 6C hout this manual
012810: 2E 20 54 68 65 73 65 20 61 72 65 20 66 6F 72 20 . These are for
012820: 43 50 43 20 75 73 65 72 73 20 6F 6E 6C 79 2E 20 CPC users only.
012830: 0D 0A 0D 0A 09 54 68 65 20 6E 65 77 63 6F 6D 65 .....The newcome
012840: 72 20 74 6F 20 74 68 65 20 6C 61 6E 67 75 61 67 r to the languag
012850: 65 20 69 73 20 61 64 76 69 73 65 64 20 74 6F 20 e is advised to
012860: 70 61 73 73 20 6F 76 65 72 20 63 68 61 70 74 65 pass over chapte
012870: 72 73 20 32 2C 20 33 20 0D 8A 61 6E 64 20 34 20 rs 2, 3 ..and 4
012880: 6F 6E 20 74 68 65 20 66 69 72 73 74 20 72 65 61 on the first rea
012890: 64 69 6E 67 20 61 73 20 74 68 65 79 20 64 65 73 ding as they des
0128A0: 63 72 69 62 65 20 74 68 65 20 6D 65 63 68 61 6E cribe the mechan
0128B0: 69 63 73 20 6F 66 20 75 73 69 6E 67 20 74 68 65 ics of using the
0128C0: 20 0D 8A 63 6F 6D 70 69 6C 65 72 2C 20 72 61 74 ..compiler, rat
0128D0: 68 65 72 20 74 68 61 6E 20 64 65 74 61 69 6C 73 her than details
0128E0: 20 6F 66 20 74 68 65 20 6C 61 6E 67 75 61 67 65 of the language
0128F0: 2E 0D 0A 0D 0A E2 4C 69 73 74 20 6F 66 20 66 69 ......List of fi
012900: 20 20 20 20 6C 69 6E 65 6E 75 6D 62 65 72 20 3D linenumber =
012910: 20 31 20 20 3B 20 73 63 72 68 65 69 67 68 74 3D 1 ; scrheight=
012920: 30 20 20 3B 20 76 65 72 3D 30 20 24 29 0D 0A 0D 0 ; ver=0 $)...
012930: 0A 47 4C 4F 42 41 4C 20 24 28 20 65 72 72 76 65 .GLOBAL $( errve
012940: 63 20 3A 20 30 20 3B 20 65 72 72 6C 61 62 20 3A c : 0 ; errlab :
012950: 20 31 20 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 62 1 $)......LET b
012960: 79 74 65 6D 6F 76 65 28 73 6F 75 72 63 65 2C 64 ytemove(source,d
012970: 65 73 74 2C 6E 75 6D 62 65 72 29 20 42 45 0D 0A est,number) BE..
012980: 0D 0A 24 28 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 ..$(.. inline 2
012990: 32 31 2C 31 30 32 2C 31 32 33 20 20 20 20 20 20 21,102,123
0129A0: 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 32 33 29 // ld h,(ix+123)
0129B0: 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 32 31 2C 31 .. inline 221,1
0129C0: 31 30 2C 31 32 32 20 20 20 20 20 20 2F 2F 20 6C 10,122 // l
0129D0: 64 20 6C 2C 28 69 78 2B 31 32 32 29 0D 0A 20 20 d l,(ix+122)..
0129E0: 69 6E 6C 69 6E 65 20 32 32 31 2C 38 36 2C 31 32 inline 221,86,12
0129F0: 35 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 64 2C 5 // ld d,
012A00: 28 69 78 2B 31 32 35 29 0D 0A 20 20 69 6E 6C 69 (ix+125).. inli
012A10: 6E 65 20 32 32 31 2C 39 34 2C 31 32 34 20 20 20 ne 221,94,124
012A20: 20 20 20 20 2F 2F 20 6C 64 20 65 2C 28 69 78 2B // ld e,(ix+
012A30: 31 32 34 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 124).. inline 2
012A40: 32 31 2C 37 30 2C 31 32 37 20 20 20 20 20 20 20 21,70,127
012A50: 2F 2F 20 6C 64 20 62 2C 28 69 78 2B 31 32 37 29 // ld b,(ix+127)
012A60: 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 32 31 2C 37 .. inline 221,7
012A70: 38 2C 31 32 36 20 20 20 20 20 20 20 2F 2F 20 6C 8,126 // l
012A80: 64 20 63 2C 28 69 78 2B 31 32 36 29 0D 0A 20 20 d c,(ix+126)..
012A90: 69 6E 6C 69 6E 65 20 31 36 37 20 20 20 20 20 20 inline 167
012AA0: 20 20 20 20 20 20 20 20 2F 2F 20 61 6E 64 20 61 // and a
012AB0: 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 33 37 2C 38 .. inline 237,8
012AC0: 32 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 73 2 // s
012AD0: 62 63 20 68 6C 2C 64 65 0D 0A 20 20 69 6E 6C 69 bc hl,de.. inli
012AE0: 6E 65 20 32 35 20 20 20 20 20 20 20 20 20 20 20 ne 25
012AF0: 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 64 65 // add hl,de
012B00: 6C 65 73 20 63 6F 6E 74 61 69 6E 65 64 20 6F 6E les contained on
012B10: 20 74 68 65 20 64 69 73 63 20 2D 2D 20 43 50 2F the disc -- CP/
012B20: 4D 20 73 69 64 65 E2 0D 0A 0D 0A 54 68 65 20 6D M side.....The m
012B30: 61 69 6E 20 66 69 6C 65 73 20 61 72 65 3A 0D 0A ain files are:..
012B40: 0D 0A 42 43 50 4C 2E 43 4F 4D 09 09 74 68 65 20 ..BCPL.COM..the
012B50: 6D 61 69 6E 20 63 6F 6D 70 69 6C 65 72 20 70 72 main compiler pr
012B60: 6F 67 72 61 6D 0D 0A 43 4C 49 42 48 44 52 09 09 ogram..CLIBHDR..
012B70: 74 68 65 20 6D 61 69 6E 20 49 2F 4F 20 6C 69 62 the main I/O lib
012B80: 72 61 72 79 0D 0A 43 4C 49 42 48 44 52 31 09 09 rary..CLIBHDR1..
012B90: 74 68 65 20 65 78 74 72 61 20 49 2F 4F 20 6C 69 the extra I/O li
012BA0: 62 72 61 72 79 20 63 6F 6E 74 61 69 6E 69 6E 67 brary containing
012BB0: 20 6C 65 73 73 20 75 73 65 64 20 72 6F 75 74 69 less used routi
012BC0: 6E 65 73 0D 0A 44 45 42 55 47 09 09 61 20 72 6F nes..DEBUG..a ro
012BD0: 75 74 69 6E 65 20 75 73 65 66 75 6C 20 66 6F 72 utine useful for
012BE0: 20 64 65 62 75 67 67 69 6E 67 20 42 43 50 4C 20 debugging BCPL
012BF0: 70 72 6F 67 72 61 6D 73 0D 0A 0D 0A 54 68 65 20 programs....The
012C00: 64 69 73 63 20 61 6C 73 6F 20 63 6F 6E 74 61 69 disc also contai
012C10: 6E 73 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 ns the following
012C20: 20 65 78 61 6D 70 6C 65 20 66 69 6C 65 73 3A 0D example files:.
012C30: 0A 0D 0A 3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D ...>---!-----!--
012C40: 2D 2D 2D 4C 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D ---L-------!----
012C50: 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D ---!-------!----
012C60: 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D ---!-------!----
012C70: 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A 41 53 36 35 30 ---!----R..AS650
012C80: 32 2E 42 09 09 61 20 36 35 30 32 20 63 72 6F 73 2.B..a 6502 cros
012C90: 73 20 61 73 73 65 6D 62 6C 65 72 2C 20 77 72 69 s assembler, wri
012CA0: 74 74 65 6E 20 69 6E 20 42 43 50 4C 0D 0A 42 45 tten in BCPL..BE
012CB0: 44 43 2E 42 09 09 42 43 50 4C 20 65 64 69 74 6F DC.B..BCPL edito
012CC0: 72 20 73 6F 75 72 63 65 20 63 6F 64 65 2C 20 43 r source code, C
012CD0: 50 2F 4D 20 76 65 72 73 69 6F 6E 0D 0A 42 45 44 P/M version..BED
012CE0: 43 2E 43 4F 4D 09 09 42 43 50 4C 20 65 64 69 74 C.COM..BCPL edit
012CF0: 6F 72 20 6F 62 6A 65 63 74 20 63 6F 64 65 2C 20 or object code,
012D00: 0D 0A 20 20 69 6E 6C 69 6E 65 20 35 36 2C 34 20 .. inline 56,4
012D10: 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 6A // j
012D20: 72 20 63 2C 2B 34 0D 0A 20 20 69 6E 6C 69 6E 65 r c,+4.. inline
012D30: 20 32 33 37 2C 31 37 36 20 20 20 20 20 20 20 20 237,176
012D40: 20 20 2F 2F 20 6C 64 69 72 0D 0A 20 20 69 6E 6C // ldir.. inl
012D50: 69 6E 65 20 32 34 2C 38 20 20 20 20 20 20 20 20 ine 24,8
012D60: 20 20 20 20 20 2F 2F 20 6A 72 20 2B 38 0D 0A 20 // jr +8..
012D70: 20 69 6E 6C 69 6E 65 20 31 31 20 20 20 20 20 20 inline 11
012D80: 20 20 20 20 20 20 20 20 20 2F 2F 20 64 65 63 20 // dec
012D90: 62 63 0D 0A 20 20 69 6E 6C 69 6E 65 20 39 20 20 bc.. inline 9
012DA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F //
012DB0: 20 61 64 64 20 68 6C 2C 62 63 0D 0A 20 20 69 6E add hl,bc.. in
012DC0: 6C 69 6E 65 20 32 33 35 20 20 20 20 20 20 20 20 line 235
012DD0: 20 20 20 20 20 20 2F 2F 20 65 78 20 64 65 2C 68 // ex de,h
012DE0: 6C 0D 0A 20 20 69 6E 6C 69 6E 65 20 39 20 20 20 l.. inline 9
012DF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 //
012E00: 61 64 64 20 68 6C 2C 62 63 0D 0A 20 20 69 6E 6C add hl,bc.. inl
012E10: 69 6E 65 20 32 33 35 20 20 20 20 20 20 20 20 20 ine 235
012E20: 20 20 20 20 20 2F 2F 20 65 78 20 64 65 2C 68 6C // ex de,hl
012E30: 0D 0A 20 20 69 6E 6C 69 6E 65 20 33 20 20 20 20 .. inline 3
012E40: 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 69 // i
012E50: 6E 63 20 62 63 0D 0A 20 20 69 6E 6C 69 6E 65 20 nc bc.. inline
012E60: 32 33 37 2C 31 38 34 20 20 20 20 20 20 20 20 20 237,184
012E70: 20 2F 2F 20 6C 64 64 72 0D 0A 24 29 0D 0A 0D 0A // lddr..$)....
012E80: 4C 45 54 20 63 61 6C 6C 28 61 64 64 72 2C 61 66 LET call(addr,af
012E90: 2C 62 63 2C 64 65 2C 68 6C 2C 69 78 29 20 42 45 ,bc,de,hl,ix) BE
012EA0: 0D 0A 0D 0A 24 28 20 20 4C 45 54 20 73 61 76 65 ....$( LET save
012EB0: 33 20 3D 20 56 45 43 20 31 0D 0A 20 20 20 20 62 3 = VEC 1.. b
012EC0: 79 74 65 6D 6F 76 65 28 23 78 39 30 2C 20 73 61 ytemove(#x90, sa
012ED0: 76 65 33 2A 32 2C 20 33 29 0D 0A 20 20 20 20 30 ve3*2, 3).. 0
012EE0: 25 23 78 39 30 20 3A 3D 20 23 78 43 33 0D 0A 20 %#x90 := #xC3..
012EF0: 20 20 20 30 25 23 78 39 31 20 3A 3D 20 61 64 64 0%#x91 := add
012F00: 43 50 2F 4D 20 76 65 72 73 69 6F 6E 0D 0A 43 4F CP/M version..CO
012F10: 50 59 2E 42 09 09 61 20 73 69 6D 70 6C 65 20 65 PY.B..a simple e
012F20: 78 61 6D 70 6C 65 20 70 72 6F 67 72 61 6D 20 77 xample program w
012F30: 68 69 63 68 20 63 6F 70 69 65 73 20 20 61 20 66 hich copies a f
012F40: 69 6C 65 0D 0A 4B 45 59 44 45 46 53 2E 50 43 57 ile..KEYDEFS.PCW
012F50: 09 61 20 6B 65 79 20 64 65 66 69 6E 69 74 69 6F .a key definitio
012F60: 6E 20 66 69 6C 65 90 20 66 6F 72 90 20 75 73 65 n file. for. use
012F70: 90 20 77 69 74 68 90 20 42 45 44 43 2E 43 4F 4D . with. BEDC.COM
012F80: 20 6F 6E 20 74 68 65 20 0D 8A 09 09 09 50 43 57 on the .....PCW
012F90: 38 32 35 36 2F 38 35 31 32 2E 0D 0A 54 49 44 59 8256/8512...TIDY
012FA0: 2E 42 09 09 41 20 42 43 50 4C 20 70 72 6F 67 72 .B..A BCPL progr
012FB0: 61 6D 20 74 6F 20 66 6F 72 6D 61 74 20 42 43 50 am to format BCP
012FC0: 4C 20 73 6F 75 72 63 65 20 63 6F 64 65 20 74 69 L source code ti
012FD0: 64 69 6C 79 0D 0A 3E 2D 2D 2D 21 2D 2D 2D 2D 2D dily..>---!-----
012FE0: 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D !-----!-------!-
012FF0: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
013000: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
013010: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A 0D 0A ------!----R....
013020: 0D 0A E2 43 72 65 61 74 69 6E 67 20 61 20 77 6F ...Creating a wo
013030: 72 6B 69 6E 67 20 64 69 73 63 E2 0D 0A 0D 0A 4E rking disc.....N
013040: 4F 54 45 3A 20 55 6E 64 65 72 20 6E 6F 20 63 69 OTE: Under no ci
013050: 72 63 75 6D 73 74 61 6E 63 65 73 20 73 68 6F 75 rcumstances shou
013060: 6C 64 90 20 74 68 65 90 20 6F 72 69 67 69 6E 61 ld. the. origina
013070: 6C 90 20 64 69 73 63 90 20 62 65 20 75 73 65 64 l. disc. be used
013080: 20 61 73 20 61 20 0D 8A 77 6F 72 6B 69 6E 67 20 as a ..working
013090: 64 69 73 63 20 66 6F 72 20 6E 6F 72 6D 61 6C 20 disc for normal
0130A0: 75 73 65 2E 20 54 68 65 90 20 72 65 71 75 69 72 use. The. requir
0130B0: 65 64 20 66 69 6C 65 73 20 73 68 6F 75 6C 64 20 ed files should
0130C0: 62 65 20 63 6F 70 69 65 64 20 6F 6E 74 6F 20 0D be copied onto .
0130D0: 8A 61 20 73 79 73 74 65 6D 20 64 69 73 63 20 61 .a system disc a
0130E0: 6E 64 20 74 68 65 20 6F 72 69 67 69 6E 61 6C 20 nd the original
0130F0: 72 65 74 61 69 6E 65 64 20 69 6E 20 61 20 73 61 retained in a sa
013100: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
013110: 10 00 01 00 02 09 4E E5 10 00 C1 02 00 00 00 02 ......N.........
013120: 10 00 C6 02 00 00 00 02 10 00 C2 02 00 00 00 02 ................
013130: 10 00 C7 02 00 00 00 02 10 00 C3 02 00 00 00 02 ................
013140: 10 00 C8 02 00 00 00 02 10 00 C4 02 00 00 00 02 ................
013150: 10 00 C9 02 00 00 00 02 10 00 C5 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: 72 20 26 20 23 78 46 46 0D 0A 20 20 20 20 30 25 r & #xFF.. 0%
013210: 23 78 39 32 20 3A 3D 20 28 20 61 64 64 72 20 26 #x92 := ( addr &
013220: 20 23 78 46 46 30 30 20 29 20 3E 3E 20 38 0D 0A #xFF00 ) >> 8..
013230: 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 .. inline #xD
013240: 44 2C 23 78 45 35 20 20 20 20 20 20 20 20 20 20 D,#xE5
013250: 20 20 2F 2F 20 70 75 73 68 20 69 78 0D 0A 20 20 // push ix..
013260: 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 inline #xDD,#x
013270: 36 36 2C 23 78 37 37 20 20 20 20 20 20 20 2F 2F 66,#x77 //
013280: 20 6C 64 20 68 2C 28 69 78 2B 31 31 39 29 0D 0A ld h,(ix+119)..
013290: 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C inline #xDD,
0132A0: 23 78 36 45 2C 23 78 37 36 20 20 20 20 20 20 20 #x6E,#x76
0132B0: 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 31 38 29 // ld l,(ix+118)
0132C0: 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 32 .. inline #x2
0132D0: 39 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 9
0132E0: 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 0D 0A // add hl,hl..
0132F0: 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 35 45 20 inline #x5E
013300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
013310: 2F 2F 20 6C 64 20 65 2C 28 68 6C 29 0D 0A 20 20 // ld e,(hl)..
013320: 20 20 69 6E 6C 69 6E 65 20 23 78 32 33 20 20 20 inline #x23
013330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F //
013340: 20 69 6E 63 20 68 6C 0D 0A 20 20 20 20 69 6E 6C inc hl.. inl
013350: 69 6E 65 20 23 78 35 36 20 20 20 20 20 20 20 20 ine #x56
013360: 20 20 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 64 // ld d
013370: 2C 28 68 6C 29 0D 0A 20 20 20 20 69 6E 6C 69 6E ,(hl).. inlin
013380: 65 20 23 78 44 35 20 20 20 20 20 20 20 20 20 20 e #xD5
013390: 20 20 20 20 20 20 20 2F 2F 20 70 75 73 68 20 64 // push d
0133A0: 65 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 e.. inline #x
0133B0: 44 44 2C 23 78 36 36 2C 23 78 37 39 20 20 20 20 DD,#x66,#x79
0133C0: 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 // ld h,(ix+1
0133D0: 32 31 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 21).. inline
0133E0: 23 78 44 44 2C 23 78 36 45 2C 23 78 37 38 20 20 #xDD,#x6E,#x78
0133F0: 20 20 20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 // ld l,(ix
013400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F /
013410: 2F 20 6C 64 20 28 68 6C 29 2C 64 0D 0A 20 20 20 / ld (hl),d..
013420: 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 inline #xDD,#x6
013430: 36 2C 23 78 37 46 20 20 20 20 20 20 20 2F 2F 20 6,#x7F //
013440: 6C 64 20 68 2C 28 69 78 2B 31 32 37 29 0D 0A 20 ld h,(ix+127)..
013450: 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 inline #xDD,#
013460: 78 36 45 2C 23 78 37 45 20 20 20 20 20 20 20 2F x6E,#x7E /
013470: 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 32 36 29 0D / ld l,(ix+126).
013480: 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 32 39 . inline #x29
013490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0134A0: 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 0D 0A 20 // add hl,hl..
0134B0: 20 20 20 69 6E 6C 69 6E 65 20 23 78 45 44 2C 23 inline #xED,#
0134C0: 78 35 42 2C 23 78 39 30 2C 23 78 30 30 20 20 2F x5B,#x90,#x00 /
0134D0: 2F 20 6C 64 20 64 65 2C 28 26 39 30 29 0D 0A 20 / ld de,(&90)..
0134E0: 20 20 20 69 6E 6C 69 6E 65 20 23 78 37 33 20 20 inline #x73
0134F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F /
013500: 2F 20 6C 64 20 28 68 6C 29 2C 65 0D 0A 20 20 20 / ld (hl),e..
013510: 20 69 6E 6C 69 6E 65 20 23 78 32 33 20 20 20 20 inline #x23
013520: 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 //
013530: 69 6E 63 20 68 6C 0D 0A 20 20 20 20 69 6E 6C 69 inc hl.. inli
013540: 6E 65 20 23 78 37 32 20 20 20 20 20 20 20 20 20 ne #x72
013550: 20 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 28 68 // ld (h
013560: 6C 29 2C 64 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 l),d.. inline
013570: 20 23 78 44 44 2C 23 78 36 36 2C 23 78 37 39 20 #xDD,#x66,#x79
013580: 20 20 20 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 // ld h,(i
013590: 78 2B 31 32 31 29 0D 0A 20 20 20 20 69 6E 6C 69 x+121).. inli
0135A0: 6E 65 20 23 78 44 44 2C 23 78 36 45 2C 23 78 37 ne #xDD,#x6E,#x7
0135B0: 38 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 6C 2C 8 // ld l,
0135C0: 28 69 78 2B 31 32 30 29 0D 0A 20 20 20 20 69 6E (ix+120).. in
0135D0: 6C 69 6E 65 20 23 78 32 39 20 20 20 20 20 20 20 line #x29
0135E0: 20 20 20 20 20 20 20 20 20 20 2F 2F 20 61 64 64 // add
0135F0: 20 68 6C 2C 68 6C 0D 0A 20 20 20 20 69 6E 6C 69 hl,hl.. inli
013600: 2B 31 32 30 29 0D 0A 20 20 20 20 69 6E 6C 69 6E +120).. inlin
013610: 65 20 23 78 32 39 20 20 20 20 20 20 20 20 20 20 e #x29
013620: 20 20 20 20 20 20 20 2F 2F 20 61 64 64 20 68 6C // add hl
013630: 2C 68 6C 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 ,hl.. inline
013640: 23 78 34 45 20 20 20 20 20 20 20 20 20 20 20 20 #x4E
013650: 20 20 20 20 20 2F 2F 20 6C 64 20 63 2C 28 68 6C // ld c,(hl
013660: 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 ).. inline #x
013670: 32 33 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23
013680: 20 20 20 2F 2F 20 69 6E 63 20 68 6C 0D 0A 20 20 // inc hl..
013690: 20 20 69 6E 6C 69 6E 65 20 23 78 34 36 20 20 20 inline #x46
0136A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F //
0136B0: 20 6C 64 20 62 2C 28 68 6C 29 0D 0A 20 20 20 20 ld b,(hl)..
0136C0: 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 36 inline #xDD,#x66
0136D0: 2C 23 78 37 46 20 20 20 20 20 20 20 2F 2F 20 6C ,#x7F // l
0136E0: 64 20 68 2C 28 69 78 2B 31 32 37 29 0D 0A 20 20 d h,(ix+127)..
0136F0: 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 inline #xDD,#x
013700: 36 45 2C 23 78 37 45 20 20 20 20 20 20 20 2F 2F 6E,#x7E //
013710: 20 6C 64 20 6C 2C 28 69 78 2B 31 32 36 29 0D 0A ld l,(ix+126)..
013720: 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 32 39 20 inline #x29
013730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
013740: 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 0D 0A 20 20 // add hl,hl..
013750: 20 20 69 6E 6C 69 6E 65 20 23 78 35 45 20 20 20 inline #x5E
013760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F //
013770: 20 6C 64 20 65 2C 28 68 6C 29 0D 0A 20 20 20 20 ld e,(hl)..
013780: 69 6E 6C 69 6E 65 20 23 78 32 33 20 20 20 20 20 inline #x23
013790: 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 69 // i
0137A0: 6E 63 20 68 6C 0D 0A 20 20 20 20 69 6E 6C 69 6E nc hl.. inlin
0137B0: 65 20 23 78 35 36 20 20 20 20 20 20 20 20 20 20 e #x56
0137C0: 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 64 2C 28 // ld d,(
0137D0: 68 6C 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 hl).. inline
0137E0: 23 78 44 35 20 20 20 20 20 20 20 20 20 20 20 20 #xD5
0137F0: 20 20 20 20 20 2F 2F 20 70 75 73 68 20 64 65 0D // push de.
013800: 6E 65 20 23 78 37 31 20 20 20 20 20 20 20 20 20 ne #x71
013810: 20 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 28 68 // ld (h
013820: 6C 29 2C 63 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 l),c.. inline
013830: 20 23 78 32 33 20 20 20 20 20 20 20 20 20 20 20 #x23
013840: 20 20 20 20 20 20 2F 2F 20 69 6E 63 20 68 6C 0D // inc hl.
013850: 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 37 30 . inline #x70
013860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
013870: 20 2F 2F 20 6C 64 20 28 68 6C 29 2C 62 0D 0A 20 // ld (hl),b..
013880: 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 inline #xDD,#
013890: 78 36 36 2C 23 78 37 37 20 20 20 20 20 20 20 2F x66,#x77 /
0138A0: 2F 20 6C 64 20 68 2C 28 69 78 2B 31 31 39 29 0D / ld h,(ix+119).
0138B0: 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 . inline #xDD
0138C0: 2C 23 78 36 45 2C 23 78 37 36 20 20 20 20 20 20 ,#x6E,#x76
0138D0: 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 31 38 // ld l,(ix+118
0138E0: 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 ).. inline #x
0138F0: 32 39 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29
013900: 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 0D // add hl,hl.
013910: 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 31 . inline #xD1
013920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
013930: 20 2F 2F 20 70 6F 70 20 64 65 0D 0A 20 20 20 20 // pop de..
013940: 69 6E 6C 69 6E 65 20 23 78 37 33 20 20 20 20 20 inline #x73
013950: 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 6C // l
013960: 64 20 28 68 6C 29 2C 65 0D 0A 20 20 20 20 69 6E d (hl),e.. in
013970: 6C 69 6E 65 20 23 78 32 33 20 20 20 20 20 20 20 line #x23
013980: 20 20 20 20 20 20 20 20 20 20 2F 2F 20 69 6E 63 // inc
013990: 20 68 6C 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 hl.. inline
0139A0: 23 78 37 32 20 20 20 20 20 20 20 20 20 20 20 20 #x72
0139B0: 20 20 20 20 20 2F 2F 20 6C 64 20 28 68 6C 29 2C // ld (hl),
0139C0: 64 0D 0A 20 20 20 20 62 79 74 65 6D 6F 76 65 28 d.. bytemove(
0139D0: 73 61 76 65 33 2A 32 2C 20 23 78 39 30 2C 20 33 save3*2, #x90, 3
0139E0: 29 0D 0A 24 29 0D 0A 0D 0A 4C 45 54 20 66 69 72 )..$)....LET fir
0139F0: 6D 77 61 72 65 28 61 64 64 72 2C 61 66 2C 62 63 mware(addr,af,bc
013A00: 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 . inline #xDD
013A10: 2C 23 78 36 36 2C 23 78 37 44 20 20 20 20 20 20 ,#x66,#x7D
013A20: 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 32 35 // ld h,(ix+125
013A30: 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 ).. inline #x
013A40: 44 44 2C 23 78 36 45 2C 23 78 37 43 20 20 20 20 DD,#x6E,#x7C
013A50: 20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 // ld l,(ix+1
013A60: 32 34 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 24).. inline
013A70: 23 78 32 39 20 20 20 20 20 20 20 20 20 20 20 20 #x29
013A80: 20 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 // add hl,h
013A90: 6C 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 l.. inline #x
013AA0: 35 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5E
013AB0: 20 20 20 2F 2F 20 6C 64 20 65 2C 28 68 6C 29 0D // ld e,(hl).
013AC0: 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 32 33 . inline #x23
013AD0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
013AE0: 20 2F 2F 20 69 6E 63 20 68 6C 0D 0A 20 20 20 20 // inc hl..
013AF0: 69 6E 6C 69 6E 65 20 23 78 35 36 20 20 20 20 20 inline #x56
013B00: 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 6C // l
013B10: 64 20 64 2C 28 68 6C 29 0D 0A 20 20 20 20 69 6E d d,(hl).. in
013B20: 6C 69 6E 65 20 23 78 44 35 20 20 20 20 20 20 20 line #xD5
013B30: 20 20 20 20 20 20 20 20 20 20 2F 2F 20 70 75 73 // pus
013B40: 68 20 64 65 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 h de.. inline
013B50: 20 23 78 44 44 2C 23 78 36 36 2C 23 78 37 42 20 #xDD,#x66,#x7B
013B60: 20 20 20 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 // ld h,(i
013B70: 78 2B 31 32 33 29 0D 0A 20 20 20 20 69 6E 6C 69 x+123).. inli
013B80: 6E 65 20 23 78 44 44 2C 23 78 36 45 2C 23 78 37 ne #xDD,#x6E,#x7
013B90: 41 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 6C 2C A // ld l,
013BA0: 28 69 78 2B 31 32 32 29 0D 0A 20 20 20 20 69 6E (ix+122).. in
013BB0: 6C 69 6E 65 20 23 78 32 39 20 20 20 20 20 20 20 line #x29
013BC0: 20 20 20 20 20 20 20 20 20 20 2F 2F 20 61 64 64 // add
013BD0: 20 68 6C 2C 68 6C 0D 0A 20 20 20 20 69 6E 6C 69 hl,hl.. inli
013BE0: 6E 65 20 23 78 35 45 20 20 20 20 20 20 20 20 20 ne #x5E
013BF0: 20 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 65 2C // ld e,
013C00: 2C 64 65 2C 68 6C 2C 69 78 29 20 42 45 0D 0A 0D ,de,hl,ix) BE...
013C10: 0A 24 28 20 20 4C 45 54 20 73 61 76 65 36 20 3D .$( LET save6 =
013C20: 20 56 45 43 20 33 0D 0A 20 20 20 20 62 79 74 65 VEC 3.. byte
013C30: 6D 6F 76 65 28 23 78 38 30 2C 20 73 61 76 65 36 move(#x80, save6
013C40: 2A 32 2C 20 36 29 0D 0A 20 20 20 20 30 25 23 78 *2, 6).. 0%#x
013C50: 38 30 20 3A 3D 20 23 78 43 44 0D 0A 20 20 20 20 80 := #xCD..
013C60: 30 25 23 78 38 31 20 3A 3D 20 30 25 28 30 25 31 0%#x81 := 0%(0%1
013C70: 20 2B 20 32 35 36 2A 30 25 32 20 2B 20 38 37 20 + 256*0%2 + 87
013C80: 2B 31 29 0D 0A 20 20 20 20 30 25 23 78 38 32 20 +1).. 0%#x82
013C90: 3A 3D 20 30 25 28 30 25 31 20 2B 20 32 35 36 2A := 0%(0%1 + 256*
013CA0: 30 25 32 20 2B 20 38 37 20 2B 32 29 0D 0A 20 20 0%2 + 87 +2)..
013CB0: 20 20 30 25 23 78 38 33 20 3A 3D 20 61 64 64 72 0%#x83 := addr
013CC0: 20 26 20 23 78 46 46 0D 0A 20 20 20 20 30 25 23 & #xFF.. 0%#
013CD0: 78 38 34 20 3A 3D 20 28 20 61 64 64 72 20 26 20 x84 := ( addr &
013CE0: 23 78 46 46 30 30 20 29 20 3E 3E 20 38 0D 0A 20 #xFF00 ) >> 8..
013CF0: 20 20 20 30 25 23 78 38 35 20 3A 3D 20 23 78 43 0%#x85 := #xC
013D00: 39 0D 0A 20 20 20 20 63 61 6C 6C 20 28 23 78 38 9.. call (#x8
013D10: 30 2C 61 66 2C 62 63 2C 64 65 2C 68 6C 2C 69 78 0,af,bc,de,hl,ix
013D20: 29 0D 0A 20 20 20 20 62 79 74 65 6D 6F 76 65 28 ).. bytemove(
013D30: 73 61 76 65 36 2A 32 2C 20 23 78 38 30 2C 20 36 save6*2, #x80, 6
013D40: 29 0D 0A 24 29 0D 0A 0D 0A 61 6E 64 20 76 65 72 )..$)....and ver
013D50: 73 69 6F 6E 28 29 20 3D 20 56 41 4C 4F 46 0D 0A sion() = VALOF..
013D60: 0D 0A 24 28 20 20 4C 45 54 20 63 2C 64 65 3D 31 ..$( LET c,de=1
013D70: 32 2C 3F 0D 0A 20 20 20 20 4C 45 54 20 61 66 2C 2,?.. LET af,
013D80: 62 63 2C 68 6C 2C 69 78 20 3D 20 3F 2C 3F 2C 3F bc,hl,ix = ?,?,?
013D90: 2C 3F 0D 0A 20 20 20 20 62 64 6F 73 61 28 40 63 ,?.. bdosa(@c
013DA0: 2C 40 64 65 29 0D 0A 20 20 20 20 49 46 20 28 64 ,@de).. IF (d
013DB0: 65 20 26 20 23 78 46 46 29 20 3C 20 23 78 33 30 e & #xFF) < #x30
013DC0: 20 54 48 45 4E 20 52 45 53 55 4C 54 49 53 20 32 THEN RESULTIS 2
013DD0: 0D 0A 20 20 20 20 66 69 72 6D 77 61 72 65 28 23 .. firmware(#
013DE0: 78 45 33 2C 40 61 66 2C 40 62 63 2C 40 64 65 2C xE3,@af,@bc,@de,
013DF0: 40 68 6C 2C 40 69 78 29 0D 0A 20 20 20 20 52 45 @hl,@ix).. RE
013E00: 28 68 6C 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 (hl).. inline
013E10: 20 23 78 32 33 20 20 20 20 20 20 20 20 20 20 20 #x23
013E20: 20 20 20 20 20 20 2F 2F 20 69 6E 63 20 68 6C 0D // inc hl.
013E30: 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 35 36 . inline #x56
013E40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
013E50: 20 2F 2F 20 6C 64 20 64 2C 28 68 6C 29 0D 0A 20 // ld d,(hl)..
013E60: 20 20 20 69 6E 6C 69 6E 65 20 23 78 45 31 20 20 inline #xE1
013E70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F /
013E80: 2F 20 70 6F 70 20 68 6C 0D 0A 20 20 20 20 69 6E / pop hl.. in
013E90: 6C 69 6E 65 20 23 78 44 44 2C 23 78 45 31 20 20 line #xDD,#xE1
013EA0: 20 20 20 20 20 20 20 20 20 20 2F 2F 20 70 6F 70 // pop
013EB0: 20 69 78 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 ix.. inline
013EC0: 23 78 46 31 20 20 20 20 20 20 20 20 20 20 20 20 #xF1
013ED0: 20 20 20 20 20 2F 2F 20 70 6F 70 20 61 66 0D 0A // pop af..
013EE0: 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 43 44 2C inline #xCD,
013EF0: 23 78 39 30 2C 23 78 30 30 20 20 20 20 20 20 20 #x90,#x00
013F00: 2F 2F 20 63 61 6C 6C 20 26 39 30 0D 0A 20 20 20 // call &90..
013F10: 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 32 inline #xDD,#x2
013F20: 32 2C 23 78 39 30 2C 23 78 30 30 20 20 2F 2F 20 2,#x90,#x00 //
013F30: 6C 64 20 28 26 39 30 29 2C 69 78 0D 0A 20 20 20 ld (&90),ix..
013F40: 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 45 inline #xDD,#xE
013F50: 31 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 1 //
013F60: 70 6F 70 20 69 78 0D 0A 20 20 20 20 69 6E 6C 69 pop ix.. inli
013F70: 6E 65 20 23 78 46 35 20 20 20 20 20 20 20 20 20 ne #xF5
013F80: 20 20 20 20 20 20 20 20 2F 2F 20 70 75 73 68 20 // push
013F90: 61 66 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 af.. inline #
013FA0: 78 45 35 20 20 20 20 20 20 20 20 20 20 20 20 20 xE5
013FB0: 20 20 20 20 2F 2F 20 70 75 73 68 20 68 6C 0D 0A // push hl..
013FC0: 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C inline #xDD,
013FD0: 23 78 36 36 2C 23 78 37 42 20 20 20 20 20 20 20 #x66,#x7B
013FE0: 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 32 33 29 // ld h,(ix+123)
013FF0: 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 .. inline #xD
014000: 53 55 4C 54 49 53 20 33 20 2B 20 28 20 28 61 66 SULTIS 3 + ( (af
014010: 20 26 20 23 78 46 46 30 30 29 20 3E 3E 20 38 20 & #xFF00) >> 8
014020: 29 0D 0A 24 29 0D 0A 0D 0A 4C 45 54 20 65 73 63 )..$)....LET esc
014030: 63 6F 64 65 28 78 29 20 42 45 0D 0A 0D 0A 24 28 code(x) BE....$(
014040: 20 20 77 72 63 68 28 32 37 29 20 3B 20 77 72 63 wrch(27) ; wrc
014050: 68 28 78 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 h(x)..$)......LE
014060: 54 20 63 6C 65 61 72 73 63 72 28 29 20 42 45 0D T clearscr() BE.
014070: 0A 24 28 0D 0A 20 20 20 20 54 45 53 54 20 76 65 .$(.. TEST ve
014080: 72 3D 32 20 54 48 45 4E 20 77 72 63 68 28 31 32 r=2 THEN wrch(12
014090: 29 20 45 4C 53 45 20 65 73 63 63 6F 64 65 28 27 ) ELSE esccode('
0140A0: 45 27 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 E')..$)......LET
0140B0: 20 74 61 62 28 78 2C 79 29 20 42 45 0D 0A 0D 0A tab(x,y) BE....
0140C0: 24 28 0D 0A 0D 0A 20 20 54 45 53 54 20 76 65 72 $(.... TEST ver
0140D0: 3D 32 20 54 48 45 4E 0D 0A 20 20 24 28 0D 0A 20 =2 THEN.. $(..
0140E0: 20 20 20 62 64 6F 73 62 28 36 2C 33 31 29 20 3B bdosb(6,31) ;
0140F0: 20 62 64 6F 73 62 28 36 2C 78 29 20 3B 20 62 64 bdosb(6,x) ; bd
014100: 6F 73 62 28 36 2C 79 29 0D 0A 20 20 24 29 0D 0A osb(6,y).. $)..
014110: 20 20 45 4C 53 45 0D 0A 20 20 24 28 0D 0A 20 20 ELSE.. $(..
014120: 20 20 20 65 73 63 63 6F 64 65 28 27 59 27 29 20 esccode('Y')
014130: 3B 20 77 72 63 68 28 79 2B 33 32 2D 31 29 20 3B ; wrch(y+32-1) ;
014140: 20 77 72 63 68 28 78 2B 33 32 2D 31 29 0D 0A 20 wrch(x+32-1)..
014150: 20 24 29 0D 0A 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C $)....$)......L
014160: 45 54 20 73 70 61 63 65 73 28 6E 75 6D 62 65 72 ET spaces(number
014170: 29 20 42 45 20 24 28 20 46 4F 52 20 61 20 3D 20 ) BE $( FOR a =
014180: 31 20 54 4F 20 6E 75 6D 62 65 72 20 44 4F 20 77 1 TO number DO w
014190: 72 63 68 28 27 20 27 29 20 24 29 0D 0A 0D 0A 0D rch(' ') $).....
0141A0: 0A 4C 45 54 20 61 73 63 69 69 28 63 68 61 72 29 .LET ascii(char)
0141B0: 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 54 45 53 BE....$(.. TES
0141C0: 54 20 63 68 61 72 3D 31 33 20 54 48 45 4E 20 6E T char=13 THEN n
0141D0: 65 77 6C 69 6E 65 28 29 20 45 4C 53 45 20 77 72 ewline() ELSE wr
0141E0: 63 68 28 63 68 61 72 29 0D 0A 24 29 0D 0A 0D 0A ch(char)..$)....
0141F0: 0D 0A 4C 45 54 20 63 75 72 73 6F 6E 28 29 20 42 ..LET curson() B
014200: 44 2C 23 78 36 45 2C 23 78 37 41 20 20 20 20 20 D,#x6E,#x7A
014210: 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 32 // ld l,(ix+12
014220: 32 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 2).. inline #
014230: 78 32 39 20 20 20 20 20 20 20 20 20 20 20 20 20 x29
014240: 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C // add hl,hl
014250: 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 37 .. inline #x7
014260: 33 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3
014270: 20 20 2F 2F 20 6C 64 20 28 68 6C 29 2C 65 0D 0A // ld (hl),e..
014280: 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 32 33 20 inline #x23
014290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0142A0: 2F 2F 20 69 6E 63 20 68 6C 0D 0A 20 20 20 20 69 // inc hl.. i
0142B0: 6E 6C 69 6E 65 20 23 78 37 32 20 20 20 20 20 20 nline #x72
0142C0: 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 6C 64 // ld
0142D0: 20 28 68 6C 29 2C 64 0D 0A 20 20 20 20 69 6E 6C (hl),d.. inl
0142E0: 69 6E 65 20 23 78 44 44 2C 23 78 36 36 2C 23 78 ine #xDD,#x66,#x
0142F0: 37 44 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 68 7D // ld h
014300: 2C 28 69 78 2B 31 32 35 29 0D 0A 20 20 20 20 69 ,(ix+125).. i
014310: 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 45 2C nline #xDD,#x6E,
014320: 23 78 37 43 20 20 20 20 20 20 20 2F 2F 20 6C 64 #x7C // ld
014330: 20 6C 2C 28 69 78 2B 31 32 34 29 0D 0A 20 20 20 l,(ix+124)..
014340: 20 69 6E 6C 69 6E 65 20 23 78 32 39 20 20 20 20 inline #x29
014350: 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 //
014360: 61 64 64 20 68 6C 2C 68 6C 0D 0A 20 20 20 20 69 add hl,hl.. i
014370: 6E 6C 69 6E 65 20 23 78 44 31 20 20 20 20 20 20 nline #xD1
014380: 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 70 6F // po
014390: 70 20 64 65 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 p de.. inline
0143A0: 20 23 78 37 33 20 20 20 20 20 20 20 20 20 20 20 #x73
0143B0: 20 20 20 20 20 20 2F 2F 20 6C 64 20 28 68 6C 29 // ld (hl)
0143C0: 2C 65 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 ,e.. inline #
0143D0: 78 32 33 20 20 20 20 20 20 20 20 20 20 20 20 20 x23
0143E0: 20 20 20 20 2F 2F 20 69 6E 63 20 68 6C 0D 0A 20 // inc hl..
0143F0: 20 20 20 69 6E 6C 69 6E 65 20 23 78 37 32 20 20 inline #x72
014400: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
014410: 11 00 01 00 02 09 4E E5 11 00 C1 02 00 00 00 02 ......N.........
014420: 11 00 C6 02 00 00 00 02 11 00 C2 02 00 00 00 02 ................
014430: 11 00 C7 02 00 00 00 02 11 00 C3 02 00 00 00 02 ................
014440: 11 00 C8 02 00 00 00 02 11 00 C4 02 00 00 00 02 ................
014450: 11 00 C9 02 00 00 00 02 11 00 C5 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: 45 20 72 65 74 75 72 6E 0D 0A 4C 45 54 20 63 75 E return..LET cu
014510: 72 73 65 6E 28 29 20 42 45 20 72 65 74 75 72 6E rsen() BE return
014520: 0D 0A 4C 45 54 20 63 75 72 73 64 69 28 29 20 42 ..LET cursdi() B
014530: 45 20 72 65 74 75 72 6E 0D 0A 0D 0A 4C 45 54 20 E return....LET
014540: 62 65 65 70 28 29 20 42 45 20 24 28 20 77 72 63 beep() BE $( wrc
014550: 68 28 37 29 20 24 29 0D 0A 0D 0A 0D 0A 2F 2A 20 h(7) $)....../*
014560: 54 68 69 73 20 72 6F 75 74 69 6E 65 20 72 65 74 This routine ret
014570: 75 72 6E 73 20 74 68 65 20 6E 75 6D 62 65 72 20 urns the number
014580: 6F 66 20 63 68 61 72 61 63 74 65 72 73 20 75 70 of characters up
014590: 20 74 6F 20 61 6E 64 20 69 6E 63 6C 75 64 69 6E to and includin
0145A0: 67 20 74 68 65 0D 0A 20 20 20 6E 65 78 74 20 43 g the.. next C
0145B0: 52 20 2A 2F 0D 0A 0D 0A 4C 45 54 20 6C 69 6E 65 R */....LET line
0145C0: 6C 65 6E 67 74 68 28 66 72 6F 6D 29 20 3D 20 56 length(from) = V
0145D0: 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 ALOF....$(.. LE
0145E0: 54 20 73 6F 66 61 72 20 3D 20 31 0D 0A 20 20 57 T sofar = 1.. W
0145F0: 48 49 4C 45 20 21 66 72 6F 6D 20 4E 45 20 31 33 HILE !from NE 13
014600: 20 44 4F 20 24 28 20 73 6F 66 61 72 20 3A 3D 20 DO $( sofar :=
014610: 73 6F 66 61 72 20 2B 20 31 20 3B 20 66 72 6F 6D sofar + 1 ; from
014620: 20 3A 3D 20 66 72 6F 6D 20 2B 20 31 20 24 29 0D := from + 1 $).
014630: 0A 20 20 52 45 53 55 4C 54 49 53 20 73 6F 66 61 . RESULTIS sofa
014640: 72 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 2F 2A 20 r..$)......../*
014650: 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C This routine wil
014660: 6C 20 70 72 69 6E 74 20 6E 75 6D 20 63 68 61 72 l print num char
014670: 61 63 74 65 72 73 20 6F 66 20 6C 69 6E 65 20 61 acters of line a
014680: 6E 64 20 74 68 65 6E 20 66 69 6C 6C 20 74 68 65 nd then fill the
014690: 20 72 65 73 74 20 6F 66 20 74 68 65 0D 0A 20 20 rest of the..
0146A0: 20 6C 69 6E 65 20 77 69 74 68 20 73 70 61 63 65 line with space
0146B0: 73 20 2A 2F 0D 0A 0D 0A 41 4E 44 20 70 72 69 6E s */....AND prin
0146C0: 74 63 6C 72 28 6C 69 6E 65 2C 6E 75 6D 29 20 42 tclr(line,num) B
0146D0: 45 0D 0A 0D 0A 24 28 0D 0A 20 20 46 4F 52 20 61 E....$(.. FOR a
0146E0: 20 3D 20 30 20 54 4F 20 6E 75 6D 2D 31 20 44 4F = 0 TO num-1 DO
0146F0: 20 77 72 63 68 28 6C 69 6E 65 21 61 29 0D 0A 20 wrch(line!a)..
014700: 20 44 45 46 41 55 4C 54 3A 0D 0A 20 20 20 20 20 DEFAULT:..
014710: 20 78 20 3A 3D 20 76 61 6C 69 64 61 74 65 28 62 x := validate(b
014720: 75 66 66 65 72 2C 78 29 0D 0A 20 20 20 20 20 20 uffer,x)..
014730: 54 45 53 54 20 62 75 66 66 65 72 21 30 20 3C 20 TEST buffer!0 <
014740: 38 30 20 54 48 45 4E 0D 0A 20 20 20 20 20 20 24 80 THEN.. $
014750: 28 0D 0A 20 20 20 20 20 20 20 20 62 69 6E 73 65 (.. binse
014760: 72 74 28 62 75 66 66 65 72 2C 78 2C 6B 65 79 29 rt(buffer,x,key)
014770: 0D 0A 20 20 20 20 20 20 20 20 72 65 70 72 69 6E .. reprin
014780: 74 28 62 75 66 66 65 72 2C 78 29 0D 0A 20 20 20 t(buffer,x)..
014790: 20 20 20 20 20 49 46 20 69 6E 73 65 72 74 20 4C IF insert L
0147A0: 4F 47 4F 52 20 78 3C 62 75 66 66 65 72 21 30 20 OGOR x<buffer!0
0147B0: 54 48 45 4E 20 78 20 3A 3D 20 78 20 2B 20 31 0D THEN x := x + 1.
0147C0: 0A 20 20 20 20 20 20 24 29 0D 0A 20 20 20 20 20 . $)..
0147D0: 20 45 4C 53 45 20 62 65 65 70 28 29 0D 0A 20 20 ELSE beep()..
0147E0: 20 20 20 20 45 4E 44 43 41 53 45 20 3B 0D 0A 20 ENDCASE ;..
0147F0: 20 20 20 43 41 53 45 20 69 67 6E 6F 72 65 3A 0D CASE ignore:.
014800: 0A 20 20 24 29 0D 0A 20 20 52 45 53 55 4C 54 49 . $).. RESULTI
014810: 53 20 46 41 4C 53 45 0D 0A 24 29 0D 0A 0D 0A 0D S FALSE..$).....
014820: 0A 0D 0A 2F 2A 20 54 68 69 73 20 69 73 20 74 68 .../* This is th
014830: 65 20 62 75 66 66 65 72 20 65 64 69 74 20 72 6F e buffer edit ro
014840: 75 74 69 6E 65 20 2A 2F 0D 0A 0D 0A 4C 45 54 20 utine */....LET
014850: 62 75 66 66 65 72 28 6C 69 6E 65 29 20 3D 20 56 buffer(line) = V
014860: 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 ALOF....$(.. LE
014870: 54 20 6B 65 79 70 72 65 73 73 20 3D 20 30 0D 0A T keypress = 0..
014880: 20 20 24 28 0D 0A 20 20 20 20 74 61 62 28 36 2C $(.. tab(6,
014890: 73 63 72 68 65 69 67 68 74 29 20 3B 20 77 72 69 scrheight) ; wri
0148A0: 74 65 66 28 22 25 49 34 22 2C 6C 69 6E 65 6E 75 tef("%I4",linenu
0148B0: 6D 62 65 72 29 0D 0A 20 20 20 20 74 61 62 28 31 mber).. tab(1
0148C0: 38 2C 73 63 72 68 65 69 67 68 74 29 20 3B 20 77 8,scrheight) ; w
0148D0: 72 69 74 65 66 28 22 25 49 32 22 2C 78 29 0D 0A ritef("%I2",x)..
0148E0: 20 20 20 20 74 61 62 28 78 2C 79 29 0D 0A 20 20 tab(x,y)..
0148F0: 20 20 63 75 72 73 65 6E 28 29 0D 0A 20 20 20 20 cursen()..
014900: 20 73 70 61 63 65 73 28 37 39 2D 6E 75 6D 29 0D spaces(79-num).
014910: 0A 24 29 0D 0A 0D 0A 0D 0A 2F 2A 20 54 68 69 73 .$)....../* This
014920: 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 70 72 routine will pr
014930: 69 6E 74 20 65 69 74 68 65 72 20 74 68 65 20 77 int either the w
014940: 68 6F 6C 65 20 62 75 66 66 65 72 20 66 72 6F 6D hole buffer from
014950: 20 78 20 6F 6E 20 6F 72 20 6A 75 73 74 20 74 68 x on or just th
014960: 65 20 6E 65 77 0D 0A 20 20 20 63 68 61 72 61 63 e new.. charac
014970: 74 65 72 20 2A 2F 0D 0A 0D 0A 41 4E 44 20 72 65 ter */....AND re
014980: 70 72 69 6E 74 28 6C 69 6E 65 2C 70 6F 73 29 20 print(line,pos)
014990: 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 54 45 53 54 BE....$(.. TEST
0149A0: 20 69 6E 73 65 72 74 20 54 48 45 4E 20 46 4F 52 insert THEN FOR
0149B0: 20 61 20 3D 20 70 6F 73 20 54 4F 20 6C 69 6E 65 a = pos TO line
0149C0: 21 30 2D 31 20 44 4F 20 77 72 63 68 28 6C 69 6E !0-1 DO wrch(lin
0149D0: 65 21 61 29 0D 0A 20 20 45 4C 53 45 20 77 72 63 e!a).. ELSE wrc
0149E0: 68 28 6C 69 6E 65 21 70 6F 73 29 0D 0A 24 29 0D h(line!pos)..$).
0149F0: 0A 0D 0A 0D 0A 0D 0A 2F 2A 20 54 68 69 73 20 72 ......./* This r
014A00: 6F 75 74 69 6E 65 20 77 69 6C 6C 20 72 65 6D 6F outine will remo
014A10: 76 65 20 61 20 63 68 61 72 61 63 74 65 72 20 66 ve a character f
014A20: 72 6F 6D 20 74 68 65 20 62 75 66 66 65 72 20 2A rom the buffer *
014A30: 2F 0D 0A 0D 0A 41 4E 44 20 64 65 6C 65 74 65 28 /....AND delete(
014A40: 6C 69 6E 65 2C 78 29 20 42 45 0D 0A 0D 0A 24 28 line,x) BE....$(
014A50: 0D 0A 20 20 54 45 53 54 20 69 6E 73 65 72 74 20 .. TEST insert
014A60: 54 48 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 THEN.. $(..
014A70: 6C 69 6E 65 21 30 20 3A 3D 20 6C 69 6E 65 21 30 line!0 := line!0
014A80: 20 2D 20 31 0D 0A 20 20 20 20 46 4F 52 20 61 20 - 1.. FOR a
014A90: 3D 20 78 20 54 4F 20 6C 69 6E 65 21 30 20 44 4F = x TO line!0 DO
014AA0: 20 6C 69 6E 65 21 61 20 3A 3D 20 6C 69 6E 65 21 line!a := line!
014AB0: 28 61 2B 31 29 0D 0A 20 20 24 29 0D 0A 20 20 45 (a+1).. $).. E
014AC0: 4C 53 45 20 6C 69 6E 65 21 78 20 3A 3D 20 27 20 LSE line!x := '
014AD0: 27 0D 0A 24 29 0D 0A 0D 0A 0D 0A 2F 2A 20 54 68 '..$)....../* Th
014AE0: 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 is routine will
014AF0: 69 6E 73 65 72 74 20 61 20 63 68 61 72 61 63 74 insert a charact
014B00: 6B 65 79 70 72 65 73 73 20 3A 3D 20 72 64 63 68 keypress := rdch
014B10: 28 29 0D 0A 20 20 20 20 63 75 72 73 64 69 28 29 ().. cursdi()
014B20: 0D 0A 20 20 20 20 6B 65 79 70 72 65 73 73 20 3A .. keypress :
014B30: 3D 20 62 75 69 6C 64 62 75 66 66 28 6C 69 6E 65 = buildbuff(line
014B40: 2C 6B 65 79 70 72 65 73 73 29 0D 0A 20 20 24 29 ,keypress).. $)
014B50: 20 52 45 50 45 41 54 55 4E 54 49 4C 20 6B 65 79 REPEATUNTIL key
014B60: 70 72 65 73 73 0D 0A 20 20 70 72 65 76 21 79 20 press.. prev!y
014B70: 3A 3D 20 6C 69 6E 65 6C 65 6E 67 74 68 28 6C 69 := linelength(li
014B80: 6E 65 2B 31 29 2D 31 0D 0A 20 20 52 45 53 55 4C ne+1)-1.. RESUL
014B90: 54 49 53 20 6B 65 79 70 72 65 73 73 0D 0A 24 29 TIS keypress..$)
014BA0: 0D 0A 0D 0A 0D 0A 41 4E 44 20 69 6E 69 74 62 75 ......AND initbu
014BB0: 66 66 28 6C 69 6E 65 2C 66 72 6F 6D 29 20 42 45 ff(line,from) BE
014BC0: 0D 0A 0D 0A 24 28 0D 0A 20 20 21 6C 69 6E 65 20 ....$(.. !line
014BD0: 3A 3D 20 30 0D 0A 20 20 24 28 0D 0A 20 20 20 20 := 0.. $(..
014BE0: 21 6C 69 6E 65 20 3A 3D 20 21 6C 69 6E 65 20 2B !line := !line +
014BF0: 20 31 0D 0A 20 20 20 20 6C 69 6E 65 21 28 21 6C 1.. line!(!l
014C00: 69 6E 65 29 20 3A 3D 20 74 65 78 74 73 74 61 72 ine) := textstar
014C10: 74 25 66 72 6F 6D 0D 0A 20 20 20 20 66 72 6F 6D t%from.. from
014C20: 20 3A 3D 20 66 72 6F 6D 20 2B 20 31 0D 0A 20 20 := from + 1..
014C30: 24 29 20 52 45 50 45 41 54 55 4E 54 49 4C 20 74 $) REPEATUNTIL t
014C40: 65 78 74 73 74 61 72 74 25 28 66 72 6F 6D 2D 31 extstart%(from-1
014C50: 29 20 3D 20 31 33 0D 0A 24 29 0D 0A 0D 0A 0D 0A ) = 13..$)......
014C60: 0D 0A 0D 0A 2F 2A 20 54 68 65 20 61 62 6F 76 65 ..../* The above
014C70: 20 72 6F 75 74 69 6E 65 73 20 77 6F 72 6B 20 77 routines work w
014C80: 69 74 68 20 70 6F 69 6E 74 65 72 73 20 61 6E 64 ith pointers and
014C90: 20 77 6F 72 64 73 2E 20 54 68 65 20 6E 65 78 74 words. The next
014CA0: 20 73 65 74 20 6F 66 20 72 6F 75 74 69 6E 65 73 set of routines
014CB0: 0D 0A 20 20 20 77 6F 72 6B 20 77 69 74 68 20 62 .. work with b
014CC0: 79 74 65 73 20 61 6E 64 20 61 72 72 61 79 20 69 ytes and array i
014CD0: 6E 64 69 63 65 73 20 2A 2F 0D 0A 0D 0A 0D 0A 4C ndices */......L
014CE0: 45 54 20 6C 69 6E 65 6C 65 6E 67 74 68 28 66 72 ET linelength(fr
014CF0: 6F 6D 29 20 3D 20 56 41 4C 4F 46 0D 0A 0D 0A 24 om) = VALOF....$
014D00: 65 72 20 69 6E 74 6F 20 74 68 65 20 62 75 66 66 er into the buff
014D10: 65 72 20 61 74 20 74 68 65 20 70 6F 69 6E 74 20 er at the point
014D20: 67 69 76 65 6E 20 2A 2F 0D 0A 0D 0A 41 4E 44 20 given */....AND
014D30: 62 69 6E 73 65 72 74 28 6C 69 6E 65 2C 70 6F 73 binsert(line,pos
014D40: 69 74 69 6F 6E 2C 63 68 61 72 61 63 74 65 72 29 ition,character)
014D50: 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 54 45 53 BE....$(.. TES
014D60: 54 20 69 6E 73 65 72 74 20 54 48 45 4E 0D 0A 20 T insert THEN..
014D70: 20 24 28 0D 0A 20 20 20 20 46 4F 52 20 61 20 3D $(.. FOR a =
014D80: 20 6C 69 6E 65 21 30 20 54 4F 20 70 6F 73 69 74 line!0 TO posit
014D90: 69 6F 6E 20 42 59 20 2D 31 20 6C 69 6E 65 21 28 ion BY -1 line!(
014DA0: 61 2B 31 29 20 3A 3D 20 6C 69 6E 65 21 61 0D 0A a+1) := line!a..
014DB0: 20 20 20 20 6C 69 6E 65 21 70 6F 73 69 74 69 6F line!positio
014DC0: 6E 20 3A 3D 20 63 68 61 72 61 63 74 65 72 0D 0A n := character..
014DD0: 20 20 20 20 6C 69 6E 65 21 30 20 3A 3D 20 6C 69 line!0 := li
014DE0: 6E 65 21 30 20 2B 20 31 0D 0A 20 20 24 29 0D 0A ne!0 + 1.. $)..
014DF0: 20 20 45 4C 53 45 20 6C 69 6E 65 21 70 6F 73 69 ELSE line!posi
014E00: 74 69 6F 6E 20 3A 3D 20 63 68 61 72 61 63 74 65 tion := characte
014E10: 72 0D 0A 24 29 0D 0A 0D 0A 0D 0A 41 4E 44 20 76 r..$)......AND v
014E20: 61 6C 69 64 61 74 65 28 6C 69 6E 65 2C 78 29 20 alidate(line,x)
014E30: 3D 20 56 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 = VALOF....$(..
014E40: 20 49 46 20 78 20 3C 3D 20 6C 69 6E 65 21 30 20 IF x <= line!0
014E50: 54 48 45 4E 20 52 45 53 55 4C 54 49 53 20 78 0D THEN RESULTIS x.
014E60: 0A 20 20 74 61 62 28 6C 69 6E 65 21 30 2C 79 29 . tab(line!0,y)
014E70: 0D 0A 20 20 52 45 53 55 4C 54 49 53 20 6C 69 6E .. RESULTIS lin
014E80: 65 21 30 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 2F e!0..$)......../
014E90: 2A 0D 0A 0D 0A 20 20 54 68 65 20 6C 69 6E 65 20 *.... The line
014EA0: 67 69 76 65 6E 20 69 73 20 69 6E 20 62 75 66 66 given is in buff
014EB0: 65 72 20 69 6E 20 74 68 65 20 66 6F 6C 6C 6F 77 er in the follow
014EC0: 69 6E 67 20 66 6F 72 6D 61 74 0D 0A 0D 0A 20 20 ing format....
014ED0: 20 30 3A 20 6C 65 6E 67 74 68 0D 0A 20 20 20 31 0: length.. 1
014EE0: 2D 20 73 74 72 69 6E 67 20 69 6E 20 75 6E 70 61 - string in unpa
014EF0: 63 6B 65 64 20 66 6F 72 6D 61 74 20 66 6F 6C 6C cked format foll
014F00: 28 0D 0A 20 20 4C 45 54 20 73 6F 66 61 72 20 3D (.. LET sofar =
014F10: 20 31 0D 0A 20 20 57 48 49 4C 45 20 74 65 78 74 1.. WHILE text
014F20: 73 74 61 72 74 25 66 72 6F 6D 20 4E 45 20 31 33 start%from NE 13
014F30: 20 44 4F 20 24 28 20 73 6F 66 61 72 20 3A 3D 20 DO $( sofar :=
014F40: 73 6F 66 61 72 20 2B 20 31 20 3B 20 66 72 6F 6D sofar + 1 ; from
014F50: 20 3A 3D 20 66 72 6F 6D 20 2B 20 31 20 24 29 0D := from + 1 $).
014F60: 0A 20 20 52 45 53 55 4C 54 49 53 20 73 6F 66 61 . RESULTIS sofa
014F70: 72 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 4C 45 54 r..$)........LET
014F80: 20 77 72 69 74 65 28 66 72 6F 6D 2C 78 2C 79 29 write(from,x,y)
014F90: 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 74 61 62 BE....$(.. tab
014FA0: 28 78 2C 79 29 0D 0A 20 20 46 4F 52 20 61 20 3D (x,y).. FOR a =
014FB0: 20 66 72 6F 6D 20 54 4F 20 66 72 6F 6D 20 2B 20 from TO from +
014FC0: 6C 69 6E 65 6C 65 6E 67 74 68 28 66 72 6F 6D 29 linelength(from)
014FD0: 20 2D 20 32 20 44 4F 20 77 72 63 68 28 74 65 78 - 2 DO wrch(tex
014FE0: 74 73 74 61 72 74 25 61 29 0D 0A 20 20 70 72 65 tstart%a).. pre
014FF0: 76 21 79 20 3A 3D 20 6C 69 6E 65 6C 65 6E 67 74 v!y := linelengt
015000: 68 28 66 72 6F 6D 29 20 2D 20 31 0D 0A 24 29 0D h(from) - 1..$).
015010: 0A 0D 0A 0D 0A 4C 45 54 20 73 74 61 74 75 73 28 .....LET status(
015020: 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 74 61 ) BE....$(.. ta
015030: 62 28 31 2C 73 63 72 68 65 69 67 68 74 29 0D 0A b(1,scrheight)..
015040: 20 20 54 45 53 54 20 76 65 72 3D 34 20 54 48 45 TEST ver=4 THE
015050: 4E 0D 0A 20 20 20 20 77 72 69 74 65 66 28 22 4C N.. writef("L
015060: 69 6E 65 3A 25 49 34 20 43 6F 6C 75 6D 6E 3A 25 ine:%I4 Column:%
015070: 49 32 20 28 53 54 4F 50 20 74 6F 20 6D 65 6E 75 I2 (STOP to menu
015080: 29 22 2C 6C 69 6E 65 6E 75 6D 62 65 72 2C 78 29 )",linenumber,x)
015090: 0D 0A 20 20 45 4C 53 45 0D 0A 20 20 20 20 77 72 .. ELSE.. wr
0150A0: 69 74 65 66 28 22 4C 69 6E 65 3A 25 49 34 20 43 itef("Line:%I4 C
0150B0: 6F 6C 75 6D 6E 3A 25 49 32 20 28 45 53 43 20 74 olumn:%I2 (ESC t
0150C0: 6F 20 6D 65 6E 75 29 22 2C 6C 69 6E 65 6E 75 6D o menu)",linenum
0150D0: 62 65 72 2C 78 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A ber,x)..$)......
0150E0: 0D 0A 4C 45 54 20 63 6C 73 28 29 20 42 45 0D 0A ..LET cls() BE..
0150F0: 0D 0A 24 28 0D 0A 20 20 63 6C 65 61 72 73 63 72 ..$(.. clearscr
015100: 6F 77 65 64 20 62 79 20 31 33 0D 0A 0D 0A 20 20 owed by 13....
015110: 54 68 65 20 72 6F 75 74 69 6E 65 20 72 65 61 63 The routine reac
015120: 74 73 20 74 6F 20 6B 65 79 20 61 6E 64 20 74 61 ts to key and ta
015130: 6B 65 73 20 74 68 65 20 61 70 70 72 6F 70 72 69 kes the appropri
015140: 61 74 65 20 61 63 74 69 6F 6E 0D 0A 0D 0A 2A 2F ate action....*/
015150: 0D 0A 0D 0A 41 4E 44 20 62 75 69 6C 64 62 75 66 ....AND buildbuf
015160: 66 28 62 75 66 66 65 72 2C 6B 65 79 29 20 3D 20 f(buffer,key) =
015170: 56 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 74 VALOF....$(.. t
015180: 61 62 28 78 2C 79 29 0D 0A 20 20 53 57 49 54 43 ab(x,y).. SWITC
015190: 48 4F 4E 20 6B 65 79 20 49 4E 54 4F 0D 0A 20 20 HON key INTO..
0151A0: 24 28 0D 0A 20 20 20 20 43 41 53 45 20 31 33 3A $(.. CASE 13:
0151B0: 0D 0A 20 20 20 20 20 20 78 20 3A 3D 20 76 61 6C .. x := val
0151C0: 69 64 61 74 65 28 62 75 66 66 65 72 2C 78 29 0D idate(buffer,x).
0151D0: 0A 20 20 20 20 20 20 62 69 6E 73 65 72 74 28 62 . binsert(b
0151E0: 75 66 66 65 72 2C 78 2C 31 33 29 0D 0A 20 20 20 uffer,x,13)..
0151F0: 20 20 20 77 72 63 68 28 31 33 29 0D 0A 20 20 20 wrch(13)..
015200: 20 20 20 70 72 69 6E 74 63 6C 72 28 62 75 66 66 printclr(buff
015210: 65 72 2B 31 2C 6C 69 6E 65 6C 65 6E 67 74 68 28 er+1,linelength(
015220: 62 75 66 66 65 72 2B 31 29 2D 31 29 20 3B 20 52 buffer+1)-1) ; R
015230: 45 53 55 4C 54 49 53 20 31 33 0D 0A 20 20 20 20 ESULTIS 13..
015240: 43 41 53 45 20 63 75 72 73 6C 65 66 74 3A 20 43 CASE cursleft: C
015250: 41 53 45 20 73 63 75 72 73 6C 65 66 74 3A 0D 0A ASE scursleft:..
015260: 20 20 20 20 20 20 54 45 53 54 20 78 3E 31 20 54 TEST x>1 T
015270: 48 45 4E 0D 0A 20 20 20 20 20 20 20 20 78 20 3A HEN.. x :
015280: 3D 20 78 20 2D 20 31 0D 0A 20 20 20 20 20 20 45 = x - 1.. E
015290: 4C 53 45 20 62 65 65 70 28 29 0D 0A 20 20 20 20 LSE beep()..
0152A0: 20 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 43 ENDCASE.. C
0152B0: 41 53 45 20 63 75 72 73 72 69 67 68 74 3A 20 43 ASE cursright: C
0152C0: 41 53 45 20 73 63 75 72 73 72 69 67 68 74 3A 0D ASE scursright:.
0152D0: 0A 20 20 20 20 20 20 54 45 53 54 20 78 20 3C 3D . TEST x <=
0152E0: 20 62 75 66 66 65 72 21 30 2D 31 20 54 48 45 4E buffer!0-1 THEN
0152F0: 0D 0A 20 20 20 20 20 20 20 20 78 20 3A 3D 20 78 .. x := x
015300: 28 29 0D 0A 20 20 63 75 72 73 6F 6E 28 29 20 3B ().. curson() ;
015310: 20 63 75 72 73 64 69 28 29 0D 0A 20 20 46 4F 52 cursdi().. FOR
015320: 20 61 20 3D 20 31 20 54 4F 20 73 63 72 68 65 69 a = 1 TO scrhei
015330: 67 68 74 2D 31 20 44 4F 20 70 72 65 76 21 61 20 ght-1 DO prev!a
015340: 3A 3D 20 30 0D 0A 20 20 73 74 61 74 75 73 28 29 := 0.. status()
015350: 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A ..$)............
015360: 2F 2A 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 /* This routine
015370: 77 69 6C 6C 20 6D 6F 76 65 20 74 68 65 20 74 65 will move the te
015380: 78 74 20 6F 6E 20 74 68 65 20 73 63 72 65 65 6E xt on the screen
015390: 20 64 6F 77 6E 20 61 20 6C 69 6E 65 20 61 6E 64 down a line and
0153A0: 20 61 6C 74 65 72 20 74 68 65 0D 0A 20 20 20 70 alter the.. p
0153B0: 72 65 76 69 6F 75 73 20 61 72 72 61 79 20 2A 2F revious array */
0153C0: 0D 0A 0D 0A 4C 45 54 20 64 6F 77 6E 28 29 20 42 ....LET down() B
0153D0: 45 0D 0A 0D 0A 24 28 0D 0A 20 20 74 61 62 28 31 E....$(.. tab(1
0153E0: 2C 31 29 20 3B 20 72 65 76 6C 66 28 29 20 3B 20 ,1) ; revlf() ;
0153F0: 77 72 63 68 28 31 33 29 0D 0A 20 20 73 74 61 74 wrch(13).. stat
015400: 75 73 28 29 20 3B 20 73 70 61 63 65 73 28 70 72 us() ; spaces(pr
015410: 65 76 21 28 73 63 72 68 65 69 67 68 74 2D 31 29 ev!(scrheight-1)
015420: 2D 33 33 29 0D 0A 20 20 46 4F 52 20 61 20 3D 20 -33).. FOR a =
015430: 73 63 72 68 65 69 67 68 74 2D 31 20 54 4F 20 32 scrheight-1 TO 2
015440: 20 42 59 20 2D 31 20 44 4F 20 70 72 65 76 21 61 BY -1 DO prev!a
015450: 20 3A 3D 20 70 72 65 76 21 28 61 2D 31 29 0D 0A := prev!(a-1)..
015460: 20 20 70 72 65 76 21 31 20 3A 3D 20 30 0D 0A 24 prev!1 := 0..$
015470: 29 0D 0A 0D 0A 41 4E 44 20 72 65 76 6C 66 28 29 )....AND revlf()
015480: 20 42 45 0D 0A 24 28 0D 0A 20 20 54 45 53 54 20 BE..$(.. TEST
015490: 76 65 72 3D 32 20 54 48 45 4E 0D 0A 20 20 20 20 ver=2 THEN..
0154A0: 77 72 63 68 28 31 31 29 0D 0A 20 20 45 4C 53 45 wrch(11).. ELSE
0154B0: 0D 0A 20 20 24 28 0D 0A 20 20 20 20 65 73 63 63 .. $(.. escc
0154C0: 6F 64 65 28 27 49 27 29 0D 0A 20 20 24 29 0D 0A ode('I').. $)..
0154D0: 24 29 0D 0A 0D 0A 2F 2A 20 54 68 69 73 20 72 6F $)..../* This ro
0154E0: 75 74 69 6E 65 20 77 69 6C 6C 20 6D 6F 76 65 20 utine will move
0154F0: 74 68 65 20 74 65 78 74 20 75 70 20 6F 6E 65 20 the text up one
015500: 20 2B 20 31 0D 0A 20 20 20 20 20 20 45 4C 53 45 + 1.. ELSE
015510: 20 62 65 65 70 28 29 0D 0A 20 20 20 20 20 20 45 beep().. E
015520: 4E 44 43 41 53 45 0D 0A 20 20 20 20 43 41 53 45 NDCASE.. CASE
015530: 20 63 63 75 72 73 6C 65 66 74 3A 20 20 78 20 3A ccursleft: x :
015540: 3D 20 31 20 3B 20 45 4E 44 43 41 53 45 0D 0A 20 = 1 ; ENDCASE..
015550: 20 20 20 43 41 53 45 20 63 63 75 72 73 72 69 67 CASE ccursrig
015560: 68 74 3A 20 78 20 3A 3D 20 62 75 66 66 65 72 21 ht: x := buffer!
015570: 30 20 3B 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 0 ; ENDCASE..
015580: 20 43 41 53 45 20 73 63 75 72 73 75 70 3A 20 43 CASE scursup: C
015590: 41 53 45 20 73 63 75 72 73 64 6F 77 6E 3A 0D 0A ASE scursdown:..
0155A0: 20 20 20 20 43 41 53 45 20 63 63 75 72 73 75 70 CASE ccursup
0155B0: 3A 20 43 41 53 45 20 63 63 75 72 73 64 6F 77 6E : CASE ccursdown
0155C0: 3A 0D 0A 20 20 20 20 43 41 53 45 20 63 6F 70 65 :.. CASE cope
0155D0: 6E 73 71 3A 20 43 41 53 45 20 63 63 6C 6F 73 65 nsq: CASE cclose
0155E0: 73 71 3A 0D 0A 20 20 20 20 43 41 53 45 20 65 73 sq:.. CASE es
0155F0: 63 61 70 65 3A 20 43 41 53 45 20 73 74 6F 70 3A cape: CASE stop:
015600: 20 43 41 53 45 20 63 75 72 73 75 70 3A 20 43 41 CASE cursup: CA
015610: 53 45 20 63 75 72 73 64 6F 77 6E 3A 20 52 45 53 SE cursdown: RES
015620: 55 4C 54 49 53 20 6B 65 79 0D 0A 20 20 20 20 43 ULTIS key.. C
015630: 41 53 45 20 31 32 37 3A 0D 0A 20 20 20 20 20 20 ASE 127:..
015640: 78 20 3A 3D 20 76 61 6C 69 64 61 74 65 28 62 75 x := validate(bu
015650: 66 66 65 72 2C 78 29 0D 0A 20 20 20 20 20 20 49 ffer,x).. I
015660: 46 20 78 20 3D 20 31 20 54 48 45 4E 20 52 45 53 F x = 1 THEN RES
015670: 55 4C 54 49 53 20 31 32 37 0D 0A 20 20 20 20 20 ULTIS 127..
015680: 20 78 20 3A 3D 20 78 20 2D 20 31 0D 0A 20 20 20 x := x - 1..
015690: 20 20 20 74 61 62 28 78 2C 79 29 0D 0A 20 20 20 tab(x,y)..
0156A0: 20 20 20 64 65 6C 65 74 65 28 62 75 66 66 65 72 delete(buffer
0156B0: 2C 78 29 0D 0A 20 20 20 20 20 20 72 65 70 72 69 ,x).. repri
0156C0: 6E 74 28 62 75 66 66 65 72 2C 78 29 0D 0A 20 20 nt(buffer,x)..
0156D0: 20 20 20 20 49 46 20 69 6E 73 65 72 74 20 54 48 IF insert TH
0156E0: 45 4E 20 77 72 63 68 28 27 20 27 29 0D 0A 20 20 EN wrch(' ')..
0156F0: 20 20 20 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 ENDCASE..
015700: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
015710: 12 00 01 00 02 09 4E E5 12 00 C1 02 00 00 00 02 ......N.........
015720: 12 00 C6 02 00 00 00 02 12 00 C2 02 00 00 00 02 ................
015730: 12 00 C7 02 00 00 00 02 12 00 C3 02 00 00 00 02 ................
015740: 12 00 C8 02 00 00 00 02 12 00 C4 02 00 00 00 02 ................
015750: 12 00 C9 02 00 00 00 02 12 00 C5 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: 6C 69 6E 65 20 61 6E 64 20 61 6C 74 65 72 20 74 line and alter t
015810: 68 65 20 70 72 65 76 69 6F 75 73 20 61 72 72 61 he previous arra
015820: 79 20 2A 2F 0D 0A 0D 0A 4C 45 54 20 75 70 28 29 y */....LET up()
015830: 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 74 61 62 BE....$(.. tab
015840: 28 31 2C 73 63 72 68 65 69 67 68 74 29 20 3B 20 (1,scrheight) ;
015850: 73 70 61 63 65 73 28 34 30 29 0D 0A 20 20 77 72 spaces(40).. wr
015860: 63 68 28 31 30 29 20 3B 20 77 72 63 68 28 31 33 ch(10) ; wrch(13
015870: 29 0D 0A 20 20 46 4F 52 20 61 20 3D 20 31 20 54 ).. FOR a = 1 T
015880: 4F 20 73 63 72 68 65 69 67 68 74 2D 32 20 44 4F O scrheight-2 DO
015890: 20 70 72 65 76 21 61 20 3A 3D 20 70 72 65 76 21 prev!a := prev!
0158A0: 28 61 2B 31 29 0D 0A 20 20 70 72 65 76 21 28 73 (a+1).. prev!(s
0158B0: 63 72 68 65 69 67 68 74 2D 31 29 20 3A 3D 20 30 crheight-1) := 0
0158C0: 0D 0A 20 20 73 74 61 74 75 73 28 29 0D 0A 24 29 .. status()..$)
0158D0: 0D 0A 0D 0A 0D 0A 0D 0A 2F 2A 0D 0A 20 20 20 54 ......../*.. T
0158E0: 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C his routine will
0158F0: 20 72 65 70 72 69 6E 74 20 74 68 65 20 73 63 72 reprint the scr
015900: 65 65 6E 20 66 72 6F 6D 20 74 68 65 20 79 20 70 een from the y p
015910: 6F 73 69 74 69 6F 6E 20 61 6E 64 20 74 65 78 74 osition and text
015920: 20 70 6F 73 69 74 69 6F 6E 0D 0A 20 20 20 67 69 position.. gi
015930: 76 65 6E 2E 0D 0A 2A 2F 0D 0A 0D 0A 4C 45 54 20 ven...*/....LET
015940: 73 63 72 65 65 6E 28 66 72 6F 6D 2C 79 70 6F 73 screen(from,ypos
015950: 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 46 4F ) BE....$(.. FO
015960: 52 20 79 20 3D 20 79 70 6F 73 20 54 4F 20 73 63 R y = ypos TO sc
015970: 72 68 65 69 67 68 74 2D 31 20 44 4F 0D 0A 20 20 rheight-1 DO..
015980: 24 28 0D 0A 20 20 20 20 4C 45 54 20 6C 20 3D 20 $(.. LET l =
015990: 30 0D 0A 20 20 20 20 74 61 62 28 31 2C 79 29 0D 0.. tab(1,y).
0159A0: 0A 20 20 20 20 49 46 20 66 72 6F 6D 20 3E 20 74 . IF from > t
0159B0: 65 78 74 65 6E 64 20 54 48 45 4E 20 24 28 20 73 extend THEN $( s
0159C0: 70 61 63 65 73 28 38 30 29 20 3B 20 70 72 65 76 paces(80) ; prev
0159D0: 21 79 20 3A 3D 20 30 20 3B 20 42 52 45 41 4B 20 !y := 0 ; BREAK
0159E0: 24 29 0D 0A 20 20 20 20 6C 20 3A 3D 20 6C 69 6E $).. l := lin
0159F0: 65 6C 65 6E 67 74 68 28 66 72 6F 6D 29 20 2D 20 elength(from) -
015A00: 73 74 61 72 74 25 30 20 3A 3D 20 31 33 0D 0A 20 start%0 := 13..
015A10: 20 20 20 63 68 61 72 20 3A 3D 20 72 65 61 64 63 char := readc
015A20: 68 28 66 69 6C 65 29 0D 0A 20 20 20 20 55 4E 54 h(file).. UNT
015A30: 49 4C 20 63 68 61 72 20 3D 20 73 6F 66 74 65 6F IL char = softeo
015A40: 66 63 68 20 4C 4F 47 4F 52 20 63 68 61 72 20 3D fch LOGOR char =
015A50: 20 65 6E 64 73 74 72 65 61 6D 63 68 20 4C 4F 47 endstreamch LOG
015A60: 4F 52 20 74 65 78 74 65 6E 64 20 3D 20 6D 61 78 OR textend = max
015A70: 63 68 72 20 44 4F 0D 0A 20 20 20 20 24 28 0D 0A chr DO.. $(..
015A80: 20 20 20 20 20 20 55 4E 4C 45 53 53 20 63 68 61 UNLESS cha
015A90: 72 20 3D 20 31 30 20 54 48 45 4E 0D 0A 20 20 20 r = 10 THEN..
015AA0: 20 20 20 24 28 0D 0A 20 20 20 20 20 20 20 20 74 $(.. t
015AB0: 65 78 74 65 6E 64 20 3A 3D 20 74 65 78 74 65 6E extend := texten
015AC0: 64 20 2B 20 31 0D 0A 20 20 20 20 20 20 20 20 74 d + 1.. t
015AD0: 65 78 74 73 74 61 72 74 25 74 65 78 74 65 6E 64 extstart%textend
015AE0: 20 3A 3D 20 63 68 61 72 0D 0A 20 20 20 20 20 20 := char..
015AF0: 24 29 0D 0A 20 20 20 20 20 20 63 68 61 72 20 3A $).. char :
015B00: 3D 20 72 65 61 64 63 68 28 66 69 6C 65 29 0D 0A = readch(file)..
015B10: 20 20 20 20 24 29 0D 0A 20 20 20 20 55 4E 4C 45 $).. UNLE
015B20: 53 53 20 74 65 78 74 73 74 61 72 74 25 74 65 78 SS textstart%tex
015B30: 74 65 6E 64 20 3D 20 31 33 20 44 4F 0D 0A 20 20 tend = 13 DO..
015B40: 20 20 24 28 0D 0A 20 20 20 20 20 20 74 65 78 74 $(.. text
015B50: 65 6E 64 20 3A 3D 20 74 65 78 74 65 6E 64 20 2B end := textend +
015B60: 20 31 0D 0A 20 20 20 20 20 20 74 65 78 74 73 74 1.. textst
015B70: 61 72 74 25 74 65 78 74 65 6E 64 20 3A 3D 20 31 art%textend := 1
015B80: 33 20 20 20 20 0D 0A 20 20 20 20 24 29 0D 0A 20 3 .. $)..
015B90: 20 20 20 49 46 20 74 65 78 74 65 6E 64 20 3E 3D IF textend >=
015BA0: 20 6D 61 78 63 68 72 20 54 48 45 4E 0D 0A 20 20 maxchr THEN..
015BB0: 20 20 24 28 0D 0A 20 20 20 20 20 20 74 65 78 74 $(.. text
015BC0: 65 6E 64 20 3A 3D 20 74 65 78 74 65 6E 64 20 2D end := textend -
015BD0: 20 31 0D 0A 20 20 20 20 20 20 74 65 78 74 73 74 1.. textst
015BE0: 61 72 74 25 74 65 78 74 65 6E 64 20 3A 3D 20 31 art%textend := 1
015BF0: 33 0D 0A 20 20 20 20 20 20 63 6C 6F 73 65 69 6E 3.. closein
015C00: 31 0D 0A 20 20 20 20 46 4F 52 20 61 20 3D 20 66 1.. FOR a = f
015C10: 72 6F 6D 20 54 4F 20 66 72 6F 6D 20 2B 20 6C 20 rom TO from + l
015C20: 2D 20 31 20 44 4F 20 77 72 63 68 28 74 65 78 74 - 1 DO wrch(text
015C30: 73 74 61 72 74 25 61 29 0D 0A 20 20 20 20 73 70 start%a).. sp
015C40: 61 63 65 73 28 70 72 65 76 21 79 2D 6C 29 0D 0A aces(prev!y-l)..
015C50: 20 20 20 20 70 72 65 76 21 79 20 3A 3D 20 6C 0D prev!y := l.
015C60: 0A 20 20 20 20 66 72 6F 6D 20 3A 3D 20 66 72 6F . from := fro
015C70: 6D 20 2B 20 6C 20 2B 20 31 0D 0A 20 20 24 29 0D m + l + 1.. $).
015C80: 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 4C 45 54 20 66 .$)........LET f
015C90: 6F 72 77 61 72 64 28 70 74 72 29 20 3D 20 56 41 orward(ptr) = VA
015CA0: 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 49 46 20 LOF....$(.. IF
015CB0: 70 74 72 20 2B 20 6C 69 6E 65 6C 65 6E 67 74 68 ptr + linelength
015CC0: 28 70 74 72 29 20 3E 20 74 65 78 74 65 6E 64 20 (ptr) > textend
015CD0: 54 48 45 4E 0D 0A 20 20 20 20 24 28 20 62 65 65 THEN.. $( bee
015CE0: 70 28 29 20 3B 20 52 45 53 55 4C 54 49 53 20 70 p() ; RESULTIS p
015CF0: 74 72 20 24 29 0D 0A 20 20 70 74 72 20 3A 3D 20 tr $).. ptr :=
015D00: 70 74 72 20 2B 20 6C 69 6E 65 6C 65 6E 67 74 68 ptr + linelength
015D10: 28 70 74 72 29 0D 0A 20 20 52 45 53 55 4C 54 49 (ptr).. RESULTI
015D20: 53 20 70 74 72 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 S ptr..$)....AND
015D30: 20 62 61 63 6B 6C 69 6E 65 28 70 74 72 29 20 3D backline(ptr) =
015D40: 20 56 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 VALOF....$(..
015D50: 49 46 20 70 74 72 20 3D 20 30 20 54 48 45 4E 20 IF ptr = 0 THEN
015D60: 24 28 20 62 65 65 70 28 29 20 3B 20 52 45 53 55 $( beep() ; RESU
015D70: 4C 54 49 53 20 70 74 72 20 24 29 0D 0A 20 20 70 LTIS ptr $).. p
015D80: 74 72 20 3A 3D 20 70 74 72 20 2D 20 31 0D 0A 20 tr := ptr - 1..
015D90: 20 20 20 52 45 50 45 41 54 57 48 49 4C 45 20 74 REPEATWHILE t
015DA0: 65 78 74 73 74 61 72 74 25 28 70 74 72 2D 31 29 extstart%(ptr-1)
015DB0: 20 4E 45 20 31 33 20 4C 4F 47 41 4E 44 20 70 74 NE 13 LOGAND pt
015DC0: 72 20 4E 45 20 30 0D 0A 20 20 52 45 53 55 4C 54 r NE 0.. RESULT
015DD0: 49 53 20 70 74 72 0D 0A 24 29 0D 0A 0D 0A 0D 0A IS ptr..$)......
015DE0: 2F 2A 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 /* This routine
015DF0: 77 69 6C 6C 20 72 65 63 6F 6E 73 74 72 75 63 74 will reconstruct
015E00: 28 66 69 6C 65 29 0D 0A 20 20 20 20 20 20 69 6E (file).. in
015E10: 69 74 62 75 66 66 28 6C 69 6E 65 2C 30 29 0D 0A itbuff(line,0)..
015E20: 20 20 20 20 20 20 65 72 72 6F 72 28 22 4E 6F 20 error("No
015E30: 72 6F 6F 6D 22 29 0D 0A 20 20 20 20 24 29 0D 0A room").. $)..
015E40: 20 20 20 20 49 46 20 74 65 78 74 65 6E 64 20 3D IF textend =
015E50: 20 2D 31 20 54 48 45 4E 20 74 65 78 74 65 6E 64 -1 THEN textend
015E60: 20 3A 3D 20 30 0D 0A 20 20 20 20 63 6C 6F 73 65 := 0.. close
015E70: 69 6E 28 66 69 6C 65 29 0D 0A 20 20 20 20 52 45 in(file).. RE
015E80: 53 55 4C 54 49 53 20 54 52 55 45 0D 0A 20 20 24 SULTIS TRUE.. $
015E90: 29 0D 0A 20 20 45 4C 53 45 0D 0A 20 20 24 28 0D ).. ELSE.. $(.
015EA0: 0A 20 20 20 20 77 72 69 74 65 66 28 22 25 53 20 . writef("%S
015EB0: 6E 6F 74 20 66 6F 75 6E 64 22 2C 6E 61 6D 65 29 not found",name)
015EC0: 0D 0A 20 20 20 20 72 64 63 68 28 29 0D 0A 20 20 .. rdch()..
015ED0: 20 20 52 45 53 55 4C 54 49 53 20 46 41 4C 53 45 RESULTIS FALSE
015EE0: 0D 0A 20 20 24 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A .. $)..$)......
015EF0: 41 4E 44 20 73 61 76 65 74 65 78 74 28 29 20 3D AND savetext() =
015F00: 20 56 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 VALOF....$(..
015F10: 4C 45 54 20 6E 61 6D 65 20 3D 20 56 45 43 20 32 LET name = VEC 2
015F20: 30 0D 0A 20 20 4C 45 54 20 64 69 73 63 65 72 72 0.. LET discerr
015F30: 6F 72 28 66 69 6C 65 29 20 3D 20 56 41 4C 4F 46 or(file) = VALOF
015F40: 0D 0A 20 20 24 28 0D 0A 20 20 20 20 77 72 69 74 .. $(.. writ
015F50: 65 73 28 22 44 69 73 63 20 65 72 72 6F 72 2E 20 es("Disc error.
015F60: 48 69 74 20 61 20 6B 65 79 22 29 0D 0A 20 20 20 Hit a key")..
015F70: 20 72 64 63 68 28 29 0D 0A 20 20 20 20 63 6C 6F rdch().. clo
015F80: 73 65 6F 75 74 28 66 69 6C 65 29 0D 0A 20 20 20 seout(file)..
015F90: 20 52 45 53 55 4C 54 49 53 20 46 41 4C 53 45 0D RESULTIS FALSE.
015FA0: 0A 20 20 24 29 0D 0A 20 20 67 65 74 66 69 6C 65 . $).. getfile
015FB0: 6E 61 6D 65 28 32 35 2C 31 39 2C 6E 61 6D 65 29 name(25,19,name)
015FC0: 0D 0A 20 20 54 45 53 54 20 66 69 6E 64 6F 75 74 .. TEST findout
015FD0: 70 75 74 28 6E 61 6D 65 2C 66 69 6C 65 29 20 54 put(name,file) T
015FE0: 48 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 46 HEN.. $(.. F
015FF0: 4F 52 20 61 20 3D 20 30 20 54 4F 20 74 65 78 74 OR a = 0 TO text
016000: 20 74 68 65 20 73 63 72 65 65 6E 20 2A 2F 0D 0A the screen */..
016010: 0D 0A 4C 45 54 20 72 65 63 6F 6E 73 74 72 75 63 ..LET reconstruc
016020: 74 28 66 72 6F 6D 29 20 42 45 0D 0A 0D 0A 24 28 t(from) BE....$(
016030: 0D 0A 20 20 4C 45 54 20 74 70 74 72 20 3D 20 66 .. LET tptr = f
016040: 72 6F 6D 0D 0A 20 20 63 6C 73 28 29 0D 0A 20 20 rom.. cls()..
016050: 46 4F 52 20 61 20 3D 20 79 20 54 4F 20 32 20 42 FOR a = y TO 2 B
016060: 59 20 2D 31 20 44 4F 0D 0A 20 20 24 28 0D 0A 20 Y -1 DO.. $(..
016070: 20 20 20 54 45 53 54 20 74 70 74 72 20 3D 20 30 TEST tptr = 0
016080: 20 54 48 45 4E 20 24 28 20 79 20 3A 3D 20 79 20 THEN $( y := y
016090: 2D 20 61 20 2B 20 31 20 3B 20 42 52 45 41 4B 20 - a + 1 ; BREAK
0160A0: 24 29 0D 0A 20 20 20 20 45 4C 53 45 20 74 70 74 $).. ELSE tpt
0160B0: 72 20 3A 3D 20 62 61 63 6B 6C 69 6E 65 28 74 70 r := backline(tp
0160C0: 74 72 29 0D 0A 20 20 24 29 0D 0A 20 20 73 63 72 tr).. $).. scr
0160D0: 65 65 6E 28 74 70 74 72 2C 31 29 0D 0A 24 29 0D een(tptr,1)..$).
0160E0: 0A 0D 0A 0D 0A 4C 45 54 20 65 72 72 6F 72 28 6D .....LET error(m
0160F0: 65 73 73 61 67 65 29 20 42 45 0D 0A 0D 0A 24 28 essage) BE....$(
016100: 0D 0A 20 20 74 61 62 28 31 2C 73 63 72 68 65 69 .. tab(1,scrhei
016110: 67 68 74 29 20 3B 20 77 72 69 74 65 66 28 22 25 ght) ; writef("%
016120: 53 2E 20 48 69 74 20 61 6E 79 20 6B 65 79 20 74 S. Hit any key t
016130: 6F 20 63 6F 6E 74 69 6E 75 65 22 2C 6D 65 73 73 o continue",mess
016140: 61 67 65 29 0D 0A 20 20 62 65 65 70 28 29 0D 0A age).. beep()..
016150: 20 20 72 64 63 68 28 29 0D 0A 20 20 74 61 62 28 rdch().. tab(
016160: 33 33 2C 73 63 72 68 65 69 67 68 74 29 20 3B 20 33,scrheight) ;
016170: 73 70 61 63 65 73 28 32 30 29 20 3B 20 73 74 61 spaces(20) ; sta
016180: 74 75 73 28 29 0D 0A 20 20 62 75 66 66 70 72 69 tus().. buffpri
016190: 6E 74 20 3A 3D 20 54 52 55 45 0D 0A 20 20 72 65 nt := TRUE.. re
0161A0: 63 6F 6E 73 74 72 75 63 74 28 74 65 78 74 70 74 construct(textpt
0161B0: 72 29 0D 0A 20 20 6C 6F 6E 67 6A 75 6D 70 28 65 r).. longjump(e
0161C0: 72 72 6C 61 62 2C 65 72 72 76 65 63 29 0D 0A 24 rrlab,errvec)..$
0161D0: 29 0D 0A 0D 0A 0D 0A 0D 0A 4C 45 54 20 6D 61 6B )........LET mak
0161E0: 65 73 70 61 63 65 28 61 74 2C 73 69 7A 65 29 20 espace(at,size)
0161F0: 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 62 79 74 65 BE....$(.. byte
016200: 65 6E 64 20 44 4F 0D 0A 20 20 20 20 24 28 0D 0A end DO.. $(..
016210: 20 20 20 20 20 20 55 4E 4C 45 53 53 20 77 72 69 UNLESS wri
016220: 74 65 63 68 28 74 65 78 74 73 74 61 72 74 25 61 tech(textstart%a
016230: 2C 66 69 6C 65 29 20 54 48 45 4E 20 52 45 53 55 ,file) THEN RESU
016240: 4C 54 49 53 20 64 69 73 63 65 72 72 6F 72 28 66 LTIS discerror(f
016250: 69 6C 65 29 0D 0A 20 20 20 20 20 20 49 46 20 74 ile).. IF t
016260: 65 78 74 73 74 61 72 74 25 61 20 3D 20 31 33 20 extstart%a = 13
016270: 54 48 45 4E 20 55 4E 4C 45 53 53 20 77 72 69 74 THEN UNLESS writ
016280: 65 63 68 28 31 30 2C 66 69 6C 65 29 20 54 48 45 ech(10,file) THE
016290: 4E 0D 0A 20 20 20 20 20 20 20 20 52 45 53 55 4C N.. RESUL
0162A0: 54 49 53 20 64 69 73 63 65 72 72 6F 72 28 66 69 TIS discerror(fi
0162B0: 6C 65 29 0D 0A 20 20 20 20 24 29 0D 0A 20 20 20 le).. $)..
0162C0: 20 63 6C 6F 73 65 6F 75 74 28 66 69 6C 65 29 0D closeout(file).
0162D0: 0A 20 20 20 20 52 45 53 55 4C 54 49 53 20 54 52 . RESULTIS TR
0162E0: 55 45 0D 0A 20 20 24 29 0D 0A 20 20 45 4C 53 45 UE.. $).. ELSE
0162F0: 0D 0A 20 20 24 28 0D 0A 20 20 20 20 77 72 69 74 .. $(.. writ
016300: 65 73 28 22 43 61 6E 6E 6F 74 20 6F 70 65 6E 20 es("Cannot open
016310: 22 29 20 3B 20 77 72 69 74 65 73 28 6E 61 6D 65 ") ; writes(name
016320: 29 0D 0A 20 20 20 20 52 45 53 55 4C 54 49 53 20 ).. RESULTIS
016330: 46 41 4C 53 45 0D 0A 20 20 24 29 0D 0A 24 29 0D FALSE.. $)..$).
016340: 0A 0D 0A 0D 0A 41 4E 44 20 67 6F 6C 69 6E 65 28 .....AND goline(
016350: 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 ) BE....$(.. LE
016360: 54 20 6C 69 6E 65 6E 75 6D 20 3D 20 30 0D 0A 20 T linenum = 0..
016370: 20 6C 69 6E 65 6E 75 6D 62 65 72 20 3A 3D 20 31 linenumber := 1
016380: 0D 0A 20 20 74 61 62 28 32 35 2C 31 39 29 0D 0A .. tab(25,19)..
016390: 20 20 77 72 69 74 65 66 28 22 45 6E 74 65 72 20 writef("Enter
0163A0: 6C 69 6E 65 20 6E 75 6D 62 65 72 3A 20 22 29 0D line number: ").
0163B0: 0A 20 20 63 75 72 73 65 6E 28 29 20 3B 20 6C 69 . cursen() ; li
0163C0: 6E 65 6E 75 6D 20 3A 3D 20 72 65 61 64 6E 28 29 nenum := readn()
0163D0: 20 3B 20 63 75 72 73 64 69 28 29 0D 0A 20 20 74 ; cursdi().. t
0163E0: 65 78 74 70 74 72 2C 20 78 20 3A 3D 20 30 2C 20 extptr, x := 0,
0163F0: 31 0D 0A 20 20 46 4F 52 20 63 6F 75 6E 74 20 3D 1.. FOR count =
016400: 6D 6F 76 65 28 74 65 78 74 73 74 61 72 74 2A 32 move(textstart*2
016410: 2B 61 74 2C 74 65 78 74 73 74 61 72 74 2A 32 2B +at,textstart*2+
016420: 61 74 2B 73 69 7A 65 2C 74 65 78 74 65 6E 64 2D at+size,textend-
016430: 61 74 2B 31 29 0D 0A 20 20 74 65 78 74 65 6E 64 at+1).. textend
016440: 20 3A 3D 20 74 65 78 74 65 6E 64 20 2B 20 73 69 := textend + si
016450: 7A 65 0D 0A 24 29 0D 0A 0D 0A 0D 0A 41 4E 44 20 ze..$)......AND
016460: 63 6C 6F 73 65 73 70 61 63 65 28 61 74 2C 73 69 closespace(at,si
016470: 7A 65 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 ze) BE....$(..
016480: 62 79 74 65 6D 6F 76 65 28 74 65 78 74 73 74 61 bytemove(textsta
016490: 72 74 2A 32 2B 61 74 2B 73 69 7A 65 2C 74 65 78 rt*2+at+size,tex
0164A0: 74 73 74 61 72 74 2A 32 2B 61 74 2C 74 65 78 74 tstart*2+at,text
0164B0: 65 6E 64 2D 61 74 2D 73 69 7A 65 2B 31 29 0D 0A end-at-size+1)..
0164C0: 20 20 74 65 78 74 65 6E 64 20 3A 3D 20 74 65 78 textend := tex
0164D0: 74 65 6E 64 20 2D 20 73 69 7A 65 0D 0A 24 29 0D tend - size..$).
0164E0: 0A 0D 0A 0D 0A 0D 0A 41 4E 44 20 63 6F 70 79 28 .......AND copy(
0164F0: 66 72 6F 6D 2C 64 65 73 74 2C 6E 75 6D 62 65 72 from,dest,number
016500: 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 46 4F ) BE....$(.. FO
016510: 52 20 61 20 3D 20 30 20 54 4F 20 6E 75 6D 62 65 R a = 0 TO numbe
016520: 72 2D 31 20 44 4F 20 74 65 78 74 73 74 61 72 74 r-1 DO textstart
016530: 25 28 64 65 73 74 2B 61 29 20 3A 3D 20 66 72 6F %(dest+a) := fro
016540: 6D 21 61 0D 0A 24 29 0D 0A 0D 0A 0D 0A 2F 2A 20 m!a..$)....../*
016550: 41 20 62 75 66 66 65 72 20 6C 69 6E 65 20 69 73 A buffer line is
016560: 20 74 6F 20 62 65 20 69 6E 73 65 72 74 65 64 20 to be inserted
016570: 61 74 20 61 74 20 2A 2F 0D 0A 0D 0A 4C 45 54 20 at at */....LET
016580: 6C 69 6E 73 65 72 74 28 6C 69 6E 65 2C 61 74 29 linsert(line,at)
016590: 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 54 BE....$(.. LET
0165A0: 20 63 75 72 72 65 6E 74 2C 20 6E 65 77 20 3D 20 current, new =
0165B0: 6C 69 6E 65 6C 65 6E 67 74 68 28 61 74 29 2C 20 linelength(at),
0165C0: 6C 69 6E 65 21 30 0D 0A 20 20 54 45 53 54 20 6E line!0.. TEST n
0165D0: 65 77 2D 63 75 72 72 65 6E 74 2B 74 65 78 74 65 ew-current+texte
0165E0: 6E 64 20 3C 20 6D 61 78 63 68 72 20 54 48 45 4E nd < maxchr THEN
0165F0: 0D 0A 20 20 24 28 0D 0A 20 20 20 20 54 45 53 54 .. $(.. TEST
016600: 20 32 20 54 4F 20 6C 69 6E 65 6E 75 6D 20 44 4F 2 TO linenum DO
016610: 0D 0A 20 20 24 28 0D 0A 20 20 20 20 4C 45 54 20 .. $(.. LET
016620: 6F 70 74 72 20 3D 20 74 65 78 74 70 74 72 0D 0A optr = textptr..
016630: 20 20 20 20 74 65 78 74 70 74 72 20 3A 3D 20 66 textptr := f
016640: 6F 72 77 61 72 64 28 74 65 78 74 70 74 72 29 0D orward(textptr).
016650: 0A 20 20 20 20 49 46 20 6F 70 74 72 20 3D 20 74 . IF optr = t
016660: 65 78 74 70 74 72 20 54 48 45 4E 20 42 52 45 41 extptr THEN BREA
016670: 4B 0D 0A 20 20 20 20 6C 69 6E 65 6E 75 6D 62 65 K.. linenumbe
016680: 72 20 3A 3D 20 6C 69 6E 65 6E 75 6D 62 65 72 20 r := linenumber
016690: 2B 20 31 0D 0A 20 20 24 29 0D 0A 20 20 79 20 3A + 1.. $).. y :
0166A0: 3D 20 31 32 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A = 12..$)........
0166B0: 2F 2A 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 /* This routine
0166C0: 63 68 65 63 6B 73 20 66 6F 72 20 61 20 6D 61 74 checks for a mat
0166D0: 63 68 20 2A 2F 0D 0A 0D 0A 41 4E 44 20 6D 61 74 ch */....AND mat
0166E0: 63 68 28 66 72 6F 6D 2C 74 61 72 67 65 74 29 20 ch(from,target)
0166F0: 3D 20 56 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 = VALOF....$(..
016700: 20 46 4F 52 20 61 20 3D 20 31 20 54 4F 20 74 61 FOR a = 1 TO ta
016710: 72 67 65 74 25 30 20 44 4F 0D 0A 20 20 20 20 49 rget%0 DO.. I
016720: 46 20 74 65 78 74 73 74 61 72 74 25 28 66 72 6F F textstart%(fro
016730: 6D 2B 61 2D 31 29 20 4E 45 20 74 61 72 67 65 74 m+a-1) NE target
016740: 25 61 20 54 48 45 4E 20 52 45 53 55 4C 54 49 53 %a THEN RESULTIS
016750: 20 46 41 4C 53 45 0D 0A 20 20 52 45 53 55 4C 54 FALSE.. RESULT
016760: 49 53 20 54 52 55 45 0D 0A 24 29 0D 0A 0D 0A 0D IS TRUE..$).....
016770: 0A 0D 0A 2F 2A 20 54 68 69 73 20 69 73 20 74 68 .../* This is th
016780: 65 20 66 69 6E 64 20 73 74 72 69 6E 67 20 72 6F e find string ro
016790: 75 74 69 6E 65 20 2A 2F 0D 0A 0D 0A 41 4E 44 20 utine */....AND
0167A0: 66 69 6E 64 73 74 72 69 6E 67 28 29 20 42 45 0D findstring() BE.
0167B0: 0A 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 6F 70 74 ...$(.. LET opt
0167C0: 72 2C 20 6F 78 2C 20 6F 79 2C 20 6F 6C 69 6E 65 r, ox, oy, oline
0167D0: 20 3D 20 74 65 78 74 70 74 72 2C 20 78 2C 20 79 = textptr, x, y
0167E0: 2C 20 6C 69 6E 65 6E 75 6D 62 65 72 0D 0A 20 20 , linenumber..
0167F0: 4C 45 54 20 73 65 61 72 63 68 20 3D 20 56 45 43 LET search = VEC
016800: 20 63 75 72 72 65 6E 74 3E 6E 65 77 20 54 48 45 current>new THE
016810: 4E 20 63 6C 6F 73 65 73 70 61 63 65 28 61 74 2C N closespace(at,
016820: 63 75 72 72 65 6E 74 2D 6E 65 77 29 0D 0A 20 20 current-new)..
016830: 20 20 45 4C 53 45 20 49 46 20 63 75 72 72 65 6E ELSE IF curren
016840: 74 3C 6E 65 77 20 54 48 45 4E 20 6D 61 6B 65 73 t<new THEN makes
016850: 70 61 63 65 28 61 74 2C 6E 65 77 2D 63 75 72 72 pace(at,new-curr
016860: 65 6E 74 29 0D 0A 20 20 20 20 63 6F 70 79 28 6C ent).. copy(l
016870: 69 6E 65 2B 31 2C 61 74 2C 6E 65 77 29 0D 0A 20 ine+1,at,new)..
016880: 20 24 29 0D 0A 20 20 45 4C 53 45 20 65 72 72 6F $).. ELSE erro
016890: 72 28 22 4E 6F 20 72 6F 6F 6D 22 29 0D 0A 24 29 r("No room")..$)
0168A0: 0D 0A 0D 0A 0D 0A 0D 0A 4C 45 54 20 67 65 74 66 ........LET getf
0168B0: 69 6C 65 6E 61 6D 65 28 78 2C 79 2C 6E 61 6D 65 ilename(x,y,name
0168C0: 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 74 61 ) BE....$(.. ta
0168D0: 62 28 78 2C 79 29 20 3B 20 77 72 69 74 65 73 28 b(x,y) ; writes(
0168E0: 22 45 6E 74 65 72 20 66 69 6C 65 20 6E 61 6D 65 "Enter file name
0168F0: 3A 20 22 29 0D 0A 20 20 63 75 72 73 65 6E 28 29 : ").. cursen()
016900: 20 3B 20 72 65 61 64 73 28 6E 61 6D 65 29 20 3B ; reads(name) ;
016910: 20 63 75 72 73 64 69 28 29 0D 0A 20 20 6E 65 77 cursdi().. new
016920: 6C 69 6E 65 28 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A line()..$)......
016930: 0D 0A 4C 45 54 20 6C 6F 61 64 74 65 78 74 28 6C ..LET loadtext(l
016940: 69 6E 65 29 20 3D 20 56 41 4C 4F 46 0D 0A 0D 0A ine) = VALOF....
016950: 24 28 0D 0A 20 20 4C 45 54 20 6E 61 6D 65 20 3D $(.. LET name =
016960: 20 56 45 43 20 32 30 0D 0A 20 20 67 65 74 66 69 VEC 20.. getfi
016970: 6C 65 6E 61 6D 65 28 32 35 2C 31 39 2C 6E 61 6D lename(25,19,nam
016980: 65 29 0D 0A 20 20 54 45 53 54 20 66 69 6E 64 69 e).. TEST findi
016990: 6E 70 75 74 28 6E 61 6D 65 2C 66 69 6C 65 29 20 nput(name,file)
0169A0: 54 48 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 THEN.. $(..
0169B0: 4C 45 54 20 63 68 61 72 20 3D 20 30 0D 0A 20 20 LET char = 0..
0169C0: 20 20 74 65 78 74 70 74 72 2C 20 78 2C 20 79 2C textptr, x, y,
0169D0: 20 6C 69 6E 65 6E 75 6D 62 65 72 2C 20 74 65 78 linenumber, tex
0169E0: 74 65 6E 64 20 3A 3D 20 30 2C 20 31 2C 20 31 2C tend := 0, 1, 1,
0169F0: 20 31 2C 20 2D 31 0D 0A 20 20 20 20 74 65 78 74 1, -1.. text
016A00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
016A10: 13 00 01 00 02 09 50 E5 13 00 C1 02 00 00 00 02 ......P.........
016A20: 13 00 C6 02 00 00 00 02 13 00 C2 02 00 00 00 02 ................
016A30: 13 00 C7 02 00 00 00 02 13 00 C3 02 00 00 00 02 ................
016A40: 13 00 C8 02 00 00 00 02 13 00 C4 02 00 00 00 02 ................
016A50: 13 00 C9 02 00 00 00 02 13 00 C5 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: 20 32 30 0D 0A 20 20 74 61 62 28 32 35 2C 31 39 20.. tab(25,19
016B10: 29 0D 0A 20 20 77 72 69 74 65 66 28 22 45 6E 74 ).. writef("Ent
016B20: 65 72 20 73 74 72 69 6E 67 3A 20 22 29 0D 0A 20 er string: ")..
016B30: 20 63 75 72 73 65 6E 28 29 20 3B 20 72 65 61 64 cursen() ; read
016B40: 73 28 73 65 61 72 63 68 29 20 3B 20 63 75 72 73 s(search) ; curs
016B50: 64 69 28 29 0D 0A 20 20 74 65 78 74 70 74 72 20 di().. textptr
016B60: 3A 3D 20 74 65 78 74 70 74 72 20 2B 20 78 20 2D := textptr + x -
016B70: 20 31 0D 0A 20 20 55 4E 4C 45 53 53 20 74 65 78 1.. UNLESS tex
016B80: 74 73 74 61 72 74 25 74 65 78 74 70 74 72 3D 31 tstart%textptr=1
016B90: 33 20 54 48 45 4E 20 74 65 78 74 70 74 72 20 3A 3 THEN textptr :
016BA0: 3D 20 74 65 78 74 70 74 72 20 2B 20 31 0D 0A 20 = textptr + 1..
016BB0: 20 55 4E 4C 45 53 53 20 74 65 78 74 70 74 72 20 UNLESS textptr
016BC0: 3E 3D 20 74 65 78 74 65 6E 64 20 44 4F 0D 0A 20 >= textend DO..
016BD0: 20 24 28 0D 0A 20 20 20 20 54 45 53 54 20 74 65 $(.. TEST te
016BE0: 78 74 73 74 61 72 74 25 74 65 78 74 70 74 72 3D xtstart%textptr=
016BF0: 31 33 20 54 48 45 4E 0D 0A 20 20 20 20 20 20 6C 13 THEN.. l
016C00: 69 6E 65 6E 75 6D 62 65 72 20 3A 3D 20 6C 69 6E inenumber := lin
016C10: 65 6E 75 6D 62 65 72 20 2B 20 31 0D 0A 20 20 20 enumber + 1..
016C20: 20 45 4C 53 45 0D 0A 20 20 20 20 24 28 0D 0A 20 ELSE.. $(..
016C30: 20 20 20 20 20 49 46 20 6D 61 74 63 68 28 74 65 IF match(te
016C40: 78 74 70 74 72 2C 73 65 61 72 63 68 29 20 54 48 xtptr,search) TH
016C50: 45 4E 0D 0A 20 20 20 20 20 20 24 28 0D 0A 20 20 EN.. $(..
016C60: 20 20 20 20 20 20 6F 70 74 72 20 3A 3D 20 74 65 optr := te
016C70: 78 74 70 74 72 0D 0A 20 20 20 20 20 20 20 20 57 xtptr.. W
016C80: 48 49 4C 45 20 74 65 78 74 73 74 61 72 74 25 28 HILE textstart%(
016C90: 74 65 78 74 70 74 72 2D 31 29 20 4E 45 20 31 33 textptr-1) NE 13
016CA0: 20 4C 4F 47 41 4E 44 20 74 65 78 74 70 74 72 20 LOGAND textptr
016CB0: 4E 45 20 30 20 44 4F 0D 0A 20 20 20 20 20 20 20 NE 0 DO..
016CC0: 20 20 20 74 65 78 74 70 74 72 20 3A 3D 20 74 65 textptr := te
016CD0: 78 74 70 74 72 20 2D 20 31 0D 0A 20 20 20 20 20 xtptr - 1..
016CE0: 20 20 20 78 2C 20 79 20 3A 3D 20 6F 70 74 72 20 x, y := optr
016CF0: 2D 20 74 65 78 74 70 74 72 20 2B 20 31 2C 20 31 - textptr + 1, 1
016D00: 54 4F 20 6C 69 6E 65 21 30 20 44 4F 20 63 6F 70 TO line!0 DO cop
016D10: 79 21 61 20 3A 3D 20 6C 69 6E 65 21 61 0D 0A 20 y!a := line!a..
016D20: 20 57 48 49 4C 45 20 6C 69 6E 65 21 70 74 72 20 WHILE line!ptr
016D30: 4E 45 20 31 33 20 44 4F 20 70 74 72 20 3A 3D 20 NE 13 DO ptr :=
016D40: 70 74 72 20 2B 20 31 0D 0A 20 20 46 4F 52 20 61 ptr + 1.. FOR a
016D50: 20 3D 20 70 74 72 20 54 4F 20 6C 69 6E 65 21 30 = ptr TO line!0
016D60: 2D 31 20 44 4F 20 6C 69 6E 65 21 61 20 3A 3D 20 -1 DO line!a :=
016D70: 6C 69 6E 65 21 28 61 2B 31 29 0D 0A 20 20 6C 69 line!(a+1).. li
016D80: 6E 65 21 30 20 3A 3D 20 6C 69 6E 65 21 30 20 2D ne!0 := line!0 -
016D90: 20 31 0D 0A 20 20 6C 69 6E 73 65 72 74 28 63 6F 1.. linsert(co
016DA0: 70 79 2C 74 65 78 74 70 74 72 29 0D 0A 20 20 78 py,textptr).. x
016DB0: 2C 20 6C 69 6E 65 6E 75 6D 62 65 72 20 3A 3D 20 , linenumber :=
016DC0: 31 2C 20 6C 69 6E 65 6E 75 6D 62 65 72 20 2B 20 1, linenumber +
016DD0: 31 0D 0A 20 20 74 65 78 74 70 74 72 20 3A 3D 20 1.. textptr :=
016DE0: 66 6F 72 77 61 72 64 28 74 65 78 74 70 74 72 29 forward(textptr)
016DF0: 0D 0A 20 20 54 45 53 54 20 79 20 3D 20 73 63 72 .. TEST y = scr
016E00: 68 65 69 67 68 74 2D 31 20 54 48 45 4E 0D 0A 20 height-1 THEN..
016E10: 20 24 28 0D 0A 20 20 20 20 75 70 28 29 0D 0A 20 $(.. up()..
016E20: 20 20 20 77 72 69 74 65 28 74 65 78 74 70 74 72 write(textptr
016E30: 2C 31 2C 73 63 72 68 65 69 67 68 74 2D 31 29 0D ,1,scrheight-1).
016E40: 0A 20 20 24 29 0D 0A 20 20 45 4C 53 45 20 79 20 . $).. ELSE y
016E50: 3A 3D 20 79 20 2B 20 31 0D 0A 24 29 0D 0A 0D 0A := y + 1..$)....
016E60: 0D 0A 4C 45 54 20 6D 6F 76 65 75 70 28 29 20 42 ..LET moveup() B
016E70: 45 0D 0A 0D 0A 24 28 0D 0A 20 20 55 4E 4C 45 53 E....$(.. UNLES
016E80: 53 20 74 65 78 74 70 74 72 20 3D 20 30 20 54 48 S textptr = 0 TH
016E90: 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 74 65 EN.. $(.. te
016EA0: 78 74 70 74 72 20 3A 3D 20 62 61 63 6B 6C 69 6E xtptr := backlin
016EB0: 65 28 74 65 78 74 70 74 72 29 0D 0A 20 20 20 20 e(textptr)..
016EC0: 6C 69 6E 65 6E 75 6D 62 65 72 20 3A 3D 20 6C 69 linenumber := li
016ED0: 6E 65 6E 75 6D 62 65 72 20 2D 20 31 0D 0A 20 20 nenumber - 1..
016EE0: 20 20 54 45 53 54 20 79 20 3D 20 31 20 54 48 45 TEST y = 1 THE
016EF0: 4E 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 20 20 N.. $(..
016F00: 32 0D 0A 20 20 20 20 20 20 20 20 42 52 45 41 4B 2.. BREAK
016F10: 0D 0A 20 20 20 20 20 20 24 29 0D 0A 20 20 20 20 .. $)..
016F20: 24 29 0D 0A 20 20 20 20 74 65 78 74 70 74 72 20 $).. textptr
016F30: 3A 3D 20 74 65 78 74 70 74 72 20 2B 20 31 0D 0A := textptr + 1..
016F40: 20 20 20 20 49 46 20 74 65 78 74 70 74 72 20 3E IF textptr >
016F50: 3D 20 74 65 78 74 65 6E 64 20 54 48 45 4E 0D 0A = textend THEN..
016F60: 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 74 65 $(.. te
016F70: 78 74 70 74 72 2C 20 78 2C 20 79 2C 20 6C 69 6E xtptr, x, y, lin
016F80: 65 6E 75 6D 62 65 72 20 3A 3D 20 6F 70 74 72 2C enumber := optr,
016F90: 20 6F 78 2C 20 6F 79 2C 20 6F 6C 69 6E 65 0D 0A ox, oy, oline..
016FA0: 20 20 20 20 20 20 42 52 45 41 4B 0D 0A 20 20 20 BREAK..
016FB0: 20 24 29 0D 0A 20 20 24 29 20 52 45 50 45 41 54 $).. $) REPEAT
016FC0: 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 2F 2A 20 54 ..$)......../* T
016FD0: 68 69 73 20 69 73 20 74 68 65 20 6D 61 69 6E 20 his is the main
016FE0: 6D 65 6E 75 20 72 6F 75 74 69 6E 65 20 2A 2F 0D menu routine */.
016FF0: 0A 0D 0A 4C 45 54 20 6D 65 6E 75 28 6C 69 6E 65 ...LET menu(line
017000: 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 ) BE....$(.. LE
017010: 54 20 74 70 74 72 20 3D 20 30 0D 0A 20 20 6C 69 T tptr = 0.. li
017020: 6E 73 65 72 74 28 6C 69 6E 65 2C 74 65 78 74 70 nsert(line,textp
017030: 74 72 29 0D 0A 20 20 24 28 0D 0A 20 20 20 20 4C tr).. $(.. L
017040: 45 54 20 6B 65 79 20 3D 20 30 0D 0A 20 20 20 20 ET key = 0..
017050: 63 6C 65 61 72 73 63 72 28 29 0D 0A 20 20 20 20 clearscr()..
017060: 74 61 62 28 33 32 2C 34 29 20 20 3B 20 77 72 69 tab(32,4) ; wri
017070: 74 65 73 28 22 42 43 50 4C 20 65 64 69 74 6F 72 tes("BCPL editor
017080: 22 29 0D 0A 20 20 20 20 74 61 62 28 33 32 2C 35 ").. tab(32,5
017090: 29 20 20 3B 20 77 72 69 74 65 73 28 22 2D 2D 2D ) ; writes("---
0170A0: 2D 2D 2D 2D 2D 2D 2D 2D 22 29 0D 0A 20 20 20 20 --------")..
0170B0: 74 61 62 28 33 32 2C 39 29 20 20 3B 20 77 72 69 tab(32,9) ; wri
0170C0: 74 65 73 28 22 4C 3A 20 4C 6F 61 64 20 74 65 78 tes("L: Load tex
0170D0: 74 22 29 0D 0A 20 20 20 20 74 61 62 28 33 32 2C t").. tab(32,
0170E0: 31 30 29 20 3B 20 77 72 69 74 65 73 28 22 53 3A 10) ; writes("S:
0170F0: 20 53 61 76 65 20 74 65 78 74 22 29 0D 0A 20 20 Save text")..
017100: 20 64 6F 77 6E 28 29 0D 0A 20 20 20 20 20 20 77 down().. w
017110: 72 69 74 65 28 74 65 78 74 70 74 72 2C 31 2C 31 rite(textptr,1,1
017120: 29 0D 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45 ).. $).. E
017130: 4C 53 45 20 79 20 3A 3D 20 79 20 2D 20 31 0D 0A LSE y := y - 1..
017140: 20 20 24 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 $)..$)......LE
017150: 54 20 75 70 63 75 72 73 28 6C 69 6E 65 29 20 42 T upcurs(line) B
017160: 45 0D 0A 0D 0A 24 28 0D 0A 20 20 6C 69 6E 73 65 E....$(.. linse
017170: 72 74 28 6C 69 6E 65 2C 74 65 78 74 70 74 72 29 rt(line,textptr)
017180: 0D 0A 20 20 6D 6F 76 65 75 70 28 29 0D 0A 24 29 .. moveup()..$)
017190: 0D 0A 0D 0A 0D 0A 4C 45 54 20 6D 6F 76 65 64 6F ......LET movedo
0171A0: 77 6E 28 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 wn() BE....$(..
0171B0: 20 4C 45 54 20 6F 70 74 72 20 3D 20 74 65 78 74 LET optr = text
0171C0: 70 74 72 0D 0A 20 20 74 65 78 74 70 74 72 20 3A ptr.. textptr :
0171D0: 3D 20 66 6F 72 77 61 72 64 28 74 65 78 74 70 74 = forward(textpt
0171E0: 72 29 0D 0A 20 20 55 4E 4C 45 53 53 20 74 65 78 r).. UNLESS tex
0171F0: 74 70 74 72 20 3D 20 6F 70 74 72 20 54 48 45 4E tptr = optr THEN
017200: 0D 0A 20 20 24 28 0D 0A 20 20 20 20 6C 69 6E 65 .. $(.. line
017210: 6E 75 6D 62 65 72 20 3A 3D 20 6C 69 6E 65 6E 75 number := linenu
017220: 6D 62 65 72 20 2B 20 31 0D 0A 20 20 20 20 54 45 mber + 1.. TE
017230: 53 54 20 79 20 3D 20 73 63 72 68 65 69 67 68 74 ST y = scrheight
017240: 2D 31 20 54 48 45 4E 0D 0A 20 20 20 20 24 28 0D -1 THEN.. $(.
017250: 0A 20 20 20 20 20 20 75 70 28 29 0D 0A 20 20 20 . up()..
017260: 20 20 20 77 72 69 74 65 28 74 65 78 74 70 74 72 write(textptr
017270: 2C 31 2C 73 63 72 68 65 69 67 68 74 2D 31 29 0D ,1,scrheight-1).
017280: 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45 4C 53 . $).. ELS
017290: 45 20 79 20 3A 3D 20 79 20 2B 20 31 0D 0A 20 20 E y := y + 1..
0172A0: 24 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 4C 45 $)..$)........LE
0172B0: 54 20 64 6F 77 6E 63 75 72 73 28 6C 69 6E 65 29 T downcurs(line)
0172C0: 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 6C 69 6E BE....$(.. lin
0172D0: 73 65 72 74 28 6C 69 6E 65 2C 74 65 78 74 70 74 sert(line,textpt
0172E0: 72 29 0D 0A 20 20 6D 6F 76 65 64 6F 77 6E 28 29 r).. movedown()
0172F0: 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 4C 45 54 20 ..$)........LET
017300: 20 20 74 61 62 28 33 32 2C 31 31 29 20 3B 20 77 tab(32,11) ; w
017310: 72 69 74 65 73 28 22 45 3A 20 45 64 69 74 20 74 rites("E: Edit t
017320: 65 78 74 22 29 0D 0A 20 20 20 20 74 61 62 28 33 ext").. tab(3
017330: 32 2C 31 32 29 20 3B 20 77 72 69 74 65 73 28 22 2,12) ; writes("
017340: 47 3A 20 47 6F 74 6F 20 6C 69 6E 65 22 29 0D 0A G: Goto line")..
017350: 20 20 20 20 74 61 62 28 33 32 2C 31 33 29 20 3B tab(32,13) ;
017360: 20 77 72 69 74 65 73 28 22 46 3A 20 46 69 6E 64 writes("F: Find
017370: 20 73 74 72 69 6E 67 22 29 0D 0A 20 20 20 20 74 string").. t
017380: 61 62 28 33 32 2C 31 34 29 20 3B 20 77 72 69 74 ab(32,14) ; writ
017390: 65 73 28 22 51 3A 20 51 75 69 74 22 29 0D 0A 20 es("Q: Quit")..
0173A0: 20 20 20 74 61 62 28 33 32 2C 31 37 29 20 3B 20 tab(32,17) ;
0173B0: 77 72 69 74 65 73 28 22 53 65 6C 65 63 74 20 6F writes("Select o
0173C0: 70 74 69 6F 6E 3A 20 22 29 0D 0A 20 20 20 20 24 ption: ").. $
0173D0: 28 20 63 75 72 73 65 6E 28 29 0D 0A 20 20 20 20 ( cursen()..
0173E0: 20 20 20 6B 65 79 20 3A 3D 20 72 64 63 68 28 29 key := rdch()
0173F0: 0D 0A 20 20 20 20 20 20 20 63 75 72 73 64 69 28 .. cursdi(
017400: 29 0D 0A 20 20 20 20 24 29 20 52 45 50 45 41 54 ).. $) REPEAT
017410: 57 48 49 4C 45 20 6B 65 79 20 3D 20 69 67 6E 6F WHILE key = igno
017420: 72 65 0D 0A 20 20 20 20 53 57 49 54 43 48 4F 4E re.. SWITCHON
017430: 20 6B 65 79 20 49 4E 54 4F 0D 0A 20 20 20 20 24 key INTO.. $
017440: 28 0D 0A 20 20 20 20 20 20 43 41 53 45 20 27 4C (.. CASE 'L
017450: 27 3A 20 43 41 53 45 20 27 6C 27 3A 20 77 72 63 ': CASE 'l': wrc
017460: 68 28 27 4C 27 29 20 3B 20 49 46 20 6C 6F 61 64 h('L') ; IF load
017470: 74 65 78 74 28 6C 69 6E 65 29 20 54 48 45 4E 20 text(line) THEN
017480: 42 52 45 41 4B 20 3B 20 45 4E 44 43 41 53 45 0D BREAK ; ENDCASE.
017490: 0A 20 20 20 20 20 20 43 41 53 45 20 27 53 27 3A . CASE 'S':
0174A0: 20 43 41 53 45 20 27 73 27 3A 20 77 72 63 68 28 CASE 's': wrch(
0174B0: 27 53 27 29 20 3B 20 49 46 20 73 61 76 65 74 65 'S') ; IF savete
0174C0: 78 74 28 29 20 54 48 45 4E 20 42 52 45 41 4B 20 xt() THEN BREAK
0174D0: 3B 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 ; ENDCASE..
0174E0: 20 43 41 53 45 20 27 47 27 3A 20 43 41 53 45 20 CASE 'G': CASE
0174F0: 27 67 27 3A 20 77 72 63 68 28 27 47 27 29 20 3B 'g': wrch('G') ;
017500: 73 75 70 63 75 72 73 28 6C 69 6E 65 29 20 42 45 supcurs(line) BE
017510: 0D 0A 0D 0A 24 28 0D 0A 20 20 6C 69 6E 73 65 72 ....$(.. linser
017520: 74 28 6C 69 6E 65 2C 74 65 78 74 70 74 72 29 0D t(line,textptr).
017530: 0A 20 20 46 4F 52 20 61 20 3D 20 31 20 54 4F 20 . FOR a = 1 TO
017540: 73 63 72 68 65 69 67 68 74 2D 34 20 44 4F 0D 0A scrheight-4 DO..
017550: 20 20 24 28 0D 0A 20 20 20 20 49 46 20 74 65 78 $(.. IF tex
017560: 74 70 74 72 20 3D 20 30 20 54 48 45 4E 20 42 52 tptr = 0 THEN BR
017570: 45 41 4B 0D 0A 20 20 20 20 6D 6F 76 65 75 70 28 EAK.. moveup(
017580: 29 0D 0A 20 20 24 29 0D 0A 24 29 0D 0A 0D 0A 4C ).. $)..$)....L
017590: 45 54 20 73 64 6F 77 6E 63 75 72 73 28 6C 69 6E ET sdowncurs(lin
0175A0: 65 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 6C e) BE....$(.. l
0175B0: 69 6E 73 65 72 74 28 6C 69 6E 65 2C 74 65 78 74 insert(line,text
0175C0: 70 74 72 29 0D 0A 20 20 46 4F 52 20 61 20 3D 20 ptr).. FOR a =
0175D0: 31 20 54 4F 20 73 63 72 68 65 69 67 68 74 2D 34 1 TO scrheight-4
0175E0: 20 44 4F 0D 0A 20 20 24 28 0D 0A 20 20 20 20 4C DO.. $(.. L
0175F0: 45 54 20 6F 70 74 72 20 3D 20 74 65 78 74 70 74 ET optr = textpt
017600: 72 0D 0A 20 20 20 20 6D 6F 76 65 64 6F 77 6E 28 r.. movedown(
017610: 29 0D 0A 20 20 20 20 49 46 20 6F 70 74 72 20 3D ).. IF optr =
017620: 20 74 65 78 74 70 74 72 20 54 48 45 4E 20 42 52 textptr THEN BR
017630: 45 41 4B 0D 0A 20 20 24 29 0D 0A 24 29 0D 0A 0D EAK.. $)..$)...
017640: 0A 0D 0A 0D 0A 4C 45 54 20 74 6F 70 28 6C 69 6E .....LET top(lin
017650: 65 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 6C e) BE....$(.. l
017660: 69 6E 73 65 72 74 28 6C 69 6E 65 2C 74 65 78 74 insert(line,text
017670: 70 74 72 29 0D 0A 20 20 74 65 78 74 70 74 72 2C ptr).. textptr,
017680: 20 78 2C 20 79 2C 20 6C 69 6E 65 6E 75 6D 62 65 x, y, linenumbe
017690: 72 20 3A 3D 20 30 2C 20 31 2C 20 31 2C 20 31 0D r := 0, 1, 1, 1.
0176A0: 0A 20 20 72 65 63 6F 6E 73 74 72 75 63 74 28 74 . reconstruct(t
0176B0: 65 78 74 70 74 72 29 0D 0A 24 29 0D 0A 0D 0A 0D extptr)..$).....
0176C0: 0A 4C 45 54 20 62 6F 74 74 6F 6D 28 6C 69 6E 65 .LET bottom(line
0176D0: 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 ) BE....$(.. LE
0176E0: 54 20 6F 70 74 72 20 3D 20 30 0D 0A 20 20 6C 69 T optr = 0.. li
0176F0: 6E 73 65 72 74 28 6C 69 6E 65 2C 74 65 78 74 70 nsert(line,textp
017700: 20 67 6F 6C 69 6E 65 28 29 20 3B 20 42 52 45 41 goline() ; BREA
017710: 4B 0D 0A 20 20 20 20 20 20 43 41 53 45 20 27 46 K.. CASE 'F
017720: 27 3A 20 43 41 53 45 20 27 66 27 3A 20 77 72 63 ': CASE 'f': wrc
017730: 68 28 27 46 27 29 20 3B 20 78 20 3A 3D 20 76 61 h('F') ; x := va
017740: 6C 69 64 61 74 65 28 6C 69 6E 65 2C 78 29 0D 0A lidate(line,x)..
017750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
017760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
017770: 20 20 20 20 20 20 66 69 6E 64 73 74 72 69 6E 67 findstring
017780: 28 29 20 3B 20 42 52 45 41 4B 0D 0A 20 20 20 20 () ; BREAK..
017790: 20 20 43 41 53 45 20 27 45 27 3A 20 43 41 53 45 CASE 'E': CASE
0177A0: 20 27 65 27 3A 20 77 72 63 68 28 27 45 27 29 20 'e': wrch('E')
0177B0: 3B 20 42 52 45 41 4B 0D 0A 20 20 20 20 20 20 43 ; BREAK.. C
0177C0: 41 53 45 20 27 51 27 3A 20 43 41 53 45 20 27 71 ASE 'Q': CASE 'q
0177D0: 27 3A 20 77 72 63 68 28 27 51 27 29 20 3B 20 66 ': wrch('Q') ; f
0177E0: 69 6E 69 73 68 0D 0A 20 20 20 20 24 29 0D 0A 20 inish.. $)..
0177F0: 20 20 20 62 65 65 70 28 29 0D 0A 20 20 24 29 20 beep().. $)
017800: 52 45 50 45 41 54 0D 0A 20 20 72 65 63 6F 6E 73 REPEAT.. recons
017810: 74 72 75 63 74 28 74 65 78 74 70 74 72 29 0D 0A truct(textptr)..
017820: 24 29 0D 0A 0D 0A 0D 0A 0D 0A 2F 2A 20 54 68 69 $)......../* Thi
017830: 73 20 72 6F 75 74 69 6E 65 20 64 65 61 6C 73 20 s routine deals
017840: 77 69 74 68 20 74 68 65 20 64 65 6C 65 74 69 6F with the deletio
017850: 6E 20 6F 66 20 61 20 43 52 20 2A 2F 0D 0A 0D 0A n of a CR */....
017860: 4C 45 54 20 64 65 6C 65 74 65 6C 28 6C 69 6E 65 LET deletel(line
017870: 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 54 45 ) BE....$(.. TE
017880: 53 54 20 74 65 78 74 70 74 72 20 4E 45 20 30 20 ST textptr NE 0
017890: 54 48 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 THEN.. $(..
0178A0: 4C 45 54 20 6F 70 74 72 2C 20 74 70 74 72 20 3D LET optr, tptr =
0178B0: 20 74 65 78 74 70 74 72 2C 20 62 61 63 6B 6C 69 textptr, backli
0178C0: 6E 65 28 74 65 78 74 70 74 72 29 0D 0A 20 20 20 ne(textptr)..
0178D0: 20 54 45 53 54 20 6C 69 6E 65 6C 65 6E 67 74 68 TEST linelength
0178E0: 28 74 70 74 72 29 20 2B 20 6C 69 6E 65 21 30 20 (tptr) + line!0
0178F0: 2D 20 31 20 3C 20 38 30 20 54 48 45 4E 0D 0A 20 - 1 < 80 THEN..
017900: 74 72 29 0D 0A 20 20 74 65 78 74 70 74 72 2C 20 tr).. textptr,
017910: 78 2C 20 79 2C 20 6C 69 6E 65 6E 75 6D 62 65 72 x, y, linenumber
017920: 20 3A 3D 20 30 2C 20 31 2C 20 31 2C 20 30 0D 0A := 0, 1, 1, 0..
017930: 20 20 24 28 0D 0A 20 20 20 20 6F 70 74 72 20 3A $(.. optr :
017940: 3D 20 74 65 78 74 70 74 72 0D 0A 20 20 20 20 74 = textptr.. t
017950: 65 78 74 70 74 72 20 3A 3D 20 66 6F 72 77 61 72 extptr := forwar
017960: 64 28 74 65 78 74 70 74 72 29 0D 0A 20 20 20 20 d(textptr)..
017970: 79 20 3A 3D 20 79 20 2B 20 31 0D 0A 20 20 20 20 y := y + 1..
017980: 6C 69 6E 65 6E 75 6D 62 65 72 20 3A 3D 20 6C 69 linenumber := li
017990: 6E 65 6E 75 6D 62 65 72 20 2B 20 31 0D 0A 20 20 nenumber + 1..
0179A0: 24 29 20 52 45 50 45 41 54 55 4E 54 49 4C 20 6F $) REPEATUNTIL o
0179B0: 70 74 72 20 3D 20 74 65 78 74 70 74 72 0D 0A 20 ptr = textptr..
0179C0: 20 49 46 20 79 20 3E 20 73 63 72 68 65 69 67 68 IF y > scrheigh
0179D0: 74 2D 31 20 54 48 45 4E 20 79 20 3A 3D 20 73 63 t-1 THEN y := sc
0179E0: 72 68 65 69 67 68 74 2D 31 0D 0A 20 20 72 65 63 rheight-1.. rec
0179F0: 6F 6E 73 74 72 75 63 74 28 74 65 78 74 70 74 72 onstruct(textptr
017A00: 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 2F 2A 20 41 6C )..$)....../* Al
017A10: 6C 20 6C 69 6E 65 73 20 65 6E 64 20 69 6E 20 31 l lines end in 1
017A20: 33 20 2A 2F 0D 0A 2F 2A 20 54 68 65 20 65 64 69 3 */../* The edi
017A30: 74 20 62 75 66 66 65 72 20 69 73 20 68 65 6C 64 t buffer is held
017A40: 20 69 6E 20 75 6E 70 61 63 6B 65 64 20 66 6F 72 in unpacked for
017A50: 6D 61 74 2E 20 54 68 65 20 77 68 6F 6C 65 20 74 mat. The whole t
017A60: 65 78 74 20 69 73 20 73 74 6F 72 65 64 20 69 6E ext is stored in
017A70: 0D 0A 20 20 20 70 61 63 6B 65 64 20 66 6F 72 6D .. packed form
017A80: 61 74 20 2A 2F 0D 0A 0D 0A 4C 45 54 20 73 74 61 at */....LET sta
017A90: 72 74 28 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 rt() BE....$(..
017AA0: 20 4C 45 54 20 66 69 6C 65 62 75 66 66 20 3D 20 LET filebuff =
017AB0: 56 45 43 20 38 31 0D 0A 20 20 4C 45 54 20 70 72 VEC 81.. LET pr
017AC0: 65 76 69 6F 75 73 20 3D 20 56 45 43 20 6D 61 78 evious = VEC max
017AD0: 73 63 72 68 65 69 67 68 74 2D 31 0D 0A 20 20 4C scrheight-1.. L
017AE0: 45 54 20 74 65 78 74 20 3D 20 56 45 43 20 6D 61 ET text = VEC ma
017AF0: 78 63 68 72 2F 32 2B 31 0D 0A 20 20 4C 45 54 20 xchr/2+1.. LET
017B00: 20 20 20 24 28 0D 0A 20 20 20 20 20 20 49 46 20 $(.. IF
017B10: 6C 69 6E 65 21 30 2D 6C 69 6E 65 6C 65 6E 67 74 line!0-linelengt
017B20: 68 28 74 65 78 74 70 74 72 29 2B 74 65 78 74 65 h(textptr)+texte
017B30: 6E 64 20 3E 3D 20 6D 61 78 63 68 72 20 54 48 45 nd >= maxchr THE
017B40: 4E 20 65 72 72 6F 72 28 22 4E 6F 20 72 6F 6F 6D N error("No room
017B50: 22 29 0D 0A 20 20 20 20 20 20 74 65 78 74 73 74 ").. textst
017B60: 61 72 74 25 28 74 65 78 74 70 74 72 2D 31 29 20 art%(textptr-1)
017B70: 3A 3D 20 30 0D 0A 20 20 20 20 20 20 6C 69 6E 73 := 0.. lins
017B80: 65 72 74 28 6C 69 6E 65 2C 74 65 78 74 70 74 72 ert(line,textptr
017B90: 2D 31 29 0D 0A 20 20 20 20 20 20 74 65 78 74 70 -1).. textp
017BA0: 74 72 20 3A 3D 20 74 70 74 72 0D 0A 20 20 20 20 tr := tptr..
017BB0: 20 20 6C 69 6E 65 6E 75 6D 62 65 72 20 3A 3D 20 linenumber :=
017BC0: 6C 69 6E 65 6E 75 6D 62 65 72 20 2D 20 31 0D 0A linenumber - 1..
017BD0: 20 20 20 20 20 20 78 20 3A 3D 20 6C 69 6E 65 6C x := linel
017BE0: 65 6E 67 74 68 28 74 65 78 74 70 74 72 29 20 2D ength(textptr) -
017BF0: 20 6C 69 6E 65 21 30 20 2B 20 31 0D 0A 20 20 20 line!0 + 1..
017C00: 20 20 20 54 45 53 54 20 79 20 3D 20 31 20 54 48 TEST y = 1 TH
017C10: 45 4E 0D 0A 20 20 20 20 20 20 24 28 0D 0A 20 20 EN.. $(..
017C20: 20 20 20 20 20 20 77 72 69 74 65 28 74 65 78 74 write(text
017C30: 70 74 72 2C 31 2C 31 29 0D 0A 20 20 20 20 20 20 ptr,1,1)..
017C40: 24 29 0D 0A 20 20 20 20 20 20 45 4C 53 45 20 79 $).. ELSE y
017C50: 20 3A 3D 20 79 20 2D 20 31 0D 0A 20 20 20 20 24 := y - 1.. $
017C60: 29 0D 0A 20 20 20 20 45 4C 53 45 20 65 72 72 6F ).. ELSE erro
017C70: 72 28 22 4C 69 6E 65 20 74 6F 6F 20 6C 6F 6E 67 r("Line too long
017C80: 20 74 6F 20 6A 6F 69 6E 22 29 0D 0A 20 20 24 29 to join").. $)
017C90: 0D 0A 20 20 45 4C 53 45 20 65 72 72 6F 72 28 22 .. ELSE error("
017CA0: 54 6F 70 20 6F 66 20 66 69 6C 65 22 29 0D 0A 24 Top of file")..$
017CB0: 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 61 64 64 6C 28 )......LET addl(
017CC0: 6C 69 6E 65 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A line) BE....$(..
017CD0: 20 20 4C 45 54 20 63 6F 70 79 20 3D 20 56 45 43 LET copy = VEC
017CE0: 20 38 30 0D 0A 20 20 4C 45 54 20 70 74 72 20 3D 80.. LET ptr =
017CF0: 20 31 0D 0A 20 20 46 4F 52 20 61 20 3D 20 30 20 1.. FOR a = 0
017D00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
017D10: 14 00 01 00 02 09 50 E5 14 00 C1 02 00 00 00 02 ......P.........
017D20: 14 00 C6 02 00 00 00 02 14 00 C2 02 00 00 00 02 ................
017D30: 14 00 C7 02 00 00 00 02 14 00 C3 02 00 00 00 02 ................
017D40: 14 00 C8 02 00 00 00 02 14 00 C4 02 00 00 00 02 ................
017D50: 14 00 C9 02 00 00 00 02 14 00 C5 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: 69 6E 62 75 66 66 20 3D 20 56 45 43 20 38 31 0D inbuff = VEC 81.
017E10: 0A 20 20 4C 45 54 20 65 72 72 6F 72 20 3D 20 56 . LET error = V
017E20: 45 43 20 34 0D 0A 20 20 4C 45 54 20 63 6F 70 79 EC 4.. LET copy
017E30: 70 74 72 2C 20 6C 61 73 74 6B 65 79 2C 20 6E 65 ptr, lastkey, ne
017E40: 77 73 63 72 65 65 6E 20 3D 20 30 2C 20 30 2C 20 wscreen = 0, 0,
017E50: 54 52 55 45 0D 0A 20 20 76 65 72 20 3A 3D 20 76 TRUE.. ver := v
017E60: 65 72 73 69 6F 6E 28 29 0D 0A 20 20 73 63 72 68 ersion().. scrh
017E70: 65 69 67 68 74 20 3A 3D 20 76 65 72 3D 34 20 2D eight := ver=4 -
017E80: 3E 20 33 31 2C 20 76 65 72 3D 33 20 2D 3E 20 32 > 31, ver=3 -> 2
017E90: 34 2C 20 32 35 0D 0A 20 20 74 65 78 74 70 74 72 4, 25.. textptr
017EA0: 2C 20 74 65 78 74 65 6E 64 2C 20 74 65 78 74 73 , textend, texts
017EB0: 74 61 72 74 2C 20 65 72 72 76 65 63 20 3A 3D 20 tart, errvec :=
017EC0: 30 2C 20 30 2C 20 74 65 78 74 2C 20 65 72 72 6F 0, 0, text, erro
017ED0: 72 0D 0A 20 20 70 72 65 76 2C 20 66 69 6C 65 20 r.. prev, file
017EE0: 3A 3D 20 70 72 65 76 69 6F 75 73 2C 20 66 69 6C := previous, fil
017EF0: 65 62 75 66 66 0D 0A 20 20 63 6C 73 28 29 0D 0A ebuff.. cls()..
017F00: 20 20 74 65 78 74 73 74 61 72 74 25 30 20 3A 3D textstart%0 :=
017F10: 20 31 33 0D 0A 20 20 24 28 0D 0A 20 20 20 20 6C 13.. $(.. l
017F20: 65 76 65 6C 28 65 72 72 76 65 63 29 0D 0A 20 20 evel(errvec)..
017F30: 20 20 69 6E 69 74 62 75 66 66 28 69 6E 62 75 66 initbuff(inbuf
017F40: 66 2C 74 65 78 74 70 74 72 29 0D 0A 20 20 20 20 f,textptr)..
017F50: 49 46 20 6E 65 77 73 63 72 65 65 6E 20 54 48 45 IF newscreen THE
017F60: 4E 20 73 63 72 65 65 6E 28 74 65 78 74 70 74 72 N screen(textptr
017F70: 2C 79 29 0D 0A 20 20 20 20 65 72 72 6C 61 62 3A ,y).. errlab:
017F80: 0D 0A 20 20 20 20 49 46 20 62 75 66 66 70 72 69 .. IF buffpri
017F90: 6E 74 20 54 48 45 4E 0D 0A 20 20 20 20 24 28 0D nt THEN.. $(.
017FA0: 0A 20 20 20 20 20 20 74 61 62 28 31 2C 79 29 0D . tab(1,y).
017FB0: 0A 20 20 20 20 20 20 46 4F 52 20 61 20 3D 20 31 . FOR a = 1
017FC0: 20 54 4F 20 69 6E 62 75 66 66 21 30 2D 31 20 44 TO inbuff!0-1 D
017FD0: 4F 20 77 72 63 68 28 69 6E 62 75 66 66 21 61 29 O wrch(inbuff!a)
017FE0: 20 3B 20 73 70 61 63 65 73 28 38 30 2D 69 6E 62 ; spaces(80-inb
017FF0: 75 66 66 21 30 29 0D 0A 20 20 20 20 20 20 62 75 uff!0).. bu
018000: 73 90 20 61 6E 90 20 65 64 69 74 6F 72 20 6F 72 s. an. editor or
018010: 20 53 45 54 4B 45 59 53 2E 43 4F 4D 20 28 73 65 SETKEYS.COM (se
018020: 65 20 0D 8A 62 65 6C 6F 77 29 2C 20 74 6F 20 74 e ..below), to t
018030: 68 65 20 64 69 73 63 2E 0D 0A 3E 70 61 0D 0A E2 he disc...>pa...
018040: 45 6E 74 65 72 69 6E 67 20 61 6E 64 20 65 64 69 Entering and edi
018050: 74 69 6E 67 20 42 43 50 4C 20 70 72 6F 67 72 61 ting BCPL progra
018060: 6D 73 20 75 6E 64 65 72 20 43 50 2F 4D E2 0D 0A ms under CP/M...
018070: 0D 0A 09 41 6E 79 20 65 64 69 74 6F 72 20 6F 72 ...Any editor or
018080: 90 20 77 6F 72 64 90 20 70 72 6F 63 65 73 73 6F . word. processo
018090: 72 90 20 6D 61 79 90 20 62 65 90 90 75 73 65 64 r. may. be..used
0180A0: 90 20 66 6F 72 90 20 74 79 70 69 6E 67 20 69 6E . for. typing in
0180B0: 20 42 43 50 4C 20 0D 8A 70 72 6F 67 72 61 6D 73 BCPL ..programs
0180C0: 2C 20 61 73 20 6C 6F 6E 67 20 61 73 20 61 6E 20 , as long as an
0180D0: 41 53 43 49 49 20 66 69 6C 65 20 63 61 6E 20 62 ASCII file can b
0180E0: 65 20 70 72 6F 64 75 63 65 64 2E 0D 0A 09 54 68 e produced....Th
0180F0: 65 20 43 50 2F 4D 20 76 65 72 73 69 6F 6E 20 6F e CP/M version o
018100: 66 20 50 52 4F 54 45 58 54 90 20 69 73 20 65 73 f PROTEXT. is es
018110: 70 65 63 69 61 6C 6C 79 20 73 75 69 74 61 62 6C pecially suitabl
018120: 65 20 28 75 73 69 6E 67 20 70 72 6F 67 72 61 6D e (using program
018130: 20 0D 8A 6D 6F 64 65 29 2C 20 61 73 20 69 73 20 ..mode), as is
018140: 74 68 65 20 41 72 6E 6F 72 20 70 72 6F 67 72 61 the Arnor progra
018150: 6D 90 20 65 64 69 74 6F 72 90 20 73 75 70 70 6C m. editor. suppl
018160: 69 65 64 20 77 69 74 68 20 6F 74 68 65 72 20 41 ied with other A
018170: 72 6E 6F 72 20 43 50 2F 4D 20 0D 8A 70 72 6F 67 rnor CP/M ..prog
018180: 72 61 6D 73 2E 20 41 6C 74 65 72 6E 61 74 69 76 rams. Alternativ
018190: 65 6C 79 20 43 50 43 90 20 75 73 65 72 73 90 20 ely CPC. users.
0181A0: 63 61 6E 90 20 75 73 65 90 20 74 68 65 90 20 41 can. use. the. A
0181B0: 4D 53 44 4F 53 90 20 76 65 72 73 69 6F 6E 73 20 MSDOS. versions
0181C0: 6F 66 20 0D 8A 50 52 4F 54 45 58 54 20 6F 72 20 of ..PROTEXT or
0181D0: 4D 41 58 41 4D 2E 0D 0A 09 49 66 20 79 6F 75 20 MAXAM....If you
0181E0: 64 6F 20 6E 6F 74 20 68 61 76 65 20 61 90 20 73 do not have a. s
0181F0: 75 69 74 61 62 6C 65 90 20 65 64 69 74 6F 72 20 uitable. editor
018200: 66 66 70 72 69 6E 74 20 3A 3D 20 46 41 4C 53 45 ffprint := FALSE
018210: 0D 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 6C 61 .. $).. la
018220: 73 74 6B 65 79 20 3A 3D 20 62 75 66 66 65 72 28 stkey := buffer(
018230: 69 6E 62 75 66 66 29 0D 0A 20 20 20 20 6E 65 77 inbuff).. new
018240: 73 63 72 65 65 6E 20 3A 3D 20 46 41 4C 53 45 0D screen := FALSE.
018250: 0A 20 20 20 20 53 57 49 54 43 48 4F 4E 20 6C 61 . SWITCHON la
018260: 73 74 6B 65 79 20 49 4E 54 4F 0D 0A 20 20 20 20 stkey INTO..
018270: 24 28 0D 0A 20 20 20 20 20 20 43 41 53 45 20 31 $(.. CASE 1
018280: 32 37 3A 20 6E 65 77 73 63 72 65 65 6E 20 3A 3D 27: newscreen :=
018290: 20 54 52 55 45 20 3B 20 64 65 6C 65 74 65 6C 28 TRUE ; deletel(
0182A0: 69 6E 62 75 66 66 29 20 3B 20 45 4E 44 43 41 53 inbuff) ; ENDCAS
0182B0: 45 0D 0A 20 20 20 20 20 20 43 41 53 45 20 31 33 E.. CASE 13
0182C0: 3A 20 6E 65 77 73 63 72 65 65 6E 20 3A 3D 20 54 : newscreen := T
0182D0: 52 55 45 20 3B 20 61 64 64 6C 28 69 6E 62 75 66 RUE ; addl(inbuf
0182E0: 66 29 20 3B 20 45 4E 44 43 41 53 45 0D 0A 20 20 f) ; ENDCASE..
0182F0: 20 20 20 20 43 41 53 45 20 63 75 72 73 75 70 3A CASE cursup:
018300: 20 43 41 53 45 20 73 63 75 72 73 75 70 3A 20 75 CASE scursup: u
018310: 70 63 75 72 73 28 69 6E 62 75 66 66 29 20 3B 20 pcurs(inbuff) ;
018320: 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 20 43 ENDCASE.. C
018330: 41 53 45 20 63 75 72 73 64 6F 77 6E 3A 20 43 41 ASE cursdown: CA
018340: 53 45 20 73 63 75 72 73 64 6F 77 6E 3A 20 64 6F SE scursdown: do
018350: 77 6E 63 75 72 73 28 69 6E 62 75 66 66 29 20 3B wncurs(inbuff) ;
018360: 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 20 ENDCASE..
018370: 43 41 53 45 20 63 63 75 72 73 75 70 3A 20 73 75 CASE ccursup: su
018380: 70 63 75 72 73 28 69 6E 62 75 66 66 29 20 3B 20 pcurs(inbuff) ;
018390: 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 20 43 ENDCASE.. C
0183A0: 41 53 45 20 63 63 75 72 73 64 6F 77 6E 3A 20 73 ASE ccursdown: s
0183B0: 64 6F 77 6E 63 75 72 73 28 69 6E 62 75 66 66 29 downcurs(inbuff)
0183C0: 20 3B 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 ; ENDCASE..
0183D0: 20 20 43 41 53 45 20 63 6F 70 65 6E 73 71 3A 20 CASE copensq:
0183E0: 74 6F 70 28 69 6E 62 75 66 66 29 20 3B 20 45 4E top(inbuff) ; EN
0183F0: 44 43 41 53 45 0D 0A 20 20 20 20 20 20 43 41 53 DCASE.. CAS
018400: 74 68 65 20 70 72 6F 67 72 61 6D 20 42 45 44 43 the program BEDC
018410: 2E 43 4F 4D 20 63 61 6E 20 62 65 20 0D 8A 75 73 .COM can be ..us
018420: 65 64 2C 20 61 6E 64 20 74 68 69 73 20 73 68 6F ed, and this sho
018430: 75 6C 64 20 61 6C 73 6F 20 62 65 20 63 6F 70 69 uld also be copi
018440: 65 64 90 20 6F 6E 74 6F 90 20 74 68 65 20 73 79 ed. onto. the sy
018450: 73 74 65 6D 20 64 69 73 63 2E 20 54 68 69 73 20 stem disc. This
018460: 69 73 20 61 20 0D 8A 73 69 6D 70 6C 65 20 66 75 is a ..simple fu
018470: 6C 6C 20 73 63 72 65 65 6E 20 65 64 69 74 6F 72 ll screen editor
018480: 90 20 77 68 69 63 68 90 20 69 73 90 20 63 6F 6D . which. is. com
018490: 70 61 74 69 62 6C 65 90 20 77 69 74 68 20 50 52 patible. with PR
0184A0: 4F 54 45 58 54 20 65 64 69 74 69 6E 67 20 0D 8A OTEXT editing ..
0184B0: 63 6F 6D 6D 61 6E 64 73 2E 0D 0A 0D 0A 4E 6F 74 commands.....Not
0184C0: 65 3A 20 20 49 66 20 75 73 69 6E 67 20 42 45 44 e: If using BED
0184D0: 43 2E 43 4F 4D 20 77 69 74 68 20 61 20 50 43 57 C.COM with a PCW
0184E0: 38 32 35 36 2F 38 35 31 32 2C 20 74 68 65 20 6B 8256/8512, the k
0184F0: 65 79 73 20 6D 75 73 74 20 62 65 20 64 65 66 69 eys must be defi
018500: 6E 65 64 20 0D 8A 75 73 69 6E 67 90 20 53 45 54 ned ..using. SET
018510: 4B 45 59 53 2E 90 20 53 75 69 74 61 62 6C 65 90 KEYS.. Suitable.
018520: 20 64 65 66 69 6E 69 74 69 6F 6E 73 90 90 20 61 definitions.. a
018530: 72 65 90 90 20 70 72 6F 76 69 64 65 64 90 20 69 re.. provided. i
018540: 6E 90 20 74 68 65 90 20 66 69 6C 65 20 0D 8A 4B n. the. file ..K
018550: 45 59 44 45 46 53 2E 50 43 57 20 61 6E 64 20 74 EYDEFS.PCW and t
018560: 68 65 20 73 79 6E 74 61 78 20 75 73 65 64 20 69 he syntax used i
018570: 73 3A 20 20 20 20 53 45 54 4B 45 59 53 20 4B 45 s: SETKEYS KE
018580: 59 44 45 46 53 2E 50 43 57 0D 0A 0D 0A 09 54 68 YDEFS.PCW.....Th
018590: 69 73 20 63 61 6E 20 62 65 20 69 6E 63 6F 72 70 is can be incorp
0185A0: 6F 72 61 74 65 64 20 69 6E 74 6F 90 20 61 90 20 orated into. a.
0185B0: 50 52 4F 46 49 4C 45 2E 53 55 42 20 66 69 6C 65 PROFILE.SUB file
0185C0: 2C 20 69 6E 20 77 68 69 63 68 20 63 61 73 65 2C , in which case,
0185D0: 20 0D 8A 62 6F 74 68 20 53 45 54 4B 45 59 53 2E ..both SETKEYS.
0185E0: 43 4F 4D 20 61 6E 64 20 53 55 42 4D 49 54 2E 43 COM and SUBMIT.C
0185F0: 4F 4D 20 6D 75 73 74 90 20 61 6C 73 6F 90 20 62 OM must. also. b
018600: 45 20 63 63 6C 6F 73 65 73 71 3A 20 62 6F 74 74 E cclosesq: bott
018610: 6F 6D 28 69 6E 62 75 66 66 29 20 3B 20 45 4E 44 om(inbuff) ; END
018620: 43 41 53 45 0D 0A 20 20 20 20 20 20 43 41 53 45 CASE.. CASE
018630: 20 65 73 63 61 70 65 3A 20 43 41 53 45 20 73 74 escape: CASE st
018640: 6F 70 3A 20 6D 65 6E 75 28 69 6E 62 75 66 66 29 op: menu(inbuff)
018650: 20 3B 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 ; ENDCASE..
018660: 24 29 0D 0A 20 20 24 29 20 52 45 50 45 41 54 0D $).. $) REPEAT.
018670: 0A 24 29 0D 0A 2E 0D 0A 1A 6F 6F 20 6C 6F 6E 67 .$)......oo long
018680: 20 20 20 20 20 20 73 6F 66 74 65 6F 66 63 68 20 softeofch
018690: 3D 20 32 36 20 20 20 3B 20 65 6E 64 73 74 72 65 = 26 ; endstre
0186A0: 61 6D 63 68 20 3D 20 2D 31 0D 0A 20 20 20 20 20 amch = -1..
0186B0: 20 20 20 20 20 20 20 76 64 75 73 74 72 65 61 6D vdustream
0186C0: 20 3D 20 30 20 20 20 20 3B 20 70 72 69 6E 74 73 = 0 ; prints
0186D0: 74 72 65 61 6D 20 3D 20 31 0D 0A 20 20 20 20 20 tream = 1..
0186E0: 20 20 20 20 20 20 20 6D 61 78 69 6E 74 20 3D 20 maxint =
0186F0: 33 32 37 36 37 20 20 20 3B 20 6D 69 6E 69 6E 74 32767 ; minint
018700: 20 3D 20 2D 33 32 37 36 38 0D 0A 20 20 20 20 20 = -32768..
018710: 20 20 20 20 20 20 20 6E 65 77 6C 69 6E 65 63 68 newlinech
018720: 20 3D 20 32 36 39 0D 0A 20 20 20 20 20 20 20 20 = 269..
018730: 20 24 29 0D 0A 0D 0A 53 54 41 54 49 43 20 20 20 $)....STATIC
018740: 24 28 20 72 65 61 64 73 74 72 65 61 6D 20 3D 20 $( readstream =
018750: 30 20 3B 20 77 72 69 74 65 73 74 72 65 61 6D 20 0 ; writestream
018760: 3D 20 30 0D 0A 20 20 20 20 20 20 20 20 20 20 20 = 0..
018770: 20 72 65 74 75 72 6E 65 64 20 3D 20 30 20 20 20 returned = 0
018780: 3B 20 6C 61 73 74 63 68 61 72 20 3D 20 30 0D 0A ; lastchar = 0..
018790: 20 20 20 20 20 20 20 20 20 24 29 0D 0A 0D 0A 0D $).....
0187A0: 0A 2F 2A 2A 2A 2A 20 4F 55 54 50 55 54 20 52 4F ./**** OUTPUT RO
0187B0: 55 54 49 4E 45 53 20 2A 2A 2A 2A 2F 0D 0A 0D 0A UTINES ****/....
0187C0: 4C 45 54 20 77 72 63 68 28 63 68 61 72 29 20 42 LET wrch(char) B
0187D0: 45 0D 0A 24 28 0D 0A 20 20 53 57 49 54 43 48 4F E..$(.. SWITCHO
0187E0: 4E 20 77 72 69 74 65 73 74 72 65 61 6D 20 49 4E N writestream IN
0187F0: 54 4F 0D 0A 20 20 24 28 0D 0A 20 20 20 20 20 43 TO.. $(.. C
018800: 65 20 63 6F 70 69 65 64 20 6F 6E 74 6F 20 74 68 e copied onto th
018810: 65 20 77 6F 72 6B 69 6E 67 20 0D 8A 64 69 73 63 e working ..disc
018820: 2E 0D 0A 0D 0A 0D 0A E2 43 6F 6D 70 69 6C 69 6E ........Compilin
018830: 67 20 61 20 42 43 50 4C 20 70 72 6F 67 72 61 6D g a BCPL program
018840: 20 75 6E 64 65 72 20 43 50 2F 4D E2 0D 0A 0D 0A under CP/M.....
018850: 09 54 68 65 20 43 50 2F 4D 20 76 65 72 73 69 6F .The CP/M versio
018860: 6E 20 6F 66 90 20 74 68 65 90 20 63 6F 6D 70 69 n of. the. compi
018870: 6C 65 72 90 20 74 61 6B 65 73 90 20 61 90 20 66 ler. takes. a. f
018880: 69 6C 65 20 63 6F 6E 74 61 69 6E 69 6E 67 20 42 ile containing B
018890: 43 50 4C 20 0D 8A 73 6F 75 72 63 65 20 63 6F 64 CPL ..source cod
0188A0: 65 20 61 6E 64 20 70 72 6F 64 75 63 65 73 90 20 e and produces.
0188B0: 61 90 20 43 4F 4D 90 20 66 69 6C 65 90 20 63 6F a. COM. file. co
0188C0: 6E 74 61 69 6E 69 6E 67 90 20 61 6E 20 65 78 65 ntaining. an exe
0188D0: 63 75 74 61 62 6C 65 20 43 50 2F 4D 20 0D 8A 6F cutable CP/M ..o
0188E0: 62 6A 65 63 74 20 63 6F 64 65 20 70 72 6F 67 72 bject code progr
0188F0: 61 6D 2E 20 54 68 65 72 65 20 69 73 90 20 6E 6F am. There is. no
018900: 90 20 69 6E 74 65 72 6D 65 64 69 61 74 65 20 63 . intermediate c
018910: 6F 6D 70 69 6C 61 74 69 6F 6E 20 73 74 61 67 65 ompilation stage
018920: 2E 20 54 68 65 20 0D 8A 63 6F 6D 6D 61 6E 64 20 . The ..command
018930: 74 6F 20 63 6F 6D 70 69 6C 65 20 61 20 70 72 6F to compile a pro
018940: 67 72 61 6D 20 69 73 3A 0D 0A 0D 0A 09 62 63 70 gram is:.....bcp
018950: 6C 20 3C 73 6F 75 72 63 65 3E 20 3C 64 65 73 74 l <source> <dest
018960: 69 6E 61 74 69 6F 6E 3E 0D 0A 0D 0A 77 68 65 72 ination>....wher
018970: 65 20 3C 73 6F 75 72 63 65 3E 20 61 6E 64 20 3C e <source> and <
018980: 64 65 73 74 69 6E 61 74 69 6F 6E 3E 20 61 72 65 destination> are
018990: 20 74 68 65 20 6E 61 6D 65 73 20 6F 66 20 74 68 the names of th
0189A0: 65 20 66 69 6C 65 73 20 66 72 6F 6D 20 77 68 69 e files from whi
0189B0: 63 68 20 0D 8A 63 6F 64 65 20 69 73 20 74 61 6B ch ..code is tak
0189C0: 65 6E 20 61 6E 64 20 74 6F 20 77 68 69 63 68 20 en and to which
0189D0: 69 74 90 20 69 73 20 77 72 69 74 74 65 6E 2E 20 it. is written.
0189E0: 54 68 65 20 64 65 73 74 69 6E 61 74 69 6F 6E 20 The destination
0189F0: 66 69 6C 65 6E 61 6D 65 20 69 73 20 0D 8A 6F 70 filename is ..op
018A00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018A10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018A20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018A30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018A40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018A50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018A60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018A70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018A80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018A90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018AA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018AB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018AC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018AD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018AE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018AF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018B00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018B10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018B20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018B30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018B40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018B50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018B60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018B70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018B80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018B90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018BA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018BB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018BC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018BD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018BE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018BF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
018C00: 74 69 6F 6E 61 6C 20 61 6E 64 20 69 66 20 6F 6D tional and if om
018C10: 69 74 74 65 64 20 77 69 6C 6C 20 64 65 66 61 75 itted will defau
018C20: 6C 74 90 20 74 6F 90 20 74 68 65 90 20 73 6F 75 lt. to. the. sou
018C30: 72 63 65 20 66 69 6C 65 20 6E 61 6D 65 20 77 69 rce file name wi
018C40: 74 68 20 61 20 0D 8A 2E 43 4F 4D 20 65 78 74 65 th a ...COM exte
018C50: 6E 73 69 6F 6E 2E 20 54 68 65 20 65 78 74 65 6E nsion. The exten
018C60: 73 69 6F 6E 73 20 6F 6E 20 62 6F 74 68 90 20 66 sions on both. f
018C70: 69 6C 65 6E 61 6D 65 73 20 61 72 65 20 6F 70 74 ilenames are opt
018C80: 69 6F 6E 61 6C 2E 20 49 66 20 74 68 65 20 0D 8A ional. If the ..
018C90: 73 6F 75 72 63 65 20 6E 61 6D 65 20 68 61 73 20 source name has
018CA0: 6E 6F 20 65 78 74 65 6E 73 69 6F 6E 20 74 68 65 no extension the
018CB0: 6E 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 20 77 n the compiler w
018CC0: 69 6C 6C 20 66 69 72 73 74 20 73 65 61 72 63 68 ill first search
018CD0: 20 66 6F 72 20 61 20 0D 8A 66 69 6C 65 20 77 69 for a ..file wi
018CE0: 74 68 20 6E 6F 20 65 78 74 65 6E 73 69 6F 6E 20 th no extension
018CF0: 61 6E 64 20 74 68 65 6E 90 20 66 6F 72 90 20 61 and then. for. a
018D00: 90 20 66 69 6C 65 20 77 69 74 68 20 61 20 2E 42 . file with a .B
018D10: 20 65 78 74 65 6E 73 69 6F 6E 2E 20 54 68 65 20 extension. The
018D20: 0D 8A 73 61 6D 65 20 61 70 70 6C 69 65 73 20 69 ..same applies i
018D30: 6E 20 74 68 65 20 47 45 54 20 64 69 72 65 63 74 n the GET direct
018D40: 69 76 65 20 6F 6E 20 62 6F 74 68 20 43 50 2F 4D ive on both CP/M
018D50: 20 61 6E 64 20 41 4D 53 44 4F 53 20 76 65 72 73 and AMSDOS vers
018D60: 69 6F 6E 73 2E 20 49 66 20 0D 8A 74 68 65 20 64 ions. If ..the d
018D70: 65 73 74 69 6E 61 74 69 6F 6E 20 66 69 6C 65 20 estination file
018D80: 68 61 73 20 6E 6F 20 65 78 74 65 6E 73 69 6F 6E has no extension
018D90: 20 74 68 65 6E 20 74 68 69 73 20 77 69 6C 6C 20 then this will
018DA0: 64 65 66 61 75 6C 74 20 74 6F 20 2E 43 4F 4D 2E default to .COM.
018DB0: 0D 0A 0D 0A 09 65 2E 67 2E 09 62 63 70 6C 20 61 .....e.g..bcpl a
018DC0: 73 36 35 30 32 0D 0A 0D 0A 77 69 6C 6C 20 66 69 s6502....will fi
018DD0: 72 73 74 20 6C 6F 6F 6B 20 66 6F 72 20 74 68 65 rst look for the
018DE0: 20 66 69 6C 65 20 41 53 36 35 30 32 20 61 6E 64 file AS6502 and
018DF0: 20 69 66 20 69 74 20 69 73 20 6E 6F 74 20 70 72 if it is not pr
018E00: 66 65 20 70 6C 61 63 65 2C 20 61 73 20 61 20 62 fe place, as a b
018E10: 61 63 6B 75 70 2E 0D 0A 0D 0A 09 41 20 73 79 73 ackup......A sys
018E20: 74 65 6D 20 64 69 73 63 20 73 68 6F 75 6C 64 20 tem disc should
018E30: 62 65 90 20 63 72 65 61 74 65 64 20 75 73 69 6E be. created usin
018E40: 67 20 44 49 53 43 4B 49 54 20 28 44 49 53 43 4B g DISCKIT (DISCK
018E50: 49 54 33 2C 20 44 49 53 43 4B 49 54 32 20 0D 8A IT3, DISCKIT2 ..
018E60: 6F 72 20 46 4F 52 4D 41 54 2C 20 61 73 20 61 70 or FORMAT, as ap
018E70: 70 72 6F 70 72 69 61 74 65 20 6F 6E 90 20 74 68 propriate on. th
018E80: 65 90 20 43 50 43 90 20 72 61 6E 67 65 29 90 20 e. CPC. range).
018E90: 74 6F 90 20 66 6F 72 6D 61 74 20 61 20 64 69 73 to. format a dis
018EA0: 63 2E 20 54 68 65 20 0D 8A 66 69 72 73 74 20 66 c. The ..first f
018EB0: 6F 75 72 20 66 69 6C 65 73 90 20 69 6E 90 20 74 our files. in. t
018EC0: 68 65 90 20 61 62 6F 76 65 90 20 6C 69 73 74 90 he. above. list.
018ED0: 20 73 68 6F 75 6C 64 90 20 74 68 65 6E 90 20 62 should. then. b
018EE0: 65 20 63 6F 70 69 65 64 20 28 75 73 69 6E 67 20 e copied (using
018EF0: 0D 8A 50 49 50 29 20 66 72 6F 6D 20 74 68 65 90 ..PIP) from the.
018F00: 20 73 75 70 70 6C 69 65 64 90 20 42 43 50 4C 90 supplied. BCPL.
018F10: 20 64 69 73 63 90 20 6F 6E 74 6F 90 20 74 68 65 disc. onto. the
018F20: 90 20 6E 65 77 6C 79 90 20 66 6F 72 6D 61 74 74 . newly. formatt
018F30: 65 64 20 64 69 73 63 2C 20 0D 8A 74 6F 67 65 74 ed disc, ..toget
018F40: 68 65 72 20 77 69 74 68 20 28 69 66 20 75 73 69 her with (if usi
018F50: 6E 67 20 43 50 2F 4D 20 50 6C 75 73 29 90 20 74 ng CP/M Plus). t
018F60: 68 65 90 20 45 4D 53 20 66 69 6C 65 20 66 72 6F he. EMS file fro
018F70: 6D 20 74 68 65 20 43 50 2F 4D 20 53 79 73 74 65 m the CP/M Syste
018F80: 6D 20 0D 8A 55 74 69 6C 69 74 69 65 73 20 64 69 m ..Utilities di
018F90: 73 63 2E 0D 0A 09 54 68 69 73 20 77 69 6C 6C 20 sc....This will
018FA0: 63 72 65 61 74 65 20 61 90 20 64 69 73 63 90 20 create a. disc.
018FB0: 73 75 69 74 61 62 6C 65 90 20 66 6F 72 90 20 75 suitable. for. u
018FC0: 73 65 2C 90 20 62 75 74 90 20 79 6F 75 20 6D 69 se,. but. you mi
018FD0: 67 68 74 20 61 6C 73 6F 20 0D 8A 64 65 63 69 64 ght also ..decid
018FE0: 65 20 74 6F 20 61 64 64 20 66 75 72 74 68 65 72 e to add further
018FF0: 20 66 69 6C 65 73 2C 90 20 73 75 63 68 90 20 61 files,. such. a
019000: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
019010: 15 00 01 00 02 09 50 E5 15 00 C1 02 00 00 00 02 ......P.........
019020: 15 00 C6 02 00 00 00 02 15 00 C2 02 00 00 00 02 ................
019030: 15 00 C7 02 00 00 00 02 15 00 C3 02 00 00 00 02 ................
019040: 15 00 C8 02 00 00 00 02 15 00 C4 02 00 00 00 02 ................
019050: 15 00 C9 02 00 00 00 02 15 00 C5 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: 65 73 65 6E 74 20 77 69 6C 6C 20 74 68 65 6E 20 esent will then
019110: 0D 8A 6C 6F 6F 6B 20 66 6F 72 20 74 68 65 20 66 ..look for the f
019120: 69 6C 65 20 41 53 36 35 30 32 2E 42 2E 20 54 68 ile AS6502.B. Th
019130: 65 20 63 6F 6D 70 69 6C 65 72 90 20 77 69 6C 6C e compiler. will
019140: 20 72 65 61 64 20 74 68 69 73 20 66 69 6C 65 20 read this file
019150: 61 6E 64 20 74 68 65 6E 20 0D 8A 73 65 6E 64 20 and then ..send
019160: 74 68 65 20 6F 62 6A 65 63 74 20 63 6F 64 65 20 the object code
019170: 70 72 6F 64 75 63 65 64 20 74 6F 20 61 20 66 69 produced to a fi
019180: 6C 65 20 41 53 36 35 30 32 2E 43 4F 4D 2E 0D 0A le AS6502.COM...
019190: 3E 70 61 0D 0A 09 55 6E 64 65 72 20 43 50 2F 4D >pa...Under CP/M
0191A0: 20 50 6C 75 73 20 74 68 65 20 63 6F 6D 70 69 6C Plus the compil
0191B0: 65 72 90 20 72 65 74 75 72 6E 73 90 20 61 6E 90 er. returns. an.
0191C0: 20 65 72 72 6F 72 20 72 65 74 75 72 6E 20 63 6F error return co
0191D0: 64 65 20 69 66 20 61 6E 20 0D 8A 65 72 72 6F 72 de if an ..error
0191E0: 20 6F 63 63 75 72 72 65 64 2E 20 49 74 20 63 61 occurred. It ca
0191F0: 6E 20 74 68 65 6E 20 62 65 20 63 6F 6E 76 65 6E n then be conven
019200: 69 65 6E 74 20 74 6F 20 75 73 65 20 53 55 42 4D ient to use SUBM
019210: 49 54 20 74 6F 20 63 6F 6D 70 69 6C 65 20 61 6E IT to compile an
019220: 64 20 0D 8A 72 75 6E 20 74 68 65 20 70 72 6F 67 d ..run the prog
019230: 72 61 6D 20 77 69 74 68 20 61 90 20 73 69 6E 67 ram with a. sing
019240: 6C 65 90 20 63 6F 6D 6D 61 6E 64 2E 90 20 54 68 le. command.. Th
019250: 65 20 43 50 2F 4D 20 63 6F 6E 64 69 74 69 6F 6E e CP/M condition
019260: 61 6C 20 63 6F 6D 6D 61 6E 64 20 0D 8A 66 61 63 al command ..fac
019270: 69 6C 69 74 79 20 63 61 6E 20 62 65 20 75 73 65 ility can be use
019280: 64 20 73 6F 20 74 68 65 20 74 68 65 90 20 70 72 d so the the. pr
019290: 6F 67 72 61 6D 90 20 69 73 20 6F 6E 6C 79 20 65 ogram. is only e
0192A0: 78 65 63 75 74 65 64 20 69 66 20 6E 6F 20 65 72 xecuted if no er
0192B0: 72 6F 72 20 0D 8A 6F 63 63 75 72 72 65 64 2E 20 ror ..occurred.
0192C0: 46 6F 72 20 65 78 61 6D 70 6C 65 20 61 20 66 69 For example a fi
0192D0: 6C 65 20 43 4F 4D 50 49 4C 45 2E 53 55 42 20 6D le COMPILE.SUB m
0192E0: 61 79 20 63 6F 6E 74 61 69 6E 20 74 68 65 20 66 ay contain the f
0192F0: 6F 6C 6C 6F 77 69 6E 67 3A 0D 0A 0D 0A 09 09 62 ollowing:......b
019300: 6F 6E E2 0D 0A 0D 0A 09 46 69 74 20 74 68 65 20 on......Fit the
019310: 31 36 4B 20 45 50 52 4F 4D 20 69 6E 74 6F 90 20 16K EPROM into.
019320: 79 6F 75 72 90 20 52 4F 4D 20 62 6F 61 72 64 20 your. ROM board
019330: 66 6F 6C 6C 6F 77 69 6E 67 20 74 68 65 20 69 6E following the in
019340: 73 74 72 75 63 74 69 6F 6E 73 20 0D 8A 73 75 70 structions ..sup
019350: 70 6C 69 65 64 20 77 69 74 68 20 74 68 65 20 72 plied with the r
019360: 6F 6D 20 62 6F 61 72 64 2E 20 54 68 65 20 52 4F om board. The RO
019370: 4D 20 73 65 6C 65 63 74 69 6F 6E 20 6E 75 6D 62 M selection numb
019380: 65 72 20 69 73 20 6E 6F 74 20 63 72 69 74 69 63 er is not critic
019390: 61 6C 2C 20 0D 8A 74 68 6F 75 67 68 20 69 74 20 al, ..though it
0193A0: 6D 75 73 74 20 6E 6F 74 20 63 6C 61 73 68 20 77 must not clash w
0193B0: 69 74 68 20 61 6E 79 90 20 65 78 69 73 74 69 6E ith any. existin
0193C0: 67 20 52 4F 4D 73 2C 20 65 76 65 6E 20 69 66 20 g ROMs, even if
0193D0: 74 68 65 79 20 61 72 65 20 6E 6F 74 20 0D 8A 69 they are not ..i
0193E0: 6E 73 74 61 6C 6C 65 64 20 6F 6E 20 74 68 65 20 nstalled on the
0193F0: 52 4F 4D 20 62 6F 61 72 64 2E 20 28 54 68 65 20 ROM board. (The
019400: 64 69 73 63 90 20 72 6F 6D 20 66 6F 72 20 65 78 disc. rom for ex
019410: 61 6D 70 6C 65 20 75 73 65 73 20 52 4F 4D 20 73 ample uses ROM s
019420: 65 6C 65 63 74 20 0D 8A 37 29 2E 0D 0A 09 53 75 elect ..7)....Su
019430: 69 74 61 62 6C 65 20 62 6F 61 72 64 73 20 6D 61 itable boards ma
019440: 79 20 62 65 20 70 75 72 63 68 61 73 65 64 20 66 y be purchased f
019450: 72 6F 6D 90 20 41 72 6E 6F 72 20 69 66 20 79 6F rom. Arnor if yo
019460: 75 20 64 6F 20 6E 6F 74 20 61 6C 72 65 61 64 79 u do not already
019470: 20 0D 8A 68 61 76 65 20 6F 6E 65 2E 0D 0A 09 54 ..have one....T
019480: 68 65 20 42 43 50 4C 20 52 4F 4D 20 70 72 6F 76 he BCPL ROM prov
019490: 69 64 65 73 20 61 6E 20 65 78 74 72 65 6D 65 6C ides an extremel
0194A0: 79 20 63 6F 6E 76 65 6E 69 65 6E 74 20 61 6E 64 y convenient and
0194B0: 20 66 61 73 74 20 65 6E 76 69 72 6F 6E 6D 65 6E fast environmen
0194C0: 74 20 0D 8A 66 6F 72 20 64 65 76 65 6C 6F 70 69 t ..for developi
0194D0: 6E 67 20 42 43 50 4C 20 70 72 6F 67 72 61 6D 73 ng BCPL programs
0194E0: 2C 90 20 70 61 72 74 69 63 75 6C 61 72 6C 79 90 ,. particularly.
0194F0: 20 77 68 65 6E 90 20 75 73 65 64 20 69 6E 20 63 when. used in c
019500: 63 70 6C 20 70 72 6F 67 72 61 6D 2E 62 20 0D 0A cpl program.b ..
019510: 09 09 3C 79 0D 0A 09 09 3A 70 72 6F 67 72 61 6D ..<y....:program
019520: 0D 0A 09 54 68 65 20 73 65 63 6F 6E 64 20 6C 69 ...The second li
019530: 6E 65 20 63 61 75 73 65 73 20 74 68 65 90 20 70 ne causes the. p
019540: 72 65 76 69 6F 75 73 90 20 76 65 72 73 69 6F 6E revious. version
019550: 90 20 74 6F 20 62 65 20 64 65 6C 65 74 65 64 2E . to be deleted.
019560: 20 4E 6F 74 65 20 0D 8A 74 68 61 74 20 74 68 69 Note ..that thi
019570: 73 20 77 69 6C 6C 20 6F 6E 6C 79 20 77 6F 72 6B s will only work
019580: 90 20 75 6E 64 65 72 90 20 43 50 2F 4D 90 20 50 . under. CP/M. P
019590: 6C 75 73 20 28 43 50 43 36 31 32 38 20 61 6E 64 lus (CPC6128 and
0195A0: 20 50 43 57 38 32 35 36 2F 38 35 31 32 29 20 0D PCW8256/8512) .
0195B0: 8A 61 6E 64 20 6E 6F 74 20 75 6E 64 65 72 20 43 .and not under C
0195C0: 50 2F 4D 20 32 2E 32 2E 0D 0A 0D 0A 0D 0A E2 49 P/M 2.2........I
0195D0: 6E 63 6C 75 64 69 6E 67 20 6F 74 68 65 72 20 66 ncluding other f
0195E0: 69 6C 65 73 E2 0D 0A 0D 0A 09 4F 74 68 65 72 20 iles......Other
0195F0: 42 43 50 4C 20 73 6F 75 72 63 65 20 66 69 6C 65 BCPL source file
019600: 73 20 6D 61 79 20 62 65 20 69 6E 63 6C 75 64 65 s may be include
019610: 64 90 20 61 74 20 61 6E 79 20 70 6F 69 6E 74 20 d. at any point
019620: 69 6E 20 61 20 70 72 6F 67 72 61 6D 20 0D 8A 62 in a program ..b
019630: 79 20 75 73 69 6E 67 20 74 68 65 20 47 45 54 20 y using the GET
019640: 64 69 72 65 63 74 69 76 65 2E 0D 0A 0D 0A 09 47 directive......G
019650: 45 54 20 22 66 69 6C 65 22 0D 0A 0D 0A 63 61 75 ET "file"....cau
019660: 73 65 73 20 63 6F 6D 70 69 6C 61 74 69 6F 6E 20 ses compilation
019670: 74 6F 20 63 6F 6E 74 69 6E 75 65 20 77 69 74 68 to continue with
019680: 20 74 68 65 90 20 6E 65 77 90 20 66 69 6C 65 2E the. new. file.
019690: 90 20 41 74 20 74 68 65 20 65 6E 64 20 6F 66 20 . At the end of
0196A0: 74 68 65 20 0D 8A 69 6E 63 6C 75 64 65 64 20 66 the ..included f
0196B0: 69 6C 65 20 63 6F 6D 70 69 6C 61 74 69 6F 6E 20 ile compilation
0196C0: 72 65 73 75 6D 65 73 20 61 74 20 74 68 65 20 70 resumes at the p
0196D0: 6F 69 6E 74 20 61 66 74 65 72 20 74 68 65 20 47 oint after the G
0196E0: 45 54 20 64 69 72 65 63 74 69 76 65 20 0D 8A 69 ET directive ..i
0196F0: 6E 20 74 68 65 20 6F 72 69 67 69 6E 61 6C 20 66 n the original f
019700: 6F 6E 6A 75 6E 63 74 69 6F 6E 20 0D 8A 77 69 74 onjunction ..wit
019710: 68 20 50 52 4F 54 45 58 54 20 6F 72 20 4D 41 58 h PROTEXT or MAX
019720: 41 4D 2E 20 50 72 6F 67 72 61 6D 73 20 63 61 6E AM. Programs can
019730: 20 62 65 20 74 79 70 65 64 20 69 6E 20 75 73 69 be typed in usi
019740: 6E 67 20 50 52 4F 54 45 58 54 20 6F 72 20 4D 41 ng PROTEXT or MA
019750: 58 41 4D 20 0D 8A 61 6E 64 20 63 6F 6D 70 69 6C XAM ..and compil
019760: 65 64 20 64 69 72 65 63 74 6C 79 20 66 72 6F 6D ed directly from
019770: 20 6D 65 6D 6F 72 79 2E 0D 0A 09 54 68 65 20 52 memory....The R
019780: 4F 4D 20 76 65 72 73 69 6F 6E 90 20 6D 61 79 90 OM version. may.
019790: 20 6F 6E 6C 79 90 20 62 65 90 20 75 73 65 64 90 only. be. used.
0197A0: 20 6F 6E 90 20 74 68 65 90 20 43 50 43 34 36 34 on. the. CPC464
0197B0: 2C 20 43 50 43 36 36 34 2C 20 61 6E 64 20 0D 8A , CPC664, and ..
0197C0: 43 50 43 36 31 32 38 20 63 6F 6D 70 75 74 65 72 CPC6128 computer
0197D0: 73 2E 0D 0A 0D 0A 0D 0A E2 4C 69 73 74 20 6F 66 s........List of
0197E0: 20 66 69 6C 65 73 20 63 6F 6E 74 61 69 6E 65 64 files contained
0197F0: 20 6F 6E 20 74 68 65 20 64 69 73 63 20 2D 2D 20 on the disc --
019800: 41 4D 53 44 4F 53 20 73 69 64 65 E2 0D 0A 0D 0A AMSDOS side.....
019810: 54 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 66 69 The following fi
019820: 6C 65 73 20 61 72 65 20 6D 6F 73 74 20 69 6D 70 les are most imp
019830: 6F 72 74 61 6E 74 3A 0D 0A 0D 0A 42 43 50 4C 2E ortant:....BCPL.
019840: 42 41 53 09 09 74 68 65 20 6C 6F 61 64 65 72 20 BAS..the loader
019850: 66 6F 72 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 for the compiler
019860: 20 70 72 6F 67 72 61 6D 0D 0A 42 43 50 4C 2E 42 program..BCPL.B
019870: 49 4E 09 09 74 68 65 20 6D 61 69 6E 20 63 6F 6D IN..the main com
019880: 70 69 6C 65 72 20 70 72 6F 67 72 61 6D 0D 0A 41 piler program..A
019890: 4C 49 42 48 44 52 09 09 74 68 65 20 6D 61 69 6E LIBHDR..the main
0198A0: 20 49 2F 4F 20 6C 69 62 72 61 72 79 0D 0A 41 4C I/O library..AL
0198B0: 49 42 48 44 52 31 09 09 74 68 65 20 65 78 74 72 IBHDR1..the extr
0198C0: 61 20 49 2F 4F 20 6C 69 62 72 61 72 79 20 63 6F a I/O library co
0198D0: 6E 74 61 69 6E 69 6E 67 20 6C 65 73 73 20 75 73 ntaining less us
0198E0: 65 64 20 72 6F 75 74 69 6E 65 73 0D 0A 41 4D 53 ed routines..AMS
0198F0: 44 4F 53 09 09 61 20 66 75 72 74 68 65 72 90 20 DOS..a further.
019900: 69 6C 65 2E 0D 0A 0D 0A 09 4D 6F 73 74 20 70 72 ile......Most pr
019910: 6F 67 72 61 6D 73 20 77 69 6C 6C 20 73 74 61 72 ograms will star
019920: 74 20 62 79 20 69 6E 63 6C 75 64 69 6E 67 20 74 t by including t
019930: 68 65 20 6C 69 62 72 61 72 79 20 72 6F 75 74 69 he library routi
019940: 6E 65 73 3A 0D 0A 0D 0A 09 47 45 54 20 22 43 4C nes:.....GET "CL
019950: 49 42 48 44 52 22 0D 0A 09 47 45 54 20 22 43 4C IBHDR"...GET "CL
019960: 49 42 48 44 52 31 22 09 2F 2F 20 6F 66 74 65 6E IBHDR1".// often
019970: 20 6E 6F 74 20 6E 65 65 64 65 64 0D 0A 09 47 45 not needed...GE
019980: 54 20 22 44 45 42 55 47 22 09 09 2F 2F 20 75 73 T "DEBUG"..// us
019990: 65 64 20 77 68 65 6E 20 64 65 62 75 67 67 69 6E ed when debuggin
0199A0: 67 20 28 73 65 65 20 73 65 63 74 69 6F 6E 20 38 g (see section 8
0199B0: 6B 29 0D 0A 0D 0A 09 4E 6F 74 65 20 74 68 61 74 k).....Note that
0199C0: 20 74 68 65 20 47 45 54 20 64 69 72 65 63 74 69 the GET directi
0199D0: 76 65 73 20 74 6F 90 20 69 6E 63 6C 75 64 65 20 ves to. include
0199E0: 74 68 65 20 6C 69 62 72 61 72 79 20 72 6F 75 74 the library rout
0199F0: 69 6E 65 73 20 6D 75 73 74 20 0D 8A 62 65 20 69 ines must ..be i
019A00: 6E 20 74 68 65 20 6F 72 64 65 72 20 73 68 6F 77 n the order show
019A10: 6E 20 62 65 63 61 75 73 65 20 72 6F 75 74 69 6E n because routin
019A20: 65 73 20 69 6E 20 43 4C 49 42 48 44 52 31 20 63 es in CLIBHDR1 c
019A30: 61 6C 6C 20 6F 74 68 65 72 20 72 6F 75 74 69 6E all other routin
019A40: 65 73 20 0D 8A 69 6E 20 43 4C 49 42 48 44 52 2E es ..in CLIBHDR.
019A50: 0D 0A 0D 0A 09 43 6F 6D 70 69 6C 61 74 69 6F 6E .....Compilation
019A60: 20 73 74 6F 70 73 20 6F 6E 20 74 68 65 90 20 43 stops on the. C
019A70: 50 2F 4D 90 20 76 65 72 73 69 6F 6E 90 20 77 68 P/M. version. wh
019A80: 65 6E 90 20 61 90 90 66 75 6C 6C 20 73 74 6F 70 en. a..full stop
019A90: 20 27 2E 27 20 69 73 20 0D 8A 66 6F 75 6E 64 20 '.' is ..found
019AA0: 69 6E 20 74 68 65 20 69 6E 69 74 69 61 6C 20 73 in the initial s
019AB0: 6F 75 72 63 65 20 66 69 6C 65 90 20 77 68 69 63 ource file. whic
019AC0: 68 90 20 77 61 73 20 73 70 65 63 69 66 69 65 64 h. was specified
019AD0: 20 69 6E 20 74 68 65 20 6F 72 69 67 69 6E 61 6C in the original
019AE0: 20 0D 8A 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65 2C ..command line,
019AF0: 20 6F 72 20 77 68 65 6E 20 74 68 65 20 65 6E 64 or when the end
019B00: 49 2F 4F 90 20 6C 69 62 72 61 72 79 90 20 63 6F I/O. library. co
019B10: 6E 74 61 69 6E 69 6E 67 90 20 67 72 61 70 68 69 ntaining. graphi
019B20: 63 73 20 72 6F 75 74 69 6E 65 73 20 0D 8A 44 45 cs routines ..DE
019B30: 42 55 47 09 09 61 20 72 6F 75 74 69 6E 65 20 75 BUG..a routine u
019B40: 73 65 66 75 6C 20 66 6F 72 20 64 65 62 75 67 67 seful for debugg
019B50: 69 6E 67 20 42 43 50 4C 20 70 72 6F 67 72 61 6D ing BCPL program
019B60: 73 0D 0A 3E 70 61 0D 0A 54 68 65 20 64 69 73 63 s..>pa..The disc
019B70: 20 61 6C 73 6F 20 63 6F 6E 74 61 69 6E 73 20 74 also contains t
019B80: 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 65 78 61 he following exa
019B90: 6D 70 6C 65 20 66 69 6C 65 73 3A 0D 0A 0D 0A 42 mple files:....B
019BA0: 45 44 2E 42 09 09 42 43 50 4C 20 65 64 69 74 6F ED.B..BCPL edito
019BB0: 72 20 73 6F 75 72 63 65 20 63 6F 64 65 2C 20 41 r source code, A
019BC0: 4D 53 44 4F 53 20 76 65 72 73 69 6F 6E 0D 0A 42 MSDOS version..B
019BD0: 45 44 2E 42 49 4E 09 09 42 43 50 4C 20 65 64 69 ED.BIN..BCPL edi
019BE0: 74 6F 72 20 6F 62 6A 65 63 74 20 63 6F 64 65 2C tor object code,
019BF0: 20 41 4D 53 44 4F 53 20 76 65 72 73 69 6F 6E 0D AMSDOS version.
019C00: 0A 42 45 44 31 2E 42 09 09 61 20 66 69 6C 65 20 .BED1.B..a file
019C10: 63 6F 6E 74 61 69 6E 69 6E 67 20 64 69 72 65 63 containing direc
019C20: 74 69 76 65 73 20 74 6F 20 63 6F 6D 70 69 6C 65 tives to compile
019C30: 20 42 45 44 0D 0A 44 49 53 2E 42 09 09 61 20 5A BED..DIS.B..a Z
019C40: 38 30 20 64 69 73 61 73 73 65 6D 62 6C 65 72 20 80 disassembler
019C50: 77 72 69 74 74 65 6E 20 69 6E 20 42 43 50 4C 0D written in BCPL.
019C60: 0A 49 4E 56 41 44 45 2E 42 09 09 61 20 73 70 61 .INVADE.B..a spa
019C70: 63 65 20 69 6E 76 61 64 65 72 73 20 67 61 6D 65 ce invaders game
019C80: 2C 20 77 72 69 74 74 65 6E 20 69 6E 20 42 43 50 , written in BCP
019C90: 4C 0D 0A 0D 0A E2 4C 6F 61 64 69 6E 67 20 74 68 L.....Loading th
019CA0: 65 20 41 4D 53 44 4F 53 20 64 69 73 63 20 76 65 e AMSDOS disc ve
019CB0: 72 73 69 6F 6E E2 0D 0A 0D 0A 09 54 6F 20 6C 6F rsion......To lo
019CC0: 61 64 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 20 ad the compiler
019CD0: 74 79 70 65 3A 09 09 52 55 4E 22 42 43 50 4C 22 type:..RUN"BCPL"
019CE0: 0D 0A 0D 0A 0D 0A E2 45 6E 74 65 72 69 6E 67 20 .......Entering
019CF0: 61 6E 64 20 65 64 69 74 69 6E 67 20 42 43 50 4C and editing BCPL
019D00: 20 6F 66 20 74 68 61 74 20 66 69 6C 65 20 69 73 of that file is
019D10: 20 72 65 61 63 68 65 64 2E 0D 0A 3E 70 61 0D 0A reached...>pa..
019D20: 3E 63 65 20 E2 33 2E 20 55 53 49 4E 47 20 41 52 >ce .3. USING AR
019D30: 4E 4F 52 20 42 43 50 4C 20 55 4E 44 45 52 20 41 NOR BCPL UNDER A
019D40: 4D 53 44 4F 53 E2 0D 0A 0D 0A 0D 0A E2 4E 4F 54 MSDOS........NOT
019D50: 45 3A E2 20 50 43 57 38 32 35 36 2F 38 35 31 32 E:. PCW8256/8512
019D60: 20 75 73 65 72 73 20 73 68 6F 75 6C 64 20 69 67 users should ig
019D70: 6E 6F 72 65 20 74 68 69 73 20 63 68 61 70 74 65 nore this chapte
019D80: 72 2E 0D 0A 0D 0A 09 42 43 50 4C 20 6D 61 79 20 r......BCPL may
019D90: 62 65 20 75 73 65 64 20 66 72 6F 6D 20 41 6D 73 be used from Ams
019DA0: 64 6F 73 20 6F 6E 90 20 74 68 65 20 43 50 43 20 dos on. the CPC
019DB0: 72 61 6E 67 65 2C 20 65 69 74 68 65 72 20 69 6E range, either in
019DC0: 20 52 4F 4D 20 66 6F 72 6D 20 0D 8A 6F 72 20 66 ROM form ..or f
019DD0: 72 6F 6D 20 61 20 64 69 73 63 2E 20 49 66 20 74 rom a disc. If t
019DE0: 68 65 20 52 4F 4D 90 20 76 65 72 73 69 6F 6E 90 he ROM. version.
019DF0: 20 69 73 20 62 65 69 6E 67 20 75 73 65 64 2C 20 is being used,
019E00: 74 68 65 20 66 69 6C 65 73 20 42 43 50 4C 2E 42 the files BCPL.B
019E10: 41 53 20 0D 8A 61 6E 64 20 42 43 50 4C 2E 42 49 AS ..and BCPL.BI
019E20: 4E 20 61 72 65 20 6E 6F 74 20 72 65 71 75 69 72 N are not requir
019E30: 65 64 2C 20 74 68 6F 75 67 68 90 20 74 68 65 20 ed, though. the
019E40: 6C 69 62 72 61 72 79 20 66 69 6C 65 73 20 77 69 library files wi
019E50: 6C 6C 20 73 74 69 6C 6C 20 62 65 20 0D 8A 72 65 ll still be ..re
019E60: 71 75 69 72 65 64 2E 0D 0A 0D 0A 4E 4F 54 45 3A quired.....NOTE:
019E70: 20 55 6E 64 65 72 20 6E 6F 20 63 69 72 63 75 6D Under no circum
019E80: 73 74 61 6E 63 65 73 20 73 68 6F 75 6C 64 90 20 stances should.
019E90: 74 68 65 90 20 6F 72 69 67 69 6E 61 6C 90 20 64 the. original. d
019EA0: 69 73 63 90 20 62 65 20 75 73 65 64 20 61 73 20 isc. be used as
019EB0: 61 20 0D 8A 77 6F 72 6B 69 6E 67 20 64 69 73 63 a ..working disc
019EC0: 20 66 6F 72 20 6E 6F 72 6D 61 6C 20 75 73 65 2E for normal use.
019ED0: 20 54 68 65 90 20 72 65 71 75 69 72 65 64 20 66 The. required f
019EE0: 69 6C 65 73 20 73 68 6F 75 6C 64 20 62 65 20 63 iles should be c
019EF0: 6F 70 69 65 64 20 6F 6E 74 6F 20 0D 8A 61 20 73 opied onto ..a s
019F00: 20 70 72 6F 67 72 61 6D 73 20 75 6E 64 65 72 20 programs under
019F10: 41 4D 53 44 4F 53 E2 0D 0A 0D 0A 09 41 6E 79 20 AMSDOS......Any
019F20: 65 64 69 74 6F 72 20 6F 72 90 20 77 6F 72 64 90 editor or. word.
019F30: 20 70 72 6F 63 65 73 73 6F 72 90 20 6D 61 79 90 processor. may.
019F40: 20 62 65 90 90 75 73 65 64 90 20 66 6F 72 90 20 be..used. for.
019F50: 74 79 70 69 6E 67 20 69 6E 20 42 43 50 4C 20 0D typing in BCPL .
019F60: 8A 70 72 6F 67 72 61 6D 73 2C 20 61 73 20 6C 6F .programs, as lo
019F70: 6E 67 20 61 73 20 61 6E 20 41 53 43 49 49 20 66 ng as an ASCII f
019F80: 69 6C 65 20 63 61 6E 20 62 65 20 70 72 6F 64 75 ile can be produ
019F90: 63 65 64 2E 0D 0A 09 50 52 4F 54 45 58 54 20 28 ced....PROTEXT (
019FA0: 75 73 69 6E 67 20 70 72 6F 67 72 61 6D 20 6D 6F using program mo
019FB0: 64 65 29 20 61 6E 64 20 4D 41 58 41 4D 20 61 72 de) and MAXAM ar
019FC0: 65 20 65 73 70 65 63 69 61 6C 6C 79 20 73 75 69 e especially sui
019FD0: 74 61 62 6C 65 2C 20 69 6E 20 0D 8A 70 61 72 74 table, in ..part
019FE0: 69 63 75 6C 61 72 20 74 68 65 20 52 4F 4D 20 76 icular the ROM v
019FF0: 65 72 73 69 6F 6E 73 20 61 72 65 20 72 65 63 6F ersions are reco
01A000: 6D 6D 65 6E 64 65 64 20 66 6F 72 20 63 6F 6E 76 mmended for conv
01A010: 65 6E 69 65 6E 63 65 2E 0D 0A 09 49 66 20 79 6F enience....If yo
01A020: 75 20 64 6F 20 6E 6F 74 20 68 61 76 65 20 61 90 u do not have a.
01A030: 20 73 75 69 74 61 62 6C 65 90 20 65 64 69 74 6F suitable. edito
01A040: 72 90 20 74 68 65 20 70 72 6F 67 72 61 6D 20 42 r. the program B
01A050: 45 44 2E 42 49 4E 20 63 61 6E 20 62 65 20 0D 8A ED.BIN can be ..
01A060: 75 73 65 64 2E 20 54 68 69 73 20 69 73 20 61 20 used. This is a
01A070: 73 69 6D 70 6C 65 90 20 66 75 6C 6C 90 20 73 63 simple. full. sc
01A080: 72 65 65 6E 90 20 65 64 69 74 6F 72 90 20 77 68 reen. editor. wh
01A090: 69 63 68 20 69 73 20 63 6F 6D 70 61 74 69 62 6C ich is compatibl
01A0A0: 65 20 77 69 74 68 20 0D 8A 50 52 4F 54 45 58 54 e with ..PROTEXT
01A0B0: 20 65 64 69 74 69 6E 67 20 63 6F 6D 6D 61 6E 64 editing command
01A0C0: 73 2E 0D 0A 09 41 6E 79 20 73 6F 75 72 63 65 20 s....Any source
01A0D0: 66 69 6C 65 73 20 63 72 65 61 74 65 64 20 73 68 files created sh
01A0E0: 6F 75 6C 64 20 70 72 65 66 65 72 61 62 6C 79 20 ould preferably
01A0F0: 62 65 20 73 61 76 65 64 20 74 6F 20 64 69 73 63 be saved to disc
01A100: 79 73 74 65 6D 20 64 69 73 63 20 61 6E 64 20 74 ystem disc and t
01A110: 68 65 20 6F 72 69 67 69 6E 61 6C 20 72 65 74 61 he original reta
01A120: 69 6E 65 64 20 69 6E 20 61 20 73 61 66 65 20 70 ined in a safe p
01A130: 6C 61 63 65 2C 20 61 73 20 61 20 62 61 63 6B 75 lace, as a backu
01A140: 70 2E 0D 0A 0D 0A E2 43 72 65 61 74 69 6E 67 20 p......Creating
01A150: 61 20 57 6F 72 6B 69 6E 67 20 64 69 73 63 E2 0D a Working disc..
01A160: 0A 0D 0A 09 41 20 6E 65 77 20 64 69 73 63 20 73 ....A new disc s
01A170: 68 6F 75 6C 64 20 62 65 20 66 6F 72 6D 61 74 74 hould be formatt
01A180: 65 64 90 20 61 6E 64 90 20 74 68 65 90 20 66 69 ed. and. the. fi
01A190: 72 73 74 20 73 69 78 20 66 69 6C 65 73 20 66 72 rst six files fr
01A1A0: 6F 6D 20 74 68 65 20 0D 8A 6C 69 73 74 20 62 65 om the ..list be
01A1B0: 6C 6F 77 20 73 68 6F 75 6C 64 20 62 65 20 63 6F low should be co
01A1C0: 70 69 65 64 20 6F 6E 74 6F 20 69 74 2C 20 75 73 pied onto it, us
01A1D0: 69 6E 67 20 65 69 74 68 65 72 20 46 49 4C 45 43 ing either FILEC
01A1E0: 4F 50 59 20 6F 72 20 50 49 50 20 66 72 6F 6D 20 OPY or PIP from
01A1F0: 0D 8A 43 50 2F 4D 2C 20 64 65 70 65 6E 64 69 6E ..CP/M, dependin
01A200: 67 20 6F 6E 20 74 68 65 20 6D 6F 64 65 6C 20 62 g on the model b
01A210: 65 69 6E 67 20 75 73 65 64 2C 90 20 6F 72 20 74 eing used,. or t
01A220: 68 65 20 43 4F 50 59 20 63 6F 6D 6D 61 6E 64 20 he COPY command
01A230: 66 72 6F 6D 20 74 68 65 20 0D 8A 55 54 4F 50 49 from the ..UTOPI
01A240: 41 20 52 4F 4D 20 69 66 20 74 68 61 74 20 69 73 A ROM if that is
01A250: 20 69 6E 73 74 61 6C 6C 65 64 2E 90 20 54 68 69 installed.. Thi
01A260: 73 90 20 77 69 6C 6C 20 70 72 6F 64 75 63 65 20 s. will produce
01A270: 61 20 64 69 73 63 20 63 6F 6E 74 61 69 6E 69 6E a disc containin
01A280: 67 20 0D 8A 61 6C 6C 20 74 68 65 20 65 73 73 65 g ..all the esse
01A290: 6E 74 69 61 6C 20 66 69 6C 65 73 2E 20 52 4F 4D ntial files. ROM
01A2A0: 20 75 73 65 72 73 20 63 61 6E 20 6F 6D 69 74 20 users can omit
01A2B0: 74 68 65 20 66 69 72 73 74 20 74 77 6F 20 66 69 the first two fi
01A2C0: 6C 65 73 20 63 61 6C 6C 65 64 20 0D 8A 42 43 50 les called ..BCP
01A2D0: 4C 2E 42 41 53 20 61 6E 64 20 42 43 50 4C 2E 42 L.BAS and BCPL.B
01A2E0: 49 4E 2E 0D 0A 0D 0A E2 49 6E 73 74 61 6C 6C 69 IN......Installi
01A2F0: 6E 67 20 74 68 65 20 52 4F 4D 20 76 65 72 73 69 ng the ROM versi
01A300: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
01A310: 16 00 01 00 02 09 4E E5 16 00 C1 02 00 00 00 02 ......N.........
01A320: 16 00 C6 02 00 00 00 02 16 00 C2 02 00 00 00 02 ................
01A330: 16 00 C7 02 00 00 00 02 16 00 C3 02 00 00 00 02 ................
01A340: 16 00 C8 02 00 00 00 02 16 00 C4 02 00 00 00 02 ................
01A350: 16 00 C9 02 00 00 00 02 16 00 C5 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: 20 77 69 74 68 20 61 20 0D 8A 27 2E 42 27 20 73 with a ..'.B' s
01A410: 75 66 66 69 78 20 74 6F 20 74 68 65 90 20 66 69 uffix to the. fi
01A420: 6C 65 6E 61 6D 65 2E 90 20 54 68 69 73 90 20 69 lename.. This. i
01A430: 73 90 20 6E 6F 74 90 20 65 73 73 65 6E 74 69 61 s. not. essentia
01A440: 6C 2C 20 62 75 74 20 64 6F 65 73 20 68 65 6C 70 l, but does help
01A450: 20 0D 8A 69 64 65 6E 74 69 66 79 20 74 68 65 20 ..identify the
01A460: 74 79 70 65 20 6F 66 20 66 69 6C 65 73 20 6F 6E type of files on
01A470: 20 61 20 64 69 73 63 2E 0D 0A 0D 0A E2 43 6F 6D a disc......Com
01A480: 70 69 6C 69 6E 67 20 61 20 42 43 50 4C 20 70 72 piling a BCPL pr
01A490: 6F 67 72 61 6D 20 75 6E 64 65 72 20 41 4D 53 44 ogram under AMSD
01A4A0: 4F 53 E2 0D 0A 0D 0A 09 41 70 61 72 74 20 66 72 OS......Apart fr
01A4B0: 6F 6D 20 68 61 76 69 6E 67 20 74 6F 90 20 6C 6F om having to. lo
01A4C0: 61 64 90 20 74 68 65 90 20 64 69 73 63 90 20 76 ad. the. disc. v
01A4D0: 65 72 73 69 6F 6E 2C 90 20 74 68 65 90 20 64 69 ersion,. the. di
01A4E0: 73 63 20 61 6E 64 20 52 4F 4D 20 0D 8A 76 65 72 sc and ROM ..ver
01A4F0: 73 69 6F 6E 73 20 61 72 65 20 75 73 65 64 20 69 sions are used i
01A500: 6E 20 65 78 61 63 74 6C 79 20 74 68 65 90 20 73 n exactly the. s
01A510: 61 6D 65 90 20 77 61 79 2E 20 54 68 65 72 65 20 ame. way. There
01A520: 61 72 65 2C 20 68 6F 77 65 76 65 72 2C 20 61 20 are, however, a
01A530: 66 65 77 20 0D 8A 64 69 66 66 65 72 65 6E 63 65 few ..difference
01A540: 73 20 77 68 65 6E 20 63 6F 6D 70 61 72 65 64 20 s when compared
01A550: 77 69 74 68 20 74 68 65 90 20 43 50 2F 4D 20 76 with the. CP/M v
01A560: 65 72 73 69 6F 6E 2E 20 54 68 65 20 6D 61 6A 6F ersion. The majo
01A570: 72 20 64 69 66 66 65 72 65 6E 63 65 20 0D 8A 69 r difference ..i
01A580: 73 20 74 68 61 74 20 74 68 65 20 43 50 2F 4D 20 s that the CP/M
01A590: 76 65 72 73 69 6F 6E 20 61 6C 6C 6F 77 73 90 20 version allows.
01A5A0: 74 68 65 90 20 69 6E 63 6C 75 73 69 6F 6E 20 6F the. inclusion o
01A5B0: 66 20 73 6F 75 72 63 65 20 66 69 6C 65 73 20 77 f source files w
01A5C0: 69 74 68 69 6E 20 0D 8A 6F 74 68 65 72 20 73 6F ithin ..other so
01A5D0: 75 72 63 65 20 66 69 6C 65 73 2E 20 54 68 65 20 urce files. The
01A5E0: 41 4D 53 44 4F 53 20 76 65 72 73 69 6F 6E 20 64 AMSDOS version d
01A5F0: 6F 65 73 20 6E 6F 74 20 61 6C 6C 6F 77 20 74 68 oes not allow th
01A600: 64 20 61 67 61 69 6E 20 62 65 66 6F 72 65 20 75 d again before u
01A610: 73 69 6E 67 20 47 4F 2E 0D 0A 09 57 69 74 68 20 sing GO....With
01A620: 6C 61 72 67 65 90 20 70 72 6F 67 72 61 6D 73 90 large. programs.
01A630: 20 69 74 90 20 69 73 90 20 71 75 69 74 65 90 20 it. is. quite.
01A640: 6C 69 6B 65 6C 79 90 20 74 68 61 74 90 20 74 68 likely. that. th
01A650: 65 72 65 90 20 77 69 6C 6C 90 20 62 65 20 0D 8A ere. will. be ..
01A660: 69 6E 73 75 66 66 69 63 69 65 6E 74 20 6D 65 6D insufficient mem
01A670: 6F 72 79 20 74 6F 20 63 6F 6D 70 69 6C 65 20 74 ory to compile t
01A680: 6F 90 20 6D 65 6D 6F 72 79 2E 90 20 54 68 65 72 o. memory.. Ther
01A690: 65 20 61 72 65 20 74 68 72 65 65 20 63 6F 75 72 e are three cour
01A6A0: 73 65 73 20 6F 66 20 0D 8A 61 63 74 69 6F 6E 20 ses of ..action
01A6B0: 74 68 61 74 20 6D 61 79 20 62 65 20 74 61 6B 65 that may be take
01A6C0: 6E 20 68 65 72 65 3A 0D 0A 09 28 69 29 20 20 20 n here:...(i)
01A6D0: 69 66 20 79 6F 75 20 61 72 65 20 75 73 69 6E 67 if you are using
01A6E0: 20 74 68 65 20 64 69 73 63 90 20 76 65 72 73 69 the disc. versi
01A6F0: 6F 6E 2C 90 20 62 75 79 20 61 20 52 4F 4D 20 62 on,. buy a ROM b
01A700: 6F 61 72 64 20 61 6E 64 20 75 73 65 20 0D 8A 74 oard and use ..t
01A710: 68 65 20 52 4F 4D 20 76 65 72 73 69 6F 6E 2E 20 he ROM version.
01A720: 59 6F 75 20 77 69 6C 6C 20 67 61 69 6E 20 61 6E You will gain an
01A730: 20 65 78 74 72 61 20 31 36 4B 20 6F 66 20 6D 65 extra 16K of me
01A740: 6D 6F 72 79 2E 0D 0A 09 28 69 69 29 20 20 63 6F mory....(ii) co
01A750: 6D 70 69 6C 65 20 64 69 72 65 63 74 6C 79 20 74 mpile directly t
01A760: 6F 20 64 69 73 63 2E 0D 0A 09 28 69 69 69 29 20 o disc....(iii)
01A770: 75 73 65 20 74 68 65 20 43 50 2F 4D 20 76 65 72 use the CP/M ver
01A780: 73 69 6F 6E 2E 0D 0A 0D 0A 0D 0A E2 45 78 74 72 sion........Extr
01A790: 61 20 66 61 63 69 6C 69 74 69 65 73 20 66 6F 72 a facilities for
01A7A0: 20 52 4F 4D 20 75 73 65 72 73 E2 0D 0A 0D 0A 52 ROM users.....R
01A7B0: 4F 4D 4F 4E 37 0D 0A 0D 0A 09 53 6F 6D 65 20 70 OMON7.....Some p
01A7C0: 72 6F 67 72 61 6D 73 90 20 28 70 61 72 74 69 63 rograms. (partic
01A7D0: 75 6C 61 72 6C 79 90 20 67 61 6D 65 73 29 90 20 ularly. games).
01A7E0: 77 69 6C 6C 90 20 6E 6F 74 90 20 72 75 6E 90 20 will. not. run.
01A7F0: 77 69 74 68 90 20 61 90 20 72 6F 6D 20 0D 8A 69 with. a. rom ..i
01A800: 69 73 20 61 6C 74 68 6F 75 67 68 20 69 74 20 0D is although it .
01A810: 8A 64 6F 65 73 20 61 6C 6C 6F 77 20 74 68 65 20 .does allow the
01A820: 69 6E 63 6C 75 73 69 6F 6E 90 20 6F 66 90 20 73 inclusion. of. s
01A830: 74 6F 72 65 64 90 20 50 52 4F 54 45 58 54 2F 4D tored. PROTEXT/M
01A840: 41 58 41 4D 90 20 74 65 78 74 2E 20 44 75 65 20 AXAM. text. Due
01A850: 74 6F 20 74 68 69 73 20 0D 8A 6C 69 6D 69 74 61 to this ..limita
01A860: 74 69 6F 6E 20 74 68 65 20 41 4D 53 44 4F 53 20 tion the AMSDOS
01A870: 76 65 72 73 69 6F 6E 20 68 61 73 20 61 90 20 73 version has a. s
01A880: 69 6D 70 6C 65 20 66 72 6F 6E 74 20 65 6E 64 20 imple front end
01A890: 77 68 69 63 68 20 61 6C 6C 6F 77 73 20 79 6F 75 which allows you
01A8A0: 20 0D 8A 74 6F 20 74 79 70 65 20 69 6E 20 73 6F ..to type in so
01A8B0: 75 72 63 65 20 63 6F 64 65 20 77 68 69 63 68 90 urce code which.
01A8C0: 20 77 69 6C 6C 90 20 74 68 65 6E 90 20 62 65 20 will. then. be
01A8D0: 73 75 62 6D 69 74 74 65 64 20 64 69 72 65 63 74 submitted direct
01A8E0: 6C 79 20 74 6F 20 74 68 65 20 0D 8A 63 6F 6D 70 ly to the ..comp
01A8F0: 69 6C 65 72 2E 20 0D 0A 3E 70 61 0D 0A 09 54 6F iler. ..>pa...To
01A900: 20 72 75 6E 20 74 68 65 20 63 6F 6D 70 69 6C 65 run the compile
01A910: 72 20 74 79 70 65 3A 20 20 7C 42 43 50 4C 0D 0A r type: |BCPL..
01A920: 0D 0A 09 54 68 65 20 73 63 72 65 65 6E 20 77 69 ...The screen wi
01A930: 6C 6C 20 63 6C 65 61 72 20 61 6E 64 20 74 68 65 ll clear and the
01A940: 20 42 43 50 4C 20 73 69 67 6E 6F 6E 20 6D 65 73 BCPL signon mes
01A950: 73 61 67 65 20 77 69 6C 6C 20 62 65 20 70 72 69 sage will be pri
01A960: 6E 74 65 64 2E 20 0D 8A 59 6F 75 20 77 69 6C 6C nted. ..You will
01A970: 20 74 68 65 6E 20 62 65 20 70 72 6F 6D 70 74 65 then be prompte
01A980: 64 20 77 69 74 68 20 22 4F 75 74 70 75 74 90 20 d with "Output.
01A990: 66 69 6C 65 20 6E 61 6D 65 3F 22 2E 20 54 68 65 file name?". The
01A9A0: 20 6E 61 6D 65 20 79 6F 75 20 74 79 70 65 20 0D name you type .
01A9B0: 8A 68 65 72 65 20 69 73 20 74 68 65 20 6E 61 6D .here is the nam
01A9C0: 65 20 6F 66 20 74 68 65 20 66 69 6C 65 90 20 69 e of the file. i
01A9D0: 6E 74 6F 20 77 68 69 63 68 20 74 68 65 20 70 72 nto which the pr
01A9E0: 6F 67 72 61 6D 20 77 69 6C 6C 20 62 65 20 63 6F ogram will be co
01A9F0: 6D 70 69 6C 65 64 2E 20 0D 8A 49 74 20 69 73 20 mpiled. ..It is
01AA00: 6E 73 74 61 6C 6C 65 64 2E 20 54 68 65 20 63 6F nstalled. The co
01AA10: 6D 6D 61 6E 64 20 7C 52 4F 4D 4F 4E 37 20 69 73 mmand |ROMON7 is
01AA20: 20 70 72 6F 76 69 64 65 64 20 74 6F 20 65 6E 61 provided to ena
01AA30: 62 6C 65 20 74 68 65 20 42 43 50 4C 20 72 6F 6D ble the BCPL rom
01AA40: 20 28 61 6E 64 20 0D 8A 61 6E 79 20 6F 74 68 65 (and ..any othe
01AA50: 72 73 29 20 74 6F 20 62 65 20 74 75 72 6E 65 64 rs) to be turned
01AA60: 20 6F 66 66 2E 20 41 6C 6C 90 20 72 6F 6D 73 90 off. All. roms.
01AA70: 20 65 78 63 65 70 74 20 74 68 65 20 41 4D 53 44 except the AMSD
01AA80: 4F 53 20 72 6F 6D 20 77 69 6C 6C 20 62 65 20 0D OS rom will be .
01AA90: 8A 74 75 72 6E 65 64 20 6F 66 66 2E 20 4E 6F 74 .turned off. Not
01AAA0: 65 20 74 68 61 74 90 20 52 4F 4D 4F 4E 37 90 20 e that. ROMON7.
01AAB0: 77 69 6C 6C 90 20 72 65 73 65 74 90 20 74 68 65 will. reset. the
01AAC0: 90 20 63 6F 6D 70 75 74 65 72 20 61 6E 64 20 6C . computer and l
01AAD0: 6F 73 65 20 74 68 65 20 0D 8A 63 6F 6E 74 65 6E ose the ..conten
01AAE0: 74 73 20 6F 66 20 6D 65 6D 6F 72 79 2E 0D 0A 0D ts of memory....
01AAF0: 0A 52 55 4E 22 44 49 53 43 0D 0A 0D 0A 09 57 68 .RUN"DISC.....Wh
01AB00: 65 6E 20 74 68 65 20 42 43 50 4C 20 52 4F 4D 20 en the BCPL ROM
01AB10: 69 73 90 20 69 6E 73 74 61 6C 6C 65 64 2C 20 70 is. installed, p
01AB20: 72 65 73 73 69 6E 67 20 43 54 52 4C 2D 45 4E 54 ressing CTRL-ENT
01AB30: 45 52 20 77 69 6C 6C 20 67 65 6E 65 72 61 74 65 ER will generate
01AB40: 20 0D 8A 74 68 65 20 63 6F 6D 6D 61 6E 64 20 52 ..the command R
01AB50: 55 4E 22 44 49 53 43 2E 20 54 68 75 73 20 61 20 UN"DISC. Thus a
01AB60: 66 69 6C 65 90 20 27 44 49 53 43 27 90 20 77 69 file. 'DISC'. wi
01AB70: 6C 6C 20 62 65 20 72 75 6E 20 77 68 65 6E 20 43 ll be run when C
01AB80: 54 52 4C 2D 45 4E 54 45 52 20 0D 8A 69 73 20 70 TRL-ENTER ..is p
01AB90: 72 65 73 73 65 64 2E 0D 0A 0D 0A 3E 70 61 0D 0A ressed.....>pa..
01ABA0: 3E 63 65 20 E2 34 2E 20 43 4F 4D 50 49 4C 45 52 >ce .4. COMPILER
01ABB0: 20 4F 50 54 49 4F 4E 53 E2 0D 0A 0D 0A 0D 0A 09 OPTIONS........
01ABC0: 54 68 65 20 4F 50 54 49 4F 4E 20 64 69 72 65 63 The OPTION direc
01ABD0: 74 69 76 65 20 63 6F 6E 74 72 6F 6C 73 20 76 61 tive controls va
01ABE0: 72 69 6F 75 73 20 63 6F 6D 70 69 6C 65 72 20 66 rious compiler f
01ABF0: 61 63 69 6C 69 74 69 65 73 2E 20 49 74 20 64 6F acilities. It do
01AC00: 61 6C 73 6F 20 70 6F 73 73 69 62 6C 65 90 20 28 also possible. (
01AC10: 75 6E 6C 65 73 73 90 20 74 68 65 90 20 70 72 6F unless. the. pro
01AC20: 67 72 61 6D 90 20 69 73 90 20 74 6F 6F 90 20 6C gram. is. too. l
01AC30: 61 72 67 65 29 20 74 6F 20 63 6F 6D 70 69 6C 65 arge) to compile
01AC40: 20 0D 8A 64 69 72 65 63 74 6C 79 20 69 6E 74 6F ..directly into
01AC50: 20 6D 65 6D 6F 72 79 2E 20 54 6F 90 20 64 6F 90 memory. To. do.
01AC60: 20 74 68 69 73 90 20 6A 75 73 74 90 20 70 72 65 this. just. pre
01AC70: 73 73 90 20 52 45 54 55 52 4E 90 20 28 6F 72 20 ss. RETURN. (or
01AC80: 45 4E 54 45 52 29 20 69 6E 20 0D 8A 72 65 73 70 ENTER) in ..resp
01AC90: 6F 6E 73 65 20 74 6F 20 74 68 65 20 71 75 65 73 onse to the ques
01ACA0: 74 69 6F 6E 2E 0D 0A 09 59 6F 75 20 77 69 6C 6C tion....You will
01ACB0: 90 20 74 68 65 6E 90 20 62 65 90 20 70 72 65 73 . then. be. pres
01ACC0: 65 6E 74 65 64 90 20 77 69 74 68 90 20 74 68 65 ented. with. the
01ACD0: 90 20 42 43 50 4C 90 20 70 72 6F 6D 70 74 90 20 . BCPL. prompt.
01ACE0: 27 2D 2D 3E 27 2E 20 54 68 65 20 0D 8A 63 6F 6D '-->'. The ..com
01ACF0: 70 69 6C 65 72 20 69 73 20 6E 6F 77 20 72 65 61 piler is now rea
01AD00: 64 79 20 74 6F 20 61 63 63 65 70 74 90 20 42 43 dy to accept. BC
01AD10: 50 4C 90 20 63 6F 64 65 20 66 6F 72 20 63 6F 6D PL. code for com
01AD20: 70 69 6C 61 74 69 6F 6E 2E 20 54 68 69 73 20 77 pilation. This w
01AD30: 69 6C 6C 20 0D 8A 61 6C 6D 6F 73 74 20 61 6C 77 ill ..almost alw
01AD40: 61 79 73 20 63 6F 6E 73 69 73 74 20 6F 66 20 6F ays consist of o
01AD50: 6E 65 90 20 6F 72 90 20 6D 6F 72 65 90 20 47 45 ne. or. more. GE
01AD60: 54 90 20 64 69 72 65 63 74 69 76 65 73 2E 20 54 T. directives. T
01AD70: 68 65 72 65 20 61 72 65 20 74 77 6F 20 0D 8A 66 here are two ..f
01AD80: 6F 72 6D 73 20 70 65 72 6D 69 74 74 65 64 3A 0D orms permitted:.
01AD90: 0A 0D 0A 28 69 29 09 09 47 45 54 20 22 66 69 6C ...(i)..GET "fil
01ADA0: 65 22 09 74 6F 20 69 6E 63 6C 75 64 65 20 61 6E e".to include an
01ADB0: 6F 74 68 65 72 20 70 72 65 76 69 6F 75 73 6C 79 other previously
01ADC0: 20 70 72 65 70 61 72 65 64 20 66 69 6C 65 0D 0A prepared file..
01ADD0: 0D 0A 28 69 69 29 09 47 45 54 09 09 74 6F 20 69 ..(ii).GET..to i
01ADE0: 6E 63 6C 75 64 65 20 74 68 65 20 63 75 72 72 65 nclude the curre
01ADF0: 6E 74 20 74 65 78 74 20 28 50 52 4F 54 45 58 54 nt text (PROTEXT
01AE00: 65 73 20 0D 8A 6E 6F 74 20 63 61 75 73 65 20 61 es ..not cause a
01AE10: 6E 79 20 63 6F 64 65 20 74 6F 20 62 65 20 67 65 ny code to be ge
01AE20: 6E 65 72 61 74 65 64 2E 90 20 54 68 65 72 65 20 nerated.. There
01AE30: 61 72 65 20 35 20 6F 70 74 69 6F 6E 73 20 6F 6E are 5 options on
01AE40: 20 74 68 65 20 41 4D 53 44 4F 53 20 0D 8A 76 65 the AMSDOS ..ve
01AE50: 72 73 69 6F 6E 73 20 6F 66 20 74 68 65 20 63 6F rsions of the co
01AE60: 6D 70 69 6C 65 72 20 61 6E 64 20 33 90 20 6F 6E mpiler and 3. on
01AE70: 20 74 68 65 20 43 50 2F 4D 20 76 65 72 73 69 6F the CP/M versio
01AE80: 6E 2E 20 20 4D 75 6C 74 69 70 6C 65 20 6F 70 74 n. Multiple opt
01AE90: 69 6F 6E 73 20 0D 8A 6D 61 79 20 62 65 20 73 65 ions ..may be se
01AEA0: 6C 65 63 74 65 64 90 20 77 69 74 68 90 20 61 90 lected. with. a.
01AEB0: 20 73 69 6E 67 6C 65 90 20 4F 50 54 49 4F 4E 90 single. OPTION.
01AEC0: 20 64 69 72 65 63 74 69 76 65 90 20 62 79 20 73 directive. by s
01AED0: 65 70 61 72 61 74 69 6E 67 20 74 68 65 20 0D 8A eparating the ..
01AEE0: 6F 70 74 69 6F 6E 73 20 77 69 74 68 20 63 6F 6D options with com
01AEF0: 6D 61 73 2E 20 54 68 65 90 20 4F 50 54 49 4F 4E mas. The. OPTION
01AF00: 90 20 64 69 72 65 63 74 69 76 65 90 20 6D 61 79 . directive. may
01AF10: 90 20 61 70 70 65 61 72 20 61 6E 79 77 68 65 72 . appear anywher
01AF20: 65 20 69 6E 20 61 20 0D 8A 70 72 6F 67 72 61 6D e in a ..program
01AF30: 20 73 6F 20 6F 70 74 69 6F 6E 73 20 63 61 6E 20 so options can
01AF40: 62 65 20 73 65 6C 65 63 74 65 64 20 66 6F 72 20 be selected for
01AF50: 61 6E 79 20 70 61 72 74 20 6F 66 20 61 20 70 72 any part of a pr
01AF60: 6F 67 72 61 6D 2E 20 0D 0A 0D 0A 09 54 68 65 20 ogram. .....The
01AF70: 74 68 72 65 65 20 6F 70 74 69 6F 6E 73 20 63 6F three options co
01AF80: 6D 6D 6F 6E 20 74 6F 20 61 6C 6C 20 76 65 72 73 mmon to all vers
01AF90: 69 6F 6E 73 20 61 72 65 20 61 73 20 66 6F 6C 6C ions are as foll
01AFA0: 6F 77 73 3A 0D 0A 0D 0A 09 49 66 20 74 68 65 20 ows:.....If the
01AFB0: 6F 70 74 69 6F 6E 90 20 69 73 90 20 66 6F 6C 6C option. is. foll
01AFC0: 6F 77 65 64 90 20 62 79 90 20 61 90 20 27 2B 27 owed. by. a. '+'
01AFD0: 90 20 73 69 67 6E 90 20 74 68 65 90 20 6F 70 74 . sign. the. opt
01AFE0: 69 6F 6E 20 77 69 6C 6C 20 62 65 20 0D 8A 73 77 ion will be ..sw
01AFF0: 69 74 63 68 65 64 20 6F 6E 20 61 6E 64 20 69 66 itched on and if
01B000: 2F 4D 41 58 41 4D 29 0D 0A 0D 0A 09 41 6E 79 20 /MAXAM).....Any
01B010: 6E 75 6D 62 65 72 20 6F 66 20 47 45 54 90 20 64 number of GET. d
01B020: 69 72 65 63 74 69 76 65 73 90 20 6D 61 79 90 20 irectives. may.
01B030: 62 65 90 20 74 79 70 65 64 2E 90 20 41 66 74 65 be. typed.. Afte
01B040: 72 20 65 61 63 68 20 6F 6E 65 20 74 68 65 20 0D r each one the .
01B050: 8A 63 6F 6D 70 69 6C 65 72 20 77 69 6C 6C 20 70 .compiler will p
01B060: 65 72 66 6F 72 6D 20 74 68 65 20 66 69 72 73 74 erform the first
01B070: 90 20 70 61 72 74 90 20 6F 66 90 20 74 68 65 20 . part. of. the
01B080: 63 6F 6D 70 69 6C 61 74 69 6F 6E 2E 20 54 6F 20 compilation. To
01B090: 65 6E 64 20 74 68 65 20 0D 8A 63 6F 6D 70 69 6C end the ..compil
01B0A0: 61 74 69 6F 6E 20 61 6E 64 20 70 72 6F 64 75 63 ation and produc
01B0B0: 65 20 74 68 65 20 6F 62 6A 65 63 74 20 63 6F 64 e the object cod
01B0C0: 65 20 74 79 70 65 20 61 20 66 75 6C 6C 20 73 74 e type a full st
01B0D0: 6F 70 20 27 2E 27 2E 0D 0A 0D 0A 0D 0A 4E 6F 74 op '.'.......Not
01B0E0: 65 3A 20 49 66 20 74 68 65 20 27 2E 42 27 20 65 e: If the '.B' e
01B0F0: 78 74 65 6E 73 69 6F 6E 90 6F 66 90 20 61 90 20 xtension.of. a.
01B100: 73 6F 75 72 63 65 20 66 69 6C 65 6E 61 6D 65 90 source filename.
01B110: 69 73 20 6F 6D 69 74 74 65 64 20 66 72 6F 6D 20 is omitted from
01B120: 74 68 65 20 0D 8A 66 69 6C 65 6E 61 6D 65 20 69 the ..filename i
01B130: 6E 20 61 20 47 45 54 20 63 6F 6D 6D 61 6E 64 20 n a GET command
01B140: 77 68 65 6E 90 20 74 68 65 90 20 66 69 6C 65 6E when. the. filen
01B150: 61 6D 65 20 63 6F 6E 74 61 69 6E 73 20 69 74 2C ame contains it,
01B160: 20 41 6D 73 64 6F 73 20 77 69 6C 6C 20 0D 8A 69 Amsdos will ..i
01B170: 6E 69 74 69 61 6C 6C 79 20 70 72 6F 64 75 63 65 nitially produce
01B180: 20 74 68 65 20 6D 65 73 73 61 67 65 90 20 27 66 the message. 'f
01B190: 69 6C 65 91 6E 6F 74 90 20 66 6F 75 6E 64 27 90 ile.not. found'.
01B1A0: 90 62 75 74 20 77 69 6C 6C 20 63 6F 6E 74 69 6E .but will contin
01B1B0: 75 65 20 74 6F 20 0D 8A 73 65 61 72 63 68 20 66 ue to ..search f
01B1C0: 6F 72 20 61 20 66 69 6C 65 20 77 69 74 68 20 74 or a file with t
01B1D0: 68 65 20 2E 42 20 65 78 74 65 6E 73 69 6F 6E 20 he .B extension
01B1E0: 61 6E 64 20 63 6F 6D 70 69 6C 65 20 69 74 2E 0D and compile it..
01B1F0: 0A 3E 70 61 0D 0A E2 54 65 73 74 69 6E 67 20 42 .>pa...Testing B
01B200: 20 66 6F 6C 6C 6F 77 65 64 20 62 79 20 61 20 27 followed by a '
01B210: 2D 2D 27 2C 20 69 74 20 77 69 6C 6C 20 62 65 20 --', it will be
01B220: 20 73 77 69 74 63 68 65 64 20 6F 66 66 2E 0D 0A switched off...
01B230: 0D 0A 09 4C 20 2D 2D 20 73 77 69 74 63 68 20 6C ...L -- switch l
01B240: 69 73 74 69 6E 67 20 6F 6E 20 6F 72 20 6F 66 66 isting on or off
01B250: 2E 20 0D 0A 0D 0A 09 09 65 2E 67 2E 20 4F 50 54 . ......e.g. OPT
01B260: 49 4F 4E 20 4C 2B 0D 0A 0D 0A 09 53 20 2D 2D 20 ION L+.....S --
01B270: 73 77 69 74 63 68 20 73 74 61 63 6B 20 63 68 65 switch stack che
01B280: 63 6B 69 6E 67 20 6F 6E 20 6F 72 90 20 6F 66 66 cking on or. off
01B290: 2E 90 20 49 66 20 63 68 65 63 6B 69 6E 67 20 69 .. If checking i
01B2A0: 73 20 6F 6E 20 74 68 65 6E 20 74 68 65 20 0D 8A s on then the ..
01B2B0: 63 6F 6D 70 69 6C 65 72 20 77 69 6C 6C 20 63 68 compiler will ch
01B2C0: 65 63 6B 20 66 6F 72 90 20 73 74 61 63 6B 90 20 eck for. stack.
01B2D0: 6F 76 65 72 66 6C 6F 77 90 20 61 74 90 20 74 68 overflow. at. th
01B2E0: 65 90 20 65 6E 74 72 79 20 70 6F 69 6E 74 20 6F e. entry point o
01B2F0: 66 20 65 61 63 68 20 0D 8A 70 72 6F 63 65 64 75 f each ..procedu
01B300: 72 65 2E 20 49 66 20 73 74 61 63 6B 20 63 68 65 re. If stack che
01B310: 63 6B 69 6E 67 20 69 73 90 20 6F 66 66 90 20 74 cking is. off. t
01B320: 68 65 6E 90 20 74 68 65 20 73 74 61 63 6B 20 6D hen. the stack m
01B330: 61 79 20 6F 76 65 72 66 6C 6F 77 20 61 6E 64 20 ay overflow and
01B340: 0D 8A 63 72 61 73 68 20 74 68 65 20 6D 61 63 68 ..crash the mach
01B350: 69 6E 65 2E 0D 0A 0D 0A 09 09 65 2E 67 2E 20 4F ine.......e.g. O
01B360: 50 54 49 4F 4E 20 53 2D 2D 0D 0A 0D 0A 09 42 20 PTION S--.....B
01B370: 2D 2D 20 73 77 69 74 63 68 20 62 72 65 61 6B 20 -- switch break
01B380: 63 68 65 63 6B 69 6E 67 20 6F 6E 20 6F 72 90 20 checking on or.
01B390: 6F 66 66 2E 90 20 49 66 20 63 68 65 63 6B 69 6E off.. If checkin
01B3A0: 67 20 69 73 20 6F 6E 20 74 68 65 6E 20 74 68 65 g is on then the
01B3B0: 20 0D 8A 6F 62 6A 65 63 74 20 63 6F 64 65 90 20 ..object code.
01B3C0: 70 72 6F 64 75 63 65 64 90 20 77 69 6C 6C 90 20 produced. will.
01B3D0: 63 68 65 63 6B 90 20 77 68 65 74 68 65 72 90 20 check. whether.
01B3E0: 74 68 65 90 20 62 72 65 61 6B 90 20 6B 65 79 90 the. break. key.
01B3F0: 20 28 45 53 43 90 20 6F 72 20 0D 8A 53 54 4F 50 (ESC. or ..STOP
01B400: 43 50 4C 20 70 72 6F 67 72 61 6D 73 20 75 6E 64 CPL programs und
01B410: 65 72 20 41 4D 53 44 4F 53 E2 0D 0A 0D 0A 09 49 er AMSDOS......I
01B420: 66 20 61 20 70 72 6F 67 72 61 6D 90 20 69 73 90 f a program. is.
01B430: 20 63 6F 6D 70 69 6C 65 64 90 20 74 6F 90 20 6D compiled. to. m
01B440: 65 6D 6F 72 79 2C 90 20 61 73 90 20 64 65 73 63 emory,. as. desc
01B450: 72 69 62 65 64 90 20 61 62 6F 76 65 2C 20 74 68 ribed. above, th
01B460: 65 20 0D 8A 63 6F 6D 6D 61 6E 64 20 27 7C 47 4F e ..command '|GO
01B470: 27 20 6D 61 79 20 62 65 20 75 73 65 64 20 74 6F ' may be used to
01B480: 20 72 75 6E 20 74 68 65 20 70 72 6F 67 72 61 6D run the program
01B490: 2E 0D 0A 09 54 79 70 69 6E 67 20 27 7C 47 4F 27 ....Typing '|GO'
01B4A0: 20 77 69 6C 6C 20 72 75 6E 20 74 68 65 20 6D 6F will run the mo
01B4B0: 73 74 90 20 72 65 63 65 6E 74 6C 79 20 63 6F 6D st. recently com
01B4C0: 70 69 6C 65 64 20 42 43 50 4C 20 70 72 6F 67 72 piled BCPL progr
01B4D0: 61 6D 2E 20 49 66 20 0D 8A 6E 6F 20 70 72 6F 67 am. If ..no prog
01B4E0: 72 61 6D 20 68 61 73 20 62 65 65 6E 90 20 63 6F ram has been. co
01B4F0: 6D 70 69 6C 65 64 2C 90 20 6F 72 90 20 61 6E 90 mpiled,. or. an.
01B500: 20 65 72 72 6F 72 20 6F 63 63 75 72 72 65 64 20 error occurred
01B510: 6F 6E 20 63 6F 6D 70 69 6C 61 74 69 6F 6E 2C 20 on compilation,
01B520: 0D 8A 74 68 65 6E 20 7C 47 4F 20 77 69 6C 6C 20 ..then |GO will
01B530: 73 69 6D 70 6C 79 20 70 72 69 6E 74 20 74 68 65 simply print the
01B540: 20 6D 65 73 73 61 67 65 20 22 4E 6F 20 70 72 6F message "No pro
01B550: 67 72 61 6D 22 2E 20 0D 0A 09 57 41 52 4E 49 4E gram". ...WARNIN
01B560: 47 20 2D 20 69 74 20 69 73 20 70 6F 73 73 69 62 G - it is possib
01B570: 6C 65 20 74 6F 90 20 63 6F 72 72 75 70 74 90 20 le to. corrupt.
01B580: 61 20 63 6F 6D 70 69 6C 65 64 20 70 72 6F 67 72 a compiled progr
01B590: 61 6D 20 69 6E 20 6D 65 6D 6F 72 79 20 0D 8A 62 am in memory ..b
01B5A0: 79 20 65 64 69 74 69 6E 67 20 74 68 65 20 50 52 y editing the PR
01B5B0: 4F 54 45 58 54 20 6F 72 90 20 4D 41 58 41 4D 90 OTEXT or. MAXAM.
01B5C0: 20 74 65 78 74 2C 90 20 73 6F 90 20 61 66 74 65 text,. so. afte
01B5D0: 72 20 65 64 69 74 69 6E 67 20 74 68 65 20 70 72 r editing the pr
01B5E0: 6F 67 72 61 6D 20 0D 8A 73 68 6F 75 6C 64 20 61 ogram ..should a
01B5F0: 6C 77 61 79 73 20 62 65 20 63 6F 6D 70 69 6C 65 lways be compile
01B600: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
01B610: 17 00 01 00 02 09 50 E5 17 00 C1 02 00 00 00 02 ......P.........
01B620: 17 00 C6 02 00 00 00 02 17 00 C2 02 00 00 00 02 ................
01B630: 17 00 C7 02 00 00 00 02 17 00 C3 02 00 00 00 02 ................
01B640: 17 00 C8 02 00 00 00 02 17 00 C4 02 00 00 00 02 ................
01B650: 17 00 C9 02 00 00 00 02 17 00 C5 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: 29 20 68 61 73 20 62 65 65 6E 20 70 72 65 73 73 ) has been press
01B710: 65 64 20 61 74 20 74 68 65 20 73 74 61 72 74 90 ed at the start.
01B720: 20 6F 66 90 20 6C 6F 6F 70 73 20 61 6E 64 20 61 of. loops and a
01B730: 74 20 74 68 65 20 65 6E 74 72 79 20 70 6F 69 6E t the entry poin
01B740: 74 73 20 0D 8A 6F 66 20 70 72 6F 63 65 64 75 72 ts ..of procedur
01B750: 65 73 2E 20 41 20 6E 75 6D 62 65 72 20 6D 61 79 es. A number may
01B760: 20 62 65 20 73 70 65 63 69 66 69 65 64 90 20 74 be specified. t
01B770: 6F 20 63 6F 6E 74 72 6F 6C 20 68 6F 77 20 6F 66 o control how of
01B780: 74 65 6E 20 74 68 65 20 6B 65 79 20 0D 8A 69 73 ten the key ..is
01B790: 20 63 68 65 63 6B 65 64 2E 20 54 68 65 20 64 65 checked. The de
01B7A0: 66 61 75 6C 74 20 69 73 90 20 31 30 2C 90 20 77 fault is. 10,. w
01B7B0: 68 69 63 68 90 20 6D 65 61 6E 73 90 20 69 74 90 hich. means. it.
01B7C0: 20 69 73 20 63 68 65 63 6B 65 64 20 6F 6E 63 65 is checked once
01B7D0: 20 66 6F 72 20 0D 8A 65 76 65 72 79 20 74 65 6E for ..every ten
01B7E0: 20 6C 6F 6F 70 73 20 6F 72 20 70 72 6F 63 65 64 loops or proced
01B7F0: 75 72 65 73 2E 0D 0A 0D 0A 09 09 65 2E 67 2E 20 ures.......e.g.
01B800: 4F 50 54 49 4F 4E 20 42 2D 2D 0D 0A 09 09 20 20 OPTION B--....
01B810: 20 20 20 4F 50 54 49 4F 4E 20 42 2B 32 35 09 0D OPTION B+25..
01B820: 0A 0D 0A 09 54 68 65 20 64 65 66 61 75 6C 74 73 ....The defaults
01B830: 20 66 6F 72 20 74 68 65 20 61 62 6F 76 65 20 6F for the above o
01B840: 70 74 69 6F 6E 73 20 61 72 65 20 6C 69 73 74 69 ptions are listi
01B850: 6E 67 20 6F 66 66 2C 20 73 74 61 63 6B 20 63 68 ng off, stack ch
01B860: 65 63 6B 69 6E 67 20 0D 8A 6F 6E 2C 20 62 72 65 ecking ..on, bre
01B870: 61 6B 20 63 68 65 63 6B 69 6E 67 20 6F 6E 2E 20 ak checking on.
01B880: 0D 0A 0D 0A 3E 70 61 0D 0A 09 54 68 65 20 72 65 ....>pa...The re
01B890: 6D 61 69 6E 69 6E 67 20 74 77 6F 20 6F 70 74 69 maining two opti
01B8A0: 6F 6E 73 20 61 72 65 20 6F 6E 6C 79 20 61 76 61 ons are only ava
01B8B0: 69 6C 61 62 6C 65 20 6F 6E 20 41 4D 53 44 4F 53 ilable on AMSDOS
01B8C0: 20 76 65 72 73 69 6F 6E 73 2E 0D 0A 0D 0A 0D 0A versions.......
01B8D0: 09 4F 20 2D 2D 20 73 65 74 73 20 74 68 65 20 63 .O -- sets the c
01B8E0: 6F 64 65 20 6F 72 69 67 69 6E 20 74 6F 20 74 68 ode origin to th
01B8F0: 65 20 76 61 6C 75 65 20 6F 66 20 74 68 65 20 6E e value of the n
01B900: 65 66 6F 72 65 20 69 74 20 63 61 6E 20 62 65 20 efore it can be
01B910: 0D 8A 72 75 6E 2E 20 54 68 65 20 63 6F 6D 70 69 ..run. The compi
01B920: 6C 65 72 90 20 74 72 61 6E 73 6C 61 74 65 73 90 ler. translates.
01B930: 20 74 68 65 90 20 65 6E 74 69 72 65 90 20 70 72 the. entire. pr
01B940: 6F 67 72 61 6D 90 20 69 6E 74 6F 20 6D 61 63 68 ogram. into mach
01B950: 69 6E 65 20 63 6F 64 65 20 0D 8A 69 6E 73 74 72 ine code ..instr
01B960: 75 63 74 69 6F 6E 73 2E 20 54 68 65 20 6D 61 63 uctions. The mac
01B970: 68 69 6E 65 20 63 6F 64 65 20 70 72 6F 67 72 61 hine code progra
01B980: 6D 20 69 73 90 20 73 61 76 65 64 90 20 61 6E 64 m is. saved. and
01B990: 20 63 61 6E 20 74 68 65 6E 20 62 65 20 72 75 6E can then be run
01B9A0: 2E 20 0D 8A 53 69 6E 63 65 20 65 61 63 68 20 42 . ..Since each B
01B9B0: 43 50 4C 20 6C 69 6E 65 20 69 73 20 6F 6E 6C 79 CPL line is only
01B9C0: 90 20 74 72 61 6E 73 6C 61 74 65 64 90 20 6F 6E . translated. on
01B9D0: 63 65 2C 90 20 61 20 42 43 50 4C 20 70 72 6F 67 ce,. a BCPL prog
01B9E0: 72 61 6D 20 72 75 6E 73 20 61 20 0D 8A 6C 6F 74 ram runs a ..lot
01B9F0: 20 66 61 73 74 65 72 20 74 68 61 6E 20 61 20 63 faster than a c
01BA00: 6F 72 72 65 73 70 6F 6E 64 69 6E 67 20 42 41 53 orresponding BAS
01BA10: 49 43 20 70 72 6F 67 72 61 6D 2E 0D 0A 09 54 68 IC program....Th
01BA20: 65 20 64 69 73 61 64 76 61 6E 74 61 67 65 20 6F e disadvantage o
01BA30: 66 20 75 73 69 6E 67 20 61 20 63 6F 6D 70 69 6C f using a compil
01BA40: 65 64 90 20 6C 61 6E 67 75 61 67 65 20 69 73 20 ed. language is
01BA50: 74 68 61 74 20 79 6F 75 20 68 61 76 65 20 74 6F that you have to
01BA60: 20 0D 8A 77 61 69 74 20 66 6F 72 20 74 68 65 20 ..wait for the
01BA70: 70 72 6F 67 72 61 6D 20 74 6F 20 62 65 20 63 6F program to be co
01BA80: 6D 70 69 6C 65 64 90 20 65 61 63 68 20 74 69 6D mpiled. each tim
01BA90: 65 20 62 65 66 6F 72 65 20 79 6F 75 20 63 61 6E e before you can
01BAA0: 20 74 65 73 74 20 69 74 2E 20 0D 8A 54 68 69 73 test it. ..This
01BAB0: 20 69 73 20 6E 6F 74 20 61 90 20 70 72 6F 62 6C is not a. probl
01BAC0: 65 6D 90 20 77 69 74 68 90 20 41 72 6E 6F 72 90 em. with. Arnor.
01BAD0: 20 42 43 50 4C 90 20 73 69 6E 63 65 20 69 74 20 BCPL. since it
01BAE0: 63 6F 6D 70 69 6C 65 73 20 65 78 74 72 65 6D 65 compiles extreme
01BAF0: 6C 79 20 0D 8A 71 75 69 63 6B 6C 79 2E 0D 0A 0D ly ..quickly....
01BB00: 75 6D 62 65 72 20 77 68 69 63 68 20 66 6F 6C 6C umber which foll
01BB10: 6F 77 73 20 0D 8A 69 74 2E 20 0D 0A 09 09 65 2E ows ..it. ....e.
01BB20: 67 2E 20 4F 50 54 49 4F 4E 20 4F 20 23 78 31 37 g. OPTION O #x17
01BB30: 32 0D 0A 0D 0A 77 69 6C 6C 20 70 72 6F 64 75 63 2....will produc
01BB40: 65 20 63 6F 64 65 20 77 68 69 63 68 20 77 69 6C e code which wil
01BB50: 6C 20 72 75 6E 20 61 74 20 61 64 64 72 65 73 73 l run at address
01BB60: 20 31 37 32 20 28 68 65 78 29 2E 0D 0A 0D 0A 09 172 (hex)......
01BB70: 48 20 2D 2D 20 73 65 74 73 20 74 68 65 20 68 69 H -- sets the hi
01BB80: 67 68 65 73 74 20 62 79 74 65 20 75 73 61 62 6C ghest byte usabl
01BB90: 65 20 62 79 20 74 68 65 20 63 6F 6D 70 69 6C 65 e by the compile
01BBA0: 64 20 63 6F 64 65 2E 20 54 68 69 73 20 69 73 20 d code. This is
01BBB0: 73 6F 20 0D 8A 74 68 61 74 20 70 72 6F 67 72 61 so ..that progra
01BBC0: 6D 73 20 63 6F 6D 70 69 6C 65 64 20 6F 6E 20 6F ms compiled on o
01BBD0: 6E 65 20 6D 61 63 68 69 6E 65 20 63 61 6E 20 62 ne machine can b
01BBE0: 65 20 72 75 6E 20 6F 6E 20 61 6E 6F 74 68 65 72 e run on another
01BBF0: 2E 20 0D 0A 09 09 65 2E 67 2E 20 4F 50 54 49 4F . ....e.g. OPTIO
01BC00: 4E 20 48 20 34 30 30 30 30 0D 0A 0D 0A 0D 0A 09 N H 40000.......
01BC10: 54 68 65 20 6F 72 69 67 69 6E 20 64 65 66 61 75 The origin defau
01BC20: 6C 74 73 20 74 6F 20 74 68 65 20 66 69 72 73 74 lts to the first
01BC30: 90 20 75 6E 75 73 65 64 20 62 79 74 65 20 6F 66 . unused byte of
01BC40: 20 6D 65 6D 6F 72 79 20 61 74 20 63 6F 6D 70 69 memory at compi
01BC50: 6C 65 20 0D 8A 74 69 6D 65 20 28 61 66 74 65 72 le ..time (after
01BC60: 20 61 6E 79 20 42 41 53 49 43 20 70 72 6F 67 72 any BASIC progr
01BC70: 61 6D 20 6F 72 90 20 74 65 78 74 29 90 20 61 6E am or. text). an
01BC80: 64 20 74 68 65 20 68 69 67 68 65 73 74 20 62 79 d the highest by
01BC90: 74 65 20 64 65 66 61 75 6C 74 73 20 0D 8A 74 6F te defaults ..to
01BCA0: 20 74 68 65 20 6C 61 73 74 20 75 6E 75 73 65 64 the last unused
01BCB0: 20 62 79 74 65 20 6F 66 20 6D 65 6D 6F 72 79 20 byte of memory
01BCC0: 61 74 20 63 6F 6D 70 69 6C 65 20 74 69 6D 65 20 at compile time
01BCD0: 28 75 73 75 61 6C 6C 79 20 48 49 4D 45 4D 29 2E (usually HIMEM).
01BCE0: 0D 0A 0D 0A 09 54 68 65 20 6D 61 69 6E 20 75 73 .....The main us
01BCF0: 65 20 66 6F 72 20 74 68 65 20 48 20 61 6E 64 20 e for the H and
01BD00: 0A 0D 0A E2 28 69 69 69 29 20 42 43 50 4C 20 69 ....(iii) BCPL i
01BD10: 73 20 61 20 74 79 70 65 6C 65 73 73 20 6C 61 6E s a typeless lan
01BD20: 67 75 61 67 65 E2 0D 0A 0D 0A 09 4D 6F 73 74 20 guage......Most
01BD30: 6C 61 6E 67 75 61 67 65 73 20 68 61 76 65 20 61 languages have a
01BD40: 90 20 6E 75 6D 62 65 72 90 20 6F 66 90 20 69 6E . number. of. in
01BD50: 74 65 72 6E 61 6C 90 20 76 61 72 69 61 62 6C 65 ternal. variable
01BD60: 20 74 79 70 65 73 2E 20 42 41 53 49 43 20 0D 8A types. BASIC ..
01BD70: 75 73 75 61 6C 6C 79 20 68 61 73 20 36 20 2D 2D usually has 6 --
01BD80: 20 69 6E 74 65 67 65 72 2C 20 72 65 61 6C 2C 20 integer, real,
01BD90: 73 74 72 69 6E 67 2C 20 69 6E 74 65 67 65 72 20 string, integer
01BDA0: 61 72 72 61 79 2C 20 72 65 61 6C 20 61 72 72 61 array, real arra
01BDB0: 79 2C 20 61 6E 64 20 0D 8A 73 74 72 69 6E 67 20 y, and ..string
01BDC0: 61 72 72 61 79 2E 20 50 41 53 43 41 4C 20 61 6E array. PASCAL an
01BDD0: 64 20 43 20 68 61 76 65 20 72 61 74 68 65 72 90 d C have rather.
01BDE0: 20 6D 6F 72 65 2C 20 61 6E 64 20 68 61 76 65 20 more, and have
01BDF0: 74 68 65 20 61 62 69 6C 69 74 79 20 66 6F 72 20 the ability for
01BE00: 0D 8A 74 68 65 20 70 72 6F 67 72 61 6D 6D 65 72 ..the programmer
01BE10: 20 74 6F 20 64 65 66 69 6E 65 20 68 69 73 20 6F to define his o
01BE20: 77 6E 20 75 73 69 6E 67 20 22 72 65 63 6F 72 64 wn using "record
01BE30: 22 20 6F 72 20 22 73 74 72 75 63 74 22 2E 0D 0A " or "struct"...
01BE40: 09 42 43 50 4C 20 68 61 73 20 6A 75 73 74 20 6F .BCPL has just o
01BE50: 6E 65 90 20 69 6E 74 65 72 6E 61 6C 90 20 76 61 ne. internal. va
01BE60: 72 69 61 62 6C 65 90 20 74 79 70 65 90 20 2D 2D riable. type. --
01BE70: 90 20 61 20 76 61 72 69 61 62 6C 65 20 63 61 6E . a variable can
01BE80: 20 62 65 20 0D 8A 61 73 73 69 67 6E 65 64 20 61 be ..assigned a
01BE90: 20 73 69 6E 67 6C 65 20 77 6F 72 64 20 76 61 6C single word val
01BEA0: 75 65 2E 90 20 54 68 69 73 90 20 69 73 90 20 72 ue.. This. is. r
01BEB0: 65 66 65 72 72 65 64 90 20 74 6F 20 61 73 20 61 eferred. to as a
01BEC0: 20 62 69 74 2D 70 61 74 74 65 72 6E 20 0D 8A 69 bit-pattern ..i
01BED0: 6E 64 69 63 61 74 69 6E 67 20 74 68 61 74 20 6E ndicating that n
01BEE0: 6F 20 69 6E 68 65 72 65 6E 74 90 20 6D 65 61 6E o inherent. mean
01BEF0: 69 6E 67 90 20 69 73 90 20 61 74 74 61 63 68 65 ing. is. attache
01BF00: 4F 20 6F 70 74 69 6F 6E 73 20 69 73 20 77 68 65 O options is whe
01BF10: 6E 20 70 72 6F 64 75 63 69 6E 67 20 73 74 61 6E n producing stan
01BF20: 64 20 61 6C 6F 6E 65 20 0D 8A 63 6F 64 65 20 74 d alone ..code t
01BF30: 6F 20 62 65 20 72 75 6E 20 66 72 6F 6D 20 61 90 o be run from a.
01BF40: 20 64 69 73 63 90 20 77 69 74 68 90 20 6E 6F 20 disc. with. no
01BF50: 42 41 53 49 43 20 73 75 70 70 6F 72 74 20 65 74 BASIC support et
01BF60: 63 2E 20 54 68 65 73 65 20 6F 70 74 69 6F 6E 73 c. These options
01BF70: 20 0D 8A 65 6E 61 62 6C 65 20 61 6C 6C 20 6F 66 ..enable all of
01BF80: 20 74 68 65 20 6D 65 6D 6F 72 79 20 74 6F 20 62 the memory to b
01BF90: 65 20 75 73 65 64 90 20 66 6F 72 20 61 20 70 72 e used. for a pr
01BFA0: 6F 67 72 61 6D 2E 20 49 74 20 73 68 6F 75 6C 64 ogram. It should
01BFB0: 20 62 65 20 6E 6F 74 65 64 20 0D 8A 68 6F 77 65 be noted ..howe
01BFC0: 76 65 72 20 74 68 61 74 20 69 66 20 74 68 65 90 ver that if the.
01BFD0: 20 5A 38 30 90 20 73 74 61 63 6B 90 20 70 6F 69 Z80. stack. poi
01BFE0: 6E 74 65 72 90 20 67 6F 65 73 90 20 62 65 6C 6F nter. goes. belo
01BFF0: 77 90 20 23 78 34 30 30 30 20 6F 72 20 61 62 6F w. #x4000 or abo
01C000: 76 65 20 0D 8A 23 78 43 30 30 30 20 74 68 65 6E ve ..#xC000 then
01C010: 20 74 68 65 20 6D 61 63 68 69 6E 65 90 20 77 69 the machine. wi
01C020: 6C 6C 90 20 70 72 6F 62 61 62 6C 79 90 20 63 72 ll. probably. cr
01C030: 61 73 68 90 20 64 75 65 90 20 74 6F 20 74 68 65 ash. due. to the
01C040: 20 52 4F 4D 20 70 61 67 69 6E 67 20 0D 8A 77 68 ROM paging ..wh
01C050: 69 63 68 20 75 73 65 73 20 74 68 65 73 65 20 61 ich uses these a
01C060: 72 65 61 73 20 6F 66 20 6D 65 6D 6F 72 79 2E 0D reas of memory..
01C070: 0A 0D 0A 3E 70 61 0D 0A 3E 63 65 20 E2 35 2E 20 ...>pa..>ce .5.
01C080: 53 4F 4D 45 20 4B 45 59 20 46 41 43 54 53 20 41 SOME KEY FACTS A
01C090: 42 4F 55 54 20 42 43 50 4C E2 0D 0A 0D 0A 0D 0A BOUT BCPL.......
01C0A0: E2 28 69 29 20 42 43 50 4C 20 69 73 20 61 20 73 .(i) BCPL is a s
01C0B0: 74 72 75 63 74 75 72 65 64 20 6C 61 6E 67 75 61 tructured langua
01C0C0: 67 65 E2 0D 0A 0D 0A 09 41 20 42 43 50 4C 20 70 ge......A BCPL p
01C0D0: 72 6F 67 72 61 6D 20 69 73 20 6D 61 64 65 20 75 rogram is made u
01C0E0: 70 20 6F 66 20 61 20 6E 75 6D 62 65 72 20 6F 66 p of a number of
01C0F0: 20 6E 61 6D 65 64 20 70 72 6F 63 65 64 75 72 65 named procedure
01C100: 64 90 20 74 6F 20 74 68 69 73 20 76 61 6C 75 65 d. to this value
01C110: 2E 20 54 68 65 20 0D 8A 6D 65 61 6E 69 6E 67 20 . The ..meaning
01C120: 6F 66 20 74 68 65 20 76 61 6C 75 65 20 69 73 20 of the value is
01C130: 64 65 74 65 72 6D 69 6E 65 64 20 62 79 20 74 68 determined by th
01C140: 65 20 77 61 79 20 74 68 61 74 20 74 68 65 20 70 e way that the p
01C150: 72 6F 67 72 61 6D 6D 65 72 20 75 73 65 73 20 0D rogrammer uses .
01C160: 8A 69 74 2C 20 61 6E 64 20 74 68 69 73 20 6D 65 .it, and this me
01C170: 61 6E 69 6E 67 90 20 63 61 6E 90 20 63 68 61 6E aning. can. chan
01C180: 67 65 2E 90 20 49 6E 90 20 41 72 6E 6F 72 27 73 ge.. In. Arnor's
01C190: 20 69 6D 70 6C 65 6D 65 6E 74 61 74 69 6F 6E 20 implementation
01C1A0: 6F 66 20 42 43 50 4C 20 0D 8A 65 61 63 68 20 76 of BCPL ..each v
01C1B0: 61 6C 75 65 20 69 73 20 31 36 20 62 69 74 73 20 alue is 16 bits
01C1C0: 6C 6F 6E 67 2E 20 54 68 65 72 65 90 20 66 6F 6C long. There. fol
01C1D0: 6C 6F 77 20 73 6F 6D 65 20 65 78 61 6D 70 6C 65 low some example
01C1E0: 73 20 6F 66 20 68 6F 77 20 73 6F 6D 65 20 6F 66 s of how some of
01C1F0: 20 0D 8A 74 68 65 20 63 6F 6D 6D 6F 6E 20 64 61 ..the common da
01C200: 74 61 20 74 79 70 65 73 20 61 72 65 20 75 73 65 ta types are use
01C210: 64 20 69 6E 20 42 43 50 4C 2E 20 4E 6F 74 65 20 d in BCPL. Note
01C220: 74 68 61 74 20 69 6E 20 65 61 63 68 20 63 61 73 that in each cas
01C230: 65 20 61 20 27 4C 45 54 27 20 0D 8A 64 65 63 6C e a 'LET' ..decl
01C240: 61 72 61 74 69 6F 6E 20 69 73 20 72 65 71 75 69 aration is requi
01C250: 72 65 64 20 74 6F 20 64 65 66 69 6E 65 20 61 20 red to define a
01C260: 76 61 72 69 61 62 6C 65 20 62 65 66 6F 72 65 20 variable before
01C270: 69 74 20 63 61 6E 20 62 65 20 75 73 65 64 2E 0D it can be used..
01C280: 0A 3E 70 61 0D 0A E2 53 69 6D 75 6C 61 74 69 6E .>pa...Simulatin
01C290: 67 20 64 69 66 66 65 72 65 6E 74 20 76 61 72 69 g different vari
01C2A0: 61 62 6C 65 20 74 79 70 65 73 E2 0D 0A 0D 0A E2 able types......
01C2B0: 49 6E 74 65 67 65 72 3A E2 09 09 4C 45 54 20 6E Integer:...LET n
01C2C0: 75 6D 62 65 72 20 3D 20 3F 0D 0A 09 09 09 6E 75 umber = ?.....nu
01C2D0: 6D 62 65 72 20 3A 3D 20 34 32 0D 0A 0D 0A 54 68 mber := 42....Th
01C2E0: 69 73 20 61 73 73 69 67 6E 73 20 74 68 65 20 76 is assigns the v
01C2F0: 61 6C 75 65 20 34 32 90 20 28 74 68 61 74 90 20 alue 42. (that.
01C300: 73 2C 20 65 61 63 68 20 6F 66 20 0D 8A 77 68 69 s, each of ..whi
01C310: 63 68 20 69 73 90 20 71 75 69 74 65 90 20 73 65 ch is. quite. se
01C320: 70 61 72 61 74 65 2E 90 20 54 68 65 72 65 90 20 parate.. There.
01C330: 69 73 90 20 6F 6E 65 90 20 73 70 65 63 69 61 6C is. one. special
01C340: 90 20 70 72 6F 63 65 64 75 72 65 2C 20 63 61 6C . procedure, cal
01C350: 6C 65 64 20 0D 8A 27 73 74 61 72 74 27 2C 20 77 led ..'start', w
01C360: 68 69 63 68 20 6D 75 73 74 20 62 65 20 70 72 65 hich must be pre
01C370: 73 65 6E 74 90 20 69 6E 90 20 65 76 65 72 79 90 sent. in. every.
01C380: 20 42 43 50 4C 20 70 72 6F 67 72 61 6D 2E 20 54 BCPL program. T
01C390: 68 69 73 20 69 73 20 77 68 65 72 65 20 0D 8A 65 his is where ..e
01C3A0: 78 65 63 75 74 69 6F 6E 20 77 69 6C 6C 20 62 65 xecution will be
01C3B0: 67 69 6E 2E 20 54 68 69 73 20 70 72 6F 63 65 64 gin. This proced
01C3C0: 75 72 65 20 77 69 6C 6C 20 63 61 6C 6C 20 6F 74 ure will call ot
01C3D0: 68 65 72 20 70 72 6F 63 65 64 75 72 65 73 2C 20 her procedures,
01C3E0: 77 68 69 63 68 20 0D 8A 77 69 6C 6C 20 69 6E 20 which ..will in
01C3F0: 74 75 72 6E 20 63 61 6C 6C 20 6F 74 68 65 72 20 turn call other
01C400: 70 72 6F 63 65 64 75 72 65 73 2C 20 61 6E 64 20 procedures, and
01C410: 73 6F 20 6F 6E 2E 0D 0A 09 59 6F 75 20 77 69 6C so on....You wil
01C420: 6C 20 6C 61 74 65 72 20 63 6F 6D 65 20 61 63 72 l later come acr
01C430: 6F 73 73 20 74 65 72 6D 73 20 73 75 63 68 20 61 oss terms such a
01C440: 73 20 62 6C 6F 63 6B 73 2C 20 63 6F 6D 70 6F 75 s blocks, compou
01C450: 6E 64 20 63 6F 6D 6D 61 6E 64 73 20 0D 8A 61 6E nd commands ..an
01C460: 64 20 73 63 6F 70 65 20 2D 2D 20 74 65 72 6D 73 d scope -- terms
01C470: 90 20 74 68 61 74 90 20 61 70 70 6C 79 90 20 74 . that. apply. t
01C480: 6F 90 20 73 74 72 75 63 74 75 72 65 64 90 20 6C o. structured. l
01C490: 61 6E 67 75 61 67 65 73 20 69 6E 20 67 65 6E 65 anguages in gene
01C4A0: 72 61 6C 2E 20 0D 8A 45 78 61 6D 70 6C 65 73 90 ral. ..Examples.
01C4B0: 20 6F 66 90 20 6F 74 68 65 72 90 20 73 74 72 75 of. other. stru
01C4C0: 63 74 75 72 65 64 90 90 20 70 72 6F 67 72 61 6D ctured.. program
01C4D0: 6D 69 6E 67 90 20 6C 61 6E 67 75 61 67 65 73 90 ming. languages.
01C4E0: 20 61 72 65 90 20 50 61 73 63 61 6C 2C 20 0D 8A are. Pascal, ..
01C4F0: 4D 6F 64 75 6C 61 91 32 20 61 6E 64 20 43 2E 20 Modula.2 and C.
01C500: 69 73 20 74 68 65 20 62 69 74 20 70 61 74 74 65 is the bit patte
01C510: 72 6E 20 30 30 30 30 30 30 30 30 30 30 31 30 31 rn 0000000000101
01C520: 30 31 30 29 20 0D 8A 74 6F 20 74 68 65 20 76 61 010) ..to the va
01C530: 72 69 61 62 6C 65 20 27 6E 75 6D 62 65 72 27 2E riable 'number'.
01C540: 0D 0A 0D 0A E2 43 68 61 72 61 63 74 65 72 3A E2 .....Character:.
01C550: 09 4C 45 54 20 63 68 61 72 20 3D 20 3F 0D 0A 09 .LET char = ?...
01C560: 09 09 63 68 61 72 20 3A 3D 20 27 41 27 0D 0A 0D ..char := 'A'...
01C570: 0A 54 68 69 73 90 20 61 73 73 69 67 6E 73 90 20 .This. assigns.
01C580: 74 68 65 90 20 6E 75 6D 62 65 72 90 20 36 35 90 the. number. 65.
01C590: 90 20 28 74 68 65 90 90 20 41 53 43 49 49 90 20 . (the.. ASCII.
01C5A0: 63 6F 64 65 90 20 72 65 70 72 65 73 65 6E 74 69 code. representi
01C5B0: 6E 67 90 20 74 68 65 20 0D 8A 6C 65 74 74 65 72 ng. the ..letter
01C5C0: 91 27 41 27 29 20 74 6F 20 74 68 65 20 76 61 72 .'A') to the var
01C5D0: 69 61 62 6C 65 20 27 63 68 61 72 27 2E 0D 0A 0D iable 'char'....
01C5E0: 0A E2 56 65 63 74 6F 72 3A E2 09 09 4C 45 54 20 ..Vector:...LET
01C5F0: 61 72 72 61 79 20 3D 20 56 45 43 20 31 30 0D 0A array = VEC 10..
01C600: 09 09 09 46 4F 52 20 69 3D 30 20 54 4F 20 31 30 ...FOR i=0 TO 10
01C610: 20 44 4F 20 61 72 72 61 79 21 69 20 3A 3D 20 69 DO array!i := i
01C620: 0D 0A 0D 0A 54 68 69 73 20 73 65 74 73 20 61 73 ....This sets as
01C630: 69 64 65 20 61 6E 20 31 31 20 77 6F 72 64 20 28 ide an 11 word (
01C640: 32 32 90 20 62 79 74 65 29 90 20 61 72 65 61 20 22. byte). area
01C650: 6F 66 20 6D 65 6D 6F 72 79 2C 20 61 6E 64 20 61 of memory, and a
01C660: 73 73 69 67 6E 73 20 74 68 65 20 0D 8A 61 64 64 ssigns the ..add
01C670: 72 65 73 73 20 6F 66 20 74 68 65 20 73 74 61 72 ress of the star
01C680: 74 20 6F 66 20 74 68 69 73 20 61 72 65 61 90 20 t of this area.
01C690: 74 6F 20 74 68 65 20 76 61 72 69 61 62 6C 65 20 to the variable
01C6A0: 27 61 72 72 61 79 27 2E 20 54 68 65 20 76 65 63 'array'. The vec
01C6B0: 74 6F 72 20 0D 8A 69 73 20 61 63 63 65 73 73 65 tor ..is accesse
01C6C0: 64 20 62 79 20 74 68 65 20 69 6E 64 69 72 65 63 d by the indirec
01C6D0: 74 69 6F 6E 20 6F 70 65 72 61 74 6F 72 20 27 21 tion operator '!
01C6E0: 27 2C 20 77 68 65 72 65 20 27 61 72 72 61 79 21 ', where 'array!
01C6F0: 69 27 20 6D 65 61 6E 73 20 74 68 65 20 0D 8A 63 i' means the ..c
01C700: 4C 6F 63 6F 6D 6F 74 69 76 65 20 42 41 53 49 43 Locomotive BASIC
01C710: 20 61 6E 64 90 20 4D 61 6C 6C 61 72 64 20 42 41 and. Mallard BA
01C720: 53 49 43 20 61 72 65 20 6E 6F 74 20 73 74 72 75 SIC are not stru
01C730: 63 74 75 72 65 64 20 0D 8A 6C 61 6E 67 75 61 67 ctured ..languag
01C740: 65 73 2E 0D 0A 0D 0A 0D 0A E2 28 69 69 29 20 42 es........(ii) B
01C750: 43 50 4C 20 69 73 20 61 20 63 6F 6D 70 69 6C 65 CPL is a compile
01C760: 64 20 6C 61 6E 67 75 61 67 65 E2 0D 0A 0D 0A 09 d language......
01C770: 42 41 53 49 43 20 69 73 20 75 73 75 61 6C 6C 79 BASIC is usually
01C780: 20 61 6E 20 69 6E 74 65 72 70 72 65 74 65 64 90 an interpreted.
01C790: 20 6C 61 6E 67 75 61 67 65 2E 90 20 57 68 65 6E language.. When
01C7A0: 20 61 20 70 72 6F 67 72 61 6D 20 69 73 20 72 75 a program is ru
01C7B0: 6E 2C 20 0D 8A 74 68 65 20 42 41 53 49 43 20 69 n, ..the BASIC i
01C7C0: 6E 74 65 72 70 72 65 74 65 72 20 72 65 61 64 73 nterpreter reads
01C7D0: 90 20 65 61 63 68 90 20 6C 69 6E 65 90 20 61 6E . each. line. an
01C7E0: 64 90 20 65 78 65 63 75 74 65 73 20 74 68 65 20 d. executes the
01C7F0: 61 70 70 72 6F 70 72 69 61 74 65 20 0D 8A 6D 61 appropriate ..ma
01C800: 63 68 69 6E 65 20 63 6F 64 65 20 69 6E 73 74 72 chine code instr
01C810: 75 63 74 69 6F 6E 73 2E 20 54 68 69 73 20 64 65 uctions. This de
01C820: 63 6F 64 69 6E 67 20 69 73 90 20 64 6F 6E 65 20 coding is. done
01C830: 65 76 65 72 79 20 74 69 6D 65 20 61 20 6C 69 6E every time a lin
01C840: 65 20 69 73 20 0D 8A 65 78 65 63 75 74 65 64 2E e is ..executed.
01C850: 20 54 68 65 20 72 65 73 75 6C 74 90 20 69 73 90 The result. is.
01C860: 20 74 68 61 74 90 20 42 41 53 49 43 90 20 70 72 that. BASIC. pr
01C870: 6F 67 72 61 6D 73 90 20 72 75 6E 90 20 76 65 72 ograms. run. ver
01C880: 79 20 73 6C 6F 77 6C 79 20 77 68 65 6E 20 0D 8A y slowly when ..
01C890: 63 6F 6D 70 61 72 65 64 20 77 69 74 68 20 61 20 compared with a
01C8A0: 6D 61 63 68 69 6E 65 20 63 6F 64 65 20 70 72 6F machine code pro
01C8B0: 67 72 61 6D 20 64 6F 69 6E 67 20 74 68 65 20 73 gram doing the s
01C8C0: 61 6D 65 20 74 68 69 6E 67 2E 0D 0A 09 41 20 42 ame thing....A B
01C8D0: 43 50 4C 20 70 72 6F 67 72 61 6D 20 6D 75 73 74 CPL program must
01C8E0: 20 62 65 20 73 75 62 6D 69 74 74 65 64 20 74 6F be submitted to
01C8F0: 90 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 20 62 . the compiler b
01C900: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
01C910: 18 00 01 00 02 09 4E E5 18 00 C1 02 00 00 00 02 ......N.........
01C920: 18 00 C6 02 00 00 00 02 18 00 C2 02 00 00 00 02 ................
01C930: 18 00 C7 02 00 00 00 02 18 00 C3 02 00 00 00 02 ................
01C940: 18 00 C8 02 00 00 00 02 18 00 C4 02 00 00 00 02 ................
01C950: 18 00 C9 02 00 00 00 02 18 00 C5 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: 6F 6E 74 65 6E 74 73 20 6F 66 20 61 64 64 72 65 ontents of addre
01CA10: 73 73 20 28 61 72 72 61 79 2B 69 29 2E 20 21 61 ss (array+i). !a
01CA20: 72 72 61 79 20 6D 65 61 6E 73 20 74 68 65 20 73 rray means the s
01CA30: 61 6D 65 20 61 73 20 61 72 72 61 79 21 30 2E 0D ame as array!0..
01CA40: 0A 0D 0A E2 54 77 6F 20 64 69 6D 65 6E 73 69 6F ....Two dimensio
01CA50: 6E 61 6C 20 61 72 72 61 79 3A E2 0D 0A 0D 0A 09 nal array:......
01CA60: 09 09 4D 41 4E 49 46 45 53 54 20 24 28 20 6D 3D ..MANIFEST $( m=
01CA70: 33 2C 20 6E 3D 34 20 24 29 0D 0A 09 09 09 4C 45 3, n=4 $).....LE
01CA80: 54 20 61 72 72 61 79 20 3D 20 56 45 43 20 28 6D T array = VEC (m
01CA90: 2B 31 29 2A 28 6E 2B 31 29 20 2D 2D 20 31 0D 0A +1)*(n+1) -- 1..
01CAA0: 09 09 09 4C 45 54 20 67 65 74 61 72 72 61 79 28 ...LET getarray(
01CAB0: 69 2C 6A 29 20 3D 20 61 72 72 61 79 21 28 6D 2A i,j) = array!(m*
01CAC0: 69 2B 6A 29 0D 0A 09 09 09 4C 45 54 20 70 75 74 i+j).....LET put
01CAD0: 61 72 72 61 79 28 69 2C 6A 2C 76 61 6C 75 65 29 array(i,j,value)
01CAE0: 20 42 45 20 61 72 72 61 79 21 28 6D 2A 69 2B 6A BE array!(m*i+j
01CAF0: 29 20 3A 3D 20 76 61 6C 75 65 0D 0A 0D 0A 4D 75 ) := value....Mu
01CB00: 6C 74 69 2D 64 69 6D 65 6E 73 69 6F 6E 61 6C 20 lti-dimensional
01CB10: 61 72 72 61 79 73 20 63 61 6E 20 62 65 20 69 6D arrays can be im
01CB20: 70 6C 65 6D 65 6E 74 65 64 90 20 62 79 90 20 64 plemented. by. d
01CB30: 65 66 69 6E 69 6E 67 20 61 20 76 65 63 74 6F 72 efining a vector
01CB40: 20 61 6E 64 20 0D 8A 63 61 6C 63 75 6C 61 74 69 and ..calculati
01CB50: 6E 67 20 74 68 65 20 72 65 71 75 69 72 65 64 20 ng the required
01CB60: 77 6F 72 64 20 66 72 6F 6D 20 74 68 65 20 61 72 word from the ar
01CB70: 72 61 79 20 73 75 62 73 63 72 69 70 74 73 2E 0D ray subscripts..
01CB80: 0A 0D 0A E2 53 74 72 69 6E 67 3A E2 09 09 4C 45 ....String:...LE
01CB90: 54 20 74 65 78 74 20 3D 20 22 42 43 50 4C 20 69 T text = "BCPL i
01CBA0: 73 20 61 20 74 79 70 65 6C 65 73 73 20 6C 61 6E s a typeless lan
01CBB0: 67 75 61 67 65 22 0D 0A 0D 0A 54 68 69 73 20 73 guage"....This s
01CBC0: 74 6F 72 65 73 20 74 68 65 20 73 74 72 69 6E 67 tores the string
01CBD0: 90 20 22 42 43 50 4C 90 20 69 73 90 20 61 90 20 . "BCPL. is. a.
01CBE0: 74 79 70 65 6C 65 73 73 90 20 6C 61 6E 67 75 61 typeless. langua
01CBF0: 67 65 22 20 73 6F 6D 65 77 68 65 72 65 20 69 6E ge" somewhere in
01CC00: 20 4C 45 54 20 69 6E 62 75 66 66 20 3D 20 56 45 LET inbuff = VE
01CC10: 43 20 38 32 0D 0A 20 20 4C 45 54 20 6F 75 74 6E C 82.. LET outn
01CC20: 61 6D 65 20 3D 20 56 45 43 20 32 30 20 3B 20 4C ame = VEC 20 ; L
01CC30: 45 54 20 6F 75 74 62 75 66 66 20 3D 20 56 45 43 ET outbuff = VEC
01CC40: 20 38 32 0D 0A 20 20 4C 45 54 20 63 20 3D 20 30 82.. LET c = 0
01CC50: 0D 0A 3E 70 61 0D 0A 20 20 77 72 69 74 65 73 28 ..>pa.. writes(
01CC60: 22 49 6E 70 75 74 20 66 69 6C 65 20 6E 61 6D 65 "Input file name
01CC70: 3A 20 20 22 29 0D 0A 20 20 72 65 61 64 73 28 69 : ").. reads(i
01CC80: 6E 6E 61 6D 65 29 0D 0A 20 20 77 72 69 74 65 73 nname).. writes
01CC90: 28 22 2A 6E 4F 75 74 70 75 74 20 66 69 6C 65 20 ("*nOutput file
01CCA0: 6E 61 6D 65 3A 20 22 29 0D 0A 20 20 72 65 61 64 name: ").. read
01CCB0: 73 28 6F 75 74 6E 61 6D 65 29 0D 0A 20 20 54 45 s(outname).. TE
01CCC0: 53 54 20 66 69 6E 64 69 6E 70 75 74 28 69 6E 6E ST findinput(inn
01CCD0: 61 6D 65 2C 20 69 6E 62 75 66 66 29 20 54 48 45 ame, inbuff) THE
01CCE0: 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 73 65 6C N.. $(.. sel
01CCF0: 65 63 74 69 6E 70 75 74 28 69 6E 62 75 66 66 29 ectinput(inbuff)
01CD00: 0D 0A 20 20 20 20 54 45 53 54 20 66 69 6E 64 6F .. TEST findo
01CD10: 75 74 70 75 74 28 6F 75 74 6E 61 6D 65 2C 20 6F utput(outname, o
01CD20: 75 74 62 75 66 66 29 20 54 48 45 4E 0D 0A 20 20 utbuff) THEN..
01CD30: 20 20 24 28 0D 0A 20 20 20 20 20 20 73 65 6C 65 $(.. sele
01CD40: 63 74 6F 75 74 70 75 74 28 6F 75 74 62 75 66 66 ctoutput(outbuff
01CD50: 29 0D 0A 20 20 20 20 20 20 24 28 0D 0A 20 20 20 ).. $(..
01CD60: 20 20 20 20 20 63 20 3A 3D 20 72 64 63 68 28 29 c := rdch()
01CD70: 0D 0A 20 20 20 20 20 20 20 20 55 4E 4C 45 53 53 .. UNLESS
01CD80: 20 63 3D 65 6E 64 73 74 72 65 61 6D 63 68 20 44 c=endstreamch D
01CD90: 4F 20 77 72 63 68 28 63 29 0D 0A 20 20 20 20 20 O wrch(c)..
01CDA0: 20 24 29 0D 0A 20 20 20 20 20 20 52 45 50 45 41 $).. REPEA
01CDB0: 54 55 4E 54 49 4C 20 63 20 3D 20 65 6E 64 73 74 TUNTIL c = endst
01CDC0: 72 65 61 6D 63 68 0D 0A 20 20 20 20 20 20 65 6E reamch.. en
01CDD0: 64 77 72 69 74 65 28 29 0D 0A 20 20 20 20 24 29 dwrite().. $)
01CDE0: 0D 0A 20 20 20 20 45 4C 53 45 20 77 72 69 74 65 .. ELSE write
01CDF0: 73 28 22 43 61 6E 27 74 20 6F 70 65 6E 20 6F 75 s("Can't open ou
01CE00: 20 0D 8A 6D 65 6D 6F 72 79 2C 20 70 72 65 63 65 ..memory, prece
01CE10: 64 65 64 20 62 79 20 61 20 62 79 74 65 90 20 63 ded by a byte. c
01CE20: 6F 6E 74 61 69 6E 69 6E 67 90 20 74 68 65 90 20 ontaining. the.
01CE30: 6C 65 6E 67 74 68 20 6F 66 20 74 68 65 20 73 74 length of the st
01CE40: 72 69 6E 67 2E 20 54 68 65 20 0D 8A 76 61 6C 75 ring. The ..valu
01CE50: 65 20 61 73 73 69 67 6E 65 64 20 74 6F 20 74 68 e assigned to th
01CE60: 65 20 76 61 72 69 61 62 6C 65 90 20 27 74 65 78 e variable. 'tex
01CE70: 74 27 90 20 69 73 90 20 74 68 65 20 61 64 64 72 t'. is. the addr
01CE80: 65 73 73 20 6F 66 20 74 68 69 73 20 6C 65 6E 67 ess of this leng
01CE90: 74 68 20 0D 8A 62 79 74 65 2E 20 4E 6F 74 65 20 th ..byte. Note
01CEA0: 74 68 61 74 20 74 68 69 73 20 69 73 90 20 6F 6E that this is. on
01CEB0: 6C 79 90 20 70 6F 73 73 69 62 6C 65 90 20 62 65 ly. possible. be
01CEC0: 63 61 75 73 65 20 74 68 65 20 6D 65 6D 6F 72 79 cause the memory
01CED0: 20 61 64 64 72 65 73 73 20 69 73 20 0D 8A 74 68 address is ..th
01CEE0: 65 20 73 61 6D 65 20 6C 65 6E 67 74 68 20 61 73 e same length as
01CEF0: 20 74 68 65 20 42 43 50 4C 20 77 6F 72 64 20 28 the BCPL word (
01CF00: 74 68 69 73 20 69 73 20 6E 6F 74 20 61 20 63 6F this is not a co
01CF10: 69 6E 63 69 64 65 6E 63 65 21 29 2E 0D 0A 0D 0A incidence!).....
01CF20: 4E 6F 74 65 3A 20 54 68 65 72 65 20 69 73 20 61 Note: There is a
01CF30: 20 76 65 72 79 20 69 6D 70 6F 72 74 61 6E 74 90 very important.
01CF40: 20 64 69 66 66 65 72 65 6E 63 65 90 20 62 65 74 difference. bet
01CF50: 77 65 65 6E 20 74 68 65 20 75 73 65 20 6F 66 20 ween the use of
01CF60: 73 69 6E 67 6C 65 20 0D 8A 61 6E 64 20 64 6F 75 single ..and dou
01CF70: 62 6C 65 20 71 75 6F 74 65 73 2C 20 61 6E 64 20 ble quotes, and
01CF80: 63 6F 6E 66 75 73 69 6E 67 20 74 68 65 73 65 20 confusing these
01CF90: 63 61 6E 90 20 6C 65 61 64 20 74 6F 20 62 75 67 can. lead to bug
01CFA0: 73 20 74 68 61 74 20 61 72 65 20 76 65 72 79 20 s that are very
01CFB0: 0D 8A 64 69 66 66 69 63 75 6C 74 20 74 6F 20 66 ..difficult to f
01CFC0: 69 6E 64 2C 20 73 6F 20 62 65 20 63 61 72 65 66 ind, so be caref
01CFD0: 75 6C 21 20 54 68 65 20 42 43 50 4C 20 62 6F 6F ul! The BCPL boo
01CFE0: 6B 20 63 6F 6E 74 61 69 6E 73 20 61 20 76 65 72 k contains a ver
01CFF0: 79 20 75 73 65 66 75 6C 20 0D 8A 73 65 63 74 69 y useful ..secti
01D000: 74 70 75 74 20 66 69 6C 65 22 29 0D 0A 20 20 20 tput file")..
01D010: 20 65 6E 64 72 65 61 64 28 29 0D 0A 20 20 24 29 endread().. $)
01D020: 0D 0A 20 20 45 4C 53 45 20 77 72 69 74 65 73 28 .. ELSE writes(
01D030: 22 43 61 6E 27 74 20 6F 70 65 6E 20 69 6E 70 75 "Can't open inpu
01D040: 74 20 66 69 6C 65 22 29 0D 0A 24 29 0D 0A 0D 0A t file")..$)....
01D050: E2 50 6F 69 6E 74 73 20 74 6F 20 6E 6F 74 65 3A .Points to note:
01D060: E2 0D 0A 0D 0A 09 31 2E 20 54 68 65 20 75 73 65 ......1. The use
01D070: 20 6F 66 20 2F 2A 20 61 6E 64 20 2A 2F 20 74 6F of /* and */ to
01D080: 20 65 6E 63 6C 6F 73 65 20 63 6F 6D 6D 65 6E 74 enclose comment
01D090: 73 2E 0D 0A 0D 0A 09 32 2E 20 54 68 65 20 75 73 s......2. The us
01D0A0: 65 20 6F 66 90 20 4C 45 54 90 20 74 6F 90 20 64 e of. LET. to. d
01D0B0: 65 63 6C 61 72 65 90 20 74 68 65 20 76 61 72 69 eclare. the vari
01D0C0: 61 62 6C 65 73 20 27 69 6E 6E 61 6D 65 27 2C 20 ables 'inname',
01D0D0: 27 69 6E 62 75 66 66 27 2C 20 0D 8A 27 6F 75 74 'inbuff', ..'out
01D0E0: 6E 61 6D 65 27 2C 20 27 6F 75 74 62 75 66 66 27 name', 'outbuff'
01D0F0: 2C 20 61 6E 64 20 27 63 27 2E 20 41 6C 6C 90 20 , and 'c'. All.
01D100: 76 61 72 69 61 62 6C 65 73 90 20 6D 75 73 74 20 variables. must
01D110: 62 65 20 64 65 63 6C 61 72 65 64 20 62 65 66 6F be declared befo
01D120: 72 65 20 0D 8A 75 73 65 2C 20 61 6E 64 20 74 68 re ..use, and th
01D130: 65 20 64 65 63 6C 61 72 61 74 69 6F 6E 73 20 6D e declarations m
01D140: 75 73 74 20 61 70 70 65 61 72 20 62 65 66 6F 72 ust appear befor
01D150: 65 20 61 6E 79 20 63 6F 6D 6D 61 6E 64 73 2E 0D e any commands..
01D160: 0A 0D 0A 09 33 2E 20 54 68 65 20 75 73 65 20 6F ....3. The use o
01D170: 66 20 56 45 43 20 74 6F 20 64 65 66 69 6E 65 20 f VEC to define
01D180: 76 65 63 74 6F 72 73 20 61 73 20 64 65 73 63 72 vectors as descr
01D190: 69 62 65 64 20 61 62 6F 76 65 2E 0D 0A 0D 0A 09 ibed above......
01D1A0: 34 2E 20 72 65 61 64 73 2E 20 41 6E 6F 74 68 65 4. reads. Anothe
01D1B0: 72 20 6C 69 62 72 61 72 79 90 20 70 72 6F 63 65 r library. proce
01D1C0: 64 75 72 65 2C 90 20 74 6F 90 20 72 65 61 64 90 dure,. to. read.
01D1D0: 20 61 20 73 74 72 69 6E 67 20 66 72 6F 6D 20 74 a string from t
01D1E0: 68 65 20 0D 8A 6B 65 79 62 6F 61 72 64 20 69 6E he ..keyboard in
01D1F0: 74 6F 20 74 68 65 20 76 65 63 74 6F 72 20 67 69 to the vector gi
01D200: 6F 6E 20 6F 6E 20 74 68 65 20 70 69 74 66 61 6C on on the pitfal
01D210: 6C 73 20 6F 66 20 42 43 50 4C 20 70 72 6F 67 72 ls of BCPL progr
01D220: 61 6D 6D 69 6E 67 2E 0D 0A 0D 0A 09 53 69 6E 67 amming......Sing
01D230: 6C 65 20 71 75 6F 74 65 73 20 65 6E 63 6C 6F 73 le quotes enclos
01D240: 65 90 20 61 90 20 63 68 61 72 61 63 74 65 72 90 e. a. character.
01D250: 20 61 6E 64 90 20 64 65 66 69 6E 65 90 20 61 20 and. define. a
01D260: 63 6F 6E 73 74 61 6E 74 20 77 68 6F 73 65 20 0D constant whose .
01D270: 8A 76 61 6C 75 65 20 69 73 20 74 68 65 20 41 53 .value is the AS
01D280: 43 49 49 20 63 6F 64 65 20 6F 66 20 74 68 61 74 CII code of that
01D290: 20 63 68 61 72 61 63 74 65 72 2E 20 0D 0A 09 44 character. ...D
01D2A0: 6F 75 62 6C 65 20 71 75 6F 74 65 73 20 65 6E 63 ouble quotes enc
01D2B0: 6C 6F 73 65 20 61 20 73 74 72 69 6E 67 90 20 61 lose a string. a
01D2C0: 6E 64 90 20 64 65 66 69 6E 65 20 61 20 63 6F 6E nd. define a con
01D2D0: 73 74 61 6E 74 20 77 68 6F 73 65 20 76 61 6C 75 stant whose valu
01D2E0: 65 20 0D 8A 69 73 20 74 68 65 20 61 64 64 72 65 e ..is the addre
01D2F0: 73 73 20 6F 66 20 74 68 61 74 20 73 74 72 69 6E ss of that strin
01D300: 67 2E 0D 0A 3E 70 61 0D 0A 3E 63 65 20 E2 36 2E g...>pa..>ce .6.
01D310: 20 54 57 4F 20 42 43 50 4C 20 50 52 4F 47 52 41 TWO BCPL PROGRA
01D320: 4D 53 E2 0D 0A 0D 0A E2 28 69 29 20 41 20 76 65 MS......(i) A ve
01D330: 72 79 20 73 69 6D 70 6C 65 20 42 43 50 4C 20 70 ry simple BCPL p
01D340: 72 6F 67 72 61 6D E2 0D 0A 0D 0A 54 68 69 73 20 rogram.....This
01D350: 73 69 6D 70 6C 79 20 64 69 73 70 6C 61 79 73 20 simply displays
01D360: 61 20 6D 65 73 73 61 67 65 20 6F 6E 20 74 68 65 a message on the
01D370: 20 73 63 72 65 65 6E 2E 0D 0A 0D 0A 0D 0A 09 47 screen........G
01D380: 45 54 20 22 43 4C 49 42 48 44 52 22 0D 0A 09 4C ET "CLIBHDR"...L
01D390: 45 54 20 73 74 61 72 74 28 29 20 42 45 0D 0A 09 ET start() BE...
01D3A0: 24 28 0D 0A 09 20 20 77 72 69 74 65 73 28 22 48 $(... writes("H
01D3B0: 65 6C 6C 6F 20 65 76 65 72 79 6F 6E 65 21 22 29 ello everyone!")
01D3C0: 0D 0A 09 24 29 0D 0A 0D 0A 0D 0A E2 50 6F 69 6E ...$).......Poin
01D3D0: 74 73 20 74 6F 20 6E 6F 74 65 3A E2 0D 0A 0D 0A ts to note:.....
01D3E0: 09 31 2E 20 4C 45 54 20 61 6E 64 20 42 45 90 20 .1. LET and BE.
01D3F0: 61 72 65 90 20 42 43 50 4C 90 20 6B 65 79 77 6F are. BCPL. keywo
01D400: 76 65 6E 20 61 73 20 70 61 72 61 6D 65 74 65 72 ven as parameter
01D410: 2E 0D 0A 0D 0A 09 35 2E 20 66 69 6E 64 6F 75 74 ......5. findout
01D420: 70 75 74 2C 20 66 69 6E 64 69 6E 70 75 74 2C 20 put, findinput,
01D430: 72 65 61 64 63 68 2C 90 20 77 72 69 74 65 63 68 readch,. writech
01D440: 2E 90 20 4C 69 62 72 61 72 79 20 70 72 6F 63 65 .. Library proce
01D450: 64 75 72 65 73 20 74 6F 20 0D 8A 6F 70 65 6E 20 dures to ..open
01D460: 66 69 6C 65 73 2C 20 61 6E 64 20 72 65 61 64 20 files, and read
01D470: 61 6E 64 20 77 72 69 74 65 20 63 68 61 72 61 63 and write charac
01D480: 74 65 72 73 2E 0D 0A 0D 0A 09 36 2E 20 54 45 53 ters......6. TES
01D490: 54 20 2E 2E 2E 20 54 48 45 4E 20 2E 2E 2E 20 45 T ... THEN ... E
01D4A0: 4C 53 45 2E 20 41 20 63 6F 6E 64 69 74 69 6F 6E LSE. A condition
01D4B0: 61 6C 20 63 6F 6D 6D 61 6E 64 2E 20 53 65 63 74 al command. Sect
01D4C0: 69 6F 6E 20 62 72 61 63 6B 65 74 73 20 0D 8A 61 ion brackets ..a
01D4D0: 72 65 20 75 73 65 64 20 74 6F 20 65 6E 63 6C 6F re used to enclo
01D4E0: 73 65 20 74 68 65 20 62 6C 6F 63 6B 20 6F 66 20 se the block of
01D4F0: 63 6F 6D 6D 61 6E 64 73 20 74 68 61 74 20 77 69 commands that wi
01D500: 6C 6C 20 62 65 20 65 78 65 63 75 74 65 64 20 69 ll be executed i
01D510: 66 20 74 68 65 20 0D 8A 74 65 73 74 20 73 75 63 f the ..test suc
01D520: 63 65 65 64 73 20 6F 72 20 66 61 69 6C 73 2E 0D ceeds or fails..
01D530: 0A 0D 0A 09 37 2E 20 52 45 50 45 41 54 55 4E 54 ....7. REPEATUNT
01D540: 49 4C 2E 20 54 68 65 20 70 72 65 63 65 64 69 6E IL. The precedin
01D550: 67 20 62 6C 6F 63 6B 20 28 65 6E 63 6C 6F 73 65 g block (enclose
01D560: 64 20 69 6E 20 73 65 63 74 69 6F 6E 20 62 72 61 d in section bra
01D570: 63 6B 65 74 73 29 20 0D 8A 69 73 20 72 65 70 65 ckets) ..is repe
01D580: 61 74 65 64 20 75 6E 74 69 6C 20 74 68 65 20 63 ated until the c
01D590: 6F 6E 64 69 74 69 6F 6E 90 20 62 65 63 6F 6D 65 ondition. become
01D5A0: 73 90 20 74 72 75 65 90 20 28 69 6E 20 74 68 69 s. true. (in thi
01D5B0: 73 20 63 61 73 65 20 77 68 65 6E 20 74 68 65 20 s case when the
01D5C0: 0D 8A 65 6E 64 20 6F 66 20 74 68 65 20 66 69 6C ..end of the fil
01D5D0: 65 20 69 73 20 72 65 61 63 68 65 64 29 2E 0D 0A e is reached)...
01D5E0: 3E 70 61 0D 0A 3E 63 65 20 E2 37 2E 20 53 55 4D >pa..>ce .7. SUM
01D5F0: 4D 41 52 59 20 4F 46 20 54 48 45 20 42 43 50 4C MARY OF THE BCPL
01D600: 72 64 73 2E 90 20 42 43 50 4C 90 20 6B 65 79 77 rds.. BCPL. keyw
01D610: 6F 72 64 73 20 61 72 65 20 70 72 69 6E 74 65 64 ords are printed
01D620: 20 69 6E 20 0D 8A 75 70 70 65 72 20 63 61 73 65 in ..upper case
01D630: 20 74 68 72 6F 75 67 68 6F 75 74 20 74 68 69 73 throughout this
01D640: 20 6D 61 6E 75 61 6C 20 66 6F 72 90 20 63 6C 61 manual for. cla
01D650: 72 69 74 79 2E 20 49 74 20 69 73 20 6E 6F 74 20 rity. It is not
01D660: 6E 65 63 65 73 73 61 72 79 20 74 6F 20 0D 8A 74 necessary to ..t
01D670: 79 70 65 20 74 68 65 6D 20 69 6E 20 75 70 70 65 ype them in uppe
01D680: 72 20 63 61 73 65 20 61 73 20 74 68 65 20 63 6F r case as the co
01D690: 6D 70 69 6C 65 72 20 69 67 6E 6F 72 65 73 20 74 mpiler ignores t
01D6A0: 68 65 20 64 69 73 74 69 6E 63 74 69 6F 6E 2E 0D he distinction..
01D6B0: 0A 0D 0A 09 32 2E 20 73 74 61 72 74 28 29 2E 20 ....2. start().
01D6C0: 54 68 69 73 90 20 69 73 90 20 74 68 65 90 20 70 This. is. the. p
01D6D0: 72 6F 63 65 64 75 72 65 90 20 74 68 61 74 90 20 rocedure. that.
01D6E0: 6D 75 73 74 90 20 62 65 90 20 70 72 65 73 65 6E must. be. presen
01D6F0: 74 2E 20 54 68 65 20 0D 8A 62 72 61 63 6B 65 74 t. The ..bracket
01D700: 73 20 69 6E 64 69 63 61 74 65 20 74 68 61 74 20 s indicate that
01D710: 27 73 74 61 72 74 27 20 69 73 20 74 68 65 90 20 'start' is the.
01D720: 6E 61 6D 65 90 20 6F 66 20 61 20 70 72 6F 63 65 name. of a proce
01D730: 64 75 72 65 2E 20 54 68 65 79 20 77 69 6C 6C 20 dure. They will
01D740: 0D 8A 6F 66 74 65 6E 20 63 6F 6E 74 61 69 6E 20 ..often contain
01D750: 70 61 72 61 6D 65 74 65 72 73 20 66 6F 72 20 74 parameters for t
01D760: 68 65 20 70 72 6F 63 65 64 75 72 65 2E 0D 0A 0D he procedure....
01D770: 0A 09 33 2E 20 24 28 20 61 6E 64 20 24 29 2E 20 ..3. $( and $).
01D780: 54 68 65 73 65 90 20 61 72 65 90 20 73 65 63 74 These. are. sect
01D790: 69 6F 6E 90 20 62 72 61 63 6B 65 74 73 2C 20 6D ion. brackets, m
01D7A0: 61 72 6B 69 6E 67 20 74 68 65 20 73 74 61 72 74 arking the start
01D7B0: 20 61 6E 64 20 0D 8A 65 6E 64 20 6F 66 20 74 68 and ..end of th
01D7C0: 65 20 70 72 6F 63 65 64 75 72 65 20 27 73 74 61 e procedure 'sta
01D7D0: 72 74 27 2E 0D 0A 0D 0A 09 34 2E 20 77 72 69 74 rt'......4. writ
01D7E0: 65 73 2E 20 54 68 69 73 20 69 73 20 61 20 42 43 es. This is a BC
01D7F0: 50 4C 90 20 70 72 6F 63 65 64 75 72 65 20 28 6E PL. procedure (n
01D800: 20 4C 41 4E 47 55 41 47 45 E2 0D 0A 0D 0A 0D 0A LANGUAGE.......
01D810: 09 54 68 65 20 42 43 50 4C 20 6C 61 6E 67 75 61 .The BCPL langua
01D820: 67 65 90 20 69 73 90 20 62 65 73 74 90 20 63 6F ge. is. best. co
01D830: 6E 73 69 64 65 72 65 64 90 20 69 6E 90 20 74 77 nsidered. in. tw
01D840: 6F 90 20 70 61 72 74 73 2E 20 46 69 72 73 74 20 o. parts. First
01D850: 74 68 65 20 0D 8A 73 74 61 6E 64 61 72 64 20 6C the ..standard l
01D860: 61 6E 67 75 61 67 65 20 63 6F 6D 70 72 69 73 69 anguage comprisi
01D870: 6E 67 20 74 68 65 20 63 6F 6D 6D 61 6E 64 73 90 ng the commands.
01D880: 20 61 6E 64 20 73 79 6E 74 61 78 20 66 6F 72 20 and syntax for
01D890: 65 78 70 72 65 73 73 69 6F 6E 73 2C 20 0D 8A 63 expressions, ..c
01D8A0: 6F 6E 73 74 61 6E 74 73 20 65 74 63 2E 20 53 65 onstants etc. Se
01D8B0: 63 6F 6E 64 90 20 74 68 65 90 20 69 6E 70 75 74 cond. the. input
01D8C0: 2F 6F 75 74 70 75 74 90 20 6C 69 62 72 61 72 79 /output. library
01D8D0: 90 20 72 6F 75 74 69 6E 65 73 90 20 77 68 69 63 . routines. whic
01D8E0: 68 20 61 72 65 20 0D 8A 6D 6F 73 74 6C 79 20 70 h are ..mostly p
01D8F0: 72 6F 63 65 64 75 72 65 73 20 77 72 69 74 74 65 rocedures writte
01D900: 6E 20 69 6E 20 42 43 50 4C 2E 20 54 68 65 72 65 n in BCPL. There
01D910: 90 20 61 72 65 20 61 20 66 61 69 72 6C 79 20 73 . are a fairly s
01D920: 74 61 6E 64 61 72 64 20 73 65 74 20 6F 66 20 0D tandard set of .
01D930: 8A 74 68 65 73 65 2C 20 62 75 74 20 74 68 69 73 .these, but this
01D940: 20 69 6D 70 6C 65 6D 65 6E 74 61 74 69 6F 6E 20 implementation
01D950: 69 6E 63 6C 75 64 65 73 20 61 64 64 69 74 69 6F includes additio
01D960: 6E 61 6C 20 49 2F 4F 20 72 6F 75 74 69 6E 65 73 nal I/O routines
01D970: 2E 0D 0A 0D 0A E2 45 6C 65 6D 65 6E 74 73 3A E2 ......Elements:.
01D980: 0D 0A 0D 0A 3E 2D 2D 2D 2D 2D 4C 2D 2D 2D 21 2D ....>-----L---!-
01D990: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
01D9A0: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
01D9B0: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
01D9C0: 2D 2D 2D 2D 2D 2D 21 2D 2D 52 0D 0A 28 69 29 09 ------!--R..(i).
01D9D0: 56 61 72 69 61 62 6C 65 20 6E 61 6D 65 2E 20 4D Variable name. M
01D9E0: 75 73 74 20 73 74 61 72 74 90 20 77 69 74 68 90 ust start. with.
01D9F0: 20 61 90 20 6C 65 74 74 65 72 90 20 61 6E 64 20 a. letter. and
01DA00: 6F 74 65 20 74 68 65 20 62 72 61 63 6B 65 74 73 ote the brackets
01DA10: 20 63 6F 6E 74 61 69 6E 69 6E 67 20 0D 8A 74 68 containing ..th
01DA20: 65 20 70 61 72 61 6D 65 74 65 72 29 2E 20 49 74 e parameter). It
01DA30: 20 69 73 20 6E 6F 74 20 61 20 42 43 50 4C 90 20 is not a BCPL.
01DA40: 6B 65 79 77 6F 72 64 20 61 6E 64 20 73 6F 20 74 keyword and so t
01DA50: 68 65 20 70 72 6F 63 65 64 75 72 65 20 6D 75 73 he procedure mus
01DA60: 74 20 62 65 20 0D 8A 64 65 66 69 6E 65 64 20 73 t be ..defined s
01DA70: 6F 6D 65 77 68 65 72 65 20 28 73 65 65 20 62 65 omewhere (see be
01DA80: 6C 6F 77 29 2E 0D 0A 0D 0A 09 35 2E 20 47 45 54 low)......5. GET
01DA90: 20 22 43 4C 49 42 48 44 52 22 2E 90 20 54 68 69 "CLIBHDR".. Thi
01DAA0: 73 90 20 69 73 90 20 61 90 20 64 69 72 65 63 74 s. is. a. direct
01DAB0: 69 76 65 90 20 28 61 6E 90 20 69 6E 73 74 72 75 ive. (an. instru
01DAC0: 63 74 69 6F 6E 20 74 6F 20 74 68 65 20 0D 8A 63 ction to the ..c
01DAD0: 6F 6D 70 69 6C 65 72 29 20 74 6F 20 63 6F 6D 70 ompiler) to comp
01DAE0: 69 6C 65 20 74 68 65 20 42 43 50 4C 90 20 63 6F ile the BCPL. co
01DAF0: 64 65 90 20 63 6F 6E 74 61 69 6E 65 64 90 20 69 de. contained. i
01DB00: 6E 20 74 68 65 20 66 69 6C 65 20 27 43 4C 49 42 n the file 'CLIB
01DB10: 48 44 52 27 2E 20 0D 8A 54 68 69 73 20 66 69 6C HDR'. ..This fil
01DB20: 65 20 69 73 20 61 90 20 6C 69 62 72 61 72 79 90 e is a. library.
01DB30: 20 6F 66 90 20 75 73 65 66 75 6C 90 20 70 72 6F of. useful. pro
01DB40: 63 65 64 75 72 65 73 2C 90 20 69 6E 63 6C 75 64 cedures,. includ
01DB50: 69 6E 67 20 6F 6E 65 20 63 61 6C 6C 65 64 20 0D ing one called .
01DB60: 8A 27 77 72 69 74 65 73 27 2E 0D 0A 0D 0A 0D 0A .'writes'.......
01DB70: E2 28 69 69 29 20 41 20 73 6C 69 67 68 74 6C 79 .(ii) A slightly
01DB80: 20 6D 6F 72 65 20 63 6F 6D 70 6C 65 78 20 42 43 more complex BC
01DB90: 50 4C 20 70 72 6F 67 72 61 6D E2 0D 0A 0D 0A 0D PL program......
01DBA0: 0A 47 45 54 20 22 63 6C 69 62 68 64 72 22 0D 0A .GET "clibhdr"..
01DBB0: 0D 0A 2F 2A 20 54 68 69 73 20 69 73 20 61 20 63 ../* This is a c
01DBC0: 6F 70 79 20 72 6F 75 74 69 6E 65 20 2A 2F 0D 0A opy routine */..
01DBD0: 0D 0A 4C 45 54 20 73 74 61 72 74 28 29 20 42 45 ..LET start() BE
01DBE0: 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 69 6E ....$(.. LET in
01DBF0: 6E 61 6D 65 20 3D 20 56 45 43 20 32 30 20 20 3B name = VEC 20 ;
01DC00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
01DC10: 19 00 01 00 02 09 4E E5 19 00 C1 02 00 00 00 02 ......N.........
01DC20: 19 00 C6 02 00 00 00 02 19 00 C2 02 00 00 00 02 ................
01DC30: 19 00 C7 02 00 00 00 02 19 00 C3 02 00 00 00 02 ................
01DC40: 19 00 C8 02 00 00 00 02 19 00 C4 02 00 00 00 02 ................
01DC50: 19 00 C9 02 00 00 00 02 19 00 C5 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: 6D 61 79 20 61 6C 73 6F 20 63 6F 6E 74 61 69 6E may also contain
01DD10: 20 0D 8A 09 64 69 67 69 74 73 20 61 6E 64 20 66 ...digits and f
01DD20: 75 6C 6C 20 73 74 6F 70 73 2E 20 41 6C 6C 20 63 ull stops. All c
01DD30: 68 61 72 61 63 74 65 72 73 20 73 69 67 6E 69 66 haracters signif
01DD40: 69 63 61 6E 74 2E 0D 0A 28 69 69 29 09 4E 75 6D icant...(ii).Num
01DD50: 62 65 72 2E 20 43 61 6E 20 62 65 20 64 65 63 69 ber. Can be deci
01DD60: 6D 61 6C 2C 20 6F 63 74 61 6C 20 28 70 72 65 66 mal, octal (pref
01DD70: 69 78 20 77 69 74 68 20 23 20 6F 72 20 23 4F 29 ix with # or #O)
01DD80: 2C 20 68 65 78 61 64 65 63 69 6D 61 6C 20 0D 8A , hexadecimal ..
01DD90: 09 28 70 72 65 66 69 78 20 77 69 74 68 20 23 58 .(prefix with #X
01DDA0: 29 2C 20 6F 72 20 62 69 6E 61 72 79 20 28 70 72 ), or binary (pr
01DDB0: 65 66 69 78 20 77 69 74 68 20 23 42 29 2E 0D 0A efix with #B)...
01DDC0: 28 69 69 69 29 20 53 74 72 69 6E 67 20 63 6F 6E (iii) String con
01DDD0: 73 74 61 6E 74 2E 20 45 6E 63 6C 6F 73 65 20 69 stant. Enclose i
01DDE0: 6E 20 64 6F 75 62 6C 65 20 71 75 6F 74 65 73 2E n double quotes.
01DDF0: 0D 0A 28 69 76 29 09 43 68 61 72 61 63 74 65 72 ..(iv).Character
01DE00: 20 63 6F 6E 73 74 61 6E 74 2E 20 45 6E 63 6C 6F constant. Enclo
01DE10: 73 65 20 69 6E 20 73 69 6E 67 6C 65 20 71 75 6F se in single quo
01DE20: 74 65 73 2E 0D 0A 09 0D 0A 09 43 65 72 74 61 69 tes.......Certai
01DE30: 6E 20 63 68 61 72 61 63 74 65 72 73 20 61 72 65 n characters are
01DE40: 20 72 65 70 72 65 73 65 6E 74 65 64 20 77 69 74 represented wit
01DE50: 68 69 6E 90 20 61 20 73 74 72 69 6E 67 20 6F 72 hin. a string or
01DE60: 20 63 68 61 72 61 63 74 65 72 20 0D 8A 09 63 6F character ...co
01DE70: 6E 73 74 61 6E 74 20 69 6E 20 61 20 73 70 65 63 nstant in a spec
01DE80: 69 61 6C 20 77 61 79 3A 0D 0A 0D 0A 09 2A 22 09 ial way:.....*".
01DE90: 20 74 68 65 20 22 20 73 79 6D 62 6F 6C 0D 0A 09 the " symbol...
01DEA0: 2A 27 09 20 74 68 65 20 27 20 73 79 6D 62 6F 6C *'. the ' symbol
01DEB0: 0D 0A 09 2A 2A 09 20 74 68 65 20 2A 20 73 79 6D ...**. the * sym
01DEC0: 62 6F 6C 0D 0A 09 2A 42 09 20 74 68 65 20 62 61 bol...*B. the ba
01DED0: 63 6B 73 70 61 63 65 20 63 68 61 72 61 63 74 65 ckspace characte
01DEE0: 72 0D 0A 09 2A 43 09 20 61 20 63 61 72 72 69 61 r...*C. a carria
01DEF0: 67 65 20 72 65 74 75 72 6E 20 28 31 33 29 0D 0A ge return (13)..
01DF00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01DF10: 20 0D 0A 3E 70 61 0D 0A 4E 6F 74 65 3A 20 50 43 ..>pa..Note: PC
01DF20: 57 20 75 73 65 72 73 20 77 69 6C 6C 20 66 69 6E W users will fin
01DF30: 64 20 74 77 6F 90 20 6F 66 90 20 74 68 65 90 20 d two. of. the.
01DF40: 6F 70 65 72 61 74 6F 72 90 20 73 79 6D 62 6F 6C operator. symbol
01DF50: 73 20 6E 6F 74 20 73 68 6F 77 6E 20 6F 6E 20 0D s not shown on .
01DF60: 8A 09 74 68 65 69 72 90 20 6B 65 79 62 6F 61 72 ..their. keyboar
01DF70: 64 73 2E 90 20 54 68 65 79 90 20 61 72 65 90 20 ds.. They. are.
01DF80: 6F 62 74 61 69 6E 65 64 90 90 20 62 79 90 20 74 obtained.. by. t
01DF90: 68 65 90 20 66 6F 6C 6C 6F 77 69 6E 67 90 20 6B he. following. k
01DFA0: 65 79 20 0D 8A 09 63 6F 6D 62 69 6E 61 74 69 6F ey ...combinatio
01DFB0: 6E 73 3A 0D 0A 09 5C 09 2D 2D 09 45 58 54 52 41 ns:...\.--.EXTRA
01DFC0: 20 6B 65 79 20 61 6E 64 20 74 68 65 20 6B 65 79 key and the key
01DFD0: 20 6D 61 72 6B 65 64 20 77 69 74 68 20 61 20 31 marked with a 1
01DFE0: 2F 32 20 73 79 6D 62 6F 6C 2E 0D 0A 09 7C 09 2D /2 symbol....|.-
01DFF0: 2D 09 45 58 54 52 41 20 6B 65 79 20 61 6E 64 20 -.EXTRA key and
01E000: 74 68 65 20 66 75 6C 6C 20 73 74 6F 70 20 6B 65 the full stop ke
01E010: 79 2E 0D 0A 0D 0A 0D 0A E2 53 65 63 74 69 6F 6E y........Section
01E020: 20 62 72 61 63 6B 65 74 73 20 61 6E 64 20 63 6F brackets and co
01E030: 6D 70 6F 75 6E 64 20 63 6F 6D 6D 61 6E 64 73 3A mpound commands:
01E040: E2 0D 0A 0D 0A 09 4D 61 6E 79 20 6F 66 20 74 68 ......Many of th
01E050: 65 20 63 6F 6D 6D 61 6E 64 73 20 64 65 73 63 72 e commands descr
01E060: 69 62 65 64 20 62 65 6C 6F 77 90 20 61 70 70 6C ibed below. appl
01E070: 79 20 74 6F 20 61 20 73 69 6E 67 6C 65 20 63 6F y to a single co
01E080: 6D 6D 61 6E 64 2E 20 0D 8A 09 46 6F 72 20 65 78 mmand. ...For ex
01E090: 61 6D 70 6C 65 20 52 45 50 45 41 54 90 20 77 69 ample REPEAT. wi
01E0A0: 6C 6C 90 20 72 65 70 65 61 74 90 20 61 90 20 63 ll. repeat. a. c
01E0B0: 6F 6D 6D 61 6E 64 90 20 75 6E 74 69 6C 20 74 68 ommand. until th
01E0C0: 65 20 72 65 71 75 69 72 65 64 20 0D 8A 09 63 6F e required ...co
01E0D0: 6E 64 69 74 69 6F 6E 20 69 73 20 74 72 75 65 2E ndition is true.
01E0E0: 20 53 65 63 74 69 6F 6E 90 20 62 72 61 63 6B 65 Section. bracke
01E0F0: 74 73 90 20 61 72 65 90 20 75 73 65 64 20 74 6F ts. are. used to
01E100: 09 2A 4E 09 20 74 68 65 20 6E 65 77 6C 69 6E 65 .*N. the newline
01E110: 20 63 68 61 72 61 63 74 65 72 20 28 69 6E 20 66 character (in f
01E120: 61 63 74 20 74 77 6F 20 63 68 61 72 61 63 74 65 act two characte
01E130: 72 73 2C 20 31 33 20 61 6E 64 20 31 30 29 0D 0A rs, 13 and 10)..
01E140: 09 2A 50 09 20 74 68 65 20 6E 65 77 20 70 61 67 .*P. the new pag
01E150: 65 20 28 66 6F 72 6D 20 66 65 65 64 29 20 63 68 e (form feed) ch
01E160: 61 72 61 63 74 65 72 20 28 31 32 29 0D 0A 09 2A aracter (12)...*
01E170: 53 09 20 61 20 73 70 61 63 65 0D 0A 09 2A 54 09 S. a space...*T.
01E180: 20 74 68 65 20 74 61 62 20 63 68 61 72 61 63 74 the tab charact
01E190: 65 72 0D 0A 09 2A 58 6E 6E 20 61 20 68 65 78 61 er...*Xnn a hexa
01E1A0: 64 65 63 69 6D 61 6C 20 6E 75 6D 62 65 72 20 62 decimal number b
01E1B0: 65 74 77 65 65 6E 20 30 20 61 6E 64 20 46 46 2C etween 0 and FF,
01E1C0: 20 65 2E 67 2E 20 2A 58 46 31 0D 0A 0D 0A 28 76 e.g. *XF1....(v
01E1D0: 29 09 54 72 75 74 68 20 76 61 6C 75 65 73 2C 20 ).Truth values,
01E1E0: 54 52 55 45 20 61 6E 64 20 46 41 4C 53 45 2E 20 TRUE and FALSE.
01E1F0: 50 72 65 2D 64 65 66 69 6E 65 64 20 63 6F 6E 73 Pre-defined cons
01E200: 74 61 6E 74 73 20 77 68 6F 73 65 20 76 61 6C 75 tants whose valu
01E210: 65 73 20 0D 8A 09 61 72 65 20 74 68 65 20 62 69 es ...are the bi
01E220: 74 20 70 61 74 74 65 72 6E 73 20 72 65 70 72 65 t patterns repre
01E230: 73 65 6E 74 69 6E 67 20 74 72 75 65 20 61 6E 64 senting true and
01E240: 20 66 61 6C 73 65 2E 0D 0A 0D 0A 0D 0A E2 4F 70 false........Op
01E250: 65 72 61 74 6F 72 73 3A E2 0D 0A 0D 0A 41 64 64 erators:.....Add
01E260: 72 65 73 73 69 6E 67 20 6F 70 65 72 61 74 6F 72 ressing operator
01E270: 73 0D 0A 0D 0A 21 09 69 6E 64 69 72 65 63 74 69 s....!.indirecti
01E280: 6F 6E 20 28 73 75 62 73 63 72 69 70 74 29 2C 20 on (subscript),
01E290: 65 2E 67 2E 20 21 61 2C 20 61 21 62 0D 0A 40 09 e.g. !a, a!b..@.
01E2A0: 61 64 64 72 65 73 73 20 6F 66 2C 20 74 68 65 20 address of, the
01E2B0: 69 6E 76 65 72 73 65 20 6F 66 20 21 2C 20 73 6F inverse of !, so
01E2C0: 20 40 28 21 61 29 20 3D 20 61 0D 0A 0D 0A 41 72 @(!a) = a....Ar
01E2D0: 69 74 68 6D 65 74 69 63 20 6F 70 65 72 61 74 6F ithmetic operato
01E2E0: 72 73 0D 0A 0D 0A 2B 09 61 64 64 69 74 69 6F 6E rs....+.addition
01E2F0: 0D 0A 2D 2D 09 73 75 62 74 72 61 63 74 69 6F 6E ..--.subtraction
01E300: 20 67 72 6F 75 70 20 73 65 76 65 72 61 6C 20 0D group several .
01E310: 8A 09 63 6F 6D 6D 61 6E 64 73 20 61 73 20 61 90 ..commands as a.
01E320: 20 27 63 6F 6D 70 6F 75 6E 64 90 20 63 6F 6D 6D 'compound. comm
01E330: 61 6E 64 27 2C 90 20 77 68 69 63 68 90 20 69 73 and',. which. is
01E340: 90 20 63 6F 6E 73 69 64 65 72 65 64 90 20 61 73 . considered. as
01E350: 20 61 20 0D 8A 09 73 69 6E 67 6C 65 20 63 6F 6D a ...single com
01E360: 6D 61 6E 64 20 66 6F 72 20 74 68 65 73 65 20 70 mand for these p
01E370: 75 72 70 6F 73 65 73 2E 90 20 54 68 65 90 20 73 urposes.. The. s
01E380: 65 63 74 69 6F 6E 20 62 72 61 63 6B 65 74 73 20 ection brackets
01E390: 61 72 65 20 24 28 20 0D 8A 09 61 6E 64 20 24 29 are $( ...and $)
01E3A0: 2E 20 54 68 65 20 63 6F 6D 6D 61 6E 64 73 20 74 . The commands t
01E3B0: 6F 90 20 62 65 90 20 67 72 6F 75 70 65 64 90 20 o. be. grouped.
01E3C0: 73 68 6F 75 6C 64 20 62 65 20 65 6E 63 6C 6F 73 should be enclos
01E3D0: 65 64 20 62 65 74 77 65 65 6E 20 0D 8A 09 74 68 ed between ...th
01E3E0: 65 73 65 20 73 79 6D 62 6F 6C 73 2E 0D 0A 0D 0A ese symbols.....
01E3F0: 0D 0A E2 43 6F 6D 6D 61 6E 64 73 3A E2 0D 0A 0D ...Commands:....
01E400: 0A 41 73 73 69 67 6E 6D 65 6E 74 0D 0A 09 0D 0A .Assignment.....
01E410: 09 3A 3D 20 69 73 20 75 73 65 64 20 74 6F 20 61 .:= is used to a
01E420: 73 73 69 67 6E 90 20 61 90 20 76 61 6C 75 65 90 ssign. a. value.
01E430: 20 74 6F 90 20 61 90 20 76 61 72 69 61 62 6C 65 to. a. variable
01E440: 2E 20 54 68 65 72 65 20 61 72 65 20 74 68 72 65 . There are thre
01E450: 65 20 0D 8A 09 62 61 73 69 63 20 66 6F 72 6D 73 e ...basic forms
01E460: 20 6F 66 20 74 68 65 20 61 73 73 69 67 6E 6D 65 of the assignme
01E470: 6E 74 20 73 74 61 74 65 6D 65 6E 74 3A 0D 0A 09 nt statement:...
01E480: 0D 0A 09 76 61 72 69 61 62 6C 65 20 3A 3D 20 65 ...variable := e
01E490: 78 70 72 65 73 73 69 6F 6E 0D 0A 09 76 61 72 69 xpression...vari
01E4A0: 61 62 6C 65 21 73 75 62 73 63 72 69 70 74 20 3A able!subscript :
01E4B0: 3D 20 65 78 70 72 65 73 73 69 6F 6E 0D 0A 09 21 = expression...!
01E4C0: 76 61 72 69 61 62 6C 65 20 3A 3D 20 65 78 70 72 variable := expr
01E4D0: 65 73 73 69 6F 6E 0D 0A 0D 0A 0D 0A 43 6F 6E 64 ession......Cond
01E4E0: 69 74 69 6F 6E 61 6C 20 63 6F 6D 6D 61 6E 64 73 itional commands
01E4F0: 0D 0A 0D 0A 09 49 46 20 3C 65 78 70 72 65 73 73 .....IF <express
01E500: 0D 0A 2A 09 6D 75 6C 74 69 70 6C 69 63 61 74 69 ..*.multiplicati
01E510: 6F 6E 0D 0A 2F 09 69 6E 74 65 67 65 72 20 64 69 on../.integer di
01E520: 76 69 73 69 6F 6E 0D 0A 52 45 4D 09 69 6E 74 65 vision..REM.inte
01E530: 67 65 72 20 72 65 6D 61 69 6E 64 65 72 0D 0A 3E ger remainder..>
01E540: 70 61 0D 0A 52 65 6C 61 74 69 6F 6E 61 6C 20 6F pa..Relational o
01E550: 70 65 72 61 74 6F 72 73 0D 0A 0D 0A 3D 09 65 71 perators....=.eq
01E560: 75 61 6C 20 74 6F 20 28 6F 72 20 45 51 29 0D 0A ual to (or EQ)..
01E570: 5C 3D 09 6E 6F 74 20 65 71 75 61 6C 20 74 6F 20 \=.not equal to
01E580: 28 6F 72 20 7E 3D 20 6F 72 20 4E 45 29 0D 8A 3C (or ~= or NE)..<
01E590: 09 6C 65 73 73 20 74 68 61 6E 20 28 6F 72 20 4C .less than (or L
01E5A0: 54 29 0D 0A FA 3E 09 67 72 65 61 74 65 72 20 74 T)...>.greater t
01E5B0: 68 61 6E 20 28 6F 72 20 47 54 29 0D 0A 3C 3D 09 han (or GT)..<=.
01E5C0: 6C 65 73 73 20 74 68 61 6E 20 6F 72 20 65 71 75 less than or equ
01E5D0: 61 6C 20 74 6F 20 28 6F 72 20 4C 45 29 0D 0A FA al to (or LE)...
01E5E0: 3E 3D 09 67 72 65 61 74 65 72 20 74 68 61 6E 20 >=.greater than
01E5F0: 6F 72 20 65 71 75 61 6C 20 74 6F 20 28 6F 72 20 or equal to (or
01E600: 47 45 29 0D 0A 0D 0A 0D 0A 4C 6F 67 69 63 61 6C GE)......Logical
01E610: 20 6F 70 65 72 61 74 6F 72 73 0D 0A 0D 0A 7C 09 operators....|.
01E620: 6F 72 20 28 6F 72 20 5C 2F 20 6F 72 20 4C 4F 47 or (or \/ or LOG
01E630: 4F 52 29 0D 0A 26 09 61 6E 64 20 28 6F 72 20 2F OR)..&.and (or /
01E640: 5C 20 6F 72 20 4C 4F 47 41 4E 44 29 0D 0A 5C 09 \ or LOGAND)..\.
01E650: 6E 6F 74 20 28 6F 72 20 7E 20 6F 72 20 4E 4F 54 not (or ~ or NOT
01E660: 29 0D 0A 45 51 56 09 62 69 74 77 69 73 65 20 65 )..EQV.bitwise e
01E670: 71 75 69 76 61 6C 65 6E 63 65 0D 0A 4E 45 51 56 quivalence..NEQV
01E680: 09 65 78 63 6C 75 73 69 76 65 20 6F 72 0D 0A 0D .exclusive or...
01E690: 0A 0D 0A 53 68 69 66 74 20 6F 70 65 72 61 74 6F ...Shift operato
01E6A0: 72 73 0D 0A 0D 0A 3C 3C 09 6C 6F 67 69 63 61 6C rs....<<.logical
01E6B0: 20 73 68 69 66 74 20 6C 65 66 74 2C 20 65 2E 67 shift left, e.g
01E6C0: 2E 20 61 3C 3C 34 20 73 68 69 66 74 73 20 6C 65 . a<<4 shifts le
01E6D0: 66 74 20 34 20 62 69 74 73 0D 0A FA 3E 3E 09 6C ft 4 bits...>>.l
01E6E0: 6F 67 69 63 61 6C 20 73 68 69 66 74 20 72 69 67 ogical shift rig
01E6F0: 68 74 0D 0A 0D 0A 0D 0A 4F 74 68 65 72 20 63 6F ht......Other co
01E700: 69 6F 6E 3E 20 54 48 45 4E 20 3C 63 6F 6D 6D 61 ion> THEN <comma
01E710: 6E 64 3E 0D 0A 09 55 4E 4C 45 53 53 20 3C 65 78 nd>...UNLESS <ex
01E720: 70 72 65 73 73 69 6F 6E 3E 20 44 4F 20 3C 63 6F pression> DO <co
01E730: 6D 6D 61 6E 64 3E 0D 0A 09 54 45 53 54 20 3C 65 mmand>...TEST <e
01E740: 78 70 72 65 73 73 69 6F 6E 3E 20 54 48 45 4E 20 xpression> THEN
01E750: 3C 63 6F 6D 6D 61 6E 64 3E 20 45 4C 53 45 20 3C <command> ELSE <
01E760: 63 6F 6D 6D 61 6E 64 3E 0D 0A 0D 0A 09 4E 6F 74 command>.....Not
01E770: 65 20 74 68 61 74 20 49 46 20 64 6F 65 73 20 6E e that IF does n
01E780: 6F 74 20 74 61 6B 65 90 20 61 6E 90 20 45 4C 53 ot take. an. ELS
01E790: 45 90 20 63 6C 61 75 73 65 2C 20 54 45 53 54 20 E. clause, TEST
01E7A0: 6D 75 73 74 20 62 65 20 75 73 65 64 2E 20 0D 8A must be used. ..
01E7B0: 09 54 68 65 20 45 4C 53 45 20 63 6C 61 75 73 65 .The ELSE clause
01E7C0: 20 6D 75 73 74 20 62 65 20 70 72 65 73 65 6E 74 must be present
01E7D0: 20 69 6E 20 61 20 54 45 53 54 20 63 6F 6D 6D 61 in a TEST comma
01E7E0: 6E 64 2E 0D 0A 0D 0A 0D 0A 52 45 50 45 41 54 20 nd.......REPEAT
01E7F0: 61 6E 64 20 57 48 49 4C 45 0D 0A 0D 0A 09 3C 63 and WHILE.....<c
01E800: 6F 6D 6D 61 6E 64 3E 20 52 45 50 45 41 54 0D 0A ommand> REPEAT..
01E810: 09 3C 63 6F 6D 6D 61 6E 64 3E 20 52 45 50 45 41 .<command> REPEA
01E820: 54 55 4E 54 49 4C 20 3C 65 78 70 72 65 73 73 69 TUNTIL <expressi
01E830: 6F 6E 3E 0D 0A 09 3C 63 6F 6D 6D 61 6E 64 3E 20 on>...<command>
01E840: 52 45 50 45 41 54 57 48 49 4C 45 20 3C 65 78 70 REPEATWHILE <exp
01E850: 72 65 73 73 69 6F 6E 3E 0D 0A 09 57 48 49 4C 45 ression>...WHILE
01E860: 20 3C 65 78 70 72 65 73 73 69 6F 6E 3E 20 44 4F <expression> DO
01E870: 20 3C 63 6F 6D 6D 61 6E 64 3E 0D 0A 09 55 4E 54 <command>...UNT
01E880: 49 4C 20 3C 65 78 70 72 65 73 73 69 6F 6E 3E 20 IL <expression>
01E890: 44 4F 20 3C 63 6F 6D 6D 61 6E 64 3E 0D 0A 3E 70 DO <command>..>p
01E8A0: 61 0D 0A 46 4F 52 20 6C 6F 6F 70 0D 0A 0D 0A 09 a..FOR loop.....
01E8B0: 46 4F 52 20 69 20 3D 20 61 20 54 4F 20 62 20 44 FOR i = a TO b D
01E8C0: 4F 20 3C 63 6F 6D 6D 61 6E 64 3E 0D 0A 09 46 4F O <command>...FO
01E8D0: 52 20 69 20 3D 20 61 20 54 4F 20 62 20 42 59 20 R i = a TO b BY
01E8E0: 63 20 44 4F 20 3C 63 6F 6D 6D 61 6E 64 3E 0D 0A c DO <command>..
01E8F0: 0D 0A 09 49 6E 20 74 68 65 20 66 69 72 73 74 20 ...In the first
01E900: 6D 70 6F 6E 65 6E 74 73 20 6F 66 20 65 78 70 72 mponents of expr
01E910: 65 73 73 69 6F 6E 73 3A 0D 0A 0D 0A 28 69 29 09 essions:....(i).
01E920: 46 75 6E 63 74 69 6F 6E 20 63 61 6C 6C 20 28 73 Function call (s
01E930: 65 65 20 62 65 6C 6F 77 29 0D 0A 28 69 69 29 09 ee below)..(ii).
01E940: 43 6F 6E 64 69 74 69 6F 6E 61 6C 20 65 78 70 72 Conditional expr
01E950: 65 73 73 69 6F 6E 2C 20 65 2E 67 2E 20 20 61 20 ession, e.g. a
01E960: 2D 2D 3E 20 62 2C 20 63 0D 0A 09 54 68 69 73 20 --> b, c...This
01E970: 6D 65 61 6E 73 3A 20 65 76 61 6C 75 61 74 65 20 means: evaluate
01E980: 61 20 61 73 20 61 20 74 72 75 74 68 90 20 76 61 a as a truth. va
01E990: 6C 75 65 2E 20 49 66 20 74 72 75 65 20 74 68 65 lue. If true the
01E9A0: 6E 20 74 68 65 20 76 61 6C 75 65 20 0D 8A 09 6F n the value ...o
01E9B0: 66 20 74 68 65 20 65 78 70 72 65 73 73 69 6F 6E f the expression
01E9C0: 20 69 73 20 62 2C 20 6F 74 68 65 72 77 69 73 65 is b, otherwise
01E9D0: 20 63 2E 0D 0A 28 69 69 69 29 09 54 41 42 4C 45 c...(iii).TABLE
01E9E0: 2C 20 65 2E 67 2E 20 54 41 42 4C 45 20 61 2C 62 , e.g. TABLE a,b
01E9F0: 2C 63 2C 64 0D 0A 09 54 68 69 73 20 69 73 20 61 ,c,d...This is a
01EA00: 6E 20 65 78 70 72 65 73 73 69 6F 6E 20 77 68 6F n expression who
01EA10: 73 65 90 20 76 61 6C 75 65 90 20 69 73 90 20 74 se. value. is. t
01EA20: 68 65 20 61 64 64 72 65 73 73 20 69 6E 20 6D 65 he address in me
01EA30: 6D 6F 72 79 20 61 74 20 0D 8A 09 77 68 69 63 68 mory at ...which
01EA40: 20 74 68 65 90 20 74 61 62 6C 65 90 20 6F 66 90 the. table. of.
01EA50: 20 76 61 6C 75 65 73 90 20 69 73 90 20 73 74 6F values. is. sto
01EA60: 72 65 64 2E 90 20 54 68 65 90 20 76 61 6C 75 65 red.. The. value
01EA70: 73 90 20 6D 75 73 74 90 20 62 65 20 0D 8A 09 63 s. must. be ...c
01EA80: 6F 6E 73 74 61 6E 74 73 2E 0D 0A 28 69 76 29 09 onstants...(iv).
01EA90: 56 41 4C 4F 46 20 28 73 65 65 20 62 65 6C 6F 77 VALOF (see below
01EAA0: 29 0D 0A 0D 0A 0D 0A 4F 72 64 65 72 20 6F 66 20 )......Order of
01EAB0: 70 72 65 63 65 64 65 6E 63 65 20 6F 66 20 6F 70 precedence of op
01EAC0: 65 72 61 74 6F 72 73 20 28 68 69 67 68 65 73 74 erators (highest
01EAD0: 20 66 69 72 73 74 29 0D 0A 0D 0A 09 31 2E 20 42 first).....1. B
01EAE0: 72 61 63 6B 65 74 65 64 20 65 78 70 72 65 73 73 racketed express
01EAF0: 69 6F 6E 20 20 20 20 20 20 20 20 20 20 20 20 20 ion
01EB00: 63 61 73 65 20 69 20 74 61 6B 65 73 90 20 76 61 case i takes. va
01EB10: 6C 75 65 73 20 73 74 61 72 74 69 6E 67 20 61 74 lues starting at
01EB20: 20 61 2C 20 69 6E 63 72 65 6D 65 6E 74 69 6E 67 a, incrementing
01EB30: 20 62 79 20 0D 8A 09 31 20 75 6E 74 69 6C 20 67 by ...1 until g
01EB40: 72 65 61 74 65 72 20 74 68 61 6E 20 62 2E 0D 0A reater than b...
01EB50: 09 49 6E 20 74 68 65 20 73 65 63 6F 6E 64 20 63 .In the second c
01EB60: 61 73 65 20 69 20 69 73 20 69 6E 63 72 65 6D 65 ase i is increme
01EB70: 6E 74 65 64 90 20 62 79 90 20 63 2E 20 63 20 6D nted. by. c. c m
01EB80: 75 73 74 20 62 65 20 61 20 63 6F 6E 73 74 61 6E ust be a constan
01EB90: 74 20 0D 8A 09 65 78 70 72 65 73 73 69 6F 6E 2E t ...expression.
01EBA0: 0D 0A 0D 0A 0D 0A 53 57 49 54 43 48 4F 4E 0D 0A ......SWITCHON..
01EBB0: 0D 0A 09 53 57 49 54 43 48 4F 4E 20 3C 65 78 70 ...SWITCHON <exp
01EBC0: 72 65 73 73 69 6F 6E 3E 20 49 4E 54 4F 20 3C 63 ression> INTO <c
01EBD0: 6F 6D 70 6F 75 6E 64 20 63 6F 6D 6D 61 6E 64 3E ompound command>
01EBE0: 0D 0A 0D 0A 09 54 68 65 20 63 6F 6D 70 6F 75 6E .....The compoun
01EBF0: 64 20 63 6F 6D 6D 61 6E 64 20 63 6F 6E 73 69 73 d command consis
01EC00: 74 73 90 20 6F 66 90 20 61 90 20 73 65 71 75 65 ts. of. a. seque
01EC10: 6E 63 65 90 20 6F 66 20 63 6F 6D 6D 61 6E 64 73 nce. of commands
01EC20: 20 77 69 74 68 20 0D 8A 09 63 61 73 65 20 6C 61 with ...case la
01EC30: 62 65 6C 73 20 61 74 74 61 63 68 65 64 20 74 6F bels attached to
01EC40: 20 63 6F 6D 6D 61 6E 64 73 2E 90 20 41 90 20 63 commands.. A. c
01EC50: 61 73 65 90 20 6C 61 62 65 6C 20 74 61 6B 65 73 ase. label takes
01EC60: 20 74 68 65 20 66 6F 72 6D 20 0D 8A 09 27 43 41 the form ...'CA
01EC70: 53 45 90 20 3C 63 6F 6E 73 74 61 6E 74 3E 3A 27 SE. <constant>:'
01EC80: 2C 90 20 61 6E 64 90 20 63 61 75 73 65 73 90 20 ,. and. causes.
01EC90: 65 78 65 63 75 74 69 6F 6E 90 20 74 6F 90 20 73 execution. to. s
01ECA0: 74 61 72 74 90 20 61 74 90 20 74 68 65 20 0D 8A tart. at. the ..
01ECB0: 09 66 6F 6C 6C 6F 77 69 6E 67 20 69 6E 73 74 72 .following instr
01ECC0: 75 63 74 69 6F 6E 20 69 66 20 3C 65 78 70 72 65 uction if <expre
01ECD0: 73 73 69 6F 6E 3E 90 20 68 61 73 20 74 68 65 20 ssion>. has the
01ECE0: 76 61 6C 75 65 20 3C 63 6F 6E 73 74 61 6E 74 3E value <constant>
01ECF0: 2E 20 0D 8A 09 45 78 65 63 75 74 69 6F 6E 20 77 . ...Execution w
01ED00: 20 39 2E 20 3C 3C 20 3E 3E 20 20 20 20 20 20 20 9. << >>
01ED10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01ED20: 0D 0A 09 32 2E 20 46 75 6E 63 74 69 6F 6E 20 63 ...2. Function c
01ED30: 61 6C 6C 20 20 20 20 20 20 20 20 20 20 20 20 20 all
01ED40: 20 20 20 20 20 20 20 31 30 2E 20 5C 20 20 20 20 10. \
01ED50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01ED60: 20 20 20 20 20 20 20 0D 0A 09 33 2E 20 21 20 61 ...3. ! a
01ED70: 73 20 73 75 62 73 63 72 69 70 74 20 20 20 20 20 s subscript
01ED80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 31 11
01ED90: 2E 20 26 20 20 20 20 20 20 20 20 20 20 20 20 20 . &
01EDA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 0A ..
01EDB0: 09 34 2E 20 40 2C 20 21 20 61 73 20 69 6E 64 69 .4. @, ! as indi
01EDC0: 72 65 63 74 69 6F 6E 20 20 20 20 20 20 20 20 20 rection
01EDD0: 20 20 20 20 20 31 32 2E 20 7C 20 20 20 20 20 20 12. |
01EDE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01EDF0: 20 20 20 20 20 0D 0A 09 35 2E 20 25 20 20 20 20 ...5. %
01EE00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01EE10: 20 20 20 20 20 20 20 20 20 20 20 20 31 33 2E 20 13.
01EE20: 45 51 56 20 4E 45 51 56 20 20 20 20 20 20 20 20 EQV NEQV
01EE30: 20 20 20 20 20 20 20 20 20 20 20 20 0D 0A 09 36 ...6
01EE40: 2E 20 2A 20 2F 20 52 45 4D 20 41 42 53 20 20 20 . * / REM ABS
01EE50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01EE60: 20 20 20 31 34 2E 20 2D 2D 3E 20 28 63 6F 6E 64 14. --> (cond
01EE70: 69 74 69 6F 6E 61 6C 20 65 78 70 72 65 73 73 69 itional expressi
01EE80: 6F 6E 29 0D 0A 09 37 2E 20 2B 20 2D 2D 20 20 20 on)...7. + --
01EE90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01EEA0: 20 20 20 20 20 20 20 20 20 20 31 35 2E 20 54 41 15. TA
01EEB0: 42 4C 45 20 20 20 20 20 20 20 20 20 20 20 20 20 BLE
01EEC0: 20 20 20 20 20 20 20 20 20 20 0D 0A 09 38 2E 20 ...8.
01EED0: 3D 20 5C 3D 20 3C 20 3E 20 3C 3D 20 3E 3D 20 20 = \= < > <= >=
01EEE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01EEF0: 20 31 36 2E 20 56 41 4C 4F 46 20 20 20 20 20 20 16. VALOF
01EF00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
01EF10: 1A 00 01 00 02 09 4E E5 1A 00 C1 02 00 00 00 02 ......N.........
01EF20: 1A 00 C6 02 00 00 00 02 1A 00 C2 02 00 00 00 02 ................
01EF30: 1A 00 C7 02 00 00 00 02 1A 00 C3 02 00 00 00 02 ................
01EF40: 1A 00 C8 02 00 00 00 02 1A 00 C4 02 00 00 00 02 ................
01EF50: 1A 00 C9 02 00 00 00 02 1A 00 C5 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: 69 6C 6C 20 63 6F 6E 74 69 6E 75 65 20 75 6E 74 ill continue unt
01F010: 69 6C 20 61 6E 20 45 4E 44 43 41 53 45 90 20 63 il an ENDCASE. c
01F020: 6F 6D 6D 61 6E 64 2C 20 6F 72 20 74 6F 20 74 68 ommand, or to th
01F030: 65 20 65 6E 64 20 0D 8A 09 6F 66 20 74 68 65 20 e end ...of the
01F040: 53 57 49 54 43 48 4F 4E 20 63 6F 6D 70 6F 75 6E SWITCHON compoun
01F050: 64 20 63 6F 6D 6D 61 6E 64 2E 20 54 68 65 20 6C d command. The l
01F060: 61 62 65 6C 20 27 44 45 46 41 55 4C 54 3A 27 20 abel 'DEFAULT:'
01F070: 6D 61 72 6B 73 20 74 68 65 20 0D 8A 09 70 6C 61 marks the ...pla
01F080: 63 65 20 77 68 65 72 65 20 65 78 65 63 75 74 69 ce where executi
01F090: 6F 6E 90 20 69 73 90 20 74 6F 90 20 73 74 61 72 on. is. to. star
01F0A0: 74 90 20 69 66 90 20 3C 65 78 70 72 65 73 73 69 t. if. <expressi
01F0B0: 6F 6E 3E 90 20 64 6F 65 73 20 6E 6F 74 20 0D 8A on>. does not ..
01F0C0: 09 65 76 61 6C 75 61 74 65 20 74 6F 20 61 6E 79 .evaluate to any
01F0D0: 20 6F 66 20 74 68 65 90 20 63 6F 6E 73 74 61 6E of the. constan
01F0E0: 74 73 90 20 73 70 65 63 69 66 69 65 64 20 62 79 ts. specified by
01F0F0: 20 63 61 73 65 20 6C 61 62 65 6C 73 2E 20 46 6F case labels. Fo
01F100: 72 20 0D 8A 09 61 6E 20 65 78 61 6D 70 6C 65 20 r ...an example
01F110: 6F 66 20 74 68 65 20 75 73 65 90 20 6F 66 90 20 of the use. of.
01F120: 53 57 49 54 43 48 4F 4E 90 20 73 65 65 20 74 68 SWITCHON. see th
01F130: 65 20 27 77 72 69 74 65 66 27 20 72 6F 75 74 69 e 'writef' routi
01F140: 6E 65 20 69 6E 20 0D 8A 09 43 4C 49 42 48 44 52 ne in ...CLIBHDR
01F150: 20 6F 72 20 41 4C 49 42 48 44 52 2E 0D 0A 0D 0A or ALIBHDR.....
01F160: E2 42 6C 6F 63 6B 73 20 61 6E 64 20 73 63 6F 70 .Blocks and scop
01F170: 65 20 6F 66 20 69 64 65 6E 74 69 66 69 65 72 73 e of identifiers
01F180: E2 0D 0A 0D 0A 09 41 20 42 43 50 4C 20 70 72 6F ......A BCPL pro
01F190: 67 72 61 6D 90 20 69 73 90 20 6D 61 64 65 90 20 gram. is. made.
01F1A0: 75 70 90 20 6F 66 90 20 6F 6E 65 90 20 6F 72 90 up. of. one. or.
01F1B0: 20 6D 6F 72 65 90 20 62 6C 6F 63 6B 73 2E 20 41 more. blocks. A
01F1C0: 20 62 6C 6F 63 6B 20 0D 8A 09 63 6F 6E 73 69 73 block ...consis
01F1D0: 74 73 20 6F 66 20 61 20 73 65 71 75 65 6E 63 65 ts of a sequence
01F1E0: 20 6F 66 20 64 65 63 6C 61 72 61 74 69 6F 6E 73 of declarations
01F1F0: 20 28 73 65 65 20 62 65 6C 6F 77 29 20 66 6F 6C (see below) fol
01F200: 20 76 61 72 69 61 62 6C 65 20 3D 20 3C 65 78 70 variable = <exp
01F210: 72 65 73 73 69 6F 6E 3E 0D 0A 0D 0A 09 54 68 69 ression>.....Thi
01F220: 73 20 64 65 66 69 6E 65 73 20 61 20 76 61 72 69 s defines a vari
01F230: 61 62 6C 65 20 61 6E 64 90 20 67 69 76 65 73 90 able and. gives.
01F240: 20 69 74 90 20 61 6E 90 20 69 6E 69 74 69 61 6C it. an. initial
01F250: 20 76 61 6C 75 65 2E 20 49 66 20 6E 6F 20 0D 8A value. If no ..
01F260: 09 69 6E 69 74 69 61 6C 20 76 61 6C 75 65 20 69 .initial value i
01F270: 73 90 20 72 65 6C 65 76 61 6E 74 90 20 27 3F 27 s. relevant. '?'
01F280: 90 20 6D 61 79 90 20 62 65 90 20 75 73 65 64 90 . may. be. used.
01F290: 20 69 6E 90 20 70 6C 61 63 65 20 6F 66 20 74 68 in. place of th
01F2A0: 65 20 0D 8A 09 65 78 70 72 65 73 73 69 6F 6E 2E e ...expression.
01F2B0: 0D 0A 0D 0A 09 4C 45 54 20 61 72 72 61 79 20 3D .....LET array =
01F2C0: 20 56 45 43 20 3C 63 6F 6E 73 74 61 6E 74 3E 0D VEC <constant>.
01F2D0: 0A 0D 0A 09 54 68 69 73 20 63 72 65 61 74 65 73 ....This creates
01F2E0: 20 61 20 76 65 63 74 6F 72 20 77 69 74 68 90 20 a vector with.
01F2F0: 74 68 65 90 20 76 61 72 69 61 62 6C 65 20 27 61 the. variable 'a
01F300: 72 72 61 79 27 20 63 6F 6E 74 61 69 6E 69 6E 67 rray' containing
01F310: 20 74 68 65 20 0D 8A 09 61 64 64 72 65 73 73 20 the ...address
01F320: 6F 66 20 74 68 65 20 76 65 63 74 6F 72 2E 0D 0A of the vector...
01F330: 0D 0A 0D 0A 50 72 6F 63 65 64 75 72 65 73 0D 0A ....Procedures..
01F340: 0D 0A 09 4C 45 54 20 70 72 6F 63 28 70 31 2C 20 ...LET proc(p1,
01F350: 70 32 2C 20 2E 2E 2E 29 20 3D 20 3C 65 78 70 72 p2, ...) = <expr
01F360: 65 73 73 69 6F 6E 3E 0D 0A 09 4C 45 54 20 70 72 ession>...LET pr
01F370: 6F 63 28 70 31 2C 20 70 32 2C 20 2E 2E 2E 29 20 oc(p1, p2, ...)
01F380: 42 45 20 3C 63 6F 6D 6D 61 6E 64 3E 0D 0A 0D 0A BE <command>....
01F390: 09 54 68 65 73 65 20 64 65 66 69 6E 65 20 61 20 .These define a
01F3A0: 70 72 6F 63 65 64 75 72 65 20 77 69 74 68 90 20 procedure with.
01F3B0: 70 61 72 61 6D 65 74 65 72 73 90 20 70 31 2C 20 parameters. p1,
01F3C0: 70 32 2C 2E 2E 2E 2E 20 54 68 65 20 66 69 72 73 p2,.... The firs
01F3D0: 74 20 0D 8A 09 66 6F 72 6D 20 70 72 6F 76 69 64 t ...form provid
01F3E0: 65 73 20 61 20 66 75 6E 63 74 69 6F 6E 2C 20 61 es a function, a
01F3F0: 73 20 61 20 76 61 6C 75 65 20 69 73 20 72 65 74 s a value is ret
01F400: 6C 6F 77 65 64 20 62 79 20 61 20 0D 8A 09 73 65 lowed by a ...se
01F410: 71 75 65 6E 63 65 20 6F 66 20 63 6F 6D 6D 61 6E quence of comman
01F420: 64 73 2E 20 54 6F 20 62 65 20 70 72 65 63 69 73 ds. To be precis
01F430: 65 90 20 61 90 20 42 43 50 4C 20 70 72 6F 67 72 e. a. BCPL progr
01F440: 61 6D 20 69 73 20 61 20 73 69 6E 67 6C 65 20 0D am is a single .
01F450: 8A 09 62 6C 6F 63 6B 2C 20 61 6E 64 20 61 6E 79 ..block, and any
01F460: 20 62 6C 6F 63 6B 20 6D 61 79 20 63 6F 6E 74 61 block may conta
01F470: 69 6E 20 6E 65 73 74 65 64 20 73 75 62 2D 62 6C in nested sub-bl
01F480: 6F 63 6B 73 2E 0D 0A 0D 0A 09 54 68 65 20 73 63 ocks......The sc
01F490: 6F 70 65 20 6F 66 20 61 6E 20 69 64 65 6E 74 69 ope of an identi
01F4A0: 66 69 65 72 20 28 76 61 72 69 61 62 6C 65 20 6F fier (variable o
01F4B0: 72 20 70 72 6F 63 65 64 75 72 65 29 20 64 65 66 r procedure) def
01F4C0: 69 6E 65 73 20 74 68 6F 73 65 20 0D 8A 09 70 61 ines those ...pa
01F4D0: 72 74 73 20 6F 66 20 61 90 20 70 72 6F 67 72 61 rts of a. progra
01F4E0: 6D 90 20 77 68 65 72 65 90 20 74 68 61 74 90 20 m. where. that.
01F4F0: 69 64 65 6E 74 69 66 69 65 72 90 20 63 61 6E 90 identifier. can.
01F500: 20 62 65 20 75 73 65 64 2E 20 45 61 63 68 20 0D be used. Each .
01F510: 8A 09 69 64 65 6E 74 69 66 69 65 72 20 6D 75 73 ..identifier mus
01F520: 74 20 62 65 20 64 65 63 6C 61 72 65 64 90 20 77 t be declared. w
01F530: 69 74 68 90 20 61 90 20 64 65 63 6C 61 72 61 74 ith. a. declarat
01F540: 69 6F 6E 2E 90 20 54 68 65 20 73 63 6F 70 65 20 ion.. The scope
01F550: 6F 66 20 0D 8A 09 74 68 61 74 90 20 69 64 65 6E of ...that. iden
01F560: 74 69 66 69 65 72 90 20 69 73 90 20 74 68 61 74 tifier. is. that
01F570: 90 90 20 73 61 6D 65 90 90 20 64 65 63 6C 61 72 .. same.. declar
01F580: 61 74 69 6F 6E 90 20 28 74 68 75 73 90 20 61 6C ation. (thus. al
01F590: 6C 6F 77 69 6E 67 20 0D 8A 09 72 65 63 75 72 73 lowing ...recurs
01F5A0: 69 76 65 20 64 65 66 69 6E 69 74 69 6F 6E 73 29 ive definitions)
01F5B0: 2C 90 20 61 6E 64 90 20 61 6C 6C 90 20 73 75 62 ,. and. all. sub
01F5C0: 73 65 71 75 65 6E 74 90 20 64 65 63 6C 61 72 61 sequent. declara
01F5D0: 74 69 6F 6E 73 90 20 61 6E 64 20 0D 8A 09 63 6F tions. and ...co
01F5E0: 6D 6D 61 6E 64 73 20 77 69 74 68 69 6E 20 74 68 mmands within th
01F5F0: 61 74 20 62 6C 6F 63 6B 2E 20 54 68 75 73 20 69 at block. Thus i
01F600: 75 72 6E 65 64 2E 20 54 68 65 20 65 78 70 72 65 urned. The expre
01F610: 73 73 69 6F 6E 20 0D 8A 09 69 73 20 6F 66 74 65 ssion ...is ofte
01F620: 6E 20 61 20 56 41 4C 4F 46 20 63 6C 61 75 73 65 n a VALOF clause
01F630: 2E 20 54 68 69 73 20 74 61 6B 65 73 20 74 68 65 . This takes the
01F640: 20 66 6F 6C 6C 6F 77 69 6E 67 20 66 6F 72 6D 3A following form:
01F650: 0D 0A 0D 0A 09 56 41 4C 4F 46 20 3C 63 6F 6D 6D .....VALOF <comm
01F660: 61 6E 64 3E 0D 0A 0D 0A 09 54 68 65 20 63 6F 6D and>.....The com
01F670: 6D 61 6E 64 20 69 73 20 75 73 75 61 6C 6C 79 20 mand is usually
01F680: 61 20 63 6F 6D 70 6F 75 6E 64 90 20 63 6F 6D 6D a compound. comm
01F690: 61 6E 64 20 77 68 69 63 68 20 63 6F 6E 74 61 69 and which contai
01F6A0: 6E 73 20 6F 6E 65 20 6F 72 20 0D 8A 09 6D 6F 72 ns one or ...mor
01F6B0: 65 20 52 45 53 55 4C 54 49 53 20 63 6F 6D 6D 61 e RESULTIS comma
01F6C0: 6E 64 73 3A 0D 0A 0D 0A 09 52 45 53 55 4C 54 49 nds:.....RESULTI
01F6D0: 53 20 3C 65 78 70 72 65 73 73 69 6F 6E 3E 0D 0A S <expression>..
01F6E0: 0D 0A 09 57 68 65 6E 20 61 90 20 52 45 53 55 4C ...When a. RESUL
01F6F0: 54 49 53 90 20 63 6F 6D 6D 61 6E 64 90 20 69 73 TIS. command. is
01F700: 90 20 65 78 65 63 75 74 65 64 90 20 74 68 65 90 . executed. the.
01F710: 20 56 41 4C 4F 46 90 20 63 6F 6D 6D 61 6E 64 20 VALOF. command
01F720: 68 61 73 20 0D 8A 09 66 69 6E 69 73 68 65 64 20 has ...finished
01F730: 61 6E 64 20 74 68 65 20 76 61 6C 75 65 20 6F 66 and the value of
01F740: 20 74 68 65 20 65 78 70 72 65 73 73 69 6F 6E 20 the expression
01F750: 69 73 20 72 65 74 75 72 6E 65 64 2E 0D 0A 0D 0A is returned.....
01F760: 09 54 68 65 20 73 65 63 6F 6E 64 20 66 6F 72 6D .The second form
01F770: 20 6F 66 20 74 68 65 90 20 70 72 6F 63 65 64 75 of the. procedu
01F780: 72 65 20 64 65 63 6C 61 72 61 74 69 6F 6E 20 64 re declaration d
01F790: 65 66 69 6E 65 73 20 61 20 72 6F 75 74 69 6E 65 efines a routine
01F7A0: 2E 20 0D 8A 09 4E 6F 20 76 61 6C 75 65 20 69 73 . ...No value is
01F7B0: 20 72 65 74 75 72 6E 65 64 2E 0D 0A 0D 0A 09 45 returned......E
01F7C0: 69 74 68 65 72 20 66 6F 72 6D 20 6F 66 20 70 72 ither form of pr
01F7D0: 6F 63 65 64 75 72 65 20 69 73 20 69 6E 76 6F 6B ocedure is invok
01F7E0: 65 64 20 62 79 20 61 20 63 6F 6D 6D 61 6E 64 3A ed by a command:
01F7F0: 0D 0A 0D 0A 09 70 72 6F 63 28 61 2C 62 2C 2E 2E .....proc(a,b,..
01F800: 66 20 61 20 72 6F 75 74 69 6E 65 20 69 73 20 63 f a routine is c
01F810: 61 6C 6C 65 64 20 77 68 69 63 68 20 69 73 20 0D alled which is .
01F820: 8A 09 6F 75 74 73 69 64 65 20 74 68 65 20 62 6C ..outside the bl
01F830: 6F 63 6B 90 20 28 61 6E 64 90 20 72 6F 75 74 69 ock. (and. routi
01F840: 6E 65 73 90 20 61 72 65 90 20 75 73 75 61 6C 6C nes. are. usuall
01F850: 79 20 73 65 70 61 72 61 74 65 20 62 6C 6F 63 6B y separate block
01F860: 73 29 20 0D 8A 09 74 68 65 6E 20 76 61 72 69 61 s) ...then varia
01F870: 62 6C 65 73 20 64 65 66 69 6E 65 64 90 20 77 69 bles defined. wi
01F880: 74 68 69 6E 90 20 74 68 65 90 20 6F 72 69 67 69 thin. the. origi
01F890: 6E 61 6C 90 20 62 6C 6F 63 6B 90 20 6D 61 79 20 nal. block. may
01F8A0: 6E 6F 74 20 62 65 20 0D 8A 09 75 73 65 64 2E 0D not be ...used..
01F8B0: 0A 0D 0A 09 54 68 65 72 65 20 69 73 20 61 6E 20 ....There is an
01F8C0: 69 6D 70 6F 72 74 61 6E 74 90 20 72 65 73 74 72 important. restr
01F8D0: 69 63 74 69 6F 6E 2E 90 20 56 61 72 69 61 62 6C iction.. Variabl
01F8E0: 65 73 90 20 64 65 66 69 6E 65 64 20 77 69 74 68 es. defined with
01F8F0: 69 6E 20 61 20 0D 8A 09 62 6C 6F 63 6B 20 6D 61 in a ...block ma
01F900: 79 20 6E 6F 74 20 62 65 90 20 75 73 65 64 90 20 y not be. used.
01F910: 77 69 74 68 69 6E 90 20 61 90 20 70 72 6F 63 65 within. a. proce
01F920: 64 75 72 65 20 64 65 66 69 6E 65 64 20 77 69 74 dure defined wit
01F930: 68 69 6E 20 74 68 61 74 20 0D 8A 09 62 6C 6F 63 hin that ...bloc
01F940: 6B 20 28 65 76 65 6E 20 74 68 6F 75 67 68 20 74 k (even though t
01F950: 68 65 79 20 61 72 65 20 69 6E 20 73 63 6F 70 65 hey are in scope
01F960: 29 2E 90 20 41 6E 20 61 74 74 65 6D 70 74 20 74 ).. An attempt t
01F970: 6F 20 64 6F 20 73 6F 20 77 69 6C 6C 20 0D 8A 09 o do so will ...
01F980: 70 72 6F 64 75 63 65 20 74 68 65 20 65 72 72 6F produce the erro
01F990: 72 20 6D 65 73 73 61 67 65 20 27 64 79 6E 61 6D r message 'dynam
01F9A0: 69 63 20 66 72 65 65 20 76 61 72 69 61 62 6C 65 ic free variable
01F9B0: 20 75 73 65 64 27 2E 0D 0A 3E 70 61 0D 0A 1A 00 used'...>pa....
01F9C0: 3E 81 00 3A 04 70 72 6F 64 75 63 65 20 74 68 65 >..:.produce the
01F9D0: 20 65 72 72 6F 72 20 6D 65 73 73 61 67 65 20 27 error message '
01F9E0: 64 79 6E 61 6D 69 63 20 66 72 65 65 20 76 61 72 dynamic free var
01F9F0: 69 61 62 6C 65 20 75 73 65 64 27 2E 0D 0A 3E 70 iable used'...>p
01FA00: 2E 29 0D 0A 0D 0A 09 41 20 66 75 6E 63 74 69 6F .).....A functio
01FA10: 6E 20 63 61 6C 6C 20 63 61 6E 20 61 70 70 65 61 n call can appea
01FA20: 72 20 69 6E 20 61 6E 20 65 78 70 72 65 73 73 69 r in an expressi
01FA30: 6F 6E 2E 0D 0A 0D 0A 3E 70 61 0D 0A 4F 74 68 65 on.....>pa..Othe
01FA40: 72 20 64 65 63 6C 61 72 61 74 69 6F 6E 73 0D 0A r declarations..
01FA50: 09 0D 0A 09 47 4C 4F 42 41 4C 20 24 28 20 76 61 ....GLOBAL $( va
01FA60: 72 31 20 3A 20 63 31 20 3B 20 76 61 72 32 20 3A r1 : c1 ; var2 :
01FA70: 20 63 32 20 3B 20 2E 2E 2E 20 24 29 0D 0A 09 53 c2 ; ... $)...S
01FA80: 54 41 54 49 43 20 24 28 20 76 61 72 31 3D 76 61 TATIC $( var1=va
01FA90: 6C 31 20 3B 20 76 61 72 32 3D 76 61 6C 32 20 3B l1 ; var2=val2 ;
01FAA0: 20 2E 2E 2E 20 24 29 0D 0A 09 0D 0A 09 44 79 6E ... $)......Dyn
01FAB0: 61 6D 69 63 90 20 76 61 72 69 61 62 6C 65 73 90 amic. variables.
01FAC0: 20 28 74 68 6F 73 65 90 20 64 65 66 69 6E 65 64 (those. defined
01FAD0: 90 20 77 69 74 68 90 90 20 4C 45 54 29 90 20 6F . with.. LET). o
01FAE0: 6E 6C 79 90 20 68 61 76 65 90 20 61 6E 20 0D 8A nly. have. an ..
01FAF0: 09 61 6C 6C 6F 63 61 74 65 64 20 61 72 65 61 20 .allocated area
01FB00: 6F 66 20 6D 65 6D 6F 72 79 20 77 68 65 6E 90 20 of memory when.
01FB10: 74 68 65 79 90 20 61 72 65 20 77 69 74 68 69 6E they. are within
01FB20: 20 73 63 6F 70 65 2E 20 56 61 72 69 61 62 6C 65 scope. Variable
01FB30: 73 20 0D 8A 09 64 65 66 69 6E 65 64 20 77 69 74 s ...defined wit
01FB40: 68 20 47 4C 4F 42 41 4C 20 6F 72 20 53 54 41 54 h GLOBAL or STAT
01FB50: 49 43 90 20 68 61 76 65 20 61 20 70 65 72 6D 61 IC. have a perma
01FB60: 6E 65 6E 74 6C 79 20 61 6C 6C 6F 63 61 74 65 64 nently allocated
01FB70: 20 77 6F 72 64 20 0D 8A 09 6F 66 20 6D 65 6D 6F word ...of memo
01FB80: 72 79 2E 20 54 68 65 20 53 54 41 54 49 43 20 64 ry. The STATIC d
01FB90: 65 63 6C 61 72 61 74 69 6F 6E 20 61 6C 6C 6F 77 eclaration allow
01FBA0: 73 90 20 61 6E 20 69 6E 69 74 69 61 6C 20 76 61 s. an initial va
01FBB0: 6C 75 65 20 74 6F 20 62 65 20 0D 8A 09 73 65 74 lue to be ...set
01FBC0: 2E 20 54 68 65 20 47 4C 4F 42 41 4C 20 64 65 63 . The GLOBAL dec
01FBD0: 6C 61 72 61 74 69 6F 6E 20 69 73 90 20 72 65 64 laration is. red
01FBE0: 75 6E 64 61 6E 74 20 69 6E 20 74 68 69 73 20 69 undant in this i
01FBF0: 6D 70 6C 65 6D 65 6E 74 61 74 69 6F 6E 20 0D 8A mplementation ..
01FC00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FC10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FC20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FC30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FC40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FC50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FC60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FC70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FC80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FC90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FCA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FCB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FCC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FCD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FCE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FCF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FDA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FDB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FDC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FDD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FDE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FDF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FE00: 09 61 73 20 69 74 20 69 73 20 75 73 65 64 90 20 .as it is used.
01FE10: 77 68 65 6E 90 20 73 65 70 61 72 61 74 65 90 20 when. separate.
01FE20: 63 6F 6D 70 69 6C 61 74 69 6F 6E 90 20 69 73 90 compilation. is.
01FE30: 20 61 76 61 69 6C 61 62 6C 65 2E 20 49 74 20 69 available. It i
01FE40: 73 20 0D 8A 09 69 6E 63 6C 75 64 65 64 20 66 6F s ...included fo
01FE50: 72 20 63 6F 6D 70 61 74 69 62 69 6C 69 74 79 20 r compatibility
01FE60: 77 69 74 68 20 6F 74 68 65 72 20 42 43 50 4C 20 with other BCPL
01FE70: 63 6F 6D 70 69 6C 65 72 73 2E 0D 0A 0D 0A 09 41 compilers......A
01FE80: 20 67 6C 6F 62 61 6C 20 76 65 63 74 6F 72 20 63 global vector c
01FE90: 61 6E 20 62 65 20 64 65 66 69 6E 65 64 20 61 73 an be defined as
01FEA0: 20 66 6F 6C 6C 6F 77 73 2E 20 44 65 63 6C 61 72 follows. Declar
01FEB0: 65 20 74 68 65 20 6E 61 6D 65 20 6F 66 20 74 68 e the name of th
01FEC0: 65 20 0D 8A 09 76 65 63 74 6F 72 20 61 73 20 61 e ...vector as a
01FED0: 20 73 74 61 74 69 63 90 20 76 61 72 69 61 62 6C static. variabl
01FEE0: 65 2C 90 20 74 68 65 6E 90 20 64 65 63 6C 61 72 e,. then. declar
01FEF0: 65 90 20 61 90 20 64 75 6D 6D 79 20 76 65 63 74 e. a. dummy vect
01FF00: 6F 72 20 69 6E 20 0D 8A 09 27 73 74 61 72 74 27 or in ...'start'
01FF10: 20 61 6E 64 20 61 73 73 69 67 6E 20 74 68 69 73 and assign this
01FF20: 90 20 74 6F 90 20 74 68 65 90 20 73 74 61 74 69 . to. the. stati
01FF30: 63 90 20 76 61 72 69 61 62 6C 65 2E 20 54 68 69 c. variable. Thi
01FF40: 73 20 65 6E 73 75 72 65 73 20 0D 8A 09 74 68 61 s ensures ...tha
01FF50: 74 20 74 68 65 20 76 65 63 74 6F 72 20 69 73 20 t the vector is
01FF60: 69 6E 20 73 63 6F 70 65 20 74 68 72 6F 75 67 68 in scope through
01FF70: 6F 75 74 20 74 68 65 20 70 72 6F 67 72 61 6D 2E out the program.
01FF80: 0D 0A 0D 0A 09 45 78 61 6D 70 6C 65 3A 0D 0A 09 .....Example:...
01FF90: 09 09 53 54 41 54 49 43 20 24 28 20 65 72 72 6C ..STATIC $( errl
01FFA0: 65 76 3D 30 20 24 29 0D 0A 09 09 09 4C 45 54 20 ev=0 $).....LET
01FFB0: 73 74 61 72 74 28 29 20 42 45 0D 0A 09 09 09 24 start() BE.....$
01FFC0: 28 0D 0A 09 09 09 20 20 4C 45 54 20 65 72 72 76 (..... LET errv
01FFD0: 65 63 3D 56 45 43 20 33 0D 0A 09 09 09 20 20 65 ec=VEC 3..... e
01FFE0: 72 72 6C 65 76 20 3A 3D 20 65 72 72 76 65 63 0D rrlev := errvec.
01FFF0: 0A 09 09 09 20 20 2E 2E 2E 0D 0A 0D 0A 09 4D 41 .... ........MA
020000: 00 42 43 50 4C 4D 32 20 20 20 20 20 00 00 00 00 .BCPLM2 ....
020010: 00 00 0A 00 00 C6 06 00 2F 83 00 00 00 00 00 00 ......../.......
020020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
020030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
020040: 2F 83 00 7A 04 68 69 73 20 77 69 6C 6C 20 73 75 /..z.his will su
020050: 62 73 74 69 74 75 74 65 20 61 20 64 75 6D 6D 79 bstitute a dummy
020060: 20 0D 8A 72 6F 75 74 69 6E 65 2E 0D 0A 0D 0A 3E ..routine.....>
020070: 70 61 0D 0A 1A 00 00 00 00 00 00 00 00 00 00 00 pa..............
020080: 3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D >---!-----!-----
020090: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0200A0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0200B0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0200C0: 21 2D 2D 2D 2D 52 0D 0A 3E 70 6E 20 32 32 0D 0A !----R..>pn 22..
0200D0: 3E 74 6D 20 33 0D 0A 3E 62 6D 20 31 31 0D 0A 3E >tm 3..>bm 11..>
0200E0: 68 6D 20 30 0D 0A 3E 66 6D 20 32 0D 0A 3E 66 6F hm 0..>fm 2..>fo
0200F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
020100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
020110: 20 20 25 0D 0A 3E 2D 2D 2D 2D 2D 4C 2D 2D 2D 21 %..>-----L---!
020120: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 -------!-------!
020130: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 -------!-------!
020140: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 -------!-------!
020150: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 52 0D 0A E2 44 65 -------!--R...De
020160: 63 6C 61 72 61 74 69 6F 6E 73 E2 0D 0A 0D 0A 54 clarations.....T
020170: 68 65 20 4C 45 54 20 64 65 63 6C 61 72 61 74 69 he LET declarati
020180: 6F 6E 0D 0A 0D 0A 09 41 6C 6C 20 76 61 72 69 61 on.....All varia
020190: 62 6C 65 73 20 61 6E 64 20 72 6F 75 74 69 6E 65 bles and routine
0201A0: 73 20 6D 75 73 74 90 20 62 65 90 20 64 65 63 6C s must. be. decl
0201B0: 61 72 65 64 20 62 65 66 6F 72 65 20 74 68 65 79 ared before they
0201C0: 20 63 61 6E 20 62 65 20 0D 8A 09 75 73 65 64 2E can be ...used.
0201D0: 20 54 68 65 72 65 20 61 72 65 20 73 65 76 65 72 There are sever
0201E0: 61 6C 20 66 6F 72 6D 73 20 6F 66 20 64 65 63 6C al forms of decl
0201F0: 61 72 61 74 69 6F 6E 3A 0D 0A 0D 0A 09 4C 45 54 aration:.....LET
020200: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
020210: 1B 00 01 00 02 09 4E E5 1B 00 C1 02 00 00 00 02 ......N.........
020220: 1B 00 C6 02 00 00 00 02 1B 00 C2 02 00 00 00 02 ................
020230: 1B 00 C7 02 00 00 00 02 1B 00 C3 02 00 00 00 02 ................
020240: 1B 00 C8 02 00 00 00 02 1B 00 C4 02 00 00 00 02 ................
020250: 1B 00 C9 02 00 00 00 02 1B 00 C5 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: 4E 49 46 45 53 54 20 24 28 20 6E 61 6D 65 31 3D NIFEST $( name1=
020310: 76 61 6C 31 20 3B 20 6E 61 6D 65 32 3D 76 61 6C val1 ; name2=val
020320: 32 20 3B 20 2E 2E 2E 20 24 29 0D 0A 0D 0A 09 54 2 ; ... $).....T
020330: 68 65 20 4D 41 4E 49 46 45 53 54 20 64 65 63 6C he MANIFEST decl
020340: 61 72 61 74 69 6F 6E 20 61 74 74 61 63 68 65 73 aration attaches
020350: 20 61 90 20 6E 61 6D 65 90 20 74 6F 90 20 61 20 a. name. to. a
020360: 63 6F 6E 73 74 61 6E 74 2E 20 49 74 20 69 73 20 constant. It is
020370: 0D 8A 09 6E 6F 74 20 61 20 76 61 72 69 61 62 6C ...not a variabl
020380: 65 90 20 61 6E 64 90 20 73 68 6F 75 6C 64 90 20 e. and. should.
020390: 62 65 90 20 75 73 65 64 90 20 6C 69 62 65 72 61 be. used. libera
0203A0: 6C 6C 79 90 20 77 69 74 68 69 6E 90 20 61 20 42 lly. within. a B
0203B0: 43 50 4C 20 0D 8A 09 70 72 6F 67 72 61 6D 20 74 CPL ...program t
0203C0: 6F 20 61 69 64 20 72 65 61 64 61 62 69 6C 69 74 o aid readabilit
0203D0: 79 2C 20 61 6E 64 90 20 74 6F 90 20 65 6E 61 62 y, and. to. enab
0203E0: 6C 65 90 20 63 6F 6E 73 74 61 6E 74 73 20 75 73 le. constants us
0203F0: 65 64 20 62 79 20 61 20 0D 8A 09 70 72 6F 67 72 ed by a ...progr
020400: 61 6D 20 74 6F 20 62 65 20 65 61 73 69 6C 79 20 am to be easily
020410: 63 68 61 6E 67 65 64 20 69 66 20 6E 65 63 65 73 changed if neces
020420: 73 61 72 79 2E 0D 0A 0D 0A 0D 0A 53 69 6D 75 6C sary.......Simul
020430: 74 61 6E 65 6F 75 73 20 64 65 63 6C 61 72 61 74 taneous declarat
020440: 69 6F 6E 73 0D 0A 0D 0A 09 41 90 20 4C 45 54 90 ions.....A. LET.
020450: 20 64 65 63 6C 61 72 61 74 69 6F 6E 90 20 6D 61 declaration. ma
020460: 79 90 20 62 65 90 20 66 6F 6C 6C 6F 77 65 64 90 y. be. followed.
020470: 20 62 79 90 20 61 6E 79 90 20 6E 75 6D 62 65 72 by. any. number
020480: 90 20 6F 66 90 20 41 4E 44 20 0D 8A 09 64 65 63 . of. AND ...dec
020490: 6C 61 72 61 74 69 6F 6E 73 2E 20 41 6C 6C 20 74 larations. All t
0204A0: 68 65 73 65 20 64 65 63 6C 61 72 61 74 69 6F 6E hese declaration
0204B0: 73 20 61 72 65 90 20 63 6F 6E 73 69 64 65 72 65 s are. considere
0204C0: 64 20 61 73 20 61 20 73 69 6E 67 6C 65 20 0D 8A d as a single ..
0204D0: 09 64 65 63 6C 61 72 61 74 69 6F 6E 20 66 6F 72 .declaration for
0204E0: 90 20 74 68 65 90 20 70 75 72 70 6F 73 65 73 90 . the. purposes.
0204F0: 20 6F 66 90 20 73 63 6F 70 65 90 20 6F 66 90 20 of. scope. of.
020500: 72 65 20 77 6F 75 6C 64 20 6F 74 68 65 72 77 69 re would otherwi
020510: 73 65 20 62 65 20 61 6E 20 61 6E 20 61 6D 62 69 se be an an ambi
020520: 67 75 69 74 79 2E 0D 0A 0D 0A 09 42 6C 61 6E 6B guity......Blank
020530: 20 6C 69 6E 65 73 90 20 61 6E 64 90 20 73 70 61 lines. and. spa
020540: 63 65 73 90 20 61 72 65 90 20 69 67 6E 6F 72 65 ces. are. ignore
020550: 64 90 20 65 78 63 65 70 74 90 20 77 68 65 72 65 d. except. where
020560: 90 20 74 68 65 79 90 20 61 72 65 20 0D 8A 09 72 . they. are ...r
020570: 65 71 75 69 72 65 64 20 74 6F 90 20 73 65 70 61 equired to. sepa
020580: 72 61 74 65 90 20 69 74 65 6D 73 2E 90 20 50 52 rate. items.. PR
020590: 4F 54 45 58 54 90 20 73 6F 66 74 90 20 73 70 61 OTEXT. soft. spa
0205A0: 63 65 73 2C 90 20 73 6F 66 74 20 6C 69 6E 65 20 ces,. soft line
0205B0: 0D 8A 09 66 65 65 64 73 2C 20 61 6E 64 20 6D 61 ...feeds, and ma
0205C0: 72 6B 65 72 73 20 61 72 65 20 69 67 6E 6F 72 65 rkers are ignore
0205D0: 64 2E 0D 0A 3E 70 61 0D 0A 3E 2D 2D 2D 21 2D 2D d...>pa..>---!--
0205E0: 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D ---!-----!------
0205F0: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -!-------!------
020600: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -!-------!------
020610: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D -!-------!----R.
020620: 0A 3E 63 65 20 20 20 20 20 20 20 20 20 20 20 20 .>ce
020630: 20 20 20 20 20 20 20 20 20 20 E2 38 2E 20 54 48 .8. TH
020640: 45 20 41 52 4E 4F 52 20 42 43 50 4C 20 4C 49 42 E ARNOR BCPL LIB
020650: 52 41 52 49 45 53 E2 0D 0A 0D 0A 0D 0A 09 54 68 RARIES........Th
020660: 65 20 6C 69 62 72 61 72 69 65 73 20 73 75 70 70 e libraries supp
020670: 6C 69 65 64 20 77 69 74 68 90 20 74 68 65 90 20 lied with. the.
020680: 63 6F 6D 70 69 6C 65 72 90 20 70 72 6F 76 69 64 compiler. provid
020690: 65 20 70 72 6F 63 65 64 75 72 65 73 20 66 6F 72 e procedures for
0206A0: 20 0D 8A 77 72 69 74 69 6E 67 20 74 6F 20 74 68 ..writing to th
0206B0: 65 20 73 63 72 65 65 6E 2C 20 70 72 69 6E 74 65 e screen, printe
0206C0: 72 20 6F 72 90 20 66 69 6C 65 73 20 61 6E 64 20 r or. files and
0206D0: 72 65 61 64 69 6E 67 20 66 72 6F 6D 20 74 68 65 reading from the
0206E0: 20 6B 65 79 62 6F 61 72 64 20 0D 8A 6F 72 20 66 keyboard ..or f
0206F0: 69 6C 65 73 2E 20 45 61 63 68 20 6F 66 20 74 68 iles. Each of th
020700: 69 64 65 6E 74 69 66 69 65 72 73 2E 20 54 68 69 identifiers. Thi
020710: 73 20 0D 8A 09 61 6C 6C 6F 77 73 20 6D 75 74 75 s ...allows mutu
020720: 61 6C 6C 79 20 72 65 63 75 72 73 69 76 65 20 70 ally recursive p
020730: 72 6F 63 65 64 75 72 65 73 3A 0D 0A 0D 0A 09 4C rocedures:.....L
020740: 45 54 20 70 72 6F 63 31 28 2E 2E 2E 29 20 42 45 ET proc1(...) BE
020750: 20 0D 0A 09 24 28 0D 0A 09 2E 2E 2E 20 70 72 6F ...$(...... pro
020760: 63 32 28 2E 2E 2E 29 20 2E 2E 2E 0D 0A 09 24 29 c2(...) ......$)
020770: 0D 0A 0D 0A 09 41 4E 44 20 70 72 6F 63 32 28 2E .....AND proc2(.
020780: 2E 2E 29 20 42 45 0D 0A 09 24 28 20 0D 0A 09 2E ..) BE...$( ....
020790: 2E 2E 20 70 72 6F 63 31 28 2E 2E 2E 29 20 2E 2E .. proc1(...) ..
0207A0: 2E 0D 0A 09 24 29 0D 0A 3E 70 61 0D 0A E2 53 74 ....$)..>pa...St
0207B0: 72 69 6E 67 73 E2 0D 0A 0D 0A 09 53 74 72 69 6E rings......Strin
0207C0: 67 73 20 61 72 65 20 73 74 6F 72 65 64 20 61 73 gs are stored as
0207D0: 20 66 6F 6C 6C 6F 77 73 3A 0D 0A 0D 0A 09 4F 6E follows:.....On
0207E0: 65 20 62 79 74 65 20 62 65 69 6E 67 20 74 68 65 e byte being the
0207F0: 20 6C 65 6E 67 74 68 20 6F 66 20 74 68 65 20 73 length of the s
020800: 74 72 69 6E 67 0D 0A 09 54 68 65 20 73 74 72 69 tring...The stri
020810: 6E 67 2C 20 6F 6E 65 20 63 68 61 72 61 63 74 65 ng, one characte
020820: 72 20 70 65 72 20 62 79 74 65 0D 0A 0D 0A 09 53 r per byte.....S
020830: 69 6E 63 65 20 42 43 50 4C 20 77 6F 72 6B 73 20 ince BCPL works
020840: 77 69 74 68 20 31 36 20 62 69 74 20 77 6F 72 64 with 16 bit word
020850: 73 90 20 61 20 73 70 65 63 69 61 6C 20 6D 65 61 s. a special mea
020860: 6E 73 20 69 73 20 6E 65 65 64 65 64 20 74 6F 20 ns is needed to
020870: 0D 8A 09 61 63 63 65 73 73 20 74 68 65 90 20 69 ...access the. i
020880: 6E 64 69 76 69 64 75 61 6C 90 20 63 68 61 72 61 ndividual. chara
020890: 63 74 65 72 73 90 20 6F 66 90 20 61 90 20 73 74 cters. of. a. st
0208A0: 72 69 6E 67 2E 90 20 54 68 69 73 90 20 69 73 20 ring.. This. is
0208B0: 74 68 65 20 0D 8A 09 69 6E 66 69 78 65 64 20 62 the ...infixed b
0208C0: 79 74 65 20 6F 70 65 72 61 74 6F 72 20 27 25 27 yte operator '%'
0208D0: 2E 90 20 54 6F 90 20 61 63 63 65 73 73 90 20 74 .. To. access. t
0208E0: 68 65 90 20 6E 74 68 90 20 63 68 61 72 61 63 74 he. nth. charact
0208F0: 65 72 20 6F 66 20 61 20 0D 8A 09 73 74 72 69 6E er of a ...strin
020900: 65 73 65 20 70 72 6F 63 65 64 75 72 65 73 20 69 ese procedures i
020910: 73 20 64 65 73 63 72 69 62 65 64 20 62 65 6C 6F s described belo
020920: 77 2E 0D 0A 09 54 68 65 20 74 77 6F 20 76 65 72 w....The two ver
020930: 73 69 6F 6E 73 20 6F 66 20 74 68 65 90 20 63 6F sions of the. co
020940: 6D 70 69 6C 65 72 90 20 6E 65 65 64 20 64 69 66 mpiler. need dif
020950: 66 65 72 65 6E 74 20 6C 69 62 72 61 72 69 65 73 ferent libraries
020960: 20 77 68 69 63 68 2C 20 0D 8A 61 6C 74 68 6F 75 which, ..althou
020970: 67 68 20 74 68 65 79 20 6C 6F 6F 6B 20 74 68 65 gh they look the
020980: 20 73 61 6D 65 20 66 72 6F 6D 90 20 74 68 65 20 same from. the
020990: 6F 75 74 73 69 64 65 2C 20 68 61 76 65 20 64 69 outside, have di
0209A0: 66 66 65 72 65 6E 74 20 69 6E 74 65 72 6E 61 6C fferent internal
0209B0: 20 0D 8A 77 6F 72 6B 69 6E 67 73 20 64 65 74 65 ..workings dete
0209C0: 72 6D 69 6E 65 64 20 62 79 20 74 68 65 90 20 64 rmined by the. d
0209D0: 69 66 66 65 72 65 6E 74 90 20 6F 70 65 72 61 74 ifferent. operat
0209E0: 69 6E 67 90 20 73 79 73 74 65 6D 73 2E 20 54 68 ing. systems. Th
0209F0: 65 72 65 20 69 73 20 61 6E 20 0D 8A 61 64 64 69 ere is an ..addi
020A00: 74 69 6F 6E 61 6C 20 41 4D 53 44 4F 53 90 20 6C tional AMSDOS. l
020A10: 69 62 72 61 72 79 90 20 77 68 69 63 68 90 20 63 ibrary. which. c
020A20: 6F 6E 74 61 69 6E 73 90 20 72 6F 75 74 69 6E 65 ontains. routine
020A30: 73 90 20 77 68 69 63 68 90 20 61 72 65 20 6F 6E s. which. are on
020A40: 6C 79 20 0D 8A 72 65 6C 65 76 61 6E 74 20 74 6F ly ..relevant to
020A50: 20 74 68 65 20 43 50 43 20 6D 61 63 68 69 6E 65 the CPC machine
020A60: 73 2E 0D 0A 0D 0A E2 4D 61 6E 69 66 65 73 74 20 s......Manifest
020A70: 63 6F 6E 73 74 61 6E 74 73 20 64 65 66 69 6E 65 constants define
020A80: 64 20 69 6E 20 74 68 65 20 6C 69 62 72 61 72 69 d in the librari
020A90: 65 73 E2 0D 0A 0D 0A 09 54 68 65 73 65 20 73 68 es......These sh
020AA0: 6F 75 6C 64 20 62 65 90 20 75 73 65 64 90 20 77 ould be. used. w
020AB0: 68 65 72 65 90 20 61 70 70 72 6F 70 72 69 61 74 here. appropriat
020AC0: 65 90 20 74 6F 90 20 6D 61 6B 65 90 20 70 72 6F e. to. make. pro
020AD0: 67 72 61 6D 73 20 62 6F 74 68 20 0D 8A 72 65 61 grams both ..rea
020AE0: 64 61 62 6C 65 20 61 6E 64 20 70 6F 72 74 61 62 dable and portab
020AF0: 6C 65 2E 20 54 68 65 79 20 64 65 66 69 6E 65 20 le. They define
020B00: 67 20 75 73 65 20 3A 20 20 20 73 74 72 69 6E 67 g use : string
020B10: 25 6E 0D 0A 09 54 6F 20 61 63 63 65 73 73 20 74 %n...To access t
020B20: 68 65 20 6C 65 6E 67 74 68 20 6F 66 20 61 20 73 he length of a s
020B30: 74 72 69 6E 67 20 75 73 65 20 3A 20 73 74 72 69 tring use : stri
020B40: 6E 67 25 30 0D 0A 09 54 68 65 73 65 20 63 61 6E ng%0...These can
020B50: 90 20 62 65 90 20 72 65 61 64 90 20 61 6E 64 90 . be. read. and.
020B60: 20 77 72 69 74 74 65 6E 90 20 74 6F 2C 90 20 61 written. to,. a
020B70: 6C 6C 6F 77 69 6E 67 90 20 73 74 72 69 6E 67 73 llowing. strings
020B80: 90 20 74 6F 20 62 65 20 0D 8A 09 6D 61 6E 69 70 . to be ...manip
020B90: 75 6C 61 74 65 64 20 69 6E 20 61 6E 79 20 64 65 ulated in any de
020BA0: 73 69 72 65 64 20 6D 61 6E 6E 65 72 2E 0D 0A 0D sired manner....
020BB0: 0A 0D 0A E2 54 72 61 6E 73 66 65 72 20 6F 66 20 ....Transfer of
020BC0: 63 6F 6E 74 72 6F 6C E2 0D 0A 0D 0A 09 46 49 4E control......FIN
020BD0: 49 53 48 0D 0A 0D 0A 09 54 68 69 73 20 63 61 75 ISH.....This cau
020BE0: 73 65 73 20 65 78 65 63 75 74 69 6F 6E 20 6F 66 ses execution of
020BF0: 20 74 68 65 20 70 72 6F 67 72 61 6D 20 74 6F 20 the program to
020C00: 73 74 6F 70 2E 0D 0A 0D 0A 09 52 45 54 55 52 4E stop......RETURN
020C10: 0D 0A 0D 0A 09 43 6F 6E 74 72 6F 6C 20 72 65 74 .....Control ret
020C20: 75 72 6E 73 20 74 6F 20 74 68 65 20 63 61 6C 6C urns to the call
020C30: 69 6E 67 20 72 6F 75 74 69 6E 65 2E 0D 0A 0D 0A ing routine.....
020C40: 09 42 52 45 41 4B 0D 0A 0D 0A 09 55 73 65 64 90 .BREAK.....Used.
020C50: 20 77 69 74 68 69 6E 90 20 61 90 20 72 65 70 65 within. a. repe
020C60: 74 69 74 69 76 65 90 90 20 63 6F 6D 6D 61 6E 64 titive.. command
020C70: 90 90 20 28 55 4E 54 49 4C 2C 90 20 57 48 49 4C .. (UNTIL,. WHIL
020C80: 45 2C 90 20 52 45 50 45 41 54 2C 20 0D 8A 09 52 E,. REPEAT, ...R
020C90: 45 50 45 41 54 55 4E 54 49 4C 2C 20 52 45 50 45 EPEATUNTIL, REPE
020CA0: 41 54 57 48 49 4C 45 2C 20 6F 72 20 46 4F 52 29 ATWHILE, or FOR)
020CB0: 20 69 74 90 20 63 61 75 73 65 73 20 65 78 65 63 it. causes exec
020CC0: 75 74 69 6F 6E 20 74 6F 20 72 65 73 75 6D 65 20 ution to resume
020CD0: 0D 8A 09 61 74 20 74 68 65 20 66 69 72 73 74 20 ...at the first
020CE0: 63 6F 6D 6D 61 6E 64 20 61 66 74 65 72 20 74 68 command after th
020CF0: 65 20 72 65 70 65 74 69 74 69 76 65 20 63 6F 6D e repetitive com
020D00: 69 6D 70 6C 65 6D 65 6E 74 61 74 69 6F 6E 20 64 implementation d
020D10: 65 70 65 6E 64 65 6E 74 20 63 6F 6E 73 74 61 6E ependent constan
020D20: 74 73 2E 0D 0A 0D 0A 3E 2D 2D 2D 21 2D 2D 2D 2D ts.....>---!----
020D30: 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 4C -!-----!-------L
020D40: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 -------!-------!
020D50: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 -------!-------!
020D60: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A 6E -------!----R..n
020D70: 61 6D 65 09 09 76 61 6C 75 65 20 20 20 6D 65 61 ame..value mea
020D80: 6E 69 6E 67 20 61 6E 64 20 75 73 65 0D 0A 0D 0A ning and use....
020D90: 62 69 74 73 70 65 72 77 6F 72 64 09 31 36 09 42 bitsperword.16.B
020DA0: 43 50 4C 20 77 6F 72 64 20 73 69 7A 65 2C 20 66 CPL word size, f
020DB0: 6F 72 20 70 72 6F 67 72 61 6D 20 70 6F 72 74 61 or program porta
020DC0: 62 69 6C 69 74 79 0D 0A 62 79 74 65 73 70 65 72 bility..bytesper
020DD0: 77 6F 72 64 09 32 09 42 43 50 4C 20 77 6F 72 64 word.2.BCPL word
020DE0: 20 73 69 7A 65 2C 20 66 6F 72 20 70 72 6F 67 72 size, for progr
020DF0: 61 6D 20 70 6F 72 74 61 62 69 6C 69 74 79 0D 0A am portability..
020E00: 65 6E 64 73 74 72 65 61 6D 63 68 09 2D 2D 31 09 endstreamch.--1.
020E10: 68 61 72 64 20 65 6E 64 20 6F 66 20 66 69 6C 65 hard end of file
020E20: 20 63 68 61 72 61 63 74 65 72 0D 0A 6D 61 78 69 character..maxi
020E30: 6E 74 09 09 33 32 37 36 37 09 74 68 65 20 6C 61 nt..32767.the la
020E40: 72 67 65 73 74 20 70 6F 73 73 69 62 6C 65 20 69 rgest possible i
020E50: 6E 74 65 67 65 72 0D 0A 6D 69 6E 69 6E 74 09 09 nteger..minint..
020E60: 2D 2D 33 32 37 36 38 09 74 68 65 20 73 6D 61 6C --32768.the smal
020E70: 6C 65 73 74 20 70 6F 73 73 69 62 6C 65 20 69 6E lest possible in
020E80: 74 65 67 65 72 0D 0A 6E 65 77 6C 69 6E 65 63 68 teger..newlinech
020E90: 09 09 32 36 39 09 74 68 65 20 6E 65 77 20 6C 69 ..269.the new li
020EA0: 6E 65 20 63 68 61 72 61 63 74 65 72 2C 90 20 2A ne character,. *
020EB0: 4E 2C 20 77 68 69 63 68 20 69 73 20 65 78 70 61 N, which is expa
020EC0: 6E 64 65 64 20 0D 8A 09 09 09 09 74 6F 20 63 61 nded ......to ca
020ED0: 72 72 69 61 67 65 20 72 65 74 75 72 6E 20 66 6F rriage return fo
020EE0: 6C 6C 6F 77 65 64 20 62 79 20 6C 69 6E 65 20 66 llowed by line f
020EF0: 65 65 64 0D 0A 70 72 69 6E 74 73 74 72 65 61 6D eed..printstream
020F00: 6D 61 6E 64 2E 0D 0A 0D 0A 09 4C 4F 4F 50 0D 0A mand......LOOP..
020F10: 0D 0A 09 43 6F 6E 74 72 6F 6C 90 20 70 61 73 73 ...Control. pass
020F20: 65 73 90 20 74 6F 90 20 74 68 65 90 20 70 6F 69 es. to. the. poi
020F30: 6E 74 90 20 77 68 65 72 65 90 20 74 68 65 90 20 nt. where. the.
020F40: 72 65 70 65 74 69 74 69 76 65 90 20 63 6F 6D 6D repetitive. comm
020F50: 61 6E 64 20 0D 8A 09 63 6F 6E 64 69 74 69 6F 6E and ...condition
020F60: 20 69 73 20 74 65 73 74 65 64 2E 20 46 6F 72 90 is tested. For.
020F70: 20 61 90 20 46 4F 52 90 20 63 6F 6D 6D 61 6E 64 a. FOR. command
020F80: 90 20 63 6F 6E 74 72 6F 6C 20 70 61 73 73 65 73 . control passes
020F90: 20 74 6F 20 74 68 65 20 0D 8A 09 70 6F 69 6E 74 to the ...point
020FA0: 20 77 68 65 72 65 20 74 68 65 20 63 6F 6E 74 72 where the contr
020FB0: 6F 6C 20 76 61 72 69 61 62 6C 65 20 69 73 20 69 ol variable is i
020FC0: 6E 63 72 65 6D 65 6E 74 65 64 2E 0D 0A 0D 0A 09 ncremented......
020FD0: 45 4E 44 43 41 53 45 0D 0A 0D 0A 09 43 6F 6E 74 ENDCASE.....Cont
020FE0: 72 6F 6C 20 70 61 73 73 65 73 20 74 6F 20 74 68 rol passes to th
020FF0: 65 90 20 63 6F 6D 6D 61 6E 64 90 20 61 66 74 65 e. command. afte
021000: 72 90 20 74 68 65 90 20 65 6E 64 90 20 6F 66 20 r. the. end. of
021010: 74 68 65 20 53 57 49 54 43 48 49 4E 20 0D 8A 09 the SWITCHIN ...
021020: 63 6F 6D 70 6F 75 6E 64 20 63 6F 6D 6D 61 6E 64 compound command
021030: 2E 0D 0A 0D 0A 09 47 4F 54 4F 20 3C 65 78 70 72 ......GOTO <expr
021040: 65 73 73 69 6F 6E 3E 0D 0A 0D 0A 09 52 61 72 65 ession>.....Rare
021050: 6C 79 90 20 72 65 71 75 69 72 65 64 90 20 69 6E ly. required. in
021060: 90 20 42 43 50 4C 2C 90 20 74 68 65 90 90 20 47 . BCPL,. the.. G
021070: 4F 54 4F 90 20 63 6F 6D 6D 61 6E 64 90 20 65 76 OTO. command. ev
021080: 61 6C 75 61 74 65 73 90 20 74 68 65 20 0D 8A 09 aluates. the ...
021090: 65 78 70 72 65 73 73 69 6F 6E 20 61 6E 64 20 6A expression and j
0210A0: 75 6D 70 73 20 74 6F 20 74 68 65 90 20 61 64 64 umps to the. add
0210B0: 72 65 73 73 20 6F 62 74 61 69 6E 65 64 2E 20 54 ress obtained. T
0210C0: 68 65 20 65 78 70 72 65 73 73 69 6F 6E 20 69 73 he expression is
0210D0: 20 0D 8A 09 75 73 75 61 6C 6C 79 20 61 20 6C 61 ...usually a la
0210E0: 62 65 6C 20 77 68 69 63 68 20 69 73 20 64 65 66 bel which is def
0210F0: 69 6E 65 64 20 62 79 20 62 65 69 6E 67 20 61 74 ined by being at
021100: 09 31 09 73 74 72 65 61 6D 20 6E 75 6D 62 65 72 .1.stream number
021110: 20 74 6F 20 73 65 6C 65 63 74 20 6F 75 74 70 75 to select outpu
021120: 74 20 74 6F 20 70 72 69 6E 74 65 72 0D 0A 73 6F t to printer..so
021130: 66 74 65 6F 66 63 68 09 09 32 36 09 73 6F 66 74 fteofch..26.soft
021140: 20 65 6E 64 20 6F 66 20 66 69 6C 65 20 63 68 61 end of file cha
021150: 72 61 63 74 65 72 0D 0A 74 69 63 6B 73 70 65 72 racter..ticksper
021160: 73 65 63 09 33 30 30 09 6D 75 6C 74 69 70 6C 79 sec.300.multiply
021170: 20 74 68 65 20 76 61 6C 75 65 20 72 65 74 75 72 the value retur
021180: 6E 65 64 90 20 62 79 20 27 74 69 6D 65 27 20 62 ned. by 'time' b
021190: 79 20 74 68 69 73 20 0D 8A 09 09 09 09 74 6F 20 y this ......to
0211A0: 67 65 74 20 74 68 65 20 74 69 6D 65 20 69 6E 20 get the time in
0211B0: 73 65 63 6F 6E 64 73 2E 20 41 4D 53 44 4F 53 20 seconds. AMSDOS
0211C0: 6F 6E 6C 79 2E 0D 0A 76 64 75 73 74 72 65 61 6D only...vdustream
0211D0: 09 09 30 09 73 74 72 65 61 6D 20 6E 75 6D 62 65 ..0.stream numbe
0211E0: 72 20 74 6F 20 73 65 6C 65 63 74 20 73 63 72 65 r to select scre
0211F0: 65 6E 2F 6B 65 79 62 6F 61 72 64 0D 0A 0D 0A 0D en/keyboard.....
021200: 0A 3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D .>---!-----!----
021210: 2D 4C 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -L-------!------
021220: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -!-------!------
021230: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -!-------!------
021240: 2D 21 2D 2D 2D 2D 52 0D 0A E2 4B 65 79 20 74 6F -!----R...Key to
021250: 20 70 72 6F 63 65 64 75 72 65 20 64 65 73 63 72 procedure descr
021260: 69 70 74 69 6F 6E 73 3A E2 0D 0A 0D 0A 45 66 66 iptions:.....Eff
021270: 65 63 74 3A 20 09 09 62 72 69 65 66 20 65 78 70 ect: ..brief exp
021280: 6C 61 6E 61 74 69 6F 6E 20 6F 66 20 74 68 65 20 lanation of the
021290: 70 72 6F 63 65 64 75 72 65 0D 0A 52 65 74 75 72 procedure..Retur
0212A0: 6E 73 3A 09 09 64 65 74 61 69 6C 73 20 61 6E 79 ns:..details any
0212B0: 90 20 76 61 6C 75 65 90 20 72 65 74 75 72 6E 65 . value. returne
0212C0: 64 90 20 62 79 90 20 74 68 65 90 20 70 72 6F 63 d. by. the. proc
0212D0: 65 64 75 72 65 2E 90 20 41 6C 6C 20 0D 8A 09 09 edure.. All ....
0212E0: 09 6C 69 62 72 61 72 79 20 70 72 6F 63 65 64 75 .library procedu
0212F0: 72 65 73 20 6D 61 79 20 62 65 90 20 63 61 6C 6C res may be. call
021300: 74 61 63 68 65 64 20 74 6F 20 61 20 63 6F 6D 6D tached to a comm
021310: 61 6E 64 2C 20 0D 8A 0D 0A 09 65 2E 67 2E 09 6C and, .....e.g..l
021320: 61 62 65 6C 6E 61 6D 65 3A 20 3C 63 6F 6D 6D 61 abelname: <comma
021330: 6E 64 3E 0D 0A 3E 70 61 09 0D 0A E2 43 6F 6D 6D nd>..>pa....Comm
021340: 65 6E 74 73 20 61 6E 64 20 6C 61 79 6F 75 74 20 ents and layout
021350: 6F 66 20 70 72 6F 67 72 61 6D 73 E2 0D 0A 0D 0A of programs.....
021360: 09 54 68 65 72 65 20 61 72 65 20 74 77 6F 20 77 .There are two w
021370: 61 79 73 20 6F 66 20 70 75 74 74 69 6E 67 20 63 ays of putting c
021380: 6F 6D 6D 65 6E 74 73 20 77 69 74 68 69 6E 20 42 omments within B
021390: 43 50 4C 20 70 72 6F 67 72 61 6D 73 2E 0D 0A 0D CPL programs....
0213A0: 0A 09 2F 2F 20 63 61 75 73 65 73 20 74 68 65 20 ..// causes the
0213B0: 72 65 6D 61 69 6E 64 65 72 20 6F 66 20 74 68 65 remainder of the
0213C0: 20 6C 69 6E 65 20 74 6F 20 62 65 20 69 67 6E 6F line to be igno
0213D0: 72 65 64 0D 0A 09 2F 2A 20 63 61 75 73 65 73 20 red.../* causes
0213E0: 61 6C 6C 20 74 65 78 74 20 74 6F 20 62 65 90 20 all text to be.
0213F0: 69 67 6E 6F 72 65 64 20 75 6E 74 69 6C 20 74 68 ignored until th
021400: 65 20 63 6F 6D 70 69 6C 65 72 20 72 65 61 63 68 e compiler reach
021410: 65 73 20 74 68 65 20 0D 8A 09 73 79 6D 62 6F 6C es the ...symbol
021420: 20 2A 2F 0D 0A 0D 0A 09 41 64 64 69 74 69 6F 6E */.....Addition
021430: 61 6C 6C 79 20 61 20 3E 90 20 69 6E 90 20 63 6F ally a >. in. co
021440: 6C 75 6D 6E 90 20 31 90 20 63 61 75 73 65 73 90 lumn. 1. causes.
021450: 20 74 68 65 90 20 77 68 6F 6C 65 90 20 6C 69 6E the. whole. lin
021460: 65 90 20 74 6F 20 62 65 20 0D 8A 09 69 67 6E 6F e. to be ...igno
021470: 72 65 64 2E 20 54 68 75 73 20 50 52 4F 54 45 58 red. Thus PROTEX
021480: 54 20 73 74 6F 72 65 64 20 63 6F 6D 6D 61 6E 64 T stored command
021490: 73 20 61 72 65 20 69 67 6E 6F 72 65 64 2E 0D 0A s are ignored...
0214A0: 0D 0A 09 4D 75 6C 74 69 70 6C 65 20 63 6F 6D 6D ...Multiple comm
0214B0: 61 6E 64 20 6C 69 6E 65 73 20 61 72 65 90 20 61 and lines are. a
0214C0: 6C 6C 6F 77 65 64 2E 90 20 43 6F 6D 6D 61 6E 64 llowed.. Command
0214D0: 73 20 6D 75 73 74 20 62 65 20 73 65 70 61 72 61 s must be separa
0214E0: 74 65 64 20 0D 8A 09 62 79 20 61 20 73 65 6D 69 ted ...by a semi
0214F0: 63 6F 6C 6F 6E 20 28 3B 29 20 69 66 20 74 68 65 colon (;) if the
021500: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
021510: 1C 00 01 00 02 09 50 E5 1C 00 C1 02 00 00 00 02 ......P.........
021520: 1C 00 C6 02 00 00 00 02 1C 00 C2 02 00 00 00 02 ................
021530: 1C 00 C7 02 00 00 00 02 1C 00 C3 02 00 00 00 02 ................
021540: 1C 00 C8 02 00 00 00 02 1C 00 C4 02 00 00 00 02 ................
021550: 1C 00 C9 02 00 00 00 02 1C 00 C5 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: 65 64 20 61 73 20 72 6F 75 74 69 6E 65 73 2C 20 ed as routines,
021610: 77 68 65 74 68 65 72 20 0D 8A 09 09 09 6F 72 20 whether .....or
021620: 6E 6F 74 20 74 68 65 79 20 72 65 74 75 72 6E 20 not they return
021630: 61 20 76 61 6C 75 65 2E 20 4F 6E 6C 79 20 74 68 a value. Only th
021640: 6F 73 65 20 70 72 6F 63 65 64 75 72 65 73 20 74 ose procedures t
021650: 68 61 74 20 0D 8A 09 09 09 72 65 74 75 72 6E 20 hat .....return
021660: 61 20 76 61 6C 75 65 20 6D 61 79 20 62 65 20 63 a value may be c
021670: 61 6C 6C 65 64 90 20 61 73 20 61 20 66 75 6E 63 alled. as a func
021680: 74 69 6F 6E 2E 20 4E 6F 74 65 20 74 68 61 74 20 tion. Note that
021690: 0D 8A 09 09 09 73 65 76 65 72 61 6C 20 70 72 6F .....several pro
0216A0: 63 65 64 75 72 65 73 20 72 65 74 75 72 6E 20 76 cedures return v
0216B0: 61 6C 75 65 73 20 69 6E 20 61 20 73 75 70 70 6C alues in a suppl
0216C0: 69 65 64 20 76 65 63 74 6F 72 2C 20 0D 8A 09 09 ied vector, ....
0216D0: 09 62 75 74 20 74 68 65 73 65 20 77 69 6C 6C 20 .but these will
0216E0: 62 65 20 6C 69 73 74 65 64 90 20 61 73 90 20 27 be listed. as. '
0216F0: 6E 6F 74 68 69 6E 67 27 20 73 69 6E 63 65 20 74 nothing' since t
021700: 68 65 72 65 20 69 73 20 0D 8A 09 09 09 6E 6F 20 here is .....no
021710: 66 75 6E 63 74 69 6F 6E 20 76 61 6C 75 65 20 72 function value r
021720: 65 74 75 72 6E 65 64 2E 0D 0A 4C 6F 63 61 74 69 eturned...Locati
021730: 6F 6E 3A 09 09 74 68 69 73 20 69 6E 64 69 63 61 on:..this indica
021740: 74 65 73 20 77 68 65 72 65 90 20 74 68 65 90 20 tes where. the.
021750: 70 72 6F 63 65 64 75 72 65 90 20 69 73 90 20 64 procedure. is. d
021760: 65 66 69 6E 65 64 2E 20 54 68 65 20 0D 8A 09 09 efined. The ....
021770: 09 6C 6F 63 61 74 69 6F 6E 20 66 6F 72 20 74 68 .location for th
021780: 65 20 43 50 2F 4D 20 76 65 72 73 69 6F 6E 20 69 e CP/M version i
021790: 73 20 67 69 76 65 6E 20 66 69 72 73 74 2C 20 66 s given first, f
0217A0: 6F 6C 6C 6F 77 65 64 20 0D 8A 09 09 09 62 79 20 ollowed .....by
0217B0: 74 68 65 20 6C 6F 63 61 74 69 6F 6E 20 66 6F 72 the location for
0217C0: 90 20 74 68 65 90 20 41 4D 53 44 4F 53 90 20 76 . the. AMSDOS. v
0217D0: 65 72 73 69 6F 6E 2E 20 4D 6F 73 74 20 6F 66 20 ersion. Most of
0217E0: 74 68 65 20 0D 8A 09 09 09 6C 69 62 72 61 72 79 the .....library
0217F0: 90 20 70 72 6F 63 65 64 75 72 65 73 90 20 61 72 . procedures. ar
021800: 61 63 65 90 20 6F 66 90 20 74 68 65 90 20 25 20 ace. of. the. %
021810: 0D 8A 09 63 68 61 72 61 63 74 65 72 2E 20 54 68 ...character. Th
021820: 65 90 20 63 6F 6E 76 65 72 73 69 6F 6E 90 20 63 e. conversion. c
021830: 68 61 72 61 63 74 65 72 73 90 20 61 76 61 69 6C haracters. avail
021840: 61 62 6C 65 90 20 61 72 65 20 0D 8A 09 6C 69 73 able. are ...lis
021850: 74 65 64 20 62 65 6C 6F 77 2E 20 53 6F 6D 65 90 ted below. Some.
021860: 20 6F 66 90 20 74 68 65 73 65 90 20 6D 75 73 74 of. these. must
021870: 90 20 62 65 90 20 66 6F 6C 6C 6F 77 65 64 20 62 . be. followed b
021880: 79 20 61 20 0D 8A 09 6E 75 6D 62 65 72 20 74 6F y a ...number to
021890: 20 73 70 65 63 69 66 79 20 74 68 65 20 72 65 71 specify the req
0218A0: 75 69 72 65 64 90 20 66 69 65 6C 64 20 77 69 64 uired. field wid
0218B0: 74 68 2E 20 54 68 65 73 65 20 61 72 65 20 0D 8A th. These are ..
0218C0: 09 6D 61 72 6B 65 64 20 77 69 74 68 20 27 6E 27 .marked with 'n'
0218D0: 2C 20 77 68 69 63 68 20 63 61 6E 90 20 62 65 90 , which can. be.
0218E0: 20 61 20 64 65 63 69 6D 61 6C 20 6F 72 20 68 65 a decimal or he
0218F0: 78 20 64 69 67 69 74 20 0D 8A 09 28 73 6F 20 27 x digit ...(so '
021900: 46 27 20 67 69 76 65 73 20 74 68 65 20 6D 61 78 F' gives the max
021910: 69 6D 75 6D 20 77 69 64 74 68 20 6F 66 20 31 35 imum width of 15
021920: 29 2E 0D 0A 0D 0A 3E 2D 2D 2D 2D 2D 2D 2D 2D 2D ).....>---------
021930: 2D 2D 2D 2D 2D 20 21 2D 2D 2D 2D 2D 4C 2D 21 2D ----- !-----L-!-
021940: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
021950: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
021960: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A 09 53 ------!----R...S
021970: 20 20 2D 2D 20 70 72 69 6E 74 20 61 20 73 74 72 -- print a str
021980: 69 6E 67 0D 0A 09 43 20 20 2D 2D 20 70 72 69 6E ing...C -- prin
021990: 74 20 61 20 63 68 61 72 61 63 74 65 72 0D 0A 09 t a character...
0219A0: 58 6E 20 2D 2D 20 70 72 69 6E 74 20 61 90 68 65 Xn -- print a.he
0219B0: 78 20 76 61 6C 75 65 2E 90 20 49 66 90 20 74 68 x value.. If. th
0219C0: 65 90 20 66 69 65 6C 64 90 20 77 69 64 74 68 20 e. field. width
0219D0: 69 73 20 74 6F 6F 20 0D 8A 09 09 73 6D 61 6C 6C is too ....small
0219E0: 2C 20 6F 6E 6C 79 20 74 68 65 20 6C 65 61 73 74 , only the least
0219F0: 20 73 69 67 6E 69 66 69 63 61 6E 74 20 64 69 67 significant dig
021A00: 65 90 20 77 72 69 74 74 65 6E 90 90 20 69 6E 90 e. written.. in.
021A10: 20 42 43 50 4C 90 20 61 6E 64 90 20 61 72 65 20 BCPL. and. are
021A20: 0D 8A 09 09 09 63 6F 6E 74 61 69 6E 65 64 20 69 .....contained i
021A30: 6E 20 6F 6E 65 20 6F 66 20 74 68 65 90 20 6C 69 n one of the. li
021A40: 62 72 61 72 79 20 66 69 6C 65 73 2E 20 41 20 66 brary files. A f
021A50: 65 77 20 72 6F 75 74 69 6E 65 73 20 0D 8A 09 09 ew routines ....
021A60: 09 61 72 65 90 20 70 72 65 2D 64 65 66 69 6E 65 .are. pre-define
021A70: 64 2C 90 20 69 2E 65 2E 90 20 74 68 65 79 90 20 d,. i.e.. they.
021A80: 61 72 65 90 20 77 72 69 74 74 65 6E 90 20 69 6E are. written. in
021A90: 74 6F 90 20 74 68 65 20 0D 8A 09 09 09 63 6F 6D to. the .....com
021AA0: 70 69 6C 65 72 2E 0D 0A 3E 70 61 0D 0A 3E 2D 2D piler...>pa..>--
021AB0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 4C 2D 2D ------------ L--
021AC0: 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D -----!-------!--
021AD0: 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D -----!-------!--
021AE0: 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D -----!-------!--
021AF0: 2D 2D 52 0D 0A E2 28 61 29 20 4F 75 74 70 75 74 --R...(a) Output
021B00: 20 52 6F 75 74 69 6E 65 73 E2 0D 0A 0D 0A 0D 0A Routines.......
021B10: 4E 45 57 4C 49 4E 45 28 29 0D 0A 0D 0A 45 66 66 NEWLINE()....Eff
021B20: 65 63 74 3A 09 53 74 61 72 74 73 20 61 20 6E 65 ect:.Starts a ne
021B30: 77 20 6C 69 6E 65 90 20 69 6E 90 20 74 68 65 90 w line. in. the.
021B40: 20 63 75 72 72 65 6E 74 6C 79 20 73 65 6C 65 63 currently selec
021B50: 74 65 64 20 6F 75 74 70 75 74 2E 20 0D 8A 09 54 ted output. ...T
021B60: 68 65 20 65 78 61 63 74 20 65 66 66 65 63 74 20 he exact effect
021B70: 69 6E 20 41 72 6E 6F 72 20 42 43 50 4C 20 69 73 in Arnor BCPL is
021B80: 20 74 6F 20 6F 75 74 70 75 74 20 61 20 63 61 72 to output a car
021B90: 72 69 61 67 65 20 0D 8A 09 72 65 74 75 72 6E 20 riage ...return
021BA0: 28 31 33 29 20 66 6F 6C 6C 6F 77 65 64 20 62 79 (13) followed by
021BB0: 20 61 20 6C 69 6E 65 20 66 65 65 64 20 28 31 30 a line feed (10
021BC0: 29 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E ).....Returns:.N
021BD0: 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 othing....Locati
021BE0: 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 on:.CLIBHDR, ALI
021BF0: 42 48 44 52 0D 0A 0D 0A 0D 0A 4E 45 57 50 41 47 BHDR......NEWPAG
021C00: 69 74 73 20 77 69 6C 6C 20 62 65 20 0D 8A 09 09 its will be ....
021C10: 6F 75 74 70 75 74 2E 0D 0A 09 4F 6E 20 2D 2D 20 output....On --
021C20: 70 72 69 6E 74 20 61 6E 20 6F 63 74 61 6C 20 76 print an octal v
021C30: 61 6C 75 65 2E 20 49 66 90 20 74 68 65 20 66 69 alue. If. the fi
021C40: 65 6C 64 20 77 69 64 74 68 20 69 73 20 74 6F 6F eld width is too
021C50: 20 0D 8A 09 09 73 6D 61 6C 6C 2C 20 6F 6E 6C 79 ....small, only
021C60: 20 74 68 65 20 6C 65 61 73 74 20 73 69 67 6E 69 the least signi
021C70: 66 69 63 61 6E 74 20 64 69 67 69 74 73 20 77 69 ficant digits wi
021C80: 6C 6C 20 62 65 20 0D 8A 09 09 6F 75 74 70 75 74 ll be ....output
021C90: 2E 0D 0A 09 49 6E 20 2D 2D 90 70 72 69 6E 74 20 ....In --.print
021CA0: 61 6E 20 69 6E 74 65 67 65 72 20 69 6E 20 64 65 an integer in de
021CB0: 63 69 6D 61 6C 2E 90 20 49 66 20 74 68 65 20 66 cimal.. If the f
021CC0: 69 65 6C 64 20 77 69 64 74 68 20 0D 8A 09 09 69 ield width ....i
021CD0: 73 20 74 6F 6F 20 73 6D 61 6C 6C 2C 20 74 68 65 s too small, the
021CE0: 90 20 69 6E 74 65 67 65 72 90 20 77 69 6C 6C 20 . integer. will
021CF0: 62 65 20 6F 75 74 70 75 74 20 75 73 69 6E 67 20 be output using
021D00: 0D 8A 09 09 74 68 65 20 6C 65 61 73 74 20 6E 75 ....the least nu
021D10: 6D 62 65 72 20 6F 66 20 73 70 61 63 65 73 2E 0D mber of spaces..
021D20: 0A 09 4E 20 20 2D 2D 20 70 72 69 6E 74 20 61 6E ..N -- print an
021D30: 90 20 69 6E 74 65 67 65 72 90 20 69 6E 90 20 64 . integer. in. d
021D40: 65 63 69 6D 61 6C 90 20 77 69 74 68 90 20 6E 6F ecimal. with. no
021D50: 20 6C 65 61 64 69 6E 67 20 0D 8A 09 09 73 70 61 leading ....spa
021D60: 63 65 73 0D 0A 09 25 20 20 2D 2D 20 70 72 69 6E ces...% -- prin
021D70: 74 20 74 68 65 20 25 20 63 68 61 72 61 63 74 65 t the % characte
021D80: 72 0D 0A 09 24 20 20 2D 2D 20 73 6B 69 70 20 61 r...$ -- skip a
021D90: 20 70 61 72 61 6D 65 74 65 72 0D 0A 0D 0A 3E 2D parameter....>-
021DA0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 4C 2D ------------- L-
021DB0: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
021DC0: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
021DD0: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
021DE0: 2D 2D 2D 52 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A ---R....Returns:
021DF0: 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 .Nothing....Loca
021E00: 45 28 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 53 E()....Effect:.S
021E10: 74 61 72 74 73 20 61 20 6E 65 77 20 70 61 67 65 tarts a new page
021E20: 90 20 69 6E 90 20 74 68 65 90 20 63 75 72 72 65 . in. the. curre
021E30: 6E 74 6C 79 20 73 65 6C 65 63 74 65 64 20 6F 75 ntly selected ou
021E40: 74 70 75 74 2E 20 0D 8A 09 54 68 65 20 65 78 61 tput. ...The exa
021E50: 63 74 20 65 66 66 65 63 74 20 69 6E 20 41 72 6E ct effect in Arn
021E60: 6F 72 90 20 42 43 50 4C 90 20 69 73 20 74 6F 20 or. BCPL. is to
021E70: 6F 75 74 70 75 74 20 74 68 65 20 66 6F 72 6D 20 output the form
021E80: 0D 8A 09 66 65 65 64 20 63 68 61 72 61 63 74 65 ...feed characte
021E90: 72 20 28 31 32 29 2E 0D 0A 0D 0A 52 65 74 75 72 r (12).....Retur
021EA0: 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C ns:.Nothing....L
021EB0: 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 ocation:.CLIBHDR
021EC0: 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A 0D 0A 0D 1, ALIBHDR1.....
021ED0: 0A 57 52 43 48 28 63 68 61 72 29 0D 0A 0D 0A 45 .WRCH(char)....E
021EE0: 66 66 65 63 74 3A 09 54 68 65 20 63 68 61 72 61 ffect:.The chara
021EF0: 63 74 65 72 20 69 73 20 73 65 6E 74 20 74 6F 20 cter is sent to
021F00: 74 68 65 20 63 75 72 72 65 6E 74 6C 79 20 73 65 the currently se
021F10: 6C 65 63 74 65 64 20 6F 75 74 70 75 74 20 0D 8A lected output ..
021F20: 09 73 74 72 65 61 6D 2E 20 57 72 63 68 28 27 2A .stream. Wrch('*
021F30: 4E 27 29 20 68 61 73 20 74 68 65 90 20 73 61 6D N') has the. sam
021F40: 65 90 20 65 66 66 65 63 74 20 61 73 20 6E 65 77 e. effect as new
021F50: 6C 69 6E 65 28 29 2C 20 0D 8A 09 69 2E 65 2E 20 line(), ...i.e.
021F60: 63 61 72 72 69 61 67 65 20 72 65 74 75 72 6E 20 carriage return
021F70: 61 6E 64 20 6C 69 6E 65 20 66 65 65 64 20 61 72 and line feed ar
021F80: 65 20 6F 75 74 70 75 74 2E 0D 0A 0D 0A 52 65 74 e output.....Ret
021F90: 75 72 6E 73 3A 09 54 52 55 45 20 69 66 20 73 75 urns:.TRUE if su
021FA0: 63 63 65 73 73 66 75 6C 2C 20 46 41 4C 53 45 20 ccessful, FALSE
021FB0: 69 66 20 61 6E 20 65 72 72 6F 72 20 6F 63 63 75 if an error occu
021FC0: 72 72 65 64 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 6F rred.....Locatio
021FD0: 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 n:.CLIBHDR, ALIB
021FE0: 48 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C 65 73 3A HDR....Examples:
021FF0: 09 77 72 63 68 28 63 68 61 72 29 0D 0A 09 77 72 .wrch(char)...wr
022000: 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 tion:.CLIBHDR, A
022010: 4C 49 42 48 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C LIBHDR....Exampl
022020: 65 3A 0D 0A 0D 0A 09 4C 45 54 20 63 6F 6E 76 65 e:.....LET conve
022030: 72 74 20 3D 20 31 30 30 0D 0A 09 77 72 69 74 65 rt = 100...write
022040: 66 28 22 25 4E 20 69 6E 20 68 65 78 61 64 65 63 f("%N in hexadec
022050: 69 6D 61 6C 20 69 73 20 25 58 34 2A 4E 22 2C 20 imal is %X4*N",
022060: 63 6F 6E 76 65 72 74 2C 20 63 6F 6E 76 65 72 74 convert, convert
022070: 29 0D 0A 0D 0A 09 77 6F 75 6C 64 20 70 72 69 6E ).....would prin
022080: 74 0D 0A 0D 0A 09 31 30 30 20 69 6E 20 68 65 78 t.....100 in hex
022090: 61 64 65 63 69 6D 61 6C 20 69 73 20 30 30 36 34 adecimal is 0064
0220A0: 0D 0A 0D 0A 3E 70 61 0D 0A 57 52 49 54 45 48 45 ....>pa..WRITEHE
0220B0: 58 28 69 6E 74 65 67 65 72 2C 77 69 64 74 68 29 X(integer,width)
0220C0: 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 65 20 ....Effect:.The
0220D0: 69 6E 74 65 67 65 72 90 20 69 73 90 20 6F 75 74 integer. is. out
0220E0: 70 75 74 90 20 61 73 90 20 61 6E 90 20 75 6E 73 put. as. an. uns
0220F0: 69 67 6E 65 64 90 20 68 65 78 61 64 65 63 69 6D igned. hexadecim
022100: 61 6C 20 0D 8A 09 69 6E 74 65 67 65 72 2C 20 72 al ...integer, r
022110: 69 67 68 74 20 6A 75 73 74 69 66 69 65 64 20 69 ight justified i
022120: 6E 90 20 61 90 20 66 69 65 6C 64 20 6F 66 20 74 n. a. field of t
022130: 68 65 20 73 70 65 63 69 66 69 65 64 20 0D 8A 09 he specified ...
022140: 77 69 64 74 68 2C 90 20 77 69 74 68 90 20 6C 65 width,. with. le
022150: 61 64 69 6E 67 90 90 20 7A 65 72 6F 73 2E 90 90 ading.. zeros...
022160: 20 49 66 90 90 20 74 68 69 73 90 90 20 77 69 64 If.. this.. wid
022170: 74 68 90 20 69 73 20 0D 8A 09 69 6E 73 75 66 66 th. is ...insuff
022180: 69 63 69 65 6E 74 20 74 68 65 6E 90 20 74 68 65 icient then. the
022190: 90 20 6C 65 61 73 74 90 20 73 69 67 6E 69 66 69 . least. signifi
0221A0: 63 61 6E 74 90 20 64 69 67 69 74 73 20 61 72 65 cant. digits are
0221B0: 20 0D 8A 09 6F 75 74 70 75 74 2E 0D 0A 0D 0A 52 ...output.....R
0221C0: 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D eturns:.Nothing.
0221D0: 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 ...Location:.CLI
0221E0: 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D BHDR, ALIBHDR...
0221F0: 0A 45 78 61 6D 70 6C 65 3A 09 77 72 69 74 65 68 .Example:.writeh
022200: 63 68 28 27 41 27 29 0D 0A 0D 0A 0D 0A 57 52 49 ch('A')......WRI
022210: 54 45 44 28 69 6E 74 65 67 65 72 2C 77 69 64 74 TED(integer,widt
022220: 68 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 h)....Effect:.Th
022230: 65 20 69 6E 74 65 67 65 72 20 69 73 90 20 6F 75 e integer is. ou
022240: 74 70 75 74 90 20 61 73 90 20 61 90 20 73 69 67 tput. as. a. sig
022250: 6E 65 64 20 64 65 63 69 6D 61 6C 20 69 6E 74 65 ned decimal inte
022260: 67 65 72 2C 20 0D 8A 09 72 69 67 68 74 20 6A 75 ger, ...right ju
022270: 73 74 69 66 69 65 64 20 69 6E 20 61 20 66 69 65 stified in a fie
022280: 6C 64 90 20 6F 66 20 74 68 65 20 73 70 65 63 69 ld. of the speci
022290: 66 69 65 64 20 77 69 64 74 68 2E 20 49 66 20 0D fied width. If .
0222A0: 8A 09 74 68 69 73 20 77 69 64 74 68 20 69 73 20 ..this width is
0222B0: 69 6E 73 75 66 66 69 63 69 65 6E 74 20 74 68 65 insufficient the
0222C0: 6E 90 20 69 74 90 20 77 69 6C 6C 20 62 65 20 6F n. it. will be o
0222D0: 75 74 70 75 74 20 69 6E 20 0D 8A 09 74 68 65 20 utput in ...the
0222E0: 6D 69 6E 69 6D 75 6D 20 77 69 64 74 68 2E 20 54 minimum width. T
0222F0: 68 65 90 20 6E 75 6D 62 65 72 90 20 6F 75 74 70 he. number. outp
022300: 75 74 90 20 77 69 6C 6C 20 62 65 20 69 6E 20 74 ut. will be in t
022310: 68 65 20 0D 8A 09 72 61 6E 67 65 20 28 2D 2D 33 he ...range (--3
022320: 32 37 36 38 2C 33 32 37 36 37 29 2E 0D 0A 0D 0A 2768,32767).....
022330: 52 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 Returns:.Nothing
022340: 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C ....Location:.CL
022350: 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A IBHDR, ALIBHDR..
022360: 3E 70 61 0D 0A 57 52 49 54 45 46 28 66 6F 72 6D >pa..WRITEF(form
022370: 61 74 2C 61 2C 62 2C 63 2C 64 2C 65 2C 66 2C 67 at,a,b,c,d,e,f,g
022380: 2C 68 2C 69 2C 6A 2C 6B 29 0D 0A 0D 0A 45 66 66 ,h,i,j,k)....Eff
022390: 65 63 74 3A 09 57 52 49 54 45 46 20 61 6C 6C 6F ect:.WRITEF allo
0223A0: 77 73 20 63 68 61 72 61 63 74 65 72 73 20 74 6F ws characters to
0223B0: 90 20 62 65 90 20 70 72 69 6E 74 65 64 20 6F 75 . be. printed ou
0223C0: 74 20 61 63 63 6F 72 64 69 6E 67 20 0D 8A 09 74 t according ...t
0223D0: 6F 20 63 65 72 74 61 69 6E 20 66 6F 72 6D 61 74 o certain format
0223E0: 73 2E 90 20 54 68 65 90 20 70 72 6F 63 65 64 75 s.. The. procedu
0223F0: 72 65 90 20 74 61 6B 65 73 90 20 6F 6E 65 20 73 re. takes. one s
022400: 65 78 28 6E 75 6D 62 65 72 2C 34 29 0D 0A 0D 0A ex(number,4)....
022410: 0D 0A 57 52 49 54 45 4E 28 69 6E 74 65 67 65 72 ..WRITEN(integer
022420: 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 65 )....Effect:.The
022430: 20 69 6E 74 65 67 65 72 20 69 73 20 6F 75 74 70 integer is outp
022440: 75 74 20 69 6E 20 64 65 63 69 6D 61 6C 20 69 6E ut in decimal in
022450: 20 74 68 65 20 6D 69 6E 69 6D 75 6D 20 77 69 64 the minimum wid
022460: 74 68 2E 20 0D 8A 09 54 68 69 73 20 69 73 20 74 th. ...This is t
022470: 68 65 20 73 61 6D 65 20 61 73 20 57 52 49 54 45 he same as WRITE
022480: 44 28 69 6E 74 65 67 65 72 2C 30 29 2E 0D 0A 0D D(integer,0)....
022490: 0A 52 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E .Returns:.Nothin
0224A0: 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 g....Location:.C
0224B0: 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D LIBHDR, ALIBHDR.
0224C0: 0A 0D 0A 0D 0A 57 52 49 54 45 4F 43 54 28 69 6E .....WRITEOCT(in
0224D0: 74 65 67 65 72 2C 77 69 64 74 68 29 0D 0A 0D 0A teger,width)....
0224E0: 45 66 66 65 63 74 3A 09 54 68 65 20 69 6E 74 65 Effect:.The inte
0224F0: 67 65 72 20 69 73 20 6F 75 74 70 75 74 90 20 61 ger is output. a
022500: 73 90 20 61 6E 90 20 75 6E 73 69 67 6E 65 64 20 s. an. unsigned
022510: 6F 63 74 61 6C 20 69 6E 74 65 67 65 72 2C 20 0D octal integer, .
022520: 8A 09 72 69 67 68 74 20 6A 75 73 74 69 66 69 65 ..right justifie
022530: 64 20 69 6E 90 20 61 90 20 66 69 65 6C 64 90 20 d in. a. field.
022540: 6F 66 90 20 74 68 65 20 73 70 65 63 69 66 69 65 of. the specifie
022550: 64 20 77 69 64 74 68 2C 20 0D 8A 09 77 69 74 68 d width, ...with
022560: 20 6C 65 61 64 69 6E 67 20 7A 65 72 6F 73 2E 20 leading zeros.
022570: 49 66 20 74 68 69 73 20 77 69 64 74 68 20 69 73 If this width is
022580: 20 69 6E 73 75 66 66 69 63 69 65 6E 74 20 74 68 insufficient th
022590: 65 6E 20 0D 8A 09 74 68 65 20 6C 65 61 73 74 20 en ...the least
0225A0: 73 69 67 6E 69 66 69 63 61 6E 74 20 64 69 67 69 significant digi
0225B0: 74 73 20 61 72 65 20 6F 75 74 70 75 74 2E 0D 0A ts are output...
0225C0: 0D 0A 52 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 ..Returns:.Nothi
0225D0: 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 ng....Location:.
0225E0: 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 CLIBHDR, ALIBHDR
0225F0: 0D 0A 0D 0A 45 78 61 6D 70 6C 65 3A 09 77 72 69 ....Example:.wri
022600: 74 72 69 6E 67 20 0D 8A 09 70 61 72 61 6D 65 74 tring ...paramet
022610: 65 72 20 77 68 69 63 68 20 67 69 76 65 73 90 20 er which gives.
022620: 74 68 65 90 20 74 65 6D 70 6C 61 74 65 90 20 74 the. template. t
022630: 6F 90 20 62 65 90 20 75 73 65 64 20 66 6F 72 20 o. be. used for
022640: 0D 8A 09 70 72 69 6E 74 69 6E 67 2E 20 49 74 90 ...printing. It.
022650: 20 61 6C 73 6F 90 20 74 61 6B 65 73 90 20 61 6E also. takes. an
022660: 6F 74 68 65 72 90 20 73 65 74 90 20 6F 66 20 70 other. set. of p
022670: 61 72 61 6D 65 74 65 72 73 20 0D 8A 09 28 75 70 arameters ...(up
022680: 20 74 6F 20 31 31 29 20 77 68 69 63 68 20 67 69 to 11) which gi
022690: 76 65 90 20 74 68 65 90 20 69 74 65 6D 73 90 20 ve. the. items.
0226A0: 74 6F 20 62 65 20 70 72 69 6E 74 65 64 2E 20 4E to be printed. N
0226B0: 6F 74 65 20 0D 8A 09 74 68 61 74 20 69 74 20 69 ote ...that it i
0226C0: 73 20 6E 6F 74 20 6E 65 63 65 73 73 61 72 79 90 s not necessary.
0226D0: 20 74 6F 90 20 70 72 6F 76 69 64 65 20 61 20 42 to. provide a B
0226E0: 43 50 4C 20 70 72 6F 63 65 64 75 72 65 20 0D 8A CPL procedure ..
0226F0: 09 77 69 74 68 90 20 61 6C 6C 90 20 6F 66 90 20 .with. all. of.
022700: 69 74 73 90 20 66 6F 72 6D 61 6C 90 20 70 61 72 its. formal. par
022710: 61 6D 65 74 65 72 73 2E 90 20 54 68 65 90 20 74 ameters.. The. t
022720: 65 6D 70 6C 61 74 65 20 0D 8A 09 70 61 72 61 6D emplate ...param
022730: 65 74 65 72 90 20 69 73 90 20 61 90 20 73 74 72 eter. is. a. str
022740: 69 6E 67 90 20 77 68 69 63 68 90 90 20 6D 61 79 ing. which.. may
022750: 90 20 69 6E 63 6C 75 64 65 90 20 74 68 65 90 20 . include. the.
022760: 25 20 0D 8A 09 63 68 61 72 61 63 74 65 72 20 66 % ...character f
022770: 6F 6C 6C 6F 77 65 64 20 62 79 90 20 61 90 20 63 ollowed by. a. c
022780: 6F 6E 76 65 72 73 69 6F 6E 20 63 68 61 72 61 63 onversion charac
022790: 74 65 72 28 73 29 2E 20 54 68 65 20 0D 8A 09 74 ter(s). The ...t
0227A0: 65 6D 70 6C 61 74 65 90 20 73 74 72 69 6E 67 90 emplate. string.
0227B0: 20 69 73 90 20 70 72 69 6E 74 65 64 90 90 20 6F is. printed.. o
0227C0: 75 74 90 90 20 77 69 74 68 90 20 74 68 65 90 20 ut.. with. the.
0227D0: 6F 74 68 65 72 20 0D 8A 09 70 61 72 61 6D 65 74 other ...paramet
0227E0: 65 72 73 90 20 69 6E 73 65 72 74 65 64 90 20 69 ers. inserted. i
0227F0: 6E 74 6F 90 20 69 74 90 20 69 6E 90 90 20 70 6C nto. it. in.. pl
022800: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
022810: 1D 00 01 00 02 09 50 E5 1D 00 C1 02 00 00 00 02 ......P.........
022820: 1D 00 C6 02 00 00 00 02 1D 00 C2 02 00 00 00 02 ................
022830: 1D 00 C7 02 00 00 00 02 1D 00 C3 02 00 00 00 02 ................
022840: 1D 00 C8 02 00 00 00 02 1D 00 C4 02 00 00 00 02 ................
022850: 1D 00 C9 02 00 00 00 02 1D 00 C5 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: 74 65 6F 63 74 28 6E 75 6D 62 65 72 2C 36 29 0D teoct(number,6).
022910: 0A 0D 0A 0D 0A 57 52 49 54 45 53 28 73 74 72 69 .....WRITES(stri
022920: 6E 67 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 ng)....Effect:.T
022930: 68 65 20 73 74 72 69 6E 67 20 69 73 20 6F 75 74 he string is out
022940: 70 75 74 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A put.....Returns:
022950: 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 .Nothing....Loca
022960: 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 tion:.CLIBHDR, A
022970: 4C 49 42 48 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C LIBHDR....Exampl
022980: 65 3A 09 77 72 69 74 65 73 28 22 45 6E 74 65 72 e:.writes("Enter
022990: 20 66 69 6C 65 6E 61 6D 65 3A 20 22 29 0D 0A 0D filename: ")...
0229A0: 0A 3E 70 61 0D 0A 57 52 49 54 45 54 28 73 74 72 .>pa..WRITET(str
0229B0: 69 6E 67 2C 77 69 64 74 68 29 0D 0A 0D 0A 45 66 ing,width)....Ef
0229C0: 66 65 63 74 3A 09 54 68 65 20 73 74 72 69 6E 67 fect:.The string
0229D0: 20 69 73 20 6F 75 74 70 75 74 20 69 6E 90 20 74 is output in. t
0229E0: 68 65 20 73 70 65 63 69 66 69 65 64 20 66 69 65 he specified fie
0229F0: 6C 64 20 77 69 64 74 68 2E 20 49 66 20 0D 8A 09 ld width. If ...
022A00: 74 68 65 20 77 69 64 74 68 20 69 73 20 6C 6F 6E the width is lon
022A10: 67 65 72 90 20 74 68 61 6E 90 20 74 68 65 90 20 ger. than. the.
022A20: 73 74 72 69 6E 67 20 74 68 65 6E 20 73 70 61 63 string then spac
022A30: 65 73 20 61 72 65 20 0D 8A 09 6F 75 74 70 75 74 es are ...output
022A40: 20 61 74 20 74 68 65 20 72 69 67 68 74 2E 20 49 at the right. I
022A50: 66 20 74 68 65 90 20 77 69 64 74 68 20 69 73 20 f the. width is
022A60: 73 68 6F 72 74 65 72 20 74 68 61 6E 20 74 68 65 shorter than the
022A70: 20 0D 8A 09 73 74 72 69 6E 67 2C 20 74 68 65 20 ...string, the
022A80: 77 68 6F 6C 65 20 73 74 72 69 6E 67 20 69 73 20 whole string is
022A90: 70 72 69 6E 74 65 64 2E 0D 0A 0D 0A 52 65 74 75 printed.....Retu
022AA0: 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A rns:.Nothing....
022AB0: 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 Location:.CLIBHD
022AC0: 52 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A 0D 0A R1, ALIBHDR1....
022AD0: 0D 0A 57 52 49 54 45 55 28 75 6E 73 69 67 6E 65 ..WRITEU(unsigne
022AE0: 64 2C 77 69 64 74 68 29 0D 0A 0D 0A 45 66 66 65 d,width)....Effe
022AF0: 63 74 3A 09 54 68 65 20 66 69 72 73 74 20 70 61 ct:.The first pa
022B00: 68 69 73 90 20 72 6F 75 74 69 6E 65 90 20 73 68 his. routine. sh
022B10: 6F 75 6C 64 90 20 6E 6F 74 90 20 62 65 20 63 61 ould. not. be ca
022B20: 6C 6C 65 64 20 0D 8A 09 74 77 69 63 65 20 77 69 lled ...twice wi
022B30: 74 68 6F 75 74 20 61 6E 20 69 6E 74 65 72 76 65 thout an interve
022B40: 6E 69 6E 67 20 63 61 6C 6C 90 20 74 6F 20 52 44 ning call. to RD
022B50: 43 48 2C 20 74 68 65 20 73 65 63 6F 6E 64 20 0D CH, the second .
022B60: 8A 09 63 61 6C 6C 20 77 69 6C 6C 90 20 68 61 76 ..call will. hav
022B70: 65 90 20 6E 6F 90 20 65 66 66 65 63 74 2E 90 20 e. no. effect..
022B80: 43 68 61 72 61 63 74 65 72 73 90 20 63 61 6E 90 Characters. can.
022B90: 20 6F 6E 6C 79 20 62 65 20 0D 8A 09 72 65 74 75 only be ...retu
022BA0: 72 6E 65 64 20 74 6F 20 74 68 65 20 63 75 72 72 rned to the curr
022BB0: 65 6E 74 90 20 73 74 72 65 61 6D 90 20 69 66 90 ent. stream. if.
022BC0: 20 52 44 43 48 20 69 73 20 75 73 65 64 2C 20 74 RDCH is used, t
022BD0: 68 65 20 0D 8A 09 66 61 63 69 6C 69 74 79 20 69 he ...facility i
022BE0: 73 20 6E 6F 74 20 70 72 6F 76 69 64 65 64 20 61 s not provided a
022BF0: 74 90 20 74 68 65 20 70 72 69 6D 69 74 69 76 65 t. the primitive
022C00: 20 49 2F 4F 20 72 6F 75 74 69 6E 65 20 0D 8A 09 I/O routine ...
022C10: 6C 65 76 65 6C 20 28 74 68 61 74 20 69 73 20 52 level (that is R
022C20: 44 56 44 55 20 61 6E 64 20 52 45 41 44 43 48 29 DVDU and READCH)
022C30: 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E 6F .....Returns:.No
022C40: 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F thing....Locatio
022C50: 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 n:.CLIBHDR, ALIB
022C60: 48 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C 65 3A 09 HDR....Example:.
022C70: 63 68 20 3A 3D 20 72 64 63 68 28 29 20 52 45 50 ch := rdch() REP
022C80: 45 41 54 55 4E 54 49 4C 20 63 68 3D 31 33 0D 0A EATUNTIL ch=13..
022C90: 09 75 6E 72 64 63 68 28 29 0D 0A 0D 0A 3E 70 61 .unrdch()....>pa
022CA0: 0D 0A E2 28 63 29 20 53 74 72 65 61 6D 20 53 65 ...(c) Stream Se
022CB0: 6C 65 63 74 69 6F 6E 20 52 6F 75 74 69 6E 65 73 lection Routines
022CC0: E2 0D 0A 0D 0A 0D 0A 49 4E 50 55 54 28 29 0D 0A .......INPUT()..
022CD0: 0D 0A 45 66 66 65 63 74 3A 09 54 68 69 73 20 77 ..Effect:.This w
022CE0: 69 6C 6C 90 20 72 65 74 75 72 6E 90 20 61 90 20 ill. return. a.
022CF0: 76 61 6C 75 65 90 20 72 65 70 72 65 73 65 6E 74 value. represent
022D00: 72 61 6D 65 74 65 72 20 69 73 20 74 72 65 61 74 rameter is treat
022D10: 65 64 90 20 61 73 20 61 6E 20 75 6E 73 69 67 6E ed. as an unsign
022D20: 65 64 20 69 6E 74 65 67 65 72 20 0D 8A 09 61 6E ed integer ...an
022D30: 64 90 20 6F 75 74 70 75 74 90 20 69 6E 90 20 64 d. output. in. d
022D40: 65 63 69 6D 61 6C 2C 90 90 20 72 69 67 68 74 90 ecimal,.. right.
022D50: 90 20 6A 75 73 74 69 66 69 65 64 90 20 69 6E 90 . justified. in.
022D60: 20 74 68 65 20 0D 8A 09 73 70 65 63 69 66 69 65 the ...specifie
022D70: 64 20 77 69 64 74 68 2E 20 49 66 20 74 68 65 20 d width. If the
022D80: 77 69 64 74 68 90 20 69 73 20 74 6F 6F 20 73 6D width. is too sm
022D90: 61 6C 6C 20 74 68 65 20 6E 75 6D 62 65 72 20 0D all the number .
022DA0: 8A 09 69 73 20 70 72 69 6E 74 65 64 20 69 6E 90 ..is printed in.
022DB0: 20 74 68 65 90 20 6D 69 6E 69 6D 75 6D 90 20 77 the. minimum. w
022DC0: 69 64 74 68 2E 90 20 54 68 65 20 6E 75 6D 62 65 idth.. The numbe
022DD0: 72 20 6F 75 74 70 75 74 20 0D 8A 09 77 69 6C 6C r output ...will
022DE0: 20 62 65 20 69 6E 20 74 68 65 20 72 61 6E 67 65 be in the range
022DF0: 20 28 30 2C 36 35 35 33 35 29 2E 0D 0A 0D 0A 52 (0,65535).....R
022E00: 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D eturns:.Nothing.
022E10: 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 ...Location:.CLI
022E20: 42 48 44 52 31 2C 20 41 4C 49 42 48 44 52 31 0D BHDR1, ALIBHDR1.
022E30: 0A 3E 70 61 0D 0A E2 28 62 29 20 49 6E 70 75 74 .>pa...(b) Input
022E40: 20 52 6F 75 74 69 6E 65 73 E2 0D 0A 0D 0A 0D 0A Routines.......
022E50: 52 44 43 48 28 29 0D 0A 0D 0A 45 66 66 65 63 74 RDCH()....Effect
022E60: 3A 09 52 65 61 64 73 20 61 20 63 68 61 72 61 63 :.Reads a charac
022E70: 74 65 72 20 66 72 6F 6D 20 74 68 65 20 63 75 72 ter from the cur
022E80: 72 65 6E 74 20 69 6E 70 75 74 20 73 74 72 65 61 rent input strea
022E90: 6D 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 m.....Returns:.T
022EA0: 68 65 20 63 68 61 72 61 63 74 65 72 20 72 65 61 he character rea
022EB0: 64 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 d.....Location:.
022EC0: 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 CLIBHDR, ALIBHDR
022ED0: 0D 0A 0D 0A 0D 0A 52 45 41 44 4E 28 29 0D 0A 0D ......READN()...
022EE0: 0A 45 66 66 65 63 74 3A 09 52 65 61 64 73 20 61 .Effect:.Reads a
022EF0: 20 64 65 63 69 6D 61 6C 20 69 6E 74 65 67 65 72 decimal integer
022F00: 69 6E 67 90 20 74 68 65 20 63 75 72 72 65 6E 74 ing. the current
022F10: 20 0D 8A 09 69 6E 70 75 74 20 73 74 72 65 61 6D ...input stream
022F20: 2E 20 5A 65 72 6F 20 6D 65 61 6E 73 90 20 74 68 . Zero means. th
022F30: 65 90 20 6B 65 79 62 6F 61 72 64 20 69 73 20 74 e. keyboard is t
022F40: 68 65 20 63 75 72 72 65 6E 74 20 0D 8A 09 69 6E he current ...in
022F50: 70 75 74 20 73 74 72 65 61 6D 2C 20 61 6E 79 20 put stream, any
022F60: 6F 74 68 65 72 90 20 76 61 6C 75 65 90 20 69 73 other. value. is
022F70: 90 20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66 . the address of
022F80: 20 74 68 65 20 0D 8A 09 62 75 66 66 65 72 20 61 the ...buffer a
022F90: 73 73 6F 63 69 61 74 65 64 20 77 69 74 68 20 74 ssociated with t
022FA0: 68 65 90 20 66 69 6C 65 90 20 66 72 6F 6D 90 20 he. file. from.
022FB0: 77 68 69 63 68 20 69 6E 70 75 74 20 69 73 20 0D which input is .
022FC0: 8A 09 62 65 69 6E 67 20 74 61 6B 65 6E 2E 0D 0A ..being taken...
022FD0: 0D 0A 52 65 74 75 72 6E 73 3A 09 54 68 65 20 63 ..Returns:.The c
022FE0: 75 72 72 65 6E 74 20 69 6E 70 75 74 20 73 74 72 urrent input str
022FF0: 65 61 6D 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A eam....Location:
023000: 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 44 .CLIBHDR, ALIBHD
023010: 52 0D 0A 0D 0A 0D 0A 4F 55 54 50 55 54 28 29 0D R......OUTPUT().
023020: 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 69 73 20 ...Effect:.This
023030: 77 69 6C 6C 90 20 72 65 74 75 72 6E 90 20 61 90 will. return. a.
023040: 20 76 61 6C 75 65 90 20 72 65 70 72 65 73 65 6E value. represen
023050: 74 69 6E 67 90 20 74 68 65 20 63 75 72 72 65 6E ting. the curren
023060: 74 20 0D 8A 09 6F 75 74 70 75 74 20 73 74 72 65 t ...output stre
023070: 61 6D 2E 90 20 5A 65 72 6F 90 20 6D 65 61 6E 73 am.. Zero. means
023080: 90 20 74 68 65 90 20 56 44 55 90 20 69 73 90 20 . the. VDU. is.
023090: 74 68 65 20 63 75 72 72 65 6E 74 20 0D 8A 09 73 the current ...s
0230A0: 74 72 65 61 6D 2C 20 6F 6E 65 20 6D 65 61 6E 73 tream, one means
0230B0: 20 74 68 65 90 20 70 72 69 6E 74 65 72 90 20 69 the. printer. i
0230C0: 73 20 74 68 65 20 63 75 72 72 65 6E 74 20 73 74 s the current st
0230D0: 72 65 61 6D 2C 20 0D 8A 09 61 6E 79 90 20 6F 74 ream, ...any. ot
0230E0: 68 65 72 90 20 76 61 6C 75 65 90 20 69 73 90 90 her. value. is..
0230F0: 20 74 68 65 90 90 20 61 64 64 72 65 73 73 90 20 the.. address.
023100: 20 66 72 6F 6D 20 74 68 65 20 63 75 72 72 65 6E from the curren
023110: 74 20 69 6E 70 75 74 20 73 74 72 65 61 6D 2E 20 t input stream.
023120: 0D 8A 09 4C 65 61 64 69 6E 67 20 73 70 61 63 65 ...Leading space
023130: 73 20 61 72 65 20 69 67 6E 6F 72 65 64 2E 0D 0A s are ignored...
023140: 0D 0A 52 65 74 75 72 6E 73 3A 09 54 68 65 20 6E ..Returns:.The n
023150: 75 6D 62 65 72 20 72 65 61 64 2E 0D 0A 0D 0A 4C umber read.....L
023160: 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 ocation:.CLIBHDR
023170: 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 0D 0A 52 , ALIBHDR......R
023180: 45 41 44 53 28 73 74 72 69 6E 67 29 0D 0A 0D 0A EADS(string)....
023190: 45 66 66 65 63 74 3A 09 41 20 73 74 72 69 6E 67 Effect:.A string
0231A0: 20 69 73 20 72 65 61 64 90 20 66 72 6F 6D 90 20 is read. from.
0231B0: 74 68 65 90 20 63 75 72 72 65 6E 74 20 69 6E 70 the. current inp
0231C0: 75 74 20 73 74 72 65 61 6D 2E 20 54 68 65 20 0D ut stream. The .
0231D0: 8A 09 70 61 72 61 6D 65 74 65 72 20 69 73 20 61 ..parameter is a
0231E0: 90 20 76 65 63 74 6F 72 90 20 69 6E 90 20 77 68 . vector. in. wh
0231F0: 69 63 68 90 20 74 68 65 90 20 73 74 72 69 6E 67 ich. the. string
023200: 20 77 69 6C 6C 20 62 65 20 0D 8A 09 73 74 6F 72 will be ...stor
023210: 65 64 2E 20 54 68 65 20 73 74 72 69 6E 67 20 6D ed. The string m
023220: 75 73 74 90 20 62 65 90 20 74 65 72 6D 69 6E 61 ust. be. termina
023230: 74 65 64 90 20 62 79 20 61 20 63 61 72 72 69 61 ted. by a carria
023240: 67 65 20 0D 8A 09 72 65 74 75 72 6E 2E 20 54 68 ge ...return. Th
023250: 65 20 44 45 4C 2C 20 6F 72 90 20 7B 44 45 4C 90 e DEL, or. {DEL.
023260: 20 6B 65 79 90 20 6D 61 79 90 20 62 65 20 75 73 key. may. be us
023270: 65 64 20 74 6F 20 64 65 6C 65 74 65 20 0D 8A 09 ed to delete ...
023280: 62 61 63 6B 77 61 72 64 73 2E 20 49 66 20 45 53 backwards. If ES
023290: 43 20 6F 72 20 53 54 4F 50 90 20 69 73 90 20 70 C or STOP. is. p
0232A0: 72 65 73 73 65 64 20 77 68 65 6E 20 74 68 65 20 ressed when the
0232B0: 63 75 72 73 6F 72 20 0D 8A 09 69 73 20 6E 6F 74 cursor ...is not
0232C0: 20 61 74 20 74 68 65 20 73 74 61 72 74 20 6F 66 at the start of
0232D0: 90 20 74 68 65 20 73 74 72 69 6E 67 2C 20 61 6C . the string, al
0232E0: 6C 20 63 68 61 72 61 63 74 65 72 73 20 61 72 65 l characters are
0232F0: 20 0D 8A 09 64 65 6C 65 74 65 64 2E 20 49 66 20 ...deleted. If
023300: 6F 66 90 20 74 68 65 90 20 62 75 66 66 65 72 20 of. the. buffer
023310: 0D 8A 09 61 73 73 6F 63 69 61 74 65 64 20 77 69 ...associated wi
023320: 74 68 20 74 68 65 90 20 66 69 6C 65 90 20 74 6F th the. file. to
023330: 90 20 77 68 69 63 68 90 20 6F 75 74 70 75 74 90 . which. output.
023340: 20 69 73 20 62 65 69 6E 67 20 0D 8A 09 73 65 6E is being ...sen
023350: 74 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 t.....Returns:.T
023360: 68 65 20 63 75 72 72 65 6E 74 20 6F 75 74 70 75 he current outpu
023370: 74 20 73 74 72 65 61 6D 0D 0A 0D 0A 4C 6F 63 61 t stream....Loca
023380: 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 tion:.CLIBHDR, A
023390: 4C 49 42 48 44 52 0D 0A 0D 0A 0D 0A 53 45 4C 45 LIBHDR......SELE
0233A0: 43 54 49 4E 50 55 54 28 73 74 72 65 61 6D 29 0D CTINPUT(stream).
0233B0: 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 69 73 20 ...Effect:.This
0233C0: 69 73 20 75 73 65 64 20 74 6F 90 20 63 68 61 6E is used to. chan
0233D0: 67 65 90 20 74 68 65 90 20 63 75 72 72 65 6E 74 ge. the. current
0233E0: 6C 79 20 73 65 6C 65 63 74 65 64 20 69 6E 70 75 ly selected inpu
0233F0: 74 20 0D 8A 09 73 74 72 65 61 6D 20 28 69 2E 65 t ...stream (i.e
023400: 2E 20 74 68 61 74 20 75 73 65 64 90 20 62 79 90 . that used. by.
023410: 20 72 64 63 68 29 2E 90 20 41 90 20 73 74 72 65 rdch).. A. stre
023420: 61 6D 20 76 61 6C 75 65 20 6F 66 20 0D 8A 09 7A am value of ...z
023430: 65 72 6F 20 73 65 6C 65 63 74 73 20 74 68 65 20 ero selects the
023440: 6B 65 79 62 6F 61 72 64 2E 20 41 6E 79 20 6F 74 keyboard. Any ot
023450: 68 65 72 20 76 61 6C 75 65 20 6D 75 73 74 20 62 her value must b
023460: 65 20 74 68 65 20 0D 8A 09 61 64 64 72 65 73 73 e the ...address
023470: 20 6F 66 20 74 68 65 90 20 62 75 66 66 65 72 90 of the. buffer.
023480: 20 61 73 73 6F 63 69 61 74 65 64 90 20 77 69 74 associated. wit
023490: 68 90 20 61 90 20 66 69 6C 65 2C 20 61 6E 64 20 h. a. file, and
0234A0: 0D 8A 09 63 61 75 73 65 73 20 69 6E 70 75 74 20 ...causes input
0234B0: 74 6F 20 62 65 20 74 61 6B 65 6E 20 66 72 6F 6D to be taken from
0234C0: 20 74 68 61 74 20 66 69 6C 65 2E 20 54 68 65 20 that file. The
0234D0: 66 69 6C 65 20 6D 75 73 74 20 0D 8A 09 70 72 65 file must ...pre
0234E0: 76 69 6F 75 73 6C 79 20 68 61 76 65 20 62 65 65 viously have bee
0234F0: 6E 20 6F 70 65 6E 65 64 20 75 73 69 6E 67 20 46 n opened using F
023500: 45 53 43 20 6F 72 20 53 54 4F 50 20 69 73 90 20 ESC or STOP is.
023510: 70 72 65 73 73 65 64 20 77 68 65 6E 20 74 68 65 pressed when the
023520: 20 63 75 72 73 6F 72 20 69 73 20 0D 8A 09 61 74 cursor is ...at
023530: 20 74 68 65 20 73 74 61 72 74 20 6F 66 20 74 68 the start of th
023540: 65 20 73 74 72 69 6E 67 2C 20 61 20 73 74 72 69 e string, a stri
023550: 6E 67 20 6F 66 20 7A 65 72 6F 20 6C 65 6E 67 74 ng of zero lengt
023560: 68 20 69 73 20 0D 8A 09 72 65 74 75 72 6E 65 64 h is ...returned
023570: 2E 20 54 68 65 20 73 74 72 69 6E 67 20 69 73 90 . The string is.
023580: 20 6C 69 6D 69 74 65 64 90 20 74 6F 90 20 61 90 limited. to. a.
023590: 20 6C 65 6E 67 74 68 20 6F 66 20 32 35 35 20 0D length of 255 .
0235A0: 8A 09 62 79 74 65 73 2C 20 73 6F 20 74 68 65 20 ..bytes, so the
0235B0: 76 65 63 74 6F 72 90 20 73 74 72 69 6E 67 90 20 vector. string.
0235C0: 73 68 6F 75 6C 64 90 20 62 65 90 20 31 32 38 20 should. be. 128
0235D0: 77 6F 72 64 73 20 69 6E 20 0D 8A 09 6C 65 6E 67 words in ...leng
0235E0: 74 68 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 th.....Returns:.
0235F0: 46 41 4C 53 45 20 69 66 20 45 53 43 20 6F 72 20 FALSE if ESC or
023600: 53 54 4F 50 20 70 72 65 73 73 65 64 2C 20 6F 74 STOP pressed, ot
023610: 68 65 72 77 69 73 65 20 54 52 55 45 0D 0A 0D 0A herwise TRUE....
023620: 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 Location:.CLIBHD
023630: 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 45 78 R, ALIBHDR....Ex
023640: 61 6D 70 6C 65 3A 09 4C 45 54 20 69 6E 70 75 74 ample:.LET input
023650: 20 3D 20 56 45 43 20 31 32 38 0D 0A 09 55 4E 4C = VEC 128...UNL
023660: 45 53 53 20 72 65 61 64 73 28 69 6E 70 75 74 29 ESS reads(input)
023670: 20 44 4F 20 65 72 72 6F 72 28 22 45 73 63 61 70 DO error("Escap
023680: 65 22 29 0D 0A 0D 0A 3E 70 61 0D 0A 53 54 52 54 e")....>pa..STRT
023690: 4F 4E 55 4D 28 73 74 72 69 6E 67 2C 62 61 73 65 ONUM(string,base
0236A0: 29 0D 0A 09 0D 0A 45 66 66 65 63 74 3A 09 54 68 ).....Effect:.Th
0236B0: 69 73 20 66 75 6E 63 74 69 6F 6E 20 74 61 6B 65 is function take
0236C0: 73 20 61 90 20 73 74 72 69 6E 67 90 20 61 73 90 s a. string. as.
0236D0: 20 69 74 73 20 66 69 72 73 74 20 70 61 72 61 6D its first param
0236E0: 65 74 65 72 20 0D 8A 09 61 6E 64 20 74 68 65 20 eter ...and the
0236F0: 62 61 73 65 20 6F 66 20 74 68 65 20 72 65 73 75 base of the resu
023700: 49 4E 44 49 4E 50 55 54 2E 0D 0A 0D 0A 52 65 74 INDINPUT.....Ret
023710: 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D 0A 0D urns:.Nothing...
023720: 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 .Location:.CLIBH
023730: 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 3E DR, ALIBHDR....>
023740: 70 61 0D 0A 53 45 4C 45 43 54 4F 55 54 50 55 54 pa..SELECTOUTPUT
023750: 28 73 74 72 65 61 6D 29 0D 0A 0D 0A 45 66 66 65 (stream)....Effe
023760: 63 74 3A 09 54 68 69 73 20 69 73 20 75 73 65 64 ct:.This is used
023770: 20 74 6F 90 20 63 68 61 6E 67 65 90 20 74 68 65 to. change. the
023780: 20 63 75 72 72 65 6E 74 6C 79 20 73 65 6C 65 63 currently selec
023790: 74 65 64 20 6F 75 74 70 75 74 20 0D 8A 09 73 74 ted output ...st
0237A0: 72 65 61 6D 20 28 69 2E 65 2E 20 74 68 61 74 20 ream (i.e. that
0237B0: 75 73 65 64 20 62 79 20 77 72 63 68 2C 20 77 72 used by wrch, wr
0237C0: 69 74 65 66 20 65 74 63 2E 29 2E 20 41 20 73 74 itef etc.). A st
0237D0: 72 65 61 6D 20 0D 8A 09 76 61 6C 75 65 20 6F 66 ream ...value of
0237E0: 20 7A 65 72 6F 20 73 65 6C 65 63 74 73 20 74 68 zero selects th
0237F0: 65 20 56 44 55 2C 90 20 61 20 76 61 6C 75 65 20 e VDU,. a value
023800: 6F 66 20 6F 6E 65 20 73 65 6C 65 63 74 73 20 0D of one selects .
023810: 8A 09 74 68 65 20 70 72 69 6E 74 65 72 2E 20 41 ..the printer. A
023820: 6E 79 20 6F 74 68 65 72 90 20 76 61 6C 75 65 90 ny other. value.
023830: 20 6D 75 73 74 90 20 62 65 20 74 68 65 20 61 64 must. be the ad
023840: 64 72 65 73 73 20 6F 66 20 0D 8A 09 74 68 65 20 dress of ...the
023850: 62 75 66 66 65 72 20 61 73 73 6F 63 69 61 74 65 buffer associate
023860: 64 20 77 69 74 68 90 20 61 90 20 66 69 6C 65 2C d with. a. file,
023870: 20 61 6E 64 20 63 61 75 73 65 73 20 6F 75 74 70 and causes outp
023880: 75 74 20 0D 8A 09 74 6F 20 62 65 20 73 65 6E 74 ut ...to be sent
023890: 90 20 74 6F 90 20 74 68 61 74 90 20 66 69 6C 65 . to. that. file
0238A0: 2E 90 20 54 68 65 90 20 66 69 6C 65 90 20 6D 75 .. The. file. mu
0238B0: 73 74 20 68 61 76 65 20 62 65 65 6E 20 0D 8A 09 st have been ...
0238C0: 70 72 65 76 69 6F 75 73 6C 79 20 6F 70 65 6E 65 previously opene
0238D0: 64 20 75 73 69 6E 67 20 46 49 4E 44 4F 55 54 50 d using FINDOUTP
0238E0: 55 54 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 UT.....Returns:.
0238F0: 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 Nothing....Locat
023900: 6C 74 90 20 61 73 20 69 74 73 20 73 65 63 6F 6E lt. as its secon
023910: 64 2E 20 49 74 20 63 6F 6E 76 65 72 74 73 20 0D d. It converts .
023920: 8A 09 74 68 65 20 73 74 72 69 6E 67 20 74 6F 20 ..the string to
023930: 61 20 6E 75 6D 62 65 72 20 69 6E 90 20 74 68 61 a number in. tha
023940: 74 20 62 61 73 65 20 61 6E 64 20 72 65 74 75 72 t base and retur
023950: 6E 73 20 69 74 20 61 73 20 0D 8A 09 74 68 65 20 ns it as ...the
023960: 72 65 73 75 6C 74 2E 0D 0A 0D 0A 52 65 74 75 72 result.....Retur
023970: 6E 73 3A 09 54 68 65 20 6E 75 6D 62 65 72 20 6F ns:.The number o
023980: 62 74 61 69 6E 65 64 20 62 79 20 74 68 65 20 63 btained by the c
023990: 6F 6E 76 65 72 73 69 6F 6E 0D 0A 0D 0A 4C 6F 63 onversion....Loc
0239A0: 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 ation:.CLIBHDR,
0239B0: 41 4C 49 42 48 44 52 0D 0A 0D 0A 45 78 61 6D 70 ALIBHDR....Examp
0239C0: 6C 65 3A 09 41 20 52 45 41 44 58 20 66 75 6E 63 le:.A READX func
0239D0: 74 69 6F 6E 90 20 74 6F 90 20 69 6E 70 75 74 90 tion. to. input.
0239E0: 20 61 90 20 68 65 78 61 64 65 63 69 6D 61 6C 90 a. hexadecimal.
0239F0: 20 6E 75 6D 62 65 72 20 69 73 20 0D 8A 09 65 61 number is ...ea
023A00: 73 69 6C 79 20 77 72 69 74 74 65 6E 3A 0D 0A 09 sily written:...
023A10: 09 4C 45 54 20 72 65 61 64 78 28 29 20 3D 20 56 .LET readx() = V
023A20: 41 4C 4F 46 0D 0A 0D 0A 09 09 24 28 20 0D 0A 09 ALOF......$( ...
023A30: 20 20 20 20 20 20 20 20 20 20 20 4C 45 54 20 73 LET s
023A40: 74 72 69 6E 67 20 3D 20 56 45 43 20 31 32 38 0D tring = VEC 128.
023A50: 0A 09 20 20 20 20 20 20 20 20 20 20 20 72 65 61 .. rea
023A60: 64 73 28 73 74 72 69 6E 67 29 0D 0A 09 20 20 20 ds(string)...
023A70: 20 20 20 20 20 20 20 20 52 45 53 55 4C 54 49 53 RESULTIS
023A80: 20 73 74 72 74 6F 6E 75 6D 28 73 74 72 69 6E 67 strtonum(string
023A90: 2C 31 36 29 0D 0A 09 09 24 29 0D 0A 0D 0A 0D 0A ,16)....$)......
023AA0: 55 4E 52 44 43 48 28 29 0D 0A 0D 0A 45 66 66 65 UNRDCH()....Effe
023AB0: 63 74 3A 09 50 75 74 73 20 62 61 63 6B 20 74 68 ct:.Puts back th
023AC0: 65 20 6C 61 73 74 90 20 63 68 61 72 61 63 74 65 e last. characte
023AD0: 72 90 20 72 65 61 64 20 66 72 6F 6D 20 74 68 65 r. read from the
023AE0: 20 63 75 72 72 65 6E 74 6C 79 20 0D 8A 09 73 65 currently ...se
023AF0: 6C 65 63 74 65 64 20 73 74 72 65 61 6D 2E 20 54 lected stream. T
023B00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
023B10: 1E 00 01 00 02 09 50 E5 1E 00 C1 02 00 00 00 02 ......P.........
023B20: 1E 00 C6 02 00 00 00 02 1E 00 C2 02 00 00 00 02 ................
023B30: 1E 00 C7 02 00 00 00 02 1E 00 C3 02 00 00 00 02 ................
023B40: 1E 00 C8 02 00 00 00 02 1E 00 C4 02 00 00 00 02 ................
023B50: 1E 00 C9 02 00 00 00 02 1E 00 C5 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: 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C ion:.CLIBHDR, AL
023C10: 49 42 48 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C 65 IBHDR....Example
023C20: 73 3A 09 73 65 6C 65 63 74 6F 75 74 70 75 74 28 s:.selectoutput(
023C30: 6F 75 74 66 69 6C 65 62 75 66 29 0D 0A 09 73 65 outfilebuf)...se
023C40: 6C 65 63 74 6F 75 74 70 75 74 28 70 72 69 6E 74 lectoutput(print
023C50: 73 74 72 65 61 6D 29 0D 0A 0D 0A 0D 0A 0D 0A 0D stream).........
023C60: 0A E2 28 64 29 20 46 69 6C 65 20 49 2F 4F 20 52 ..(d) File I/O R
023C70: 6F 75 74 69 6E 65 73 E2 0D 0A 0D 0A 0D 0A 45 4E outines.......EN
023C80: 44 52 45 41 44 28 29 0D 0A 0D 0A 45 66 66 65 63 DREAD()....Effec
023C90: 74 3A 09 54 68 65 20 63 75 72 72 65 6E 74 6C 79 t:.The currently
023CA0: 20 73 65 6C 65 63 74 65 64 20 69 6E 70 75 74 20 selected input
023CB0: 73 74 72 65 61 6D 20 69 73 20 63 6C 6F 73 65 64 stream is closed
023CC0: 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 52 .....Returns:.TR
023CD0: 55 45 20 69 66 20 74 68 65 90 20 66 69 6C 65 90 UE if the. file.
023CE0: 20 77 61 73 90 20 63 6C 6F 73 65 64 90 20 73 75 was. closed. su
023CF0: 63 63 65 73 73 66 75 6C 6C 79 2C 20 46 41 4C 53 ccessfully, FALS
023D00: 45 20 69 66 20 0D 8A 09 6E 6F 74 2E 0D 0A 0D 0A E if ...not.....
023D10: 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 Location:.CLIBHD
023D20: 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 0D 0A R, ALIBHDR......
023D30: 45 4E 44 57 52 49 54 45 28 29 0D 0A 0D 0A 45 66 ENDWRITE()....Ef
023D40: 66 65 63 74 3A 09 54 68 65 20 63 75 72 72 65 6E fect:.The curren
023D50: 74 6C 79 20 73 65 6C 65 63 74 65 64 20 6F 75 74 tly selected out
023D60: 70 75 74 20 73 74 72 65 61 6D 90 20 69 73 20 63 put stream. is c
023D70: 6C 6F 73 65 64 2E 20 49 74 20 69 73 20 0D 8A 09 losed. It is ...
023D80: 65 73 73 65 6E 74 69 61 6C 20 74 68 61 74 20 65 essential that e
023D90: 69 74 68 65 72 20 74 68 69 73 20 72 6F 75 74 69 ither this routi
023DA0: 6E 65 20 6F 72 20 43 4C 4F 53 45 4F 55 54 20 69 ne or CLOSEOUT i
023DB0: 73 20 75 73 65 64 20 0D 8A 09 61 66 74 65 72 20 s used ...after
023DC0: 77 72 69 74 69 6E 67 20 74 6F 20 61 20 66 69 6C writing to a fil
023DD0: 65 2C 20 61 73 20 69 74 20 63 61 75 73 65 73 20 e, as it causes
023DE0: 74 68 65 20 6C 61 73 74 20 73 65 63 74 69 6F 6E the last section
023DF0: 20 0D 8A 09 6F 66 20 64 61 74 61 20 74 6F 20 62 ...of data to b
023E00: 6E 64 69 6E 70 75 74 28 66 69 6C 65 6E 61 6D 65 ndinput(filename
023E10: 2C 62 75 66 66 65 72 29 20 54 48 45 4E 0D 0A 09 ,buffer) THEN...
023E20: 09 24 28 0D 0A 09 09 20 20 4C 45 54 20 63 68 61 .$(.... LET cha
023E30: 72 20 3D 20 3F 0D 0A 09 09 20 20 73 65 6C 65 63 r = ?.... selec
023E40: 74 69 6E 70 75 74 28 62 75 66 66 65 72 29 0D 0A tinput(buffer)..
023E50: 09 09 20 20 63 68 61 72 20 3A 3D 20 72 64 63 68 .. char := rdch
023E60: 28 29 0D 0A 09 09 20 20 55 4E 54 49 4C 20 63 68 ().... UNTIL ch
023E70: 61 72 20 3D 20 73 6F 66 74 65 6F 66 63 68 20 4C ar = softeofch L
023E80: 4F 47 4F 52 20 63 68 61 72 20 3D 20 65 6E 64 73 OGOR char = ends
023E90: 74 72 65 61 6D 63 68 20 44 4F 0D 0A 09 09 20 20 treamch DO....
023EA0: 20 20 24 28 20 77 72 63 68 28 63 68 61 72 29 20 $( wrch(char)
023EB0: 3B 20 63 68 61 72 20 3A 3D 20 72 64 63 68 28 29 ; char := rdch()
023EC0: 20 24 29 0D 0A 09 09 20 20 65 6E 64 72 65 61 64 $).... endread
023ED0: 28 62 75 66 66 65 72 29 0D 0A 09 09 20 20 73 65 (buffer).... se
023EE0: 6C 65 63 74 69 6E 70 75 74 28 76 64 75 73 74 72 lectinput(vdustr
023EF0: 65 61 6D 29 0D 0A 09 09 24 29 0D 0A 09 09 45 4C eam)....$)....EL
023F00: 53 45 20 77 72 69 74 65 66 28 22 4E 6F 20 6D 65 SE writef("No me
023F10: 73 73 61 67 65 73 2A 4E 22 29 0D 0A 0D 0A 0D 0A ssages*N")......
023F20: 54 68 69 73 20 77 69 6C 6C 20 61 73 6B 20 66 6F This will ask fo
023F30: 72 20 61 90 20 66 69 6C 65 90 20 6E 61 6D 65 90 r a. file. name.
023F40: 20 61 6E 64 90 20 74 68 65 6E 2C 90 20 69 66 20 and. then,. if
023F50: 74 68 61 74 20 66 69 6C 65 20 65 78 69 73 74 73 that file exists
023F60: 2C 20 77 69 6C 6C 20 0D 8A 70 72 69 6E 74 20 6F , will ..print o
023F70: 75 74 20 74 68 65 20 63 6F 6E 74 65 6E 74 73 20 ut the contents
023F80: 6F 66 20 69 74 2E 0D 0A 3E 2D 2D 2D 2D 2D 2D 2D of it...>-------
023F90: 2D 2D 2D 2D 2D 2D 2D 20 4C 2D 2D 2D 2D 2D 2D 2D ------- L-------
023FA0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
023FB0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
023FC0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A !-------!----R..
023FD0: 3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D >---!-----!-----
023FE0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
023FF0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
024000: 65 20 77 72 69 74 74 65 6E 20 74 6F 20 74 68 65 e written to the
024010: 20 64 69 73 63 2E 0D 0A 0D 0A 52 65 74 75 72 6E disc.....Return
024020: 73 3A 09 54 52 55 45 20 69 66 20 74 68 65 20 66 s:.TRUE if the f
024030: 69 6C 65 20 77 61 73 20 63 6C 6F 73 65 64 20 73 ile was closed s
024040: 75 63 63 65 73 73 66 75 6C 6C 79 2C 20 65 6C 73 uccessfully, els
024050: 65 20 46 41 4C 53 45 2E 0D 0A 0D 0A 4C 6F 63 61 e FALSE.....Loca
024060: 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 tion:.CLIBHDR, A
024070: 4C 49 42 48 44 52 0D 0A 0D 0A 3E 70 61 0D 0A 46 LIBHDR....>pa..F
024080: 49 4E 44 49 4E 50 55 54 28 66 69 6C 65 6E 61 6D INDINPUT(filenam
024090: 65 2C 62 75 66 66 65 72 29 0D 0A 0D 0A 45 66 66 e,buffer)....Eff
0240A0: 65 63 74 3A 09 54 6F 20 6F 70 65 6E 20 61 6E 20 ect:.To open an
0240B0: 69 6E 70 75 74 20 66 69 6C 65 2E 20 54 68 65 20 input file. The
0240C0: 66 69 72 73 74 20 70 61 72 61 6D 65 74 65 72 20 first parameter
0240D0: 69 73 20 61 20 73 74 72 69 6E 67 20 0D 8A 09 67 is a string ...g
0240E0: 69 76 69 6E 67 20 74 68 65 20 6E 61 6D 65 20 6F iving the name o
0240F0: 66 20 74 68 65 20 66 69 6C 65 2E 20 54 68 65 20 f the file. The
024100: 73 65 63 6F 6E 64 20 70 61 72 61 6D 65 74 65 72 second parameter
024110: 20 69 73 20 61 20 0D 8A 09 76 65 63 74 6F 72 20 is a ...vector
024120: 77 68 69 63 68 20 77 69 6C 6C 20 62 65 90 20 75 which will be. u
024130: 73 65 64 90 20 66 6F 72 90 20 74 68 65 20 66 69 sed. for. the fi
024140: 6C 65 20 62 75 66 66 65 72 2E 20 54 68 69 73 20 le buffer. This
024150: 0D 8A 09 76 65 63 74 6F 72 20 73 68 6F 75 6C 64 ...vector should
024160: 20 62 65 20 38 32 90 20 77 6F 72 64 73 90 20 6C be 82. words. l
024170: 6F 6E 67 90 20 75 6E 64 65 72 90 20 43 50 2F 4D ong. under. CP/M
024180: 20 61 6E 64 20 31 30 32 34 20 0D 8A 09 77 6F 72 and 1024 ...wor
024190: 64 73 20 6C 6F 6E 67 20 75 6E 64 65 72 20 41 4D ds long under AM
0241A0: 53 44 4F 53 2E 20 54 68 65 90 20 66 69 6C 65 6E SDOS. The. filen
0241B0: 61 6D 65 20 6D 75 73 74 20 62 65 20 61 20 76 61 ame must be a va
0241C0: 6C 69 64 20 0D 8A 09 43 50 2F 4D 20 6F 72 90 20 lid ...CP/M or.
0241D0: 41 4D 53 44 4F 53 90 20 66 69 6C 65 6E 61 6D 65 AMSDOS. filename
0241E0: 2C 90 20 61 6E 64 90 20 6D 61 79 90 20 69 6E 63 ,. and. may. inc
0241F0: 6C 75 64 65 90 20 61 20 64 72 69 76 65 20 0D 8A lude. a drive ..
024200: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
024210: 21 2D 2D 2D 2D 52 0D 0A 3E 70 61 0D 0A E2 28 65 !----R..>pa...(e
024220: 29 20 54 68 65 20 50 72 69 6D 69 74 69 76 65 20 ) The Primitive
024230: 49 2F 4F 20 4F 70 65 72 61 74 69 6F 6E 73 E2 0D I/O Operations..
024240: 0A 0D 0A 09 54 68 65 20 6C 69 62 72 61 72 79 20 ....The library
024250: 63 6F 6E 74 61 69 6E 73 90 20 70 72 69 6D 69 74 contains. primit
024260: 69 76 65 90 20 72 6F 75 74 69 6E 65 73 90 20 66 ive. routines. f
024270: 6F 72 90 20 72 65 61 64 69 6E 67 2F 77 72 69 74 or. reading/writ
024280: 69 6E 67 20 74 6F 20 0D 8A 66 69 6C 65 73 2C 20 ing to ..files,
024290: 72 65 61 64 69 6E 67 2F 77 72 69 74 69 6E 67 20 reading/writing
0242A0: 74 6F 20 74 68 65 90 20 56 44 55 2C 90 20 61 6E to the. VDU,. an
0242B0: 64 90 20 77 72 69 74 69 6E 67 90 20 74 6F 20 74 d. writing. to t
0242C0: 68 65 20 70 72 69 6E 74 65 72 2E 20 54 68 65 20 he printer. The
0242D0: 0D 8A 68 69 67 68 65 72 20 6C 65 76 65 6C 20 52 ..higher level R
0242E0: 44 43 48 20 61 6E 64 20 57 52 43 48 20 72 6F 75 DCH and WRCH rou
0242F0: 74 69 6E 65 73 20 73 77 69 74 63 68 20 62 65 74 tines switch bet
024300: 77 65 65 6E 20 74 68 65 73 65 20 72 6F 75 74 69 ween these routi
024310: 6E 65 73 20 77 68 65 6E 20 0D 8A 63 61 6C 6C 65 nes when ..calle
024320: 64 20 75 70 6F 6E 20 74 6F 20 64 6F 90 20 73 6F d upon to do. so
024330: 90 20 62 79 90 20 53 45 4C 45 43 54 49 4E 50 55 . by. SELECTINPU
024340: 54 90 20 6F 72 90 20 53 45 4C 45 43 54 4F 55 54 T. or. SELECTOUT
024350: 50 55 54 2E 90 20 49 74 20 69 73 20 71 75 69 74 PUT.. It is quit
024360: 65 20 0D 8A 70 6F 73 73 69 62 6C 65 20 74 6F 20 e ..possible to
024370: 75 73 65 20 74 68 65 20 70 72 69 6D 69 74 69 76 use the primitiv
024380: 65 90 20 72 6F 75 74 69 6E 65 73 90 20 73 65 70 e. routines. sep
024390: 61 72 61 74 65 6C 79 20 66 72 6F 6D 20 52 44 43 arately from RDC
0243A0: 48 2F 57 52 43 48 20 61 6E 64 20 0D 8A 73 6F 20 H/WRCH and ..so
0243B0: 72 65 61 64 2F 77 72 69 74 65 20 66 69 6C 65 73 read/write files
0243C0: 20 61 6E 64 20 74 68 65 90 20 73 63 72 65 65 6E and the. screen
0243D0: 2F 6B 65 79 62 6F 61 72 64 90 20 61 74 20 74 68 /keyboard. at th
0243E0: 65 20 73 61 6D 65 20 74 69 6D 65 20 77 69 74 68 e same time with
0243F0: 6F 75 74 20 0D 8A 75 73 69 6E 67 20 53 45 4C 45 out ..using SELE
024400: 09 73 70 65 63 69 66 69 65 72 2E 0D 0A 0D 0A 52 .specifier.....R
024410: 65 74 75 72 6E 73 3A 09 49 66 20 74 68 65 20 66 eturns:.If the f
024420: 69 6C 65 20 77 61 73 20 6F 70 65 6E 65 64 90 20 ile was opened.
024430: 73 75 63 63 65 73 73 66 75 6C 6C 79 2C 20 74 68 successfully, th
024440: 65 20 76 61 6C 75 65 20 27 54 52 55 45 27 20 0D e value 'TRUE' .
024450: 8A 09 69 73 20 72 65 74 75 72 6E 65 64 2C 20 6F ..is returned, o
024460: 74 68 65 72 77 69 73 65 20 27 46 41 4C 53 45 27 therwise 'FALSE'
024470: 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 .....Location:.C
024480: 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D LIBHDR, ALIBHDR.
024490: 0A 0D 0A 45 78 61 6D 70 6C 65 3A 09 4C 45 54 20 ...Example:.LET
0244A0: 69 6E 62 75 66 20 3D 20 56 45 43 20 38 32 0D 0A inbuf = VEC 82..
0244B0: 09 54 45 53 54 20 66 69 6E 64 69 6E 70 75 74 28 .TEST findinput(
0244C0: 22 41 3A 6E 61 6D 65 73 2E 64 74 61 22 2C 69 6E "A:names.dta",in
0244D0: 62 75 66 29 20 0D 0A 09 54 48 45 4E 20 73 65 6C buf) ...THEN sel
0244E0: 65 63 74 69 6E 70 75 74 28 69 6E 62 75 66 29 0D ectinput(inbuf).
0244F0: 0A 09 45 4C 53 45 20 65 72 72 6F 72 28 22 43 61 ..ELSE error("Ca
024500: 6E 6E 6F 74 20 6F 70 65 6E 20 66 69 6C 65 22 29 nnot open file")
024510: 0D 0A 0D 0A 0D 0A 46 49 4E 44 4F 55 54 50 55 54 ......FINDOUTPUT
024520: 28 66 69 6C 65 6E 61 6D 65 2C 62 75 66 66 65 72 (filename,buffer
024530: 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 6F 20 )....Effect:.To
024540: 6F 70 65 6E 20 61 6E 90 20 6F 75 74 70 75 74 90 open an. output.
024550: 20 66 69 6C 65 2E 90 20 54 68 65 90 20 66 69 72 file.. The. fir
024560: 73 74 90 20 70 61 72 61 6D 65 74 65 72 90 20 69 st. parameter. i
024570: 73 20 61 20 0D 8A 09 73 74 72 69 6E 67 90 20 67 s a ...string. g
024580: 69 76 69 6E 67 90 20 74 68 65 90 20 6E 61 6D 65 iving. the. name
024590: 90 20 6F 66 90 20 74 68 65 90 20 66 69 6C 65 2E . of. the. file.
0245A0: 90 20 54 68 65 90 20 73 65 63 6F 6E 64 20 0D 8A . The. second ..
0245B0: 09 70 61 72 61 6D 65 74 65 72 20 69 73 20 61 20 .parameter is a
0245C0: 76 65 63 74 6F 72 20 77 68 69 63 68 20 77 69 6C vector which wil
0245D0: 6C 90 20 62 65 20 75 73 65 64 20 66 6F 72 20 74 l. be used for t
0245E0: 68 65 20 66 69 6C 65 20 0D 8A 09 62 75 66 66 65 he file ...buffe
0245F0: 72 2E 20 54 68 69 73 20 76 65 63 74 6F 72 20 73 r. This vector s
024600: 43 54 49 4E 50 55 54 20 6F 72 20 53 45 4C 45 43 CTINPUT or SELEC
024610: 54 4F 55 54 50 55 54 2E 90 20 54 68 65 73 65 90 TOUTPUT.. These.
024620: 20 72 6F 75 74 69 6E 65 73 90 20 61 72 65 20 52 routines. are R
024630: 44 56 44 55 2C 20 57 52 56 44 55 2C 20 0D 8A 52 DVDU, WRVDU, ..R
024640: 45 41 44 43 48 20 61 6E 64 20 57 52 49 54 45 43 EADCH and WRITEC
024650: 48 2E 0D 0A 0D 0A 3E 2D 2D 2D 2D 2D 2D 2D 2D 2D H.....>---------
024660: 2D 2D 2D 2D 2D 20 4C 2D 2D 2D 2D 2D 2D 2D 21 2D ----- L-------!-
024670: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
024680: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D ------!-------!-
024690: 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A 0D 0A ------!----R....
0246A0: 0D 0A 0D 0A 43 4C 4F 53 45 49 4E 28 62 75 66 66 ....CLOSEIN(buff
0246B0: 65 72 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 er)....Effect:.T
0246C0: 68 65 20 69 6E 70 75 74 20 66 69 6C 65 20 61 73 he input file as
0246D0: 73 6F 63 69 61 74 65 64 20 77 69 74 68 20 74 68 sociated with th
0246E0: 65 20 62 75 66 66 65 72 20 69 73 20 63 6C 6F 73 e buffer is clos
0246F0: 65 64 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 ed.....Returns:.
024700: 54 52 55 45 20 69 66 20 74 68 65 90 20 66 69 6C TRUE if the. fil
024710: 65 90 20 77 61 73 90 20 63 6C 6F 73 65 64 90 20 e. was. closed.
024720: 73 75 63 63 65 73 73 66 75 6C 6C 79 2C 20 46 41 successfully, FA
024730: 4C 53 45 20 69 66 20 0D 8A 09 6E 6F 74 2E 0D 0A LSE if ...not...
024740: 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 ..Location:.CLIB
024750: 48 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A HDR, ALIBHDR....
024760: 0D 0A 43 4C 4F 53 45 4F 55 54 28 62 75 66 66 65 ..CLOSEOUT(buffe
024770: 72 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 r)....Effect:.Th
024780: 65 20 6F 75 74 70 75 74 20 66 69 6C 65 20 61 73 e output file as
024790: 73 6F 63 69 61 74 65 64 20 77 69 74 68 90 20 74 sociated with. t
0247A0: 68 65 20 62 75 66 66 65 72 20 69 73 20 63 6C 6F he buffer is clo
0247B0: 73 65 64 2E 20 0D 8A 09 49 74 90 20 69 73 90 20 sed. ...It. is.
0247C0: 65 73 73 65 6E 74 69 61 6C 90 90 20 74 68 61 74 essential.. that
0247D0: 90 90 20 65 69 74 68 65 72 90 90 20 74 68 69 73 .. either.. this
0247E0: 90 90 20 72 6F 75 74 69 6E 65 90 20 6F 72 20 0D .. routine. or .
0247F0: 8A 09 45 4E 44 57 52 49 54 45 20 69 73 20 75 73 ..ENDWRITE is us
024800: 68 6F 75 6C 64 20 62 65 20 38 32 20 77 6F 72 64 hould be 82 word
024810: 73 20 6C 6F 6E 67 20 75 6E 64 65 72 20 43 50 2F s long under CP/
024820: 4D 20 0D 8A 09 61 6E 64 20 31 30 32 34 20 77 6F M ...and 1024 wo
024830: 72 64 73 20 6C 6F 6E 67 20 75 6E 64 65 72 20 41 rds long under A
024840: 4D 53 44 4F 53 2E 20 54 68 65 20 66 69 6C 65 6E MSDOS. The filen
024850: 61 6D 65 20 6D 75 73 74 20 62 65 20 0D 8A 09 61 ame must be ...a
024860: 20 76 61 6C 69 64 20 43 50 2F 4D 20 6F 72 90 20 valid CP/M or.
024870: 41 4D 53 44 4F 53 90 20 66 69 6C 65 6E 61 6D 65 AMSDOS. filename
024880: 2C 90 20 61 6E 64 90 20 6D 61 79 20 69 6E 63 6C ,. and. may incl
024890: 75 64 65 20 61 20 0D 8A 09 64 72 69 76 65 20 73 ude a ...drive s
0248A0: 70 65 63 69 66 69 65 72 2E 0D 0A 0D 0A 52 65 74 pecifier.....Ret
0248B0: 75 72 6E 73 3A 09 49 66 20 74 68 65 20 66 69 6C urns:.If the fil
0248C0: 65 20 77 61 73 20 6F 70 65 6E 65 64 90 20 73 75 e was opened. su
0248D0: 63 63 65 73 73 66 75 6C 6C 79 2C 20 74 68 65 20 ccessfully, the
0248E0: 76 61 6C 75 65 20 27 54 52 55 45 27 20 0D 8A 09 value 'TRUE' ...
0248F0: 69 73 20 72 65 74 75 72 6E 65 64 2C 20 6F 74 68 is returned, oth
024900: 65 72 77 69 73 65 20 27 46 41 4C 53 45 27 2E 0D erwise 'FALSE'..
024910: 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 ...Location:.CLI
024920: 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D BHDR, ALIBHDR...
024930: 0A 45 78 61 6D 70 6C 65 3A 09 4C 45 54 20 6F 75 .Example:.LET ou
024940: 74 62 75 66 20 3D 20 56 45 43 20 38 32 0D 0A 09 tbuf = VEC 82...
024950: 54 45 53 54 20 66 69 6E 64 6F 75 74 70 75 74 28 TEST findoutput(
024960: 22 41 3A 6E 61 6D 65 73 2E 64 74 61 22 2C 6F 75 "A:names.dta",ou
024970: 74 62 75 66 29 20 0D 0A 09 54 48 45 4E 20 73 65 tbuf) ...THEN se
024980: 6C 65 63 74 6F 75 74 70 75 74 28 6F 75 74 62 75 lectoutput(outbu
024990: 66 29 0D 0A 09 45 4C 53 45 20 65 72 72 6F 72 28 f)...ELSE error(
0249A0: 22 43 61 6E 6E 6F 74 20 6F 70 65 6E 20 66 69 6C "Cannot open fil
0249B0: 65 22 29 0D 0A 0D 0A 3E 70 61 0D 0A 52 45 57 49 e")....>pa..REWI
0249C0: 4E 44 28 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 ND()....Effect:.
0249D0: 54 68 65 20 63 75 72 72 65 6E 74 20 69 6E 70 75 The current inpu
0249E0: 74 20 73 74 72 65 61 6D 90 20 69 73 90 20 72 65 t stream. is. re
0249F0: 77 6F 75 6E 64 2E 90 20 49 66 20 74 68 65 20 63 wound.. If the c
024A00: 65 64 20 61 66 74 65 72 20 77 72 69 74 69 6E 67 ed after writing
024A10: 20 74 6F 20 61 20 66 69 6C 65 2C 20 61 73 20 69 to a file, as i
024A20: 74 20 63 61 75 73 65 73 20 0D 8A 09 74 68 65 20 t causes ...the
024A30: 6C 61 73 74 20 73 65 63 74 69 6F 6E 20 6F 66 20 last section of
024A40: 64 61 74 61 20 74 6F 20 62 65 20 77 72 69 74 74 data to be writt
024A50: 65 6E 20 74 6F 20 74 68 65 20 64 69 73 63 2E 0D en to the disc..
024A60: 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 52 55 45 ...Returns:.TRUE
024A70: 20 69 66 20 74 68 65 20 66 69 6C 65 20 77 61 73 if the file was
024A80: 20 63 6C 6F 73 65 64 20 73 75 63 63 65 73 73 66 closed successf
024A90: 75 6C 6C 79 2C 20 65 6C 73 65 20 46 41 4C 53 45 ully, else FALSE
024AA0: 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 .....Location:.C
024AB0: 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D LIBHDR, ALIBHDR.
024AC0: 0A 0D 0A 0D 0A 46 4C 55 53 48 28 29 0D 0A 0D 0A .....FLUSH()....
024AD0: 45 66 66 65 63 74 3A 09 45 6D 70 74 69 65 73 20 Effect:.Empties
024AE0: 74 68 65 20 6B 65 79 62 6F 61 72 64 20 62 75 66 the keyboard buf
024AF0: 66 65 72 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A fer.....Returns:
024B00: 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 .Nothing....Loca
024B10: 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 tion:.CLIBHDR, A
024B20: 4C 49 42 48 44 52 0D 0A 0D 0A 3E 70 61 0D 0A 50 LIBHDR....>pa..P
024B30: 52 42 55 53 59 28 29 0D 0A 0D 0A 45 66 66 65 63 RBUSY()....Effec
024B40: 74 3A 09 46 69 6E 64 73 20 6F 75 74 20 69 66 20 t:.Finds out if
024B50: 74 68 65 20 70 72 69 6E 74 65 72 20 69 73 20 62 the printer is b
024B60: 75 73 79 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A usy.....Returns:
024B70: 09 54 52 55 45 20 69 66 20 62 75 73 79 2C 20 46 .TRUE if busy, F
024B80: 41 4C 53 45 20 69 66 20 6E 6F 74 0D 0A 0D 0A 4C ALSE if not....L
024B90: 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 ocation:.CLIBHDR
024BA0: 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 45 78 61 , ALIBHDR....Exa
024BB0: 6D 70 6C 65 3A 09 49 46 20 70 72 62 75 73 79 28 mple:.IF prbusy(
024BC0: 29 20 54 48 45 4E 20 77 72 69 74 65 73 28 22 50 ) THEN writes("P
024BD0: 75 74 20 74 68 65 20 70 72 69 6E 74 65 72 20 6F ut the printer o
024BE0: 6E 20 6C 69 6E 65 2A 4E 22 29 0D 0A 09 57 48 49 n line*N")...WHI
024BF0: 4C 45 20 70 72 62 75 73 79 28 29 20 4C 4F 4F 50 LE prbusy() LOOP
024C00: 75 72 72 65 6E 74 20 0D 8A 09 73 74 72 65 61 6D urrent ...stream
024C10: 20 69 73 20 74 68 65 20 6B 65 79 62 6F 61 72 64 is the keyboard
024C20: 20 74 68 69 73 90 20 68 61 73 90 20 6E 6F 20 65 this. has. no e
024C30: 66 66 65 63 74 2C 20 69 66 20 61 20 66 69 6C 65 ffect, if a file
024C40: 20 0D 8A 09 74 68 65 20 66 69 6C 65 20 70 6F 69 ...the file poi
024C50: 6E 74 65 72 20 69 73 20 73 65 74 20 74 6F 90 20 nter is set to.
024C60: 74 68 65 90 20 73 74 61 72 74 20 6F 66 20 74 68 the. start of th
024C70: 65 20 66 69 6C 65 2C 20 73 6F 20 0D 8A 09 74 68 e file, so ...th
024C80: 65 20 6E 65 78 74 20 69 6E 70 75 74 20 77 69 6C e next input wil
024C90: 6C 20 62 65 20 74 61 6B 65 6E 20 66 72 6F 6D 20 l be taken from
024CA0: 74 68 65 20 73 74 61 72 74 2E 20 52 45 57 49 4E the start. REWIN
024CB0: 44 20 69 73 20 0D 8A 09 6E 6F 74 20 70 72 6F 76 D is ...not prov
024CC0: 69 64 65 64 20 69 6E 20 74 68 65 20 41 4D 53 44 ided in the AMSD
024CD0: 4F 53 20 76 65 72 73 69 6F 6E 2E 0D 0A 0D 0A 52 OS version.....R
024CE0: 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D eturns:.Nothing.
024CF0: 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 ...Location:.CLI
024D00: 42 48 44 52 0D 0A 0D 0A 0D 0A 3E 2D 2D 2D 21 2D BHDR......>---!-
024D10: 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D ----!-----!-----
024D20: 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D --!-------!-----
024D30: 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D --!-------!-----
024D40: 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 --!-------!----R
024D50: 0D 0A 0D 0A 45 78 61 6D 70 6C 65 20 6F 66 20 74 ....Example of t
024D60: 68 65 20 75 73 65 20 6F 66 20 66 69 6C 65 20 49 he use of file I
024D70: 2F 4F 20 72 6F 75 74 69 6E 65 73 3A 0D 0A 0D 0A /O routines:....
024D80: 09 09 4C 45 54 20 62 75 66 66 65 72 20 3D 20 56 ..LET buffer = V
024D90: 45 43 20 31 30 32 34 0D 0A 09 09 4C 45 54 20 66 EC 1024....LET f
024DA0: 69 6C 65 6E 61 6D 65 20 3D 20 56 45 43 20 32 30 ilename = VEC 20
024DB0: 0D 0A 09 09 77 72 69 74 65 66 28 22 50 6C 65 61 ....writef("Plea
024DC0: 73 65 20 65 6E 74 65 72 20 74 68 65 20 6D 65 73 se enter the mes
024DD0: 73 61 67 65 20 66 69 6C 65 20 6E 61 6D 65 3A 20 sage file name:
024DE0: 22 29 0D 0A 09 09 72 65 61 64 73 28 66 69 6C 65 ")....reads(file
024DF0: 6E 61 6D 65 29 0D 0A 09 09 54 45 53 54 20 66 69 name)....TEST fi
024E00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
024E10: 1F 00 01 00 02 09 50 E5 1F 00 C1 02 00 00 00 02 ......P.........
024E20: 1F 00 C6 02 00 00 00 02 1F 00 C2 02 00 00 00 02 ................
024E30: 1F 00 C7 02 00 00 00 02 1F 00 C3 02 00 00 00 02 ................
024E40: 1F 00 C8 02 00 00 00 02 1F 00 C4 02 00 00 00 02 ................
024E50: 1F 00 C9 02 00 00 00 02 1F 00 C5 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: 0D 0A 0D 0A 0D 0A 50 52 43 48 28 63 68 61 72 29 ......PRCH(char)
024F10: 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 53 65 6E 64 ....Effect:.Send
024F20: 73 20 61 20 63 68 61 72 61 63 74 65 72 20 74 6F s a character to
024F30: 90 20 74 68 65 90 20 70 72 69 6E 74 65 72 2E 90 . the. printer..
024F40: 20 49 66 20 74 68 65 20 70 72 69 6E 74 65 72 20 If the printer
024F50: 69 73 20 0D 8A 09 62 75 73 79 20 74 68 65 6E 20 is ...busy then
024F60: 50 52 43 48 20 77 61 69 74 73 20 75 6E 74 69 6C PRCH waits until
024F70: 90 20 74 68 65 20 63 68 61 72 61 63 74 65 72 20 . the character
024F80: 63 61 6E 20 62 65 20 73 65 6E 74 2E 20 0D 8A 09 can be sent. ...
024F90: 50 52 42 55 53 59 20 73 68 6F 75 6C 64 20 62 65 PRBUSY should be
024FA0: 20 75 73 65 64 90 20 74 6F 90 20 74 65 73 74 90 used. to. test.
024FB0: 20 66 6F 72 20 74 68 65 20 70 72 69 6E 74 65 72 for the printer
024FC0: 20 62 65 69 6E 67 20 0D 8A 09 62 75 73 79 2E 20 being ...busy.
024FD0: 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69 73 20 This routine is
024FE0: 63 61 6C 6C 65 64 20 62 79 20 57 52 43 48 20 69 called by WRCH i
024FF0: 66 20 74 68 65 20 70 72 69 6E 74 65 72 20 69 73 f the printer is
025000: 20 0D 8A 09 74 68 65 20 73 65 6C 65 63 74 65 64 ...the selected
025010: 20 6F 75 74 70 75 74 20 73 74 72 65 61 6D 2E 0D output stream..
025020: 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 52 55 45 ...Returns:.TRUE
025030: 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C ....Location:.CL
025040: 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A IBHDR, ALIBHDR..
025050: 0D 0A 0D 0A 52 44 54 45 53 54 28 29 0D 0A 0D 0A ....RDTEST()....
025060: 45 66 66 65 63 74 3A 09 46 69 6E 64 73 20 6F 75 Effect:.Finds ou
025070: 74 20 69 66 20 61 20 6B 65 79 20 68 61 73 20 62 t if a key has b
025080: 65 65 6E 20 70 72 65 73 73 65 64 2E 0D 0A 0D 0A een pressed.....
025090: 52 65 74 75 72 6E 73 3A 09 54 52 55 45 20 69 66 Returns:.TRUE if
0250A0: 20 61 20 6B 65 79 20 68 61 73 20 62 65 65 6E 20 a key has been
0250B0: 70 72 65 73 73 65 64 2C 20 46 41 4C 53 45 20 69 pressed, FALSE i
0250C0: 66 20 6E 6F 74 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 f not.....Locati
0250D0: 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 on:.CLIBHDR, ALI
0250E0: 42 48 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C 65 3A BHDR....Example:
0250F0: 09 57 48 49 4C 45 20 72 64 74 65 73 74 28 29 20 .WHILE rdtest()
025100: 61 72 72 61 79 73 69 7A 65 09 2F 2F 20 69 6C 6C arraysize.// ill
025110: 65 67 61 6C 20 69 6E 20 42 43 50 4C 0D 0A 09 20 egal in BCPL...
025120: 20 20 20 52 45 53 55 4C 54 49 53 20 66 75 6E 63 RESULTIS func
025130: 74 69 6F 6E 28 76 2C 61 72 72 61 79 73 69 7A 65 tion(v,arraysize
025140: 29 0D 0A 09 24 29 0D 0A 0D 0A 52 65 74 75 72 6E )...$)....Return
025150: 73 3A 09 74 68 65 20 76 61 6C 75 65 20 72 65 74 s:.the value ret
025160: 75 72 6E 65 64 20 62 79 20 74 68 65 20 66 75 6E urned by the fun
025170: 63 74 69 6F 6E 0D 0A 0D 0A 4C 6F 63 61 74 69 6F ction....Locatio
025180: 6E 3A 09 50 72 65 2D 64 65 66 69 6E 65 64 2C 20 n:.Pre-defined,
025190: 70 72 65 2D 64 65 66 69 6E 65 64 0D 0A 0D 0A 0D pre-defined.....
0251A0: 0A 42 59 54 45 4D 4F 56 45 28 73 74 61 72 74 2C .BYTEMOVE(start,
0251B0: 64 65 73 74 2C 73 69 7A 65 29 0D 0A 0D 0A 45 66 dest,size)....Ef
0251C0: 66 65 63 74 3A 09 54 68 69 73 20 69 73 20 61 90 fect:.This is a.
0251D0: 20 62 6C 6F 63 6B 90 20 62 79 74 65 90 20 6D 6F block. byte. mo
0251E0: 76 65 90 20 72 6F 75 74 69 6E 65 2E 90 20 49 74 ve. routine.. It
0251F0: 90 20 77 6F 72 6B 73 20 77 69 74 68 20 0D 8A 09 . works with ...
025200: 61 63 74 75 61 6C 20 62 79 74 65 20 61 64 64 72 actual byte addr
025210: 65 73 73 65 73 20 28 74 68 61 74 90 20 69 73 90 esses (that. is.
025220: 20 74 68 65 20 61 64 64 72 65 73 73 65 73 20 75 the addresses u
025230: 73 65 64 20 62 79 20 0D 8A 09 74 68 65 20 5A 38 sed by ...the Z8
025240: 30 20 70 72 6F 63 65 73 73 6F 72 29 20 73 6F 90 0 processor) so.
025250: 20 69 66 90 20 61 72 72 61 79 90 20 6E 61 6D 65 if. array. name
025260: 73 90 20 61 72 65 20 75 73 65 64 20 61 73 20 61 s. are used as a
025270: 20 0D 8A 09 70 61 72 61 6D 65 74 65 72 20 74 68 ...parameter th
025280: 65 6E 20 74 68 65 79 90 20 73 68 6F 75 6C 64 90 en they. should.
025290: 20 62 65 90 20 6D 75 6C 74 69 70 6C 69 65 64 90 be. multiplied.
0252A0: 20 62 79 20 74 77 6F 20 61 73 20 0D 8A 09 42 43 by two as ...BC
0252B0: 50 4C 20 77 6F 72 6B 73 20 77 69 74 68 20 77 6F PL works with wo
0252C0: 72 64 20 61 64 64 72 65 73 73 65 73 2E 20 54 68 rd addresses. Th
0252D0: 65 20 6F 6C 64 20 61 6E 64 20 6E 65 77 20 62 6C e old and new bl
0252E0: 6F 63 6B 73 20 0D 8A 09 6D 61 79 20 6F 76 65 72 ocks ...may over
0252F0: 6C 61 70 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A lap.....Returns:
025300: 44 4F 20 72 64 63 68 28 29 0D 0A 0D 0A 0D 0A 52 DO rdch()......R
025310: 44 56 44 55 28 29 0D 0A 0D 0A 45 66 66 65 63 74 DVDU()....Effect
025320: 3A 09 52 65 61 64 73 20 61 90 20 63 68 61 72 61 :.Reads a. chara
025330: 63 74 65 72 90 20 66 72 6F 6D 90 20 74 68 65 90 cter. from. the.
025340: 20 6B 65 79 62 6F 61 72 64 2C 90 20 77 68 61 74 keyboard,. what
025350: 65 76 65 72 20 74 68 65 20 0D 8A 09 63 75 72 72 ever the ...curr
025360: 65 6E 74 6C 79 90 20 73 65 6C 65 63 74 65 64 90 ently. selected.
025370: 20 69 6E 70 75 74 90 20 73 74 72 65 61 6D 2E 90 input. stream..
025380: 20 54 68 69 73 90 20 72 6F 75 74 69 6E 65 90 20 This. routine.
025390: 69 73 20 0D 8A 09 63 61 6C 6C 65 64 20 62 79 20 is ...called by
0253A0: 52 44 43 48 20 69 66 20 74 68 65 90 20 6B 65 79 RDCH if the. key
0253B0: 62 6F 61 72 64 90 20 69 73 20 74 68 65 20 73 65 board. is the se
0253C0: 6C 65 63 74 65 64 20 69 6E 70 75 74 20 0D 8A 09 lected input ...
0253D0: 73 74 72 65 61 6D 2E 20 52 44 56 44 55 20 69 73 stream. RDVDU is
0253E0: 20 70 72 65 2D 64 65 66 69 6E 65 64 90 20 69 6E pre-defined. in
0253F0: 90 20 74 68 65 20 43 50 2F 4D 20 63 6F 6D 70 69 . the CP/M compi
025400: 6C 65 72 20 73 6F 20 0D 8A 09 74 68 61 74 20 69 ler so ...that i
025410: 74 90 20 63 61 6E 90 20 62 75 66 66 65 72 90 20 t. can. buffer.
025420: 63 68 61 72 61 63 74 65 72 73 90 20 74 6F 90 20 characters. to.
025430: 61 6C 6C 6F 77 90 20 66 6F 72 20 62 72 65 61 6B allow. for break
025440: 20 0D 8A 09 74 65 73 74 69 6E 67 20 77 69 74 68 ...testing with
025450: 6F 75 74 20 6C 6F 73 69 6E 67 20 63 68 61 72 61 out losing chara
025460: 63 74 65 72 73 2E 0D 0A 0D 0A 52 65 74 75 72 6E cters.....Return
025470: 73 3A 09 54 68 65 20 63 68 61 72 61 63 74 65 72 s:.The character
025480: 20 72 65 61 64 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 read.....Locati
025490: 6F 6E 3A 09 50 72 65 2D 64 65 66 69 6E 65 64 20 on:.Pre-defined
0254A0: 69 6E 20 43 50 2F 4D 20 63 6F 6D 70 69 6C 65 72 in CP/M compiler
0254B0: 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 3E 70 61 , ALIBHDR....>pa
0254C0: 0D 0A 52 45 41 44 43 48 28 62 75 66 66 65 72 29 ..READCH(buffer)
0254D0: 09 0D 0A 09 0D 0A 45 66 66 65 63 74 3A 09 52 65 ......Effect:.Re
0254E0: 61 64 73 20 61 20 63 68 61 72 61 63 74 65 72 20 ads a character
0254F0: 66 72 6F 6D 20 61 90 20 66 69 6C 65 2C 20 77 68 from a. file, wh
025500: 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 .Nothing....Loca
025510: 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 31 2C 20 tion:.CLIBHDR1,
025520: 41 4C 49 42 48 44 52 31 0D 0A 0D 0A 45 78 61 6D ALIBHDR1....Exam
025530: 70 6C 65 3A 09 62 79 74 65 6D 6F 76 65 28 62 75 ple:.bytemove(bu
025540: 66 66 65 72 2A 32 2B 33 36 2C 62 75 66 66 65 72 ffer*2+36,buffer
025550: 2A 32 2B 31 36 2C 31 36 29 0D 0A 0D 0A 0D 0A 43 *2+16,16)......C
025560: 41 4C 4C 28 61 64 64 72 65 73 73 2C 40 61 66 2C ALL(address,@af,
025570: 40 62 63 2C 40 64 65 2C 40 68 6C 2C 40 69 78 29 @bc,@de,@hl,@ix)
025580: 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 43 61 6C 6C ....Effect:.Call
025590: 73 20 61 20 6D 61 63 68 69 6E 65 20 63 6F 64 65 s a machine code
0255A0: 90 20 72 6F 75 74 69 6E 65 90 20 61 74 90 20 61 . routine. at. a
0255B0: 20 62 79 74 65 20 61 64 64 72 65 73 73 2E 20 41 byte address. A
0255C0: 6C 6C 20 0D 8A 09 70 61 72 61 6D 65 74 65 72 73 ll ...parameters
0255D0: 20 4D 55 53 54 20 62 65 90 20 73 75 70 70 6C 69 MUST be. suppli
0255E0: 65 64 90 20 61 73 90 20 76 61 6C 75 65 73 20 61 ed. as. values a
0255F0: 72 65 20 72 65 74 75 72 6E 65 64 2E 20 0D 8A 09 re returned. ...
025600: 54 68 65 20 76 61 6C 75 65 73 20 72 65 74 75 72 The values retur
025610: 6E 65 64 20 62 79 90 20 74 68 65 90 20 6D 61 63 ned by. the. mac
025620: 68 69 6E 65 90 20 63 6F 64 65 20 72 6F 75 74 69 hine. code routi
025630: 6E 65 20 61 72 65 20 0D 8A 09 70 61 73 73 65 64 ne are ...passed
025640: 20 62 61 63 6B 20 69 6E 20 74 68 65 20 76 61 72 back in the var
025650: 69 61 62 6C 65 73 2E 0D 0A 0D 0A 52 65 74 75 72 iables.....Retur
025660: 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C ns:.Nothing....L
025670: 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 ocation:.CLIBHDR
025680: 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A 0D 0A 3E 1, ALIBHDR1....>
025690: 70 61 0D 0A 43 41 50 49 54 41 4C 43 48 28 63 68 pa..CAPITALCH(ch
0256A0: 61 72 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 49 ar)....Effect:.I
0256B0: 66 20 74 68 65 20 63 68 61 72 61 63 74 65 72 20 f the character
0256C0: 69 73 20 61 20 6C 6F 77 65 72 20 63 61 73 65 20 is a lower case
0256D0: 6C 65 74 74 65 72 20 74 68 65 20 75 70 70 65 72 letter the upper
0256E0: 20 63 61 73 65 20 0D 8A 09 65 71 75 69 76 61 6C case ...equival
0256F0: 65 6E 74 90 20 69 73 90 90 20 72 65 74 75 72 6E ent. is.. return
025700: 61 74 65 76 65 72 20 74 68 65 20 63 75 72 72 65 atever the curre
025710: 6E 74 6C 79 20 0D 8A 09 73 65 6C 65 63 74 65 64 ntly ...selected
025720: 20 69 6E 70 75 74 20 73 74 72 65 61 6D 2E 20 54 input stream. T
025730: 68 65 20 62 75 66 66 65 72 90 20 69 73 20 6E 6F he buffer. is no
025740: 74 20 6E 65 65 64 65 64 20 75 6E 64 65 72 20 0D t needed under .
025750: 8A 09 41 4D 53 44 4F 53 2E 20 54 68 69 73 20 72 ..AMSDOS. This r
025760: 6F 75 74 69 6E 65 20 69 73 20 63 61 6C 6C 65 64 outine is called
025770: 90 20 62 79 90 20 52 44 43 48 90 20 69 66 20 61 . by. RDCH. if a
025780: 20 66 69 6C 65 20 69 73 20 0D 8A 09 74 68 65 20 file is ...the
025790: 73 65 6C 65 63 74 65 64 20 69 6E 70 75 74 20 73 selected input s
0257A0: 74 72 65 61 6D 2E 0D 0A 0D 0A 52 65 74 75 72 6E tream.....Return
0257B0: 73 3A 09 54 68 65 20 63 68 61 72 61 63 74 65 72 s:.The character
0257C0: 20 72 65 61 64 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 read.....Locati
0257D0: 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 on:.CLIBHDR, ALI
0257E0: 42 48 44 52 0D 0A 0D 0A 0D 0A 52 45 57 49 4E 44 BHDR......REWIND
0257F0: 49 4E 28 62 75 66 66 65 72 29 0D 0A 0D 0A 45 66 IN(buffer)....Ef
025800: 66 65 63 74 3A 09 54 68 65 20 66 69 6C 65 20 70 fect:.The file p
025810: 6F 69 6E 74 65 72 20 66 6F 72 20 74 68 65 20 73 ointer for the s
025820: 70 65 63 69 66 69 65 64 90 20 66 69 6C 65 20 69 pecified. file i
025830: 73 20 73 65 74 20 74 6F 20 74 68 65 20 0D 8A 09 s set to the ...
025840: 73 74 61 72 74 20 6F 66 20 74 68 65 20 66 69 6C start of the fil
025850: 65 2E 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 e. This routine
025860: 69 73 20 63 61 6C 6C 65 64 20 62 79 20 52 45 57 is called by REW
025870: 49 4E 44 20 69 66 20 0D 8A 09 61 20 66 69 6C 65 IND if ...a file
025880: 20 69 73 20 74 68 65 20 73 65 6C 65 63 74 65 64 is the selected
025890: 90 20 69 6E 70 75 74 90 20 73 74 72 65 61 6D 2E . input. stream.
0258A0: 20 52 45 57 49 4E 44 49 4E 20 69 73 20 6E 6F 74 REWINDIN is not
0258B0: 20 0D 8A 09 70 72 6F 76 69 64 65 64 20 69 6E 20 ...provided in
0258C0: 74 68 65 20 41 4D 53 44 4F 53 20 76 65 72 73 69 the AMSDOS versi
0258D0: 6F 6E 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 on.....Returns:.
0258E0: 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 Nothing....Locat
0258F0: 69 6F 6E 3A 09 43 4C 49 42 48 44 52 0D 0A 0D 0A ion:.CLIBHDR....
025900: 65 64 2C 90 90 20 6F 74 68 65 72 77 69 73 65 90 ed,.. otherwise.
025910: 90 20 74 68 65 90 20 6F 72 69 67 69 6E 61 6C 20 . the. original
025920: 0D 8A 09 63 68 61 72 61 63 74 65 72 20 69 73 20 ...character is
025930: 72 65 74 75 72 6E 65 64 2E 0D 0A 0D 0A 52 65 74 returned.....Ret
025940: 75 72 6E 73 3A 09 54 68 65 20 63 6F 6E 76 65 72 urns:.The conver
025950: 74 65 64 20 63 68 61 72 61 63 74 65 72 0D 0A 0D ted character...
025960: 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 .Location:.CLIBH
025970: 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 0D DR, ALIBHDR.....
025980: 0A 43 4F 4D 50 43 48 28 63 68 61 72 31 2C 63 68 .COMPCH(char1,ch
025990: 61 72 32 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 ar2)....Effect:.
0259A0: 43 6F 6D 70 61 72 65 73 90 20 74 77 6F 90 20 63 Compares. two. c
0259B0: 68 61 72 61 63 74 65 72 73 2C 90 20 69 67 6E 6F haracters,. igno
0259C0: 72 69 6E 67 90 20 74 68 65 90 20 64 69 73 74 69 ring. the. disti
0259D0: 6E 63 74 69 6F 6E 20 0D 8A 09 62 65 74 77 65 65 nction ...betwee
0259E0: 6E 90 20 75 70 70 65 72 90 20 61 6E 64 90 90 20 n. upper. and..
0259F0: 6C 6F 77 65 72 90 90 20 63 61 73 65 2E 90 90 20 lower.. case...
025A00: 49 74 90 20 72 65 74 75 72 6E 73 90 20 74 68 65 It. returns. the
025A10: 20 0D 8A 09 64 69 66 66 65 72 65 6E 63 65 20 62 ...difference b
025A20: 65 74 77 65 65 6E 20 74 68 65 20 74 77 6F 20 63 etween the two c
025A30: 68 61 72 61 63 74 65 72 73 2E 0D 0A 0D 0A 52 65 haracters.....Re
025A40: 74 75 72 6E 73 3A 09 54 68 65 20 64 69 66 66 65 turns:.The diffe
025A50: 72 65 6E 63 65 20 62 65 74 77 65 65 6E 20 74 68 rence between th
025A60: 65 20 63 68 61 72 61 63 74 65 72 73 0D 0A 0D 0A e characters....
025A70: 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 Location:.CLIBHD
025A80: 52 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A 0D 0A R1, ALIBHDR1....
025A90: 0D 0A 43 4F 4D 50 53 54 52 49 4E 47 28 73 74 72 ..COMPSTRING(str
025AA0: 69 6E 67 31 2C 73 74 72 69 6E 67 32 29 0D 0A 0D ing1,string2)...
025AB0: 0A 45 66 66 65 63 74 3A 09 43 6F 6D 70 61 72 65 .Effect:.Compare
025AC0: 73 20 74 77 6F 20 73 74 72 69 6E 67 73 2C 20 69 s two strings, i
025AD0: 67 6E 6F 72 69 6E 67 20 74 68 65 20 64 69 73 74 gnoring the dist
025AE0: 69 6E 63 74 69 6F 6E 20 62 65 74 77 65 65 6E 20 inction between
025AF0: 0D 8A 09 75 70 70 65 72 20 61 6E 64 90 20 6C 6F ...upper and. lo
025B00: 0D 0A 57 52 49 54 45 43 48 28 63 68 61 72 2C 62 ..WRITECH(char,b
025B10: 75 66 66 65 72 29 0D 0A 0D 0A 45 66 66 65 63 74 uffer)....Effect
025B20: 3A 09 57 72 69 74 65 73 20 61 20 63 68 61 72 61 :.Writes a chara
025B30: 63 74 65 72 20 74 6F 90 20 61 90 20 66 69 6C 65 cter to. a. file
025B40: 2C 20 77 68 61 74 65 76 65 72 20 74 68 65 20 63 , whatever the c
025B50: 75 72 72 65 6E 74 6C 79 20 0D 8A 09 73 65 6C 65 urrently ...sele
025B60: 63 74 65 64 20 6F 75 74 70 75 74 20 73 74 72 65 cted output stre
025B70: 61 6D 2E 20 54 68 65 20 62 75 66 66 65 72 20 69 am. The buffer i
025B80: 73 20 6E 6F 74 20 6E 65 65 64 65 64 20 75 6E 64 s not needed und
025B90: 65 72 20 0D 8A 09 41 4D 53 44 4F 53 2E 20 54 68 er ...AMSDOS. Th
025BA0: 69 73 20 72 6F 75 74 69 6E 65 20 69 73 20 63 61 is routine is ca
025BB0: 6C 6C 65 64 90 20 62 79 90 20 57 52 43 48 90 20 lled. by. WRCH.
025BC0: 69 73 20 61 20 66 69 6C 65 20 69 73 20 0D 8A 09 is a file is ...
025BD0: 74 68 65 20 73 65 6C 65 63 74 65 64 20 6F 75 74 the selected out
025BE0: 70 75 74 20 73 74 72 65 61 6D 2E 0D 0A 0D 0A 52 put stream.....R
025BF0: 65 74 75 72 6E 73 3A 09 54 52 55 45 20 69 66 20 eturns:.TRUE if
025C00: 73 75 63 63 65 73 73 66 75 6C 2C 20 46 41 4C 53 successful, FALS
025C10: 45 20 69 66 20 61 20 64 69 73 63 20 65 72 72 6F E if a disc erro
025C20: 72 20 6F 63 63 75 72 72 65 64 0D 0A 09 0D 0A 4C r occurred.....L
025C30: 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 ocation:.CLIBHDR
025C40: 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 45 78 61 , ALIBHDR....Exa
025C50: 6D 70 6C 65 73 3A 09 77 72 69 74 65 63 68 28 27 mples:.writech('
025C60: 24 27 2C 6F 75 74 66 69 6C 65 62 75 66 29 09 09 $',outfilebuf)..
025C70: 2F 2F 20 43 50 2F 4D 20 76 65 72 73 69 6F 6E 0D // CP/M version.
025C80: 0A 09 77 72 69 74 65 63 68 28 27 24 27 29 09 09 ..writech('$')..
025C90: 09 2F 2F 20 41 4D 53 44 4F 53 20 76 65 72 73 69 .// AMSDOS versi
025CA0: 6F 6E 0D 0A 0D 0A 0D 0A 57 52 56 44 55 28 63 68 on......WRVDU(ch
025CB0: 61 72 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 57 ar)....Effect:.W
025CC0: 72 69 74 65 73 90 20 61 90 20 63 68 61 72 61 63 rites. a. charac
025CD0: 74 65 72 90 20 74 6F 90 90 20 74 68 65 90 20 73 ter. to.. the. s
025CE0: 63 72 65 65 6E 2C 90 20 77 68 61 74 65 76 65 72 creen,. whatever
025CF0: 90 20 74 68 65 20 0D 8A 09 63 75 72 72 65 6E 74 . the ...current
025D00: 77 65 72 90 20 63 61 73 65 2E 90 20 54 68 65 90 wer. case.. The.
025D10: 20 72 65 73 75 6C 74 90 20 69 73 90 20 7A 65 72 result. is. zer
025D20: 6F 90 20 69 66 20 74 68 65 20 0D 8A 09 73 74 72 o. if the ...str
025D30: 69 6E 67 73 20 61 72 65 90 20 74 68 65 90 20 73 ings are. the. s
025D40: 61 6D 65 2C 90 20 70 6F 73 69 74 69 76 65 90 20 ame,. positive.
025D50: 69 66 90 20 73 74 72 69 6E 67 31 20 66 6F 6C 6C if. string1 foll
025D60: 6F 77 73 20 0D 8A 09 73 74 72 69 6E 67 32 90 20 ows ...string2.
025D70: 61 6C 70 68 61 62 65 74 69 63 61 6C 6C 79 2C 90 alphabetically,.
025D80: 20 61 6E 64 90 90 20 6E 65 67 61 74 69 76 65 90 and.. negative.
025D90: 90 20 69 66 90 20 73 74 72 69 6E 67 32 20 0D 8A . if. string2 ..
025DA0: 09 66 6F 6C 6C 6F 77 73 20 73 74 72 69 6E 67 31 .follows string1
025DB0: 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 68 .....Returns:.Th
025DC0: 65 20 72 65 73 75 6C 74 20 6F 66 20 74 68 65 20 e result of the
025DD0: 63 6F 6D 70 61 72 69 73 6F 6E 2C 20 61 73 20 61 comparison, as a
025DE0: 62 6F 76 65 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E bove....Location
025DF0: 3A 09 43 4C 49 42 48 44 52 31 2C 20 41 4C 49 42 :.CLIBHDR1, ALIB
025E00: 48 44 52 31 0D 0A 0D 0A 0D 0A 44 45 43 56 41 4C HDR1......DECVAL
025E10: 28 64 69 67 69 74 29 0D 0A 0D 0A 45 66 66 65 63 (digit)....Effec
025E20: 74 3A 09 54 68 69 73 20 72 65 74 75 72 6E 73 20 t:.This returns
025E30: 74 68 65 20 64 65 63 69 6D 61 6C 20 76 61 6C 75 the decimal valu
025E40: 65 20 6F 66 20 61 20 68 65 78 61 64 65 63 69 6D e of a hexadecim
025E50: 61 6C 20 64 69 67 69 74 2E 0D 0A 0D 0A 52 65 74 al digit.....Ret
025E60: 75 72 6E 73 3A 09 54 68 65 20 64 65 63 69 6D 61 urns:.The decima
025E70: 6C 20 76 61 6C 75 65 20 6F 66 20 74 68 65 20 64 l value of the d
025E80: 69 67 69 74 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E igit....Location
025E90: 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 :.CLIBHDR, ALIBH
025EA0: 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C 65 3A 09 64 DR....Example:.d
025EB0: 65 63 76 61 6C 28 27 41 27 29 09 09 2F 2F 20 72 ecval('A')..// r
025EC0: 65 74 75 72 6E 73 20 31 30 0D 0A 0D 0A 3E 70 61 eturns 10....>pa
025ED0: 0D 0A 44 45 4C 45 54 45 28 66 69 6C 65 6E 61 6D ..DELETE(filenam
025EE0: 65 2C 62 75 66 66 65 72 29 0D 0A 0D 0A 45 66 66 e,buffer)....Eff
025EF0: 65 63 74 3A 09 54 68 65 20 66 69 72 73 74 20 70 ect:.The first p
025F00: 6C 79 20 73 65 6C 65 63 74 65 64 90 20 6F 75 74 ly selected. out
025F10: 70 75 74 90 20 73 74 72 65 61 6D 2E 90 20 54 68 put. stream.. Th
025F20: 69 73 90 20 72 6F 75 74 69 6E 65 90 20 69 73 20 is. routine. is
025F30: 0D 8A 09 63 61 6C 6C 65 64 20 62 79 20 57 52 43 ...called by WRC
025F40: 48 20 69 66 90 20 74 68 65 90 20 73 63 72 65 65 H if. the. scree
025F50: 6E 90 20 69 73 20 74 68 65 20 73 65 6C 65 63 74 n. is the select
025F60: 65 64 20 6F 75 74 70 75 74 20 0D 8A 09 73 74 72 ed output ...str
025F70: 65 61 6D 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A eam.....Returns:
025F80: 09 54 52 55 45 0D 0A 0D 0A 4C 6F 63 61 74 69 6F .TRUE....Locatio
025F90: 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 n:.CLIBHDR, ALIB
025FA0: 48 44 52 0D 0A 3E 70 61 0D 0A E2 28 66 29 20 4D HDR..>pa...(f) M
025FB0: 69 73 63 65 6C 6C 61 6E 65 6F 75 73 20 52 6F 75 iscellaneous Rou
025FC0: 74 69 6E 65 73 E2 0D 0A 0D 0A 0D 0A 41 50 54 4F tines.......APTO
025FD0: 56 45 43 28 66 75 6E 63 74 69 6F 6E 2C 61 72 72 VEC(function,arr
025FE0: 61 79 73 69 7A 65 29 0D 0A 0D 0A 45 66 66 65 63 aysize)....Effec
025FF0: 74 3A 09 54 68 69 73 20 77 69 6C 6C 20 63 72 65 t:.This will cre
026000: 61 74 65 20 61 20 64 79 6E 61 6D 69 63 20 61 72 ate a dynamic ar
026010: 72 61 79 20 6F 66 20 73 69 7A 65 20 61 72 72 61 ray of size arra
026020: 79 73 69 7A 65 20 61 6E 64 20 0D 8A 09 74 68 65 ysize and ...the
026030: 6E 20 70 61 73 73 20 74 68 65 20 61 64 64 72 65 n pass the addre
026040: 73 73 90 20 6F 66 90 20 74 68 69 73 90 20 61 72 ss. of. this. ar
026050: 72 61 79 90 20 61 6C 6F 6E 67 20 77 69 74 68 20 ray. along with
026060: 69 74 73 20 0D 8A 09 73 69 7A 65 20 74 6F 20 74 its ...size to t
026070: 68 65 20 66 75 6E 63 74 69 6F 6E 2E 20 49 74 20 he function. It
026080: 77 69 6C 6C 20 72 65 74 75 72 6E 20 74 68 65 20 will return the
026090: 72 65 73 75 6C 74 20 6F 66 20 74 68 65 20 0D 8A result of the ..
0260A0: 09 66 75 6E 63 74 69 6F 6E 20 61 6E 64 20 69 73 .function and is
0260B0: 20 65 71 75 69 76 61 6C 65 6E 74 20 74 6F 3A 0D equivalent to:.
0260C0: 0A 0D 0A 09 4C 45 54 20 61 70 74 6F 76 65 63 28 ....LET aptovec(
0260D0: 66 75 6E 63 74 69 6F 6E 2C 61 72 72 61 79 73 69 function,arraysi
0260E0: 7A 65 29 20 3D 20 56 41 4C 4F 46 0D 0A 0D 0A 09 ze) = VALOF.....
0260F0: 24 28 20 20 4C 45 54 20 76 20 3D 20 56 45 43 20 $( LET v = VEC
026100: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
026110: 20 00 01 00 02 09 4E E5 20 00 C1 02 00 00 00 02 .....N. .......
026120: 20 00 C6 02 00 00 00 02 20 00 C2 02 00 00 00 02 ....... .......
026130: 20 00 C7 02 00 00 00 02 20 00 C3 02 00 00 00 02 ....... .......
026140: 20 00 C8 02 00 00 00 02 20 00 C4 02 00 00 00 02 ....... .......
026150: 20 00 C9 02 00 00 00 02 20 00 C5 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: 61 72 61 6D 65 74 65 72 20 69 73 20 61 20 73 74 arameter is a st
026210: 72 69 6E 67 20 73 70 65 63 69 66 79 69 6E 67 20 ring specifying
026220: 74 68 65 20 6E 61 6D 65 20 6F 66 20 0D 8A 09 61 the name of ...a
026230: 20 66 69 6C 65 2E 20 54 68 69 73 20 66 69 6C 65 file. This file
026240: 20 69 73 90 20 74 68 65 6E 90 20 64 65 6C 65 74 is. then. delet
026250: 65 64 20 66 72 6F 6D 20 74 68 65 20 64 69 73 63 ed from the disc
026260: 2E 20 54 68 65 20 0D 8A 09 43 50 2F 4D 20 76 65 . The ...CP/M ve
026270: 72 73 69 6F 6E 20 72 65 71 75 69 72 65 73 20 61 rsion requires a
026280: 6E 90 20 38 32 90 20 77 6F 72 64 90 20 62 75 66 n. 82. word. buf
026290: 66 65 72 2C 20 74 68 65 20 41 4D 53 44 4F 53 20 fer, the AMSDOS
0262A0: 0D 8A 09 76 65 72 73 69 6F 6E 20 72 65 71 75 69 ...version requi
0262B0: 72 65 73 20 6E 6F 20 62 75 66 66 65 72 2E 0D 0A res no buffer...
0262C0: 0D 0A 52 65 74 75 72 6E 73 3A 09 54 52 55 45 20 ..Returns:.TRUE
0262D0: 69 66 20 74 68 65 20 6F 70 65 72 61 74 69 6F 6E if the operation
0262E0: 20 73 75 63 63 65 65 64 65 64 2C 20 46 41 4C 53 succeeded, FALS
0262F0: 45 20 69 66 20 61 20 64 69 73 63 20 65 72 72 6F E if a disc erro
026300: 72 20 0D 8A 09 6F 63 63 75 72 72 65 64 2E 0D 0A r ...occurred...
026310: 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 ..Location:.CLIB
026320: 48 44 52 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A HDR1, ALIBHDR1..
026330: 0D 0A 45 78 61 6D 70 6C 65 73 3A 09 64 65 6C 65 ..Examples:.dele
026340: 74 65 28 22 74 65 6D 70 66 69 6C 65 22 2C 62 75 te("tempfile",bu
026350: 66 66 65 72 29 09 2F 2F 20 43 50 2F 4D 20 76 65 ffer).// CP/M ve
026360: 72 73 69 6F 6E 0D 0A 09 64 65 6C 65 74 65 28 22 rsion...delete("
026370: 74 65 6D 70 66 69 6C 65 22 29 09 09 2F 2F 20 41 tempfile")..// A
026380: 4D 53 44 4F 53 20 76 65 72 73 69 6F 6E 0D 0A 0D MSDOS version...
026390: 0A 0D 0A 4C 45 56 45 4C 28 61 72 72 61 79 29 0D ...LEVEL(array).
0263A0: 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 69 73 20 ...Effect:.This
0263B0: 72 65 74 75 72 6E 73 20 74 68 65 90 20 73 74 61 returns the. sta
0263C0: 74 65 90 20 6F 66 90 20 74 68 65 90 20 42 43 50 te. of. the. BCP
0263D0: 4C 90 20 70 72 6F 67 72 61 6D 20 69 6E 20 74 68 L. program in th
0263E0: 65 20 0D 8A 09 61 72 72 61 79 20 67 69 76 65 6E e ...array given
0263F0: 2E 20 54 68 65 20 61 72 72 61 79 90 20 6D 75 73 . The array. mus
026400: 69 64 65 6E 74 69 66 79 69 6E 67 90 20 74 68 65 identifying. the
026410: 90 20 6F 70 65 72 61 74 69 6E 67 90 20 73 79 73 . operating. sys
026420: 74 65 6D 20 0D 8A 09 61 6E 64 20 63 6F 6D 70 75 tem ...and compu
026430: 74 65 72 20 6F 6E 20 77 68 69 63 68 90 20 74 68 ter on which. th
026440: 65 90 20 70 72 6F 67 72 61 6D 20 69 73 20 62 65 e. program is be
026450: 69 6E 67 20 65 78 65 63 75 74 65 64 2E 20 0D 8A ing executed. ..
026460: 09 54 68 65 20 76 61 6C 75 65 73 20 72 65 74 75 .The values retu
026470: 72 6E 65 64 20 61 72 65 3A 0D 0A 09 09 31 20 3D rned are:....1 =
026480: 20 43 50 43 2C 20 41 4D 53 44 4F 53 0D 0A 09 09 CPC, AMSDOS....
026490: 32 20 3D 20 43 50 43 2C 20 43 50 2F 4D 20 32 2E 2 = CPC, CP/M 2.
0264A0: 32 0D 0A 09 09 33 20 3D 20 43 50 43 2C 20 43 50 2....3 = CPC, CP
0264B0: 2F 4D 20 50 6C 75 73 0D 0A 09 09 34 20 3D 20 50 /M Plus....4 = P
0264C0: 43 57 2C 20 43 50 2F 4D 20 50 6C 75 73 0D 0A 0D CW, CP/M Plus...
0264D0: 0A 52 65 74 75 72 6E 73 3A 09 54 68 65 20 76 65 .Returns:.The ve
0264E0: 72 73 69 6F 6E 20 6E 75 6D 62 65 72 0D 0A 0D 0A rsion number....
0264F0: 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 Location:.CLIBHD
026500: 52 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A 0D 0A R1, ALIBHDR1....
026510: 0D 0A 3E 70 61 0D 0A E2 28 67 29 20 52 6F 75 74 ..>pa...(g) Rout
026520: 69 6E 65 73 20 70 72 6F 76 69 64 65 64 20 69 6E ines provided in
026530: 20 74 68 65 20 43 50 2F 4D 20 6C 69 62 72 61 72 the CP/M librar
026540: 69 65 73 20 6F 6E 6C 79 E2 0D 0A 0D 0A 42 44 4F ies only.....BDO
026550: 53 41 28 40 63 2C 40 64 65 29 0D 0A 0D 0A 45 66 SA(@c,@de)....Ef
026560: 66 65 63 74 3A 09 54 68 65 20 42 44 4F 53 20 69 fect:.The BDOS i
026570: 73 20 63 61 6C 6C 65 64 20 77 69 74 68 20 74 68 s called with th
026580: 65 20 70 61 72 61 6D 65 74 65 72 73 20 70 61 73 e parameters pas
026590: 73 65 64 20 69 6E 20 74 68 65 20 43 20 0D 8A 09 sed in the C ...
0265A0: 61 6E 64 20 44 45 20 72 65 67 69 73 74 65 72 73 and DE registers
0265B0: 2E 20 54 68 65 20 61 64 64 72 65 73 73 65 73 90 . The addresses.
0265C0: 20 6F 66 20 74 68 65 20 76 61 72 69 61 62 6C 65 of the variable
0265D0: 73 20 6D 75 73 74 20 0D 8A 09 62 65 20 70 61 73 s must ...be pas
0265E0: 73 65 64 20 69 6E 20 6F 72 64 65 72 20 74 68 61 sed in order tha
0265F0: 74 90 20 72 65 73 75 6C 74 73 90 20 63 61 6E 20 t. results. can
026600: 74 90 20 62 65 90 20 61 74 90 20 6C 65 61 73 74 t. be. at. least
026610: 20 34 20 77 6F 72 64 73 20 69 6E 20 0D 8A 09 73 4 words in ...s
026620: 69 7A 65 2E 20 54 68 69 73 20 72 6F 75 74 69 6E ize. This routin
026630: 65 90 20 69 73 90 20 75 73 65 64 90 20 77 69 74 e. is. used. wit
026640: 68 90 20 4C 4F 4E 47 4A 55 4D 50 90 20 74 6F 20 h. LONGJUMP. to
026650: 61 6C 6C 6F 77 20 0D 8A 09 6A 75 6D 70 73 20 62 allow ...jumps b
026660: 65 74 77 65 65 6E 20 70 72 6F 63 65 64 75 72 65 etween procedure
026670: 73 20 65 74 63 2E 90 20 53 65 65 90 20 73 65 63 s etc.. See. sec
026680: 74 69 6F 6E 20 39 20 66 6F 72 20 6D 6F 72 65 20 tion 9 for more
026690: 0D 8A 09 64 65 74 61 69 6C 73 2E 0D 0A 0D 0A 52 ...details.....R
0266A0: 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D eturns:.Nothing.
0266B0: 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 50 72 65 ...Location:.Pre
0266C0: 2D 64 65 66 69 6E 65 64 2C 20 70 72 65 2D 64 65 -defined, pre-de
0266D0: 66 69 6E 65 64 0D 0A 0D 0A 0D 0A 4C 4F 4E 47 4A fined......LONGJ
0266E0: 55 4D 50 28 61 64 64 72 65 73 73 2C 61 72 72 61 UMP(address,arra
0266F0: 79 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 y)....Effect:.Th
026700: 69 73 20 77 69 6C 6C 20 73 65 74 20 74 68 65 90 is will set the.
026710: 20 73 74 61 74 65 90 20 6F 66 90 20 74 68 65 20 state. of. the
026720: 70 72 6F 67 72 61 6D 20 61 63 63 6F 72 64 69 6E program accordin
026730: 67 20 74 6F 20 0D 8A 09 74 68 65 90 20 61 72 72 g to ...the. arr
026740: 61 79 90 20 67 69 76 65 6E 2E 90 20 54 68 65 90 ay. given.. The.
026750: 20 61 72 72 61 79 90 90 20 6D 75 73 74 90 20 68 array.. must. h
026760: 61 76 65 90 20 62 65 65 6E 90 20 73 65 74 20 0D ave. been. set .
026770: 8A 09 70 72 65 76 69 6F 75 73 6C 79 20 62 79 20 ..previously by
026780: 74 68 65 20 75 73 65 90 20 6F 66 90 20 4C 45 56 the use. of. LEV
026790: 45 4C 2E 90 20 4F 6E 63 65 90 20 74 68 65 20 73 EL.. Once. the s
0267A0: 74 61 74 65 20 68 61 73 20 0D 8A 09 62 65 65 6E tate has ...been
0267B0: 20 73 65 74 20 69 74 20 77 69 6C 6C 20 6A 75 6D set it will jum
0267C0: 70 90 20 74 6F 90 20 61 64 64 72 65 73 73 2E 90 p. to. address..
0267D0: 20 53 65 65 20 73 65 63 74 69 6F 6E 20 39 20 66 See section 9 f
0267E0: 6F 72 20 0D 8A 09 6D 6F 72 65 20 64 65 74 61 69 or ...more detai
0267F0: 6C 73 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 ls.....Returns:.
026800: 62 65 20 72 65 74 75 72 6E 65 64 2E 20 54 68 65 be returned. The
026810: 20 0D 8A 09 72 65 74 75 72 6E 65 64 20 76 61 6C ...returned val
026820: 75 65 73 20 6F 66 20 74 68 65 90 20 41 90 20 61 ues of the. A. a
026830: 6E 64 90 20 48 4C 90 20 72 65 67 69 73 74 65 72 nd. HL. register
026840: 73 20 66 72 6F 6D 20 74 68 65 20 0D 8A 09 42 44 s from the ...BD
026850: 4F 53 90 20 61 72 65 90 20 72 65 74 75 72 6E 65 OS. are. returne
026860: 64 90 20 69 6E 90 90 20 74 68 65 90 90 20 76 61 d. in.. the.. va
026870: 72 69 61 62 6C 65 73 90 90 20 63 90 20 61 6E 64 riables.. c. and
026880: 90 20 64 65 20 0D 8A 09 72 65 73 70 65 63 74 69 . de ...respecti
026890: 76 65 6C 79 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 vely.....Returns
0268A0: 3A 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 :.Nothing....Loc
0268B0: 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 20 6F ation:.CLIBHDR o
0268C0: 6E 6C 79 0D 0A 0D 0A 0D 0A 42 44 4F 53 42 28 63 nly......BDOSB(c
0268D0: 2C 64 65 29 09 0D 0A 0D 0A 45 66 66 65 63 74 3A ,de).....Effect:
0268E0: 09 54 68 69 73 20 69 73 20 73 69 6D 69 6C 61 72 .This is similar
0268F0: 20 74 6F 20 42 44 4F 53 41 90 20 65 78 63 65 70 to BDOSA. excep
026900: 74 90 20 74 68 61 74 20 72 65 73 75 6C 74 73 20 t. that results
026910: 61 72 65 20 6E 6F 74 20 0D 8A 09 72 65 74 75 72 are not ...retur
026920: 6E 65 64 2E 20 54 68 65 20 76 61 6C 75 65 73 20 ned. The values
026930: 6F 66 20 63 20 61 6E 64 20 64 65 20 61 72 65 20 of c and de are
026940: 70 61 73 73 65 64 2C 20 6E 6F 74 20 74 68 65 69 passed, not thei
026950: 72 20 0D 8A 09 61 64 64 72 65 73 73 65 73 2E 0D r ...addresses..
026960: 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E 6F 74 68 ...Returns:.Noth
026970: 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A ing....Location:
026980: 09 43 4C 49 42 48 44 52 20 6F 6E 6C 79 0D 0A 0D .CLIBHDR only...
026990: 0A 0D 0A 42 49 4F 53 28 6E 2C 40 61 29 0D 0A 0D ...BIOS(n,@a)...
0269A0: 0A 45 66 66 65 63 74 3A 09 42 49 4F 53 20 72 6F .Effect:.BIOS ro
0269B0: 75 74 69 6E 65 20 6E 20 69 73 20 63 61 6C 6C 65 utine n is calle
0269C0: 64 20 61 6E 64 20 74 68 65 20 76 61 6C 75 65 20 d and the value
0269D0: 72 65 74 75 72 6E 65 64 20 62 79 20 74 68 65 20 returned by the
0269E0: 0D 8A 09 42 49 4F 53 20 69 6E 20 41 20 69 73 20 ...BIOS in A is
0269F0: 72 65 74 75 72 6E 65 64 90 20 69 6E 90 20 74 68 returned. in. th
026A00: 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 Nothing....Locat
026A10: 69 6F 6E 3A 09 50 72 65 2D 64 65 66 69 6E 65 64 ion:.Pre-defined
026A20: 2C 20 70 72 65 2D 64 65 66 69 6E 65 64 0D 0A 0D , pre-defined...
026A30: 0A 3E 70 61 0D 0A 52 41 4E 44 4F 4D 28 29 0D 0A .>pa..RANDOM()..
026A40: 0D 0A 45 66 66 65 63 74 3A 09 54 68 69 73 20 66 ..Effect:.This f
026A50: 75 6E 63 74 69 6F 6E 90 20 72 65 74 75 72 6E 73 unction. returns
026A60: 90 20 61 90 20 73 65 71 75 65 6E 63 65 90 20 6F . a. sequence. o
026A70: 66 90 20 70 73 65 75 64 6F 2D 72 61 6E 64 6F 6D f. pseudo-random
026A80: 20 0D 8A 09 6E 75 6D 62 65 72 73 2E 20 54 68 65 ...numbers. The
026A90: 20 73 65 71 75 65 6E 63 65 20 77 69 6C 6C 90 20 sequence will.
026AA0: 61 6C 77 61 79 73 90 20 62 65 20 74 68 65 20 73 always. be the s
026AB0: 61 6D 65 20 75 6E 6C 65 73 73 20 0D 8A 09 74 68 ame unless ...th
026AC0: 65 20 73 65 65 64 20 69 73 20 69 6E 69 74 69 61 e seed is initia
026AD0: 6C 69 73 65 64 20 66 69 72 73 74 2E 20 54 68 65 lised first. The
026AE0: 20 73 65 65 64 20 69 73 20 73 74 6F 72 65 64 20 seed is stored
026AF0: 69 6E 20 61 20 0D 8A 09 73 74 61 74 69 63 20 76 in a ...static v
026B00: 61 72 69 61 62 6C 65 20 63 61 6C 6C 65 64 90 20 ariable called.
026B10: 27 72 61 6E 64 6F 6D 73 65 65 64 27 2C 90 20 61 'randomseed',. a
026B20: 6E 64 20 74 68 69 73 20 73 68 6F 75 6C 64 20 0D nd this should .
026B30: 8A 09 62 65 90 20 69 6E 69 74 69 61 6C 69 73 65 ..be. initialise
026B40: 64 90 20 74 6F 90 90 20 64 69 66 66 65 72 65 6E d. to.. differen
026B50: 74 90 90 20 76 61 6C 75 65 73 90 90 20 74 6F 90 t.. values.. to.
026B60: 20 70 72 6F 64 75 63 65 20 0D 8A 09 64 69 66 66 produce ...diff
026B70: 65 72 65 6E 74 20 73 65 71 75 65 6E 63 65 73 2E erent sequences.
026B80: 90 20 54 68 65 90 20 73 65 71 75 65 6E 63 65 90 . The. sequence.
026B90: 20 72 75 6E 73 90 20 74 68 72 6F 75 67 68 20 61 runs. through a
026BA0: 6C 6C 20 0D 8A 09 70 6F 73 73 69 62 6C 65 20 32 ll ...possible 2
026BB0: 20 62 79 74 65 20 76 61 6C 75 65 73 2E 0D 0A 0D byte values....
026BC0: 0A 52 65 74 75 72 6E 73 3A 09 41 20 72 61 6E 64 .Returns:.A rand
026BD0: 6F 6D 6C 79 20 67 65 6E 65 72 61 74 65 64 20 69 omly generated i
026BE0: 6E 74 65 67 65 72 2E 0D 0A 0D 0A 4C 6F 63 61 74 nteger.....Locat
026BF0: 69 6F 6E 3A 09 43 4C 49 42 48 44 52 31 2C 20 41 ion:.CLIBHDR1, A
026C00: 65 20 76 61 72 69 61 62 6C 65 20 61 2E 20 54 68 e variable a. Th
026C10: 65 20 61 64 64 72 65 73 73 20 0D 8A 09 6F 66 20 e address ...of
026C20: 61 20 6D 75 73 74 20 62 65 20 70 61 73 73 65 64 a must be passed
026C30: 2E 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69 . This routine i
026C40: 73 20 75 73 65 64 20 62 79 20 50 52 42 55 53 59 s used by PRBUSY
026C50: 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E 6F .....Returns:.No
026C60: 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F thing....Locatio
026C70: 6E 3A 09 43 4C 49 42 48 44 52 20 6F 6E 6C 79 0D n:.CLIBHDR only.
026C80: 0A 0D 0A 0D 0A 46 49 52 4D 57 41 52 45 28 61 64 .....FIRMWARE(ad
026C90: 64 72 65 73 73 2C 40 61 66 2C 40 62 63 2C 40 64 dress,@af,@bc,@d
026CA0: 65 2C 40 68 6C 2C 40 69 78 29 0D 0A 0D 0A 45 66 e,@hl,@ix)....Ef
026CB0: 66 65 63 74 3A 09 4F 6E 20 43 50 2F 4D 20 50 6C fect:.On CP/M Pl
026CC0: 75 73 2C 20 63 61 6C 6C 73 20 74 68 65 20 66 69 us, calls the fi
026CD0: 72 6D 77 61 72 65 20 52 4F 4D 20 28 43 50 43 36 rmware ROM (CPC6
026CE0: 31 32 38 20 6F 6E 6C 79 29 20 6F 72 20 0D 8A 09 128 only) or ...
026CF0: 74 68 65 20 65 78 74 65 6E 64 65 64 20 66 69 72 the extended fir
026D00: 6D 77 61 72 65 90 20 6A 75 6D 70 62 6C 6F 63 6B mware. jumpblock
026D10: 2E 90 20 54 68 65 20 76 61 6C 75 65 73 20 72 65 .. The values re
026D20: 74 75 72 6E 65 64 20 0D 8A 09 62 79 90 20 74 68 turned ...by. th
026D30: 65 90 20 66 69 72 6D 77 61 72 65 90 20 72 6F 75 e. firmware. rou
026D40: 74 69 6E 65 90 20 61 72 65 90 20 70 61 73 73 65 tine. are. passe
026D50: 64 90 20 62 61 63 6B 90 20 69 6E 90 20 74 68 65 d. back. in. the
026D60: 20 0D 8A 09 76 61 72 69 61 62 6C 65 73 2E 20 41 ...variables. A
026D70: 6C 6C 20 70 61 72 61 6D 65 74 65 72 73 20 4D 55 ll parameters MU
026D80: 53 54 20 62 65 20 73 75 70 70 6C 69 65 64 2E 0D ST be supplied..
026D90: 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E 6F 74 68 ...Returns:.Noth
026DA0: 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A ing....Location:
026DB0: 09 43 4C 49 42 48 44 52 31 20 6F 6E 6C 79 0D 0A .CLIBHDR1 only..
026DC0: 0D 0A 3E 70 61 0D 0A 54 41 49 4C 28 73 74 72 69 ..>pa..TAIL(stri
026DD0: 6E 67 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 ng)....Effect:.T
026DE0: 61 6B 65 73 20 61 90 20 76 65 63 74 6F 72 90 20 akes a. vector.
026DF0: 61 73 90 20 70 61 72 61 6D 65 74 65 72 90 20 61 as. parameter. a
026E00: 4C 49 42 48 44 52 31 0D 0A 0D 0A 0D 0A 52 45 4E LIBHDR1......REN
026E10: 41 4D 45 28 66 69 6C 65 6E 61 6D 65 31 2C 66 69 AME(filename1,fi
026E20: 6C 65 6E 61 6D 65 32 2C 62 75 66 66 65 72 29 0D lename2,buffer).
026E30: 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 65 20 66 ...Effect:.The f
026E40: 69 72 73 74 20 70 61 72 61 6D 65 74 65 72 20 69 irst parameter i
026E50: 73 20 61 20 73 74 72 69 6E 67 20 73 70 65 63 69 s a string speci
026E60: 66 79 69 6E 67 20 74 68 65 20 6E 61 6D 65 20 6F fying the name o
026E70: 66 20 0D 8A 09 61 20 66 69 6C 65 2E 20 54 68 65 f ...a file. The
026E80: 20 66 69 6C 65 20 69 73 90 20 72 65 6E 61 6D 65 file is. rename
026E90: 64 90 20 74 6F 90 20 74 68 65 20 73 65 63 6F 6E d. to. the secon
026EA0: 64 20 6E 61 6D 65 2E 20 54 68 65 20 0D 8A 09 43 d name. The ...C
026EB0: 50 2F 4D 20 76 65 72 73 69 6F 6E 20 72 65 71 75 P/M version requ
026EC0: 69 72 65 73 20 61 6E 90 20 38 32 90 20 77 6F 72 ires an. 82. wor
026ED0: 64 90 20 62 75 66 66 65 72 2C 20 74 68 65 20 41 d. buffer, the A
026EE0: 4D 53 44 4F 53 20 0D 8A 09 76 65 72 73 69 6F 6E MSDOS ...version
026EF0: 20 72 65 71 75 69 72 65 73 20 6E 6F 20 62 75 66 requires no buf
026F00: 66 65 72 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A fer.....Returns:
026F10: 09 54 52 55 45 20 69 66 20 74 68 65 20 6F 70 65 .TRUE if the ope
026F20: 72 61 74 69 6F 6E 20 73 75 63 63 65 65 64 65 64 ration succeeded
026F30: 2C 20 46 41 4C 53 45 20 69 66 20 61 20 64 69 73 , FALSE if a dis
026F40: 63 20 65 72 72 6F 72 20 0D 8A 09 6F 63 63 75 72 c error ...occur
026F50: 72 65 64 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E red.....Location
026F60: 3A 09 43 4C 49 42 48 44 52 31 2C 20 41 4C 49 42 :.CLIBHDR1, ALIB
026F70: 48 44 52 31 0D 0A 0D 0A 09 45 78 61 6D 70 6C 65 HDR1.....Example
026F80: 73 3A 0D 0A 09 72 65 6E 61 6D 65 28 22 6F 6C 64 s:...rename("old
026F90: 6E 61 6D 65 22 2C 22 6E 65 77 6E 61 6D 65 22 2C name","newname",
026FA0: 62 75 66 66 65 72 29 20 2F 2F 20 43 50 2F 4D 20 buffer) // CP/M
026FB0: 76 65 72 73 69 6F 6E 0D 0A 09 72 65 6E 61 6D 65 version...rename
026FC0: 28 22 6F 6C 64 6E 61 6D 65 22 2C 22 6E 65 77 6E ("oldname","newn
026FD0: 61 6D 65 22 29 20 20 20 20 20 20 20 20 2F 2F 90 ame") //.
026FE0: 41 4D 53 44 4F 53 20 76 65 72 73 69 6F 6E 0D 0A AMSDOS version..
026FF0: 0D 0A 0D 0A 53 54 4F 50 28 72 65 74 75 72 6E 63 ....STOP(returnc
027000: 6E 64 90 20 73 74 6F 72 65 73 90 20 74 68 65 90 nd. stores. the.
027010: 20 43 50 2F 4D 20 0D 8A 09 63 6F 6D 6D 61 6E 64 CP/M ...command
027020: 20 74 61 69 6C 20 28 66 72 6F 6D 20 23 78 38 30 tail (from #x80
027030: 29 90 20 69 6E 90 20 74 68 65 90 20 76 65 63 74 ). in. the. vect
027040: 6F 72 20 61 73 20 61 20 73 74 72 69 6E 67 2E 20 or as a string.
027050: 0D 8A 09 54 68 69 73 20 61 6C 6C 6F 77 73 20 42 ...This allows B
027060: 43 50 4C 20 70 72 6F 67 72 61 6D 73 90 20 74 6F CPL programs. to
027070: 90 20 61 63 63 65 73 73 20 70 61 72 61 6D 65 74 . access paramet
027080: 65 72 73 20 74 79 70 65 64 20 0D 8A 09 6F 6E 20 ers typed ...on
027090: 74 68 65 20 43 50 2F 4D 90 20 63 6F 6D 6D 61 6E the CP/M. comman
0270A0: 64 90 20 6C 69 6E 65 2E 90 20 54 68 65 90 20 76 d. line.. The. v
0270B0: 65 63 74 6F 72 90 20 73 68 6F 75 6C 64 20 62 65 ector. should be
0270C0: 20 36 34 20 0D 8A 09 77 6F 72 64 73 20 6C 6F 6E 64 ...words lon
0270D0: 67 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E g.....Returns:.N
0270E0: 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 othing....Locati
0270F0: 6F 6E 3A 09 43 4C 49 42 48 44 52 31 20 6F 6E 6C on:.CLIBHDR1 onl
027100: 79 0D 0A 0D 0A 0D 0A 0D 0A E2 28 68 29 20 52 6F y.........(h) Ro
027110: 75 74 69 6E 65 73 20 70 72 6F 76 69 64 65 64 20 utines provided
027120: 69 6E 20 74 68 65 20 41 4D 53 44 4F 53 20 6C 69 in the AMSDOS li
027130: 62 72 61 72 69 65 73 20 6F 6E 6C 79 E2 0D 0A 0D braries only....
027140: 0A 0D 0A 45 58 54 45 52 4E 41 4C 28 63 6F 6D 6D ...EXTERNAL(comm
027150: 61 6E 64 2C 6E 70 61 72 6D 73 2C 70 61 72 6D 62 and,nparms,parmb
027160: 6C 6F 63 6B 29 0D 0A 0D 0A 45 66 66 65 63 74 3A lock)....Effect:
027170: 09 54 68 69 73 90 20 61 6C 6C 6F 77 73 90 20 61 .This. allows. a
027180: 90 20 42 43 50 4C 90 20 70 72 6F 67 72 61 6D 90 . BCPL. program.
027190: 20 74 6F 90 20 61 63 63 65 73 73 90 20 61 6E 90 to. access. an.
0271A0: 20 41 4D 53 44 4F 53 20 0D 8A 09 65 78 74 65 72 AMSDOS ...exter
0271B0: 6E 61 6C 20 63 6F 6D 6D 61 6E 64 2E 20 49 74 20 nal command. It
0271C0: 69 73 20 75 73 65 64 20 62 79 20 44 45 4C 45 54 is used by DELET
0271D0: 45 20 61 6E 64 20 52 45 4E 41 4D 45 2E 20 54 68 E and RENAME. Th
0271E0: 65 20 0D 8A 09 70 61 72 61 6D 65 74 65 72 73 20 e ...parameters
0271F0: 61 72 65 20 70 61 73 73 65 64 90 20 69 6E 90 20 are passed. in.
027200: 6F 64 65 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 ode)....Effect:.
027210: 45 78 65 63 75 74 69 6F 6E 20 6F 66 20 74 68 65 Execution of the
027220: 20 70 72 6F 67 72 61 6D 90 20 74 65 72 6D 69 6E program. termin
027230: 61 74 65 73 2E 90 20 55 6E 64 65 72 20 43 50 2F ates.. Under CP/
027240: 4D 20 50 6C 75 73 20 0D 8A 09 74 68 65 20 73 75 M Plus ...the su
027250: 70 70 6C 69 65 64 20 70 61 72 61 6D 65 74 65 72 pplied parameter
027260: 90 20 69 73 90 20 75 73 65 64 90 20 74 6F 90 20 . is. used. to.
027270: 73 65 74 90 20 74 68 65 20 70 72 6F 67 72 61 6D set. the program
027280: 20 0D 8A 09 72 65 74 75 72 6E 20 63 6F 64 65 2E ...return code.
027290: 90 20 42 79 90 20 63 6F 6E 76 65 6E 74 69 6F 6E . By. convention
0272A0: 90 20 61 90 20 72 65 74 75 72 6E 90 20 63 6F 64 . a. return. cod
0272B0: 65 90 20 62 65 74 77 65 65 6E 20 0D 8A 09 23 78 e. between ...#x
0272C0: 46 46 30 30 20 61 6E 64 20 23 78 46 46 46 45 20 FF00 and #xFFFE
0272D0: 69 73 20 61 6E 20 65 72 72 6F 72 20 63 6F 64 65 is an error code
0272E0: 2E 20 54 68 65 20 72 65 74 75 72 6E 20 63 6F 64 . The return cod
0272F0: 65 20 69 73 20 0D 8A 09 69 67 6E 6F 72 65 64 20 e is ...ignored
027300: 75 6E 64 65 72 20 43 50 2F 4D 20 32 2E 32 20 61 under CP/M 2.2 a
027310: 6E 64 20 41 4D 53 44 4F 53 2E 0D 0A 0D 0A 52 65 nd AMSDOS.....Re
027320: 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D 0A turns:.Nothing..
027330: 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 ..Location:.CLIB
027340: 48 44 52 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A HDR1, ALIBHDR1..
027350: 0D 0A 3E 70 61 0D 0A 55 50 50 45 52 43 41 53 45 ..>pa..UPPERCASE
027360: 28 63 68 61 72 29 0D 0A 0D 0A 45 66 66 65 63 74 (char)....Effect
027370: 3A 09 54 68 69 73 20 69 73 20 74 68 65 20 73 61 :.This is the sa
027380: 6D 65 20 61 73 20 43 41 50 49 54 41 4C 43 48 2E me as CAPITALCH.
027390: 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 68 65 ....Returns:.The
0273A0: 20 63 6F 6E 76 65 72 74 65 64 20 63 68 61 72 61 converted chara
0273B0: 63 74 65 72 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E cter....Location
0273C0: 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 :.CLIBHDR, ALIBH
0273D0: 44 52 0D 0A 0D 0A 0D 0A 56 45 52 53 49 4F 4E 28 DR......VERSION(
0273E0: 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 52 65 74 )....Effect:.Ret
0273F0: 75 72 6E 73 20 61 90 20 6E 75 6D 62 65 72 90 20 urns a. number.
027400: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
027410: 21 00 01 00 02 09 4E E5 21 00 C1 02 00 00 00 02 !.....N.!.......
027420: 21 00 C6 02 00 00 00 02 21 00 C2 02 00 00 00 02 !.......!.......
027430: 21 00 C7 02 00 00 00 02 21 00 C3 02 00 00 00 02 !.......!.......
027440: 21 00 C8 02 00 00 00 02 21 00 C4 02 00 00 00 02 !.......!.......
027450: 21 00 C9 02 00 00 00 02 21 00 C5 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 68 65 90 20 66 6F 72 6D 90 20 72 65 71 75 69 the. form. requi
027510: 72 65 64 90 20 62 79 20 74 68 65 20 0D 8A 09 66 red. by the ...f
027520: 69 72 6D 77 61 72 65 20 66 6F 72 90 20 63 61 6C irmware for. cal
027530: 6C 69 6E 67 90 20 61 6E 90 20 65 78 74 65 72 6E ling. an. extern
027540: 61 6C 90 20 63 6F 6D 6D 61 6E 64 2E 90 20 53 65 al. command.. Se
027550: 65 20 74 68 65 20 0D 8A 09 44 45 4C 45 54 45 20 e the ...DELETE
027560: 61 6E 64 20 52 45 4E 41 4D 45 20 72 6F 75 74 69 and RENAME routi
027570: 6E 65 73 20 69 6E 90 20 41 4C 49 42 48 44 52 31 nes in. ALIBHDR1
027580: 20 66 6F 72 20 64 65 74 61 69 6C 73 20 6F 66 20 for details of
027590: 0D 8A 09 68 6F 77 20 74 6F 20 75 73 65 20 74 68 ...how to use th
0275A0: 69 73 20 72 6F 75 74 69 6E 65 2E 0D 0A 0D 0A 52 is routine.....R
0275B0: 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D eturns:.Nothing.
0275C0: 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 41 4C 49 ...Location:.ALI
0275D0: 42 48 44 52 31 20 6F 6E 6C 79 0D 0A 0D 0A 0D 0A BHDR1 only......
0275E0: 54 49 4D 45 28 29 0D 0A 0D 0A 45 66 66 65 63 74 TIME()....Effect
0275F0: 3A 09 52 65 74 75 72 6E 73 90 20 74 68 65 90 20 :.Returns. the.
027600: 74 69 6D 65 90 20 69 6E 90 20 75 6E 69 74 73 90 time. in. units.
027610: 90 20 6F 66 90 20 31 2F 33 30 30 90 20 73 65 63 . of. 1/300. sec
027620: 6F 6E 64 2C 90 20 61 73 20 0D 8A 09 6D 61 69 6E ond,. as ...main
027630: 74 61 69 6E 65 64 20 62 79 20 74 68 65 20 41 4D tained by the AM
027640: 53 44 4F 53 20 66 69 72 6D 77 61 72 65 2E 0D 0A SDOS firmware...
027650: 0D 0A 52 65 74 75 72 6E 73 3A 09 54 68 65 20 74 ..Returns:.The t
027660: 69 6D 65 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A ime....Location:
027670: 09 41 4C 49 42 48 44 52 31 20 6F 6E 6C 79 0D 0A .ALIBHDR1 only..
027680: 3E 70 61 0D 0A E2 28 69 29 20 52 6F 75 74 69 6E >pa...(i) Routin
027690: 65 73 20 70 72 6F 76 69 64 65 64 20 6F 6E 6C 79 es provided only
0276A0: 20 66 6F 72 20 63 6F 6D 70 61 74 69 62 69 6C 69 for compatibili
0276B0: 74 79 E2 0D 0A 0D 0A 3E 2D 2D 2D 2D 2D 2D 2D 21 ty.....>-------!
0276C0: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 -------!-------!
0276D0: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 -------!-------!
0276E0: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 -------!-------!
0276F0: 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A 54 -------!----R..T
027700: 20 0D 8A 70 65 6E 2C 20 70 6C 6F 74 2C 20 70 6C ..pen, plot, pl
027710: 6F 74 72 2C 90 20 72 65 6C 65 61 73 65 2C 90 20 otr,. release,.
027720: 72 73 78 2C 90 20 73 6F 75 6E 64 2C 90 20 73 70 rsx,. sound,. sp
027730: 65 65 64 69 6E 6B 2C 20 73 70 65 65 64 6B 65 79 eedink, speedkey
027740: 2C 20 73 74 72 65 61 6D 2C 20 0D 8A 73 74 72 73 , stream, ..strs
027750: 77 61 70 2C 20 74 61 67 2C 20 74 61 67 6F 66 66 wap, tag, tagoff
027760: 2C 20 74 72 61 6E 73 70 61 72 65 6E 74 2C 20 77 , transparent, w
027770: 69 6E 64 6F 77 2C 20 78 70 6F 73 2C 20 79 70 6F indow, xpos, ypo
027780: 73 0D 0A 0D 0A 0D 0A 0D 0A E2 28 6B 29 20 44 45 s.........(k) DE
027790: 42 55 47 E2 0D 0A 0D 0A 09 54 68 65 72 65 20 69 BUG......There i
0277A0: 73 20 6F 6E 65 20 66 75 72 74 68 65 72 90 20 6C s one further. l
0277B0: 69 62 72 61 72 79 90 20 72 6F 75 74 69 6E 65 90 ibrary. routine.
0277C0: 20 70 72 6F 76 69 64 65 64 2C 90 20 77 68 69 63 provided,. whic
0277D0: 68 20 69 73 20 75 73 65 66 75 6C 20 0D 8A 77 68 h is useful ..wh
0277E0: 65 6E 20 64 65 62 75 67 67 69 6E 67 20 70 72 6F en debugging pro
0277F0: 67 72 61 6D 73 2E 20 54 68 65 20 72 6F 75 74 69 grams. The routi
027800: 6E 65 2C 20 44 45 42 55 47 2C 20 69 73 20 73 75 ne, DEBUG, is su
027810: 70 70 6C 69 65 64 20 69 6E 20 61 20 73 65 70 61 pplied in a sepa
027820: 72 61 74 65 20 0D 8A 66 69 6C 65 2C 20 61 6C 73 rate ..file, als
027830: 6F 20 63 61 6C 6C 65 64 20 27 44 45 42 55 47 27 o called 'DEBUG'
027840: 2C 20 61 6E 64 20 70 72 6F 76 69 64 65 73 20 76 , and provides v
027850: 61 72 69 6F 75 73 20 6F 70 74 69 6F 6E 73 20 66 arious options f
027860: 6F 72 20 64 69 73 70 6C 61 79 69 6E 67 20 0D 8A or displaying ..
027870: 76 61 72 69 61 62 6C 65 20 6E 61 6D 65 73 20 61 variable names a
027880: 6E 64 20 63 6F 6E 74 65 6E 74 73 2E 20 54 68 65 nd contents. The
027890: 73 65 90 20 6F 70 74 69 6F 6E 73 90 20 6D 61 79 se. options. may
0278A0: 20 62 65 20 63 68 61 6E 67 65 64 20 77 69 74 68 be changed with
0278B0: 20 6C 61 74 65 72 20 0D 8A 72 65 6C 65 61 73 65 later ..release
0278C0: 73 20 6F 66 20 42 43 50 4C 20 61 6E 64 20 73 6F s of BCPL and so
0278D0: 90 20 74 6F 90 20 65 6E 73 75 72 65 90 20 61 63 . to. ensure. ac
0278E0: 63 75 72 61 63 79 2C 90 20 65 78 61 63 74 20 64 curacy,. exact d
0278F0: 65 74 61 69 6C 73 20 61 72 65 20 6F 6E 6C 79 20 etails are only
027900: 68 65 73 65 20 61 72 65 20 72 6F 75 74 69 6E 65 hese are routine
027910: 73 20 74 68 61 74 20 6D 61 79 20 62 65 20 75 73 s that may be us
027920: 65 64 20 69 6E 20 65 78 69 73 74 69 6E 67 20 42 ed in existing B
027930: 43 50 4C 20 70 72 6F 67 72 61 6D 73 2C 20 62 75 CPL programs, bu
027940: 74 20 74 68 65 20 0D 8A 69 6E 66 69 78 65 64 20 t the ..infixed
027950: 62 79 74 65 20 6F 70 65 72 61 74 6F 72 20 6E 6F byte operator no
027960: 77 20 6D 61 6B 65 73 20 74 68 65 69 72 20 75 73 w makes their us
027970: 65 20 75 6E 6E 65 63 65 73 73 61 72 79 2E 0D 0A e unnecessary...
027980: 3E 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 >--------------
027990: 4C 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D L-------!-------
0279A0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0279B0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
0279C0: 21 2D 2D 2D 2D 52 0D 0A 0D 0A 47 45 54 42 59 54 !----R....GETBYT
0279D0: 45 28 73 74 72 69 6E 67 2C 70 6F 73 29 0D 0A 0D E(string,pos)...
0279E0: 0A 45 66 66 65 63 74 3A 09 47 65 74 73 20 61 90 .Effect:.Gets a.
0279F0: 20 63 68 61 72 61 63 74 65 72 90 20 66 72 6F 6D character. from
027A00: 90 20 61 90 20 73 74 72 69 6E 67 2E 90 20 54 68 . a. string.. Th
027A10: 69 73 90 20 72 6F 75 74 69 6E 65 90 20 69 73 20 is. routine. is
027A20: 0D 8A 09 69 6E 63 6C 75 64 65 64 20 66 6F 72 20 ...included for
027A30: 63 6F 6D 70 61 74 69 62 69 6C 69 74 79 20 77 69 compatibility wi
027A40: 74 68 20 6F 6C 64 65 72 20 42 43 50 4C 20 73 79 th older BCPL sy
027A50: 73 74 65 6D 73 20 61 6E 64 20 0D 8A 09 77 6F 75 stems and ...wou
027A60: 6C 64 20 75 73 75 61 6C 6C 79 20 62 65 20 72 65 ld usually be re
027A70: 70 6C 61 63 65 64 20 62 79 3A 20 20 73 74 72 69 placed by: stri
027A80: 6E 67 25 70 6F 73 0D 0A 0D 0A 52 65 74 75 72 6E ng%pos....Return
027A90: 73 3A 09 54 68 65 20 63 68 61 72 61 63 74 65 72 s:.The character
027AA0: 20 66 72 6F 6D 20 74 68 65 20 73 74 72 69 6E 67 from the string
027AB0: 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C ....Location:.CL
027AC0: 49 42 48 44 52 31 2C 20 41 4C 49 42 48 44 52 31 IBHDR1, ALIBHDR1
027AD0: 0D 0A 0D 0A 0D 0A 50 41 43 4B 53 54 52 49 4E 47 ......PACKSTRING
027AE0: 28 76 65 63 74 6F 72 2C 73 74 72 69 6E 67 29 0D (vector,string).
027AF0: 0A 0D 0A 45 66 66 65 63 74 3A 09 50 61 63 6B 73 ...Effect:.Packs
027B00: 0D 8A 67 69 76 65 6E 20 69 6E 20 74 68 65 20 66 ..given in the f
027B10: 69 6C 65 2E 0D 0A 09 54 6F 20 75 73 65 20 44 45 ile....To use DE
027B20: 42 55 47 2C 20 70 75 74 20 74 68 65 90 20 64 69 BUG, put the. di
027B30: 72 65 63 74 69 76 65 90 20 27 47 45 54 90 20 22 rective. 'GET. "
027B40: 44 45 42 55 47 22 27 20 6E 65 61 72 20 74 68 65 DEBUG"' near the
027B50: 20 73 74 61 72 74 20 6F 66 20 0D 8A 74 68 65 20 start of ..the
027B60: 70 72 6F 67 72 61 6D 20 2D 2D 20 73 6F 20 69 74 program -- so it
027B70: 20 69 73 20 63 6F 6D 70 69 6C 65 64 20 61 66 74 is compiled aft
027B80: 65 72 20 74 68 65 20 6C 69 62 72 61 72 79 20 72 er the library r
027B90: 6F 75 74 69 6E 65 73 20 61 6E 64 20 62 65 66 6F outines and befo
027BA0: 72 65 20 0D 8A 74 68 65 20 66 69 72 73 74 20 74 re ..the first t
027BB0: 69 6D 65 20 44 45 42 55 47 20 69 73 20 63 61 6C ime DEBUG is cal
027BC0: 6C 65 64 2E 0D 0A 09 49 74 20 69 73 20 70 6F 73 led....It is pos
027BD0: 73 69 62 6C 65 20 74 6F 20 63 6F 6D 70 69 6C 65 sible to compile
027BE0: 20 74 68 65 90 20 70 72 6F 67 72 61 6D 20 77 69 the. program wi
027BF0: 74 68 6F 75 74 20 44 45 42 55 47 20 62 65 69 6E thout DEBUG bein
027C00: 67 20 63 61 6C 6C 65 64 2C 20 0D 8A 62 75 74 20 g called, ..but
027C10: 77 69 74 68 6F 75 74 20 74 68 65 20 6E 65 65 64 without the need
027C20: 20 74 6F 90 20 72 65 6D 6F 76 65 90 20 74 68 65 to. remove. the
027C30: 90 20 63 61 6C 6C 73 20 74 68 65 6D 73 65 6C 76 . calls themselv
027C40: 65 73 2E 20 53 69 6D 70 6C 79 20 72 65 70 6C 61 es. Simply repla
027C50: 63 65 20 0D 8A 27 47 45 54 91 22 44 45 42 55 47 ce ..'GET."DEBUG
027C60: 22 27 20 62 79 20 27 4C 45 54 20 64 65 62 75 67 "' by 'LET debug
027C70: 28 29 20 42 45 20 52 45 54 55 52 4E 27 2E 20 54 () BE RETURN'. T
027C80: 68 69 73 20 77 69 6C 6C 20 73 75 62 73 74 69 74 his will substit
027C90: 75 74 65 20 61 20 64 75 6D 6D 79 20 0D 8A 72 6F ute a dummy ..ro
027CA0: 75 74 69 6E 65 2E 0D 0A 0D 0A 3E 70 61 0D 0A 1A utine.....>pa...
027CB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027CC0: 2F 83 00 21 04 68 69 73 20 77 69 6C 6C 20 73 75 /..!.his will su
027CD0: 62 73 74 69 74 75 74 65 20 61 20 64 75 6D 6D 79 bstitute a dummy
027CE0: 20 0D 8A 72 6F 75 74 69 6E 65 2E 0D 0A 0D 0A 3E ..routine.....>
027CF0: 70 61 0D 0A 1A 00 00 00 00 00 00 00 00 00 00 00 pa..............
027D00: 20 61 20 76 65 63 74 6F 72 20 63 6F 6E 74 61 69 a vector contai
027D10: 6E 69 6E 67 20 6F 6E 65 90 20 63 68 61 72 61 63 ning one. charac
027D20: 74 65 72 20 70 65 72 20 77 6F 72 64 20 69 6E 74 ter per word int
027D30: 6F 20 0D 8A 09 61 20 73 74 72 69 6E 67 90 20 63 o ...a string. c
027D40: 6F 6E 74 61 69 6E 69 6E 67 90 20 74 77 6F 90 20 ontaining. two.
027D50: 63 68 61 72 61 63 74 65 72 73 90 20 70 65 72 90 characters. per.
027D60: 20 77 6F 72 64 2E 20 54 68 69 73 20 0D 8A 09 72 word. This ...r
027D70: 6F 75 74 69 6E 65 20 69 73 20 69 6E 63 6C 75 64 outine is includ
027D80: 65 64 20 66 6F 72 90 20 63 6F 6D 70 61 74 69 62 ed for. compatib
027D90: 69 6C 69 74 79 20 77 69 74 68 20 6F 6C 64 65 72 ility with older
027DA0: 20 42 43 50 4C 20 0D 8A 09 73 79 73 74 65 6D 73 BCPL ...systems
027DB0: 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E 6F .....Returns:.No
027DC0: 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F thing....Locatio
027DD0: 6E 3A 09 43 4C 49 42 48 44 52 31 2C 20 41 4C 49 n:.CLIBHDR1, ALI
027DE0: 42 48 44 52 31 0D 0A 0D 0A 0D 0A 50 55 54 42 59 BHDR1......PUTBY
027DF0: 54 45 28 73 74 72 69 6E 67 2C 70 6F 73 2C 63 68 TE(string,pos,ch
027E00: 61 72 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 50 ar)....Effect:.P
027E10: 75 74 73 20 61 90 20 63 68 61 72 61 63 74 65 72 uts a. character
027E20: 90 20 69 6E 74 6F 90 20 61 90 20 73 74 72 69 6E . into. a. strin
027E30: 67 2E 90 20 54 68 69 73 90 20 72 6F 75 74 69 6E g.. This. routin
027E40: 65 90 20 69 73 20 0D 8A 09 69 6E 63 6C 75 64 65 e. is ...include
027E50: 64 20 66 6F 72 20 63 6F 6D 70 61 74 69 62 69 6C d for compatibil
027E60: 69 74 79 90 20 77 69 74 68 90 20 6F 6C 64 65 72 ity. with. older
027E70: 90 20 42 43 50 4C 20 73 79 73 74 65 6D 73 2C 20 . BCPL systems,
027E80: 0D 8A 09 61 6E 64 20 77 6F 75 6C 64 20 75 73 75 ...and would usu
027E90: 61 6C 6C 79 20 62 65 20 72 65 70 6C 61 63 65 64 ally be replaced
027EA0: 20 62 79 3A 09 0D 0A 09 09 73 74 72 69 6E 67 25 by:.....string%
027EB0: 70 6F 73 20 3A 3D 20 63 68 61 72 0D 0A 0D 0A 52 pos := char....R
027EC0: 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D eturns:.Nothing.
027ED0: 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 ...Location:.CLI
027EE0: 42 48 44 52 31 2C 20 41 4C 49 42 48 44 52 31 0D BHDR1, ALIBHDR1.
027EF0: 0A 0D 0A 0D 0A 55 4E 50 41 43 4B 53 54 52 49 4E .....UNPACKSTRIN
027F00: 00 42 43 50 4C 4D 33 20 20 20 20 20 00 00 00 00 .BCPLM3 ....
027F10: 00 00 0A 00 00 C6 06 00 C5 59 00 00 00 00 00 00 .........Y......
027F20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027F30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027F40: C5 59 00 53 05 65 0D 0A 20 20 20 20 20 20 20 20 .Y.S.e..
027F50: 55 6E 65 78 70 65 63 74 65 64 20 6E 6F 64 65 20 Unexpected node
027F60: 69 6E 20 65 78 70 72 65 73 73 69 6F 6E 0D 0A 20 in expression..
027F70: 20 20 20 20 20 20 20 44 65 63 6C 61 72 61 74 69 Declarati
027F80: 3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D >---!-----!-----
027F90: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
027FA0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
027FB0: 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D !-------!-------
027FC0: 21 2D 2D 2D 2D 52 0D 0A 3E 70 6E 20 34 39 0D 0A !----R..>pn 49..
027FD0: 3E 74 6D 20 33 0D 0A 3E 62 6D 20 31 31 0D 0A 3E >tm 3..>bm 11..>
027FE0: 68 6D 20 30 0D 0A 3E 66 6D 20 32 0D 0A 3E 66 6F hm 0..>fm 2..>fo
027FF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
028000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
028010: 20 20 25 0D 0A 3E 63 65 20 E2 39 2E 20 44 49 46 %..>ce .9. DIF
028020: 46 45 52 45 4E 43 45 53 20 46 52 4F 4D 20 53 54 FERENCES FROM ST
028030: 41 4E 44 41 52 44 20 42 43 50 4C E2 0D 0A 0D 0A ANDARD BCPL.....
028040: 0D 0A E2 54 68 65 20 49 4E 4C 49 4E 45 20 63 6F ...The INLINE co
028050: 6D 6D 61 6E 64 E2 0D 0A 0D 0A 09 54 68 69 73 20 mmand......This
028060: 69 73 20 61 6E 20 65 78 74 65 6E 73 69 6F 6E 20 is an extension
028070: 74 6F 20 74 68 65 20 6E 6F 72 6D 61 6C 20 42 43 to the normal BC
028080: 50 4C 20 63 6F 6D 6D 61 6E 64 20 73 65 74 20 61 PL command set a
028090: 6E 64 20 61 6C 6C 6F 77 73 20 5A 38 30 20 0D 8A nd allows Z80 ..
0280A0: 63 6F 64 65 20 74 6F 20 62 65 90 20 69 6E 63 6F code to be. inco
0280B0: 72 70 6F 72 61 74 65 64 90 20 64 69 72 65 63 74 rporated. direct
0280C0: 6C 79 90 20 69 6E 74 6F 90 20 61 90 20 42 43 50 ly. into. a. BCP
0280D0: 4C 90 20 70 72 6F 67 72 61 6D 2E 20 54 68 65 20 L. program. The
0280E0: 69 6E 6C 69 6E 65 20 0D 8A 63 6F 6D 6D 61 6E 64 inline ..command
0280F0: 20 69 73 20 66 6F 6C 6C 6F 77 65 64 20 62 79 20 is followed by
028100: 47 28 73 74 72 69 6E 67 2C 76 65 63 74 6F 72 29 G(string,vector)
028110: 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 55 6E 70 61 ....Effect:.Unpa
028120: 63 6B 73 20 61 20 73 74 72 69 6E 67 90 20 63 6F cks a string. co
028130: 6E 74 61 69 6E 69 6E 67 90 20 74 77 6F 90 20 63 ntaining. two. c
028140: 68 61 72 61 63 74 65 72 73 20 70 65 72 20 77 6F haracters per wo
028150: 72 64 20 0D 8A 09 69 6E 74 6F 20 61 20 76 65 63 rd ...into a vec
028160: 74 6F 72 20 63 6F 6E 74 61 69 6E 69 6E 67 20 6F tor containing o
028170: 6E 65 90 20 63 68 61 72 61 63 74 65 72 20 70 65 ne. character pe
028180: 72 20 77 6F 72 64 2E 20 54 68 69 73 20 0D 8A 09 r word. This ...
028190: 72 6F 75 74 69 6E 65 20 69 73 20 69 6E 63 6C 75 routine is inclu
0281A0: 64 65 64 20 66 6F 72 90 20 63 6F 6D 70 61 74 69 ded for. compati
0281B0: 62 69 6C 69 74 79 20 77 69 74 68 20 6F 6C 64 65 bility with olde
0281C0: 72 20 42 43 50 4C 20 0D 8A 09 73 79 73 74 65 6D r BCPL ...system
0281D0: 73 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E s.....Returns:.N
0281E0: 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 othing....Locati
0281F0: 6F 6E 3A 09 43 4C 49 42 48 44 52 31 2C 20 41 4C on:.CLIBHDR1, AL
028200: 49 42 48 44 52 31 0D 0A 3E 70 61 0D 0A E2 28 6A IBHDR1..>pa...(j
028210: 29 20 41 4D 53 44 4F 53 20 47 72 61 70 68 69 63 ) AMSDOS Graphic
028220: 73 20 61 6E 64 20 6F 74 68 65 72 20 72 6F 75 74 s and other rout
028230: 69 6E 65 73 E2 0D 0A 0D 0A 3E 2D 2D 2D 21 2D 2D ines.....>---!--
028240: 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D ---!-----!------
028250: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -!-------!------
028260: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -!-------!------
028270: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D -!-------!----R.
028280: 0A 09 54 68 65 73 65 20 72 6F 75 74 69 6E 65 73 ..These routines
028290: 20 61 72 65 20 69 6E 63 6C 75 64 65 64 20 69 6E are included in
0282A0: 20 74 68 65 20 66 69 6C 65 20 22 41 4D 53 44 4F the file "AMSDO
0282B0: 53 22 2C 20 61 6E 64 20 61 72 65 20 72 65 6C 65 S", and are rele
0282C0: 76 61 6E 74 20 0D 8A 6F 6E 6C 79 20 74 6F 20 43 vant ..only to C
0282D0: 50 43 20 6D 61 63 68 69 6E 65 73 2E 20 54 68 65 PC machines. The
0282E0: 79 90 20 70 72 6F 76 69 64 65 90 20 74 68 65 90 y. provide. the.
0282F0: 20 6D 65 61 6E 73 90 20 66 6F 72 20 61 20 42 43 means. for a BC
028300: 61 90 20 6C 69 73 74 90 20 6F 66 90 20 63 6F 6E a. list. of. con
028310: 73 74 61 6E 74 73 20 73 65 70 61 72 61 74 65 64 stants separated
028320: 20 62 79 20 63 6F 6D 6D 61 73 2E 20 54 68 65 20 by commas. The
028330: 0D 8A 6C 6F 77 20 62 79 74 65 20 6F 66 20 74 68 ..low byte of th
028340: 65 73 65 20 63 6F 6E 73 74 61 6E 74 73 90 20 69 ese constants. i
028350: 73 90 20 74 61 6B 65 6E 90 20 61 6E 64 20 69 6E s. taken. and in
028360: 73 65 72 74 65 64 20 64 69 72 65 63 74 6C 79 20 serted directly
028370: 69 6E 74 6F 20 74 68 65 20 0D 8A 6F 62 6A 65 63 into the ..objec
028380: 74 20 63 6F 64 65 2E 20 54 68 69 73 20 61 6C 6C t code. This all
028390: 6F 77 73 20 70 72 6F 63 65 64 75 72 65 73 20 74 ows procedures t
0283A0: 6F 20 63 61 6C 6C 20 66 69 72 6D 77 61 72 65 20 o call firmware
0283B0: 72 6F 75 74 69 6E 65 73 20 65 74 63 2E 20 61 6E routines etc. an
0283C0: 64 20 0D 8A 68 61 73 20 62 65 65 6E 20 75 73 65 d ..has been use
0283D0: 64 20 69 6E 90 20 74 68 65 90 20 4C 49 42 48 44 d in. the. LIBHD
0283E0: 52 90 20 66 69 6C 65 73 2E 90 20 49 6E 90 20 6F R. files.. In. o
0283F0: 72 64 65 72 90 20 74 6F 20 75 73 65 20 74 68 69 rder. to use thi
028400: 73 20 66 61 63 69 6C 69 74 79 20 0D 8A 70 72 6F s facility ..pro
028410: 70 65 72 6C 79 20 79 6F 75 20 6D 75 73 74 90 20 perly you must.
028420: 62 65 90 20 61 77 61 72 65 90 20 6F 66 90 20 74 be. aware. of. t
028430: 68 65 90 20 77 61 79 90 20 74 68 61 74 90 20 74 he. way. that. t
028440: 68 65 90 20 63 6F 6D 70 69 6C 65 72 20 73 74 6F he. compiler sto
028450: 72 65 73 20 0D 8A 76 61 72 69 61 62 6C 65 73 20 res ..variables
028460: 61 6E 64 20 72 65 67 69 73 74 65 72 73 20 77 68 and registers wh
028470: 69 63 68 90 20 6D 75 73 74 90 20 62 65 90 20 6C ich. must. be. l
028480: 65 66 74 90 20 69 6E 74 61 63 74 2E 90 20 53 65 eft. intact.. Se
028490: 65 20 61 70 70 65 6E 64 69 78 20 31 20 0D 8A 28 e appendix 1 ..(
0284A0: 74 65 63 68 6E 69 63 61 6C 20 69 6E 66 6F 72 6D technical inform
0284B0: 61 74 69 6F 6E 29 2E 0D 0A 0D 0A 09 65 2E 67 2E ation)......e.g.
0284C0: 20 20 49 4E 4C 49 4E 45 20 32 30 35 2C 23 78 35 INLINE 205,#x5
0284D0: 41 2C 23 78 42 42 0D 0A 0D 0A 77 69 6C 6C 20 63 A,#xBB....will c
0284E0: 61 6C 6C 20 74 68 65 20 41 4D 53 44 4F 53 20 70 all the AMSDOS p
0284F0: 72 69 6E 74 20 63 68 61 72 61 63 74 65 72 20 72 rint character r
028500: 50 4C 20 70 72 6F 67 72 61 6D 20 74 6F 20 0D 8A PL program to ..
028510: 61 63 63 65 73 73 20 74 68 65 20 63 6F 6D 70 75 access the compu
028520: 74 65 72 27 73 90 20 67 72 61 70 68 69 63 73 90 ter's. graphics.
028530: 20 61 6E 64 90 20 6F 74 68 65 72 90 20 66 69 72 and. other. fir
028540: 6D 77 61 72 65 90 20 66 61 63 69 6C 69 74 69 65 mware. facilitie
028550: 73 2C 20 61 6E 64 20 0D 8A 69 6E 20 6D 6F 73 74 s, and ..in most
028560: 20 63 61 73 65 73 20 63 6F 72 72 65 73 70 6F 6E cases correspon
028570: 64 20 64 69 72 65 63 74 6C 79 90 20 74 6F 90 20 d directly. to.
028580: 61 20 4C 6F 63 6F 6D 6F 74 69 76 65 20 42 41 53 a Locomotive BAS
028590: 49 43 20 63 6F 6D 6D 61 6E 64 2E 20 46 6F 72 20 IC command. For
0285A0: 0D 8A 64 65 74 61 69 6C 73 20 6F 66 20 68 6F 77 ..details of how
0285B0: 20 74 6F 20 75 73 65 90 20 74 68 65 73 65 90 20 to use. these.
0285C0: 72 6F 75 74 69 6E 65 73 90 20 63 6F 6E 73 75 6C routines. consul
0285D0: 74 20 74 68 65 20 66 69 6C 65 20 41 4D 53 44 4F t the file AMSDO
0285E0: 53 2C 20 77 68 69 63 68 20 0D 8A 6C 69 73 74 73 S, which ..lists
0285F0: 20 74 68 65 20 65 71 75 69 76 61 6C 65 6E 74 20 the equivalent
028600: 42 41 53 49 43 20 72 6F 75 74 69 6E 65 73 2E 0D BASIC routines..
028610: 0A 0D 0A 4C 69 73 74 20 6F 66 20 72 6F 75 74 69 ...List of routi
028620: 6E 65 73 3A 0D 0A 0D 0A 62 6F 72 64 65 72 2C 20 nes:....border,
028630: 63 6C 67 2C 20 63 6C 73 2C 20 63 75 72 73 64 69 clg, cls, cursdi
028640: 2C 20 63 75 72 73 65 6E 2C 90 20 63 75 72 73 6F , cursen,. curso
028650: 66 66 2C 90 20 63 75 72 73 6F 6E 2C 20 64 72 61 ff,. curson, dra
028660: 77 2C 20 64 72 61 77 72 2C 20 65 6E 74 2C 20 0D w, drawr, ent, .
028670: 8A 65 6E 76 2C 20 66 72 61 6D 65 2C 20 67 70 65 .env, frame, gpe
028680: 6E 2C 20 67 70 61 70 65 72 2C 20 67 74 65 73 74 n, gpaper, gtest
028690: 2C 90 20 67 74 65 73 74 72 2C 90 20 67 77 69 6E ,. gtestr,. gwin
0286A0: 64 6F 77 2C 20 67 77 72 63 68 2C 20 69 6E 6B 2C dow, gwrch, ink,
0286B0: 20 69 6E 6B 65 79 2C 20 0D 8A 69 6E 6B 6D 6F 64 inkey, ..inkmod
0286C0: 65 2C 20 6B 65 79 76 61 6C 69 64 2C 20 6C 6F 63 e, keyvalid, loc
0286D0: 61 74 65 2C 20 6D 6F 64 65 2C 90 20 6D 6F 76 65 ate, mode,. move
0286E0: 2C 90 20 6D 6F 76 65 72 2C 20 6F 70 61 71 75 65 ,. mover, opaque
0286F0: 2C 20 6F 72 69 67 69 6E 2C 20 70 61 70 65 72 2C , origin, paper,
028700: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
028710: 22 00 01 00 02 09 4E E5 22 00 C1 02 00 00 00 02 ".....N.".......
028720: 22 00 C6 02 00 00 00 02 22 00 C2 02 00 00 00 02 ".......".......
028730: 22 00 C7 02 00 00 00 02 22 00 C3 02 00 00 00 02 ".......".......
028740: 22 00 C8 02 00 00 00 02 22 00 C4 02 00 00 00 02 ".......".......
028750: 22 00 C9 02 00 00 00 02 22 00 C5 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: 6F 75 74 69 6E 65 20 2D 2D 20 54 58 54 20 4F 55 outine -- TXT OU
028810: 54 50 55 54 2E 0D 0A 0D 0A 0D 0A E2 54 68 65 20 TPUT........The
028820: 69 6E 66 69 78 65 64 20 62 79 74 65 20 6F 70 65 infixed byte ope
028830: 72 61 74 6F 72 20 25 E2 0D 0A 0D 0A 09 54 68 69 rator %......Thi
028840: 73 20 69 73 20 61 6E 20 65 78 74 65 6E 73 69 6F s is an extensio
028850: 6E 90 20 74 6F 90 20 73 74 61 6E 64 61 72 64 90 n. to. standard.
028860: 20 42 43 50 4C 90 20 77 68 69 63 68 90 20 69 73 BCPL. which. is
028870: 20 73 75 70 70 6F 72 74 65 64 2E 20 54 68 65 20 supported. The
028880: 0D 8A 69 6E 66 69 78 65 64 20 62 79 74 65 20 6F ..infixed byte o
028890: 70 65 72 61 74 6F 72 20 77 69 6C 6C 20 65 78 74 perator will ext
0288A0: 72 61 63 74 20 61 20 70 61 72 74 69 63 75 6C 61 ract a particula
0288B0: 72 20 62 79 74 65 20 66 72 6F 6D 20 61 20 76 65 r byte from a ve
0288C0: 63 74 6F 72 2E 20 49 6E 20 0D 8A 75 73 65 20 74 ctor. In ..use t
0288D0: 68 69 73 20 6F 70 65 72 61 74 6F 72 20 69 73 20 his operator is
0288E0: 76 65 72 79 90 20 73 69 6D 69 6C 61 72 90 20 74 very. similar. t
0288F0: 6F 90 20 74 68 65 90 20 21 20 6F 70 65 72 61 74 o. the. ! operat
028900: 6F 72 20 65 78 63 65 70 74 20 74 68 61 74 20 69 or except that i
028910: 74 20 0D 8A 63 61 6E 6E 6F 74 20 62 65 20 75 73 t ..cannot be us
028920: 65 64 20 61 73 20 61 20 75 6E 61 72 79 20 6F 70 ed as a unary op
028930: 65 72 61 74 6F 72 90 20 61 6E 64 20 74 68 61 74 erator. and that
028940: 20 74 68 65 20 73 65 63 6F 6E 64 20 6F 70 65 72 the second oper
028950: 61 6E 64 20 61 6C 77 61 79 73 20 0D 8A 67 69 76 and always ..giv
028960: 65 73 20 74 68 65 20 62 79 74 65 20 6F 66 66 73 es the byte offs
028970: 65 74 20 66 72 6F 6D 20 74 68 65 90 20 66 69 72 et from the. fir
028980: 73 74 90 20 6F 70 65 72 61 74 6F 72 2E 90 20 54 st. operator.. T
028990: 68 65 20 6D 61 69 6E 20 75 73 65 20 6F 66 20 74 he main use of t
0289A0: 68 69 73 20 0D 8A 6F 70 65 72 61 74 6F 72 20 69 his ..operator i
0289B0: 73 20 77 69 74 68 20 73 74 72 69 6E 67 73 20 74 s with strings t
0289C0: 6F 90 20 65 78 74 72 61 63 74 90 20 61 90 20 70 o. extract. a. p
0289D0: 61 72 74 69 63 75 6C 61 72 20 63 68 61 72 61 63 articular charac
0289E0: 74 65 72 20 66 72 6F 6D 20 74 68 65 20 0D 8A 73 ter from the ..s
0289F0: 74 72 69 6E 67 2E 0D 0A 0D 0A 09 65 2E 67 2E 20 tring......e.g.
028A00: 64 72 65 73 73 20 74 6F 20 74 68 61 74 20 67 6C dress to that gl
028A10: 6F 62 61 6C 20 76 61 72 69 61 62 6C 65 20 69 6E obal variable in
028A20: 90 20 79 6F 75 72 90 20 70 72 6F 67 72 61 6D 2E . your. program.
028A30: 20 54 68 69 73 20 6D 65 61 6E 73 20 74 68 61 74 This means that
028A40: 20 74 68 65 20 0D 8A 70 72 6F 63 65 64 75 72 65 the ..procedure
028A50: 20 63 61 6E 20 74 68 65 6E 20 62 65 20 61 73 73 can then be ass
028A60: 69 67 6E 65 64 20 74 6F 2E 0D 0A 20 20 20 20 20 igned to...
028A70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
028A80: 20 20 0D 0A 0D 0A E2 4C 45 56 45 4C 20 61 6E 64 .....LEVEL and
028A90: 20 4C 4F 4E 47 4A 55 4D 50 E2 0D 0A 0D 0A 09 4C LONGJUMP......L
028AA0: 45 56 45 4C 90 20 77 6F 72 6B 73 90 20 69 6E 90 EVEL. works. in.
028AB0: 20 61 90 90 20 73 6C 69 67 68 74 6C 79 90 90 20 a.. slightly..
028AC0: 64 69 66 66 65 72 65 6E 74 90 90 20 77 61 79 90 different.. way.
028AD0: 20 66 72 6F 6D 90 20 6D 6F 73 74 90 20 42 43 50 from. most. BCP
028AE0: 4C 20 0D 8A 69 6D 70 6C 65 6D 65 6E 74 61 74 69 L ..implementati
028AF0: 6F 6E 73 2E 90 20 49 74 90 20 75 73 75 61 6C 6C ons.. It. usuall
028B00: 79 90 90 20 72 65 74 75 72 6E 73 90 90 20 61 90 y.. returns.. a.
028B10: 90 20 73 69 6E 67 6C 65 90 90 20 31 90 90 20 77 . single.. 1.. w
028B20: 6F 72 64 90 20 76 61 6C 75 65 20 0D 8A 72 65 70 ord. value ..rep
028B30: 72 65 73 65 6E 74 69 6E 67 20 74 68 65 20 73 74 resenting the st
028B40: 61 74 65 20 6F 66 20 74 68 65 20 42 43 50 4C 90 ate of the BCPL.
028B50: 20 73 74 61 63 6B 90 20 61 74 90 20 61 20 70 6F stack. at. a po
028B60: 69 6E 74 20 69 6E 20 74 68 65 20 70 72 6F 67 72 int in the progr
028B70: 61 6D 2E 20 0D 8A 44 75 65 20 74 6F 20 74 68 65 am. ..Due to the
028B80: 20 6C 69 6D 69 74 61 74 69 6F 6E 73 90 20 6F 66 limitations. of
028B90: 90 20 74 68 65 90 20 5A 38 30 90 20 69 6E 90 20 . the. Z80. in.
028BA0: 73 74 61 63 6B 90 20 61 64 64 72 65 73 73 69 6E stack. addressin
028BB0: 67 90 20 69 74 20 69 73 20 6E 6F 74 20 0D 8A 70 g. it is not ..p
028BC0: 6F 73 73 69 62 6C 65 20 74 6F 20 70 61 63 6B 20 ossible to pack
028BD0: 74 68 65 90 20 72 65 71 75 69 72 65 64 90 20 69 the. required. i
028BE0: 6E 66 6F 72 6D 61 74 69 6F 6E 90 20 69 6E 74 6F nformation. into
028BF0: 90 20 6F 6E 65 90 20 77 6F 72 64 20 77 69 74 68 . one. word with
028C00: 20 4C 45 54 20 76 20 3D 20 56 45 43 20 31 39 0D LET v = VEC 19.
028C10: 0A 09 09 46 4F 52 20 61 20 3D 20 31 20 54 4F 20 ...FOR a = 1 TO
028C20: 33 39 20 44 4F 20 76 25 61 20 3A 3D 20 27 20 27 39 DO v%a := ' '
028C30: 0D 0A 09 09 76 25 30 20 3A 3D 20 33 39 20 20 20 ....v%0 := 39
028C40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
028C50: 20 20 2F 2F 20 73 65 74 20 74 68 65 20 73 74 72 // set the str
028C60: 69 6E 67 20 6C 65 6E 67 74 68 20 62 79 74 65 0D ing length byte.
028C70: 0A 0D 0A 77 69 6C 6C 20 63 72 65 61 74 65 20 61 ...will create a
028C80: 20 73 74 72 69 6E 67 20 63 6F 6E 74 61 69 6E 69 string containi
028C90: 6E 67 20 33 39 20 73 70 61 63 65 73 2E 0D 0A 0D ng 39 spaces....
028CA0: 0A 0D 0A E2 55 6E 64 65 66 69 6E 65 64 20 69 6E ....Undefined in
028CB0: 69 74 69 61 6C 20 76 61 6C 75 65 73 E2 0D 0A 0D itial values....
028CC0: 0A 09 54 68 65 20 69 6E 69 74 69 61 6C 20 76 61 ..The initial va
028CD0: 6C 75 65 20 6F 66 20 61 20 73 69 6D 70 6C 65 90 lue of a simple.
028CE0: 20 76 61 72 69 61 62 6C 65 90 20 64 65 63 6C 61 variable. decla
028CF0: 72 65 64 20 69 6E 20 61 20 4C 45 54 20 63 6F 6D red in a LET com
028D00: 6D 61 6E 64 20 0D 8A 6D 61 79 20 62 65 20 75 6E mand ..may be un
028D10: 64 65 66 69 6E 65 64 2E 20 54 68 69 73 20 69 73 defined. This is
028D20: 20 64 6F 6E 65 20 62 79 90 20 75 73 69 6E 67 90 done by. using.
028D30: 20 61 20 71 75 65 73 74 69 6F 6E 20 6D 61 72 6B a question mark
028D40: 20 28 3F 29 2E 20 54 68 69 73 20 69 73 20 0D 8A (?). This is ..
028D50: 75 73 65 64 20 74 6F 20 61 69 64 20 72 65 61 64 used to aid read
028D60: 61 62 69 6C 69 74 79 20 6F 66 90 20 70 72 6F 67 ability of. prog
028D70: 72 61 6D 73 90 20 62 79 90 20 69 6E 64 69 63 61 rams. by. indica
028D80: 74 69 6E 67 90 20 74 68 61 74 20 74 68 65 72 65 ting. that there
028D90: 20 69 73 20 6E 6F 20 0D 8A 72 65 6C 65 76 61 6E is no ..relevan
028DA0: 74 20 69 6E 69 74 69 61 6C 20 76 61 6C 75 65 20 t initial value
028DB0: 6F 66 20 61 20 76 61 72 69 61 62 6C 65 2E 0D 0A of a variable...
028DC0: 0D 0A 0D 0A E2 46 49 4E 44 49 4E 50 55 54 20 61 .....FINDINPUT a
028DD0: 6E 64 20 46 49 4E 44 4F 55 54 50 55 54 E2 0D 0A nd FINDOUTPUT...
028DE0: 0D 0A 09 54 68 65 20 70 72 6F 63 65 64 75 72 65 ...The procedure
028DF0: 73 90 20 66 6F 72 90 20 6F 70 65 6E 69 6E 67 90 s. for. opening.
028E00: 20 74 68 69 73 20 0D 8A 69 6D 70 6C 65 6D 65 6E this ..implemen
028E10: 74 61 74 69 6F 6E 20 6F 66 20 42 43 50 4C 2E 20 tation of BCPL.
028E20: 49 6E 73 74 65 61 64 20 74 68 65 20 4C 45 56 45 Instead the LEVE
028E30: 4C 20 70 72 6F 63 65 64 75 72 65 20 72 65 74 75 L procedure retu
028E40: 72 6E 73 20 69 74 73 20 72 65 73 75 6C 74 20 0D rns its result .
028E50: 8A 69 6E 20 61 20 34 20 77 6F 72 64 20 76 65 63 .in a 4 word vec
028E60: 74 6F 72 20 70 61 73 73 65 64 20 74 6F 90 20 74 tor passed to. t
028E70: 68 65 20 70 72 6F 63 65 64 75 72 65 2E 20 53 65 he procedure. Se
028E80: 65 20 61 70 70 65 6E 64 69 78 20 31 20 28 74 65 e appendix 1 (te
028E90: 63 68 69 6E 63 61 6C 20 0D 8A 69 6E 66 6F 72 6D chincal ..inform
028EA0: 61 74 69 6F 6E 29 20 66 6F 72 20 65 78 61 63 74 ation) for exact
028EB0: 20 64 65 74 61 69 6C 73 2E 0D 0A 0D 0A 09 65 2E details......e.
028EC0: 67 2E 0D 0A 0D 0A 09 09 4C 45 54 20 65 72 72 6F g.......LET erro
028ED0: 72 6C 65 76 65 6C 20 3D 20 56 45 43 20 33 0D 0A rlevel = VEC 3..
028EE0: 09 09 6C 65 76 65 6C 28 65 72 72 6F 72 6C 65 76 ..level(errorlev
028EF0: 65 6C 29 0D 0A 0D 0A 0D 0A E2 45 78 74 65 6E 73 el).......Extens
028F00: 69 6F 6E 73 20 6E 6F 74 20 73 75 70 70 6F 72 74 ions not support
028F10: 65 64 E2 0D 0A 0D 0A 09 54 68 65 20 66 6F 6C 6C ed......The foll
028F20: 6F 77 69 6E 67 20 66 65 61 74 75 72 65 73 2C 20 owing features,
028F30: 77 68 69 63 68 20 61 72 65 20 6D 65 6E 74 69 6F which are mentio
028F40: 6E 65 64 90 20 69 6E 20 74 68 65 20 42 43 50 4C ned. in the BCPL
028F50: 20 62 6F 6F 6B 2C 20 61 72 65 20 0D 8A 6E 6F 74 book, are ..not
028F60: 20 73 75 70 70 6F 72 74 65 64 3A 20 73 65 70 61 supported: sepa
028F70: 72 61 74 65 90 20 63 6F 6D 70 69 6C 61 74 69 6F rate. compilatio
028F80: 6E 2C 90 20 66 6C 6F 61 74 69 6E 67 90 20 70 6F n,. floating. po
028F90: 69 6E 74 90 20 65 78 74 65 6E 73 69 6F 6E 2C 20 int. extension,
028FA0: 74 68 65 20 0D 8A 66 69 65 6C 64 20 73 65 6C 65 the ..field sele
028FB0: 63 74 6F 72 20 65 78 74 65 6E 73 69 6F 6E 2E 0D ctor extension..
028FC0: 0A 0D 0A 0D 0A 3E 70 61 0D 0A 3E 63 65 20 E2 41 .....>pa..>ce .A
028FD0: 31 2E 20 54 45 43 48 4E 49 43 41 4C 20 49 4E 46 1. TECHNICAL INF
028FE0: 4F 52 4D 41 54 49 4F 4E E2 0D 0A 0D 0A 0D 0A 09 ORMATION........
028FF0: 54 68 65 20 63 6F 6D 70 69 6C 65 72 20 61 6C 6C The compiler all
029000: 20 66 69 6C 65 73 90 20 61 72 65 90 20 73 6C 69 files. are. sli
029010: 67 68 74 6C 79 90 20 64 69 66 66 65 72 65 6E 74 ghtly. different
029020: 20 66 72 6F 6D 20 0D 8A 73 74 61 6E 64 61 72 64 from ..standard
029030: 20 42 43 50 4C 20 69 6E 20 74 68 61 74 90 20 61 BCPL in that. a
029040: 90 20 62 75 66 66 65 72 90 20 6D 75 73 74 90 20 . buffer. must.
029050: 62 65 90 20 73 70 65 63 69 66 69 65 64 90 20 61 be. specified. a
029060: 73 20 61 20 70 61 72 61 6D 65 74 65 72 2C 20 0D s a parameter, .
029070: 8A 69 6E 73 74 65 61 64 20 6F 66 20 74 68 65 6D .instead of them
029080: 20 72 65 74 75 72 6E 69 6E 67 20 61 20 73 74 72 returning a str
029090: 65 61 6D 20 69 64 65 6E 74 69 66 69 65 72 2E 0D eam identifier..
0290A0: 0A 3E 70 61 0D 0A E2 47 6C 6F 62 61 6C 20 56 61 .>pa...Global Va
0290B0: 72 69 61 62 6C 65 73 E2 0D 0A 0D 0A 0D 0A 09 57 riables........W
0290C0: 68 65 6E 20 61 20 70 72 6F 63 65 64 75 72 65 20 hen a procedure
0290D0: 69 73 20 64 65 66 69 6E 65 64 90 20 69 6E 90 20 is defined. in.
0290E0: 73 74 61 6E 64 61 72 64 20 42 43 50 4C 20 74 68 standard BCPL th
0290F0: 65 20 63 6F 6D 70 69 6C 65 72 20 63 68 65 63 6B e compiler check
029100: 73 20 0D 8A 74 6F 20 73 65 65 20 69 66 20 61 20 s ..to see if a
029110: 47 4C 4F 42 41 4C 20 76 61 72 69 61 62 6C 65 20 GLOBAL variable
029120: 77 69 74 68 20 74 68 65 90 20 73 61 6D 65 90 20 with the. same.
029130: 6E 61 6D 65 20 69 73 20 69 6E 20 73 63 6F 70 65 name is in scope
029140: 2E 20 49 66 20 69 74 20 69 73 20 0D 8A 69 6E 20 . If it is ..in
029150: 73 63 6F 70 65 2C 20 74 68 65 6E 20 74 68 61 74 scope, then that
029160: 20 76 61 72 69 61 62 6C 65 20 77 69 6C 6C 90 20 variable will.
029170: 62 65 90 20 69 6E 69 74 69 61 6C 69 73 65 64 20 be. initialised
029180: 77 69 74 68 20 74 68 65 20 61 64 64 72 65 73 73 with the address
029190: 20 6F 66 20 0D 8A 74 68 65 20 70 72 6F 63 65 64 of ..the proced
0291A0: 75 72 65 2E 20 49 66 20 74 68 65 72 65 20 69 73 ure. If there is
0291B0: 20 6E 6F 20 73 75 63 68 20 76 61 72 69 61 62 6C no such variabl
0291C0: 65 20 69 6E 20 73 63 6F 70 65 20 74 68 65 6E 20 e in scope then
0291D0: 61 20 6E 65 77 20 53 54 41 54 49 43 20 0D 8A 76 a new STATIC ..v
0291E0: 61 72 69 61 62 6C 65 20 77 69 6C 6C 90 20 62 65 ariable will. be
0291F0: 90 20 63 72 65 61 74 65 64 90 20 61 6E 64 90 20 . created. and.
029200: 6F 63 61 74 65 73 20 64 79 6E 61 6D 69 63 20 73 ocates dynamic s
029210: 74 6F 72 61 67 65 20 66 72 6F 6D 20 74 68 65 20 torage from the
029220: 68 61 72 64 77 61 72 65 20 73 74 61 63 6B 20 66 hardware stack f
029230: 6F 72 20 0D 8A 6F 72 64 69 6E 61 72 79 20 6C 6F or ..ordinary lo
029240: 63 61 6C 20 76 61 72 69 61 62 6C 65 73 2E 20 54 cal variables. T
029250: 68 65 73 65 90 20 61 72 65 90 20 61 63 63 65 73 hese. are. acces
029260: 73 65 64 90 20 62 79 90 20 69 6E 64 65 78 69 6E sed. by. indexin
029270: 67 20 74 68 65 20 73 74 61 63 6B 20 0D 8A 75 73 g the stack ..us
029280: 69 6E 67 20 74 68 65 20 49 58 20 72 65 67 69 73 ing the IX regis
029290: 74 65 72 20 77 68 69 63 68 20 70 6F 69 6E 74 73 ter which points
0292A0: 20 74 6F 20 74 68 65 20 68 69 67 68 20 62 79 74 to the high byt
0292B0: 65 20 6F 66 20 74 68 65 20 6C 61 73 74 20 66 6F e of the last fo
0292C0: 72 6D 61 6C 20 0D 8A 70 61 72 61 6D 65 74 65 72 rmal ..parameter
0292D0: 20 6D 69 6E 75 73 20 31 32 37 2E 90 20 54 68 65 minus 127.. The
0292E0: 90 20 66 6F 72 6D 61 6C 90 20 70 61 72 61 6D 65 . formal. parame
0292F0: 74 65 72 73 90 20 61 72 65 90 20 73 74 6F 72 65 ters. are. store
029300: 64 90 20 69 6E 20 72 65 76 65 72 73 65 20 0D 8A d. in reverse ..
029310: 6F 72 64 65 72 2C 20 63 6F 6D 69 6E 67 20 64 6F order, coming do
029320: 77 6E 90 20 69 6E 90 20 6D 65 6D 6F 72 79 2E 90 wn. in. memory..
029330: 20 49 6D 6D 65 64 69 61 74 65 6C 79 90 20 62 65 Immediately. be
029340: 6C 6F 77 90 20 74 68 65 90 20 66 69 72 73 74 20 low. the. first
029350: 66 6F 72 6D 61 6C 20 0D 8A 70 61 72 61 6D 65 74 formal ..paramet
029360: 65 72 20 69 73 20 74 68 65 20 72 65 74 75 72 6E er is the return
029370: 20 61 64 64 72 65 73 73 90 20 66 72 6F 6D 90 20 address. from.
029380: 74 68 65 90 20 70 72 6F 63 65 64 75 72 65 20 77 the. procedure w
029390: 68 69 63 68 20 63 61 6C 6C 65 64 20 74 68 65 20 hich called the
0293A0: 0D 8A 63 75 72 72 65 6E 74 6C 79 20 61 63 74 69 ..currently acti
0293B0: 76 65 20 70 72 6F 63 65 64 75 72 65 2E 20 42 65 ve procedure. Be
0293C0: 6C 6F 77 20 74 68 69 73 20 69 73 20 74 68 65 20 low this is the
0293D0: 6F 6C 64 20 49 58 20 72 65 67 69 73 74 65 72 20 old IX register
0293E0: 66 72 6F 6D 20 74 68 65 20 0D 8A 63 61 6C 6C 69 from the ..calli
0293F0: 6E 67 20 70 72 6F 63 65 64 75 72 65 20 61 6E 64 ng procedure and
029400: 74 68 61 74 90 20 76 61 72 69 61 62 6C 65 90 20 that. variable.
029410: 69 6E 69 74 69 61 6C 69 73 65 64 90 20 77 69 74 initialised. wit
029420: 68 20 74 68 65 20 0D 8A 61 64 64 72 65 73 73 20 h the ..address
029430: 6F 66 20 74 68 65 20 70 72 6F 63 65 64 75 72 65 of the procedure
029440: 2E 20 57 68 65 6E 20 61 20 70 72 6F 63 65 64 75 . When a procedu
029450: 72 65 20 63 61 6C 6C 20 69 73 20 6D 61 64 65 20 re call is made
029460: 74 68 65 20 63 6F 64 65 20 6C 6F 6F 6B 73 20 0D the code looks .
029470: 8A 75 70 20 74 68 65 20 61 64 64 72 65 73 73 20 .up the address
029480: 69 6E 20 74 68 65 90 20 72 65 6C 65 76 61 6E 74 in the. relevant
029490: 90 20 76 61 72 69 61 62 6C 65 90 20 61 6E 64 20 . variable. and
0294A0: 63 61 6C 6C 73 20 74 68 61 74 20 61 64 64 72 65 calls that addre
0294B0: 73 73 2E 20 54 68 65 20 0D 8A 72 65 61 73 6F 6E ss. The ..reason
0294C0: 20 66 6F 72 20 74 68 69 73 90 20 69 6E 64 69 72 for this. indir
0294D0: 65 63 74 90 20 63 61 6C 6C 69 6E 67 90 20 69 73 ect. calling. is
0294E0: 90 20 74 6F 90 20 65 6E 61 62 6C 65 90 20 65 61 . to. enable. ea
0294F0: 73 79 20 63 6F 6D 6D 75 6E 69 63 61 74 69 6F 6E sy communication
029500: 20 0D 8A 62 65 74 77 65 65 6E 20 73 65 70 61 72 ..between separ
029510: 61 74 65 6C 79 20 63 6F 6D 70 69 6C 65 64 20 75 ately compiled u
029520: 6E 69 74 73 2E 0D 0A 09 41 73 20 74 68 65 20 41 nits....As the A
029530: 52 4E 4F 52 20 63 6F 6D 70 69 6C 65 72 20 64 6F RNOR compiler do
029540: 65 73 20 6E 6F 74 20 61 6C 6C 6F 77 20 73 65 70 es not allow sep
029550: 61 72 61 74 65 20 63 6F 6D 70 69 6C 61 74 69 6F arate compilatio
029560: 6E 20 74 68 65 72 65 20 69 73 20 0D 8A 6E 6F 20 n there is ..no
029570: 6E 65 65 64 20 66 6F 72 20 74 68 69 73 20 69 6E need for this in
029580: 64 69 72 65 63 74 20 61 70 70 72 6F 61 63 68 20 direct approach
029590: 61 6E 64 90 20 73 6F 90 20 61 20 63 61 6C 6C 20 and. so. a call
0295A0: 69 73 20 6D 61 64 65 20 64 69 72 65 63 74 6C 79 is made directly
0295B0: 20 74 6F 20 0D 8A 74 68 65 20 61 64 64 72 65 73 to ..the addres
0295C0: 73 90 20 6F 66 90 20 74 68 65 90 20 70 72 6F 63 s. of. the. proc
0295D0: 65 64 75 72 65 2E 90 20 54 68 69 73 90 20 61 6C edure.. This. al
0295E0: 73 6F 90 20 6D 65 61 6E 73 90 20 74 68 61 74 90 so. means. that.
0295F0: 20 74 68 65 90 20 6E 75 6D 62 65 72 20 0D 8A 61 the. number ..a
029600: 20 62 65 6C 6F 77 20 74 68 69 73 20 61 20 76 61 below this a va
029610: 6C 75 65 20 77 68 69 63 68 20 72 65 70 72 65 73 lue which repres
029620: 65 6E 74 73 20 74 68 65 20 73 74 61 74 65 20 6F ents the state o
029630: 66 20 0D 8A 74 68 65 20 76 65 63 74 6F 72 20 73 f ..the vector s
029640: 70 61 63 65 2E 20 4C 6F 63 61 6C 20 76 61 72 69 pace. Local vari
029650: 61 62 6C 65 73 20 6E 6F 77 20 63 6F 6D 65 20 64 ables now come d
029660: 6F 77 6E 20 66 72 6F 6D 20 74 68 69 73 20 73 70 own from this sp
029670: 61 63 65 20 69 6E 20 74 68 65 20 0D 8A 6F 72 64 ace in the ..ord
029680: 65 72 20 74 68 61 74 20 74 68 65 79 20 61 72 65 er that they are
029690: 20 64 65 63 6C 61 72 65 64 20 61 6E 64 20 53 50 declared and SP
0296A0: 20 77 69 6C 6C 90 20 70 6F 69 6E 74 20 74 6F 20 will. point to
0296B0: 74 68 65 20 6C 6F 77 20 62 79 74 65 20 6F 66 20 the low byte of
0296C0: 74 68 65 20 0D 8A 6C 61 73 74 20 6C 6F 63 61 6C the ..last local
0296D0: 20 76 61 72 69 61 62 6C 65 20 63 75 72 72 65 6E variable curren
0296E0: 74 6C 79 20 69 6E 20 73 63 6F 70 65 2E 0D 0A 09 tly in scope....
0296F0: 57 68 65 6E 20 61 20 6E 65 77 90 20 6C 6F 63 61 When a new. loca
029700: 6C 90 20 76 61 72 69 61 62 6C 65 90 20 69 73 90 l. variable. is.
029710: 20 64 65 63 6C 61 72 65 64 2C 90 20 69 74 73 90 declared,. its.
029720: 20 69 6E 69 74 69 61 6C 90 20 76 61 6C 75 65 20 initial. value
029730: 69 73 20 0D 8A 63 61 6C 63 75 6C 61 74 65 64 20 is ..calculated
029740: 61 6E 64 20 74 68 65 6E 20 70 75 73 68 65 64 20 and then pushed
029750: 6F 6E 74 6F 20 74 68 65 20 73 74 61 63 6B 2E 20 onto the stack.
029760: 57 68 65 6E 20 61 20 76 65 63 74 6F 72 20 69 73 When a vector is
029770: 20 61 6C 6C 6F 63 61 74 65 64 2C 20 0D 8A 73 70 allocated, ..sp
029780: 61 63 65 20 69 73 20 74 61 6B 65 6E 20 66 72 6F ace is taken fro
029790: 6D 90 20 74 68 65 90 20 76 65 63 74 6F 72 90 20 m. the. vector.
0297A0: 73 70 61 63 65 2C 90 20 77 68 69 63 68 90 20 69 space,. which. i
0297B0: 73 20 64 69 72 65 63 74 6C 79 20 61 66 74 65 72 s directly after
0297C0: 20 74 68 65 20 0D 8A 70 72 6F 67 72 61 6D 2C 20 the ..program,
0297D0: 61 6E 64 20 61 20 70 6F 69 6E 74 65 72 20 74 6F and a pointer to
0297E0: 20 74 68 69 73 20 73 70 61 63 65 20 69 73 20 70 this space is p
0297F0: 75 73 68 65 64 20 6F 6E 74 6F 20 74 68 65 20 73 ushed onto the s
029800: 73 73 6F 63 69 61 74 65 64 20 77 69 74 68 20 61 ssociated with a
029810: 20 47 4C 4F 42 41 4C 20 76 61 72 69 61 62 6C 65 GLOBAL variable
029820: 20 69 6E 90 20 69 74 73 20 64 65 66 69 6E 69 74 in. its definit
029830: 69 6F 6E 20 69 73 20 6D 65 61 6E 69 6E 67 6C 65 ion is meaningle
029840: 73 73 20 61 73 20 0D 8A 74 68 65 72 65 20 69 73 ss as ..there is
029850: 20 6E 6F 90 20 61 63 74 75 61 6C 90 20 47 4C 4F no. actual. GLO
029860: 42 41 4C 90 20 76 65 63 74 6F 72 2E 90 20 54 68 BAL. vector.. Th
029870: 65 90 20 69 6E 64 65 78 90 20 6E 75 6D 62 65 72 e. index. number
029880: 90 20 69 73 2C 20 68 6F 77 65 76 65 72 2C 20 0D . is, however, .
029890: 8A 72 65 74 61 69 6E 65 64 20 66 6F 72 20 63 6F .retained for co
0298A0: 6D 70 61 74 61 62 69 6C 69 74 79 20 77 69 74 68 mpatability with
0298B0: 90 20 6F 74 68 65 72 90 20 63 6F 6D 70 69 6C 65 . other. compile
0298C0: 72 73 2E 90 20 54 68 65 20 6F 75 74 63 6F 6D 65 rs.. The outcome
0298D0: 20 6F 66 20 61 6C 6C 20 0D 8A 74 68 69 73 20 69 of all ..this i
0298E0: 73 20 74 68 61 74 90 20 61 6C 74 68 6F 75 67 68 s that. although
0298F0: 90 20 69 74 90 20 69 73 90 20 70 6F 73 73 69 62 . it. is. possib
029900: 6C 65 90 20 74 6F 90 20 72 65 61 64 90 20 74 68 le. to. read. th
029910: 65 90 20 61 64 64 72 65 73 73 90 20 6F 66 20 61 e. address. of a
029920: 20 0D 8A 70 72 6F 63 65 64 75 72 65 2C 20 61 6E ..procedure, an
029930: 64 20 73 6F 20 70 61 73 73 20 70 72 6F 63 65 64 d so pass proced
029940: 75 72 65 73 20 61 73 20 70 61 72 61 6D 65 74 65 ures as paramete
029950: 72 73 2C 20 69 74 20 69 73 20 6E 6F 74 20 70 6F rs, it is not po
029960: 73 73 69 62 6C 65 20 74 6F 20 0D 8A 61 73 73 69 ssible to ..assi
029970: 67 6E 20 74 6F 20 61 20 70 72 6F 63 65 64 75 72 gn to a procedur
029980: 65 2E 20 59 6F 75 20 63 61 6E 2C 20 68 6F 77 65 e. You can, howe
029990: 76 65 72 2C 20 73 65 74 20 75 70 20 61 20 67 6C ver, set up a gl
0299A0: 6F 62 61 6C 20 76 61 72 69 61 62 6C 65 20 77 69 obal variable wi
0299B0: 74 68 20 0D 8A 61 20 64 69 66 66 65 72 65 6E 74 th ..a different
0299C0: 20 6E 61 6D 65 20 66 72 6F 6D 90 20 61 90 20 70 name from. a. p
0299D0: 72 6F 63 65 64 75 72 65 90 20 61 6E 64 90 20 74 rocedure. and. t
0299E0: 68 65 6E 90 20 61 73 73 69 67 6E 20 74 68 65 20 hen. assign the
0299F0: 70 72 6F 63 65 64 75 72 65 27 73 20 0D 8A 61 64 procedure's ..ad
029A00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
029A10: 23 00 01 00 02 09 4E E5 23 00 C1 02 00 00 00 02 #.....N.#.......
029A20: 23 00 C6 02 00 00 00 02 23 00 C2 02 00 00 00 02 #.......#.......
029A30: 23 00 C7 02 00 00 00 02 23 00 C3 02 00 00 00 02 #.......#.......
029A40: 23 00 C8 02 00 00 00 02 23 00 C4 02 00 00 00 02 #.......#.......
029A50: 23 00 C9 02 00 00 00 02 23 00 C5 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: 74 61 63 6B 2E 0D 0A 0D 0A 65 2E 67 2E 20 66 6F tack.....e.g. fo
029B10: 72 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 r the following
029B20: 70 72 6F 63 65 64 75 72 65 0D 0A 0D 0A 20 20 20 procedure....
029B30: 20 20 20 20 20 20 20 20 20 20 20 20 20 4C 45 54 LET
029B40: 20 78 28 61 2C 62 29 20 42 45 0D 0A 20 20 20 20 x(a,b) BE..
029B50: 20 20 20 20 20 20 20 20 20 20 20 20 24 28 0D 0A $(..
029B60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
029B70: 20 20 4C 45 54 20 7A 20 3D 20 30 0D 0A 20 20 20 LET z = 0..
029B80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2E .
029B90: 2E 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ....
029BA0: 20 20 20 20 24 29 0D 0A 0D 0A 61 74 20 74 68 65 $)....at the
029BB0: 20 70 6F 69 6E 74 20 6D 61 72 6B 65 64 20 62 79 point marked by
029BC0: 20 74 68 65 20 64 6F 74 73 20 74 68 65 20 73 74 the dots the st
029BD0: 61 63 6B 20 6C 6F 6F 6B 73 20 6C 69 6B 65 20 74 ack looks like t
029BE0: 68 69 73 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 his....
029BF0: 20 20 20 20 20 20 20 62 20 20 20 20 20 20 20 20 b
029C00: 20 49 58 20 2B 20 31 32 37 0D 0A 20 20 20 20 20 IX + 127..
029C10: 20 20 20 20 20 20 20 20 20 20 20 61 20 20 20 20 a
029C20: 20 20 20 20 20 49 58 20 2B 20 31 32 35 0D 0A 20 IX + 125..
029C30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
029C40: 65 74 20 61 64 64 72 20 20 49 58 20 2B 20 31 32 et addr IX + 12
029C50: 33 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 3..
029C60: 20 20 20 6F 6C 64 20 49 58 20 20 20 20 49 58 20 old IX IX
029C70: 2B 20 31 32 31 0D 0A 20 20 20 20 20 20 20 20 20 + 121..
029C80: 20 20 20 20 20 20 20 76 65 63 20 70 74 72 20 20 vec ptr
029C90: 20 49 58 20 2B 20 31 31 39 0D 0A 20 20 20 20 20 IX + 119..
029CA0: 20 20 20 20 20 20 20 20 20 20 20 7A 20 20 20 20 z
029CB0: 20 20 20 20 20 49 58 20 2B 20 31 31 37 2C 20 53 IX + 117, S
029CC0: 50 20 70 6F 69 6E 74 73 20 68 65 72 65 0D 0A 0D P points here...
029CD0: 0A 09 57 68 65 6E 20 6C 6F 63 61 6C 20 76 61 72 ..When local var
029CE0: 69 61 62 6C 65 73 20 61 72 65 90 20 75 6E 64 65 iables are. unde
029CF0: 63 6C 61 72 65 64 90 20 28 69 2E 65 2E 90 20 61 clared. (i.e.. a
029D00: 20 6F 66 20 63 6F 6D 70 75 74 61 74 69 6F 6E 2E of computation.
029D10: 0D 0A 3E 70 61 0D 0A 09 54 68 65 20 31 34 74 68 ..>pa...The 14th
029D20: 20 61 6E 64 20 31 35 74 68 90 20 62 79 74 65 73 and 15th. bytes
029D30: 90 20 6F 66 90 20 61 6E 79 90 20 6F 62 6A 65 63 . of. any. objec
029D40: 74 90 20 70 72 6F 67 72 61 6D 20 70 72 6F 64 75 t. program produ
029D50: 63 65 64 20 61 6C 77 61 79 73 20 0D 8A 70 6F 69 ced always ..poi
029D60: 6E 74 20 74 6F 20 74 68 65 20 62 61 73 65 20 6F nt to the base o
029D70: 66 20 74 68 65 20 63 75 72 72 65 6E 74 90 20 76 f the current. v
029D80: 65 63 74 6F 72 20 61 6C 6C 6F 63 61 74 69 6F 6E ector allocation
029D90: 2E 20 54 68 65 20 31 36 74 68 20 61 6E 64 20 31 . The 16th and 1
029DA0: 37 74 68 20 0D 8A 62 79 74 65 73 20 61 6C 77 61 7th ..bytes alwa
029DB0: 79 73 20 70 6F 69 6E 74 20 74 6F 20 74 68 65 20 ys point to the
029DC0: 74 6F 70 20 6F 66 20 74 68 65 20 63 75 72 72 65 top of the curre
029DD0: 6E 74 20 76 65 63 74 6F 72 20 61 6C 6C 6F 63 61 nt vector alloca
029DE0: 74 69 6F 6E 2E 20 41 6C 6C 20 6F 66 20 0D 8A 74 tion. All of ..t
029DF0: 68 65 20 76 65 63 74 6F 72 20 73 70 61 63 65 20 he vector space
029E00: 72 65 71 75 69 72 65 64 20 66 6F 72 90 20 61 6E required for. an
029E10: 79 90 20 70 61 72 74 69 63 75 6C 61 72 20 70 72 y. particular pr
029E20: 6F 63 65 64 75 72 65 20 61 63 74 69 76 61 74 69 ocedure activati
029E30: 6F 6E 20 69 73 20 0D 8A 61 6C 6C 6F 63 61 74 65 on is ..allocate
029E40: 64 20 6F 6E 20 65 6E 74 72 79 20 74 6F 20 74 68 d on entry to th
029E50: 61 74 20 70 72 6F 63 65 64 75 72 65 90 20 61 6E at procedure. an
029E60: 64 20 64 65 2D 61 6C 6C 6F 63 61 74 65 64 20 6F d de-allocated o
029E70: 6E 20 65 78 69 74 2E 20 57 68 65 6E 20 61 20 0D n exit. When a .
029E80: 8A 76 65 63 74 6F 72 20 69 73 20 64 65 63 6C 61 .vector is decla
029E90: 72 65 64 20 77 69 74 68 69 6E 20 61 20 70 72 6F red within a pro
029EA0: 63 65 64 75 72 65 90 20 69 74 90 20 69 73 90 20 cedure. it. is.
029EB0: 67 69 76 65 6E 20 61 20 63 68 75 6E 6B 20 6F 66 given a chunk of
029EC0: 20 6D 65 6D 6F 72 79 20 0D 8A 77 69 74 68 69 6E memory ..within
029ED0: 20 74 68 69 73 20 61 6C 6C 6F 63 61 74 69 6F 6E this allocation
029EE0: 2E 0D 0A 0D 0A 09 54 68 65 20 63 6F 6D 70 69 6C ......The compil
029EF0: 65 72 20 69 73 20 61 90 20 74 77 6F 90 20 70 61 er is a. two. pa
029F00: 74 90 20 74 68 65 90 20 65 6E 64 20 6F 66 20 74 t. the. end of t
029F10: 68 65 69 72 20 0D 8A 62 6C 6F 63 6B 29 2C 20 74 heir ..block), t
029F20: 68 65 20 73 74 61 63 6B 20 70 6F 69 6E 74 65 72 he stack pointer
029F30: 20 69 73 20 6D 6F 76 65 64 20 75 70 20 74 6F 20 is moved up to
029F40: 72 65 6C 65 61 73 65 20 74 68 65 20 73 70 61 63 release the spac
029F50: 65 20 75 73 65 64 2E 0D 0A 3E 70 61 0D 0A 09 53 e used...>pa...S
029F60: 74 61 74 69 63 20 76 61 72 69 61 62 6C 65 73 20 tatic variables
029F70: 61 72 65 20 61 6C 6C 6F 63 61 74 65 64 20 74 68 are allocated th
029F80: 65 69 72 90 20 73 70 61 63 65 90 20 61 74 20 63 eir. space. at c
029F90: 6F 6D 70 69 6C 65 20 74 69 6D 65 2E 20 54 68 65 ompile time. The
029FA0: 79 20 0D 8A 61 72 65 20 65 6D 62 65 64 64 65 64 y ..are embedded
029FB0: 20 69 6E 20 74 68 65 20 63 6F 64 65 20 61 6E 64 in the code and
029FC0: 90 20 61 72 65 20 72 65 2D 69 6E 69 74 69 61 6C . are re-initial
029FD0: 69 73 65 64 20 65 61 63 68 20 74 69 6D 65 20 74 ised each time t
029FE0: 68 65 20 70 72 6F 67 72 61 6D 20 0D 8A 69 73 20 he program ..is
029FF0: 72 75 6E 2E 20 54 68 65 20 73 74 61 63 6B 20 69 run. The stack i
02A000: 73 20 70 6C 61 63 65 64 90 20 61 74 90 20 74 68 s placed. at. th
02A010: 65 90 20 74 6F 70 20 6F 66 20 74 68 65 20 61 76 e. top of the av
02A020: 61 69 6C 61 62 6C 65 20 6D 65 6D 6F 72 79 2E 20 ailable memory.
02A030: 46 6F 72 20 0D 8A 43 50 2F 4D 20 76 65 72 73 69 For ..CP/M versi
02A040: 6F 6E 73 20 74 68 69 73 20 69 73 20 63 61 6C 63 ons this is calc
02A050: 75 6C 61 74 65 64 20 66 72 6F 6D 20 74 68 65 20 ulated from the
02A060: 73 74 61 72 74 20 6F 66 20 74 68 65 20 42 44 4F start of the BDO
02A070: 53 2E 20 0D 0A 09 49 6E 20 41 4D 53 44 4F 53 20 S. ...In AMSDOS
02A080: 76 65 72 73 69 6F 6E 73 2C 20 73 74 61 74 69 63 versions, static
02A090: 20 76 61 72 69 61 62 6C 65 20 73 70 61 63 65 20 variable space
02A0A0: 69 73 20 64 65 74 65 72 6D 69 6E 65 64 20 61 74 is determined at
02A0B0: 20 63 6F 6D 70 69 6C 65 20 0D 8A 74 69 6D 65 2C compile ..time,
02A0C0: 20 70 6F 73 73 69 62 6C 79 20 75 73 69 6E 67 20 possibly using
02A0D0: 74 68 65 20 48 90 20 6F 70 74 69 6F 6E 2E 90 20 the H. option..
02A0E0: 41 73 20 61 6C 72 65 61 64 79 20 6D 65 6E 74 69 As already menti
02A0F0: 6F 6E 65 64 20 76 65 63 74 6F 72 20 73 70 61 63 oned vector spac
02A100: 73 73 90 20 63 6F 6D 70 69 6C 65 72 2E 90 20 54 ss. compiler.. T
02A110: 68 65 90 20 66 69 72 73 74 20 70 61 73 73 20 72 he. first pass r
02A120: 65 61 64 73 20 74 68 65 20 0D 8A 73 6F 75 72 63 eads the ..sourc
02A130: 65 20 74 65 78 74 20 6F 66 20 74 68 65 20 70 72 e text of the pr
02A140: 6F 67 72 61 6D 2C 20 64 6F 65 73 20 73 79 6E 74 ogram, does synt
02A150: 61 78 20 61 6E 61 6C 79 73 69 73 20 6F 66 20 69 ax analysis of i
02A160: 74 20 61 6E 64 20 70 72 6F 64 75 63 65 73 20 61 t and produces a
02A170: 6E 20 0D 8A 61 70 70 6C 69 63 61 74 69 76 65 20 n ..applicative
02A180: 65 78 70 72 65 73 73 69 6F 6E 20 74 72 65 65 20 expression tree
02A190: 77 68 69 63 68 90 20 72 65 70 72 65 73 65 6E 74 which. represent
02A1A0: 73 90 20 74 68 65 20 70 72 6F 67 72 61 6D 2E 20 s. the program.
02A1B0: 54 68 65 20 73 65 63 6F 6E 64 20 0D 8A 70 61 73 The second ..pas
02A1C0: 73 20 67 6F 65 73 20 6F 76 65 72 20 74 68 69 73 s goes over this
02A1D0: 20 74 72 65 65 20 61 6E 64 20 70 72 6F 64 75 63 tree and produc
02A1E0: 65 73 90 20 63 6F 64 65 20 66 6F 72 20 69 74 2E es. code for it.
02A1F0: 20 54 68 65 20 73 65 63 6F 6E 64 20 70 61 73 73 The second pass
02A200: 20 69 73 20 0D 8A 69 6E 20 66 61 63 74 20 64 6F is ..in fact do
02A210: 6E 65 20 74 77 69 63 65 3B 20 74 68 65 20 66 69 ne twice; the fi
02A220: 72 73 74 20 74 69 6D 65 20 6E 6F 20 63 6F 64 65 rst time no code
02A230: 20 69 73 20 70 72 6F 64 75 63 65 64 20 62 75 74 is produced but
02A240: 20 74 68 65 20 70 72 6F 67 72 61 6D 20 0D 8A 69 the program ..i
02A250: 73 20 63 68 65 63 6B 65 64 20 66 6F 72 20 61 6E s checked for an
02A260: 79 20 73 65 6D 61 6E 74 69 63 90 20 65 72 72 6F y semantic. erro
02A270: 72 73 90 20 73 75 63 68 90 20 61 73 20 75 6E 64 rs. such. as und
02A280: 65 66 69 6E 65 64 20 69 64 65 6E 74 69 66 69 65 efined identifie
02A290: 72 73 20 6F 72 20 0D 8A 69 6C 6C 65 67 61 6C 20 rs or ..illegal
02A2A0: 61 73 73 69 67 6E 6D 65 6E 74 73 2E 20 49 66 20 assignments. If
02A2B0: 74 68 69 73 20 70 61 73 73 90 20 72 75 6E 73 90 this pass. runs.
02A2C0: 20 73 6D 6F 6F 74 68 6C 79 20 77 69 74 68 20 6E smoothly with n
02A2D0: 6F 20 65 72 72 6F 72 73 20 62 65 69 6E 67 20 0D o errors being .
02A2E0: 8A 70 69 63 6B 65 64 20 75 70 20 74 68 65 6E 20 .picked up then
02A2F0: 74 68 65 20 73 65 63 6F 6E 64 20 70 61 73 73 90 the second pass.
02A300: 65 20 0D 8A 69 73 20 74 61 6B 65 6E 20 66 72 6F e ..is taken fro
02A310: 6D 20 74 68 65 20 61 72 65 61 20 6F 66 20 6D 65 m the area of me
02A320: 6D 6F 72 79 20 64 69 72 65 63 74 6C 79 20 61 66 mory directly af
02A330: 74 65 72 20 74 68 65 20 70 72 6F 67 72 61 6D 2E ter the program.
02A340: 20 54 68 65 20 73 74 61 72 74 20 0D 8A 6F 66 20 The start ..of
02A350: 61 20 70 72 6F 67 72 61 6D 20 69 73 20 23 78 31 a program is #x1
02A360: 30 30 90 20 66 6F 72 90 20 43 50 2F 4D 90 20 76 00. for. CP/M. v
02A370: 65 72 73 69 6F 6E 73 90 20 61 6E 64 90 20 64 65 ersions. and. de
02A380: 66 61 75 6C 74 73 20 74 6F 20 74 68 65 20 66 69 faults to the fi
02A390: 72 73 74 20 0D 8A 75 73 61 62 6C 65 20 62 79 74 rst ..usable byt
02A3A0: 65 20 6F 66 20 6D 65 6D 6F 72 79 20 66 6F 72 20 e of memory for
02A3B0: 41 4D 53 44 4F 53 2E 20 54 68 69 73 20 6D 61 79 AMSDOS. This may
02A3C0: 90 20 62 65 20 63 68 61 6E 67 65 64 20 62 79 20 . be changed by
02A3D0: 75 73 65 20 6F 66 20 74 68 65 20 4F 20 0D 8A 6F use of the O ..o
02A3E0: 70 74 69 6F 6E 2E 0D 0A 0D 0A 0D 0A 09 54 68 69 ption........Thi
02A3F0: 73 20 6C 65 61 76 65 73 20 61 20 6D 65 6D 6F 72 s leaves a memor
02A400: 79 20 6D 61 70 20 6C 6F 6F 6B 69 6E 67 20 6C 69 y map looking li
02A410: 6B 65 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 ke:......
02A420: 20 20 20 20 20 20 20 20 20 7C 20 48 61 72 64 77 | Hardw
02A430: 61 72 65 20 73 74 61 63 6B 20 20 20 7C 0D 0A 20 are stack |..
02A440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C |
02A450: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
02A460: 2D 2D 7C 20 3C 20 53 50 0D 0A 20 20 20 20 20 20 --| < SP..
02A470: 20 20 20 20 20 20 20 20 20 20 7C 20 20 20 20 20 |
02A480: 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 0D 0A |..
02A490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02A4A0: 7C 20 65 6D 70 74 79 20 20 20 20 20 20 20 20 20 | empty
02A4B0: 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 |..
02A4C0: 20 20 20 20 20 20 7C 20 20 20 20 20 20 20 20 20 |
02A4D0: 20 20 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 20 |..
02A4E0: 20 20 20 20 20 20 20 20 20 20 20 20 7C 2D 2D 2D |---
02A4F0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C ---------------|
02A500: 20 77 69 6C 6C 20 62 65 20 72 65 70 65 61 74 65 will be repeate
02A510: 64 2C 20 74 68 69 73 20 74 69 6D 65 20 67 65 6E d, this time gen
02A520: 65 72 61 74 69 6E 67 20 0D 8A 63 6F 64 65 2E 0D erating ..code..
02A530: 0A 3E 70 61 0D 0A 3E 63 65 20 E2 41 32 2E 20 53 .>pa..>ce .A2. S
02A540: 55 4D 4D 41 52 59 20 41 4E 44 20 49 4E 44 45 58 UMMARY AND INDEX
02A550: 20 4F 46 20 4C 49 42 52 41 52 59 20 52 4F 55 54 OF LIBRARY ROUT
02A560: 49 4E 45 53 E2 0D 0A 0D 0A 0D 0A 09 54 68 65 20 INES........The
02A570: 6C 65 74 74 65 72 20 20 61 74 20 74 68 65 20 73 letter at the s
02A580: 74 61 72 74 20 6F 66 90 20 65 61 63 68 90 20 6C tart of. each. l
02A590: 69 6E 65 90 20 69 6E 20 74 68 65 20 20 66 6F 6C ine. in the fol
02A5A0: 6C 6F 77 69 6E 67 20 6C 69 73 74 20 6F 66 20 0D lowing list of .
02A5B0: 8A 6C 69 62 72 61 72 79 20 72 6F 75 74 69 6E 65 .library routine
02A5C0: 73 20 69 6E 64 69 63 61 74 65 73 20 74 68 65 20 s indicates the
02A5D0: 64 65 67 72 65 65 90 20 6F 66 20 70 6F 72 74 61 degree. of porta
02A5E0: 62 69 6C 69 74 79 20 6F 66 20 74 68 65 20 72 6F bility of the ro
02A5F0: 75 74 69 6E 65 73 2E 20 0D 8A 46 75 6C 6C 20 64 utines. ..Full d
02A600: 65 74 61 69 6C 73 20 61 72 65 20 67 69 76 65 6E etails are given
02A610: 20 69 6E 20 41 70 70 65 6E 64 69 78 20 33 2E 0D in Appendix 3..
02A620: 0A 09 4E 6F 74 65 3A 20 41 20 6D 65 61 6E 73 20 ..Note: A means
02A630: 41 4D 53 44 4F 53 20 76 65 72 73 69 6F 6E 20 6F AMSDOS version o
02A640: 6E 6C 79 2C 20 43 20 6D 65 61 6E 73 20 43 50 2F nly, C means CP/
02A650: 4D 20 76 65 72 73 69 6F 6E 20 6F 6E 6C 79 0D 0A M version only..
02A660: 0D 0A 09 53 20 69 6E 64 69 63 61 74 65 73 20 72 ...S indicates r
02A670: 6F 75 74 69 6E 65 20 69 73 20 70 61 72 74 20 6F outine is part o
02A680: 66 20 74 68 65 20 73 74 61 6E 64 61 72 64 20 42 f the standard B
02A690: 43 50 4C 20 49 2F 4F 20 6C 69 62 72 61 72 79 0D CPL I/O library.
02A6A0: 0A 09 44 20 69 6E 64 69 63 61 74 65 73 20 61 20 ..D indicates a
02A6B0: 73 74 61 6E 64 61 72 64 20 42 43 50 4C 90 20 72 standard BCPL. r
02A6C0: 6F 75 74 69 6E 65 90 20 62 75 74 20 77 69 74 68 outine. but with
02A6D0: 20 61 20 73 6C 69 67 68 74 20 64 69 66 66 65 72 a slight differ
02A6E0: 65 6E 63 65 0D 8A 20 20 20 20 20 20 69 6E 20 74 ence.. in t
02A6F0: 68 65 20 77 61 79 20 69 74 20 69 73 20 75 73 65 he way it is use
02A700: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
02A710: 20 20 7C 20 56 65 63 74 6F 72 73 20 20 20 20 20 | Vectors
02A720: 20 20 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 |..
02A730: 20 20 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D 2D |-------
02A740: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 0D 0A 20 20 -----------|..
02A750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20 |
02A760: 50 72 6F 67 72 61 6D 20 61 6E 64 20 20 20 20 20 Program and
02A770: 20 7C 0D 0A 09 09 09 7C 20 73 74 61 74 69 63 20 |.....| static
02A780: 76 61 72 69 61 62 6C 65 73 20 7C 0D 0A 20 20 20 variables |..
02A790: 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 2D 2D |--
02A7A0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
02A7B0: 7C 20 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 | ..
02A7C0: 20 20 20 20 7C 20 72 75 6E 74 69 6D 65 20 72 6F | runtime ro
02A7D0: 75 74 69 6E 65 73 20 7C 0D 0A 20 20 20 20 20 20 utines |..
02A7E0: 20 20 20 20 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D |-----
02A7F0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 20 3C -------------| <
02A800: 20 70 72 6F 67 72 61 6D 20 73 74 61 72 74 0D 0A program start..
02A810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02A820: 7C 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |
02A830: 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 |..
02A840: 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D 2D 2D 2D |---------
02A850: 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 20 3C 20 30 0D 0A ---------| < 0..
02A860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02A870: 0D 0A 09 57 68 65 6E 20 77 72 69 74 69 6E 67 20 ...When writing
02A880: 61 6E 79 20 69 6E 6C 69 6E 65 90 20 63 6F 64 65 any inline. code
02A890: 90 20 74 68 65 90 20 75 73 65 72 90 20 6D 75 73 . the. user. mus
02A8A0: 74 90 20 65 6E 73 75 72 65 20 74 68 61 74 20 74 t. ensure that t
02A8B0: 68 65 20 49 58 20 0D 8A 72 65 67 69 73 74 65 72 he IX ..register
02A8C0: 20 61 6E 64 20 74 68 65 20 53 50 20 61 72 65 90 and the SP are.
02A8D0: 20 72 65 73 74 6F 72 65 64 90 20 74 6F 90 20 74 restored. to. t
02A8E0: 68 65 69 72 20 66 6F 72 6D 65 72 20 70 6F 73 69 heir former posi
02A8F0: 74 69 6F 6E 73 20 77 68 65 6E 20 74 68 65 20 0D tions when the .
02A900: 64 2E 0D 0A 09 46 20 69 6E 64 69 63 61 74 65 73 d....F indicates
02A910: 20 66 72 65 71 75 65 6E 74 6C 79 20 66 6F 75 6E frequently foun
02A920: 64 20 73 69 6D 69 6C 61 72 20 72 6F 75 74 69 6E d similar routin
02A930: 65 73 20 69 6E 20 42 43 50 4C 20 73 79 73 74 65 es in BCPL syste
02A940: 6D 73 0D 0A 09 41 6C 6C 20 75 6E 6D 61 72 6B 65 ms...All unmarke
02A950: 64 20 72 6F 75 74 69 6E 65 73 20 61 72 65 20 41 d routines are A
02A960: 72 6E 6F 72 20 42 43 50 4C 20 73 70 65 63 69 66 rnor BCPL specif
02A970: 69 63 2E 0D 0A 0D 0A 0D 0A 3E 2D 2D 21 2D 2D 2D ic.......>--!---
02A980: 21 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 21 2D 2D !------------!--
02A990: 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D --!-------!-----
02A9A0: 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D --!-------!-----
02A9B0: 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D --!-------!-----
02A9C0: 2D 2D 2D 2D 52 0D 0A 09 09 6E 61 6D 65 20 09 70 ----R....name .p
02A9D0: 67 09 64 65 73 63 72 69 70 74 69 6F 6E 0D 0A 0D g.description...
02A9E0: 0A 09 53 09 61 70 74 6F 76 65 63 20 09 34 30 09 ..S.aptovec .40.
02A9F0: 63 61 6C 6C 20 61 20 72 6F 75 74 69 6E 65 20 77 call a routine w
02AA00: 69 74 68 20 61 20 64 79 6E 61 6D 69 63 61 6C 6C ith a dynamicall
02AA10: 79 20 61 6C 6C 6F 63 61 74 65 64 20 76 65 63 74 y allocated vect
02AA20: 6F 72 0D 0A 43 09 09 62 64 6F 73 61 20 09 34 35 or..C..bdosa .45
02AA30: 09 63 61 6C 6C 20 74 68 65 20 42 44 4F 53 2C 20 .call the BDOS,
02AA40: 72 65 74 75 72 6E 69 6E 67 20 76 61 6C 75 65 73 returning values
02AA50: 0D 0A 43 09 09 62 64 6F 73 62 20 09 34 35 09 63 ..C..bdosb .45.c
02AA60: 61 6C 6C 20 74 68 65 20 42 44 4F 53 2C 20 6E 6F all the BDOS, no
02AA70: 74 20 72 65 74 75 72 6E 69 6E 67 20 76 61 6C 75 t returning valu
02AA80: 65 73 0D 0A 43 09 09 62 69 6F 73 20 09 34 35 09 es..C..bios .45.
02AA90: 63 61 6C 6C 20 74 68 65 20 42 49 4F 53 2C 20 72 call the BIOS, r
02AAA0: 65 74 75 72 6E 69 6E 67 20 61 20 76 61 6C 75 65 eturning a value
02AAB0: 0D 0A 09 09 62 79 74 65 6D 6F 76 65 20 09 34 30 ....bytemove .40
02AAC0: 09 6D 6F 76 65 20 61 20 62 6C 6F 63 6B 20 6F 66 .move a block of
02AAD0: 20 6D 65 6D 6F 72 79 20 75 73 69 6E 67 20 62 79 memory using by
02AAE0: 74 65 20 61 64 64 72 65 73 73 65 73 0D 0A 09 46 te addresses...F
02AAF0: 09 63 61 6C 6C 20 09 34 30 09 63 61 6C 6C 20 61 .call .40.call a
02AB00: 8A 63 6F 64 65 20 66 69 6E 69 73 68 65 73 2E 20 .code finishes.
02AB10: 46 61 69 6C 75 72 65 20 74 6F 90 20 64 6F 90 20 Failure to. do.
02AB20: 74 68 69 73 90 20 77 69 6C 6C 90 20 61 6C 6D 6F this. will. almo
02AB30: 73 74 90 20 63 65 72 74 61 69 6E 6C 79 20 63 61 st. certainly ca
02AB40: 75 73 65 20 74 68 65 20 0D 8A 70 72 6F 67 72 61 use the ..progra
02AB50: 6D 20 74 6F 90 20 63 72 61 73 68 2E 90 20 54 68 m to. crash.. Th
02AB60: 65 90 20 41 6D 73 74 72 61 64 90 20 61 6C 73 6F e. Amstrad. also
02AB70: 90 20 72 65 71 75 69 72 65 73 90 20 74 68 61 74 . requires. that
02AB80: 90 20 74 68 65 90 20 61 6C 74 65 72 6E 61 74 65 . the. alternate
02AB90: 20 0D 8A 72 65 67 69 73 74 65 72 20 73 65 74 20 ..register set
02ABA0: 69 73 20 6E 6F 74 20 75 73 65 64 2E 0D 0A 0D 0A is not used.....
02ABB0: 09 54 68 65 20 4C 45 56 45 4C 20 6C 69 62 72 61 .The LEVEL libra
02ABC0: 72 79 20 70 72 6F 63 65 64 75 72 65 20 73 74 6F ry procedure sto
02ABD0: 72 65 73 90 20 69 6E 66 6F 72 6D 61 74 69 6F 6E res. information
02ABE0: 20 61 62 6F 75 74 20 74 68 65 20 73 74 61 74 65 about the state
02ABF0: 20 6F 66 20 0D 8A 63 6F 6D 70 75 74 61 74 69 6F of ..computatio
02AC00: 6E 20 69 6E 20 61 20 34 20 77 6F 72 64 20 76 65 n in a 4 word ve
02AC10: 63 74 6F 72 2E 20 54 68 65 90 20 34 90 20 76 61 ctor. The. 4. va
02AC20: 6C 75 65 73 20 77 68 69 63 68 20 61 72 65 20 73 lues which are s
02AC30: 74 6F 72 65 64 20 61 72 65 20 61 73 20 0D 8A 66 tored are as ..f
02AC40: 6F 6C 6C 6F 77 73 0D 0A 0D 0A 09 77 6F 72 64 20 ollows.....word
02AC50: 30 20 2D 2D 20 54 68 65 20 6F 6C 64 20 76 65 63 0 -- The old vec
02AC60: 74 6F 72 20 62 61 73 65 20 70 6F 69 6E 74 65 72 tor base pointer
02AC70: 0D 0A 09 77 6F 72 64 20 31 20 2D 2D 20 54 68 65 ...word 1 -- The
02AC80: 20 76 65 63 74 6F 72 20 74 6F 70 20 70 6F 69 6E vector top poin
02AC90: 74 65 72 0D 0A 09 77 6F 72 64 20 32 20 2D 2D 20 ter...word 2 --
02ACA0: 49 58 0D 0A 09 77 6F 72 64 20 33 20 2D 2D 20 53 IX...word 3 -- S
02ACB0: 50 0D 0A 0D 0A 09 57 68 65 6E 20 4C 4F 4E 47 4A P.....When LONGJ
02ACC0: 55 4D 50 20 69 73 20 75 73 65 64 90 20 74 68 69 UMP is used. thi
02ACD0: 73 90 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 90 20 s. information.
02ACE0: 69 73 90 20 75 73 65 64 90 20 74 6F 20 72 65 73 is. used. to res
02ACF0: 74 6F 72 65 20 74 68 65 20 0D 8A 73 74 61 74 65 tore the ..state
02AD00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
02AD10: 24 00 01 00 02 09 4E E5 24 00 C1 02 00 00 00 02 $.....N.$.......
02AD20: 24 00 C6 02 00 00 00 02 24 00 C2 02 00 00 00 02 $.......$.......
02AD30: 24 00 C7 02 00 00 00 02 24 00 C3 02 00 00 00 02 $.......$.......
02AD40: 24 00 C8 02 00 00 00 02 24 00 C4 02 00 00 00 02 $.......$.......
02AD50: 24 00 C9 02 00 00 00 02 24 00 C5 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 6D 61 63 68 69 6E 65 20 63 6F 64 65 20 72 6F machine code ro
02AE10: 75 74 69 6E 65 0D 0A 09 46 09 63 61 70 69 74 61 utine...F.capita
02AE20: 6C 63 68 20 09 34 31 09 63 6F 6E 76 65 72 74 20 lch .41.convert
02AE30: 63 68 61 72 61 63 74 65 72 20 66 72 6F 6D 20 6C character from l
02AE40: 6F 77 65 72 20 74 6F 20 75 70 70 65 72 20 63 61 ower to upper ca
02AE50: 73 65 0D 0A 09 09 63 6C 6F 73 65 69 6E 20 09 33 se....closein .3
02AE60: 37 09 63 6C 6F 73 65 20 61 6E 20 69 6E 70 75 74 7.close an input
02AE70: 20 66 69 6C 65 0D 0A 09 09 63 6C 6F 73 65 6F 75 file....closeou
02AE80: 74 20 09 33 37 09 63 6C 6F 73 65 20 61 6E 20 6F t .37.close an o
02AE90: 75 74 70 75 74 20 66 69 6C 65 0D 0A 09 46 09 63 utput file...F.c
02AEA0: 6F 6D 70 63 68 20 09 34 31 09 63 6F 6D 70 61 72 ompch .41.compar
02AEB0: 65 20 74 77 6F 20 63 68 61 72 61 63 74 65 72 73 e two characters
02AEC0: 0D 0A 09 46 09 63 6F 6D 70 73 74 72 69 6E 67 20 ...F.compstring
02AED0: 09 34 31 09 63 6F 6D 70 61 72 65 20 74 77 6F 20 .41.compare two
02AEE0: 73 74 72 69 6E 67 73 0D 0A 09 09 64 65 62 75 67 strings....debug
02AEF0: 20 09 34 38 09 64 65 62 75 67 67 69 6E 67 20 61 .48.debugging a
02AF00: 69 64 0D 0A 09 09 64 65 63 76 61 6C 20 09 34 31 id....decval .41
02AF10: 09 63 6F 6E 76 65 72 74 20 61 20 68 65 78 61 64 .convert a hexad
02AF20: 65 63 69 6D 61 6C 20 64 69 67 69 74 20 74 6F 20 ecimal digit to
02AF30: 64 65 63 69 6D 61 6C 0D 0A 09 46 09 64 65 6C 65 decimal...F.dele
02AF40: 74 65 20 09 34 32 09 64 65 6C 65 74 65 20 61 20 te .42.delete a
02AF50: 66 69 6C 65 0D 0A 09 53 09 65 6E 64 72 65 61 64 file...S.endread
02AF60: 09 33 34 09 63 6C 6F 73 65 20 74 68 65 20 63 75 .34.close the cu
02AF70: 72 72 65 6E 74 20 69 6E 70 75 74 20 73 74 72 65 rrent input stre
02AF80: 61 6D 0D 0A 09 53 09 65 6E 64 77 72 69 74 65 20 am...S.endwrite
02AF90: 09 33 34 09 63 6C 6F 73 65 20 74 68 65 20 63 75 .34.close the cu
02AFA0: 72 72 65 6E 74 20 6F 75 74 70 75 74 20 73 74 72 rrent output str
02AFB0: 65 61 6D 0D 0A 41 09 09 65 78 74 65 72 6E 61 6C eam..A..external
02AFC0: 20 09 34 36 09 63 61 6C 6C 20 61 6E 20 65 78 74 .46.call an ext
02AFD0: 65 72 6E 61 6C 20 63 6F 6D 6D 61 6E 64 0D 0A 09 ernal command...
02AFE0: 44 09 66 69 6E 64 69 6E 70 75 74 20 09 33 35 09 D.findinput .35.
02AFF0: 6F 70 65 6E 20 61 6E 20 69 6E 70 75 74 20 66 69 open an input fi
02B000: 20 64 65 63 69 6D 61 6C 20 6E 75 6D 62 65 72 0D decimal number.
02B010: 0A 09 09 77 72 76 64 75 20 09 33 39 09 77 72 69 ...wrvdu .39.wri
02B020: 74 65 20 63 68 61 72 61 63 74 65 72 20 74 6F 20 te character to
02B030: 74 68 65 20 73 63 72 65 65 6E 0D 0A 3E 70 61 0D the screen..>pa.
02B040: 0A 3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D .>---!-----!----
02B050: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -!-------!------
02B060: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -!-------!------
02B070: 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D -!-------!------
02B080: 2D 21 2D 2D 2D 2D 52 0D 0A 3E 63 65 20 E2 41 33 -!----R..>ce .A3
02B090: 2E 20 50 4F 52 54 41 42 49 4C 49 54 59 E2 0D 0A . PORTABILITY...
02B0A0: 0D 0A 0D 0A 09 4D 6F 73 74 20 6F 66 20 74 68 65 .....Most of the
02B0B0: 20 61 62 6F 76 65 90 20 49 2F 4F 90 20 72 6F 75 above. I/O. rou
02B0C0: 74 69 6E 65 73 90 20 77 69 6C 6C 90 20 62 65 90 tines. will. be.
02B0D0: 20 66 6F 75 6E 64 20 69 6E 20 76 69 72 74 75 61 found in virtua
02B0E0: 6C 6C 79 20 61 6C 6C 20 0D 8A 76 65 72 73 69 6F lly all ..versio
02B0F0: 6E 73 20 6F 66 20 42 43 50 4C 2E 20 53 6F 6D 65 ns of BCPL. Some
02B100: 20 61 72 65 90 20 6C 65 73 73 90 20 73 74 61 6E are. less. stan
02B110: 64 61 72 64 2C 90 20 61 6E 64 90 20 73 6F 6D 65 dard,. and. some
02B120: 20 61 72 65 20 73 70 65 63 69 66 69 63 20 74 6F are specific to
02B130: 20 0D 8A 41 72 6E 6F 72 20 42 43 50 4C 2E 20 49 ..Arnor BCPL. I
02B140: 66 20 61 20 70 72 6F 67 72 61 6D 20 6D 61 79 90 f a program may.
02B150: 20 62 65 90 20 72 65 71 75 69 72 65 64 20 74 6F be. required to
02B160: 20 72 75 6E 20 75 6E 64 65 72 20 6F 74 68 65 72 run under other
02B170: 20 76 65 72 73 69 6F 6E 73 20 0D 8A 6F 66 20 42 versions ..of B
02B180: 43 50 4C 20 74 68 65 73 65 20 6C 65 73 73 90 20 CPL these less.
02B190: 73 74 61 6E 64 61 72 64 90 20 72 6F 75 74 69 6E standard. routin
02B1A0: 65 73 90 20 73 68 6F 75 6C 64 90 20 62 65 90 20 es. should. be.
02B1B0: 75 73 65 64 90 20 61 73 20 6C 69 74 74 6C 65 20 used. as little
02B1C0: 61 73 20 0D 8A 70 6F 73 73 69 62 6C 65 2E 0D 0A as ..possible...
02B1D0: 0D 0A 0D 0A 0D 0A 52 6F 75 74 69 6E 65 73 20 74 ......Routines t
02B1E0: 68 61 74 20 61 72 65 20 70 61 72 74 20 6F 66 20 hat are part of
02B1F0: 74 68 65 90 20 73 74 61 6E 64 61 72 64 20 42 43 the. standard BC
02B200: 6C 65 0D 0A 09 44 09 66 69 6E 64 6F 75 74 70 75 le...D.findoutpu
02B210: 74 20 09 33 36 09 6F 70 65 6E 20 61 6E 20 6F 75 t .36.open an ou
02B220: 74 70 75 74 20 66 69 6C 65 0D 0A 43 09 09 66 69 tput file..C..fi
02B230: 72 6D 77 61 72 65 20 09 34 35 09 63 61 6C 6C 20 rmware .45.call
02B240: 74 68 65 20 66 69 72 6D 77 61 72 65 20 28 43 50 the firmware (CP
02B250: 2F 4D 20 50 6C 75 73 20 6F 6E 6C 79 29 0D 0A 09 /M Plus only)...
02B260: 09 66 6C 75 73 68 20 09 33 37 09 66 6C 75 73 68 .flush .37.flush
02B270: 20 74 68 65 20 6B 65 79 62 6F 61 72 64 20 62 75 the keyboard bu
02B280: 66 66 65 72 0D 0A 09 53 09 67 65 74 62 79 74 65 ffer...S.getbyte
02B290: 20 09 34 37 09 67 65 74 20 61 20 62 79 74 65 20 .47.get a byte
02B2A0: 66 72 6F 6D 20 61 20 73 74 72 69 6E 67 0D 0A 09 from a string...
02B2B0: 53 09 69 6E 70 75 74 20 09 33 33 09 72 65 74 75 S.input .33.retu
02B2C0: 72 6E 20 74 68 65 20 63 75 72 72 65 6E 74 6C 79 rn the currently
02B2D0: 20 73 65 6C 65 63 74 65 64 20 6F 75 74 70 75 74 selected output
02B2E0: 20 73 74 72 65 61 6D 0D 0A 09 44 09 6C 65 76 65 stream...D.leve
02B2F0: 6C 20 09 34 32 09 67 65 74 20 70 6F 69 6E 74 65 l .42.get pointe
02B300: 72 20 74 6F 20 63 75 72 72 65 6E 74 20 65 6E 76 r to current env
02B310: 69 72 6F 6E 6D 65 6E 74 0D 0A 09 44 09 6C 6F 6E ironment...D.lon
02B320: 67 6A 75 6D 70 20 09 34 32 09 6A 75 6D 70 20 74 gjump .42.jump t
02B330: 6F 20 6F 75 74 65 72 20 6C 65 76 65 6C 20 6F 66 o outer level of
02B340: 20 70 72 6F 67 72 61 6D 0D 0A 09 53 09 6E 65 77 program...S.new
02B350: 6C 69 6E 65 20 09 32 37 09 73 74 61 72 74 20 61 line .27.start a
02B360: 20 6E 65 77 20 6C 69 6E 65 20 69 6E 20 74 68 65 new line in the
02B370: 20 6F 75 74 70 75 74 0D 0A 09 53 09 6E 65 77 70 output...S.newp
02B380: 61 67 65 20 09 32 37 09 73 74 61 72 74 20 61 20 age .27.start a
02B390: 6E 65 77 20 70 61 67 65 20 69 6E 20 74 68 65 20 new page in the
02B3A0: 6F 75 74 70 75 74 0D 0A 09 53 09 6F 75 74 70 75 output...S.outpu
02B3B0: 74 20 09 33 33 09 72 65 74 75 72 6E 20 74 68 65 t .33.return the
02B3C0: 20 63 75 72 72 65 6E 74 6C 79 20 73 65 6C 65 63 currently selec
02B3D0: 74 65 64 20 6F 75 74 70 75 74 20 73 74 72 65 61 ted output strea
02B3E0: 6D 0D 0A 3E 70 61 0D 0A 0D 0A 0D 0A 09 53 09 70 m..>pa.......S.p
02B3F0: 61 63 6B 73 74 72 69 6E 67 20 09 34 37 09 63 6F ackstring .47.co
02B400: 50 4C 20 49 2F 4F 20 6C 69 62 72 61 72 79 20 28 PL I/O library (
02B410: 74 68 6F 73 65 20 6D 61 72 6B 65 64 20 0D 8A 27 those marked ..'
02B420: 64 27 20 61 72 65 20 75 73 65 64 20 69 6E 20 61 d' are used in a
02B430: 20 73 6C 69 67 68 74 6C 79 20 64 69 66 66 65 72 slightly differ
02B440: 65 6E 74 20 77 61 79 20 69 6E 20 41 72 6E 6F 72 ent way in Arnor
02B450: 20 42 43 50 4C 29 3A 0D 0A 0D 0A 61 70 74 6F 76 BCPL):....aptov
02B460: 65 63 2C 90 20 65 6E 64 72 65 61 64 2C 90 20 65 ec,. endread,. e
02B470: 6E 64 77 72 69 74 65 2C 90 20 66 69 6E 64 69 6E ndwrite,. findin
02B480: 70 75 74 28 64 29 2C 90 20 66 69 6E 64 6F 75 74 put(d),. findout
02B490: 70 75 74 28 64 29 2C 90 20 67 65 74 62 79 74 65 put(d),. getbyte
02B4A0: 2C 20 0D 8A 69 6E 70 75 74 2C 20 6C 65 76 65 6C , ..input, level
02B4B0: 28 64 29 2C 20 6C 6F 6E 67 6A 75 6D 70 28 64 29 (d), longjump(d)
02B4C0: 2C 90 20 6E 65 77 6C 69 6E 65 2C 90 20 6E 65 77 ,. newline,. new
02B4D0: 70 61 67 65 2C 90 20 6F 75 74 70 75 74 2C 20 70 page,. output, p
02B4E0: 61 63 6B 73 74 72 69 6E 67 2C 20 0D 8A 70 75 74 ackstring, ..put
02B4F0: 62 79 74 65 2C 20 72 64 63 68 2C 20 72 65 61 64 byte, rdch, read
02B500: 6E 2C 20 72 65 61 64 73 2C 90 20 72 65 77 69 6E n, reads,. rewin
02B510: 64 2C 20 73 65 6C 65 63 74 69 6E 70 75 74 2C 20 d, selectinput,
02B520: 73 65 6C 65 63 74 6F 75 74 70 75 74 2C 20 73 74 selectoutput, st
02B530: 6F 70 2C 20 0D 8A 75 6E 70 61 63 6B 73 74 72 69 op, ..unpackstri
02B540: 6E 67 2C 90 20 75 6E 72 64 63 68 2C 90 20 77 72 ng,. unrdch,. wr
02B550: 63 68 2C 90 90 20 77 72 69 74 65 64 2C 90 90 20 ch,.. writed,..
02B560: 77 72 69 74 65 66 2C 90 90 20 77 72 69 74 65 68 writef,.. writeh
02B570: 65 78 2C 90 20 77 72 69 74 65 6E 2C 20 0D 8A 77 ex,. writen, ..w
02B580: 72 69 74 65 6F 63 74 2C 20 77 72 69 74 65 73 2E riteoct, writes.
02B590: 0D 0A 0D 0A 0D 0A 52 6F 75 74 69 6E 65 73 20 74 ......Routines t
02B5A0: 68 61 74 20 61 72 65 20 6E 6F 74 20 65 6E 74 69 hat are not enti
02B5B0: 72 65 6C 79 20 73 74 61 6E 64 61 72 64 20 28 74 rely standard (t
02B5C0: 68 6F 75 67 68 20 6D 61 6E 79 20 42 43 50 4C 20 hough many BCPL
02B5D0: 73 79 73 74 65 6D 73 20 68 61 76 65 20 0D 8A 73 systems have ..s
02B5E0: 6F 6D 65 74 68 69 6E 67 20 73 69 6D 69 6C 61 72 omething similar
02B5F0: 29 3A 0D 0A 0D 0A 63 61 6C 6C 2C 20 63 61 70 69 ):....call, capi
02B600: 6D 70 61 63 74 20 61 20 73 74 72 69 6E 67 0D 0A mpact a string..
02B610: 09 09 70 72 62 75 73 79 20 09 33 38 09 73 65 65 ..prbusy .38.see
02B620: 20 69 66 20 74 68 65 20 70 72 69 6E 74 65 72 20 if the printer
02B630: 69 73 20 62 75 73 79 0D 0A 09 09 70 72 63 68 20 is busy....prch
02B640: 09 33 38 09 73 65 6E 64 20 61 20 63 68 61 72 61 .38.send a chara
02B650: 63 74 65 72 20 74 6F 20 74 68 65 20 70 72 69 6E cter to the prin
02B660: 74 65 72 0D 0A 09 53 09 70 75 74 62 79 74 65 20 ter...S.putbyte
02B670: 09 34 37 09 70 75 74 20 61 20 62 79 74 65 20 69 .47.put a byte i
02B680: 6E 74 6F 20 61 20 73 74 72 69 6E 67 0D 0A 09 46 nto a string...F
02B690: 09 72 61 6E 64 6F 6D 20 09 34 32 09 72 65 74 75 .random .42.retu
02B6A0: 72 6E 20 61 20 70 73 65 75 64 6F 2D 72 61 6E 64 rn a pseudo-rand
02B6B0: 6F 6D 20 6E 75 6D 62 65 72 0D 0A 09 53 09 72 64 om number...S.rd
02B6C0: 63 68 20 09 33 31 09 72 65 61 64 20 61 20 63 68 ch .31.read a ch
02B6D0: 61 72 61 63 74 65 72 0D 0A 09 09 72 64 74 65 73 aracter....rdtes
02B6E0: 74 20 09 33 38 09 73 65 65 20 69 66 20 61 20 6B t .38.see if a k
02B6F0: 65 79 20 68 61 73 20 62 65 65 6E 20 70 72 65 73 ey has been pres
02B700: 73 65 64 0D 0A 09 09 72 64 76 64 75 20 09 33 38 sed....rdvdu .38
02B710: 09 72 65 61 64 20 63 68 61 72 61 63 74 65 72 20 .read character
02B720: 66 72 6F 6D 20 74 68 65 20 6B 65 79 62 6F 61 72 from the keyboar
02B730: 64 0D 0A 09 09 72 65 61 64 63 68 20 09 33 39 09 d....readch .39.
02B740: 72 65 61 64 20 61 20 63 68 61 72 61 63 74 65 72 read a character
02B750: 20 66 72 6F 6D 20 74 68 65 20 69 6E 70 75 74 20 from the input
02B760: 66 69 6C 65 0D 0A 09 53 09 72 65 61 64 6E 20 09 file...S.readn .
02B770: 33 31 09 72 65 61 64 20 61 20 64 65 63 69 6D 61 31.read a decima
02B780: 6C 20 6E 75 6D 62 65 72 0D 0A 09 53 09 72 65 61 l number...S.rea
02B790: 64 73 20 09 33 31 09 72 65 61 64 20 61 20 73 74 ds .31.read a st
02B7A0: 72 69 6E 67 0D 0A 43 09 09 72 65 61 64 73 65 63 ring..C..readsec
02B7B0: 74 6F 72 09 2D 09 72 65 61 64 20 61 20 31 32 38 tor.-.read a 128
02B7C0: 20 62 79 74 65 20 73 65 63 74 6F 72 20 66 72 6F byte sector fro
02B7D0: 6D 20 64 69 73 63 0D 0A 09 46 09 72 65 6E 61 6D m disc...F.renam
02B7E0: 65 20 09 34 32 09 72 65 6E 61 6D 65 20 61 20 66 e .42.rename a f
02B7F0: 69 6C 65 0D 0A 43 09 53 09 72 65 77 69 6E 64 20 ile..C.S.rewind
02B800: 74 61 6C 63 68 2C 20 63 6F 6D 70 63 68 2C 90 20 talch, compch,.
02B810: 63 6F 6D 70 73 74 72 69 6E 67 2C 90 20 64 65 6C compstring,. del
02B820: 65 74 65 2C 90 20 72 61 6E 64 6F 6D 2C 90 20 72 ete,. random,. r
02B830: 65 6E 61 6D 65 2C 20 74 69 6D 65 2C 20 0D 8A 75 ename, time, ..u
02B840: 70 70 65 72 63 61 73 65 2C 20 77 72 69 74 65 74 ppercase, writet
02B850: 2C 20 77 72 69 74 65 75 2E 0D 0A 0D 0A 0D 0A 52 , writeu.......R
02B860: 6F 75 74 69 6E 65 73 20 73 70 65 63 69 66 69 63 outines specific
02B870: 20 74 6F 20 41 72 6E 6F 72 20 42 43 50 4C 3A 0D to Arnor BCPL:.
02B880: 0A 0D 0A 62 64 6F 73 61 2C 90 20 62 64 6F 73 62 ...bdosa,. bdosb
02B890: 2C 90 20 62 69 6F 73 2C 90 20 62 79 74 65 6D 6F ,. bios,. bytemo
02B8A0: 76 65 2C 90 20 63 6C 6F 73 65 69 6E 2C 90 20 63 ve,. closein,. c
02B8B0: 6C 6F 73 65 6F 75 74 2C 90 20 64 65 62 75 67 2C loseout,. debug,
02B8C0: 90 20 64 65 63 76 61 6C 2C 20 0D 8A 65 78 74 65 . decval, ..exte
02B8D0: 72 6E 61 6C 2C 90 20 66 69 72 6D 77 61 72 65 2C rnal,. firmware,
02B8E0: 90 20 66 6C 75 73 68 2C 90 20 70 72 62 75 73 79 . flush,. prbusy
02B8F0: 2C 90 20 70 72 63 68 2C 90 20 72 64 74 65 73 74 ,. prch,. rdtest
02B900: 2C 90 20 72 64 76 64 75 2C 90 20 72 65 61 64 63 ,. rdvdu,. readc
02B910: 68 2C 20 0D 8A 72 65 61 64 73 65 63 74 6F 72 2C h, ..readsector,
02B920: 90 20 72 65 77 69 6E 64 69 6E 2C 90 20 73 65 74 . rewindin,. set
02B930: 66 63 62 2C 90 20 73 74 72 74 6F 6E 75 6D 2C 90 fcb,. strtonum,.
02B940: 90 20 74 61 69 6C 2C 90 20 76 65 72 73 69 6F 6E . tail,. version
02B950: 2C 90 20 77 72 69 74 65 63 68 2C 20 0D 8A 77 72 ,. writech, ..wr
02B960: 69 74 65 73 65 63 74 6F 72 2C 20 77 72 76 64 75 itesector, wrvdu
02B970: 2C 20 70 6C 75 73 20 61 6C 6C 20 74 68 65 20 72 , plus all the r
02B980: 6F 75 74 69 6E 65 73 90 20 69 6E 20 74 68 65 20 outines. in the
02B990: 66 69 6C 65 20 22 41 4D 53 44 4F 53 22 2C 20 77 file "AMSDOS", w
02B9A0: 68 69 63 68 20 0D 8A 61 72 65 20 61 6C 73 6F 20 hich ..are also
02B9B0: 43 50 43 20 6D 61 63 68 69 6E 65 20 73 70 65 63 CPC machine spec
02B9C0: 69 66 69 63 20 61 73 20 77 65 6C 6C 2E 0D 0A 0D ific as well....
02B9D0: 0A 0D 0A 3E 70 61 0D 0A 20 20 20 20 20 20 20 20 ...>pa..
02B9E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B9F0: 20 20 E2 41 34 2E 20 45 52 52 4F 52 20 4D 45 53 .A4. ERROR MES
02BA00: 09 33 36 09 72 65 77 69 6E 64 20 74 68 65 20 69 .36.rewind the i
02BA10: 6E 70 75 74 20 73 74 72 65 61 6D 0D 0A 43 09 09 nput stream..C..
02BA20: 72 65 77 69 6E 64 69 6E 20 09 33 39 09 72 65 77 rewindin .39.rew
02BA30: 69 6E 64 20 61 6E 20 69 6E 70 75 74 20 66 69 6C ind an input fil
02BA40: 65 0D 0A 09 53 09 73 65 6C 65 63 74 69 6E 70 75 e...S.selectinpu
02BA50: 74 20 09 33 33 09 63 68 61 6E 67 65 20 74 68 65 t .33.change the
02BA60: 20 69 6E 70 75 74 20 73 74 72 65 61 6D 0D 0A 09 input stream...
02BA70: 53 09 73 65 6C 65 63 74 6F 75 74 70 75 74 20 33 S.selectoutput 3
02BA80: 34 09 63 68 61 6E 67 65 20 74 68 65 20 6F 75 74 4.change the out
02BA90: 70 75 74 20 73 74 72 65 61 6D 0D 0A 43 09 09 73 put stream..C..s
02BAA0: 65 74 66 63 62 09 2D 09 73 65 74 20 75 70 20 61 etfcb.-.set up a
02BAB0: 20 66 69 6C 65 20 63 6F 6E 74 72 6F 6C 20 62 6C file control bl
02BAC0: 6F 63 6B 0D 0A 09 53 09 73 74 6F 70 20 09 34 33 ock...S.stop .43
02BAD0: 09 73 74 6F 70 20 61 20 70 72 6F 67 72 61 6D 20 .stop a program
02BAE0: 61 6E 64 20 73 65 74 20 72 65 74 75 72 6E 20 63 and set return c
02BAF0: 6F 64 65 0D 0A 09 09 73 74 72 74 6F 6E 75 6D 20 ode....strtonum
02BB00: 09 33 32 09 63 6F 6E 76 65 72 74 20 61 20 73 74 .32.convert a st
02BB10: 72 69 6E 67 20 74 6F 20 61 20 64 65 63 69 6D 61 ring to a decima
02BB20: 6C 20 6E 75 6D 62 65 72 0D 0A 43 09 09 74 61 69 l number..C..tai
02BB30: 6C 20 09 34 36 09 72 65 74 75 72 6E 73 20 74 68 l .46.returns th
02BB40: 65 20 43 50 2F 4D 20 63 6F 6D 6D 61 6E 64 20 74 e CP/M command t
02BB50: 61 69 6C 20 61 73 20 61 20 73 74 72 69 6E 67 0D ail as a string.
02BB60: 0A 41 09 46 09 74 69 6D 65 20 09 34 36 09 72 65 .A.F.time .46.re
02BB70: 74 75 72 6E 20 74 68 65 20 74 69 6D 65 0D 0A 09 turn the time...
02BB80: 53 09 75 6E 70 61 63 6B 73 74 72 69 6E 67 09 34 S.unpackstring.4
02BB90: 37 09 65 78 70 61 6E 64 20 61 20 73 74 72 69 6E 7.expand a strin
02BBA0: 67 20 69 6E 74 6F 20 61 20 76 65 63 74 6F 72 0D g into a vector.
02BBB0: 0A 09 53 09 75 6E 72 64 63 68 20 09 33 32 09 70 ..S.unrdch .32.p
02BBC0: 75 74 20 62 61 63 6B 20 74 68 65 20 6C 61 73 74 ut back the last
02BBD0: 20 72 65 61 64 20 63 68 61 72 61 63 74 65 72 0D read character.
02BBE0: 0A 09 46 09 75 70 70 65 72 63 61 73 65 20 09 34 ..F.uppercase .4
02BBF0: 34 09 73 61 6D 65 20 61 73 20 63 61 70 69 74 61 4.same as capita
02BC00: 53 41 47 45 53 E2 0D 0A 0D 0A 0D 0A 09 54 68 65 SAGES........The
02BC10: 72 65 20 61 72 65 20 74 68 72 65 65 20 6D 61 69 re are three mai
02BC20: 6E 20 73 65 74 73 20 6F 66 20 65 72 72 6F 72 20 n sets of error
02BC30: 6D 65 73 73 61 67 65 73 20 77 68 69 63 68 20 63 messages which c
02BC40: 61 6E 20 6F 63 63 75 72 2E 20 54 68 65 73 65 20 an occur. These
02BC50: 0D 8A 61 72 65 20 66 61 74 61 6C 20 65 72 72 6F ..are fatal erro
02BC60: 72 73 20 77 68 69 63 68 20 63 61 75 73 65 20 74 rs which cause t
02BC70: 68 65 90 20 63 6F 6D 70 69 6C 65 72 20 74 6F 20 he. compiler to
02BC80: 61 62 6F 72 74 20 69 6D 6D 65 64 69 61 74 65 6C abort immediatel
02BC90: 79 2C 20 70 68 61 73 65 20 0D 8A 31 20 65 72 72 y, phase ..1 err
02BCA0: 6F 72 73 20 77 68 69 63 68 20 77 69 6C 6C 20 73 ors which will s
02BCB0: 74 6F 70 90 20 74 68 65 90 20 63 6F 6D 70 69 6C top. the. compil
02BCC0: 61 74 69 6F 6E 90 20 61 66 74 65 72 90 20 70 68 ation. after. ph
02BCD0: 61 73 65 20 31 20 61 6E 64 20 66 69 6E 61 6C 6C ase 1 and finall
02BCE0: 79 20 0D 8A 70 68 61 73 65 20 32 20 65 72 72 6F y ..phase 2 erro
02BCF0: 72 73 20 77 68 69 63 68 20 77 69 6C 6C 20 73 74 rs which will st
02BD00: 6F 70 20 63 6F 6D 70 69 6C 61 74 69 6F 6E 20 61 op compilation a
02BD10: 74 20 74 68 65 20 65 6E 64 20 6F 66 20 74 68 65 t the end of the
02BD20: 20 66 69 72 73 74 20 72 75 6E 20 0D 8A 6F 66 20 first run ..of
02BD30: 70 68 61 73 65 20 32 2E 0D 0A 09 4D 6F 73 74 20 phase 2....Most
02BD40: 65 72 72 6F 72 20 6D 65 73 73 61 67 65 73 20 67 error messages g
02BD50: 69 76 65 90 20 61 90 20 6C 69 6E 65 90 20 6E 75 ive. a. line. nu
02BD60: 6D 62 65 72 2C 90 20 66 6F 72 20 65 78 61 6D 70 mber,. for examp
02BD70: 6C 65 20 22 45 78 70 65 63 74 69 6E 67 20 0D 8A le "Expecting ..
02BD80: 63 6F 6D 6D 61 6E 64 20 6E 65 61 72 20 6C 69 6E command near lin
02BD90: 65 20 32 37 22 2E 20 54 68 65 90 20 77 6F 72 64 e 27". The. word
02BDA0: 90 20 22 6E 65 61 72 22 90 20 69 73 20 75 73 65 . "near". is use
02BDB0: 64 20 62 65 63 61 75 73 65 20 74 68 65 20 63 6F d because the co
02BDC0: 6D 70 69 6C 65 72 20 0D 8A 67 69 76 65 73 20 74 mpiler ..gives t
02BDD0: 68 65 20 6C 69 6E 65 20 6E 75 6D 62 65 72 20 61 he line number a
02BDE0: 74 20 77 68 69 63 68 20 69 74 90 20 64 69 73 63 t which it. disc
02BDF0: 6F 76 65 72 65 64 20 74 68 65 20 70 72 6F 62 6C overed the probl
02BE00: 6C 63 68 0D 0A 09 09 76 65 72 73 69 6F 6E 20 09 lch....version .
02BE10: 34 34 09 72 65 74 75 72 6E 20 74 68 65 20 6F 70 44.return the op
02BE20: 65 72 61 74 69 6E 67 20 73 79 73 74 65 6D 20 61 erating system a
02BE30: 6E 64 20 63 6F 6D 70 75 74 65 72 0D 0A 09 53 09 nd computer...S.
02BE40: 77 72 63 68 20 09 32 37 09 77 72 69 74 65 20 61 wrch .27.write a
02BE50: 20 63 68 61 72 61 63 74 65 72 0D 0A 09 09 77 72 character....wr
02BE60: 69 74 65 63 68 20 09 33 39 09 77 72 69 74 65 20 itech .39.write
02BE70: 61 20 63 68 61 72 61 63 74 65 72 20 74 6F 20 74 a character to t
02BE80: 68 65 20 6F 75 74 70 75 74 20 66 69 6C 65 0D 0A he output file..
02BE90: 09 53 09 77 72 69 74 65 64 20 09 32 37 09 77 72 .S.writed .27.wr
02BEA0: 69 74 65 20 61 20 64 65 63 69 6D 61 6C 20 6E 75 ite a decimal nu
02BEB0: 6D 62 65 72 0D 0A 09 53 09 77 72 69 74 65 66 20 mber...S.writef
02BEC0: 09 32 38 09 66 6F 72 6D 61 74 74 65 64 20 77 72 .28.formatted wr
02BED0: 69 74 65 0D 0A 09 53 09 77 72 69 74 65 68 65 78 ite...S.writehex
02BEE0: 20 09 32 39 09 77 72 69 74 65 20 61 20 68 65 78 .29.write a hex
02BEF0: 61 64 65 63 69 6D 61 6C 20 6E 75 6D 62 65 72 0D adecimal number.
02BF00: 0A 09 53 09 77 72 69 74 65 6E 20 09 32 39 09 77 ..S.writen .29.w
02BF10: 72 69 74 65 20 61 20 64 65 63 69 6D 61 6C 20 6E rite a decimal n
02BF20: 75 6D 62 65 72 20 69 6E 20 6D 69 6E 69 6D 75 6D umber in minimum
02BF30: 20 77 69 64 74 68 0D 0A 09 53 09 77 72 69 74 65 width...S.write
02BF40: 6F 63 74 20 09 32 39 09 77 72 69 74 65 20 61 6E oct .29.write an
02BF50: 20 6F 63 74 61 6C 20 6E 75 6D 62 65 72 0D 0A 09 octal number...
02BF60: 53 09 77 72 69 74 65 73 20 09 32 39 09 77 72 69 S.writes .29.wri
02BF70: 74 65 20 61 20 73 74 72 69 6E 67 0D 0A 43 09 09 te a string..C..
02BF80: 77 72 69 74 65 73 65 63 74 6F 72 09 2D 09 77 72 writesector.-.wr
02BF90: 69 74 65 20 61 20 31 32 38 20 62 79 74 65 20 73 ite a 128 byte s
02BFA0: 65 63 74 6F 72 20 74 6F 20 64 69 73 63 0D 0A 09 ector to disc...
02BFB0: 46 09 77 72 69 74 65 74 20 09 33 30 09 77 72 69 F.writet .30.wri
02BFC0: 74 65 20 61 20 73 74 72 69 6E 67 20 61 6E 64 20 te a string and
02BFD0: 70 61 64 20 77 69 74 68 20 73 70 61 63 65 73 0D pad with spaces.
02BFE0: 0A 09 46 09 77 72 69 74 65 75 20 09 33 30 09 77 ..F.writeu .30.w
02BFF0: 72 69 74 65 20 61 6E 20 75 6E 73 69 67 6E 65 64 rite an unsigned
02C000: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
02C010: 25 00 01 00 02 09 4E E5 25 00 C1 02 00 00 00 02 %.....N.%.......
02C020: 25 00 C6 02 00 00 00 02 25 00 C2 02 00 00 00 02 %.......%.......
02C030: 25 00 C7 02 00 00 00 02 25 00 C3 02 00 00 00 02 %.......%.......
02C040: 25 00 C8 02 00 00 00 02 25 00 C4 02 00 00 00 02 %.......%.......
02C050: 25 00 C9 02 00 00 00 02 25 00 C5 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 6D 2C 20 61 6E 64 20 74 68 69 73 20 69 73 20 em, and this is
02C110: 0D 8A 6E 6F 74 20 6E 65 63 65 73 73 61 72 69 6C ..not necessaril
02C120: 79 20 74 68 65 20 73 61 6D 65 20 6C 69 6E 65 90 y the same line.
02C130: 20 74 68 61 74 90 20 6E 65 65 64 73 20 63 6F 72 that. needs cor
02C140: 72 65 63 74 69 6E 67 2E 20 54 68 65 20 6C 69 6E recting. The lin
02C150: 65 20 6E 75 6D 62 65 72 20 0D 8A 72 65 66 65 72 e number ..refer
02C160: 73 20 74 6F 20 74 68 65 20 70 6F 73 69 74 69 6F s to the positio
02C170: 6E 20 6F 66 20 74 68 65 90 20 6C 69 6E 65 90 20 n of the. line.
02C180: 77 69 74 68 69 6E 90 20 74 68 65 90 20 66 69 6C within. the. fil
02C190: 65 2C 20 61 6E 64 20 6E 6F 74 20 74 6F 20 74 68 e, and not to th
02C1A0: 65 20 0D 8A 74 6F 74 61 6C 20 6E 75 6D 62 65 72 e ..total number
02C1B0: 20 6F 66 20 6C 69 6E 65 73 20 63 6F 6D 70 69 6C of lines compil
02C1C0: 65 64 20 73 6F 20 66 61 72 2E 0D 0A 0D 0A 0D 0A ed so far.......
02C1D0: E2 28 69 29 20 46 61 74 61 6C 20 45 72 72 6F 72 .(i) Fatal Error
02C1E0: 73 E2 0D 0A 0D 0A 0D 0A 4F 75 74 20 6F 66 20 6D s.......Out of m
02C1F0: 65 6D 6F 72 79 0D 0A 0D 0A 09 54 68 65 20 63 6F emory.....The co
02C200: 6D 70 69 6C 65 72 20 68 61 73 20 72 75 6E 20 6F mpiler has run o
02C210: 75 74 90 20 6F 66 90 20 72 6F 6F 6D 90 20 66 6F ut. of. room. fo
02C220: 72 90 20 74 68 65 20 70 72 6F 67 72 61 6D 20 6F r. the program o
02C230: 72 20 69 74 73 20 73 79 6D 62 6F 6C 20 0D 8A 74 r its symbol ..t
02C240: 61 62 6C 65 2E 20 43 61 6E 20 73 6F 6D 65 74 69 able. Can someti
02C250: 6D 65 73 20 62 65 20 73 6F 6C 76 65 64 20 62 79 mes be solved by
02C260: 20 72 65 2D 75 73 69 6E 67 20 6C 6F 63 61 6C 20 re-using local
02C270: 76 61 72 69 61 62 6C 65 20 6E 61 6D 65 73 2E 0D variable names..
02C280: 0A 0D 0A 0D 0A 4F 75 74 20 6F 66 20 73 79 6D 62 .....Out of symb
02C290: 6F 6C 20 73 70 61 63 65 0D 0A 0D 0A 09 56 65 72 ol space.....Ver
02C2A0: 79 20 73 69 6D 69 6C 61 72 20 74 6F 20 74 68 65 y similar to the
02C2B0: 20 61 62 6F 76 65 20 65 78 63 65 70 74 90 20 74 above except. t
02C2C0: 68 61 74 90 20 74 68 65 20 70 72 6F 67 72 61 6D hat. the program
02C2D0: 20 6D 61 79 20 6E 6F 74 20 62 65 20 74 6F 6F 20 may not be too
02C2E0: 0D 8A 62 69 67 2E 20 54 72 79 20 63 6F 6D 70 69 ..big. Try compi
02C2F0: 6C 69 6E 67 20 69 74 20 74 6F 20 64 69 73 63 20 ling it to disc
02C300: 90 20 65 72 72 6F 72 90 20 6D 65 73 73 61 67 65 . error. message
02C310: 2E 20 53 79 6E 74 61 78 20 65 72 72 6F 72 73 20 . Syntax errors
02C320: 61 72 65 20 72 65 70 6F 72 74 65 64 20 61 73 20 are reported as
02C330: 0D 8A 6F 63 63 75 72 72 69 6E 67 20 6E 65 61 72 ..occurring near
02C340: 20 61 20 63 65 72 74 61 69 6E 20 6C 69 6E 65 2E a certain line.
02C350: 90 20 54 68 69 73 90 20 69 73 90 20 74 68 65 20 . This. is. the
02C360: 6C 69 6E 65 20 77 69 74 68 69 6E 20 61 20 70 61 line within a pa
02C370: 72 74 69 63 75 6C 61 72 20 0D 8A 66 69 6C 65 2E rticular ..file.
02C380: 20 49 66 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 If the compiler
02C390: 20 6C 69 73 74 69 6E 67 90 20 69 73 90 20 73 77 listing. is. sw
02C3A0: 69 74 63 68 65 64 90 20 6F 66 66 20 77 68 65 6E itched. off when
02C3B0: 20 74 68 65 20 65 72 72 6F 72 20 6F 63 63 75 72 the error occur
02C3C0: 73 20 0D 8A 74 68 65 6E 20 61 20 62 75 66 66 65 s ..then a buffe
02C3D0: 72 2C 20 68 6F 6C 64 69 6E 67 20 74 68 65 20 6C r, holding the l
02C3E0: 61 73 74 20 66 65 77 20 6C 69 6E 65 73 20 6F 66 ast few lines of
02C3F0: 20 74 65 78 74 20 72 65 61 64 20 66 72 6F 6D 20 text read from
02C400: 74 68 65 20 73 6F 75 72 63 65 20 0D 8A 63 6F 64 the source ..cod
02C410: 65 2C 20 77 69 6C 6C 20 62 65 20 64 69 73 70 6C e, will be displ
02C420: 61 79 65 64 2E 0D 0A 0D 0A 0D 0A 42 61 64 20 65 ayed.......Bad e
02C430: 78 70 72 65 73 73 69 6F 6E 0D 0A 0D 0A 09 54 68 xpression.....Th
02C440: 65 20 65 78 70 72 65 73 73 69 6F 6E 20 62 65 69 e expression bei
02C450: 6E 67 20 65 78 61 6D 69 6E 65 64 90 20 77 61 73 ng examined. was
02C460: 90 20 66 61 75 6C 74 79 90 20 69 6E 90 20 73 6F . faulty. in. so
02C470: 6D 65 90 20 77 61 79 2E 20 4D 61 79 62 65 20 61 me. way. Maybe a
02C480: 20 0D 8A 63 6F 6D 6D 61 6E 64 20 6E 61 6D 65 20 ..command name
02C490: 77 61 73 20 75 73 65 64 20 61 73 20 61 6E 20 69 was used as an i
02C4A0: 64 65 6E 74 69 66 69 65 72 2E 0D 0A 0D 0A 0D 0A dentifier.......
02C4B0: 42 61 64 20 76 65 63 74 6F 72 20 64 65 66 69 6E Bad vector defin
02C4C0: 69 74 69 6F 6E 0D 0A 0D 0A 09 41 20 76 65 63 74 ition.....A vect
02C4D0: 6F 72 20 64 65 66 69 6E 69 74 69 6F 6E 20 77 61 or definition wa
02C4E0: 73 20 62 61 64 90 20 69 6E 90 20 73 6F 6D 65 90 s bad. in. some.
02C4F0: 20 77 61 79 2E 20 49 6E 20 70 61 72 74 69 63 75 way. In particu
02C500: 77 68 69 63 68 20 61 6C 6C 6F 77 73 20 74 77 69 which allows twi
02C510: 63 65 20 61 73 20 6D 75 63 68 20 73 79 6D 62 6F ce as much symbo
02C520: 6C 20 73 70 61 63 65 2E 0D 0A 09 49 66 20 79 6F l space....If yo
02C530: 75 20 61 72 65 20 63 6F 6D 70 69 6C 69 6E 67 20 u are compiling
02C540: 61 90 20 70 69 65 63 65 90 20 6F 66 90 20 74 65 a. piece. of. te
02C550: 78 74 90 20 69 6E 20 6D 65 6D 6F 72 79 20 66 72 xt. in memory fr
02C560: 6F 6D 20 50 52 4F 54 45 58 54 20 6F 72 20 0D 8A om PROTEXT or ..
02C570: 4D 41 58 41 4D 20 74 68 65 6E 20 73 61 76 69 6E MAXAM then savin
02C580: 67 20 74 68 65 20 74 65 78 74 20 74 6F 90 20 64 g the text to. d
02C590: 69 73 63 2C 90 20 63 6C 65 61 72 69 6E 67 20 74 isc,. clearing t
02C5A0: 68 65 20 6D 65 6D 6F 72 79 20 61 6E 64 20 74 68 he memory and th
02C5B0: 65 6E 20 72 65 2D 0D 8A 63 6F 6D 70 69 6C 69 6E en re-..compilin
02C5C0: 67 20 6D 61 79 20 73 6F 6C 76 65 20 74 68 69 73 g may solve this
02C5D0: 20 70 72 6F 62 6C 65 6D 2E 0D 0A 0D 0A 0D 0A 49 problem.......I
02C5E0: 2F 4F 20 65 72 72 6F 72 0D 0A 0D 0A 09 41 6E 20 /O error.....An
02C5F0: 65 72 72 6F 72 20 68 61 73 20 6F 63 63 75 72 72 error has occurr
02C600: 65 64 20 77 68 65 6E 90 20 77 72 69 74 69 6E 67 ed when. writing
02C610: 90 20 74 6F 90 20 74 68 65 20 6F 75 74 70 75 74 . to. the output
02C620: 20 66 69 6C 65 2E 20 4D 61 79 20 6D 65 61 6E 20 file. May mean
02C630: 0D 8A 74 68 61 74 20 74 68 65 20 64 69 73 63 20 ..that the disc
02C640: 69 73 20 66 75 6C 6C 2E 0D 0A 0D 0A 0D 0A 43 61 is full.......Ca
02C650: 6E 27 74 20 6F 70 65 6E 20 69 6E 70 75 74 20 66 n't open input f
02C660: 69 6C 65 0D 0A 0D 0A 09 54 68 65 20 66 69 6C 65 ile.....The file
02C670: 6E 61 6D 65 20 67 69 76 65 6E 20 69 6E 20 61 20 name given in a
02C680: 47 45 54 90 20 64 69 72 65 63 74 69 76 65 90 20 GET. directive.
02C690: 63 6F 75 6C 64 90 20 6E 6F 74 20 62 65 20 66 6F could. not be fo
02C6A0: 75 6E 64 20 6F 6E 20 74 68 65 20 0D 8A 64 69 73 und on the ..dis
02C6B0: 63 2E 0D 0A 0D 0A 0D 0A 43 61 6E 27 74 20 6F 70 c.......Can't op
02C6C0: 65 6E 20 6F 75 74 70 75 74 20 66 69 6C 65 0D 0A en output file..
02C6D0: 0D 0A 09 54 68 65 20 63 6F 6D 70 69 6C 65 72 20 ...The compiler
02C6E0: 77 61 73 20 74 72 79 69 6E 67 20 74 6F 20 6F 70 was trying to op
02C6F0: 65 6E 20 61 20 66 69 6C 65 20 74 6F 20 6F 75 74 en a file to out
02C700: 6C 61 72 20 6F 6E 6C 79 20 6F 6E 65 20 0D 8A 76 lar only one ..v
02C710: 65 63 74 6F 72 20 6D 61 79 20 62 65 90 20 64 65 ector may be. de
02C720: 63 6C 61 72 65 64 90 20 69 6E 90 20 61 6E 79 90 clared. in. any.
02C730: 20 4C 45 54 90 20 63 6F 6D 6D 61 6E 64 90 20 28 LET. command. (
02C740: 61 6C 74 68 6F 75 67 68 20 73 69 6D 75 6C 74 61 although simulta
02C750: 6E 65 6F 75 73 20 0D 8A 64 65 66 69 6E 69 74 69 neous ..definiti
02C760: 6F 6E 73 20 61 72 65 20 61 6C 6C 6F 77 65 64 29 ons are allowed)
02C770: 2E 0D 0A 0D 0A 0D 0A 42 61 64 20 70 72 6F 63 65 .......Bad proce
02C780: 64 75 72 65 20 64 65 66 69 6E 69 74 69 6F 6E 0D dure definition.
02C790: 0A 0D 0A 09 41 20 70 72 6F 63 65 64 75 72 65 20 ....A procedure
02C7A0: 64 65 66 69 6E 69 74 69 6F 6E 20 77 61 73 20 62 definition was b
02C7B0: 61 64 6C 79 90 20 6D 61 64 65 2E 90 20 4D 61 79 adly. made.. May
02C7C0: 90 20 68 61 76 65 20 62 65 65 6E 20 73 6F 6D 65 . have been some
02C7D0: 20 6F 74 68 65 72 20 0D 8A 66 6F 72 6D 20 6F 66 other ..form of
02C7E0: 20 64 65 66 69 6E 69 74 69 6F 6E 20 77 68 69 63 definition whic
02C7F0: 68 20 77 65 6E 74 20 77 72 6F 6E 67 2E 0D 0A 0D h went wrong....
02C800: 0A 0D 0A 42 61 64 20 46 4F 52 20 6C 6F 6F 70 0D ...Bad FOR loop.
02C810: 0A 0D 0A 09 54 68 65 20 46 4F 52 20 6C 6F 6F 70 ....The FOR loop
02C820: 20 77 61 73 20 62 61 64 6C 79 20 66 6F 72 6D 65 was badly forme
02C830: 64 20 69 6E 20 73 6F 6D 65 20 77 61 79 2E 0D 0A d in some way...
02C840: 0D 0A 0D 0A 6E 65 65 64 20 3A 20 6F 72 20 3D 20 ....need : or =
02C850: 69 6E 20 63 6F 6E 73 74 61 6E 74 20 64 65 66 69 in constant defi
02C860: 6E 69 74 69 6F 6E 0D 0A 0D 0A 09 43 6F 6E 73 74 nition.....Const
02C870: 61 6E 74 2C 20 47 6C 6F 62 61 6C 20 61 6E 64 90 ant, Global and.
02C880: 20 53 74 61 74 69 63 90 20 64 65 66 69 6E 69 74 Static. definit
02C890: 69 6F 6E 73 90 20 72 65 71 75 69 72 65 90 20 62 ions. require. b
02C8A0: 6F 74 68 90 20 3A 90 20 61 6E 64 20 3D 20 0D 8A oth. :. and = ..
02C8B0: 62 65 74 77 65 65 6E 20 74 68 65 20 69 64 65 6E between the iden
02C8C0: 74 69 66 69 65 72 20 61 6E 64 20 74 68 65 90 20 tifier and the.
02C8D0: 63 6F 6E 73 74 61 6E 74 90 20 65 78 70 72 65 73 constant. expres
02C8E0: 73 69 6F 6E 2E 20 4F 6E 65 20 6F 72 20 74 68 65 sion. One or the
02C8F0: 20 6F 74 68 65 72 20 0D 8A 69 73 20 6D 69 73 73 other ..is miss
02C900: 70 75 74 20 74 68 65 20 63 6F 6D 70 69 6C 65 64 put the compiled
02C910: 20 63 6F 64 65 20 0D 8A 74 6F 2C 20 62 75 74 20 code ..to, but
02C920: 66 6F 72 20 73 6F 6D 65 20 72 65 61 73 6F 6E 20 for some reason
02C930: 77 61 73 20 6E 6F 74 20 61 62 6C 65 20 74 6F 20 was not able to
02C940: 6F 70 65 6E 20 69 74 2E 0D 0A 3E 70 61 0D 0A 42 open it...>pa..B
02C950: 72 6F 6B 65 6E 20 69 6E 0D 0A 0D 0A 09 45 53 43 roken in.....ESC
02C960: 20 6F 72 20 53 54 4F 50 20 77 61 73 20 70 72 65 or STOP was pre
02C970: 73 73 65 64 20 74 77 69 63 65 20 69 6E 20 61 20 ssed twice in a
02C980: 72 6F 77 2E 20 50 72 65 73 73 69 6E 67 20 69 74 row. Pressing it
02C990: 20 6F 6E 63 65 20 77 69 6C 6C 20 68 61 6C 74 20 once will halt
02C9A0: 0D 8A 74 68 65 20 63 6F 6D 70 69 6C 65 72 20 61 ..the compiler a
02C9B0: 6E 64 20 63 61 75 73 65 90 20 69 74 90 20 74 6F nd cause. it. to
02C9C0: 90 20 77 61 69 74 90 20 66 6F 72 90 20 61 6E 6F . wait. for. ano
02C9D0: 74 68 65 72 20 6B 65 79 20 70 72 65 73 73 2E 20 ther key press.
02C9E0: 50 72 65 73 73 69 6E 67 20 0D 8A 65 73 63 61 70 Pressing ..escap
02C9F0: 65 20 61 67 61 69 6E 20 63 61 75 73 65 73 20 74 e again causes t
02CA00: 68 69 73 20 65 72 72 6F 72 20 77 68 69 6C 65 90 his error while.
02CA10: 20 61 6E 79 20 6F 74 68 65 72 20 6B 65 79 20 63 any other key c
02CA20: 61 75 73 65 73 20 63 6F 6D 70 69 6C 61 74 69 6F auses compilatio
02CA30: 6E 20 0D 8A 74 6F 20 63 6F 6E 74 69 6E 75 65 2E n ..to continue.
02CA40: 0D 0A 0D 0A 0D 0A 55 6E 64 65 66 69 6E 65 64 20 ......Undefined
02CA50: 53 54 41 52 54 0D 0A 0D 0A 09 41 6C 6C 20 70 72 START.....All pr
02CA60: 6F 67 72 61 6D 73 20 6D 75 73 74 90 20 68 61 76 ograms must. hav
02CA70: 65 90 20 61 90 20 70 72 6F 63 65 64 75 72 65 90 e. a. procedure.
02CA80: 20 63 61 6C 6C 65 64 90 20 53 54 41 52 54 2E 90 called. START..
02CA90: 20 54 68 65 20 70 72 6F 67 72 61 6D 20 0D 8A 73 The program ..s
02CAA0: 75 62 6D 69 74 74 65 64 20 64 69 64 20 6E 6F 74 ubmitted did not
02CAB0: 20 68 61 76 65 20 74 68 69 73 20 70 72 6F 63 65 have this proce
02CAC0: 64 75 72 65 2E 0D 0A 0D 0A 0D 0A 42 61 64 20 47 dure.......Bad G
02CAD0: 45 54 0D 0A 0D 0A 09 44 75 65 20 74 6F 20 74 68 ET.....Due to th
02CAE0: 65 20 6C 69 6D 69 74 61 74 69 6F 6E 73 20 6F 66 e limitations of
02CAF0: 20 41 4D 53 44 4F 53 90 20 6F 6E 6C 79 90 20 6F AMSDOS. only. o
02CB00: 69 6E 67 0D 0A 0D 0A 0D 0A 4D 69 73 73 69 6E 67 ing......Missing
02CB10: 20 24 29 0D 0A 0D 0A 09 41 20 24 29 20 77 61 73 $).....A $) was
02CB20: 20 65 78 70 65 63 74 65 64 20 62 75 74 20 6E 6F expected but no
02CB30: 74 90 20 66 6F 75 6E 64 2E 90 20 43 68 65 63 6B t. found.. Check
02CB40: 20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 6F the number of o
02CB50: 70 65 6E 69 6E 67 20 61 6E 64 20 0D 8A 63 6C 6F pening and ..clo
02CB60: 73 69 6E 67 20 73 65 63 74 69 6F 6E 20 62 72 61 sing section bra
02CB70: 63 6B 65 74 73 20 69 6E 20 74 68 65 20 70 72 6F ckets in the pro
02CB80: 67 72 61 6D 2E 0D 0A 3E 70 61 0D 0A 4D 69 73 73 gram...>pa..Miss
02CB90: 69 6E 67 20 24 28 0D 0A 0D 0A 09 41 20 63 6F 6D ing $(.....A com
02CBA0: 70 6F 75 6E 64 20 73 74 61 74 65 6D 65 6E 74 20 pound statement
02CBB0: 77 61 73 20 6E 65 65 64 65 64 20 62 75 74 90 20 was needed but.
02CBC0: 74 68 65 20 6F 70 65 6E 69 6E 67 20 24 28 20 77 the opening $( w
02CBD0: 61 73 20 6E 6F 74 20 66 6F 75 6E 64 2E 20 0D 8A as not found. ..
02CBE0: 49 6E 20 70 61 72 74 69 63 75 6C 61 72 20 61 6C In particular al
02CBF0: 6C 20 53 57 49 54 43 48 4F 4E 20 73 74 61 74 65 l SWITCHON state
02CC00: 6D 65 6E 74 73 20 6D 75 73 74 20 62 65 20 63 6F ments must be co
02CC10: 6D 70 6F 75 6E 64 2E 0D 0A 0D 0A 0D 0A 4D 69 73 mpound.......Mis
02CC20: 73 69 6E 67 20 29 0D 0A 0D 0A 09 41 20 63 6C 6F sing ).....A clo
02CC30: 73 69 6E 67 20 62 72 61 63 6B 65 74 20 69 6E 90 sing bracket in.
02CC40: 20 61 6E 90 20 65 78 70 72 65 73 73 69 6F 6E 90 an. expression.
02CC50: 20 6F 72 20 70 72 6F 63 65 64 75 72 65 20 63 61 or procedure ca
02CC60: 6C 6C 2F 64 65 66 69 6E 69 74 69 6F 6E 20 0D 8A ll/definition ..
02CC70: 77 61 73 20 6D 69 73 73 69 6E 67 2E 0D 0A 0D 0A was missing.....
02CC80: 0D 0A 53 65 63 74 69 6F 6E 20 74 61 67 20 6D 69 ..Section tag mi
02CC90: 73 6D 61 74 63 68 0D 0A 0D 0A 09 41 20 73 65 63 smatch.....A sec
02CCA0: 74 69 6F 6E 20 62 72 61 63 6B 65 74 20 77 61 73 tion bracket was
02CCB0: 20 74 61 67 67 65 64 20 62 75 74 90 20 74 68 65 tagged but. the
02CCC0: 90 20 74 61 67 20 64 69 64 20 6E 6F 74 20 68 61 . tag did not ha
02CCD0: 76 65 20 61 20 6D 61 74 63 68 69 6E 67 20 0D 8A ve a matching ..
02CCE0: 6F 70 65 6E 69 6E 67 20 73 65 63 74 69 6F 6E 20 opening section
02CCF0: 62 72 61 63 6B 65 74 2E 20 4D 61 79 20 62 65 20 bracket. May be
02CD00: 6E 65 20 66 69 6C 65 20 63 61 6E 20 62 65 20 6F ne file can be o
02CD10: 70 65 6E 65 64 20 66 6F 72 20 0D 8A 69 6E 70 75 pened for ..inpu
02CD20: 74 20 61 74 20 61 6E 79 90 20 6F 6E 65 90 20 74 t at any. one. t
02CD30: 69 6D 65 2E 90 20 41 90 20 66 69 6C 65 90 20 77 ime.. A. file. w
02CD40: 61 73 90 20 6F 70 65 6E 65 64 90 20 77 68 69 63 as. opened. whic
02CD50: 68 90 20 63 6F 6E 74 61 69 6E 65 64 20 61 20 47 h. contained a G
02CD60: 45 54 20 0D 8A 64 69 72 65 63 74 69 76 65 2E 20 ET ..directive.
02CD70: 57 69 6C 6C 20 61 6C 73 6F 20 6F 63 63 75 72 90 Will also occur.
02CD80: 20 69 66 90 20 61 90 20 70 69 65 63 65 90 20 6F if. a. piece. o
02CD90: 66 20 73 74 6F 72 65 64 20 50 52 4F 54 45 58 54 f stored PROTEXT
02CDA0: 2F 4D 41 58 41 4D 20 74 65 78 74 20 0D 8A 61 74 /MAXAM text ..at
02CDB0: 74 65 6D 70 74 73 20 74 6F 20 47 45 54 20 69 74 tempts to GET it
02CDC0: 73 65 6C 66 2E 0D 0A 0D 0A 0D 0A 4E 6F 6E 2D 41 self.......Non-A
02CDD0: 53 43 49 49 20 66 69 6C 65 0D 0A 0D 0A 09 54 68 SCII file.....Th
02CDE0: 65 20 63 6F 6D 70 69 6C 65 72 20 77 61 73 20 69 e compiler was i
02CDF0: 6E 73 74 72 75 63 74 65 64 20 74 6F 20 6F 70 65 nstructed to ope
02CE00: 6E 90 20 61 90 20 66 69 6C 65 20 62 75 74 20 74 n. a. file but t
02CE10: 68 61 74 20 66 69 6C 65 20 64 69 64 20 6E 6F 74 hat file did not
02CE20: 20 0D 8A 63 6F 6E 74 61 69 6E 20 41 53 43 49 49 ..contain ASCII
02CE30: 20 74 65 78 74 90 20 77 68 69 63 68 90 20 69 73 text. which. is
02CE40: 90 20 72 65 71 75 69 72 65 64 90 20 66 6F 72 90 . required. for.
02CE50: 20 74 68 65 90 20 63 6F 6D 70 69 6C 65 72 2E 90 the. compiler..
02CE60: 20 55 73 65 72 73 20 6F 66 20 0D 8A 43 50 43 20 Users of ..CPC
02CE70: 76 65 72 73 69 6F 6E 73 20 6F 66 20 50 52 4F 54 versions of PROT
02CE80: 45 58 54 20 73 68 6F 75 6C 64 20 75 73 65 20 70 EXT should use p
02CE90: 72 6F 67 72 61 6D 20 6D 6F 64 65 2C 20 77 68 69 rogram mode, whi
02CEA0: 63 68 20 77 69 6C 6C 20 73 61 76 65 20 74 68 65 ch will save the
02CEB0: 20 66 69 6C 65 20 0D 8A 69 6E 20 41 53 43 49 49 file ..in ASCII
02CEC0: 20 66 6F 72 6D 61 74 2E 0D 0A 0D 0A 0D 0A 46 69 format.......Fi
02CED0: 6C 65 20 69 6E 74 61 63 74 0D 0A 0D 0A 09 54 68 le intact.....Th
02CEE0: 69 73 20 6F 63 63 75 72 73 20 6F 6E 20 43 50 2F is occurs on CP/
02CEF0: 4D 20 76 65 72 73 69 6F 6E 73 20 77 68 65 6E 20 M versions when
02CF00: 63 61 75 73 65 64 90 20 62 79 90 20 6F 6D 69 74 caused. by. omit
02CF10: 74 69 6E 67 20 74 68 65 20 73 70 61 63 65 20 61 ting the space a
02CF20: 66 74 65 72 20 61 20 0D 8A 73 65 63 74 69 6F 6E fter a ..section
02CF30: 20 62 72 61 63 6B 65 74 2E 0D 0A 0D 0A 0D 0A 45 bracket.......E
02CF40: 78 70 65 63 74 69 6E 67 20 63 6F 6D 6D 61 6E 64 xpecting command
02CF50: 0D 0A 0D 0A 09 41 20 63 6F 6D 6D 61 6E 64 20 77 .....A command w
02CF60: 61 73 20 65 78 70 65 63 74 65 64 20 62 75 74 20 as expected but
02CF70: 6F 6E 65 90 20 77 61 73 90 20 6E 6F 74 20 66 6F one. was. not fo
02CF80: 75 6E 64 2E 20 54 68 69 73 20 63 61 6E 20 62 65 und. This can be
02CF90: 20 63 61 75 73 65 64 20 0D 8A 62 79 2C 20 66 6F caused ..by, fo
02CFA0: 72 20 65 78 61 6D 70 6C 65 2C 20 6F 6D 69 74 74 r example, omitt
02CFB0: 69 6E 67 20 74 68 65 20 63 6F 6C 6F 6E 20 69 6E ing the colon in
02CFC0: 90 20 61 6E 20 61 73 73 69 67 6E 6D 65 6E 74 20 . an assignment
02CFD0: 63 6F 6D 6D 61 6E 64 2C 20 6F 72 20 62 79 20 61 command, or by a
02CFE0: 20 0D 8A 64 65 63 6C 61 72 61 74 69 6F 6E 20 61 ..declaration a
02CFF0: 70 70 65 61 72 69 6E 67 20 61 66 74 65 72 20 61 ppearing after a
02D000: 20 63 6F 6D 6D 61 6E 64 2E 0D 0A 0D 0A 0D 0A 45 command.......E
02D010: 78 70 65 63 74 69 6E 67 20 6E 75 6D 62 65 72 0D xpecting number.
02D020: 0A 0D 0A 09 41 20 6E 75 6D 62 65 72 20 77 61 73 ....A number was
02D030: 20 65 78 70 65 63 74 65 64 20 62 75 74 20 6E 6F expected but no
02D040: 74 20 66 6F 75 6E 64 2E 20 55 73 75 61 6C 6C 79 t found. Usually
02D050: 20 66 6F 6C 6C 6F 77 69 6E 67 20 61 20 23 2E 0D following a #..
02D060: 0A 0D 0A 0D 0A 45 78 70 65 63 74 69 6E 67 20 2C .....Expecting ,
02D070: 0D 0A 0D 0A 09 54 68 65 20 63 6F 6D 70 69 6C 65 .....The compile
02D080: 72 20 77 61 73 20 65 78 70 65 63 74 69 6E 67 90 r was expecting.
02D090: 20 61 90 20 63 6F 6D 6D 61 90 20 28 2C 29 90 20 a. comma. (,).
02D0A0: 62 75 74 90 20 64 69 64 90 20 6E 6F 74 20 66 69 but. did. not fi
02D0B0: 6E 64 20 6F 6E 65 2E 20 0D 8A 4F 63 63 75 72 73 nd one. ..Occurs
02D0C0: 20 69 6E 20 61 20 63 6F 6E 64 69 74 69 6F 6E 61 in a conditiona
02D0D0: 6C 20 65 78 70 72 65 73 73 69 6F 6E 2E 0D 0A 0D l expression....
02D0E0: 0A 0D 0A 45 4C 53 45 20 65 78 70 65 63 74 65 64 ...ELSE expected
02D0F0: 0D 0A 0D 0A 09 54 68 65 20 45 4C 53 45 20 70 61 .....The ELSE pa
02D100: 74 68 65 20 64 65 73 74 69 6E 61 74 69 6F 6E 20 the destination
02D110: 66 69 6C 65 20 65 78 69 73 74 65 64 20 62 75 74 file existed but
02D120: 20 0D 8A 74 68 65 20 75 73 65 72 20 74 79 70 65 ..the user type
02D130: 64 20 4E 20 77 68 65 6E 20 61 73 6B 65 64 20 69 d N when asked i
02D140: 66 20 74 68 65 20 66 69 6C 65 20 73 68 6F 75 6C f the file shoul
02D150: 64 20 62 65 20 64 65 6C 65 74 65 64 2E 0D 0A 0D d be deleted....
02D160: 0A 0D 0A 42 61 64 20 53 4F 55 52 43 45 20 6E 61 ...Bad SOURCE na
02D170: 6D 65 0D 0A 0D 0A 09 43 50 2F 4D 20 76 65 72 73 me.....CP/M vers
02D180: 69 6F 6E 73 20 63 68 65 63 6B 20 74 68 65 20 73 ions check the s
02D190: 6F 75 72 63 65 20 6E 61 6D 65 20 67 69 76 65 6E ource name given
02D1A0: 2C 20 61 6E 64 20 69 66 20 69 74 20 69 73 20 69 , and if it is i
02D1B0: 6E 76 61 6C 69 64 20 69 6E 20 0D 8A 73 6F 6D 65 nvalid in ..some
02D1C0: 20 77 61 79 20 65 2E 67 2E 20 68 61 73 20 61 6E way e.g. has an
02D1D0: 20 65 78 74 65 6E 73 69 6F 6E 20 6F 66 90 20 6D extension of. m
02D1E0: 6F 72 65 20 74 68 61 6E 20 33 20 6C 65 74 74 65 ore than 3 lette
02D1F0: 72 73 20 74 68 65 6E 20 74 68 69 73 20 65 72 72 rs then this err
02D200: 6F 72 20 0D 8A 77 69 6C 6C 20 62 65 20 67 69 76 or ..will be giv
02D210: 65 6E 2E 0D 0A 0D 0A 0D 0A 42 61 64 20 44 45 53 en.......Bad DES
02D220: 54 49 4E 41 54 49 4F 4E 20 6E 61 6D 65 0D 0A 0D TINATION name...
02D230: 0A 09 41 73 20 61 62 6F 76 65 2E 0D 0A 3E 70 61 ..As above...>pa
02D240: 0D 0A E2 28 69 69 29 20 53 79 6E 74 61 78 20 45 ...(ii) Syntax E
02D250: 72 72 6F 72 73 E2 0D 0A 0D 0A 09 50 68 61 73 65 rrors......Phase
02D260: 20 31 20 65 72 72 6F 72 73 20 61 72 65 20 61 6C 1 errors are al
02D270: 6C 20 73 79 6E 74 61 78 20 65 72 72 6F 72 73 20 l syntax errors
02D280: 77 69 74 68 69 6E 20 74 68 65 20 70 72 6F 67 72 within the progr
02D290: 61 6D 2E 20 4F 66 74 65 6E 20 74 68 65 20 0D 8A am. Often the ..
02D2A0: 63 61 75 73 65 20 77 69 6C 6C 20 62 65 20 61 20 cause will be a
02D2B0: 6D 69 73 73 69 6E 67 20 24 29 20 6F 72 20 29 90 missing $) or ).
02D2C0: 20 77 68 69 63 68 20 77 69 6C 6C 20 70 72 6F 62 which will prob
02D2D0: 61 62 6C 79 20 63 61 75 73 65 20 77 68 61 74 20 ably cause what
02D2E0: 6D 61 79 20 61 74 20 0D 8A 66 69 72 73 74 20 73 may at ..first s
02D2F0: 65 65 6D 90 74 6F 20 62 65 20 61 6E 20 6F 64 64 eem.to be an odd
02D300: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
02D310: 26 00 01 00 02 09 4E E5 26 00 C1 02 00 00 00 02 &.....N.&.......
02D320: 26 00 C6 02 00 00 00 02 26 00 C2 02 00 00 00 02 &.......&.......
02D330: 26 00 C7 02 00 00 00 02 26 00 C3 02 00 00 00 02 &.......&.......
02D340: 26 00 C8 02 00 00 00 02 26 00 C4 02 00 00 00 02 &.......&.......
02D350: 26 00 C9 02 00 00 00 02 26 00 C5 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: 72 74 20 69 6E 20 61 90 20 54 45 53 54 90 20 73 rt in a. TEST. s
02D410: 74 61 74 65 6D 65 6E 74 90 20 69 73 90 20 6E 6F tatement. is. no
02D420: 74 90 20 6F 70 74 69 6F 6E 61 6C 20 61 6E 64 20 t. optional and
02D430: 77 61 73 20 6E 6F 74 20 0D 8A 70 72 65 73 65 6E was not ..presen
02D440: 74 20 69 6E 20 74 68 69 73 20 63 61 73 65 2E 0D t in this case..
02D450: 0A 0D 0A 0D 0A 49 4E 54 4F 20 65 78 70 65 63 74 .....INTO expect
02D460: 65 64 0D 0A 0D 0A 09 54 68 65 20 63 6F 6E 74 72 ed.....The contr
02D470: 6F 6C 20 65 78 70 72 65 73 73 69 6F 6E 20 6F 66 ol expression of
02D480: 20 61 90 20 53 57 54 49 43 48 4F 4E 90 20 63 6F a. SWTICHON. co
02D490: 6D 6D 61 6E 64 20 6D 75 73 74 20 62 65 20 66 6F mmand must be fo
02D4A0: 6C 6C 6F 77 65 64 20 62 79 20 0D 8A 74 68 65 20 llowed by ..the
02D4B0: 6B 65 79 77 6F 72 64 20 49 4E 54 4F 2E 20 49 6E keyword INTO. In
02D4C0: 20 74 68 69 73 20 63 61 73 65 20 69 74 20 77 61 this case it wa
02D4D0: 73 20 6E 6F 74 2E 0D 8A 3E 70 61 0D 0A 3A 20 65 s not...>pa..: e
02D4E0: 78 70 65 63 74 65 64 0D 0A 0D 0A 09 41 20 63 6F xpected.....A co
02D4F0: 6C 6F 6E 20 69 73 20 65 78 70 65 63 74 65 64 20 lon is expected
02D500: 61 66 74 65 72 20 61 20 63 61 73 65 20 6C 61 62 after a case lab
02D510: 65 6C 20 6F 72 20 44 45 46 41 55 4C 54 20 62 75 el or DEFAULT bu
02D520: 74 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 20 0D t the compiler .
02D530: 8A 64 69 64 20 6E 6F 74 20 66 69 6E 64 20 6F 6E .did not find on
02D540: 65 2E 0D 0A 0D 0A 0D 0A 45 78 70 65 63 74 69 6E e.......Expectin
02D550: 67 20 69 64 65 6E 74 69 66 69 65 72 0D 0A 0D 0A g identifier....
02D560: 09 54 68 65 20 63 6F 6D 70 69 6C 65 72 20 77 61 .The compiler wa
02D570: 73 20 65 78 70 65 63 74 69 6E 67 20 61 6E 90 20 s expecting an.
02D580: 69 64 65 6E 74 69 66 69 65 72 90 20 65 2E 67 2E identifier. e.g.
02D590: 90 20 61 66 74 65 72 20 4C 45 54 20 62 75 74 20 . after LET but
02D5A0: 64 69 64 20 0D 8A 6E 6F 74 20 66 69 6E 64 20 6F did ..not find o
02D5B0: 6E 65 2E 0D 0A 0D 0A 0D 0A 53 74 72 69 6E 67 20 ne.......String
02D5C0: 74 6F 6F 20 6C 6F 6E 67 0D 0A 0D 0A 09 42 43 50 too long.....BCP
02D5D0: 4C 20 63 6F 6E 73 74 61 6E 74 20 73 74 72 69 6E L constant strin
02D5E0: 67 73 20 63 61 6E 20 6F 6E 6C 79 20 62 65 20 32 gs can only be 2
02D5F0: 35 35 20 63 68 61 72 61 63 74 65 72 73 20 6C 6F 55 characters lo
02D600: 72 20 70 72 6F 63 65 64 75 72 65 2E 0D 0A 0D 0A r procedure.....
02D610: 0D 0A 43 41 53 45 2F 44 45 46 41 55 4C 54 20 66 ..CASE/DEFAULT f
02D620: 6F 75 6E 64 20 6F 75 74 73 69 64 65 20 53 57 49 ound outside SWI
02D630: 54 43 48 4F 4E 0D 0A 0D 0A 09 43 41 53 45 20 6F TCHON.....CASE o
02D640: 72 90 20 44 45 46 41 55 4C 54 90 20 73 74 61 74 r. DEFAULT. stat
02D650: 65 6D 65 6E 74 73 90 20 61 72 65 90 20 6F 6E 6C ements. are. onl
02D660: 79 90 20 76 61 6C 69 64 90 20 69 6E 73 69 64 65 y. valid. inside
02D670: 90 20 61 20 53 57 49 54 43 48 4F 4E 20 0D 8A 73 . a SWITCHON ..s
02D680: 74 61 74 65 6D 65 6E 74 2E 0D 0A 0D 0A 0D 0A 55 tatement.......U
02D690: 6E 64 65 66 69 6E 65 64 20 69 64 65 6E 74 69 66 ndefined identif
02D6A0: 69 65 72 0D 0A 0D 0A 09 41 20 76 61 72 69 61 62 ier.....A variab
02D6B0: 6C 65 20 77 61 73 20 75 73 65 64 20 77 68 69 63 le was used whic
02D6C0: 68 20 68 61 64 20 6E 6F 74 20 62 65 65 6E 20 64 h had not been d
02D6D0: 65 66 69 6E 65 64 20 6F 72 20 77 61 73 20 6E 6F efined or was no
02D6E0: 74 20 69 6E 20 73 63 6F 70 65 20 0D 8A 77 68 65 t in scope ..whe
02D6F0: 6E 20 69 74 20 77 61 73 20 75 73 65 64 2E 0D 0A n it was used...
02D700: 0D 0A 0D 0A 4C 61 62 65 6C 73 20 6E 65 65 64 20 ....Labels need
02D710: 61 20 67 6C 6F 62 61 6C 0D 0A 0D 0A 09 41 20 6C a global.....A l
02D720: 61 62 65 6C 20 77 61 73 20 64 65 66 69 6E 65 64 abel was defined
02D730: 20 77 68 65 6E 20 69 6E 20 74 68 65 90 20 73 63 when in the. sc
02D740: 6F 70 65 90 20 6F 66 20 61 20 6C 6F 63 61 6C 20 ope. of a local
02D750: 76 61 72 69 61 62 6C 65 20 6F 66 20 74 68 65 20 variable of the
02D760: 0D 8A 73 61 6D 65 20 6E 61 6D 65 2E 20 41 73 20 ..same name. As
02D770: 74 68 65 20 76 61 72 69 61 62 6C 65 90 20 77 69 the variable. wi
02D780: 6C 6C 90 20 62 65 90 20 69 6E 69 74 69 61 6C 69 ll. be. initiali
02D790: 73 65 64 90 20 74 6F 20 74 68 65 20 76 61 6C 75 sed. to the valu
02D7A0: 65 20 6F 66 20 74 68 65 20 0D 8A 6C 61 62 65 6C e of the ..label
02D7B0: 2C 20 69 74 20 6D 75 73 74 20 62 65 20 61 20 47 , it must be a G
02D7C0: 4C 4F 42 41 4C 20 6F 72 20 53 54 41 54 49 43 2E LOBAL or STATIC.
02D7D0: 90 20 49 66 20 6E 6F 20 76 61 72 69 61 62 6C 65 . If no variable
02D7E0: 20 6F 66 20 74 68 65 20 73 61 6D 65 20 6E 61 6D of the same nam
02D7F0: 65 20 0D 8A 69 73 20 69 6E 20 73 63 6F 70 65 20 e ..is in scope
02D800: 6E 67 2E 0D 0A 0D 0A 0D 0A 42 61 64 20 63 68 61 ng.......Bad cha
02D810: 72 61 63 74 65 72 0D 0A 0D 0A 09 54 68 65 20 63 racter.....The c
02D820: 68 61 72 61 63 74 65 72 20 72 65 61 64 20 77 61 haracter read wa
02D830: 73 90 20 69 6C 6C 65 67 61 6C 90 20 69 6E 90 20 s. illegal. in.
02D840: 74 68 65 90 20 70 72 65 73 65 6E 74 20 63 6F 6E the. present con
02D850: 74 65 78 74 2E 20 65 2E 67 2E 20 69 74 20 0D 8A text. e.g. it ..
02D860: 63 6F 75 6C 64 20 68 61 76 65 20 62 65 65 6E 20 could have been
02D870: 61 20 7B 20 69 6E 73 74 65 61 64 20 6F 66 20 2F a { instead of /
02D880: 2A 0D 0A 0D 0A 0D 0A 42 61 64 20 63 68 61 72 61 *......Bad chara
02D890: 63 74 65 72 20 63 6F 6E 73 74 61 6E 74 0D 0A 0D cter constant...
02D8A0: 0A 09 41 20 63 68 61 72 61 63 74 65 72 90 20 63 ..A character. c
02D8B0: 6F 6E 73 74 61 6E 74 90 20 77 61 73 90 20 62 61 onstant. was. ba
02D8C0: 64 6C 79 90 20 66 6F 72 6D 65 64 2C 90 20 75 73 dly. formed,. us
02D8D0: 75 61 6C 6C 79 90 20 63 61 75 73 65 64 90 20 62 ually. caused. b
02D8E0: 79 90 20 61 20 0D 8A 63 61 72 72 69 61 67 65 20 y. a ..carriage
02D8F0: 72 65 74 75 72 6E 20 66 6F 6C 6C 6F 77 69 6E 67 return following
02D900: 20 61 6E 20 61 73 74 65 72 69 73 6B 2E 0D 0A 0D an asterisk....
02D910: 0A 0D 0A 42 61 64 20 6F 70 74 69 6F 6E 20 6C 69 ...Bad option li
02D920: 6E 65 0D 0A 0D 0A 09 54 68 65 20 6F 70 74 69 6F ne.....The optio
02D930: 6E 73 20 69 6E 20 61 6E 20 6F 70 74 69 6F 6E 20 ns in an option
02D940: 63 6F 6D 6D 61 6E 64 90 20 6D 75 73 74 90 20 62 command. must. b
02D950: 65 20 73 65 70 61 72 61 74 65 64 20 62 79 20 63 e separated by c
02D960: 6F 6D 6D 61 73 20 61 6E 64 20 0D 8A 6D 75 73 74 ommas and ..must
02D970: 20 65 6E 64 20 77 69 74 68 20 61 20 73 65 6D 69 end with a semi
02D980: 2D 63 6F 6C 6F 6E 20 6F 72 20 61 74 20 74 68 65 -colon or at the
02D990: 20 65 6E 64 20 6F 66 20 74 68 65 20 6C 69 6E 65 end of the line
02D9A0: 2E 0D 0A 0D 0A 0D 0A 3F 20 69 73 20 6F 6E 6C 79 .......? is only
02D9B0: 20 61 6C 6C 6F 77 65 64 20 69 6E 20 64 65 66 69 allowed in defi
02D9C0: 6E 69 74 69 6F 6E 73 0D 0A 0D 0A 09 53 65 6C 66 nitions.....Self
02D9D0: 2D 65 78 70 6C 61 6E 61 74 6F 72 79 2E 90 20 54 -explanatory.. T
02D9E0: 68 65 90 20 6F 6E 6C 79 90 20 75 6E 64 65 66 69 he. only. undefi
02D9F0: 6E 65 64 90 20 76 61 6C 75 65 73 90 20 61 6C 6C ned. values. all
02DA00: 74 68 65 6E 20 6F 6E 65 20 77 69 6C 6C 20 62 65 then one will be
02DA10: 20 63 72 65 61 74 65 64 2E 0D 0A 0D 0A 0D 0A 4E created.......N
02DA20: 65 65 64 20 63 6F 6E 73 74 61 6E 74 20 65 78 70 eed constant exp
02DA30: 72 65 73 73 69 6F 6E 0D 0A 0D 0A 09 41 20 63 6F ression.....A co
02DA40: 6E 73 74 61 6E 74 20 65 78 70 72 65 73 73 69 6F nstant expressio
02DA50: 6E 90 20 77 61 73 90 20 72 65 71 75 69 72 65 64 n. was. required
02DA60: 90 20 62 75 74 90 20 6E 6F 74 90 20 66 6F 75 6E . but. not. foun
02DA70: 64 2E 20 45 78 61 6D 70 6C 65 73 20 6F 66 20 0D d. Examples of .
02DA80: 8A 63 6F 6E 73 74 61 6E 74 73 20 62 65 69 6E 67 .constants being
02DA90: 20 72 65 71 75 69 72 65 64 20 61 72 65 90 20 74 required are. t
02DAA0: 68 65 90 20 49 4E 4C 49 4E 45 90 20 73 74 61 74 he. INLINE. stat
02DAB0: 65 6D 65 6E 74 2C 20 64 65 63 6C 61 72 61 74 69 ement, declarati
02DAC0: 6F 6E 73 20 61 6E 64 20 0D 8A 43 41 53 45 20 6C ons and ..CASE l
02DAD0: 61 62 65 6C 73 2E 0D 0A 0D 0A 0D 0A 28 69 76 29 abels.......(iv)
02DAE0: 20 49 6E 74 65 72 6E 61 6C 20 63 6F 6D 70 69 6C Internal compil
02DAF0: 65 72 20 65 72 72 6F 72 73 0D 0A 20 20 20 20 20 er errors..
02DB00: 20 20 20 0D 0A 09 54 68 65 72 65 20 69 73 20 61 ...There is a
02DB10: 20 66 6F 75 72 74 68 20 74 79 70 65 20 6F 66 90 fourth type of.
02DB20: 20 65 72 72 6F 72 90 20 62 75 74 90 20 79 6F 75 error. but. you
02DB30: 20 73 68 6F 75 6C 64 20 6E 65 76 65 72 20 73 65 should never se
02DB40: 65 20 74 68 65 73 65 2E 20 0D 8A 54 68 65 73 65 e these. ..These
02DB50: 20 61 72 65 20 69 6E 74 65 72 6E 61 6C 20 63 6F are internal co
02DB60: 6D 70 69 6C 65 72 20 65 72 72 6F 72 73 90 20 61 mpiler errors. a
02DB70: 6E 64 90 20 69 6E 64 69 63 61 74 65 20 70 6F 73 nd. indicate pos
02DB80: 73 69 62 6C 65 20 62 75 67 73 20 69 6E 20 74 68 sible bugs in th
02DB90: 65 20 0D 8A 63 6F 6D 70 69 6C 65 72 2E 0D 0A 09 e ..compiler....
02DBA0: 50 6C 65 61 73 65 20 72 65 70 6F 72 74 20 61 6E Please report an
02DBB0: 79 20 69 6E 63 69 64 65 6E 63 65 20 6F 66 20 6F y incidence of o
02DBC0: 6E 65 20 6F 66 20 74 68 65 73 65 20 65 72 72 6F ne of these erro
02DBD0: 72 73 20 74 6F 20 41 72 6E 6F 72 2E 0D 0A 0D 0A rs to Arnor.....
02DBE0: 20 20 20 20 20 20 20 20 45 72 72 6F 72 20 69 6E Error in
02DBF0: 20 74 72 61 6E 73 6C 61 74 69 6F 6E 20 6E 6F 64 translation nod
02DC00: 6F 77 65 64 90 20 61 72 65 90 20 74 68 65 20 0D owed. are. the .
02DC10: 8A 69 6E 69 74 69 61 6C 69 73 61 74 69 6F 6E 20 .initialisation
02DC20: 76 61 6C 75 65 73 20 6F 66 20 73 69 6D 70 6C 65 values of simple
02DC30: 20 76 61 72 69 61 62 6C 65 73 20 69 6E 20 61 20 variables in a
02DC40: 4C 45 54 20 63 6F 6D 6D 61 6E 64 2E 20 3F 20 61 LET command. ? a
02DC50: 6E 79 77 68 65 72 65 20 0D 8A 65 6C 73 65 20 69 nywhere ..else i
02DC60: 73 20 69 6C 6C 65 67 61 6C 2E 0D 0A 3E 70 61 0D s illegal...>pa.
02DC70: 0A E2 28 69 69 69 29 20 53 65 6D 61 6E 74 69 63 ..(iii) Semantic
02DC80: 20 45 72 72 6F 72 73 E2 0D 0A 0D 0A 0D 0A 09 54 Errors........T
02DC90: 68 65 20 72 65 73 74 20 6F 66 20 74 68 65 90 20 he rest of the.
02DCA0: 65 72 72 6F 72 73 90 20 61 72 65 90 20 73 65 6D errors. are. sem
02DCB0: 61 6E 74 69 63 90 20 65 72 72 6F 72 73 90 20 77 antic. errors. w
02DCC0: 68 69 63 68 20 6F 63 63 75 72 20 64 75 72 69 6E hich occur durin
02DCD0: 67 20 0D 8A 70 68 61 73 65 20 74 77 6F 20 6F 66 g ..phase two of
02DCE0: 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 2E 90 20 the compiler..
02DCF0: 54 68 65 73 65 90 20 61 72 65 90 20 75 73 75 61 These. are. usua
02DD00: 6C 6C 79 90 20 64 75 65 90 20 74 6F 20 74 68 65 lly. due. to the
02DD10: 20 75 73 65 20 6F 66 20 61 6E 20 0D 8A 69 6E 76 use of an ..inv
02DD20: 61 6C 69 64 20 69 64 65 6E 74 69 66 69 65 72 20 alid identifier
02DD30: 6E 61 6D 65 20 6F 72 20 61 20 62 61 64 6C 79 20 name or a badly
02DD40: 63 6F 6E 73 74 72 75 63 74 65 64 20 6C 6F 6F 70 constructed loop
02DD50: 2E 0D 0A 0D 0A 0D 0A 45 78 70 72 65 73 73 69 6F .......Expressio
02DD60: 6E 2F 69 64 20 6D 69 73 6D 61 74 63 68 0D 0A 0D n/id mismatch...
02DD70: 0A 09 54 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 ..The number of
02DD80: 6C 65 66 74 20 61 6E 64 20 72 69 67 68 74 90 20 left and right.
02DD90: 68 61 6E 64 90 20 73 69 64 65 73 20 69 6E 20 61 hand. sides in a
02DDA0: 20 6D 75 6C 74 69 70 6C 65 20 61 73 73 69 67 6E multiple assign
02DDB0: 6D 65 6E 74 20 0D 8A 6F 72 20 64 65 63 6C 61 72 ment ..or declar
02DDC0: 61 74 69 6F 6E 20 77 61 73 20 6E 6F 74 20 65 71 ation was not eq
02DDD0: 75 61 6C 2E 0D 0A 0D 0A 0D 0A 49 6E 76 61 6C 69 ual.......Invali
02DDE0: 64 20 61 73 73 69 67 6E 6D 65 6E 74 0D 0A 0D 0A d assignment....
02DDF0: 09 59 6F 75 20 68 61 76 65 20 61 74 74 65 6D 70 .You have attemp
02DE00: 65 0D 0A 20 20 20 20 20 20 20 20 55 6E 65 78 70 e.. Unexp
02DE10: 65 63 74 65 64 20 6E 6F 64 65 20 69 6E 20 65 78 ected node in ex
02DE20: 70 72 65 73 73 69 6F 6E 0D 0A 20 20 20 20 20 20 pression..
02DE30: 20 20 44 65 63 6C 61 72 61 74 69 6F 6E 20 65 72 Declaration er
02DE40: 72 6F 72 0D 0A 1A 0D 0A 20 20 20 20 20 20 20 20 ror.....
02DE50: 55 6E 65 78 70 65 63 74 65 64 20 6E 6F 64 65 20 Unexpected node
02DE60: 69 6E 20 65 78 70 72 65 73 73 69 6F 6E 0D 0A 20 in expression..
02DE70: 20 20 20 20 20 20 20 44 65 63 6C 61 72 61 74 69 Declarati
02DE80: 8A 63 6F 6E 73 74 61 6E 74 73 20 62 65 69 6E 67 .constants being
02DE90: 20 72 65 71 75 69 72 65 64 20 61 72 65 90 20 74 required are. t
02DEA0: 68 65 90 20 49 4E 4C 49 4E 45 90 20 73 74 61 74 he. INLINE. stat
02DEB0: 65 6D 65 6E 74 2C 20 64 65 63 6C 61 72 61 74 69 ement, declarati
02DEC0: 6F 6E 73 20 61 6E 64 20 0D 8A 43 41 53 45 20 6C ons and ..CASE l
02DED0: 61 62 65 6C 73 2E 0D 0A 0D 0A 0D 0A 28 69 76 29 abels.......(iv)
02DEE0: 20 49 6E 74 65 72 6E 61 6C 20 63 6F 6D 70 69 6C Internal compil
02DEF0: 65 72 20 65 72 72 6F 72 73 0D 0A 20 20 20 20 20 er errors..
02DF00: 20 20 20 0D 0A 09 54 68 65 72 65 20 69 73 20 61 ...There is a
02DF10: 20 66 6F 75 72 74 68 20 74 79 70 65 20 6F 66 90 fourth type of.
02DF20: 20 65 72 72 6F 72 90 20 62 75 74 90 20 79 6F 75 error. but. you
02DF30: 20 73 68 6F 75 6C 64 20 6E 65 76 65 72 20 73 65 should never se
02DF40: 65 20 74 68 65 73 65 2E 20 0D 8A 54 68 65 73 65 e these. ..These
02DF50: 20 61 72 65 20 69 6E 74 65 72 6E 61 6C 20 63 6F are internal co
02DF60: 6D 70 69 6C 65 72 20 65 72 72 6F 72 73 90 20 61 mpiler errors. a
02DF70: 6E 64 90 20 69 6E 64 69 63 61 74 65 20 70 6F 73 nd. indicate pos
02DF80: 73 69 62 6C 65 20 62 75 67 73 20 69 6E 20 74 68 sible bugs in th
02DF90: 65 20 0D 8A 63 6F 6D 70 69 6C 65 72 2E 0D 0A 09 e ..compiler....
02DFA0: 50 6C 65 61 73 65 20 72 65 70 6F 72 74 20 61 6E Please report an
02DFB0: 79 20 69 6E 63 69 64 65 6E 63 65 20 6F 66 20 6F y incidence of o
02DFC0: 6E 65 20 6F 66 20 74 68 65 73 65 20 65 72 72 6F ne of these erro
02DFD0: 72 73 20 74 6F 20 41 72 6E 6F 72 2E 0D 0A 0D 0A rs to Arnor.....
02DFE0: 20 20 20 20 20 20 20 20 45 72 72 6F 72 20 69 6E Error in
02DFF0: 20 74 72 61 6E 73 6C 61 74 69 6F 6E 20 6E 6F 64 translation nod
02E000: 74 65 64 20 74 6F 20 61 73 73 69 67 6E 20 74 6F ted to assign to
02E010: 20 73 6F 6D 65 74 68 69 6E 67 20 77 68 69 63 68 something which
02E020: 20 69 73 20 6E 6F 74 20 61 73 73 69 67 6E 61 62 is not assignab
02E030: 6C 65 2E 20 0D 8A 65 2E 67 2E 20 61 20 63 6F 6E le. ..e.g. a con
02E040: 73 74 61 6E 74 20 6F 72 20 70 72 6F 63 65 64 75 stant or procedu
02E050: 72 65 2E 0D 0A 0D 0A 0D 0A 52 45 53 55 4C 54 49 re.......RESULTI
02E060: 53 20 6F 75 74 73 69 64 65 20 61 20 56 41 4C 4F S outside a VALO
02E070: 46 0D 0A 0D 0A 09 41 20 52 45 53 55 4C 54 49 53 F.....A RESULTIS
02E080: 20 63 6F 6D 6D 61 6E 64 20 77 61 73 20 66 6F 75 command was fou
02E090: 6E 64 20 6F 75 74 73 69 64 65 20 61 20 56 41 4C nd outside a VAL
02E0A0: 4F 46 20 62 6C 6F 63 6B 2E 0D 0A 0D 0A 0D 0A 4C OF block.......L
02E0B0: 4F 4F 50 20 66 6F 75 6E 64 20 6F 75 74 73 69 64 OOP found outsid
02E0C0: 65 20 6C 6F 6F 70 0D 0A 0D 0A 09 41 20 4C 4F 4F e loop.....A LOO
02E0D0: 50 20 63 6F 6D 6D 61 6E 64 20 69 73 20 6F 6E 6C P command is onl
02E0E0: 79 20 6C 65 67 61 6C 20 69 6E 73 69 64 65 20 6F y legal inside o
02E0F0: 6E 65 20 6F 66 20 74 68 65 20 6C 6F 6F 70 69 6E ne of the loopin
02E100: 67 20 63 6F 6E 73 74 72 75 63 74 73 2E 0D 0A 0D g constructs....
02E110: 0A 0D 0A 42 52 45 41 4B 20 66 6F 75 6E 64 20 6F ...BREAK found o
02E120: 75 74 73 69 64 65 20 6C 6F 6F 70 0D 0A 0D 0A 09 utside loop.....
02E130: 41 20 42 52 45 41 4B 20 63 6F 6D 6D 61 6E 64 20 A BREAK command
02E140: 69 73 20 6F 6E 6C 79 20 6C 65 67 61 6C 20 69 6E is only legal in
02E150: 73 69 64 65 20 6F 6E 65 20 6F 66 20 74 68 65 20 side one of the
02E160: 6C 6F 6F 70 69 6E 67 20 63 6F 6E 73 74 72 75 63 looping construc
02E170: 74 73 2E 0D 0A 0D 0A 0D 0A 52 45 54 55 52 4E 20 ts.......RETURN
02E180: 66 6F 75 6E 64 20 6F 75 74 73 69 64 65 20 50 52 found outside PR
02E190: 4F 43 2F 46 55 4E 43 0D 0A 0D 0A 09 41 20 52 45 OC/FUNC.....A RE
02E1A0: 54 55 52 4E 20 63 6F 6D 6D 61 6E 64 20 69 73 90 TURN command is.
02E1B0: 20 6F 6E 6C 79 90 20 6C 65 67 61 6C 90 20 77 69 only. legal. wi
02E1C0: 74 68 69 6E 90 20 61 90 20 70 72 6F 63 65 64 75 thin. a. procedu
02E1D0: 72 65 20 6F 72 20 66 75 6E 63 74 69 6F 6E 20 0D re or function .
02E1E0: 8A 62 6F 64 79 2E 0D 0A 0D 0A 0D 0A 45 4E 44 43 .body.......ENDC
02E1F0: 41 53 45 20 6F 75 74 73 69 64 65 20 61 20 53 57 ASE outside a SW
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: 49 54 43 48 4F 4E 0D 0A 0D 0A 09 41 6E 20 45 4E ITCHON.....An EN
02E410: 44 43 41 53 45 20 73 74 61 74 65 6D 65 6E 74 20 DCASE statement
02E420: 77 61 73 90 20 66 6F 75 6E 64 90 20 6F 75 74 73 was. found. outs
02E430: 69 64 65 90 20 74 68 65 90 20 62 6F 64 79 90 20 ide. the. body.
02E440: 6F 66 20 61 20 53 57 49 54 43 48 4F 4E 20 0D 8A of a SWITCHON ..
02E450: 63 6F 6D 6D 61 6E 64 2E 0D 0A 0D 0A 0D 0A 56 41 command.......VA
02E460: 4C 4F 46 20 6D 75 73 74 20 63 6F 6E 74 61 69 6E LOF must contain
02E470: 20 52 45 53 55 4C 54 49 53 0D 0A 0D 0A 09 41 20 RESULTIS.....A
02E480: 56 41 4C 4F 46 20 65 78 70 72 65 73 73 69 6F 6E VALOF expression
02E490: 20 6D 75 73 74 20 63 6F 6E 74 61 69 6E 20 61 74 must contain at
02E4A0: 20 6C 65 61 73 74 20 6F 6E 65 20 52 45 53 55 4C least one RESUL
02E4B0: 54 49 53 20 63 6F 6D 6D 61 6E 64 0D 0A 3E 70 61 TIS command..>pa
02E4C0: 0D 0A 49 6E 76 61 6C 69 64 20 61 70 70 6C 69 63 ..Invalid applic
02E4D0: 61 74 69 6F 6E 20 6F 66 20 4C 56 0D 0A 0D 0A 09 ation of LV.....
02E4E0: 54 68 65 20 4C 56 20 6F 72 20 40 20 6F 70 65 72 The LV or @ oper
02E4F0: 61 74 6F 72 20 77 61 73 90 20 75 73 65 64 90 20 ator was. used.
02E500: 69 6E 90 20 61 6E 20 69 6E 63 6F 72 72 65 63 74 in. an incorrect
02E510: 20 63 6F 6E 74 65 78 74 20 69 2E 65 2E 20 6F 6E context i.e. on
02E520: 20 61 20 0D 8A 63 6F 6E 73 74 61 6E 74 2E 20 4C a ..constant. L
02E530: 56 20 69 73 20 27 6C 65 66 74 20 76 61 6C 75 65 V is 'left value
02E540: 27 20 61 6E 64 20 6D 65 61 6E 73 20 74 68 65 20 ' and means the
02E550: 65 76 61 6C 75 61 74 69 6F 6E 20 6F 66 20 61 6E evaluation of an
02E560: 20 65 78 70 72 65 73 73 69 6F 6E 20 0D 8A 74 6F expression ..to
02E570: 20 6F 62 74 61 69 6E 20 61 6E 20 61 64 64 72 65 obtain an addre
02E580: 73 73 2E 0D 0A 0D 0A 0D 0A 44 79 6E 61 6D 69 63 ss.......Dynamic
02E590: 20 66 72 65 65 20 76 61 72 69 61 62 6C 65 20 75 free variable u
02E5A0: 73 65 64 0D 0A 0D 0A 09 41 20 76 61 72 69 61 62 sed.....A variab
02E5B0: 6C 65 20 77 61 73 90 20 75 73 65 64 90 20 69 6E le was. used. in
02E5C0: 90 20 61 6E 90 20 65 6D 62 65 64 64 65 64 90 20 . an. embedded.
02E5D0: 70 72 6F 63 65 64 75 72 65 90 20 77 68 69 63 68 procedure. which
02E5E0: 90 20 68 61 64 20 62 65 65 6E 20 0D 8A 64 65 63 . had been ..dec
02E5F0: 6C 61 72 65 64 20 69 6E 20 61 6E 20 6F 75 74 65 lared in an oute
02E600: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
02E610: 27 00 01 00 02 09 4E E5 27 00 C1 02 00 00 00 02 '.....N.'.......
02E620: 27 00 C6 02 00 00 00 02 27 00 C2 02 00 00 00 02 '.......'.......
02E630: 27 00 C7 02 00 00 00 02 27 00 C3 02 00 00 00 02 '.......'.......
02E640: 27 00 C8 02 00 00 00 02 27 00 C4 02 00 00 00 02 '.......'.......
02E650: 27 00 C9 02 00 00 00 02 27 00 C5 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 ................
02F900: 4F 66 66 73 65 74 2D 49 6E 66 6F 0D 0A 00 00 5F Offset-Info...._
02F910: 18 99 00 28 03 B8 05 48 08 D7 0A 68 0D F8 0F 88 ...(...H...h....
02F920: 12 18 15 5F 18 97 00 28 03 B8 05 48 08 D8 0A 68 ..._...(...H...h
02F930: 0D F8 0F 88 12 18 15 5F 18 96 00 27 03 B7 05 47 ......._...'...G
02F940: 08 D7 0A 66 0D F6 0F 86 12 16 15 5E 18 97 00 27 ...f.......^...'
02F950: 03 B7 05 46 08 D7 0A 67 0D F6 0F 86 12 16 15 5E ...F...g.......^
02F960: 18 96 00 27 03 B6 05 46 08 D7 0A 66 0D F7 0F 87 ...'...F...f....
02F970: 12 16 15 5E 18 98 00 28 03 B8 05 48 08 D8 0A 68 ...^...(...H...h
02F980: 0D F8 0F 87 12 18 15 5E 18 98 00 28 03 B9 05 48 .......^...(...H
02F990: 08 D9 0A 69 0D F8 0F 88 12 19 15 5D 18 98 00 28 ...i.......]...(
02F9A0: 03 B8 05 48 08 D8 0A 68 0D F7 0F 87 12 17 15 5D ...H...h.......]
02F9B0: 18 98 00 27 03 B7 05 47 08 D7 0A 67 0D F7 0F 87 ...'...G...g....
02F9C0: 12 17 15 5C 18 96 00 26 03 B7 05 47 08 D7 0A 67 ...\...&...G...g
02F9D0: 0D F7 0F 86 12 16 15 5C 18 98 00 28 03 B8 05 48 .......\...(...H
02F9E0: 08 D7 0A 67 0D F7 0F 88 12 18 15 5C 18 97 00 27 ...g.......\...'
02F9F0: 03 B7 05 47 08 D8 0A 68 0D F7 0F 87 12 17 15 5C ...G...h.......\
02FA00: 18 98 00 28 03 B8 05 48 08 D8 0A 68 0D F8 0F 88 ...(...H...h....
02FA10: 12 18 15 5B 18 98 00 28 03 B8 05 49 08 D9 0A 69 ...[...(...I...i
02FA20: 0D F9 0F 89 12 19 15 5B 18 98 00 28 03 B8 05 48 .......[...(...H
02FA30: 08 D8 0A 68 0D F9 0F 88 12 18 15 5B 18 97 00 27 ...h.......[...'
02FA40: 03 B7 05 47 08 D6 0A 67 0D F7 0F 87 12 17 15 5B ...G...g.......[
02FA50: 18 98 00 29 03 B9 05 48 08 D8 0A 68 0D F9 0F 88 ...)...H...h....
02FA60: 12 18 15 5A 18 97 00 27 03 B7 05 46 08 D7 0A 67 ...Z...'...F...g
02FA70: 0D F6 0F 86 12 17 15 5A 18 99 00 29 03 B9 05 49 .......Z...)...I
02FA80: 08 D8 0A 68 0D F8 0F 88 12 18 15 5A 18 98 00 28 ...h.......Z...(
02FA90: 03 B8 05 48 08 D8 0A 68 0D F8 0F 88 12 18 15 59 ...H...h.......Y
02FAA0: 18 97 00 27 03 B7 05 47 08 D7 0A 67 0D F6 0F 86 ...'...G...g....
02FAB0: 12 16 15 59 18 98 00 27 03 B7 05 47 08 D7 0A 67 ...Y...'...G...g
02FAC0: 0D F8 0F 88 12 18 15 59 18 97 00 28 03 B9 05 48 .......Y...(...H
02FAD0: 08 D8 0A 68 0D F8 0F 88 12 18 15 59 18 97 00 27 ...h.......Y...'
02FAE0: 03 B7 05 47 08 D6 0A 67 0D F7 0F 87 12 16 15 59 ...G...g.......Y
02FAF0: 18 98 00 28 03 B8 05 48 08 D8 0A 68 0D F8 0F 88 ...(...H...h....
02FB00: 12 18 15 59 18 98 00 28 03 B9 05 48 08 D8 0A 68 ...Y...(...H...h
02FB10: 0D F8 0F 89 12 18 15 58 18 98 00 28 03 B8 05 49 .......X...(...I
02FB20: 08 D9 0A 69 0D F9 0F 89 12 19 15 58 18 97 00 27 ...i.......X...'
02FB30: 03 B7 05 47 08 D7 0A 67 0D F7 0F 87 12 16 15 58 ...G...g.......X
02FB40: 18 97 00 26 03 B7 05 47 08 D6 0A 66 0D F6 0F 86 ...&...G...f....
02FB50: 12 16 15 58 18 97 00 27 03 B8 05 48 08 D8 0A 67 ...X...'...H...g
02FB60: 0D F7 0F 87 12 18 15 57 18 98 00 28 03 B8 05 48 .......W...(...H
02FB70: 08 D8 0A 68 0D F8 0F 88 12 18 15 58 18 97 00 27 ...h.......X...'
02FB80: 03 B7 05 47 08 D7 0A 67 0D F7 0F 87 12 18 15 57 ...G...g.......W
02FB90: 18 96 00 26 03 B6 05 45 08 D6 0A 66 0D F5 0F 86 ...&...E...f....
02FBA0: 12 16 15 56 18 97 00 27 03 B6 05 47 08 D7 0A 66 ...V...'...G...f
02FBB0: 0D F6 0F 86 12 16 15 56 18 96 00 26 03 B5 05 45 .......V...&...E
02FBC0: 08 D5 0A 66 0D F6 0F 86 12 16 15 57 18 97 00 28 ...f.......W...(
02FBD0: 03 B8 05 47 08 D8 0A 68 0D F8 0F 88 12 17 15 56 ...G...h.......V
02FBE0: 18 97 00 27 03 B7 05 47 08 D7 0A 67 0D F7 0F 86 ...'...G...g....
02FBF0: 12 17 15 56 18 98 00 27 03 B7 05 47 08 D8 0A 68 ...V...'...G...h
02FC00: 0D F8 0F 87 12 17 15 55 18 97 00 27 03 B7 05 47 .......U...'...G
02FC10: 08 D6 0A 66 0D F7 0F 87 12 17 15 55 18 97 00 28 ...f.......U...(
02FC20: 03 B8 05 48 08 D8 0A 68 0D F8 0F 88 12 18 15 00 ...H...h........
02FC30: 00 00 00 ...
RESULT OF SEARCH :
PRO=281 CHEA=0 COD=52 MUSI=1 COP=40 GRA=129 WRIT=196 198=11 199=0 STARTER=0 KBI=0 CAAV=0 L.TOURNIER=0
EXTENDED CPC DSK File SAMdisk220725* NBEDC COMv BCPL COMxCLIBHDR I
!"#$%&'()OPY B *KEYDEFS PCW+DEBUG (,-./0TIDY B D123456789CLIBHDR1
)BDC B FGHIJKLMNOPQRSTUBDC B )VWXYZBCPLM1 ABCDEabcdeBCPLM1 fghij
klmnopqrstuBCPLM1 vBCPLM2 wxyzBCPLM2 BCPLM2 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!ufUnTBCPLM3 £BCPLM3 5f
YnXk!ufUnTfYnX!u!ufWnVfan+tau!uu$.IXONCS5fntufnZ#""!!9*fn)n&g"!BKzWRfn)Vutn&#""!
*!9!fn*fngRTfn+tufsnrgo#tsurfsnr 2fqnpVut)s#rfsnr 2tsurfunt#tuutsrT*fng"funt#BKz
WR! #"fngR!-*!g"funt+DMgR2fqnpVml)#V0+"!9*""!!9!fn"!!9VzW!Rfn+fnk!0123456789ABCD
EFfng£o)#V"!!9VzW!R&fn+fnfng£o0"!!9! "!!9**!"fynx"fynx**"!!9*""!!9!*fwnvg"!BKzWR
!! !#"!twuvtuutfunt R funtR funtR funtRwv!!! !fwnv+twuvfwnvR!funtfwnv#twuvfn)Vw
vtwtuut7funtR funtR' wvfuntRE funtRK !Q fwnvfn)sfuntR!(!funtR!(!gogo "!!9*fynx!
fynx *""!!9!!fn)!.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! Nn&VutgzWR£fn)Vutn&gR£fn)Vutn&fngzWR£fn)Vutn&fsnrVtsurfunt#t
uut fsnr"!!9!fn)fnfnrt-fn)6#6funtR! !,"!!9*!"VyxzW!Rkfynxn!t"!!9zW!R*"!!9!fn)fnf
nfn)!ort-!)n&!!)#n&#!)n&!)sfn+T)!)n&!!)#n&!)n&!)sfn)w#6funt)n&!)sfunt)#n&!)sfunt
)n&!)s*""!!9fn""!!9fn""!!9*"!!9*"!!9fngaRVzW!zRfnfn"!!9fnC"!!9fng0RVzW!9Rfnfn "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)#VRfn7g (!!9fnzVFNR8"!!9*!fmn
l)!(!9!)6funtg£o!)sfuntg£o!)sfwnv)#Vfynx)N#Ffn)#Vfn)#Vfnz)#V"fnz)s#rfn)s#rfn)s#r
fynx)q#pfwnv)s#r!!fmnl)(!9*""!!9*!fmnl)!(!9!)6!)n&!!)#n&W#!)n&!)s!)n&!!)#n&Wotuu
tfn)6$#6fn)#Vfn)n&twuvfn)#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$Rfnt!)n&!
)sfuntg£o!)sfuntg£o!)s!)6fnfnfnzfynxfwnv!!9!!fmnl)(!9*""!!9!vx-fwnvg£og0R !!9npv
rt!s!9funtg£o!!9!9"!!9!fn"!!9*R!!E"!!9*R&!!ov-fwnvR! !0"!!9!fn)fn)$!otv-fwnvR!(!
"!!9!fn)fn)$!otv-fwnvR!(! "!!9!!!!*!g"!BKzWRbfn)Vkj6 #"fn)6fn)n&VutgzWRmfn)Vutn&
Ctqupfunt#tuutfsnrRfonnfqnpRfn)#n&#fn)s!tsfn!ofn!oN!Yfn +fn +"!!9*vfng"v!BKzWR!
#"v"!!9fn REfn"!!9"!!9"!!9 "!!9!"!!9!fn)#V Rlfwnv#twuvfn#tufwnvx"!!9*fn+g"!BKzWR
fnVsr)#V#"!OVRU"!!9*J*ur!tounofqnp.R*!tsurmfsnrRHfqnp 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) Pfn)#V+g"
fnBKzWRCfnVsr)#V#"afnV)#V"!!9*fn)#V+fn)s#r*fn)#Vg"fnBKzWRfsnr#fn)#VfnVsr)s#r#"fn
V)6 #6"!!9**fng"fnz)#VDMgRvfnzVqp)#Vfqnp#fnz)s#r+"fnzV)Vs#rfnz)#V#fnz)s#rfnzV)Vs
#r"!!9fn)#VVgzWRfn#*r)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#!"*'*$*&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."!!9* VR#*)VV*)V(!9* V" "!!9* VRVR#*)V*)V
V(!9* VR" "!!9*)fn+g")!BKzWR*fnzVqp)#VfnVqp*)s#")"!!9fn"fn)#VfsnrVutR gR+fsnrVut
gzWR*funtVsrRfna)*funtVsrgzWR*fsnrVutRfn)fsnrfnfn#)!9+ !*#"!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#twuvfn#tu!+No room("!!9fnfn
z!T+Enter file name fnE"!*!9*fwnv!!+!9*fwnv,!!"!"!"!"!" *)6 *tuutfuntRJ,funtRJ,*
YRJ,funt R9,* #" *) tw*tuut*) n& Rq,* #" *) 6 * gR,* +" *) 6 *!fn7"!Y,No room(*
R,!" *!--fwnv!z-%S not founfwnv#"!!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'd!-
*""!*!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 n
umber tyux!"!"*/fynxg"/!%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*Vs
r)6#6''fn"+tqup*&fnVqp+g"&fnBKzWR&*)Vmln&#"&*Vsr)#VVqpRU*Vs PBKzWRB/**2'"fsnrR6
/B/*#"#"/!""!!9*y/fn)n&g"y/!BKzWR/fn)Vsrn&fnVsr+*)n&R/!/#"y/!/"!*!9*****!!!0Ente
r string fqnp*+"*)n& R0*#"* gzWR81*)n& R0*#"0fqnp*T/0*tyux*+*)n& R0*0*+"fynxR#"!
"81*#"* 8*+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!tkuj
fmnlO!tkujfsnr3!tkujfsnr5fsnr6fsnrgzWR51fynx"fwnv"funt"fsnr"81r0!9*""!!9!*fn**!!
! !1BCPL editor!! !1-----------!! !1L Load text! ! !2S Save text!! ! '2E Edit te
xt!! ! M2G Goto line! ! !3u2F Find string!! !G2Q Quit!! !W2Select option tuutfun
tR2funtt3!Lfna7fsnr7fsnr7fsnrS8fsnr8fsnrK10" 9!9*""& )s#r#s#r#s#r#!9s#r)#V#S#V#
S#V##fki**"#)8I*8B"!9R85i*""KKC8"DM!9B8Stack overflow #22f(O!t+ 333!S -%333!G.3
!F*fn"/3!E3!Q3qf3Qf3eZ3EZ3f73F73g(3G(3s3S3l2L23k1*'"!!9*4**'fn)#Vfunt"+gPR4*"fn)
#VR gRE4!4No room(*+*)6*+fn**funt"*+"fn)#V*"R#"*R4!!*#!94*+"4!b4Line too long to
join(4!u4Top of file("vx)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!9B8St
ack overflow #22f(O!2w!!9*!*45fn)#Vg"45!BKzWRl5fnVqp)#VfwnvVqp)s#r#"45fnVut)#V
R5funt#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"!!(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 complete. Tree size
Phase 2 complet9**2'"*VyxRY7*#"*+*RR7n%*+!*#!9Y7*#""!!9*fn**6"!!9*fn***7*g"7!BKz
WR7*77v6#"7"!!9*fn***8*g"8!BKzWRH8*6fsnrRC8H8#"8"!!9*fn**!"!"!"!"*'"!!9!*fn**!"!
"!"!"*twuv*2'"*#"*#"fwnvR Ne. Code size Phase 1 errors Phase 2 errors Arnor BCP
L compiler v (c) PJB & Arnor Ltd., 1986 !3$00.1020!J$*K! 6#!("0#!4w#! 4"36O!4"I
6O!"2f22 2222 2!star+E(+")A 2!* 8(((80 2! (( !(!2Wy3$!$*17"$88*#"202H(I((((0 q52
3*Y near line ESC *W*YsW!+"Y7K 1q5 q5SYSWI( !(+( q5!I((6q56O(vExpecting iden
tifier*q5g Aq52( DO q5u EvBad vector definitionA ROq5O !B! q5G q5u FvBad PROCED
URE definitionvMissing )(R g q5u 6 q567KI(( Jto abort, any other key continues+
00!*W#2E#2F!"G(!P STOP to abort, any other key continuesG(X!( (222!w220 *£*R
2**w+"***R2**r+s+"* # 0'kkdk kk/R00 y0g(! *5#"5*7#"7F#*£!w#1w#2w#"##*R0* 0"!"1
2!J4TS vExpecting command'((()(pq5'(Z g u G!q ! ##Vx###OM.&8A"140- ZZ#ZZZ*fHP q5
Oq5SK6Lq5u g q5u Kq5u K !I-vELSE expected**q5q5u !!*vINTO expected!q5u !Sv expe
ctedq5!Sg q5!/u ,!/u !oo 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 zK
66 #u!t"COM£!V"R #s!r"# J4Disc Full#!V"( !£!V"R " q5u K pvBad FOR loopq5Pg !(
q5*W*Y!!9sW!"Y(*(&vNeed or in constant definitionq5u !qp!7KO(SYSWH!GoI(vMissin
g $)*B($*3KB vSection tag mismatchq5vMissing $(#G q5 G!(###'Z()40 (G(xG(G*M"l*."
7!"9"A"C"G"U*K2**"*Z"2r2v2n2z#!#s!r"7!"!p zKp!$y(!$!$3Y(N3J4File intact3y2yppOut
put file exists 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 2tc n**R*hs#
r7*js#r**R(#**G#J4Undefined START*A!9R2!1JR0P1L-40"p'!Z!(L!L!)V!V!+!*p"e### $$#2
A j%J4Error in translation node! "GX6#6 "jX "hX*#+!s#z K7!DM!!#V#z£ut##$p C/!!4
ut### levelongjumaptoverdvd**N!F#q5NR $v is only allowed in definitions q5#u g
vBad expression*W"$0! *$(#####F##foHz8*$*$yq5u "$"("&(*$K&( z 8*$*$q5u 6(vExpect
ing ,q5u *$q5B(!B!K z*$8q5u "$O! (#*$q5u "$y$# 9# # 5" " 8( Q( A+XXXXXX % !
P!!#V#&2+6#6#6#Vw#w##+V+n+V+n*Q*9*+V++V+n"*9C93"QTB $Vd3Undefined identifier,n
f 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"QKS
B8"Snf*R2 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% TX **C!"C*A+
V+n*AR##7##*7ut*AR*( !!( X*U"U+V++*IR *GK7q#p273*S*O*9*22!"S"QV++I*z*g."z "7!z
3""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(((((***"*uE(+*A++++nfnf++++*C *7##"A"C7!3""w((3CASE/DEFAULT outside a SWITCH
O#+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*nfnfn2"*9C97!v3!M%2
-7"*!,"*!,+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!r3"*dX"d g" BK
zWRDMgR#+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 +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 !(!nfs#r+++V+GV+O "283( 13v%*33G x26(xv%+++V+xGV+ !"" " "+++++V+,!73V+
n X7!3+V+n7s#r DM2r23VALOF must contain RESULTI73"p"n!!!!+V+!U'1O'8(&'3Inval
id application of L28 (0!'n-&!'!F 1!'nf+V+v%+V+v%!')#V+V+v%!(go!*7### X*7((Ox 7
s#r(+V+(7s#r6 +V++(V+0+!(R!(!+!(R! !+++V+08 ++V+v%!(2)))22v2w2s*7"x "t " "+V++,7
V+n*x-77!r3 +V+v%n2n!n!P3RESULTIS outside a VALO!z! +!v!"3LOOP found outside lo
o!r!v(F3m-3BREAK found outside loo3RETURN found outside FUNC/PRO+V+v%+V+285((3La
bels need a globa67NFa"+V+n*v*x*r*t"t"r"x"v****""""F( nfnfX*l##"l Ni#++++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+*+* R 3G($(!d3Dyn
amic 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 any keyV5z4 0###VT!"" " "nf,!73nfv% X!73
nfv%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-#(*!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*(----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+/ 5 / r j 2 U M2 8 %02- 2 22$ /( $9!4H)l8$9!4I2". %*+22+2
1+2!£R"52( 7 72" !)" !qN7)08 8#wyvString too long 7 2 2!vBad charactervBad char
acter constant2f(8(8J4Broken in+5,67&!8*9(A)BAB%QRq5N(vBad GET!5,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
0W7770z99!lb9!b D9+( -n92929,99 99q5Mn9299!s(9+(-(vBad 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'0a8708(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 memory*9 B**7 *7####*7"Ejnf P7andbebreakbycasedodefault
eqeqvelseendcasefalseforfinishgotogegrgtglobalgetifintoinlineletlvlelsltlogorlog
andlooplshiftmanifestnenotneqvorresultisreturn£remrshiftrvrepeatrepeatwhilerepea
tuntilswitchonstatictotesttruethentableuntilunlessvecvalofwhileoptionabs7-o/b/o/
N.V00O J+V+O 1testtruethentableuntilunlessvecvalofwhileoptionabs7-o/b/o/N.V00O J
+V+O 1 $) AND writeoct(num,d) BE $( IF d1 THEN writeoct(num3,d-1) wrc
h((num LOGAND 7)+'0') $) AND newline() BE wrch(newlinech) /**** INPUT
ROUTINES ****/ AND rdch() VALOF $( UNLESS returned 0 THEN $( LE
T c returned returned 0 lastchar c RESULTIS c $) RESULTI
S readstream 0 - rdvdu(), readch(readstream) $) AND unrdch() BE returned l
astchar AND reads(array) VALOF $( MANIFEST $( escape #xFC stop3 max
len255 $) LET p// CLIBHDR standard CP/M library header, last modified 01/12
/1986 MANIFEST $( bytesperword 2 bitsperword 16 softeofch
26 endstreamch -1 vdustream 0 printstream 1
maxint 32767 minint -32768 newlinech 269 $) STAT
IC $( readstream 0 writestream 0 returned 0 lastchar 0
$) /**** OUTPUT ROUTINES ****/ LET wrch(char) BE $( SWITCHON
writestream INTO $( Ctr, 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 ASE vdustream wrvdu(char) ENDCASE
CASE printstream prch(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%cptr, decval(string%(cptr+1)) pptr pptr + 1
cptr cptr + VALOF SWITCHON ch INTO rdch() $) $) REP
EATWHILE (cescape c stop) & (ptr 0) array%0 (cescape cstop) - 0, ptr R
ESULTIS NOT (cescape cstop) $) AND readn() VALOF $( LET input VEC 128
reads(input) RESULTIS strtonum(input,10) $) AND strtonum(string,base)
VALOF $( LET ptr, total 1, 0 WHILE ptr string%0 LOGAND (0decval(strin
g%ptr)base) DO $( total total * base + decval(string%ptr) ptr ptr
+ 1 $) RESULTIS total $) /**** FILE I/O R $( CASE
'S' writes(arg) 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(arg,size) RESULTIS 1 CASE '$' RESULTIS 0 DE
FAULT wrch(ch) pptr pptr - 1 RESULTIS 0 $) $) $)
ELSE wrch(k) $) $) AND writes(s) BE FOR c 1 TO s%0 DO wrchOUTINES ****/
AND findinput(name, buffer) VALOF $( LET c, de 15, buffer*2 setfcb(
name, buffer) // set the fcb bdosa(c, de) // open file buffer!
17 164 // set sector pointer RESULTIS c 255 $) AND endread() VA
LOF $( LET bufreadstream readstream vdustream RESULTIS buf0 - closein
(buf), TRUE $) AND rewind() BE IF readstream 0 THEN rewindin(readstream)
AND findoutput(name,buffer) VALOF $( LET c, de 22, buffer*2 setfcb(nam
e,(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 REPEATUNT
IL n 0 FOR j ptr+1 TO d DO wrch(' ') IF num0 THEN wrch('-') FOR j pt
r-1 TO 0 BY -1 DO wrch(temp!j+'0') $) AND writen(n) BE writed(n,0) AND wr
itehex(num,d) BE $( IF D1 THEN writehex(num4, d-1) wrch((num LOGAND 15)!T
ABLE '0','1','2','3','4','5','6','7','8','9', 'A',
'B','C','D','E','F') N buffer) bdosb(19, buffer*2) bdosa(c, de) buffer
!17 36 RESULTIS c 255 $) AND endwrite() VALOF $( LET buf writestr
eam writestream vdustream RESULTIS buf0 - closeout(buf), TRUE $) /*
*** PRIMITIVE I/O ROUTINES ****/ AND wrvdu(c) VALOF $( IF cnewlinech THE
N $( wrvdu(13) c10 $) bdosb(2,c) RESULTIS TRUE $) AND prch(c) VALOF
$( IF cnewlinech THEN $( prch(13) c10 $) bdosb(5,c) RESULTIS TRUE $)
AND prbusy() VALOF $( LHILE 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
$) /**** MISCELLANEOUS ROUTINES ****/ AND bdosa(c,de) BE $( INLINE 2
21,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 ET a bios(15,a) RESULTIS
a 0 // TRUE if printer busy $) AND rdtest() VALOF $( LET c,d
e 11, bdosa(c,de) RESULTIS c1 $) AND flush() BE WHILE rdtest() rdvdu(
) AND readch(buffer) VALOF $( LET character, fail 0, FALSE IF buffer
!17 164 THEN $( fail NOT readsector(buffer) // read a sector b
uffer!17 36 $) character buffer%(buffer!17) buffer!17 buffer!17 + 1
RESULTIS character LOGOR fail $) AND closein(buffer) // 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), TRUE AND rewindin(buffer) BE $( buffer%32 0 buffer!17 164 $
) AND writech(char, buffer) VALOF $( LET success TRUE IF charnewline
ch THEN $( UNLESS writech(13,buffer) RESULTIS FALSE char10 $)
IF buffer!17 164 THEN $( success writesector(buffer) buffer!17
36 $) buffer%(buffer!17) char buffer!17 buffer!17 + 1 RESULTIS suc
cess $) AND closeout(buffer) VALOF $( LET c, de 16,buffer*2 UNLESS
buffer!17 164 THEN wre INLINE 35 // inc hl INLINE 114
// ld (hl),d INLINE 221,102,125 // ld h,(ix+125) INLINE 221,1
10,124 // ld l,(ix+124) INLINE 41 // add hl,hl INLINE 1
19 // 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,229 itech(26,buffer) UNLESS
buffer!17 36 THEN writesector(buffer) bdosa(c,de) RESULTIS c 255 $)
AND readsector(buffer) VALOF $( LET result, buff 20, buffer*2 bdosb(26
, buffer*2+36) bdosa(result, buff) RESULTIS result 0 // TRUE is succe
ssful and not hard EOF $) AND writesector(buffer) VALOF $( LET result,
buff 21, buffer*2 bdosb(26, buffer*2+36) bdosa(result, buff) RESULTIS
result 0 // TRUE if written successfully $) AND setfcb(name, // push
ix INLINE 205,5,0 // call bdos INLINE 221,225 // pop ix
$) AND bios(n,a) BE $( LET saveVEC 1 save%0 0%#x80 save%1 0%#x81
save%2 0%#x82 0%#x80 #xC3 0%#x81 0%(0%1 + 256*0%2 + (n-1)*3 +1) 0%#x
82 0%(0%1 + 256*0%2 + (n-1)*3 +2) INLINE 221,229 // push ix INLI
NE #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) buffer) BE $( LET nptr, fptr, c, drvflag 1, 1, 0, TRUE FOR i 1
TO 11 buffer%i ' ' buffer%0 0 WHILE nptr name%0 DO $( c upperc
ase(name%nptr) nptr nptr + 1 IF fptr 2 LOGAND drvflag LOGAND c '' T
HEN $( buffer%0 buffer%1 - 'A' + 1 fptr, drvflag 1, FALSE
LOOP $) IF c '.' THEN $( fptr 9 BREAK $) IF fptr 9 LOGO
R c ' ' THEN BREAK buffer%fptr c fptr fptr + 1 $) IF c '.' T
HEN W N 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 writestream strea
m AND input() readstream AND output() writestream AND uppercase(char) 'a'
char'z' - char - 32, char AND capitalch(c) uppercase(c) AND decval(digit) '0
'digit'9' - digit14 N S "'#F0'" cursor up Key definitions for BCPL ed
itor 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 "'#me) IF out
name%0 0 THEN FINISH TEST findinput(inname, inbuff) THEN $( selectin
put(inbuff) TEST findoutput(o-'0', digit-'A'+10 P/M library header, last
modified 12/11/1986 MANIFEST $( bytesperword 2 bitsperword 16
softeofch 26 endstreamch -1 vdustream 0 printstream
1 maxint 32767 minint -32768 newlinech 269
$) STATIC $( readstream 0 writestream 0 returned 0
lastchar 0 $) /**** OUTPUT ROUTINES ****/ LET wrch(char) BE
$( SWITCHON writestream INTO $( C/* BCPL debug procedure 02/11/1986
*/ /* debug(opt,n,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12) Th
e first parameter specifies the required option. 0 pause ex
ecution, wait for a key to be pressed 1 display values of var
iables in decimal -1 display names and values of variables in
decimal 2 display value of strings -2 displ
ay name and value of strings 3 display contents of ve/* This
is a copy routine. Last modified 05/11/1986 */ option b- /* Include the li
brary */ GET "clibhdr" LET start() BE $( LET inname VEC 20 LET i
nbuff VEC 82 LET outname VEC 20 LET outbuff VEC 82 LET c 0 write
s("Input file name ") reads(inname) IF inname%0 0 THEN FINISH newline
() writes("Output file name ") reads(outname) IF outname%0 0 THEN FINI
SH TEST findinput(inname, inbuff) THEN $( selectinput(inbuff) TE
ST findoutput(octors -3 display name and contents of vectors
4 display values of variables in hexadecimal
-4 display names and values of variables in hexadecimal The second
parameter (n) is the number of variables or strings or vectors to be d
isplayed. If opt is positive there follows a list of identifiers.
If opt is negative there follows a list of pairs - a string givin
g the identifier name and the identifier. utname, outbuff) THEN $(
selectoutput(outbuff) $( c rdch() UNLESS cendstreamch
DO wrch(c) $) REPEATUNTIL c endstreamch endwrite() $
) ELSE writes("Can't open output file") endread() $) ELSE writes
("Can't open input file") $) . ion b- /* Include the library */ GET "
clibhdr" LET start()me) IF outname%0 0 THEN FINISH TEST findinput(inna
me, inbuff) THEN $( selectinput(inbuff) TEST findoutput(o N
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,var1,var2,var3) debug
(-1,3,"var1",var1,"var2",var2,"var3",var3) debug(2,1,st
r) debug(-2,2,"str1",str1,"str2",str2)
debug(3,1,vector,32) debug(-3,1,"vector",vecto
r,32) deb) writes(" ") wrch(
'"') writes(parm!1) wrch('"')
newline() parm parm + 2 ENDC
ASE CASE 3 debugvector(!parm,parm!1)
parm parm + 2 ENDCASE
CASE -3 writes(!parm) newline()
debugvector(parm!1,parm!2) ug(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 $( es
cape#xFC stop3 $) LET parm, ch, len d1, , LET wrnum, wrwid
writed, 0 SWITCHON (opt0 - opt, -opt) INTO $(
CASE 1 writes("*nBCPL Debug. Variable values ") END
CASE CASE 2 writes("*nBCPL Debug. String contents ")
parm parm + 3 ENDCASE $)
$) IF opt 0 & opt ne 3 DO newline() $) AND debugvector(addr,len)
BE $( LET ascii vec 16 LET 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 b
yte 0 TO 15 DO 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 chescape chstop t
hen FINISH $( ch addr%(line*16+byte)
writehex(ch,2) wrch(' ')
IF byte7 then wrch(' ') ascii%ascp
tr (31ch128) - ch , '.' ascptr ascptr + 1
$) wrch(' ') writes(ascii)
newline() $) $) 10/1986 */ /* debug(opt,n,d1,d2,d3,d4,d5,
d6,d7,d8,d9,d10,d11,d12) The first parame newline()
RETURN $) newline() IF opt 0 & opt NE
3 DO writes(" ") FOR i 1 TO n DO $( SWITCHON
opt INTO $( CASE 1 CASE 4
wrnum(!parm,wrwid) wrch(' ') parm p
arm + 1 ENDCASE CASE -1
CASE -4 writes(" ") /*
This is a BCPL beautifier. It will turn all keywords into upper case and all
identifiers into lower case */ // modified 30/10/1986 /* read in the stan
dard library header */ OPTION B- GET "clibhdr" OPTION B+ MANIFEST $
( indentsize 2 comments 35 $) GLOBAL $( keywords 0 input 1
output 2 errvec 3 error 4 lastchr 5 keyend 6 $) STATIC $(
indent 0 nldone TRUE idflag FALSE column 0 $) LET err(message)
BE $( n writes(!parm) writes(" ")
wrnum(parm!1,wrwid) newline()
parm parm + 2 ENDCASE C
ASE 2 wrch('"') writes(!parm) wrch('"')
wrch(' ') parm parm + 1
ENDCASE CASE -2 writes(" ")
writes(!parm Pewline() writes(message) newline()
longjump(error, errvec) $) LET space(char) ( char' ' char9 ) LET
rawchr() VALOF $( LET temp readch(input) WHILE temp 10 DO temp read
ch(input) IF lastchr endstreamch LOGAND temp endstreamch THEN err("Unexpect
ed EOF") lastchr temp RESULTIS lastchr $) LET getchr() VALOF $(
rawchr() IF 'A' lastchr 'Z' THEN lastchr lastchr + 32 RESULTIS last
chr $) LET out(character) BE $( UNLESS nmp 0 SWITCHON lastchr IN
TO $( CASE '$' condnl() temp getchr() getchr() TEST
temp '(' THEN $( out('$') out('(') ident() in
dent indent + indentsize $) ELSE $( indent indent - inde
ntsize out('$') out(')') ident() $) UNLESS lastch
r 13 THEN out(13) ENDCASE CASE '' out(13) getchr() END
CASE CASE '"' idspace() out('"') rawchr() UNTIldone LOG
OR 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(ch
aracter,output) $) $) LET hexval(char) VALOF $( TEST '0' char
'9' THEN RESULTIS char - '0' ELSE TEST 'a' char 'f' THEN RESULTIS char - 'a
'L lastchr '"' strchr() out('"') getchr() idflag 2 RETURN
CASE '' CASE '' temp lastchr getchr() out(' ') TEST la
stchr '' LOGOR lastchr temp THEN $( out(temp) out(lastchr)
getchr() $) ELSE out(temp) out(' ') ENDCASE CASE
'' TEST getchr() '' THEN $( out(' ') out('') ou
t('') out(' ') getchr() $) ELSE $( out('')
idflag + 10 ELSE RESULTIS 100 $) LET readnum(base, first) BE
$( WHILE hexval(first) base DO $( out(hexval(first) 10 - first, fir
st - 32) first getchr() $) idflag 2 $) LET stringsame(string1
, string2) VALOF $( IF !string1 NE !string2 THEN RESULTIS FALSE FOR pt
r 1 TO !string1 IF string1!ptr NE string2!ptr THEN RESULTIS FALSE RESULTI
S TRUE $) LET sysword(word) VALOF $( LET start keywords WHILE s
tart keyend DO $( IF str 1 RETURN $) ENDCASE CASE
'-' out(' ') TEST getchr() '' THEN $( out('-') ou
t('') getchr() $) ELSE out('-') out(' ') ENDCASE
CASE '/' getchr() TEST lastchr '**' THEN $( temp indent
indent 0 condnl() out('/') out('**') rawchr
() $( UNTIL lastchr '**' DO $( out(lastchr)
rawchr() $) out('**') ingsame(start + 1, word) TH
EN 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 TEST ptr THEN $( IF !ptr
LOGOR idflag THEN out(' ') FOR cptr 1 TO word!0 out(word!cptr - 32)
IF !ptr THEN $( out(' ') idf 0 $) $) ELSE $(
idspace() FOR ptr 1 TO word!0 DO out(word!ptr) idf 2 $)
rawchr() $) REPEATUNTIL lastchr '/' out('/') ou
t(13) IF getchr() 13 THEN getchr() indent temp $) ELSE
TEST lastchr '/' THEN $( IF column comments THEN out(13) F
OR a column TO comments out(' ') out('/') $( out(lastchr
) rawchr() $) REPEATUNTIL lastchr 13 out(13)
IF getchr() 13 THEN getchr() $) ELSE TEST lastchr '' THEN
$( out(' ' idflag idf $) LET ident() BE $( LET wordbuff VE
C 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(lastchr) r
awchr() $) LET condnl() BE $( IF nldone THEN out(13) $) LET
punctuate() BE $( LET te N ) out('/') out('') out('
') getchr() $) ELSE $( out(' ') out('/')
out(' ') $) ENDCASE CASE '' getchr() TEST lastchr
'' LOGOR lastchr '/' THEN $( out(' ') out('') out(la
stchr) out(' ') getchr() $) ELSE out('') ENDCASE
CASE ')' CASE '' out(lastchr) getchr() idflag 2 RETURN
CASE ''' idspace() out(''') rawchrrest + 1, !lengthptr + 1
$) rest rest + 1 $) $) AND readsys() BE $( readwords("an
d,be,break,by,case,do,default,Beq,Beqv,else,endcase,false,for,") readwords("f
inish,goto,Bge,Bgr,global,get,if,into,let,Blv,Ble,Bls,Blogor,Blogand,") readw
ords("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,") $) LE
T s() strchr() out(''') getchr() idflag 2 RETURN
CASE '!' IF idflag 1 THEN out(' ') out('!') getchr() ENDC
ASE CASE '+' CASE '&' CASE '' CASE '' CASE '**' out(' ') out(last
chr) out(' ') getchr() ENDCASE CASE ',' out(lastchr)
out(' ') getchr() ENDCASE DEFAULT out(lastchr) getchr()
$) idflag FALSE $) LET beautify() BE $( LET temp 0 WHILE (
lastchr NE endstreatart() BE $( LET wordarray VEC 500 AND inbuff VEC
82 AND outbuff VEC 82 AND namein VEC 10 AND nameout VEC 10 AND le
v VEC 3 level(lev) errvec, input, output lev, inbuff, outbuff keyword
s, keyend wordarray, wordarray readsys() files() getchr() beautify(
) error closein(input) closeout(output) newline() writes("BCPL beaut
ifier finished") $) . will turn all keywords into upper case and all ide
ntifiers into lower case */ // modifmch) & (lastchr NE softeofch) DO $(
WHILE space(lastchr) DO getchr() TEST 'a' lastchr 'z' THEN ident()
ELSE TEST '0' lastchr '9' THEN $( idspace() readnum(10, l
astchr) $) ELSE TEST lastchr '#' THEN $( idspace()
out('#') getchr() SWITCHON lastchr INTO $( CASE '
x' out('x') readnum(16, getchr()) ENDCASE CASE 'b' ou
t('b') readnum(2, getchr()) ENDCASE / 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#wyvStri
ng too long 7 2 2!vBad charactervBad character constant2f(8(8J4Broken in+5,67&!8
*9(A)BAB%QRq5N(vBad GET!5 CASE 'o' out('o') readnum(8, getchr())
ENDCASE DEFAULT readnum(8, lastchr) $) $) ELSE TE
ST lastchr 13 THEN $( out(13) getchr() $) ELSE pun
ctuate() $) $) LET files() BE $( LET namein VEC 10 AND nameout
VEC 10 writes("Enter the input file name ") reads(namein) newline()
writes("Enter the output file name ") reads(nameout) newline() UNLESS
findinput(namein, input) THEN err("Can't open inp// CLIBHDR1 additional CP/M
library header, last modified 19/11/1986 STATIC $( randomseed 0 $) LET
random() VALOF $( randomseed randomseed * #xA3ED + #x1D31 RESULTIS rand
omseed$)94(4(4(4(4(4)94(4(4(HQ4(4(4)9Y14(4(1P4(4(4(IMU1Q%Lp4(4(4)9ut") UNLESS
findoutput(nameout, output) THEN err("Can't open output") $) LET readwo
rds(string) BE $( LET length, rest, lengthptr string%0, 1, 0 WHILE len
gth 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,
N ame1,name2,buffer) VALOF $( LET c, de 23, buffer*2 setfcb(n
ame1,buffer) setfcb(name2,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 $( writed(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,s2) inline #xDD,#x66,#x7B // ld h,(ix+123) in
line #xDD,#x6E,#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 inline #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,#x VALOF $( LET len1,l
en2 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 $) RESU
LTIS len1len2 - 0, shorters1 - -1,1 $) AND bytemove(source,dest,number) BE
$( inline 221,102,123 // ld h,(ix+123) 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 22173,#
x23,#x72 // add hl,hlld (hl),einc hlld (hl),d inline #xDD,#x66,#x7D //
ld h,(ix+125) inline #xDD,#x6E,#x7C // ld l,(ix+124) inline #x29,#x
D1 // 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) inline #x29 // add hl,hl inlin
e #xED,#x5B,#x90,#x00 // ld de,(&90) inline #x73,#x23,#x72 // ld (hl),
einc hlld (hl),d ,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 // dec bc inli
ne 9 // add hl,bc inline 235 // ex de,hl inlin
e 9 // add hl,bc inline 235 // ex de,hl inline
3 // inc bc inline 237,184 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 firmware(addr,af,bc,d
e,hl,ix) BE $( LET save6 VEC 3 bytemove(#x80, save6*2, 6) 0%#x80 /
/ lddr $) AND call(addr,af,bc,de,hl,ix) BE $( LET save3 VEC 1 bytemo
ve(#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 #x
DD,#x6E,#x78 #xCD 0%#x81 0%(0%1 + 256*0%2 + 87 +1) 0%#x82 0%(0%1 + 2
56*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 ve
rsion() 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 8 ) $) AND getbyte(s,i) s%i AND putbyte(s,i,c) BE s%i c AND unpa
ckstring(s,v) // ld l,(ix+120) inline #x29,#x4E,#x23,#x46 // add hl,hlld
c,(hl)inc hlld b,(hl) inline #xDD,#x66,#x7F // ld h,(ix+127) inline
#xDD,#x6E,#x7E // ld l,(ix+126) inline #x29,#x5E,#x23,#x56 // add hl,h
lld e,(hl)inc hlld d,(hl) inline #xD5 // push de inline #x
DD,#x66,#x7D // ld h,(ix+125) inline #xDD,#x6E,#x7C // ld l,(ix+1
24) inline #x29,#x5E,#x23,#x56 // add hl,hlld e,(hl)inc hlld d,(hl) inlin
e #xD5 // push de PBE FOR i 0 TO s%0 DO v!i s%i AND pack
string(v,s) BE $( LET n !v LOGAND #xFF FOR i 1 TO n DO s%i s!i $) F
ter specifies the required option. 0 pause execution, wait
for a key to be pressed 1 display values of variables in deci
mal -1 display names and values of variables in decimal
2 display value of strings -2 display name and va
lue of strings 3 display contents of veArnor Ltd., 118 Whiteh
orse Road, Croydon, CR0 2JF. op fo %
ce 1. ABOUT BCPL BCPL is often described as a "systems programming lan
guage". This makes BCPL sound very grand and technical, but this is not the cas
e. BCPL is certainly a very good language for writing programs such as operati
ng systems, compilers and word processors but the features that make BCPL ideal
for these applications also make it an excellent general purposefined $)
LET index() VALOF $( TEST lastchr NE ',' THEN RESULTIS 0 ELSE TEST sk
ip() 'x' THEN $( skip() RESULTIS 1 $) ELSE TEST lastchr'y' THEN $( skip()
RESULTIS 2 $) ELSE $( nonfatal("Bad index") RESULTIS 0 $) $) /
* 0-addressing error, 1-immediate, 2-absolute, 3-indirect indexed, 4-indexed x
5-indexed y, 6-indexed indirect */ AND addrmode() VALOF $( LET inde
xmode 0 skipc() SWITCHON lastchr INTO $( case '#' skip()
ree language. What are these features First, flexibility. BCPL programs a
re not constrained by rules as to which operations can be performed on which t
ype of variable. Indeed there are no different variable types -- all variables
are simple numbers and other types and structures are achieved by using variabl
es differently. This makes BCPL very different from other languages such as BAS
IC and PASCAL. A string is treated as a variable pointing to a string, similarl
y a vectorBCPLM1 produce the error message 'dynamic free variable used'. p
---!-----!-----!-------!-------!-------!-------!-------!-------!----R tm 3 bm
11 hm 0 fm 2 ce BCPL ce THE SYSTEMS PROGRAMMING LANGUAGE ce Amstrad
PCW8256/8512 ce Amstrad CPC6128/664/464 ce by P
hillip Blenkinsopp ce CONTENTS 1 About
BCPL 3 2 Using Arnor BCPL. Even procedures are simply variables containing
the address of the procedure, and these may be assigned to or passed as parame
ters. This flexibility allows the BCPL programmer to access any part of memory
(indeed any individual bit) and so do things that can normally only be done in
machine code. Of course freedom always carries a price -- responsibility. In l
anguages such as PASCAL the compiler detects an attempt to perform an illegal o
r meaningless operation. In BCPL it ra under CP/M 5 3 Using Arnor BCPL under
AMSDOS 8 4 Compiler options 12 5 Some key facts about BCPL14 6 Two BCPL pr
ograms16 7 Summary of the BCPL language18 8 The Arnor BCPL libraries26 9 D
ifferences from standard BCPL49 APPENDICES 1 Technical information51
2 Summary and index of library routines54 3 Portability56 4 Error messages5
7 Copyright (c) Arnor Ltd.,1986 Issue 1, 1986 (v1.00/2.00) A
MSTRArely does so and it is quite possible to crash the system by corrupting th
e 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 version. It does not attempt to b
e a complete guide to BCPL programming, and assumes some knowledge of programmi
ng (for example in BASIC). Note that examples of the use of most features of BC
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 NL are to be found among the example programs contained on
the disc. The definitive book on BCPL, both as an introduction and a referen
ce is "BCPL -- the language and its compiler" by Martin Richards and Colin Whi
tby-Strevens. This book is essential reading for the BCPL programmer. It is pu
blished by Cambridge University Press at a reasonable price in paperback. Marti
n Richards originally designed BCPL in Cambridge in 1967. This book will hencef
orth be referredoption b- get "clibhdr" /* A simple full screen editor */ /
* CP/M version for CP/M 2.2 and CP/M Plus */ // modified 02/12/1986 MANIFEST
$( ins TRUE over FALSE cursleft #xF2 cursright #xF3 cursup
#xF0 cursdown #xF1 escape #xFC ignore #xEF stop 3
scursup #xF4 scursdown #xF5 scursleft #xF6 scursright #xF
7 ccursup #xF8 ccursdown #xF9 ccursleft #xFA ccur
sright #xFB to as "the BCPL book". In particular the book contains an
excellent section on "Advanced facilities" which covers, among other things, p
ointers, bit operations, recursion and scope rules. For the purposes of this
manual, the BCPL book is regarded as defining "standard" BCPL, and any minor va
riations or enhancements to this standard are pointed out. op ce 2. USING ARN
OR BCPL UNDER CP/M CPC users may use BCPL under CP/M (either 2.2 or Plus).
The supplied di copensq 27 cclosesq 29 maxscrheight 31
maxchr 22998 // can be increased for CP/M Plus only $)
/* textend points to the last character in the file which will always
be a character 13. textptr points to the first character of the current line
. textstart points to the start of the text space. */ STATIC $( insert
ins textend 0 textptr 0 textstart 0 x 1 y 1 prev 0 file
0 buffprint FALSE sc has the CP/M version of the program on one side, a
nd the AMSDOS version on the other. Note PCW8256/8512 users should ignore t
he AMSDOS side of the disc and the EPROM, as well as any references to Amsdos o
r the EPROM/ROM version, throughout this manual. These are for CPC users only.
The 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 fi linenumber 1 scrheight0 ver
0 $) GLOBAL $( errvec 0 errlab 1 $) LET bytemove(source,dest,number)
BE $( inline 221,102,123 // ld h,(ix+123) inline 221,110,122
// ld l,(ix+122) inline 221,86,125 // ld d,(ix+125) inline 221,94,12
4 // ld e,(ix+124) inline 221,70,127 // ld b,(ix+127) inline 2
21,78,126 // ld c,(ix+126) inline 167 // and a inline 2
37,82 // sbc hl,de inline 25 // add hl,deles containe
d on the disc -- CP/M side The main files are BCPL.COMthe main compiler pr
ogram CLIBHDRthe main I/O library CLIBHDR1the extra I/O library containing les
s used routines DEBUGa routine useful for debugging BCPL programs The disc a
lso contains the following example files ---!-----!-----L-------!-------!----
---!-------!-------!-------!----R AS6502.Ba 6502 cross assembler, written in BC
PL BEDC.BBCPL editor source code, CP/M version BEDC.COMBCPL editor object code
, inline 56,4 // jr c,+4 inline 237,176 // ldir i
nline 24,8 // jr +8 inline 11 // dec 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, save3*2, 3)
0%#x90 #xC3 0%#x91 addCP/M version COPY.Ba simple example program which
copies a file KEYDEFS.PCWa key definition file for use with BEDC.COM on the P
CW8256/8512. TIDY.BA BCPL program to format BCPL source code tidily ---!-----!
-----!-------!-------!-------!-------!-------!-------!----R Creating a work
ing disc NOTE Under no circumstances should the original disc be used as a w
orking disc for normal use. The required files should be copied onto a system d
isc and the original retained in a sa Nr & #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 // ld 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
// ld (hl),d inline #xDD,#x66,#x7F // ld h,(ix+127) inline #x
DD,#x6E,#x7E // ld l,(ix+126) inline #x29 // add hl,h
l inline #xED,#x5B,#x90,#x00 // ld de,(&90) inline #x73
// ld (hl),e inline #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 inli+120) inline #x29 // add hl,hl inl
ine #x4E // ld c,(hl) inline #x23 // inc hl
inline #x46 // ld b,(hl) inline #xDD,#x66,#x7F
// ld h,(ix+127) inline #xDD,#x6E,#x7E // ld l,(ix+126) inline #
x29 // add hl,hl inline #x5E // ld e,(hl)
inline #x23 // inc hl inline #x56 // ld
d,(hl) inline #xD5 // push de ne #x71 // l
d (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 inline #x73
// ld (hl),e inline #x23 // inc hl inline #x72
// ld (hl),d bytemove(save3*2, #x90, 3) $) LET firmware(addr,a
f,bc inline #xDD,#x66,#x7D // ld h,(ix+125) inline #xDD,#x6E,#x7C
// ld l,(ix+124) inline #x29 // add hl,hl inlin
e #x5E // ld e,(hl) inline #x23 // inc hl
inline #x56 // ld d,(hl) inline #xD5 //
push de inline #xDD,#x66,#x7B // ld h,(ix+123) inline #xDD,#x6E
,#x7A // ld l,(ix+122) inline #x29 // add hl,hl
inline #x5E // ld e,,de,hl,ix) BE $( LET save6 VEC 3 b
ytemove(#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) byte
move(save6*2, #x80, 6) $) and version() VALOF $( LET c,de12, LET a
f,bc,hl,ix ,,, bdosa(c,de) IF (de & #xFF) #x30 THEN RESULTIS 2
firmware(#xE3,af,bc,de,hl,ix) RE(hl) inline #x23 // in
c hl inline #x56 // ld d,(hl) inline #xE1
// pop hl inline #xDD,#xE1 // pop ix inline #xF1
// pop af inline #xCD,#x90,#x00 // call &90 inline #xD
D,#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 #xDSULTIS 3 +
( (af & #xFF00) 8 ) $) LET esccode(x) BE $( wrch(27) wrch(x) $)
LET clearscr() BE $( TEST ver2 THEN wrch(12) ELSE esccode('E') $) LE
T tab(x,y) BE $( TEST ver2 THEN $( bdosb(6,31) bdosb(6,x) bdos
b(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() BD,#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 #x
DD,#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 NE return LET cursen() BE return L
ET cursdi() BE return LET beep() BE $( wrch(7) $) /* This routine return
s the number of characters up to and including the next CR */ LET linelen
gth(from) VALOF $( LET sofar 1 WHILE !from NE 13 DO $( sofar sofar +
1 from from + 1 $) RESULTIS sofar $) /* This routine will print nu
m characters of line and then fill the rest of the line with spaces */ AN
D printclr(line,num) BE $( FOR a 0 TO num-1 DO wrch(line!a) DEFAULT
x validate(buffer,x) TEST buffer!0 80 THEN $( bins
ert(buffer,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 buff
er(line) VALOF $( LET keypress 0 $( tab(6,scrheight) writef("%I
4",linenumber) tab(18,scrheight) writef("%I2",x) tab(x,y) cursen
() spaces(79-num) $) /* This routine will print either the whole buf
fer from x on or just the new character */ AND reprint(line,pos) BE $(
TEST insert THEN FOR a pos TO line!0-1 DO wrch(line!a) ELSE wrch(line!po
s) $) /* This routine will remove a character from the buffer */ AND
delete(line,x) BE $( TEST insert THEN $( line!0 line!0 - 1 F
OR a x TO line!0 DO line!a line!(a+1) $) ELSE line!x ' ' $) /* Th
is routine will insert a charactkeypress rdch() cursdi() keypress bu
ildbuff(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%(from-1) 13 $) /* The above routines work
with pointers and words. The next set of routines work with bytes and array
indices */ LET linelength(from) VALOF $er into the buffer at the point
given */ AND binsert(line,position,character) BE $( TEST insert THEN
$( FOR a line!0 TO position BY -1 line!(a+1) line!a line!position
character line!0 line!0 + 1 $) ELSE line!position character $)
AND validate(line,x) VALOF $( IF x line!0 THEN RESULTIS x tab(line!
0,y) RESULTIS line!0 $) /* The line given is in buffer in the fo
llowing format 0 length 1- string in unpacked format foll( LET sofa
r 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 fro
m TO from + linelength(from) - 2 DO wrch(textstart%a) prev!y linelength(from
) - 1 $) LET status() BE $( tab(1,scrheight) TEST ver4 THEN
writef("Line%I4 Column%I2 (STOP to menu)",linenumber,x) ELSE writef("Lin
e%I4 Column%I2 (ESC to menu)",linenumber,x) $) LET cls() BE $( cle
arscrowed by 13 The routine reacts to key 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,linelength(buffer+1)-1) RESULTIS 13
CASE cursleft CASE scursleft TEST x1 THEN x x - 1 ELSE b
eep() ENDCASE CASE cursright CASE scursright TEST x buffer!0
-1 THEN x x() curson() cursdi() FOR a 1 TO scrheight-1 DO prev
!a 0 status() $) /* This routine will move the text on the scree
n down a line and alter the previous array */ LET down() BE $( tab(
1,1) revlf() wrch(13) status() spaces(prev!(scrheight-1)-33) FOR a scr
height-1 TO 2 BY -1 DO prev!a prev!(a-1) prev!1 0 $) AND revlf() BE $(
TEST ver2 THEN wrch(11) ELSE $( esccode('I') $) $) /*
This routine will move the text up one + 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 cursdown RESULTIS key
CASE 127 x validate(buffer,x) IF x 1 THEN RESULTIS 127
x x - 1 tab(x,y) delete(buffer,x) reprint(buffer,x)
IF insert THEN wrch(' ') ENDCASE Nline and alter the previous a
rray */ LET up() BE $( tab(1,scrheight) spaces(40) wrch(10) wrch(1
3) 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 posit
ion 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) - start%0 13
char readch(file) UNTIL char softeofch LOGOR char endstreamch LOGOR
textend maxchr DO $( UNLESS char 10 THEN $( texten
d textend + 1 textstart%textend char $) char readch(fi
le) $) UNLESS textstart%textend 13 DO $( textend textend
+ 1 textstart%textend 13 $) IF textend maxchr THEN
$( textend textend - 1 textstart%textend 13 closein1
FOR a from TO from + l - 1 DO wrch(textstart%a) spaces(prev!y-l) pre
v!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 $( I
F ptr 0 THEN $( beep() RESULTIS ptr $) ptr ptr - 1 REPEATWHILE textst
art%(ptr-1) NE 13 LOGAND ptr NE 0 RESULTIS ptr $) /* This routine will
reconstruct(file) initbuff(line,0) error("No room") $) I
F textend -1 THEN textend 0 closein(file) RESULTIS TRUE $) ELS
E $( writef("%S not found",name) rdch() RESULTIS FALSE $)
$) AND savetext() VALOF $( LET name VEC 20 LET discerror(file)
VALOF $( writes("Disc error. Hit a key") rdch() closeout(file)
RESULTIS FALSE $) getfilename(25,19,name) TEST findoutput(name,fi
le) THEN $( FOR a 0 TO text 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 error(message) BE $( tab(1,scrheight) writef("%S. Hi
t any key to continue",message) beep() rdch() tab(33,scrheight) spaces
(20) status() buffprint TRUE reconstruct(textptr) longjump(errlab,err
vec) $) LET makespace(at,size) BE $( byteend DO $( UNL
ESS writech(textstart%a,file) THEN RESULTIS discerror(file) IF textstart%
a 13 THEN UNLESS writech(10,file) THEN RESULTIS discerror(file) $
) closeout(file) RESULTIS TRUE $) ELSE $( writes("Cannot
open ") writes(name) RESULTIS FALSE $) $) AND goline() BE $(
LET linenum 0 linenumber 1 tab(25,19) writef("Enter line number ")
cursen() linenum readn() cursdi() textptr, x 0, 1 FOR count move(t
extstart*2+at,textstart*2+at+size,textend-at+1) textend textend + size $)
AND closespace(at,size) BE $( bytemove(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 THE
N $( TEST 2 TO linenum DO $( LET optr textptr textptr for
ward(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 st
ring routine */ AND findstring() BE $( LET optr, ox, oy, oline textptr
, x, y, linenumber LET search VEC currentnew THEN closespace(at,current-new)
ELSE IF currentnew THEN makespace(at,new-current) copy(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() newl
ine() $) LET loadtext(line) VALOF $( LET name VEC 20 getfilen
ame(25,19,name) TEST findinput(name,file) THEN $( LET char 0 te
xtptr, x, y, linenumber, textend 0, 1, 1, 1, -1 text P 20 tab(25,19)
writef("Enter string ") cursen() reads(search) cursdi() textptr textp
tr + x - 1 UNLESS textstart%textptr13 THEN textptr textptr + 1 UNLESS tex
tptr textend DO $( TEST textstart%textptr13 THEN linenumber lin
enumber + 1 ELSE $( IF match(textptr,search) THEN $(
optr textptr WHILE textstart%(textptr-1) NE 13 LOGAND textptr NE
0 DO textptr textptr - 1 x, y optr - textptr + 1, 1TO lin
e!0 DO copy!a line!a WHILE line!ptr NE 13 DO ptr ptr + 1 FOR a ptr TO l
ine!0-1 DO line!a line!(a+1) line!0 line!0 - 1 linsert(copy,textptr)
x, linenumber 1, linenumber + 1 textptr forward(textptr) TEST y scrheig
ht-1 THEN $( up() write(textptr,1,scrheight-1) $) ELSE y y +
1 $) LET moveup() BE $( UNLESS textptr 0 THEN $( textptr
backline(textptr) linenumber linenumber - 1 TEST y 1 THEN $(
2 BREAK $) $) textptr textptr + 1 IF textptr
textend THEN $( textptr, x, y, linenumber optr, ox, oy, oline
BREAK $) $) REPEAT $) /* This is the main menu routine */
LET menu(line) BE $( LET tptr 0 linsert(line,textptr) $( LET
key 0 clearscr() tab(32,4) writes("BCPL editor") tab(32,5) w
rites("-----------") tab(32,9) writes("L Load text") tab(32,10) wri
tes("S Save text") down() write(textptr,1,1) $) ELSE y y -
1 $) $) LET upcurs(line) BE $( linsert(line,textptr) moveup()
$) LET movedown() BE $( LET optr textptr textptr forward(textp
tr) UNLESS textptr optr THEN $( 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 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 ENDCASE CASE 'S' CASE 's' wrch('S') IF savetext() THEN
BREAK ENDCASE CASE 'G' CASE 'g' wrch('G') supcurs(line) BE $( lin
sert(line,textptr) FOR a 1 TO scrheight-4 DO $( IF textptr 0 THEN B
REAK moveup() $) $) LET sdowncurs(line) BE $( linsert(line,tex
tptr) FOR a 1 TO scrheight-4 DO $( LET optr textptr movedown()
IF optr textptr THEN BREAK $) $) LET top(line) BE $( lin
sert(line,textptr) textptr, x, y, linenumber 0, 1, 1, 1 reconstruct(textp
tr) $) LET bottom(line) BE $( LET optr 0 linsert(line,textp goli
ne() 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') finish $) beep() $) RE
PEAT reconstruct(textptr) $) /* This routine deals with the deletion
of a CR */ LET deletel(line) BE $( TEST textptr NE 0 THEN $( LE
T optr, tptr textptr, backline(textptr) TEST linelength(tptr) + line!0 - 1
80 THEN tr) textptr, x, y, linenumber 0, 1, 1, 0 $( optr textpt
r textptr forward(textptr) y y + 1 linenumber linenumber + 1
$) REPEATUNTIL optr textptr IF y scrheight-1 THEN y scrheight-1 recon
struct(textptr) $) /* All lines end in 13 */ /* The edit buffer is held i
n unpacked format. The whole text is stored in packed format */ LET start
() BE $( LET filebuff VEC 81 LET previous VEC maxscrheight-1 LET t
ext VEC maxchr/2+1 LET $( IF line!0-linelength(textptr)+textend m
axchr THEN error("No room") textstart%(textptr-1) 0 linsert(line,
textptr-1) textptr tptr linenumber linenumber - 1 x line
length(textptr) - line!0 + 1 TEST y 1 THEN $( write(text
ptr,1,1) $) ELSE y y - 1 $) ELSE error("Line too long t
o join") $) ELSE error("Top of file") $) LET addl(line) BE $(
LET copy VEC 80 LET ptr 1 FOR a 0 Pinbuff VEC 81 LET error VEC 4
LET copyptr, lastkey, newscreen 0, 0, TRUE ver version() scrheight
ver4 - 31, ver3 - 24, 25 textptr, textend, textstart, errvec 0, 0, text, err
or prev, file previous, filebuff cls() textstart%0 13 $( leve
l(errvec) initbuff(inbuff,textptr) IF newscreen THEN screen(textptr,y)
errlab IF buffprint THEN $( tab(1,y) FOR a 1 TO i
nbuff!0-1 DO wrch(inbuff!a) spaces(80-inbuff!0) bus 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 ffprint FALSE $)
lastkey buffer(inbuff) newscreen FALSE SWITCHON lastkey INTO
$( CASE 127 newscreen TRUE deletel(inbuff) ENDCASE CASE 13
newscreen TRUE addl(inbuff) ENDCASE CASE cursup CASE scursup upcurs(in
buff) ENDCASE CASE cursdown CASE scursdown downcurs(inbuff) ENDCASE
CASE ccursup supcurs(inbuff) ENDCASE CASE ccursdown sdowncurs(inbuff
) ENDCASE CASE copensq top(inbuff) ENDCASE CASthe program BEDC.C
OM can be used, and this should also be copied onto the system disc. This is a
simple full screen editor which is compatible with PROTEXT editing commands.
Note If using BEDC.COM with a PCW8256/8512, the keys must be defined using S
ETKEYS. Suitable definitions are provided in the file KEYDEFS.PCW and the synta
x used 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 cclosesq bott
om(inbuff) ENDCASE CASE escape CASE stop menu(inbuff) ENDCASE $)
$) REPEAT $) . oo long softeofch 26 endstreamch -1 v
dustream 0 printstream 1 maxint 32767 minint -32768
newlinech 269 $) STATIC $( readstream 0 writestream
0 returned 0 lastchar 0 $) /**** OUTPUT ROUTINE
S ****/ LET wrch(char) BE $( SWITCHON writestream INTO $( Ce cop
ied onto the working disc. Compiling a BCPL program under CP/M The CP/M
version of the compiler takes a file containing BCPL source code and produces
a COM file containing an executable CP/M object code program. There is no inter
mediate compilation stage. The command to compile a program is bcpl source d
estination where source and destination are the names of the files from which
code is taken and to which it is written. The destination filename is optiona
l and if omitted will default to the source file name with a .COM extension. Th
e extensions on both filenames are optional. If the source name has no extensio
n then the compiler 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 versions. If the destination file has no extension then this will d
efault to .COM. e.g.bcpl as6502 will first look for the file AS6502 and if
it is not prfe place, as a backup. A system disc should be created using DIS
CKIT (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 PI
P) from the supplied BCPL disc onto the newly formatted disc, together with (if
using CP/M Plus) the EMS file from the CP/M System Utilities disc. This will
create a disc suitable for use, but you might also decide to add further files,
such a Pesent will then look for the file AS6502.B. The compiler will read th
is 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 c
an then be convenient to use SUBMIT to compile and run the program with a singl
e command. The CP/M conditional command facility can be used so the the program
is only executed if no error occurred. For example a file COMPILE.SUB may cont
ain the following bon Fit the 16K EPROM into your ROM board following the
instructions supplied with the rom board. The ROM selection number is not criti
cal, though it must not clash with any existing ROMs, even if they are not ins
talled on the ROM board. (The disc rom for example uses ROM select 7). Suitabl
e boards may be purchased from Arnor if you do not already have one. The BCPL
ROM provides an extremely convenient and fast environment for developing BCPL p
rograms, particularly when used in ccpl program.b y program The second line
causes the previous version to be deleted. Note that this will only work under
CP/M Plus (CPC6128 and PCW8256/8512) and not under CP/M 2.2. Including oth
er files Other BCPL source files may be included at any point in a program b
y 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 fonjunction with PROTEXT or MAXAM. Pro
grams can be typed in using PROTEXT or MAXAM and compiled directly from memory.
The ROM version may only be used on the CPC464, CPC664, and CPC6128 computers
. List of files contained on the disc -- AMSDOS side The following files
are most important BCPL.BASthe loader for the compiler program BCPL.BINthe
main compiler program ALIBHDRthe main I/O library ALIBHDR1the extra I/O librar
y containing less used routines AMSDOSa further ile. Most programs will star
t by including the library routines GET "CLIBHDR" GET "CLIBHDR1"// often not
needed GET "DEBUG"// used when debugging (see section 8k) Note that the GET
directives to include the library routines must be in the order shown because
routines in CLIBHDR1 call other routines in CLIBHDR. Compilation stops on th
e CP/M version when afull stop '.' is found in the initial source file which wa
s specified in the original command line, or when the endI/O library containing
graphics routines DEBUGa routine useful for debugging BCPL programs pa The d
isc also contains the following example files BED.BBCPL editor source code, A
MSDOS version BED.BINBCPL editor object code, AMSDOS version BED1.Ba file cont
aining directives to compile BED DIS.Ba Z80 disassembler written in BCPL INVAD
E.Ba space invaders game, written in BCPL Loading the AMSDOS disc version
To load the compiler typeRUN"BCPL" Entering and editing BCPL of that file i
s reached. pa ce 3. USING ARNOR BCPL UNDER AMSDOS NOTE PCW8256/8512 users
should ignore this chapter. BCPL may be used from Amsdos on the CPC range, e
ither in ROM form or from a disc. If the ROM version is being used, the files B
CPL.BAS and BCPL.BIN are not required, though the library files will still be
required. NOTE Under no circumstances should the original disc be used as a
working disc for normal use. The required files should be copied onto a s progr
ams 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 program mode
) and MAXAM are especially suitable, in particular the ROM versions are recomme
nded 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 with PROT
EXT editing commands. Any source files created should preferably be saved to di
scystem disc and the original retained in a safe place, as a backup. Creating
a Working disc A new disc should be formatted and the first six files from t
he list below should be copied onto it, using 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 called BCPL.BAS and BCPL.BIN. Insta
lling the ROM versi N with a '.B' suffix to the filename. This is not essentia
l, but does help identify the type of files on a disc. Compiling a BCPL prog
ram under AMSDOS 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 differen
ces when compared with the CP/M version. The major difference is that the CP/M
version allows the inclusion of source files within other source files. The AMS
DOS version does not allow thd again before using GO. With large programs it is
quite likely that there will be insufficient memory to compile to memory. Ther
e are three courses of action that may be taken here (i) if you are using th
e 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 iis although it does allow the inclusion of stored P
ROTEXT/MAXAM 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 direc
tly to the compiler. pa To run the compiler type BCPL The screen will cl
ear and the BCPL signon message will be printed. You will then be prompted with
"Output file name". The name you type here is the name of the file into which
the program will be compiled. It is nstalled. The command ROMON7 is provided to
enable the BCPL rom (and any others) to be turned off. All roms except the AMS
DOS rom will be turned off. Note that ROMON7 will reset the computer and lose t
he contents 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 w
hen CTRL-ENTER is pressed. pa ce 4. COMPILER OPTIONS The OPTION direct
ive controls various compiler facilities. It doalso possible (unless the program
is too large) to compile directly into memory. To do this just press RETURN (o
r ENTER) in response to the question. You will then be presented with the BCPL
prompt '--'. The compiler is now ready to accept BCPL code for compilation. Th
is will almost always consist of one or more GET directives. There are two for
ms permitted (i)GET "file"to include another previously prepared file (ii)
GETto include the current text (PROTEXTes not cause any code to be generated. T
here are 5 options on the AMSDOS versions of the compiler and 3 on the CP/M ver
sion. Multiple options may be selected with a single OPTION directive by separ
ating the options with commas. The OPTION directive may appear anywhere in a p
rogram so options can be selected for any part of a program. The three optio
ns common to all versions are as follows If the option is followed by a '+' s
ign the option will be switched on and if/MAXAM) Any number of GET directive
s may be typed. After each one the compiler will perform the first part of the
compilation. To end the compilation and produce the object code type a full sto
p '.'. Note If the '.B' extensionof a source filenameis omitted from the f
ilename in a GET command when the filename contains it, Amsdos will initially p
roduce the message 'filenot found'but will continue to search for a file with t
he .B extension and compile it. pa Testing B followed by a '--', it will be s
witched 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 s
tack overflow at the entry point of each procedure. If stack checking is off th
en the stack may overflow and crash the machine. e.g. OPTION S-- B -- swi
tch break checking on or off. If checking is on then the object code produced w
ill check whether the break key (ESC or STOPCPL programs under AMSDOS If a p
rogram 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 progra
m. If no program has been compiled, or an error occurred on compilation, then
GO will simply print the message "No program". WARNING - it is possible to cor
rupt a compiled program in memory by editing the PROTEXT or MAXAM text, so afte
r editing the program should always be compile P) has been pressed at the star
t 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 chec
ked once for every ten loops or procedures. e.g. OPTION B-- OPTION B+2
5 The defaults for the above options are listing off, stack checking on, bre
ak checking on. pa The remaining two options are only available on AMSDOS v
ersions. O -- sets the code origin to the value of the nefore it can be ru
n. The compiler translates the entire program into machine code instructions. T
he machine code program is saved and can then be run. Since each BCPL line is o
nly translated once, a BCPL program runs a lot faster than a corresponding BASI
C program. The disadvantage of using a compiled language is that you have to w
ait for the program to be compiled each time before you can test it. This is no
t a problem with Arnor BCPL since it compiles extremely quickly. umber which
follows it. e.g. OPTION O #x172 will produce code which will run at addres
s 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 origin defaults to the first unused byte of memory at compile t
ime (after any BASIC program or text) and the highest byte defaults to the last
unused byte of memory at compile time (usually HIMEM). The main use for the
H and (iii) BCPL is a typeless language Most languages have a number of in
ternal variable types. BASIC usually has 6 -- integer, real, string, integer ar
ray, 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 meanin
g is attacheO options is when producing stand alone code to be run from a disc
with no BASIC support etc. These options enable all of the memory to be used fo
r a program. It should be noted however that if the Z80 stack pointer goes belo
w #x4000 or above #xC000 then the machine will probably crash due to the ROM pa
ging which uses these areas of memory. pa ce 5. SOME KEY FACTS ABOUT BCPL
(i) BCPL is a structured language A BCPL program is made up of a number o
f named procedured 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 s, each of which is quite separate. There is one special p
rocedure, called 'start', which must be present in every BCPL program. This is
where execution will begin. This procedure will call other procedures, which w
ill in turn call other procedures, and so on. You will later come across terms
such as blocks, compound commands and scope -- terms that apply to structured l
anguages in general. Examples of other structured programming languages are Pas
cal, Modula2 and C. 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 cLocomotive BASIC and Mallard BASIC are not structured languages.
(ii) BCPL is a compiled language BASIC is usually an interpreted language. W
hen a program is run, the BASIC interpreter reads each line and executes the ap
propriate machine code instructions. This decoding is done every time a line is
executed. The result is that BASIC programs run very slowly when compared wit
h a machine code program doing the same thing. A BCPL program must be submitted
to the compiler b Nontents of address (array+i). !array means the same as arra
y!0. Two dimensional array MANIFEST $( m3, n4 $) LET array VEC (m+1)*(n+
1) -- 1 LET 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 a
nd calculating the required word from the array subscripts. StringLET text
"BCPL is a typeless language" This stores the string "BCPL is a typeless lang
uage" somewhere in LET inbuff VEC 82 LET outname VEC 20 LET outbuff VEC 8
2 LET c 0 pa writes("Input file name ") reads(inname) writes("*nO
utput file name ") reads(outname) TEST findinput(inname, inbuff) THEN $
( selectinput(inbuff) TEST findoutput(outname, outbuff) THEN $(
selectoutput(outbuff) $( c rdch() UNLESS cendstr
eamch DO wrch(c) $) REPEATUNTIL c endstreamch endwrite()
$) ELSE writes("Can't open ou memory, preceded by a byte containing th
e length of the string. The value assigned to the variable 'text' is the addres
s of this length byte. Note that this is only possible because the memory addre
ss is the same length as the BCPL word (this is not a coincidence!). Note Th
ere is a very important difference between the use of single and double quotes,
and confusing these can lead to bugs that are very difficult to find, so be ca
reful! The BCPL book contains a very useful sectitput file") endread()
$) ELSE writes("Can't open input file") $) Points to note 1. The use o
f /* and */ to enclose comments. 2. The use of LET to declare the variables '
inname', 'inbuff', 'outname', 'outbuff', and 'c'. All variables must be declare
d before use, and the declarations must appear before any commands. 3. The u
se of VEC to define vectors as described above. 4. reads. Another library pro
cedure, to read a string from the keyboard into the vector gion on the pitfalls
of BCPL programming. Single quotes enclose a character and define a constant
whose value is the ASCII code of that character. Double quotes enclose a str
ing and define a constant whose value is the address of that string. pa ce 6.
TWO BCPL PROGRAMS (i) A very simple BCPL program This simply displays a m
essage on the screen. GET "CLIBHDR" LET start() BE $( writes("Hello ev
eryone!") $) Points to note 1. LET and BE are BCPL keywoven as paramete
r. 5. findoutput, findinput, readch, writech. Library procedures to open fil
es, and read and write characters. 6. TEST ... THEN ... ELSE. A conditional c
ommand. Section brackets are used to enclose the block of commands that will be
executed if the test succeeds or fails. 7. REPEATUNTIL. The preceding block
(enclosed in section brackets) is repeated until the condition becomes true (i
n this case when the end of the file is reached). pa ce 7. SUMMARY OF THE BCP
Lrds. BCPL keywords are printed in upper case throughout this manual for clarit
y. It is not necessary to type them in upper case as the compiler ignores the d
istinction. 2. start(). This is the procedure that must be present. The brac
kets indicate that 'start' is the name of a procedure. They will often contain
parameters for the procedure. 3. $( and $). These are section brackets, marki
ng the start and end of the procedure 'start'. 4. writes. This is a BCPL pro
cedure (n LANGUAGE The BCPL language is best considered in two parts. First
the standard language comprising the commands and syntax for expressions, con
stants etc. Second the input/output library routines which are mostly procedure
s written in BCPL. There are a fairly standard set of these, but this implement
ation includes additional I/O routines. Elements -----L---!-------!-------
!-------!-------!-------!-------!-------!--R (i)Variable name. Must start with
a letter and ote the brackets containing the parameter). It is not a BCPL keywo
rd and so the procedure must be defined somewhere (see below). 5. GET "CLIBH
DR". This is a directive (an instruction to the compiler) to compile the BCPL c
ode contained in the file 'CLIBHDR'. This file is a library of useful procedure
s, including one called 'writes'. (ii) A slightly more complex BCPL progra
m GET "clibhdr" /* This is a copy routine */ LET start() BE $(
LET inname VEC 20 Nmay also contain digits and full stops. All characters s
ignificant. (ii)Number. Can be decimal, octal (prefix with # or #O), hexadecima
l (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 *" the " symbol *' the ' symbol ** the * symbol *B the backspace chara
cter *C a carriage return (13) pa Note PCW users 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 with a 1/2 symb
ol. --EXTRA key and the full stop key. Section brackets and compound comma
nds Many of the commands described below apply to a single command. For exam
ple REPEAT will repeat a command until the required condition is true. Section
brackets are used to*N the newline character (in fact two characters, 13 and 10)
*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 a
nd FALSE. Pre-defined constants whose values are the bit patterns representing
true and false. Operators Addressing operators !indirection (subscrip
t), e.g. !a, a!b address of, the inverse of !, so (!a) a Arithmetic operato
rs +addition --subtraction group several commands as a 'compound command',
which is considered as a single command for these purposes. The section bracket
s are $( and $). The commands to be grouped should be enclosed between these s
ymbols. Commands Assignment is used to assign a value to a variable.
There are three basic forms of the assignment statement variable expressio
n variable!subscript expression !variable expression Conditional comman
ds IF express *multiplication /integer division REMinteger remainder pa
Relational operators equal to (or EQ) not equal to (or or NE) less than (or
LT) greater than (or GT) less than or equal to (or LE) greater 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 shift right Oth
er coion THEN command UNLESS expression DO command TEST expression THEN comman
d ELSE command Note that IF does not take an ELSE clause, TEST must be used.
The ELSE clause must be present in a TEST command. REPEAT and WHILE com
mand REPEAT command REPEATUNTIL expression command REPEATWHILE expression WHI
LE 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 mponents of expre
ssions (i)Function call (see below) (ii)Conditional expression, e.g. a -- b
, c This means evaluate a as a truth value. If true then the value of the expr
ession is b, otherwise c. (iii)TABLE, e.g. TABLE a,b,c,d This is an expression
whose value is the address in memory at which the table of values is stored. T
he values must be constants. (iv)VALOF (see below) Order of precedence of
operators (highest first) 1. Bracketed expression case i takes v
alues starting at a, incrementing by 1 until greater than b. In the second cas
e i is incremented by c. c must be a constant expression. SWITCHON SWIT
CHON expression INTO compound command The compound command consists of a sequ
ence of commands with case labels attached to commands. A case label takes the
form 'CASE constant', and causes execution to start at the following instructi
on if expression has the value constant. Execution w 9.
2. Function call 10. 3. ! as
subscript 11. & 4. , ! as indirect
ion 12. 5. %
13. EQV NEQV 6. * / REM ABS 14.
-- (conditional expression) 7. + -- 15. TABLE
8. 16. VALOF Nill continue unt
il an ENDCASE command, or to the end of the SWITCHON compound command. The labe
l '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 t
he use of SWITCHON see the 'writef' routine in CLIBHDR or ALIBHDR. Blocks an
d scope of identifiers A BCPL program is made up of one or more blocks. A blo
ck consists of a sequence of declarations (see below) fol variable expression
This defines a variable and gives it an initial value. If no initial value i
s relevant '' may be used in place of the expression. LET array VEC constan
t This creates a vector with the variable 'array' containing the address of
the vector. Procedures LET proc(p1, p2, ...) expression LET proc(p1, p
2, ...) BE command These define a procedure with parameters p1, p2,.... The f
irst form provides a function, as a value is retlowed by a sequence of command
s. To be precise a BCPL program is a single block, and any block may contain ne
sted sub-blocks. The scope of an identifier (variable or procedure) defines t
hose parts of a program where that identifier can be used. Each identifier mus
t be declared with a declaration. The scope of that identifier is that same dec
laration (thus allowing recursive definitions), and all subsequent declarations
and commands within that block. Thus iurned. The expression 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 commands RESULTIS ex
pression 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 procedu
re is invoked by a command proc(a,b,..f a routine is called which is outside
the block (and routines are usually separate blocks) then variables defined wi
thin the original block may not be used. There is an important restriction.
Variables defined within a block may not be used within a procedure defined wit
hin that block (even though they are in scope). An attempt to do so will produ
ce the error message 'dynamic free variable used'. pa produce the error messag
e 'dynamic free variable used'. p.) A function call can appear in an express
ion. pa Other declarations GLOBAL $( var1 c1 var2 c2 ... $) STATIC $
( var1val1 var2val2 ... $) Dynamic variables (those defined with LET) only
have an allocated area of memory when they are within 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 redund
ant in this implementation as it is used when separate compilation is available
. It is included for compatibility with other BCPL compilers. A global vecto
r can be defined as follows. Declare the name of the vector as a static variabl
e, then declare a dummy vector in 'start' and assign this to the static variabl
e. This ensures that the vector is in scope throughout the program. Example
STATIC $( errlev0 $) LET start() BE $( LET errvecVEC 3 errlev errvec
... MABCPLM2 //zhis will substitute a dummy routine. pa ---!-----
!-----!-------!-------!-------!-------!-------!-------!----R pn 22 tm 3 bm 11
hm 0 fm 2 fo % -----L---!-------!-------!-
------!-------!-------!-------!-------!--R Declarations The LET declaration
All variables and routines must be declared before they can be used. There a
re several forms of declaration LET NNIFEST $( 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
enable constants used by a program to be easily changed if necessary. Simu
ltaneous declarations A LET declaration may be followed by any number of AND
declarations. All these declarations are considered as a single declaration fo
r the purposes of scope of re would otherwise be an an ambiguity. Blank lines
and spaces are ignored except where they are required to separate items. PROTE
XT soft spaces, soft line feeds, and markers are ignored. pa ---!-----!-----!
-------!-------!-------!-------!-------!-------!----R ce 8
. THE ARNOR BCPL LIBRARIES The libraries supplied with the compiler provide
procedures for writing to the screen, printer or files and reading from the ke
yboard or files. Each of thidentifiers. This allows mutually recursive procedu
res LET proc1(...) BE $( ... proc2(...) ... $) AND proc2(...) BE $(
... proc1(...) ... $) pa Strings Strings are stored as follows One byt
e being the length of the string The string, one character per byte Since BC
PL works with 16 bit words a special means is needed to access the individual c
haracters of a string. This is the infixed byte operator '%'. To access the nth
character of a strinese procedures is described below. The two versions of th
e compiler need different libraries which, although they look the same from the
outside, have different internal workings determined by the different operatin
g systems. There is an additional AMSDOS library which contains routines which
are only relevant to the CPC machines. Manifest constants defined in the lib
raries These should be used where appropriate to make programs both readable
and portable. They define g use string%n To access the length of a string u
se string%0 These can be read and written to, allowing strings to be manipula
ted in any desired manner. Transfer of control FINISH This causes exe
cution of the program to stop. RETURN Control returns to the calling routi
ne. BREAK Used within a repetitive command (UNTIL, WHILE, REPEAT, REPEATU
NTIL, REPEATWHILE, or FOR) it causes execution to resume at the first command a
fter the repetitive comimplementation dependent constants. ---!-----!-----!--
-----L-------!-------!-------!-------!-------!----R namevalue meaning and use
bitsperword16BCPL word size, for program portability bytesperword2BCPL word
size, for program portability endstreamch--1hard end of file character maxint
32767the largest possible integer minint--32768the smallest possible integer n
ewlinech269the new line character, *N, which is expanded to carriage return fol
lowed by line feed printstreammand. LOOP Control passes to the point wher
e the repetitive command condition is tested. For a FOR command control passes
to the point where the control variable is incremented. ENDCASE Control p
asses to the command after the end of the SWITCHIN compound command. GOTO ex
pression Rarely required in BCPL, the GOTO command evaluates the expression
and jumps to the address obtained. The expression is usually a label which is d
efined by being at1stream 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 calltached to a command, e.g.labelname command pa Comments and lay
out of programs There are two ways of putting comments within BCPL programs.
// causes the remainder of the line to be ignored /* causes all text to be i
gnored until the compiler reaches the symbol */ Additionally a in column 1
causes the whole line to be ignored. Thus PROTEXT stored commands are ignored.
Multiple command lines are allowed. Commands must be separated by a semicolo
n () if the Ped as routines, whether or not they return a value. Only those pr
ocedures that return a value may be called as a function. Note that several pr
ocedures return values in a supplied vector, but these will be listed as 'nothi
ng' since there is no function value returned. Locationthis indicates where th
e procedure is defined. The location for the CP/M version is given first, follo
wed by the location for the AMSDOS version. Most of the library procedures ara
ce of the % character. The conversion characters available are listed below. S
ome 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 t
he maximum width of 15). -------------- !-----L-!-------!-------!-------!----
---!-------!----R S -- print a string C -- print a character Xn -- print ah
ex value. If the field width is too small, only the least significant dige writ
ten 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 NEWL
INE() EffectStarts a new line in the currently selected output. The exact ef
fect in Arnor BCPL is to output a carriage return (13) followed by a line feed
(10). ReturnsNothing LocationCLIBHDR, ALIBHDR NEWPAGits will be outp
ut. On -- print an octal value. If the field width is too small, only the leas
t significant digits will be output. In --print an integer in decimal. If the
field width is too small, the integer will be output using the least number of
spaces. N -- print an integer in decimal with no leading spaces % -- print
the % character $ -- skip a parameter -------------- L-------!-------!----
---!-------!-------!-------!----R ReturnsNothing LocaE() EffectStarts a
new page in the currently selected output. The exact effect in Arnor BCPL is t
o output the form feed character (12). ReturnsNothing LocationCLIBHDR1, A
LIBHDR1 WRCH(char) EffectThe character is sent to the currently selected
output stream. Wrch('*N') has the same effect as newline(), i.e. carriage ret
urn and line feed are output. ReturnsTRUE if successful, FALSE if an error oc
curred. LocationCLIBHDR, ALIBHDR Exampleswrch(char) wrtionCLIBHDR, ALIBHD
R Example LET convert 100 writef("%N in hexadecimal is %X4*N", convert,
convert) would print 100 in hexadecimal is 0064 pa WRITEHEX(integer,wi
dth) EffectThe integer is output as an unsigned hexadecimal integer, right j
ustified in a field of the specified width, with leading zeros. If this width i
s insufficient then the least significant digits are output. ReturnsNothing
LocationCLIBHDR, ALIBHDR Examplewritehch('A') WRITED(integer,width)
EffectThe integer is output as a signed decimal integer, right justified in
a field of the specified width. If this width is insufficient then it will be o
utput in the minimum width. The number output will be in the range (--32768,32
767). ReturnsNothing LocationCLIBHDR, ALIBHDR pa WRITEF(format,a,b,c,d,e
,f,g,h,i,j,k) EffectWRITEF allows characters to be printed out according to
certain formats. The procedure takes one sex(number,4) WRITEN(integer) E
ffectThe integer is output in decimal in the minimum width. This is the same as
WRITED(integer,0). ReturnsNothing LocationCLIBHDR, ALIBHDR WRITEOCT(
integer,width) EffectThe integer is output as an unsigned octal integer, rig
ht justified in a field of the specified width, with leading zeros. If this wid
th is insufficient then the least significant digits are output. ReturnsNoth
ing LocationCLIBHDR, ALIBHDR Examplewritring parameter which gives the te
mplate 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 provi
de a BCPL procedure with all of its formal parameters. The template parameter
is a string which may include the % character followed by a conversion characte
r(s). The template string is printed out with the other parameters inserted in
to it in pl Pteoct(number,6) WRITES(string) EffectThe string is output.
ReturnsNothing LocationCLIBHDR, ALIBHDR Examplewrites("Enter filename
") pa WRITET(string,width) EffectThe string is output in the specified fi
eld width. If the width is longer than the string then spaces are output at th
e right. If the width is shorter than the string, the whole string is printed.
ReturnsNothing LocationCLIBHDR1, ALIBHDR1 WRITEU(unsigned,width) E
ffectThe first pahis routine should not be called twice without an intervening
call to RDCH, the second call will have no effect. Characters can only be retu
rned to the current stream if RDCH is used, the facility is not provided at the
primitive I/O routine level (that is RDVDU and READCH). ReturnsNothing L
ocationCLIBHDR, ALIBHDR Examplech rdch() REPEATUNTIL ch13 unrdch() pa (
c) Stream Selection Routines INPUT() EffectThis will return a value repr
esentrameter is treated as an unsigned integer and output in decimal, right jus
tified in the specified width. If the width is too small the number is printed
in the minimum width. The number output will be in the range (0,65535). Ret
urnsNothing LocationCLIBHDR1, ALIBHDR1 pa (b) Input Routines RDCH()
EffectReads a character from the current input stream. ReturnsThe character
read. LocationCLIBHDR, ALIBHDR READN() EffectReads a decimal integeri
ng the current input stream. Zero means the keyboard is the current input stre
am, any other value is the address of the buffer associated with the file from
which input is being taken. ReturnsThe current input stream LocationCLIBH
DR, ALIBHDR OUTPUT() EffectThis will return a value representing the cur
rent output stream. Zero means the VDU is the current stream, one means the pr
inter is the current stream, any other value is the address from the current i
nput stream. Leading spaces are ignored. ReturnsThe number read. Location
CLIBHDR, ALIBHDR READS(string) EffectA string is read from the current i
nput stream. The parameter is a vector in which the string will be stored. The
string must be terminated by a carriage return. The DEL, or DEL key may be use
d 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 of the buffer associated
with the file to which output is being sent. ReturnsThe current output strea
m LocationCLIBHDR, ALIBHDR SELECTINPUT(stream) EffectThis is used to
change the currently selected input stream (i.e. that used by rdch). A stream v
alue 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 FESC or STOP is pressed when the c
ursor is at the start of the string, a string of zero length is returned. The
string is limited to a length of 255 bytes, so the vector string should be 128
words in length. ReturnsFALSE if ESC or STOP pressed, otherwise TRUE Loca
tionCLIBHDR, ALIBHDR ExampleLET input VEC 128 UNLESS reads(input) DO error(
"Escape") pa STRTONUM(string,base) EffectThis function takes a string as
its first parameter and the base of the resuINDINPUT. ReturnsNothing Loca
tionCLIBHDR, ALIBHDR pa SELECTOUTPUT(stream) EffectThis is used to change
the currently selected output stream (i.e. that used by wrch, writef etc.). A
stream value of zero selects the VDU, a value of one selects the printer. Any
other value must be the address of the buffer associated with a file, and cause
s output to be sent to that file. The file must have been previously opened us
ing FINDOUTPUT. ReturnsNothing Locatlt as its second. It converts the str
ing to a number in that base and returns it as the result. ReturnsThe number
obtained by the conversion LocationCLIBHDR, ALIBHDR ExampleA READX functi
on to input a hexadecimal number is easily written LET readx() VALOF $(
LET string VEC 128 reads(string) RESULTIS st
rtonum(string,16) $) UNRDCH() EffectPuts back the last character read f
rom the currently selected stream. T PionCLIBHDR, ALIBHDR Examplesselectout
put(outfilebuf) selectoutput(printstream) (d) File I/O Routines E
NDREAD() EffectThe currently selected input stream is closed. ReturnsTRUE
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 to a file,
as it causes the last section of data to bndinput(filename,buffer) THEN $(
LET char selectinput(buffer) char rdch() UNTIL char softeofch LOGO
R char endstreamch DO $( wrch(char) char rdch() $) endread(buffer)
selectinput(vdustream) $) ELSE writef("No messages*N") This will ask for
a file name and then, if that file exists, will print out the contents of it.
-------------- L-------!-------!-------!-------!-------!-------!----R ---!----
-!-----!-------!-------!-------!-------e written to the disc. ReturnsTRUE if
the file was closed successfully, else FALSE. LocationCLIBHDR, ALIBHDR pa
FINDINPUT(filename,buffer) EffectTo open an input file. The first parameter
is a string giving the name of the file. The second parameter is a vector whic
h will be used for the file buffer. This vector should 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 !-------!-------!----R pa (e) The Primi
tive I/O Operations The library contains primitive routines for reading/writi
ng to files, reading/writing to the VDU, and writing to the printer. The highe
r level RDCH and WRCH routines switch between these routines when called upon t
o do so by SELECTINPUT or SELECTOUTPUT. It is quite possible to use the primiti
ve routines separately from RDCH/WRCH and so read/write files and the screen/ke
yboard at the same time without using SELEspecifier. ReturnsIf the file was
opened successfully, the value 'TRUE' is returned, otherwise 'FALSE'. Locati
onCLIBHDR, ALIBHDR ExampleLET inbuf VEC 82 TEST findinput("Anames.dta",inbu
f) THEN selectinput(inbuf) ELSE error("Cannot open file") FINDOUTPUT(fil
ename,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 will be use
d for the file buffer. This vector sCTINPUT or SELECTOUTPUT. These routines are
RDVDU, WRVDU, READCH and WRITECH. -------------- L-------!-------!-------!-
------!-------!-------!----R CLOSEIN(buffer) EffectThe input file asso
ciated with the buffer is closed. ReturnsTRUE if the file was closed successf
ully, FALSE if not. LocationCLIBHDR, ALIBHDR CLOSEOUT(buffer) Effect
The output file associated with the buffer is closed. It is essential that eith
er this routine or ENDWRITE is ushould be 82 words long under CP/M and 1024 wo
rds long under AMSDOS. The filename must be a valid CP/M or AMSDOS filename, an
d may include a drive specifier. ReturnsIf the file was opened successfully,
the value 'TRUE' is returned, otherwise 'FALSE'. LocationCLIBHDR, ALIBHDR
ExampleLET outbuf VEC 82 TEST findoutput("Anames.dta",outbuf) THEN selecto
utput(outbuf) ELSE error("Cannot open file") pa REWIND() EffectThe curre
nt input stream is rewound. If the ced after writing to a file, as it causes th
e last section of data to be written to the disc. ReturnsTRUE if the file was
closed successfully, else FALSE. LocationCLIBHDR, ALIBHDR FLUSH() Ef
fectEmpties the keyboard buffer. ReturnsNothing LocationCLIBHDR, ALIBHDR
pa PRBUSY() EffectFinds out if the printer is busy. ReturnsTRUE if busy
, FALSE if not LocationCLIBHDR, ALIBHDR ExampleIF prbusy() THEN writes("Pu
t the printer on line*N") WHILE prbusy() LOOPurrent stream is the keyboard thi
s has no effect, if a file the file pointer is set to the start of the file, so
the next input will be taken from the start. REWIND is not provided in the AM
SDOS version. ReturnsNothing LocationCLIBHDR ---!-----!-----!-------!
-------!-------!-------!-------!-------!----R Example of the use of file I/O
routines LET buffer VEC 1024 LET filename VEC 20 writef("Please enter the
message file name ") reads(filename) TEST fi P PRCH(char) EffectSend
s a character to the printer. If the printer is busy then PRCH waits until the
character can be sent. PRBUSY should be used to test for the printer being bus
y. This routine is called by WRCH if the printer is the selected output stream.
ReturnsTRUE LocationCLIBHDR, ALIBHDR RDTEST() EffectFinds out if
a key has been pressed. ReturnsTRUE if a key has been pressed, FALSE if not.
LocationCLIBHDR, ALIBHDR ExampleWHILE rdtest() arraysize// illegal in BCPL
RESULTIS function(v,arraysize) $) Returnsthe value returned by the fun
ction LocationPre-defined, pre-defined BYTEMOVE(start,dest,size) Effe
ctThis 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 pa
rameter then they should be multiplied by two as BCPL works with word addresses
. The old and new blocks may overlap. ReturnsDO rdch() RDVDU() Effec
tReads a character from the keyboard, whatever the currently selected input str
eam. This routine is called by RDCH if the keyboard is the selected input stre
am. RDVDU is pre-defined in the CP/M compiler so that it can buffer characters
to allow for break testing without losing characters. ReturnsThe character r
ead. LocationPre-defined in CP/M compiler, ALIBHDR pa READCH(buffer) E
ffectReads a character from a file, whNothing LocationCLIBHDR1, ALIBHDR1 E
xamplebytemove(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 su
pplied as values are returned. The values returned by the machine code routine
are passed back in the variables. ReturnsNothing LocationCLIBHDR1, ALIBHD
R1 pa CAPITALCH(char) EffectIf the character is a lower case letter the u
pper case equivalent is returnatever the currently selected input stream. The
buffer is not needed under AMSDOS. This routine is called by RDCH if a file is
the selected input stream. ReturnsThe character read. LocationCLIBHDR, AL
IBHDR REWINDIN(buffer) EffectThe file pointer for the specified file is
set to the start of the file. This routine is called by REWIND if a file is th
e selected input stream. REWINDIN is not provided in the AMSDOS version. Ret
urnsNothing LocationCLIBHDR ed, otherwise the original character is retur
ned. ReturnsThe converted character LocationCLIBHDR, ALIBHDR COMPCH(c
har1,char2) EffectCompares two characters, ignoring the distinction between
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 distinct
ion between upper and lo WRITECH(char,buffer) EffectWrites a character to a
file, whatever the currently selected output stream. 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 Location
CLIBHDR, ALIBHDR Exampleswritech('$',outfilebuf)// CP/M version writech('$')
// AMSDOS version WRVDU(char) EffectWrites a character to the screen, wh
atever the currentwer case. The result is zero if the strings are the same, po
sitive if string1 follows string2 alphabetically, and negative if string2 foll
ows string1. ReturnsThe result of the comparison, as above LocationCLIBHDR
1, ALIBHDR1 DECVAL(digit) EffectThis returns the decimal value of a hexa
decimal digit. ReturnsThe decimal value of the digit LocationCLIBHDR, ALIB
HDR Exampledecval('A')// returns 10 pa DELETE(filename,buffer) EffectT
he first ply selected output stream. This routine is called by WRCH if the scre
en is the selected output stream. ReturnsTRUE LocationCLIBHDR, ALIBHDR p
a (f) Miscellaneous Routines APTOVEC(function,arraysize) EffectThis wil
l create a dynamic array of size arraysize and then pass the address of this ar
ray along with its size to the function. It will return the result of the func
tion and is equivalent to LET aptovec(function,arraysize) VALOF $( LET v
VEC N arameter is a string specifying the name of a file. This fil
e is then deleted from the disc. The CP/M version requires an 82 word buffer, t
he AMSDOS version requires no buffer. ReturnsTRUE if the operation succeeded
, FALSE if a disc error occurred. LocationCLIBHDR1, ALIBHDR1 Examplesdele
te("tempfile",buffer)// CP/M version delete("tempfile")// AMSDOS version L
EVEL(array) EffectThis returns the state of the BCPL program in the array gi
ven. The array musidentifying the operating system and computer on which the pr
ogram is being executed. The 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 Locati
onCLIBHDR1, ALIBHDR1 pa (g) Routines provided in the CP/M libraries only
BDOSA(c,de) EffectThe BDOS is called with the parameters passed in the C a
nd DE registers. The addresses of the variables must be passed in order that re
sults can t be at least 4 words in size. This routine is used with LONGJUMP to
allow jumps between procedures etc. See section 9 for more details. Returns
Nothing LocationPre-defined, pre-defined LONGJUMP(address,array) Effe
ctThis will set the state of the program according to the array given. The arra
y must have been set previously by the use of LEVEL. Once the state has been s
et it will jump to address. See section 9 for more details. Returnsbe return
ed. The returned values of the A and HL registers from the BDOS are returned i
n the variables c and de respectively. ReturnsNothing LocationCLIBHDR onl
y BDOSB(c,de) EffectThis is similar to BDOSA except that results are not
returned. The values of c and de are passed, not their addresses. ReturnsN
othing LocationCLIBHDR only BIOS(n,a) EffectBIOS routine n is called
and the value returned by the BIOS in A is returned in thNothing LocationPre
-defined, pre-defined pa RANDOM() EffectThis function returns a sequence
of pseudo-random numbers. The sequence will always be the same unless the seed
is initialised first. The seed is stored in a static variable called 'randomse
ed', and this should be initialised to different values to produce different s
equences. The sequence runs through all possible 2 byte values. ReturnsA ran
domly generated integer. LocationCLIBHDR1, Ae variable a. The address of a m
ust be passed. This routine is used by PRBUSY. ReturnsNothing LocationCLIB
HDR only FIRMWARE(address,af,bc,de,hl,ix) EffectOn CP/M Plus, calls the
firmware ROM (CPC6128 only) or the extended firmware jumpblock. The values retu
rned by the firmware routine are passed back in the variables. All parameters
MUST be supplied. ReturnsNothing LocationCLIBHDR1 only pa TAIL(string)
EffectTakes a vector as parameter aLIBHDR1 RENAME(filename1,filename2,b
uffer) EffectThe first parameter is a string specifying the name of a file.
The file is renamed to the second name. The CP/M version requires an 82 word bu
ffer, the AMSDOS version requires no buffer. ReturnsTRUE if the operation su
cceeded, FALSE if a disc error occurred. LocationCLIBHDR1, ALIBHDR1 Examp
les rename("oldname","newname",buffer) // CP/M version rename("oldname","newna
me") //AMSDOS version STOP(returncnd stores the CP/M command tail (
from #x80) in the vector as a string. This allows BCPL programs to access param
eters typed on the CP/M command line. The vector should be 64 words long. R
eturnsNothing LocationCLIBHDR1 only (h) Routines provided in the AMSDO
S libraries only EXTERNAL(command,nparms,parmblock) EffectThis allows a
BCPL program to access an AMSDOS external command. It is used by DELETE and REN
AME. The parameters are passed in ode) EffectExecution of the program termin
ates. Under CP/M Plus the supplied parameter is used to set the program return
code. By convention a return code between #xFF00 and #xFFFE is an error code.
The return code is ignored under CP/M 2.2 and AMSDOS. ReturnsNothing Loca
tionCLIBHDR1, ALIBHDR1 pa UPPERCASE(char) EffectThis is the same as CAPIT
ALCH. ReturnsThe converted character LocationCLIBHDR, ALIBHDR VERSION
() EffectReturns a number !N!!!!!!!!!the form required by the firmware for
calling an external command. See the DELETE and RENAME routines in ALIBHDR1 fo
r details of how to use this routine. ReturnsNothing LocationALIBHDR1 onl
y TIME() EffectReturns the time in units of 1/300 second, as maintained
by the AMSDOS firmware. ReturnsThe time LocationALIBHDR1 only pa (i) Ro
utines provided only for compatibility -------!-------!-------!-------!------
-!-------!-------!-------!----R T pen, plot, plotr, release, rsx, sound, speed
ink, speedkey, stream, strswap, tag, tagoff, transparent, window, xpos, ypos
(k) DEBUG There is one further library routine provided, which is useful
when debugging programs. The routine, DEBUG, is supplied in a separate file,
also called 'DEBUG', and provides various options for displaying variable names
and contents. These options may be changed with later releases of BCPL and so
to ensure accuracy, exact details are only hese are routines that may be used in
existing BCPL programs, but the infixed byte operator now makes their use unne
cessary. -------------- L-------!-------!-------!-------!-------!-------!----R
GETBYTE(string,pos) EffectGets a character from a string. This routine is
included for compatibility with older BCPL systems and would usually be replac
ed by string%pos ReturnsThe character from the string LocationCLIBHDR1, A
LIBHDR1 PACKSTRING(vector,string) EffectPacks given in the file. To use
DEBUG, put the directive 'GET "DEBUG"' near the start of the program -- so it
is compiled after the library routines and before the first time DEBUG is calle
d. It is possible to compile the program without DEBUG being called, but witho
ut the need to remove the calls themselves. Simply replace 'GET"DEBUG"' by 'LET
debug() BE RETURN'. This will substitute a dummy routine. pa /!his will su
bstitute a dummy routine. pa a vector containing one character per word in
to a string containing two characters per word. This routine is included for c
ompatibility with older BCPL systems. ReturnsNothing LocationCLIBHDR1, AL
IBHDR1 PUTBYTE(string,pos,char) EffectPuts a character into a string. Th
is routine is included for compatibility with older BCPL systems, and would us
ually be replaced by string%pos char ReturnsNothing LocationCLIBHDR1, AL
IBHDR1 UNPACKSTRINBCPLM3 YYSe Unexpected node in expression
Declarati---!-----!-----!-------!-------!-------!-------!-------!-------
!----R pn 49 tm 3 bm 11 hm 0 fm 2 fo % c
e 9. DIFFERENCES FROM STANDARD BCPL The INLINE command This is an extens
ion to the normal BCPL command set and allows Z80 code to be incorporated direc
tly into a BCPL program. The inline command is followed by G(string,vector)
EffectUnpacks a string containing two characters per word into a vector contain
ing one character per word. This routine is included for compatibility with old
er BCPL systems. ReturnsNothing LocationCLIBHDR1, ALIBHDR1 pa (j) AMSDO
S Graphics and other routines ---!-----!-----!-------!-------!-------!-------
!-------!-------!----R These routines are included in the file "AMSDOS", and ar
e relevant only to CPC machines. They provide the means for a BCa list of const
ants separated by commas. The low byte of these constants is taken and inserted
directly into the object code. This allows procedures to call firmware routine
s etc. and has been used in the LIBHDR files. In order to use this facility pr
operly you must be aware of the way that the compiler stores variables and regi
sters which must be left intact. See appendix 1 (technical information). e.g
. INLINE 205,#x5A,#xBB will call the AMSDOS print character rPL program to
access the computer's graphics and other firmware facilities, and in most cases
correspond directly to a Locomotive BASIC command. For details of how to use t
hese routines consult the file AMSDOS, which lists the equivalent BASIC routine
s. List of routines border, clg, cls, cursdi, cursen, cursoff, curson, dra
w, drawr, ent, env, frame, gpen, gpaper, gtest, gtestr, gwindow, gwrch, ink, in
key, inkmode, keyvalid, locate, mode, move, mover, opaque, origin, paper, "N""
"""""""outine -- TXT OUTPUT. The infixed byte operator % This is an exte
nsion to standard BCPL which is supported. The infixed byte operator will extra
ct a particular byte from a vector. In use this operator is very similar to the
! operator except that it cannot be used as a unary operator and that the seco
nd operand always gives the byte offset from the first operator. The main use o
f this operator is with strings to extract a particular character from the str
ing. e.g. dress to that global variable in your program. This means that the
procedure can then be assigned to. LEVEL and LONGJU
MP LEVEL works in a slightly different way from most BCPL implementations. I
t usually returns a single 1 word value representing the state of the BCPL stac
k at a point in the program. Due to the limitations of the Z80 in stack address
ing it is not possible to pack the required information into one word with LET
v VEC 19 FOR a 1 TO 39 DO v%a ' ' v%0 39 // set the st
ring length byte will create a string containing 39 spaces. Undefined in
itial values The initial value of a simple variable declared in a LET command
may be undefined. This is done by using a question mark (). This is used to a
id readability of programs by indicating that there is no relevant initial valu
e of a variable. FINDINPUT and FINDOUTPUT The procedures for opening thi
s implementation of BCPL. Instead the LEVEL procedure returns its result in a
4 word vector passed to the procedure. See appendix 1 (techincal information) f
or exact details. e.g. LET errorlevel VEC 3 level(errorlevel) Exten
sions not supported The following features, which are mentioned in the BCPL b
ook, are not supported separate compilation, floating point extension, the fie
ld selector extension. pa ce A1. TECHNICAL INFORMATION The compiler a
ll files are slightly different from standard BCPL in that a buffer must be spe
cified as a parameter, instead of them returning a stream identifier. pa Glob
al Variables When a procedure is defined in standard BCPL the compiler chec
ks to see if a GLOBAL variable with the same name is in scope. If it is in sco
pe, then that variable will be initialised with the address of the procedure. I
f there is no such variable in scope then a new STATIC variable will be created
and ocates dynamic storage from the hardware stack for ordinary local variable
s. These are accessed 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 reverse order, coming down in memory. Immediately below the first
formal parameter is the return address from the procedure which called the cu
rrently active procedure. Below this is the old IX register from the calling pr
ocedure andthat variable initialised with the address of the procedure. When a
procedure call is made the code looks up the address in the relevant variable a
nd calls that address. The reason for this indirect calling is to enable easy c
ommunication between separately compiled units. As the ARNOR compiler does not
allow separate compilation there is no need for this indirect approach and so
a call is made directly to the address of the procedure. This also means that t
he number a below this a value which represents the state of the vector space.
Local variables now come down from this space in the order that they are decla
red and SP will point to the low byte of the last local variable currently in s
cope. When a new local variable is declared, its initial value is calculated a
nd then pushed onto 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 sp
ace is pushed onto the sssociated with a GLOBAL variable in its definition is me
aningless as there is no actual GLOBAL vector. The index number is, however, r
etained for compatability with other compilers. The outcome of all this is that
although it is possible to read the address of a procedure, and so pass proced
ures as parameters, it is not possible to assign to a procedure. You can, howev
er, set up a global variable with a different name from a procedure and then as
sign the procedure's ad #N#########tack. e.g. for the following procedure
LET x(a,b) BE $( LET z 0
... $) at the point marked by the dots th
e stack looks like this b IX + 127 a
IX + 125 ret addr IX + 123 old IX
IX + 121 vec ptr IX + 119 z IX + 11
7, SP points here When local variables are undeclared (i.e. a of computation.
pa The 14th and 15th bytes of any object program produced always point to th
e base of the current vector allocation. The 16th and 17th bytes always point t
o the top of the current vector allocation. All of the vector space required fo
r any particular procedure activation is allocated on entry to that procedure a
nd de-allocated on exit. When a vector is declared within a procedure it is giv
en a chunk of memory within this allocation. The compiler is a two pat the e
nd of their block), the stack pointer is moved up to release the space used. p
a Static variables are allocated their space at compile time. They are embedde
d in the code and are re-initialised each time the program is run. The stack is
placed at the top of the available memory. For CP/M versions this is calculate
d from the start of the BDOS. In AMSDOS versions, static variable space is det
ermined at compile time, possibly using the H option. As already mentioned vect
or spacss compiler. The first pass reads the source text of the program, does s
yntax analysis of it and produces an applicative expression tree which represen
ts the program. The second pass goes over this tree and produces code for it. T
he second pass is in fact done twice the first time no code is produced but the
program is checked for any semantic errors such as undefined identifiers or i
llegal assignments. If this pass runs smoothly with no errors being picked up t
hen the second passe is taken from the area of memory directly after the progra
m. The start of a program is #x100 for CP/M versions and defaults to the first
usable byte of memory for AMSDOS. This may be changed by use of the O option.
This leaves a memory map looking like Hardware stack
------------------ SP
empty
------------------ will be repeated, this time generating code. pa ce
A2. SUMMARY AND INDEX OF LIBRARY ROUTINES The letter at the start of each
line in the following list of library routines indicates the degree of portab
ility of the routines. Full details are given in Appendix 3. Note A means AMSD
OS 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 sligh
t difference in the way it is use Vectors
------------------ Program and static var
iables ------------------ runtime routines
------------------ program start
------------------ 0 When writing a
ny inline code the user must ensure that the IX register and the SP are restore
d to their former positions when the d. F indicates frequently found similar r
outines in BCPL systems All unmarked routines are Arnor BCPL specific. --!
---!------------!----!-------!-------!-------!-------!-------!---------R name p
gdescription Saptovec 40call a routine with a dynamically allocated vector C
bdosa 45call the BDOS, returning values Cbdosb 45call the BDOS, not returning v
alues Cbios 45call the BIOS, returning a value bytemove 40move a block of memo
ry using byte addresses Fcall 40call acode finishes. Failure to do this will al
most certainly cause the program to crash. The Amstrad also requires that the a
lternate register set is not used. The LEVEL library procedure stores inform
ation 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 pointer word 1 -- The
vector top pointer word 2 -- IX word 3 -- SP When LONGJUMP is used this inf
ormation is used to restore the state $N$$$$$$$$$ machine code routine Fcapit
alch 41convert character from lower to upper case closein 37close an input file
closeout 37close an output file Fcompch 41compare two characters Fcompstring
41compare two strings debug 48debugging aid decval 41convert a hexadecimal di
git to decimal Fdelete 42delete a file Sendread34close the current input strea
m Sendwrite 34close the current output stream Aexternal 46call an external com
mand Dfindinput 35open an input fi decimal number wrvdu 39write character to t
he screen pa ---!-----!-----!-------!-------!-------!-------!-------!-------!-
---R ce A3. PORTABILITY Most of the above I/O routines will be found in vi
rtually all versions 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 t
hese less standard routines should be used as little as possible. Routin
es that are part of the standard BCle Dfindoutput 36open an output file Cfirmw
are 45call the firmware (CP/M Plus only) flush 37flush the keyboard buffer Sge
tbyte 47get a byte from a string Sinput 33return the currently selected output
stream Dlevel 42get pointer to current environment Dlongjump 42jump to outer l
evel of program Snewline 27start a new line in the output Snewpage 27start a n
ew page in the output Soutput 33return the currently selected output stream pa
Spackstring 47coPL I/O library (those marked 'd' are used in a slightly d
ifferent way in Arnor BCPL) aptovec, endread, endwrite, findinput(d), findout
put(d), getbyte, input, level(d), longjump(d), newline, newpage, output, packst
ring, putbyte, rdch, readn, reads, rewind, selectinput, selectoutput, stop, un
packstring, unrdch, wrch, writed, writef, writehex, writen, writeoct, writes.
Routines that are not entirely standard (though many BCPL systems have some
thing similar) call, capimpact a string prbusy 38see if the printer is busy
prch 38send a character to the printer Sputbyte 47put a byte into a string Fr
andom 42return a pseudo-random number Srdch 31read 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 from disc Frename 42rename a file
CSrewind talch, compch, compstring, delete, random, rename, time, uppercase, w
ritet, writeu. Routines specific to Arnor BCPL bdosa, bdosb, bios, bytem
ove, closein, closeout, debug, decval, external, firmware, flush, prbusy, prch,
rdtest, rdvdu, readch, readsector, rewindin, setfcb, strtonum, tail, version,
writech, writesector, wrvdu, plus all the routines in the file "AMSDOS", which
are also CPC machine specific as well. pa A4. E
RROR MES36rewind the input stream Crewindin 39rewind an input file Sselectinpu
t 33change the input stream Sselectoutput 34change the output stream Csetfcb-s
et up a file control block Sstop 43stop a program and set return code strtonum
32convert a string to a decimal number Ctail 46returns the CP/M command tail a
s a string AFtime 46return the time Sunpackstring47expand a string into a vect
or Sunrdch 32put back the last read character Fuppercase 44same as capitaSAGES
There are three main sets of error messages which can occur. These are fa
tal errors which cause the compiler to abort immediately, phase 1 errors which
will stop the compilation after phase 1 and finally phase 2 errors which will s
top compilation at the end of the first run of phase 2. Most error messages gi
ve a line number, for example "Expecting command near line 27". The word "near"
is used because the compiler gives the line number at which it discovered the
probllch version 44return the operating system and computer Swrch 27write a ch
aracter writech 39write a character to the output file Swrited 27write a decim
al number Swritef 28formatted write Swritehex 29write a hexadecimal number Sw
riten 29write a decimal number in minimum width Swriteoct 29write an octal numb
er Swrites 29write a string Cwritesector-write a 128 byte sector to disc Fwri
tet 30write a string and pad with spaces Fwriteu 30write an unsigned %N%%%%%%%
%%em, and this is not necessarily the same line that needs correcting. The line
number refers to the position of the line within the file, and not to the tot
al 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 somet
imes be solved by re-using local variable names. Out of symbol space Ver
y similar to the above except that the program may not be too big. Try compilin
g it to disc error message. Syntax errors are reported as occurring near a cer
tain line. This is the line within a particular file. If the compiler listing i
s switched off when the error occurs then a buffer, holding the last few lines
of text read from the source code, will be displayed. Bad expression Th
e expression being examined was faulty in some way. Maybe a command name was us
ed as an identifier. Bad vector definition A vector definition was bad i
n some way. In particuwhich allows twice as much symbol space. If you are compi
ling a piece of text in memory from PROTEXT or MAXAM then saving the text to di
sc, clearing the memory and then re- compiling may solve this problem. I/O
error An error has occurred when writing to the output file. May mean that t
he disc is full. Can't open input file The filename given in a GET direc
tive could not be found on the disc. Can't open output file The compile
r was trying to open a file to outlar only one vector may be declared in any LE
T command (although simultaneous definitions are allowed). Bad procedure d
efinition A procedure definition was badly made. May have been some other fo
rm of definition which went wrong. Bad FOR loop The FOR loop was badly f
ormed in some way. need or in constant definition Constant, Global and
Static definitions require both and between the identifier and the constant
expression. One or the other is missput the compiled code to, but for some rea
son 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 proce
dure called START. The program submitted did not have this procedure. Bad
GET Due to the limitations of AMSDOS only oing Missing $) A $) was ex
pected but not found. Check the number of opening and closing section brackets
in the program. pa Missing $( A compound statement was needed but the openi
ng $( was not found. In particular all SWITCHON statements must be compound.
Missing ) A closing bracket 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 ne file can be open
ed for input at any one time. A file was opened which contained a GET directiv
e. Will also occur if a piece of stored PROTEXT/MAXAM text attempts to GET itse
lf. Non-ASCII file The compiler was instructed to open a file but that f
ile did not contain ASCII text which is required for the compiler. Users of CP
C versions of PROTEXT should use program mode, which will save the file in ASCI
I format. File intact This occurs on CP/M versions when caused by omitti
ng the space after a section bracket. Expecting command A command was e
xpected but one was not found. This can be caused by, for example, omitting the
colon in an assignment command, or by a declaration appearing after a command.
Expecting number A number was expected but not found. Usually following
a #. Expecting , The compiler was expecting a comma (,) but did not fin
d one. Occurs in a conditional expression. ELSE expected The ELSE pathe
destination 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 is invalid in some way e.g. has an extension of more than 3 letters then
this error will be given. Bad DESTINATION name As above. pa (ii) Syn
tax Errors 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 s
eemto be an odd &N&&&&&&&&&rt in a TEST statement is not optional and was not
present in this case. INTO expected The control expression of a SWTICHON
command must be followed by the keyword INTO. In this case it was not. pa ex
pected A colon is expected after a case label or DEFAULT but the compiler di
d not find one. Expecting identifier The compiler was expecting an ident
ifier e.g. after LET but did not find one. String too long BCPL constan
t strings can only be 255 characters lor procedure. CASE/DEFAULT found outs
ide SWITCHON CASE or DEFAULT statements are only valid inside a SWITCHON sta
tement. Undefined identifier A variable was used which had not been defi
ned or was not in scope 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 vari
able will be initialised to the value of the label, it must be a GLOBAL or STAT
IC. If no variable of the same name is in scope ng. Bad character The c
haracter read was illegal in the present context. e.g. it could have been a in
stead of /* Bad character constant A character constant was badly formed
, usually caused by a carriage return following an asterisk. Bad option li
ne 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 definitio
ns Self-explanatory. The only undefined values allthen one will be created.
Need constant expression A constant expression was required but not found
. Examples of constants being required are the INLINE statement, declarations a
nd CASE labels. (iv) Internal compiler errors There is a fourth
type of error but you should never see these. These are internal compiler erro
rs and indicate possible bugs in the compiler. Please report any incidence of
one of these errors to Arnor. Error in translation nodowed are the i
nitialisation values of simple variables in a LET command. anywhere else is il
legal. pa (iii) Semantic Errors The rest of the errors are semantic error
s which occur during phase two of the compiler. These are usually due to the us
e of an invalid identifier name or a badly constructed loop. Expression/id
mismatch The number of left and right hand sides in a multiple assignment o
r declaration was not equal. Invalid assignment You have attempe
Unexpected node in expression Declaration error Unexpected
node in expression Declaraticonstants being required are the INLINE st
atement, declarations and CASE labels. (iv) Internal compiler errors
There is a fourth type of error but you should never see these. These are
internal compiler errors and indicate possible bugs in the compiler. Please r
eport any incidence of one of these errors to Arnor. Error in transla
tion nodted to assign to something which is not assignable. e.g. a constant or
procedure. RESULTIS outside a VALOF A RESULTIS command was found outside
a VALOF block. LOOP found outside loop A LOOP command is only legal ins
ide one of the looping constructs. BREAK found outside loop A BREAK comm
and is only legal inside one of the looping constructs. RETURN found outsid
e PROC/FUNC A RETURN command is only legal within a procedure or function bo
dy. ENDCASE outside a SWITCHON An ENDCASE statement was found outside th
e body of a SWITCHON command. VALOF must contain RESULTIS A VALOF expre
ssion must contain at least one RESULTIS command pa Invalid application of LV
The LV or operator was used in an incorrect context i.e. on a constant. LV
is 'left value' and means the evaluation of an expression to obtain an address.
Dynamic free variable used A variable was used in an embedded procedure
which had been declared in an oute 'N''''''''' (H h (H h 'G f 'F g 'F f (H h
(H i (H h 'G g &G g (H g 'G h (H h (I i (H h 'G g )H h Z'F g Z)I h Z(H h Y'G g
Y'G g Y(H h Y'G g Y(H h Y(H h X(I i X'G g X&G f X'H g W(H h X'G g W&E f V'G f V&
E f W(G h V'G g V'G h U'G f U(H h