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 48 78 43 46 6C 6F 70 70 79 45 6D 75 0D 0A ..HxCFloppyEmu..
000030: 28 01 00 00 13 13 13 13 13 13 13 13 13 13 13 13 (...............
000040: 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 ................
000050: 13 13 13 13 13 13 13 13 13 13 13 13 00 00 00 00 ................
000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000100: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
000110: 00 00 00 02 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 00 02 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 00 02 02 09 4E E5 02 00 C1 02 00 00 00 02 ......N.........
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 00 02 02 09 4E E5 03 00 C1 02 00 00 00 02 ......N.........
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 00 02 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 00 02 02 09 4E E5 05 00 C1 02 00 00 00 02 ......N.........
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 00 02 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 00 02 02 09 4E E5 07 00 C1 02 00 00 00 02 ......N.........
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 00 02 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 00 02 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 00 02 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 00 02 02 09 4E E5 0B 00 C1 02 00 00 00 02 ......N.........
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 00 02 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 00 02 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 00 02 02 09 4E E5 0E 00 C1 02 00 00 00 02 ......N.........
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 00 02 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 00 02 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 00 02 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 00 02 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 00 02 02 09 4E E5 13 00 C1 02 00 00 00 02 ......N.........
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 00 02 02 09 4E E5 14 00 C1 02 00 00 00 02 ......N.........
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 00 02 02 09 4E E5 15 00 C1 02 00 00 00 02 ......N.........
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 00 02 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 00 02 02 09 4E E5 17 00 C1 02 00 00 00 02 ......N.........
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 00 02 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 00 02 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 00 02 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 00 02 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 00 02 02 09 4E E5 1C 00 C1 02 00 00 00 02 ......N.........
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 00 02 02 09 4E E5 1D 00 C1 02 00 00 00 02 ......N.........
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 00 02 02 09 4E E5 1E 00 C1 02 00 00 00 02 ......N.........
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 00 02 02 09 4E E5 1F 00 C1 02 00 00 00 02 ......N.........
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 00 02 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 00 02 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 00 02 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 00 02 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 00 02 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 00 02 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 00 02 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 00 02 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: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
02F910: 28 00 00 00 00 00 4E E5 54 72 61 63 6B 2D 49 6E (.....N.Track-In
02F920: 66 6F 0D 0A 00 00 00 00 29 00 00 00 00 00 4E E5 fo......).....N.
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 HxCFloppyEmu ( NBEDC COMv BCPL COMxCLIBHDR
I !"#$%&'()OPY B *KEYDEFS PCW+DEBUG (,-./0TIDY B D123456789CLIBHDR1
)BDC B FGHIJKLMNOPQRSTUBDC B )VWXYZBCPLM1 ABCDEabcdeBCPLM1 fghi
jklmnopqrstuBCPLM1 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 5
fYnXk!ufUnTfYnX!u!ufWnVfan+tau!uu$.IXONCS5fntufnZ#""!!9*fn)n&g"!BKzWRfn)Vutn&#""
!*!9!fn*fngRTfn+tufsnrgo#tsurfsnr 2fqnpVut)s#rfsnr 2tsurfunt#tuutsrT*fng"funt#BK
zWR! #"fngR!-*!g"funt+DMgR2fqnpVml)#V0+"!9*""!!9!fn"!!9VzW!Rfn+fnk!0123456789ABC
DEFfng£o)#V"!!9VzW!R&fn+fnfng£o0"!!9! "!!9**!"fynx"fynx**"!!9*""!!9!*fwnvg"!BKzW
R !! !#"!twuvtuutfunt R funtR funtR funtRwv!!! !fwnv+twuvfwnvR!funtfwnv#twuvfn)V
wvtwtuut7funtR 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!9B8Stac
k overflow #22f(O! Nn&VutgzWR£fn)Vutn&gR£fn)Vutn&fngzWR£fn)Vutn&fsnrVtsurfunt#
tuut fsnr"!!9!fn)fnfnrt-fn)6#6funtR! !,"!!9*!"VyxzW!Rkfynxn!t"!!9zW!R*"!!9!fn)fn
fnfn)!ort-!)n&!!)#n&#!)n&!)sfn+T)!)n&!!)#n&!)n&!)sfn)w#6funt)n&!)sfunt)#n&!)sfun
t)n&!)s*""!!9fn""!!9fn""!!9*"!!9*"!!9fngaRVzW!zRfnfn"!!9fnC"!!9fng0RVzW!9Rfnfn "
fn)6$#6funtR! !, "!!9*!"VyxzW!Rk fynxn !t "!!9fn R ! ! tufn!o! "!!9fn R ! ! tu
fn!o!"!!9x!fynxR!(!K"!!9!vx-fynxR!(!"!!9R"!!9!!fn)#VRfn7g (!!9fnzVFNR8"!!9*!fm
nl)!(!9!)6funtg£o!)sfuntg£o!)sfwnv)#Vfynx)N#Ffn)#Vfn)#Vfnz)#V"fnz)s#rfn)s#rfn)s#
rfynx)q#pfwnv)s#r!!fmnl)(!9*""!!9*!fmnl)!(!9!)6!)n&!!)#n&W#!)n&!)s!)n&!!)#n&Wotu
utfn)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 !!9np
vrt!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"!BKzW
RfnVsr)#V#"!OVRU"!!9*J*ur!tounofqnp.R*!tsurmfsnrRHfqnp RKmfn)Vsrpwfsnr#tsurofqnp
.Rfn)n&VutgzWRfn)Vutn&Ctqupfunt#tuutfqnp RfsnrRfn)Vsrpwfsnr#tsurfn)6fn) 6!9"!!9f
n)#Vfn)Nfn)s#rfn)w#6"!!9VN"!!9*!)n&funt)s!)n&funt)#s!)n&funt)s!)6fn+T) Nfn)#V+g
"fnBKzWRCfnVsr)#V#"afnV)#V"!!9*fn)#V+fn)s#r*fn)#Vg"fnBKzWRfsnr#fn)#VfnVsr)s#r#"f
nV)6 #6"!!9**fng"fnz)#VDMgRvfnzVqp)#Vfqnp#fnz)s#r+"fnzV)Vs#rfnz)#V#fnz)s#rfnzV)V
s#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*)
VV(!9* VR" "!!9*)fn+g")!BKzWR*fnzVqp)#VfnVqp*)s#")"!!9fn"fn)#VfsnrVutR gR+fsnrVu
tgzWR*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("!!9fnf
nz!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
number 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*V
sr)6#6''fn"+tqup*&fnVqp+g"&fnBKzWR&*)Vmln&#"&*Vsr)#VVqpRU*Vs NBKzWRB/**2'"fsnrR
6/B/*#"#"/!""!!9*y/fn)n&g"y/!BKzWR/fn)Vsrn&fnVsr+*)n&R/!/#"y/!/"!*!9*****!!!0Ent
er 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!tku
jfmnlO!tkujfsnr3!tkujfsnr5fsnr6fsnrgzWR51fynx"fwnv"funt"fsnr"81r0!9*""!!9!*fn**!
!! !1BCPL editor!! !1-----------!! !1L Load text! ! !2S Save text!! ! '2E Edit t
ext!! ! M2G Goto line! ! !3u2F Find string!! !G2Q Quit!! !W2Select option tuutfu
ntR2funtt3!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 t
o 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!9B8S
tack 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!BK
zWR7*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 BC
PL compiler v (c) PJB & Arnor Ltd., 1986 !3$00.1020!J$*K! 6#!("0#!4w#! 4"36O!4"
I6O!"2f22 2222 2!star+E(+")A 2!* 8(((80 2! (( !(!2Wy3$!$*17"$88*#"202H(I((((0 q5
23*Y near line ESC *W*YsW!+"Y7K 1q5 q5SYSWI( !(+( q5!I((6q56O(vExpecting ide
ntifier*q5g Aq52( DO q5u EvBad vector definitionA ROq5O !B! q5G q5u FvBad PROCE
DURE 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 *£*
R2**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 q
5 Oq5SK6Lq5u g q5u Kq5u K !I-vELSE expected**q5q5u !!*vINTO expected!q5u !Sv exp
ectedq5!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 z
K66 #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(vMissi
ng $)*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 intact3y2yppOu
tput 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/!!
4ut### 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(vExpec
ting ,q5u *$q5B(!B!K z*$8q5u "$O! (#*$q5u "$y$# 9# # 5" " 8( Q( A+XXXXXX %
! N!!#V#&2+6#6#6#Vw#w##+V+n+V+n*Q*9*+V++V+n"*9C93"QTB $Vd3Undefined identifier,
nf S+++V+!1V++V+GUFUTUUUVUWUXUYUDtEJ4Declaration error!1!51DTETG'F'T'U'V'W'X'Y'+
V+&2+6#6#6# s#r+V++F+N6 ! 6 !+V++i+F+N+F+NV+ 6 3Expression/id mismatcv%nf0#)Q"QK
SB8"Snf*R2 2r2v "t*7"x2w2s+V+n*x-7!r3 2r2v22 "t "x " "2w2s*7+V++n7!v3V+,77!r
3 +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!
z3""z*S! !oS*Os#r22"*9C9"O"S"U7s#rV+F(T(V(X(n3 &v%! "OX!2!R9*U*UF(G(T(U(**T(#U(X
(Y(Z(((((***"*uE(+*A++++nfnf++++*C *7##"A"C7!3""w((3CASE/DEFAULT outside a SWITC
HO#+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#6z
s#r(v%(!()(v%+!7s+00620,0 (61s1wOM+V+6 +V++V+0F#6 +++V+V+&26#6##w2!r3"*dX"d g" B
KzWRDMgR#+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(&'3Inva
lid application of L28 (0!'n-&!'!F 1!'nf+V+v%+V+v%!')#V+V+v%!(go!*7### X*7((Ox
7s#r(+V+(7s#r6 +V++(V+0+!(R!(!+!(R! !+++V+08 ++V+v%!(2)))22v2w2s*7"x "t " "+V++,
7V+n*x-77!r3 +V+v%n2n!n!P3RESULTIS outside a VALO!z! +!v!"3LOOP found outside l
oo!r!v(F3m-3BREAK found outside loo3RETURN found outside FUNC/PRO+V+v%+V+285((3L
abels 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($(!d3Dy
namic 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!7
3nfv%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"M
o 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+
21+2!£R"52( 7 72" !)" !qN7)08 8#wyvString too long 7 2 2!vBad charactervBad cha
racter 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£
70W7770z99!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 N7andbebreakbycasedodefaul
teqeqvelseendcasefalseforfinishgotogegrgtglobalgetifintoinlineletlvlelsltlogorlo
gandlooplshiftmanifestnenotneqvorresultisreturn£remrshiftrvrepeatrepeatwhilerepe
atuntilswitchonstatictotesttruethentableuntilunlessvecvalofwhileoptionabs7-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) wr
ch((num LOGAND 7)+'0') $) AND newline() BE wrch(newlinech) /**** INPUT
ROUTINES ****/ AND rdch() VALOF $( UNLESS returned 0 THEN $( L
ET c returned returned 0 lastchar c RESULTIS c $) RESULT
IS readstream 0 - rdvdu(), readch(readstream) $) AND unrdch() BE returned
lastchar AND reads(array) VALOF $( MANIFEST $( escape #xFC stop3 ma
xlen255 $) LET p// CLIBHDR standard CP/M library header, last modified 01/1
2/1986 MANIFEST $( bytesperword 2 bitsperword 16 softeofch
26 endstreamch -1 vdustream 0 printstream 1
maxint 32767 minint -32768 newlinech 269 $) STA
TIC $( readstream 0 writestream 0 returned 0 lastchar 0
$) /**** OUTPUT ROUTINES ****/ LET wrch(char) BE $( SWITCHO
N 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 $( LE
T 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() $) $) RE
PEATWHILE (cescape c stop) & (ptr 0) array%0 (cescape cstop) - 0, ptr
RESULTIS NOT (cescape cstop) $) AND readn() VALOF $( LET input VEC 12
8 reads(input) RESULTIS strtonum(input,10) $) AND strtonum(string,base
) VALOF $( LET ptr, total 1, 0 WHILE ptr string%0 LOGAND (0decval(stri
ng%ptr)base) DO $( total total * base + decval(string%ptr) ptr pt
r + 1 $) RESULTIS total $) /**** FILE I/O R $( CAS
E 'S' writes(arg) RESULTIS 0 CASE 'C' wrch(arg) RESULTIS 0
CASE 'N' writed(arg,0) RESULTIS 0 CASE 'O' writeoct(arg,siz
e) RESULTIS 1 CASE 'X' writehex(arg,size) RESULTIS 1 CAS
E 'I' writed(arg,size) RESULTIS 1 CASE '$' RESULTIS 0 D
EFAULT 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() V
ALOF $( LET bufreadstream readstream vdustream RESULTIS buf0 - closei
n(buf), TRUE $) AND rewind() BE IF readstream 0 THEN rewindin(readstream)
AND findoutput(name,buffer) VALOF $( LET c, de 22, buffer*2 setfcb(na
me,(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 REPEATUN
TIL n 0 FOR j ptr+1 TO d DO wrch(' ') IF num0 THEN wrch('-') FOR j p
tr-1 TO 0 BY -1 DO wrch(temp!j+'0') $) AND writen(n) BE writed(n,0) AND w
ritehex(num,d) BE $( IF D1 THEN writehex(num4, d-1) wrch((num LOGAND 15)!
TABLE '0','1','2','3','4','5','6','7','8','9', 'A'
,'B','C','D','E','F') N buffer) bdosb(19, buffer*2) bdosa(c, de) buffe
r!17 36 RESULTIS c 255 $) AND endwrite() VALOF $( LET buf writest
ream writestream vdustream RESULTIS buf0 - closeout(buf), TRUE $) /
**** PRIMITIVE I/O ROUTINES ****/ AND wrvdu(c) VALOF $( IF cnewlinech TH
EN $( 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 uppercas
e(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
221,102,127 // ld h,(ix+127) INLINE 221,110,126 // ld l,(ix+126)
INLINE 41 // add hl,hl INLINE 94 // ld e,(hl)
INLINE 35 // inc hl INLINE 86 ET a bios(15,a) RESULTI
S a 0 // TRUE if printer busy $) AND rdtest() VALOF $( LET c,
de 11, bdosa(c,de) RESULTIS c1 $) AND flush() BE WHILE rdtest() rdvdu
() AND readch(buffer) VALOF $( LET character, fail 0, FALSE IF buffe
r!17 164 THEN $( fail NOT readsector(buffer) // read a sector
buffer!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 // l
d 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 charnewlin
ech 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 su
ccess $) 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,
110,124 // ld l,(ix+124) INLINE 41 // add hl,hl INLINE
119 // ld (hl),a INLINE 35 // inc hl INLINE 54,
0 // ld (hl),0 $) AND bdosb(c,de) BE $( INLINE 221,86,127
// ld d,(ix+127) INLINE 221,94,126 // ld e,(ix+126) INLINE 221,7
8,124 // ld c,(ix+124) INLINE 221,229 itech(26,buffer) UNLES
S buffer!17 36 THEN writesector(buffer) bdosa(c,de) RESULTIS c 255 $)
AND readsector(buffer) VALOF $( LET result, buff 20, buffer*2 bdosb(2
6, buffer*2+36) bdosa(result, buff) RESULTIS result 0 // TRUE is succ
essful 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%#
x82 0%(0%1 + 256*0%2 + (n-1)*3 +2) INLINE 221,229 // push ix INL
INE #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,(i
x+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 upper
case(name%nptr) nptr nptr + 1 IF fptr 2 LOGAND drvflag LOGAND c ''
THEN $( buffer%0 buffer%1 - 'A' + 1 fptr, drvflag 1, FALSE
LOOP $) IF c '.' THEN $( fptr 9 BREAK $) IF fptr 9 LOG
OR c ' ' THEN BREAK buffer%fptr c fptr fptr + 1 $) IF c '.'
THEN W N INLINE 41 // add hl,hl INLINE 119 /
/ ld (hl),a INLINE 35 // inc hl INLINE 54,0 // l
d (hl),0 0%#x80 save%0 0%#x81 save%1 0%#x82 save%2 $) AND selectinpu
t(stream) BE readstream stream AND selectoutput(stream) BE writestream stre
am 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 e
ditor 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 1
5 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 ou
tname%0 0 THEN FINISH TEST findinput(inname, inbuff) THEN $( selecti
nput(inbuff) TEST findoutput(o-'0', digit-'A'+10 P/M library header, las
t 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/198
6 */ /* debug(opt,n,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12) T
he first parameter specifies the required option. 0 pause e
xecution, wait for a key to be pressed 1 display values of va
riables in decimal -1 display names and values of variables in
decimal 2 display value of strings -2 disp
lay name and value of strings 3 display contents of ve/* This
is a copy routine. Last modified 05/11/1986 */ option b- /* Include the l
ibrary */ GET "clibhdr" LET start() BE $( LET inname VEC 20 LET
inbuff VEC 82 LET outname VEC 20 LET outbuff VEC 82 LET c 0 writ
es("Input file name ") reads(inname) IF inname%0 0 THEN FINISH newlin
e() writes("Output file name ") reads(outname) IF outname%0 0 THEN FIN
ISH TEST findinput(inname, inbuff) THEN $( selectinput(inbuff) T
EST 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 secon
d parameter (n) is the number of variables or strings or vectors to be
displayed. If opt is positive there follows a list of identifiers.
If opt is negative there follows a list of pairs - a string givi
ng the identifier name and the identifier. utname, outbuff) THEN $(
selectoutput(outbuff) $( c rdch() UNLESS cendstreamc
h DO wrch(c) $) REPEATUNTIL c endstreamch endwrite()
$) ELSE writes("Can't open output file") endread() $) ELSE write
s("Can't open input file") $) . ion b- /* Include the library */ GET
"clibhdr" LET start()me) IF outname%0 0 THEN FINISH TEST findinput(inn
ame, inbuff) THEN $( selectinput(inbuff) TEST findoutput(o 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) debu
g(-1,3,"var1",var1,"var2",var2,"var3",var3) debug(2,1,s
tr) debug(-2,2,"str1",str1,"str2",str2)
debug(3,1,vector,32) debug(-3,1,"vector",vect
or,32) deb) writes(" ") wrch
('"') writes(parm!1) wrch('"')
newline() parm parm + 2 END
CASE 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 $( e
scape#xFC stop3 $) LET parm, ch, len d1, , LET wrnum, wrwid
writed, 0 SWITCHON (opt0 - opt, -opt) INTO $(
CASE 1 writes("*nBCPL Debug. Variable values ") EN
DCASE 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 add
r writes(" ") ascptr 1 FOR
byte 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
then FINISH $( ch addr%(line*16+byte
) writehex(ch,2) wrch(' ')
IF byte7 then wrch(' ') ascii%asc
ptr (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
parm + 1 ENDCASE CASE -1
CASE -4 writes(" ") /*
This is a BCPL beautifier. It will turn all keywords into upper case and al
l identifiers into lower case */ // modified 30/10/1986 /* read in the sta
ndard 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
CASE 2 wrch('"') writes(!parm) wrch('"')
wrch(' ') parm parm + 1
ENDCASE CASE -2 writes(" ")
writes(!parm Newline() writes(message) newline(
) longjump(error, errvec) $) LET space(char) ( char' ' char9 ) LET
rawchr() VALOF $( LET temp readch(input) WHILE temp 10 DO temp rea
dch(input) IF lastchr endstreamch LOGAND temp endstreamch THEN err("Unexpec
ted EOF") lastchr temp RESULTIS lastchr $) LET getchr() VALOF $
( rawchr() IF 'A' lastchr 'Z' THEN lastchr lastchr + 32 RESULTIS las
tchr $) LET out(character) BE $( UNLESS nmp 0 SWITCHON lastchr I
NTO $( CASE '$' condnl() temp getchr() getchr() TES
T temp '(' THEN $( out('$') out('(') ident() i
ndent indent + indentsize $) ELSE $( indent indent - ind
entsize out('$') out(')') ident() $) UNLESS lastc
hr 13 THEN out(13) ENDCASE CASE '' out(13) getchr() EN
DCASE CASE '"' idspace() out('"') rawchr() UNTIldone LO
GOR 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(c
haracter,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 l
astchr '' LOGOR lastchr temp THEN $( out(temp) out(lastchr)
getchr() $) ELSE out(temp) out(' ') ENDCASE CAS
E '' TEST getchr() '' THEN $( out(' ') out('') o
ut('') out(' ') getchr() $) ELSE $( out('')
idflag + 10 ELSE RESULTIS 100 $) LET readnum(base, first) BE
$( WHILE hexval(first) base DO $( out(hexval(first) 10 - first, fi
rst - 32) first getchr() $) idflag 2 $) LET stringsame(string
1, string2) VALOF $( IF !string1 NE !string2 THEN RESULTIS FALSE FOR p
tr 1 TO !string1 IF string1!ptr NE string2!ptr THEN RESULTIS FALSE RESULT
IS TRUE $) LET sysword(word) VALOF $( LET start keywords WHILE
start keyend DO $( IF str 1 RETURN $) ENDCASE CAS
E '-' out(' ') TEST getchr() '' THEN $( out('-') o
ut('') getchr() $) ELSE out('-') out(' ') ENDCASE
CASE '/' getchr() TEST lastchr '**' THEN $( temp inden
t indent 0 condnl() out('/') out('**') rawch
r() $( UNTIL lastchr '**' DO $( out(lastchr
) rawchr() $) out('**') ingsame(start + 1, word) T
HEN RESULTIS start start start + start!1 + 2 $) RESULTIS FALSE $)
LET idspace() BE $( IF idflag THEN out(' ') $) LET writeword(wor
d) BE $( LET ptr, idf sysword(word), 1 TEST ptr THEN $( IF !pt
r 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('/') o
ut(13) IF getchr() 13 THEN getchr() indent temp $) ELS
E TEST lastchr '/' THEN $( IF column comments THEN out(13)
FOR a column TO comments out(' ') out('/') $( out(lastch
r) rawchr() $) REPEATUNTIL lastchr 13 out(13)
IF getchr() 13 THEN getchr() $) ELSE TEST lastchr '' THEN
$( out(' ' idflag idf $) LET ident() BE $( LET wordbuff V
EC 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)
rawchr() $) 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(l
astchr) 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("a
nd,be,break,by,case,do,default,Beq,Beqv,else,endcase,false,for,") readwords("
finish,goto,Bge,Bgr,global,get,if,into,let,Blv,Ble,Bls,Blogor,Blogand,") read
words("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,") $) L
ET s() strchr() out(''') getchr() idflag 2 RETURN
CASE '!' IF idflag 1 THEN out(' ') out('!') getchr() END
CASE CASE '+' CASE '&' CASE '' CASE '' CASE '**' out(' ') out(las
tchr) 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 l
ev VEC 3 level(lev) errvec, input, output lev, inbuff, outbuff keywor
ds, keyend wordarray, wordarray readsys() files() getchr() beautify
() error closein(input) closeout(output) newline() writes("BCPL beau
tifier finished") $) . will turn all keywords into upper case and all id
entifiers 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,
lastchr) $) ELSE TEST lastchr '#' THEN $( idspace()
out('#') getchr() SWITCHON lastchr INTO $( CASE
'x' out('x') readnum(16, getchr()) ENDCASE CASE 'b' o
ut('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#wyvStr
ing 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 T
EST lastchr 13 THEN $( out(13) getchr() $) ELSE pu
nctuate() $) $) 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() UNLES
S 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 ran
domseed$)94(4(4(4(4(4)94(4(4(HQ4(4(4)9Y14(4(1P4(4(4(IMU1Q%Lp4(4(4)9ut") UNLES
S findoutput(nameout, output) THEN err("Can't open output") $) LET readw
ords(string) BE $( LET length, rest, lengthptr string%0, 1, 0 WHILE le
ngth 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(
name1,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) i
nline #xDD,#x6E,#x7A // ld l,(ix+122) inline #x29,#x5E,#x23,#x56 // ad
d hl,hlld e,(hl)inc hlld d,(hl) inline #xE1,#xDD,#xE1,#xF1 // pop hlpop ixpo
p 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) inlin
e #xDD,#x6E,#x7A // ld l,(ix+122) inline #x29,#x VALOF $( LET len1,
len2 s1%0, s2%0 LET shorter len1len2 - s1, s2 FOR i 1 to shorter%0 DO
$( LET res compch(s1%i, s2%i) UNLESS res0 RESULTIS res $) RES
ULTIS 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,#
xD1 // add hl,hlpop de inline #x73,#x23,#x72 // ld (hl),einc
hlld (hl),d inline #xDD,#x66,#x7F // ld h,(ix+127) inline #xDD,#x6E
,#x7E // ld l,(ix+126) inline #x29 // add hl,hl inli
ne #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 // ad
d hl,de inline 56,4 // jr c,+4 inline 237,176 // ldir
inline 24,8 // jr +8 inline 11 // dec bc inl
ine 9 // add hl,bc inline 235 // ex de,hl inli
ne 9 // add hl,bc inline 235 // ex de,hl inlin
e 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,
de,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 bytem
ove(#x90, save3*2, 3) 0%#x90 #xC3 0%#x91 addr & #xFF 0%#x92 ( addr &
#xFF00 ) 8 inline #xDD,#xE5 // push ix inline #xDD,#x66,#x77
// ld h,(ix+119) inline #xDD,#x6E,#x76 // ld l,(ix+118) inline
#x29,#x5E,#x56,#x23 // add hl,hlld e,(hl)inc hlld d,(hl) inline #xD5
// push de inline #xDD,#x66,#x79 // ld h,(ix+121) inline #
xDD,#x6E,#x78 #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%#x8
5 #xC9 call (#x80,af,bc,de,hl,ix) bytemove(save6*2, #x80, 6) $) AND v
ersion() 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 unp
ackstring(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,
hlld e,(hl)inc hlld d,(hl) inline #xD5 // push de inline #
xDD,#x66,#x7D // ld h,(ix+125) inline #xDD,#x6E,#x7C // ld l,(ix+
124) inline #x29,#x5E,#x23,#x56 // add hl,hlld e,(hl)inc hlld d,(hl) inli
ne #xD5 // push de NBE FOR i 0 TO s%0 DO v!i s%i AND pac
kstring(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 dec
imal -1 display names and values of variables in decimal
2 display value of strings -2 display name and v
alue of strings 3 display contents of veArnor Ltd., 118 White
horse Road, Croydon, CR0 2JF. op fo %
ce 1. ABOUT BCPL BCPL is often described as a "systems programming la
nguage". This makes BCPL sound very grand and technical, but this is not the ca
se. BCPL is certainly a very good language for writing programs such as operat
ing systems, compilers and word processors but the features that make BCPL idea
l for these applications also make it an excellent general purposefined $)
LET index() VALOF $( TEST lastchr NE ',' THEN RESULTIS 0 ELSE TEST s
kip() '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 ind
exmode 0 skipc() SWITCHON lastchr INTO $( case '#' skip()
ree language. What are these features First, flexibility. BCPL programs
are not constrained by rules as to which operations can be performed on which
type of variable. Indeed there are no different variable types -- all variables
are simple numbers and other types and structures are achieved by using variab
les differently. This makes BCPL very different from other languages such as BA
SIC and PASCAL. A string is treated as a variable pointing to a string, similar
ly 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 Amstra
d PCW8256/8512 ce Amstrad CPC6128/664/464 ce by
Phillip Blenkinsopp ce CONTENTS 1 Abou
t BCPL 3 2 Using Arnor BCPL. Even procedures are simply variables containin
g the address of the procedure, and these may be assigned to or passed as param
eters. This flexibility allows the BCPL programmer to access any part of memor
y (indeed any individual bit) and so do things that can normally only be done i
n machine code. Of course freedom always carries a price -- responsibility. In
languages such as PASCAL the compiler detects an attempt to perform an illegal
or 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 p
rograms16 7 Summary of the BCPL language18 8 The Arnor BCPL libraries26 9
Differences from standard BCPL49 APPENDICES 1 Technical information51
2 Summary and index of library routines54 3 Portability56 4 Error messages
57 Copyright (c) Arnor Ltd.,1986 Issue 1, 1986 (v1.00/2.00)
AMSTRArely does so and it is quite possible to crash the system by corrupting t
he system memory or jumping to an illegal address. An essential book to rea
d 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
be a complete guide to BCPL programming, and assumes some knowledge of programm
ing (for example in BASIC). Note that examples of the use of most features of B
CPD 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 ill
egal to reproduce or transmit either this manual or the accompanying computer p
rogram in any form without the written permission of the copyright holder. Soft
ware piracy is theft. The BCPL compiler was developed using the MAXAM assemb
ler ROM. This manual was written on the PROTEXT word processor and checked usi
ng 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 refere
nce is "BCPL -- the language and its compiler" by Martin Richards and Colin Wh
itby-Strevens. This book is essential reading for the BCPL programmer. It is p
ublished by Cambridge University Press at a reasonable price in paperback. Mart
in Richards originally designed BCPL in Cambridge in 1967. This book will hence
forth 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 MANIFES
T $( 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 #x
F7 ccursup #xF8 ccursdown #xF9 ccursleft #xFA ccu
rsright #xFB to as "the BCPL book". In particular the book contains a
n excellent section on "Advanced facilities" which covers, among other things,
pointers, bit operations, recursion and scope rules. For the purposes of this
manual, the BCPL book is regarded as defining "standard" BCPL, and any minor v
ariations or enhancements to this standard are pointed out. op ce 2. USING AR
NOR 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 lin
e. 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,
and the AMSDOS version on the other. Note PCW8256/8512 users should ignore
the AMSDOS side of the disc and the EPROM, as well as any references to Amsdos
or the EPROM/ROM version, throughout this manual. These are for CPC users only.
The newcomer to the language is advised to pass over chapters 2, 3 and 4 o
n the first reading as they describe the mechanics of using the compiler, rathe
r than details of the language. List of fi linenumber 1 scrheight0 ve
r0 $) 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,1
24 // ld e,(ix+124) inline 221,70,127 // ld b,(ix+127) inline
221,78,126 // ld c,(ix+126) inline 167 // and a inline
237,82 // sbc hl,de inline 25 // add hl,deles contain
ed on the disc -- CP/M side The main files are BCPL.COMthe main compiler p
rogram CLIBHDRthe main I/O library CLIBHDR1the extra I/O library containing le
ss used routines DEBUGa routine useful for debugging BCPL programs The disc
also contains the following example files ---!-----!-----L-------!-------!---
----!-------!-------!-------!----R AS6502.Ba 6502 cross assembler, written in B
CPL BEDC.BBCPL editor source code, CP/M version BEDC.COMBCPL editor object cod
e, inline 56,4 // jr c,+4 inline 237,176 // ldir
inline 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
PCW8256/8512. TIDY.BA BCPL program to format BCPL source code tidily ---!-----
!-----!-------!-------!-------!-------!-------!-------!----R Creating a wor
king disc 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 system
disc 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) inlin
e #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,#x7
9 // ld h,(ix+121) inline #xDD,#x6E,#x78 // ld l,(ix
// ld (hl),d inline #xDD,#x66,#x7F // ld h,(ix+127) inline #
xDD,#x6E,#x7E // ld l,(ix+126) inline #x29 // add hl,
hl inline #xED,#x5B,#x90,#x00 // ld de,(&90) inline #x73
// ld (hl),e 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 in
line #x4E // ld c,(hl) inline #x23 // inc h
l 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 // l
d d,(hl) inline #xD5 // push de ne #x71 //
ld (hl),c inline #x23 // inc hl inline #x70
// ld (hl),b inline #xDD,#x66,#x77 // ld h,(ix+119) inline
#xDD,#x6E,#x76 // ld l,(ix+118) inline #x29 // add h
l,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,
af,bc inline #xDD,#x66,#x7D // ld h,(ix+125) inline #xDD,#x6E,#x7
C // ld l,(ix+124) inline #x29 // add hl,hl inli
ne #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,#x6
E,#x7A // ld l,(ix+122) inline #x29 // add hl,hl
inline #x5E // ld e,,de,hl,ix) BE $( LET save6 VEC 3
bytemove(#x80, save6*2, 6) 0%#x80 #xCD 0%#x81 0%(0%1 + 256*0%2 + 87
+1) 0%#x82 0%(0%1 + 256*0%2 + 87 +2) 0%#x83 addr & #xFF 0%#x84
( addr & #xFF00 ) 8 0%#x85 #xC9 call (#x80,af,bc,de,hl,ix) byt
emove(save6*2, #x80, 6) $) and version() VALOF $( LET c,de12, LET
af,bc,hl,ix ,,, bdosa(c,de) IF (de & #xFF) #x30 THEN RESULTIS 2
firmware(#xE3,af,bc,de,hl,ix) RE(hl) inline #x23 // i
nc 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 #x
DD,#x22,#x90,#x00 // ld (&90),ix inline #xDD,#xE1 // pop ix
inline #xF5 // push af inline #xE5 // pus
h 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') $) L
ET tab(x,y) BE $( TEST ver2 THEN $( bdosb(6,31) bdosb(6,x) bdo
sb(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 #
xDD,#x66,#x7D // ld h,(ix+125) inline #xDD,#x6E,#x7C // ld l,(i
x+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
LET cursdi() BE return LET beep() BE $( wrch(7) $) /* This routine retur
ns the number of characters up to and including the next CR */ LET linele
ngth(from) VALOF $( LET sofar 1 WHILE !from NE 13 DO $( sofar sofar
+ 1 from from + 1 $) RESULTIS sofar $) /* This routine will print n
um characters of line and then fill the rest of the line with spaces */ A
ND printclr(line,num) BE $( FOR a 0 TO num-1 DO wrch(line!a) DEFAULT
x validate(buffer,x) TEST buffer!0 80 THEN $( bin
sert(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 buf
fer(line) VALOF $( LET keypress 0 $( tab(6,scrheight) writef("%
I4",linenumber) tab(18,scrheight) writef("%I2",x) tab(x,y) curse
n() spaces(79-num) $) /* This routine will print either the whole bu
ffer 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!p
os) $) /* This routine will remove a character from the buffer */ AND
delete(line,x) BE $( TEST insert THEN $( line!0 line!0 - 1
FOR a x TO line!0 DO line!a line!(a+1) $) ELSE line!x ' ' $) /* T
his routine will insert a charactkeypress rdch() cursdi() keypress b
uildbuff(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 f
ollowing format 0 length 1- string in unpacked format foll( LET sof
ar 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 fr
om TO from + linelength(from) - 2 DO wrch(textstart%a) prev!y linelength(fro
m) - 1 $) LET status() BE $( tab(1,scrheight) TEST ver4 THEN
writef("Line%I4 Column%I2 (STOP to menu)",linenumber,x) ELSE writef("Li
ne%I4 Column%I2 (ESC to menu)",linenumber,x) $) LET cls() BE $( cl
earscrowed by 13 The routine reacts to key and takes the appropriate action
*/ AND buildbuff(buffer,key) VALOF $( tab(x,y) SWITCHON key INT
O $( 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
beep() ENDCASE CASE cursright CASE scursright TEST x buffer!
0-1 THEN x x() curson() cursdi() FOR a 1 TO scrheight-1 DO pre
v!a 0 status() $) /* This routine will move the text on the scre
en 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 sc
rheight-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
array */ LET up() BE $( tab(1,scrheight) spaces(40) wrch(10) wrch(
13) FOR a 1 TO scrheight-2 DO prev!a prev!(a+1) prev!(scrheight-1) 0
status() $) /* This routine will reprint the screen from the y posi
tion 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 $( texte
nd textend + 1 textstart%textend char $) char readch(f
ile) $) UNLESS textstart%textend 13 DO $( textend texten
d + 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) pr
ev!y l from from + l + 1 $) $) LET forward(ptr) VALOF $(
IF ptr + linelength(ptr) textend THEN $( beep() RESULTIS ptr $) ptr
ptr + linelength(ptr) RESULTIS ptr $) AND backline(ptr) VALOF $(
IF ptr 0 THEN $( beep() RESULTIS ptr $) ptr ptr - 1 REPEATWHILE texts
tart%(ptr-1) NE 13 LOGAND ptr NE 0 RESULTIS ptr $) /* This routine will
reconstruct(file) initbuff(line,0) error("No room") $)
IF textend -1 THEN textend 0 closein(file) RESULTIS TRUE $) EL
SE $( 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,f
ile) 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. H
it any key to continue",message) beep() rdch() tab(33,scrheight) space
s(20) status() buffprint TRUE reconstruct(textptr) longjump(errlab,er
rvec) $) LET makespace(at,size) BE $( byteend DO $( UN
LESS 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("Canno
t 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(
textstart*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 TH
EN $( TEST 2 TO linenum DO $( LET optr textptr textptr fo
rward(textptr) IF optr textptr THEN BREAK linenumber linenumber + 1
$) y 12 $) /* This routine checks for a match */ AND match(fro
m,target) VALOF $( FOR a 1 TO target%0 DO IF textstart%(from+a-1) N
E target%a THEN RESULTIS FALSE RESULTIS TRUE $) /* This is the find s
tring routine */ AND findstring() BE $( LET optr, ox, oy, oline textpt
r, 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() new
line() $) LET loadtext(line) VALOF $( LET name VEC 20 getfile
name(25,19,name) TEST findinput(name,file) THEN $( LET char 0 t
extptr, x, y, linenumber, textend 0, 1, 1, 1, -1 text N 20 tab(25,19)
writef("Enter string ") cursen() reads(search) cursdi() textptr text
ptr + x - 1 UNLESS textstart%textptr13 THEN textptr textptr + 1 UNLESS te
xtptr textend DO $( TEST textstart%textptr13 THEN linenumber li
nenumber + 1 ELSE $( IF match(textptr,search) THEN $(
optr textptr WHILE textstart%(textptr-1) NE 13 LOGAND textptr N
E 0 DO textptr textptr - 1 x, y optr - textptr + 1, 1TO li
ne!0 DO copy!a line!a WHILE line!ptr NE 13 DO ptr ptr + 1 FOR a ptr TO
line!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 scrhei
ght-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 textpt
r 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)
writes("-----------") tab(32,9) writes("L Load text") tab(32,10) wr
ites("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(text
ptr) UNLESS textptr optr THEN $( linenumber linenumber + 1 TES
T 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 ignor
e SWITCHON key INTO $( CASE 'L' CASE 'l' wrch('L') IF loadtext
(line) THEN BREAK ENDCASE CASE 'S' CASE 's' wrch('S') IF savetext() THE
N BREAK ENDCASE CASE 'G' CASE 'g' wrch('G') supcurs(line) BE $( li
nsert(line,textptr) FOR a 1 TO scrheight-4 DO $( IF textptr 0 THEN
BREAK moveup() $) $) LET sdowncurs(line) BE $( linsert(line,te
xtptr) FOR a 1 TO scrheight-4 DO $( LET optr textptr movedown(
) IF optr textptr THEN BREAK $) $) LET top(line) BE $( li
nsert(line,textptr) textptr, x, y, linenumber 0, 1, 1, 1 reconstruct(text
ptr) $) LET bottom(line) BE $( LET optr 0 linsert(line,textp gol
ine() 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() $) R
EPEAT reconstruct(textptr) $) /* This routine deals with the deletion
of a CR */ LET deletel(line) BE $( TEST textptr NE 0 THEN $( L
ET optr, tptr textptr, backline(textptr) TEST linelength(tptr) + line!0 -
1 80 THEN tr) textptr, x, y, linenumber 0, 1, 1, 0 $( optr textp
tr textptr forward(textptr) y y + 1 linenumber linenumber + 1
$) REPEATUNTIL optr textptr IF y scrheight-1 THEN y scrheight-1 reco
nstruct(textptr) $) /* All lines end in 13 */ /* The edit buffer is held
in unpacked format. The whole text is stored in packed format */ LET star
t() BE $( LET filebuff VEC 81 LET previous VEC maxscrheight-1 LET
text VEC maxchr/2+1 LET $( IF line!0-linelength(textptr)+textend
maxchr THEN error("No room") textstart%(textptr-1) 0 linsert(line
,textptr-1) textptr tptr linenumber linenumber - 1 x lin
elength(textptr) - line!0 + 1 TEST y 1 THEN $( write(tex
tptr,1,1) $) ELSE y y - 1 $) ELSE error("Line too long
to join") $) ELSE error("Top of file") $) LET addl(line) BE $(
LET copy VEC 80 LET ptr 1 FOR a 0 Ninbuff 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, er
ror prev, file previous, filebuff cls() textstart%0 13 $( lev
el(errvec) initbuff(inbuff,textptr) IF newscreen THEN screen(textptr,y
) errlab IF buffprint THEN $( tab(1,y) FOR a 1 TO
inbuff!0-1 DO wrch(inbuff!a) spaces(80-inbuff!0) bus an editor or SETKEY
S.COM (see below), to the disc. pa Entering and editing BCPL programs under C
P/M Any editor or word processor may beused for typing in BCPL programs, as
long as an ASCII file can be produced. The CP/M version of PROTEXT is especiall
y suitable (using program mode), as is the Arnor program editor supplied with o
ther Arnor CP/M programs. Alternatively CPC users can use the AMSDOS versions o
f 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(i
nbuff) ENDCASE CASE cursdown CASE scursdown downcurs(inbuff) ENDCASE
CASE ccursup supcurs(inbuff) ENDCASE CASE ccursdown sdowncurs(inbuf
f) ENDCASE CASE copensq top(inbuff) ENDCASE CASthe program BEDC.
COM 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
SETKEYS. Suitable definitions are provided in the file KEYDEFS.PCW and the synt
ax 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 bot
tom(inbuff) ENDCASE CASE escape CASE stop menu(inbuff) ENDCASE $)
$) REPEAT $) . oo long softeofch 26 endstreamch -1
vdustream 0 printstream 1 maxint 32767 minint -32768
newlinech 269 $) STATIC $( readstream 0 writestream
0 returned 0 lastchar 0 $) /**** OUTPUT ROUTIN
ES ****/ LET wrch(char) BE $( SWITCHON writestream INTO $( Ce co
pied 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 inte
rmediate compilation stage. The command to compile a program is bcpl source
destination where source and destination are the names of the files from whic
h code is taken and to which it is written. The destination filename is option
al and if omitted will default to the source file name with a .COM extension. T
he extensions on both filenames are optional. If the source name has no extensi
on then the compiler will first search for a file with no extension and then fo
r 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
default to .COM. e.g.bcpl as6502 will first look for the file AS6502 and i
f it is not prfe place, as a backup. A system disc should be created using DI
SCKIT (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 P
IP) from the supplied BCPL disc onto the newly formatted disc, together with (i
f 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 Nesent will then look for the file AS6502.B. The compiler will read t
his file and then send the object code produced to a file AS6502.COM. pa Unde
r CP/M Plus the compiler returns an error return code if an error occurred. It
can then be convenient to use SUBMIT to compile and run the program with a sing
le command. The CP/M conditional command facility can be used so the the progra
m is only executed if no error occurred. For example a file COMPILE.SUB may con
tain 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 crit
ical, though it must not clash with any existing ROMs, even if they are not in
stalled on the ROM board. (The disc rom for example uses ROM select 7). Suitab
le 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
programs, 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 ot
her files Other BCPL source files may be included at any point in a program
by using the GET directive. GET "file" causes compilation to continue with
the new file. At the end of the included file compilation resumes at the point
after the GET directive in the original fonjunction with PROTEXT or MAXAM. Pr
ograms 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 computer
s. List of files contained on the disc -- AMSDOS side The following file
s are most important BCPL.BASthe loader for the compiler program BCPL.BINthe
main compiler program ALIBHDRthe main I/O library ALIBHDR1the extra I/O libra
ry containing less used routines AMSDOSa further ile. Most programs will sta
rt by including the library routines GET "CLIBHDR" GET "CLIBHDR1"// often no
t needed GET "DEBUG"// used when debugging (see section 8k) Note that the GE
T directives to include the library routines must be in the order shown because
routines in CLIBHDR1 call other routines in CLIBHDR. Compilation stops on t
he CP/M version when afull stop '.' is found in the initial source file which w
as specified in the original command line, or when the endI/O library containin
g graphics routines DEBUGa routine useful for debugging BCPL programs pa The
disc also contains the following example files BED.BBCPL editor source code,
AMSDOS version BED.BINBCPL editor object code, AMSDOS version BED1.Ba file con
taining directives to compile BED DIS.Ba Z80 disassembler written in BCPL INVA
DE.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
is reached. pa ce 3. USING ARNOR BCPL UNDER AMSDOS NOTE PCW8256/8512 user
s should ignore this chapter. BCPL may be used from Amsdos on the CPC range,
either in ROM form or from a disc. If the ROM version is being used, the files
BCPL.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 prog
rams 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 mod
e) and MAXAM are especially suitable, in particular the ROM versions are recomm
ended 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 PRO
TEXT editing commands. Any source files created should preferably be saved to d
iscystem disc and the original retained in a safe place, as a backup. Creatin
g a Working disc A new disc should be formatted and the first six files from
the 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 i
f that is installed. This will produce a disc containing all the essential file
s. ROM users can omit the first two files called BCPL.BAS and BCPL.BIN. Inst
alling the ROM versi N with a '.B' suffix to the filename. This is not essenti
al, but does help identify the type of files on a disc. Compiling a BCPL pro
gram under AMSDOS Apart from having to load the disc version, the disc and RO
M versions are used in exactly the same way. There are, however, a few differe
nces 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 AM
SDOS version does not allow thd again before using GO. With large programs it i
s quite likely that there will be insufficient memory to compile to memory. The
re are three courses of action that may be taken here (i) if you are using t
he disc version, buy a ROM board and use the ROM version. You will gain an extr
a 16K of memory. (ii) compile directly to disc. (iii) use the CP/M version.
Extra facilities for ROM users ROMON7 Some programs (particularly game
s) will not run with a rom iis although it does allow the inclusion of stored
PROTEXT/MAXAM text. Due to this limitation the AMSDOS version has a simple fron
t end which allows you to type in source code which will then be submitted dire
ctly to the compiler. pa To run the compiler type BCPL The screen will c
lear and the BCPL signon message will be printed. You will then be prompted wit
h "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 t
o enable the BCPL rom (and any others) to be turned off. All roms except the AM
SDOS rom will be turned off. Note that ROMON7 will reset the computer and lose
the 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
when CTRL-ENTER is pressed. pa ce 4. COMPILER OPTIONS The OPTION direc
tive controls various compiler facilities. It doalso possible (unless the progra
m is too large) to compile directly into memory. To do this just press RETURN (
or ENTER) in response to the question. You will then be presented with the BCP
L prompt '--'. The compiler is now ready to accept BCPL code for compilation. T
his will almost always consist of one or more GET directives. There are two fo
rms permitted (i)GET "file"to include another previously prepared file (ii
)GETto include the current text (PROTEXTes not cause any code to be generated.
There are 5 options on the AMSDOS versions of the compiler and 3 on the CP/M ve
rsion. Multiple options may be selected with a single OPTION directive by sepa
rating the options with commas. The OPTION directive may appear anywhere in a
program so options can be selected for any part of a program. The three opti
ons common to all versions are as follows If the option is followed by a '+'
sign the option will be switched on and if/MAXAM) Any number of GET directiv
es 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 st
op '.'. Note If the '.B' extensionof a source filenameis omitted from the
filename in a GET command when the filename contains it, Amsdos will initially
produce the message 'filenot found'but will continue to search for a file with
the .B extension and compile it. pa Testing B followed by a '--', it will be
switched off. L -- switch listing on or off. e.g. OPTION L+ S -- switc
h stack checking on or off. If checking is on then the compiler will check for
stack overflow at the entry point of each procedure. If stack checking is off t
hen the stack may overflow and crash the machine. e.g. OPTION S-- B -- sw
itch break checking on or off. If checking is on then the object code produced
will check whether the break key (ESC or STOPCPL programs under AMSDOS If a
program is compiled to memory, as described above, the command 'GO' may be used
to run the program. Typing 'GO' will run the most recently compiled BCPL progr
am. 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 co
rrupt a compiled program in memory by editing the PROTEXT or MAXAM text, so aft
er editing the program should always be compile N) has been pressed at the sta
rt 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 che
cked once for every ten loops or procedures. e.g. OPTION B-- OPTION B+
25 The defaults for the above options are listing off, stack checking on, br
eak checking on. pa The remaining two options are only available on AMSDOS
versions. O -- sets the code origin to the value of the nefore it can be r
un. The compiler translates the entire program into machine code instructions.
The machine code program is saved and can then be run. Since each BCPL line is
only translated once, a BCPL program runs a lot faster than a corresponding BAS
IC program. The disadvantage of using a compiled language is that you have to
wait for the program to be compiled each time before you can test it. This is n
ot 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 addre
ss 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
time (after any BASIC program or text) and the highest byte defaults to the las
t 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 i
nternal variable types. BASIC usually has 6 -- integer, real, string, integer a
rray, 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 wor
d value. This is referred to as a bit-pattern indicating that no inherent meani
ng 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 f
or a program. It should be noted however that if the Z80 stack pointer goes bel
ow #x4000 or above #xC000 then the machine will probably crash due to the ROM p
aging 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
of named procedured to this value. The meaning of the value is determined by th
e way that the programmer uses it, and this meaning can change. In Arnor's impl
ementation of BCPL each value is 16 bits long. There follow some examples of ho
w 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 Simu
lating different variable types IntegerLET number number 42 This assig
ns the value 42 (that s, each of which is quite separate. There is one special
procedure, called 'start', which must be present in every BCPL program. This is
where execution will begin. This procedure will call other procedures, which
will 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
languages in general. Examples of other structured programming languages are Pa
scal, Modula2 and C. is the bit pattern 0000000000101010) to the variable 'num
ber'. CharacterLET char char 'A' This assigns the number 65 (the ASCII
code representing the letter'A') to the variable 'char'. VectorLET array V
EC 10 FOR i0 TO 10 DO array!i i This sets aside an 11 word (22 byte) area o
f memory, and assigns the address of the start of this area to the variable 'ar
ray'. The vector is accessed by the indirection operator '!', where 'array!i' m
eans the cLocomotive BASIC and Mallard BASIC are not structured languages.
(ii) BCPL is a compiled language BASIC is usually an interpreted language.
When a program is run, the BASIC interpreter reads each line and executes the a
ppropriate machine code instructions. This decoding is done every time a line i
s executed. The result is that BASIC programs run very slowly when compared wi
th a machine code program doing the same thing. A BCPL program must be submitte
d to the compiler b Nontents of address (array+i). !array means the same as arr
ay!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
and calculating the required word from the array subscripts. StringLET text
"BCPL is a typeless language" This stores the string "BCPL is a typeless lan
guage" somewhere in LET inbuff VEC 82 LET outname VEC 20 LET outbuff VEC
82 LET c 0 pa writes("Input file name ") reads(inname) writes("*n
Output file name ") reads(outname) TEST findinput(inname, inbuff) THEN
$( selectinput(inbuff) TEST findoutput(outname, outbuff) THEN $(
selectoutput(outbuff) $( c rdch() UNLESS cendst
reamch DO wrch(c) $) REPEATUNTIL c endstreamch endwrite()
$) ELSE writes("Can't open ou memory, preceded by a byte containing t
he length of the string. The value assigned to the variable 'text' is the addre
ss of this length byte. Note that this is only possible because the memory addr
ess is the same length as the BCPL word (this is not a coincidence!). Note T
here 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 c
areful! The BCPL book contains a very useful sectitput file") endread()
$) ELSE writes("Can't open input file") $) Points to note 1. The use
of /* and */ to enclose comments. 2. The use of LET to declare the variables
'inname', 'inbuff', 'outname', 'outbuff', and 'c'. All variables must be declar
ed before use, and the declarations must appear before any commands. 3. The
use of VEC to define vectors as described above. 4. reads. Another library pr
ocedure, to read a string from the keyboard into the vector gion on the pitfall
s of BCPL programming. Single quotes enclose a character and define a constan
t whose value is the ASCII code of that character. Double quotes enclose a st
ring 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
message on the screen. GET "CLIBHDR" LET start() BE $( writes("Hello e
veryone!") $) Points to note 1. LET and BE are BCPL keywoven as paramet
er. 5. findoutput, findinput, readch, writech. Library procedures to open fi
les, and read and write characters. 6. TEST ... THEN ... ELSE. A conditional
command. Section brackets are used to enclose the block of commands that will b
e executed if the test succeeds or fails. 7. REPEATUNTIL. The preceding bloc
k (enclosed in section brackets) is repeated until the condition becomes true (
in this case when the end of the file is reached). pa ce 7. SUMMARY OF THE BC
PLrds. BCPL keywords are printed in upper case throughout this manual for clari
ty. It is not necessary to type them in upper case as the compiler ignores the
distinction. 2. start(). This is the procedure that must be present. The bra
ckets indicate that 'start' is the name of a procedure. They will often contain
parameters for the procedure. 3. $( and $). These are section brackets, mark
ing the start and end of the procedure 'start'. 4. writes. This is a BCPL pr
ocedure (n LANGUAGE The BCPL language is best considered in two parts. Firs
t the standard language comprising the commands and syntax for expressions, co
nstants etc. Second the input/output library routines which are mostly procedur
es written in BCPL. There are a fairly standard set of these, but this implemen
tation 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 keyw
ord and so the procedure must be defined somewhere (see below). 5. GET "CLIB
HDR". This is a directive (an instruction to the compiler) to compile the BCPL
code contained in the file 'CLIBHDR'. This file is a library of useful procedur
es, including one called 'writes'. (ii) A slightly more complex BCPL progr
am GET "clibhdr" /* This is a copy routine */ LET start() BE $(
LET inname VEC 20 Nmay also contain digits and full stops. All characters
significant. (ii)Number. Can be decimal, octal (prefix with # or #O), hexadecim
al (prefix with #X), or binary (prefix with #B). (iii) String constant. Enclos
e in double quotes. (iv)Character constant. Enclose in single quotes. Certai
n characters are represented within a string or character constant in a special
way *" the " symbol *' the ' symbol ** the * symbol *B the backspace char
acter *C a carriage return (13) pa Note PCW users will fin
d two of the operator symbols not shown on their keyboards. They are obtained b
y the following key combinations --EXTRA key and the key marked with a 1/2 sym
bol. --EXTRA key and the full stop key. Section brackets and compound comm
ands Many of the commands described below apply to a single command. For exa
mple 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
and FALSE. Pre-defined constants whose values are the bit patterns representing
true and false. Operators Addressing operators !indirection (subscri
pt), e.g. !a, a!b address of, the inverse of !, so (!a) a Arithmetic operat
ors +addition --subtraction group several commands as a 'compound command',
which is considered as a single command for these purposes. The section bracke
ts are $( and $). The commands to be grouped should be enclosed between these
symbols. Commands Assignment is used to assign a value to a variable
. There are three basic forms of the assignment statement variable expressi
on variable!subscript expression !variable expression Conditional comma
nds IF express *multiplication /integer division REMinteger remainder pa
Relational operators equal to (or EQ) not equal to (or or NE) less than (o
r LT) greater than (or GT) less than or equal to (or LE) greater than or equa
l to (or GE) Logical operators or (or / or LOGOR) &and (or / or LOGAND)
not (or or NOT) EQVbitwise equivalence NEQVexclusive or Shift operator
s logical shift left, e.g. a4 shifts left 4 bits logical shift right Ot
her coion THEN command UNLESS expression DO command TEST expression THEN comma
nd 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 co
mmand REPEAT command REPEATUNTIL expression command REPEATWHILE expression WH
ILE 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 expr
essions (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 exp
ression is b, otherwise c. (iii)TABLE, e.g. TABLE a,b,c,d This is an expressio
n whose value is the address in memory at which the table of values is stored.
The values must be constants. (iv)VALOF (see below) Order of precedence o
f operators (highest first) 1. Bracketed expression case i takes
values starting at a, incrementing by 1 until greater than b. In the second ca
se i is incremented by c. c must be a constant expression. SWITCHON SWI
TCHON expression INTO compound command The compound command consists of a seq
uence of commands with case labels attached to commands. A case label takes the
form 'CASE constant', and causes execution to start at the following instruct
ion if expression has the value constant. Execution w 9.
2. Function call 10. 3. ! as
subscript 11. & 4. , ! as indirec
tion 12. 5. %
13. EQV NEQV 6. * / REM ABS 14.
-- (conditional expression) 7. + -- 15. TABLE
8. 16. VALOF Nill continue un
til an ENDCASE command, or to the end of the SWITCHON compound command. The lab
el '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
the use of SWITCHON see the 'writef' routine in CLIBHDR or ALIBHDR. Blocks a
nd scope of identifiers A BCPL program is made up of one or more blocks. A bl
ock 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
is relevant '' may be used in place of the expression. LET array VEC consta
nt This creates a vector with the variable 'array' containing the address of
the vector. Procedures LET proc(p1, p2, ...) expression LET proc(p1,
p2, ...) BE command These define a procedure with parameters p1, p2,.... The
first form provides a function, as a value is retlowed by a sequence of comman
ds. To be precise a BCPL program is a single block, and any block may contain n
ested sub-blocks. The scope of an identifier (variable or procedure) defines
those parts of a program where that identifier can be used. Each identifier mu
st be declared with a declaration. The scope of that identifier is that same de
claration (thus allowing recursive definitions), and all subsequent declaration
s and commands within that block. Thus iurned. The expression is often a VALOF
clause. This takes the following form VALOF command The command is usuall
y a compound command which contains one or more RESULTIS commands RESULTIS e
xpression When a RESULTIS command is executed the VALOF command has finished
and the value of the expression is returned. The second form of the procedur
e declaration defines a routine. No value is returned. Either form of proced
ure is invoked by a command proc(a,b,..f a routine is called which is outsid
e the block (and routines are usually separate blocks) then variables defined w
ithin 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 wi
thin that block (even though they are in scope). An attempt to do so will prod
uce the error message 'dynamic free variable used'. pa produce the error messa
ge 'dynamic free variable used'. p.) A function call can appear in an expres
sion. 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 define
d 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 redun
dant in this implementation as it is used when separate compilation is availabl
e. It is included for compatibility with other BCPL compilers. A global vect
or can be defined as follows. Declare the name of the vector as a static variab
le, then declare a dummy vector in 'start' and assign this to the static variab
le. 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 1
1 hm 0 fm 2 fo % -----L---!-------!-------!
-------!-------!-------!-------!-------!--R Declarations The LET declaration
All variables and routines must be declared before they can be used. There
are several forms of declaration LET NNIFEST $( name1val1 name2val2 ... $)
The MANIFEST declaration attaches a name to a constant. It is not a variabl
e 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. Sim
ultaneous declarations A LET declaration may be followed by any number of AND
declarations. All these declarations are considered as a single declaration f
or the purposes of scope of re would otherwise be an an ambiguity. Blank line
s and spaces are ignored except where they are required to separate items. PROT
EXT soft spaces, soft line feeds, and markers are ignored. pa ---!-----!-----
!-------!-------!-------!-------!-------!-------!----R ce
8. THE ARNOR BCPL LIBRARIES The libraries supplied with the compiler provid
e procedures for writing to the screen, printer or files and reading from the k
eyboard or files. Each of thidentifiers. This allows mutually recursive proced
ures LET proc1(...) BE $( ... proc2(...) ... $) AND proc2(...) BE $(
... proc1(...) ... $) pa Strings Strings are stored as follows One by
te being the length of the string The string, one character per byte Since B
CPL works with 16 bit words a special means is needed to access the individual
characters of a string. This is the infixed byte operator '%'. To access the nt
h character of a strinese procedures is described below. The two versions of t
he compiler need different libraries which, although they look the same from th
e outside, have different internal workings determined by the different operati
ng systems. There is an additional AMSDOS library which contains routines which
are only relevant to the CPC machines. Manifest constants defined in the li
braries These should be used where appropriate to make programs both readabl
e and portable. They define g use string%n To access the length of a string
use string%0 These can be read and written to, allowing strings to be manipul
ated in any desired manner. Transfer of control FINISH This causes ex
ecution of the program to stop. RETURN Control returns to the calling rout
ine. BREAK Used within a repetitive command (UNTIL, WHILE, REPEAT, REPEAT
UNTIL, REPEATWHILE, or FOR) it causes execution to resume at the first command
after the repetitive comimplementation dependent constants. ---!-----!-----!-
------L-------!-------!-------!-------!-------!----R namevalue meaning and us
e bitsperword16BCPL word size, for program portability bytesperword2BCPL wor
d size, for program portability endstreamch--1hard end of file character maxin
t32767the largest possible integer minint--32768the smallest possible integer
newlinech269the new line character, *N, which is expanded to carriage return fo
llowed by line feed printstreammand. LOOP Control passes to the point whe
re the repetitive command condition is tested. For a FOR command control passes
to the point where the control variable is incremented. ENDCASE Control
passes to the command after the end of the SWITCHIN compound command. GOTO e
xpression Rarely required in BCPL, the GOTO command evaluates the expression
and jumps to the address obtained. The expression is usually a label which is
defined by being at1stream number to select output to printer softeofch26soft e
nd of file character tickspersec300multiply the value returned by 'time' by thi
s to get the time in seconds. AMSDOS only. vdustream0stream number to select s
creen/keyboard ---!-----!-----L-------!-------!-------!-------!-------!----
---!----R Key to procedure descriptions Effect brief explanation of the proc
edure Returnsdetails any value returned by the procedure. All library procedur
es may be calltached to a command, e.g.labelname command pa Comments and la
yout 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
ignored until the compiler reaches the symbol */ Additionally a in column 1
causes the whole line to be ignored. Thus PROTEXT stored commands are ignored.
Multiple command lines are allowed. Commands must be separated by a semicol
on () if the Ned as routines, whether or not they return a value. Only those p
rocedures that return a value may be called as a function. Note that several p
rocedures return values in a supplied vector, but these will be listed as 'noth
ing' since there is no function value returned. Locationthis indicates where t
he procedure is defined. The location for the CP/M version is given first, foll
owed by the location for the AMSDOS version. Most of the library procedures ar
ace of the % character. The conversion characters available are listed below.
Some of these must be followed by a number to specify the required field width.
These are marked with 'n', which can be a decimal or hex digit (so 'F' gives
the maximum width of 15). -------------- !-----L-!-------!-------!-------!---
----!-------!----R S -- print a string C -- print a character Xn -- print a
hex value. If the field width is too small, only the least significant dige wri
tten 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 NEW
LINE() EffectStarts a new line in the currently selected output. The exact e
ffect in Arnor BCPL is to output a carriage return (13) followed by a line feed
(10). ReturnsNothing LocationCLIBHDR, ALIBHDR NEWPAGits will be out
put. On -- print an octal value. If the field width is too small, only the lea
st 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 o
f spaces. N -- print an integer in decimal with no leading spaces % -- prin
t 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
to output the form feed character (12). ReturnsNothing LocationCLIBHDR1,
ALIBHDR1 WRCH(char) EffectThe character is sent to the currently selecte
d output stream. Wrch('*N') has the same effect as newline(), i.e. carriage re
turn and line feed are output. ReturnsTRUE if successful, FALSE if an error o
ccurred. LocationCLIBHDR, ALIBHDR Exampleswrch(char) wrtionCLIBHDR, ALIBH
DR Example LET convert 100 writef("%N in hexadecimal is %X4*N", convert,
convert) would print 100 in hexadecimal is 0064 pa WRITEHEX(integer,w
idth) EffectThe integer is output as an unsigned hexadecimal integer, right
justified in a field of the specified width, with leading zeros. If this width
is insufficient then the least significant digits are output. ReturnsNothin
g 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
output in the minimum width. The number output will be in the range (--32768,3
2767). 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)
EffectThe integer is output in decimal in the minimum width. This is the same a
s WRITED(integer,0). ReturnsNothing LocationCLIBHDR, ALIBHDR WRITEOCT
(integer,width) EffectThe integer is output as an unsigned octal integer, ri
ght justified in a field of the specified width, with leading zeros. If this wi
dth is insufficient then the least significant digits are output. ReturnsNot
hing LocationCLIBHDR, ALIBHDR Examplewritring parameter which gives the t
emplate to be used for printing. It also takes another set of parameters (up t
o 11) which give the items to be printed. Note that it is not necessary to prov
ide a BCPL procedure with all of its formal parameters. The template parameter
is a string which may include the % character followed by a conversion charact
er(s). The template string is printed out with the other parameters inserted i
nto it in pl Nteoct(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 f
ield width. If the width is longer than the string then spaces are output at t
he right. If the width is shorter than the string, the whole string is printed.
ReturnsNothing LocationCLIBHDR1, ALIBHDR1 WRITEU(unsigned,width)
EffectThe 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 ret
urned to the current stream if RDCH is used, the facility is not provided at th
e primitive I/O routine level (that is RDVDU and READCH). ReturnsNothing
LocationCLIBHDR, ALIBHDR Examplech rdch() REPEATUNTIL ch13 unrdch() pa
(c) Stream Selection Routines INPUT() EffectThis will return a value rep
resentrameter is treated as an unsigned integer and output in decimal, right ju
stified in the specified width. If the width is too small the number is printe
d in the minimum width. The number output will be in the range (0,65535). Re
turnsNothing LocationCLIBHDR1, ALIBHDR1 pa (b) Input Routines RDCH()
EffectReads a character from the current input stream. ReturnsThe character
read. LocationCLIBHDR, ALIBHDR READN() EffectReads a decimal integer
ing the current input stream. Zero means the keyboard is the current input str
eam, any other value is the address of the buffer associated with the file from
which input is being taken. ReturnsThe current input stream LocationCLIB
HDR, ALIBHDR OUTPUT() EffectThis will return a value representing the cu
rrent output stream. Zero means the VDU is the current stream, one means the p
rinter is the current stream, any other value is the address from the current
input stream. Leading spaces are ignored. ReturnsThe number read. Locatio
nCLIBHDR, ALIBHDR READS(string) EffectA string is read from the current
input stream. The parameter is a vector in which the string will be stored. Th
e string must be terminated by a carriage return. The DEL, or DEL key may be us
ed to delete backwards. If ESC or STOP is pressed when the cursor is not at th
e 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 stre
am LocationCLIBHDR, ALIBHDR SELECTINPUT(stream) EffectThis is used to
change the currently selected input stream (i.e. that used by rdch). A stream
value of zero selects the keyboard. Any other value must be the address of the
buffer associated with a file, and causes input to be taken from that file. Th
e file must previously have been opened using FESC or STOP is pressed when the
cursor 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 Loc
ationCLIBHDR, 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 Loc
ationCLIBHDR, ALIBHDR pa SELECTOUTPUT(stream) EffectThis is used to chang
e 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 caus
es output to be sent to that file. The file must have been previously opened u
sing FINDOUTPUT. ReturnsNothing Locatlt as its second. It converts the st
ring to a number in that base and returns it as the result. ReturnsThe numbe
r obtained by the conversion LocationCLIBHDR, ALIBHDR ExampleA READX funct
ion to input a hexadecimal number is easily written LET readx() VALOF $(
LET string VEC 128 reads(string) RESULTIS s
trtonum(string,16) $) UNRDCH() EffectPuts back the last character read
from the currently selected stream. T NionCLIBHDR, ALIBHDR Examplesselectou
tput(outfilebuf) selectoutput(printstream) (d) File I/O Routines
ENDREAD() 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 LOG
OR char endstreamch DO $( wrch(char) char rdch() $) endread(buffer)
selectinput(vdustream) $) ELSE writef("No messages*N") This will ask fo
r 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 whi
ch will be used for the file buffer. This vector should be 82 words long under
CP/M and 1024 words long under AMSDOS. The filename must be a valid CP/M or AM
SDOS filename, and may include a drive !-------!-------!----R pa (e) The Prim
itive I/O Operations The library contains primitive routines for reading/writ
ing to files, reading/writing to the VDU, and writing to the printer. The high
er level RDCH and WRCH routines switch between these routines when called upon
to do so by SELECTINPUT or SELECTOUTPUT. It is quite possible to use the primit
ive routines separately from RDCH/WRCH and so read/write files and the screen/k
eyboard at the same time without using SELEspecifier. ReturnsIf the file was
opened successfully, the value 'TRUE' is returned, otherwise 'FALSE'. Locat
ionCLIBHDR, ALIBHDR ExampleLET inbuf VEC 82 TEST findinput("Anames.dta",inb
uf) THEN selectinput(inbuf) ELSE error("Cannot open file") FINDOUTPUT(fi
lename,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 us
ed for the file buffer. This vector sCTINPUT or SELECTOUTPUT. These routines ar
e RDVDU, WRVDU, READCH and WRITECH. -------------- L-------!-------!-------!
-------!-------!-------!----R CLOSEIN(buffer) EffectThe input file ass
ociated with the buffer is closed. ReturnsTRUE if the file was closed success
fully, FALSE if not. LocationCLIBHDR, ALIBHDR CLOSEOUT(buffer) Effec
tThe output file associated with the buffer is closed. It is essential that eit
her this routine or ENDWRITE is ushould be 82 words long under CP/M and 1024 w
ords long under AMSDOS. The filename must be a valid CP/M or AMSDOS filename, a
nd 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 select
output(outbuf) ELSE error("Cannot open file") pa REWIND() EffectThe curr
ent input stream is rewound. If the ced after writing to a file, as it causes t
he last section of data to be written to the disc. ReturnsTRUE if the file wa
s closed successfully, else FALSE. LocationCLIBHDR, ALIBHDR FLUSH() E
ffectEmpties the keyboard buffer. ReturnsNothing LocationCLIBHDR, ALIBHDR
pa PRBUSY() EffectFinds out if the printer is busy. ReturnsTRUE if bus
y, FALSE if not LocationCLIBHDR, ALIBHDR ExampleIF prbusy() THEN writes("P
ut the printer on line*N") WHILE prbusy() LOOPurrent stream is the keyboard th
is has no effect, if a file the file pointer is set to the start of the file, s
o the next input will be taken from the start. REWIND is not provided in the A
MSDOS version. ReturnsNothing LocationCLIBHDR ---!-----!-----!-------
!-------!-------!-------!-------!-------!----R Example of the use of file I/O
routines LET buffer VEC 1024 LET filename VEC 20 writef("Please enter th
e message file name ") reads(filename) TEST fi N PRCH(char) EffectSen
ds 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 bu
sy. 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 BCP
L RESULTIS function(v,arraysize) $) Returnsthe value returned by the fu
nction LocationPre-defined, pre-defined BYTEMOVE(start,dest,size) Eff
ectThis 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 p
arameter then they should be multiplied by two as BCPL works with word addresse
s. The old and new blocks may overlap. ReturnsDO rdch() RDVDU() Effe
ctReads a character from the keyboard, whatever the currently selected input st
ream. This routine is called by RDCH if the keyboard is the selected input str
eam. 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
read. LocationPre-defined in CP/M compiler, ALIBHDR pa READCH(buffer)
EffectReads a character from a file, whNothing LocationCLIBHDR1, ALIBHDR1
Examplebytemove(buffer*2+36,buffer*2+16,16) CALL(address,af,bc,de,hl,ix)
EffectCalls a machine code routine at a byte address. All parameters MUST be s
upplied as values are returned. The values returned by the machine code routine
are passed back in the variables. ReturnsNothing LocationCLIBHDR1, ALIBH
DR1 pa CAPITALCH(char) EffectIf the character is a lower case letter the
upper 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, A
LIBHDR 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 t
he selected input stream. REWINDIN is not provided in the AMSDOS version. Re
turnsNothing LocationCLIBHDR ed, otherwise the original character is retu
rned. ReturnsThe converted character LocationCLIBHDR, ALIBHDR COMPCH(
char1,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 distinc
tion 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 Locatio
nCLIBHDR, ALIBHDR Exampleswritech('$',outfilebuf)// CP/M version writech('$'
)// AMSDOS version WRVDU(char) EffectWrites a character to the screen, w
hatever the currentwer case. The result is zero if the strings are the same, p
ositive if string1 follows string2 alphabetically, and negative if string2 fol
lows string1. ReturnsThe result of the comparison, as above LocationCLIBHD
R1, ALIBHDR1 DECVAL(digit) EffectThis returns the decimal value of a hex
adecimal digit. ReturnsThe decimal value of the digit LocationCLIBHDR, ALI
BHDR Exampledecval('A')// returns 10 pa DELETE(filename,buffer) Effect
The first ply selected output stream. This routine is called by WRCH if the scr
een is the selected output stream. ReturnsTRUE LocationCLIBHDR, ALIBHDR
pa (f) Miscellaneous Routines APTOVEC(function,arraysize) EffectThis wi
ll create a dynamic array of size arraysize and then pass the address of this a
rray along with its size to the function. It will return the result of the fun
ction and is equivalent to LET aptovec(function,arraysize) VALOF $( LET
v VEC N arameter is a string specifying the name of a file. This fi
le is then deleted from the disc. The CP/M version requires an 82 word buffer,
the AMSDOS version requires no buffer. ReturnsTRUE if the operation succeede
d, FALSE if a disc error occurred. LocationCLIBHDR1, ALIBHDR1 Examplesdel
ete("tempfile",buffer)// CP/M version delete("tempfile")// AMSDOS version
LEVEL(array) EffectThis returns the state of the BCPL program in the array g
iven. The array musidentifying the operating system and computer on which the p
rogram 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 Locat
ionCLIBHDR1, 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
and DE registers. The addresses of the variables must be passed in order that r
esults 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. Return
sNothing LocationPre-defined, pre-defined LONGJUMP(address,array) Eff
ectThis will set the state of the program according to the array given. The arr
ay must have been set previously by the use of LEVEL. Once the state has been
set it will jump to address. See section 9 for more details. Returnsbe retur
ned. The returned values of the A and HL registers from the BDOS are returned
in the variables c and de respectively. ReturnsNothing LocationCLIBHDR on
ly BDOSB(c,de) EffectThis is similar to BDOSA except that results are no
t returned. The values of c and de are passed, not their addresses. Returns
Nothing LocationCLIBHDR only BIOS(n,a) EffectBIOS routine n is called
and the value returned by the BIOS in A is returned in thNothing LocationPr
e-defined, pre-defined pa RANDOM() EffectThis function returns a sequence
of pseudo-random numbers. The sequence will always be the same unless the see
d is initialised first. The seed is stored in a static variable called 'randoms
eed', and this should be initialised to different values to produce different
sequences. The sequence runs through all possible 2 byte values. ReturnsA ra
ndomly generated integer. LocationCLIBHDR1, Ae variable a. The address of a
must be passed. This routine is used by PRBUSY. ReturnsNothing LocationCLI
BHDR 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 ret
urned 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,
buffer) 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 b
uffer, the AMSDOS version requires no buffer. ReturnsTRUE if the operation s
ucceeded, FALSE if a disc error occurred. LocationCLIBHDR1, ALIBHDR1 Exam
ples rename("oldname","newname",buffer) // CP/M version rename("oldname","newn
ame") //AMSDOS version STOP(returncnd stores the CP/M command tail
(from #x80) in the vector as a string. This allows BCPL programs to access para
meters typed on the CP/M command line. The vector should be 64 words long.
ReturnsNothing LocationCLIBHDR1 only (h) Routines provided in the AMSD
OS libraries only EXTERNAL(command,nparms,parmblock) EffectThis allows a
BCPL program to access an AMSDOS external command. It is used by DELETE and RE
NAME. The parameters are passed in ode) EffectExecution of the program termi
nates. Under CP/M Plus the supplied parameter is used to set the program retur
n 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 Loc
ationCLIBHDR1, ALIBHDR1 pa UPPERCASE(char) EffectThis is the same as CAPI
TALCH. ReturnsThe converted character LocationCLIBHDR, ALIBHDR VERSIO
N() EffectReturns a number !N!!!!!!!!!the form required by the firmware fo
r calling an external command. See the DELETE and RENAME routines in ALIBHDR1 f
or details of how to use this routine. ReturnsNothing LocationALIBHDR1 on
ly TIME() EffectReturns the time in units of 1/300 second, as maintaine
d by the AMSDOS firmware. ReturnsThe time LocationALIBHDR1 only pa (i) R
outines provided only for compatibility -------!-------!-------!-------!-----
--!-------!-------!-------!----R T pen, plot, plotr, release, rsx, sound, spee
dink, speedkey, stream, strswap, tag, tagoff, transparent, window, xpos, ypos
(k) DEBUG There is one further library routine provided, which is usefu
l when debugging programs. The routine, DEBUG, is supplied in a separate file,
also called 'DEBUG', and provides various options for displaying variable name
s 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 i
n existing BCPL programs, but the infixed byte operator now makes their use unn
ecessary. -------------- 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 repla
ced by string%pos ReturnsThe character from the string LocationCLIBHDR1,
ALIBHDR1 PACKSTRING(vector,string) EffectPacks given in the file. To us
e 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 call
ed. It is possible to compile the program without DEBUG being called, but with
out the need to remove the calls themselves. Simply replace 'GET"DEBUG"' by 'LE
T debug() BE RETURN'. This will substitute a dummy routine. pa /!his will s
ubstitute a dummy routine. pa a vector containing one character per word i
nto a string containing two characters per word. This routine is included for
compatibility with older BCPL systems. ReturnsNothing LocationCLIBHDR1, A
LIBHDR1 PUTBYTE(string,pos,char) EffectPuts a character into a string. T
his routine is included for compatibility with older BCPL systems, and would u
sually be replaced by string%pos char ReturnsNothing LocationCLIBHDR1, A
LIBHDR1 UNPACKSTRINBCPLM3 YYSe Unexpected node in expression
Declarati---!-----!-----!-------!-------!-------!-------!-------!------
-!----R pn 49 tm 3 bm 11 hm 0 fm 2 fo %
ce 9. DIFFERENCES FROM STANDARD BCPL The INLINE command This is an exten
sion to the normal BCPL command set and allows Z80 code to be incorporated dire
ctly into a BCPL program. The inline command is followed by G(string,vector)
EffectUnpacks a string containing two characters per word into a vector contai
ning one character per word. This routine is included for compatibility with ol
der BCPL systems. ReturnsNothing LocationCLIBHDR1, ALIBHDR1 pa (j) AMSD
OS Graphics and other routines ---!-----!-----!-------!-------!-------!------
-!-------!-------!----R These routines are included in the file "AMSDOS", and a
re relevant only to CPC machines. They provide the means for a BCa list of cons
tants separated by commas. The low byte of these constants is taken and inserte
d directly into the object code. This allows procedures to call firmware routin
es etc. and has been used in the LIBHDR files. In order to use this facility p
roperly you must be aware of the way that the compiler stores variables and reg
isters which must be left intact. See appendix 1 (technical information). e.
g. INLINE 205,#x5A,#xBB will call the AMSDOS print character rPL program to
access the computer's graphics and other firmware facilities, and in most case
s correspond directly to a Locomotive BASIC command. For details of how to use
these routines consult the file AMSDOS, which lists the equivalent BASIC routin
es. List of routines border, clg, cls, cursdi, cursen, cursoff, curson, dr
aw, drawr, ent, env, frame, gpen, gpaper, gtest, gtestr, gwindow, gwrch, ink, i
nkey, inkmode, keyvalid, locate, mode, move, mover, opaque, origin, paper, "N"
""""""""outine -- TXT OUTPUT. The infixed byte operator % This is an ext
ension to standard BCPL which is supported. The infixed byte operator will extr
act a particular byte from a vector. In use this operator is very similar to th
e ! operator except that it cannot be used as a unary operator and that the sec
ond operand always gives the byte offset from the first operator. The main use
of this operator is with strings to extract a particular character from the st
ring. e.g. dress to that global variable in your program. This means that the
procedure can then be assigned to. LEVEL and LONGJ
UMP LEVEL works in a slightly different way from most BCPL implementations.
It usually returns a single 1 word value representing the state of the BCPL sta
ck at a point in the program. Due to the limitations of the Z80 in stack addres
sing 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 s
tring length byte will create a string containing 39 spaces. Undefined i
nitial values The initial value of a simple variable declared in a LET comman
d may be undefined. This is done by using a question mark (). This is used to
aid readability of programs by indicating that there is no relevant initial val
ue of a variable. FINDINPUT and FINDOUTPUT The procedures for opening th
is implementation of BCPL. Instead the LEVEL procedure returns its result in a
4 word vector passed to the procedure. See appendix 1 (techincal information)
for exact details. e.g. LET errorlevel VEC 3 level(errorlevel) Exte
nsions not supported The following features, which are mentioned in the BCPL
book, are not supported separate compilation, floating point extension, the fi
eld selector extension. pa ce A1. TECHNICAL INFORMATION The compiler
all files are slightly different from standard BCPL in that a buffer must be sp
ecified as a parameter, instead of them returning a stream identifier. pa Glo
bal Variables When a procedure is defined in standard BCPL the compiler che
cks to see if a GLOBAL variable with the same name is in scope. If it is in sc
ope, then that variable will be initialised with the address of the procedure.
If there is no such variable in scope then a new STATIC variable will be create
d and ocates dynamic storage from the hardware stack for ordinary local variabl
es. 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 firs
t formal parameter is the return address from the procedure which called the c
urrently active procedure. Below this is the old IX register from the calling p
rocedure 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
and calls that address. The reason for this indirect calling is to enable easy
communication between separately compiled units. As the ARNOR compiler does no
t 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
the 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 decl
ared and SP will point to the low byte of the last local variable currently in
scope. When a new local variable is declared, its initial value is calculated
and then pushed 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 s
pace is pushed onto the sssociated with a GLOBAL variable in its definition is m
eaningless as there is no actual GLOBAL vector. The index number is, however,
retained for compatability with other compilers. The outcome of all this is tha
t although it is possible to read the address of a procedure, and so pass proce
dures as parameters, it is not possible to assign to a procedure. You can, howe
ver, set up a global variable with a different name from a procedure and then a
ssign 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 t
he stack looks like this b IX + 127
a IX + 125 ret addr IX + 123 old IX
IX + 121 vec ptr IX + 119 z IX + 1
17, 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 t
he base of the current vector allocation. The 16th and 17th bytes always point
to the top of the current vector allocation. All of the vector space required f
or any particular procedure activation is allocated on entry to that procedure
and de-allocated on exit. When a vector is declared within a procedure it is gi
ven a chunk of memory within this allocation. The compiler is a two pat the
end of their block), the stack pointer is moved up to release the space used.
pa Static variables are allocated their space at compile time. They are embedd
ed in the code and are re-initialised each time the program is run. The stack i
s placed at the top of the available memory. For CP/M versions this is calculat
ed from the start of the BDOS. In AMSDOS versions, static variable space is de
termined at compile time, possibly using the H option. As already mentioned vec
tor spacss compiler. The first pass reads the source text of the program, does
syntax analysis of it and produces an applicative expression tree which represe
nts the program. The second pass goes over this tree and produces code for it.
The second pass is in fact done twice the first time no code is produced but th
e program is checked for any semantic errors such as undefined identifiers or
illegal assignments. If this pass runs smoothly with no errors being picked up
then the second passe is taken from the area of memory directly after the progr
am. 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 c
e A2. SUMMARY AND INDEX OF LIBRARY ROUTINES The letter at the start of eac
h line in the following list of library routines indicates the degree of porta
bility of the routines. Full details are given in Appendix 3. Note A means AMS
DOS version only, C means CP/M version only S indicates routine is part of th
e standard BCPL I/O library D indicates a standard BCPL routine but with a slig
ht difference in the way it is use Vectors
------------------ Program and static va
riables ------------------ runtime routines
------------------ program start
------------------ 0 When writing
any inline code the user must ensure that the IX register and the SP are restor
ed to their former positions when the d. F indicates frequently found similar
routines in BCPL systems All unmarked routines are Arnor BCPL specific. --
!---!------------!----!-------!-------!-------!-------!-------!---------R name
pgdescription Saptovec 40call a routine with a dynamically allocated vector
Cbdosa 45call the BDOS, returning values Cbdosb 45call the BDOS, not returning
values Cbios 45call the BIOS, returning a value bytemove 40move a block of mem
ory using byte addresses Fcall 40call acode finishes. Failure to do this will a
lmost certainly cause the program to crash. The Amstrad also requires that the
alternate register set is not used. The LEVEL library procedure stores infor
mation about the state of computation in a 4 word vector. The 4 values which ar
e 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 in
formation is used to restore the state $N$$$$$$$$$ machine code routine Fcapi
talch 41convert character from lower to upper case closein 37close an input fil
e closeout 37close an output file Fcompch 41compare two characters Fcompstrin
g 41compare two strings debug 48debugging aid decval 41convert a hexadecimal d
igit to decimal Fdelete 42delete a file Sendread34close the current input stre
am Sendwrite 34close the current output stream Aexternal 46call an external co
mmand Dfindinput 35open an input fi decimal number wrvdu 39write character to
the screen pa ---!-----!-----!-------!-------!-------!-------!-------!-------!
----R ce A3. PORTABILITY Most of the above I/O routines will be found in v
irtually 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
these less standard routines should be used as little as possible. Routi
nes that are part of the standard BCle Dfindoutput 36open an output file Cfirm
ware 45call the firmware (CP/M Plus only) flush 37flush the keyboard buffer Sg
etbyte 47get a byte from a string Sinput 33return the currently selected output
stream Dlevel 42get pointer to current environment Dlongjump 42jump to outer
level of program Snewline 27start a new line in the output Snewpage 27start a
new page in the output Soutput 33return the currently selected output stream p
a Spackstring 47coPL I/O library (those marked 'd' are used in a slightly
different way in Arnor BCPL) aptovec, endread, endwrite, findinput(d), findou
tput(d), getbyte, input, level(d), longjump(d), newline, newpage, output, packs
tring, putbyte, rdch, readn, reads, rewind, selectinput, selectoutput, stop, u
npackstring, unrdch, wrch, writed, writef, writehex, writen, writeoct, writes.
Routines that are not entirely standard (though many BCPL systems have som
ething 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 F
random 42return a pseudo-random number Srdch 31read a character rdtest 38see i
f a key has been pressed rdvdu 38read character from the keyboard readch 39rea
d 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,
writet, writeu. Routines specific to Arnor BCPL bdosa, bdosb, bios, byte
move, 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.
ERROR MES36rewind the input stream Crewindin 39rewind an input file Sselectinp
ut 33change the input stream Sselectoutput 34change the output stream Csetfcb-
set up a file control block Sstop 43stop a program and set return code strtonu
m 32convert a string to a decimal number Ctail 46returns the CP/M command tail
as a string AFtime 46return the time Sunpackstring47expand a string into a vec
tor Sunrdch 32put back the last read character Fuppercase 44same as capitaSAGE
S There are three main sets of error messages which can occur. These are f
atal 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
stop compilation at the end of the first run of phase 2. Most error messages g
ive 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 c
haracter writech 39write a character to the output file Swrited 27write a deci
mal number Swritef 28formatted write Swritehex 29write a hexadecimal number S
writen 29write a decimal number in minimum width Swriteoct 29write an octal num
ber Swrites 29write a string Cwritesector-write a 128 byte sector to disc Fwr
itet 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 lin
e number refers to the position of the line within the file, and not to the to
tal 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 some
times be solved by re-using local variable names. Out of symbol space Ve
ry similar to the above except that the program may not be too big. Try compili
ng it to disc error message. Syntax errors are reported as occurring near a ce
rtain line. This is the line within a particular file. If the compiler listing
is 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 T
he expression being examined was faulty in some way. Maybe a command name was u
sed as an identifier. Bad vector definition A vector definition was bad
in some way. In particuwhich allows twice as much symbol space. If you are comp
iling a piece of text in memory from PROTEXT or MAXAM then saving the text to d
isc, 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
the disc is full. Can't open input file The filename given in a GET dire
ctive could not be found on the disc. Can't open output file The compil
er was trying to open a file to outlar only one vector may be declared in any L
ET command (although simultaneous definitions are allowed). Bad procedure
definition A procedure definition was badly made. May have been some other f
orm of definition which went wrong. Bad FOR loop The FOR loop was badly
formed in some way. need or in constant definition Constant, Global an
d 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 re
ason 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 anothe
r key press. Pressing escape again causes this error while any other key causes
compilation to continue. Undefined START All programs must have a proc
edure called START. The program submitted did not have this procedure. Bad
GET Due to the limitations of AMSDOS only oing Missing $) A $) was e
xpected but not found. Check the number of opening and closing section brackets
in the program. pa Missing $( A compound statement was needed but the open
ing $( 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 ope
ned for input at any one time. A file was opened which contained a GET directi
ve. Will also occur if a piece of stored PROTEXT/MAXAM text attempts to GET its
elf. Non-ASCII file The compiler was instructed to open a file but that
file did not contain ASCII text which is required for the compiler. Users of C
PC versions of PROTEXT should use program mode, which will save the file in ASC
II format. File intact This occurs on CP/M versions when caused by omitt
ing the space after a section bracket. Expecting command A command was
expected but one was not found. This can be caused by, for example, omitting th
e colon in an assignment command, or by a declaration appearing after a command
. Expecting number A number was expected but not found. Usually followin
g a #. Expecting , The compiler was expecting a comma (,) but did not fi
nd one. Occurs in a conditional expression. ELSE expected The ELSE path
e destination file existed but the user typed N when asked if the file should b
e deleted. Bad SOURCE name CP/M versions check the source name given, an
d if it is invalid in some way e.g. has an extension of more than 3 letters the
n this error will be given. Bad DESTINATION name As above. pa (ii) Sy
ntax Errors Phase 1 errors are all syntax errors within the program. Often th
e cause will be a missing $) or ) which will probably cause what may at first
seemto 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 SWTICHO
N command must be followed by the keyword INTO. In this case it was not. pa e
xpected A colon is expected after a case label or DEFAULT but the compiler d
id not find one. Expecting identifier The compiler was expecting an iden
tifier e.g. after LET but did not find one. String too long BCPL consta
nt strings can only be 255 characters lor procedure. CASE/DEFAULT found out
side SWITCHON CASE or DEFAULT statements are only valid inside a SWITCHON st
atement. Undefined identifier A variable was used which had not been def
ined 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 var
iable will be initialised to the value of the label, it must be a GLOBAL or STA
TIC. If no variable of the same name is in scope ng. Bad character The
character read was illegal in the present context. e.g. it could have been a i
nstead of /* Bad character constant A character constant was badly forme
d, usually caused by a carriage return following an asterisk. Bad option l
ine The options in an option command must be separated by commas and must en
d with a semi-colon or at the end of the line. is only allowed in definiti
ons Self-explanatory. The only undefined values allthen one will be created.
Need constant expression A constant expression was required but not foun
d. Examples of constants being required are the INLINE statement, declarations
and CASE labels. (iv) Internal compiler errors There is a fourt
h type of error but you should never see these. These are internal compiler err
ors and indicate possible bugs in the compiler. Please report any incidence of
one of these errors to Arnor. Error in translation nodowed are the
initialisation values of simple variables in a LET command. anywhere else is i
llegal. pa (iii) Semantic Errors The rest of the errors are semantic erro
rs which occur during phase two of the compiler. These are usually due to the u
se of an invalid identifier name or a badly constructed loop. Expression/i
d mismatch The number of left and right hand sides in a multiple assignment
or declaration was not equal. Invalid assignment You have attempe
Unexpected node in expression Declaration error Unexpecte
d node in expression Declaraticonstants being required are the INLINE s
tatement, declarations and CASE labels. (iv) Internal compiler errors
There is a fourth type of error but you should never see these. These ar
e internal compiler errors and indicate possible bugs in the compiler. Please
report any incidence of one of these errors to Arnor. Error in transl
ation nodted to assign to something which is not assignable. e.g. a constant or
procedure. RESULTIS outside a VALOF A RESULTIS command was found outsid
e a VALOF block. LOOP found outside loop A LOOP command is only legal in
side one of the looping constructs. BREAK found outside loop A BREAK com
mand is only legal inside one of the looping constructs. RETURN found outsi
de PROC/FUNC A RETURN command is only legal within a procedure or function b
ody. ENDCASE outside a SWITCHON An ENDCASE statement was found outside t
he body of a SWITCHON command. VALOF must contain RESULTIS A VALOF expr
ession 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 procedur
e which had been declared in an oute 'N''''''''' (N )N