Arnor BCPL (UK) (Face A) (1986) (Version CPM) [Original] [UTILITAIRE].dsk
HexaDumpAscii only
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
Tous droits réservés. Reproduction sans autorisation interdite. © Kukulcan