Arnor BCPL (UK) (Face B) (1986) (Version CPM) [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 53 41 4D 64 69 73 6B 31 32 30 38 31 34 00    ..SAMdisk120814.
000030:  28 01 00 00 13 13 13 13 13 13 13 13 13 13 13 13    (...............
000040:  13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13    ................
000050:  13 13 13 13 13 13 13 13 13 13 13 13 00 00 00 00    ................
000060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000100:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
000110:  00 00 00 00 02 09 50 E5 00 00 C1 02 00 00 00 02    ......P.........
000120:  00 00 C2 02 00 00 00 02 00 00 C3 02 00 00 00 02    ................
000130:  00 00 C4 02 00 00 00 02 00 00 C5 02 00 00 00 02    ................
000140:  00 00 C6 02 00 00 00 02 00 00 C7 02 00 00 00 02    ................
000150:  00 00 C8 02 00 00 00 02 00 00 C9 02 00 00 00 02    ................
000160:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000170:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000180:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000190:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0001A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0001B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0001C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0001D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0001E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0001F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000200:  00 42 43 50 4C 20 20 20 20 43 4F 4D 00 00 00 78    .BCPL    COM...x
000210:  02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 00    ................
000220:  00 42 43 50 4C 4D 31 20 20 20 20 20 00 00 00 80    .BCPLM1     ....
000230:  11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20    ............... 
000240:  00 42 43 50 4C 4D 31 20 20 20 20 20 01 00 00 80    .BCPLM1     ....
000250:  21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30    !"#$%&'()*+,-./0
000260:  00 42 43 50 4C 4D 31 20 20 20 20 20 02 00 00 04    .BCPLM1     ....
000270:  31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    1...............
000280:  00 42 43 50 4C 4D 32 20 20 20 20 20 00 00 00 80    .BCPLM2     ....
000290:  32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41    23456789:;<=>?@A
0002A0:  00 42 43 50 4C 4D 32 20 20 20 20 20 01 00 00 80    .BCPLM2     ....
0002B0:  42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51    BCDEFGHIJKLMNOPQ
0002C0:  00 42 43 50 4C 4D 32 20 20 20 20 20 02 00 00 08    .BCPLM2     ....
0002D0:  52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    R...............
0002E0:  00 42 43 50 4C 4D 33 20 20 20 20 20 00 00 00 80    .BCPLM3     ....
0002F0:  53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62    STUVWXYZ[\]^_`ab
000300:  00 42 43 50 4C 4D 33 20 20 20 20 20 01 00 00 35    .BCPLM3     ...5
000310:  63 64 65 66 67 68 69 00 00 00 00 00 00 00 00 00    cdefghi.........
000320:  00 42 C5 44 43 20 20 20 20 42 20 A0 00 00 00 80    .B.DC    B .....
000330:  6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79    jklmnopqrstuvwxy
000340:  00 42 C5 44 43 20 20 20 20 42 20 A0 01 00 00 29    .B.DC    B ....)
000350:  7A 7B 7C 7D 7E 7F 00 00 00 00 00 00 00 00 00 00    z{|}~...........
000360:  00 42 45 44 43 20 20 20 20 43 4F 4D 00 00 00 76    .BEDC    COM...v
000370:  80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 00    ................
000380:  00 43 CC 49 42 48 44 52 20 20 20 20 00 00 00 49    .C.IBHDR    ...I
000390:  8F 90 91 92 93 94 95 96 97 98 00 00 00 00 00 00    ................
0003A0:  00 43 4C 49 42 48 44 52 31 20 20 20 00 00 00 29    .CLIBHDR1   ...)
0003B0:  99 9A 9B 9C 9D 9E 00 00 00 00 00 00 00 00 00 00    ................
0003C0:  00 C3 4F 50 59 20 20 20 20 42 20 20 00 00 00 07    ..OPY    B  ....
0003D0:  9F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0003E0:  00 44 45 42 55 47 20 20 20 20 20 20 00 00 00 28    .DEBUG      ...(
0003F0:  A0 A1 A2 A3 A4 00 00 00 00 00 00 00 00 00 00 00    ...£............
000400:  00 4B 45 59 44 45 46 53 20 50 43 57 00 00 00 03    .KEYDEFS PCW....
000410:  A5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000420:  00 54 49 44 59 20 20 20 20 42 20 20 00 00 00 44    .TIDY    B  ...D
000430:  A6 A7 A8 A9 AA AB AC AD AE 00 00 00 00 00 00 00    ................
000440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0004A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0004B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0004C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0004D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0004E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0004F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0005A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0005B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0005C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0005D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0005E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0005F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0006A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0006B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0006C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0006D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0006E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0006F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0007A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0007B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0007C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0007D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0007E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0007F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0008A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0008B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0008C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0008D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0008E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0008F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0009A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0009B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0009C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0009D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0009E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0009F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A00:  C3 76 03 00 00 00 00 00 00 00 00 CD 5C 01 F5 78    .v..........\..x
000A10:  06 10 29 CB 11 17 30 01 19 10 F7 F1 CB 7F C8 EB    ..)...0.........
000A20:  21 00 00 A7 ED 52 C9 CD 5C 01 F5 3E 10 CB 21 CB    !....R..\..>..!.
000A30:  10 CB 15 CB 14 A7 ED 52 38 03 03 18 01 19 3D 20    .......R8.....= 
000A40:  EC 50 59 EB F1 A7 C8 7C EE FF 67 7D EE FF 6F 23    .PY....|..g}..o#
000A50:  C9 44 4D 21 00 00 3E 00 CB 78 28 0A A7 ED 42 44    .DM!..>..x(...BD
000A60:  4D 21 00 00 3E 80 CB 7A C8 EE 80 A7 ED 52 EB 21    M!..>..z.....R.!
000A70:  00 00 C9 A7 28 17 EB 4E 23 46 23 EB A7 ED 42 28    ....(..N#F#...B(
000A80:  0C 09 EB 23 23 3D 20 EF 5E 23 56 EB E9 EB 5E 23    ...##= .^#V...^#
000A90:  56 EB E9 32 15 01 32 14 01 E5 EB 78 B1 28 11 5E    V..2..2....x.(.^
000AA0:  23 56 23 D5 5E 23 56 23 E3 73 23 72 E1 0B 18 EB    #V#.^#V#.s#r....
000AB0:  CB 45 28 01 23 22 12 01 22 10 01 ED 43 0E 01 C1    .E(.#".."...C...
000AC0:  CD 78 03 F9 00 00 60 69 CD 9D 01 C3 00 00 00 00    .x....`i........
000AD0:  00 00 00 00 00 00 D1 DD E5 ED 4B 10 01 C5 ED 4B    ..........K....K
000AE0:  12 01 ED 43 10 01 09 22 12 01 EB E9 7A B3 C8 29    ...C..."....z..)
000AF0:  1B 18 F9 7A B3 C8 CB 3C CB 1D 1B 18 F6 C1 E1 E5    ...z...<........
000B00:  C5 29 ED 5B 10 01 73 23 72 23 ED 5B 12 01 73 23    .).[..s#r#.[..s#
000B10:  72 23 DD E5 D1 73 23 72 23 EB 21 04 00 39 EB 73    r#...s#r#.!..9.s
000B20:  23 72 C9 C1 C1 E1 29 5E 23 56 23 ED 53 10 01 5E    #r....)^#V#.S..^
000B30:  23 56 23 ED 53 12 01 5E 23 56 23 D5 DD E1 5E 23    #V#.S..^#V#...^#
000B40:  66 6B F9 60 69 E9 E1 C1 D1 D5 C5 E5 2A 10 01 E5    fk.`i.......*...
000B50:  D5 2A 12 01 22 10 01 CB 3C CB 1D E5 EB 23 29 38    .*.."...<....#)8
000B60:  49 EB 2A 10 01 19 38 42 22 12 01 EB 21 CE FF 39    I.*...8B"...!..9
000B70:  A7 ED 52 38 35 60 69 CD 9D 01 E1 E1 2A 10 01 22    ..R85`i.....*.."
000B80:  12 01 E1 22 10 01 C9 D1 DD E5 ED 4B 10 01 C5 ED    ...".......K....
000B90:  4B 12 01 ED 43 10 01 09 38 10 22 12 01 44 4D 21    K...C...8."..DM!
000BA0:  CE FF 39 A7 ED 42 38 02 EB E9 CD CC 02 53 74 61    ..9..B8......Sta
000BB0:  63 6B 20 6F 76 65 72 66 6C 6F 77 0D 0A 00 C3 D6    ck overflow.....
000BC0:  01 E1 7E 23 E5 A7 C8 CD D7 02 18 F5 0E 02 5F C3    ..~#.........._.
000BD0:  05 00 3A 14 01 3D 32 14 01 C0 3A 15 01 32 14 01    ..:..=2...:..2..
000BE0:  CD 66 03 A7 C8 E5 C5 F5 3A 0E 01 FE 08 28 0E 4F    .f......:....(.O
000BF0:  06 00 21 D9 01 09 3C 32 0E 01 F1 77 F5 F1 C1 E1    ..!...<2...w....
000C00:  FE 03 28 03 FE FC C0 CD 66 03 A7 28 FA FE 03 28    ..(.....f..(...(
000C10:  03 FE FC C0 0E 6C 11 00 FF CD 05 00 CD CC 02 0D    .....l..........
000C20:  0A 2A 2A 20 42 52 45 41 4B 20 2A 2A 0D 0A 00 C3    .** BREAK **....
000C30:  D6 01 3A 0E 01 A7 28 19 3A 0E 01 3D 32 0E 01 4F    ..:...(.:..=2..O
000C40:  06 00 3A D9 01 28 10 21 DA 01 11 D9 01 ED B0 18    ..:..(.!........
000C50:  06 CD 66 03 A7 28 FA 5F 16 00 C9 E5 D5 C5 DD E5    ..f..(._........
000C60:  0E 06 1E FF CD 05 00 DD E1 C1 D1 E1 C9 2A 06 00    .............*..
000C70:  2B CB 45 C8 2B C9 ED 73 22 3E CD 68 05 2A 06 00    +.E.+..s">.h.*..
000C80:  2B 7D E6 01 28 01 2B 22 4B 3E 21 70 3F 22 4D 3E    +}..(.+"K>!p?"M>
000C90:  2A 4B 3E ED 5B 4D 3E A7 ED 52 CB 3C CB 1D CB 3C    *K>.[M>..R.<...<
000CA0:  CB 1D EB 2A 4B 3E A7 ED 52 22 1C 3E 2B 22 2A 3E    ...*K>..R".>+"*>
000CB0:  22 2C 3E 21 00 01 22 2E 3E 21 2A 3E 22 CB 3E 21    ",>!..".>!*>".>!
000CC0:  00 00 22 31 3E 3E 00 32 21 3E 3A 80 00 5F 16 00    .."1>>.2!>:.._..
000CD0:  21 81 00 19 36 0D 21 81 00 22 C9 3E CD DC 0B E5    !...6.!..".>....
000CE0:  C5 78 A7 CA CE 09 11 08 3E 7E FE 2E 28 05 12 23    .x......>~..(..#
000CF0:  13 10 F6 3E 20 12 CD DC 0B 78 A7 28 0C 11 08 3E    ...> ....x.(...>
000D00:  7E 12 23 13 10 FA 3E 20 12 CD 2C 0B C1 E1 CD B8    ~.#...> ..,.....
000D10:  08 CD 92 05 ED 7B 4B 3E ED 73 57 3E 21 2A 04 22    .....{K>.sW>!*."
000D20:  59 3E 0E 6C 11 00 00 CD 05 00 CD 71 35 CD 07 0F    Y>.l.......q5...
000D30:  E5 21 D2 04 CD 24 08 2A 2C 3E ED 5B 2A 3E A7 ED    .!...$.*,>.[*>..
000D40:  52 CD 37 08 21 0E 05 CD 24 08 2A 5B 3E CD 37 08    R.7.!...$.*[>.7.
000D50:  2A 5B 3E 7C B5 C2 84 34 3E 00 32 67 3E 21 00 00    *[>|...4>.2g>!..
000D60:  22 35 3E E1 E5 CD B8 14 2A 5B 3E 7C B5 28 1B 21    "5>.....*[>|.(.!
000D70:  F0 04 CD 24 08 21 00 00 CD 37 08 21 1F 05 CD 24    ...$.!...7.!...$
000D80:  08 2A 5B 3E CD 37 08 C3 84 34 21 08 3E 22 C9 3E    .*[>.7...4!.>".>
000D90:  CD DC 0B DD 21 CD 3E CD 48 0A 3E 01 32 67 3E 2A    ....!.>.H.>.2g>*
000DA0:  6C 3E 22 35 3E E1 CD B8 14 DD 21 CD 3E CD D2 0A    l>"5>.....!.>...
000DB0:  21 F0 04 CD 24 08 2A 35 3E ED 5B 6C 3E A7 ED 52    !...$.*5>.[l>..R
000DC0:  CD 37 08 21 1F 05 CD 24 08 21 00 00 CD 37 08 C3    .7.!...$.!...7..
000DD0:  84 34 0D 50 68 61 73 65 20 31 20 63 6F 6D 70 6C    .4.Phase 1 compl
000DE0:  65 74 65 2E 20 54 72 65 65 20 73 69 7A 65 3A 00    ete. Tree size:.
000DF0:  0D 50 68 61 73 65 20 32 20 63 6F 6D 70 6C 65 74    .Phase 2 complet
000E00:  65 2E 20 43 6F 64 65 20 73 69 7A 65 3A 00 0D 50    e. Code size:..P
000E10:  68 61 73 65 20 31 20 65 72 72 6F 72 73 3A 00 0D    hase 1 errors:..
000E20:  50 68 61 73 65 20 32 20 65 72 72 6F 72 73 3A 00    Phase 2 errors:.
000E30:  02 00 00 0D 41 72 6E 6F 72 20 42 43 50 4C 20 63    ....Arnor BCPL c
000E40:  6F 6D 70 69 6C 65 72 20 76 00 20 28 63 29 20 50    ompiler v. (c) P
000E50:  4A 42 20 26 20 41 72 6E 6F 72 20 4C 74 64 2E 2C    JB & Arnor Ltd.,
000E60:  20 31 39 38 36 0D 0D 00 21 33 05 CD 24 08 3A 30     1986...!3..$.:0
000E70:  05 C6 30 CD D6 07 3E 2E CD D6 07 3A 31 05 C6 30    ..0...>....:1..0
000E80:  CD D6 07 3A 32 05 C6 30 CD D6 07 21 4A 05 CD 24    ...:2..0...!J..$
000E90:  08 C9 2A 4B 3E CD 10 06 21 40 3C 06 20 36 00 23    ..*K>...!@<. 6.#
000EA0:  10 FB 21 04 3B 7E A7 28 22 11 60 3C 7E FE 80 30    ..!.;~.(".`<~..0
000EB0:  05 12 23 13 18 F6 1B 1A F6 80 12 E5 21 60 3C CD    ..#.........!`<.
000EC0:  D7 34 D1 1A E6 7F 77 EB 23 18 DA 21 0A 06 CD D7    .4....w.#..!....
000ED0:  34 22 33 3E 36 4F 21 0B 06 CD D7 34 22 49 3E 36    4"3>6O!....4"I>6
000EE0:  4F 21 00 00 22 5B 3E 3E 05 32 66 3E 3E FF 32 C6    O!.."[>>.2f>>.2.
000EF0:  3E 32 C5 3E 3E 0A 32 C8 3E 3E 00 32 06 3E 32 07    >2.>>.2.>>.2.>2.
000F00:  3E 32 5D 3E 3E 0D 32 21 3E C9 A4 73 74 61 72 F4    >2]>>.2!>..star.
000F10:  2B CB 45 28 01 2B 22 AE 3E C9 CD 29 06 FE 41 D8    +.E(.+".>..)..A.
000F20:  FE 5B D0 C6 20 32 21 3E C9 E5 D5 C5 DD E5 DD 2A    .[.. 2!>.......*
000F30:  CB 3E CD EE 0A 38 02 3E 1A DD E1 FE 8A 28 12 FE    .>...8.>.....(..
000F40:  90 28 E9 FE 7F 28 E5 FE 80 38 08 FE 8D 30 04 18    .(...(...8...0..
000F50:  DB 3E 0A F5 CD AA 07 F1 C1 D1 E1 32 21 3E FE 0A    .>.........2!>..
000F60:  28 C7 3A 5D 3E A7 28 0A 3A 21 3E FE 1A 28 03 CD    (.:]>.(.:!>..(..
000F70:  D6 07 3A 21 3E C9 3E 00 32 C7 3E E1 ED 7B 57 3E    ..:!>.>.2.>..{W>
000F80:  E5 3A 5D 3E A7 CC 79 07 CD 8D 33 E1 CD 24 08 21    .:]>..y...3..$.!
000F90:  EE 06 CD 24 08 2A 31 3E CD 37 08 CD 22 07 CD 24    ...$.*1>.7.."..$
000FA0:  08 CD FC 0B FE FC CA B3 38 FE 03 CA B3 38 2A 5B    ........8....8*[
000FB0:  3E 23 22 5B 3E 3A 5D 3E F5 3E 00 32 30 3E 32 5D    >#"[>:]>.>.20>2]
000FC0:  3E 3A 1E 3E FE 48 28 1B FE 49 28 17 FE 16 28 13    >:.>.H(..I(...(.
000FD0:  FE 01 28 0F FE 40 28 0B 3A 30 3E A7 20 05 CD 71    ..(..@(.:0>. ..q
000FE0:  35 18 DE F1 32 5D 3E CD 8D 33 2A 59 3E E9 20 6E    5...2]>..3*Y>. n
000FF0:  65 61 72 20 6C 69 6E 65 20 00 0D 0A 45 53 43 20    ear line ...ESC 
001000:  74 6F 20 61 62 6F 72 74 2C 20 61 6E 79 20 6F 74    to abort, any ot
001010:  68 65 72 20 6B 65 79 20 63 6F 6E 74 69 6E 75 65    her key continue
001020:  73 00 CD 2B 0C FE 30 30 04 21 FA 06 C9 2A 01 00    s..+..00.!...*..
001030:  11 57 00 19 23 7E 32 45 07 23 7E 32 46 07 21 E3    .W..#~2E.#~2F.!.
001040:  00 22 47 07 CD 00 00 00 00 A7 28 DD 21 50 07 C9    ."G.......(.!P..
001050:  0D 0A 53 54 4F 50 20 74 6F 20 61 62 6F 72 74 2C    ..STOP to abort,
001060:  20 61 6E 79 20 6F 74 68 65 72 20 6B 65 79 20 63     any other key c
001070:  6F 6E 74 69 6E 75 65 73 00 3A 07 3E 47 3A 06 3E    ontinues.:.>G:.>
001080:  B8 28 1E 58 16 00 21 C6 3D 19 7E FE 1A 28 07 FE    .(.X..!.=.~..(..
001090:  0A 28 03 CD D6 07 3A 07 3E CD CD 07 32 07 3E 18    .(....:.>...2.>.
0010A0:  D8 3E 00 32 06 3E 32 07 3E C9 F5 3A 06 3E 5F 16    .>.2.>2.>..:.>_.
0010B0:  00 21 C6 3D 19 F1 77 3A 06 3E CD CD 07 32 06 3E    .!.=..w:.>...2.>
0010C0:  5F 3A 07 3E BB C0 CD CD 07 32 07 3E C9 FE 3F 30    _:.>.....2.>..?0
0010D0:  02 3C C9 3E 00 C9 FE 0D 20 07 3E 0A CD 12 0C 3E    .<.>.... .>....>
0010E0:  0D CD 12 0C C9 E5 D5 2A CB 3E 11 A3 00 19 ED 5B    .......*.>.£...[
0010F0:  2A 3E A7 ED 52 D2 9B 32 2A 2A 3E 77 2B 22 2A 3E    *>..R..2**>w+"*>
001100:  D1 E1 C9 D5 E5 2A CB 3E 11 A5 00 19 ED 5B 2A 3E    .....*.>.....[*>
001110:  A7 ED 52 D2 9B 32 D1 2A 2A 3E 72 2B 73 2B 22 2A    ..R..2.**>r+s+"*
001120:  3E EB D1 C9 7E A7 C8 CB 7F 20 06 CD D6 07 23 18    >...~.... ....#.
001130:  F3 E6 7F CD D6 07 C9 E5 D5 C5 F5 7C B5 20 0A 3E    ...........|. .>
001140:  30 CD 12 0C F1 C1 D1 E1 C9 0E 01 11 10 27 CD 6B    0............'.k
001150:  08 11 E8 03 CD 6B 08 11 64 00 CD 6B 08 11 0A 00    .....k..d..k....
001160:  CD 6B 08 11 01 00 CD 6B 08 18 D9 3E 2F 3C A7 ED    .k.....k...>/<..
001170:  52 30 FA 19 FE 30 20 05 79 A7 C0 3E 30 0E 00 CD    R0...0 .y..>0...
001180:  12 0C C9 E5 D5 C5 F5 3A 67 3E A7 28 14 F1 F5 DD    .......:g>.(....
001190:  E5 DD 21 CD 3E CD 80 0A DD E1 2A 35 3E 23 22 35    ..!.>.....*5>#"5
0011A0:  3E 2A 37 3E 23 22 37 3E F1 C1 D1 E1 C9 7D CD 83    >*7>#"7>.....}..
0011B0:  08 7C CD 83 08 C9 46 23 DD E5 E5 2A CB 3E 11 A3    .|....F#...*.>.£
0011C0:  00 19 3A 21 3E 77 23 3A 31 3E 77 23 3A 32 3E 77    ..:!>w#:1>w#:2>w
0011D0:  23 22 CB 3E 19 23 23 ED 5B 2A 3E A7 ED 52 30 1C    #".>.##.[*>..R0.
0011E0:  E1 E5 C5 DD 2A CB 3E CD 05 0A 30 22 C1 E1 21 00    ....*.>...0"..!.
0011F0:  00 22 31 3E 3E 0D 32 21 3E DD E1 C9 CD 4A 34 54    ."1>>.2!>....J4T
001200:  6F 6F 20 6D 61 6E 79 20 66 69 6C 65 73 00 C1 E1    oo many files...
001210:  E5 C5 21 28 09 CD 24 08 C1 E1 78 A7 28 07 7E CD    ..!(..$...x.(.~.
001220:  D6 07 23 10 F9 C3 45 34 0D 0A 43 61 6E 27 74 20    ..#...E4..Can't 
001230:  6F 70 65 6E 20 00 C5 1A DD 77 09 13 1A DD 77 0A    open ....w....w.
001240:  13 1A DD 77 0B 06 08 DD E5 D1 13 3E 20 12 13 10    ...w.......> ...
001250:  FA C1 DD E5 D1 DD 36 00 00 DD 36 0C 00 DD 36 20    ......6...6...6 
001260:  00 CD F9 09 38 5C FE 20 28 58 13 12 CD F9 09 D8    ....8\. (X......
001270:  0E 08 FE 3A 20 16 DD 7E 01 D6 40 DD 77 00 CD F9    ...: ..~..@.w...
001280:  09 38 3F FE 20 28 3B 12 CD F9 09 D8 FE 2E 28 0F    .8?. (;.......(.
001290:  FE 20 28 2C 0D 28 2B 13 12 CD F9 09 D8 18 ED DD    . (,.(+.........
0012A0:  36 09 20 DD 36 0A 20 DD 36 0B 20 11 09 00 DD 19    6. .6. .6. .....
0012B0:  DD E5 D1 0E 04 CD F9 09 D8 0D 28 06 12 13 18 F5    ..........(.....
0012C0:  37 C9 A7 C9 D5 59 57 CD 36 09 D1 D8 EB E9 CD 4A    7....YW.6......J
0012D0:  34 42 61 64 20 53 4F 55 52 43 45 20 6E 61 6D 65    4Bad SOURCE name
0012E0:  00 CD 4A 34 42 61 64 20 44 45 53 54 49 4E 41 54    ..J4Bad DESTINAT
0012F0:  49 4F 4E 20 6E 61 6D 65 00 78 FE 01 D8 05 7E CD    ION name.x....~.
001300:  33 0C 23 A7 C9 DD E5 DD E5 DD E5 11 45 0A 7A 4B    3.#.........E.zK
001310:  11 CE 09 CD C4 09 0E 0F D1 CD 05 00 3C 28 0F DD    ............<(..
001320:  E1 D1 21 A3 00 19 DD 75 21 DD 74 22 37 C9 DD E1    ..!£...u!.t"7...
001330:  DD 7E 09 FE 20 20 0A DD 36 09 42 DD E5 DD E5 18    .~..  ..6.B.....
001340:  D5 DD E1 A7 C9 20 20 20 DD E5 DD E5 DD E5 11 7D    .....   .......}
001350:  0A 7A 4B 11 E1 09 CD C4 09 DD E1 DD 36 0C 00 DD    .zK.........6...
001360:  36 20 00 DD E5 D1 0E 16 CD 05 00 3C CA C5 0A E1    6 .........<....
001370:  11 23 00 19 DD E1 DD 75 21 DD 74 22 C9 43 4F 4D    .#.....u!.t".COM
001380:  DD E5 E1 11 A3 00 19 DD 5E 21 DD 56 22 A7 ED 52    ....£...^!.V"..R
001390:  20 0D F5 CD A8 0A DD E5 E1 11 23 00 19 EB F1 12     .........#.....
0013A0:  13 DD 73 21 DD 72 22 C9 DD E5 DD E5 DD E5 E1 11    ..s!.r".........
0013B0:  23 00 19 EB 0E 1A CD 05 00 D1 0E 15 CD 05 00 B7    #...............
0013C0:  20 03 DD E1 C9 CD 4A 34 44 69 73 63 20 46 75 6C     .....J4Disc Ful
0013D0:  6C 00 DD E5 E1 11 23 00 19 DD 5E 21 DD 56 22 A7    l.....#...^!.V".
0013E0:  28 03 CD A8 0A 0E 10 DD E5 D1 CD 05 00 C9 DD E5    (...............
0013F0:  D1 21 A3 00 19 DD 5E 21 DD 56 22 A7 ED 52 20 22    .!£...^!.V"..R "
001400:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
001410:  01 00 00 00 02 09 50 E5 01 00 C1 02 00 00 00 02    ......P.........
001420:  01 00 C2 02 00 00 00 02 01 00 C3 02 00 00 00 02    ................
001430:  01 00 C4 02 00 00 00 02 01 00 C5 02 00 00 00 02    ................
001440:  01 00 C6 02 00 00 00 02 01 00 C7 02 00 00 00 02    ................
001450:  01 00 C8 02 00 00 00 02 01 00 C9 02 00 00 00 02    ................
001460:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
001470:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
001480:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
001490:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0014A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0014B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0014C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0014D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0014E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0014F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
001500:  DD E5 DD E5 DD E5 E1 11 23 00 19 EB 0E 1A CD 05    ........#.......
001510:  00 D1 D5 0E 14 CD 05 00 DD E1 D1 B7 C0 21 23 00    .............!#.
001520:  19 EB 1A 13 DD 73 21 DD 72 22 37 C9 21 08 3E 22    .....s!.r"7.!.>"
001530:  C9 3E CD DC 0B DD 21 70 3F 11 7D 0A 7A 4B 11 E1    .>....!p?.}.zK..
001540:  09 CD C4 09 0E 0F 11 70 3F CD 05 00 3C C8 21 AC    .......p?...<.!.
001550:  0B CD 24 08 3A 79 3F CB 7F 28 06 21 D0 0B CD 24    ..$.:y?..(.!...$
001560:  08 21 BF 0B CD 24 08 CD FC 0B CD 33 0C FE 59 28    .!...$.....3..Y(
001570:  19 1E 4E 0E 02 CD 1D 0C CD 8D 33 CD 4A 34 46 69    ..N.......3.J4Fi
001580:  6C 65 20 69 6E 74 61 63 74 00 0E 02 5F CD 1D 0C    le intact..._...
001590:  CD 8D 33 3A 79 3F E6 7F 32 79 3F 11 70 3F 0E 1E    ..3:y?..2y?.p?..
0015A0:  CD 05 00 11 70 3F 0E 13 CD 05 00 C9 4F 75 74 70    ....p?......Outp
0015B0:  75 74 20 66 69 6C 65 20 65 78 69 73 74 73 00 3A    ut file exists.:
0015C0:  20 44 65 6C 65 74 65 20 28 59 2F 4E 29 3F 20 00     Delete (Y/N)? .
0015D0:  20 61 6E 64 20 69 73 20 52 2F 4F 00 2A C9 3E 2B     and is R/O.*.>+
0015E0:  06 00 23 7E FE 20 28 FA FE 0D C8 E5 04 23 7E FE    ..#~. (......#~.
0015F0:  20 28 04 FE 0D 20 F5 22 C9 3E E1 C9 CD 02 0C 30     (... .".>.....0
001600:  FB C9 C5 D5 0E 06 1E FF CD 1D 0C A7 28 01 37 D1    ............(.7.
001610:  C1 C9 D5 C5 0E 02 5F CD 1D 0C C1 D1 C9 E5 D5 C5    ......_.........
001620:  DD E5 CD 05 00 DD E1 C1 D1 E1 C9 C5 0E 0C CD 1D    ................
001630:  0C C1 C9 FE 61 D8 FE 7B D0 D6 20 C9 3A 1E 3E FE    ....a..{.. .:.>.
001640:  2E 28 08 FE 0C 28 04 FE 4F 20 09 2A 1F 3E E5 CD    .(...(..O .*.>..
001650:  71 35 E1 C9 FE 4D 20 0C 2A 1F 3E CD 67 0D E5 CD    q5...M .*.>.g...
001660:  71 35 E1 C9 FE 41 20 13 CD 71 35 3E 00 CD 75 0D    q5...A ..q5>..u.
001670:  E5 3E 42 21 9D 10 CD 60 14 E1 C9 FE 38 20 02 3E    .>B!...`....8 .>
001680:  26 FE 17 28 04 FE 26 20 0D F5 CD 71 35 3E 23 CD    &..(..& ...q5>#.
001690:  75 0D F1 C3 67 0D FE 35 20 09 CD 71 35 3E 22 CD    u...g..5 ..q5>".
0016A0:  75 0D C9 FE 3D 20 26 CD 71 35 3E 22 CD 75 0D 7E    u...= &.q5>".u.~
0016B0:  FE 4D 20 14 E5 E5 2B 56 2B 5E 21 00 00 A7 ED 52    .M ...+V+^!....R
0016C0:  EB E1 2B 72 2B 73 E1 C9 3E 43 C3 67 0D FE 20 20    ..+r+s..>C.g..  
0016D0:  0D CD 71 35 3E 18 CD 75 0D 3E 20 C3 67 0D FE 33    ..q5>..u.> .g..3
0016E0:  20 0B CD 71 35 CD 02 11 3E 33 C3 67 0D FE 2F 20     ..q5...>3.g../ 
0016F0:  0B CD 71 35 CD AE 10 3E 2F C3 67 0D FE 4E 20 1C    ..q5...>/.g..N .
001700:  2A 2A 3E E5 3E 4E CD E5 07 21 C6 3C 46 04 7E CD    **>.>N...!.<F.~.
001710:  E5 07 23 10 F9 CD 71 35 E1 3E 4E C9 FE 52 20 24    ..#...q5.>N..R $
001720:  CD 76 06 3F 20 69 73 20 6F 6E 6C 79 20 61 6C 6C    .v.? is only all
001730:  6F 77 65 64 20 69 6E 20 64 65 66 69 6E 69 74 69    owed in definiti
001740:  6F 6E 73 00 FE 60 20 0D CD 71 35 3E 23 CD 75 0D    ons..` ..q5>#.u.
001750:  3E 60 C3 67 0D CD 76 06 42 61 64 20 65 78 70 72    >`.g..v.Bad expr
001760:  65 73 73 69 6F 6E 00 D5 ED 5B 2A 3E CD E5 07 CD    ession...[*>....
001770:  03 08 EB D1 C9 57 D5 CD 3C 0C D1 22 24 3E 3A 30    .....W..<.."$>:0
001780:  3E A7 C0 21 B2 0E 3A 1E 3E 5F 7E A7 20 04 2A 24    >..!..:.>_~. .*$
001790:  3E C9 BB 28 06 23 23 23 23 18 EF 23 46 23 7E 23    >..(.####..#F#~#
0017A0:  66 6F 3A 1E 3E E9 0E 1E 18 01 48 7A B8 38 04 2A    fo:.>.....Hz.8.*
0017B0:  24 3E C9 2A 24 3E E5 C5 D5 79 F5 CD 71 35 F1 CD    $>.*$>...y..q5..
0017C0:  75 0D 22 24 3E E1 22 28 3E E1 22 26 3E 3A 28 3E    u."$>."(>."&>:(>
0017D0:  D1 2A 24 3E CD D4 0F E5 ED 4B 26 3E ED 5B 28 3E    .*$>.....K&>.[(>
0017E0:  E1 C3 7B 0D 7A FE 0D 38 04 2A 24 3E C9 2A 24 3E    ..{.z..8.*$>.*$>
0017F0:  C5 D5 E5 CD 71 35 3E 00 CD 75 0D 3A 1E 3E FE 36    ....q5>..u.:.>.6
001800:  28 0F CD 76 06 45 78 70 65 63 74 69 6E 67 20 2C    (..v.Expecting ,
001810:  00 E5 CD 71 35 3E 00 CD 75 0D 3E 3C D1 CD D4 0F    ...q5>..u.><....
001820:  EB E1 CD 03 08 EB D1 C1 C3 7B 0D 2A 24 3E D5 C5    .........{.*$>..
001830:  E5 CD 71 35 3A 1E 3E FE 42 28 05 CD AE 10 18 03    ..q5:.>.B(......
001840:  21 00 00 E5 3E 42 21 9D 10 CD 60 14 E1 D1 3E 4B    !...>B!...`...>K
001850:  CD D4 0F C1 D1 C3 7B 0D 7A 2A 24 3E FE 1E 38 01    ......{.z*$>..8.
001860:  C9 D5 E5 D5 CD 71 35 3E 1E CD 75 0D 22 24 3E D1    .....q5>..u."$>.
001870:  7B D1 CD D4 0F EB 3A 1E 3E 4F 21 AB 0E 7E A7 20    {.....:.>O!..~. 
001880:  05 EB D1 C3 7B 0D B9 28 03 23 18 F1 D5 2A 24 3E    ....{..(.#...*$>
001890:  E5 C5 CD 71 35 3E 1E CD 75 0D 22 24 3E C1 79 D1    ...q5>..u."$>.y.
0018A0:  CD D4 0F D1 3E 1B CD D4 0F 18 CA 08 1F 18 10 19    ....>...........
0018B0:  11 00 24 23 AA 0D 39 23 AA 0D 3B 23 AA 0D 35 22    ..$#..9#..;#..5"
0018C0:  AA 0D 3D 22 AA 0D 38 28 AA 0D 51 28 AA 0D 41 00    ..="..8(..Q(..A.
0018D0:  2B 0E 08 00 58 0E 1F 00 58 0E 18 00 58 0E 10 00    +...X...X...X...
0018E0:  58 0E 19 00 58 0E 11 00 58 0E 1D 19 A6 0D 25 19    X...X...X.....%.
0018F0:  A6 0D 1B 17 AA 0D 1A 17 AA 0D 09 15 AA 0D 21 15    ..............!.
001900:  AA 0D 3C 00 E4 0D 00 2A 57 3E E5 2A 59 3E E5 ED    ..<....*W>.*Y>..
001910:  73 57 3E 21 2B 0F 22 59 3E 3E 37 CD 4B 13 3A 1E    sW>!+."Y>>7.K.:.
001920:  3E FE 16 20 31 CD 71 35 CD E0 0F 3A 1E 3E FE 01    >.. 1.q5...:.>..
001930:  20 0F E5 CD 71 35 CD E0 0F 3E 01 D1 CD D4 0F 18     ...q5...>......
001940:  EA E5 CD 07 0F 3E 16 D1 CD D4 0F D1 ED 53 59 3E    .....>.......SY>
001950:  D1 ED 53 57 3E C9 FE 49 28 04 FE 40 20 05 21 00    ..SW>..I(..@ .!.
001960:  00 18 E8 FE 1E 28 08 FE 2B 28 04 FE 12 20 15 F5    .....(..+(... ..
001970:  CD 71 35 21 5B 13 CD EB 13 E5 CD 07 0F D1 F1 CD    .q5![...........
001980:  D4 0F 18 C7 CD E4 10 3A 1E 3E FE 49 28 BD FE 40    .......:.>.I(..@
001990:  28 B9 C3 09 11 CD AC 0F 3A 1E 3E FE 36 C0 E5 CD    (.......:.>.6...
0019A0:  71 35 CD 95 0F D1 3E 36 CD D4 0F C9 3A 1E 3E FE    q5....>6....:.>.
0019B0:  4F 28 18 CD 76 06 45 78 70 65 63 74 69 6E 67 20    O(..v.Expecting 
0019C0:  69 64 65 6E 74 69 66 69 65 72 00 2A 1F 3E E5 CD    identifier.*.>..
0019D0:  71 35 E1 C9 E5 EB CD 67 0D D1 EB CD 03 08 EB C9    q5.....g........
0019E0:  CD 95 0F 3A 1E 3E FE 08 20 41 E5 CD 71 35 FE 32    ...:.>.. A..q5.2
0019F0:  28 0A CD AA 10 D1 3E 44 CD D4 0F C9 E1 E5 7E FE    (.....>D......~.
001A00:  4F 20 0F CD 71 35 3E 00 CD 75 0D D1 3E 45 CD D4    O ..q5>..u..>E..
001A10:  0F C9 CD 76 06 42 61 64 20 76 65 63 74 6F 72 20    ...v.Bad vector 
001A20:  64 65 66 69 6E 69 74 69 6F 6E 00 FE 41 20 52 7E    definition..A R~
001A30:  FE 4F C2 B3 0F E5 CD 71 35 3A 1E 3E FE 4F 20 05    .O.....q5:.>.O .
001A40:  CD 95 0F 18 03 21 00 00 E5 3E 42 21 9D 10 CD 60    .....!...>B!...`
001A50:  14 3A 1E 3E FE 02 20 19 CD 71 35 CD 02 11 3E 47    .:.>.. ..q5...>G
001A60:  CD 99 14 E3 C1 D1 C5 CD D4 0F D1 EB CD 03 08 EB    ................
001A70:  C9 FE 08 20 0C CD 71 35 3E 00 CD 75 0D 3E 46 18    ... ..q5>..u.>F.
001A80:  DF CD 76 06 42 61 64 20 50 52 4F 43 45 44 55 52    ..v.Bad PROCEDUR
001A90:  45 20 64 65 66 69 6E 69 74 69 6F 6E 00 CD 76 06    E definition..v.
001AA0:  4D 69 73 73 69 6E 67 20 29 00 3E 01 18 02 3E 00    Missing ).>...>.
001AB0:  F5 A7 28 11 3A 1E 3E FE 52 20 0A CD 67 0D E5 CD    ..(.:.>.R ..g...
001AC0:  71 35 E1 18 05 3E 00 CD 75 0D 3A 1E 3E FE 36 20    q5...>..u.:.>.6 
001AD0:  11 F1 E5 F5 CD 71 35 F1 CD B0 10 D1 3E 36 CD D4    .....q5.....>6..
001AE0:  0F C9 F1 C9 3E 37 CD 4B 13 CD 02 11 3A 1E 3E FE    ....>7.K....:.>.
001AF0:  49 28 0E FE 40 28 0A E5 CD E4 10 D1 3E 4A CD D4    I(..@(......>J..
001B00:  0F C9 CD 53 11 7C B5 20 15 CD 76 06 45 78 70 65    ...S.|. ..v.Expe
001B10:  63 74 69 6E 67 20 63 6F 6D 6D 61 6E 64 00 3A 1E    cting command.:.
001B20:  3E FE 27 28 09 FE 28 28 05 FE 29 28 01 C9 CD 70    >.'(..((..)(...p
001B30:  14 F5 E5 CD 71 35 E1 F1 FE 27 28 04 FE 5A 20 05    ....q5...'(..Z .
001B40:  CD 67 0D 18 D9 F5 E5 3E 00 CD 75 0D D1 F1 CD D4    .g.....>..u.....
001B50:  0F 18 CB 3A 1E 3E 47 21 71 11 7E A7 20 04 21 00    ...:.>G!q.~. .!.
001B60:  00 C9 B8 20 07 23 5E 23 56 EB 78 E9 23 23 23 18    ... .#^#V.x.###.
001B70:  E9 4F C0 11 4D C0 11 2E C0 11 0C C0 11 17 C0 11    .O..M...........
001B80:  26 C0 11 38 C0 11 41 C0 11 0F F9 11 22 F9 11 14    &..8..A....."...
001B90:  07 12 31 07 12 34 07 12 30 07 12 2D 1F 12 0D D8    ..1..4..0..-....
001BA0:  12 1C 5A 12 03 5A 12 23 5A 12 0E 5A 12 0B 5A 12    ..Z..Z.#Z..Z..Z.
001BB0:  2A 66 12 05 9B 12 07 C4 12 48 95 12 50 3F 13 00    *f.......H..P?..
001BC0:  CD AE 10 3A 1E 3E FE 3E 20 0E E5 CD 71 35 CD AE    ...:.>.> ...q5..
001BD0:  10 3E 3E D1 CD D4 0F C9 FE 3F 20 14 7E FE 4F C2    .>>......? .~.O.
001BE0:  B3 0F E5 CD 71 35 CD 53 11 D1 3E 3F CD D4 0F C9    ....q5.S..>?....
001BF0:  7E FE 4B C2 09 11 36 4C C9 F5 CD 71 35 3E 00 CD    ~.K...6L...q5>..
001C00:  75 0D F1 CD 67 0D C9 F5 CD 71 35 3E 00 CD 75 0D    u...g....q5>..u.
001C10:  E5 3E 06 CD 4B 13 CD 02 11 D1 F1 CD D4 0F C9 CD    .>..K...........
001C20:  71 35 3E 00 CD 75 0D 3E 06 CD 4B 13 E5 CD 02 11    q5>..u.>..K.....
001C30:  E5 3E 0A 21 49 12 CD 60 14 CD 02 11 D1 3E 2D CD    .>.!I..`.....>-.
001C40:  D4 0F D1 EB CD 03 08 EB C9 CD 76 06 45 4C 53 45    ..........v.ELSE
001C50:  20 65 78 70 65 63 74 65 64 00 2A 2A 3E CD E5 07     expected.**>...
001C60:  E5 CD 71 35 E1 C9 CD 71 35 3E 00 CD 75 0D E5 3E    ..q5...q5>..u..>
001C70:  15 21 84 12 CD 60 14 21 E4 10 CD EB 13 D1 3E 2A    .!...`.!......>*
001C80:  CD D4 0F C9 CD 76 06 49 4E 54 4F 20 65 78 70 65    .....v.INTO expe
001C90:  63 74 65 64 00 21 07 0F C3 EB 13 CD 71 35 3E 00    cted.!......q5>.
001CA0:  CD 75 0D E5 3E 3F 21 B6 12 CD 60 14 CD 53 11 D1    .u..>?!...`..S..
001CB0:  3E 05 CD D4 0F C9 CD 76 06 3A 20 65 78 70 65 63    >......v.: expec
001CC0:  74 65 64 00 CD 71 35 3E 3F 21 B6 12 CD 60 14 CD    ted..q5>?!...`..
001CD0:  53 11 3E 07 CD 67 0D C9 CD 71 35 CD AC 0F E5 21    S.>..g...q5....!
001CE0:  2F 13 3E 08 CD 60 14 3E 00 CD 75 0D E5 3E 2C 21    /.>..`.>..u..>,!
001CF0:  2F 13 CD 60 14 3E 00 CD 75 0D E5 21 00 00 3A 1E    /..`.>..u..!..:.
001D00:  3E FE 04 20 08 CD 71 35 3E 00 CD 75 0D E5 3E 06    >.. ..q5>..u..>.
001D10:  CD 4B 13 CD 02 11 3E 0D CD 70 14 D1 CD D4 0F E3    .K....>..p......
001D20:  CD 03 08 E1 E3 CD 03 08 E1 E3 CD 03 08 E1 C9 CD    ................
001D30:  76 06 42 61 64 20 46 4F 52 20 6C 6F 6F 70 00 CD    v.Bad FOR loop..
001D40:  71 35 CD AE 10 3E 50 CD 67 0D C9 E5 21 1E 3E BE    q5...>P.g...!.>.
001D50:  28 02 E1 C9 F5 CD 71 35 F1 E1 C9 2A 57 3E E5 2A    (.....q5...*W>.*
001D60:  59 3E E5 21 00 00 E5 21 00 00 39 E5 E5 ED 73 57    Y>.!...!..9...sW
001D70:  3E 21 D1 13 22 59 3E CD AC 0F 3A 1E 3E FE 08 28    >!.."Y>...:.>..(
001D80:  2A FE 3F 28 26 CD 76 06 4E 65 65 64 20 3A 20 6F    *.?(&.v.Need : o
001D90:  72 20 3D 20 69 6E 20 63 6F 6E 73 74 61 6E 74 20    r = in constant 
001DA0:  64 65 66 69 6E 69 74 69 6F 6E 00 E3 CD 71 35 3E    definition...q5>
001DB0:  00 CD 75 0D D1 D5 3E 1E CD D4 0F E3 21 00 00 CD    ..u...>.....!...
001DC0:  03 08 C1 DD E1 DD 71 00 DD 70 01 21 FA FF 09 E5    ......q..p.!....
001DD0:  E5 3E 37 CD 4B 13 3A 1E 3E FE 4F 28 9A E1 E1 E1    .>7.K.:.>.O(....
001DE0:  D1 ED 53 59 3E D1 ED 53 57 3E C9 ED 5B 1F 3E D5    ..SY>..SW>..[.>.
001DF0:  E5 3E 48 21 47 14 CD 60 14 E1 CD 6F 14 3A 1E 3E    .>H!G..`...o.:.>
001E00:  FE 49 28 0E CD 76 06 4D 69 73 73 69 6E 67 20 24    .I(..v.Missing $
001E10:  29 00 EB 2A 1F 3E C1 A7 ED 42 28 24 2A 33 3E ED    )..*.>...B($*3>.
001E20:  4B 1F 3E A7 ED 42 20 1D CD 76 06 53 65 63 74 69    K.>..B ..v.Secti
001E30:  6F 6E 20 74 61 67 20 6D 69 73 6D 61 74 63 68 00    on tag mismatch.
001E40:  D5 CD 71 35 D1 EB C9 CD 76 06 4D 69 73 73 69 6E    ..q5....v.Missin
001E50:  67 20 24 28 00 E1 7E 23 E5 A7 C8 CD D6 07 18 F5    g $(..~#........
001E60:  C5 D5 47 3A 1E 3E B8 20 06 CD 71 35 D1 C1 C9 E9    ..G:.>. ..q5....
001E70:  F5 3A C5 3E A7 20 02 F1 C9 F1 E5 C5 47 21 8D 14    .:.>. ......G!..
001E80:  7E B8 28 04 23 23 18 F8 23 7E C1 E1 C9 27 5A 28    ~.(.##..#~...'Z(
001E90:  5B 29 5C 34 5D 30 5E 0D 5F C5 F5 3A C5 3E A7 28    [)\4]0^._..:.>.(
001EA0:  02 3E 01 47 3A C6 3E A7 28 02 04 04 78 87 47 28    .>.G:.>.(...x.G(
001EB0:  03 C6 0C 47 F1 80 C1 C9 E5 2A 4D 3E 22 6C 3E CD    ...G.....*M>"l>.
001EC0:  C3 16 2A 2E 3E 22 37 3E 21 00 00 22 39 3E 22 41    ..*.>"7>!.."9>"A
001ED0:  3E 22 43 3E 22 47 3E 22 55 3E 2A 4B 3E 3E 00 32    >"C>"G>"U>*K>>.2
001EE0:  3C 3E 2A 2A 3E 22 3D 3E 2A 1C 3E 11 5A 00 19 22    <>**>"=>*.>.Z.."
001EF0:  3F 3E 3E 40 32 72 3E 32 76 3E 32 6E 3E 32 7A 3E    ?>>@2r>2v>2n>2z>
001F00:  32 7E 3E CD 74 16 CD 12 16 CD 63 16 CD 0A 17 E1    2~>.t.....c.....
001F10:  CD 6E 15 2A 2A 3E ED 5B 3D 3E A7 ED 52 CB 3C CB    .n.**>.[=>..R.<.
001F20:  1D CB 3C CB 1D EB 2A 68 3E 73 23 72 ED 5B 37 3E    ..<...*h>s#r.[7>
001F30:  2A 6A 3E 73 23 72 2A 3D 3E ED 5B 2A 3E A7 ED 52    *j>s#r*=>.[*>..R
001F40:  28 0C 19 06 04 23 7E CD 83 08 10 F9 18 EF 2A AE    (....#~.......*.
001F50:  3E CD AD 08 2A 47 3E 7E 23 B6 C0 CD 4A 34 55 6E    >...*G>~#...J4Un
001F60:  64 65 66 69 6E 65 64 20 53 54 41 52 54 00 7C B5    defined START.|.
001F70:  C8 E5 2A 3F 3E ED 5B 41 3E 19 EB 21 CE FF 39 A7    ..*?>.[A>..!..9.
001F80:  ED 52 DA 9B 32 E1 7E EB 21 8E 15 C3 F6 31 4A 3F    .R..2.~.!....1J?
001F90:  17 16 52 17 3E 30 1B 50 A9 1C 1E 02 1D 14 88 1D    ..R.>0.P........
001FA0:  31 8C 1D 4C EA 1D 2D 7C 1E 34 E5 1E 5D E5 1E 30    1..L..-|.4..]..0
001FB0:  EF 1E 5E EF 1E 22 70 1F 03 D8 1F 1C B4 1F 27 07    ..^.."p.......'.
001FC0:  21 5A 07 21 28 4C 21 5B 4C 21 29 56 21 5C 56 21    !Z.!(L![L!)V!\V!
001FD0:  2B DA 21 2A 70 22 05 65 23 07 D3 23 0B EA 23 0D    +.!*p".e#..#..#.
001FE0:  15 24 5F 15 24 23 AB 1F 12 3C 1D 0F 32 20 3F 41    .$_.$#...<..2 ?A
001FF0:  20 0E 6A 25 00 CD 4A 34 45 72 72 6F 72 20 69 6E     .j%..J4Error in
002000:  20 74 72 61 6E 73 6C 61 74 69 6F 6E 20 6E 6F 64     translation nod
002010:  65 00 3E 21 CD 83 08 CD F0 20 22 47 3E CD 58 16    e.>!..... "G>.X.
002020:  36 00 23 36 00 3E 11 CD 83 08 CD F0 20 22 6A 3E    6.#6.>...... "j>
002030:  CD 58 16 3E 01 CD 83 08 CD F0 20 22 68 3E CD 58    .X.>...... "h>.X
002040:  16 3E 3E CD 83 08 3A C8 3E CD 83 08 3E C3 CD 83    .>>...:.>...>...
002050:  08 2A 98 3E CD AD 08 C9 7E CD 83 08 23 7E CD 83    .*.>....~...#~..
002060:  08 2B C9 21 03 01 11 73 02 7E CD 83 08 23 1B 7A    .+.!...s.~...#.z
002070:  B3 20 F6 C9 ED 4B 37 3E 21 0E 00 09 44 4D DD 21    . ...K7>!...DM.!
002080:  8A 3E 21 9D 16 5E 23 56 23 7A A3 FE FF C8 EB 09    .>!..^#V#z£.....
002090:  DD 75 00 DD 74 01 EB DD 23 DD 23 18 E8 00 00 02    .u..t...#.#.....
0020A0:  00 04 00 08 00 24 00 70 00 8F 00 90 00 C8 00 D3    .....$.p........
0020B0:  00 E9 00 F0 00 FA 00 20 01 43 01 84 01 CF 01 2F    ....... .C...../
0020C0:  02 FF FF DD 21 B0 3E 21 E8 16 7E A7 C8 E5 DD E5    ....!.>!..~.....
0020D0:  CD D7 34 DD E1 DD 75 00 DD 74 01 DD 23 DD 23 E1    ..4...u..t..#.#.
0020E0:  7E 23 CB 7F 20 E4 18 F8 6C 65 76 65 EC 6C 6F 6E    ~#.. ...leve.lon
0020F0:  67 6A 75 6D F0 61 70 74 6F 76 65 E3 72 64 76 64    gjum.aptove.rdvd
002100:  F5 00 A2 3E A4 3E A6 3E AC 3E 21 B0 3E DD 21 02    ...>.>.>.>!.>.!.
002110:  17 06 04 C5 5E 23 56 23 E5 DD E5 CD 26 32 DD E1    ....^#V#....&2..
002120:  2B 36 00 23 36 02 23 36 01 23 DD 5E 00 DD 56 01    +6.#6.#6.#.^..V.
002130:  1A 77 13 23 1A 77 E1 DD 23 DD 23 C1 10 D5 C9 EB    .w.#.w..#.#.....
002140:  2B 56 2B 5E E5 EB CD 6E 15 E1 2B 56 2B 5E EB C3    +V+^...n..+V+^..
002150:  6E 15 2A 51 3E E5 3A 3B 3E F5 2A 39 3E E5 2A 1C    n.*Q>.:;>.*9>.*.
002160:  3E E5 EB 2B 56 2B 5E 2B E5 EB CD CC 17 E1 56 2B    >..+V+^+......V+
002170:  5E EB CD 6E 15 E1 22 1C 3E C1 2A 39 3E ED 43 39    ^..n..".>.*9>.C9
002180:  3E CD 90 17 C1 3A 3B 3E CD D3 33 E1 22 51 3E C9    >....:;>..3."Q>.
002190:  54 5D A7 ED 42 C8 D5 DD E1 DD 7E 05 FE 09 20 24    T]..B.....~... $
0021A0:  D5 C5 DD 5E 02 DD 56 03 CD 64 33 55 6E 64 65 66    ...^..V..d3Undef
0021B0:  69 6E 65 64 20 69 64 65 6E 74 69 66 69 65 72 2C    ined identifier,
0021C0:  A0 C1 DD E1 DD 6E 00 DD 66 01 18 C4 7E FE 01 20    .....n..f...~.. 
0021D0:  53 2B E5 2B 2B 56 2B 5E 1A 21 F0 17 CD F6 31 E1    S+.++V+^.!....1.
0021E0:  56 2B 5E 2B E5 EB CD CC 17 E1 56 2B 5E EB 18 3D    V+^+......V+^..=
0021F0:  47 55 18 46 55 18 54 55 18 55 55 18 56 55 18 57    GU.FU.TU.UU.VU.W
002200:  55 18 58 55 18 59 55 18 44 74 18 45 D0 18 00 CD    U.XU.YU.Dt.E....
002210:  4A 34 44 65 63 6C 61 72 61 74 69 6F 6E 20 65 72    J4Declaration er
002220:  72 6F 72 00 E5 EB 21 F0 17 CD F6 31 E1 7E EB 21    ror...!....1.~.!
002230:  35 18 C3 F6 31 44 54 18 45 54 18 47 27 19 46 27    5...1DT.ET.G'.F'
002240:  19 54 27 19 55 27 19 56 27 19 57 27 19 58 27 19    .T'.U'.V'.W'.X'.
002250:  59 27 19 00 C9 EB 2B 56 2B 5E D5 CD 26 32 2B 36    Y'....+V+^..&2+6
002260:  00 23 36 02 23 36 00 23 E5 CD F0 20 EB E1 73 23    .#6.#6.#... ..s#
002270:  72 EB C1 C9 EB 2B 56 2B 5E 2B 46 2B 4E 1A FE 36    r....+V+^+F+N..6
002280:  20 21 0A FE 36 20 21 EB 2B 56 2B 5E 2B E5 60 69     !..6 !.+V+^+.`i
002290:  2B 46 2B 4E 2B E5 CD C2 18 E1 46 2B 4E E1 56 2B    +F+N+.....F+N.V+
0022A0:  5E 18 DA 0A FE 36 20 1A CD 3F 33 45 78 70 72 65    ^....6 ..?3Expre
0022B0:  73 73 69 6F 6E 2F 69 64 20 6D 69 73 6D 61 74 63    ssion/id mismatc
0022C0:  E8 C9 C5 CD EE 1C E1 CD 76 25 3E E5 CD 83 08 C9    ........v%>.....
0022D0:  D5 DD E1 DD 6E FC DD 66 FD CD 19 30 23 29 ED 5B    ....n..f...0#).[
0022E0:  51 3E 19 22 51 3E D5 ED 4B 53 3E A7 ED 42 38 04    Q>."Q>..KS>..B8.
0022F0:  09 22 53 3E DD 6E FE DD 66 FF CD ED 1C 3E 2A CD    ."S>.n..f....>*.
002300:  83 08 2A 8C 3E CD AD 08 E1 7C B5 28 0D 3E 11 CD    ..*.>....|.(.>..
002310:  83 08 CD AD 08 3E 19 CD 83 08 21 21 19 CD CC 1C    .....>....!!....
002320:  C9 05 CB 3C CB 1D E5 D5 3A 3C 3E A7 28 0D 3E C3    ...<....:<>.(.>.
002330:  CD 83 08 CD F0 20 CD 58 16 E3 E5 2A 55 3E E3 22    ..... .X...*U>."
002340:  55 3E 2B 56 2B 5E 2B E5 2A 49 3E A7 ED 52 20 0A    U>+V+^+.*I>..R .
002350:  2A 47 3E ED 4B 37 3E 71 23 70 CD AC 32 ED 5B 37    *G>.K7>q#p..2.[7
002360:  3E CD 98 33 D1 2A 53 3E E5 2A 4F 3E E5 2A 39 3E    >..3.*S>.*O>.*9>
002370:  E5 2A 1C 3E E5 3A 3B 3E F5 3E 7F 32 3B 3E 3A 3C    .*.>.:;>.>.2;>:<
002380:  3E 3C 32 3C 3E 21 00 00 22 53 3E 22 51 3E EB 56    ><2<>!.."S>"Q>.V
002390:  2B 5E 2B E5 EB CD D5 1C CD 49 1A D1 2A 7A 3E E5    +^+......I..*z>.
0023A0:  2A 7C 3E E5 3A 3B 3E 67 2E 00 22 7A 3E CD F0 20    *|>.:;>g.."z>.. 
0023B0:  22 7C 3E EB CD 18 1A ED 5B 37 3E DD 21 7A 3E CD    "|>.....[7>.!z>.
0023C0:  BA 33 E1 22 7C 3E E1 22 7A 3E 2A 53 3E 7C B5 21    .3."|>."z>*S>|.!
0023D0:  E8 1A 20 03 21 15 1B CD 6F 14 ED 5B 53 3E 2A 4F    .. .!...o..[S>*O
0023E0:  3E 73 23 72 3A 3C 3E 3D 32 3C 3E F1 32 3B 3E E1    >s#r:<>=2<>.2;>.
0023F0:  22 1C 3E C1 2A 39 3E ED 43 39 3E CD 90 17 E1 22    ".>.*9>.C9>...."
002400:  4F 3E E1 22 53 3E E1 22 55 3E 3A 3C 3E A7 C8 E1    O>."S>."U>:<>...
002410:  ED 5B 37 3E 73 23 72 C9 E5 DD E1 56 2B 5E EB DD    .[7>s#r....V+^..
002420:  7E 05 FE 46 28 10 FE 54 28 0C FE 56 28 08 FE 58    ~..F(..T(..V(..X
002430:  28 04 CD 6E 15 C9 7E FE 33 20 05 EB CD D1 26 C9    (..n..~.3 ....&.
002440:  CD 76 25 3E EB CD 83 08 C9 E5 D5 3E 21 CD 83 08    .v%>.......>!...
002450:  CD F0 20 22 4F 3E CD 58 16 3E CD CD 83 08 CD 97    .. "O>.X.>......
002460:  1A CD AD 08 3E DD CD 83 08 3E 21 CD 83 08 3A 3B    ....>....>!...:;
002470:  3E D6 06 32 3B 3E 3C 5F 16 00 21 00 00 A7 ED 52    >..2;><_..!....R
002480:  CD AD 08 3E DD CD 83 08 3E 39 CD 83 08 2A 55 3E    ...>....>9...*U>
002490:  7E CD B3 1A D1 E1 C9 2A 55 3E 7E FE 46 28 10 FE    ~......*U>~.F(..
0024A0:  47 28 0C FE 54 28 08 FE 55 28 04 2A A8 3E C9 2A    G(..T(..U(.*.>.*
0024B0:  9C 3E C9 FE 54 28 23 FE 55 28 1F FE 58 28 1B FE    .>..T(#.U(..X(..
0024C0:  59 28 17 FE 5A 28 13 FE 5B 28 0F FE 5C 28 0B FE    Y(..Z(..[(..\(..
0024D0:  5D 28 07 FE 5E 28 03 FE 5F C0 3E CD CD 83 08 E5    ](..^(.._.>.....
0024E0:  2A AA 3E CD AD 08 E1 C9 3E 2A CD 83 08 2A 8C 3E    *.>.....>*...*.>
0024F0:  CD AD 08 3E 22 CD 83 08 2A 8E 3E CD AD 08 3E E1    ...>"...*.>...>.
002500:  CD 83 08 3E 22 CD 83 08 2A 8C 3E CD AD 08 21 2C    ...>"...*.>...!,
002510:  1B CD CC 1C C9 3E E1 CD 83 08 3E 22 CD 83 08 2A    .....>....>"...*
002520:  8C 3E CD AD 08 21 2C 1B CD CC 1C C9 03 DD E1 C9    .>...!,.........
002530:  EB 2B 56 2B 5E 2B 46 2B 6E 60 1A FE 36 20 2B E5    .+V+^+F+n`..6 +.
002540:  EB 2B 46 2B 4E 2B 56 2B 5E E1 D5 C5 7E FE 36 20    .+F+N+V+^...~.6 
002550:  14 2B 46 2B 4E 2B 56 2B 5E E1 D5 EB 60 69 CD 6A    .+F+N+V+^...`i.j
002560:  1B E1 D1 18 D5 E1 E1 C3 A8 18 7E FE 36 CA A8 18    ..........~.6...
002570:  1A FE 4F 28 12 FE 26 28 1C FE 38 CA F8 1B FE 51    ..O(..&(..8....Q
002580:  CA 1E 1C CD C3 31 C9 D5 CD 76 25 D1 CD AC 32 38    .....1...v%...28
002590:  03 CD A8 31 C9 CD A2 1C 28 1F D5 CD 76 25 3E E5    ...1....(...v%>.
0025A0:  CD 83 08 E1 2B 56 2B 5E EB CD 76 25 21 B3 1B CD    ....+V+^..v%!...
0025B0:  CC 1C C9 05 29 D1 73 23 72 E5 EB 2B 56 2B 5E EB    ....).s#r..+V+^.
0025C0:  CD 76 25 3E 29 CD 83 08 E1 E5 EB CD 3B 30 38 0B    .v%>).......;08.
0025D0:  D1 CD 57 2C 21 F4 1B CD CC 1C C9 3E 36 CD 83 08    ..W,!......>6...
0025E0:  7B CD 83 08 3E 23 CD 83 08 3E 36 CD 83 08 7A CD    {...>#...>6...z.
0025F0:  83 08 E1 C9 03 73 23 72 CD A2 1C 28 14 D5 CD 76    .....s#r...(...v
002600:  25 3E E5 CD 83 08 D1 CD C7 28 21 B3 1B CD CC 1C    %>.......(!.....
002610:  C9 E5 CD C7 28 3E 29 CD 83 08 E1 C3 C9 1B CD A2    ....(>).........
002620:  1C 28 17 D5 CD 76 25 3E E5 CD 83 08 E1 CD 7B 2B    .(...v%>......{+
002630:  21 37 1C CD CC 1C C9 02 D1 73 E5 EB CD 7B 2B D1    !7.......s...{+.
002640:  D5 CD 3B 30 30 0B 3E 36 CD 83 08 7B CD 83 08 D1    ..;00.>6...{....
002650:  C9 D1 CD AC 32 D8 DD 7E 05 FE 02 30 13 3E DD CD    ....2..~...0.>..
002660:  83 08 3E 7E CD 83 08 DD 7E 08 3D CD 83 08 18 2C    ..>~....~.=....,
002670:  FE 04 30 20 DD 7E 06 A7 28 0C 3E 36 CD 83 08 DD    ..0 .~..(.>6....
002680:  7E 07 CD 83 08 C9 3E 11 CD 83 08 CD D9 31 3E 73    ~.....>......1>s
002690:  CD 83 08 C9 3E 3A CD 83 08 CD D9 31 3E 77 CD 83    ....>:.....1>w..
0026A0:  08 C9 7E FE 4F C8 FE 4D C9 EB 2B 56 2B 5E EB 7E    ..~.O..M..+V+^.~
0026B0:  FE 36 20 10 2B 56 2B 5E E5 EB CD C4 1C E1 2B 56    .6 .+V+^......+V
0026C0:  2B 5E 18 EA CD 19 30 7D CD 83 08 C9 46 23 7E CD    +^....0}....F#~.
0026D0:  83 08 10 F9 C9 7C B5 C8 7E FE 36 20 10 2B E5 2B    .....|..~.6 .+.+
0026E0:  2B 56 2B 5E EB CD D5 1C E1 56 2B 5E EB EB CD 26    +V+^.....V+^...&
0026F0:  32 36 00 23 36 01 23 23 3A 3B 3E 77 3D 3D 32 3B    26.#6.##:;>w==2;
002700:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
002710:  02 00 00 00 02 09 50 E5 02 00 C1 02 00 00 00 02    ......P.........
002720:  02 00 C2 02 00 00 00 02 02 00 C3 02 00 00 00 02    ................
002730:  02 00 C4 02 00 00 00 02 02 00 C5 02 00 00 00 02    ................
002740:  02 00 C6 02 00 00 00 02 02 00 C7 02 00 00 00 02    ................
002750:  02 00 C8 02 00 00 00 02 02 00 C9 02 00 00 00 02    ................
002760:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
002770:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
002780:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
002790:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0027A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0027B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0027C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0027D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0027E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0027F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
002800:  3E C9 EB 2B 56 2B 5E 2B E5 EB 7C B5 20 0B E1 56    >..+V+^+..|. ..V
002810:  2B 5E EB 7C B5 C8 C3 6E 15 2B 56 2B 5E 2B D5 56    +^.|...n.+V+^+.V
002820:  2B 5E E3 E5 EB CD 19 30 D1 E5 CD 26 32 36 04 23    +^.....0...&26.#
002830:  23 D1 73 23 72 E1 2B 56 2B 5E 18 CD EB 2B 56 2B    #.s#r.+V+^...+V+
002840:  5E E5 D5 CD 1A 22 D1 CD 53 1D E1 2B 56 2B 5E EB    ^...."..S..+V+^.
002850:  C3 6E 15 7A B3 C8 EB 2B 56 2B 5E E5 CD 68 1D E1    .n.z...+V+^..h..
002860:  2B 2B 2B 56 2B 5E 18 EB 3E 08 F5 CD 26 32 F1 2B    +++V+^..>...&2.+
002870:  36 00 23 77 23 36 01 23 ED 5B 45 3E 73 23 72 62    6.#w#6.#.[E>s#rb
002880:  6B 13 13 ED 53 45 3E C9 3E 00 18 02 3E FF CD B0    k...SE>.>...>...
002890:  20 21 00 00 22 82 3E 22 86 3E CD F0 20 22 84 3E     !..".>".>.. ".>
0028A0:  CD F0 20 22 88 3E EB 2B 56 2B 5E 2B F5 E5 F5 EB    .. ".>.+V+^+....
0028B0:  CD E2 2C F1 ED 5B 37 3E CD D1 1D E1 56 2B 5E EB    ..,..[7>....V+^.
0028C0:  CD 6E 15 F1 EE FF ED 5B 37 3E CD D1 1D CD C3 20    .n.....[7>..... 
0028D0:  C9 DD E5 DD 21 82 3E A7 28 04 DD 21 86 3E DD 6E    ....!.>.(..!.>.n
0028E0:  02 DD 66 03 73 23 72 DD E1 C9 EB 2B 3A 3B 3E F5    ..f.s#r....+:;>.
0028F0:  E5 2B 2B 56 2B 5E EB CD 47 1E E1 56 2B 5E EB E5    .++V+^..G..V+^..
002900:  7E FE 4F 20 22 EB CD AC 32 38 33 DD 7E 05 FE 02    ~.O "...283.~...
002910:  28 04 FE 03 20 11 E1 3E CD CD 83 08 CD D9 31 C1    (... ..>......1.
002920:  3A 3B 3E CD D3 33 C9 E1 CD 76 25 3E CD CD 83 08    :;>..3...v%>....
002930:  2A 96 3E CD AD 08 C1 3A 3B 3E CD D3 33 C9 E1 C1    *.>....:;>..3...
002940:  3A 3B 3E CD D3 33 C9 47 7C B5 20 02 78 C9 04 3A    :;>..3.G|. .x..:
002950:  3B 3E 3D 3D 32 3B 3E 7E FE 36 28 0C 78 F5 CD 76    ;>==2;>~.6(.x..v
002960:  25 3E E5 CD 83 08 F1 C9 2B E5 2B 2B 56 2B 5E 78    %>......+.++V+^x
002970:  EB CD 47 1E E1 F5 56 2B 5E EB 18 E2 CD B0 20 21    ..G...V+^..... !
002980:  00 00 22 82 3E 22 86 3E CD F0 20 22 84 3E CD F0    ..".>".>.. ".>..
002990:  20 22 88 3E EB 2B E5 2B 2B 2B 2B 56 2B 5E EB 3E     ".>.+.++++V+^.>
0029A0:  00 CD E2 2C DD 21 82 3E ED 5B 37 3E CD BA 33 E1    ...,.!.>.[7>..3.
0029B0:  56 2B 5E E5 EB CD 6E 15 3E C3 CD 83 08 CD F0 20    V+^...n.>...... 
0029C0:  E5 CD 58 16 ED 5B 37 3E DD 21 86 3E CD BA 33 E1    ..X..[7>.!.>..3.
0029D0:  E3 2B 56 2B 5E EB CD 6E 15 E1 ED 5B 37 3E 73 23    .+V+^..n...[7>s#
0029E0:  72 CD C3 20 C9 CD 8A 20 CD B0 20 3E 00 18 08 CD    r.. ... .. >....
0029F0:  8A 20 CD B0 20 3E FF 44 4D F5 3E 00 32 72 3E 32    . .. >.DM.>.2r>2
002A00:  82 3E 32 86 3E 3C 32 76 3E 3A 3B 3E 32 77 3E 32    .>2.><2v>:;>2w>2
002A10:  73 3E 2A 37 3E 22 78 3E CD F0 20 22 74 3E CD F0    s>*7>"x>.. "t>..
002A20:  20 22 84 3E CD F0 20 22 88 3E 1A CD B3 1A F1 EB     ".>.. ".>......
002A30:  2B 56 2B 5E 2B F5 E5 F5 EB CD E2 2C F1 ED 5B 37    +V+^+......,..[7
002A40:  3E CD D1 1D E1 56 2B 5E EB CD 6E 15 3E C3 2A 78    >....V+^..n.>.*x
002A50:  3E CD 80 2D F1 EE FF ED 5B 37 3E CD D1 1D ED 5B    >..-....[7>....[
002A60:  37 3E DD 21 72 3E CD BA 33 CD C3 20 CD 9D 20 C9    7>.!r>..3.. .. .
002A70:  EB 2B 56 2B 5E EB CD 76 25 3E EB CD 83 08 3A 6E    .+V+^..v%>....:n
002A80:  3E F6 80 32 6E 3E DD 21 6E 3E 21 8F 1F 18 50 CD    >..2n>.!n>!...P.
002A90:  3F 33 52 45 53 55 4C 54 49 53 20 6F 75 74 73 69    ?3RESULTIS outsi
002AA0:  64 65 20 61 20 56 41 4C 4F C6 C9 DD 21 7A 3E 21    de a VALO...!z>!
002AB0:  10 20 18 2B DD 21 76 3E 21 BD 1F 18 22 CD 3F 33    . .+.!v>!...".?3
002AC0:  4C 4F 4F 50 20 66 6F 75 6E 64 20 6F 75 74 73 69    LOOP found outsi
002AD0:  64 65 20 6C 6F 6F F0 C9 DD 21 72 3E 21 F4 1F DD    de loo...!r>!...
002AE0:  CB 00 76 28 01 E9 DD 46 01 3A 3B 3E CD DA 33 3E    ..v(...F.:;>..3>
002AF0:  C3 C3 6D 2D CD 3F 33 42 52 45 41 4B 20 66 6F 75    ..m-.?3BREAK fou
002B00:  6E 64 20 6F 75 74 73 69 64 65 20 6C 6F 6F F0 C9    nd outside loo..
002B10:  CD 3F 33 52 45 54 55 52 4E 20 66 6F 75 6E 64 20    .?3RETURN found 
002B20:  6F 75 74 73 69 64 65 20 46 55 4E 43 2F 50 52 4F    outside FUNC/PRO
002B30:  C3 C9 EB 2B 56 2B 5E EB CD 76 25 3E E9 CD 83 08    ...+V+^..v%>....
002B40:  C9 EB 2B 56 2B 5E E5 CD AC 32 38 35 DD 7E 05 FE    ..+V+^...285.~..
002B50:  08 28 1D FE 09 28 19 CD 3F 33 4C 61 62 65 6C 73    .(...(..?3Labels
002B60:  20 6E 65 65 64 20 61 20 67 6C 6F 62 61 EC 18 11     need a globa...
002B70:  DD 36 05 08 ED 5B 37 3E DD 4E 07 DD 46 08 CD 61    .6...[7>.N..F..a
002B80:  22 E1 2B 56 2B 5E EB C3 6E 15 C1 2A 76 3E E5 2A    ".+V+^..n..*v>.*
002B90:  78 3E E5 2A 72 3E E5 2A 74 3E E5 C5 C9 C1 E1 22    x>.*r>.*t>....."
002BA0:  74 3E E1 22 72 3E E1 22 78 3E E1 22 76 3E C5 C9    t>."r>."x>."v>..
002BB0:  C1 2A 82 3E E5 2A 84 3E E5 2A 86 3E E5 2A 88 3E    .*.>.*.>.*.>.*.>
002BC0:  E5 C5 C9 C1 E1 22 88 3E E1 22 86 3E E1 22 84 3E    .....".>.".>.".>
002BD0:  E1 22 82 3E C5 C9 DD CB 00 46 28 0A DD 6E 02 DD    .".>.....F(..n..
002BE0:  66 03 CD AD 08 C9 DD 6E 02 DD 66 03 CD 58 16 C9    f......n..f..X..
002BF0:  D5 2A 6C 3E E5 23 23 22 6C 3E ED 5B 3D 3E A7 ED    .*l>.##"l>.[=>..
002C00:  52 D2 9B 32 E1 D1 C9 CD 8A 20 3E 00 32 72 3E 3C    R..2..... >.2r><
002C10:  32 76 3E CD F0 20 22 74 3E 2A 37 3E 22 78 3E 3A    2v>.. "t>*7>"x>:
002C20:  3B 3E 32 77 3E 32 73 3E 1A CD B3 1A EB 2B 56 2B    ;>2w>2s>.....+V+
002C30:  5E EB CD 6E 15 3E C3 2A 78 3E CD 80 2D ED 5B 37    ^..n.>.*x>..-.[7
002C40:  3E DD 21 72 3E CD BA 33 CD 9D 20 C9 CD 8A 20 CD    >.!r>..3.. ... .
002C50:  B0 20 3E FF 18 08 CD 8A 20 CD B0 20 3E 00 F5 3E    . >..... .. >..>
002C60:  00 32 72 3E 32 76 3E 32 82 3E 32 86 3E CD F0 20    .2r>2v>2.>2.>.. 
002C70:  22 74 3E CD F0 20 22 78 3E CD F0 20 22 84 3E CD    "t>.. "x>.. ".>.
002C80:  F0 20 22 88 3E 3A 3B 3E 32 77 3E 32 73 3E 2A 37    . ".>:;>2w>2s>*7
002C90:  3E F1 F5 E5 F5 1A CD B3 1A EB 2B 56 2B 5E 2B E5    >.........+V+^+.
002CA0:  EB CD 6E 15 ED 5B 37 3E DD 21 76 3E CD BA 33 E1    ..n..[7>.!v>..3.
002CB0:  56 2B 5E EB F1 CD E2 2C D1 F1 F5 EE FF CD D1 1D    V+^....,........
002CC0:  F1 ED 5B 37 3E CD D1 1D ED 5B 37 3E DD 21 72 3E    ..[7>....[7>.!r>
002CD0:  CD BA 33 CD C3 20 CD 9D 20 C9 EB 2B 56 2B 5E 2B    ..3.. .. ..+V+^+
002CE0:  E5 D5 CD 1A 22 D1 CD F1 21 E1 56 2B 5E EB C3 6E    ...."...!.V+^..n
002CF0:  15 7A B3 C8 EB 2B E5 2B 2B 56 2B 5E EB CD 19 30    .z...+.++V+^...0
002D00:  EB ED 4B 45 3E CD 61 22 E1 56 2B 5E E5 CD 68 1D    ..KE>.a".V+^..h.
002D10:  DD E1 DD 5E FC DD 56 FD 18 D7 21 00 00 7A B3 28    ...^..V...!..z.(
002D20:  0D 23 23 D5 DD E1 DD 5E FA DD 56 FB 18 EF E5 ED    .##....^..V.....
002D30:  5B 37 3E 19 7B E6 01 20 01 23 23 23 23 3E C3 CD    [7>.{.. .####>..
002D40:  83 08 CD AD 08 3A 37 3E E6 01 28 05 3E 00 CD 83    .....:7>..(.>...
002D50:  08 2A 37 3E 22 45 3E E1 7C B5 C8 CD 83 08 2B 18    .*7>"E>.|.....+.
002D60:  F7 2A 3D 3E 72 2B 73 2B 70 2B 71 2B 22 3D 3E C9    .*=>r+s+p+q+"=>.
002D70:  2A 7E 3E E5 2A 80 3E E5 3E 00 32 7E 3E 3A 3B 3E    *~>.*.>.>.2~>:;>
002D80:  32 7F 3E CD F0 20 22 80 3E EB 2B 56 2B 5E E5 EB    2.>.. ".>.+V+^..
002D90:  CD 76 25 CD F0 20 54 5D 3E 11 CD 83 08 CD 58 16    .v%.. T]>.....X.
002DA0:  3E 3E CD 83 08 CD F0 20 7E CD 83 08 3E C3 CD 83    >>..... ~...>...
002DB0:  08 2A 94 3E CD AD 08 E1 D5 EB 2A 43 3E E5 21 00    .*.>......*C>.!.
002DC0:  00 22 43 3E 2A 41 3E E5 EB 2B 56 2B 5E EB CD 6E    ."C>*A>..+V+^..n
002DD0:  15 D1 D5 2A 41 3E A7 ED 52 23 23 3E C3 CD 83 08    ...*A>..R##>....
002DE0:  ED 5B 37 3E 19 23 23 CD AD 08 D1 E1 DD E1 E5 D5    .[7>.##.........
002DF0:  2A 37 3E DD 75 00 DD 74 01 2A 41 3E A7 ED 52 CB    *7>.u..t.*A>..R.
002E00:  3C CB 1D CB 3C CB 1D DD 75 02 45 7D A7 28 2B 2A    <...<...u.E}.(+*
002E10:  41 3E ED 5B 3F 3E 19 2B 2B 2B 2B E5 DD E1 DD 6E    A>.[?>.++++....n
002E20:  00 DD 66 01 CD AD 08 DD 6E 02 DD 66 03 CD AD 08    ..f.....n..f....
002E30:  DD 2B DD 2B DD 2B DD 2B 10 E4 2A 43 3E 7C B5 20    .+.+.+.+..*C>|. 
002E40:  05 2A 37 3E 23 23 CD AD 08 E1 22 41 3E E1 22 43    .*7>##...."A>."C
002E50:  3E ED 5B 37 3E DD 21 7E 3E CD BA 33 E1 22 80 3E    >.[7>.!~>..3.".>
002E60:  E1 22 7E 3E C9 3A 7E 3E CB 77 28 28 1B 1B D5 CD    ."~>.:~>.w((....
002E70:  3F 33 43 41 53 45 2F 44 45 46 41 55 4C 54 20 6F    ?3CASE/DEFAULT o
002E80:  75 74 73 69 64 65 20 61 20 53 57 49 54 43 48 4F    utside a SWITCHO
002E90:  CE C3 CA 23 EB 2B 56 2B 5E E5 EB CD 19 30 EB 2A    ...#.+V+^....0.*
002EA0:  3F 3E ED 4B 41 3E 09 44 4D 21 CE FF 39 A7 ED 42    ?>.KA>.DM!..9..B
002EB0:  DA 9B 32 60 69 73 23 72 ED 5B 37 3E 23 73 23 72    ..2`is#r.[7>#s#r
002EC0:  2A 41 3E 23 23 23 23 22 41 3E E1 2B 56 2B 5E EB    *A>####"A>.+V+^.
002ED0:  C3 6E 15 3A 7E 3E CB 77 C2 6E 23 2A 37 3E 22 43    .n.:~>.w.n#*7>"C
002EE0:  3E EB 2B 56 2B 5E EB C3 6E 15 DD 21 7E 3E 21 F4    >.+V+^..n..!~>!.
002EF0:  23 C3 DF 1F CD 3F 33 45 4E 44 43 41 53 45 20 75    #....?3ENDCASE u
002F00:  73 65 64 20 6F 75 74 73 69 64 65 20 53 57 49 54    sed outside SWIT
002F10:  43 48 4F CE C9 D5 DD E1 CD 8A 20 2A 64 3E E5 3E    CHO....... *d>.>
002F20:  2A CD 83 08 CD F0 20 22 64 3E CD 58 16 3E E5 CD    *..... "d>.X.>..
002F30:  83 08 3A 3B 3E 3D 3D 32 3B 3E DD 6E FA DD 66 FB    ..:;>==2;>.n..f.
002F40:  CD 76 25 21 20 25 CD CC 1C 2A 64 3E CD 58 16 DD    .v%! %...*d>.X..
002F50:  6E F8 DD 66 F9 CD 76 25 2A 37 3E E5 DD 7E 00 CD    n..f..v%*7>..~..
002F60:  B3 1A ED 4B 37 3E 03 2A 64 3E 71 23 70 DD 6E FE    ...K7>.*d>q#p.n.
002F70:  DD 66 FF 7C B5 20 05 21 01 00 18 03 CD 19 30 E5    .f.|. .!......0.
002F80:  CB 7C 21 26 25 28 03 21 34 25 CD CC 1C CD F0 20    .|!&%(.!4%..... 
002F90:  22 74 3E CD 58 16 3E C5 CD 83 08 3A 3B 3E 67 2E    "t>.X.>....:;>g.
002FA0:  00 22 72 3E 25 25 22 76 3E CD F0 20 22 78 3E 2A    ."r>%%"v>.. "x>*
002FB0:  39 3E E5 2A 1C 3E E5 DD 6E F6 DD 66 F7 CD ED 1C    9>.*.>..n..f....
002FC0:  DD 6E FC DD 66 FD CD 6E 15 3A 3B 3E C6 04 32 3B    .n..f..n.:;>..2;
002FD0:  3E E1 22 1C 3E C1 2A 39 3E ED 43 39 3E CD 90 17    >.".>.*9>.C9>...
002FE0:  ED 5B 37 3E DD 21 76 3E CD BA 33 3E E1 CD 83 08    .[7>.!v>..3>....
002FF0:  D1 21 4D 25 CD 0B 32 3E C3 E1 CD 80 2D ED 5B 37    .!M%..2>....-.[7
003000:  3E DD 21 72 3E CD BA 33 3E E1 CD 83 08 3E 22 CD    >.!r>..3>....>".
003010:  83 08 2A 64 3E CD 58 16 E1 22 64 3E CD 9D 20 C9    ..*d>.X.."d>.. .
003020:  05 7C EE 80 67 22 0D 11 00 00 EB 42 4B 7A EE 80    .|..g".....BKz..
003030:  57 ED 52 DA 0C 11 00 00 44 4D 7C EE 80 67 ED 52    W.R.....DM|..g.R
003040:  DA 3E 23 CD 83 08 C9 3E 2B CD 83 08 C9 03 01 00    .>#....>+.......
003050:  41 25 FF FF 47 25 00 00 4C 25 3E 11 CD 83 08 60    A%..G%..L%>....`
003060:  69 CD AD 08 3E 19 CD 83 08 C9 3E C3 CD 83 08 2A    i...>.....>....*
003070:  9A 3E CD AD 08 C9 7E EB 21 7E 25 C3 F6 31 4D 06    .>....~.!~%..1M.
003080:  26 4F 17 26 52 16 26 4B 7B 26 60 AA 26 43 90 26    &O.&R.&K{&`.&C.&
003090:  33 C8 26 2E 31 27 0C 3D 27 17 49 27 26 E6 27 20    3.&.1'.='.I'&.' 
0030A0:  FC 27 4E 4B 28 2F 66 28 35 C7 28 3D 18 29 39 4C    .'NK(/f(5.(=.)9L
0030B0:  29 3B 27 2A 24 76 2A 08 9B 28 1F B1 28 19 40 2A    );'*$v*..(..(.@*
0030C0:  18 56 2A 11 36 2A 10 60 2A 38 8A 2A 51 6C 2B 21    .V*.6*.`*8.*Ql+!
0030D0:  A9 2A 09 94 2A 1B BA 2A 1A CB 2A 1D DC 2A 25 EB    .*..*..*..*..*%.
0030E0:  2A 3C FA 2A 00 CD 4A 34 55 6E 65 78 70 65 63 74    *<.*..J4Unexpect
0030F0:  65 64 20 6E 6F 64 65 20 69 6E 20 65 78 70 72 65    ed node in expre
003100:  73 73 69 6F 6E 00 3E 21 CD 83 08 1B 1B 1A CD 83    ssion.>!........
003110:  08 13 1A CD 83 08 C9 DD E5 CD AC 32 38 18 DD 7E    ...........28..~
003120:  05 FE 04 20 14 3E 21 CD 83 08 DD 7E 07 CD 83 08    ... .>!....~....
003130:  DD 7E 08 CD 83 08 DD E1 C9 FE 02 30 24 3E DD CD    .~.........0$>..
003140:  83 08 3E 66 CD 83 08 DD 7E 08 CD 83 08 3E DD CD    ..>f....~....>..
003150:  83 08 3E 6E CD 83 08 DD 7E 08 3D CD 83 08 DD E1    ..>n....~.=.....
003160:  C9 FE 04 30 0B 3E 21 CD 83 08 CD D9 31 DD E1 C9    ...0.>!.....1...
003170:  3E 2A CD 83 08 CD D9 31 DD E1 C9 DD E5 CD EA 1D    >*.....1........
003180:  3E EB CD 83 08 DD E1 C9 DD E5 CD EA 1D DD E1 C9    >...............
003190:  EB 2B 56 2B 5E EB CD 76 25 21 A0 26 CD CC 1C C9    .+V+^..v%!.&....
0031A0:  09 7C EE FF 67 7D EE FF 6F 23 EB 2B 56 2B 5E EB    .|..g}..o#.+V+^.
0031B0:  CD 76 25 21 BA 26 CD CC 1C C9 0D CB 7C 28 09 7C    .v%!.&......|(.|
0031C0:  EE FF 67 7D EE FF 6F 23 CD D1 26 3E EB CD 83 08    ..g}..o#..&>....
0031D0:  C9 DD E5 2A 6E 3E E5 2A 70 3E E5 3E 00 32 6E 3E    ...*n>.*p>.>.2n>
0031E0:  3A 3B 3E 32 6F 3E CD F0 20 22 70 3E EB 2B 56 2B    :;>2o>.. "p>.+V+
0031F0:  5E EB CD 6E 15 DD 21 6E 3E DD CB 00 7E 20 20 CD    ^..n..!n>...~  .
003200:  3F 33 56 41 4C 4F 46 20 6D 75 73 74 20 63 6F 6E    ?3VALOF must con
003210:  74 61 69 6E 20 52 45 53 55 4C 54 49 D3 18 07 ED    tain RESULTI....
003220:  5B 37 3E CD BA 33 E1 22 70 3E E1 22 6E 3E DD E1    [7>..3."p>."n>..
003230:  C9 3E 21 CD 83 08 21 FF FF CD AD 08 C9 3E 21 CD    .>!...!......>!.
003240:  83 08 21 00 00 CD AD 08 C9 EB 2B 56 2B 5E 1A 21    ..!.......+V+^.!
003250:  55 27 C3 F6 31 4F 7C 27 38 C7 28 26 DD 27 00 CD    U'..1O|'8.(&.'..
003260:  3F 33 49 6E 76 61 6C 69 64 20 61 70 70 6C 69 63    ?3Invalid applic
003270:  61 74 69 6F 6E 20 6F 66 20 4C D6 C9 DD E5 CD AC    ation of L......
003280:  32 38 20 DD 7E 05 FE 04 28 D5 FE 02 30 18 21 CD    28 .~...(...0.!.
003290:  27 CD CC 1C DD 6E 08 2D 26 00 CD AD 08 21 D2 27    '....n.-&....!.'
0032A0:  CD CC 1C DD E1 C9 3E 21 CD 83 08 DD CB 06 46 20    ......>!......F 
0032B0:  0C CD D9 31 21 D8 27 CD CC 1C DD E1 C9 DD 6E 07    ...1!.'.......n.
0032C0:  DD 66 08 CB 3C CB 1D CD AD 08 DD E1 C9 04 DD E5    .f..<...........
0032D0:  E1 11 05 19 CB 3C CB 1D 04 CB 3C CB 1D EB 2B 56    .....<....<...+V
0032E0:  2B 5E EB C3 76 25 EB 2B 56 2B 5E EB CD 76 25 21    +^..v%.+V+^..v%!
0032F0:  F6 27 CD CC 1C C9 05 29 5E 23 56 EB EB 2B 56 2B    .'.....)^#V..+V+
003300:  5E EB CD 76 25 21 0C 28 CD CC 1C C9 08 7C EE FF    ^..v%!.(.....|..
003310:  67 7D EE FF 6F 3E 21 CD 83 08 2A 37 3E 01 03 00    g}..o>!...*7>...
003320:  7D CB 3C CB 1D 23 23 23 E6 01 20 03 01 04 00 CD    }.<..###.. .....
003330:  AD 08 3E C3 CD 83 08 CD F0 20 E5 CD 58 16 2A 37    ..>...... ..X.*7
003340:  3E 7D E6 01 28 03 CD 83 08 E1 C9 CD 15 28 1B 1A    >}..(........(..
003350:  4F 06 00 03 1A CD 83 08 1B 0B 78 B1 20 F6 ED 5B    O.........x. ..[
003360:  37 3E 73 23 72 C9 CD 15 28 E5 EB 2B 56 2B 5E CD    7>s#r...(..+V+^.
003370:  7B 28 E1 ED 5B 37 3E 73 23 72 C9 EB 7C B5 C8 7E    {(..[7>s#r..|..~
003380:  FE 36 20 10 2B 56 2B 5E 2B E5 EB CD 94 28 E1 56    .6 .+V+^+....(.V
003390:  2B 5E 18 E7 CD 19 30 CD AD 08 C9 CD E8 2B 21 A5    +^....0......+!.
0033A0:  28 CD CC 1C C9 0B A7 ED 52 21 FF FF 28 03 21 00    (.......R!..(.!.
0033B0:  00 CD E8 2B 21 BB 28 CD CC 1C C9 0B A7 ED 52 21    ...+!.(.......R!
0033C0:  FF FF 20 03 21 00 00 D5 EB 2B 2B 2B 56 2B 5E CD    .. .!....+++V+^.
0033D0:  3B 30 38 0A D1 CD E8 2B 3E 19 CD 83 08 C9 E1 D5    ;08....+>.......
0033E0:  2B 56 2B 5E EB CD 76 25 D1 21 EF 28 C3 0B 32 03    +V+^..v%.!.(..2.
0033F0:  01 00 0C 29 FF FF 12 29 00 00 17 29 3E 11 CD 83    ...)...)...)>...
003400:  08 60 69 CD AD 08 3E 19 CD 83 08 C9 3E 23 CD 83    .`i...>.....>#..
003410:  08 C9 3E 2B CD 83 08 C9 D5 EB 2B 2B 2B 56 2B 5E    ..>+......+++V+^
003420:  CD 3B 30 38 0F D1 CD E8 2B 21 30 29 CD CC 1C C9    .;08....+!0)....
003430:  03 A7 ED 52 E1 D5 2B 56 2B 5E EB CD 76 25 D1 21    ...R..+V+^..v%.!
003440:  00 00 A7 ED 52 EB 21 EF 28 C3 0B 32 D5 EB 2B 2B    ....R.!.(..2..++
003450:  2B 56 2B 5E CD 3B 30 38 10 D1 CD E8 2B 3E CD CD    +V+^.;08....+>..
003460:  83 08 2A 90 3E CD AD 08 C9 E1 D5 2B 56 2B 5E EB    ..*.>......+V+^.
003470:  CD 76 25 D1 21 7A 29 C3 0B 32 0E 01 00 DC 29 02    .v%.!z)..2....).
003480:  00 C9 29 03 00 DD 29 04 00 C9 29 05 00 E3 29 06    ..)...)...)...).
003490:  00 E9 29 07 00 EF 29 08 00 C9 29 09 00 F5 29 0A    ..)...)...)...).
0034A0:  00 FB 29 10 00 C9 29 20 00 C9 29 40 00 C9 29 00    ..)...) ..)@..).
0034B0:  01 C9 29 3E 11 CD 83 08 60 69 CD AD 08 3E CD CD    ..)>....`i...>..
0034C0:  83 08 2A 90 3E CD AD 08 C9 3E 00 CB 38 CB 19 38    ..*.>....>..8..8
0034D0:  03 3C 18 F7 47 3E 29 CD 83 08 10 F9 C9 21 01 2A    .<..G>)......!.*
0034E0:  C3 CC 1C 21 06 2A C3 CC 1C 21 0C 2A C3 CC 1C 21    ...!.*...!.*...!
0034F0:  12 2A C3 CC 1C 21 19 2A C3 CC 1C 21 20 2A C3 CC    .*...!.*...! *..
003500:  1C 04 54 5D 29 19 05 54 5D 29 29 19 05 54 5D 29    ..T])..T]))..T])
003510:  19 29 06 54 5D 29 19 29 19 06 54 5D 29 29 29 19    .).T]).)..T]))).
003520:  06 29 54 5D 29 29 19 CD E8 2B 3E CD CD 83 08 2A    .)T]))...+>....*
003530:  92 3E CD AD 08 C9 CD 6F 2F 21 4A 2A CD CC 1C C9    .>.....o/!J*....
003540:  CD 62 2F 21 4A 2A CD CC 1C C9 0B A7 ED 52 21 FF    .b/!J*.......R!.
003550:  FF 38 03 21 00 00 CD 6F 2F 21 6A 2A CD CC 1C C9    .8.!...o/!j*....
003560:  CD 62 2F 21 6A 2A CD CC 1C C9 0B A7 ED 52 21 FF    .b/!j*.......R!.
003570:  FF 30 03 21 00 00 CD E8 2B 3E CD CD 83 08 2A 92    .0.!....+>....*.
003580:  3E CD AD 08 3E EB CD 83 08 C9 CD C7 28 21 F6 27    >...>.......(!.'
003590:  CD CC 1C C9 CD E8 2B 21 9E 2A CD CC 1C C9 0A 7C    ......+!.*.....|
0035A0:  AA EE FF 67 7D AB EE FF 6F CD E8 2B 21 B3 2A CD    ...g}...o..+!.*.
0035B0:  CC 1C C9 06 7C AA 67 7D AB 6F CD E8 2B 21 C4 2A    ....|.g}.o..+!.*
0035C0:  CD CC 1C C9 06 7C A2 67 7D A3 6F CD E8 2B 21 D5    .....|.g}£o..+!.
0035D0:  2A CD CC 1C C9 06 7C B2 67 7D B3 6F CD E8 2B 3E    *.....|.g}.o..+>
0035E0:  CD CD 83 08 2A 9E 3E CD AD 08 C9 CD E8 2B 3E CD    ....*.>......+>.
0035F0:  CD 83 08 2A A0 3E CD AD 08 C9 CD B0 20 DD E5 D5    ...*.>...... ...
003600:  DD E1 21 00 00 22 82 3E 22 86 3E CD F0 20 22 84    ..!..".>".>.. ".
003610:  3E CD F0 20 22 88 3E DD 6E FA DD 66 FB 3E 00 DD    >.. ".>.n..f.>..
003620:  E5 CD E2 2C DD 21 82 3E ED 5B 37 3E CD BA 33 DD    ...,.!.>.[7>..3.
003630:  E1 DD 6E FE DD 66 FF CD 76 25 3E C3 CD 83 08 CD    ..n..f..v%>.....
003640:  F0 20 E5 CD 58 16 DD E5 DD 21 86 3E ED 5B 37 3E    . ..X....!.>.[7>
003650:  CD BA 33 DD E1 DD 6E FC DD 66 FD CD 76 25 E1 ED    ..3...n..f..v%..
003660:  5B 37 3E 73 23 72 DD E1 CD C3 20 C9 EB CD 7B 2B    [7>s#r.... ...{+
003670:  21 77 2B CD CC 1C C9 03 6E 26 00 DD E5 E5 DD E1    !w+.....n&......
003680:  06 06 21 B8 3E 5E 23 56 23 D5 10 F9 3A C4 3E F5    ..!.>^#V#...:.>.
003690:  21 CF 2B 11 B8 3E 01 0D 00 ED B0 DD E5 E1 DD 21    !.+..>.........!
0036A0:  B8 3E 2B 56 2B 5E 2B DD 72 06 DD 73 05 56 2B 5E    .>+V+^+.r..s.V+^
0036B0:  DD 72 09 DD 73 08 21 C4 3E CD 76 25 F1 32 C4 3E    .r..s.!.>.v%.2.>
0036C0:  06 06 21 C4 3E D1 2B 72 2B 73 10 F9 DD E1 C9 02    ..!.>.+r+s......
0036D0:  00 4D BA 3E 00 00 39 00 00 BF 3E 35 EB 2B 56 2B    .M.>..9...>5.+V+
0036E0:  5E 2B 46 2B 6E 60 18 0B EB 2B 46 2B 4E 2B 56 2B    ^+F+n`...+F+N+V+
0036F0:  5E 60 69 7E FE 4D 28 32 FE 4F 28 2E 1A FE 4D 28    ^`i~.M(2.O(...M(
003700:  4D FE 4F 28 49 E5 EB 7E CD D6 2C 30 0B EB CD 88    M.O(I..~..,0....
003710:  26 3E D5 CD 83 08 18 08 CD 76 25 3E E5 CD 83 08    &>.......v%>....
003720:  E1 CD 76 25 3E D1 CD 83 08 C9 1A FE 4D 28 1F FE    ..v%>.......M(..
003730:  4F 28 1B E5 EB 7E CD D6 2C 30 06 EB CD 88 26 18    O(...~..,0....&.
003740:  08 CD 76 25 3E EB CD 83 08 E1 CD 76 25 C9 D5 CD    ..v%>......v%...
003750:  76 25 D1 CD 57 2C C9 1A FE 4F 28 11 3E 11 CD 83    v%..W,...O(.>...
003760:  08 1B 1B 1A CD 83 08 13 1A CD 83 08 C9 DD E5 CD    ................
003770:  AC 32 38 18 DD 7E 05 FE 04 20 14 3E 11 CD 83 08    .28..~... .>....
003780:  DD 7E 07 CD 83 08 DD 7E 08 CD 83 08 DD E1 C9 FE    .~.....~........
003790:  02 30 24 3E DD CD 83 08 3E 56 CD 83 08 DD 7E 08    .0$>....>V....~.
0037A0:  CD 83 08 3E DD CD 83 08 3E 5E CD 83 08 DD 7E 08    ...>....>^....~.
0037B0:  3D CD 83 08 DD E1 C9 FE 04 30 0B 3E 11 CD 83 08    =........0.>....
0037C0:  CD D9 31 DD E1 C9 3E ED CD 83 08 3E 5B CD 83 08    ..1...>....>[...
0037D0:  CD D9 31 DD E1 C9 FE 4B 28 06 FE 4C 28 02 A7 C9    ..1....K(..L(...
0037E0:  37 C9 DD E5 47 3A 63 3E F5 78 32 63 3E EB 21 FC    7...G:c>.x2c>.!.
0037F0:  2C 1A CD F6 31 F1 32 63 3E DD E1 C9 19 B5 2D 18    ,...1.2c>.....-.
003800:  C6 2D 10 CD 2D 11 D4 2D 08 DB 2D 1F 4A 2E 1B 98    .-..-..-..-.J...
003810:  2E 1A DE 2E 20 24 2F 2E 74 2E 0C 86 2E 4D 52 2F    .... $/.t....MR/
003820:  4F 52 2F 00 EB CD 76 25 21 34 2D CD CC 1C 3E CA    OR/...v%!4-...>.
003830:  CD 37 2D C9 02 7C B5 F5 3A 63 3E A7 28 14 21 59    .7-..|..:c>.(.!Y
003840:  2D C1 7E B8 28 04 23 23 18 F8 23 7E DD 21 82 3E    -.~.(.##..#~.!.>
003850:  18 1B F1 DD 21 86 3E 18 14 C2 CA CA C2 D2 DA DA    ....!.>.........
003860:  D2 C3 C3 C2 20 CA 28 D2 30 DA 38 C3 18 DD CB 00    .... .(.0.8.....
003870:  46 20 07 CD 83 08 CD D6 20 C9 DD 6E 02 DD 66 03    F ...... ..n..f.
003880:  F5 44 4D ED 5B 37 3E A7 ED 52 11 7E 00 19 7C A7    .DM.[7>..R.~..|.
003890:  20 19 F1 E5 21 63 2D BE 28 04 23 23 18 F9 23 7E     ...!c-.(.##..#~
0038A0:  CD 83 08 E1 7D C6 80 CD 83 08 C9 F1 CD 83 08 60    ....}..........`
0038B0:  69 CD AD 08 C9 CD 62 2F 3E D2 21 70 2E F5 CD CC    i.....b/>.!p....
0038C0:  1C F1 CD 37 2D C9 CD 6F 2F 3E DA 18 ED CD 62 2F    ...7-..o/>....b/
0038D0:  3E DA 18 E6 CD 6F 2F 3E D2 18 DF 3E C2 F5 CD 4E    >....o/>...>...N
0038E0:  2E D5 DD E1 D5 DD 56 FD DD 5E FC CD 3B 30 30 4F    ......V..^..;00O
0038F0:  E1 EB 7C B5 20 4A EB 2B 56 2B 5E 1A FE 4F 20 31    ..|. J.+V+^..O 1
003900:  D5 CD AC 32 D1 38 34 DD 7E 05 FE 02 30 23 3E DD    ...2.84.~...0#>.
003910:  CD 83 08 3E 7E CD 83 08 DD 7E 08 CD 83 08 3E DD    ...>~....~....>.
003920:  CD 83 08 3E B6 CD 83 08 DD 7E 08 3D CD 83 08 18    ...>.....~.=....
003930:  0A EB CD 76 25 21 34 2D CD CC 1C F1 C3 37 2D D1    ...v%!4-.....7-.
003940:  CD E8 2B 21 70 2E F1 C3 BD 2D 3E CA 18 8F D5 EB    ..+!p....->.....
003950:  2B 56 2B 5E CD 3B 30 38 03 D1 A7 C9 E1 E5 2B 56    +V+^.;08......+V
003960:  2B 5E 2B 46 72 2B 4E 73 23 23 71 23 70 D1 37 C9    +^+Fr+Ns##q#p.7.
003970:  03 A7 ED 52 3A 63 3E A7 C8 3E C3 CD 83 08 DD 21    ...R:c>..>.....!
003980:  82 3E CD D6 20 C9 3A 63 3E A7 C0 3E C3 CD 83 08    .>.. .:c>..>....
003990:  DD 21 86 3E CD D6 20 C9 2A 82 3E E5 2A 84 3E E5    .!.>.. .*.>.*.>.
0039A0:  3A 63 3E F5 21 00 00 22 82 3E CD F0 20 22 84 3E    :c>.!..".>.. ".>
0039B0:  EB 2B 56 2B 5E E5 EB 3E 00 CD E2 2C ED 5B 37 3E    .+V+^..>...,.[7>
0039C0:  DD 21 82 3E CD BA 33 D1 F1 32 63 3E E1 22 84 3E    .!.>..3..2c>.".>
0039D0:  E1 22 82 3E EB 2B 56 2B 5E EB CD E2 2C C9 2A 86    .".>.+V+^...,.*.
0039E0:  3E E5 2A 88 3E E5 3A 63 3E F5 21 00 00 22 86 3E    >.*.>.:c>.!..".>
0039F0:  CD F0 20 22 88 3E EB 2B 56 2B 5E E5 EB 3E FF CD    .. ".>.+V+^..>..
003A00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
003A10:  03 00 00 00 02 09 50 E5 03 00 C1 02 00 00 00 02    ......P.........
003A20:  03 00 C2 02 00 00 00 02 03 00 C3 02 00 00 00 02    ................
003A30:  03 00 C4 02 00 00 00 02 03 00 C5 02 00 00 00 02    ................
003A40:  03 00 C6 02 00 00 00 02 03 00 C7 02 00 00 00 02    ................
003A50:  03 00 C8 02 00 00 00 02 03 00 C9 02 00 00 00 02    ................
003A60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003A70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003A80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003A90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003B00:  E2 2C ED 5B 37 3E DD 21 86 3E CD BA 33 D1 F1 32    .,.[7>.!.>..3..2
003B10:  63 3E E1 22 88 3E E1 22 86 3E EB 2B 56 2B 5E EB    c>.".>.".>.+V+^.
003B20:  CD E2 2C C9 CD 35 2F 3A 63 3E EE FF EB 2B 56 2B    ..,..5/:c>...+V+
003B30:  5E EB CD E2 2C 2A 82 3E ED 4B 86 3E ED 43 82 3E    ^...,*.>.K.>.C.>
003B40:  22 86 3E 2A 84 3E ED 4B 88 3E ED 43 84 3E 22 88    ".>*.>.K.>.C.>".
003B50:  3E C9 D5 CD 3B 30 E1 D2 25 2D 7A B3 CA 86 2E C3    >...;0..%-z.....
003B60:  74 2E EB 2B 46 2B 4E 2B 56 2B 5E 60 69 18 0A EB    t..+F+N+V+^`i...
003B70:  2B 56 2B 5E 2B 46 2B 6E 60 D5 E5 CD 3B 30 38 1C    +V+^+F+n`...;08.
003B80:  D1 D5 CD 3B 30 38 58 E1 D1 CD F3 2B 21 93 2F CD    ...;08X....+!./.
003B90:  CC 1C C9 08 7C EE 80 67 7A EE 80 57 E1 C1 D5 E5    ....|..gz..W....
003BA0:  EB CD 3B 30 38 1D E1 CD 76 25 21 BE 2F CD CC 1C    ..;08...v%!./...
003BB0:  3E 11 CD 83 08 E1 7C EE 80 67 CD AD 08 C9 04 7C    >.....|..g.....|
003BC0:  EE 80 67 3E 21 CD 83 08 7A EE 80 67 6B CD AD 08    ..g>!...z..gk...
003BD0:  3E 11 CD 83 08 E1 E1 7C EE 80 67 CD AD 08 C9 E1    >......|..g.....
003BE0:  E1 D5 7E FE 4F 28 15 CD D6 2C 30 06 EB CD 88 26    ..~.O(...,0....&
003BF0:  18 0E CD 76 25 3E EB CD 83 08 18 04 EB CD 57 2C    ...v%>........W,
003C00:  21 14 30 CD CC 1C 3E 21 CD 83 08 E1 7C EE 80 67    !.0...>!....|..g
003C10:  CD AD 08 C9 04 7A EE 80 57 EB CD 3B 30 EB D8 CD    .....z..W..;0...
003C20:  3F 33 4E 65 65 64 20 63 6F 6E 73 74 61 6E 74 20    ?3Need constant 
003C30:  65 78 70 72 65 73 73 69 6F EE C9 1A 21 42 30 C3    expressio...!B0.
003C40:  F6 31 4F 6C 30 4D 8C 30 35 A8 30 3D B0 30 39 BA    .1Ol0M.05.0=.09.
003C50:  30 3B C4 30 24 CE 30 1B D9 30 1A E5 30 1D 0E 31    0;.0$.0..0..0..1
003C60:  25 FB 30 2E F1 30 0C F6 30 00 A7 C9 DD E5 CD AC    %.0..0..0.......
003C70:  32 38 15 DD 7E 05 FE 04 28 04 DD E1 A7 C9 DD 5E    28..~...(......^
003C80:  07 DD 56 08 DD E1 37 C9 DD E1 A7 C9 EB 2B 56 2B    ..V...7......+V+
003C90:  5E 37 C9 EB 2B 56 2B 5E E5 CD 3B 30 E1 D0 D5 2B    ^7..+V+^..;0...+
003CA0:  56 2B 5E CD 3B 30 E1 C9 CD 93 30 D0 19 EB 37 C9    V+^.;0....0...7.
003CB0:  CD 93 30 D0 A7 ED 52 EB 37 C9 CD 93 30 D0 CD 21    ..0...R.7...0..!
003CC0:  31 EB 37 C9 CD 93 30 D0 CD 3D 31 EB 37 C9 CD 93    1.7...0..=1.7...
003CD0:  30 D0 CD 3D 31 60 69 37 C9 CD 93 30 D0 7C A2 57    0..=1`i7...0.|.W
003CE0:  7D A3 5F 37 C9 CD 93 30 D0 7C B2 57 7D B3 5F 37    }£_7...0.|.W}._7
003CF0:  C9 11 FF FF 37 C9 11 00 00 37 C9 CD 93 30 D0 7A    ....7....7...0.z
003D00:  B3 28 07 CB 3C CB 1D 1B 18 F5 54 5D 37 C9 CD 93    .(..<.....T]7...
003D10:  30 D0 7A B3 28 07 CB 25 CB 14 1B 18 F5 54 5D 37    0.z.(..%.....T]7
003D20:  C9 CD 67 31 F5 78 06 10 29 CB 11 17 30 01 19 10    ..g1.x..)...0...
003D30:  F7 F1 CB 7F C8 EB 21 00 00 A7 ED 52 C9 CD 67 31    ......!....R..g1
003D40:  F5 3E 10 CB 21 CB 10 CB 15 CB 14 A7 ED 52 38 03    .>..!........R8.
003D50:  03 18 01 19 3D 20 EC 50 59 EB F1 A7 C8 7C EE FF    ....= .PY....|..
003D60:  67 7D EE FF 6F 23 C9 44 4D 21 00 00 3E 00 CB 78    g}..o#.DM!..>..x
003D70:  28 0A A7 ED 42 44 4D 21 00 00 3E 80 CB 7A C8 EE    (...BDM!..>..z..
003D80:  80 A7 ED 52 EB 21 00 00 C9 6F 3E DD CD 83 08 3E    ...R.!...o>....>
003D90:  74 CD 83 08 7D CD 83 08 3E DD CD 83 08 3E 75 CD    t...}...>....>u.
003DA0:  83 08 7D 3D CD 83 08 C9 DD 7E 05 FE 02 30 07 DD    ..}=.....~...0..
003DB0:  7E 08 CD 89 31 C9 FE 08 38 09 3E 22 CD 83 08 CD    ~...1...8.>"....
003DC0:  D9 31 C9 CD 3F 33 49 6E 76 61 6C 69 64 20 61 73    .1..?3Invalid as
003DD0:  73 69 67 6E 6D 65 6E F4 C9 DD 7E 06 A7 28 0D DD    signmen...~..(..
003DE0:  7E 07 CD 83 08 DD 7E 08 CD 83 08 C9 DD 6E 07 DD    ~.....~......n..
003DF0:  66 08 CD 58 16 C9 4F 7E A7 20 02 23 E9 B9 20 06    f..X..O~. .#.. .
003E00:  23 4E 23 46 C5 C9 23 23 23 18 EC 7E 23 42 4B 5E    #N#F..###..~#BK^
003E10:  23 56 23 EB A7 ED 42 28 07 EB 23 23 3D 20 F0 E9    #V#...B(..##= ..
003E20:  EB 5E 23 56 EB E9 2A 1C 3E 01 09 00 09 44 4D 21    .^#V..*.>....DM!
003E30:  CE FF 39 A7 ED 42 DA 1C 35 60 69 ED 4B 3F 3E A7    ..9..B..5`i.K?>.
003E40:  ED 42 38 33 D5 2A 3F 3E ED 4B 41 3E 78 B1 28 1C    .B83.*?>.KA>x.(.
003E50:  0B 09 54 5D 01 5A 00 09 44 4D 21 CE FF 39 A7 ED    ..T].Z..DM!..9..
003E60:  42 38 38 60 69 ED 4B 41 3E EB ED B8 2A 3F 3E 11    B88`i.KA>...*?>.
003E70:  5A 00 19 22 3F 3E D1 2A 1C 3E E5 ED 4B 39 3E 71    Z.."?>.*.>..K9>q
003E80:  23 70 23 73 23 72 23 3A 3C 3E 77 11 05 00 19 22    #p#s#r#:<>w...."
003E90:  1C 3E E1 22 39 3E 11 05 00 19 C9 CD 4A 34 4F 75    .>."9>......J4Ou
003EA0:  74 20 6F 66 20 6D 65 6D 6F 72 79 00 2A 39 3E 7C    t of memory.*9>|
003EB0:  B5 20 42 2A 1C 3E E5 D5 2A 37 3E 7D E6 01 20 0C    . B*.>..*7>}.. .
003EC0:  3E 18 CD 83 08 3E 02 CD 83 08 18 0F 3E C3 CD 83    >....>......>...
003ED0:  08 2A 37 3E 23 23 23 23 CD AD 08 2A 37 3E 22 45    .*7>####...*7>"E
003EE0:  3E 3E 00 CD 83 08 CD 83 08 D1 3E 09 CD 6A 1D E1    >>........>..j..
003EF0:  E5 DD E1 A7 C9 E5 DD E1 DD 6E 02 DD 66 03 A7 ED    .........n..f...
003F00:  52 20 33 3A 3C 3E 47 DD 7E 04 B8 28 24 A7 28 21    R 3:<>G.~..($.(!
003F10:  CD 64 33 44 79 6E 61 6D 69 63 20 66 72 65 65 20    .d3Dynamic free 
003F20:  76 61 72 69 61 62 6C 65 20 75 73 65 64 2C A0 37    variable used,.7
003F30:  C9 DD E5 E1 A7 C9 DD 6E 00 DD 66 01 C3 AF 32 3E    .......n..f...2>
003F40:  00 32 C7 3E CD 8D 33 E1 7E 23 CB 7F 20 05 CD D6    .2.>..3.~#.. ...
003F50:  07 18 F5 E6 7F CD D6 07 E5 2A 5B 3E 23 22 5B 3E    .........*[>#"[>
003F60:  CD 0D 34 C9 3E 00 32 C7 3E CD 8D 33 E1 D5 7E 23    ..4.>.2.>..3..~#
003F70:  CB 7F 20 05 CD D6 07 18 F5 E6 7F CD D6 07 E3 CD    .. .............
003F80:  3E 34 2A 5B 3E 23 22 5B 3E CD 0D 34 C9 3E 0D CD    >4*[>#"[>..4.>..
003F90:  12 0C 3E 0A CD 12 0C C9 42 4B E5 DD E1 DD 7E 06    ..>.....BK....~.
003FA0:  A7 C0 DD 5E 07 DD 56 08 DD 71 07 DD 70 08 DD 36    ...^..V..q..p..6
003FB0:  06 01 EB 7C B5 C8 71 23 70 C9 DD CB 00 46 C0 DD    ...|..q#p....F..
003FC0:  CB 00 C6 DD 6E 02 DD 66 03 DD 73 02 DD 72 03 42    ....n..f..s..r.B
003FD0:  4B 18 E0 4F 78 32 3B 3E 47 79 4F 78 91 C8 FE 02    K..Ox2;>GyOx....
003FE0:  20 06 3E E1 CD 83 08 C9 FE 04 20 0B 3E E1 CD 83     .>....... .>...
003FF0:  08 3E E1 CD 83 08 C9 6F 26 00 3E 21 CD 83 08 CD    .>.....o&.>!....
004000:  AD 08 3E 39 CD 83 08 3E F9 CD 83 08 C9 21 28 34    ..>9...>.....!(4
004010:  CD 24 08 2A 55 3E 7C B5 28 07 2B 56 2B 5E EB 18    .$.*U>|.(.+V+^..
004020:  03 21 29 34 CD 3E 34 C9 20 69 6E A0 67 6C 6F 62    .!)4.>4. in.glob
004030:  61 6C 20 64 65 66 69 6E 69 74 69 6F 6E F3 23 23    al definition.##
004040:  23 CD 24 08 C9 21 6C 34 18 0A E1 CD 8D 33 CD 24    #.$..!l4.....3.$
004050:  08 21 6B 34 ED 7B 22 3E CD 24 08 3E 00 32 C7 3E    .!k4.{">.$.>.2.>
004060:  0E 6C 11 00 FF CD 05 00 C3 84 34 2E 0D 43 6F 6D    .l........4..Com
004070:  70 69 6C 61 74 69 6F 6E 20 61 62 61 6E 64 6F 6E    pilation abandon
004080:  65 64 2E 00 2A 5B 3E 7C B5 28 08 0E 6C 11 00 FF    ed..*[>|.(..l...
004090:  CD 05 00 CD 8D 33 CD 2B 0C FE 30 D2 00 00 21 AA    .....3.+..0...!.
0040A0:  34 CD 24 08 CD FC 0B C3 00 00 50 6C 65 61 73 65    4.$.......Please
0040B0:  20 69 6E 73 65 72 74 20 73 79 73 74 65 6D 20 64     insert system d
0040C0:  69 73 63 20 74 68 65 6E 20 70 72 65 73 73 20 61    isc then press a
0040D0:  6E 79 20 6B 65 79 00 E5 CD 56 35 7A B3 CA FE 34    ny key...V5z...4
0040E0:  E1 E5 D5 13 13 13 1A BE 20 08 FE 80 30 0C 23 13    ........ ...0.#.
0040F0:  18 F4 D1 EB 23 5E 23 56 18 E1 E1 D1 A7 C9 E3 54    ....#^#V.......T
004100:  5D 01 03 00 03 7E 23 CB 7F 28 F9 2A 1C 3E 09 E5    ]....~#..(.*.>..
004110:  21 CE FF 39 44 4D E1 A7 ED 42 38 17 CD 4A 34 4F    !..9DM...B8..J4O
004120:  75 74 20 6F 66 20 73 79 6D 62 6F 6C 20 73 70 61    ut of symbol spa
004130:  63 65 00 EB E3 ED 5B 1C 3E 72 2B 73 EB D1 E5 36    ce....[.>r+s...6
004140:  00 23 36 00 23 36 00 23 1A 77 23 13 FE 80 38 F8    .#6.#6.#.w#...8.
004150:  22 1C 3E E1 37 C9 0E 00 7E 81 4F 7E 23 FE 80 38    ".>.7...~.O~#..8
004160:  F7 79 E6 0F CB 27 4F 06 00 21 40 3C 09 5E 23 56    .y...'O..!@<.^#V
004170:  C9 21 CE FF 39 44 4D 2A 1C 3E A7 ED 42 D2 1C 35    .!..9DM*.>..B..5
004180:  3E 00 32 30 3E 3A 21 3E FE 20 20 05 CD 1A 06 18    >.20>:!>.  .....
004190:  F4 FE 09 28 F7 FE 0D 20 20 2A 31 3E 23 22 31 3E    ...(...  *1>#"1>
0041A0:  3E FF 32 30 3E 3A 66 3E 3D 32 66 3E CC 97 38 CD    >.20>:f>=2f>..8.
0041B0:  1A 06 FE 3E 20 CF C3 C8 36 CD EA 3A 30 24 CD B3    ...> ...6..:0$..
0041C0:  39 21 60 3C CD D7 34 22 1F 3E 30 07 3E 4F 77 32    9!`<..4".>0.>Ow2
0041D0:  1E 3E C9 7E 32 1E 3E FE 13 CA E3 38 FE 53 CA FE    .>.~2.>....8.S..
0041E0:  38 C9 CD F9 3A 30 11 D6 30 6F 26 00 CD D2 39 22    8...:0..0o&...9"
0041F0:  1F 3E 3E 4D 32 1E 3E C9 FE 23 20 7A 3E 4D 32 1E    .>>M2.>..# z>M2.
004200:  3E CD 1A 06 FE 62 20 14 CD 1A 06 CD D6 3A 38 52    >....b ......:8R
004210:  6F 26 00 CD FB 39 22 1F 3E 3E 4D C9 FE 6F 20 14    o&...9".>>M..o .
004220:  CD 1A 06 CD D6 3A 38 3A 6F 26 00 CD E7 39 22 1F    .....:8:o&...9".
004230:  3E 3E 4D C9 FE 78 20 14 CD 1A 06 CD D6 3A 38 22    >>M..x ......:8"
004240:  6F 26 00 CD 0D 3A 22 1F 3E 3E 4D C9 FE 30 38 12    o&...:".>>M..08.
004250:  FE 38 30 0E D6 30 6F 26 00 CD E7 39 22 1F 3E 3E    .80..0o&...9".>>
004260:  4D C9 CD 76 06 45 78 70 65 63 74 69 6E 67 20 6E    M..v.Expecting n
004270:  75 6D 62 65 72 00 FE 27 20 21 CD 29 06 CD 29 3A    umber..' !.)..):
004280:  6F 26 00 30 02 26 01 22 1F 3E CD 1A 06 FE 27 C2    o&.0.&.".>....'.
004290:  7D 38 CD 1A 06 3E 4D 32 1E 3E C9 21 C6 38 47 7E    }8...>M2.>.!.8G~
0042A0:  A7 28 10 B8 20 09 23 CD 1A 06 7E 32 1E 3E C9 23    .(.. .#...~2.>.#
0042B0:  23 18 EC 78 FE 2F 20 51 CD 1A 06 FE 5C 20 05 3E    #..x./ Q....\ .>
0042C0:  1B C3 8A 37 FE 2F 20 0A CD 1A 06 FE 0D 20 F9 C3    ...7./ ...... ..
0042D0:  85 35 FE 2A 28 06 3E 3B 32 1E 3E C9 CD 1A 06 FE    .5.*(.>;2.>.....
0042E0:  1A CA CA 37 FE 0D 20 07 2A 31 3E 23 22 31 3E FE    ...7.. .*1>#"1>.
0042F0:  2A 20 E9 CD 1A 06 FE 1A CA CA 37 FE 2A 28 F4 FE    * ........7.*(..
004300:  2F 20 D9 CD 1A 06 C3 85 35 FE 5C 20 19 CD 1A 06    / ......5.\ ....
004310:  FE 2F 20 04 3E 1A 18 72 FE 3D 20 04 3E 1F 18 6A    ./ .>..r.= .>..j
004320:  3E 20 32 1E 3E C9 FE 3C 20 19 CD 1A 06 FE 3D 20    > 2.>..< .....= 
004330:  04 3E 18 18 55 FE 3C 20 04 3E 1D 18 4D 3E 19 32    .>..U.< .>..M>.2
004340:  1E 3E C9 FE 3E 20 19 CD 1A 06 FE 3D 20 04 3E 10    .>..> .....= .>.
004350:  18 38 FE 3E 20 04 3E 25 18 30 3E 11 32 1E 3E C9    .8.> .>%.0>.2.>.
004360:  FE 2D 20 11 CD 1A 06 FE 3E 20 04 3E 3C 18 1B 3E    .- .....> .><..>
004370:  3D 32 1E 3E C9 FE 3A 20 1A CD 1A 06 FE 3D 20 04    =2.>..: .....= .
004380:  3E 3E 18 06 3E 3F 32 1E 3E C9 F5 CD 1A 06 F1 32    >>..>?2.>......2
004390:  1E 3E C9 FE 24 20 2F CD 1A 06 FE 28 20 0F 3E 24    .>..$ /....( .>$
0043A0:  CD B3 39 21 60 3C CD D7 34 3E 48 18 12 FE 29 C2    ..9!`<..4>H...).
0043B0:  6C 38 3E 24 CD B3 39 21 60 3C CD D7 34 3E 49 32    l8>$..9!`<..4>I2
0043C0:  1E 3E 22 1F 3E C9 FE 2E 20 25 2A CB 3E 2B 7E 32    .>".>... %*.>+~2
0043D0:  32 3E 2B 7E 32 31 3E 2B 7E 32 21 3E 11 A3 00 A7    2>+~21>+~2!>.£..
0043E0:  ED 52 22 CB 3E A7 C2 85 35 3E 40 32 1E 3E C9 FE    .R".>...5>@2.>..
0043F0:  1A 28 D7 FE 3D 20 1B CD 1A 06 FE 3E 20 05 3E 10    .(..= .....> .>.
004400:  C3 8A 37 FE 3C 20 05 3E 18 C3 8A 37 3E 08 32 1E    ..7.< .>...7>.2.
004410:  3E C9 FE 22 20 3D 21 C6 3C 0E 00 CD 29 06 FE 22    >.." =!.<...).."
004420:  20 09 21 C6 3C 71 3E 4E C3 8A 37 CD 29 3A 30 05     .!.<q>N..7.):0.
004430:  CD 3A 38 3E 0A CD 3A 38 18 E1 23 0C 77 79 A7 C0    .:8>..:8..#.wy..
004440:  CD 76 06 53 74 72 69 6E 67 20 74 6F 6F 20 6C 6F    .v.String too lo
004450:  6E 67 00 FE 7E 20 10 CD 1A 06 FE 3D 3E 1F CA 8A    ng..~ .....=>...
004460:  37 3E 20 32 1E 3E C9 3E 20 32 21 3E CD 76 06 42    7> 2.>.> 2!>.v.B
004470:  61 64 20 63 68 61 72 61 63 74 65 72 00 CD 76 06    ad character..v.
004480:  42 61 64 20 63 68 61 72 61 63 74 65 72 20 63 6F    Bad character co
004490:  6E 73 74 61 6E 74 00 3E 05 32 66 3E CD 02 0C D0    nstant.>.2f>....
0044A0:  FE EF 28 F8 CD C0 38 C0 CD FC 0B FE EF 28 F9 CD    ..(...8......(..
0044B0:  C0 38 C0 CD 4A 34 42 72 6F 6B 65 6E 20 69 6E 00    .8..J4Broken in.
0044C0:  FE FC C8 FE 03 C9 2B 35 2C 36 3B 37 40 17 26 1B    ......+5,6;7@.&.
0044D0:  7C 1A 21 38 2A 39 28 41 29 42 5B 41 5D 42 25 51    |.!8*9(A)B[A]B%Q
0044E0:  3F 52 00 CD 71 35 FE 4E 28 0B CD 76 06 42 61 64    ?R..q5.N(..v.Bad
0044F0:  20 47 45 54 00 21 C6 3C CD B6 08 C3 85 35 CD AB     GET.!.<.....5..
004500:  39 18 03 CD A8 39 21 5D 3E FE 6C CA 62 39 21 C5    9....9!]>.l.b9!.
004510:  3E FE 62 20 44 CD A8 39 FE 2B 28 0D FE 2D C2 6E    >.b D..9.+(..-.n
004520:  39 3E 00 32 C5 3E C3 89 39 3E FF 32 C5 3E CD A8    9>.2.>..9>.2.>..
004530:  39 FE 2C CA 8C 39 FE 3B CA 8C 39 FE 0D CA 8C 39    9.,..9.;..9....9
004540:  FE 1A CA 8C 39 CD 71 35 FE 4D C2 6E 39 3A 1F 3E    ....9.q5.M.n9:.>
004550:  32 C8 3E CD AB 39 C3 8C 39 21 C6 3E FE 73 28 02    2.>..9..9!.>.s(.
004560:  18 0C E5 CD A8 39 FE 2B 28 17 FE 2D 28 17 CD 76    .....9.+(..-(..v
004570:  06 42 61 64 20 6F 70 74 69 6F 6E 20 6C 69 6E 65    .Bad option line
004580:  00 3E FF 18 02 3E 00 E1 77 CD A8 39 FE 3B CA A2    .>...>..w..9.;..
004590:  39 FE 0D CA 71 35 FE 1A CA 71 35 FE 2C CA 03 39    9...q5...q5.,..9
0045A0:  18 CC CD 1A 06 C3 71 35 CD 1A 06 3A 21 3E FE 20    ......q5...:!>. 
0045B0:  28 F6 C9 21 60 3C 77 23 CD 1A 06 CD F5 3A 38 08    (..!`<w#.....:8.
0045C0:  FE 2E 28 04 FE 5F 20 04 77 23 18 EC 2B 7E F6 80    ..(.._ .w#..+~..
0045D0:  77 C9 CD 1A 06 CD F9 3A D0 29 5D 54 29 29 19 D6    w......:.)]T))..
0045E0:  30 5F 16 00 19 18 EB CD 1A 06 FE 30 D8 FE 38 D0    0_.........0..8.
0045F0:  29 29 29 D6 30 5F 16 00 19 18 EC CD 1A 06 FE 30    ))).0_.........0
004600:  D8 FE 32 D0 29 D6 30 5F 16 00 19 18 EE CD 1A 06    ..2.).0_........
004610:  CD F9 3A 38 08 FE 61 D8 FE 67 D0 D6 27 D6 30 29    ..:8..a..g..'.0)
004620:  29 29 29 5F 16 00 19 18 E4 FE 0D CA 7D 38 FE 2A    )))_........}8.*
004630:  37 3F C0 E5 D5 CD 29 06 21 B2 3A 5F 7E 23 BB 28    7?....).!.:_~#.(
004640:  29 A7 20 F8 7B FE 78 CA 94 3A FE 58 CA 94 3A 5F    ). .{.x..:.X..:_
004650:  21 B7 3A 7E A7 CA 7D 38 BB 28 04 23 23 18 F4 23    !.:~..}8.(.##..#
004660:  7E A7 20 03 3E 0D 37 D1 E1 C9 7B FE 0D 20 07 2A    ~. .>.7...{.. .*
004670:  31 3E 23 22 31 3E CD 29 06 FE 2A 28 0F 21 B2 3A    1>#"1>.)..*(.!.:
004680:  5F 7E 23 A7 CA 7D 38 BB 28 E0 18 F5 D1 E1 CD 29    _~#..}8.(......)
004690:  06 C3 29 3A CD 1A 06 CD D6 3A DA 7D 38 87 87 87    ..):.....:.}8...
0046A0:  87 F5 CD 1A 06 CD D6 3A DA 7D 38 47 F1 B0 D1 E1    .......:.}8G....
0046B0:  A7 C9 20 09 0D 0A 00 27 27 2A 2A 22 22 4E 00 6E    .. ....''**""N.n
0046C0:  00 54 09 74 09 53 20 73 20 42 08 62 08 50 0C 70    .T.t.S s B.b.P.p
0046D0:  0C 43 0D 63 0D 00 CD F9 3A 38 0B FE 61 D8 FE 67    .C.c....:8..a..g
0046E0:  38 02 37 C9 D6 27 D6 30 A7 C9 FE 61 38 05 FE 7B    8.7..'.0...a8..{
0046F0:  D0 37 C9 A7 C9 CD EA 3A D8 FE 30 38 05 FE 3A D0    .7.....:..08..:.
004700:  37 C9 A7 C9 61 6E 64 81 62 65 82 62 72 65 61 6B    7...and.be.break
004710:  83 62 79 84 63 61 73 65 85 64 6F 86 64 65 66 61    .by.case.do.defa
004720:  75 6C 74 87 65 71 88 65 71 76 89 65 6C 73 65 8A    ult.eq.eqv.else.
004730:  65 6E 64 63 61 73 65 8B 66 61 6C 73 65 8C 66 6F    endcase.false.fo
004740:  72 8D 66 69 6E 69 73 68 8E 67 6F 74 6F 8F 67 65    r.finish.goto.ge
004750:  90 67 72 91 67 74 91 67 6C 6F 62 61 6C 92 67 65    .gr.gt.global.ge
004760:  74 93 69 66 94 69 6E 74 6F 95 69 6E 6C 69 6E 65    t.if.into.inline
004770:  D0 6C 65 74 96 6C 76 97 6C 65 98 6C 73 99 6C 74    .let.lv.le.ls.lt
004780:  99 6C 6F 67 6F 72 9A 6C 6F 67 61 6E 64 9B 6C 6F    .logor.logand.lo
004790:  6F 70 9C 6C 73 68 69 66 74 9D 6D 61 6E 69 66 65    op.lshift.manife
0047A0:  73 74 9E 6E 65 9F 6E 6F 74 A0 6E 65 71 76 A1 6F    st.ne.not.neqv.o
0047B0:  72 8A 72 65 73 75 6C 74 69 73 A2 72 65 74 75 72    r.resultis.retur
0047C0:  6E A3 72 65 6D A4 72 73 68 69 66 74 A5 72 76 A6    n£rem.rshift.rv.
0047D0:  72 65 70 65 61 74 A7 72 65 70 65 61 74 77 68 69    repeat.repeatwhi
0047E0:  6C 65 A8 72 65 70 65 61 74 75 6E 74 69 6C A9 73    le.repeatuntil.s
0047F0:  77 69 74 63 68 6F 6E AA 73 74 61 74 69 63 AB 74    witchon.static.t
004800:  6F AC 74 65 73 74 AD 74 72 75 65 AE 74 68 65 6E    o.test.true.then
004810:  86 74 61 62 6C 65 AF 75 6E 74 69 6C B0 75 6E 6C    .table.until.unl
004820:  65 73 73 B1 76 65 63 B2 76 61 6C 6F 66 B3 77 68    ess.vec.valof.wh
004830:  69 6C 65 B4 6F 70 74 69 6F 6E D3 61 62 73 E0 00    ile.option.abs..
004840:  1C F1 CD 37 2D C9 CD 6F 2F 3E DA 18 ED CD 62 2F    ...7-..o/>....b/
004850:  3E DA 18 E6 CD 6F 2F 3E D2 18 DF 3E C2 F5 CD 4E    >....o/>...>...N
004860:  2E D5 DD E1 D5 DD 56 FD DD 5E FC CD 3B 30 30 4F    ......V..^..;00O
004870:  E1 EB 7C B5 20 4A EB 2B 56 2B 5E 1A FE 4F 20 31    ..|. J.+V+^..O 1
004880:  1A AC 74 65 73 74 AD 74 72 75 65 AE 74 68 65 6E    ..test.true.then
004890:  86 74 61 62 6C 65 AF 75 6E 74 69 6C B0 75 6E 6C    .table.until.unl
0048A0:  65 73 73 B1 76 65 63 B2 76 61 6C 6F 66 B3 77 68    ess.vec.valof.wh
0048B0:  69 6C 65 B4 6F 70 74 69 6F 6E D3 61 62 73 E0 00    ile.option.abs..
0048C0:  1C F1 CD 37 2D C9 CD 6F 2F 3E DA 18 ED CD 62 2F    ...7-..o/>....b/
0048D0:  3E DA 18 E6 CD 6F 2F 3E D2 18 DF 3E C2 F5 CD 4E    >....o/>...>...N
0048E0:  2E D5 DD E1 D5 DD 56 FD DD 5E FC CD 3B 30 30 4F    ......V..^..;00O
0048F0:  E1 EB 7C B5 20 4A EB 2B 56 2B 5E 1A FE 4F 20 31    ..|. J.+V+^..O 1
004900:  00 42 43 50 4C 4D 31 20 20 20 20 20 00 00 00 00    .BCPLM1     ....
004910:  00 00 0A 00 00 C6 06 00 3E 81 00 00 00 00 00 00    ........>.......
004920:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004930:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004940:  3E 81 00 93 04 70 72 6F 64 75 63 65 20 74 68 65    >....produce the
004950:  20 65 72 72 6F 72 20 6D 65 73 73 61 67 65 20 27     error message '
004960:  64 79 6E 61 6D 69 63 20 66 72 65 65 20 76 61 72    dynamic free var
004970:  69 61 62 6C 65 20 75 73 65 64 27 2E 0D 0A 3E 70    iable used'...>p
004980:  3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D    >---!-----!-----
004990:  21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D    !-------!-------
0049A0:  21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D    !-------!-------
0049B0:  21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D    !-------!-------
0049C0:  21 2D 2D 2D 2D 52 0D 0A 3E 74 6D 20 33 0D 0A 3E    !----R..>tm 3..>
0049D0:  62 6D 20 31 31 0D 0A 3E 68 6D 20 30 0D 0A 3E 66    bm 11..>hm 0..>f
0049E0:  6D 20 32 0D 0A 0D 0A 3E 63 65 E2 20 EC 42 43 50    m 2....>ce. .BCP
0049F0:  4C EC 0D 0A 0D 0A 3E 63 65 20 EC 54 48 45 20 53    L.....>ce .THE S
004A00:  59 53 54 45 4D 53 20 50 52 4F 47 52 41 4D 4D 49    YSTEMS PROGRAMMI
004A10:  4E 47 20 4C 41 4E 47 55 41 47 45 EC 0D 0A 0D 0A    NG LANGUAGE.....
004A20:  0D 0A 3E 63 65 20 EC 41 6D 73 74 72 61 64 20 50    ..>ce .Amstrad P
004A30:  43 57 38 32 35 36 2F 38 35 31 32 EC 0D 0A 0D 0A    CW8256/8512.....
004A40:  3E 63 65 20 EC 41 6D 73 74 72 61 64 20 43 50 43    >ce .Amstrad CPC
004A50:  36 31 32 38 2F 36 36 34 2F 34 36 34 EC 0D 0A E2    6128/664/464....
004A60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
004A70:  20 20 20 20 20 20 0D 0A 0D 0A 0D 0A 3E 63 65 20          ......>ce 
004A80:  E2 62 79 20 50 68 69 6C 6C 69 70 20 42 6C 65 6E    .by Phillip Blen
004A90:  6B 69 6E 73 6F 70 70 E2 0D 0A 0D 0A 0D 0A 0D 0A    kinsopp.........
004AA0:  3E 63 65 20 20 20 20 20 20 20 20 20 20 20 20 20    >ce             
004AB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
004AC0:  20 20 20 E2 43 4F 4E 54 45 4E 54 53 E2 0D 0A 0D       .CONTENTS....
004AD0:  0A 09 09 31 20 20 41 62 6F 75 74 20 42 43 50 4C    ...1  About BCPL
004AE0:  09 09 09 20 09 20 09 20 33 0D 0A 09 09 32 20 20    ... . . 3....2  
004AF0:  55 73 69 6E 67 20 41 72 6E 6F 72 20 42 43 50 4C    Using Arnor BCPL
004B00:  20 75 6E 64 65 72 20 43 50 2F 4D 09 09 20 35 0D     under CP/M.. 5.
004B10:  0A 09 09 33 20 20 55 73 69 6E 67 20 41 72 6E 6F    ...3  Using Arno
004B20:  72 20 42 43 50 4C 20 75 6E 64 65 72 20 41 4D 53    r BCPL under AMS
004B30:  44 4F 53 09 09 20 38 0D 0A 09 09 34 20 20 43 6F    DOS.. 8....4  Co
004B40:  6D 70 69 6C 65 72 20 6F 70 74 69 6F 6E 73 09 09    mpiler options..
004B50:  09 20 09 31 32 0D 0A 09 09 35 20 20 53 6F 6D 65    . .12....5  Some
004B60:  20 6B 65 79 20 66 61 63 74 73 20 61 62 6F 75 74     key facts about
004B70:  20 42 43 50 4C 09 09 09 31 34 0D 0A 09 09 36 20     BCPL...14....6 
004B80:  20 54 77 6F 20 42 43 50 4C 20 70 72 6F 67 72 61     Two BCPL progra
004B90:  6D 73 09 09 09 09 31 36 0D 0A 09 09 37 20 20 53    ms....16....7  S
004BA0:  75 6D 6D 61 72 79 20 6F 66 20 74 68 65 20 42 43    ummary of the BC
004BB0:  50 4C 20 6C 61 6E 67 75 61 67 65 09 09 31 38 0D    PL language..18.
004BC0:  0A 09 09 38 20 20 54 68 65 20 41 72 6E 6F 72 20    ...8  The Arnor 
004BD0:  42 43 50 4C 20 6C 69 62 72 61 72 69 65 73 09 09    BCPL libraries..
004BE0:  09 32 36 0D 0A 09 09 39 20 20 44 69 66 66 65 72    .26....9  Differ
004BF0:  65 6E 63 65 73 20 66 72 6F 6D 20 73 74 61 6E 64    ences from stand
004C00:  61 72 64 20 42 43 50 4C 09 09 34 39 0D 0A 0D 0A    ard BCPL..49....
004C10:  09 09 20 20 20 41 50 50 45 4E 44 49 43 45 53 0D    ..   APPENDICES.
004C20:  0A 0D 0A 09 09 31 20 20 54 65 63 68 6E 69 63 61    .....1  Technica
004C30:  6C 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 09 09 09    l information...
004C40:  35 31 0D 0A 09 09 32 20 20 53 75 6D 6D 61 72 79    51....2  Summary
004C50:  20 61 6E 64 20 69 6E 64 65 78 20 6F 66 20 6C 69     and index of li
004C60:  62 72 61 72 79 20 72 6F 75 74 69 6E 65 73 09 35    brary routines.5
004C70:  34 0D 0A 09 09 33 20 20 50 6F 72 74 61 62 69 6C    4....3  Portabil
004C80:  69 74 79 09 09 09 09 35 36 09 09 09 09 09 09 09    ity....56.......
004C90:  0D 0A 09 09 34 20 20 45 72 72 6F 72 20 6D 65 73    ....4  Error mes
004CA0:  73 61 67 65 73 09 09 09 09 35 37 0D 0A 0D 0A 0D    sages....57.....
004CB0:  0A 43 6F 70 79 72 69 67 68 74 20 28 63 29 20 41    .Copyright (c) A
004CC0:  72 6E 6F 72 20 4C 74 64 2E 2C 90 31 39 38 36 20    rnor Ltd.,.1986 
004CD0:  20 20 20 20 20 20 20 20 20 20 20 20 49 73 73 75                Issu
004CE0:  65 20 31 2C 20 31 39 38 36 20 28 76 31 2E 30 30    e 1, 1986 (v1.00
004CF0:  2F 32 2E 30 30 29 0D 0A 0D 0A 41 4D 53 54 52 41    /2.00)....AMSTRA
004D00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
004D10:  04 00 00 00 02 09 50 E5 04 00 C1 02 00 00 00 02    ......P.........
004D20:  04 00 C2 02 00 00 00 02 04 00 C3 02 00 00 00 02    ................
004D30:  04 00 C4 02 00 00 00 02 04 00 C5 02 00 00 00 02    ................
004D40:  04 00 C6 02 00 00 00 02 04 00 C7 02 00 00 00 02    ................
004D50:  04 00 C8 02 00 00 00 02 04 00 C9 02 00 00 00 02    ................
004D60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004D70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004D80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004D90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004DA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004DB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004DC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004DD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004DE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004DF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004E00:  44 20 69 73 20 61 20 72 65 67 69 73 74 65 72 65    D is a registere
004E10:  64 20 74 72 61 64 65 6D 61 72 6B 20 6F 66 20 41    d trademark of A
004E20:  6D 73 74 72 61 64 20 43 6F 6E 73 75 6D 65 72 20    mstrad Consumer 
004E30:  45 6C 65 63 74 72 6F 6E 69 63 73 20 70 6C 63 2E    Electronics plc.
004E40:  0D 0A 43 50 2F 4D 20 61 6E 64 20 43 50 2F 4D 20    ..CP/M and CP/M 
004E50:  50 6C 75 73 20 61 72 65 20 74 72 61 64 65 6D 61    Plus are tradema
004E60:  72 6B 73 20 6F 66 20 44 69 67 69 74 61 6C 20 52    rks of Digital R
004E70:  65 73 65 61 72 63 68 20 49 6E 63 2E 0D 0A 0D 0A    esearch Inc.....
004E80:  09 41 6C 6C 20 72 69 67 68 74 73 20 72 65 73 65    .All rights rese
004E90:  72 76 65 64 2E 20 49 74 20 69 73 20 69 6C 6C 65    rved. It is ille
004EA0:  67 61 6C 20 74 6F 20 72 65 70 72 6F 64 75 63 65    gal to reproduce
004EB0:  20 6F 72 20 74 72 61 6E 73 6D 69 74 20 65 69 74     or transmit eit
004EC0:  68 65 72 20 0D 8A 74 68 69 73 20 6D 61 6E 75 61    her ..this manua
004ED0:  6C 20 6F 72 20 74 68 65 20 61 63 63 6F 6D 70 61    l or the accompa
004EE0:  6E 79 69 6E 67 90 20 63 6F 6D 70 75 74 65 72 90    nying. computer.
004EF0:  20 70 72 6F 67 72 61 6D 20 69 6E 20 61 6E 79 20     program in any 
004F00:  66 6F 72 6D 20 77 69 74 68 6F 75 74 20 0D 8A 74    form without ..t
004F10:  68 65 20 77 72 69 74 74 65 6E 20 70 65 72 6D 69    he written permi
004F20:  73 73 69 6F 6E 20 6F 66 90 20 74 68 65 90 20 63    ssion of. the. c
004F30:  6F 70 79 72 69 67 68 74 90 20 68 6F 6C 64 65 72    opyright. holder
004F40:  2E 90 20 53 6F 66 74 77 61 72 65 20 70 69 72 61    .. Software pira
004F50:  63 79 20 69 73 20 0D 8A 74 68 65 66 74 2E 0D 0A    cy is ..theft...
004F60:  0D 0A 09 54 68 65 20 42 43 50 4C 20 63 6F 6D 70    ...The BCPL comp
004F70:  69 6C 65 72 20 77 61 73 20 64 65 76 65 6C 6F 70    iler was develop
004F80:  65 64 20 75 73 69 6E 67 20 74 68 65 20 4D 41 58    ed using the MAX
004F90:  41 4D 20 61 73 73 65 6D 62 6C 65 72 20 52 4F 4D    AM assembler ROM
004FA0:  2E 0D 0A 09 54 68 69 73 20 6D 61 6E 75 61 6C 20    ....This manual 
004FB0:  77 61 73 20 77 72 69 74 74 65 6E 20 6F 6E 20 74    was written on t
004FC0:  68 65 90 20 50 52 4F 54 45 58 54 20 77 6F 72 64    he. PROTEXT word
004FD0:  20 70 72 6F 63 65 73 73 6F 72 20 61 6E 64 20 63     processor and c
004FE0:  68 65 63 6B 65 64 20 0D 8A 75 73 69 6E 67 20 50    hecked ..using P
004FF0:  52 4F 53 50 45 4C 4C 2E 0D 0A 0D 0A 3E 63 65 20    ROSPELL.....>ce 
005000:  E2 41 72 6E 6F 72 20 4C 74 64 2E 2C 20 31 31 38    .Arnor Ltd., 118
005010:  20 57 68 69 74 65 68 6F 72 73 65 20 52 6F 61 64     Whitehorse Road
005020:  2C 20 43 72 6F 79 64 6F 6E 2C 20 43 52 30 20 32    , Croydon, CR0 2
005030:  4A 46 2E E2 0D 0A 3E 6F 70 0D 0A 3E 66 6F 20 20    JF....>op..>fo  
005040:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
005050:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
005060:  25 20 20 20 20 20 20 20 20 20 20 20 20 0D 0A 3E    %            ..>
005070:  63 65 20 E2 31 2E 20 41 42 4F 55 54 20 42 43 50    ce .1. ABOUT BCP
005080:  4C E2 0D 0A 0D 0A 0D 0A 09 42 43 50 4C 20 69 73    L........BCPL is
005090:  20 6F 66 74 65 6E 20 64 65 73 63 72 69 62 65 64     often described
0050A0:  20 61 73 90 20 61 20 22 73 79 73 74 65 6D 73 20     as. a "systems 
0050B0:  70 72 6F 67 72 61 6D 6D 69 6E 67 20 6C 61 6E 67    programming lang
0050C0:  75 61 67 65 22 2E 20 54 68 69 73 20 0D 8A 6D 61    uage". This ..ma
0050D0:  6B 65 73 20 42 43 50 4C 20 73 6F 75 6E 64 20 76    kes BCPL sound v
0050E0:  65 72 79 20 67 72 61 6E 64 20 61 6E 64 90 20 74    ery grand and. t
0050F0:  65 63 68 6E 69 63 61 6C 2C 90 20 62 75 74 20 74    echnical,. but t
005100:  68 69 73 20 69 73 20 6E 6F 74 20 74 68 65 20 63    his is not the c
005110:  61 73 65 2E 20 0D 8A 42 43 50 4C 20 69 73 20 63    ase. ..BCPL is c
005120:  65 72 74 61 69 6E 6C 79 20 61 20 76 65 72 79 90    ertainly a very.
005130:  20 67 6F 6F 64 90 20 6C 61 6E 67 75 61 67 65 90     good. language.
005140:  20 66 6F 72 20 77 72 69 74 69 6E 67 20 70 72 6F     for writing pro
005150:  67 72 61 6D 73 20 73 75 63 68 20 61 73 20 0D 8A    grams such as ..
005160:  6F 70 65 72 61 74 69 6E 67 20 73 79 73 74 65 6D    operating system
005170:  73 2C 20 63 6F 6D 70 69 6C 65 72 73 20 61 6E 64    s, compilers and
005180:  20 77 6F 72 64 20 70 72 6F 63 65 73 73 6F 72 73     word processors
005190:  20 62 75 74 20 74 68 65 20 66 65 61 74 75 72 65     but the feature
0051A0:  73 20 74 68 61 74 20 0D 8A 6D 61 6B 65 20 42 43    s that ..make BC
0051B0:  50 4C 20 69 64 65 61 6C 90 20 66 6F 72 90 20 74    PL ideal. for. t
0051C0:  68 65 73 65 90 20 61 70 70 6C 69 63 61 74 69 6F    hese. applicatio
0051D0:  6E 73 90 20 61 6C 73 6F 90 20 6D 61 6B 65 90 20    ns. also. make. 
0051E0:  69 74 20 61 6E 20 65 78 63 65 6C 6C 65 6E 74 20    it an excellent 
0051F0:  0D 8A 67 65 6E 65 72 61 6C 20 70 75 72 70 6F 73    ..general purpos
005200:  65 20 6C 61 6E 67 75 61 67 65 2E 0D 0A 09 57 68    e language....Wh
005210:  61 74 20 61 72 65 20 74 68 65 73 65 20 66 65 61    at are these fea
005220:  74 75 72 65 73 3F 20 46 69 72 73 74 2C 20 66 6C    tures? First, fl
005230:  65 78 69 62 69 6C 69 74 79 2E 20 42 43 50 4C 20    exibility. BCPL 
005240:  70 72 6F 67 72 61 6D 73 20 61 72 65 20 6E 6F 74    programs are not
005250:  20 0D 8A 63 6F 6E 73 74 72 61 69 6E 65 64 20 62     ..constrained b
005260:  79 20 72 75 6C 65 73 20 61 73 20 74 6F 20 77 68    y rules as to wh
005270:  69 63 68 90 20 6F 70 65 72 61 74 69 6F 6E 73 20    ich. operations 
005280:  63 61 6E 20 62 65 20 70 65 72 66 6F 72 6D 65 64    can be performed
005290:  20 6F 6E 20 77 68 69 63 68 20 0D 8A 74 79 70 65     on which ..type
0052A0:  20 6F 66 20 76 61 72 69 61 62 6C 65 2E 20 49 6E     of variable. In
0052B0:  64 65 65 64 20 74 68 65 72 65 20 61 72 65 90 20    deed there are. 
0052C0:  6E 6F 20 64 69 66 66 65 72 65 6E 74 20 76 61 72    no different var
0052D0:  69 61 62 6C 65 20 74 79 70 65 73 20 2D 2D 20 61    iable types -- a
0052E0:  6C 6C 20 0D 8A 76 61 72 69 61 62 6C 65 73 20 61    ll ..variables a
0052F0:  72 65 90 20 73 69 6D 70 6C 65 90 20 6E 75 6D 62    re. simple. numb
005300:  65 72 73 90 20 61 6E 64 90 20 6F 74 68 65 72 90    ers. and. other.
005310:  20 74 79 70 65 73 90 20 61 6E 64 90 20 73 74 72     types. and. str
005320:  75 63 74 75 72 65 73 20 61 72 65 20 0D 8A 61 63    uctures are ..ac
005330:  68 69 65 76 65 64 90 20 62 79 90 20 75 73 69 6E    hieved. by. usin
005340:  67 90 20 76 61 72 69 61 62 6C 65 73 90 20 64 69    g. variables. di
005350:  66 66 65 72 65 6E 74 6C 79 2E 90 90 20 54 68 69    fferently... Thi
005360:  73 90 20 6D 61 6B 65 73 90 20 42 43 50 4C 90 20    s. makes. BCPL. 
005370:  76 65 72 79 20 0D 8A 64 69 66 66 65 72 65 6E 74    very ..different
005380:  20 66 72 6F 6D 20 6F 74 68 65 72 20 6C 61 6E 67     from other lang
005390:  75 61 67 65 73 20 73 75 63 68 20 61 73 90 20 42    uages such as. B
0053A0:  41 53 49 43 90 20 61 6E 64 20 50 41 53 43 41 4C    ASIC. and PASCAL
0053B0:  2E 20 41 20 73 74 72 69 6E 67 20 69 73 20 0D 8A    . A string is ..
0053C0:  74 72 65 61 74 65 64 20 61 73 20 61 20 76 61 72    treated as a var
0053D0:  69 61 62 6C 65 20 70 6F 69 6E 74 69 6E 67 20 74    iable pointing t
0053E0:  6F 90 20 61 90 20 73 74 72 69 6E 67 2C 20 73 69    o. a. string, si
0053F0:  6D 69 6C 61 72 6C 79 20 61 20 76 65 63 74 6F 72    milarly a vector
005400:  2E 20 45 76 65 6E 20 0D 8A 70 72 6F 63 65 64 75    . Even ..procedu
005410:  72 65 73 90 20 61 72 65 90 20 73 69 6D 70 6C 79    res. are. simply
005420:  90 20 76 61 72 69 61 62 6C 65 73 90 20 63 6F 6E    . variables. con
005430:  74 61 69 6E 69 6E 67 90 90 20 74 68 65 90 20 61    taining.. the. a
005440:  64 64 72 65 73 73 90 20 6F 66 90 20 74 68 65 20    ddress. of. the 
005450:  0D 8A 70 72 6F 63 65 64 75 72 65 2C 20 61 6E 64    ..procedure, and
005460:  20 74 68 65 73 65 20 6D 61 79 20 62 65 20 61 73     these may be as
005470:  73 69 67 6E 65 64 20 74 6F 20 6F 72 20 70 61 73    signed to or pas
005480:  73 65 64 20 61 73 20 70 61 72 61 6D 65 74 65 72    sed as parameter
005490:  73 2E 0D 0A 09 54 68 69 73 20 66 6C 65 78 69 62    s....This flexib
0054A0:  69 6C 69 74 79 20 61 6C 6C 6F 77 73 20 74 68 65    ility allows the
0054B0:  20 42 43 50 4C 20 70 72 6F 67 72 61 6D 6D 65 72     BCPL programmer
0054C0:  90 20 74 6F 20 61 63 63 65 73 73 20 61 6E 79 20    . to access any 
0054D0:  70 61 72 74 20 6F 66 20 0D 8A 6D 65 6D 6F 72 79    part of ..memory
0054E0:  20 28 69 6E 64 65 65 64 20 61 6E 79 20 69 6E 64     (indeed any ind
0054F0:  69 76 69 64 75 61 6C 20 62 69 74 29 20 61 6E 64    ividual bit) and
005500:  90 20 73 6F 20 64 6F 20 74 68 69 6E 67 73 20 74    . so do things t
005510:  68 61 74 20 63 61 6E 20 6E 6F 72 6D 61 6C 6C 79    hat can normally
005520:  20 0D 8A 6F 6E 6C 79 20 62 65 20 64 6F 6E 65 20     ..only be done 
005530:  69 6E 20 6D 61 63 68 69 6E 65 20 63 6F 64 65 2E    in machine code.
005540:  20 4F 66 20 63 6F 75 72 73 65 20 66 72 65 65 64     Of course freed
005550:  6F 6D 20 61 6C 77 61 79 73 20 63 61 72 72 69 65    om always carrie
005560:  73 20 61 20 70 72 69 63 65 20 0D 8A 2D 2D 20 72    s a price ..-- r
005570:  65 73 70 6F 6E 73 69 62 69 6C 69 74 79 2E 20 49    esponsibility. I
005580:  6E 20 6C 61 6E 67 75 61 67 65 73 20 73 75 63 68    n languages such
005590:  20 61 73 20 50 41 53 43 41 4C 20 74 68 65 20 63     as PASCAL the c
0055A0:  6F 6D 70 69 6C 65 72 20 64 65 74 65 63 74 73 20    ompiler detects 
0055B0:  61 6E 20 0D 8A 61 74 74 65 6D 70 74 20 74 6F 20    an ..attempt to 
0055C0:  70 65 72 66 6F 72 6D 20 61 6E 90 20 69 6C 6C 65    perform an. ille
0055D0:  67 61 6C 90 20 6F 72 90 20 6D 65 61 6E 69 6E 67    gal. or. meaning
0055E0:  6C 65 73 73 90 20 6F 70 65 72 61 74 69 6F 6E 2E    less. operation.
0055F0:  20 49 6E 20 42 43 50 4C 20 69 74 20 0D 8A 72 61     In BCPL it ..ra
005600:  72 65 6C 79 20 64 6F 65 73 20 73 6F 90 20 61 6E    rely does so. an
005610:  64 90 20 69 74 90 20 69 73 90 20 71 75 69 74 65    d. it. is. quite
005620:  90 20 70 6F 73 73 69 62 6C 65 90 20 74 6F 90 20    . possible. to. 
005630:  63 72 61 73 68 90 20 74 68 65 20 73 79 73 74 65    crash. the syste
005640:  6D 20 62 79 20 0D 8A 63 6F 72 72 75 70 74 69 6E    m by ..corruptin
005650:  67 20 74 68 65 20 73 79 73 74 65 6D 20 6D 65 6D    g the system mem
005660:  6F 72 79 20 6F 72 20 6A 75 6D 70 69 6E 67 20 74    ory or jumping t
005670:  6F 20 61 6E 20 69 6C 6C 65 67 61 6C 20 61 64 64    o an illegal add
005680:  72 65 73 73 2E 0D 0A 0D 0A 0D 0A E2 41 6E 20 65    ress........An e
005690:  73 73 65 6E 74 69 61 6C 20 62 6F 6F 6B 20 74 6F    ssential book to
0056A0:  20 72 65 61 64 E2 0D 0A 0D 0A 09 54 68 69 73 20     read......This 
0056B0:  6D 61 6E 75 61 6C 20 67 69 76 65 73 20 61 6E 20    manual gives an 
0056C0:  69 6E 74 72 6F 64 75 63 74 69 6F 6E 90 20 74 6F    introduction. to
0056D0:  90 20 63 65 72 74 61 69 6E 20 61 73 70 65 63 74    . certain aspect
0056E0:  73 20 6F 66 20 42 43 50 4C 2C 20 61 73 20 0D 8A    s of BCPL, as ..
0056F0:  77 65 6C 6C 20 61 73 20 61 20 73 75 6D 6D 61 72    well as a summar
005700:  79 20 6F 66 90 20 74 68 65 90 20 66 61 63 69 6C    y of. the. facil
005710:  69 74 69 65 73 90 20 69 6D 70 6C 65 6D 65 6E 74    ities. implement
005720:  65 64 20 69 6E 20 74 68 69 73 20 76 65 72 73 69    ed in this versi
005730:  6F 6E 2E 20 49 74 20 0D 8A 64 6F 65 73 20 6E 6F    on. It ..does no
005740:  74 20 61 74 74 65 6D 70 74 20 74 6F 90 20 62 65    t attempt to. be
005750:  90 20 61 90 20 63 6F 6D 70 6C 65 74 65 90 20 67    . a. complete. g
005760:  75 69 64 65 90 20 74 6F 90 20 42 43 50 4C 20 70    uide. to. BCPL p
005770:  72 6F 67 72 61 6D 6D 69 6E 67 2C 20 61 6E 64 20    rogramming, and 
005780:  0D 8A 61 73 73 75 6D 65 73 20 73 6F 6D 65 20 6B    ..assumes some k
005790:  6E 6F 77 6C 65 64 67 65 20 6F 66 90 20 70 72 6F    nowledge of. pro
0057A0:  67 72 61 6D 6D 69 6E 67 90 20 28 66 6F 72 90 20    gramming. (for. 
0057B0:  65 78 61 6D 70 6C 65 90 20 69 6E 20 42 41 53 49    example. in BASI
0057C0:  43 29 2E 20 4E 6F 74 65 20 0D 8A 74 68 61 74 20    C). Note ..that 
0057D0:  65 78 61 6D 70 6C 65 73 20 6F 66 20 74 68 65 20    examples of the 
0057E0:  75 73 65 90 20 6F 66 90 20 6D 6F 73 74 90 20 66    use. of. most. f
0057F0:  65 61 74 75 72 65 73 90 20 6F 66 90 20 42 43 50    eatures. of. BCP
005800:  4C 20 61 72 65 20 74 6F 20 62 65 20 66 6F 75 6E    L are to be foun
005810:  64 20 0D 8A 61 6D 6F 6E 67 20 74 68 65 20 65 78    d ..among the ex
005820:  61 6D 70 6C 65 20 70 72 6F 67 72 61 6D 73 20 63    ample programs c
005830:  6F 6E 74 61 69 6E 65 64 20 6F 6E 20 74 68 65 20    ontained on the 
005840:  64 69 73 63 2E 0D 0A 0D 0A 09 54 68 65 20 64 65    disc......The de
005850:  66 69 6E 69 74 69 76 65 90 20 62 6F 6F 6B 90 20    finitive. book. 
005860:  6F 6E 90 20 42 43 50 4C 2C 90 20 62 6F 74 68 90    on. BCPL,. both.
005870:  20 61 73 90 20 61 6E 90 20 69 6E 74 72 6F 64 75     as. an. introdu
005880:  63 74 69 6F 6E 90 20 61 6E 64 20 61 20 0D 8A 72    ction. and a ..r
005890:  65 66 65 72 65 6E 63 65 20 69 73 20 20 22 42 43    eference is  "BC
0058A0:  50 4C 90 20 2D 2D 90 20 74 68 65 90 20 6C 61 6E    PL. --. the. lan
0058B0:  67 75 61 67 65 90 20 61 6E 64 90 20 69 74 73 90    guage. and. its.
0058C0:  20 63 6F 6D 70 69 6C 65 72 22 90 20 62 79 20 4D     compiler". by M
0058D0:  61 72 74 69 6E 20 0D 8A 52 69 63 68 61 72 64 73    artin ..Richards
0058E0:  20 61 6E 64 20 43 6F 6C 69 6E 20 57 68 69 74 62     and Colin Whitb
0058F0:  79 2D 53 74 72 65 76 65 6E 73 2E 0D 0A 09 54 68    y-Strevens....Th
005900:  69 73 20 62 6F 6F 6B 20 69 73 20 65 73 73 65 6E    is book is essen
005910:  74 69 61 6C 90 20 72 65 61 64 69 6E 67 90 20 66    tial. reading. f
005920:  6F 72 90 20 74 68 65 90 20 42 43 50 4C 90 20 70    or. the. BCPL. p
005930:  72 6F 67 72 61 6D 6D 65 72 2E 20 49 74 20 69 73    rogrammer. It is
005940:  20 0D 8A 70 75 62 6C 69 73 68 65 64 20 62 79 20     ..published by 
005950:  43 61 6D 62 72 69 64 67 65 90 20 55 6E 69 76 65    Cambridge. Unive
005960:  72 73 69 74 79 90 20 50 72 65 73 73 90 20 61 74    rsity. Press. at
005970:  90 20 61 90 20 72 65 61 73 6F 6E 61 62 6C 65 90    . a. reasonable.
005980:  20 70 72 69 63 65 20 69 6E 20 0D 8A 70 61 70 65     price in ..pape
005990:  72 62 61 63 6B 2E 20 4D 61 72 74 69 6E 20 52 69    rback. Martin Ri
0059A0:  63 68 61 72 64 73 20 6F 72 69 67 69 6E 61 6C 6C    chards originall
0059B0:  79 90 20 64 65 73 69 67 6E 65 64 90 20 42 43 50    y. designed. BCP
0059C0:  4C 90 20 69 6E 20 43 61 6D 62 72 69 64 67 65 20    L. in Cambridge 
0059D0:  69 6E 20 0D 8A 31 39 36 37 2E 20 54 68 69 73 20    in ..1967. This 
0059E0:  62 6F 6F 6B 20 77 69 6C 6C 20 68 65 6E 63 65 66    book will hencef
0059F0:  6F 72 74 68 20 62 65 20 72 65 66 65 72 72 65 64    orth be referred
005A00:  20 74 6F 20 61 73 20 22 74 68 65 20 42 43 50 4C     to as "the BCPL
005A10:  20 62 6F 6F 6B 22 2E 0D 0A 09 49 6E 20 70 61 72     book"....In par
005A20:  74 69 63 75 6C 61 72 20 74 68 65 20 62 6F 6F 6B    ticular the book
005A30:  20 63 6F 6E 74 61 69 6E 73 90 20 61 6E 20 65 78     contains. an ex
005A40:  63 65 6C 6C 65 6E 74 20 73 65 63 74 69 6F 6E 20    cellent section 
005A50:  6F 6E 20 22 41 64 76 61 6E 63 65 64 20 0D 8A 66    on "Advanced ..f
005A60:  61 63 69 6C 69 74 69 65 73 22 90 20 77 68 69 63    acilities". whic
005A70:  68 90 20 63 6F 76 65 72 73 2C 90 90 20 61 6D 6F    h. covers,.. amo
005A80:  6E 67 90 90 20 6F 74 68 65 72 90 90 20 74 68 69    ng.. other.. thi
005A90:  6E 67 73 2C 90 90 20 70 6F 69 6E 74 65 72 73 2C    ngs,.. pointers,
005AA0:  90 20 62 69 74 20 0D 8A 6F 70 65 72 61 74 69 6F    . bit ..operatio
005AB0:  6E 73 2C 20 72 65 63 75 72 73 69 6F 6E 20 61 6E    ns, recursion an
005AC0:  64 20 73 63 6F 70 65 20 72 75 6C 65 73 2E 20 0D    d scope rules. .
005AD0:  0A 09 46 6F 72 20 74 68 65 20 70 75 72 70 6F 73    ..For the purpos
005AE0:  65 73 20 6F 66 90 20 74 68 69 73 90 20 6D 61 6E    es of. this. man
005AF0:  75 61 6C 2C 90 20 74 68 65 90 20 42 43 50 4C 90    ual,. the. BCPL.
005B00:  20 62 6F 6F 6B 20 69 73 20 72 65 67 61 72 64 65     book is regarde
005B10:  64 20 61 73 20 0D 8A 64 65 66 69 6E 69 6E 67 20    d as ..defining 
005B20:  22 73 74 61 6E 64 61 72 64 22 20 42 43 50 4C 2C    "standard" BCPL,
005B30:  20 61 6E 64 20 61 6E 79 90 20 6D 69 6E 6F 72 20     and any. minor 
005B40:  76 61 72 69 61 74 69 6F 6E 73 20 6F 72 20 65 6E    variations or en
005B50:  68 61 6E 63 65 6D 65 6E 74 73 20 74 6F 20 0D 8A    hancements to ..
005B60:  74 68 69 73 20 73 74 61 6E 64 61 72 64 20 61 72    this standard ar
005B70:  65 20 70 6F 69 6E 74 65 64 20 6F 75 74 2E 0D 0A    e pointed out...
005B80:  3E 6F 70 0D 0A 3E 63 65 20 E2 32 2E 20 55 53 49    >op..>ce .2. USI
005B90:  4E 47 20 41 52 4E 4F 52 20 42 43 50 4C 20 55 4E    NG ARNOR BCPL UN
005BA0:  44 45 52 20 43 50 2F 4D E2 0D 0A 0D 0A 0D 0A 09    DER CP/M........
005BB0:  43 50 43 20 75 73 65 72 73 20 6D 61 79 90 20 75    CPC users may. u
005BC0:  73 65 90 20 42 43 50 4C 90 20 75 6E 64 65 72 90    se. BCPL. under.
005BD0:  20 43 50 2F 4D 90 20 28 65 69 74 68 65 72 90 20     CP/M. (either. 
005BE0:  32 2E 32 90 20 6F 72 20 50 6C 75 73 29 2E 20 54    2.2. or Plus). T
005BF0:  68 65 20 0D 8A 73 75 70 70 6C 69 65 64 20 64 69    he ..supplied di
005C00:  73 63 20 68 61 73 20 74 68 65 20 43 50 2F 4D 20    sc has the CP/M 
005C10:  76 65 72 73 69 6F 6E 20 6F 66 20 74 68 65 20 70    version of the p
005C20:  72 6F 67 72 61 6D 20 6F 6E 20 6F 6E 65 20 73 69    rogram on one si
005C30:  64 65 2C 20 61 6E 64 20 74 68 65 20 0D 8A 41 4D    de, and the ..AM
005C40:  53 44 4F 53 20 76 65 72 73 69 6F 6E 20 6F 6E 20    SDOS version on 
005C50:  74 68 65 20 6F 74 68 65 72 2E 20 0D 0A 0D 0A 4E    the other. ....N
005C60:  6F 74 65 3A 20 50 43 57 38 32 35 36 2F 38 35 31    ote: PCW8256/851
005C70:  32 20 75 73 65 72 73 20 73 68 6F 75 6C 64 20 69    2 users should i
005C80:  67 6E 6F 72 65 20 74 68 65 20 41 4D 53 44 4F 53    gnore the AMSDOS
005C90:  20 73 69 64 65 20 6F 66 20 74 68 65 20 64 69 73     side of the dis
005CA0:  63 20 61 6E 64 20 0D 8A 74 68 65 20 45 50 52 4F    c and ..the EPRO
005CB0:  4D 2C 20 61 73 90 20 77 65 6C 6C 90 20 61 73 90    M, as. well. as.
005CC0:  20 61 6E 79 90 20 72 65 66 65 72 65 6E 63 65 73     any. references
005CD0:  90 20 74 6F 90 20 41 6D 73 64 6F 73 90 20 6F 72    . to. Amsdos. or
005CE0:  20 74 68 65 20 45 50 52 4F 4D 2F 52 4F 4D 20 0D     the EPROM/ROM .
005CF0:  8A 76 65 72 73 69 6F 6E 2C 20 74 68 72 6F 75 67    .version, throug
005D00:  68 6F 75 74 20 74 68 69 73 20 6D 61 6E 75 61 6C    hout this manual
005D10:  2E 20 54 68 65 73 65 20 61 72 65 20 66 6F 72 20    . These are for 
005D20:  43 50 43 20 75 73 65 72 73 20 6F 6E 6C 79 2E 20    CPC users only. 
005D30:  0D 0A 0D 0A 09 54 68 65 20 6E 65 77 63 6F 6D 65    .....The newcome
005D40:  72 20 74 6F 20 74 68 65 20 6C 61 6E 67 75 61 67    r to the languag
005D50:  65 20 69 73 20 61 64 76 69 73 65 64 20 74 6F 20    e is advised to 
005D60:  70 61 73 73 20 6F 76 65 72 20 63 68 61 70 74 65    pass over chapte
005D70:  72 73 20 32 2C 20 33 20 0D 8A 61 6E 64 20 34 20    rs 2, 3 ..and 4 
005D80:  6F 6E 20 74 68 65 20 66 69 72 73 74 20 72 65 61    on the first rea
005D90:  64 69 6E 67 20 61 73 20 74 68 65 79 20 64 65 73    ding as they des
005DA0:  63 72 69 62 65 20 74 68 65 20 6D 65 63 68 61 6E    cribe the mechan
005DB0:  69 63 73 20 6F 66 20 75 73 69 6E 67 20 74 68 65    ics of using the
005DC0:  20 0D 8A 63 6F 6D 70 69 6C 65 72 2C 20 72 61 74     ..compiler, rat
005DD0:  68 65 72 20 74 68 61 6E 20 64 65 74 61 69 6C 73    her than details
005DE0:  20 6F 66 20 74 68 65 20 6C 61 6E 67 75 61 67 65     of the language
005DF0:  2E 0D 0A 0D 0A E2 4C 69 73 74 20 6F 66 20 66 69    ......List of fi
005E00:  6C 65 73 20 63 6F 6E 74 61 69 6E 65 64 20 6F 6E    les contained on
005E10:  20 74 68 65 20 64 69 73 63 20 2D 2D 20 43 50 2F     the disc -- CP/
005E20:  4D 20 73 69 64 65 E2 0D 0A 0D 0A 54 68 65 20 6D    M side.....The m
005E30:  61 69 6E 20 66 69 6C 65 73 20 61 72 65 3A 0D 0A    ain files are:..
005E40:  0D 0A 42 43 50 4C 2E 43 4F 4D 09 09 74 68 65 20    ..BCPL.COM..the 
005E50:  6D 61 69 6E 20 63 6F 6D 70 69 6C 65 72 20 70 72    main compiler pr
005E60:  6F 67 72 61 6D 0D 0A 43 4C 49 42 48 44 52 09 09    ogram..CLIBHDR..
005E70:  74 68 65 20 6D 61 69 6E 20 49 2F 4F 20 6C 69 62    the main I/O lib
005E80:  72 61 72 79 0D 0A 43 4C 49 42 48 44 52 31 09 09    rary..CLIBHDR1..
005E90:  74 68 65 20 65 78 74 72 61 20 49 2F 4F 20 6C 69    the extra I/O li
005EA0:  62 72 61 72 79 20 63 6F 6E 74 61 69 6E 69 6E 67    brary containing
005EB0:  20 6C 65 73 73 20 75 73 65 64 20 72 6F 75 74 69     less used routi
005EC0:  6E 65 73 0D 0A 44 45 42 55 47 09 09 61 20 72 6F    nes..DEBUG..a ro
005ED0:  75 74 69 6E 65 20 75 73 65 66 75 6C 20 66 6F 72    utine useful for
005EE0:  20 64 65 62 75 67 67 69 6E 67 20 42 43 50 4C 20     debugging BCPL 
005EF0:  70 72 6F 67 72 61 6D 73 0D 0A 0D 0A 54 68 65 20    programs....The 
005F00:  64 69 73 63 20 61 6C 73 6F 20 63 6F 6E 74 61 69    disc also contai
005F10:  6E 73 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67    ns the following
005F20:  20 65 78 61 6D 70 6C 65 20 66 69 6C 65 73 3A 0D     example files:.
005F30:  0A 0D 0A 3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D    ...>---!-----!--
005F40:  2D 2D 2D 4C 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D    ---L-------!----
005F50:  2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D    ---!-------!----
005F60:  2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D    ---!-------!----
005F70:  2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A 41 53 36 35 30    ---!----R..AS650
005F80:  32 2E 42 09 09 61 20 36 35 30 32 20 63 72 6F 73    2.B..a 6502 cros
005F90:  73 20 61 73 73 65 6D 62 6C 65 72 2C 20 77 72 69    s assembler, wri
005FA0:  74 74 65 6E 20 69 6E 20 42 43 50 4C 0D 0A 42 45    tten in BCPL..BE
005FB0:  44 43 2E 42 09 09 42 43 50 4C 20 65 64 69 74 6F    DC.B..BCPL edito
005FC0:  72 20 73 6F 75 72 63 65 20 63 6F 64 65 2C 20 43    r source code, C
005FD0:  50 2F 4D 20 76 65 72 73 69 6F 6E 0D 0A 42 45 44    P/M version..BED
005FE0:  43 2E 43 4F 4D 09 09 42 43 50 4C 20 65 64 69 74    C.COM..BCPL edit
005FF0:  6F 72 20 6F 62 6A 65 63 74 20 63 6F 64 65 2C 20    or object code, 
006000:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
006010:  05 00 00 00 02 09 50 E5 05 00 C1 02 00 00 00 02    ......P.........
006020:  05 00 C2 02 00 00 00 02 05 00 C3 02 00 00 00 02    ................
006030:  05 00 C4 02 00 00 00 02 05 00 C5 02 00 00 00 02    ................
006040:  05 00 C6 02 00 00 00 02 05 00 C7 02 00 00 00 02    ................
006050:  05 00 C8 02 00 00 00 02 05 00 C9 02 00 00 00 02    ................
006060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
006070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
006080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
006090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
006100:  43 50 2F 4D 20 76 65 72 73 69 6F 6E 0D 0A 43 4F    CP/M version..CO
006110:  50 59 2E 42 09 09 61 20 73 69 6D 70 6C 65 20 65    PY.B..a simple e
006120:  78 61 6D 70 6C 65 20 70 72 6F 67 72 61 6D 20 77    xample program w
006130:  68 69 63 68 20 63 6F 70 69 65 73 20 20 61 20 66    hich copies  a f
006140:  69 6C 65 0D 0A 4B 45 59 44 45 46 53 2E 50 43 57    ile..KEYDEFS.PCW
006150:  09 61 20 6B 65 79 20 64 65 66 69 6E 69 74 69 6F    .a key definitio
006160:  6E 20 66 69 6C 65 90 20 66 6F 72 90 20 75 73 65    n file. for. use
006170:  90 20 77 69 74 68 90 20 42 45 44 43 2E 43 4F 4D    . with. BEDC.COM
006180:  20 6F 6E 20 74 68 65 20 0D 8A 09 09 09 50 43 57     on the .....PCW
006190:  38 32 35 36 2F 38 35 31 32 2E 0D 0A 54 49 44 59    8256/8512...TIDY
0061A0:  2E 42 09 09 41 20 42 43 50 4C 20 70 72 6F 67 72    .B..A BCPL progr
0061B0:  61 6D 20 74 6F 20 66 6F 72 6D 61 74 20 42 43 50    am to format BCP
0061C0:  4C 20 73 6F 75 72 63 65 20 63 6F 64 65 20 74 69    L source code ti
0061D0:  64 69 6C 79 0D 0A 3E 2D 2D 2D 21 2D 2D 2D 2D 2D    dily..>---!-----
0061E0:  21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D    !-----!-------!-
0061F0:  2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D    ------!-------!-
006200:  2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D    ------!-------!-
006210:  2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A 0D 0A    ------!----R....
006220:  0D 0A E2 43 72 65 61 74 69 6E 67 20 61 20 77 6F    ...Creating a wo
006230:  72 6B 69 6E 67 20 64 69 73 63 E2 0D 0A 0D 0A 4E    rking disc.....N
006240:  4F 54 45 3A 20 55 6E 64 65 72 20 6E 6F 20 63 69    OTE: Under no ci
006250:  72 63 75 6D 73 74 61 6E 63 65 73 20 73 68 6F 75    rcumstances shou
006260:  6C 64 90 20 74 68 65 90 20 6F 72 69 67 69 6E 61    ld. the. origina
006270:  6C 90 20 64 69 73 63 90 20 62 65 20 75 73 65 64    l. disc. be used
006280:  20 61 73 20 61 20 0D 8A 77 6F 72 6B 69 6E 67 20     as a ..working 
006290:  64 69 73 63 20 66 6F 72 20 6E 6F 72 6D 61 6C 20    disc for normal 
0062A0:  75 73 65 2E 20 54 68 65 90 20 72 65 71 75 69 72    use. The. requir
0062B0:  65 64 20 66 69 6C 65 73 20 73 68 6F 75 6C 64 20    ed files should 
0062C0:  62 65 20 63 6F 70 69 65 64 20 6F 6E 74 6F 20 0D    be copied onto .
0062D0:  8A 61 20 73 79 73 74 65 6D 20 64 69 73 63 20 61    .a system disc a
0062E0:  6E 64 20 74 68 65 20 6F 72 69 67 69 6E 61 6C 20    nd the original 
0062F0:  72 65 74 61 69 6E 65 64 20 69 6E 20 61 20 73 61    retained in a sa
006300:  66 65 20 70 6C 61 63 65 2C 20 61 73 20 61 20 62    fe place, as a b
006310:  61 63 6B 75 70 2E 0D 0A 0D 0A 09 41 20 73 79 73    ackup......A sys
006320:  74 65 6D 20 64 69 73 63 20 73 68 6F 75 6C 64 20    tem disc should 
006330:  62 65 90 20 63 72 65 61 74 65 64 20 75 73 69 6E    be. created usin
006340:  67 20 44 49 53 43 4B 49 54 20 28 44 49 53 43 4B    g DISCKIT (DISCK
006350:  49 54 33 2C 20 44 49 53 43 4B 49 54 32 20 0D 8A    IT3, DISCKIT2 ..
006360:  6F 72 20 46 4F 52 4D 41 54 2C 20 61 73 20 61 70    or FORMAT, as ap
006370:  70 72 6F 70 72 69 61 74 65 20 6F 6E 90 20 74 68    propriate on. th
006380:  65 90 20 43 50 43 90 20 72 61 6E 67 65 29 90 20    e. CPC. range). 
006390:  74 6F 90 20 66 6F 72 6D 61 74 20 61 20 64 69 73    to. format a dis
0063A0:  63 2E 20 54 68 65 20 0D 8A 66 69 72 73 74 20 66    c. The ..first f
0063B0:  6F 75 72 20 66 69 6C 65 73 90 20 69 6E 90 20 74    our files. in. t
0063C0:  68 65 90 20 61 62 6F 76 65 90 20 6C 69 73 74 90    he. above. list.
0063D0:  20 73 68 6F 75 6C 64 90 20 74 68 65 6E 90 20 62     should. then. b
0063E0:  65 20 63 6F 70 69 65 64 20 28 75 73 69 6E 67 20    e copied (using 
0063F0:  0D 8A 50 49 50 29 20 66 72 6F 6D 20 74 68 65 90    ..PIP) from the.
006400:  20 73 75 70 70 6C 69 65 64 90 20 42 43 50 4C 90     supplied. BCPL.
006410:  20 64 69 73 63 90 20 6F 6E 74 6F 90 20 74 68 65     disc. onto. the
006420:  90 20 6E 65 77 6C 79 90 20 66 6F 72 6D 61 74 74    . newly. formatt
006430:  65 64 20 64 69 73 63 2C 20 0D 8A 74 6F 67 65 74    ed disc, ..toget
006440:  68 65 72 20 77 69 74 68 20 28 69 66 20 75 73 69    her with (if usi
006450:  6E 67 20 43 50 2F 4D 20 50 6C 75 73 29 90 20 74    ng CP/M Plus). t
006460:  68 65 90 20 45 4D 53 20 66 69 6C 65 20 66 72 6F    he. EMS file fro
006470:  6D 20 74 68 65 20 43 50 2F 4D 20 53 79 73 74 65    m the CP/M Syste
006480:  6D 20 0D 8A 55 74 69 6C 69 74 69 65 73 20 64 69    m ..Utilities di
006490:  73 63 2E 0D 0A 09 54 68 69 73 20 77 69 6C 6C 20    sc....This will 
0064A0:  63 72 65 61 74 65 20 61 90 20 64 69 73 63 90 20    create a. disc. 
0064B0:  73 75 69 74 61 62 6C 65 90 20 66 6F 72 90 20 75    suitable. for. u
0064C0:  73 65 2C 90 20 62 75 74 90 20 79 6F 75 20 6D 69    se,. but. you mi
0064D0:  67 68 74 20 61 6C 73 6F 20 0D 8A 64 65 63 69 64    ght also ..decid
0064E0:  65 20 74 6F 20 61 64 64 20 66 75 72 74 68 65 72    e to add further
0064F0:  20 66 69 6C 65 73 2C 90 20 73 75 63 68 90 20 61     files,. such. a
006500:  73 90 20 61 6E 90 20 65 64 69 74 6F 72 20 6F 72    s. an. editor or
006510:  20 53 45 54 4B 45 59 53 2E 43 4F 4D 20 28 73 65     SETKEYS.COM (se
006520:  65 20 0D 8A 62 65 6C 6F 77 29 2C 20 74 6F 20 74    e ..below), to t
006530:  68 65 20 64 69 73 63 2E 0D 0A 3E 70 61 0D 0A E2    he disc...>pa...
006540:  45 6E 74 65 72 69 6E 67 20 61 6E 64 20 65 64 69    Entering and edi
006550:  74 69 6E 67 20 42 43 50 4C 20 70 72 6F 67 72 61    ting BCPL progra
006560:  6D 73 20 75 6E 64 65 72 20 43 50 2F 4D E2 0D 0A    ms under CP/M...
006570:  0D 0A 09 41 6E 79 20 65 64 69 74 6F 72 20 6F 72    ...Any editor or
006580:  90 20 77 6F 72 64 90 20 70 72 6F 63 65 73 73 6F    . word. processo
006590:  72 90 20 6D 61 79 90 20 62 65 90 90 75 73 65 64    r. may. be..used
0065A0:  90 20 66 6F 72 90 20 74 79 70 69 6E 67 20 69 6E    . for. typing in
0065B0:  20 42 43 50 4C 20 0D 8A 70 72 6F 67 72 61 6D 73     BCPL ..programs
0065C0:  2C 20 61 73 20 6C 6F 6E 67 20 61 73 20 61 6E 20    , as long as an 
0065D0:  41 53 43 49 49 20 66 69 6C 65 20 63 61 6E 20 62    ASCII file can b
0065E0:  65 20 70 72 6F 64 75 63 65 64 2E 0D 0A 09 54 68    e produced....Th
0065F0:  65 20 43 50 2F 4D 20 76 65 72 73 69 6F 6E 20 6F    e CP/M version o
006600:  66 20 50 52 4F 54 45 58 54 90 20 69 73 20 65 73    f PROTEXT. is es
006610:  70 65 63 69 61 6C 6C 79 20 73 75 69 74 61 62 6C    pecially suitabl
006620:  65 20 28 75 73 69 6E 67 20 70 72 6F 67 72 61 6D    e (using program
006630:  20 0D 8A 6D 6F 64 65 29 2C 20 61 73 20 69 73 20     ..mode), as is 
006640:  74 68 65 20 41 72 6E 6F 72 20 70 72 6F 67 72 61    the Arnor progra
006650:  6D 90 20 65 64 69 74 6F 72 90 20 73 75 70 70 6C    m. editor. suppl
006660:  69 65 64 20 77 69 74 68 20 6F 74 68 65 72 20 41    ied with other A
006670:  72 6E 6F 72 20 43 50 2F 4D 20 0D 8A 70 72 6F 67    rnor CP/M ..prog
006680:  72 61 6D 73 2E 20 41 6C 74 65 72 6E 61 74 69 76    rams. Alternativ
006690:  65 6C 79 20 43 50 43 90 20 75 73 65 72 73 90 20    ely CPC. users. 
0066A0:  63 61 6E 90 20 75 73 65 90 20 74 68 65 90 20 41    can. use. the. A
0066B0:  4D 53 44 4F 53 90 20 76 65 72 73 69 6F 6E 73 20    MSDOS. versions 
0066C0:  6F 66 20 0D 8A 50 52 4F 54 45 58 54 20 6F 72 20    of ..PROTEXT or 
0066D0:  4D 41 58 41 4D 2E 0D 0A 09 49 66 20 79 6F 75 20    MAXAM....If you 
0066E0:  64 6F 20 6E 6F 74 20 68 61 76 65 20 61 90 20 73    do not have a. s
0066F0:  75 69 74 61 62 6C 65 90 20 65 64 69 74 6F 72 20    uitable. editor 
006700:  74 68 65 20 70 72 6F 67 72 61 6D 20 42 45 44 43    the program BEDC
006710:  2E 43 4F 4D 20 63 61 6E 20 62 65 20 0D 8A 75 73    .COM can be ..us
006720:  65 64 2C 20 61 6E 64 20 74 68 69 73 20 73 68 6F    ed, and this sho
006730:  75 6C 64 20 61 6C 73 6F 20 62 65 20 63 6F 70 69    uld also be copi
006740:  65 64 90 20 6F 6E 74 6F 90 20 74 68 65 20 73 79    ed. onto. the sy
006750:  73 74 65 6D 20 64 69 73 63 2E 20 54 68 69 73 20    stem disc. This 
006760:  69 73 20 61 20 0D 8A 73 69 6D 70 6C 65 20 66 75    is a ..simple fu
006770:  6C 6C 20 73 63 72 65 65 6E 20 65 64 69 74 6F 72    ll screen editor
006780:  90 20 77 68 69 63 68 90 20 69 73 90 20 63 6F 6D    . which. is. com
006790:  70 61 74 69 62 6C 65 90 20 77 69 74 68 20 50 52    patible. with PR
0067A0:  4F 54 45 58 54 20 65 64 69 74 69 6E 67 20 0D 8A    OTEXT editing ..
0067B0:  63 6F 6D 6D 61 6E 64 73 2E 0D 0A 0D 0A 4E 6F 74    commands.....Not
0067C0:  65 3A 20 20 49 66 20 75 73 69 6E 67 20 42 45 44    e:  If using BED
0067D0:  43 2E 43 4F 4D 20 77 69 74 68 20 61 20 50 43 57    C.COM with a PCW
0067E0:  38 32 35 36 2F 38 35 31 32 2C 20 74 68 65 20 6B    8256/8512, the k
0067F0:  65 79 73 20 6D 75 73 74 20 62 65 20 64 65 66 69    eys must be defi
006800:  6E 65 64 20 0D 8A 75 73 69 6E 67 90 20 53 45 54    ned ..using. SET
006810:  4B 45 59 53 2E 90 20 53 75 69 74 61 62 6C 65 90    KEYS.. Suitable.
006820:  20 64 65 66 69 6E 69 74 69 6F 6E 73 90 90 20 61     definitions.. a
006830:  72 65 90 90 20 70 72 6F 76 69 64 65 64 90 20 69    re.. provided. i
006840:  6E 90 20 74 68 65 90 20 66 69 6C 65 20 0D 8A 4B    n. the. file ..K
006850:  45 59 44 45 46 53 2E 50 43 57 20 61 6E 64 20 74    EYDEFS.PCW and t
006860:  68 65 20 73 79 6E 74 61 78 20 75 73 65 64 20 69    he syntax used i
006870:  73 3A 20 20 20 20 53 45 54 4B 45 59 53 20 4B 45    s:    SETKEYS KE
006880:  59 44 45 46 53 2E 50 43 57 0D 0A 0D 0A 09 54 68    YDEFS.PCW.....Th
006890:  69 73 20 63 61 6E 20 62 65 20 69 6E 63 6F 72 70    is can be incorp
0068A0:  6F 72 61 74 65 64 20 69 6E 74 6F 90 20 61 90 20    orated into. a. 
0068B0:  50 52 4F 46 49 4C 45 2E 53 55 42 20 66 69 6C 65    PROFILE.SUB file
0068C0:  2C 20 69 6E 20 77 68 69 63 68 20 63 61 73 65 2C    , in which case,
0068D0:  20 0D 8A 62 6F 74 68 20 53 45 54 4B 45 59 53 2E     ..both SETKEYS.
0068E0:  43 4F 4D 20 61 6E 64 20 53 55 42 4D 49 54 2E 43    COM and SUBMIT.C
0068F0:  4F 4D 20 6D 75 73 74 90 20 61 6C 73 6F 90 20 62    OM must. also. b
006900:  65 20 63 6F 70 69 65 64 20 6F 6E 74 6F 20 74 68    e copied onto th
006910:  65 20 77 6F 72 6B 69 6E 67 20 0D 8A 64 69 73 63    e working ..disc
006920:  2E 0D 0A 0D 0A 0D 0A E2 43 6F 6D 70 69 6C 69 6E    ........Compilin
006930:  67 20 61 20 42 43 50 4C 20 70 72 6F 67 72 61 6D    g a BCPL program
006940:  20 75 6E 64 65 72 20 43 50 2F 4D E2 0D 0A 0D 0A     under CP/M.....
006950:  09 54 68 65 20 43 50 2F 4D 20 76 65 72 73 69 6F    .The CP/M versio
006960:  6E 20 6F 66 90 20 74 68 65 90 20 63 6F 6D 70 69    n of. the. compi
006970:  6C 65 72 90 20 74 61 6B 65 73 90 20 61 90 20 66    ler. takes. a. f
006980:  69 6C 65 20 63 6F 6E 74 61 69 6E 69 6E 67 20 42    ile containing B
006990:  43 50 4C 20 0D 8A 73 6F 75 72 63 65 20 63 6F 64    CPL ..source cod
0069A0:  65 20 61 6E 64 20 70 72 6F 64 75 63 65 73 90 20    e and produces. 
0069B0:  61 90 20 43 4F 4D 90 20 66 69 6C 65 90 20 63 6F    a. COM. file. co
0069C0:  6E 74 61 69 6E 69 6E 67 90 20 61 6E 20 65 78 65    ntaining. an exe
0069D0:  63 75 74 61 62 6C 65 20 43 50 2F 4D 20 0D 8A 6F    cutable CP/M ..o
0069E0:  62 6A 65 63 74 20 63 6F 64 65 20 70 72 6F 67 72    bject code progr
0069F0:  61 6D 2E 20 54 68 65 72 65 20 69 73 90 20 6E 6F    am. There is. no
006A00:  90 20 69 6E 74 65 72 6D 65 64 69 61 74 65 20 63    . intermediate c
006A10:  6F 6D 70 69 6C 61 74 69 6F 6E 20 73 74 61 67 65    ompilation stage
006A20:  2E 20 54 68 65 20 0D 8A 63 6F 6D 6D 61 6E 64 20    . The ..command 
006A30:  74 6F 20 63 6F 6D 70 69 6C 65 20 61 20 70 72 6F    to compile a pro
006A40:  67 72 61 6D 20 69 73 3A 0D 0A 0D 0A 09 62 63 70    gram is:.....bcp
006A50:  6C 20 3C 73 6F 75 72 63 65 3E 20 3C 64 65 73 74    l <source> <dest
006A60:  69 6E 61 74 69 6F 6E 3E 0D 0A 0D 0A 77 68 65 72    ination>....wher
006A70:  65 20 3C 73 6F 75 72 63 65 3E 20 61 6E 64 20 3C    e <source> and <
006A80:  64 65 73 74 69 6E 61 74 69 6F 6E 3E 20 61 72 65    destination> are
006A90:  20 74 68 65 20 6E 61 6D 65 73 20 6F 66 20 74 68     the names of th
006AA0:  65 20 66 69 6C 65 73 20 66 72 6F 6D 20 77 68 69    e files from whi
006AB0:  63 68 20 0D 8A 63 6F 64 65 20 69 73 20 74 61 6B    ch ..code is tak
006AC0:  65 6E 20 61 6E 64 20 74 6F 20 77 68 69 63 68 20    en and to which 
006AD0:  69 74 90 20 69 73 20 77 72 69 74 74 65 6E 2E 20    it. is written. 
006AE0:  54 68 65 20 64 65 73 74 69 6E 61 74 69 6F 6E 20    The destination 
006AF0:  66 69 6C 65 6E 61 6D 65 20 69 73 20 0D 8A 6F 70    filename is ..op
006B00:  74 69 6F 6E 61 6C 20 61 6E 64 20 69 66 20 6F 6D    tional and if om
006B10:  69 74 74 65 64 20 77 69 6C 6C 20 64 65 66 61 75    itted will defau
006B20:  6C 74 90 20 74 6F 90 20 74 68 65 90 20 73 6F 75    lt. to. the. sou
006B30:  72 63 65 20 66 69 6C 65 20 6E 61 6D 65 20 77 69    rce file name wi
006B40:  74 68 20 61 20 0D 8A 2E 43 4F 4D 20 65 78 74 65    th a ...COM exte
006B50:  6E 73 69 6F 6E 2E 20 54 68 65 20 65 78 74 65 6E    nsion. The exten
006B60:  73 69 6F 6E 73 20 6F 6E 20 62 6F 74 68 90 20 66    sions on both. f
006B70:  69 6C 65 6E 61 6D 65 73 20 61 72 65 20 6F 70 74    ilenames are opt
006B80:  69 6F 6E 61 6C 2E 20 49 66 20 74 68 65 20 0D 8A    ional. If the ..
006B90:  73 6F 75 72 63 65 20 6E 61 6D 65 20 68 61 73 20    source name has 
006BA0:  6E 6F 20 65 78 74 65 6E 73 69 6F 6E 20 74 68 65    no extension the
006BB0:  6E 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 20 77    n the compiler w
006BC0:  69 6C 6C 20 66 69 72 73 74 20 73 65 61 72 63 68    ill first search
006BD0:  20 66 6F 72 20 61 20 0D 8A 66 69 6C 65 20 77 69     for a ..file wi
006BE0:  74 68 20 6E 6F 20 65 78 74 65 6E 73 69 6F 6E 20    th no extension 
006BF0:  61 6E 64 20 74 68 65 6E 90 20 66 6F 72 90 20 61    and then. for. a
006C00:  90 20 66 69 6C 65 20 77 69 74 68 20 61 20 2E 42    . file with a .B
006C10:  20 65 78 74 65 6E 73 69 6F 6E 2E 20 54 68 65 20     extension. The 
006C20:  0D 8A 73 61 6D 65 20 61 70 70 6C 69 65 73 20 69    ..same applies i
006C30:  6E 20 74 68 65 20 47 45 54 20 64 69 72 65 63 74    n the GET direct
006C40:  69 76 65 20 6F 6E 20 62 6F 74 68 20 43 50 2F 4D    ive on both CP/M
006C50:  20 61 6E 64 20 41 4D 53 44 4F 53 20 76 65 72 73     and AMSDOS vers
006C60:  69 6F 6E 73 2E 20 49 66 20 0D 8A 74 68 65 20 64    ions. If ..the d
006C70:  65 73 74 69 6E 61 74 69 6F 6E 20 66 69 6C 65 20    estination file 
006C80:  68 61 73 20 6E 6F 20 65 78 74 65 6E 73 69 6F 6E    has no extension
006C90:  20 74 68 65 6E 20 74 68 69 73 20 77 69 6C 6C 20     then this will 
006CA0:  64 65 66 61 75 6C 74 20 74 6F 20 2E 43 4F 4D 2E    default to .COM.
006CB0:  0D 0A 0D 0A 09 65 2E 67 2E 09 62 63 70 6C 20 61    .....e.g..bcpl a
006CC0:  73 36 35 30 32 0D 0A 0D 0A 77 69 6C 6C 20 66 69    s6502....will fi
006CD0:  72 73 74 20 6C 6F 6F 6B 20 66 6F 72 20 74 68 65    rst look for the
006CE0:  20 66 69 6C 65 20 41 53 36 35 30 32 20 61 6E 64     file AS6502 and
006CF0:  20 69 66 20 69 74 20 69 73 20 6E 6F 74 20 70 72     if it is not pr
006D00:  65 73 65 6E 74 20 77 69 6C 6C 20 74 68 65 6E 20    esent will then 
006D10:  0D 8A 6C 6F 6F 6B 20 66 6F 72 20 74 68 65 20 66    ..look for the f
006D20:  69 6C 65 20 41 53 36 35 30 32 2E 42 2E 20 54 68    ile AS6502.B. Th
006D30:  65 20 63 6F 6D 70 69 6C 65 72 90 20 77 69 6C 6C    e compiler. will
006D40:  20 72 65 61 64 20 74 68 69 73 20 66 69 6C 65 20     read this file 
006D50:  61 6E 64 20 74 68 65 6E 20 0D 8A 73 65 6E 64 20    and then ..send 
006D60:  74 68 65 20 6F 62 6A 65 63 74 20 63 6F 64 65 20    the object code 
006D70:  70 72 6F 64 75 63 65 64 20 74 6F 20 61 20 66 69    produced to a fi
006D80:  6C 65 20 41 53 36 35 30 32 2E 43 4F 4D 2E 0D 0A    le AS6502.COM...
006D90:  3E 70 61 0D 0A 09 55 6E 64 65 72 20 43 50 2F 4D    >pa...Under CP/M
006DA0:  20 50 6C 75 73 20 74 68 65 20 63 6F 6D 70 69 6C     Plus the compil
006DB0:  65 72 90 20 72 65 74 75 72 6E 73 90 20 61 6E 90    er. returns. an.
006DC0:  20 65 72 72 6F 72 20 72 65 74 75 72 6E 20 63 6F     error return co
006DD0:  64 65 20 69 66 20 61 6E 20 0D 8A 65 72 72 6F 72    de if an ..error
006DE0:  20 6F 63 63 75 72 72 65 64 2E 20 49 74 20 63 61     occurred. It ca
006DF0:  6E 20 74 68 65 6E 20 62 65 20 63 6F 6E 76 65 6E    n then be conven
006E00:  69 65 6E 74 20 74 6F 20 75 73 65 20 53 55 42 4D    ient to use SUBM
006E10:  49 54 20 74 6F 20 63 6F 6D 70 69 6C 65 20 61 6E    IT to compile an
006E20:  64 20 0D 8A 72 75 6E 20 74 68 65 20 70 72 6F 67    d ..run the prog
006E30:  72 61 6D 20 77 69 74 68 20 61 90 20 73 69 6E 67    ram with a. sing
006E40:  6C 65 90 20 63 6F 6D 6D 61 6E 64 2E 90 20 54 68    le. command.. Th
006E50:  65 20 43 50 2F 4D 20 63 6F 6E 64 69 74 69 6F 6E    e CP/M condition
006E60:  61 6C 20 63 6F 6D 6D 61 6E 64 20 0D 8A 66 61 63    al command ..fac
006E70:  69 6C 69 74 79 20 63 61 6E 20 62 65 20 75 73 65    ility can be use
006E80:  64 20 73 6F 20 74 68 65 20 74 68 65 90 20 70 72    d so the the. pr
006E90:  6F 67 72 61 6D 90 20 69 73 20 6F 6E 6C 79 20 65    ogram. is only e
006EA0:  78 65 63 75 74 65 64 20 69 66 20 6E 6F 20 65 72    xecuted if no er
006EB0:  72 6F 72 20 0D 8A 6F 63 63 75 72 72 65 64 2E 20    ror ..occurred. 
006EC0:  46 6F 72 20 65 78 61 6D 70 6C 65 20 61 20 66 69    For example a fi
006ED0:  6C 65 20 43 4F 4D 50 49 4C 45 2E 53 55 42 20 6D    le COMPILE.SUB m
006EE0:  61 79 20 63 6F 6E 74 61 69 6E 20 74 68 65 20 66    ay contain the f
006EF0:  6F 6C 6C 6F 77 69 6E 67 3A 0D 0A 0D 0A 09 09 62    ollowing:......b
006F00:  63 70 6C 20 70 72 6F 67 72 61 6D 2E 62 20 0D 0A    cpl program.b ..
006F10:  09 09 3C 79 0D 0A 09 09 3A 70 72 6F 67 72 61 6D    ..<y....:program
006F20:  0D 0A 09 54 68 65 20 73 65 63 6F 6E 64 20 6C 69    ...The second li
006F30:  6E 65 20 63 61 75 73 65 73 20 74 68 65 90 20 70    ne causes the. p
006F40:  72 65 76 69 6F 75 73 90 20 76 65 72 73 69 6F 6E    revious. version
006F50:  90 20 74 6F 20 62 65 20 64 65 6C 65 74 65 64 2E    . to be deleted.
006F60:  20 4E 6F 74 65 20 0D 8A 74 68 61 74 20 74 68 69     Note ..that thi
006F70:  73 20 77 69 6C 6C 20 6F 6E 6C 79 20 77 6F 72 6B    s will only work
006F80:  90 20 75 6E 64 65 72 90 20 43 50 2F 4D 90 20 50    . under. CP/M. P
006F90:  6C 75 73 20 28 43 50 43 36 31 32 38 20 61 6E 64    lus (CPC6128 and
006FA0:  20 50 43 57 38 32 35 36 2F 38 35 31 32 29 20 0D     PCW8256/8512) .
006FB0:  8A 61 6E 64 20 6E 6F 74 20 75 6E 64 65 72 20 43    .and not under C
006FC0:  50 2F 4D 20 32 2E 32 2E 0D 0A 0D 0A 0D 0A E2 49    P/M 2.2........I
006FD0:  6E 63 6C 75 64 69 6E 67 20 6F 74 68 65 72 20 66    ncluding other f
006FE0:  69 6C 65 73 E2 0D 0A 0D 0A 09 4F 74 68 65 72 20    iles......Other 
006FF0:  42 43 50 4C 20 73 6F 75 72 63 65 20 66 69 6C 65    BCPL source file
007000:  73 20 6D 61 79 20 62 65 20 69 6E 63 6C 75 64 65    s may be include
007010:  64 90 20 61 74 20 61 6E 79 20 70 6F 69 6E 74 20    d. at any point 
007020:  69 6E 20 61 20 70 72 6F 67 72 61 6D 20 0D 8A 62    in a program ..b
007030:  79 20 75 73 69 6E 67 20 74 68 65 20 47 45 54 20    y using the GET 
007040:  64 69 72 65 63 74 69 76 65 2E 0D 0A 0D 0A 09 47    directive......G
007050:  45 54 20 22 66 69 6C 65 22 0D 0A 0D 0A 63 61 75    ET "file"....cau
007060:  73 65 73 20 63 6F 6D 70 69 6C 61 74 69 6F 6E 20    ses compilation 
007070:  74 6F 20 63 6F 6E 74 69 6E 75 65 20 77 69 74 68    to continue with
007080:  20 74 68 65 90 20 6E 65 77 90 20 66 69 6C 65 2E     the. new. file.
007090:  90 20 41 74 20 74 68 65 20 65 6E 64 20 6F 66 20    . At the end of 
0070A0:  74 68 65 20 0D 8A 69 6E 63 6C 75 64 65 64 20 66    the ..included f
0070B0:  69 6C 65 20 63 6F 6D 70 69 6C 61 74 69 6F 6E 20    ile compilation 
0070C0:  72 65 73 75 6D 65 73 20 61 74 20 74 68 65 20 70    resumes at the p
0070D0:  6F 69 6E 74 20 61 66 74 65 72 20 74 68 65 20 47    oint after the G
0070E0:  45 54 20 64 69 72 65 63 74 69 76 65 20 0D 8A 69    ET directive ..i
0070F0:  6E 20 74 68 65 20 6F 72 69 67 69 6E 61 6C 20 66    n the original f
007100:  69 6C 65 2E 0D 0A 0D 0A 09 4D 6F 73 74 20 70 72    ile......Most pr
007110:  6F 67 72 61 6D 73 20 77 69 6C 6C 20 73 74 61 72    ograms will star
007120:  74 20 62 79 20 69 6E 63 6C 75 64 69 6E 67 20 74    t by including t
007130:  68 65 20 6C 69 62 72 61 72 79 20 72 6F 75 74 69    he library routi
007140:  6E 65 73 3A 0D 0A 0D 0A 09 47 45 54 20 22 43 4C    nes:.....GET "CL
007150:  49 42 48 44 52 22 0D 0A 09 47 45 54 20 22 43 4C    IBHDR"...GET "CL
007160:  49 42 48 44 52 31 22 09 2F 2F 20 6F 66 74 65 6E    IBHDR1".// often
007170:  20 6E 6F 74 20 6E 65 65 64 65 64 0D 0A 09 47 45     not needed...GE
007180:  54 20 22 44 45 42 55 47 22 09 09 2F 2F 20 75 73    T "DEBUG"..// us
007190:  65 64 20 77 68 65 6E 20 64 65 62 75 67 67 69 6E    ed when debuggin
0071A0:  67 20 28 73 65 65 20 73 65 63 74 69 6F 6E 20 38    g (see section 8
0071B0:  6B 29 0D 0A 0D 0A 09 4E 6F 74 65 20 74 68 61 74    k).....Note that
0071C0:  20 74 68 65 20 47 45 54 20 64 69 72 65 63 74 69     the GET directi
0071D0:  76 65 73 20 74 6F 90 20 69 6E 63 6C 75 64 65 20    ves to. include 
0071E0:  74 68 65 20 6C 69 62 72 61 72 79 20 72 6F 75 74    the library rout
0071F0:  69 6E 65 73 20 6D 75 73 74 20 0D 8A 62 65 20 69    ines must ..be i
007200:  6E 20 74 68 65 20 6F 72 64 65 72 20 73 68 6F 77    n the order show
007210:  6E 20 62 65 63 61 75 73 65 20 72 6F 75 74 69 6E    n because routin
007220:  65 73 20 69 6E 20 43 4C 49 42 48 44 52 31 20 63    es in CLIBHDR1 c
007230:  61 6C 6C 20 6F 74 68 65 72 20 72 6F 75 74 69 6E    all other routin
007240:  65 73 20 0D 8A 69 6E 20 43 4C 49 42 48 44 52 2E    es ..in CLIBHDR.
007250:  0D 0A 0D 0A 09 43 6F 6D 70 69 6C 61 74 69 6F 6E    .....Compilation
007260:  20 73 74 6F 70 73 20 6F 6E 20 74 68 65 90 20 43     stops on the. C
007270:  50 2F 4D 90 20 76 65 72 73 69 6F 6E 90 20 77 68    P/M. version. wh
007280:  65 6E 90 20 61 90 90 66 75 6C 6C 20 73 74 6F 70    en. a..full stop
007290:  20 27 2E 27 20 69 73 20 0D 8A 66 6F 75 6E 64 20     '.' is ..found 
0072A0:  69 6E 20 74 68 65 20 69 6E 69 74 69 61 6C 20 73    in the initial s
0072B0:  6F 75 72 63 65 20 66 69 6C 65 90 20 77 68 69 63    ource file. whic
0072C0:  68 90 20 77 61 73 20 73 70 65 63 69 66 69 65 64    h. was specified
0072D0:  20 69 6E 20 74 68 65 20 6F 72 69 67 69 6E 61 6C     in the original
0072E0:  20 0D 8A 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65 2C     ..command line,
0072F0:  20 6F 72 20 77 68 65 6E 20 74 68 65 20 65 6E 64     or when the end
007300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
007310:  06 00 00 00 02 09 50 E5 06 00 C1 02 00 00 00 02    ......P.........
007320:  06 00 C2 02 00 00 00 02 06 00 C3 02 00 00 00 02    ................
007330:  06 00 C4 02 00 00 00 02 06 00 C5 02 00 00 00 02    ................
007340:  06 00 C6 02 00 00 00 02 06 00 C7 02 00 00 00 02    ................
007350:  06 00 C8 02 00 00 00 02 06 00 C9 02 00 00 00 02    ................
007360:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007370:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007380:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007390:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007400:  20 6F 66 20 74 68 61 74 20 66 69 6C 65 20 69 73     of that file is
007410:  20 72 65 61 63 68 65 64 2E 0D 0A 3E 70 61 0D 0A     reached...>pa..
007420:  3E 63 65 20 E2 33 2E 20 55 53 49 4E 47 20 41 52    >ce .3. USING AR
007430:  4E 4F 52 20 42 43 50 4C 20 55 4E 44 45 52 20 41    NOR BCPL UNDER A
007440:  4D 53 44 4F 53 E2 0D 0A 0D 0A 0D 0A E2 4E 4F 54    MSDOS........NOT
007450:  45 3A E2 20 50 43 57 38 32 35 36 2F 38 35 31 32    E:. PCW8256/8512
007460:  20 75 73 65 72 73 20 73 68 6F 75 6C 64 20 69 67     users should ig
007470:  6E 6F 72 65 20 74 68 69 73 20 63 68 61 70 74 65    nore this chapte
007480:  72 2E 0D 0A 0D 0A 09 42 43 50 4C 20 6D 61 79 20    r......BCPL may 
007490:  62 65 20 75 73 65 64 20 66 72 6F 6D 20 41 6D 73    be used from Ams
0074A0:  64 6F 73 20 6F 6E 90 20 74 68 65 20 43 50 43 20    dos on. the CPC 
0074B0:  72 61 6E 67 65 2C 20 65 69 74 68 65 72 20 69 6E    range, either in
0074C0:  20 52 4F 4D 20 66 6F 72 6D 20 0D 8A 6F 72 20 66     ROM form ..or f
0074D0:  72 6F 6D 20 61 20 64 69 73 63 2E 20 49 66 20 74    rom a disc. If t
0074E0:  68 65 20 52 4F 4D 90 20 76 65 72 73 69 6F 6E 90    he ROM. version.
0074F0:  20 69 73 20 62 65 69 6E 67 20 75 73 65 64 2C 20     is being used, 
007500:  74 68 65 20 66 69 6C 65 73 20 42 43 50 4C 2E 42    the files BCPL.B
007510:  41 53 20 0D 8A 61 6E 64 20 42 43 50 4C 2E 42 49    AS ..and BCPL.BI
007520:  4E 20 61 72 65 20 6E 6F 74 20 72 65 71 75 69 72    N are not requir
007530:  65 64 2C 20 74 68 6F 75 67 68 90 20 74 68 65 20    ed, though. the 
007540:  6C 69 62 72 61 72 79 20 66 69 6C 65 73 20 77 69    library files wi
007550:  6C 6C 20 73 74 69 6C 6C 20 62 65 20 0D 8A 72 65    ll still be ..re
007560:  71 75 69 72 65 64 2E 0D 0A 0D 0A 4E 4F 54 45 3A    quired.....NOTE:
007570:  20 55 6E 64 65 72 20 6E 6F 20 63 69 72 63 75 6D     Under no circum
007580:  73 74 61 6E 63 65 73 20 73 68 6F 75 6C 64 90 20    stances should. 
007590:  74 68 65 90 20 6F 72 69 67 69 6E 61 6C 90 20 64    the. original. d
0075A0:  69 73 63 90 20 62 65 20 75 73 65 64 20 61 73 20    isc. be used as 
0075B0:  61 20 0D 8A 77 6F 72 6B 69 6E 67 20 64 69 73 63    a ..working disc
0075C0:  20 66 6F 72 20 6E 6F 72 6D 61 6C 20 75 73 65 2E     for normal use.
0075D0:  20 54 68 65 90 20 72 65 71 75 69 72 65 64 20 66     The. required f
0075E0:  69 6C 65 73 20 73 68 6F 75 6C 64 20 62 65 20 63    iles should be c
0075F0:  6F 70 69 65 64 20 6F 6E 74 6F 20 0D 8A 61 20 73    opied onto ..a s
007600:  79 73 74 65 6D 20 64 69 73 63 20 61 6E 64 20 74    ystem disc and t
007610:  68 65 20 6F 72 69 67 69 6E 61 6C 20 72 65 74 61    he original reta
007620:  69 6E 65 64 20 69 6E 20 61 20 73 61 66 65 20 70    ined in a safe p
007630:  6C 61 63 65 2C 20 61 73 20 61 20 62 61 63 6B 75    lace, as a backu
007640:  70 2E 0D 0A 0D 0A E2 43 72 65 61 74 69 6E 67 20    p......Creating 
007650:  61 20 57 6F 72 6B 69 6E 67 20 64 69 73 63 E2 0D    a Working disc..
007660:  0A 0D 0A 09 41 20 6E 65 77 20 64 69 73 63 20 73    ....A new disc s
007670:  68 6F 75 6C 64 20 62 65 20 66 6F 72 6D 61 74 74    hould be formatt
007680:  65 64 90 20 61 6E 64 90 20 74 68 65 90 20 66 69    ed. and. the. fi
007690:  72 73 74 20 73 69 78 20 66 69 6C 65 73 20 66 72    rst six files fr
0076A0:  6F 6D 20 74 68 65 20 0D 8A 6C 69 73 74 20 62 65    om the ..list be
0076B0:  6C 6F 77 20 73 68 6F 75 6C 64 20 62 65 20 63 6F    low should be co
0076C0:  70 69 65 64 20 6F 6E 74 6F 20 69 74 2C 20 75 73    pied onto it, us
0076D0:  69 6E 67 20 65 69 74 68 65 72 20 46 49 4C 45 43    ing either FILEC
0076E0:  4F 50 59 20 6F 72 20 50 49 50 20 66 72 6F 6D 20    OPY or PIP from 
0076F0:  0D 8A 43 50 2F 4D 2C 20 64 65 70 65 6E 64 69 6E    ..CP/M, dependin
007700:  67 20 6F 6E 20 74 68 65 20 6D 6F 64 65 6C 20 62    g on the model b
007710:  65 69 6E 67 20 75 73 65 64 2C 90 20 6F 72 20 74    eing used,. or t
007720:  68 65 20 43 4F 50 59 20 63 6F 6D 6D 61 6E 64 20    he COPY command 
007730:  66 72 6F 6D 20 74 68 65 20 0D 8A 55 54 4F 50 49    from the ..UTOPI
007740:  41 20 52 4F 4D 20 69 66 20 74 68 61 74 20 69 73    A ROM if that is
007750:  20 69 6E 73 74 61 6C 6C 65 64 2E 90 20 54 68 69     installed.. Thi
007760:  73 90 20 77 69 6C 6C 20 70 72 6F 64 75 63 65 20    s. will produce 
007770:  61 20 64 69 73 63 20 63 6F 6E 74 61 69 6E 69 6E    a disc containin
007780:  67 20 0D 8A 61 6C 6C 20 74 68 65 20 65 73 73 65    g ..all the esse
007790:  6E 74 69 61 6C 20 66 69 6C 65 73 2E 20 52 4F 4D    ntial files. ROM
0077A0:  20 75 73 65 72 73 20 63 61 6E 20 6F 6D 69 74 20     users can omit 
0077B0:  74 68 65 20 66 69 72 73 74 20 74 77 6F 20 66 69    the first two fi
0077C0:  6C 65 73 20 63 61 6C 6C 65 64 20 0D 8A 42 43 50    les called ..BCP
0077D0:  4C 2E 42 41 53 20 61 6E 64 20 42 43 50 4C 2E 42    L.BAS and BCPL.B
0077E0:  49 4E 2E 0D 0A 0D 0A E2 49 6E 73 74 61 6C 6C 69    IN......Installi
0077F0:  6E 67 20 74 68 65 20 52 4F 4D 20 76 65 72 73 69    ng the ROM versi
007800:  6F 6E E2 0D 0A 0D 0A 09 46 69 74 20 74 68 65 20    on......Fit the 
007810:  31 36 4B 20 45 50 52 4F 4D 20 69 6E 74 6F 90 20    16K EPROM into. 
007820:  79 6F 75 72 90 20 52 4F 4D 20 62 6F 61 72 64 20    your. ROM board 
007830:  66 6F 6C 6C 6F 77 69 6E 67 20 74 68 65 20 69 6E    following the in
007840:  73 74 72 75 63 74 69 6F 6E 73 20 0D 8A 73 75 70    structions ..sup
007850:  70 6C 69 65 64 20 77 69 74 68 20 74 68 65 20 72    plied with the r
007860:  6F 6D 20 62 6F 61 72 64 2E 20 54 68 65 20 52 4F    om board. The RO
007870:  4D 20 73 65 6C 65 63 74 69 6F 6E 20 6E 75 6D 62    M selection numb
007880:  65 72 20 69 73 20 6E 6F 74 20 63 72 69 74 69 63    er is not critic
007890:  61 6C 2C 20 0D 8A 74 68 6F 75 67 68 20 69 74 20    al, ..though it 
0078A0:  6D 75 73 74 20 6E 6F 74 20 63 6C 61 73 68 20 77    must not clash w
0078B0:  69 74 68 20 61 6E 79 90 20 65 78 69 73 74 69 6E    ith any. existin
0078C0:  67 20 52 4F 4D 73 2C 20 65 76 65 6E 20 69 66 20    g ROMs, even if 
0078D0:  74 68 65 79 20 61 72 65 20 6E 6F 74 20 0D 8A 69    they are not ..i
0078E0:  6E 73 74 61 6C 6C 65 64 20 6F 6E 20 74 68 65 20    nstalled on the 
0078F0:  52 4F 4D 20 62 6F 61 72 64 2E 20 28 54 68 65 20    ROM board. (The 
007900:  64 69 73 63 90 20 72 6F 6D 20 66 6F 72 20 65 78    disc. rom for ex
007910:  61 6D 70 6C 65 20 75 73 65 73 20 52 4F 4D 20 73    ample uses ROM s
007920:  65 6C 65 63 74 20 0D 8A 37 29 2E 0D 0A 09 53 75    elect ..7)....Su
007930:  69 74 61 62 6C 65 20 62 6F 61 72 64 73 20 6D 61    itable boards ma
007940:  79 20 62 65 20 70 75 72 63 68 61 73 65 64 20 66    y be purchased f
007950:  72 6F 6D 90 20 41 72 6E 6F 72 20 69 66 20 79 6F    rom. Arnor if yo
007960:  75 20 64 6F 20 6E 6F 74 20 61 6C 72 65 61 64 79    u do not already
007970:  20 0D 8A 68 61 76 65 20 6F 6E 65 2E 0D 0A 09 54     ..have one....T
007980:  68 65 20 42 43 50 4C 20 52 4F 4D 20 70 72 6F 76    he BCPL ROM prov
007990:  69 64 65 73 20 61 6E 20 65 78 74 72 65 6D 65 6C    ides an extremel
0079A0:  79 20 63 6F 6E 76 65 6E 69 65 6E 74 20 61 6E 64    y convenient and
0079B0:  20 66 61 73 74 20 65 6E 76 69 72 6F 6E 6D 65 6E     fast environmen
0079C0:  74 20 0D 8A 66 6F 72 20 64 65 76 65 6C 6F 70 69    t ..for developi
0079D0:  6E 67 20 42 43 50 4C 20 70 72 6F 67 72 61 6D 73    ng BCPL programs
0079E0:  2C 90 20 70 61 72 74 69 63 75 6C 61 72 6C 79 90    ,. particularly.
0079F0:  20 77 68 65 6E 90 20 75 73 65 64 20 69 6E 20 63     when. used in c
007A00:  6F 6E 6A 75 6E 63 74 69 6F 6E 20 0D 8A 77 69 74    onjunction ..wit
007A10:  68 20 50 52 4F 54 45 58 54 20 6F 72 20 4D 41 58    h PROTEXT or MAX
007A20:  41 4D 2E 20 50 72 6F 67 72 61 6D 73 20 63 61 6E    AM. Programs can
007A30:  20 62 65 20 74 79 70 65 64 20 69 6E 20 75 73 69     be typed in usi
007A40:  6E 67 20 50 52 4F 54 45 58 54 20 6F 72 20 4D 41    ng PROTEXT or MA
007A50:  58 41 4D 20 0D 8A 61 6E 64 20 63 6F 6D 70 69 6C    XAM ..and compil
007A60:  65 64 20 64 69 72 65 63 74 6C 79 20 66 72 6F 6D    ed directly from
007A70:  20 6D 65 6D 6F 72 79 2E 0D 0A 09 54 68 65 20 52     memory....The R
007A80:  4F 4D 20 76 65 72 73 69 6F 6E 90 20 6D 61 79 90    OM version. may.
007A90:  20 6F 6E 6C 79 90 20 62 65 90 20 75 73 65 64 90     only. be. used.
007AA0:  20 6F 6E 90 20 74 68 65 90 20 43 50 43 34 36 34     on. the. CPC464
007AB0:  2C 20 43 50 43 36 36 34 2C 20 61 6E 64 20 0D 8A    , CPC664, and ..
007AC0:  43 50 43 36 31 32 38 20 63 6F 6D 70 75 74 65 72    CPC6128 computer
007AD0:  73 2E 0D 0A 0D 0A 0D 0A E2 4C 69 73 74 20 6F 66    s........List of
007AE0:  20 66 69 6C 65 73 20 63 6F 6E 74 61 69 6E 65 64     files contained
007AF0:  20 6F 6E 20 74 68 65 20 64 69 73 63 20 2D 2D 20     on the disc -- 
007B00:  41 4D 53 44 4F 53 20 73 69 64 65 E2 0D 0A 0D 0A    AMSDOS side.....
007B10:  54 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 66 69    The following fi
007B20:  6C 65 73 20 61 72 65 20 6D 6F 73 74 20 69 6D 70    les are most imp
007B30:  6F 72 74 61 6E 74 3A 0D 0A 0D 0A 42 43 50 4C 2E    ortant:....BCPL.
007B40:  42 41 53 09 09 74 68 65 20 6C 6F 61 64 65 72 20    BAS..the loader 
007B50:  66 6F 72 20 74 68 65 20 63 6F 6D 70 69 6C 65 72    for the compiler
007B60:  20 70 72 6F 67 72 61 6D 0D 0A 42 43 50 4C 2E 42     program..BCPL.B
007B70:  49 4E 09 09 74 68 65 20 6D 61 69 6E 20 63 6F 6D    IN..the main com
007B80:  70 69 6C 65 72 20 70 72 6F 67 72 61 6D 0D 0A 41    piler program..A
007B90:  4C 49 42 48 44 52 09 09 74 68 65 20 6D 61 69 6E    LIBHDR..the main
007BA0:  20 49 2F 4F 20 6C 69 62 72 61 72 79 0D 0A 41 4C     I/O library..AL
007BB0:  49 42 48 44 52 31 09 09 74 68 65 20 65 78 74 72    IBHDR1..the extr
007BC0:  61 20 49 2F 4F 20 6C 69 62 72 61 72 79 20 63 6F    a I/O library co
007BD0:  6E 74 61 69 6E 69 6E 67 20 6C 65 73 73 20 75 73    ntaining less us
007BE0:  65 64 20 72 6F 75 74 69 6E 65 73 0D 0A 41 4D 53    ed routines..AMS
007BF0:  44 4F 53 09 09 61 20 66 75 72 74 68 65 72 90 20    DOS..a further. 
007C00:  49 2F 4F 90 20 6C 69 62 72 61 72 79 90 20 63 6F    I/O. library. co
007C10:  6E 74 61 69 6E 69 6E 67 90 20 67 72 61 70 68 69    ntaining. graphi
007C20:  63 73 20 72 6F 75 74 69 6E 65 73 20 0D 8A 44 45    cs routines ..DE
007C30:  42 55 47 09 09 61 20 72 6F 75 74 69 6E 65 20 75    BUG..a routine u
007C40:  73 65 66 75 6C 20 66 6F 72 20 64 65 62 75 67 67    seful for debugg
007C50:  69 6E 67 20 42 43 50 4C 20 70 72 6F 67 72 61 6D    ing BCPL program
007C60:  73 0D 0A 3E 70 61 0D 0A 54 68 65 20 64 69 73 63    s..>pa..The disc
007C70:  20 61 6C 73 6F 20 63 6F 6E 74 61 69 6E 73 20 74     also contains t
007C80:  68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 65 78 61    he following exa
007C90:  6D 70 6C 65 20 66 69 6C 65 73 3A 0D 0A 0D 0A 42    mple files:....B
007CA0:  45 44 2E 42 09 09 42 43 50 4C 20 65 64 69 74 6F    ED.B..BCPL edito
007CB0:  72 20 73 6F 75 72 63 65 20 63 6F 64 65 2C 20 41    r source code, A
007CC0:  4D 53 44 4F 53 20 76 65 72 73 69 6F 6E 0D 0A 42    MSDOS version..B
007CD0:  45 44 2E 42 49 4E 09 09 42 43 50 4C 20 65 64 69    ED.BIN..BCPL edi
007CE0:  74 6F 72 20 6F 62 6A 65 63 74 20 63 6F 64 65 2C    tor object code,
007CF0:  20 41 4D 53 44 4F 53 20 76 65 72 73 69 6F 6E 0D     AMSDOS version.
007D00:  0A 42 45 44 31 2E 42 09 09 61 20 66 69 6C 65 20    .BED1.B..a file 
007D10:  63 6F 6E 74 61 69 6E 69 6E 67 20 64 69 72 65 63    containing direc
007D20:  74 69 76 65 73 20 74 6F 20 63 6F 6D 70 69 6C 65    tives to compile
007D30:  20 42 45 44 0D 0A 44 49 53 2E 42 09 09 61 20 5A     BED..DIS.B..a Z
007D40:  38 30 20 64 69 73 61 73 73 65 6D 62 6C 65 72 20    80 disassembler 
007D50:  77 72 69 74 74 65 6E 20 69 6E 20 42 43 50 4C 0D    written in BCPL.
007D60:  0A 49 4E 56 41 44 45 2E 42 09 09 61 20 73 70 61    .INVADE.B..a spa
007D70:  63 65 20 69 6E 76 61 64 65 72 73 20 67 61 6D 65    ce invaders game
007D80:  2C 20 77 72 69 74 74 65 6E 20 69 6E 20 42 43 50    , written in BCP
007D90:  4C 0D 0A 0D 0A E2 4C 6F 61 64 69 6E 67 20 74 68    L.....Loading th
007DA0:  65 20 41 4D 53 44 4F 53 20 64 69 73 63 20 76 65    e AMSDOS disc ve
007DB0:  72 73 69 6F 6E E2 0D 0A 0D 0A 09 54 6F 20 6C 6F    rsion......To lo
007DC0:  61 64 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 20    ad the compiler 
007DD0:  74 79 70 65 3A 09 09 52 55 4E 22 42 43 50 4C 22    type:..RUN"BCPL"
007DE0:  0D 0A 0D 0A 0D 0A E2 45 6E 74 65 72 69 6E 67 20    .......Entering 
007DF0:  61 6E 64 20 65 64 69 74 69 6E 67 20 42 43 50 4C    and editing BCPL
007E00:  20 70 72 6F 67 72 61 6D 73 20 75 6E 64 65 72 20     programs under 
007E10:  41 4D 53 44 4F 53 E2 0D 0A 0D 0A 09 41 6E 79 20    AMSDOS......Any 
007E20:  65 64 69 74 6F 72 20 6F 72 90 20 77 6F 72 64 90    editor or. word.
007E30:  20 70 72 6F 63 65 73 73 6F 72 90 20 6D 61 79 90     processor. may.
007E40:  20 62 65 90 90 75 73 65 64 90 20 66 6F 72 90 20     be..used. for. 
007E50:  74 79 70 69 6E 67 20 69 6E 20 42 43 50 4C 20 0D    typing in BCPL .
007E60:  8A 70 72 6F 67 72 61 6D 73 2C 20 61 73 20 6C 6F    .programs, as lo
007E70:  6E 67 20 61 73 20 61 6E 20 41 53 43 49 49 20 66    ng as an ASCII f
007E80:  69 6C 65 20 63 61 6E 20 62 65 20 70 72 6F 64 75    ile can be produ
007E90:  63 65 64 2E 0D 0A 09 50 52 4F 54 45 58 54 20 28    ced....PROTEXT (
007EA0:  75 73 69 6E 67 20 70 72 6F 67 72 61 6D 20 6D 6F    using program mo
007EB0:  64 65 29 20 61 6E 64 20 4D 41 58 41 4D 20 61 72    de) and MAXAM ar
007EC0:  65 20 65 73 70 65 63 69 61 6C 6C 79 20 73 75 69    e especially sui
007ED0:  74 61 62 6C 65 2C 20 69 6E 20 0D 8A 70 61 72 74    table, in ..part
007EE0:  69 63 75 6C 61 72 20 74 68 65 20 52 4F 4D 20 76    icular the ROM v
007EF0:  65 72 73 69 6F 6E 73 20 61 72 65 20 72 65 63 6F    ersions are reco
007F00:  6D 6D 65 6E 64 65 64 20 66 6F 72 20 63 6F 6E 76    mmended for conv
007F10:  65 6E 69 65 6E 63 65 2E 0D 0A 09 49 66 20 79 6F    enience....If yo
007F20:  75 20 64 6F 20 6E 6F 74 20 68 61 76 65 20 61 90    u do not have a.
007F30:  20 73 75 69 74 61 62 6C 65 90 20 65 64 69 74 6F     suitable. edito
007F40:  72 90 20 74 68 65 20 70 72 6F 67 72 61 6D 20 42    r. the program B
007F50:  45 44 2E 42 49 4E 20 63 61 6E 20 62 65 20 0D 8A    ED.BIN can be ..
007F60:  75 73 65 64 2E 20 54 68 69 73 20 69 73 20 61 20    used. This is a 
007F70:  73 69 6D 70 6C 65 90 20 66 75 6C 6C 90 20 73 63    simple. full. sc
007F80:  72 65 65 6E 90 20 65 64 69 74 6F 72 90 20 77 68    reen. editor. wh
007F90:  69 63 68 20 69 73 20 63 6F 6D 70 61 74 69 62 6C    ich is compatibl
007FA0:  65 20 77 69 74 68 20 0D 8A 50 52 4F 54 45 58 54    e with ..PROTEXT
007FB0:  20 65 64 69 74 69 6E 67 20 63 6F 6D 6D 61 6E 64     editing command
007FC0:  73 2E 0D 0A 09 41 6E 79 20 73 6F 75 72 63 65 20    s....Any source 
007FD0:  66 69 6C 65 73 20 63 72 65 61 74 65 64 20 73 68    files created sh
007FE0:  6F 75 6C 64 20 70 72 65 66 65 72 61 62 6C 79 20    ould preferably 
007FF0:  62 65 20 73 61 76 65 64 20 74 6F 20 64 69 73 63    be saved to disc
008000:  20 77 69 74 68 20 61 20 0D 8A 27 2E 42 27 20 73     with a ..'.B' s
008010:  75 66 66 69 78 20 74 6F 20 74 68 65 90 20 66 69    uffix to the. fi
008020:  6C 65 6E 61 6D 65 2E 90 20 54 68 69 73 90 20 69    lename.. This. i
008030:  73 90 20 6E 6F 74 90 20 65 73 73 65 6E 74 69 61    s. not. essentia
008040:  6C 2C 20 62 75 74 20 64 6F 65 73 20 68 65 6C 70    l, but does help
008050:  20 0D 8A 69 64 65 6E 74 69 66 79 20 74 68 65 20     ..identify the 
008060:  74 79 70 65 20 6F 66 20 66 69 6C 65 73 20 6F 6E    type of files on
008070:  20 61 20 64 69 73 63 2E 0D 0A 0D 0A E2 43 6F 6D     a disc......Com
008080:  70 69 6C 69 6E 67 20 61 20 42 43 50 4C 20 70 72    piling a BCPL pr
008090:  6F 67 72 61 6D 20 75 6E 64 65 72 20 41 4D 53 44    ogram under AMSD
0080A0:  4F 53 E2 0D 0A 0D 0A 09 41 70 61 72 74 20 66 72    OS......Apart fr
0080B0:  6F 6D 20 68 61 76 69 6E 67 20 74 6F 90 20 6C 6F    om having to. lo
0080C0:  61 64 90 20 74 68 65 90 20 64 69 73 63 90 20 76    ad. the. disc. v
0080D0:  65 72 73 69 6F 6E 2C 90 20 74 68 65 90 20 64 69    ersion,. the. di
0080E0:  73 63 20 61 6E 64 20 52 4F 4D 20 0D 8A 76 65 72    sc and ROM ..ver
0080F0:  73 69 6F 6E 73 20 61 72 65 20 75 73 65 64 20 69    sions are used i
008100:  6E 20 65 78 61 63 74 6C 79 20 74 68 65 90 20 73    n exactly the. s
008110:  61 6D 65 90 20 77 61 79 2E 20 54 68 65 72 65 20    ame. way. There 
008120:  61 72 65 2C 20 68 6F 77 65 76 65 72 2C 20 61 20    are, however, a 
008130:  66 65 77 20 0D 8A 64 69 66 66 65 72 65 6E 63 65    few ..difference
008140:  73 20 77 68 65 6E 20 63 6F 6D 70 61 72 65 64 20    s when compared 
008150:  77 69 74 68 20 74 68 65 90 20 43 50 2F 4D 20 76    with the. CP/M v
008160:  65 72 73 69 6F 6E 2E 20 54 68 65 20 6D 61 6A 6F    ersion. The majo
008170:  72 20 64 69 66 66 65 72 65 6E 63 65 20 0D 8A 69    r difference ..i
008180:  73 20 74 68 61 74 20 74 68 65 20 43 50 2F 4D 20    s that the CP/M 
008190:  76 65 72 73 69 6F 6E 20 61 6C 6C 6F 77 73 90 20    version allows. 
0081A0:  74 68 65 90 20 69 6E 63 6C 75 73 69 6F 6E 20 6F    the. inclusion o
0081B0:  66 20 73 6F 75 72 63 65 20 66 69 6C 65 73 20 77    f source files w
0081C0:  69 74 68 69 6E 20 0D 8A 6F 74 68 65 72 20 73 6F    ithin ..other so
0081D0:  75 72 63 65 20 66 69 6C 65 73 2E 20 54 68 65 20    urce files. The 
0081E0:  41 4D 53 44 4F 53 20 76 65 72 73 69 6F 6E 20 64    AMSDOS version d
0081F0:  6F 65 73 20 6E 6F 74 20 61 6C 6C 6F 77 20 74 68    oes not allow th
008200:  69 73 20 61 6C 74 68 6F 75 67 68 20 69 74 20 0D    is although it .
008210:  8A 64 6F 65 73 20 61 6C 6C 6F 77 20 74 68 65 20    .does allow the 
008220:  69 6E 63 6C 75 73 69 6F 6E 90 20 6F 66 90 20 73    inclusion. of. s
008230:  74 6F 72 65 64 90 20 50 52 4F 54 45 58 54 2F 4D    tored. PROTEXT/M
008240:  41 58 41 4D 90 20 74 65 78 74 2E 20 44 75 65 20    AXAM. text. Due 
008250:  74 6F 20 74 68 69 73 20 0D 8A 6C 69 6D 69 74 61    to this ..limita
008260:  74 69 6F 6E 20 74 68 65 20 41 4D 53 44 4F 53 20    tion the AMSDOS 
008270:  76 65 72 73 69 6F 6E 20 68 61 73 20 61 90 20 73    version has a. s
008280:  69 6D 70 6C 65 20 66 72 6F 6E 74 20 65 6E 64 20    imple front end 
008290:  77 68 69 63 68 20 61 6C 6C 6F 77 73 20 79 6F 75    which allows you
0082A0:  20 0D 8A 74 6F 20 74 79 70 65 20 69 6E 20 73 6F     ..to type in so
0082B0:  75 72 63 65 20 63 6F 64 65 20 77 68 69 63 68 90    urce code which.
0082C0:  20 77 69 6C 6C 90 20 74 68 65 6E 90 20 62 65 20     will. then. be 
0082D0:  73 75 62 6D 69 74 74 65 64 20 64 69 72 65 63 74    submitted direct
0082E0:  6C 79 20 74 6F 20 74 68 65 20 0D 8A 63 6F 6D 70    ly to the ..comp
0082F0:  69 6C 65 72 2E 20 0D 0A 3E 70 61 0D 0A 09 54 6F    iler. ..>pa...To
008300:  20 72 75 6E 20 74 68 65 20 63 6F 6D 70 69 6C 65     run the compile
008310:  72 20 74 79 70 65 3A 20 20 7C 42 43 50 4C 0D 0A    r type:  |BCPL..
008320:  0D 0A 09 54 68 65 20 73 63 72 65 65 6E 20 77 69    ...The screen wi
008330:  6C 6C 20 63 6C 65 61 72 20 61 6E 64 20 74 68 65    ll clear and the
008340:  20 42 43 50 4C 20 73 69 67 6E 6F 6E 20 6D 65 73     BCPL signon mes
008350:  73 61 67 65 20 77 69 6C 6C 20 62 65 20 70 72 69    sage will be pri
008360:  6E 74 65 64 2E 20 0D 8A 59 6F 75 20 77 69 6C 6C    nted. ..You will
008370:  20 74 68 65 6E 20 62 65 20 70 72 6F 6D 70 74 65     then be prompte
008380:  64 20 77 69 74 68 20 22 4F 75 74 70 75 74 90 20    d with "Output. 
008390:  66 69 6C 65 20 6E 61 6D 65 3F 22 2E 20 54 68 65    file name?". The
0083A0:  20 6E 61 6D 65 20 79 6F 75 20 74 79 70 65 20 0D     name you type .
0083B0:  8A 68 65 72 65 20 69 73 20 74 68 65 20 6E 61 6D    .here is the nam
0083C0:  65 20 6F 66 20 74 68 65 20 66 69 6C 65 90 20 69    e of the file. i
0083D0:  6E 74 6F 20 77 68 69 63 68 20 74 68 65 20 70 72    nto which the pr
0083E0:  6F 67 72 61 6D 20 77 69 6C 6C 20 62 65 20 63 6F    ogram will be co
0083F0:  6D 70 69 6C 65 64 2E 20 0D 8A 49 74 20 69 73 20    mpiled. ..It is 
008400:  61 6C 73 6F 20 70 6F 73 73 69 62 6C 65 90 20 28    also possible. (
008410:  75 6E 6C 65 73 73 90 20 74 68 65 90 20 70 72 6F    unless. the. pro
008420:  67 72 61 6D 90 20 69 73 90 20 74 6F 6F 90 20 6C    gram. is. too. l
008430:  61 72 67 65 29 20 74 6F 20 63 6F 6D 70 69 6C 65    arge) to compile
008440:  20 0D 8A 64 69 72 65 63 74 6C 79 20 69 6E 74 6F     ..directly into
008450:  20 6D 65 6D 6F 72 79 2E 20 54 6F 90 20 64 6F 90     memory. To. do.
008460:  20 74 68 69 73 90 20 6A 75 73 74 90 20 70 72 65     this. just. pre
008470:  73 73 90 20 52 45 54 55 52 4E 90 20 28 6F 72 20    ss. RETURN. (or 
008480:  45 4E 54 45 52 29 20 69 6E 20 0D 8A 72 65 73 70    ENTER) in ..resp
008490:  6F 6E 73 65 20 74 6F 20 74 68 65 20 71 75 65 73    onse to the ques
0084A0:  74 69 6F 6E 2E 0D 0A 09 59 6F 75 20 77 69 6C 6C    tion....You will
0084B0:  90 20 74 68 65 6E 90 20 62 65 90 20 70 72 65 73    . then. be. pres
0084C0:  65 6E 74 65 64 90 20 77 69 74 68 90 20 74 68 65    ented. with. the
0084D0:  90 20 42 43 50 4C 90 20 70 72 6F 6D 70 74 90 20    . BCPL. prompt. 
0084E0:  27 2D 2D 3E 27 2E 20 54 68 65 20 0D 8A 63 6F 6D    '-->'. The ..com
0084F0:  70 69 6C 65 72 20 69 73 20 6E 6F 77 20 72 65 61    piler is now rea
008500:  64 79 20 74 6F 20 61 63 63 65 70 74 90 20 42 43    dy to accept. BC
008510:  50 4C 90 20 63 6F 64 65 20 66 6F 72 20 63 6F 6D    PL. code for com
008520:  70 69 6C 61 74 69 6F 6E 2E 20 54 68 69 73 20 77    pilation. This w
008530:  69 6C 6C 20 0D 8A 61 6C 6D 6F 73 74 20 61 6C 77    ill ..almost alw
008540:  61 79 73 20 63 6F 6E 73 69 73 74 20 6F 66 20 6F    ays consist of o
008550:  6E 65 90 20 6F 72 90 20 6D 6F 72 65 90 20 47 45    ne. or. more. GE
008560:  54 90 20 64 69 72 65 63 74 69 76 65 73 2E 20 54    T. directives. T
008570:  68 65 72 65 20 61 72 65 20 74 77 6F 20 0D 8A 66    here are two ..f
008580:  6F 72 6D 73 20 70 65 72 6D 69 74 74 65 64 3A 0D    orms permitted:.
008590:  0A 0D 0A 28 69 29 09 09 47 45 54 20 22 66 69 6C    ...(i)..GET "fil
0085A0:  65 22 09 74 6F 20 69 6E 63 6C 75 64 65 20 61 6E    e".to include an
0085B0:  6F 74 68 65 72 20 70 72 65 76 69 6F 75 73 6C 79    other previously
0085C0:  20 70 72 65 70 61 72 65 64 20 66 69 6C 65 0D 0A     prepared file..
0085D0:  0D 0A 28 69 69 29 09 47 45 54 09 09 74 6F 20 69    ..(ii).GET..to i
0085E0:  6E 63 6C 75 64 65 20 74 68 65 20 63 75 72 72 65    nclude the curre
0085F0:  6E 74 20 74 65 78 74 20 28 50 52 4F 54 45 58 54    nt text (PROTEXT
008600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
008610:  07 00 00 00 02 09 50 E5 07 00 C1 02 00 00 00 02    ......P.........
008620:  07 00 C2 02 00 00 00 02 07 00 C3 02 00 00 00 02    ................
008630:  07 00 C4 02 00 00 00 02 07 00 C5 02 00 00 00 02    ................
008640:  07 00 C6 02 00 00 00 02 07 00 C7 02 00 00 00 02    ................
008650:  07 00 C8 02 00 00 00 02 07 00 C9 02 00 00 00 02    ................
008660:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
008670:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
008680:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
008690:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
008700:  2F 4D 41 58 41 4D 29 0D 0A 0D 0A 09 41 6E 79 20    /MAXAM).....Any 
008710:  6E 75 6D 62 65 72 20 6F 66 20 47 45 54 90 20 64    number of GET. d
008720:  69 72 65 63 74 69 76 65 73 90 20 6D 61 79 90 20    irectives. may. 
008730:  62 65 90 20 74 79 70 65 64 2E 90 20 41 66 74 65    be. typed.. Afte
008740:  72 20 65 61 63 68 20 6F 6E 65 20 74 68 65 20 0D    r each one the .
008750:  8A 63 6F 6D 70 69 6C 65 72 20 77 69 6C 6C 20 70    .compiler will p
008760:  65 72 66 6F 72 6D 20 74 68 65 20 66 69 72 73 74    erform the first
008770:  90 20 70 61 72 74 90 20 6F 66 90 20 74 68 65 20    . part. of. the 
008780:  63 6F 6D 70 69 6C 61 74 69 6F 6E 2E 20 54 6F 20    compilation. To 
008790:  65 6E 64 20 74 68 65 20 0D 8A 63 6F 6D 70 69 6C    end the ..compil
0087A0:  61 74 69 6F 6E 20 61 6E 64 20 70 72 6F 64 75 63    ation and produc
0087B0:  65 20 74 68 65 20 6F 62 6A 65 63 74 20 63 6F 64    e the object cod
0087C0:  65 20 74 79 70 65 20 61 20 66 75 6C 6C 20 73 74    e type a full st
0087D0:  6F 70 20 27 2E 27 2E 0D 0A 0D 0A 0D 0A 4E 6F 74    op '.'.......Not
0087E0:  65 3A 20 49 66 20 74 68 65 20 27 2E 42 27 20 65    e: If the '.B' e
0087F0:  78 74 65 6E 73 69 6F 6E 90 6F 66 90 20 61 90 20    xtension.of. a. 
008800:  73 6F 75 72 63 65 20 66 69 6C 65 6E 61 6D 65 90    source filename.
008810:  69 73 20 6F 6D 69 74 74 65 64 20 66 72 6F 6D 20    is omitted from 
008820:  74 68 65 20 0D 8A 66 69 6C 65 6E 61 6D 65 20 69    the ..filename i
008830:  6E 20 61 20 47 45 54 20 63 6F 6D 6D 61 6E 64 20    n a GET command 
008840:  77 68 65 6E 90 20 74 68 65 90 20 66 69 6C 65 6E    when. the. filen
008850:  61 6D 65 20 63 6F 6E 74 61 69 6E 73 20 69 74 2C    ame contains it,
008860:  20 41 6D 73 64 6F 73 20 77 69 6C 6C 20 0D 8A 69     Amsdos will ..i
008870:  6E 69 74 69 61 6C 6C 79 20 70 72 6F 64 75 63 65    nitially produce
008880:  20 74 68 65 20 6D 65 73 73 61 67 65 90 20 27 66     the message. 'f
008890:  69 6C 65 91 6E 6F 74 90 20 66 6F 75 6E 64 27 90    ile.not. found'.
0088A0:  90 62 75 74 20 77 69 6C 6C 20 63 6F 6E 74 69 6E    .but will contin
0088B0:  75 65 20 74 6F 20 0D 8A 73 65 61 72 63 68 20 66    ue to ..search f
0088C0:  6F 72 20 61 20 66 69 6C 65 20 77 69 74 68 20 74    or a file with t
0088D0:  68 65 20 2E 42 20 65 78 74 65 6E 73 69 6F 6E 20    he .B extension 
0088E0:  61 6E 64 20 63 6F 6D 70 69 6C 65 20 69 74 2E 0D    and compile it..
0088F0:  0A 3E 70 61 0D 0A E2 54 65 73 74 69 6E 67 20 42    .>pa...Testing B
008900:  43 50 4C 20 70 72 6F 67 72 61 6D 73 20 75 6E 64    CPL programs und
008910:  65 72 20 41 4D 53 44 4F 53 E2 0D 0A 0D 0A 09 49    er AMSDOS......I
008920:  66 20 61 20 70 72 6F 67 72 61 6D 90 20 69 73 90    f a program. is.
008930:  20 63 6F 6D 70 69 6C 65 64 90 20 74 6F 90 20 6D     compiled. to. m
008940:  65 6D 6F 72 79 2C 90 20 61 73 90 20 64 65 73 63    emory,. as. desc
008950:  72 69 62 65 64 90 20 61 62 6F 76 65 2C 20 74 68    ribed. above, th
008960:  65 20 0D 8A 63 6F 6D 6D 61 6E 64 20 27 7C 47 4F    e ..command '|GO
008970:  27 20 6D 61 79 20 62 65 20 75 73 65 64 20 74 6F    ' may be used to
008980:  20 72 75 6E 20 74 68 65 20 70 72 6F 67 72 61 6D     run the program
008990:  2E 0D 0A 09 54 79 70 69 6E 67 20 27 7C 47 4F 27    ....Typing '|GO'
0089A0:  20 77 69 6C 6C 20 72 75 6E 20 74 68 65 20 6D 6F     will run the mo
0089B0:  73 74 90 20 72 65 63 65 6E 74 6C 79 20 63 6F 6D    st. recently com
0089C0:  70 69 6C 65 64 20 42 43 50 4C 20 70 72 6F 67 72    piled BCPL progr
0089D0:  61 6D 2E 20 49 66 20 0D 8A 6E 6F 20 70 72 6F 67    am. If ..no prog
0089E0:  72 61 6D 20 68 61 73 20 62 65 65 6E 90 20 63 6F    ram has been. co
0089F0:  6D 70 69 6C 65 64 2C 90 20 6F 72 90 20 61 6E 90    mpiled,. or. an.
008A00:  20 65 72 72 6F 72 20 6F 63 63 75 72 72 65 64 20     error occurred 
008A10:  6F 6E 20 63 6F 6D 70 69 6C 61 74 69 6F 6E 2C 20    on compilation, 
008A20:  0D 8A 74 68 65 6E 20 7C 47 4F 20 77 69 6C 6C 20    ..then |GO will 
008A30:  73 69 6D 70 6C 79 20 70 72 69 6E 74 20 74 68 65    simply print the
008A40:  20 6D 65 73 73 61 67 65 20 22 4E 6F 20 70 72 6F     message "No pro
008A50:  67 72 61 6D 22 2E 20 0D 0A 09 57 41 52 4E 49 4E    gram". ...WARNIN
008A60:  47 20 2D 20 69 74 20 69 73 20 70 6F 73 73 69 62    G - it is possib
008A70:  6C 65 20 74 6F 90 20 63 6F 72 72 75 70 74 90 20    le to. corrupt. 
008A80:  61 20 63 6F 6D 70 69 6C 65 64 20 70 72 6F 67 72    a compiled progr
008A90:  61 6D 20 69 6E 20 6D 65 6D 6F 72 79 20 0D 8A 62    am in memory ..b
008AA0:  79 20 65 64 69 74 69 6E 67 20 74 68 65 20 50 52    y editing the PR
008AB0:  4F 54 45 58 54 20 6F 72 90 20 4D 41 58 41 4D 90    OTEXT or. MAXAM.
008AC0:  20 74 65 78 74 2C 90 20 73 6F 90 20 61 66 74 65     text,. so. afte
008AD0:  72 20 65 64 69 74 69 6E 67 20 74 68 65 20 70 72    r editing the pr
008AE0:  6F 67 72 61 6D 20 0D 8A 73 68 6F 75 6C 64 20 61    ogram ..should a
008AF0:  6C 77 61 79 73 20 62 65 20 63 6F 6D 70 69 6C 65    lways be compile
008B00:  64 20 61 67 61 69 6E 20 62 65 66 6F 72 65 20 75    d again before u
008B10:  73 69 6E 67 20 47 4F 2E 0D 0A 09 57 69 74 68 20    sing GO....With 
008B20:  6C 61 72 67 65 90 20 70 72 6F 67 72 61 6D 73 90    large. programs.
008B30:  20 69 74 90 20 69 73 90 20 71 75 69 74 65 90 20     it. is. quite. 
008B40:  6C 69 6B 65 6C 79 90 20 74 68 61 74 90 20 74 68    likely. that. th
008B50:  65 72 65 90 20 77 69 6C 6C 90 20 62 65 20 0D 8A    ere. will. be ..
008B60:  69 6E 73 75 66 66 69 63 69 65 6E 74 20 6D 65 6D    insufficient mem
008B70:  6F 72 79 20 74 6F 20 63 6F 6D 70 69 6C 65 20 74    ory to compile t
008B80:  6F 90 20 6D 65 6D 6F 72 79 2E 90 20 54 68 65 72    o. memory.. Ther
008B90:  65 20 61 72 65 20 74 68 72 65 65 20 63 6F 75 72    e are three cour
008BA0:  73 65 73 20 6F 66 20 0D 8A 61 63 74 69 6F 6E 20    ses of ..action 
008BB0:  74 68 61 74 20 6D 61 79 20 62 65 20 74 61 6B 65    that may be take
008BC0:  6E 20 68 65 72 65 3A 0D 0A 09 28 69 29 20 20 20    n here:...(i)   
008BD0:  69 66 20 79 6F 75 20 61 72 65 20 75 73 69 6E 67    if you are using
008BE0:  20 74 68 65 20 64 69 73 63 90 20 76 65 72 73 69     the disc. versi
008BF0:  6F 6E 2C 90 20 62 75 79 20 61 20 52 4F 4D 20 62    on,. buy a ROM b
008C00:  6F 61 72 64 20 61 6E 64 20 75 73 65 20 0D 8A 74    oard and use ..t
008C10:  68 65 20 52 4F 4D 20 76 65 72 73 69 6F 6E 2E 20    he ROM version. 
008C20:  59 6F 75 20 77 69 6C 6C 20 67 61 69 6E 20 61 6E    You will gain an
008C30:  20 65 78 74 72 61 20 31 36 4B 20 6F 66 20 6D 65     extra 16K of me
008C40:  6D 6F 72 79 2E 0D 0A 09 28 69 69 29 20 20 63 6F    mory....(ii)  co
008C50:  6D 70 69 6C 65 20 64 69 72 65 63 74 6C 79 20 74    mpile directly t
008C60:  6F 20 64 69 73 63 2E 0D 0A 09 28 69 69 69 29 20    o disc....(iii) 
008C70:  75 73 65 20 74 68 65 20 43 50 2F 4D 20 76 65 72    use the CP/M ver
008C80:  73 69 6F 6E 2E 0D 0A 0D 0A 0D 0A E2 45 78 74 72    sion........Extr
008C90:  61 20 66 61 63 69 6C 69 74 69 65 73 20 66 6F 72    a facilities for
008CA0:  20 52 4F 4D 20 75 73 65 72 73 E2 0D 0A 0D 0A 52     ROM users.....R
008CB0:  4F 4D 4F 4E 37 0D 0A 0D 0A 09 53 6F 6D 65 20 70    OMON7.....Some p
008CC0:  72 6F 67 72 61 6D 73 90 20 28 70 61 72 74 69 63    rograms. (partic
008CD0:  75 6C 61 72 6C 79 90 20 67 61 6D 65 73 29 90 20    ularly. games). 
008CE0:  77 69 6C 6C 90 20 6E 6F 74 90 20 72 75 6E 90 20    will. not. run. 
008CF0:  77 69 74 68 90 20 61 90 20 72 6F 6D 20 0D 8A 69    with. a. rom ..i
008D00:  6E 73 74 61 6C 6C 65 64 2E 20 54 68 65 20 63 6F    nstalled. The co
008D10:  6D 6D 61 6E 64 20 7C 52 4F 4D 4F 4E 37 20 69 73    mmand |ROMON7 is
008D20:  20 70 72 6F 76 69 64 65 64 20 74 6F 20 65 6E 61     provided to ena
008D30:  62 6C 65 20 74 68 65 20 42 43 50 4C 20 72 6F 6D    ble the BCPL rom
008D40:  20 28 61 6E 64 20 0D 8A 61 6E 79 20 6F 74 68 65     (and ..any othe
008D50:  72 73 29 20 74 6F 20 62 65 20 74 75 72 6E 65 64    rs) to be turned
008D60:  20 6F 66 66 2E 20 41 6C 6C 90 20 72 6F 6D 73 90     off. All. roms.
008D70:  20 65 78 63 65 70 74 20 74 68 65 20 41 4D 53 44     except the AMSD
008D80:  4F 53 20 72 6F 6D 20 77 69 6C 6C 20 62 65 20 0D    OS rom will be .
008D90:  8A 74 75 72 6E 65 64 20 6F 66 66 2E 20 4E 6F 74    .turned off. Not
008DA0:  65 20 74 68 61 74 90 20 52 4F 4D 4F 4E 37 90 20    e that. ROMON7. 
008DB0:  77 69 6C 6C 90 20 72 65 73 65 74 90 20 74 68 65    will. reset. the
008DC0:  90 20 63 6F 6D 70 75 74 65 72 20 61 6E 64 20 6C    . computer and l
008DD0:  6F 73 65 20 74 68 65 20 0D 8A 63 6F 6E 74 65 6E    ose the ..conten
008DE0:  74 73 20 6F 66 20 6D 65 6D 6F 72 79 2E 0D 0A 0D    ts of memory....
008DF0:  0A 52 55 4E 22 44 49 53 43 0D 0A 0D 0A 09 57 68    .RUN"DISC.....Wh
008E00:  65 6E 20 74 68 65 20 42 43 50 4C 20 52 4F 4D 20    en the BCPL ROM 
008E10:  69 73 90 20 69 6E 73 74 61 6C 6C 65 64 2C 20 70    is. installed, p
008E20:  72 65 73 73 69 6E 67 20 43 54 52 4C 2D 45 4E 54    ressing CTRL-ENT
008E30:  45 52 20 77 69 6C 6C 20 67 65 6E 65 72 61 74 65    ER will generate
008E40:  20 0D 8A 74 68 65 20 63 6F 6D 6D 61 6E 64 20 52     ..the command R
008E50:  55 4E 22 44 49 53 43 2E 20 54 68 75 73 20 61 20    UN"DISC. Thus a 
008E60:  66 69 6C 65 90 20 27 44 49 53 43 27 90 20 77 69    file. 'DISC'. wi
008E70:  6C 6C 20 62 65 20 72 75 6E 20 77 68 65 6E 20 43    ll be run when C
008E80:  54 52 4C 2D 45 4E 54 45 52 20 0D 8A 69 73 20 70    TRL-ENTER ..is p
008E90:  72 65 73 73 65 64 2E 0D 0A 0D 0A 3E 70 61 0D 0A    ressed.....>pa..
008EA0:  3E 63 65 20 E2 34 2E 20 43 4F 4D 50 49 4C 45 52    >ce .4. COMPILER
008EB0:  20 4F 50 54 49 4F 4E 53 E2 0D 0A 0D 0A 0D 0A 09     OPTIONS........
008EC0:  54 68 65 20 4F 50 54 49 4F 4E 20 64 69 72 65 63    The OPTION direc
008ED0:  74 69 76 65 20 63 6F 6E 74 72 6F 6C 73 20 76 61    tive controls va
008EE0:  72 69 6F 75 73 20 63 6F 6D 70 69 6C 65 72 20 66    rious compiler f
008EF0:  61 63 69 6C 69 74 69 65 73 2E 20 49 74 20 64 6F    acilities. It do
008F00:  65 73 20 0D 8A 6E 6F 74 20 63 61 75 73 65 20 61    es ..not cause a
008F10:  6E 79 20 63 6F 64 65 20 74 6F 20 62 65 20 67 65    ny code to be ge
008F20:  6E 65 72 61 74 65 64 2E 90 20 54 68 65 72 65 20    nerated.. There 
008F30:  61 72 65 20 35 20 6F 70 74 69 6F 6E 73 20 6F 6E    are 5 options on
008F40:  20 74 68 65 20 41 4D 53 44 4F 53 20 0D 8A 76 65     the AMSDOS ..ve
008F50:  72 73 69 6F 6E 73 20 6F 66 20 74 68 65 20 63 6F    rsions of the co
008F60:  6D 70 69 6C 65 72 20 61 6E 64 20 33 90 20 6F 6E    mpiler and 3. on
008F70:  20 74 68 65 20 43 50 2F 4D 20 76 65 72 73 69 6F     the CP/M versio
008F80:  6E 2E 20 20 4D 75 6C 74 69 70 6C 65 20 6F 70 74    n.  Multiple opt
008F90:  69 6F 6E 73 20 0D 8A 6D 61 79 20 62 65 20 73 65    ions ..may be se
008FA0:  6C 65 63 74 65 64 90 20 77 69 74 68 90 20 61 90    lected. with. a.
008FB0:  20 73 69 6E 67 6C 65 90 20 4F 50 54 49 4F 4E 90     single. OPTION.
008FC0:  20 64 69 72 65 63 74 69 76 65 90 20 62 79 20 73     directive. by s
008FD0:  65 70 61 72 61 74 69 6E 67 20 74 68 65 20 0D 8A    eparating the ..
008FE0:  6F 70 74 69 6F 6E 73 20 77 69 74 68 20 63 6F 6D    options with com
008FF0:  6D 61 73 2E 20 54 68 65 90 20 4F 50 54 49 4F 4E    mas. The. OPTION
009000:  90 20 64 69 72 65 63 74 69 76 65 90 20 6D 61 79    . directive. may
009010:  90 20 61 70 70 65 61 72 20 61 6E 79 77 68 65 72    . appear anywher
009020:  65 20 69 6E 20 61 20 0D 8A 70 72 6F 67 72 61 6D    e in a ..program
009030:  20 73 6F 20 6F 70 74 69 6F 6E 73 20 63 61 6E 20     so options can 
009040:  62 65 20 73 65 6C 65 63 74 65 64 20 66 6F 72 20    be selected for 
009050:  61 6E 79 20 70 61 72 74 20 6F 66 20 61 20 70 72    any part of a pr
009060:  6F 67 72 61 6D 2E 20 0D 0A 0D 0A 09 54 68 65 20    ogram. .....The 
009070:  74 68 72 65 65 20 6F 70 74 69 6F 6E 73 20 63 6F    three options co
009080:  6D 6D 6F 6E 20 74 6F 20 61 6C 6C 20 76 65 72 73    mmon to all vers
009090:  69 6F 6E 73 20 61 72 65 20 61 73 20 66 6F 6C 6C    ions are as foll
0090A0:  6F 77 73 3A 0D 0A 0D 0A 09 49 66 20 74 68 65 20    ows:.....If the 
0090B0:  6F 70 74 69 6F 6E 90 20 69 73 90 20 66 6F 6C 6C    option. is. foll
0090C0:  6F 77 65 64 90 20 62 79 90 20 61 90 20 27 2B 27    owed. by. a. '+'
0090D0:  90 20 73 69 67 6E 90 20 74 68 65 90 20 6F 70 74    . sign. the. opt
0090E0:  69 6F 6E 20 77 69 6C 6C 20 62 65 20 0D 8A 73 77    ion will be ..sw
0090F0:  69 74 63 68 65 64 20 6F 6E 20 61 6E 64 20 69 66    itched on and if
009100:  20 66 6F 6C 6C 6F 77 65 64 20 62 79 20 61 20 27     followed by a '
009110:  2D 2D 27 2C 20 69 74 20 77 69 6C 6C 20 62 65 20    --', it will be 
009120:  20 73 77 69 74 63 68 65 64 20 6F 66 66 2E 0D 0A     switched off...
009130:  0D 0A 09 4C 20 2D 2D 20 73 77 69 74 63 68 20 6C    ...L -- switch l
009140:  69 73 74 69 6E 67 20 6F 6E 20 6F 72 20 6F 66 66    isting on or off
009150:  2E 20 0D 0A 0D 0A 09 09 65 2E 67 2E 20 4F 50 54    . ......e.g. OPT
009160:  49 4F 4E 20 4C 2B 0D 0A 0D 0A 09 53 20 2D 2D 20    ION L+.....S -- 
009170:  73 77 69 74 63 68 20 73 74 61 63 6B 20 63 68 65    switch stack che
009180:  63 6B 69 6E 67 20 6F 6E 20 6F 72 90 20 6F 66 66    cking on or. off
009190:  2E 90 20 49 66 20 63 68 65 63 6B 69 6E 67 20 69    .. If checking i
0091A0:  73 20 6F 6E 20 74 68 65 6E 20 74 68 65 20 0D 8A    s on then the ..
0091B0:  63 6F 6D 70 69 6C 65 72 20 77 69 6C 6C 20 63 68    compiler will ch
0091C0:  65 63 6B 20 66 6F 72 90 20 73 74 61 63 6B 90 20    eck for. stack. 
0091D0:  6F 76 65 72 66 6C 6F 77 90 20 61 74 90 20 74 68    overflow. at. th
0091E0:  65 90 20 65 6E 74 72 79 20 70 6F 69 6E 74 20 6F    e. entry point o
0091F0:  66 20 65 61 63 68 20 0D 8A 70 72 6F 63 65 64 75    f each ..procedu
009200:  72 65 2E 20 49 66 20 73 74 61 63 6B 20 63 68 65    re. If stack che
009210:  63 6B 69 6E 67 20 69 73 90 20 6F 66 66 90 20 74    cking is. off. t
009220:  68 65 6E 90 20 74 68 65 20 73 74 61 63 6B 20 6D    hen. the stack m
009230:  61 79 20 6F 76 65 72 66 6C 6F 77 20 61 6E 64 20    ay overflow and 
009240:  0D 8A 63 72 61 73 68 20 74 68 65 20 6D 61 63 68    ..crash the mach
009250:  69 6E 65 2E 0D 0A 0D 0A 09 09 65 2E 67 2E 20 4F    ine.......e.g. O
009260:  50 54 49 4F 4E 20 53 2D 2D 0D 0A 0D 0A 09 42 20    PTION S--.....B 
009270:  2D 2D 20 73 77 69 74 63 68 20 62 72 65 61 6B 20    -- switch break 
009280:  63 68 65 63 6B 69 6E 67 20 6F 6E 20 6F 72 90 20    checking on or. 
009290:  6F 66 66 2E 90 20 49 66 20 63 68 65 63 6B 69 6E    off.. If checkin
0092A0:  67 20 69 73 20 6F 6E 20 74 68 65 6E 20 74 68 65    g is on then the
0092B0:  20 0D 8A 6F 62 6A 65 63 74 20 63 6F 64 65 90 20     ..object code. 
0092C0:  70 72 6F 64 75 63 65 64 90 20 77 69 6C 6C 90 20    produced. will. 
0092D0:  63 68 65 63 6B 90 20 77 68 65 74 68 65 72 90 20    check. whether. 
0092E0:  74 68 65 90 20 62 72 65 61 6B 90 20 6B 65 79 90    the. break. key.
0092F0:  20 28 45 53 43 90 20 6F 72 20 0D 8A 53 54 4F 50     (ESC. or ..STOP
009300:  29 20 68 61 73 20 62 65 65 6E 20 70 72 65 73 73    ) has been press
009310:  65 64 20 61 74 20 74 68 65 20 73 74 61 72 74 90    ed at the start.
009320:  20 6F 66 90 20 6C 6F 6F 70 73 20 61 6E 64 20 61     of. loops and a
009330:  74 20 74 68 65 20 65 6E 74 72 79 20 70 6F 69 6E    t the entry poin
009340:  74 73 20 0D 8A 6F 66 20 70 72 6F 63 65 64 75 72    ts ..of procedur
009350:  65 73 2E 20 41 20 6E 75 6D 62 65 72 20 6D 61 79    es. A number may
009360:  20 62 65 20 73 70 65 63 69 66 69 65 64 90 20 74     be specified. t
009370:  6F 20 63 6F 6E 74 72 6F 6C 20 68 6F 77 20 6F 66    o control how of
009380:  74 65 6E 20 74 68 65 20 6B 65 79 20 0D 8A 69 73    ten the key ..is
009390:  20 63 68 65 63 6B 65 64 2E 20 54 68 65 20 64 65     checked. The de
0093A0:  66 61 75 6C 74 20 69 73 90 20 31 30 2C 90 20 77    fault is. 10,. w
0093B0:  68 69 63 68 90 20 6D 65 61 6E 73 90 20 69 74 90    hich. means. it.
0093C0:  20 69 73 20 63 68 65 63 6B 65 64 20 6F 6E 63 65     is checked once
0093D0:  20 66 6F 72 20 0D 8A 65 76 65 72 79 20 74 65 6E     for ..every ten
0093E0:  20 6C 6F 6F 70 73 20 6F 72 20 70 72 6F 63 65 64     loops or proced
0093F0:  75 72 65 73 2E 0D 0A 0D 0A 09 09 65 2E 67 2E 20    ures.......e.g. 
009400:  4F 50 54 49 4F 4E 20 42 2D 2D 0D 0A 09 09 20 20    OPTION B--....  
009410:  20 20 20 4F 50 54 49 4F 4E 20 42 2B 32 35 09 0D       OPTION B+25..
009420:  0A 0D 0A 09 54 68 65 20 64 65 66 61 75 6C 74 73    ....The defaults
009430:  20 66 6F 72 20 74 68 65 20 61 62 6F 76 65 20 6F     for the above o
009440:  70 74 69 6F 6E 73 20 61 72 65 20 6C 69 73 74 69    ptions are listi
009450:  6E 67 20 6F 66 66 2C 20 73 74 61 63 6B 20 63 68    ng off, stack ch
009460:  65 63 6B 69 6E 67 20 0D 8A 6F 6E 2C 20 62 72 65    ecking ..on, bre
009470:  61 6B 20 63 68 65 63 6B 69 6E 67 20 6F 6E 2E 20    ak checking on. 
009480:  0D 0A 0D 0A 3E 70 61 0D 0A 09 54 68 65 20 72 65    ....>pa...The re
009490:  6D 61 69 6E 69 6E 67 20 74 77 6F 20 6F 70 74 69    maining two opti
0094A0:  6F 6E 73 20 61 72 65 20 6F 6E 6C 79 20 61 76 61    ons are only ava
0094B0:  69 6C 61 62 6C 65 20 6F 6E 20 41 4D 53 44 4F 53    ilable on AMSDOS
0094C0:  20 76 65 72 73 69 6F 6E 73 2E 0D 0A 0D 0A 0D 0A     versions.......
0094D0:  09 4F 20 2D 2D 20 73 65 74 73 20 74 68 65 20 63    .O -- sets the c
0094E0:  6F 64 65 20 6F 72 69 67 69 6E 20 74 6F 20 74 68    ode origin to th
0094F0:  65 20 76 61 6C 75 65 20 6F 66 20 74 68 65 20 6E    e value of the n
009500:  75 6D 62 65 72 20 77 68 69 63 68 20 66 6F 6C 6C    umber which foll
009510:  6F 77 73 20 0D 8A 69 74 2E 20 0D 0A 09 09 65 2E    ows ..it. ....e.
009520:  67 2E 20 4F 50 54 49 4F 4E 20 4F 20 23 78 31 37    g. OPTION O #x17
009530:  32 0D 0A 0D 0A 77 69 6C 6C 20 70 72 6F 64 75 63    2....will produc
009540:  65 20 63 6F 64 65 20 77 68 69 63 68 20 77 69 6C    e code which wil
009550:  6C 20 72 75 6E 20 61 74 20 61 64 64 72 65 73 73    l run at address
009560:  20 31 37 32 20 28 68 65 78 29 2E 0D 0A 0D 0A 09     172 (hex)......
009570:  48 20 2D 2D 20 73 65 74 73 20 74 68 65 20 68 69    H -- sets the hi
009580:  67 68 65 73 74 20 62 79 74 65 20 75 73 61 62 6C    ghest byte usabl
009590:  65 20 62 79 20 74 68 65 20 63 6F 6D 70 69 6C 65    e by the compile
0095A0:  64 20 63 6F 64 65 2E 20 54 68 69 73 20 69 73 20    d code. This is 
0095B0:  73 6F 20 0D 8A 74 68 61 74 20 70 72 6F 67 72 61    so ..that progra
0095C0:  6D 73 20 63 6F 6D 70 69 6C 65 64 20 6F 6E 20 6F    ms compiled on o
0095D0:  6E 65 20 6D 61 63 68 69 6E 65 20 63 61 6E 20 62    ne machine can b
0095E0:  65 20 72 75 6E 20 6F 6E 20 61 6E 6F 74 68 65 72    e run on another
0095F0:  2E 20 0D 0A 09 09 65 2E 67 2E 20 4F 50 54 49 4F    . ....e.g. OPTIO
009600:  4E 20 48 20 34 30 30 30 30 0D 0A 0D 0A 0D 0A 09    N H 40000.......
009610:  54 68 65 20 6F 72 69 67 69 6E 20 64 65 66 61 75    The origin defau
009620:  6C 74 73 20 74 6F 20 74 68 65 20 66 69 72 73 74    lts to the first
009630:  90 20 75 6E 75 73 65 64 20 62 79 74 65 20 6F 66    . unused byte of
009640:  20 6D 65 6D 6F 72 79 20 61 74 20 63 6F 6D 70 69     memory at compi
009650:  6C 65 20 0D 8A 74 69 6D 65 20 28 61 66 74 65 72    le ..time (after
009660:  20 61 6E 79 20 42 41 53 49 43 20 70 72 6F 67 72     any BASIC progr
009670:  61 6D 20 6F 72 90 20 74 65 78 74 29 90 20 61 6E    am or. text). an
009680:  64 20 74 68 65 20 68 69 67 68 65 73 74 20 62 79    d the highest by
009690:  74 65 20 64 65 66 61 75 6C 74 73 20 0D 8A 74 6F    te defaults ..to
0096A0:  20 74 68 65 20 6C 61 73 74 20 75 6E 75 73 65 64     the last unused
0096B0:  20 62 79 74 65 20 6F 66 20 6D 65 6D 6F 72 79 20     byte of memory 
0096C0:  61 74 20 63 6F 6D 70 69 6C 65 20 74 69 6D 65 20    at compile time 
0096D0:  28 75 73 75 61 6C 6C 79 20 48 49 4D 45 4D 29 2E    (usually HIMEM).
0096E0:  0D 0A 0D 0A 09 54 68 65 20 6D 61 69 6E 20 75 73    .....The main us
0096F0:  65 20 66 6F 72 20 74 68 65 20 48 20 61 6E 64 20    e for the H and 
009700:  4F 20 6F 70 74 69 6F 6E 73 20 69 73 20 77 68 65    O options is whe
009710:  6E 20 70 72 6F 64 75 63 69 6E 67 20 73 74 61 6E    n producing stan
009720:  64 20 61 6C 6F 6E 65 20 0D 8A 63 6F 64 65 20 74    d alone ..code t
009730:  6F 20 62 65 20 72 75 6E 20 66 72 6F 6D 20 61 90    o be run from a.
009740:  20 64 69 73 63 90 20 77 69 74 68 90 20 6E 6F 20     disc. with. no 
009750:  42 41 53 49 43 20 73 75 70 70 6F 72 74 20 65 74    BASIC support et
009760:  63 2E 20 54 68 65 73 65 20 6F 70 74 69 6F 6E 73    c. These options
009770:  20 0D 8A 65 6E 61 62 6C 65 20 61 6C 6C 20 6F 66     ..enable all of
009780:  20 74 68 65 20 6D 65 6D 6F 72 79 20 74 6F 20 62     the memory to b
009790:  65 20 75 73 65 64 90 20 66 6F 72 20 61 20 70 72    e used. for a pr
0097A0:  6F 67 72 61 6D 2E 20 49 74 20 73 68 6F 75 6C 64    ogram. It should
0097B0:  20 62 65 20 6E 6F 74 65 64 20 0D 8A 68 6F 77 65     be noted ..howe
0097C0:  76 65 72 20 74 68 61 74 20 69 66 20 74 68 65 90    ver that if the.
0097D0:  20 5A 38 30 90 20 73 74 61 63 6B 90 20 70 6F 69     Z80. stack. poi
0097E0:  6E 74 65 72 90 20 67 6F 65 73 90 20 62 65 6C 6F    nter. goes. belo
0097F0:  77 90 20 23 78 34 30 30 30 20 6F 72 20 61 62 6F    w. #x4000 or abo
009800:  76 65 20 0D 8A 23 78 43 30 30 30 20 74 68 65 6E    ve ..#xC000 then
009810:  20 74 68 65 20 6D 61 63 68 69 6E 65 90 20 77 69     the machine. wi
009820:  6C 6C 90 20 70 72 6F 62 61 62 6C 79 90 20 63 72    ll. probably. cr
009830:  61 73 68 90 20 64 75 65 90 20 74 6F 20 74 68 65    ash. due. to the
009840:  20 52 4F 4D 20 70 61 67 69 6E 67 20 0D 8A 77 68     ROM paging ..wh
009850:  69 63 68 20 75 73 65 73 20 74 68 65 73 65 20 61    ich uses these a
009860:  72 65 61 73 20 6F 66 20 6D 65 6D 6F 72 79 2E 0D    reas of memory..
009870:  0A 0D 0A 3E 70 61 0D 0A 3E 63 65 20 E2 35 2E 20    ...>pa..>ce .5. 
009880:  53 4F 4D 45 20 4B 45 59 20 46 41 43 54 53 20 41    SOME KEY FACTS A
009890:  42 4F 55 54 20 42 43 50 4C E2 0D 0A 0D 0A 0D 0A    BOUT BCPL.......
0098A0:  E2 28 69 29 20 42 43 50 4C 20 69 73 20 61 20 73    .(i) BCPL is a s
0098B0:  74 72 75 63 74 75 72 65 64 20 6C 61 6E 67 75 61    tructured langua
0098C0:  67 65 E2 0D 0A 0D 0A 09 41 20 42 43 50 4C 20 70    ge......A BCPL p
0098D0:  72 6F 67 72 61 6D 20 69 73 20 6D 61 64 65 20 75    rogram is made u
0098E0:  70 20 6F 66 20 61 20 6E 75 6D 62 65 72 20 6F 66    p of a number of
0098F0:  20 6E 61 6D 65 64 20 70 72 6F 63 65 64 75 72 65     named procedure
009900:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
009910:  08 00 00 00 02 09 50 E5 08 00 C1 02 00 00 00 02    ......P.........
009920:  08 00 C2 02 00 00 00 02 08 00 C3 02 00 00 00 02    ................
009930:  08 00 C4 02 00 00 00 02 08 00 C5 02 00 00 00 02    ................
009940:  08 00 C6 02 00 00 00 02 08 00 C7 02 00 00 00 02    ................
009950:  08 00 C8 02 00 00 00 02 08 00 C9 02 00 00 00 02    ................
009960:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
009970:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
009980:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
009990:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
009A00:  73 2C 20 65 61 63 68 20 6F 66 20 0D 8A 77 68 69    s, each of ..whi
009A10:  63 68 20 69 73 90 20 71 75 69 74 65 90 20 73 65    ch is. quite. se
009A20:  70 61 72 61 74 65 2E 90 20 54 68 65 72 65 90 20    parate.. There. 
009A30:  69 73 90 20 6F 6E 65 90 20 73 70 65 63 69 61 6C    is. one. special
009A40:  90 20 70 72 6F 63 65 64 75 72 65 2C 20 63 61 6C    . procedure, cal
009A50:  6C 65 64 20 0D 8A 27 73 74 61 72 74 27 2C 20 77    led ..'start', w
009A60:  68 69 63 68 20 6D 75 73 74 20 62 65 20 70 72 65    hich must be pre
009A70:  73 65 6E 74 90 20 69 6E 90 20 65 76 65 72 79 90    sent. in. every.
009A80:  20 42 43 50 4C 20 70 72 6F 67 72 61 6D 2E 20 54     BCPL program. T
009A90:  68 69 73 20 69 73 20 77 68 65 72 65 20 0D 8A 65    his is where ..e
009AA0:  78 65 63 75 74 69 6F 6E 20 77 69 6C 6C 20 62 65    xecution will be
009AB0:  67 69 6E 2E 20 54 68 69 73 20 70 72 6F 63 65 64    gin. This proced
009AC0:  75 72 65 20 77 69 6C 6C 20 63 61 6C 6C 20 6F 74    ure will call ot
009AD0:  68 65 72 20 70 72 6F 63 65 64 75 72 65 73 2C 20    her procedures, 
009AE0:  77 68 69 63 68 20 0D 8A 77 69 6C 6C 20 69 6E 20    which ..will in 
009AF0:  74 75 72 6E 20 63 61 6C 6C 20 6F 74 68 65 72 20    turn call other 
009B00:  70 72 6F 63 65 64 75 72 65 73 2C 20 61 6E 64 20    procedures, and 
009B10:  73 6F 20 6F 6E 2E 0D 0A 09 59 6F 75 20 77 69 6C    so on....You wil
009B20:  6C 20 6C 61 74 65 72 20 63 6F 6D 65 20 61 63 72    l later come acr
009B30:  6F 73 73 20 74 65 72 6D 73 20 73 75 63 68 20 61    oss terms such a
009B40:  73 20 62 6C 6F 63 6B 73 2C 20 63 6F 6D 70 6F 75    s blocks, compou
009B50:  6E 64 20 63 6F 6D 6D 61 6E 64 73 20 0D 8A 61 6E    nd commands ..an
009B60:  64 20 73 63 6F 70 65 20 2D 2D 20 74 65 72 6D 73    d scope -- terms
009B70:  90 20 74 68 61 74 90 20 61 70 70 6C 79 90 20 74    . that. apply. t
009B80:  6F 90 20 73 74 72 75 63 74 75 72 65 64 90 20 6C    o. structured. l
009B90:  61 6E 67 75 61 67 65 73 20 69 6E 20 67 65 6E 65    anguages in gene
009BA0:  72 61 6C 2E 20 0D 8A 45 78 61 6D 70 6C 65 73 90    ral. ..Examples.
009BB0:  20 6F 66 90 20 6F 74 68 65 72 90 20 73 74 72 75     of. other. stru
009BC0:  63 74 75 72 65 64 90 90 20 70 72 6F 67 72 61 6D    ctured.. program
009BD0:  6D 69 6E 67 90 20 6C 61 6E 67 75 61 67 65 73 90    ming. languages.
009BE0:  20 61 72 65 90 20 50 61 73 63 61 6C 2C 20 0D 8A     are. Pascal, ..
009BF0:  4D 6F 64 75 6C 61 91 32 20 61 6E 64 20 43 2E 20    Modula.2 and C. 
009C00:  4C 6F 63 6F 6D 6F 74 69 76 65 20 42 41 53 49 43    Locomotive BASIC
009C10:  20 61 6E 64 90 20 4D 61 6C 6C 61 72 64 20 42 41     and. Mallard BA
009C20:  53 49 43 20 61 72 65 20 6E 6F 74 20 73 74 72 75    SIC are not stru
009C30:  63 74 75 72 65 64 20 0D 8A 6C 61 6E 67 75 61 67    ctured ..languag
009C40:  65 73 2E 0D 0A 0D 0A 0D 0A E2 28 69 69 29 20 42    es........(ii) B
009C50:  43 50 4C 20 69 73 20 61 20 63 6F 6D 70 69 6C 65    CPL is a compile
009C60:  64 20 6C 61 6E 67 75 61 67 65 E2 0D 0A 0D 0A 09    d language......
009C70:  42 41 53 49 43 20 69 73 20 75 73 75 61 6C 6C 79    BASIC is usually
009C80:  20 61 6E 20 69 6E 74 65 72 70 72 65 74 65 64 90     an interpreted.
009C90:  20 6C 61 6E 67 75 61 67 65 2E 90 20 57 68 65 6E     language.. When
009CA0:  20 61 20 70 72 6F 67 72 61 6D 20 69 73 20 72 75     a program is ru
009CB0:  6E 2C 20 0D 8A 74 68 65 20 42 41 53 49 43 20 69    n, ..the BASIC i
009CC0:  6E 74 65 72 70 72 65 74 65 72 20 72 65 61 64 73    nterpreter reads
009CD0:  90 20 65 61 63 68 90 20 6C 69 6E 65 90 20 61 6E    . each. line. an
009CE0:  64 90 20 65 78 65 63 75 74 65 73 20 74 68 65 20    d. executes the 
009CF0:  61 70 70 72 6F 70 72 69 61 74 65 20 0D 8A 6D 61    appropriate ..ma
009D00:  63 68 69 6E 65 20 63 6F 64 65 20 69 6E 73 74 72    chine code instr
009D10:  75 63 74 69 6F 6E 73 2E 20 54 68 69 73 20 64 65    uctions. This de
009D20:  63 6F 64 69 6E 67 20 69 73 90 20 64 6F 6E 65 20    coding is. done 
009D30:  65 76 65 72 79 20 74 69 6D 65 20 61 20 6C 69 6E    every time a lin
009D40:  65 20 69 73 20 0D 8A 65 78 65 63 75 74 65 64 2E    e is ..executed.
009D50:  20 54 68 65 20 72 65 73 75 6C 74 90 20 69 73 90     The result. is.
009D60:  20 74 68 61 74 90 20 42 41 53 49 43 90 20 70 72     that. BASIC. pr
009D70:  6F 67 72 61 6D 73 90 20 72 75 6E 90 20 76 65 72    ograms. run. ver
009D80:  79 20 73 6C 6F 77 6C 79 20 77 68 65 6E 20 0D 8A    y slowly when ..
009D90:  63 6F 6D 70 61 72 65 64 20 77 69 74 68 20 61 20    compared with a 
009DA0:  6D 61 63 68 69 6E 65 20 63 6F 64 65 20 70 72 6F    machine code pro
009DB0:  67 72 61 6D 20 64 6F 69 6E 67 20 74 68 65 20 73    gram doing the s
009DC0:  61 6D 65 20 74 68 69 6E 67 2E 0D 0A 09 41 20 42    ame thing....A B
009DD0:  43 50 4C 20 70 72 6F 67 72 61 6D 20 6D 75 73 74    CPL program must
009DE0:  20 62 65 20 73 75 62 6D 69 74 74 65 64 20 74 6F     be submitted to
009DF0:  90 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 20 62    . the compiler b
009E00:  65 66 6F 72 65 20 69 74 20 63 61 6E 20 62 65 20    efore it can be 
009E10:  0D 8A 72 75 6E 2E 20 54 68 65 20 63 6F 6D 70 69    ..run. The compi
009E20:  6C 65 72 90 20 74 72 61 6E 73 6C 61 74 65 73 90    ler. translates.
009E30:  20 74 68 65 90 20 65 6E 74 69 72 65 90 20 70 72     the. entire. pr
009E40:  6F 67 72 61 6D 90 20 69 6E 74 6F 20 6D 61 63 68    ogram. into mach
009E50:  69 6E 65 20 63 6F 64 65 20 0D 8A 69 6E 73 74 72    ine code ..instr
009E60:  75 63 74 69 6F 6E 73 2E 20 54 68 65 20 6D 61 63    uctions. The mac
009E70:  68 69 6E 65 20 63 6F 64 65 20 70 72 6F 67 72 61    hine code progra
009E80:  6D 20 69 73 90 20 73 61 76 65 64 90 20 61 6E 64    m is. saved. and
009E90:  20 63 61 6E 20 74 68 65 6E 20 62 65 20 72 75 6E     can then be run
009EA0:  2E 20 0D 8A 53 69 6E 63 65 20 65 61 63 68 20 42    . ..Since each B
009EB0:  43 50 4C 20 6C 69 6E 65 20 69 73 20 6F 6E 6C 79    CPL line is only
009EC0:  90 20 74 72 61 6E 73 6C 61 74 65 64 90 20 6F 6E    . translated. on
009ED0:  63 65 2C 90 20 61 20 42 43 50 4C 20 70 72 6F 67    ce,. a BCPL prog
009EE0:  72 61 6D 20 72 75 6E 73 20 61 20 0D 8A 6C 6F 74    ram runs a ..lot
009EF0:  20 66 61 73 74 65 72 20 74 68 61 6E 20 61 20 63     faster than a c
009F00:  6F 72 72 65 73 70 6F 6E 64 69 6E 67 20 42 41 53    orresponding BAS
009F10:  49 43 20 70 72 6F 67 72 61 6D 2E 0D 0A 09 54 68    IC program....Th
009F20:  65 20 64 69 73 61 64 76 61 6E 74 61 67 65 20 6F    e disadvantage o
009F30:  66 20 75 73 69 6E 67 20 61 20 63 6F 6D 70 69 6C    f using a compil
009F40:  65 64 90 20 6C 61 6E 67 75 61 67 65 20 69 73 20    ed. language is 
009F50:  74 68 61 74 20 79 6F 75 20 68 61 76 65 20 74 6F    that you have to
009F60:  20 0D 8A 77 61 69 74 20 66 6F 72 20 74 68 65 20     ..wait for the 
009F70:  70 72 6F 67 72 61 6D 20 74 6F 20 62 65 20 63 6F    program to be co
009F80:  6D 70 69 6C 65 64 90 20 65 61 63 68 20 74 69 6D    mpiled. each tim
009F90:  65 20 62 65 66 6F 72 65 20 79 6F 75 20 63 61 6E    e before you can
009FA0:  20 74 65 73 74 20 69 74 2E 20 0D 8A 54 68 69 73     test it. ..This
009FB0:  20 69 73 20 6E 6F 74 20 61 90 20 70 72 6F 62 6C     is not a. probl
009FC0:  65 6D 90 20 77 69 74 68 90 20 41 72 6E 6F 72 90    em. with. Arnor.
009FD0:  20 42 43 50 4C 90 20 73 69 6E 63 65 20 69 74 20     BCPL. since it 
009FE0:  63 6F 6D 70 69 6C 65 73 20 65 78 74 72 65 6D 65    compiles extreme
009FF0:  6C 79 20 0D 8A 71 75 69 63 6B 6C 79 2E 0D 0A 0D    ly ..quickly....
00A000:  0A 0D 0A E2 28 69 69 69 29 20 42 43 50 4C 20 69    ....(iii) BCPL i
00A010:  73 20 61 20 74 79 70 65 6C 65 73 73 20 6C 61 6E    s a typeless lan
00A020:  67 75 61 67 65 E2 0D 0A 0D 0A 09 4D 6F 73 74 20    guage......Most 
00A030:  6C 61 6E 67 75 61 67 65 73 20 68 61 76 65 20 61    languages have a
00A040:  90 20 6E 75 6D 62 65 72 90 20 6F 66 90 20 69 6E    . number. of. in
00A050:  74 65 72 6E 61 6C 90 20 76 61 72 69 61 62 6C 65    ternal. variable
00A060:  20 74 79 70 65 73 2E 20 42 41 53 49 43 20 0D 8A     types. BASIC ..
00A070:  75 73 75 61 6C 6C 79 20 68 61 73 20 36 20 2D 2D    usually has 6 --
00A080:  20 69 6E 74 65 67 65 72 2C 20 72 65 61 6C 2C 20     integer, real, 
00A090:  73 74 72 69 6E 67 2C 20 69 6E 74 65 67 65 72 20    string, integer 
00A0A0:  61 72 72 61 79 2C 20 72 65 61 6C 20 61 72 72 61    array, real arra
00A0B0:  79 2C 20 61 6E 64 20 0D 8A 73 74 72 69 6E 67 20    y, and ..string 
00A0C0:  61 72 72 61 79 2E 20 50 41 53 43 41 4C 20 61 6E    array. PASCAL an
00A0D0:  64 20 43 20 68 61 76 65 20 72 61 74 68 65 72 90    d C have rather.
00A0E0:  20 6D 6F 72 65 2C 20 61 6E 64 20 68 61 76 65 20     more, and have 
00A0F0:  74 68 65 20 61 62 69 6C 69 74 79 20 66 6F 72 20    the ability for 
00A100:  0D 8A 74 68 65 20 70 72 6F 67 72 61 6D 6D 65 72    ..the programmer
00A110:  20 74 6F 20 64 65 66 69 6E 65 20 68 69 73 20 6F     to define his o
00A120:  77 6E 20 75 73 69 6E 67 20 22 72 65 63 6F 72 64    wn using "record
00A130:  22 20 6F 72 20 22 73 74 72 75 63 74 22 2E 0D 0A    " or "struct"...
00A140:  09 42 43 50 4C 20 68 61 73 20 6A 75 73 74 20 6F    .BCPL has just o
00A150:  6E 65 90 20 69 6E 74 65 72 6E 61 6C 90 20 76 61    ne. internal. va
00A160:  72 69 61 62 6C 65 90 20 74 79 70 65 90 20 2D 2D    riable. type. --
00A170:  90 20 61 20 76 61 72 69 61 62 6C 65 20 63 61 6E    . a variable can
00A180:  20 62 65 20 0D 8A 61 73 73 69 67 6E 65 64 20 61     be ..assigned a
00A190:  20 73 69 6E 67 6C 65 20 77 6F 72 64 20 76 61 6C     single word val
00A1A0:  75 65 2E 90 20 54 68 69 73 90 20 69 73 90 20 72    ue.. This. is. r
00A1B0:  65 66 65 72 72 65 64 90 20 74 6F 20 61 73 20 61    eferred. to as a
00A1C0:  20 62 69 74 2D 70 61 74 74 65 72 6E 20 0D 8A 69     bit-pattern ..i
00A1D0:  6E 64 69 63 61 74 69 6E 67 20 74 68 61 74 20 6E    ndicating that n
00A1E0:  6F 20 69 6E 68 65 72 65 6E 74 90 20 6D 65 61 6E    o inherent. mean
00A1F0:  69 6E 67 90 20 69 73 90 20 61 74 74 61 63 68 65    ing. is. attache
00A200:  64 90 20 74 6F 20 74 68 69 73 20 76 61 6C 75 65    d. to this value
00A210:  2E 20 54 68 65 20 0D 8A 6D 65 61 6E 69 6E 67 20    . The ..meaning 
00A220:  6F 66 20 74 68 65 20 76 61 6C 75 65 20 69 73 20    of the value is 
00A230:  64 65 74 65 72 6D 69 6E 65 64 20 62 79 20 74 68    determined by th
00A240:  65 20 77 61 79 20 74 68 61 74 20 74 68 65 20 70    e way that the p
00A250:  72 6F 67 72 61 6D 6D 65 72 20 75 73 65 73 20 0D    rogrammer uses .
00A260:  8A 69 74 2C 20 61 6E 64 20 74 68 69 73 20 6D 65    .it, and this me
00A270:  61 6E 69 6E 67 90 20 63 61 6E 90 20 63 68 61 6E    aning. can. chan
00A280:  67 65 2E 90 20 49 6E 90 20 41 72 6E 6F 72 27 73    ge.. In. Arnor's
00A290:  20 69 6D 70 6C 65 6D 65 6E 74 61 74 69 6F 6E 20     implementation 
00A2A0:  6F 66 20 42 43 50 4C 20 0D 8A 65 61 63 68 20 76    of BCPL ..each v
00A2B0:  61 6C 75 65 20 69 73 20 31 36 20 62 69 74 73 20    alue is 16 bits 
00A2C0:  6C 6F 6E 67 2E 20 54 68 65 72 65 90 20 66 6F 6C    long. There. fol
00A2D0:  6C 6F 77 20 73 6F 6D 65 20 65 78 61 6D 70 6C 65    low some example
00A2E0:  73 20 6F 66 20 68 6F 77 20 73 6F 6D 65 20 6F 66    s of how some of
00A2F0:  20 0D 8A 74 68 65 20 63 6F 6D 6D 6F 6E 20 64 61     ..the common da
00A300:  74 61 20 74 79 70 65 73 20 61 72 65 20 75 73 65    ta types are use
00A310:  64 20 69 6E 20 42 43 50 4C 2E 20 4E 6F 74 65 20    d in BCPL. Note 
00A320:  74 68 61 74 20 69 6E 20 65 61 63 68 20 63 61 73    that in each cas
00A330:  65 20 61 20 27 4C 45 54 27 20 0D 8A 64 65 63 6C    e a 'LET' ..decl
00A340:  61 72 61 74 69 6F 6E 20 69 73 20 72 65 71 75 69    aration is requi
00A350:  72 65 64 20 74 6F 20 64 65 66 69 6E 65 20 61 20    red to define a 
00A360:  76 61 72 69 61 62 6C 65 20 62 65 66 6F 72 65 20    variable before 
00A370:  69 74 20 63 61 6E 20 62 65 20 75 73 65 64 2E 0D    it can be used..
00A380:  0A 3E 70 61 0D 0A E2 53 69 6D 75 6C 61 74 69 6E    .>pa...Simulatin
00A390:  67 20 64 69 66 66 65 72 65 6E 74 20 76 61 72 69    g different vari
00A3A0:  61 62 6C 65 20 74 79 70 65 73 E2 0D 0A 0D 0A E2    able types......
00A3B0:  49 6E 74 65 67 65 72 3A E2 09 09 4C 45 54 20 6E    Integer:...LET n
00A3C0:  75 6D 62 65 72 20 3D 20 3F 0D 0A 09 09 09 6E 75    umber = ?.....nu
00A3D0:  6D 62 65 72 20 3A 3D 20 34 32 0D 0A 0D 0A 54 68    mber := 42....Th
00A3E0:  69 73 20 61 73 73 69 67 6E 73 20 74 68 65 20 76    is assigns the v
00A3F0:  61 6C 75 65 20 34 32 90 20 28 74 68 61 74 90 20    alue 42. (that. 
00A400:  69 73 20 74 68 65 20 62 69 74 20 70 61 74 74 65    is the bit patte
00A410:  72 6E 20 30 30 30 30 30 30 30 30 30 30 31 30 31    rn 0000000000101
00A420:  30 31 30 29 20 0D 8A 74 6F 20 74 68 65 20 76 61    010) ..to the va
00A430:  72 69 61 62 6C 65 20 27 6E 75 6D 62 65 72 27 2E    riable 'number'.
00A440:  0D 0A 0D 0A E2 43 68 61 72 61 63 74 65 72 3A E2    .....Character:.
00A450:  09 4C 45 54 20 63 68 61 72 20 3D 20 3F 0D 0A 09    .LET char = ?...
00A460:  09 09 63 68 61 72 20 3A 3D 20 27 41 27 0D 0A 0D    ..char := 'A'...
00A470:  0A 54 68 69 73 90 20 61 73 73 69 67 6E 73 90 20    .This. assigns. 
00A480:  74 68 65 90 20 6E 75 6D 62 65 72 90 20 36 35 90    the. number. 65.
00A490:  90 20 28 74 68 65 90 90 20 41 53 43 49 49 90 20    . (the.. ASCII. 
00A4A0:  63 6F 64 65 90 20 72 65 70 72 65 73 65 6E 74 69    code. representi
00A4B0:  6E 67 90 20 74 68 65 20 0D 8A 6C 65 74 74 65 72    ng. the ..letter
00A4C0:  91 27 41 27 29 20 74 6F 20 74 68 65 20 76 61 72    .'A') to the var
00A4D0:  69 61 62 6C 65 20 27 63 68 61 72 27 2E 0D 0A 0D    iable 'char'....
00A4E0:  0A E2 56 65 63 74 6F 72 3A E2 09 09 4C 45 54 20    ..Vector:...LET 
00A4F0:  61 72 72 61 79 20 3D 20 56 45 43 20 31 30 0D 0A    array = VEC 10..
00A500:  09 09 09 46 4F 52 20 69 3D 30 20 54 4F 20 31 30    ...FOR i=0 TO 10
00A510:  20 44 4F 20 61 72 72 61 79 21 69 20 3A 3D 20 69     DO array!i := i
00A520:  0D 0A 0D 0A 54 68 69 73 20 73 65 74 73 20 61 73    ....This sets as
00A530:  69 64 65 20 61 6E 20 31 31 20 77 6F 72 64 20 28    ide an 11 word (
00A540:  32 32 90 20 62 79 74 65 29 90 20 61 72 65 61 20    22. byte). area 
00A550:  6F 66 20 6D 65 6D 6F 72 79 2C 20 61 6E 64 20 61    of memory, and a
00A560:  73 73 69 67 6E 73 20 74 68 65 20 0D 8A 61 64 64    ssigns the ..add
00A570:  72 65 73 73 20 6F 66 20 74 68 65 20 73 74 61 72    ress of the star
00A580:  74 20 6F 66 20 74 68 69 73 20 61 72 65 61 90 20    t of this area. 
00A590:  74 6F 20 74 68 65 20 76 61 72 69 61 62 6C 65 20    to the variable 
00A5A0:  27 61 72 72 61 79 27 2E 20 54 68 65 20 76 65 63    'array'. The vec
00A5B0:  74 6F 72 20 0D 8A 69 73 20 61 63 63 65 73 73 65    tor ..is accesse
00A5C0:  64 20 62 79 20 74 68 65 20 69 6E 64 69 72 65 63    d by the indirec
00A5D0:  74 69 6F 6E 20 6F 70 65 72 61 74 6F 72 20 27 21    tion operator '!
00A5E0:  27 2C 20 77 68 65 72 65 20 27 61 72 72 61 79 21    ', where 'array!
00A5F0:  69 27 20 6D 65 61 6E 73 20 74 68 65 20 0D 8A 63    i' means the ..c
00A600:  6F 6E 74 65 6E 74 73 20 6F 66 20 61 64 64 72 65    ontents of addre
00A610:  73 73 20 28 61 72 72 61 79 2B 69 29 2E 20 21 61    ss (array+i). !a
00A620:  72 72 61 79 20 6D 65 61 6E 73 20 74 68 65 20 73    rray means the s
00A630:  61 6D 65 20 61 73 20 61 72 72 61 79 21 30 2E 0D    ame as array!0..
00A640:  0A 0D 0A E2 54 77 6F 20 64 69 6D 65 6E 73 69 6F    ....Two dimensio
00A650:  6E 61 6C 20 61 72 72 61 79 3A E2 0D 0A 0D 0A 09    nal array:......
00A660:  09 09 4D 41 4E 49 46 45 53 54 20 24 28 20 6D 3D    ..MANIFEST $( m=
00A670:  33 2C 20 6E 3D 34 20 24 29 0D 0A 09 09 09 4C 45    3, n=4 $).....LE
00A680:  54 20 61 72 72 61 79 20 3D 20 56 45 43 20 28 6D    T array = VEC (m
00A690:  2B 31 29 2A 28 6E 2B 31 29 20 2D 2D 20 31 0D 0A    +1)*(n+1) -- 1..
00A6A0:  09 09 09 4C 45 54 20 67 65 74 61 72 72 61 79 28    ...LET getarray(
00A6B0:  69 2C 6A 29 20 3D 20 61 72 72 61 79 21 28 6D 2A    i,j) = array!(m*
00A6C0:  69 2B 6A 29 0D 0A 09 09 09 4C 45 54 20 70 75 74    i+j).....LET put
00A6D0:  61 72 72 61 79 28 69 2C 6A 2C 76 61 6C 75 65 29    array(i,j,value)
00A6E0:  20 42 45 20 61 72 72 61 79 21 28 6D 2A 69 2B 6A     BE array!(m*i+j
00A6F0:  29 20 3A 3D 20 76 61 6C 75 65 0D 0A 0D 0A 4D 75    ) := value....Mu
00A700:  6C 74 69 2D 64 69 6D 65 6E 73 69 6F 6E 61 6C 20    lti-dimensional 
00A710:  61 72 72 61 79 73 20 63 61 6E 20 62 65 20 69 6D    arrays can be im
00A720:  70 6C 65 6D 65 6E 74 65 64 90 20 62 79 90 20 64    plemented. by. d
00A730:  65 66 69 6E 69 6E 67 20 61 20 76 65 63 74 6F 72    efining a vector
00A740:  20 61 6E 64 20 0D 8A 63 61 6C 63 75 6C 61 74 69     and ..calculati
00A750:  6E 67 20 74 68 65 20 72 65 71 75 69 72 65 64 20    ng the required 
00A760:  77 6F 72 64 20 66 72 6F 6D 20 74 68 65 20 61 72    word from the ar
00A770:  72 61 79 20 73 75 62 73 63 72 69 70 74 73 2E 0D    ray subscripts..
00A780:  0A 0D 0A E2 53 74 72 69 6E 67 3A E2 09 09 4C 45    ....String:...LE
00A790:  54 20 74 65 78 74 20 3D 20 22 42 43 50 4C 20 69    T text = "BCPL i
00A7A0:  73 20 61 20 74 79 70 65 6C 65 73 73 20 6C 61 6E    s a typeless lan
00A7B0:  67 75 61 67 65 22 0D 0A 0D 0A 54 68 69 73 20 73    guage"....This s
00A7C0:  74 6F 72 65 73 20 74 68 65 20 73 74 72 69 6E 67    tores the string
00A7D0:  90 20 22 42 43 50 4C 90 20 69 73 90 20 61 90 20    . "BCPL. is. a. 
00A7E0:  74 79 70 65 6C 65 73 73 90 20 6C 61 6E 67 75 61    typeless. langua
00A7F0:  67 65 22 20 73 6F 6D 65 77 68 65 72 65 20 69 6E    ge" somewhere in
00A800:  20 0D 8A 6D 65 6D 6F 72 79 2C 20 70 72 65 63 65     ..memory, prece
00A810:  64 65 64 20 62 79 20 61 20 62 79 74 65 90 20 63    ded by a byte. c
00A820:  6F 6E 74 61 69 6E 69 6E 67 90 20 74 68 65 90 20    ontaining. the. 
00A830:  6C 65 6E 67 74 68 20 6F 66 20 74 68 65 20 73 74    length of the st
00A840:  72 69 6E 67 2E 20 54 68 65 20 0D 8A 76 61 6C 75    ring. The ..valu
00A850:  65 20 61 73 73 69 67 6E 65 64 20 74 6F 20 74 68    e assigned to th
00A860:  65 20 76 61 72 69 61 62 6C 65 90 20 27 74 65 78    e variable. 'tex
00A870:  74 27 90 20 69 73 90 20 74 68 65 20 61 64 64 72    t'. is. the addr
00A880:  65 73 73 20 6F 66 20 74 68 69 73 20 6C 65 6E 67    ess of this leng
00A890:  74 68 20 0D 8A 62 79 74 65 2E 20 4E 6F 74 65 20    th ..byte. Note 
00A8A0:  74 68 61 74 20 74 68 69 73 20 69 73 90 20 6F 6E    that this is. on
00A8B0:  6C 79 90 20 70 6F 73 73 69 62 6C 65 90 20 62 65    ly. possible. be
00A8C0:  63 61 75 73 65 20 74 68 65 20 6D 65 6D 6F 72 79    cause the memory
00A8D0:  20 61 64 64 72 65 73 73 20 69 73 20 0D 8A 74 68     address is ..th
00A8E0:  65 20 73 61 6D 65 20 6C 65 6E 67 74 68 20 61 73    e same length as
00A8F0:  20 74 68 65 20 42 43 50 4C 20 77 6F 72 64 20 28     the BCPL word (
00A900:  74 68 69 73 20 69 73 20 6E 6F 74 20 61 20 63 6F    this is not a co
00A910:  69 6E 63 69 64 65 6E 63 65 21 29 2E 0D 0A 0D 0A    incidence!).....
00A920:  4E 6F 74 65 3A 20 54 68 65 72 65 20 69 73 20 61    Note: There is a
00A930:  20 76 65 72 79 20 69 6D 70 6F 72 74 61 6E 74 90     very important.
00A940:  20 64 69 66 66 65 72 65 6E 63 65 90 20 62 65 74     difference. bet
00A950:  77 65 65 6E 20 74 68 65 20 75 73 65 20 6F 66 20    ween the use of 
00A960:  73 69 6E 67 6C 65 20 0D 8A 61 6E 64 20 64 6F 75    single ..and dou
00A970:  62 6C 65 20 71 75 6F 74 65 73 2C 20 61 6E 64 20    ble quotes, and 
00A980:  63 6F 6E 66 75 73 69 6E 67 20 74 68 65 73 65 20    confusing these 
00A990:  63 61 6E 90 20 6C 65 61 64 20 74 6F 20 62 75 67    can. lead to bug
00A9A0:  73 20 74 68 61 74 20 61 72 65 20 76 65 72 79 20    s that are very 
00A9B0:  0D 8A 64 69 66 66 69 63 75 6C 74 20 74 6F 20 66    ..difficult to f
00A9C0:  69 6E 64 2C 20 73 6F 20 62 65 20 63 61 72 65 66    ind, so be caref
00A9D0:  75 6C 21 20 54 68 65 20 42 43 50 4C 20 62 6F 6F    ul! The BCPL boo
00A9E0:  6B 20 63 6F 6E 74 61 69 6E 73 20 61 20 76 65 72    k contains a ver
00A9F0:  79 20 75 73 65 66 75 6C 20 0D 8A 73 65 63 74 69    y useful ..secti
00AA00:  6F 6E 20 6F 6E 20 74 68 65 20 70 69 74 66 61 6C    on on the pitfal
00AA10:  6C 73 20 6F 66 20 42 43 50 4C 20 70 72 6F 67 72    ls of BCPL progr
00AA20:  61 6D 6D 69 6E 67 2E 0D 0A 0D 0A 09 53 69 6E 67    amming......Sing
00AA30:  6C 65 20 71 75 6F 74 65 73 20 65 6E 63 6C 6F 73    le quotes enclos
00AA40:  65 90 20 61 90 20 63 68 61 72 61 63 74 65 72 90    e. a. character.
00AA50:  20 61 6E 64 90 20 64 65 66 69 6E 65 90 20 61 20     and. define. a 
00AA60:  63 6F 6E 73 74 61 6E 74 20 77 68 6F 73 65 20 0D    constant whose .
00AA70:  8A 76 61 6C 75 65 20 69 73 20 74 68 65 20 41 53    .value is the AS
00AA80:  43 49 49 20 63 6F 64 65 20 6F 66 20 74 68 61 74    CII code of that
00AA90:  20 63 68 61 72 61 63 74 65 72 2E 20 0D 0A 09 44     character. ...D
00AAA0:  6F 75 62 6C 65 20 71 75 6F 74 65 73 20 65 6E 63    ouble quotes enc
00AAB0:  6C 6F 73 65 20 61 20 73 74 72 69 6E 67 90 20 61    lose a string. a
00AAC0:  6E 64 90 20 64 65 66 69 6E 65 20 61 20 63 6F 6E    nd. define a con
00AAD0:  73 74 61 6E 74 20 77 68 6F 73 65 20 76 61 6C 75    stant whose valu
00AAE0:  65 20 0D 8A 69 73 20 74 68 65 20 61 64 64 72 65    e ..is the addre
00AAF0:  73 73 20 6F 66 20 74 68 61 74 20 73 74 72 69 6E    ss of that strin
00AB00:  67 2E 0D 0A 3E 70 61 0D 0A 3E 63 65 20 E2 36 2E    g...>pa..>ce .6.
00AB10:  20 54 57 4F 20 42 43 50 4C 20 50 52 4F 47 52 41     TWO BCPL PROGRA
00AB20:  4D 53 E2 0D 0A 0D 0A E2 28 69 29 20 41 20 76 65    MS......(i) A ve
00AB30:  72 79 20 73 69 6D 70 6C 65 20 42 43 50 4C 20 70    ry simple BCPL p
00AB40:  72 6F 67 72 61 6D E2 0D 0A 0D 0A 54 68 69 73 20    rogram.....This 
00AB50:  73 69 6D 70 6C 79 20 64 69 73 70 6C 61 79 73 20    simply displays 
00AB60:  61 20 6D 65 73 73 61 67 65 20 6F 6E 20 74 68 65    a message on the
00AB70:  20 73 63 72 65 65 6E 2E 0D 0A 0D 0A 0D 0A 09 47     screen........G
00AB80:  45 54 20 22 43 4C 49 42 48 44 52 22 0D 0A 09 4C    ET "CLIBHDR"...L
00AB90:  45 54 20 73 74 61 72 74 28 29 20 42 45 0D 0A 09    ET start() BE...
00ABA0:  24 28 0D 0A 09 20 20 77 72 69 74 65 73 28 22 48    $(...  writes("H
00ABB0:  65 6C 6C 6F 20 65 76 65 72 79 6F 6E 65 21 22 29    ello everyone!")
00ABC0:  0D 0A 09 24 29 0D 0A 0D 0A 0D 0A E2 50 6F 69 6E    ...$).......Poin
00ABD0:  74 73 20 74 6F 20 6E 6F 74 65 3A E2 0D 0A 0D 0A    ts to note:.....
00ABE0:  09 31 2E 20 4C 45 54 20 61 6E 64 20 42 45 90 20    .1. LET and BE. 
00ABF0:  61 72 65 90 20 42 43 50 4C 90 20 6B 65 79 77 6F    are. BCPL. keywo
00AC00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
00AC10:  09 00 00 00 02 09 50 E5 09 00 C1 02 00 00 00 02    ......P.........
00AC20:  09 00 C2 02 00 00 00 02 09 00 C3 02 00 00 00 02    ................
00AC30:  09 00 C4 02 00 00 00 02 09 00 C5 02 00 00 00 02    ................
00AC40:  09 00 C6 02 00 00 00 02 09 00 C7 02 00 00 00 02    ................
00AC50:  09 00 C8 02 00 00 00 02 09 00 C9 02 00 00 00 02    ................
00AC60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00AC70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00AC80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00AC90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00ACA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00ACB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00ACC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00ACD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00ACE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00ACF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00AD00:  72 64 73 2E 90 20 42 43 50 4C 90 20 6B 65 79 77    rds.. BCPL. keyw
00AD10:  6F 72 64 73 20 61 72 65 20 70 72 69 6E 74 65 64    ords are printed
00AD20:  20 69 6E 20 0D 8A 75 70 70 65 72 20 63 61 73 65     in ..upper case
00AD30:  20 74 68 72 6F 75 67 68 6F 75 74 20 74 68 69 73     throughout this
00AD40:  20 6D 61 6E 75 61 6C 20 66 6F 72 90 20 63 6C 61     manual for. cla
00AD50:  72 69 74 79 2E 20 49 74 20 69 73 20 6E 6F 74 20    rity. It is not 
00AD60:  6E 65 63 65 73 73 61 72 79 20 74 6F 20 0D 8A 74    necessary to ..t
00AD70:  79 70 65 20 74 68 65 6D 20 69 6E 20 75 70 70 65    ype them in uppe
00AD80:  72 20 63 61 73 65 20 61 73 20 74 68 65 20 63 6F    r case as the co
00AD90:  6D 70 69 6C 65 72 20 69 67 6E 6F 72 65 73 20 74    mpiler ignores t
00ADA0:  68 65 20 64 69 73 74 69 6E 63 74 69 6F 6E 2E 0D    he distinction..
00ADB0:  0A 0D 0A 09 32 2E 20 73 74 61 72 74 28 29 2E 20    ....2. start(). 
00ADC0:  54 68 69 73 90 20 69 73 90 20 74 68 65 90 20 70    This. is. the. p
00ADD0:  72 6F 63 65 64 75 72 65 90 20 74 68 61 74 90 20    rocedure. that. 
00ADE0:  6D 75 73 74 90 20 62 65 90 20 70 72 65 73 65 6E    must. be. presen
00ADF0:  74 2E 20 54 68 65 20 0D 8A 62 72 61 63 6B 65 74    t. The ..bracket
00AE00:  73 20 69 6E 64 69 63 61 74 65 20 74 68 61 74 20    s indicate that 
00AE10:  27 73 74 61 72 74 27 20 69 73 20 74 68 65 90 20    'start' is the. 
00AE20:  6E 61 6D 65 90 20 6F 66 20 61 20 70 72 6F 63 65    name. of a proce
00AE30:  64 75 72 65 2E 20 54 68 65 79 20 77 69 6C 6C 20    dure. They will 
00AE40:  0D 8A 6F 66 74 65 6E 20 63 6F 6E 74 61 69 6E 20    ..often contain 
00AE50:  70 61 72 61 6D 65 74 65 72 73 20 66 6F 72 20 74    parameters for t
00AE60:  68 65 20 70 72 6F 63 65 64 75 72 65 2E 0D 0A 0D    he procedure....
00AE70:  0A 09 33 2E 20 24 28 20 61 6E 64 20 24 29 2E 20    ..3. $( and $). 
00AE80:  54 68 65 73 65 90 20 61 72 65 90 20 73 65 63 74    These. are. sect
00AE90:  69 6F 6E 90 20 62 72 61 63 6B 65 74 73 2C 20 6D    ion. brackets, m
00AEA0:  61 72 6B 69 6E 67 20 74 68 65 20 73 74 61 72 74    arking the start
00AEB0:  20 61 6E 64 20 0D 8A 65 6E 64 20 6F 66 20 74 68     and ..end of th
00AEC0:  65 20 70 72 6F 63 65 64 75 72 65 20 27 73 74 61    e procedure 'sta
00AED0:  72 74 27 2E 0D 0A 0D 0A 09 34 2E 20 77 72 69 74    rt'......4. writ
00AEE0:  65 73 2E 20 54 68 69 73 20 69 73 20 61 20 42 43    es. This is a BC
00AEF0:  50 4C 90 20 70 72 6F 63 65 64 75 72 65 20 28 6E    PL. procedure (n
00AF00:  6F 74 65 20 74 68 65 20 62 72 61 63 6B 65 74 73    ote the brackets
00AF10:  20 63 6F 6E 74 61 69 6E 69 6E 67 20 0D 8A 74 68     containing ..th
00AF20:  65 20 70 61 72 61 6D 65 74 65 72 29 2E 20 49 74    e parameter). It
00AF30:  20 69 73 20 6E 6F 74 20 61 20 42 43 50 4C 90 20     is not a BCPL. 
00AF40:  6B 65 79 77 6F 72 64 20 61 6E 64 20 73 6F 20 74    keyword and so t
00AF50:  68 65 20 70 72 6F 63 65 64 75 72 65 20 6D 75 73    he procedure mus
00AF60:  74 20 62 65 20 0D 8A 64 65 66 69 6E 65 64 20 73    t be ..defined s
00AF70:  6F 6D 65 77 68 65 72 65 20 28 73 65 65 20 62 65    omewhere (see be
00AF80:  6C 6F 77 29 2E 0D 0A 0D 0A 09 35 2E 20 47 45 54    low)......5. GET
00AF90:  20 22 43 4C 49 42 48 44 52 22 2E 90 20 54 68 69     "CLIBHDR".. Thi
00AFA0:  73 90 20 69 73 90 20 61 90 20 64 69 72 65 63 74    s. is. a. direct
00AFB0:  69 76 65 90 20 28 61 6E 90 20 69 6E 73 74 72 75    ive. (an. instru
00AFC0:  63 74 69 6F 6E 20 74 6F 20 74 68 65 20 0D 8A 63    ction to the ..c
00AFD0:  6F 6D 70 69 6C 65 72 29 20 74 6F 20 63 6F 6D 70    ompiler) to comp
00AFE0:  69 6C 65 20 74 68 65 20 42 43 50 4C 90 20 63 6F    ile the BCPL. co
00AFF0:  64 65 90 20 63 6F 6E 74 61 69 6E 65 64 90 20 69    de. contained. i
00B000:  6E 20 74 68 65 20 66 69 6C 65 20 27 43 4C 49 42    n the file 'CLIB
00B010:  48 44 52 27 2E 20 0D 8A 54 68 69 73 20 66 69 6C    HDR'. ..This fil
00B020:  65 20 69 73 20 61 90 20 6C 69 62 72 61 72 79 90    e is a. library.
00B030:  20 6F 66 90 20 75 73 65 66 75 6C 90 20 70 72 6F     of. useful. pro
00B040:  63 65 64 75 72 65 73 2C 90 20 69 6E 63 6C 75 64    cedures,. includ
00B050:  69 6E 67 20 6F 6E 65 20 63 61 6C 6C 65 64 20 0D    ing one called .
00B060:  8A 27 77 72 69 74 65 73 27 2E 0D 0A 0D 0A 0D 0A    .'writes'.......
00B070:  E2 28 69 69 29 20 41 20 73 6C 69 67 68 74 6C 79    .(ii) A slightly
00B080:  20 6D 6F 72 65 20 63 6F 6D 70 6C 65 78 20 42 43     more complex BC
00B090:  50 4C 20 70 72 6F 67 72 61 6D E2 0D 0A 0D 0A 0D    PL program......
00B0A0:  0A 47 45 54 20 22 63 6C 69 62 68 64 72 22 0D 0A    .GET "clibhdr"..
00B0B0:  0D 0A 2F 2A 20 54 68 69 73 20 69 73 20 61 20 63    ../* This is a c
00B0C0:  6F 70 79 20 72 6F 75 74 69 6E 65 20 2A 2F 0D 0A    opy routine */..
00B0D0:  0D 0A 4C 45 54 20 73 74 61 72 74 28 29 20 42 45    ..LET start() BE
00B0E0:  0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 69 6E    ....$(..  LET in
00B0F0:  6E 61 6D 65 20 3D 20 56 45 43 20 32 30 20 20 3B    name = VEC 20  ;
00B100:  20 4C 45 54 20 69 6E 62 75 66 66 20 3D 20 56 45     LET inbuff = VE
00B110:  43 20 38 32 0D 0A 20 20 4C 45 54 20 6F 75 74 6E    C 82..  LET outn
00B120:  61 6D 65 20 3D 20 56 45 43 20 32 30 20 3B 20 4C    ame = VEC 20 ; L
00B130:  45 54 20 6F 75 74 62 75 66 66 20 3D 20 56 45 43    ET outbuff = VEC
00B140:  20 38 32 0D 0A 20 20 4C 45 54 20 63 20 3D 20 30     82..  LET c = 0
00B150:  0D 0A 3E 70 61 0D 0A 20 20 77 72 69 74 65 73 28    ..>pa..  writes(
00B160:  22 49 6E 70 75 74 20 66 69 6C 65 20 6E 61 6D 65    "Input file name
00B170:  3A 20 20 22 29 0D 0A 20 20 72 65 61 64 73 28 69    :  ")..  reads(i
00B180:  6E 6E 61 6D 65 29 0D 0A 20 20 77 72 69 74 65 73    nname)..  writes
00B190:  28 22 2A 6E 4F 75 74 70 75 74 20 66 69 6C 65 20    ("*nOutput file 
00B1A0:  6E 61 6D 65 3A 20 22 29 0D 0A 20 20 72 65 61 64    name: ")..  read
00B1B0:  73 28 6F 75 74 6E 61 6D 65 29 0D 0A 20 20 54 45    s(outname)..  TE
00B1C0:  53 54 20 66 69 6E 64 69 6E 70 75 74 28 69 6E 6E    ST findinput(inn
00B1D0:  61 6D 65 2C 20 69 6E 62 75 66 66 29 20 54 48 45    ame, inbuff) THE
00B1E0:  4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 73 65 6C    N..  $(..    sel
00B1F0:  65 63 74 69 6E 70 75 74 28 69 6E 62 75 66 66 29    ectinput(inbuff)
00B200:  0D 0A 20 20 20 20 54 45 53 54 20 66 69 6E 64 6F    ..    TEST findo
00B210:  75 74 70 75 74 28 6F 75 74 6E 61 6D 65 2C 20 6F    utput(outname, o
00B220:  75 74 62 75 66 66 29 20 54 48 45 4E 0D 0A 20 20    utbuff) THEN..  
00B230:  20 20 24 28 0D 0A 20 20 20 20 20 20 73 65 6C 65      $(..      sele
00B240:  63 74 6F 75 74 70 75 74 28 6F 75 74 62 75 66 66    ctoutput(outbuff
00B250:  29 0D 0A 20 20 20 20 20 20 24 28 0D 0A 20 20 20    )..      $(..   
00B260:  20 20 20 20 20 63 20 3A 3D 20 72 64 63 68 28 29         c := rdch()
00B270:  0D 0A 20 20 20 20 20 20 20 20 55 4E 4C 45 53 53    ..        UNLESS
00B280:  20 63 3D 65 6E 64 73 74 72 65 61 6D 63 68 20 44     c=endstreamch D
00B290:  4F 20 77 72 63 68 28 63 29 0D 0A 20 20 20 20 20    O wrch(c)..     
00B2A0:  20 24 29 0D 0A 20 20 20 20 20 20 52 45 50 45 41     $)..      REPEA
00B2B0:  54 55 4E 54 49 4C 20 63 20 3D 20 65 6E 64 73 74    TUNTIL c = endst
00B2C0:  72 65 61 6D 63 68 0D 0A 20 20 20 20 20 20 65 6E    reamch..      en
00B2D0:  64 77 72 69 74 65 28 29 0D 0A 20 20 20 20 24 29    dwrite()..    $)
00B2E0:  0D 0A 20 20 20 20 45 4C 53 45 20 77 72 69 74 65    ..    ELSE write
00B2F0:  73 28 22 43 61 6E 27 74 20 6F 70 65 6E 20 6F 75    s("Can't open ou
00B300:  74 70 75 74 20 66 69 6C 65 22 29 0D 0A 20 20 20    tput file")..   
00B310:  20 65 6E 64 72 65 61 64 28 29 0D 0A 20 20 24 29     endread()..  $)
00B320:  0D 0A 20 20 45 4C 53 45 20 77 72 69 74 65 73 28    ..  ELSE writes(
00B330:  22 43 61 6E 27 74 20 6F 70 65 6E 20 69 6E 70 75    "Can't open inpu
00B340:  74 20 66 69 6C 65 22 29 0D 0A 24 29 0D 0A 0D 0A    t file")..$)....
00B350:  E2 50 6F 69 6E 74 73 20 74 6F 20 6E 6F 74 65 3A    .Points to note:
00B360:  E2 0D 0A 0D 0A 09 31 2E 20 54 68 65 20 75 73 65    ......1. The use
00B370:  20 6F 66 20 2F 2A 20 61 6E 64 20 2A 2F 20 74 6F     of /* and */ to
00B380:  20 65 6E 63 6C 6F 73 65 20 63 6F 6D 6D 65 6E 74     enclose comment
00B390:  73 2E 0D 0A 0D 0A 09 32 2E 20 54 68 65 20 75 73    s......2. The us
00B3A0:  65 20 6F 66 90 20 4C 45 54 90 20 74 6F 90 20 64    e of. LET. to. d
00B3B0:  65 63 6C 61 72 65 90 20 74 68 65 20 76 61 72 69    eclare. the vari
00B3C0:  61 62 6C 65 73 20 27 69 6E 6E 61 6D 65 27 2C 20    ables 'inname', 
00B3D0:  27 69 6E 62 75 66 66 27 2C 20 0D 8A 27 6F 75 74    'inbuff', ..'out
00B3E0:  6E 61 6D 65 27 2C 20 27 6F 75 74 62 75 66 66 27    name', 'outbuff'
00B3F0:  2C 20 61 6E 64 20 27 63 27 2E 20 41 6C 6C 90 20    , and 'c'. All. 
00B400:  76 61 72 69 61 62 6C 65 73 90 20 6D 75 73 74 20    variables. must 
00B410:  62 65 20 64 65 63 6C 61 72 65 64 20 62 65 66 6F    be declared befo
00B420:  72 65 20 0D 8A 75 73 65 2C 20 61 6E 64 20 74 68    re ..use, and th
00B430:  65 20 64 65 63 6C 61 72 61 74 69 6F 6E 73 20 6D    e declarations m
00B440:  75 73 74 20 61 70 70 65 61 72 20 62 65 66 6F 72    ust appear befor
00B450:  65 20 61 6E 79 20 63 6F 6D 6D 61 6E 64 73 2E 0D    e any commands..
00B460:  0A 0D 0A 09 33 2E 20 54 68 65 20 75 73 65 20 6F    ....3. The use o
00B470:  66 20 56 45 43 20 74 6F 20 64 65 66 69 6E 65 20    f VEC to define 
00B480:  76 65 63 74 6F 72 73 20 61 73 20 64 65 73 63 72    vectors as descr
00B490:  69 62 65 64 20 61 62 6F 76 65 2E 0D 0A 0D 0A 09    ibed above......
00B4A0:  34 2E 20 72 65 61 64 73 2E 20 41 6E 6F 74 68 65    4. reads. Anothe
00B4B0:  72 20 6C 69 62 72 61 72 79 90 20 70 72 6F 63 65    r library. proce
00B4C0:  64 75 72 65 2C 90 20 74 6F 90 20 72 65 61 64 90    dure,. to. read.
00B4D0:  20 61 20 73 74 72 69 6E 67 20 66 72 6F 6D 20 74     a string from t
00B4E0:  68 65 20 0D 8A 6B 65 79 62 6F 61 72 64 20 69 6E    he ..keyboard in
00B4F0:  74 6F 20 74 68 65 20 76 65 63 74 6F 72 20 67 69    to the vector gi
00B500:  76 65 6E 20 61 73 20 70 61 72 61 6D 65 74 65 72    ven as parameter
00B510:  2E 0D 0A 0D 0A 09 35 2E 20 66 69 6E 64 6F 75 74    ......5. findout
00B520:  70 75 74 2C 20 66 69 6E 64 69 6E 70 75 74 2C 20    put, findinput, 
00B530:  72 65 61 64 63 68 2C 90 20 77 72 69 74 65 63 68    readch,. writech
00B540:  2E 90 20 4C 69 62 72 61 72 79 20 70 72 6F 63 65    .. Library proce
00B550:  64 75 72 65 73 20 74 6F 20 0D 8A 6F 70 65 6E 20    dures to ..open 
00B560:  66 69 6C 65 73 2C 20 61 6E 64 20 72 65 61 64 20    files, and read 
00B570:  61 6E 64 20 77 72 69 74 65 20 63 68 61 72 61 63    and write charac
00B580:  74 65 72 73 2E 0D 0A 0D 0A 09 36 2E 20 54 45 53    ters......6. TES
00B590:  54 20 2E 2E 2E 20 54 48 45 4E 20 2E 2E 2E 20 45    T ... THEN ... E
00B5A0:  4C 53 45 2E 20 41 20 63 6F 6E 64 69 74 69 6F 6E    LSE. A condition
00B5B0:  61 6C 20 63 6F 6D 6D 61 6E 64 2E 20 53 65 63 74    al command. Sect
00B5C0:  69 6F 6E 20 62 72 61 63 6B 65 74 73 20 0D 8A 61    ion brackets ..a
00B5D0:  72 65 20 75 73 65 64 20 74 6F 20 65 6E 63 6C 6F    re used to enclo
00B5E0:  73 65 20 74 68 65 20 62 6C 6F 63 6B 20 6F 66 20    se the block of 
00B5F0:  63 6F 6D 6D 61 6E 64 73 20 74 68 61 74 20 77 69    commands that wi
00B600:  6C 6C 20 62 65 20 65 78 65 63 75 74 65 64 20 69    ll be executed i
00B610:  66 20 74 68 65 20 0D 8A 74 65 73 74 20 73 75 63    f the ..test suc
00B620:  63 65 65 64 73 20 6F 72 20 66 61 69 6C 73 2E 0D    ceeds or fails..
00B630:  0A 0D 0A 09 37 2E 20 52 45 50 45 41 54 55 4E 54    ....7. REPEATUNT
00B640:  49 4C 2E 20 54 68 65 20 70 72 65 63 65 64 69 6E    IL. The precedin
00B650:  67 20 62 6C 6F 63 6B 20 28 65 6E 63 6C 6F 73 65    g block (enclose
00B660:  64 20 69 6E 20 73 65 63 74 69 6F 6E 20 62 72 61    d in section bra
00B670:  63 6B 65 74 73 29 20 0D 8A 69 73 20 72 65 70 65    ckets) ..is repe
00B680:  61 74 65 64 20 75 6E 74 69 6C 20 74 68 65 20 63    ated until the c
00B690:  6F 6E 64 69 74 69 6F 6E 90 20 62 65 63 6F 6D 65    ondition. become
00B6A0:  73 90 20 74 72 75 65 90 20 28 69 6E 20 74 68 69    s. true. (in thi
00B6B0:  73 20 63 61 73 65 20 77 68 65 6E 20 74 68 65 20    s case when the 
00B6C0:  0D 8A 65 6E 64 20 6F 66 20 74 68 65 20 66 69 6C    ..end of the fil
00B6D0:  65 20 69 73 20 72 65 61 63 68 65 64 29 2E 0D 0A    e is reached)...
00B6E0:  3E 70 61 0D 0A 3E 63 65 20 E2 37 2E 20 53 55 4D    >pa..>ce .7. SUM
00B6F0:  4D 41 52 59 20 4F 46 20 54 48 45 20 42 43 50 4C    MARY OF THE BCPL
00B700:  20 4C 41 4E 47 55 41 47 45 E2 0D 0A 0D 0A 0D 0A     LANGUAGE.......
00B710:  09 54 68 65 20 42 43 50 4C 20 6C 61 6E 67 75 61    .The BCPL langua
00B720:  67 65 90 20 69 73 90 20 62 65 73 74 90 20 63 6F    ge. is. best. co
00B730:  6E 73 69 64 65 72 65 64 90 20 69 6E 90 20 74 77    nsidered. in. tw
00B740:  6F 90 20 70 61 72 74 73 2E 20 46 69 72 73 74 20    o. parts. First 
00B750:  74 68 65 20 0D 8A 73 74 61 6E 64 61 72 64 20 6C    the ..standard l
00B760:  61 6E 67 75 61 67 65 20 63 6F 6D 70 72 69 73 69    anguage comprisi
00B770:  6E 67 20 74 68 65 20 63 6F 6D 6D 61 6E 64 73 90    ng the commands.
00B780:  20 61 6E 64 20 73 79 6E 74 61 78 20 66 6F 72 20     and syntax for 
00B790:  65 78 70 72 65 73 73 69 6F 6E 73 2C 20 0D 8A 63    expressions, ..c
00B7A0:  6F 6E 73 74 61 6E 74 73 20 65 74 63 2E 20 53 65    onstants etc. Se
00B7B0:  63 6F 6E 64 90 20 74 68 65 90 20 69 6E 70 75 74    cond. the. input
00B7C0:  2F 6F 75 74 70 75 74 90 20 6C 69 62 72 61 72 79    /output. library
00B7D0:  90 20 72 6F 75 74 69 6E 65 73 90 20 77 68 69 63    . routines. whic
00B7E0:  68 20 61 72 65 20 0D 8A 6D 6F 73 74 6C 79 20 70    h are ..mostly p
00B7F0:  72 6F 63 65 64 75 72 65 73 20 77 72 69 74 74 65    rocedures writte
00B800:  6E 20 69 6E 20 42 43 50 4C 2E 20 54 68 65 72 65    n in BCPL. There
00B810:  90 20 61 72 65 20 61 20 66 61 69 72 6C 79 20 73    . are a fairly s
00B820:  74 61 6E 64 61 72 64 20 73 65 74 20 6F 66 20 0D    tandard set of .
00B830:  8A 74 68 65 73 65 2C 20 62 75 74 20 74 68 69 73    .these, but this
00B840:  20 69 6D 70 6C 65 6D 65 6E 74 61 74 69 6F 6E 20     implementation 
00B850:  69 6E 63 6C 75 64 65 73 20 61 64 64 69 74 69 6F    includes additio
00B860:  6E 61 6C 20 49 2F 4F 20 72 6F 75 74 69 6E 65 73    nal I/O routines
00B870:  2E 0D 0A 0D 0A E2 45 6C 65 6D 65 6E 74 73 3A E2    ......Elements:.
00B880:  0D 0A 0D 0A 3E 2D 2D 2D 2D 2D 4C 2D 2D 2D 21 2D    ....>-----L---!-
00B890:  2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D    ------!-------!-
00B8A0:  2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D    ------!-------!-
00B8B0:  2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D    ------!-------!-
00B8C0:  2D 2D 2D 2D 2D 2D 21 2D 2D 52 0D 0A 28 69 29 09    ------!--R..(i).
00B8D0:  56 61 72 69 61 62 6C 65 20 6E 61 6D 65 2E 20 4D    Variable name. M
00B8E0:  75 73 74 20 73 74 61 72 74 90 20 77 69 74 68 90    ust start. with.
00B8F0:  20 61 90 20 6C 65 74 74 65 72 90 20 61 6E 64 20     a. letter. and 
00B900:  6D 61 79 20 61 6C 73 6F 20 63 6F 6E 74 61 69 6E    may also contain
00B910:  20 0D 8A 09 64 69 67 69 74 73 20 61 6E 64 20 66     ...digits and f
00B920:  75 6C 6C 20 73 74 6F 70 73 2E 20 41 6C 6C 20 63    ull stops. All c
00B930:  68 61 72 61 63 74 65 72 73 20 73 69 67 6E 69 66    haracters signif
00B940:  69 63 61 6E 74 2E 0D 0A 28 69 69 29 09 4E 75 6D    icant...(ii).Num
00B950:  62 65 72 2E 20 43 61 6E 20 62 65 20 64 65 63 69    ber. Can be deci
00B960:  6D 61 6C 2C 20 6F 63 74 61 6C 20 28 70 72 65 66    mal, octal (pref
00B970:  69 78 20 77 69 74 68 20 23 20 6F 72 20 23 4F 29    ix with # or #O)
00B980:  2C 20 68 65 78 61 64 65 63 69 6D 61 6C 20 0D 8A    , hexadecimal ..
00B990:  09 28 70 72 65 66 69 78 20 77 69 74 68 20 23 58    .(prefix with #X
00B9A0:  29 2C 20 6F 72 20 62 69 6E 61 72 79 20 28 70 72    ), or binary (pr
00B9B0:  65 66 69 78 20 77 69 74 68 20 23 42 29 2E 0D 0A    efix with #B)...
00B9C0:  28 69 69 69 29 20 53 74 72 69 6E 67 20 63 6F 6E    (iii) String con
00B9D0:  73 74 61 6E 74 2E 20 45 6E 63 6C 6F 73 65 20 69    stant. Enclose i
00B9E0:  6E 20 64 6F 75 62 6C 65 20 71 75 6F 74 65 73 2E    n double quotes.
00B9F0:  0D 0A 28 69 76 29 09 43 68 61 72 61 63 74 65 72    ..(iv).Character
00BA00:  20 63 6F 6E 73 74 61 6E 74 2E 20 45 6E 63 6C 6F     constant. Enclo
00BA10:  73 65 20 69 6E 20 73 69 6E 67 6C 65 20 71 75 6F    se in single quo
00BA20:  74 65 73 2E 0D 0A 09 0D 0A 09 43 65 72 74 61 69    tes.......Certai
00BA30:  6E 20 63 68 61 72 61 63 74 65 72 73 20 61 72 65    n characters are
00BA40:  20 72 65 70 72 65 73 65 6E 74 65 64 20 77 69 74     represented wit
00BA50:  68 69 6E 90 20 61 20 73 74 72 69 6E 67 20 6F 72    hin. a string or
00BA60:  20 63 68 61 72 61 63 74 65 72 20 0D 8A 09 63 6F     character ...co
00BA70:  6E 73 74 61 6E 74 20 69 6E 20 61 20 73 70 65 63    nstant in a spec
00BA80:  69 61 6C 20 77 61 79 3A 0D 0A 0D 0A 09 2A 22 09    ial way:.....*".
00BA90:  20 74 68 65 20 22 20 73 79 6D 62 6F 6C 0D 0A 09     the " symbol...
00BAA0:  2A 27 09 20 74 68 65 20 27 20 73 79 6D 62 6F 6C    *'. the ' symbol
00BAB0:  0D 0A 09 2A 2A 09 20 74 68 65 20 2A 20 73 79 6D    ...**. the * sym
00BAC0:  62 6F 6C 0D 0A 09 2A 42 09 20 74 68 65 20 62 61    bol...*B. the ba
00BAD0:  63 6B 73 70 61 63 65 20 63 68 61 72 61 63 74 65    ckspace characte
00BAE0:  72 0D 0A 09 2A 43 09 20 61 20 63 61 72 72 69 61    r...*C. a carria
00BAF0:  67 65 20 72 65 74 75 72 6E 20 28 31 33 29 0D 0A    ge return (13)..
00BB00:  09 2A 4E 09 20 74 68 65 20 6E 65 77 6C 69 6E 65    .*N. the newline
00BB10:  20 63 68 61 72 61 63 74 65 72 20 28 69 6E 20 66     character (in f
00BB20:  61 63 74 20 74 77 6F 20 63 68 61 72 61 63 74 65    act two characte
00BB30:  72 73 2C 20 31 33 20 61 6E 64 20 31 30 29 0D 0A    rs, 13 and 10)..
00BB40:  09 2A 50 09 20 74 68 65 20 6E 65 77 20 70 61 67    .*P. the new pag
00BB50:  65 20 28 66 6F 72 6D 20 66 65 65 64 29 20 63 68    e (form feed) ch
00BB60:  61 72 61 63 74 65 72 20 28 31 32 29 0D 0A 09 2A    aracter (12)...*
00BB70:  53 09 20 61 20 73 70 61 63 65 0D 0A 09 2A 54 09    S. a space...*T.
00BB80:  20 74 68 65 20 74 61 62 20 63 68 61 72 61 63 74     the tab charact
00BB90:  65 72 0D 0A 09 2A 58 6E 6E 20 61 20 68 65 78 61    er...*Xnn a hexa
00BBA0:  64 65 63 69 6D 61 6C 20 6E 75 6D 62 65 72 20 62    decimal number b
00BBB0:  65 74 77 65 65 6E 20 30 20 61 6E 64 20 46 46 2C    etween 0 and FF,
00BBC0:  20 65 2E 67 2E 20 2A 58 46 31 0D 0A 0D 0A 28 76     e.g. *XF1....(v
00BBD0:  29 09 54 72 75 74 68 20 76 61 6C 75 65 73 2C 20    ).Truth values, 
00BBE0:  54 52 55 45 20 61 6E 64 20 46 41 4C 53 45 2E 20    TRUE and FALSE. 
00BBF0:  50 72 65 2D 64 65 66 69 6E 65 64 20 63 6F 6E 73    Pre-defined cons
00BC00:  74 61 6E 74 73 20 77 68 6F 73 65 20 76 61 6C 75    tants whose valu
00BC10:  65 73 20 0D 8A 09 61 72 65 20 74 68 65 20 62 69    es ...are the bi
00BC20:  74 20 70 61 74 74 65 72 6E 73 20 72 65 70 72 65    t patterns repre
00BC30:  73 65 6E 74 69 6E 67 20 74 72 75 65 20 61 6E 64    senting true and
00BC40:  20 66 61 6C 73 65 2E 0D 0A 0D 0A 0D 0A E2 4F 70     false........Op
00BC50:  65 72 61 74 6F 72 73 3A E2 0D 0A 0D 0A 41 64 64    erators:.....Add
00BC60:  72 65 73 73 69 6E 67 20 6F 70 65 72 61 74 6F 72    ressing operator
00BC70:  73 0D 0A 0D 0A 21 09 69 6E 64 69 72 65 63 74 69    s....!.indirecti
00BC80:  6F 6E 20 28 73 75 62 73 63 72 69 70 74 29 2C 20    on (subscript), 
00BC90:  65 2E 67 2E 20 21 61 2C 20 61 21 62 0D 0A 40 09    e.g. !a, a!b..@.
00BCA0:  61 64 64 72 65 73 73 20 6F 66 2C 20 74 68 65 20    address of, the 
00BCB0:  69 6E 76 65 72 73 65 20 6F 66 20 21 2C 20 73 6F    inverse of !, so
00BCC0:  20 40 28 21 61 29 20 3D 20 61 0D 0A 0D 0A 41 72     @(!a) = a....Ar
00BCD0:  69 74 68 6D 65 74 69 63 20 6F 70 65 72 61 74 6F    ithmetic operato
00BCE0:  72 73 0D 0A 0D 0A 2B 09 61 64 64 69 74 69 6F 6E    rs....+.addition
00BCF0:  0D 0A 2D 2D 09 73 75 62 74 72 61 63 74 69 6F 6E    ..--.subtraction
00BD00:  0D 0A 2A 09 6D 75 6C 74 69 70 6C 69 63 61 74 69    ..*.multiplicati
00BD10:  6F 6E 0D 0A 2F 09 69 6E 74 65 67 65 72 20 64 69    on../.integer di
00BD20:  76 69 73 69 6F 6E 0D 0A 52 45 4D 09 69 6E 74 65    vision..REM.inte
00BD30:  67 65 72 20 72 65 6D 61 69 6E 64 65 72 0D 0A 3E    ger remainder..>
00BD40:  70 61 0D 0A 52 65 6C 61 74 69 6F 6E 61 6C 20 6F    pa..Relational o
00BD50:  70 65 72 61 74 6F 72 73 0D 0A 0D 0A 3D 09 65 71    perators....=.eq
00BD60:  75 61 6C 20 74 6F 20 28 6F 72 20 45 51 29 0D 0A    ual to (or EQ)..
00BD70:  5C 3D 09 6E 6F 74 20 65 71 75 61 6C 20 74 6F 20    \=.not equal to 
00BD80:  28 6F 72 20 7E 3D 20 6F 72 20 4E 45 29 0D 8A 3C    (or ~= or NE)..<
00BD90:  09 6C 65 73 73 20 74 68 61 6E 20 28 6F 72 20 4C    .less than (or L
00BDA0:  54 29 0D 0A FA 3E 09 67 72 65 61 74 65 72 20 74    T)...>.greater t
00BDB0:  68 61 6E 20 28 6F 72 20 47 54 29 0D 0A 3C 3D 09    han (or GT)..<=.
00BDC0:  6C 65 73 73 20 74 68 61 6E 20 6F 72 20 65 71 75    less than or equ
00BDD0:  61 6C 20 74 6F 20 28 6F 72 20 4C 45 29 0D 0A FA    al to (or LE)...
00BDE0:  3E 3D 09 67 72 65 61 74 65 72 20 74 68 61 6E 20    >=.greater than 
00BDF0:  6F 72 20 65 71 75 61 6C 20 74 6F 20 28 6F 72 20    or equal to (or 
00BE00:  47 45 29 0D 0A 0D 0A 0D 0A 4C 6F 67 69 63 61 6C    GE)......Logical
00BE10:  20 6F 70 65 72 61 74 6F 72 73 0D 0A 0D 0A 7C 09     operators....|.
00BE20:  6F 72 20 28 6F 72 20 5C 2F 20 6F 72 20 4C 4F 47    or (or \/ or LOG
00BE30:  4F 52 29 0D 0A 26 09 61 6E 64 20 28 6F 72 20 2F    OR)..&.and (or /
00BE40:  5C 20 6F 72 20 4C 4F 47 41 4E 44 29 0D 0A 5C 09    \ or LOGAND)..\.
00BE50:  6E 6F 74 20 28 6F 72 20 7E 20 6F 72 20 4E 4F 54    not (or ~ or NOT
00BE60:  29 0D 0A 45 51 56 09 62 69 74 77 69 73 65 20 65    )..EQV.bitwise e
00BE70:  71 75 69 76 61 6C 65 6E 63 65 0D 0A 4E 45 51 56    quivalence..NEQV
00BE80:  09 65 78 63 6C 75 73 69 76 65 20 6F 72 0D 0A 0D    .exclusive or...
00BE90:  0A 0D 0A 53 68 69 66 74 20 6F 70 65 72 61 74 6F    ...Shift operato
00BEA0:  72 73 0D 0A 0D 0A 3C 3C 09 6C 6F 67 69 63 61 6C    rs....<<.logical
00BEB0:  20 73 68 69 66 74 20 6C 65 66 74 2C 20 65 2E 67     shift left, e.g
00BEC0:  2E 20 61 3C 3C 34 20 73 68 69 66 74 73 20 6C 65    . a<<4 shifts le
00BED0:  66 74 20 34 20 62 69 74 73 0D 0A FA 3E 3E 09 6C    ft 4 bits...>>.l
00BEE0:  6F 67 69 63 61 6C 20 73 68 69 66 74 20 72 69 67    ogical shift rig
00BEF0:  68 74 0D 0A 0D 0A 0D 0A 4F 74 68 65 72 20 63 6F    ht......Other co
00BF00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
00BF10:  0A 00 00 00 02 09 50 E5 0A 00 C1 02 00 00 00 02    ......P.........
00BF20:  0A 00 C2 02 00 00 00 02 0A 00 C3 02 00 00 00 02    ................
00BF30:  0A 00 C4 02 00 00 00 02 0A 00 C5 02 00 00 00 02    ................
00BF40:  0A 00 C6 02 00 00 00 02 0A 00 C7 02 00 00 00 02    ................
00BF50:  0A 00 C8 02 00 00 00 02 0A 00 C9 02 00 00 00 02    ................
00BF60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BF70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BF80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BF90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BFA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BFB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BFC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BFD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BFE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BFF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00C000:  6D 70 6F 6E 65 6E 74 73 20 6F 66 20 65 78 70 72    mponents of expr
00C010:  65 73 73 69 6F 6E 73 3A 0D 0A 0D 0A 28 69 29 09    essions:....(i).
00C020:  46 75 6E 63 74 69 6F 6E 20 63 61 6C 6C 20 28 73    Function call (s
00C030:  65 65 20 62 65 6C 6F 77 29 0D 0A 28 69 69 29 09    ee below)..(ii).
00C040:  43 6F 6E 64 69 74 69 6F 6E 61 6C 20 65 78 70 72    Conditional expr
00C050:  65 73 73 69 6F 6E 2C 20 65 2E 67 2E 20 20 61 20    ession, e.g.  a 
00C060:  2D 2D 3E 20 62 2C 20 63 0D 0A 09 54 68 69 73 20    --> b, c...This 
00C070:  6D 65 61 6E 73 3A 20 65 76 61 6C 75 61 74 65 20    means: evaluate 
00C080:  61 20 61 73 20 61 20 74 72 75 74 68 90 20 76 61    a as a truth. va
00C090:  6C 75 65 2E 20 49 66 20 74 72 75 65 20 74 68 65    lue. If true the
00C0A0:  6E 20 74 68 65 20 76 61 6C 75 65 20 0D 8A 09 6F    n the value ...o
00C0B0:  66 20 74 68 65 20 65 78 70 72 65 73 73 69 6F 6E    f the expression
00C0C0:  20 69 73 20 62 2C 20 6F 74 68 65 72 77 69 73 65     is b, otherwise
00C0D0:  20 63 2E 0D 0A 28 69 69 69 29 09 54 41 42 4C 45     c...(iii).TABLE
00C0E0:  2C 20 65 2E 67 2E 20 54 41 42 4C 45 20 61 2C 62    , e.g. TABLE a,b
00C0F0:  2C 63 2C 64 0D 0A 09 54 68 69 73 20 69 73 20 61    ,c,d...This is a
00C100:  6E 20 65 78 70 72 65 73 73 69 6F 6E 20 77 68 6F    n expression who
00C110:  73 65 90 20 76 61 6C 75 65 90 20 69 73 90 20 74    se. value. is. t
00C120:  68 65 20 61 64 64 72 65 73 73 20 69 6E 20 6D 65    he address in me
00C130:  6D 6F 72 79 20 61 74 20 0D 8A 09 77 68 69 63 68    mory at ...which
00C140:  20 74 68 65 90 20 74 61 62 6C 65 90 20 6F 66 90     the. table. of.
00C150:  20 76 61 6C 75 65 73 90 20 69 73 90 20 73 74 6F     values. is. sto
00C160:  72 65 64 2E 90 20 54 68 65 90 20 76 61 6C 75 65    red.. The. value
00C170:  73 90 20 6D 75 73 74 90 20 62 65 20 0D 8A 09 63    s. must. be ...c
00C180:  6F 6E 73 74 61 6E 74 73 2E 0D 0A 28 69 76 29 09    onstants...(iv).
00C190:  56 41 4C 4F 46 20 28 73 65 65 20 62 65 6C 6F 77    VALOF (see below
00C1A0:  29 0D 0A 0D 0A 0D 0A 4F 72 64 65 72 20 6F 66 20    )......Order of 
00C1B0:  70 72 65 63 65 64 65 6E 63 65 20 6F 66 20 6F 70    precedence of op
00C1C0:  65 72 61 74 6F 72 73 20 28 68 69 67 68 65 73 74    erators (highest
00C1D0:  20 66 69 72 73 74 29 0D 0A 0D 0A 09 31 2E 20 42     first).....1. B
00C1E0:  72 61 63 6B 65 74 65 64 20 65 78 70 72 65 73 73    racketed express
00C1F0:  69 6F 6E 20 20 20 20 20 20 20 20 20 20 20 20 20    ion             
00C200:  20 39 2E 20 3C 3C 20 3E 3E 20 20 20 20 20 20 20     9. << >>       
00C210:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00C220:  0D 0A 09 32 2E 20 46 75 6E 63 74 69 6F 6E 20 63    ...2. Function c
00C230:  61 6C 6C 20 20 20 20 20 20 20 20 20 20 20 20 20    all             
00C240:  20 20 20 20 20 20 20 31 30 2E 20 5C 20 20 20 20           10. \    
00C250:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00C260:  20 20 20 20 20 20 20 0D 0A 09 33 2E 20 21 20 61           ...3. ! a
00C270:  73 20 73 75 62 73 63 72 69 70 74 20 20 20 20 20    s subscript     
00C280:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 31                  11
00C290:  2E 20 26 20 20 20 20 20 20 20 20 20 20 20 20 20    . &             
00C2A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 0A                  ..
00C2B0:  09 34 2E 20 40 2C 20 21 20 61 73 20 69 6E 64 69    .4. @, ! as indi
00C2C0:  72 65 63 74 69 6F 6E 20 20 20 20 20 20 20 20 20    rection         
00C2D0:  20 20 20 20 20 31 32 2E 20 7C 20 20 20 20 20 20         12. |      
00C2E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00C2F0:  20 20 20 20 20 0D 0A 09 35 2E 20 25 20 20 20 20         ...5. %    
00C300:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00C310:  20 20 20 20 20 20 20 20 20 20 20 20 31 33 2E 20                13. 
00C320:  45 51 56 20 4E 45 51 56 20 20 20 20 20 20 20 20    EQV NEQV        
00C330:  20 20 20 20 20 20 20 20 20 20 20 20 0D 0A 09 36                ...6
00C340:  2E 20 2A 20 2F 20 52 45 4D 20 41 42 53 20 20 20    . * / REM ABS   
00C350:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00C360:  20 20 20 31 34 2E 20 2D 2D 3E 20 28 63 6F 6E 64       14. --> (cond
00C370:  69 74 69 6F 6E 61 6C 20 65 78 70 72 65 73 73 69    itional expressi
00C380:  6F 6E 29 0D 0A 09 37 2E 20 2B 20 2D 2D 20 20 20    on)...7. + --   
00C390:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00C3A0:  20 20 20 20 20 20 20 20 20 20 31 35 2E 20 54 41              15. TA
00C3B0:  42 4C 45 20 20 20 20 20 20 20 20 20 20 20 20 20    BLE             
00C3C0:  20 20 20 20 20 20 20 20 20 20 0D 0A 09 38 2E 20              ...8. 
00C3D0:  3D 20 5C 3D 20 3C 20 3E 20 3C 3D 20 3E 3D 20 20    = \= < > <= >=  
00C3E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00C3F0:  20 31 36 2E 20 56 41 4C 4F 46 20 20 20 20 20 20     16. VALOF      
00C400:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00C410:  20 0D 0A 3E 70 61 0D 0A 4E 6F 74 65 3A 20 50 43     ..>pa..Note: PC
00C420:  57 20 75 73 65 72 73 20 77 69 6C 6C 20 66 69 6E    W users will fin
00C430:  64 20 74 77 6F 90 20 6F 66 90 20 74 68 65 90 20    d two. of. the. 
00C440:  6F 70 65 72 61 74 6F 72 90 20 73 79 6D 62 6F 6C    operator. symbol
00C450:  73 20 6E 6F 74 20 73 68 6F 77 6E 20 6F 6E 20 0D    s not shown on .
00C460:  8A 09 74 68 65 69 72 90 20 6B 65 79 62 6F 61 72    ..their. keyboar
00C470:  64 73 2E 90 20 54 68 65 79 90 20 61 72 65 90 20    ds.. They. are. 
00C480:  6F 62 74 61 69 6E 65 64 90 90 20 62 79 90 20 74    obtained.. by. t
00C490:  68 65 90 20 66 6F 6C 6C 6F 77 69 6E 67 90 20 6B    he. following. k
00C4A0:  65 79 20 0D 8A 09 63 6F 6D 62 69 6E 61 74 69 6F    ey ...combinatio
00C4B0:  6E 73 3A 0D 0A 09 5C 09 2D 2D 09 45 58 54 52 41    ns:...\.--.EXTRA
00C4C0:  20 6B 65 79 20 61 6E 64 20 74 68 65 20 6B 65 79     key and the key
00C4D0:  20 6D 61 72 6B 65 64 20 77 69 74 68 20 61 20 31     marked with a 1
00C4E0:  2F 32 20 73 79 6D 62 6F 6C 2E 0D 0A 09 7C 09 2D    /2 symbol....|.-
00C4F0:  2D 09 45 58 54 52 41 20 6B 65 79 20 61 6E 64 20    -.EXTRA key and 
00C500:  74 68 65 20 66 75 6C 6C 20 73 74 6F 70 20 6B 65    the full stop ke
00C510:  79 2E 0D 0A 0D 0A 0D 0A E2 53 65 63 74 69 6F 6E    y........Section
00C520:  20 62 72 61 63 6B 65 74 73 20 61 6E 64 20 63 6F     brackets and co
00C530:  6D 70 6F 75 6E 64 20 63 6F 6D 6D 61 6E 64 73 3A    mpound commands:
00C540:  E2 0D 0A 0D 0A 09 4D 61 6E 79 20 6F 66 20 74 68    ......Many of th
00C550:  65 20 63 6F 6D 6D 61 6E 64 73 20 64 65 73 63 72    e commands descr
00C560:  69 62 65 64 20 62 65 6C 6F 77 90 20 61 70 70 6C    ibed below. appl
00C570:  79 20 74 6F 20 61 20 73 69 6E 67 6C 65 20 63 6F    y to a single co
00C580:  6D 6D 61 6E 64 2E 20 0D 8A 09 46 6F 72 20 65 78    mmand. ...For ex
00C590:  61 6D 70 6C 65 20 52 45 50 45 41 54 90 20 77 69    ample REPEAT. wi
00C5A0:  6C 6C 90 20 72 65 70 65 61 74 90 20 61 90 20 63    ll. repeat. a. c
00C5B0:  6F 6D 6D 61 6E 64 90 20 75 6E 74 69 6C 20 74 68    ommand. until th
00C5C0:  65 20 72 65 71 75 69 72 65 64 20 0D 8A 09 63 6F    e required ...co
00C5D0:  6E 64 69 74 69 6F 6E 20 69 73 20 74 72 75 65 2E    ndition is true.
00C5E0:  20 53 65 63 74 69 6F 6E 90 20 62 72 61 63 6B 65     Section. bracke
00C5F0:  74 73 90 20 61 72 65 90 20 75 73 65 64 20 74 6F    ts. are. used to
00C600:  20 67 72 6F 75 70 20 73 65 76 65 72 61 6C 20 0D     group several .
00C610:  8A 09 63 6F 6D 6D 61 6E 64 73 20 61 73 20 61 90    ..commands as a.
00C620:  20 27 63 6F 6D 70 6F 75 6E 64 90 20 63 6F 6D 6D     'compound. comm
00C630:  61 6E 64 27 2C 90 20 77 68 69 63 68 90 20 69 73    and',. which. is
00C640:  90 20 63 6F 6E 73 69 64 65 72 65 64 90 20 61 73    . considered. as
00C650:  20 61 20 0D 8A 09 73 69 6E 67 6C 65 20 63 6F 6D     a ...single com
00C660:  6D 61 6E 64 20 66 6F 72 20 74 68 65 73 65 20 70    mand for these p
00C670:  75 72 70 6F 73 65 73 2E 90 20 54 68 65 90 20 73    urposes.. The. s
00C680:  65 63 74 69 6F 6E 20 62 72 61 63 6B 65 74 73 20    ection brackets 
00C690:  61 72 65 20 24 28 20 0D 8A 09 61 6E 64 20 24 29    are $( ...and $)
00C6A0:  2E 20 54 68 65 20 63 6F 6D 6D 61 6E 64 73 20 74    . The commands t
00C6B0:  6F 90 20 62 65 90 20 67 72 6F 75 70 65 64 90 20    o. be. grouped. 
00C6C0:  73 68 6F 75 6C 64 20 62 65 20 65 6E 63 6C 6F 73    should be enclos
00C6D0:  65 64 20 62 65 74 77 65 65 6E 20 0D 8A 09 74 68    ed between ...th
00C6E0:  65 73 65 20 73 79 6D 62 6F 6C 73 2E 0D 0A 0D 0A    ese symbols.....
00C6F0:  0D 0A E2 43 6F 6D 6D 61 6E 64 73 3A E2 0D 0A 0D    ...Commands:....
00C700:  0A 41 73 73 69 67 6E 6D 65 6E 74 0D 0A 09 0D 0A    .Assignment.....
00C710:  09 3A 3D 20 69 73 20 75 73 65 64 20 74 6F 20 61    .:= is used to a
00C720:  73 73 69 67 6E 90 20 61 90 20 76 61 6C 75 65 90    ssign. a. value.
00C730:  20 74 6F 90 20 61 90 20 76 61 72 69 61 62 6C 65     to. a. variable
00C740:  2E 20 54 68 65 72 65 20 61 72 65 20 74 68 72 65    . There are thre
00C750:  65 20 0D 8A 09 62 61 73 69 63 20 66 6F 72 6D 73    e ...basic forms
00C760:  20 6F 66 20 74 68 65 20 61 73 73 69 67 6E 6D 65     of the assignme
00C770:  6E 74 20 73 74 61 74 65 6D 65 6E 74 3A 0D 0A 09    nt statement:...
00C780:  0D 0A 09 76 61 72 69 61 62 6C 65 20 3A 3D 20 65    ...variable := e
00C790:  78 70 72 65 73 73 69 6F 6E 0D 0A 09 76 61 72 69    xpression...vari
00C7A0:  61 62 6C 65 21 73 75 62 73 63 72 69 70 74 20 3A    able!subscript :
00C7B0:  3D 20 65 78 70 72 65 73 73 69 6F 6E 0D 0A 09 21    = expression...!
00C7C0:  76 61 72 69 61 62 6C 65 20 3A 3D 20 65 78 70 72    variable := expr
00C7D0:  65 73 73 69 6F 6E 0D 0A 0D 0A 0D 0A 43 6F 6E 64    ession......Cond
00C7E0:  69 74 69 6F 6E 61 6C 20 63 6F 6D 6D 61 6E 64 73    itional commands
00C7F0:  0D 0A 0D 0A 09 49 46 20 3C 65 78 70 72 65 73 73    .....IF <express
00C800:  69 6F 6E 3E 20 54 48 45 4E 20 3C 63 6F 6D 6D 61    ion> THEN <comma
00C810:  6E 64 3E 0D 0A 09 55 4E 4C 45 53 53 20 3C 65 78    nd>...UNLESS <ex
00C820:  70 72 65 73 73 69 6F 6E 3E 20 44 4F 20 3C 63 6F    pression> DO <co
00C830:  6D 6D 61 6E 64 3E 0D 0A 09 54 45 53 54 20 3C 65    mmand>...TEST <e
00C840:  78 70 72 65 73 73 69 6F 6E 3E 20 54 48 45 4E 20    xpression> THEN 
00C850:  3C 63 6F 6D 6D 61 6E 64 3E 20 45 4C 53 45 20 3C    <command> ELSE <
00C860:  63 6F 6D 6D 61 6E 64 3E 0D 0A 0D 0A 09 4E 6F 74    command>.....Not
00C870:  65 20 74 68 61 74 20 49 46 20 64 6F 65 73 20 6E    e that IF does n
00C880:  6F 74 20 74 61 6B 65 90 20 61 6E 90 20 45 4C 53    ot take. an. ELS
00C890:  45 90 20 63 6C 61 75 73 65 2C 20 54 45 53 54 20    E. clause, TEST 
00C8A0:  6D 75 73 74 20 62 65 20 75 73 65 64 2E 20 0D 8A    must be used. ..
00C8B0:  09 54 68 65 20 45 4C 53 45 20 63 6C 61 75 73 65    .The ELSE clause
00C8C0:  20 6D 75 73 74 20 62 65 20 70 72 65 73 65 6E 74     must be present
00C8D0:  20 69 6E 20 61 20 54 45 53 54 20 63 6F 6D 6D 61     in a TEST comma
00C8E0:  6E 64 2E 0D 0A 0D 0A 0D 0A 52 45 50 45 41 54 20    nd.......REPEAT 
00C8F0:  61 6E 64 20 57 48 49 4C 45 0D 0A 0D 0A 09 3C 63    and WHILE.....<c
00C900:  6F 6D 6D 61 6E 64 3E 20 52 45 50 45 41 54 0D 0A    ommand> REPEAT..
00C910:  09 3C 63 6F 6D 6D 61 6E 64 3E 20 52 45 50 45 41    .<command> REPEA
00C920:  54 55 4E 54 49 4C 20 3C 65 78 70 72 65 73 73 69    TUNTIL <expressi
00C930:  6F 6E 3E 0D 0A 09 3C 63 6F 6D 6D 61 6E 64 3E 20    on>...<command> 
00C940:  52 45 50 45 41 54 57 48 49 4C 45 20 3C 65 78 70    REPEATWHILE <exp
00C950:  72 65 73 73 69 6F 6E 3E 0D 0A 09 57 48 49 4C 45    ression>...WHILE
00C960:  20 3C 65 78 70 72 65 73 73 69 6F 6E 3E 20 44 4F     <expression> DO
00C970:  20 3C 63 6F 6D 6D 61 6E 64 3E 0D 0A 09 55 4E 54     <command>...UNT
00C980:  49 4C 20 3C 65 78 70 72 65 73 73 69 6F 6E 3E 20    IL <expression> 
00C990:  44 4F 20 3C 63 6F 6D 6D 61 6E 64 3E 0D 0A 3E 70    DO <command>..>p
00C9A0:  61 0D 0A 46 4F 52 20 6C 6F 6F 70 0D 0A 0D 0A 09    a..FOR loop.....
00C9B0:  46 4F 52 20 69 20 3D 20 61 20 54 4F 20 62 20 44    FOR i = a TO b D
00C9C0:  4F 20 3C 63 6F 6D 6D 61 6E 64 3E 0D 0A 09 46 4F    O <command>...FO
00C9D0:  52 20 69 20 3D 20 61 20 54 4F 20 62 20 42 59 20    R i = a TO b BY 
00C9E0:  63 20 44 4F 20 3C 63 6F 6D 6D 61 6E 64 3E 0D 0A    c DO <command>..
00C9F0:  0D 0A 09 49 6E 20 74 68 65 20 66 69 72 73 74 20    ...In the first 
00CA00:  63 61 73 65 20 69 20 74 61 6B 65 73 90 20 76 61    case i takes. va
00CA10:  6C 75 65 73 20 73 74 61 72 74 69 6E 67 20 61 74    lues starting at
00CA20:  20 61 2C 20 69 6E 63 72 65 6D 65 6E 74 69 6E 67     a, incrementing
00CA30:  20 62 79 20 0D 8A 09 31 20 75 6E 74 69 6C 20 67     by ...1 until g
00CA40:  72 65 61 74 65 72 20 74 68 61 6E 20 62 2E 0D 0A    reater than b...
00CA50:  09 49 6E 20 74 68 65 20 73 65 63 6F 6E 64 20 63    .In the second c
00CA60:  61 73 65 20 69 20 69 73 20 69 6E 63 72 65 6D 65    ase i is increme
00CA70:  6E 74 65 64 90 20 62 79 90 20 63 2E 20 63 20 6D    nted. by. c. c m
00CA80:  75 73 74 20 62 65 20 61 20 63 6F 6E 73 74 61 6E    ust be a constan
00CA90:  74 20 0D 8A 09 65 78 70 72 65 73 73 69 6F 6E 2E    t ...expression.
00CAA0:  0D 0A 0D 0A 0D 0A 53 57 49 54 43 48 4F 4E 0D 0A    ......SWITCHON..
00CAB0:  0D 0A 09 53 57 49 54 43 48 4F 4E 20 3C 65 78 70    ...SWITCHON <exp
00CAC0:  72 65 73 73 69 6F 6E 3E 20 49 4E 54 4F 20 3C 63    ression> INTO <c
00CAD0:  6F 6D 70 6F 75 6E 64 20 63 6F 6D 6D 61 6E 64 3E    ompound command>
00CAE0:  0D 0A 0D 0A 09 54 68 65 20 63 6F 6D 70 6F 75 6E    .....The compoun
00CAF0:  64 20 63 6F 6D 6D 61 6E 64 20 63 6F 6E 73 69 73    d command consis
00CB00:  74 73 90 20 6F 66 90 20 61 90 20 73 65 71 75 65    ts. of. a. seque
00CB10:  6E 63 65 90 20 6F 66 20 63 6F 6D 6D 61 6E 64 73    nce. of commands
00CB20:  20 77 69 74 68 20 0D 8A 09 63 61 73 65 20 6C 61     with ...case la
00CB30:  62 65 6C 73 20 61 74 74 61 63 68 65 64 20 74 6F    bels attached to
00CB40:  20 63 6F 6D 6D 61 6E 64 73 2E 90 20 41 90 20 63     commands.. A. c
00CB50:  61 73 65 90 20 6C 61 62 65 6C 20 74 61 6B 65 73    ase. label takes
00CB60:  20 74 68 65 20 66 6F 72 6D 20 0D 8A 09 27 43 41     the form ...'CA
00CB70:  53 45 90 20 3C 63 6F 6E 73 74 61 6E 74 3E 3A 27    SE. <constant>:'
00CB80:  2C 90 20 61 6E 64 90 20 63 61 75 73 65 73 90 20    ,. and. causes. 
00CB90:  65 78 65 63 75 74 69 6F 6E 90 20 74 6F 90 20 73    execution. to. s
00CBA0:  74 61 72 74 90 20 61 74 90 20 74 68 65 20 0D 8A    tart. at. the ..
00CBB0:  09 66 6F 6C 6C 6F 77 69 6E 67 20 69 6E 73 74 72    .following instr
00CBC0:  75 63 74 69 6F 6E 20 69 66 20 3C 65 78 70 72 65    uction if <expre
00CBD0:  73 73 69 6F 6E 3E 90 20 68 61 73 20 74 68 65 20    ssion>. has the 
00CBE0:  76 61 6C 75 65 20 3C 63 6F 6E 73 74 61 6E 74 3E    value <constant>
00CBF0:  2E 20 0D 8A 09 45 78 65 63 75 74 69 6F 6E 20 77    . ...Execution w
00CC00:  69 6C 6C 20 63 6F 6E 74 69 6E 75 65 20 75 6E 74    ill continue unt
00CC10:  69 6C 20 61 6E 20 45 4E 44 43 41 53 45 90 20 63    il an ENDCASE. c
00CC20:  6F 6D 6D 61 6E 64 2C 20 6F 72 20 74 6F 20 74 68    ommand, or to th
00CC30:  65 20 65 6E 64 20 0D 8A 09 6F 66 20 74 68 65 20    e end ...of the 
00CC40:  53 57 49 54 43 48 4F 4E 20 63 6F 6D 70 6F 75 6E    SWITCHON compoun
00CC50:  64 20 63 6F 6D 6D 61 6E 64 2E 20 54 68 65 20 6C    d command. The l
00CC60:  61 62 65 6C 20 27 44 45 46 41 55 4C 54 3A 27 20    abel 'DEFAULT:' 
00CC70:  6D 61 72 6B 73 20 74 68 65 20 0D 8A 09 70 6C 61    marks the ...pla
00CC80:  63 65 20 77 68 65 72 65 20 65 78 65 63 75 74 69    ce where executi
00CC90:  6F 6E 90 20 69 73 90 20 74 6F 90 20 73 74 61 72    on. is. to. star
00CCA0:  74 90 20 69 66 90 20 3C 65 78 70 72 65 73 73 69    t. if. <expressi
00CCB0:  6F 6E 3E 90 20 64 6F 65 73 20 6E 6F 74 20 0D 8A    on>. does not ..
00CCC0:  09 65 76 61 6C 75 61 74 65 20 74 6F 20 61 6E 79    .evaluate to any
00CCD0:  20 6F 66 20 74 68 65 90 20 63 6F 6E 73 74 61 6E     of the. constan
00CCE0:  74 73 90 20 73 70 65 63 69 66 69 65 64 20 62 79    ts. specified by
00CCF0:  20 63 61 73 65 20 6C 61 62 65 6C 73 2E 20 46 6F     case labels. Fo
00CD00:  72 20 0D 8A 09 61 6E 20 65 78 61 6D 70 6C 65 20    r ...an example 
00CD10:  6F 66 20 74 68 65 20 75 73 65 90 20 6F 66 90 20    of the use. of. 
00CD20:  53 57 49 54 43 48 4F 4E 90 20 73 65 65 20 74 68    SWITCHON. see th
00CD30:  65 20 27 77 72 69 74 65 66 27 20 72 6F 75 74 69    e 'writef' routi
00CD40:  6E 65 20 69 6E 20 0D 8A 09 43 4C 49 42 48 44 52    ne in ...CLIBHDR
00CD50:  20 6F 72 20 41 4C 49 42 48 44 52 2E 0D 0A 0D 0A     or ALIBHDR.....
00CD60:  E2 42 6C 6F 63 6B 73 20 61 6E 64 20 73 63 6F 70    .Blocks and scop
00CD70:  65 20 6F 66 20 69 64 65 6E 74 69 66 69 65 72 73    e of identifiers
00CD80:  E2 0D 0A 0D 0A 09 41 20 42 43 50 4C 20 70 72 6F    ......A BCPL pro
00CD90:  67 72 61 6D 90 20 69 73 90 20 6D 61 64 65 90 20    gram. is. made. 
00CDA0:  75 70 90 20 6F 66 90 20 6F 6E 65 90 20 6F 72 90    up. of. one. or.
00CDB0:  20 6D 6F 72 65 90 20 62 6C 6F 63 6B 73 2E 20 41     more. blocks. A
00CDC0:  20 62 6C 6F 63 6B 20 0D 8A 09 63 6F 6E 73 69 73     block ...consis
00CDD0:  74 73 20 6F 66 20 61 20 73 65 71 75 65 6E 63 65    ts of a sequence
00CDE0:  20 6F 66 20 64 65 63 6C 61 72 61 74 69 6F 6E 73     of declarations
00CDF0:  20 28 73 65 65 20 62 65 6C 6F 77 29 20 66 6F 6C     (see below) fol
00CE00:  6C 6F 77 65 64 20 62 79 20 61 20 0D 8A 09 73 65    lowed by a ...se
00CE10:  71 75 65 6E 63 65 20 6F 66 20 63 6F 6D 6D 61 6E    quence of comman
00CE20:  64 73 2E 20 54 6F 20 62 65 20 70 72 65 63 69 73    ds. To be precis
00CE30:  65 90 20 61 90 20 42 43 50 4C 20 70 72 6F 67 72    e. a. BCPL progr
00CE40:  61 6D 20 69 73 20 61 20 73 69 6E 67 6C 65 20 0D    am is a single .
00CE50:  8A 09 62 6C 6F 63 6B 2C 20 61 6E 64 20 61 6E 79    ..block, and any
00CE60:  20 62 6C 6F 63 6B 20 6D 61 79 20 63 6F 6E 74 61     block may conta
00CE70:  69 6E 20 6E 65 73 74 65 64 20 73 75 62 2D 62 6C    in nested sub-bl
00CE80:  6F 63 6B 73 2E 0D 0A 0D 0A 09 54 68 65 20 73 63    ocks......The sc
00CE90:  6F 70 65 20 6F 66 20 61 6E 20 69 64 65 6E 74 69    ope of an identi
00CEA0:  66 69 65 72 20 28 76 61 72 69 61 62 6C 65 20 6F    fier (variable o
00CEB0:  72 20 70 72 6F 63 65 64 75 72 65 29 20 64 65 66    r procedure) def
00CEC0:  69 6E 65 73 20 74 68 6F 73 65 20 0D 8A 09 70 61    ines those ...pa
00CED0:  72 74 73 20 6F 66 20 61 90 20 70 72 6F 67 72 61    rts of a. progra
00CEE0:  6D 90 20 77 68 65 72 65 90 20 74 68 61 74 90 20    m. where. that. 
00CEF0:  69 64 65 6E 74 69 66 69 65 72 90 20 63 61 6E 90    identifier. can.
00CF00:  20 62 65 20 75 73 65 64 2E 20 45 61 63 68 20 0D     be used. Each .
00CF10:  8A 09 69 64 65 6E 74 69 66 69 65 72 20 6D 75 73    ..identifier mus
00CF20:  74 20 62 65 20 64 65 63 6C 61 72 65 64 90 20 77    t be declared. w
00CF30:  69 74 68 90 20 61 90 20 64 65 63 6C 61 72 61 74    ith. a. declarat
00CF40:  69 6F 6E 2E 90 20 54 68 65 20 73 63 6F 70 65 20    ion.. The scope 
00CF50:  6F 66 20 0D 8A 09 74 68 61 74 90 20 69 64 65 6E    of ...that. iden
00CF60:  74 69 66 69 65 72 90 20 69 73 90 20 74 68 61 74    tifier. is. that
00CF70:  90 90 20 73 61 6D 65 90 90 20 64 65 63 6C 61 72    .. same.. declar
00CF80:  61 74 69 6F 6E 90 20 28 74 68 75 73 90 20 61 6C    ation. (thus. al
00CF90:  6C 6F 77 69 6E 67 20 0D 8A 09 72 65 63 75 72 73    lowing ...recurs
00CFA0:  69 76 65 20 64 65 66 69 6E 69 74 69 6F 6E 73 29    ive definitions)
00CFB0:  2C 90 20 61 6E 64 90 20 61 6C 6C 90 20 73 75 62    ,. and. all. sub
00CFC0:  73 65 71 75 65 6E 74 90 20 64 65 63 6C 61 72 61    sequent. declara
00CFD0:  74 69 6F 6E 73 90 20 61 6E 64 20 0D 8A 09 63 6F    tions. and ...co
00CFE0:  6D 6D 61 6E 64 73 20 77 69 74 68 69 6E 20 74 68    mmands within th
00CFF0:  61 74 20 62 6C 6F 63 6B 2E 20 54 68 75 73 20 69    at block. Thus i
00D000:  66 20 61 20 72 6F 75 74 69 6E 65 20 69 73 20 63    f a routine is c
00D010:  61 6C 6C 65 64 20 77 68 69 63 68 20 69 73 20 0D    alled which is .
00D020:  8A 09 6F 75 74 73 69 64 65 20 74 68 65 20 62 6C    ..outside the bl
00D030:  6F 63 6B 90 20 28 61 6E 64 90 20 72 6F 75 74 69    ock. (and. routi
00D040:  6E 65 73 90 20 61 72 65 90 20 75 73 75 61 6C 6C    nes. are. usuall
00D050:  79 20 73 65 70 61 72 61 74 65 20 62 6C 6F 63 6B    y separate block
00D060:  73 29 20 0D 8A 09 74 68 65 6E 20 76 61 72 69 61    s) ...then varia
00D070:  62 6C 65 73 20 64 65 66 69 6E 65 64 90 20 77 69    bles defined. wi
00D080:  74 68 69 6E 90 20 74 68 65 90 20 6F 72 69 67 69    thin. the. origi
00D090:  6E 61 6C 90 20 62 6C 6F 63 6B 90 20 6D 61 79 20    nal. block. may 
00D0A0:  6E 6F 74 20 62 65 20 0D 8A 09 75 73 65 64 2E 0D    not be ...used..
00D0B0:  0A 0D 0A 09 54 68 65 72 65 20 69 73 20 61 6E 20    ....There is an 
00D0C0:  69 6D 70 6F 72 74 61 6E 74 90 20 72 65 73 74 72    important. restr
00D0D0:  69 63 74 69 6F 6E 2E 90 20 56 61 72 69 61 62 6C    iction.. Variabl
00D0E0:  65 73 90 20 64 65 66 69 6E 65 64 20 77 69 74 68    es. defined with
00D0F0:  69 6E 20 61 20 0D 8A 09 62 6C 6F 63 6B 20 6D 61    in a ...block ma
00D100:  79 20 6E 6F 74 20 62 65 90 20 75 73 65 64 90 20    y not be. used. 
00D110:  77 69 74 68 69 6E 90 20 61 90 20 70 72 6F 63 65    within. a. proce
00D120:  64 75 72 65 20 64 65 66 69 6E 65 64 20 77 69 74    dure defined wit
00D130:  68 69 6E 20 74 68 61 74 20 0D 8A 09 62 6C 6F 63    hin that ...bloc
00D140:  6B 20 28 65 76 65 6E 20 74 68 6F 75 67 68 20 74    k (even though t
00D150:  68 65 79 20 61 72 65 20 69 6E 20 73 63 6F 70 65    hey are in scope
00D160:  29 2E 90 20 41 6E 20 61 74 74 65 6D 70 74 20 74    ).. An attempt t
00D170:  6F 20 64 6F 20 73 6F 20 77 69 6C 6C 20 0D 8A 09    o do so will ...
00D180:  70 72 6F 64 75 63 65 20 74 68 65 20 65 72 72 6F    produce the erro
00D190:  72 20 6D 65 73 73 61 67 65 20 27 64 79 6E 61 6D    r message 'dynam
00D1A0:  69 63 20 66 72 65 65 20 76 61 72 69 61 62 6C 65    ic free variable
00D1B0:  20 75 73 65 64 27 2E 0D 0A 3E 70 61 0D 0A 1A 00     used'...>pa....
00D1C0:  3E 81 00 3A 04 70 72 6F 64 75 63 65 20 74 68 65    >..:.produce the
00D1D0:  20 65 72 72 6F 72 20 6D 65 73 73 61 67 65 20 27     error message '
00D1E0:  64 79 6E 61 6D 69 63 20 66 72 65 65 20 76 61 72    dynamic free var
00D1F0:  69 61 62 6C 65 20 75 73 65 64 27 2E 0D 0A 3E 70    iable used'...>p
00D200:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
00D210:  0B 00 00 00 02 09 50 E5 0B 00 C1 02 00 00 00 02    ......P.........
00D220:  0B 00 C2 02 00 00 00 02 0B 00 C3 02 00 00 00 02    ................
00D230:  0B 00 C4 02 00 00 00 02 0B 00 C5 02 00 00 00 02    ................
00D240:  0B 00 C6 02 00 00 00 02 0B 00 C7 02 00 00 00 02    ................
00D250:  0B 00 C8 02 00 00 00 02 0B 00 C9 02 00 00 00 02    ................
00D260:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D270:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D280:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D290:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D3A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D3B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D3C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D3D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D3E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D3F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D4A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D4B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D4C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D4D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D4E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D4F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D500:  00 42 43 50 4C 4D 32 20 20 20 20 20 00 00 00 00    .BCPLM2     ....
00D510:  00 00 0A 00 00 C6 06 00 2F 83 00 00 00 00 00 00    ......../.......
00D520:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D530:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D540:  2F 83 00 7A 04 68 69 73 20 77 69 6C 6C 20 73 75    /..z.his will su
00D550:  62 73 74 69 74 75 74 65 20 61 20 64 75 6D 6D 79    bstitute a dummy
00D560:  20 0D 8A 72 6F 75 74 69 6E 65 2E 0D 0A 0D 0A 3E     ..routine.....>
00D570:  70 61 0D 0A 1A 00 00 00 00 00 00 00 00 00 00 00    pa..............
00D580:  3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D    >---!-----!-----
00D590:  21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D    !-------!-------
00D5A0:  21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D    !-------!-------
00D5B0:  21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D    !-------!-------
00D5C0:  21 2D 2D 2D 2D 52 0D 0A 3E 70 6E 20 32 32 0D 0A    !----R..>pn 22..
00D5D0:  3E 74 6D 20 33 0D 0A 3E 62 6D 20 31 31 0D 0A 3E    >tm 3..>bm 11..>
00D5E0:  68 6D 20 30 0D 0A 3E 66 6D 20 32 0D 0A 3E 66 6F    hm 0..>fm 2..>fo
00D5F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00D600:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00D610:  20 20 25 0D 0A 3E 2D 2D 2D 2D 2D 4C 2D 2D 2D 21      %..>-----L---!
00D620:  2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21    -------!-------!
00D630:  2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21    -------!-------!
00D640:  2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21    -------!-------!
00D650:  2D 2D 2D 2D 2D 2D 2D 21 2D 2D 52 0D 0A E2 44 65    -------!--R...De
00D660:  63 6C 61 72 61 74 69 6F 6E 73 E2 0D 0A 0D 0A 54    clarations.....T
00D670:  68 65 20 4C 45 54 20 64 65 63 6C 61 72 61 74 69    he LET declarati
00D680:  6F 6E 0D 0A 0D 0A 09 41 6C 6C 20 76 61 72 69 61    on.....All varia
00D690:  62 6C 65 73 20 61 6E 64 20 72 6F 75 74 69 6E 65    bles and routine
00D6A0:  73 20 6D 75 73 74 90 20 62 65 90 20 64 65 63 6C    s must. be. decl
00D6B0:  61 72 65 64 20 62 65 66 6F 72 65 20 74 68 65 79    ared before they
00D6C0:  20 63 61 6E 20 62 65 20 0D 8A 09 75 73 65 64 2E     can be ...used.
00D6D0:  20 54 68 65 72 65 20 61 72 65 20 73 65 76 65 72     There are sever
00D6E0:  61 6C 20 66 6F 72 6D 73 20 6F 66 20 64 65 63 6C    al forms of decl
00D6F0:  61 72 61 74 69 6F 6E 3A 0D 0A 0D 0A 09 4C 45 54    aration:.....LET
00D700:  20 76 61 72 69 61 62 6C 65 20 3D 20 3C 65 78 70     variable = <exp
00D710:  72 65 73 73 69 6F 6E 3E 0D 0A 0D 0A 09 54 68 69    ression>.....Thi
00D720:  73 20 64 65 66 69 6E 65 73 20 61 20 76 61 72 69    s defines a vari
00D730:  61 62 6C 65 20 61 6E 64 90 20 67 69 76 65 73 90    able and. gives.
00D740:  20 69 74 90 20 61 6E 90 20 69 6E 69 74 69 61 6C     it. an. initial
00D750:  20 76 61 6C 75 65 2E 20 49 66 20 6E 6F 20 0D 8A     value. If no ..
00D760:  09 69 6E 69 74 69 61 6C 20 76 61 6C 75 65 20 69    .initial value i
00D770:  73 90 20 72 65 6C 65 76 61 6E 74 90 20 27 3F 27    s. relevant. '?'
00D780:  90 20 6D 61 79 90 20 62 65 90 20 75 73 65 64 90    . may. be. used.
00D790:  20 69 6E 90 20 70 6C 61 63 65 20 6F 66 20 74 68     in. place of th
00D7A0:  65 20 0D 8A 09 65 78 70 72 65 73 73 69 6F 6E 2E    e ...expression.
00D7B0:  0D 0A 0D 0A 09 4C 45 54 20 61 72 72 61 79 20 3D    .....LET array =
00D7C0:  20 56 45 43 20 3C 63 6F 6E 73 74 61 6E 74 3E 0D     VEC <constant>.
00D7D0:  0A 0D 0A 09 54 68 69 73 20 63 72 65 61 74 65 73    ....This creates
00D7E0:  20 61 20 76 65 63 74 6F 72 20 77 69 74 68 90 20     a vector with. 
00D7F0:  74 68 65 90 20 76 61 72 69 61 62 6C 65 20 27 61    the. variable 'a
00D800:  72 72 61 79 27 20 63 6F 6E 74 61 69 6E 69 6E 67    rray' containing
00D810:  20 74 68 65 20 0D 8A 09 61 64 64 72 65 73 73 20     the ...address 
00D820:  6F 66 20 74 68 65 20 76 65 63 74 6F 72 2E 0D 0A    of the vector...
00D830:  0D 0A 0D 0A 50 72 6F 63 65 64 75 72 65 73 0D 0A    ....Procedures..
00D840:  0D 0A 09 4C 45 54 20 70 72 6F 63 28 70 31 2C 20    ...LET proc(p1, 
00D850:  70 32 2C 20 2E 2E 2E 29 20 3D 20 3C 65 78 70 72    p2, ...) = <expr
00D860:  65 73 73 69 6F 6E 3E 0D 0A 09 4C 45 54 20 70 72    ession>...LET pr
00D870:  6F 63 28 70 31 2C 20 70 32 2C 20 2E 2E 2E 29 20    oc(p1, p2, ...) 
00D880:  42 45 20 3C 63 6F 6D 6D 61 6E 64 3E 0D 0A 0D 0A    BE <command>....
00D890:  09 54 68 65 73 65 20 64 65 66 69 6E 65 20 61 20    .These define a 
00D8A0:  70 72 6F 63 65 64 75 72 65 20 77 69 74 68 90 20    procedure with. 
00D8B0:  70 61 72 61 6D 65 74 65 72 73 90 20 70 31 2C 20    parameters. p1, 
00D8C0:  70 32 2C 2E 2E 2E 2E 20 54 68 65 20 66 69 72 73    p2,.... The firs
00D8D0:  74 20 0D 8A 09 66 6F 72 6D 20 70 72 6F 76 69 64    t ...form provid
00D8E0:  65 73 20 61 20 66 75 6E 63 74 69 6F 6E 2C 20 61    es a function, a
00D8F0:  73 20 61 20 76 61 6C 75 65 20 69 73 20 72 65 74    s a value is ret
00D900:  75 72 6E 65 64 2E 20 54 68 65 20 65 78 70 72 65    urned. The expre
00D910:  73 73 69 6F 6E 20 0D 8A 09 69 73 20 6F 66 74 65    ssion ...is ofte
00D920:  6E 20 61 20 56 41 4C 4F 46 20 63 6C 61 75 73 65    n a VALOF clause
00D930:  2E 20 54 68 69 73 20 74 61 6B 65 73 20 74 68 65    . This takes the
00D940:  20 66 6F 6C 6C 6F 77 69 6E 67 20 66 6F 72 6D 3A     following form:
00D950:  0D 0A 0D 0A 09 56 41 4C 4F 46 20 3C 63 6F 6D 6D    .....VALOF <comm
00D960:  61 6E 64 3E 0D 0A 0D 0A 09 54 68 65 20 63 6F 6D    and>.....The com
00D970:  6D 61 6E 64 20 69 73 20 75 73 75 61 6C 6C 79 20    mand is usually 
00D980:  61 20 63 6F 6D 70 6F 75 6E 64 90 20 63 6F 6D 6D    a compound. comm
00D990:  61 6E 64 20 77 68 69 63 68 20 63 6F 6E 74 61 69    and which contai
00D9A0:  6E 73 20 6F 6E 65 20 6F 72 20 0D 8A 09 6D 6F 72    ns one or ...mor
00D9B0:  65 20 52 45 53 55 4C 54 49 53 20 63 6F 6D 6D 61    e RESULTIS comma
00D9C0:  6E 64 73 3A 0D 0A 0D 0A 09 52 45 53 55 4C 54 49    nds:.....RESULTI
00D9D0:  53 20 3C 65 78 70 72 65 73 73 69 6F 6E 3E 0D 0A    S <expression>..
00D9E0:  0D 0A 09 57 68 65 6E 20 61 90 20 52 45 53 55 4C    ...When a. RESUL
00D9F0:  54 49 53 90 20 63 6F 6D 6D 61 6E 64 90 20 69 73    TIS. command. is
00DA00:  90 20 65 78 65 63 75 74 65 64 90 20 74 68 65 90    . executed. the.
00DA10:  20 56 41 4C 4F 46 90 20 63 6F 6D 6D 61 6E 64 20     VALOF. command 
00DA20:  68 61 73 20 0D 8A 09 66 69 6E 69 73 68 65 64 20    has ...finished 
00DA30:  61 6E 64 20 74 68 65 20 76 61 6C 75 65 20 6F 66    and the value of
00DA40:  20 74 68 65 20 65 78 70 72 65 73 73 69 6F 6E 20     the expression 
00DA50:  69 73 20 72 65 74 75 72 6E 65 64 2E 0D 0A 0D 0A    is returned.....
00DA60:  09 54 68 65 20 73 65 63 6F 6E 64 20 66 6F 72 6D    .The second form
00DA70:  20 6F 66 20 74 68 65 90 20 70 72 6F 63 65 64 75     of the. procedu
00DA80:  72 65 20 64 65 63 6C 61 72 61 74 69 6F 6E 20 64    re declaration d
00DA90:  65 66 69 6E 65 73 20 61 20 72 6F 75 74 69 6E 65    efines a routine
00DAA0:  2E 20 0D 8A 09 4E 6F 20 76 61 6C 75 65 20 69 73    . ...No value is
00DAB0:  20 72 65 74 75 72 6E 65 64 2E 0D 0A 0D 0A 09 45     returned......E
00DAC0:  69 74 68 65 72 20 66 6F 72 6D 20 6F 66 20 70 72    ither form of pr
00DAD0:  6F 63 65 64 75 72 65 20 69 73 20 69 6E 76 6F 6B    ocedure is invok
00DAE0:  65 64 20 62 79 20 61 20 63 6F 6D 6D 61 6E 64 3A    ed by a command:
00DAF0:  0D 0A 0D 0A 09 70 72 6F 63 28 61 2C 62 2C 2E 2E    .....proc(a,b,..
00DB00:  2E 29 0D 0A 0D 0A 09 41 20 66 75 6E 63 74 69 6F    .).....A functio
00DB10:  6E 20 63 61 6C 6C 20 63 61 6E 20 61 70 70 65 61    n call can appea
00DB20:  72 20 69 6E 20 61 6E 20 65 78 70 72 65 73 73 69    r in an expressi
00DB30:  6F 6E 2E 0D 0A 0D 0A 3E 70 61 0D 0A 4F 74 68 65    on.....>pa..Othe
00DB40:  72 20 64 65 63 6C 61 72 61 74 69 6F 6E 73 0D 0A    r declarations..
00DB50:  09 0D 0A 09 47 4C 4F 42 41 4C 20 24 28 20 76 61    ....GLOBAL $( va
00DB60:  72 31 20 3A 20 63 31 20 3B 20 76 61 72 32 20 3A    r1 : c1 ; var2 :
00DB70:  20 63 32 20 3B 20 2E 2E 2E 20 24 29 0D 0A 09 53     c2 ; ... $)...S
00DB80:  54 41 54 49 43 20 24 28 20 76 61 72 31 3D 76 61    TATIC $( var1=va
00DB90:  6C 31 20 3B 20 76 61 72 32 3D 76 61 6C 32 20 3B    l1 ; var2=val2 ;
00DBA0:  20 2E 2E 2E 20 24 29 0D 0A 09 0D 0A 09 44 79 6E     ... $)......Dyn
00DBB0:  61 6D 69 63 90 20 76 61 72 69 61 62 6C 65 73 90    amic. variables.
00DBC0:  20 28 74 68 6F 73 65 90 20 64 65 66 69 6E 65 64     (those. defined
00DBD0:  90 20 77 69 74 68 90 90 20 4C 45 54 29 90 20 6F    . with.. LET). o
00DBE0:  6E 6C 79 90 20 68 61 76 65 90 20 61 6E 20 0D 8A    nly. have. an ..
00DBF0:  09 61 6C 6C 6F 63 61 74 65 64 20 61 72 65 61 20    .allocated area 
00DC00:  6F 66 20 6D 65 6D 6F 72 79 20 77 68 65 6E 90 20    of memory when. 
00DC10:  74 68 65 79 90 20 61 72 65 20 77 69 74 68 69 6E    they. are within
00DC20:  20 73 63 6F 70 65 2E 20 56 61 72 69 61 62 6C 65     scope. Variable
00DC30:  73 20 0D 8A 09 64 65 66 69 6E 65 64 20 77 69 74    s ...defined wit
00DC40:  68 20 47 4C 4F 42 41 4C 20 6F 72 20 53 54 41 54    h GLOBAL or STAT
00DC50:  49 43 90 20 68 61 76 65 20 61 20 70 65 72 6D 61    IC. have a perma
00DC60:  6E 65 6E 74 6C 79 20 61 6C 6C 6F 63 61 74 65 64    nently allocated
00DC70:  20 77 6F 72 64 20 0D 8A 09 6F 66 20 6D 65 6D 6F     word ...of memo
00DC80:  72 79 2E 20 54 68 65 20 53 54 41 54 49 43 20 64    ry. The STATIC d
00DC90:  65 63 6C 61 72 61 74 69 6F 6E 20 61 6C 6C 6F 77    eclaration allow
00DCA0:  73 90 20 61 6E 20 69 6E 69 74 69 61 6C 20 76 61    s. an initial va
00DCB0:  6C 75 65 20 74 6F 20 62 65 20 0D 8A 09 73 65 74    lue to be ...set
00DCC0:  2E 20 54 68 65 20 47 4C 4F 42 41 4C 20 64 65 63    . The GLOBAL dec
00DCD0:  6C 61 72 61 74 69 6F 6E 20 69 73 90 20 72 65 64    laration is. red
00DCE0:  75 6E 64 61 6E 74 20 69 6E 20 74 68 69 73 20 69    undant in this i
00DCF0:  6D 70 6C 65 6D 65 6E 74 61 74 69 6F 6E 20 0D 8A    mplementation ..
00DD00:  09 61 73 20 69 74 20 69 73 20 75 73 65 64 90 20    .as it is used. 
00DD10:  77 68 65 6E 90 20 73 65 70 61 72 61 74 65 90 20    when. separate. 
00DD20:  63 6F 6D 70 69 6C 61 74 69 6F 6E 90 20 69 73 90    compilation. is.
00DD30:  20 61 76 61 69 6C 61 62 6C 65 2E 20 49 74 20 69     available. It i
00DD40:  73 20 0D 8A 09 69 6E 63 6C 75 64 65 64 20 66 6F    s ...included fo
00DD50:  72 20 63 6F 6D 70 61 74 69 62 69 6C 69 74 79 20    r compatibility 
00DD60:  77 69 74 68 20 6F 74 68 65 72 20 42 43 50 4C 20    with other BCPL 
00DD70:  63 6F 6D 70 69 6C 65 72 73 2E 0D 0A 0D 0A 09 41    compilers......A
00DD80:  20 67 6C 6F 62 61 6C 20 76 65 63 74 6F 72 20 63     global vector c
00DD90:  61 6E 20 62 65 20 64 65 66 69 6E 65 64 20 61 73    an be defined as
00DDA0:  20 66 6F 6C 6C 6F 77 73 2E 20 44 65 63 6C 61 72     follows. Declar
00DDB0:  65 20 74 68 65 20 6E 61 6D 65 20 6F 66 20 74 68    e the name of th
00DDC0:  65 20 0D 8A 09 76 65 63 74 6F 72 20 61 73 20 61    e ...vector as a
00DDD0:  20 73 74 61 74 69 63 90 20 76 61 72 69 61 62 6C     static. variabl
00DDE0:  65 2C 90 20 74 68 65 6E 90 20 64 65 63 6C 61 72    e,. then. declar
00DDF0:  65 90 20 61 90 20 64 75 6D 6D 79 20 76 65 63 74    e. a. dummy vect
00DE00:  6F 72 20 69 6E 20 0D 8A 09 27 73 74 61 72 74 27    or in ...'start'
00DE10:  20 61 6E 64 20 61 73 73 69 67 6E 20 74 68 69 73     and assign this
00DE20:  90 20 74 6F 90 20 74 68 65 90 20 73 74 61 74 69    . to. the. stati
00DE30:  63 90 20 76 61 72 69 61 62 6C 65 2E 20 54 68 69    c. variable. Thi
00DE40:  73 20 65 6E 73 75 72 65 73 20 0D 8A 09 74 68 61    s ensures ...tha
00DE50:  74 20 74 68 65 20 76 65 63 74 6F 72 20 69 73 20    t the vector is 
00DE60:  69 6E 20 73 63 6F 70 65 20 74 68 72 6F 75 67 68    in scope through
00DE70:  6F 75 74 20 74 68 65 20 70 72 6F 67 72 61 6D 2E    out the program.
00DE80:  0D 0A 0D 0A 09 45 78 61 6D 70 6C 65 3A 0D 0A 09    .....Example:...
00DE90:  09 09 53 54 41 54 49 43 20 24 28 20 65 72 72 6C    ..STATIC $( errl
00DEA0:  65 76 3D 30 20 24 29 0D 0A 09 09 09 4C 45 54 20    ev=0 $).....LET 
00DEB0:  73 74 61 72 74 28 29 20 42 45 0D 0A 09 09 09 24    start() BE.....$
00DEC0:  28 0D 0A 09 09 09 20 20 4C 45 54 20 65 72 72 76    (.....  LET errv
00DED0:  65 63 3D 56 45 43 20 33 0D 0A 09 09 09 20 20 65    ec=VEC 3.....  e
00DEE0:  72 72 6C 65 76 20 3A 3D 20 65 72 72 76 65 63 0D    rrlev := errvec.
00DEF0:  0A 09 09 09 20 20 2E 2E 2E 0D 0A 0D 0A 09 4D 41    ....  ........MA
00DF00:  4E 49 46 45 53 54 20 24 28 20 6E 61 6D 65 31 3D    NIFEST $( name1=
00DF10:  76 61 6C 31 20 3B 20 6E 61 6D 65 32 3D 76 61 6C    val1 ; name2=val
00DF20:  32 20 3B 20 2E 2E 2E 20 24 29 0D 0A 0D 0A 09 54    2 ; ... $).....T
00DF30:  68 65 20 4D 41 4E 49 46 45 53 54 20 64 65 63 6C    he MANIFEST decl
00DF40:  61 72 61 74 69 6F 6E 20 61 74 74 61 63 68 65 73    aration attaches
00DF50:  20 61 90 20 6E 61 6D 65 90 20 74 6F 90 20 61 20     a. name. to. a 
00DF60:  63 6F 6E 73 74 61 6E 74 2E 20 49 74 20 69 73 20    constant. It is 
00DF70:  0D 8A 09 6E 6F 74 20 61 20 76 61 72 69 61 62 6C    ...not a variabl
00DF80:  65 90 20 61 6E 64 90 20 73 68 6F 75 6C 64 90 20    e. and. should. 
00DF90:  62 65 90 20 75 73 65 64 90 20 6C 69 62 65 72 61    be. used. libera
00DFA0:  6C 6C 79 90 20 77 69 74 68 69 6E 90 20 61 20 42    lly. within. a B
00DFB0:  43 50 4C 20 0D 8A 09 70 72 6F 67 72 61 6D 20 74    CPL ...program t
00DFC0:  6F 20 61 69 64 20 72 65 61 64 61 62 69 6C 69 74    o aid readabilit
00DFD0:  79 2C 20 61 6E 64 90 20 74 6F 90 20 65 6E 61 62    y, and. to. enab
00DFE0:  6C 65 90 20 63 6F 6E 73 74 61 6E 74 73 20 75 73    le. constants us
00DFF0:  65 64 20 62 79 20 61 20 0D 8A 09 70 72 6F 67 72    ed by a ...progr
00E000:  61 6D 20 74 6F 20 62 65 20 65 61 73 69 6C 79 20    am to be easily 
00E010:  63 68 61 6E 67 65 64 20 69 66 20 6E 65 63 65 73    changed if neces
00E020:  73 61 72 79 2E 0D 0A 0D 0A 0D 0A 53 69 6D 75 6C    sary.......Simul
00E030:  74 61 6E 65 6F 75 73 20 64 65 63 6C 61 72 61 74    taneous declarat
00E040:  69 6F 6E 73 0D 0A 0D 0A 09 41 90 20 4C 45 54 90    ions.....A. LET.
00E050:  20 64 65 63 6C 61 72 61 74 69 6F 6E 90 20 6D 61     declaration. ma
00E060:  79 90 20 62 65 90 20 66 6F 6C 6C 6F 77 65 64 90    y. be. followed.
00E070:  20 62 79 90 20 61 6E 79 90 20 6E 75 6D 62 65 72     by. any. number
00E080:  90 20 6F 66 90 20 41 4E 44 20 0D 8A 09 64 65 63    . of. AND ...dec
00E090:  6C 61 72 61 74 69 6F 6E 73 2E 20 41 6C 6C 20 74    larations. All t
00E0A0:  68 65 73 65 20 64 65 63 6C 61 72 61 74 69 6F 6E    hese declaration
00E0B0:  73 20 61 72 65 90 20 63 6F 6E 73 69 64 65 72 65    s are. considere
00E0C0:  64 20 61 73 20 61 20 73 69 6E 67 6C 65 20 0D 8A    d as a single ..
00E0D0:  09 64 65 63 6C 61 72 61 74 69 6F 6E 20 66 6F 72    .declaration for
00E0E0:  90 20 74 68 65 90 20 70 75 72 70 6F 73 65 73 90    . the. purposes.
00E0F0:  20 6F 66 90 20 73 63 6F 70 65 90 20 6F 66 90 20     of. scope. of. 
00E100:  69 64 65 6E 74 69 66 69 65 72 73 2E 20 54 68 69    identifiers. Thi
00E110:  73 20 0D 8A 09 61 6C 6C 6F 77 73 20 6D 75 74 75    s ...allows mutu
00E120:  61 6C 6C 79 20 72 65 63 75 72 73 69 76 65 20 70    ally recursive p
00E130:  72 6F 63 65 64 75 72 65 73 3A 0D 0A 0D 0A 09 4C    rocedures:.....L
00E140:  45 54 20 70 72 6F 63 31 28 2E 2E 2E 29 20 42 45    ET proc1(...) BE
00E150:  20 0D 0A 09 24 28 0D 0A 09 2E 2E 2E 20 70 72 6F     ...$(...... pro
00E160:  63 32 28 2E 2E 2E 29 20 2E 2E 2E 0D 0A 09 24 29    c2(...) ......$)
00E170:  0D 0A 0D 0A 09 41 4E 44 20 70 72 6F 63 32 28 2E    .....AND proc2(.
00E180:  2E 2E 29 20 42 45 0D 0A 09 24 28 20 0D 0A 09 2E    ..) BE...$( ....
00E190:  2E 2E 20 70 72 6F 63 31 28 2E 2E 2E 29 20 2E 2E    .. proc1(...) ..
00E1A0:  2E 0D 0A 09 24 29 0D 0A 3E 70 61 0D 0A E2 53 74    ....$)..>pa...St
00E1B0:  72 69 6E 67 73 E2 0D 0A 0D 0A 09 53 74 72 69 6E    rings......Strin
00E1C0:  67 73 20 61 72 65 20 73 74 6F 72 65 64 20 61 73    gs are stored as
00E1D0:  20 66 6F 6C 6C 6F 77 73 3A 0D 0A 0D 0A 09 4F 6E     follows:.....On
00E1E0:  65 20 62 79 74 65 20 62 65 69 6E 67 20 74 68 65    e byte being the
00E1F0:  20 6C 65 6E 67 74 68 20 6F 66 20 74 68 65 20 73     length of the s
00E200:  74 72 69 6E 67 0D 0A 09 54 68 65 20 73 74 72 69    tring...The stri
00E210:  6E 67 2C 20 6F 6E 65 20 63 68 61 72 61 63 74 65    ng, one characte
00E220:  72 20 70 65 72 20 62 79 74 65 0D 0A 0D 0A 09 53    r per byte.....S
00E230:  69 6E 63 65 20 42 43 50 4C 20 77 6F 72 6B 73 20    ince BCPL works 
00E240:  77 69 74 68 20 31 36 20 62 69 74 20 77 6F 72 64    with 16 bit word
00E250:  73 90 20 61 20 73 70 65 63 69 61 6C 20 6D 65 61    s. a special mea
00E260:  6E 73 20 69 73 20 6E 65 65 64 65 64 20 74 6F 20    ns is needed to 
00E270:  0D 8A 09 61 63 63 65 73 73 20 74 68 65 90 20 69    ...access the. i
00E280:  6E 64 69 76 69 64 75 61 6C 90 20 63 68 61 72 61    ndividual. chara
00E290:  63 74 65 72 73 90 20 6F 66 90 20 61 90 20 73 74    cters. of. a. st
00E2A0:  72 69 6E 67 2E 90 20 54 68 69 73 90 20 69 73 20    ring.. This. is 
00E2B0:  74 68 65 20 0D 8A 09 69 6E 66 69 78 65 64 20 62    the ...infixed b
00E2C0:  79 74 65 20 6F 70 65 72 61 74 6F 72 20 27 25 27    yte operator '%'
00E2D0:  2E 90 20 54 6F 90 20 61 63 63 65 73 73 90 20 74    .. To. access. t
00E2E0:  68 65 90 20 6E 74 68 90 20 63 68 61 72 61 63 74    he. nth. charact
00E2F0:  65 72 20 6F 66 20 61 20 0D 8A 09 73 74 72 69 6E    er of a ...strin
00E300:  67 20 75 73 65 20 3A 20 20 20 73 74 72 69 6E 67    g use :   string
00E310:  25 6E 0D 0A 09 54 6F 20 61 63 63 65 73 73 20 74    %n...To access t
00E320:  68 65 20 6C 65 6E 67 74 68 20 6F 66 20 61 20 73    he length of a s
00E330:  74 72 69 6E 67 20 75 73 65 20 3A 20 73 74 72 69    tring use : stri
00E340:  6E 67 25 30 0D 0A 09 54 68 65 73 65 20 63 61 6E    ng%0...These can
00E350:  90 20 62 65 90 20 72 65 61 64 90 20 61 6E 64 90    . be. read. and.
00E360:  20 77 72 69 74 74 65 6E 90 20 74 6F 2C 90 20 61     written. to,. a
00E370:  6C 6C 6F 77 69 6E 67 90 20 73 74 72 69 6E 67 73    llowing. strings
00E380:  90 20 74 6F 20 62 65 20 0D 8A 09 6D 61 6E 69 70    . to be ...manip
00E390:  75 6C 61 74 65 64 20 69 6E 20 61 6E 79 20 64 65    ulated in any de
00E3A0:  73 69 72 65 64 20 6D 61 6E 6E 65 72 2E 0D 0A 0D    sired manner....
00E3B0:  0A 0D 0A E2 54 72 61 6E 73 66 65 72 20 6F 66 20    ....Transfer of 
00E3C0:  63 6F 6E 74 72 6F 6C E2 0D 0A 0D 0A 09 46 49 4E    control......FIN
00E3D0:  49 53 48 0D 0A 0D 0A 09 54 68 69 73 20 63 61 75    ISH.....This cau
00E3E0:  73 65 73 20 65 78 65 63 75 74 69 6F 6E 20 6F 66    ses execution of
00E3F0:  20 74 68 65 20 70 72 6F 67 72 61 6D 20 74 6F 20     the program to 
00E400:  73 74 6F 70 2E 0D 0A 0D 0A 09 52 45 54 55 52 4E    stop......RETURN
00E410:  0D 0A 0D 0A 09 43 6F 6E 74 72 6F 6C 20 72 65 74    .....Control ret
00E420:  75 72 6E 73 20 74 6F 20 74 68 65 20 63 61 6C 6C    urns to the call
00E430:  69 6E 67 20 72 6F 75 74 69 6E 65 2E 0D 0A 0D 0A    ing routine.....
00E440:  09 42 52 45 41 4B 0D 0A 0D 0A 09 55 73 65 64 90    .BREAK.....Used.
00E450:  20 77 69 74 68 69 6E 90 20 61 90 20 72 65 70 65     within. a. repe
00E460:  74 69 74 69 76 65 90 90 20 63 6F 6D 6D 61 6E 64    titive.. command
00E470:  90 90 20 28 55 4E 54 49 4C 2C 90 20 57 48 49 4C    .. (UNTIL,. WHIL
00E480:  45 2C 90 20 52 45 50 45 41 54 2C 20 0D 8A 09 52    E,. REPEAT, ...R
00E490:  45 50 45 41 54 55 4E 54 49 4C 2C 20 52 45 50 45    EPEATUNTIL, REPE
00E4A0:  41 54 57 48 49 4C 45 2C 20 6F 72 20 46 4F 52 29    ATWHILE, or FOR)
00E4B0:  20 69 74 90 20 63 61 75 73 65 73 20 65 78 65 63     it. causes exec
00E4C0:  75 74 69 6F 6E 20 74 6F 20 72 65 73 75 6D 65 20    ution to resume 
00E4D0:  0D 8A 09 61 74 20 74 68 65 20 66 69 72 73 74 20    ...at the first 
00E4E0:  63 6F 6D 6D 61 6E 64 20 61 66 74 65 72 20 74 68    command after th
00E4F0:  65 20 72 65 70 65 74 69 74 69 76 65 20 63 6F 6D    e repetitive com
00E500:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
00E510:  0C 00 00 00 02 09 50 E5 0C 00 C1 02 00 00 00 02    ......P.........
00E520:  0C 00 C2 02 00 00 00 02 0C 00 C3 02 00 00 00 02    ................
00E530:  0C 00 C4 02 00 00 00 02 0C 00 C5 02 00 00 00 02    ................
00E540:  0C 00 C6 02 00 00 00 02 0C 00 C7 02 00 00 00 02    ................
00E550:  0C 00 C8 02 00 00 00 02 0C 00 C9 02 00 00 00 02    ................
00E560:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E570:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E580:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E590:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E600:  6D 61 6E 64 2E 0D 0A 0D 0A 09 4C 4F 4F 50 0D 0A    mand......LOOP..
00E610:  0D 0A 09 43 6F 6E 74 72 6F 6C 90 20 70 61 73 73    ...Control. pass
00E620:  65 73 90 20 74 6F 90 20 74 68 65 90 20 70 6F 69    es. to. the. poi
00E630:  6E 74 90 20 77 68 65 72 65 90 20 74 68 65 90 20    nt. where. the. 
00E640:  72 65 70 65 74 69 74 69 76 65 90 20 63 6F 6D 6D    repetitive. comm
00E650:  61 6E 64 20 0D 8A 09 63 6F 6E 64 69 74 69 6F 6E    and ...condition
00E660:  20 69 73 20 74 65 73 74 65 64 2E 20 46 6F 72 90     is tested. For.
00E670:  20 61 90 20 46 4F 52 90 20 63 6F 6D 6D 61 6E 64     a. FOR. command
00E680:  90 20 63 6F 6E 74 72 6F 6C 20 70 61 73 73 65 73    . control passes
00E690:  20 74 6F 20 74 68 65 20 0D 8A 09 70 6F 69 6E 74     to the ...point
00E6A0:  20 77 68 65 72 65 20 74 68 65 20 63 6F 6E 74 72     where the contr
00E6B0:  6F 6C 20 76 61 72 69 61 62 6C 65 20 69 73 20 69    ol variable is i
00E6C0:  6E 63 72 65 6D 65 6E 74 65 64 2E 0D 0A 0D 0A 09    ncremented......
00E6D0:  45 4E 44 43 41 53 45 0D 0A 0D 0A 09 43 6F 6E 74    ENDCASE.....Cont
00E6E0:  72 6F 6C 20 70 61 73 73 65 73 20 74 6F 20 74 68    rol passes to th
00E6F0:  65 90 20 63 6F 6D 6D 61 6E 64 90 20 61 66 74 65    e. command. afte
00E700:  72 90 20 74 68 65 90 20 65 6E 64 90 20 6F 66 20    r. the. end. of 
00E710:  74 68 65 20 53 57 49 54 43 48 49 4E 20 0D 8A 09    the SWITCHIN ...
00E720:  63 6F 6D 70 6F 75 6E 64 20 63 6F 6D 6D 61 6E 64    compound command
00E730:  2E 0D 0A 0D 0A 09 47 4F 54 4F 20 3C 65 78 70 72    ......GOTO <expr
00E740:  65 73 73 69 6F 6E 3E 0D 0A 0D 0A 09 52 61 72 65    ession>.....Rare
00E750:  6C 79 90 20 72 65 71 75 69 72 65 64 90 20 69 6E    ly. required. in
00E760:  90 20 42 43 50 4C 2C 90 20 74 68 65 90 90 20 47    . BCPL,. the.. G
00E770:  4F 54 4F 90 20 63 6F 6D 6D 61 6E 64 90 20 65 76    OTO. command. ev
00E780:  61 6C 75 61 74 65 73 90 20 74 68 65 20 0D 8A 09    aluates. the ...
00E790:  65 78 70 72 65 73 73 69 6F 6E 20 61 6E 64 20 6A    expression and j
00E7A0:  75 6D 70 73 20 74 6F 20 74 68 65 90 20 61 64 64    umps to the. add
00E7B0:  72 65 73 73 20 6F 62 74 61 69 6E 65 64 2E 20 54    ress obtained. T
00E7C0:  68 65 20 65 78 70 72 65 73 73 69 6F 6E 20 69 73    he expression is
00E7D0:  20 0D 8A 09 75 73 75 61 6C 6C 79 20 61 20 6C 61     ...usually a la
00E7E0:  62 65 6C 20 77 68 69 63 68 20 69 73 20 64 65 66    bel which is def
00E7F0:  69 6E 65 64 20 62 79 20 62 65 69 6E 67 20 61 74    ined by being at
00E800:  74 61 63 68 65 64 20 74 6F 20 61 20 63 6F 6D 6D    tached to a comm
00E810:  61 6E 64 2C 20 0D 8A 0D 0A 09 65 2E 67 2E 09 6C    and, .....e.g..l
00E820:  61 62 65 6C 6E 61 6D 65 3A 20 3C 63 6F 6D 6D 61    abelname: <comma
00E830:  6E 64 3E 0D 0A 3E 70 61 09 0D 0A E2 43 6F 6D 6D    nd>..>pa....Comm
00E840:  65 6E 74 73 20 61 6E 64 20 6C 61 79 6F 75 74 20    ents and layout 
00E850:  6F 66 20 70 72 6F 67 72 61 6D 73 E2 0D 0A 0D 0A    of programs.....
00E860:  09 54 68 65 72 65 20 61 72 65 20 74 77 6F 20 77    .There are two w
00E870:  61 79 73 20 6F 66 20 70 75 74 74 69 6E 67 20 63    ays of putting c
00E880:  6F 6D 6D 65 6E 74 73 20 77 69 74 68 69 6E 20 42    omments within B
00E890:  43 50 4C 20 70 72 6F 67 72 61 6D 73 2E 0D 0A 0D    CPL programs....
00E8A0:  0A 09 2F 2F 20 63 61 75 73 65 73 20 74 68 65 20    ..// causes the 
00E8B0:  72 65 6D 61 69 6E 64 65 72 20 6F 66 20 74 68 65    remainder of the
00E8C0:  20 6C 69 6E 65 20 74 6F 20 62 65 20 69 67 6E 6F     line to be igno
00E8D0:  72 65 64 0D 0A 09 2F 2A 20 63 61 75 73 65 73 20    red.../* causes 
00E8E0:  61 6C 6C 20 74 65 78 74 20 74 6F 20 62 65 90 20    all text to be. 
00E8F0:  69 67 6E 6F 72 65 64 20 75 6E 74 69 6C 20 74 68    ignored until th
00E900:  65 20 63 6F 6D 70 69 6C 65 72 20 72 65 61 63 68    e compiler reach
00E910:  65 73 20 74 68 65 20 0D 8A 09 73 79 6D 62 6F 6C    es the ...symbol
00E920:  20 2A 2F 0D 0A 0D 0A 09 41 64 64 69 74 69 6F 6E     */.....Addition
00E930:  61 6C 6C 79 20 61 20 3E 90 20 69 6E 90 20 63 6F    ally a >. in. co
00E940:  6C 75 6D 6E 90 20 31 90 20 63 61 75 73 65 73 90    lumn. 1. causes.
00E950:  20 74 68 65 90 20 77 68 6F 6C 65 90 20 6C 69 6E     the. whole. lin
00E960:  65 90 20 74 6F 20 62 65 20 0D 8A 09 69 67 6E 6F    e. to be ...igno
00E970:  72 65 64 2E 20 54 68 75 73 20 50 52 4F 54 45 58    red. Thus PROTEX
00E980:  54 20 73 74 6F 72 65 64 20 63 6F 6D 6D 61 6E 64    T stored command
00E990:  73 20 61 72 65 20 69 67 6E 6F 72 65 64 2E 0D 0A    s are ignored...
00E9A0:  0D 0A 09 4D 75 6C 74 69 70 6C 65 20 63 6F 6D 6D    ...Multiple comm
00E9B0:  61 6E 64 20 6C 69 6E 65 73 20 61 72 65 90 20 61    and lines are. a
00E9C0:  6C 6C 6F 77 65 64 2E 90 20 43 6F 6D 6D 61 6E 64    llowed.. Command
00E9D0:  73 20 6D 75 73 74 20 62 65 20 73 65 70 61 72 61    s must be separa
00E9E0:  74 65 64 20 0D 8A 09 62 79 20 61 20 73 65 6D 69    ted ...by a semi
00E9F0:  63 6F 6C 6F 6E 20 28 3B 29 20 69 66 20 74 68 65    colon (;) if the
00EA00:  72 65 20 77 6F 75 6C 64 20 6F 74 68 65 72 77 69    re would otherwi
00EA10:  73 65 20 62 65 20 61 6E 20 61 6E 20 61 6D 62 69    se be an an ambi
00EA20:  67 75 69 74 79 2E 0D 0A 0D 0A 09 42 6C 61 6E 6B    guity......Blank
00EA30:  20 6C 69 6E 65 73 90 20 61 6E 64 90 20 73 70 61     lines. and. spa
00EA40:  63 65 73 90 20 61 72 65 90 20 69 67 6E 6F 72 65    ces. are. ignore
00EA50:  64 90 20 65 78 63 65 70 74 90 20 77 68 65 72 65    d. except. where
00EA60:  90 20 74 68 65 79 90 20 61 72 65 20 0D 8A 09 72    . they. are ...r
00EA70:  65 71 75 69 72 65 64 20 74 6F 90 20 73 65 70 61    equired to. sepa
00EA80:  72 61 74 65 90 20 69 74 65 6D 73 2E 90 20 50 52    rate. items.. PR
00EA90:  4F 54 45 58 54 90 20 73 6F 66 74 90 20 73 70 61    OTEXT. soft. spa
00EAA0:  63 65 73 2C 90 20 73 6F 66 74 20 6C 69 6E 65 20    ces,. soft line 
00EAB0:  0D 8A 09 66 65 65 64 73 2C 20 61 6E 64 20 6D 61    ...feeds, and ma
00EAC0:  72 6B 65 72 73 20 61 72 65 20 69 67 6E 6F 72 65    rkers are ignore
00EAD0:  64 2E 0D 0A 3E 70 61 0D 0A 3E 2D 2D 2D 21 2D 2D    d...>pa..>---!--
00EAE0:  2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D    ---!-----!------
00EAF0:  2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D    -!-------!------
00EB00:  2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D    -!-------!------
00EB10:  2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D    -!-------!----R.
00EB20:  0A 3E 63 65 20 20 20 20 20 20 20 20 20 20 20 20    .>ce            
00EB30:  20 20 20 20 20 20 20 20 20 20 E2 38 2E 20 54 48              .8. TH
00EB40:  45 20 41 52 4E 4F 52 20 42 43 50 4C 20 4C 49 42    E ARNOR BCPL LIB
00EB50:  52 41 52 49 45 53 E2 0D 0A 0D 0A 0D 0A 09 54 68    RARIES........Th
00EB60:  65 20 6C 69 62 72 61 72 69 65 73 20 73 75 70 70    e libraries supp
00EB70:  6C 69 65 64 20 77 69 74 68 90 20 74 68 65 90 20    lied with. the. 
00EB80:  63 6F 6D 70 69 6C 65 72 90 20 70 72 6F 76 69 64    compiler. provid
00EB90:  65 20 70 72 6F 63 65 64 75 72 65 73 20 66 6F 72    e procedures for
00EBA0:  20 0D 8A 77 72 69 74 69 6E 67 20 74 6F 20 74 68     ..writing to th
00EBB0:  65 20 73 63 72 65 65 6E 2C 20 70 72 69 6E 74 65    e screen, printe
00EBC0:  72 20 6F 72 90 20 66 69 6C 65 73 20 61 6E 64 20    r or. files and 
00EBD0:  72 65 61 64 69 6E 67 20 66 72 6F 6D 20 74 68 65    reading from the
00EBE0:  20 6B 65 79 62 6F 61 72 64 20 0D 8A 6F 72 20 66     keyboard ..or f
00EBF0:  69 6C 65 73 2E 20 45 61 63 68 20 6F 66 20 74 68    iles. Each of th
00EC00:  65 73 65 20 70 72 6F 63 65 64 75 72 65 73 20 69    ese procedures i
00EC10:  73 20 64 65 73 63 72 69 62 65 64 20 62 65 6C 6F    s described belo
00EC20:  77 2E 0D 0A 09 54 68 65 20 74 77 6F 20 76 65 72    w....The two ver
00EC30:  73 69 6F 6E 73 20 6F 66 20 74 68 65 90 20 63 6F    sions of the. co
00EC40:  6D 70 69 6C 65 72 90 20 6E 65 65 64 20 64 69 66    mpiler. need dif
00EC50:  66 65 72 65 6E 74 20 6C 69 62 72 61 72 69 65 73    ferent libraries
00EC60:  20 77 68 69 63 68 2C 20 0D 8A 61 6C 74 68 6F 75     which, ..althou
00EC70:  67 68 20 74 68 65 79 20 6C 6F 6F 6B 20 74 68 65    gh they look the
00EC80:  20 73 61 6D 65 20 66 72 6F 6D 90 20 74 68 65 20     same from. the 
00EC90:  6F 75 74 73 69 64 65 2C 20 68 61 76 65 20 64 69    outside, have di
00ECA0:  66 66 65 72 65 6E 74 20 69 6E 74 65 72 6E 61 6C    fferent internal
00ECB0:  20 0D 8A 77 6F 72 6B 69 6E 67 73 20 64 65 74 65     ..workings dete
00ECC0:  72 6D 69 6E 65 64 20 62 79 20 74 68 65 90 20 64    rmined by the. d
00ECD0:  69 66 66 65 72 65 6E 74 90 20 6F 70 65 72 61 74    ifferent. operat
00ECE0:  69 6E 67 90 20 73 79 73 74 65 6D 73 2E 20 54 68    ing. systems. Th
00ECF0:  65 72 65 20 69 73 20 61 6E 20 0D 8A 61 64 64 69    ere is an ..addi
00ED00:  74 69 6F 6E 61 6C 20 41 4D 53 44 4F 53 90 20 6C    tional AMSDOS. l
00ED10:  69 62 72 61 72 79 90 20 77 68 69 63 68 90 20 63    ibrary. which. c
00ED20:  6F 6E 74 61 69 6E 73 90 20 72 6F 75 74 69 6E 65    ontains. routine
00ED30:  73 90 20 77 68 69 63 68 90 20 61 72 65 20 6F 6E    s. which. are on
00ED40:  6C 79 20 0D 8A 72 65 6C 65 76 61 6E 74 20 74 6F    ly ..relevant to
00ED50:  20 74 68 65 20 43 50 43 20 6D 61 63 68 69 6E 65     the CPC machine
00ED60:  73 2E 0D 0A 0D 0A E2 4D 61 6E 69 66 65 73 74 20    s......Manifest 
00ED70:  63 6F 6E 73 74 61 6E 74 73 20 64 65 66 69 6E 65    constants define
00ED80:  64 20 69 6E 20 74 68 65 20 6C 69 62 72 61 72 69    d in the librari
00ED90:  65 73 E2 0D 0A 0D 0A 09 54 68 65 73 65 20 73 68    es......These sh
00EDA0:  6F 75 6C 64 20 62 65 90 20 75 73 65 64 90 20 77    ould be. used. w
00EDB0:  68 65 72 65 90 20 61 70 70 72 6F 70 72 69 61 74    here. appropriat
00EDC0:  65 90 20 74 6F 90 20 6D 61 6B 65 90 20 70 72 6F    e. to. make. pro
00EDD0:  67 72 61 6D 73 20 62 6F 74 68 20 0D 8A 72 65 61    grams both ..rea
00EDE0:  64 61 62 6C 65 20 61 6E 64 20 70 6F 72 74 61 62    dable and portab
00EDF0:  6C 65 2E 20 54 68 65 79 20 64 65 66 69 6E 65 20    le. They define 
00EE00:  69 6D 70 6C 65 6D 65 6E 74 61 74 69 6F 6E 20 64    implementation d
00EE10:  65 70 65 6E 64 65 6E 74 20 63 6F 6E 73 74 61 6E    ependent constan
00EE20:  74 73 2E 0D 0A 0D 0A 3E 2D 2D 2D 21 2D 2D 2D 2D    ts.....>---!----
00EE30:  2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 4C    -!-----!-------L
00EE40:  2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21    -------!-------!
00EE50:  2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21    -------!-------!
00EE60:  2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A 6E    -------!----R..n
00EE70:  61 6D 65 09 09 76 61 6C 75 65 20 20 20 6D 65 61    ame..value   mea
00EE80:  6E 69 6E 67 20 61 6E 64 20 75 73 65 0D 0A 0D 0A    ning and use....
00EE90:  62 69 74 73 70 65 72 77 6F 72 64 09 31 36 09 42    bitsperword.16.B
00EEA0:  43 50 4C 20 77 6F 72 64 20 73 69 7A 65 2C 20 66    CPL word size, f
00EEB0:  6F 72 20 70 72 6F 67 72 61 6D 20 70 6F 72 74 61    or program porta
00EEC0:  62 69 6C 69 74 79 0D 0A 62 79 74 65 73 70 65 72    bility..bytesper
00EED0:  77 6F 72 64 09 32 09 42 43 50 4C 20 77 6F 72 64    word.2.BCPL word
00EEE0:  20 73 69 7A 65 2C 20 66 6F 72 20 70 72 6F 67 72     size, for progr
00EEF0:  61 6D 20 70 6F 72 74 61 62 69 6C 69 74 79 0D 0A    am portability..
00EF00:  65 6E 64 73 74 72 65 61 6D 63 68 09 2D 2D 31 09    endstreamch.--1.
00EF10:  68 61 72 64 20 65 6E 64 20 6F 66 20 66 69 6C 65    hard end of file
00EF20:  20 63 68 61 72 61 63 74 65 72 0D 0A 6D 61 78 69     character..maxi
00EF30:  6E 74 09 09 33 32 37 36 37 09 74 68 65 20 6C 61    nt..32767.the la
00EF40:  72 67 65 73 74 20 70 6F 73 73 69 62 6C 65 20 69    rgest possible i
00EF50:  6E 74 65 67 65 72 0D 0A 6D 69 6E 69 6E 74 09 09    nteger..minint..
00EF60:  2D 2D 33 32 37 36 38 09 74 68 65 20 73 6D 61 6C    --32768.the smal
00EF70:  6C 65 73 74 20 70 6F 73 73 69 62 6C 65 20 69 6E    lest possible in
00EF80:  74 65 67 65 72 0D 0A 6E 65 77 6C 69 6E 65 63 68    teger..newlinech
00EF90:  09 09 32 36 39 09 74 68 65 20 6E 65 77 20 6C 69    ..269.the new li
00EFA0:  6E 65 20 63 68 61 72 61 63 74 65 72 2C 90 20 2A    ne character,. *
00EFB0:  4E 2C 20 77 68 69 63 68 20 69 73 20 65 78 70 61    N, which is expa
00EFC0:  6E 64 65 64 20 0D 8A 09 09 09 09 74 6F 20 63 61    nded ......to ca
00EFD0:  72 72 69 61 67 65 20 72 65 74 75 72 6E 20 66 6F    rriage return fo
00EFE0:  6C 6C 6F 77 65 64 20 62 79 20 6C 69 6E 65 20 66    llowed by line f
00EFF0:  65 65 64 0D 0A 70 72 69 6E 74 73 74 72 65 61 6D    eed..printstream
00F000:  09 31 09 73 74 72 65 61 6D 20 6E 75 6D 62 65 72    .1.stream number
00F010:  20 74 6F 20 73 65 6C 65 63 74 20 6F 75 74 70 75     to select outpu
00F020:  74 20 74 6F 20 70 72 69 6E 74 65 72 0D 0A 73 6F    t to printer..so
00F030:  66 74 65 6F 66 63 68 09 09 32 36 09 73 6F 66 74    fteofch..26.soft
00F040:  20 65 6E 64 20 6F 66 20 66 69 6C 65 20 63 68 61     end of file cha
00F050:  72 61 63 74 65 72 0D 0A 74 69 63 6B 73 70 65 72    racter..ticksper
00F060:  73 65 63 09 33 30 30 09 6D 75 6C 74 69 70 6C 79    sec.300.multiply
00F070:  20 74 68 65 20 76 61 6C 75 65 20 72 65 74 75 72     the value retur
00F080:  6E 65 64 90 20 62 79 20 27 74 69 6D 65 27 20 62    ned. by 'time' b
00F090:  79 20 74 68 69 73 20 0D 8A 09 09 09 09 74 6F 20    y this ......to 
00F0A0:  67 65 74 20 74 68 65 20 74 69 6D 65 20 69 6E 20    get the time in 
00F0B0:  73 65 63 6F 6E 64 73 2E 20 41 4D 53 44 4F 53 20    seconds. AMSDOS 
00F0C0:  6F 6E 6C 79 2E 0D 0A 76 64 75 73 74 72 65 61 6D    only...vdustream
00F0D0:  09 09 30 09 73 74 72 65 61 6D 20 6E 75 6D 62 65    ..0.stream numbe
00F0E0:  72 20 74 6F 20 73 65 6C 65 63 74 20 73 63 72 65    r to select scre
00F0F0:  65 6E 2F 6B 65 79 62 6F 61 72 64 0D 0A 0D 0A 0D    en/keyboard.....
00F100:  0A 3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D    .>---!-----!----
00F110:  2D 4C 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D    -L-------!------
00F120:  2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D    -!-------!------
00F130:  2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D    -!-------!------
00F140:  2D 21 2D 2D 2D 2D 52 0D 0A E2 4B 65 79 20 74 6F    -!----R...Key to
00F150:  20 70 72 6F 63 65 64 75 72 65 20 64 65 73 63 72     procedure descr
00F160:  69 70 74 69 6F 6E 73 3A E2 0D 0A 0D 0A 45 66 66    iptions:.....Eff
00F170:  65 63 74 3A 20 09 09 62 72 69 65 66 20 65 78 70    ect: ..brief exp
00F180:  6C 61 6E 61 74 69 6F 6E 20 6F 66 20 74 68 65 20    lanation of the 
00F190:  70 72 6F 63 65 64 75 72 65 0D 0A 52 65 74 75 72    procedure..Retur
00F1A0:  6E 73 3A 09 09 64 65 74 61 69 6C 73 20 61 6E 79    ns:..details any
00F1B0:  90 20 76 61 6C 75 65 90 20 72 65 74 75 72 6E 65    . value. returne
00F1C0:  64 90 20 62 79 90 20 74 68 65 90 20 70 72 6F 63    d. by. the. proc
00F1D0:  65 64 75 72 65 2E 90 20 41 6C 6C 20 0D 8A 09 09    edure.. All ....
00F1E0:  09 6C 69 62 72 61 72 79 20 70 72 6F 63 65 64 75    .library procedu
00F1F0:  72 65 73 20 6D 61 79 20 62 65 90 20 63 61 6C 6C    res may be. call
00F200:  65 64 20 61 73 20 72 6F 75 74 69 6E 65 73 2C 20    ed as routines, 
00F210:  77 68 65 74 68 65 72 20 0D 8A 09 09 09 6F 72 20    whether .....or 
00F220:  6E 6F 74 20 74 68 65 79 20 72 65 74 75 72 6E 20    not they return 
00F230:  61 20 76 61 6C 75 65 2E 20 4F 6E 6C 79 20 74 68    a value. Only th
00F240:  6F 73 65 20 70 72 6F 63 65 64 75 72 65 73 20 74    ose procedures t
00F250:  68 61 74 20 0D 8A 09 09 09 72 65 74 75 72 6E 20    hat .....return 
00F260:  61 20 76 61 6C 75 65 20 6D 61 79 20 62 65 20 63    a value may be c
00F270:  61 6C 6C 65 64 90 20 61 73 20 61 20 66 75 6E 63    alled. as a func
00F280:  74 69 6F 6E 2E 20 4E 6F 74 65 20 74 68 61 74 20    tion. Note that 
00F290:  0D 8A 09 09 09 73 65 76 65 72 61 6C 20 70 72 6F    .....several pro
00F2A0:  63 65 64 75 72 65 73 20 72 65 74 75 72 6E 20 76    cedures return v
00F2B0:  61 6C 75 65 73 20 69 6E 20 61 20 73 75 70 70 6C    alues in a suppl
00F2C0:  69 65 64 20 76 65 63 74 6F 72 2C 20 0D 8A 09 09    ied vector, ....
00F2D0:  09 62 75 74 20 74 68 65 73 65 20 77 69 6C 6C 20    .but these will 
00F2E0:  62 65 20 6C 69 73 74 65 64 90 20 61 73 90 20 27    be listed. as. '
00F2F0:  6E 6F 74 68 69 6E 67 27 20 73 69 6E 63 65 20 74    nothing' since t
00F300:  68 65 72 65 20 69 73 20 0D 8A 09 09 09 6E 6F 20    here is .....no 
00F310:  66 75 6E 63 74 69 6F 6E 20 76 61 6C 75 65 20 72    function value r
00F320:  65 74 75 72 6E 65 64 2E 0D 0A 4C 6F 63 61 74 69    eturned...Locati
00F330:  6F 6E 3A 09 09 74 68 69 73 20 69 6E 64 69 63 61    on:..this indica
00F340:  74 65 73 20 77 68 65 72 65 90 20 74 68 65 90 20    tes where. the. 
00F350:  70 72 6F 63 65 64 75 72 65 90 20 69 73 90 20 64    procedure. is. d
00F360:  65 66 69 6E 65 64 2E 20 54 68 65 20 0D 8A 09 09    efined. The ....
00F370:  09 6C 6F 63 61 74 69 6F 6E 20 66 6F 72 20 74 68    .location for th
00F380:  65 20 43 50 2F 4D 20 76 65 72 73 69 6F 6E 20 69    e CP/M version i
00F390:  73 20 67 69 76 65 6E 20 66 69 72 73 74 2C 20 66    s given first, f
00F3A0:  6F 6C 6C 6F 77 65 64 20 0D 8A 09 09 09 62 79 20    ollowed .....by 
00F3B0:  74 68 65 20 6C 6F 63 61 74 69 6F 6E 20 66 6F 72    the location for
00F3C0:  90 20 74 68 65 90 20 41 4D 53 44 4F 53 90 20 76    . the. AMSDOS. v
00F3D0:  65 72 73 69 6F 6E 2E 20 4D 6F 73 74 20 6F 66 20    ersion. Most of 
00F3E0:  74 68 65 20 0D 8A 09 09 09 6C 69 62 72 61 72 79    the .....library
00F3F0:  90 20 70 72 6F 63 65 64 75 72 65 73 90 20 61 72    . procedures. ar
00F400:  65 90 20 77 72 69 74 74 65 6E 90 90 20 69 6E 90    e. written.. in.
00F410:  20 42 43 50 4C 90 20 61 6E 64 90 20 61 72 65 20     BCPL. and. are 
00F420:  0D 8A 09 09 09 63 6F 6E 74 61 69 6E 65 64 20 69    .....contained i
00F430:  6E 20 6F 6E 65 20 6F 66 20 74 68 65 90 20 6C 69    n one of the. li
00F440:  62 72 61 72 79 20 66 69 6C 65 73 2E 20 41 20 66    brary files. A f
00F450:  65 77 20 72 6F 75 74 69 6E 65 73 20 0D 8A 09 09    ew routines ....
00F460:  09 61 72 65 90 20 70 72 65 2D 64 65 66 69 6E 65    .are. pre-define
00F470:  64 2C 90 20 69 2E 65 2E 90 20 74 68 65 79 90 20    d,. i.e.. they. 
00F480:  61 72 65 90 20 77 72 69 74 74 65 6E 90 20 69 6E    are. written. in
00F490:  74 6F 90 20 74 68 65 20 0D 8A 09 09 09 63 6F 6D    to. the .....com
00F4A0:  70 69 6C 65 72 2E 0D 0A 3E 70 61 0D 0A 3E 2D 2D    piler...>pa..>--
00F4B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 4C 2D 2D    ------------ L--
00F4C0:  2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D    -----!-------!--
00F4D0:  2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D    -----!-------!--
00F4E0:  2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D    -----!-------!--
00F4F0:  2D 2D 52 0D 0A E2 28 61 29 20 4F 75 74 70 75 74    --R...(a) Output
00F500:  20 52 6F 75 74 69 6E 65 73 E2 0D 0A 0D 0A 0D 0A     Routines.......
00F510:  4E 45 57 4C 49 4E 45 28 29 0D 0A 0D 0A 45 66 66    NEWLINE()....Eff
00F520:  65 63 74 3A 09 53 74 61 72 74 73 20 61 20 6E 65    ect:.Starts a ne
00F530:  77 20 6C 69 6E 65 90 20 69 6E 90 20 74 68 65 90    w line. in. the.
00F540:  20 63 75 72 72 65 6E 74 6C 79 20 73 65 6C 65 63     currently selec
00F550:  74 65 64 20 6F 75 74 70 75 74 2E 20 0D 8A 09 54    ted output. ...T
00F560:  68 65 20 65 78 61 63 74 20 65 66 66 65 63 74 20    he exact effect 
00F570:  69 6E 20 41 72 6E 6F 72 20 42 43 50 4C 20 69 73    in Arnor BCPL is
00F580:  20 74 6F 20 6F 75 74 70 75 74 20 61 20 63 61 72     to output a car
00F590:  72 69 61 67 65 20 0D 8A 09 72 65 74 75 72 6E 20    riage ...return 
00F5A0:  28 31 33 29 20 66 6F 6C 6C 6F 77 65 64 20 62 79    (13) followed by
00F5B0:  20 61 20 6C 69 6E 65 20 66 65 65 64 20 28 31 30     a line feed (10
00F5C0:  29 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E    ).....Returns:.N
00F5D0:  6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69    othing....Locati
00F5E0:  6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49    on:.CLIBHDR, ALI
00F5F0:  42 48 44 52 0D 0A 0D 0A 0D 0A 4E 45 57 50 41 47    BHDR......NEWPAG
00F600:  45 28 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 53    E()....Effect:.S
00F610:  74 61 72 74 73 20 61 20 6E 65 77 20 70 61 67 65    tarts a new page
00F620:  90 20 69 6E 90 20 74 68 65 90 20 63 75 72 72 65    . in. the. curre
00F630:  6E 74 6C 79 20 73 65 6C 65 63 74 65 64 20 6F 75    ntly selected ou
00F640:  74 70 75 74 2E 20 0D 8A 09 54 68 65 20 65 78 61    tput. ...The exa
00F650:  63 74 20 65 66 66 65 63 74 20 69 6E 20 41 72 6E    ct effect in Arn
00F660:  6F 72 90 20 42 43 50 4C 90 20 69 73 20 74 6F 20    or. BCPL. is to 
00F670:  6F 75 74 70 75 74 20 74 68 65 20 66 6F 72 6D 20    output the form 
00F680:  0D 8A 09 66 65 65 64 20 63 68 61 72 61 63 74 65    ...feed characte
00F690:  72 20 28 31 32 29 2E 0D 0A 0D 0A 52 65 74 75 72    r (12).....Retur
00F6A0:  6E 73 3A 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C    ns:.Nothing....L
00F6B0:  6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52    ocation:.CLIBHDR
00F6C0:  31 2C 20 41 4C 49 42 48 44 52 31 0D 0A 0D 0A 0D    1, ALIBHDR1.....
00F6D0:  0A 57 52 43 48 28 63 68 61 72 29 0D 0A 0D 0A 45    .WRCH(char)....E
00F6E0:  66 66 65 63 74 3A 09 54 68 65 20 63 68 61 72 61    ffect:.The chara
00F6F0:  63 74 65 72 20 69 73 20 73 65 6E 74 20 74 6F 20    cter is sent to 
00F700:  74 68 65 20 63 75 72 72 65 6E 74 6C 79 20 73 65    the currently se
00F710:  6C 65 63 74 65 64 20 6F 75 74 70 75 74 20 0D 8A    lected output ..
00F720:  09 73 74 72 65 61 6D 2E 20 57 72 63 68 28 27 2A    .stream. Wrch('*
00F730:  4E 27 29 20 68 61 73 20 74 68 65 90 20 73 61 6D    N') has the. sam
00F740:  65 90 20 65 66 66 65 63 74 20 61 73 20 6E 65 77    e. effect as new
00F750:  6C 69 6E 65 28 29 2C 20 0D 8A 09 69 2E 65 2E 20    line(), ...i.e. 
00F760:  63 61 72 72 69 61 67 65 20 72 65 74 75 72 6E 20    carriage return 
00F770:  61 6E 64 20 6C 69 6E 65 20 66 65 65 64 20 61 72    and line feed ar
00F780:  65 20 6F 75 74 70 75 74 2E 0D 0A 0D 0A 52 65 74    e output.....Ret
00F790:  75 72 6E 73 3A 09 54 52 55 45 20 69 66 20 73 75    urns:.TRUE if su
00F7A0:  63 63 65 73 73 66 75 6C 2C 20 46 41 4C 53 45 20    ccessful, FALSE 
00F7B0:  69 66 20 61 6E 20 65 72 72 6F 72 20 6F 63 63 75    if an error occu
00F7C0:  72 72 65 64 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 6F    rred.....Locatio
00F7D0:  6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 42    n:.CLIBHDR, ALIB
00F7E0:  48 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C 65 73 3A    HDR....Examples:
00F7F0:  09 77 72 63 68 28 63 68 61 72 29 0D 0A 09 77 72    .wrch(char)...wr
00F800:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
00F810:  0D 00 00 00 02 09 50 E5 0D 00 C1 02 00 00 00 02    ......P.........
00F820:  0D 00 C2 02 00 00 00 02 0D 00 C3 02 00 00 00 02    ................
00F830:  0D 00 C4 02 00 00 00 02 0D 00 C5 02 00 00 00 02    ................
00F840:  0D 00 C6 02 00 00 00 02 0D 00 C7 02 00 00 00 02    ................
00F850:  0D 00 C8 02 00 00 00 02 0D 00 C9 02 00 00 00 02    ................
00F860:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F870:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F880:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F890:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F8A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F8B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F8C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F8D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F8E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F8F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F900:  63 68 28 27 41 27 29 0D 0A 0D 0A 0D 0A 57 52 49    ch('A')......WRI
00F910:  54 45 44 28 69 6E 74 65 67 65 72 2C 77 69 64 74    TED(integer,widt
00F920:  68 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68    h)....Effect:.Th
00F930:  65 20 69 6E 74 65 67 65 72 20 69 73 90 20 6F 75    e integer is. ou
00F940:  74 70 75 74 90 20 61 73 90 20 61 90 20 73 69 67    tput. as. a. sig
00F950:  6E 65 64 20 64 65 63 69 6D 61 6C 20 69 6E 74 65    ned decimal inte
00F960:  67 65 72 2C 20 0D 8A 09 72 69 67 68 74 20 6A 75    ger, ...right ju
00F970:  73 74 69 66 69 65 64 20 69 6E 20 61 20 66 69 65    stified in a fie
00F980:  6C 64 90 20 6F 66 20 74 68 65 20 73 70 65 63 69    ld. of the speci
00F990:  66 69 65 64 20 77 69 64 74 68 2E 20 49 66 20 0D    fied width. If .
00F9A0:  8A 09 74 68 69 73 20 77 69 64 74 68 20 69 73 20    ..this width is 
00F9B0:  69 6E 73 75 66 66 69 63 69 65 6E 74 20 74 68 65    insufficient the
00F9C0:  6E 90 20 69 74 90 20 77 69 6C 6C 20 62 65 20 6F    n. it. will be o
00F9D0:  75 74 70 75 74 20 69 6E 20 0D 8A 09 74 68 65 20    utput in ...the 
00F9E0:  6D 69 6E 69 6D 75 6D 20 77 69 64 74 68 2E 20 54    minimum width. T
00F9F0:  68 65 90 20 6E 75 6D 62 65 72 90 20 6F 75 74 70    he. number. outp
00FA00:  75 74 90 20 77 69 6C 6C 20 62 65 20 69 6E 20 74    ut. will be in t
00FA10:  68 65 20 0D 8A 09 72 61 6E 67 65 20 28 2D 2D 33    he ...range (--3
00FA20:  32 37 36 38 2C 33 32 37 36 37 29 2E 0D 0A 0D 0A    2768,32767).....
00FA30:  52 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67    Returns:.Nothing
00FA40:  0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C    ....Location:.CL
00FA50:  49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A    IBHDR, ALIBHDR..
00FA60:  3E 70 61 0D 0A 57 52 49 54 45 46 28 66 6F 72 6D    >pa..WRITEF(form
00FA70:  61 74 2C 61 2C 62 2C 63 2C 64 2C 65 2C 66 2C 67    at,a,b,c,d,e,f,g
00FA80:  2C 68 2C 69 2C 6A 2C 6B 29 0D 0A 0D 0A 45 66 66    ,h,i,j,k)....Eff
00FA90:  65 63 74 3A 09 57 52 49 54 45 46 20 61 6C 6C 6F    ect:.WRITEF allo
00FAA0:  77 73 20 63 68 61 72 61 63 74 65 72 73 20 74 6F    ws characters to
00FAB0:  90 20 62 65 90 20 70 72 69 6E 74 65 64 20 6F 75    . be. printed ou
00FAC0:  74 20 61 63 63 6F 72 64 69 6E 67 20 0D 8A 09 74    t according ...t
00FAD0:  6F 20 63 65 72 74 61 69 6E 20 66 6F 72 6D 61 74    o certain format
00FAE0:  73 2E 90 20 54 68 65 90 20 70 72 6F 63 65 64 75    s.. The. procedu
00FAF0:  72 65 90 20 74 61 6B 65 73 90 20 6F 6E 65 20 73    re. takes. one s
00FB00:  74 72 69 6E 67 20 0D 8A 09 70 61 72 61 6D 65 74    tring ...paramet
00FB10:  65 72 20 77 68 69 63 68 20 67 69 76 65 73 90 20    er which gives. 
00FB20:  74 68 65 90 20 74 65 6D 70 6C 61 74 65 90 20 74    the. template. t
00FB30:  6F 90 20 62 65 90 20 75 73 65 64 20 66 6F 72 20    o. be. used for 
00FB40:  0D 8A 09 70 72 69 6E 74 69 6E 67 2E 20 49 74 90    ...printing. It.
00FB50:  20 61 6C 73 6F 90 20 74 61 6B 65 73 90 20 61 6E     also. takes. an
00FB60:  6F 74 68 65 72 90 20 73 65 74 90 20 6F 66 20 70    other. set. of p
00FB70:  61 72 61 6D 65 74 65 72 73 20 0D 8A 09 28 75 70    arameters ...(up
00FB80:  20 74 6F 20 31 31 29 20 77 68 69 63 68 20 67 69     to 11) which gi
00FB90:  76 65 90 20 74 68 65 90 20 69 74 65 6D 73 90 20    ve. the. items. 
00FBA0:  74 6F 20 62 65 20 70 72 69 6E 74 65 64 2E 20 4E    to be printed. N
00FBB0:  6F 74 65 20 0D 8A 09 74 68 61 74 20 69 74 20 69    ote ...that it i
00FBC0:  73 20 6E 6F 74 20 6E 65 63 65 73 73 61 72 79 90    s not necessary.
00FBD0:  20 74 6F 90 20 70 72 6F 76 69 64 65 20 61 20 42     to. provide a B
00FBE0:  43 50 4C 20 70 72 6F 63 65 64 75 72 65 20 0D 8A    CPL procedure ..
00FBF0:  09 77 69 74 68 90 20 61 6C 6C 90 20 6F 66 90 20    .with. all. of. 
00FC00:  69 74 73 90 20 66 6F 72 6D 61 6C 90 20 70 61 72    its. formal. par
00FC10:  61 6D 65 74 65 72 73 2E 90 20 54 68 65 90 20 74    ameters.. The. t
00FC20:  65 6D 70 6C 61 74 65 20 0D 8A 09 70 61 72 61 6D    emplate ...param
00FC30:  65 74 65 72 90 20 69 73 90 20 61 90 20 73 74 72    eter. is. a. str
00FC40:  69 6E 67 90 20 77 68 69 63 68 90 90 20 6D 61 79    ing. which.. may
00FC50:  90 20 69 6E 63 6C 75 64 65 90 20 74 68 65 90 20    . include. the. 
00FC60:  25 20 0D 8A 09 63 68 61 72 61 63 74 65 72 20 66    % ...character f
00FC70:  6F 6C 6C 6F 77 65 64 20 62 79 90 20 61 90 20 63    ollowed by. a. c
00FC80:  6F 6E 76 65 72 73 69 6F 6E 20 63 68 61 72 61 63    onversion charac
00FC90:  74 65 72 28 73 29 2E 20 54 68 65 20 0D 8A 09 74    ter(s). The ...t
00FCA0:  65 6D 70 6C 61 74 65 90 20 73 74 72 69 6E 67 90    emplate. string.
00FCB0:  20 69 73 90 20 70 72 69 6E 74 65 64 90 90 20 6F     is. printed.. o
00FCC0:  75 74 90 90 20 77 69 74 68 90 20 74 68 65 90 20    ut.. with. the. 
00FCD0:  6F 74 68 65 72 20 0D 8A 09 70 61 72 61 6D 65 74    other ...paramet
00FCE0:  65 72 73 90 20 69 6E 73 65 72 74 65 64 90 20 69    ers. inserted. i
00FCF0:  6E 74 6F 90 20 69 74 90 20 69 6E 90 90 20 70 6C    nto. it. in.. pl
00FD00:  61 63 65 90 20 6F 66 90 20 74 68 65 90 20 25 20    ace. of. the. % 
00FD10:  0D 8A 09 63 68 61 72 61 63 74 65 72 2E 20 54 68    ...character. Th
00FD20:  65 90 20 63 6F 6E 76 65 72 73 69 6F 6E 90 20 63    e. conversion. c
00FD30:  68 61 72 61 63 74 65 72 73 90 20 61 76 61 69 6C    haracters. avail
00FD40:  61 62 6C 65 90 20 61 72 65 20 0D 8A 09 6C 69 73    able. are ...lis
00FD50:  74 65 64 20 62 65 6C 6F 77 2E 20 53 6F 6D 65 90    ted below. Some.
00FD60:  20 6F 66 90 20 74 68 65 73 65 90 20 6D 75 73 74     of. these. must
00FD70:  90 20 62 65 90 20 66 6F 6C 6C 6F 77 65 64 20 62    . be. followed b
00FD80:  79 20 61 20 0D 8A 09 6E 75 6D 62 65 72 20 74 6F    y a ...number to
00FD90:  20 73 70 65 63 69 66 79 20 74 68 65 20 72 65 71     specify the req
00FDA0:  75 69 72 65 64 90 20 66 69 65 6C 64 20 77 69 64    uired. field wid
00FDB0:  74 68 2E 20 54 68 65 73 65 20 61 72 65 20 0D 8A    th. These are ..
00FDC0:  09 6D 61 72 6B 65 64 20 77 69 74 68 20 27 6E 27    .marked with 'n'
00FDD0:  2C 20 77 68 69 63 68 20 63 61 6E 90 20 62 65 90    , which can. be.
00FDE0:  20 61 20 64 65 63 69 6D 61 6C 20 6F 72 20 68 65     a decimal or he
00FDF0:  78 20 64 69 67 69 74 20 0D 8A 09 28 73 6F 20 27    x digit ...(so '
00FE00:  46 27 20 67 69 76 65 73 20 74 68 65 20 6D 61 78    F' gives the max
00FE10:  69 6D 75 6D 20 77 69 64 74 68 20 6F 66 20 31 35    imum width of 15
00FE20:  29 2E 0D 0A 0D 0A 3E 2D 2D 2D 2D 2D 2D 2D 2D 2D    ).....>---------
00FE30:  2D 2D 2D 2D 2D 20 21 2D 2D 2D 2D 2D 4C 2D 21 2D    ----- !-----L-!-
00FE40:  2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D    ------!-------!-
00FE50:  2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D    ------!-------!-
00FE60:  2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A 09 53    ------!----R...S
00FE70:  20 20 2D 2D 20 70 72 69 6E 74 20 61 20 73 74 72      -- print a str
00FE80:  69 6E 67 0D 0A 09 43 20 20 2D 2D 20 70 72 69 6E    ing...C  -- prin
00FE90:  74 20 61 20 63 68 61 72 61 63 74 65 72 0D 0A 09    t a character...
00FEA0:  58 6E 20 2D 2D 20 70 72 69 6E 74 20 61 90 68 65    Xn -- print a.he
00FEB0:  78 20 76 61 6C 75 65 2E 90 20 49 66 90 20 74 68    x value.. If. th
00FEC0:  65 90 20 66 69 65 6C 64 90 20 77 69 64 74 68 20    e. field. width 
00FED0:  69 73 20 74 6F 6F 20 0D 8A 09 09 73 6D 61 6C 6C    is too ....small
00FEE0:  2C 20 6F 6E 6C 79 20 74 68 65 20 6C 65 61 73 74    , only the least
00FEF0:  20 73 69 67 6E 69 66 69 63 61 6E 74 20 64 69 67     significant dig
00FF00:  69 74 73 20 77 69 6C 6C 20 62 65 20 0D 8A 09 09    its will be ....
00FF10:  6F 75 74 70 75 74 2E 0D 0A 09 4F 6E 20 2D 2D 20    output....On -- 
00FF20:  70 72 69 6E 74 20 61 6E 20 6F 63 74 61 6C 20 76    print an octal v
00FF30:  61 6C 75 65 2E 20 49 66 90 20 74 68 65 20 66 69    alue. If. the fi
00FF40:  65 6C 64 20 77 69 64 74 68 20 69 73 20 74 6F 6F    eld width is too
00FF50:  20 0D 8A 09 09 73 6D 61 6C 6C 2C 20 6F 6E 6C 79     ....small, only
00FF60:  20 74 68 65 20 6C 65 61 73 74 20 73 69 67 6E 69     the least signi
00FF70:  66 69 63 61 6E 74 20 64 69 67 69 74 73 20 77 69    ficant digits wi
00FF80:  6C 6C 20 62 65 20 0D 8A 09 09 6F 75 74 70 75 74    ll be ....output
00FF90:  2E 0D 0A 09 49 6E 20 2D 2D 90 70 72 69 6E 74 20    ....In --.print 
00FFA0:  61 6E 20 69 6E 74 65 67 65 72 20 69 6E 20 64 65    an integer in de
00FFB0:  63 69 6D 61 6C 2E 90 20 49 66 20 74 68 65 20 66    cimal.. If the f
00FFC0:  69 65 6C 64 20 77 69 64 74 68 20 0D 8A 09 09 69    ield width ....i
00FFD0:  73 20 74 6F 6F 20 73 6D 61 6C 6C 2C 20 74 68 65    s too small, the
00FFE0:  90 20 69 6E 74 65 67 65 72 90 20 77 69 6C 6C 20    . integer. will 
00FFF0:  62 65 20 6F 75 74 70 75 74 20 75 73 69 6E 67 20    be output using 
010000:  0D 8A 09 09 74 68 65 20 6C 65 61 73 74 20 6E 75    ....the least nu
010010:  6D 62 65 72 20 6F 66 20 73 70 61 63 65 73 2E 0D    mber of spaces..
010020:  0A 09 4E 20 20 2D 2D 20 70 72 69 6E 74 20 61 6E    ..N  -- print an
010030:  90 20 69 6E 74 65 67 65 72 90 20 69 6E 90 20 64    . integer. in. d
010040:  65 63 69 6D 61 6C 90 20 77 69 74 68 90 20 6E 6F    ecimal. with. no
010050:  20 6C 65 61 64 69 6E 67 20 0D 8A 09 09 73 70 61     leading ....spa
010060:  63 65 73 0D 0A 09 25 20 20 2D 2D 20 70 72 69 6E    ces...%  -- prin
010070:  74 20 74 68 65 20 25 20 63 68 61 72 61 63 74 65    t the % characte
010080:  72 0D 0A 09 24 20 20 2D 2D 20 73 6B 69 70 20 61    r...$  -- skip a
010090:  20 70 61 72 61 6D 65 74 65 72 0D 0A 0D 0A 3E 2D     parameter....>-
0100A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 4C 2D    ------------- L-
0100B0:  2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D    ------!-------!-
0100C0:  2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D    ------!-------!-
0100D0:  2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D    ------!-------!-
0100E0:  2D 2D 2D 52 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A    ---R....Returns:
0100F0:  09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61    .Nothing....Loca
010100:  74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41    tion:.CLIBHDR, A
010110:  4C 49 42 48 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C    LIBHDR....Exampl
010120:  65 3A 0D 0A 0D 0A 09 4C 45 54 20 63 6F 6E 76 65    e:.....LET conve
010130:  72 74 20 3D 20 31 30 30 0D 0A 09 77 72 69 74 65    rt = 100...write
010140:  66 28 22 25 4E 20 69 6E 20 68 65 78 61 64 65 63    f("%N in hexadec
010150:  69 6D 61 6C 20 69 73 20 25 58 34 2A 4E 22 2C 20    imal is %X4*N", 
010160:  63 6F 6E 76 65 72 74 2C 20 63 6F 6E 76 65 72 74    convert, convert
010170:  29 0D 0A 0D 0A 09 77 6F 75 6C 64 20 70 72 69 6E    ).....would prin
010180:  74 0D 0A 0D 0A 09 31 30 30 20 69 6E 20 68 65 78    t.....100 in hex
010190:  61 64 65 63 69 6D 61 6C 20 69 73 20 30 30 36 34    adecimal is 0064
0101A0:  0D 0A 0D 0A 3E 70 61 0D 0A 57 52 49 54 45 48 45    ....>pa..WRITEHE
0101B0:  58 28 69 6E 74 65 67 65 72 2C 77 69 64 74 68 29    X(integer,width)
0101C0:  0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 65 20    ....Effect:.The 
0101D0:  69 6E 74 65 67 65 72 90 20 69 73 90 20 6F 75 74    integer. is. out
0101E0:  70 75 74 90 20 61 73 90 20 61 6E 90 20 75 6E 73    put. as. an. uns
0101F0:  69 67 6E 65 64 90 20 68 65 78 61 64 65 63 69 6D    igned. hexadecim
010200:  61 6C 20 0D 8A 09 69 6E 74 65 67 65 72 2C 20 72    al ...integer, r
010210:  69 67 68 74 20 6A 75 73 74 69 66 69 65 64 20 69    ight justified i
010220:  6E 90 20 61 90 20 66 69 65 6C 64 20 6F 66 20 74    n. a. field of t
010230:  68 65 20 73 70 65 63 69 66 69 65 64 20 0D 8A 09    he specified ...
010240:  77 69 64 74 68 2C 90 20 77 69 74 68 90 20 6C 65    width,. with. le
010250:  61 64 69 6E 67 90 90 20 7A 65 72 6F 73 2E 90 90    ading.. zeros...
010260:  20 49 66 90 90 20 74 68 69 73 90 90 20 77 69 64     If.. this.. wid
010270:  74 68 90 20 69 73 20 0D 8A 09 69 6E 73 75 66 66    th. is ...insuff
010280:  69 63 69 65 6E 74 20 74 68 65 6E 90 20 74 68 65    icient then. the
010290:  90 20 6C 65 61 73 74 90 20 73 69 67 6E 69 66 69    . least. signifi
0102A0:  63 61 6E 74 90 20 64 69 67 69 74 73 20 61 72 65    cant. digits are
0102B0:  20 0D 8A 09 6F 75 74 70 75 74 2E 0D 0A 0D 0A 52     ...output.....R
0102C0:  65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D    eturns:.Nothing.
0102D0:  0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49    ...Location:.CLI
0102E0:  42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D    BHDR, ALIBHDR...
0102F0:  0A 45 78 61 6D 70 6C 65 3A 09 77 72 69 74 65 68    .Example:.writeh
010300:  65 78 28 6E 75 6D 62 65 72 2C 34 29 0D 0A 0D 0A    ex(number,4)....
010310:  0D 0A 57 52 49 54 45 4E 28 69 6E 74 65 67 65 72    ..WRITEN(integer
010320:  29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 65    )....Effect:.The
010330:  20 69 6E 74 65 67 65 72 20 69 73 20 6F 75 74 70     integer is outp
010340:  75 74 20 69 6E 20 64 65 63 69 6D 61 6C 20 69 6E    ut in decimal in
010350:  20 74 68 65 20 6D 69 6E 69 6D 75 6D 20 77 69 64     the minimum wid
010360:  74 68 2E 20 0D 8A 09 54 68 69 73 20 69 73 20 74    th. ...This is t
010370:  68 65 20 73 61 6D 65 20 61 73 20 57 52 49 54 45    he same as WRITE
010380:  44 28 69 6E 74 65 67 65 72 2C 30 29 2E 0D 0A 0D    D(integer,0)....
010390:  0A 52 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E    .Returns:.Nothin
0103A0:  67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43    g....Location:.C
0103B0:  4C 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D    LIBHDR, ALIBHDR.
0103C0:  0A 0D 0A 0D 0A 57 52 49 54 45 4F 43 54 28 69 6E    .....WRITEOCT(in
0103D0:  74 65 67 65 72 2C 77 69 64 74 68 29 0D 0A 0D 0A    teger,width)....
0103E0:  45 66 66 65 63 74 3A 09 54 68 65 20 69 6E 74 65    Effect:.The inte
0103F0:  67 65 72 20 69 73 20 6F 75 74 70 75 74 90 20 61    ger is output. a
010400:  73 90 20 61 6E 90 20 75 6E 73 69 67 6E 65 64 20    s. an. unsigned 
010410:  6F 63 74 61 6C 20 69 6E 74 65 67 65 72 2C 20 0D    octal integer, .
010420:  8A 09 72 69 67 68 74 20 6A 75 73 74 69 66 69 65    ..right justifie
010430:  64 20 69 6E 90 20 61 90 20 66 69 65 6C 64 90 20    d in. a. field. 
010440:  6F 66 90 20 74 68 65 20 73 70 65 63 69 66 69 65    of. the specifie
010450:  64 20 77 69 64 74 68 2C 20 0D 8A 09 77 69 74 68    d width, ...with
010460:  20 6C 65 61 64 69 6E 67 20 7A 65 72 6F 73 2E 20     leading zeros. 
010470:  49 66 20 74 68 69 73 20 77 69 64 74 68 20 69 73    If this width is
010480:  20 69 6E 73 75 66 66 69 63 69 65 6E 74 20 74 68     insufficient th
010490:  65 6E 20 0D 8A 09 74 68 65 20 6C 65 61 73 74 20    en ...the least 
0104A0:  73 69 67 6E 69 66 69 63 61 6E 74 20 64 69 67 69    significant digi
0104B0:  74 73 20 61 72 65 20 6F 75 74 70 75 74 2E 0D 0A    ts are output...
0104C0:  0D 0A 52 65 74 75 72 6E 73 3A 09 4E 6F 74 68 69    ..Returns:.Nothi
0104D0:  6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09    ng....Location:.
0104E0:  43 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52    CLIBHDR, ALIBHDR
0104F0:  0D 0A 0D 0A 45 78 61 6D 70 6C 65 3A 09 77 72 69    ....Example:.wri
010500:  74 65 6F 63 74 28 6E 75 6D 62 65 72 2C 36 29 0D    teoct(number,6).
010510:  0A 0D 0A 0D 0A 57 52 49 54 45 53 28 73 74 72 69    .....WRITES(stri
010520:  6E 67 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54    ng)....Effect:.T
010530:  68 65 20 73 74 72 69 6E 67 20 69 73 20 6F 75 74    he string is out
010540:  70 75 74 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A    put.....Returns:
010550:  09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61    .Nothing....Loca
010560:  74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41    tion:.CLIBHDR, A
010570:  4C 49 42 48 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C    LIBHDR....Exampl
010580:  65 3A 09 77 72 69 74 65 73 28 22 45 6E 74 65 72    e:.writes("Enter
010590:  20 66 69 6C 65 6E 61 6D 65 3A 20 22 29 0D 0A 0D     filename: ")...
0105A0:  0A 3E 70 61 0D 0A 57 52 49 54 45 54 28 73 74 72    .>pa..WRITET(str
0105B0:  69 6E 67 2C 77 69 64 74 68 29 0D 0A 0D 0A 45 66    ing,width)....Ef
0105C0:  66 65 63 74 3A 09 54 68 65 20 73 74 72 69 6E 67    fect:.The string
0105D0:  20 69 73 20 6F 75 74 70 75 74 20 69 6E 90 20 74     is output in. t
0105E0:  68 65 20 73 70 65 63 69 66 69 65 64 20 66 69 65    he specified fie
0105F0:  6C 64 20 77 69 64 74 68 2E 20 49 66 20 0D 8A 09    ld width. If ...
010600:  74 68 65 20 77 69 64 74 68 20 69 73 20 6C 6F 6E    the width is lon
010610:  67 65 72 90 20 74 68 61 6E 90 20 74 68 65 90 20    ger. than. the. 
010620:  73 74 72 69 6E 67 20 74 68 65 6E 20 73 70 61 63    string then spac
010630:  65 73 20 61 72 65 20 0D 8A 09 6F 75 74 70 75 74    es are ...output
010640:  20 61 74 20 74 68 65 20 72 69 67 68 74 2E 20 49     at the right. I
010650:  66 20 74 68 65 90 20 77 69 64 74 68 20 69 73 20    f the. width is 
010660:  73 68 6F 72 74 65 72 20 74 68 61 6E 20 74 68 65    shorter than the
010670:  20 0D 8A 09 73 74 72 69 6E 67 2C 20 74 68 65 20     ...string, the 
010680:  77 68 6F 6C 65 20 73 74 72 69 6E 67 20 69 73 20    whole string is 
010690:  70 72 69 6E 74 65 64 2E 0D 0A 0D 0A 52 65 74 75    printed.....Retu
0106A0:  72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A    rns:.Nothing....
0106B0:  4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44    Location:.CLIBHD
0106C0:  52 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A 0D 0A    R1, ALIBHDR1....
0106D0:  0D 0A 57 52 49 54 45 55 28 75 6E 73 69 67 6E 65    ..WRITEU(unsigne
0106E0:  64 2C 77 69 64 74 68 29 0D 0A 0D 0A 45 66 66 65    d,width)....Effe
0106F0:  63 74 3A 09 54 68 65 20 66 69 72 73 74 20 70 61    ct:.The first pa
010700:  72 61 6D 65 74 65 72 20 69 73 20 74 72 65 61 74    rameter is treat
010710:  65 64 90 20 61 73 20 61 6E 20 75 6E 73 69 67 6E    ed. as an unsign
010720:  65 64 20 69 6E 74 65 67 65 72 20 0D 8A 09 61 6E    ed integer ...an
010730:  64 90 20 6F 75 74 70 75 74 90 20 69 6E 90 20 64    d. output. in. d
010740:  65 63 69 6D 61 6C 2C 90 90 20 72 69 67 68 74 90    ecimal,.. right.
010750:  90 20 6A 75 73 74 69 66 69 65 64 90 20 69 6E 90    . justified. in.
010760:  20 74 68 65 20 0D 8A 09 73 70 65 63 69 66 69 65     the ...specifie
010770:  64 20 77 69 64 74 68 2E 20 49 66 20 74 68 65 20    d width. If the 
010780:  77 69 64 74 68 90 20 69 73 20 74 6F 6F 20 73 6D    width. is too sm
010790:  61 6C 6C 20 74 68 65 20 6E 75 6D 62 65 72 20 0D    all the number .
0107A0:  8A 09 69 73 20 70 72 69 6E 74 65 64 20 69 6E 90    ..is printed in.
0107B0:  20 74 68 65 90 20 6D 69 6E 69 6D 75 6D 90 20 77     the. minimum. w
0107C0:  69 64 74 68 2E 90 20 54 68 65 20 6E 75 6D 62 65    idth.. The numbe
0107D0:  72 20 6F 75 74 70 75 74 20 0D 8A 09 77 69 6C 6C    r output ...will
0107E0:  20 62 65 20 69 6E 20 74 68 65 20 72 61 6E 67 65     be in the range
0107F0:  20 28 30 2C 36 35 35 33 35 29 2E 0D 0A 0D 0A 52     (0,65535).....R
010800:  65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D    eturns:.Nothing.
010810:  0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49    ...Location:.CLI
010820:  42 48 44 52 31 2C 20 41 4C 49 42 48 44 52 31 0D    BHDR1, ALIBHDR1.
010830:  0A 3E 70 61 0D 0A E2 28 62 29 20 49 6E 70 75 74    .>pa...(b) Input
010840:  20 52 6F 75 74 69 6E 65 73 E2 0D 0A 0D 0A 0D 0A     Routines.......
010850:  52 44 43 48 28 29 0D 0A 0D 0A 45 66 66 65 63 74    RDCH()....Effect
010860:  3A 09 52 65 61 64 73 20 61 20 63 68 61 72 61 63    :.Reads a charac
010870:  74 65 72 20 66 72 6F 6D 20 74 68 65 20 63 75 72    ter from the cur
010880:  72 65 6E 74 20 69 6E 70 75 74 20 73 74 72 65 61    rent input strea
010890:  6D 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54    m.....Returns:.T
0108A0:  68 65 20 63 68 61 72 61 63 74 65 72 20 72 65 61    he character rea
0108B0:  64 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09    d.....Location:.
0108C0:  43 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52    CLIBHDR, ALIBHDR
0108D0:  0D 0A 0D 0A 0D 0A 52 45 41 44 4E 28 29 0D 0A 0D    ......READN()...
0108E0:  0A 45 66 66 65 63 74 3A 09 52 65 61 64 73 20 61    .Effect:.Reads a
0108F0:  20 64 65 63 69 6D 61 6C 20 69 6E 74 65 67 65 72     decimal integer
010900:  20 66 72 6F 6D 20 74 68 65 20 63 75 72 72 65 6E     from the curren
010910:  74 20 69 6E 70 75 74 20 73 74 72 65 61 6D 2E 20    t input stream. 
010920:  0D 8A 09 4C 65 61 64 69 6E 67 20 73 70 61 63 65    ...Leading space
010930:  73 20 61 72 65 20 69 67 6E 6F 72 65 64 2E 0D 0A    s are ignored...
010940:  0D 0A 52 65 74 75 72 6E 73 3A 09 54 68 65 20 6E    ..Returns:.The n
010950:  75 6D 62 65 72 20 72 65 61 64 2E 0D 0A 0D 0A 4C    umber read.....L
010960:  6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52    ocation:.CLIBHDR
010970:  2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 0D 0A 52    , ALIBHDR......R
010980:  45 41 44 53 28 73 74 72 69 6E 67 29 0D 0A 0D 0A    EADS(string)....
010990:  45 66 66 65 63 74 3A 09 41 20 73 74 72 69 6E 67    Effect:.A string
0109A0:  20 69 73 20 72 65 61 64 90 20 66 72 6F 6D 90 20     is read. from. 
0109B0:  74 68 65 90 20 63 75 72 72 65 6E 74 20 69 6E 70    the. current inp
0109C0:  75 74 20 73 74 72 65 61 6D 2E 20 54 68 65 20 0D    ut stream. The .
0109D0:  8A 09 70 61 72 61 6D 65 74 65 72 20 69 73 20 61    ..parameter is a
0109E0:  90 20 76 65 63 74 6F 72 90 20 69 6E 90 20 77 68    . vector. in. wh
0109F0:  69 63 68 90 20 74 68 65 90 20 73 74 72 69 6E 67    ich. the. string
010A00:  20 77 69 6C 6C 20 62 65 20 0D 8A 09 73 74 6F 72     will be ...stor
010A10:  65 64 2E 20 54 68 65 20 73 74 72 69 6E 67 20 6D    ed. The string m
010A20:  75 73 74 90 20 62 65 90 20 74 65 72 6D 69 6E 61    ust. be. termina
010A30:  74 65 64 90 20 62 79 20 61 20 63 61 72 72 69 61    ted. by a carria
010A40:  67 65 20 0D 8A 09 72 65 74 75 72 6E 2E 20 54 68    ge ...return. Th
010A50:  65 20 44 45 4C 2C 20 6F 72 90 20 7B 44 45 4C 90    e DEL, or. {DEL.
010A60:  20 6B 65 79 90 20 6D 61 79 90 20 62 65 20 75 73     key. may. be us
010A70:  65 64 20 74 6F 20 64 65 6C 65 74 65 20 0D 8A 09    ed to delete ...
010A80:  62 61 63 6B 77 61 72 64 73 2E 20 49 66 20 45 53    backwards. If ES
010A90:  43 20 6F 72 20 53 54 4F 50 90 20 69 73 90 20 70    C or STOP. is. p
010AA0:  72 65 73 73 65 64 20 77 68 65 6E 20 74 68 65 20    ressed when the 
010AB0:  63 75 72 73 6F 72 20 0D 8A 09 69 73 20 6E 6F 74    cursor ...is not
010AC0:  20 61 74 20 74 68 65 20 73 74 61 72 74 20 6F 66     at the start of
010AD0:  90 20 74 68 65 20 73 74 72 69 6E 67 2C 20 61 6C    . the string, al
010AE0:  6C 20 63 68 61 72 61 63 74 65 72 73 20 61 72 65    l characters are
010AF0:  20 0D 8A 09 64 65 6C 65 74 65 64 2E 20 49 66 20     ...deleted. If 
010B00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
010B10:  0E 00 00 00 02 09 50 E5 0E 00 C1 02 00 00 00 02    ......P.........
010B20:  0E 00 C2 02 00 00 00 02 0E 00 C3 02 00 00 00 02    ................
010B30:  0E 00 C4 02 00 00 00 02 0E 00 C5 02 00 00 00 02    ................
010B40:  0E 00 C6 02 00 00 00 02 0E 00 C7 02 00 00 00 02    ................
010B50:  0E 00 C8 02 00 00 00 02 0E 00 C9 02 00 00 00 02    ................
010B60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010B70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010B80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010B90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010C00:  45 53 43 20 6F 72 20 53 54 4F 50 20 69 73 90 20    ESC or STOP is. 
010C10:  70 72 65 73 73 65 64 20 77 68 65 6E 20 74 68 65    pressed when the
010C20:  20 63 75 72 73 6F 72 20 69 73 20 0D 8A 09 61 74     cursor is ...at
010C30:  20 74 68 65 20 73 74 61 72 74 20 6F 66 20 74 68     the start of th
010C40:  65 20 73 74 72 69 6E 67 2C 20 61 20 73 74 72 69    e string, a stri
010C50:  6E 67 20 6F 66 20 7A 65 72 6F 20 6C 65 6E 67 74    ng of zero lengt
010C60:  68 20 69 73 20 0D 8A 09 72 65 74 75 72 6E 65 64    h is ...returned
010C70:  2E 20 54 68 65 20 73 74 72 69 6E 67 20 69 73 90    . The string is.
010C80:  20 6C 69 6D 69 74 65 64 90 20 74 6F 90 20 61 90     limited. to. a.
010C90:  20 6C 65 6E 67 74 68 20 6F 66 20 32 35 35 20 0D     length of 255 .
010CA0:  8A 09 62 79 74 65 73 2C 20 73 6F 20 74 68 65 20    ..bytes, so the 
010CB0:  76 65 63 74 6F 72 90 20 73 74 72 69 6E 67 90 20    vector. string. 
010CC0:  73 68 6F 75 6C 64 90 20 62 65 90 20 31 32 38 20    should. be. 128 
010CD0:  77 6F 72 64 73 20 69 6E 20 0D 8A 09 6C 65 6E 67    words in ...leng
010CE0:  74 68 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09    th.....Returns:.
010CF0:  46 41 4C 53 45 20 69 66 20 45 53 43 20 6F 72 20    FALSE if ESC or 
010D00:  53 54 4F 50 20 70 72 65 73 73 65 64 2C 20 6F 74    STOP pressed, ot
010D10:  68 65 72 77 69 73 65 20 54 52 55 45 0D 0A 0D 0A    herwise TRUE....
010D20:  4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44    Location:.CLIBHD
010D30:  52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 45 78    R, ALIBHDR....Ex
010D40:  61 6D 70 6C 65 3A 09 4C 45 54 20 69 6E 70 75 74    ample:.LET input
010D50:  20 3D 20 56 45 43 20 31 32 38 0D 0A 09 55 4E 4C     = VEC 128...UNL
010D60:  45 53 53 20 72 65 61 64 73 28 69 6E 70 75 74 29    ESS reads(input)
010D70:  20 44 4F 20 65 72 72 6F 72 28 22 45 73 63 61 70     DO error("Escap
010D80:  65 22 29 0D 0A 0D 0A 3E 70 61 0D 0A 53 54 52 54    e")....>pa..STRT
010D90:  4F 4E 55 4D 28 73 74 72 69 6E 67 2C 62 61 73 65    ONUM(string,base
010DA0:  29 0D 0A 09 0D 0A 45 66 66 65 63 74 3A 09 54 68    ).....Effect:.Th
010DB0:  69 73 20 66 75 6E 63 74 69 6F 6E 20 74 61 6B 65    is function take
010DC0:  73 20 61 90 20 73 74 72 69 6E 67 90 20 61 73 90    s a. string. as.
010DD0:  20 69 74 73 20 66 69 72 73 74 20 70 61 72 61 6D     its first param
010DE0:  65 74 65 72 20 0D 8A 09 61 6E 64 20 74 68 65 20    eter ...and the 
010DF0:  62 61 73 65 20 6F 66 20 74 68 65 20 72 65 73 75    base of the resu
010E00:  6C 74 90 20 61 73 20 69 74 73 20 73 65 63 6F 6E    lt. as its secon
010E10:  64 2E 20 49 74 20 63 6F 6E 76 65 72 74 73 20 0D    d. It converts .
010E20:  8A 09 74 68 65 20 73 74 72 69 6E 67 20 74 6F 20    ..the string to 
010E30:  61 20 6E 75 6D 62 65 72 20 69 6E 90 20 74 68 61    a number in. tha
010E40:  74 20 62 61 73 65 20 61 6E 64 20 72 65 74 75 72    t base and retur
010E50:  6E 73 20 69 74 20 61 73 20 0D 8A 09 74 68 65 20    ns it as ...the 
010E60:  72 65 73 75 6C 74 2E 0D 0A 0D 0A 52 65 74 75 72    result.....Retur
010E70:  6E 73 3A 09 54 68 65 20 6E 75 6D 62 65 72 20 6F    ns:.The number o
010E80:  62 74 61 69 6E 65 64 20 62 79 20 74 68 65 20 63    btained by the c
010E90:  6F 6E 76 65 72 73 69 6F 6E 0D 0A 0D 0A 4C 6F 63    onversion....Loc
010EA0:  61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20    ation:.CLIBHDR, 
010EB0:  41 4C 49 42 48 44 52 0D 0A 0D 0A 45 78 61 6D 70    ALIBHDR....Examp
010EC0:  6C 65 3A 09 41 20 52 45 41 44 58 20 66 75 6E 63    le:.A READX func
010ED0:  74 69 6F 6E 90 20 74 6F 90 20 69 6E 70 75 74 90    tion. to. input.
010EE0:  20 61 90 20 68 65 78 61 64 65 63 69 6D 61 6C 90     a. hexadecimal.
010EF0:  20 6E 75 6D 62 65 72 20 69 73 20 0D 8A 09 65 61     number is ...ea
010F00:  73 69 6C 79 20 77 72 69 74 74 65 6E 3A 0D 0A 09    sily written:...
010F10:  09 4C 45 54 20 72 65 61 64 78 28 29 20 3D 20 56    .LET readx() = V
010F20:  41 4C 4F 46 0D 0A 0D 0A 09 09 24 28 20 0D 0A 09    ALOF......$( ...
010F30:  20 20 20 20 20 20 20 20 20 20 20 4C 45 54 20 73               LET s
010F40:  74 72 69 6E 67 20 3D 20 56 45 43 20 31 32 38 0D    tring = VEC 128.
010F50:  0A 09 20 20 20 20 20 20 20 20 20 20 20 72 65 61    ..           rea
010F60:  64 73 28 73 74 72 69 6E 67 29 0D 0A 09 20 20 20    ds(string)...   
010F70:  20 20 20 20 20 20 20 20 52 45 53 55 4C 54 49 53            RESULTIS
010F80:  20 73 74 72 74 6F 6E 75 6D 28 73 74 72 69 6E 67     strtonum(string
010F90:  2C 31 36 29 0D 0A 09 09 24 29 0D 0A 0D 0A 0D 0A    ,16)....$)......
010FA0:  55 4E 52 44 43 48 28 29 0D 0A 0D 0A 45 66 66 65    UNRDCH()....Effe
010FB0:  63 74 3A 09 50 75 74 73 20 62 61 63 6B 20 74 68    ct:.Puts back th
010FC0:  65 20 6C 61 73 74 90 20 63 68 61 72 61 63 74 65    e last. characte
010FD0:  72 90 20 72 65 61 64 20 66 72 6F 6D 20 74 68 65    r. read from the
010FE0:  20 63 75 72 72 65 6E 74 6C 79 20 0D 8A 09 73 65     currently ...se
010FF0:  6C 65 63 74 65 64 20 73 74 72 65 61 6D 2E 20 54    lected stream. T
011000:  68 69 73 90 20 72 6F 75 74 69 6E 65 90 20 73 68    his. routine. sh
011010:  6F 75 6C 64 90 20 6E 6F 74 90 20 62 65 20 63 61    ould. not. be ca
011020:  6C 6C 65 64 20 0D 8A 09 74 77 69 63 65 20 77 69    lled ...twice wi
011030:  74 68 6F 75 74 20 61 6E 20 69 6E 74 65 72 76 65    thout an interve
011040:  6E 69 6E 67 20 63 61 6C 6C 90 20 74 6F 20 52 44    ning call. to RD
011050:  43 48 2C 20 74 68 65 20 73 65 63 6F 6E 64 20 0D    CH, the second .
011060:  8A 09 63 61 6C 6C 20 77 69 6C 6C 90 20 68 61 76    ..call will. hav
011070:  65 90 20 6E 6F 90 20 65 66 66 65 63 74 2E 90 20    e. no. effect.. 
011080:  43 68 61 72 61 63 74 65 72 73 90 20 63 61 6E 90    Characters. can.
011090:  20 6F 6E 6C 79 20 62 65 20 0D 8A 09 72 65 74 75     only be ...retu
0110A0:  72 6E 65 64 20 74 6F 20 74 68 65 20 63 75 72 72    rned to the curr
0110B0:  65 6E 74 90 20 73 74 72 65 61 6D 90 20 69 66 90    ent. stream. if.
0110C0:  20 52 44 43 48 20 69 73 20 75 73 65 64 2C 20 74     RDCH is used, t
0110D0:  68 65 20 0D 8A 09 66 61 63 69 6C 69 74 79 20 69    he ...facility i
0110E0:  73 20 6E 6F 74 20 70 72 6F 76 69 64 65 64 20 61    s not provided a
0110F0:  74 90 20 74 68 65 20 70 72 69 6D 69 74 69 76 65    t. the primitive
011100:  20 49 2F 4F 20 72 6F 75 74 69 6E 65 20 0D 8A 09     I/O routine ...
011110:  6C 65 76 65 6C 20 28 74 68 61 74 20 69 73 20 52    level (that is R
011120:  44 56 44 55 20 61 6E 64 20 52 45 41 44 43 48 29    DVDU and READCH)
011130:  2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E 6F    .....Returns:.No
011140:  74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F    thing....Locatio
011150:  6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 42    n:.CLIBHDR, ALIB
011160:  48 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C 65 3A 09    HDR....Example:.
011170:  63 68 20 3A 3D 20 72 64 63 68 28 29 20 52 45 50    ch := rdch() REP
011180:  45 41 54 55 4E 54 49 4C 20 63 68 3D 31 33 0D 0A    EATUNTIL ch=13..
011190:  09 75 6E 72 64 63 68 28 29 0D 0A 0D 0A 3E 70 61    .unrdch()....>pa
0111A0:  0D 0A E2 28 63 29 20 53 74 72 65 61 6D 20 53 65    ...(c) Stream Se
0111B0:  6C 65 63 74 69 6F 6E 20 52 6F 75 74 69 6E 65 73    lection Routines
0111C0:  E2 0D 0A 0D 0A 0D 0A 49 4E 50 55 54 28 29 0D 0A    .......INPUT()..
0111D0:  0D 0A 45 66 66 65 63 74 3A 09 54 68 69 73 20 77    ..Effect:.This w
0111E0:  69 6C 6C 90 20 72 65 74 75 72 6E 90 20 61 90 20    ill. return. a. 
0111F0:  76 61 6C 75 65 90 20 72 65 70 72 65 73 65 6E 74    value. represent
011200:  69 6E 67 90 20 74 68 65 20 63 75 72 72 65 6E 74    ing. the current
011210:  20 0D 8A 09 69 6E 70 75 74 20 73 74 72 65 61 6D     ...input stream
011220:  2E 20 5A 65 72 6F 20 6D 65 61 6E 73 90 20 74 68    . Zero means. th
011230:  65 90 20 6B 65 79 62 6F 61 72 64 20 69 73 20 74    e. keyboard is t
011240:  68 65 20 63 75 72 72 65 6E 74 20 0D 8A 09 69 6E    he current ...in
011250:  70 75 74 20 73 74 72 65 61 6D 2C 20 61 6E 79 20    put stream, any 
011260:  6F 74 68 65 72 90 20 76 61 6C 75 65 90 20 69 73    other. value. is
011270:  90 20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66    . the address of
011280:  20 74 68 65 20 0D 8A 09 62 75 66 66 65 72 20 61     the ...buffer a
011290:  73 73 6F 63 69 61 74 65 64 20 77 69 74 68 20 74    ssociated with t
0112A0:  68 65 90 20 66 69 6C 65 90 20 66 72 6F 6D 90 20    he. file. from. 
0112B0:  77 68 69 63 68 20 69 6E 70 75 74 20 69 73 20 0D    which input is .
0112C0:  8A 09 62 65 69 6E 67 20 74 61 6B 65 6E 2E 0D 0A    ..being taken...
0112D0:  0D 0A 52 65 74 75 72 6E 73 3A 09 54 68 65 20 63    ..Returns:.The c
0112E0:  75 72 72 65 6E 74 20 69 6E 70 75 74 20 73 74 72    urrent input str
0112F0:  65 61 6D 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A    eam....Location:
011300:  09 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 48 44    .CLIBHDR, ALIBHD
011310:  52 0D 0A 0D 0A 0D 0A 4F 55 54 50 55 54 28 29 0D    R......OUTPUT().
011320:  0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 69 73 20    ...Effect:.This 
011330:  77 69 6C 6C 90 20 72 65 74 75 72 6E 90 20 61 90    will. return. a.
011340:  20 76 61 6C 75 65 90 20 72 65 70 72 65 73 65 6E     value. represen
011350:  74 69 6E 67 90 20 74 68 65 20 63 75 72 72 65 6E    ting. the curren
011360:  74 20 0D 8A 09 6F 75 74 70 75 74 20 73 74 72 65    t ...output stre
011370:  61 6D 2E 90 20 5A 65 72 6F 90 20 6D 65 61 6E 73    am.. Zero. means
011380:  90 20 74 68 65 90 20 56 44 55 90 20 69 73 90 20    . the. VDU. is. 
011390:  74 68 65 20 63 75 72 72 65 6E 74 20 0D 8A 09 73    the current ...s
0113A0:  74 72 65 61 6D 2C 20 6F 6E 65 20 6D 65 61 6E 73    tream, one means
0113B0:  20 74 68 65 90 20 70 72 69 6E 74 65 72 90 20 69     the. printer. i
0113C0:  73 20 74 68 65 20 63 75 72 72 65 6E 74 20 73 74    s the current st
0113D0:  72 65 61 6D 2C 20 0D 8A 09 61 6E 79 90 20 6F 74    ream, ...any. ot
0113E0:  68 65 72 90 20 76 61 6C 75 65 90 20 69 73 90 90    her. value. is..
0113F0:  20 74 68 65 90 90 20 61 64 64 72 65 73 73 90 20     the.. address. 
011400:  6F 66 90 20 74 68 65 90 20 62 75 66 66 65 72 20    of. the. buffer 
011410:  0D 8A 09 61 73 73 6F 63 69 61 74 65 64 20 77 69    ...associated wi
011420:  74 68 20 74 68 65 90 20 66 69 6C 65 90 20 74 6F    th the. file. to
011430:  90 20 77 68 69 63 68 90 20 6F 75 74 70 75 74 90    . which. output.
011440:  20 69 73 20 62 65 69 6E 67 20 0D 8A 09 73 65 6E     is being ...sen
011450:  74 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54    t.....Returns:.T
011460:  68 65 20 63 75 72 72 65 6E 74 20 6F 75 74 70 75    he current outpu
011470:  74 20 73 74 72 65 61 6D 0D 0A 0D 0A 4C 6F 63 61    t stream....Loca
011480:  74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41    tion:.CLIBHDR, A
011490:  4C 49 42 48 44 52 0D 0A 0D 0A 0D 0A 53 45 4C 45    LIBHDR......SELE
0114A0:  43 54 49 4E 50 55 54 28 73 74 72 65 61 6D 29 0D    CTINPUT(stream).
0114B0:  0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 69 73 20    ...Effect:.This 
0114C0:  69 73 20 75 73 65 64 20 74 6F 90 20 63 68 61 6E    is used to. chan
0114D0:  67 65 90 20 74 68 65 90 20 63 75 72 72 65 6E 74    ge. the. current
0114E0:  6C 79 20 73 65 6C 65 63 74 65 64 20 69 6E 70 75    ly selected inpu
0114F0:  74 20 0D 8A 09 73 74 72 65 61 6D 20 28 69 2E 65    t ...stream (i.e
011500:  2E 20 74 68 61 74 20 75 73 65 64 90 20 62 79 90    . that used. by.
011510:  20 72 64 63 68 29 2E 90 20 41 90 20 73 74 72 65     rdch).. A. stre
011520:  61 6D 20 76 61 6C 75 65 20 6F 66 20 0D 8A 09 7A    am value of ...z
011530:  65 72 6F 20 73 65 6C 65 63 74 73 20 74 68 65 20    ero selects the 
011540:  6B 65 79 62 6F 61 72 64 2E 20 41 6E 79 20 6F 74    keyboard. Any ot
011550:  68 65 72 20 76 61 6C 75 65 20 6D 75 73 74 20 62    her value must b
011560:  65 20 74 68 65 20 0D 8A 09 61 64 64 72 65 73 73    e the ...address
011570:  20 6F 66 20 74 68 65 90 20 62 75 66 66 65 72 90     of the. buffer.
011580:  20 61 73 73 6F 63 69 61 74 65 64 90 20 77 69 74     associated. wit
011590:  68 90 20 61 90 20 66 69 6C 65 2C 20 61 6E 64 20    h. a. file, and 
0115A0:  0D 8A 09 63 61 75 73 65 73 20 69 6E 70 75 74 20    ...causes input 
0115B0:  74 6F 20 62 65 20 74 61 6B 65 6E 20 66 72 6F 6D    to be taken from
0115C0:  20 74 68 61 74 20 66 69 6C 65 2E 20 54 68 65 20     that file. The 
0115D0:  66 69 6C 65 20 6D 75 73 74 20 0D 8A 09 70 72 65    file must ...pre
0115E0:  76 69 6F 75 73 6C 79 20 68 61 76 65 20 62 65 65    viously have bee
0115F0:  6E 20 6F 70 65 6E 65 64 20 75 73 69 6E 67 20 46    n opened using F
011600:  49 4E 44 49 4E 50 55 54 2E 0D 0A 0D 0A 52 65 74    INDINPUT.....Ret
011610:  75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D 0A 0D    urns:.Nothing...
011620:  0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48    .Location:.CLIBH
011630:  44 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 3E    DR, ALIBHDR....>
011640:  70 61 0D 0A 53 45 4C 45 43 54 4F 55 54 50 55 54    pa..SELECTOUTPUT
011650:  28 73 74 72 65 61 6D 29 0D 0A 0D 0A 45 66 66 65    (stream)....Effe
011660:  63 74 3A 09 54 68 69 73 20 69 73 20 75 73 65 64    ct:.This is used
011670:  20 74 6F 90 20 63 68 61 6E 67 65 90 20 74 68 65     to. change. the
011680:  20 63 75 72 72 65 6E 74 6C 79 20 73 65 6C 65 63     currently selec
011690:  74 65 64 20 6F 75 74 70 75 74 20 0D 8A 09 73 74    ted output ...st
0116A0:  72 65 61 6D 20 28 69 2E 65 2E 20 74 68 61 74 20    ream (i.e. that 
0116B0:  75 73 65 64 20 62 79 20 77 72 63 68 2C 20 77 72    used by wrch, wr
0116C0:  69 74 65 66 20 65 74 63 2E 29 2E 20 41 20 73 74    itef etc.). A st
0116D0:  72 65 61 6D 20 0D 8A 09 76 61 6C 75 65 20 6F 66    ream ...value of
0116E0:  20 7A 65 72 6F 20 73 65 6C 65 63 74 73 20 74 68     zero selects th
0116F0:  65 20 56 44 55 2C 90 20 61 20 76 61 6C 75 65 20    e VDU,. a value 
011700:  6F 66 20 6F 6E 65 20 73 65 6C 65 63 74 73 20 0D    of one selects .
011710:  8A 09 74 68 65 20 70 72 69 6E 74 65 72 2E 20 41    ..the printer. A
011720:  6E 79 20 6F 74 68 65 72 90 20 76 61 6C 75 65 90    ny other. value.
011730:  20 6D 75 73 74 90 20 62 65 20 74 68 65 20 61 64     must. be the ad
011740:  64 72 65 73 73 20 6F 66 20 0D 8A 09 74 68 65 20    dress of ...the 
011750:  62 75 66 66 65 72 20 61 73 73 6F 63 69 61 74 65    buffer associate
011760:  64 20 77 69 74 68 90 20 61 90 20 66 69 6C 65 2C    d with. a. file,
011770:  20 61 6E 64 20 63 61 75 73 65 73 20 6F 75 74 70     and causes outp
011780:  75 74 20 0D 8A 09 74 6F 20 62 65 20 73 65 6E 74    ut ...to be sent
011790:  90 20 74 6F 90 20 74 68 61 74 90 20 66 69 6C 65    . to. that. file
0117A0:  2E 90 20 54 68 65 90 20 66 69 6C 65 90 20 6D 75    .. The. file. mu
0117B0:  73 74 20 68 61 76 65 20 62 65 65 6E 20 0D 8A 09    st have been ...
0117C0:  70 72 65 76 69 6F 75 73 6C 79 20 6F 70 65 6E 65    previously opene
0117D0:  64 20 75 73 69 6E 67 20 46 49 4E 44 4F 55 54 50    d using FINDOUTP
0117E0:  55 54 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09    UT.....Returns:.
0117F0:  4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74    Nothing....Locat
011800:  69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C    ion:.CLIBHDR, AL
011810:  49 42 48 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C 65    IBHDR....Example
011820:  73 3A 09 73 65 6C 65 63 74 6F 75 74 70 75 74 28    s:.selectoutput(
011830:  6F 75 74 66 69 6C 65 62 75 66 29 0D 0A 09 73 65    outfilebuf)...se
011840:  6C 65 63 74 6F 75 74 70 75 74 28 70 72 69 6E 74    lectoutput(print
011850:  73 74 72 65 61 6D 29 0D 0A 0D 0A 0D 0A 0D 0A 0D    stream).........
011860:  0A E2 28 64 29 20 46 69 6C 65 20 49 2F 4F 20 52    ..(d) File I/O R
011870:  6F 75 74 69 6E 65 73 E2 0D 0A 0D 0A 0D 0A 45 4E    outines.......EN
011880:  44 52 45 41 44 28 29 0D 0A 0D 0A 45 66 66 65 63    DREAD()....Effec
011890:  74 3A 09 54 68 65 20 63 75 72 72 65 6E 74 6C 79    t:.The currently
0118A0:  20 73 65 6C 65 63 74 65 64 20 69 6E 70 75 74 20     selected input 
0118B0:  73 74 72 65 61 6D 20 69 73 20 63 6C 6F 73 65 64    stream is closed
0118C0:  2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 52    .....Returns:.TR
0118D0:  55 45 20 69 66 20 74 68 65 90 20 66 69 6C 65 90    UE if the. file.
0118E0:  20 77 61 73 90 20 63 6C 6F 73 65 64 90 20 73 75     was. closed. su
0118F0:  63 63 65 73 73 66 75 6C 6C 79 2C 20 46 41 4C 53    ccessfully, FALS
011900:  45 20 69 66 20 0D 8A 09 6E 6F 74 2E 0D 0A 0D 0A    E if ...not.....
011910:  4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44    Location:.CLIBHD
011920:  52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 0D 0A    R, ALIBHDR......
011930:  45 4E 44 57 52 49 54 45 28 29 0D 0A 0D 0A 45 66    ENDWRITE()....Ef
011940:  66 65 63 74 3A 09 54 68 65 20 63 75 72 72 65 6E    fect:.The curren
011950:  74 6C 79 20 73 65 6C 65 63 74 65 64 20 6F 75 74    tly selected out
011960:  70 75 74 20 73 74 72 65 61 6D 90 20 69 73 20 63    put stream. is c
011970:  6C 6F 73 65 64 2E 20 49 74 20 69 73 20 0D 8A 09    losed. It is ...
011980:  65 73 73 65 6E 74 69 61 6C 20 74 68 61 74 20 65    essential that e
011990:  69 74 68 65 72 20 74 68 69 73 20 72 6F 75 74 69    ither this routi
0119A0:  6E 65 20 6F 72 20 43 4C 4F 53 45 4F 55 54 20 69    ne or CLOSEOUT i
0119B0:  73 20 75 73 65 64 20 0D 8A 09 61 66 74 65 72 20    s used ...after 
0119C0:  77 72 69 74 69 6E 67 20 74 6F 20 61 20 66 69 6C    writing to a fil
0119D0:  65 2C 20 61 73 20 69 74 20 63 61 75 73 65 73 20    e, as it causes 
0119E0:  74 68 65 20 6C 61 73 74 20 73 65 63 74 69 6F 6E    the last section
0119F0:  20 0D 8A 09 6F 66 20 64 61 74 61 20 74 6F 20 62     ...of data to b
011A00:  65 20 77 72 69 74 74 65 6E 20 74 6F 20 74 68 65    e written to the
011A10:  20 64 69 73 63 2E 0D 0A 0D 0A 52 65 74 75 72 6E     disc.....Return
011A20:  73 3A 09 54 52 55 45 20 69 66 20 74 68 65 20 66    s:.TRUE if the f
011A30:  69 6C 65 20 77 61 73 20 63 6C 6F 73 65 64 20 73    ile was closed s
011A40:  75 63 63 65 73 73 66 75 6C 6C 79 2C 20 65 6C 73    uccessfully, els
011A50:  65 20 46 41 4C 53 45 2E 0D 0A 0D 0A 4C 6F 63 61    e FALSE.....Loca
011A60:  74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41    tion:.CLIBHDR, A
011A70:  4C 49 42 48 44 52 0D 0A 0D 0A 3E 70 61 0D 0A 46    LIBHDR....>pa..F
011A80:  49 4E 44 49 4E 50 55 54 28 66 69 6C 65 6E 61 6D    INDINPUT(filenam
011A90:  65 2C 62 75 66 66 65 72 29 0D 0A 0D 0A 45 66 66    e,buffer)....Eff
011AA0:  65 63 74 3A 09 54 6F 20 6F 70 65 6E 20 61 6E 20    ect:.To open an 
011AB0:  69 6E 70 75 74 20 66 69 6C 65 2E 20 54 68 65 20    input file. The 
011AC0:  66 69 72 73 74 20 70 61 72 61 6D 65 74 65 72 20    first parameter 
011AD0:  69 73 20 61 20 73 74 72 69 6E 67 20 0D 8A 09 67    is a string ...g
011AE0:  69 76 69 6E 67 20 74 68 65 20 6E 61 6D 65 20 6F    iving the name o
011AF0:  66 20 74 68 65 20 66 69 6C 65 2E 20 54 68 65 20    f the file. The 
011B00:  73 65 63 6F 6E 64 20 70 61 72 61 6D 65 74 65 72    second parameter
011B10:  20 69 73 20 61 20 0D 8A 09 76 65 63 74 6F 72 20     is a ...vector 
011B20:  77 68 69 63 68 20 77 69 6C 6C 20 62 65 90 20 75    which will be. u
011B30:  73 65 64 90 20 66 6F 72 90 20 74 68 65 20 66 69    sed. for. the fi
011B40:  6C 65 20 62 75 66 66 65 72 2E 20 54 68 69 73 20    le buffer. This 
011B50:  0D 8A 09 76 65 63 74 6F 72 20 73 68 6F 75 6C 64    ...vector should
011B60:  20 62 65 20 38 32 90 20 77 6F 72 64 73 90 20 6C     be 82. words. l
011B70:  6F 6E 67 90 20 75 6E 64 65 72 90 20 43 50 2F 4D    ong. under. CP/M
011B80:  20 61 6E 64 20 31 30 32 34 20 0D 8A 09 77 6F 72     and 1024 ...wor
011B90:  64 73 20 6C 6F 6E 67 20 75 6E 64 65 72 20 41 4D    ds long under AM
011BA0:  53 44 4F 53 2E 20 54 68 65 90 20 66 69 6C 65 6E    SDOS. The. filen
011BB0:  61 6D 65 20 6D 75 73 74 20 62 65 20 61 20 76 61    ame must be a va
011BC0:  6C 69 64 20 0D 8A 09 43 50 2F 4D 20 6F 72 90 20    lid ...CP/M or. 
011BD0:  41 4D 53 44 4F 53 90 20 66 69 6C 65 6E 61 6D 65    AMSDOS. filename
011BE0:  2C 90 20 61 6E 64 90 20 6D 61 79 90 20 69 6E 63    ,. and. may. inc
011BF0:  6C 75 64 65 90 20 61 20 64 72 69 76 65 20 0D 8A    lude. a drive ..
011C00:  09 73 70 65 63 69 66 69 65 72 2E 0D 0A 0D 0A 52    .specifier.....R
011C10:  65 74 75 72 6E 73 3A 09 49 66 20 74 68 65 20 66    eturns:.If the f
011C20:  69 6C 65 20 77 61 73 20 6F 70 65 6E 65 64 90 20    ile was opened. 
011C30:  73 75 63 63 65 73 73 66 75 6C 6C 79 2C 20 74 68    successfully, th
011C40:  65 20 76 61 6C 75 65 20 27 54 52 55 45 27 20 0D    e value 'TRUE' .
011C50:  8A 09 69 73 20 72 65 74 75 72 6E 65 64 2C 20 6F    ..is returned, o
011C60:  74 68 65 72 77 69 73 65 20 27 46 41 4C 53 45 27    therwise 'FALSE'
011C70:  2E 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43    .....Location:.C
011C80:  4C 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D    LIBHDR, ALIBHDR.
011C90:  0A 0D 0A 45 78 61 6D 70 6C 65 3A 09 4C 45 54 20    ...Example:.LET 
011CA0:  69 6E 62 75 66 20 3D 20 56 45 43 20 38 32 0D 0A    inbuf = VEC 82..
011CB0:  09 54 45 53 54 20 66 69 6E 64 69 6E 70 75 74 28    .TEST findinput(
011CC0:  22 41 3A 6E 61 6D 65 73 2E 64 74 61 22 2C 69 6E    "A:names.dta",in
011CD0:  62 75 66 29 20 0D 0A 09 54 48 45 4E 20 73 65 6C    buf) ...THEN sel
011CE0:  65 63 74 69 6E 70 75 74 28 69 6E 62 75 66 29 0D    ectinput(inbuf).
011CF0:  0A 09 45 4C 53 45 20 65 72 72 6F 72 28 22 43 61    ..ELSE error("Ca
011D00:  6E 6E 6F 74 20 6F 70 65 6E 20 66 69 6C 65 22 29    nnot open file")
011D10:  0D 0A 0D 0A 0D 0A 46 49 4E 44 4F 55 54 50 55 54    ......FINDOUTPUT
011D20:  28 66 69 6C 65 6E 61 6D 65 2C 62 75 66 66 65 72    (filename,buffer
011D30:  29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 6F 20    )....Effect:.To 
011D40:  6F 70 65 6E 20 61 6E 90 20 6F 75 74 70 75 74 90    open an. output.
011D50:  20 66 69 6C 65 2E 90 20 54 68 65 90 20 66 69 72     file.. The. fir
011D60:  73 74 90 20 70 61 72 61 6D 65 74 65 72 90 20 69    st. parameter. i
011D70:  73 20 61 20 0D 8A 09 73 74 72 69 6E 67 90 20 67    s a ...string. g
011D80:  69 76 69 6E 67 90 20 74 68 65 90 20 6E 61 6D 65    iving. the. name
011D90:  90 20 6F 66 90 20 74 68 65 90 20 66 69 6C 65 2E    . of. the. file.
011DA0:  90 20 54 68 65 90 20 73 65 63 6F 6E 64 20 0D 8A    . The. second ..
011DB0:  09 70 61 72 61 6D 65 74 65 72 20 69 73 20 61 20    .parameter is a 
011DC0:  76 65 63 74 6F 72 20 77 68 69 63 68 20 77 69 6C    vector which wil
011DD0:  6C 90 20 62 65 20 75 73 65 64 20 66 6F 72 20 74    l. be used for t
011DE0:  68 65 20 66 69 6C 65 20 0D 8A 09 62 75 66 66 65    he file ...buffe
011DF0:  72 2E 20 54 68 69 73 20 76 65 63 74 6F 72 20 73    r. This vector s
011E00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
011E10:  0F 00 00 00 02 09 50 E5 0F 00 C1 02 00 00 00 02    ......P.........
011E20:  0F 00 C2 02 00 00 00 02 0F 00 C3 02 00 00 00 02    ................
011E30:  0F 00 C4 02 00 00 00 02 0F 00 C5 02 00 00 00 02    ................
011E40:  0F 00 C6 02 00 00 00 02 0F 00 C7 02 00 00 00 02    ................
011E50:  0F 00 C8 02 00 00 00 02 0F 00 C9 02 00 00 00 02    ................
011E60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011E70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011E80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011E90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011EA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011EB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011EC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011ED0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011EE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011EF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011F00:  68 6F 75 6C 64 20 62 65 20 38 32 20 77 6F 72 64    hould be 82 word
011F10:  73 20 6C 6F 6E 67 20 75 6E 64 65 72 20 43 50 2F    s long under CP/
011F20:  4D 20 0D 8A 09 61 6E 64 20 31 30 32 34 20 77 6F    M ...and 1024 wo
011F30:  72 64 73 20 6C 6F 6E 67 20 75 6E 64 65 72 20 41    rds long under A
011F40:  4D 53 44 4F 53 2E 20 54 68 65 20 66 69 6C 65 6E    MSDOS. The filen
011F50:  61 6D 65 20 6D 75 73 74 20 62 65 20 0D 8A 09 61    ame must be ...a
011F60:  20 76 61 6C 69 64 20 43 50 2F 4D 20 6F 72 90 20     valid CP/M or. 
011F70:  41 4D 53 44 4F 53 90 20 66 69 6C 65 6E 61 6D 65    AMSDOS. filename
011F80:  2C 90 20 61 6E 64 90 20 6D 61 79 20 69 6E 63 6C    ,. and. may incl
011F90:  75 64 65 20 61 20 0D 8A 09 64 72 69 76 65 20 73    ude a ...drive s
011FA0:  70 65 63 69 66 69 65 72 2E 0D 0A 0D 0A 52 65 74    pecifier.....Ret
011FB0:  75 72 6E 73 3A 09 49 66 20 74 68 65 20 66 69 6C    urns:.If the fil
011FC0:  65 20 77 61 73 20 6F 70 65 6E 65 64 90 20 73 75    e was opened. su
011FD0:  63 63 65 73 73 66 75 6C 6C 79 2C 20 74 68 65 20    ccessfully, the 
011FE0:  76 61 6C 75 65 20 27 54 52 55 45 27 20 0D 8A 09    value 'TRUE' ...
011FF0:  69 73 20 72 65 74 75 72 6E 65 64 2C 20 6F 74 68    is returned, oth
012000:  65 72 77 69 73 65 20 27 46 41 4C 53 45 27 2E 0D    erwise 'FALSE'..
012010:  0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49    ...Location:.CLI
012020:  42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D    BHDR, ALIBHDR...
012030:  0A 45 78 61 6D 70 6C 65 3A 09 4C 45 54 20 6F 75    .Example:.LET ou
012040:  74 62 75 66 20 3D 20 56 45 43 20 38 32 0D 0A 09    tbuf = VEC 82...
012050:  54 45 53 54 20 66 69 6E 64 6F 75 74 70 75 74 28    TEST findoutput(
012060:  22 41 3A 6E 61 6D 65 73 2E 64 74 61 22 2C 6F 75    "A:names.dta",ou
012070:  74 62 75 66 29 20 0D 0A 09 54 48 45 4E 20 73 65    tbuf) ...THEN se
012080:  6C 65 63 74 6F 75 74 70 75 74 28 6F 75 74 62 75    lectoutput(outbu
012090:  66 29 0D 0A 09 45 4C 53 45 20 65 72 72 6F 72 28    f)...ELSE error(
0120A0:  22 43 61 6E 6E 6F 74 20 6F 70 65 6E 20 66 69 6C    "Cannot open fil
0120B0:  65 22 29 0D 0A 0D 0A 3E 70 61 0D 0A 52 45 57 49    e")....>pa..REWI
0120C0:  4E 44 28 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09    ND()....Effect:.
0120D0:  54 68 65 20 63 75 72 72 65 6E 74 20 69 6E 70 75    The current inpu
0120E0:  74 20 73 74 72 65 61 6D 90 20 69 73 90 20 72 65    t stream. is. re
0120F0:  77 6F 75 6E 64 2E 90 20 49 66 20 74 68 65 20 63    wound.. If the c
012100:  75 72 72 65 6E 74 20 0D 8A 09 73 74 72 65 61 6D    urrent ...stream
012110:  20 69 73 20 74 68 65 20 6B 65 79 62 6F 61 72 64     is the keyboard
012120:  20 74 68 69 73 90 20 68 61 73 90 20 6E 6F 20 65     this. has. no e
012130:  66 66 65 63 74 2C 20 69 66 20 61 20 66 69 6C 65    ffect, if a file
012140:  20 0D 8A 09 74 68 65 20 66 69 6C 65 20 70 6F 69     ...the file poi
012150:  6E 74 65 72 20 69 73 20 73 65 74 20 74 6F 90 20    nter is set to. 
012160:  74 68 65 90 20 73 74 61 72 74 20 6F 66 20 74 68    the. start of th
012170:  65 20 66 69 6C 65 2C 20 73 6F 20 0D 8A 09 74 68    e file, so ...th
012180:  65 20 6E 65 78 74 20 69 6E 70 75 74 20 77 69 6C    e next input wil
012190:  6C 20 62 65 20 74 61 6B 65 6E 20 66 72 6F 6D 20    l be taken from 
0121A0:  74 68 65 20 73 74 61 72 74 2E 20 52 45 57 49 4E    the start. REWIN
0121B0:  44 20 69 73 20 0D 8A 09 6E 6F 74 20 70 72 6F 76    D is ...not prov
0121C0:  69 64 65 64 20 69 6E 20 74 68 65 20 41 4D 53 44    ided in the AMSD
0121D0:  4F 53 20 76 65 72 73 69 6F 6E 2E 0D 0A 0D 0A 52    OS version.....R
0121E0:  65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D    eturns:.Nothing.
0121F0:  0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49    ...Location:.CLI
012200:  42 48 44 52 0D 0A 0D 0A 0D 0A 3E 2D 2D 2D 21 2D    BHDR......>---!-
012210:  2D 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D    ----!-----!-----
012220:  2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D    --!-------!-----
012230:  2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D    --!-------!-----
012240:  2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52    --!-------!----R
012250:  0D 0A 0D 0A 45 78 61 6D 70 6C 65 20 6F 66 20 74    ....Example of t
012260:  68 65 20 75 73 65 20 6F 66 20 66 69 6C 65 20 49    he use of file I
012270:  2F 4F 20 72 6F 75 74 69 6E 65 73 3A 0D 0A 0D 0A    /O routines:....
012280:  09 09 4C 45 54 20 62 75 66 66 65 72 20 3D 20 56    ..LET buffer = V
012290:  45 43 20 31 30 32 34 0D 0A 09 09 4C 45 54 20 66    EC 1024....LET f
0122A0:  69 6C 65 6E 61 6D 65 20 3D 20 56 45 43 20 32 30    ilename = VEC 20
0122B0:  0D 0A 09 09 77 72 69 74 65 66 28 22 50 6C 65 61    ....writef("Plea
0122C0:  73 65 20 65 6E 74 65 72 20 74 68 65 20 6D 65 73    se enter the mes
0122D0:  73 61 67 65 20 66 69 6C 65 20 6E 61 6D 65 3A 20    sage file name: 
0122E0:  22 29 0D 0A 09 09 72 65 61 64 73 28 66 69 6C 65    ")....reads(file
0122F0:  6E 61 6D 65 29 0D 0A 09 09 54 45 53 54 20 66 69    name)....TEST fi
012300:  6E 64 69 6E 70 75 74 28 66 69 6C 65 6E 61 6D 65    ndinput(filename
012310:  2C 62 75 66 66 65 72 29 20 54 48 45 4E 0D 0A 09    ,buffer) THEN...
012320:  09 24 28 0D 0A 09 09 20 20 4C 45 54 20 63 68 61    .$(....  LET cha
012330:  72 20 3D 20 3F 0D 0A 09 09 20 20 73 65 6C 65 63    r = ?....  selec
012340:  74 69 6E 70 75 74 28 62 75 66 66 65 72 29 0D 0A    tinput(buffer)..
012350:  09 09 20 20 63 68 61 72 20 3A 3D 20 72 64 63 68    ..  char := rdch
012360:  28 29 0D 0A 09 09 20 20 55 4E 54 49 4C 20 63 68    ()....  UNTIL ch
012370:  61 72 20 3D 20 73 6F 66 74 65 6F 66 63 68 20 4C    ar = softeofch L
012380:  4F 47 4F 52 20 63 68 61 72 20 3D 20 65 6E 64 73    OGOR char = ends
012390:  74 72 65 61 6D 63 68 20 44 4F 0D 0A 09 09 20 20    treamch DO....  
0123A0:  20 20 24 28 20 77 72 63 68 28 63 68 61 72 29 20      $( wrch(char) 
0123B0:  3B 20 63 68 61 72 20 3A 3D 20 72 64 63 68 28 29    ; char := rdch()
0123C0:  20 24 29 0D 0A 09 09 20 20 65 6E 64 72 65 61 64     $)....  endread
0123D0:  28 62 75 66 66 65 72 29 0D 0A 09 09 20 20 73 65    (buffer)....  se
0123E0:  6C 65 63 74 69 6E 70 75 74 28 76 64 75 73 74 72    lectinput(vdustr
0123F0:  65 61 6D 29 0D 0A 09 09 24 29 0D 0A 09 09 45 4C    eam)....$)....EL
012400:  53 45 20 77 72 69 74 65 66 28 22 4E 6F 20 6D 65    SE writef("No me
012410:  73 73 61 67 65 73 2A 4E 22 29 0D 0A 0D 0A 0D 0A    ssages*N")......
012420:  54 68 69 73 20 77 69 6C 6C 20 61 73 6B 20 66 6F    This will ask fo
012430:  72 20 61 90 20 66 69 6C 65 90 20 6E 61 6D 65 90    r a. file. name.
012440:  20 61 6E 64 90 20 74 68 65 6E 2C 90 20 69 66 20     and. then,. if 
012450:  74 68 61 74 20 66 69 6C 65 20 65 78 69 73 74 73    that file exists
012460:  2C 20 77 69 6C 6C 20 0D 8A 70 72 69 6E 74 20 6F    , will ..print o
012470:  75 74 20 74 68 65 20 63 6F 6E 74 65 6E 74 73 20    ut the contents 
012480:  6F 66 20 69 74 2E 0D 0A 3E 2D 2D 2D 2D 2D 2D 2D    of it...>-------
012490:  2D 2D 2D 2D 2D 2D 2D 20 4C 2D 2D 2D 2D 2D 2D 2D    ------- L-------
0124A0:  21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D    !-------!-------
0124B0:  21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D    !-------!-------
0124C0:  21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A    !-------!----R..
0124D0:  3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D    >---!-----!-----
0124E0:  21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D    !-------!-------
0124F0:  21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D    !-------!-------
012500:  21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D    !-------!-------
012510:  21 2D 2D 2D 2D 52 0D 0A 3E 70 61 0D 0A E2 28 65    !----R..>pa...(e
012520:  29 20 54 68 65 20 50 72 69 6D 69 74 69 76 65 20    ) The Primitive 
012530:  49 2F 4F 20 4F 70 65 72 61 74 69 6F 6E 73 E2 0D    I/O Operations..
012540:  0A 0D 0A 09 54 68 65 20 6C 69 62 72 61 72 79 20    ....The library 
012550:  63 6F 6E 74 61 69 6E 73 90 20 70 72 69 6D 69 74    contains. primit
012560:  69 76 65 90 20 72 6F 75 74 69 6E 65 73 90 20 66    ive. routines. f
012570:  6F 72 90 20 72 65 61 64 69 6E 67 2F 77 72 69 74    or. reading/writ
012580:  69 6E 67 20 74 6F 20 0D 8A 66 69 6C 65 73 2C 20    ing to ..files, 
012590:  72 65 61 64 69 6E 67 2F 77 72 69 74 69 6E 67 20    reading/writing 
0125A0:  74 6F 20 74 68 65 90 20 56 44 55 2C 90 20 61 6E    to the. VDU,. an
0125B0:  64 90 20 77 72 69 74 69 6E 67 90 20 74 6F 20 74    d. writing. to t
0125C0:  68 65 20 70 72 69 6E 74 65 72 2E 20 54 68 65 20    he printer. The 
0125D0:  0D 8A 68 69 67 68 65 72 20 6C 65 76 65 6C 20 52    ..higher level R
0125E0:  44 43 48 20 61 6E 64 20 57 52 43 48 20 72 6F 75    DCH and WRCH rou
0125F0:  74 69 6E 65 73 20 73 77 69 74 63 68 20 62 65 74    tines switch bet
012600:  77 65 65 6E 20 74 68 65 73 65 20 72 6F 75 74 69    ween these routi
012610:  6E 65 73 20 77 68 65 6E 20 0D 8A 63 61 6C 6C 65    nes when ..calle
012620:  64 20 75 70 6F 6E 20 74 6F 20 64 6F 90 20 73 6F    d upon to do. so
012630:  90 20 62 79 90 20 53 45 4C 45 43 54 49 4E 50 55    . by. SELECTINPU
012640:  54 90 20 6F 72 90 20 53 45 4C 45 43 54 4F 55 54    T. or. SELECTOUT
012650:  50 55 54 2E 90 20 49 74 20 69 73 20 71 75 69 74    PUT.. It is quit
012660:  65 20 0D 8A 70 6F 73 73 69 62 6C 65 20 74 6F 20    e ..possible to 
012670:  75 73 65 20 74 68 65 20 70 72 69 6D 69 74 69 76    use the primitiv
012680:  65 90 20 72 6F 75 74 69 6E 65 73 90 20 73 65 70    e. routines. sep
012690:  61 72 61 74 65 6C 79 20 66 72 6F 6D 20 52 44 43    arately from RDC
0126A0:  48 2F 57 52 43 48 20 61 6E 64 20 0D 8A 73 6F 20    H/WRCH and ..so 
0126B0:  72 65 61 64 2F 77 72 69 74 65 20 66 69 6C 65 73    read/write files
0126C0:  20 61 6E 64 20 74 68 65 90 20 73 63 72 65 65 6E     and the. screen
0126D0:  2F 6B 65 79 62 6F 61 72 64 90 20 61 74 20 74 68    /keyboard. at th
0126E0:  65 20 73 61 6D 65 20 74 69 6D 65 20 77 69 74 68    e same time with
0126F0:  6F 75 74 20 0D 8A 75 73 69 6E 67 20 53 45 4C 45    out ..using SELE
012700:  43 54 49 4E 50 55 54 20 6F 72 20 53 45 4C 45 43    CTINPUT or SELEC
012710:  54 4F 55 54 50 55 54 2E 90 20 54 68 65 73 65 90    TOUTPUT.. These.
012720:  20 72 6F 75 74 69 6E 65 73 90 20 61 72 65 20 52     routines. are R
012730:  44 56 44 55 2C 20 57 52 56 44 55 2C 20 0D 8A 52    DVDU, WRVDU, ..R
012740:  45 41 44 43 48 20 61 6E 64 20 57 52 49 54 45 43    EADCH and WRITEC
012750:  48 2E 0D 0A 0D 0A 3E 2D 2D 2D 2D 2D 2D 2D 2D 2D    H.....>---------
012760:  2D 2D 2D 2D 2D 20 4C 2D 2D 2D 2D 2D 2D 2D 21 2D    ----- L-------!-
012770:  2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D    ------!-------!-
012780:  2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D    ------!-------!-
012790:  2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A 0D 0A    ------!----R....
0127A0:  0D 0A 0D 0A 43 4C 4F 53 45 49 4E 28 62 75 66 66    ....CLOSEIN(buff
0127B0:  65 72 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54    er)....Effect:.T
0127C0:  68 65 20 69 6E 70 75 74 20 66 69 6C 65 20 61 73    he input file as
0127D0:  73 6F 63 69 61 74 65 64 20 77 69 74 68 20 74 68    sociated with th
0127E0:  65 20 62 75 66 66 65 72 20 69 73 20 63 6C 6F 73    e buffer is clos
0127F0:  65 64 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09    ed.....Returns:.
012800:  54 52 55 45 20 69 66 20 74 68 65 90 20 66 69 6C    TRUE if the. fil
012810:  65 90 20 77 61 73 90 20 63 6C 6F 73 65 64 90 20    e. was. closed. 
012820:  73 75 63 63 65 73 73 66 75 6C 6C 79 2C 20 46 41    successfully, FA
012830:  4C 53 45 20 69 66 20 0D 8A 09 6E 6F 74 2E 0D 0A    LSE if ...not...
012840:  0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42    ..Location:.CLIB
012850:  48 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A    HDR, ALIBHDR....
012860:  0D 0A 43 4C 4F 53 45 4F 55 54 28 62 75 66 66 65    ..CLOSEOUT(buffe
012870:  72 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68    r)....Effect:.Th
012880:  65 20 6F 75 74 70 75 74 20 66 69 6C 65 20 61 73    e output file as
012890:  73 6F 63 69 61 74 65 64 20 77 69 74 68 90 20 74    sociated with. t
0128A0:  68 65 20 62 75 66 66 65 72 20 69 73 20 63 6C 6F    he buffer is clo
0128B0:  73 65 64 2E 20 0D 8A 09 49 74 90 20 69 73 90 20    sed. ...It. is. 
0128C0:  65 73 73 65 6E 74 69 61 6C 90 90 20 74 68 61 74    essential.. that
0128D0:  90 90 20 65 69 74 68 65 72 90 90 20 74 68 69 73    .. either.. this
0128E0:  90 90 20 72 6F 75 74 69 6E 65 90 20 6F 72 20 0D    .. routine. or .
0128F0:  8A 09 45 4E 44 57 52 49 54 45 20 69 73 20 75 73    ..ENDWRITE is us
012900:  65 64 20 61 66 74 65 72 20 77 72 69 74 69 6E 67    ed after writing
012910:  20 74 6F 20 61 20 66 69 6C 65 2C 20 61 73 20 69     to a file, as i
012920:  74 20 63 61 75 73 65 73 20 0D 8A 09 74 68 65 20    t causes ...the 
012930:  6C 61 73 74 20 73 65 63 74 69 6F 6E 20 6F 66 20    last section of 
012940:  64 61 74 61 20 74 6F 20 62 65 20 77 72 69 74 74    data to be writt
012950:  65 6E 20 74 6F 20 74 68 65 20 64 69 73 63 2E 0D    en to the disc..
012960:  0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 52 55 45    ...Returns:.TRUE
012970:  20 69 66 20 74 68 65 20 66 69 6C 65 20 77 61 73     if the file was
012980:  20 63 6C 6F 73 65 64 20 73 75 63 63 65 73 73 66     closed successf
012990:  75 6C 6C 79 2C 20 65 6C 73 65 20 46 41 4C 53 45    ully, else FALSE
0129A0:  2E 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43    .....Location:.C
0129B0:  4C 49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D    LIBHDR, ALIBHDR.
0129C0:  0A 0D 0A 0D 0A 46 4C 55 53 48 28 29 0D 0A 0D 0A    .....FLUSH()....
0129D0:  45 66 66 65 63 74 3A 09 45 6D 70 74 69 65 73 20    Effect:.Empties 
0129E0:  74 68 65 20 6B 65 79 62 6F 61 72 64 20 62 75 66    the keyboard buf
0129F0:  66 65 72 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A    fer.....Returns:
012A00:  09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61    .Nothing....Loca
012A10:  74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41    tion:.CLIBHDR, A
012A20:  4C 49 42 48 44 52 0D 0A 0D 0A 3E 70 61 0D 0A 50    LIBHDR....>pa..P
012A30:  52 42 55 53 59 28 29 0D 0A 0D 0A 45 66 66 65 63    RBUSY()....Effec
012A40:  74 3A 09 46 69 6E 64 73 20 6F 75 74 20 69 66 20    t:.Finds out if 
012A50:  74 68 65 20 70 72 69 6E 74 65 72 20 69 73 20 62    the printer is b
012A60:  75 73 79 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A    usy.....Returns:
012A70:  09 54 52 55 45 20 69 66 20 62 75 73 79 2C 20 46    .TRUE if busy, F
012A80:  41 4C 53 45 20 69 66 20 6E 6F 74 0D 0A 0D 0A 4C    ALSE if not....L
012A90:  6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52    ocation:.CLIBHDR
012AA0:  2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 45 78 61    , ALIBHDR....Exa
012AB0:  6D 70 6C 65 3A 09 49 46 20 70 72 62 75 73 79 28    mple:.IF prbusy(
012AC0:  29 20 54 48 45 4E 20 77 72 69 74 65 73 28 22 50    ) THEN writes("P
012AD0:  75 74 20 74 68 65 20 70 72 69 6E 74 65 72 20 6F    ut the printer o
012AE0:  6E 20 6C 69 6E 65 2A 4E 22 29 0D 0A 09 57 48 49    n line*N")...WHI
012AF0:  4C 45 20 70 72 62 75 73 79 28 29 20 4C 4F 4F 50    LE prbusy() LOOP
012B00:  0D 0A 0D 0A 0D 0A 50 52 43 48 28 63 68 61 72 29    ......PRCH(char)
012B10:  0D 0A 0D 0A 45 66 66 65 63 74 3A 09 53 65 6E 64    ....Effect:.Send
012B20:  73 20 61 20 63 68 61 72 61 63 74 65 72 20 74 6F    s a character to
012B30:  90 20 74 68 65 90 20 70 72 69 6E 74 65 72 2E 90    . the. printer..
012B40:  20 49 66 20 74 68 65 20 70 72 69 6E 74 65 72 20     If the printer 
012B50:  69 73 20 0D 8A 09 62 75 73 79 20 74 68 65 6E 20    is ...busy then 
012B60:  50 52 43 48 20 77 61 69 74 73 20 75 6E 74 69 6C    PRCH waits until
012B70:  90 20 74 68 65 20 63 68 61 72 61 63 74 65 72 20    . the character 
012B80:  63 61 6E 20 62 65 20 73 65 6E 74 2E 20 0D 8A 09    can be sent. ...
012B90:  50 52 42 55 53 59 20 73 68 6F 75 6C 64 20 62 65    PRBUSY should be
012BA0:  20 75 73 65 64 90 20 74 6F 90 20 74 65 73 74 90     used. to. test.
012BB0:  20 66 6F 72 20 74 68 65 20 70 72 69 6E 74 65 72     for the printer
012BC0:  20 62 65 69 6E 67 20 0D 8A 09 62 75 73 79 2E 20     being ...busy. 
012BD0:  54 68 69 73 20 72 6F 75 74 69 6E 65 20 69 73 20    This routine is 
012BE0:  63 61 6C 6C 65 64 20 62 79 20 57 52 43 48 20 69    called by WRCH i
012BF0:  66 20 74 68 65 20 70 72 69 6E 74 65 72 20 69 73    f the printer is
012C00:  20 0D 8A 09 74 68 65 20 73 65 6C 65 63 74 65 64     ...the selected
012C10:  20 6F 75 74 70 75 74 20 73 74 72 65 61 6D 2E 0D     output stream..
012C20:  0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 52 55 45    ...Returns:.TRUE
012C30:  0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C    ....Location:.CL
012C40:  49 42 48 44 52 2C 20 41 4C 49 42 48 44 52 0D 0A    IBHDR, ALIBHDR..
012C50:  0D 0A 0D 0A 52 44 54 45 53 54 28 29 0D 0A 0D 0A    ....RDTEST()....
012C60:  45 66 66 65 63 74 3A 09 46 69 6E 64 73 20 6F 75    Effect:.Finds ou
012C70:  74 20 69 66 20 61 20 6B 65 79 20 68 61 73 20 62    t if a key has b
012C80:  65 65 6E 20 70 72 65 73 73 65 64 2E 0D 0A 0D 0A    een pressed.....
012C90:  52 65 74 75 72 6E 73 3A 09 54 52 55 45 20 69 66    Returns:.TRUE if
012CA0:  20 61 20 6B 65 79 20 68 61 73 20 62 65 65 6E 20     a key has been 
012CB0:  70 72 65 73 73 65 64 2C 20 46 41 4C 53 45 20 69    pressed, FALSE i
012CC0:  66 20 6E 6F 74 2E 0D 0A 0D 0A 4C 6F 63 61 74 69    f not.....Locati
012CD0:  6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49    on:.CLIBHDR, ALI
012CE0:  42 48 44 52 0D 0A 0D 0A 45 78 61 6D 70 6C 65 3A    BHDR....Example:
012CF0:  09 57 48 49 4C 45 20 72 64 74 65 73 74 28 29 20    .WHILE rdtest() 
012D00:  44 4F 20 72 64 63 68 28 29 0D 0A 0D 0A 0D 0A 52    DO rdch()......R
012D10:  44 56 44 55 28 29 0D 0A 0D 0A 45 66 66 65 63 74    DVDU()....Effect
012D20:  3A 09 52 65 61 64 73 20 61 90 20 63 68 61 72 61    :.Reads a. chara
012D30:  63 74 65 72 90 20 66 72 6F 6D 90 20 74 68 65 90    cter. from. the.
012D40:  20 6B 65 79 62 6F 61 72 64 2C 90 20 77 68 61 74     keyboard,. what
012D50:  65 76 65 72 20 74 68 65 20 0D 8A 09 63 75 72 72    ever the ...curr
012D60:  65 6E 74 6C 79 90 20 73 65 6C 65 63 74 65 64 90    ently. selected.
012D70:  20 69 6E 70 75 74 90 20 73 74 72 65 61 6D 2E 90     input. stream..
012D80:  20 54 68 69 73 90 20 72 6F 75 74 69 6E 65 90 20     This. routine. 
012D90:  69 73 20 0D 8A 09 63 61 6C 6C 65 64 20 62 79 20    is ...called by 
012DA0:  52 44 43 48 20 69 66 20 74 68 65 90 20 6B 65 79    RDCH if the. key
012DB0:  62 6F 61 72 64 90 20 69 73 20 74 68 65 20 73 65    board. is the se
012DC0:  6C 65 63 74 65 64 20 69 6E 70 75 74 20 0D 8A 09    lected input ...
012DD0:  73 74 72 65 61 6D 2E 20 52 44 56 44 55 20 69 73    stream. RDVDU is
012DE0:  20 70 72 65 2D 64 65 66 69 6E 65 64 90 20 69 6E     pre-defined. in
012DF0:  90 20 74 68 65 20 43 50 2F 4D 20 63 6F 6D 70 69    . the CP/M compi
012E00:  6C 65 72 20 73 6F 20 0D 8A 09 74 68 61 74 20 69    ler so ...that i
012E10:  74 90 20 63 61 6E 90 20 62 75 66 66 65 72 90 20    t. can. buffer. 
012E20:  63 68 61 72 61 63 74 65 72 73 90 20 74 6F 90 20    characters. to. 
012E30:  61 6C 6C 6F 77 90 20 66 6F 72 20 62 72 65 61 6B    allow. for break
012E40:  20 0D 8A 09 74 65 73 74 69 6E 67 20 77 69 74 68     ...testing with
012E50:  6F 75 74 20 6C 6F 73 69 6E 67 20 63 68 61 72 61    out losing chara
012E60:  63 74 65 72 73 2E 0D 0A 0D 0A 52 65 74 75 72 6E    cters.....Return
012E70:  73 3A 09 54 68 65 20 63 68 61 72 61 63 74 65 72    s:.The character
012E80:  20 72 65 61 64 2E 0D 0A 0D 0A 4C 6F 63 61 74 69     read.....Locati
012E90:  6F 6E 3A 09 50 72 65 2D 64 65 66 69 6E 65 64 20    on:.Pre-defined 
012EA0:  69 6E 20 43 50 2F 4D 20 63 6F 6D 70 69 6C 65 72    in CP/M compiler
012EB0:  2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 3E 70 61    , ALIBHDR....>pa
012EC0:  0D 0A 52 45 41 44 43 48 28 62 75 66 66 65 72 29    ..READCH(buffer)
012ED0:  09 0D 0A 09 0D 0A 45 66 66 65 63 74 3A 09 52 65    ......Effect:.Re
012EE0:  61 64 73 20 61 20 63 68 61 72 61 63 74 65 72 20    ads a character 
012EF0:  66 72 6F 6D 20 61 90 20 66 69 6C 65 2C 20 77 68    from a. file, wh
012F00:  61 74 65 76 65 72 20 74 68 65 20 63 75 72 72 65    atever the curre
012F10:  6E 74 6C 79 20 0D 8A 09 73 65 6C 65 63 74 65 64    ntly ...selected
012F20:  20 69 6E 70 75 74 20 73 74 72 65 61 6D 2E 20 54     input stream. T
012F30:  68 65 20 62 75 66 66 65 72 90 20 69 73 20 6E 6F    he buffer. is no
012F40:  74 20 6E 65 65 64 65 64 20 75 6E 64 65 72 20 0D    t needed under .
012F50:  8A 09 41 4D 53 44 4F 53 2E 20 54 68 69 73 20 72    ..AMSDOS. This r
012F60:  6F 75 74 69 6E 65 20 69 73 20 63 61 6C 6C 65 64    outine is called
012F70:  90 20 62 79 90 20 52 44 43 48 90 20 69 66 20 61    . by. RDCH. if a
012F80:  20 66 69 6C 65 20 69 73 20 0D 8A 09 74 68 65 20     file is ...the 
012F90:  73 65 6C 65 63 74 65 64 20 69 6E 70 75 74 20 73    selected input s
012FA0:  74 72 65 61 6D 2E 0D 0A 0D 0A 52 65 74 75 72 6E    tream.....Return
012FB0:  73 3A 09 54 68 65 20 63 68 61 72 61 63 74 65 72    s:.The character
012FC0:  20 72 65 61 64 2E 0D 0A 0D 0A 4C 6F 63 61 74 69     read.....Locati
012FD0:  6F 6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49    on:.CLIBHDR, ALI
012FE0:  42 48 44 52 0D 0A 0D 0A 0D 0A 52 45 57 49 4E 44    BHDR......REWIND
012FF0:  49 4E 28 62 75 66 66 65 72 29 0D 0A 0D 0A 45 66    IN(buffer)....Ef
013000:  66 65 63 74 3A 09 54 68 65 20 66 69 6C 65 20 70    fect:.The file p
013010:  6F 69 6E 74 65 72 20 66 6F 72 20 74 68 65 20 73    ointer for the s
013020:  70 65 63 69 66 69 65 64 90 20 66 69 6C 65 20 69    pecified. file i
013030:  73 20 73 65 74 20 74 6F 20 74 68 65 20 0D 8A 09    s set to the ...
013040:  73 74 61 72 74 20 6F 66 20 74 68 65 20 66 69 6C    start of the fil
013050:  65 2E 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20    e. This routine 
013060:  69 73 20 63 61 6C 6C 65 64 20 62 79 20 52 45 57    is called by REW
013070:  49 4E 44 20 69 66 20 0D 8A 09 61 20 66 69 6C 65    IND if ...a file
013080:  20 69 73 20 74 68 65 20 73 65 6C 65 63 74 65 64     is the selected
013090:  90 20 69 6E 70 75 74 90 20 73 74 72 65 61 6D 2E    . input. stream.
0130A0:  20 52 45 57 49 4E 44 49 4E 20 69 73 20 6E 6F 74     REWINDIN is not
0130B0:  20 0D 8A 09 70 72 6F 76 69 64 65 64 20 69 6E 20     ...provided in 
0130C0:  74 68 65 20 41 4D 53 44 4F 53 20 76 65 72 73 69    the AMSDOS versi
0130D0:  6F 6E 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09    on.....Returns:.
0130E0:  4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74    Nothing....Locat
0130F0:  69 6F 6E 3A 09 43 4C 49 42 48 44 52 0D 0A 0D 0A    ion:.CLIBHDR....
013100:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
013110:  10 00 00 00 02 09 50 E5 10 00 C1 02 00 00 00 02    ......P.........
013120:  10 00 C2 02 00 00 00 02 10 00 C3 02 00 00 00 02    ................
013130:  10 00 C4 02 00 00 00 02 10 00 C5 02 00 00 00 02    ................
013140:  10 00 C6 02 00 00 00 02 10 00 C7 02 00 00 00 02    ................
013150:  10 00 C8 02 00 00 00 02 10 00 C9 02 00 00 00 02    ................
013160:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
013170:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
013180:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
013190:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0131A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0131B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0131C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0131D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0131E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0131F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
013200:  0D 0A 57 52 49 54 45 43 48 28 63 68 61 72 2C 62    ..WRITECH(char,b
013210:  75 66 66 65 72 29 0D 0A 0D 0A 45 66 66 65 63 74    uffer)....Effect
013220:  3A 09 57 72 69 74 65 73 20 61 20 63 68 61 72 61    :.Writes a chara
013230:  63 74 65 72 20 74 6F 90 20 61 90 20 66 69 6C 65    cter to. a. file
013240:  2C 20 77 68 61 74 65 76 65 72 20 74 68 65 20 63    , whatever the c
013250:  75 72 72 65 6E 74 6C 79 20 0D 8A 09 73 65 6C 65    urrently ...sele
013260:  63 74 65 64 20 6F 75 74 70 75 74 20 73 74 72 65    cted output stre
013270:  61 6D 2E 20 54 68 65 20 62 75 66 66 65 72 20 69    am. The buffer i
013280:  73 20 6E 6F 74 20 6E 65 65 64 65 64 20 75 6E 64    s not needed und
013290:  65 72 20 0D 8A 09 41 4D 53 44 4F 53 2E 20 54 68    er ...AMSDOS. Th
0132A0:  69 73 20 72 6F 75 74 69 6E 65 20 69 73 20 63 61    is routine is ca
0132B0:  6C 6C 65 64 90 20 62 79 90 20 57 52 43 48 90 20    lled. by. WRCH. 
0132C0:  69 73 20 61 20 66 69 6C 65 20 69 73 20 0D 8A 09    is a file is ...
0132D0:  74 68 65 20 73 65 6C 65 63 74 65 64 20 6F 75 74    the selected out
0132E0:  70 75 74 20 73 74 72 65 61 6D 2E 0D 0A 0D 0A 52    put stream.....R
0132F0:  65 74 75 72 6E 73 3A 09 54 52 55 45 20 69 66 20    eturns:.TRUE if 
013300:  73 75 63 63 65 73 73 66 75 6C 2C 20 46 41 4C 53    successful, FALS
013310:  45 20 69 66 20 61 20 64 69 73 63 20 65 72 72 6F    E if a disc erro
013320:  72 20 6F 63 63 75 72 72 65 64 0D 0A 09 0D 0A 4C    r occurred.....L
013330:  6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52    ocation:.CLIBHDR
013340:  2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 45 78 61    , ALIBHDR....Exa
013350:  6D 70 6C 65 73 3A 09 77 72 69 74 65 63 68 28 27    mples:.writech('
013360:  24 27 2C 6F 75 74 66 69 6C 65 62 75 66 29 09 09    $',outfilebuf)..
013370:  2F 2F 20 43 50 2F 4D 20 76 65 72 73 69 6F 6E 0D    // CP/M version.
013380:  0A 09 77 72 69 74 65 63 68 28 27 24 27 29 09 09    ..writech('$')..
013390:  09 2F 2F 20 41 4D 53 44 4F 53 20 76 65 72 73 69    .// AMSDOS versi
0133A0:  6F 6E 0D 0A 0D 0A 0D 0A 57 52 56 44 55 28 63 68    on......WRVDU(ch
0133B0:  61 72 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 57    ar)....Effect:.W
0133C0:  72 69 74 65 73 90 20 61 90 20 63 68 61 72 61 63    rites. a. charac
0133D0:  74 65 72 90 20 74 6F 90 90 20 74 68 65 90 20 73    ter. to.. the. s
0133E0:  63 72 65 65 6E 2C 90 20 77 68 61 74 65 76 65 72    creen,. whatever
0133F0:  90 20 74 68 65 20 0D 8A 09 63 75 72 72 65 6E 74    . the ...current
013400:  6C 79 20 73 65 6C 65 63 74 65 64 90 20 6F 75 74    ly selected. out
013410:  70 75 74 90 20 73 74 72 65 61 6D 2E 90 20 54 68    put. stream.. Th
013420:  69 73 90 20 72 6F 75 74 69 6E 65 90 20 69 73 20    is. routine. is 
013430:  0D 8A 09 63 61 6C 6C 65 64 20 62 79 20 57 52 43    ...called by WRC
013440:  48 20 69 66 90 20 74 68 65 90 20 73 63 72 65 65    H if. the. scree
013450:  6E 90 20 69 73 20 74 68 65 20 73 65 6C 65 63 74    n. is the select
013460:  65 64 20 6F 75 74 70 75 74 20 0D 8A 09 73 74 72    ed output ...str
013470:  65 61 6D 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A    eam.....Returns:
013480:  09 54 52 55 45 0D 0A 0D 0A 4C 6F 63 61 74 69 6F    .TRUE....Locatio
013490:  6E 3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 42    n:.CLIBHDR, ALIB
0134A0:  48 44 52 0D 0A 3E 70 61 0D 0A E2 28 66 29 20 4D    HDR..>pa...(f) M
0134B0:  69 73 63 65 6C 6C 61 6E 65 6F 75 73 20 52 6F 75    iscellaneous Rou
0134C0:  74 69 6E 65 73 E2 0D 0A 0D 0A 0D 0A 41 50 54 4F    tines.......APTO
0134D0:  56 45 43 28 66 75 6E 63 74 69 6F 6E 2C 61 72 72    VEC(function,arr
0134E0:  61 79 73 69 7A 65 29 0D 0A 0D 0A 45 66 66 65 63    aysize)....Effec
0134F0:  74 3A 09 54 68 69 73 20 77 69 6C 6C 20 63 72 65    t:.This will cre
013500:  61 74 65 20 61 20 64 79 6E 61 6D 69 63 20 61 72    ate a dynamic ar
013510:  72 61 79 20 6F 66 20 73 69 7A 65 20 61 72 72 61    ray of size arra
013520:  79 73 69 7A 65 20 61 6E 64 20 0D 8A 09 74 68 65    ysize and ...the
013530:  6E 20 70 61 73 73 20 74 68 65 20 61 64 64 72 65    n pass the addre
013540:  73 73 90 20 6F 66 90 20 74 68 69 73 90 20 61 72    ss. of. this. ar
013550:  72 61 79 90 20 61 6C 6F 6E 67 20 77 69 74 68 20    ray. along with 
013560:  69 74 73 20 0D 8A 09 73 69 7A 65 20 74 6F 20 74    its ...size to t
013570:  68 65 20 66 75 6E 63 74 69 6F 6E 2E 20 49 74 20    he function. It 
013580:  77 69 6C 6C 20 72 65 74 75 72 6E 20 74 68 65 20    will return the 
013590:  72 65 73 75 6C 74 20 6F 66 20 74 68 65 20 0D 8A    result of the ..
0135A0:  09 66 75 6E 63 74 69 6F 6E 20 61 6E 64 20 69 73    .function and is
0135B0:  20 65 71 75 69 76 61 6C 65 6E 74 20 74 6F 3A 0D     equivalent to:.
0135C0:  0A 0D 0A 09 4C 45 54 20 61 70 74 6F 76 65 63 28    ....LET aptovec(
0135D0:  66 75 6E 63 74 69 6F 6E 2C 61 72 72 61 79 73 69    function,arraysi
0135E0:  7A 65 29 20 3D 20 56 41 4C 4F 46 0D 0A 0D 0A 09    ze) = VALOF.....
0135F0:  24 28 20 20 4C 45 54 20 76 20 3D 20 56 45 43 20    $(  LET v = VEC 
013600:  61 72 72 61 79 73 69 7A 65 09 2F 2F 20 69 6C 6C    arraysize.// ill
013610:  65 67 61 6C 20 69 6E 20 42 43 50 4C 0D 0A 09 20    egal in BCPL... 
013620:  20 20 20 52 45 53 55 4C 54 49 53 20 66 75 6E 63       RESULTIS func
013630:  74 69 6F 6E 28 76 2C 61 72 72 61 79 73 69 7A 65    tion(v,arraysize
013640:  29 0D 0A 09 24 29 0D 0A 0D 0A 52 65 74 75 72 6E    )...$)....Return
013650:  73 3A 09 74 68 65 20 76 61 6C 75 65 20 72 65 74    s:.the value ret
013660:  75 72 6E 65 64 20 62 79 20 74 68 65 20 66 75 6E    urned by the fun
013670:  63 74 69 6F 6E 0D 0A 0D 0A 4C 6F 63 61 74 69 6F    ction....Locatio
013680:  6E 3A 09 50 72 65 2D 64 65 66 69 6E 65 64 2C 20    n:.Pre-defined, 
013690:  70 72 65 2D 64 65 66 69 6E 65 64 0D 0A 0D 0A 0D    pre-defined.....
0136A0:  0A 42 59 54 45 4D 4F 56 45 28 73 74 61 72 74 2C    .BYTEMOVE(start,
0136B0:  64 65 73 74 2C 73 69 7A 65 29 0D 0A 0D 0A 45 66    dest,size)....Ef
0136C0:  66 65 63 74 3A 09 54 68 69 73 20 69 73 20 61 90    fect:.This is a.
0136D0:  20 62 6C 6F 63 6B 90 20 62 79 74 65 90 20 6D 6F     block. byte. mo
0136E0:  76 65 90 20 72 6F 75 74 69 6E 65 2E 90 20 49 74    ve. routine.. It
0136F0:  90 20 77 6F 72 6B 73 20 77 69 74 68 20 0D 8A 09    . works with ...
013700:  61 63 74 75 61 6C 20 62 79 74 65 20 61 64 64 72    actual byte addr
013710:  65 73 73 65 73 20 28 74 68 61 74 90 20 69 73 90    esses (that. is.
013720:  20 74 68 65 20 61 64 64 72 65 73 73 65 73 20 75     the addresses u
013730:  73 65 64 20 62 79 20 0D 8A 09 74 68 65 20 5A 38    sed by ...the Z8
013740:  30 20 70 72 6F 63 65 73 73 6F 72 29 20 73 6F 90    0 processor) so.
013750:  20 69 66 90 20 61 72 72 61 79 90 20 6E 61 6D 65     if. array. name
013760:  73 90 20 61 72 65 20 75 73 65 64 20 61 73 20 61    s. are used as a
013770:  20 0D 8A 09 70 61 72 61 6D 65 74 65 72 20 74 68     ...parameter th
013780:  65 6E 20 74 68 65 79 90 20 73 68 6F 75 6C 64 90    en they. should.
013790:  20 62 65 90 20 6D 75 6C 74 69 70 6C 69 65 64 90     be. multiplied.
0137A0:  20 62 79 20 74 77 6F 20 61 73 20 0D 8A 09 42 43     by two as ...BC
0137B0:  50 4C 20 77 6F 72 6B 73 20 77 69 74 68 20 77 6F    PL works with wo
0137C0:  72 64 20 61 64 64 72 65 73 73 65 73 2E 20 54 68    rd addresses. Th
0137D0:  65 20 6F 6C 64 20 61 6E 64 20 6E 65 77 20 62 6C    e old and new bl
0137E0:  6F 63 6B 73 20 0D 8A 09 6D 61 79 20 6F 76 65 72    ocks ...may over
0137F0:  6C 61 70 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A    lap.....Returns:
013800:  09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61    .Nothing....Loca
013810:  74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 31 2C 20    tion:.CLIBHDR1, 
013820:  41 4C 49 42 48 44 52 31 0D 0A 0D 0A 45 78 61 6D    ALIBHDR1....Exam
013830:  70 6C 65 3A 09 62 79 74 65 6D 6F 76 65 28 62 75    ple:.bytemove(bu
013840:  66 66 65 72 2A 32 2B 33 36 2C 62 75 66 66 65 72    ffer*2+36,buffer
013850:  2A 32 2B 31 36 2C 31 36 29 0D 0A 0D 0A 0D 0A 43    *2+16,16)......C
013860:  41 4C 4C 28 61 64 64 72 65 73 73 2C 40 61 66 2C    ALL(address,@af,
013870:  40 62 63 2C 40 64 65 2C 40 68 6C 2C 40 69 78 29    @bc,@de,@hl,@ix)
013880:  0D 0A 0D 0A 45 66 66 65 63 74 3A 09 43 61 6C 6C    ....Effect:.Call
013890:  73 20 61 20 6D 61 63 68 69 6E 65 20 63 6F 64 65    s a machine code
0138A0:  90 20 72 6F 75 74 69 6E 65 90 20 61 74 90 20 61    . routine. at. a
0138B0:  20 62 79 74 65 20 61 64 64 72 65 73 73 2E 20 41     byte address. A
0138C0:  6C 6C 20 0D 8A 09 70 61 72 61 6D 65 74 65 72 73    ll ...parameters
0138D0:  20 4D 55 53 54 20 62 65 90 20 73 75 70 70 6C 69     MUST be. suppli
0138E0:  65 64 90 20 61 73 90 20 76 61 6C 75 65 73 20 61    ed. as. values a
0138F0:  72 65 20 72 65 74 75 72 6E 65 64 2E 20 0D 8A 09    re returned. ...
013900:  54 68 65 20 76 61 6C 75 65 73 20 72 65 74 75 72    The values retur
013910:  6E 65 64 20 62 79 90 20 74 68 65 90 20 6D 61 63    ned by. the. mac
013920:  68 69 6E 65 90 20 63 6F 64 65 20 72 6F 75 74 69    hine. code routi
013930:  6E 65 20 61 72 65 20 0D 8A 09 70 61 73 73 65 64    ne are ...passed
013940:  20 62 61 63 6B 20 69 6E 20 74 68 65 20 76 61 72     back in the var
013950:  69 61 62 6C 65 73 2E 0D 0A 0D 0A 52 65 74 75 72    iables.....Retur
013960:  6E 73 3A 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C    ns:.Nothing....L
013970:  6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52    ocation:.CLIBHDR
013980:  31 2C 20 41 4C 49 42 48 44 52 31 0D 0A 0D 0A 3E    1, ALIBHDR1....>
013990:  70 61 0D 0A 43 41 50 49 54 41 4C 43 48 28 63 68    pa..CAPITALCH(ch
0139A0:  61 72 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 49    ar)....Effect:.I
0139B0:  66 20 74 68 65 20 63 68 61 72 61 63 74 65 72 20    f the character 
0139C0:  69 73 20 61 20 6C 6F 77 65 72 20 63 61 73 65 20    is a lower case 
0139D0:  6C 65 74 74 65 72 20 74 68 65 20 75 70 70 65 72    letter the upper
0139E0:  20 63 61 73 65 20 0D 8A 09 65 71 75 69 76 61 6C     case ...equival
0139F0:  65 6E 74 90 20 69 73 90 90 20 72 65 74 75 72 6E    ent. is.. return
013A00:  65 64 2C 90 90 20 6F 74 68 65 72 77 69 73 65 90    ed,.. otherwise.
013A10:  90 20 74 68 65 90 20 6F 72 69 67 69 6E 61 6C 20    . the. original 
013A20:  0D 8A 09 63 68 61 72 61 63 74 65 72 20 69 73 20    ...character is 
013A30:  72 65 74 75 72 6E 65 64 2E 0D 0A 0D 0A 52 65 74    returned.....Ret
013A40:  75 72 6E 73 3A 09 54 68 65 20 63 6F 6E 76 65 72    urns:.The conver
013A50:  74 65 64 20 63 68 61 72 61 63 74 65 72 0D 0A 0D    ted character...
013A60:  0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48    .Location:.CLIBH
013A70:  44 52 2C 20 41 4C 49 42 48 44 52 0D 0A 0D 0A 0D    DR, ALIBHDR.....
013A80:  0A 43 4F 4D 50 43 48 28 63 68 61 72 31 2C 63 68    .COMPCH(char1,ch
013A90:  61 72 32 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09    ar2)....Effect:.
013AA0:  43 6F 6D 70 61 72 65 73 90 20 74 77 6F 90 20 63    Compares. two. c
013AB0:  68 61 72 61 63 74 65 72 73 2C 90 20 69 67 6E 6F    haracters,. igno
013AC0:  72 69 6E 67 90 20 74 68 65 90 20 64 69 73 74 69    ring. the. disti
013AD0:  6E 63 74 69 6F 6E 20 0D 8A 09 62 65 74 77 65 65    nction ...betwee
013AE0:  6E 90 20 75 70 70 65 72 90 20 61 6E 64 90 90 20    n. upper. and.. 
013AF0:  6C 6F 77 65 72 90 90 20 63 61 73 65 2E 90 90 20    lower.. case... 
013B00:  49 74 90 20 72 65 74 75 72 6E 73 90 20 74 68 65    It. returns. the
013B10:  20 0D 8A 09 64 69 66 66 65 72 65 6E 63 65 20 62     ...difference b
013B20:  65 74 77 65 65 6E 20 74 68 65 20 74 77 6F 20 63    etween the two c
013B30:  68 61 72 61 63 74 65 72 73 2E 0D 0A 0D 0A 52 65    haracters.....Re
013B40:  74 75 72 6E 73 3A 09 54 68 65 20 64 69 66 66 65    turns:.The diffe
013B50:  72 65 6E 63 65 20 62 65 74 77 65 65 6E 20 74 68    rence between th
013B60:  65 20 63 68 61 72 61 63 74 65 72 73 0D 0A 0D 0A    e characters....
013B70:  4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44    Location:.CLIBHD
013B80:  52 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A 0D 0A    R1, ALIBHDR1....
013B90:  0D 0A 43 4F 4D 50 53 54 52 49 4E 47 28 73 74 72    ..COMPSTRING(str
013BA0:  69 6E 67 31 2C 73 74 72 69 6E 67 32 29 0D 0A 0D    ing1,string2)...
013BB0:  0A 45 66 66 65 63 74 3A 09 43 6F 6D 70 61 72 65    .Effect:.Compare
013BC0:  73 20 74 77 6F 20 73 74 72 69 6E 67 73 2C 20 69    s two strings, i
013BD0:  67 6E 6F 72 69 6E 67 20 74 68 65 20 64 69 73 74    gnoring the dist
013BE0:  69 6E 63 74 69 6F 6E 20 62 65 74 77 65 65 6E 20    inction between 
013BF0:  0D 8A 09 75 70 70 65 72 20 61 6E 64 90 20 6C 6F    ...upper and. lo
013C00:  77 65 72 90 20 63 61 73 65 2E 90 20 54 68 65 90    wer. case.. The.
013C10:  20 72 65 73 75 6C 74 90 20 69 73 90 20 7A 65 72     result. is. zer
013C20:  6F 90 20 69 66 20 74 68 65 20 0D 8A 09 73 74 72    o. if the ...str
013C30:  69 6E 67 73 20 61 72 65 90 20 74 68 65 90 20 73    ings are. the. s
013C40:  61 6D 65 2C 90 20 70 6F 73 69 74 69 76 65 90 20    ame,. positive. 
013C50:  69 66 90 20 73 74 72 69 6E 67 31 20 66 6F 6C 6C    if. string1 foll
013C60:  6F 77 73 20 0D 8A 09 73 74 72 69 6E 67 32 90 20    ows ...string2. 
013C70:  61 6C 70 68 61 62 65 74 69 63 61 6C 6C 79 2C 90    alphabetically,.
013C80:  20 61 6E 64 90 90 20 6E 65 67 61 74 69 76 65 90     and.. negative.
013C90:  90 20 69 66 90 20 73 74 72 69 6E 67 32 20 0D 8A    . if. string2 ..
013CA0:  09 66 6F 6C 6C 6F 77 73 20 73 74 72 69 6E 67 31    .follows string1
013CB0:  2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 68    .....Returns:.Th
013CC0:  65 20 72 65 73 75 6C 74 20 6F 66 20 74 68 65 20    e result of the 
013CD0:  63 6F 6D 70 61 72 69 73 6F 6E 2C 20 61 73 20 61    comparison, as a
013CE0:  62 6F 76 65 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E    bove....Location
013CF0:  3A 09 43 4C 49 42 48 44 52 31 2C 20 41 4C 49 42    :.CLIBHDR1, ALIB
013D00:  48 44 52 31 0D 0A 0D 0A 0D 0A 44 45 43 56 41 4C    HDR1......DECVAL
013D10:  28 64 69 67 69 74 29 0D 0A 0D 0A 45 66 66 65 63    (digit)....Effec
013D20:  74 3A 09 54 68 69 73 20 72 65 74 75 72 6E 73 20    t:.This returns 
013D30:  74 68 65 20 64 65 63 69 6D 61 6C 20 76 61 6C 75    the decimal valu
013D40:  65 20 6F 66 20 61 20 68 65 78 61 64 65 63 69 6D    e of a hexadecim
013D50:  61 6C 20 64 69 67 69 74 2E 0D 0A 0D 0A 52 65 74    al digit.....Ret
013D60:  75 72 6E 73 3A 09 54 68 65 20 64 65 63 69 6D 61    urns:.The decima
013D70:  6C 20 76 61 6C 75 65 20 6F 66 20 74 68 65 20 64    l value of the d
013D80:  69 67 69 74 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E    igit....Location
013D90:  3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 48    :.CLIBHDR, ALIBH
013DA0:  44 52 0D 0A 0D 0A 45 78 61 6D 70 6C 65 3A 09 64    DR....Example:.d
013DB0:  65 63 76 61 6C 28 27 41 27 29 09 09 2F 2F 20 72    ecval('A')..// r
013DC0:  65 74 75 72 6E 73 20 31 30 0D 0A 0D 0A 3E 70 61    eturns 10....>pa
013DD0:  0D 0A 44 45 4C 45 54 45 28 66 69 6C 65 6E 61 6D    ..DELETE(filenam
013DE0:  65 2C 62 75 66 66 65 72 29 0D 0A 0D 0A 45 66 66    e,buffer)....Eff
013DF0:  65 63 74 3A 09 54 68 65 20 66 69 72 73 74 20 70    ect:.The first p
013E00:  61 72 61 6D 65 74 65 72 20 69 73 20 61 20 73 74    arameter is a st
013E10:  72 69 6E 67 20 73 70 65 63 69 66 79 69 6E 67 20    ring specifying 
013E20:  74 68 65 20 6E 61 6D 65 20 6F 66 20 0D 8A 09 61    the name of ...a
013E30:  20 66 69 6C 65 2E 20 54 68 69 73 20 66 69 6C 65     file. This file
013E40:  20 69 73 90 20 74 68 65 6E 90 20 64 65 6C 65 74     is. then. delet
013E50:  65 64 20 66 72 6F 6D 20 74 68 65 20 64 69 73 63    ed from the disc
013E60:  2E 20 54 68 65 20 0D 8A 09 43 50 2F 4D 20 76 65    . The ...CP/M ve
013E70:  72 73 69 6F 6E 20 72 65 71 75 69 72 65 73 20 61    rsion requires a
013E80:  6E 90 20 38 32 90 20 77 6F 72 64 90 20 62 75 66    n. 82. word. buf
013E90:  66 65 72 2C 20 74 68 65 20 41 4D 53 44 4F 53 20    fer, the AMSDOS 
013EA0:  0D 8A 09 76 65 72 73 69 6F 6E 20 72 65 71 75 69    ...version requi
013EB0:  72 65 73 20 6E 6F 20 62 75 66 66 65 72 2E 0D 0A    res no buffer...
013EC0:  0D 0A 52 65 74 75 72 6E 73 3A 09 54 52 55 45 20    ..Returns:.TRUE 
013ED0:  69 66 20 74 68 65 20 6F 70 65 72 61 74 69 6F 6E    if the operation
013EE0:  20 73 75 63 63 65 65 64 65 64 2C 20 46 41 4C 53     succeeded, FALS
013EF0:  45 20 69 66 20 61 20 64 69 73 63 20 65 72 72 6F    E if a disc erro
013F00:  72 20 0D 8A 09 6F 63 63 75 72 72 65 64 2E 0D 0A    r ...occurred...
013F10:  0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42    ..Location:.CLIB
013F20:  48 44 52 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A    HDR1, ALIBHDR1..
013F30:  0D 0A 45 78 61 6D 70 6C 65 73 3A 09 64 65 6C 65    ..Examples:.dele
013F40:  74 65 28 22 74 65 6D 70 66 69 6C 65 22 2C 62 75    te("tempfile",bu
013F50:  66 66 65 72 29 09 2F 2F 20 43 50 2F 4D 20 76 65    ffer).// CP/M ve
013F60:  72 73 69 6F 6E 0D 0A 09 64 65 6C 65 74 65 28 22    rsion...delete("
013F70:  74 65 6D 70 66 69 6C 65 22 29 09 09 2F 2F 20 41    tempfile")..// A
013F80:  4D 53 44 4F 53 20 76 65 72 73 69 6F 6E 0D 0A 0D    MSDOS version...
013F90:  0A 0D 0A 4C 45 56 45 4C 28 61 72 72 61 79 29 0D    ...LEVEL(array).
013FA0:  0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 69 73 20    ...Effect:.This 
013FB0:  72 65 74 75 72 6E 73 20 74 68 65 90 20 73 74 61    returns the. sta
013FC0:  74 65 90 20 6F 66 90 20 74 68 65 90 20 42 43 50    te. of. the. BCP
013FD0:  4C 90 20 70 72 6F 67 72 61 6D 20 69 6E 20 74 68    L. program in th
013FE0:  65 20 0D 8A 09 61 72 72 61 79 20 67 69 76 65 6E    e ...array given
013FF0:  2E 20 54 68 65 20 61 72 72 61 79 90 20 6D 75 73    . The array. mus
014000:  74 90 20 62 65 90 20 61 74 90 20 6C 65 61 73 74    t. be. at. least
014010:  20 34 20 77 6F 72 64 73 20 69 6E 20 0D 8A 09 73     4 words in ...s
014020:  69 7A 65 2E 20 54 68 69 73 20 72 6F 75 74 69 6E    ize. This routin
014030:  65 90 20 69 73 90 20 75 73 65 64 90 20 77 69 74    e. is. used. wit
014040:  68 90 20 4C 4F 4E 47 4A 55 4D 50 90 20 74 6F 20    h. LONGJUMP. to 
014050:  61 6C 6C 6F 77 20 0D 8A 09 6A 75 6D 70 73 20 62    allow ...jumps b
014060:  65 74 77 65 65 6E 20 70 72 6F 63 65 64 75 72 65    etween procedure
014070:  73 20 65 74 63 2E 90 20 53 65 65 90 20 73 65 63    s etc.. See. sec
014080:  74 69 6F 6E 20 39 20 66 6F 72 20 6D 6F 72 65 20    tion 9 for more 
014090:  0D 8A 09 64 65 74 61 69 6C 73 2E 0D 0A 0D 0A 52    ...details.....R
0140A0:  65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D    eturns:.Nothing.
0140B0:  0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 50 72 65    ...Location:.Pre
0140C0:  2D 64 65 66 69 6E 65 64 2C 20 70 72 65 2D 64 65    -defined, pre-de
0140D0:  66 69 6E 65 64 0D 0A 0D 0A 0D 0A 4C 4F 4E 47 4A    fined......LONGJ
0140E0:  55 4D 50 28 61 64 64 72 65 73 73 2C 61 72 72 61    UMP(address,arra
0140F0:  79 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54 68    y)....Effect:.Th
014100:  69 73 20 77 69 6C 6C 20 73 65 74 20 74 68 65 90    is will set the.
014110:  20 73 74 61 74 65 90 20 6F 66 90 20 74 68 65 20     state. of. the 
014120:  70 72 6F 67 72 61 6D 20 61 63 63 6F 72 64 69 6E    program accordin
014130:  67 20 74 6F 20 0D 8A 09 74 68 65 90 20 61 72 72    g to ...the. arr
014140:  61 79 90 20 67 69 76 65 6E 2E 90 20 54 68 65 90    ay. given.. The.
014150:  20 61 72 72 61 79 90 90 20 6D 75 73 74 90 20 68     array.. must. h
014160:  61 76 65 90 20 62 65 65 6E 90 20 73 65 74 20 0D    ave. been. set .
014170:  8A 09 70 72 65 76 69 6F 75 73 6C 79 20 62 79 20    ..previously by 
014180:  74 68 65 20 75 73 65 90 20 6F 66 90 20 4C 45 56    the use. of. LEV
014190:  45 4C 2E 90 20 4F 6E 63 65 90 20 74 68 65 20 73    EL.. Once. the s
0141A0:  74 61 74 65 20 68 61 73 20 0D 8A 09 62 65 65 6E    tate has ...been
0141B0:  20 73 65 74 20 69 74 20 77 69 6C 6C 20 6A 75 6D     set it will jum
0141C0:  70 90 20 74 6F 90 20 61 64 64 72 65 73 73 2E 90    p. to. address..
0141D0:  20 53 65 65 20 73 65 63 74 69 6F 6E 20 39 20 66     See section 9 f
0141E0:  6F 72 20 0D 8A 09 6D 6F 72 65 20 64 65 74 61 69    or ...more detai
0141F0:  6C 73 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09    ls.....Returns:.
014200:  4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74    Nothing....Locat
014210:  69 6F 6E 3A 09 50 72 65 2D 64 65 66 69 6E 65 64    ion:.Pre-defined
014220:  2C 20 70 72 65 2D 64 65 66 69 6E 65 64 0D 0A 0D    , pre-defined...
014230:  0A 3E 70 61 0D 0A 52 41 4E 44 4F 4D 28 29 0D 0A    .>pa..RANDOM()..
014240:  0D 0A 45 66 66 65 63 74 3A 09 54 68 69 73 20 66    ..Effect:.This f
014250:  75 6E 63 74 69 6F 6E 90 20 72 65 74 75 72 6E 73    unction. returns
014260:  90 20 61 90 20 73 65 71 75 65 6E 63 65 90 20 6F    . a. sequence. o
014270:  66 90 20 70 73 65 75 64 6F 2D 72 61 6E 64 6F 6D    f. pseudo-random
014280:  20 0D 8A 09 6E 75 6D 62 65 72 73 2E 20 54 68 65     ...numbers. The
014290:  20 73 65 71 75 65 6E 63 65 20 77 69 6C 6C 90 20     sequence will. 
0142A0:  61 6C 77 61 79 73 90 20 62 65 20 74 68 65 20 73    always. be the s
0142B0:  61 6D 65 20 75 6E 6C 65 73 73 20 0D 8A 09 74 68    ame unless ...th
0142C0:  65 20 73 65 65 64 20 69 73 20 69 6E 69 74 69 61    e seed is initia
0142D0:  6C 69 73 65 64 20 66 69 72 73 74 2E 20 54 68 65    lised first. The
0142E0:  20 73 65 65 64 20 69 73 20 73 74 6F 72 65 64 20     seed is stored 
0142F0:  69 6E 20 61 20 0D 8A 09 73 74 61 74 69 63 20 76    in a ...static v
014300:  61 72 69 61 62 6C 65 20 63 61 6C 6C 65 64 90 20    ariable called. 
014310:  27 72 61 6E 64 6F 6D 73 65 65 64 27 2C 90 20 61    'randomseed',. a
014320:  6E 64 20 74 68 69 73 20 73 68 6F 75 6C 64 20 0D    nd this should .
014330:  8A 09 62 65 90 20 69 6E 69 74 69 61 6C 69 73 65    ..be. initialise
014340:  64 90 20 74 6F 90 90 20 64 69 66 66 65 72 65 6E    d. to.. differen
014350:  74 90 90 20 76 61 6C 75 65 73 90 90 20 74 6F 90    t.. values.. to.
014360:  20 70 72 6F 64 75 63 65 20 0D 8A 09 64 69 66 66     produce ...diff
014370:  65 72 65 6E 74 20 73 65 71 75 65 6E 63 65 73 2E    erent sequences.
014380:  90 20 54 68 65 90 20 73 65 71 75 65 6E 63 65 90    . The. sequence.
014390:  20 72 75 6E 73 90 20 74 68 72 6F 75 67 68 20 61     runs. through a
0143A0:  6C 6C 20 0D 8A 09 70 6F 73 73 69 62 6C 65 20 32    ll ...possible 2
0143B0:  20 62 79 74 65 20 76 61 6C 75 65 73 2E 0D 0A 0D     byte values....
0143C0:  0A 52 65 74 75 72 6E 73 3A 09 41 20 72 61 6E 64    .Returns:.A rand
0143D0:  6F 6D 6C 79 20 67 65 6E 65 72 61 74 65 64 20 69    omly generated i
0143E0:  6E 74 65 67 65 72 2E 0D 0A 0D 0A 4C 6F 63 61 74    nteger.....Locat
0143F0:  69 6F 6E 3A 09 43 4C 49 42 48 44 52 31 2C 20 41    ion:.CLIBHDR1, A
014400:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
014410:  11 00 00 00 02 09 50 E5 11 00 C1 02 00 00 00 02    ......P.........
014420:  11 00 C2 02 00 00 00 02 11 00 C3 02 00 00 00 02    ................
014430:  11 00 C4 02 00 00 00 02 11 00 C5 02 00 00 00 02    ................
014440:  11 00 C6 02 00 00 00 02 11 00 C7 02 00 00 00 02    ................
014450:  11 00 C8 02 00 00 00 02 11 00 C9 02 00 00 00 02    ................
014460:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014470:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014480:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014490:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014500:  4C 49 42 48 44 52 31 0D 0A 0D 0A 0D 0A 52 45 4E    LIBHDR1......REN
014510:  41 4D 45 28 66 69 6C 65 6E 61 6D 65 31 2C 66 69    AME(filename1,fi
014520:  6C 65 6E 61 6D 65 32 2C 62 75 66 66 65 72 29 0D    lename2,buffer).
014530:  0A 0D 0A 45 66 66 65 63 74 3A 09 54 68 65 20 66    ...Effect:.The f
014540:  69 72 73 74 20 70 61 72 61 6D 65 74 65 72 20 69    irst parameter i
014550:  73 20 61 20 73 74 72 69 6E 67 20 73 70 65 63 69    s a string speci
014560:  66 79 69 6E 67 20 74 68 65 20 6E 61 6D 65 20 6F    fying the name o
014570:  66 20 0D 8A 09 61 20 66 69 6C 65 2E 20 54 68 65    f ...a file. The
014580:  20 66 69 6C 65 20 69 73 90 20 72 65 6E 61 6D 65     file is. rename
014590:  64 90 20 74 6F 90 20 74 68 65 20 73 65 63 6F 6E    d. to. the secon
0145A0:  64 20 6E 61 6D 65 2E 20 54 68 65 20 0D 8A 09 43    d name. The ...C
0145B0:  50 2F 4D 20 76 65 72 73 69 6F 6E 20 72 65 71 75    P/M version requ
0145C0:  69 72 65 73 20 61 6E 90 20 38 32 90 20 77 6F 72    ires an. 82. wor
0145D0:  64 90 20 62 75 66 66 65 72 2C 20 74 68 65 20 41    d. buffer, the A
0145E0:  4D 53 44 4F 53 20 0D 8A 09 76 65 72 73 69 6F 6E    MSDOS ...version
0145F0:  20 72 65 71 75 69 72 65 73 20 6E 6F 20 62 75 66     requires no buf
014600:  66 65 72 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A    fer.....Returns:
014610:  09 54 52 55 45 20 69 66 20 74 68 65 20 6F 70 65    .TRUE if the ope
014620:  72 61 74 69 6F 6E 20 73 75 63 63 65 65 64 65 64    ration succeeded
014630:  2C 20 46 41 4C 53 45 20 69 66 20 61 20 64 69 73    , FALSE if a dis
014640:  63 20 65 72 72 6F 72 20 0D 8A 09 6F 63 63 75 72    c error ...occur
014650:  72 65 64 2E 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E    red.....Location
014660:  3A 09 43 4C 49 42 48 44 52 31 2C 20 41 4C 49 42    :.CLIBHDR1, ALIB
014670:  48 44 52 31 0D 0A 0D 0A 09 45 78 61 6D 70 6C 65    HDR1.....Example
014680:  73 3A 0D 0A 09 72 65 6E 61 6D 65 28 22 6F 6C 64    s:...rename("old
014690:  6E 61 6D 65 22 2C 22 6E 65 77 6E 61 6D 65 22 2C    name","newname",
0146A0:  62 75 66 66 65 72 29 20 2F 2F 20 43 50 2F 4D 20    buffer) // CP/M 
0146B0:  76 65 72 73 69 6F 6E 0D 0A 09 72 65 6E 61 6D 65    version...rename
0146C0:  28 22 6F 6C 64 6E 61 6D 65 22 2C 22 6E 65 77 6E    ("oldname","newn
0146D0:  61 6D 65 22 29 20 20 20 20 20 20 20 20 2F 2F 90    ame")        //.
0146E0:  41 4D 53 44 4F 53 20 76 65 72 73 69 6F 6E 0D 0A    AMSDOS version..
0146F0:  0D 0A 0D 0A 53 54 4F 50 28 72 65 74 75 72 6E 63    ....STOP(returnc
014700:  6F 64 65 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09    ode)....Effect:.
014710:  45 78 65 63 75 74 69 6F 6E 20 6F 66 20 74 68 65    Execution of the
014720:  20 70 72 6F 67 72 61 6D 90 20 74 65 72 6D 69 6E     program. termin
014730:  61 74 65 73 2E 90 20 55 6E 64 65 72 20 43 50 2F    ates.. Under CP/
014740:  4D 20 50 6C 75 73 20 0D 8A 09 74 68 65 20 73 75    M Plus ...the su
014750:  70 70 6C 69 65 64 20 70 61 72 61 6D 65 74 65 72    pplied parameter
014760:  90 20 69 73 90 20 75 73 65 64 90 20 74 6F 90 20    . is. used. to. 
014770:  73 65 74 90 20 74 68 65 20 70 72 6F 67 72 61 6D    set. the program
014780:  20 0D 8A 09 72 65 74 75 72 6E 20 63 6F 64 65 2E     ...return code.
014790:  90 20 42 79 90 20 63 6F 6E 76 65 6E 74 69 6F 6E    . By. convention
0147A0:  90 20 61 90 20 72 65 74 75 72 6E 90 20 63 6F 64    . a. return. cod
0147B0:  65 90 20 62 65 74 77 65 65 6E 20 0D 8A 09 23 78    e. between ...#x
0147C0:  46 46 30 30 20 61 6E 64 20 23 78 46 46 46 45 20    FF00 and #xFFFE 
0147D0:  69 73 20 61 6E 20 65 72 72 6F 72 20 63 6F 64 65    is an error code
0147E0:  2E 20 54 68 65 20 72 65 74 75 72 6E 20 63 6F 64    . The return cod
0147F0:  65 20 69 73 20 0D 8A 09 69 67 6E 6F 72 65 64 20    e is ...ignored 
014800:  75 6E 64 65 72 20 43 50 2F 4D 20 32 2E 32 20 61    under CP/M 2.2 a
014810:  6E 64 20 41 4D 53 44 4F 53 2E 0D 0A 0D 0A 52 65    nd AMSDOS.....Re
014820:  74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D 0A    turns:.Nothing..
014830:  0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42    ..Location:.CLIB
014840:  48 44 52 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A    HDR1, ALIBHDR1..
014850:  0D 0A 3E 70 61 0D 0A 55 50 50 45 52 43 41 53 45    ..>pa..UPPERCASE
014860:  28 63 68 61 72 29 0D 0A 0D 0A 45 66 66 65 63 74    (char)....Effect
014870:  3A 09 54 68 69 73 20 69 73 20 74 68 65 20 73 61    :.This is the sa
014880:  6D 65 20 61 73 20 43 41 50 49 54 41 4C 43 48 2E    me as CAPITALCH.
014890:  0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 68 65    ....Returns:.The
0148A0:  20 63 6F 6E 76 65 72 74 65 64 20 63 68 61 72 61     converted chara
0148B0:  63 74 65 72 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E    cter....Location
0148C0:  3A 09 43 4C 49 42 48 44 52 2C 20 41 4C 49 42 48    :.CLIBHDR, ALIBH
0148D0:  44 52 0D 0A 0D 0A 0D 0A 56 45 52 53 49 4F 4E 28    DR......VERSION(
0148E0:  29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 52 65 74    )....Effect:.Ret
0148F0:  75 72 6E 73 20 61 90 20 6E 75 6D 62 65 72 90 20    urns a. number. 
014900:  69 64 65 6E 74 69 66 79 69 6E 67 90 20 74 68 65    identifying. the
014910:  90 20 6F 70 65 72 61 74 69 6E 67 90 20 73 79 73    . operating. sys
014920:  74 65 6D 20 0D 8A 09 61 6E 64 20 63 6F 6D 70 75    tem ...and compu
014930:  74 65 72 20 6F 6E 20 77 68 69 63 68 90 20 74 68    ter on which. th
014940:  65 90 20 70 72 6F 67 72 61 6D 20 69 73 20 62 65    e. program is be
014950:  69 6E 67 20 65 78 65 63 75 74 65 64 2E 20 0D 8A    ing executed. ..
014960:  09 54 68 65 20 76 61 6C 75 65 73 20 72 65 74 75    .The values retu
014970:  72 6E 65 64 20 61 72 65 3A 0D 0A 09 09 31 20 3D    rned are:....1 =
014980:  20 43 50 43 2C 20 41 4D 53 44 4F 53 0D 0A 09 09     CPC, AMSDOS....
014990:  32 20 3D 20 43 50 43 2C 20 43 50 2F 4D 20 32 2E    2 = CPC, CP/M 2.
0149A0:  32 0D 0A 09 09 33 20 3D 20 43 50 43 2C 20 43 50    2....3 = CPC, CP
0149B0:  2F 4D 20 50 6C 75 73 0D 0A 09 09 34 20 3D 20 50    /M Plus....4 = P
0149C0:  43 57 2C 20 43 50 2F 4D 20 50 6C 75 73 0D 0A 0D    CW, CP/M Plus...
0149D0:  0A 52 65 74 75 72 6E 73 3A 09 54 68 65 20 76 65    .Returns:.The ve
0149E0:  72 73 69 6F 6E 20 6E 75 6D 62 65 72 0D 0A 0D 0A    rsion number....
0149F0:  4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49 42 48 44    Location:.CLIBHD
014A00:  52 31 2C 20 41 4C 49 42 48 44 52 31 0D 0A 0D 0A    R1, ALIBHDR1....
014A10:  0D 0A 3E 70 61 0D 0A E2 28 67 29 20 52 6F 75 74    ..>pa...(g) Rout
014A20:  69 6E 65 73 20 70 72 6F 76 69 64 65 64 20 69 6E    ines provided in
014A30:  20 74 68 65 20 43 50 2F 4D 20 6C 69 62 72 61 72     the CP/M librar
014A40:  69 65 73 20 6F 6E 6C 79 E2 0D 0A 0D 0A 42 44 4F    ies only.....BDO
014A50:  53 41 28 40 63 2C 40 64 65 29 0D 0A 0D 0A 45 66    SA(@c,@de)....Ef
014A60:  66 65 63 74 3A 09 54 68 65 20 42 44 4F 53 20 69    fect:.The BDOS i
014A70:  73 20 63 61 6C 6C 65 64 20 77 69 74 68 20 74 68    s called with th
014A80:  65 20 70 61 72 61 6D 65 74 65 72 73 20 70 61 73    e parameters pas
014A90:  73 65 64 20 69 6E 20 74 68 65 20 43 20 0D 8A 09    sed in the C ...
014AA0:  61 6E 64 20 44 45 20 72 65 67 69 73 74 65 72 73    and DE registers
014AB0:  2E 20 54 68 65 20 61 64 64 72 65 73 73 65 73 90    . The addresses.
014AC0:  20 6F 66 20 74 68 65 20 76 61 72 69 61 62 6C 65     of the variable
014AD0:  73 20 6D 75 73 74 20 0D 8A 09 62 65 20 70 61 73    s must ...be pas
014AE0:  73 65 64 20 69 6E 20 6F 72 64 65 72 20 74 68 61    sed in order tha
014AF0:  74 90 20 72 65 73 75 6C 74 73 90 20 63 61 6E 20    t. results. can 
014B00:  62 65 20 72 65 74 75 72 6E 65 64 2E 20 54 68 65    be returned. The
014B10:  20 0D 8A 09 72 65 74 75 72 6E 65 64 20 76 61 6C     ...returned val
014B20:  75 65 73 20 6F 66 20 74 68 65 90 20 41 90 20 61    ues of the. A. a
014B30:  6E 64 90 20 48 4C 90 20 72 65 67 69 73 74 65 72    nd. HL. register
014B40:  73 20 66 72 6F 6D 20 74 68 65 20 0D 8A 09 42 44    s from the ...BD
014B50:  4F 53 90 20 61 72 65 90 20 72 65 74 75 72 6E 65    OS. are. returne
014B60:  64 90 20 69 6E 90 90 20 74 68 65 90 90 20 76 61    d. in.. the.. va
014B70:  72 69 61 62 6C 65 73 90 90 20 63 90 20 61 6E 64    riables.. c. and
014B80:  90 20 64 65 20 0D 8A 09 72 65 73 70 65 63 74 69    . de ...respecti
014B90:  76 65 6C 79 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73    vely.....Returns
014BA0:  3A 09 4E 6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63    :.Nothing....Loc
014BB0:  61 74 69 6F 6E 3A 09 43 4C 49 42 48 44 52 20 6F    ation:.CLIBHDR o
014BC0:  6E 6C 79 0D 0A 0D 0A 0D 0A 42 44 4F 53 42 28 63    nly......BDOSB(c
014BD0:  2C 64 65 29 09 0D 0A 0D 0A 45 66 66 65 63 74 3A    ,de).....Effect:
014BE0:  09 54 68 69 73 20 69 73 20 73 69 6D 69 6C 61 72    .This is similar
014BF0:  20 74 6F 20 42 44 4F 53 41 90 20 65 78 63 65 70     to BDOSA. excep
014C00:  74 90 20 74 68 61 74 20 72 65 73 75 6C 74 73 20    t. that results 
014C10:  61 72 65 20 6E 6F 74 20 0D 8A 09 72 65 74 75 72    are not ...retur
014C20:  6E 65 64 2E 20 54 68 65 20 76 61 6C 75 65 73 20    ned. The values 
014C30:  6F 66 20 63 20 61 6E 64 20 64 65 20 61 72 65 20    of c and de are 
014C40:  70 61 73 73 65 64 2C 20 6E 6F 74 20 74 68 65 69    passed, not thei
014C50:  72 20 0D 8A 09 61 64 64 72 65 73 73 65 73 2E 0D    r ...addresses..
014C60:  0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E 6F 74 68    ...Returns:.Noth
014C70:  69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A    ing....Location:
014C80:  09 43 4C 49 42 48 44 52 20 6F 6E 6C 79 0D 0A 0D    .CLIBHDR only...
014C90:  0A 0D 0A 42 49 4F 53 28 6E 2C 40 61 29 0D 0A 0D    ...BIOS(n,@a)...
014CA0:  0A 45 66 66 65 63 74 3A 09 42 49 4F 53 20 72 6F    .Effect:.BIOS ro
014CB0:  75 74 69 6E 65 20 6E 20 69 73 20 63 61 6C 6C 65    utine n is calle
014CC0:  64 20 61 6E 64 20 74 68 65 20 76 61 6C 75 65 20    d and the value 
014CD0:  72 65 74 75 72 6E 65 64 20 62 79 20 74 68 65 20    returned by the 
014CE0:  0D 8A 09 42 49 4F 53 20 69 6E 20 41 20 69 73 20    ...BIOS in A is 
014CF0:  72 65 74 75 72 6E 65 64 90 20 69 6E 90 20 74 68    returned. in. th
014D00:  65 20 76 61 72 69 61 62 6C 65 20 61 2E 20 54 68    e variable a. Th
014D10:  65 20 61 64 64 72 65 73 73 20 0D 8A 09 6F 66 20    e address ...of 
014D20:  61 20 6D 75 73 74 20 62 65 20 70 61 73 73 65 64    a must be passed
014D30:  2E 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69    . This routine i
014D40:  73 20 75 73 65 64 20 62 79 20 50 52 42 55 53 59    s used by PRBUSY
014D50:  2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E 6F    .....Returns:.No
014D60:  74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F    thing....Locatio
014D70:  6E 3A 09 43 4C 49 42 48 44 52 20 6F 6E 6C 79 0D    n:.CLIBHDR only.
014D80:  0A 0D 0A 0D 0A 46 49 52 4D 57 41 52 45 28 61 64    .....FIRMWARE(ad
014D90:  64 72 65 73 73 2C 40 61 66 2C 40 62 63 2C 40 64    dress,@af,@bc,@d
014DA0:  65 2C 40 68 6C 2C 40 69 78 29 0D 0A 0D 0A 45 66    e,@hl,@ix)....Ef
014DB0:  66 65 63 74 3A 09 4F 6E 20 43 50 2F 4D 20 50 6C    fect:.On CP/M Pl
014DC0:  75 73 2C 20 63 61 6C 6C 73 20 74 68 65 20 66 69    us, calls the fi
014DD0:  72 6D 77 61 72 65 20 52 4F 4D 20 28 43 50 43 36    rmware ROM (CPC6
014DE0:  31 32 38 20 6F 6E 6C 79 29 20 6F 72 20 0D 8A 09    128 only) or ...
014DF0:  74 68 65 20 65 78 74 65 6E 64 65 64 20 66 69 72    the extended fir
014E00:  6D 77 61 72 65 90 20 6A 75 6D 70 62 6C 6F 63 6B    mware. jumpblock
014E10:  2E 90 20 54 68 65 20 76 61 6C 75 65 73 20 72 65    .. The values re
014E20:  74 75 72 6E 65 64 20 0D 8A 09 62 79 90 20 74 68    turned ...by. th
014E30:  65 90 20 66 69 72 6D 77 61 72 65 90 20 72 6F 75    e. firmware. rou
014E40:  74 69 6E 65 90 20 61 72 65 90 20 70 61 73 73 65    tine. are. passe
014E50:  64 90 20 62 61 63 6B 90 20 69 6E 90 20 74 68 65    d. back. in. the
014E60:  20 0D 8A 09 76 61 72 69 61 62 6C 65 73 2E 20 41     ...variables. A
014E70:  6C 6C 20 70 61 72 61 6D 65 74 65 72 73 20 4D 55    ll parameters MU
014E80:  53 54 20 62 65 20 73 75 70 70 6C 69 65 64 2E 0D    ST be supplied..
014E90:  0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E 6F 74 68    ...Returns:.Noth
014EA0:  69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A    ing....Location:
014EB0:  09 43 4C 49 42 48 44 52 31 20 6F 6E 6C 79 0D 0A    .CLIBHDR1 only..
014EC0:  0D 0A 3E 70 61 0D 0A 54 41 49 4C 28 73 74 72 69    ..>pa..TAIL(stri
014ED0:  6E 67 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 54    ng)....Effect:.T
014EE0:  61 6B 65 73 20 61 90 20 76 65 63 74 6F 72 90 20    akes a. vector. 
014EF0:  61 73 90 20 70 61 72 61 6D 65 74 65 72 90 20 61    as. parameter. a
014F00:  6E 64 90 20 73 74 6F 72 65 73 90 20 74 68 65 90    nd. stores. the.
014F10:  20 43 50 2F 4D 20 0D 8A 09 63 6F 6D 6D 61 6E 64     CP/M ...command
014F20:  20 74 61 69 6C 20 28 66 72 6F 6D 20 23 78 38 30     tail (from #x80
014F30:  29 90 20 69 6E 90 20 74 68 65 90 20 76 65 63 74    ). in. the. vect
014F40:  6F 72 20 61 73 20 61 20 73 74 72 69 6E 67 2E 20    or as a string. 
014F50:  0D 8A 09 54 68 69 73 20 61 6C 6C 6F 77 73 20 42    ...This allows B
014F60:  43 50 4C 20 70 72 6F 67 72 61 6D 73 90 20 74 6F    CPL programs. to
014F70:  90 20 61 63 63 65 73 73 20 70 61 72 61 6D 65 74    . access paramet
014F80:  65 72 73 20 74 79 70 65 64 20 0D 8A 09 6F 6E 20    ers typed ...on 
014F90:  74 68 65 20 43 50 2F 4D 90 20 63 6F 6D 6D 61 6E    the CP/M. comman
014FA0:  64 90 20 6C 69 6E 65 2E 90 20 54 68 65 90 20 76    d. line.. The. v
014FB0:  65 63 74 6F 72 90 20 73 68 6F 75 6C 64 20 62 65    ector. should be
014FC0:  20 36 34 20 0D 8A 09 77 6F 72 64 73 20 6C 6F 6E     64 ...words lon
014FD0:  67 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E    g.....Returns:.N
014FE0:  6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69    othing....Locati
014FF0:  6F 6E 3A 09 43 4C 49 42 48 44 52 31 20 6F 6E 6C    on:.CLIBHDR1 onl
015000:  79 0D 0A 0D 0A 0D 0A 0D 0A E2 28 68 29 20 52 6F    y.........(h) Ro
015010:  75 74 69 6E 65 73 20 70 72 6F 76 69 64 65 64 20    utines provided 
015020:  69 6E 20 74 68 65 20 41 4D 53 44 4F 53 20 6C 69    in the AMSDOS li
015030:  62 72 61 72 69 65 73 20 6F 6E 6C 79 E2 0D 0A 0D    braries only....
015040:  0A 0D 0A 45 58 54 45 52 4E 41 4C 28 63 6F 6D 6D    ...EXTERNAL(comm
015050:  61 6E 64 2C 6E 70 61 72 6D 73 2C 70 61 72 6D 62    and,nparms,parmb
015060:  6C 6F 63 6B 29 0D 0A 0D 0A 45 66 66 65 63 74 3A    lock)....Effect:
015070:  09 54 68 69 73 90 20 61 6C 6C 6F 77 73 90 20 61    .This. allows. a
015080:  90 20 42 43 50 4C 90 20 70 72 6F 67 72 61 6D 90    . BCPL. program.
015090:  20 74 6F 90 20 61 63 63 65 73 73 90 20 61 6E 90     to. access. an.
0150A0:  20 41 4D 53 44 4F 53 20 0D 8A 09 65 78 74 65 72     AMSDOS ...exter
0150B0:  6E 61 6C 20 63 6F 6D 6D 61 6E 64 2E 20 49 74 20    nal command. It 
0150C0:  69 73 20 75 73 65 64 20 62 79 20 44 45 4C 45 54    is used by DELET
0150D0:  45 20 61 6E 64 20 52 45 4E 41 4D 45 2E 20 54 68    E and RENAME. Th
0150E0:  65 20 0D 8A 09 70 61 72 61 6D 65 74 65 72 73 20    e ...parameters 
0150F0:  61 72 65 20 70 61 73 73 65 64 90 20 69 6E 90 20    are passed. in. 
015100:  74 68 65 90 20 66 6F 72 6D 90 20 72 65 71 75 69    the. form. requi
015110:  72 65 64 90 20 62 79 20 74 68 65 20 0D 8A 09 66    red. by the ...f
015120:  69 72 6D 77 61 72 65 20 66 6F 72 90 20 63 61 6C    irmware for. cal
015130:  6C 69 6E 67 90 20 61 6E 90 20 65 78 74 65 72 6E    ling. an. extern
015140:  61 6C 90 20 63 6F 6D 6D 61 6E 64 2E 90 20 53 65    al. command.. Se
015150:  65 20 74 68 65 20 0D 8A 09 44 45 4C 45 54 45 20    e the ...DELETE 
015160:  61 6E 64 20 52 45 4E 41 4D 45 20 72 6F 75 74 69    and RENAME routi
015170:  6E 65 73 20 69 6E 90 20 41 4C 49 42 48 44 52 31    nes in. ALIBHDR1
015180:  20 66 6F 72 20 64 65 74 61 69 6C 73 20 6F 66 20     for details of 
015190:  0D 8A 09 68 6F 77 20 74 6F 20 75 73 65 20 74 68    ...how to use th
0151A0:  69 73 20 72 6F 75 74 69 6E 65 2E 0D 0A 0D 0A 52    is routine.....R
0151B0:  65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D    eturns:.Nothing.
0151C0:  0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 41 4C 49    ...Location:.ALI
0151D0:  42 48 44 52 31 20 6F 6E 6C 79 0D 0A 0D 0A 0D 0A    BHDR1 only......
0151E0:  54 49 4D 45 28 29 0D 0A 0D 0A 45 66 66 65 63 74    TIME()....Effect
0151F0:  3A 09 52 65 74 75 72 6E 73 90 20 74 68 65 90 20    :.Returns. the. 
015200:  74 69 6D 65 90 20 69 6E 90 20 75 6E 69 74 73 90    time. in. units.
015210:  90 20 6F 66 90 20 31 2F 33 30 30 90 20 73 65 63    . of. 1/300. sec
015220:  6F 6E 64 2C 90 20 61 73 20 0D 8A 09 6D 61 69 6E    ond,. as ...main
015230:  74 61 69 6E 65 64 20 62 79 20 74 68 65 20 41 4D    tained by the AM
015240:  53 44 4F 53 20 66 69 72 6D 77 61 72 65 2E 0D 0A    SDOS firmware...
015250:  0D 0A 52 65 74 75 72 6E 73 3A 09 54 68 65 20 74    ..Returns:.The t
015260:  69 6D 65 0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A    ime....Location:
015270:  09 41 4C 49 42 48 44 52 31 20 6F 6E 6C 79 0D 0A    .ALIBHDR1 only..
015280:  3E 70 61 0D 0A E2 28 69 29 20 52 6F 75 74 69 6E    >pa...(i) Routin
015290:  65 73 20 70 72 6F 76 69 64 65 64 20 6F 6E 6C 79    es provided only
0152A0:  20 66 6F 72 20 63 6F 6D 70 61 74 69 62 69 6C 69     for compatibili
0152B0:  74 79 E2 0D 0A 0D 0A 3E 2D 2D 2D 2D 2D 2D 2D 21    ty.....>-------!
0152C0:  2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21    -------!-------!
0152D0:  2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21    -------!-------!
0152E0:  2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21    -------!-------!
0152F0:  2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D 0A 54    -------!----R..T
015300:  68 65 73 65 20 61 72 65 20 72 6F 75 74 69 6E 65    hese are routine
015310:  73 20 74 68 61 74 20 6D 61 79 20 62 65 20 75 73    s that may be us
015320:  65 64 20 69 6E 20 65 78 69 73 74 69 6E 67 20 42    ed in existing B
015330:  43 50 4C 20 70 72 6F 67 72 61 6D 73 2C 20 62 75    CPL programs, bu
015340:  74 20 74 68 65 20 0D 8A 69 6E 66 69 78 65 64 20    t the ..infixed 
015350:  62 79 74 65 20 6F 70 65 72 61 74 6F 72 20 6E 6F    byte operator no
015360:  77 20 6D 61 6B 65 73 20 74 68 65 69 72 20 75 73    w makes their us
015370:  65 20 75 6E 6E 65 63 65 73 73 61 72 79 2E 0D 0A    e unnecessary...
015380:  3E 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20    >-------------- 
015390:  4C 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D    L-------!-------
0153A0:  21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D    !-------!-------
0153B0:  21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D    !-------!-------
0153C0:  21 2D 2D 2D 2D 52 0D 0A 0D 0A 47 45 54 42 59 54    !----R....GETBYT
0153D0:  45 28 73 74 72 69 6E 67 2C 70 6F 73 29 0D 0A 0D    E(string,pos)...
0153E0:  0A 45 66 66 65 63 74 3A 09 47 65 74 73 20 61 90    .Effect:.Gets a.
0153F0:  20 63 68 61 72 61 63 74 65 72 90 20 66 72 6F 6D     character. from
015400:  90 20 61 90 20 73 74 72 69 6E 67 2E 90 20 54 68    . a. string.. Th
015410:  69 73 90 20 72 6F 75 74 69 6E 65 90 20 69 73 20    is. routine. is 
015420:  0D 8A 09 69 6E 63 6C 75 64 65 64 20 66 6F 72 20    ...included for 
015430:  63 6F 6D 70 61 74 69 62 69 6C 69 74 79 20 77 69    compatibility wi
015440:  74 68 20 6F 6C 64 65 72 20 42 43 50 4C 20 73 79    th older BCPL sy
015450:  73 74 65 6D 73 20 61 6E 64 20 0D 8A 09 77 6F 75    stems and ...wou
015460:  6C 64 20 75 73 75 61 6C 6C 79 20 62 65 20 72 65    ld usually be re
015470:  70 6C 61 63 65 64 20 62 79 3A 20 20 73 74 72 69    placed by:  stri
015480:  6E 67 25 70 6F 73 0D 0A 0D 0A 52 65 74 75 72 6E    ng%pos....Return
015490:  73 3A 09 54 68 65 20 63 68 61 72 61 63 74 65 72    s:.The character
0154A0:  20 66 72 6F 6D 20 74 68 65 20 73 74 72 69 6E 67     from the string
0154B0:  0D 0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C    ....Location:.CL
0154C0:  49 42 48 44 52 31 2C 20 41 4C 49 42 48 44 52 31    IBHDR1, ALIBHDR1
0154D0:  0D 0A 0D 0A 0D 0A 50 41 43 4B 53 54 52 49 4E 47    ......PACKSTRING
0154E0:  28 76 65 63 74 6F 72 2C 73 74 72 69 6E 67 29 0D    (vector,string).
0154F0:  0A 0D 0A 45 66 66 65 63 74 3A 09 50 61 63 6B 73    ...Effect:.Packs
015500:  20 61 20 76 65 63 74 6F 72 20 63 6F 6E 74 61 69     a vector contai
015510:  6E 69 6E 67 20 6F 6E 65 90 20 63 68 61 72 61 63    ning one. charac
015520:  74 65 72 20 70 65 72 20 77 6F 72 64 20 69 6E 74    ter per word int
015530:  6F 20 0D 8A 09 61 20 73 74 72 69 6E 67 90 20 63    o ...a string. c
015540:  6F 6E 74 61 69 6E 69 6E 67 90 20 74 77 6F 90 20    ontaining. two. 
015550:  63 68 61 72 61 63 74 65 72 73 90 20 70 65 72 90    characters. per.
015560:  20 77 6F 72 64 2E 20 54 68 69 73 20 0D 8A 09 72     word. This ...r
015570:  6F 75 74 69 6E 65 20 69 73 20 69 6E 63 6C 75 64    outine is includ
015580:  65 64 20 66 6F 72 90 20 63 6F 6D 70 61 74 69 62    ed for. compatib
015590:  69 6C 69 74 79 20 77 69 74 68 20 6F 6C 64 65 72    ility with older
0155A0:  20 42 43 50 4C 20 0D 8A 09 73 79 73 74 65 6D 73     BCPL ...systems
0155B0:  2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E 6F    .....Returns:.No
0155C0:  74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69 6F    thing....Locatio
0155D0:  6E 3A 09 43 4C 49 42 48 44 52 31 2C 20 41 4C 49    n:.CLIBHDR1, ALI
0155E0:  42 48 44 52 31 0D 0A 0D 0A 0D 0A 50 55 54 42 59    BHDR1......PUTBY
0155F0:  54 45 28 73 74 72 69 6E 67 2C 70 6F 73 2C 63 68    TE(string,pos,ch
015600:  61 72 29 0D 0A 0D 0A 45 66 66 65 63 74 3A 09 50    ar)....Effect:.P
015610:  75 74 73 20 61 90 20 63 68 61 72 61 63 74 65 72    uts a. character
015620:  90 20 69 6E 74 6F 90 20 61 90 20 73 74 72 69 6E    . into. a. strin
015630:  67 2E 90 20 54 68 69 73 90 20 72 6F 75 74 69 6E    g.. This. routin
015640:  65 90 20 69 73 20 0D 8A 09 69 6E 63 6C 75 64 65    e. is ...include
015650:  64 20 66 6F 72 20 63 6F 6D 70 61 74 69 62 69 6C    d for compatibil
015660:  69 74 79 90 20 77 69 74 68 90 20 6F 6C 64 65 72    ity. with. older
015670:  90 20 42 43 50 4C 20 73 79 73 74 65 6D 73 2C 20    . BCPL systems, 
015680:  0D 8A 09 61 6E 64 20 77 6F 75 6C 64 20 75 73 75    ...and would usu
015690:  61 6C 6C 79 20 62 65 20 72 65 70 6C 61 63 65 64    ally be replaced
0156A0:  20 62 79 3A 09 0D 0A 09 09 73 74 72 69 6E 67 25     by:.....string%
0156B0:  70 6F 73 20 3A 3D 20 63 68 61 72 0D 0A 0D 0A 52    pos := char....R
0156C0:  65 74 75 72 6E 73 3A 09 4E 6F 74 68 69 6E 67 0D    eturns:.Nothing.
0156D0:  0A 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 09 43 4C 49    ...Location:.CLI
0156E0:  42 48 44 52 31 2C 20 41 4C 49 42 48 44 52 31 0D    BHDR1, ALIBHDR1.
0156F0:  0A 0D 0A 0D 0A 55 4E 50 41 43 4B 53 54 52 49 4E    .....UNPACKSTRIN
015700:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
015710:  12 00 00 00 02 09 50 E5 12 00 C1 02 00 00 00 02    ......P.........
015720:  12 00 C2 02 00 00 00 02 12 00 C3 02 00 00 00 02    ................
015730:  12 00 C4 02 00 00 00 02 12 00 C5 02 00 00 00 02    ................
015740:  12 00 C6 02 00 00 00 02 12 00 C7 02 00 00 00 02    ................
015750:  12 00 C8 02 00 00 00 02 12 00 C9 02 00 00 00 02    ................
015760:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015770:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015780:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015790:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0157A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0157B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0157C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0157D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0157E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0157F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015800:  47 28 73 74 72 69 6E 67 2C 76 65 63 74 6F 72 29    G(string,vector)
015810:  0D 0A 0D 0A 45 66 66 65 63 74 3A 09 55 6E 70 61    ....Effect:.Unpa
015820:  63 6B 73 20 61 20 73 74 72 69 6E 67 90 20 63 6F    cks a string. co
015830:  6E 74 61 69 6E 69 6E 67 90 20 74 77 6F 90 20 63    ntaining. two. c
015840:  68 61 72 61 63 74 65 72 73 20 70 65 72 20 77 6F    haracters per wo
015850:  72 64 20 0D 8A 09 69 6E 74 6F 20 61 20 76 65 63    rd ...into a vec
015860:  74 6F 72 20 63 6F 6E 74 61 69 6E 69 6E 67 20 6F    tor containing o
015870:  6E 65 90 20 63 68 61 72 61 63 74 65 72 20 70 65    ne. character pe
015880:  72 20 77 6F 72 64 2E 20 54 68 69 73 20 0D 8A 09    r word. This ...
015890:  72 6F 75 74 69 6E 65 20 69 73 20 69 6E 63 6C 75    routine is inclu
0158A0:  64 65 64 20 66 6F 72 90 20 63 6F 6D 70 61 74 69    ded for. compati
0158B0:  62 69 6C 69 74 79 20 77 69 74 68 20 6F 6C 64 65    bility with olde
0158C0:  72 20 42 43 50 4C 20 0D 8A 09 73 79 73 74 65 6D    r BCPL ...system
0158D0:  73 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E    s.....Returns:.N
0158E0:  6F 74 68 69 6E 67 0D 0A 0D 0A 4C 6F 63 61 74 69    othing....Locati
0158F0:  6F 6E 3A 09 43 4C 49 42 48 44 52 31 2C 20 41 4C    on:.CLIBHDR1, AL
015900:  49 42 48 44 52 31 0D 0A 3E 70 61 0D 0A E2 28 6A    IBHDR1..>pa...(j
015910:  29 20 41 4D 53 44 4F 53 20 47 72 61 70 68 69 63    ) AMSDOS Graphic
015920:  73 20 61 6E 64 20 6F 74 68 65 72 20 72 6F 75 74    s and other rout
015930:  69 6E 65 73 E2 0D 0A 0D 0A 3E 2D 2D 2D 21 2D 2D    ines.....>---!--
015940:  2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D    ---!-----!------
015950:  2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D    -!-------!------
015960:  2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D    -!-------!------
015970:  2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 52 0D    -!-------!----R.
015980:  0A 09 54 68 65 73 65 20 72 6F 75 74 69 6E 65 73    ..These routines
015990:  20 61 72 65 20 69 6E 63 6C 75 64 65 64 20 69 6E     are included in
0159A0:  20 74 68 65 20 66 69 6C 65 20 22 41 4D 53 44 4F     the file "AMSDO
0159B0:  53 22 2C 20 61 6E 64 20 61 72 65 20 72 65 6C 65    S", and are rele
0159C0:  76 61 6E 74 20 0D 8A 6F 6E 6C 79 20 74 6F 20 43    vant ..only to C
0159D0:  50 43 20 6D 61 63 68 69 6E 65 73 2E 20 54 68 65    PC machines. The
0159E0:  79 90 20 70 72 6F 76 69 64 65 90 20 74 68 65 90    y. provide. the.
0159F0:  20 6D 65 61 6E 73 90 20 66 6F 72 20 61 20 42 43     means. for a BC
015A00:  50 4C 20 70 72 6F 67 72 61 6D 20 74 6F 20 0D 8A    PL program to ..
015A10:  61 63 63 65 73 73 20 74 68 65 20 63 6F 6D 70 75    access the compu
015A20:  74 65 72 27 73 90 20 67 72 61 70 68 69 63 73 90    ter's. graphics.
015A30:  20 61 6E 64 90 20 6F 74 68 65 72 90 20 66 69 72     and. other. fir
015A40:  6D 77 61 72 65 90 20 66 61 63 69 6C 69 74 69 65    mware. facilitie
015A50:  73 2C 20 61 6E 64 20 0D 8A 69 6E 20 6D 6F 73 74    s, and ..in most
015A60:  20 63 61 73 65 73 20 63 6F 72 72 65 73 70 6F 6E     cases correspon
015A70:  64 20 64 69 72 65 63 74 6C 79 90 20 74 6F 90 20    d directly. to. 
015A80:  61 20 4C 6F 63 6F 6D 6F 74 69 76 65 20 42 41 53    a Locomotive BAS
015A90:  49 43 20 63 6F 6D 6D 61 6E 64 2E 20 46 6F 72 20    IC command. For 
015AA0:  0D 8A 64 65 74 61 69 6C 73 20 6F 66 20 68 6F 77    ..details of how
015AB0:  20 74 6F 20 75 73 65 90 20 74 68 65 73 65 90 20     to use. these. 
015AC0:  72 6F 75 74 69 6E 65 73 90 20 63 6F 6E 73 75 6C    routines. consul
015AD0:  74 20 74 68 65 20 66 69 6C 65 20 41 4D 53 44 4F    t the file AMSDO
015AE0:  53 2C 20 77 68 69 63 68 20 0D 8A 6C 69 73 74 73    S, which ..lists
015AF0:  20 74 68 65 20 65 71 75 69 76 61 6C 65 6E 74 20     the equivalent 
015B00:  42 41 53 49 43 20 72 6F 75 74 69 6E 65 73 2E 0D    BASIC routines..
015B10:  0A 0D 0A 4C 69 73 74 20 6F 66 20 72 6F 75 74 69    ...List of routi
015B20:  6E 65 73 3A 0D 0A 0D 0A 62 6F 72 64 65 72 2C 20    nes:....border, 
015B30:  63 6C 67 2C 20 63 6C 73 2C 20 63 75 72 73 64 69    clg, cls, cursdi
015B40:  2C 20 63 75 72 73 65 6E 2C 90 20 63 75 72 73 6F    , cursen,. curso
015B50:  66 66 2C 90 20 63 75 72 73 6F 6E 2C 20 64 72 61    ff,. curson, dra
015B60:  77 2C 20 64 72 61 77 72 2C 20 65 6E 74 2C 20 0D    w, drawr, ent, .
015B70:  8A 65 6E 76 2C 20 66 72 61 6D 65 2C 20 67 70 65    .env, frame, gpe
015B80:  6E 2C 20 67 70 61 70 65 72 2C 20 67 74 65 73 74    n, gpaper, gtest
015B90:  2C 90 20 67 74 65 73 74 72 2C 90 20 67 77 69 6E    ,. gtestr,. gwin
015BA0:  64 6F 77 2C 20 67 77 72 63 68 2C 20 69 6E 6B 2C    dow, gwrch, ink,
015BB0:  20 69 6E 6B 65 79 2C 20 0D 8A 69 6E 6B 6D 6F 64     inkey, ..inkmod
015BC0:  65 2C 20 6B 65 79 76 61 6C 69 64 2C 20 6C 6F 63    e, keyvalid, loc
015BD0:  61 74 65 2C 20 6D 6F 64 65 2C 90 20 6D 6F 76 65    ate, mode,. move
015BE0:  2C 90 20 6D 6F 76 65 72 2C 20 6F 70 61 71 75 65    ,. mover, opaque
015BF0:  2C 20 6F 72 69 67 69 6E 2C 20 70 61 70 65 72 2C    , origin, paper,
015C00:  20 0D 8A 70 65 6E 2C 20 70 6C 6F 74 2C 20 70 6C     ..pen, plot, pl
015C10:  6F 74 72 2C 90 20 72 65 6C 65 61 73 65 2C 90 20    otr,. release,. 
015C20:  72 73 78 2C 90 20 73 6F 75 6E 64 2C 90 20 73 70    rsx,. sound,. sp
015C30:  65 65 64 69 6E 6B 2C 20 73 70 65 65 64 6B 65 79    eedink, speedkey
015C40:  2C 20 73 74 72 65 61 6D 2C 20 0D 8A 73 74 72 73    , stream, ..strs
015C50:  77 61 70 2C 20 74 61 67 2C 20 74 61 67 6F 66 66    wap, tag, tagoff
015C60:  2C 20 74 72 61 6E 73 70 61 72 65 6E 74 2C 20 77    , transparent, w
015C70:  69 6E 64 6F 77 2C 20 78 70 6F 73 2C 20 79 70 6F    indow, xpos, ypo
015C80:  73 0D 0A 0D 0A 0D 0A 0D 0A E2 28 6B 29 20 44 45    s.........(k) DE
015C90:  42 55 47 E2 0D 0A 0D 0A 09 54 68 65 72 65 20 69    BUG......There i
015CA0:  73 20 6F 6E 65 20 66 75 72 74 68 65 72 90 20 6C    s one further. l
015CB0:  69 62 72 61 72 79 90 20 72 6F 75 74 69 6E 65 90    ibrary. routine.
015CC0:  20 70 72 6F 76 69 64 65 64 2C 90 20 77 68 69 63     provided,. whic
015CD0:  68 20 69 73 20 75 73 65 66 75 6C 20 0D 8A 77 68    h is useful ..wh
015CE0:  65 6E 20 64 65 62 75 67 67 69 6E 67 20 70 72 6F    en debugging pro
015CF0:  67 72 61 6D 73 2E 20 54 68 65 20 72 6F 75 74 69    grams. The routi
015D00:  6E 65 2C 20 44 45 42 55 47 2C 20 69 73 20 73 75    ne, DEBUG, is su
015D10:  70 70 6C 69 65 64 20 69 6E 20 61 20 73 65 70 61    pplied in a sepa
015D20:  72 61 74 65 20 0D 8A 66 69 6C 65 2C 20 61 6C 73    rate ..file, als
015D30:  6F 20 63 61 6C 6C 65 64 20 27 44 45 42 55 47 27    o called 'DEBUG'
015D40:  2C 20 61 6E 64 20 70 72 6F 76 69 64 65 73 20 76    , and provides v
015D50:  61 72 69 6F 75 73 20 6F 70 74 69 6F 6E 73 20 66    arious options f
015D60:  6F 72 20 64 69 73 70 6C 61 79 69 6E 67 20 0D 8A    or displaying ..
015D70:  76 61 72 69 61 62 6C 65 20 6E 61 6D 65 73 20 61    variable names a
015D80:  6E 64 20 63 6F 6E 74 65 6E 74 73 2E 20 54 68 65    nd contents. The
015D90:  73 65 90 20 6F 70 74 69 6F 6E 73 90 20 6D 61 79    se. options. may
015DA0:  20 62 65 20 63 68 61 6E 67 65 64 20 77 69 74 68     be changed with
015DB0:  20 6C 61 74 65 72 20 0D 8A 72 65 6C 65 61 73 65     later ..release
015DC0:  73 20 6F 66 20 42 43 50 4C 20 61 6E 64 20 73 6F    s of BCPL and so
015DD0:  90 20 74 6F 90 20 65 6E 73 75 72 65 90 20 61 63    . to. ensure. ac
015DE0:  63 75 72 61 63 79 2C 90 20 65 78 61 63 74 20 64    curacy,. exact d
015DF0:  65 74 61 69 6C 73 20 61 72 65 20 6F 6E 6C 79 20    etails are only 
015E00:  0D 8A 67 69 76 65 6E 20 69 6E 20 74 68 65 20 66    ..given in the f
015E10:  69 6C 65 2E 0D 0A 09 54 6F 20 75 73 65 20 44 45    ile....To use DE
015E20:  42 55 47 2C 20 70 75 74 20 74 68 65 90 20 64 69    BUG, put the. di
015E30:  72 65 63 74 69 76 65 90 20 27 47 45 54 90 20 22    rective. 'GET. "
015E40:  44 45 42 55 47 22 27 20 6E 65 61 72 20 74 68 65    DEBUG"' near the
015E50:  20 73 74 61 72 74 20 6F 66 20 0D 8A 74 68 65 20     start of ..the 
015E60:  70 72 6F 67 72 61 6D 20 2D 2D 20 73 6F 20 69 74    program -- so it
015E70:  20 69 73 20 63 6F 6D 70 69 6C 65 64 20 61 66 74     is compiled aft
015E80:  65 72 20 74 68 65 20 6C 69 62 72 61 72 79 20 72    er the library r
015E90:  6F 75 74 69 6E 65 73 20 61 6E 64 20 62 65 66 6F    outines and befo
015EA0:  72 65 20 0D 8A 74 68 65 20 66 69 72 73 74 20 74    re ..the first t
015EB0:  69 6D 65 20 44 45 42 55 47 20 69 73 20 63 61 6C    ime DEBUG is cal
015EC0:  6C 65 64 2E 0D 0A 09 49 74 20 69 73 20 70 6F 73    led....It is pos
015ED0:  73 69 62 6C 65 20 74 6F 20 63 6F 6D 70 69 6C 65    sible to compile
015EE0:  20 74 68 65 90 20 70 72 6F 67 72 61 6D 20 77 69     the. program wi
015EF0:  74 68 6F 75 74 20 44 45 42 55 47 20 62 65 69 6E    thout DEBUG bein
015F00:  67 20 63 61 6C 6C 65 64 2C 20 0D 8A 62 75 74 20    g called, ..but 
015F10:  77 69 74 68 6F 75 74 20 74 68 65 20 6E 65 65 64    without the need
015F20:  20 74 6F 90 20 72 65 6D 6F 76 65 90 20 74 68 65     to. remove. the
015F30:  90 20 63 61 6C 6C 73 20 74 68 65 6D 73 65 6C 76    . calls themselv
015F40:  65 73 2E 20 53 69 6D 70 6C 79 20 72 65 70 6C 61    es. Simply repla
015F50:  63 65 20 0D 8A 27 47 45 54 91 22 44 45 42 55 47    ce ..'GET."DEBUG
015F60:  22 27 20 62 79 20 27 4C 45 54 20 64 65 62 75 67    "' by 'LET debug
015F70:  28 29 20 42 45 20 52 45 54 55 52 4E 27 2E 20 54    () BE RETURN'. T
015F80:  68 69 73 20 77 69 6C 6C 20 73 75 62 73 74 69 74    his will substit
015F90:  75 74 65 20 61 20 64 75 6D 6D 79 20 0D 8A 72 6F    ute a dummy ..ro
015FA0:  75 74 69 6E 65 2E 0D 0A 0D 0A 3E 70 61 0D 0A 1A    utine.....>pa...
015FB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015FC0:  2F 83 00 21 04 68 69 73 20 77 69 6C 6C 20 73 75    /..!.his will su
015FD0:  62 73 74 69 74 75 74 65 20 61 20 64 75 6D 6D 79    bstitute a dummy
015FE0:  20 0D 8A 72 6F 75 74 69 6E 65 2E 0D 0A 0D 0A 3E     ..routine.....>
015FF0:  70 61 0D 0A 1A 00 00 00 00 00 00 00 00 00 00 00    pa..............
016000:  00 42 43 50 4C 4D 33 20 20 20 20 20 00 00 00 00    .BCPLM3     ....
016010:  00 00 0A 00 00 C6 06 00 C5 59 00 00 00 00 00 00    .........Y......
016020:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016030:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016040:  C5 59 00 53 05 65 0D 0A 20 20 20 20 20 20 20 20    .Y.S.e..        
016050:  55 6E 65 78 70 65 63 74 65 64 20 6E 6F 64 65 20    Unexpected node 
016060:  69 6E 20 65 78 70 72 65 73 73 69 6F 6E 0D 0A 20    in expression.. 
016070:  20 20 20 20 20 20 20 44 65 63 6C 61 72 61 74 69           Declarati
016080:  3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D    >---!-----!-----
016090:  21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D    !-------!-------
0160A0:  21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D    !-------!-------
0160B0:  21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D 2D    !-------!-------
0160C0:  21 2D 2D 2D 2D 52 0D 0A 3E 70 6E 20 34 39 0D 0A    !----R..>pn 49..
0160D0:  3E 74 6D 20 33 0D 0A 3E 62 6D 20 31 31 0D 0A 3E    >tm 3..>bm 11..>
0160E0:  68 6D 20 30 0D 0A 3E 66 6D 20 32 0D 0A 3E 66 6F    hm 0..>fm 2..>fo
0160F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
016100:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
016110:  20 20 25 0D 0A 3E 63 65 20 E2 39 2E 20 44 49 46      %..>ce .9. DIF
016120:  46 45 52 45 4E 43 45 53 20 46 52 4F 4D 20 53 54    FERENCES FROM ST
016130:  41 4E 44 41 52 44 20 42 43 50 4C E2 0D 0A 0D 0A    ANDARD BCPL.....
016140:  0D 0A E2 54 68 65 20 49 4E 4C 49 4E 45 20 63 6F    ...The INLINE co
016150:  6D 6D 61 6E 64 E2 0D 0A 0D 0A 09 54 68 69 73 20    mmand......This 
016160:  69 73 20 61 6E 20 65 78 74 65 6E 73 69 6F 6E 20    is an extension 
016170:  74 6F 20 74 68 65 20 6E 6F 72 6D 61 6C 20 42 43    to the normal BC
016180:  50 4C 20 63 6F 6D 6D 61 6E 64 20 73 65 74 20 61    PL command set a
016190:  6E 64 20 61 6C 6C 6F 77 73 20 5A 38 30 20 0D 8A    nd allows Z80 ..
0161A0:  63 6F 64 65 20 74 6F 20 62 65 90 20 69 6E 63 6F    code to be. inco
0161B0:  72 70 6F 72 61 74 65 64 90 20 64 69 72 65 63 74    rporated. direct
0161C0:  6C 79 90 20 69 6E 74 6F 90 20 61 90 20 42 43 50    ly. into. a. BCP
0161D0:  4C 90 20 70 72 6F 67 72 61 6D 2E 20 54 68 65 20    L. program. The 
0161E0:  69 6E 6C 69 6E 65 20 0D 8A 63 6F 6D 6D 61 6E 64    inline ..command
0161F0:  20 69 73 20 66 6F 6C 6C 6F 77 65 64 20 62 79 20     is followed by 
016200:  61 90 20 6C 69 73 74 90 20 6F 66 90 20 63 6F 6E    a. list. of. con
016210:  73 74 61 6E 74 73 20 73 65 70 61 72 61 74 65 64    stants separated
016220:  20 62 79 20 63 6F 6D 6D 61 73 2E 20 54 68 65 20     by commas. The 
016230:  0D 8A 6C 6F 77 20 62 79 74 65 20 6F 66 20 74 68    ..low byte of th
016240:  65 73 65 20 63 6F 6E 73 74 61 6E 74 73 90 20 69    ese constants. i
016250:  73 90 20 74 61 6B 65 6E 90 20 61 6E 64 20 69 6E    s. taken. and in
016260:  73 65 72 74 65 64 20 64 69 72 65 63 74 6C 79 20    serted directly 
016270:  69 6E 74 6F 20 74 68 65 20 0D 8A 6F 62 6A 65 63    into the ..objec
016280:  74 20 63 6F 64 65 2E 20 54 68 69 73 20 61 6C 6C    t code. This all
016290:  6F 77 73 20 70 72 6F 63 65 64 75 72 65 73 20 74    ows procedures t
0162A0:  6F 20 63 61 6C 6C 20 66 69 72 6D 77 61 72 65 20    o call firmware 
0162B0:  72 6F 75 74 69 6E 65 73 20 65 74 63 2E 20 61 6E    routines etc. an
0162C0:  64 20 0D 8A 68 61 73 20 62 65 65 6E 20 75 73 65    d ..has been use
0162D0:  64 20 69 6E 90 20 74 68 65 90 20 4C 49 42 48 44    d in. the. LIBHD
0162E0:  52 90 20 66 69 6C 65 73 2E 90 20 49 6E 90 20 6F    R. files.. In. o
0162F0:  72 64 65 72 90 20 74 6F 20 75 73 65 20 74 68 69    rder. to use thi
016300:  73 20 66 61 63 69 6C 69 74 79 20 0D 8A 70 72 6F    s facility ..pro
016310:  70 65 72 6C 79 20 79 6F 75 20 6D 75 73 74 90 20    perly you must. 
016320:  62 65 90 20 61 77 61 72 65 90 20 6F 66 90 20 74    be. aware. of. t
016330:  68 65 90 20 77 61 79 90 20 74 68 61 74 90 20 74    he. way. that. t
016340:  68 65 90 20 63 6F 6D 70 69 6C 65 72 20 73 74 6F    he. compiler sto
016350:  72 65 73 20 0D 8A 76 61 72 69 61 62 6C 65 73 20    res ..variables 
016360:  61 6E 64 20 72 65 67 69 73 74 65 72 73 20 77 68    and registers wh
016370:  69 63 68 90 20 6D 75 73 74 90 20 62 65 90 20 6C    ich. must. be. l
016380:  65 66 74 90 20 69 6E 74 61 63 74 2E 90 20 53 65    eft. intact.. Se
016390:  65 20 61 70 70 65 6E 64 69 78 20 31 20 0D 8A 28    e appendix 1 ..(
0163A0:  74 65 63 68 6E 69 63 61 6C 20 69 6E 66 6F 72 6D    technical inform
0163B0:  61 74 69 6F 6E 29 2E 0D 0A 0D 0A 09 65 2E 67 2E    ation)......e.g.
0163C0:  20 20 49 4E 4C 49 4E 45 20 32 30 35 2C 23 78 35      INLINE 205,#x5
0163D0:  41 2C 23 78 42 42 0D 0A 0D 0A 77 69 6C 6C 20 63    A,#xBB....will c
0163E0:  61 6C 6C 20 74 68 65 20 41 4D 53 44 4F 53 20 70    all the AMSDOS p
0163F0:  72 69 6E 74 20 63 68 61 72 61 63 74 65 72 20 72    rint character r
016400:  6F 75 74 69 6E 65 20 2D 2D 20 54 58 54 20 4F 55    outine -- TXT OU
016410:  54 50 55 54 2E 0D 0A 0D 0A 0D 0A E2 54 68 65 20    TPUT........The 
016420:  69 6E 66 69 78 65 64 20 62 79 74 65 20 6F 70 65    infixed byte ope
016430:  72 61 74 6F 72 20 25 E2 0D 0A 0D 0A 09 54 68 69    rator %......Thi
016440:  73 20 69 73 20 61 6E 20 65 78 74 65 6E 73 69 6F    s is an extensio
016450:  6E 90 20 74 6F 90 20 73 74 61 6E 64 61 72 64 90    n. to. standard.
016460:  20 42 43 50 4C 90 20 77 68 69 63 68 90 20 69 73     BCPL. which. is
016470:  20 73 75 70 70 6F 72 74 65 64 2E 20 54 68 65 20     supported. The 
016480:  0D 8A 69 6E 66 69 78 65 64 20 62 79 74 65 20 6F    ..infixed byte o
016490:  70 65 72 61 74 6F 72 20 77 69 6C 6C 20 65 78 74    perator will ext
0164A0:  72 61 63 74 20 61 20 70 61 72 74 69 63 75 6C 61    ract a particula
0164B0:  72 20 62 79 74 65 20 66 72 6F 6D 20 61 20 76 65    r byte from a ve
0164C0:  63 74 6F 72 2E 20 49 6E 20 0D 8A 75 73 65 20 74    ctor. In ..use t
0164D0:  68 69 73 20 6F 70 65 72 61 74 6F 72 20 69 73 20    his operator is 
0164E0:  76 65 72 79 90 20 73 69 6D 69 6C 61 72 90 20 74    very. similar. t
0164F0:  6F 90 20 74 68 65 90 20 21 20 6F 70 65 72 61 74    o. the. ! operat
016500:  6F 72 20 65 78 63 65 70 74 20 74 68 61 74 20 69    or except that i
016510:  74 20 0D 8A 63 61 6E 6E 6F 74 20 62 65 20 75 73    t ..cannot be us
016520:  65 64 20 61 73 20 61 20 75 6E 61 72 79 20 6F 70    ed as a unary op
016530:  65 72 61 74 6F 72 90 20 61 6E 64 20 74 68 61 74    erator. and that
016540:  20 74 68 65 20 73 65 63 6F 6E 64 20 6F 70 65 72     the second oper
016550:  61 6E 64 20 61 6C 77 61 79 73 20 0D 8A 67 69 76    and always ..giv
016560:  65 73 20 74 68 65 20 62 79 74 65 20 6F 66 66 73    es the byte offs
016570:  65 74 20 66 72 6F 6D 20 74 68 65 90 20 66 69 72    et from the. fir
016580:  73 74 90 20 6F 70 65 72 61 74 6F 72 2E 90 20 54    st. operator.. T
016590:  68 65 20 6D 61 69 6E 20 75 73 65 20 6F 66 20 74    he main use of t
0165A0:  68 69 73 20 0D 8A 6F 70 65 72 61 74 6F 72 20 69    his ..operator i
0165B0:  73 20 77 69 74 68 20 73 74 72 69 6E 67 73 20 74    s with strings t
0165C0:  6F 90 20 65 78 74 72 61 63 74 90 20 61 90 20 70    o. extract. a. p
0165D0:  61 72 74 69 63 75 6C 61 72 20 63 68 61 72 61 63    articular charac
0165E0:  74 65 72 20 66 72 6F 6D 20 74 68 65 20 0D 8A 73    ter from the ..s
0165F0:  74 72 69 6E 67 2E 0D 0A 0D 0A 09 65 2E 67 2E 20    tring......e.g. 
016600:  20 4C 45 54 20 76 20 3D 20 56 45 43 20 31 39 0D     LET v = VEC 19.
016610:  0A 09 09 46 4F 52 20 61 20 3D 20 31 20 54 4F 20    ...FOR a = 1 TO 
016620:  33 39 20 44 4F 20 76 25 61 20 3A 3D 20 27 20 27    39 DO v%a := ' '
016630:  0D 0A 09 09 76 25 30 20 3A 3D 20 33 39 20 20 20    ....v%0 := 39   
016640:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
016650:  20 20 2F 2F 20 73 65 74 20 74 68 65 20 73 74 72      // set the str
016660:  69 6E 67 20 6C 65 6E 67 74 68 20 62 79 74 65 0D    ing length byte.
016670:  0A 0D 0A 77 69 6C 6C 20 63 72 65 61 74 65 20 61    ...will create a
016680:  20 73 74 72 69 6E 67 20 63 6F 6E 74 61 69 6E 69     string containi
016690:  6E 67 20 33 39 20 73 70 61 63 65 73 2E 0D 0A 0D    ng 39 spaces....
0166A0:  0A 0D 0A E2 55 6E 64 65 66 69 6E 65 64 20 69 6E    ....Undefined in
0166B0:  69 74 69 61 6C 20 76 61 6C 75 65 73 E2 0D 0A 0D    itial values....
0166C0:  0A 09 54 68 65 20 69 6E 69 74 69 61 6C 20 76 61    ..The initial va
0166D0:  6C 75 65 20 6F 66 20 61 20 73 69 6D 70 6C 65 90    lue of a simple.
0166E0:  20 76 61 72 69 61 62 6C 65 90 20 64 65 63 6C 61     variable. decla
0166F0:  72 65 64 20 69 6E 20 61 20 4C 45 54 20 63 6F 6D    red in a LET com
016700:  6D 61 6E 64 20 0D 8A 6D 61 79 20 62 65 20 75 6E    mand ..may be un
016710:  64 65 66 69 6E 65 64 2E 20 54 68 69 73 20 69 73    defined. This is
016720:  20 64 6F 6E 65 20 62 79 90 20 75 73 69 6E 67 90     done by. using.
016730:  20 61 20 71 75 65 73 74 69 6F 6E 20 6D 61 72 6B     a question mark
016740:  20 28 3F 29 2E 20 54 68 69 73 20 69 73 20 0D 8A     (?). This is ..
016750:  75 73 65 64 20 74 6F 20 61 69 64 20 72 65 61 64    used to aid read
016760:  61 62 69 6C 69 74 79 20 6F 66 90 20 70 72 6F 67    ability of. prog
016770:  72 61 6D 73 90 20 62 79 90 20 69 6E 64 69 63 61    rams. by. indica
016780:  74 69 6E 67 90 20 74 68 61 74 20 74 68 65 72 65    ting. that there
016790:  20 69 73 20 6E 6F 20 0D 8A 72 65 6C 65 76 61 6E     is no ..relevan
0167A0:  74 20 69 6E 69 74 69 61 6C 20 76 61 6C 75 65 20    t initial value 
0167B0:  6F 66 20 61 20 76 61 72 69 61 62 6C 65 2E 0D 0A    of a variable...
0167C0:  0D 0A 0D 0A E2 46 49 4E 44 49 4E 50 55 54 20 61    .....FINDINPUT a
0167D0:  6E 64 20 46 49 4E 44 4F 55 54 50 55 54 E2 0D 0A    nd FINDOUTPUT...
0167E0:  0D 0A 09 54 68 65 20 70 72 6F 63 65 64 75 72 65    ...The procedure
0167F0:  73 90 20 66 6F 72 90 20 6F 70 65 6E 69 6E 67 90    s. for. opening.
016800:  20 66 69 6C 65 73 90 20 61 72 65 90 20 73 6C 69     files. are. sli
016810:  67 68 74 6C 79 90 20 64 69 66 66 65 72 65 6E 74    ghtly. different
016820:  20 66 72 6F 6D 20 0D 8A 73 74 61 6E 64 61 72 64     from ..standard
016830:  20 42 43 50 4C 20 69 6E 20 74 68 61 74 90 20 61     BCPL in that. a
016840:  90 20 62 75 66 66 65 72 90 20 6D 75 73 74 90 20    . buffer. must. 
016850:  62 65 90 20 73 70 65 63 69 66 69 65 64 90 20 61    be. specified. a
016860:  73 20 61 20 70 61 72 61 6D 65 74 65 72 2C 20 0D    s a parameter, .
016870:  8A 69 6E 73 74 65 61 64 20 6F 66 20 74 68 65 6D    .instead of them
016880:  20 72 65 74 75 72 6E 69 6E 67 20 61 20 73 74 72     returning a str
016890:  65 61 6D 20 69 64 65 6E 74 69 66 69 65 72 2E 0D    eam identifier..
0168A0:  0A 3E 70 61 0D 0A E2 47 6C 6F 62 61 6C 20 56 61    .>pa...Global Va
0168B0:  72 69 61 62 6C 65 73 E2 0D 0A 0D 0A 0D 0A 09 57    riables........W
0168C0:  68 65 6E 20 61 20 70 72 6F 63 65 64 75 72 65 20    hen a procedure 
0168D0:  69 73 20 64 65 66 69 6E 65 64 90 20 69 6E 90 20    is defined. in. 
0168E0:  73 74 61 6E 64 61 72 64 20 42 43 50 4C 20 74 68    standard BCPL th
0168F0:  65 20 63 6F 6D 70 69 6C 65 72 20 63 68 65 63 6B    e compiler check
016900:  73 20 0D 8A 74 6F 20 73 65 65 20 69 66 20 61 20    s ..to see if a 
016910:  47 4C 4F 42 41 4C 20 76 61 72 69 61 62 6C 65 20    GLOBAL variable 
016920:  77 69 74 68 20 74 68 65 90 20 73 61 6D 65 90 20    with the. same. 
016930:  6E 61 6D 65 20 69 73 20 69 6E 20 73 63 6F 70 65    name is in scope
016940:  2E 20 49 66 20 69 74 20 69 73 20 0D 8A 69 6E 20    . If it is ..in 
016950:  73 63 6F 70 65 2C 20 74 68 65 6E 20 74 68 61 74    scope, then that
016960:  20 76 61 72 69 61 62 6C 65 20 77 69 6C 6C 90 20     variable will. 
016970:  62 65 90 20 69 6E 69 74 69 61 6C 69 73 65 64 20    be. initialised 
016980:  77 69 74 68 20 74 68 65 20 61 64 64 72 65 73 73    with the address
016990:  20 6F 66 20 0D 8A 74 68 65 20 70 72 6F 63 65 64     of ..the proced
0169A0:  75 72 65 2E 20 49 66 20 74 68 65 72 65 20 69 73    ure. If there is
0169B0:  20 6E 6F 20 73 75 63 68 20 76 61 72 69 61 62 6C     no such variabl
0169C0:  65 20 69 6E 20 73 63 6F 70 65 20 74 68 65 6E 20    e in scope then 
0169D0:  61 20 6E 65 77 20 53 54 41 54 49 43 20 0D 8A 76    a new STATIC ..v
0169E0:  61 72 69 61 62 6C 65 20 77 69 6C 6C 90 20 62 65    ariable will. be
0169F0:  90 20 63 72 65 61 74 65 64 90 20 61 6E 64 90 20    . created. and. 
016A00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
016A10:  13 00 00 00 02 09 50 E5 13 00 C1 02 00 00 00 02    ......P.........
016A20:  13 00 C2 02 00 00 00 02 13 00 C3 02 00 00 00 02    ................
016A30:  13 00 C4 02 00 00 00 02 13 00 C5 02 00 00 00 02    ................
016A40:  13 00 C6 02 00 00 00 02 13 00 C7 02 00 00 00 02    ................
016A50:  13 00 C8 02 00 00 00 02 13 00 C9 02 00 00 00 02    ................
016A60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016A70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016A80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016A90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016B00:  74 68 61 74 90 20 76 61 72 69 61 62 6C 65 90 20    that. variable. 
016B10:  69 6E 69 74 69 61 6C 69 73 65 64 90 20 77 69 74    initialised. wit
016B20:  68 20 74 68 65 20 0D 8A 61 64 64 72 65 73 73 20    h the ..address 
016B30:  6F 66 20 74 68 65 20 70 72 6F 63 65 64 75 72 65    of the procedure
016B40:  2E 20 57 68 65 6E 20 61 20 70 72 6F 63 65 64 75    . When a procedu
016B50:  72 65 20 63 61 6C 6C 20 69 73 20 6D 61 64 65 20    re call is made 
016B60:  74 68 65 20 63 6F 64 65 20 6C 6F 6F 6B 73 20 0D    the code looks .
016B70:  8A 75 70 20 74 68 65 20 61 64 64 72 65 73 73 20    .up the address 
016B80:  69 6E 20 74 68 65 90 20 72 65 6C 65 76 61 6E 74    in the. relevant
016B90:  90 20 76 61 72 69 61 62 6C 65 90 20 61 6E 64 20    . variable. and 
016BA0:  63 61 6C 6C 73 20 74 68 61 74 20 61 64 64 72 65    calls that addre
016BB0:  73 73 2E 20 54 68 65 20 0D 8A 72 65 61 73 6F 6E    ss. The ..reason
016BC0:  20 66 6F 72 20 74 68 69 73 90 20 69 6E 64 69 72     for this. indir
016BD0:  65 63 74 90 20 63 61 6C 6C 69 6E 67 90 20 69 73    ect. calling. is
016BE0:  90 20 74 6F 90 20 65 6E 61 62 6C 65 90 20 65 61    . to. enable. ea
016BF0:  73 79 20 63 6F 6D 6D 75 6E 69 63 61 74 69 6F 6E    sy communication
016C00:  20 0D 8A 62 65 74 77 65 65 6E 20 73 65 70 61 72     ..between separ
016C10:  61 74 65 6C 79 20 63 6F 6D 70 69 6C 65 64 20 75    ately compiled u
016C20:  6E 69 74 73 2E 0D 0A 09 41 73 20 74 68 65 20 41    nits....As the A
016C30:  52 4E 4F 52 20 63 6F 6D 70 69 6C 65 72 20 64 6F    RNOR compiler do
016C40:  65 73 20 6E 6F 74 20 61 6C 6C 6F 77 20 73 65 70    es not allow sep
016C50:  61 72 61 74 65 20 63 6F 6D 70 69 6C 61 74 69 6F    arate compilatio
016C60:  6E 20 74 68 65 72 65 20 69 73 20 0D 8A 6E 6F 20    n there is ..no 
016C70:  6E 65 65 64 20 66 6F 72 20 74 68 69 73 20 69 6E    need for this in
016C80:  64 69 72 65 63 74 20 61 70 70 72 6F 61 63 68 20    direct approach 
016C90:  61 6E 64 90 20 73 6F 90 20 61 20 63 61 6C 6C 20    and. so. a call 
016CA0:  69 73 20 6D 61 64 65 20 64 69 72 65 63 74 6C 79    is made directly
016CB0:  20 74 6F 20 0D 8A 74 68 65 20 61 64 64 72 65 73     to ..the addres
016CC0:  73 90 20 6F 66 90 20 74 68 65 90 20 70 72 6F 63    s. of. the. proc
016CD0:  65 64 75 72 65 2E 90 20 54 68 69 73 90 20 61 6C    edure.. This. al
016CE0:  73 6F 90 20 6D 65 61 6E 73 90 20 74 68 61 74 90    so. means. that.
016CF0:  20 74 68 65 90 20 6E 75 6D 62 65 72 20 0D 8A 61     the. number ..a
016D00:  73 73 6F 63 69 61 74 65 64 20 77 69 74 68 20 61    ssociated with a
016D10:  20 47 4C 4F 42 41 4C 20 76 61 72 69 61 62 6C 65     GLOBAL variable
016D20:  20 69 6E 90 20 69 74 73 20 64 65 66 69 6E 69 74     in. its definit
016D30:  69 6F 6E 20 69 73 20 6D 65 61 6E 69 6E 67 6C 65    ion is meaningle
016D40:  73 73 20 61 73 20 0D 8A 74 68 65 72 65 20 69 73    ss as ..there is
016D50:  20 6E 6F 90 20 61 63 74 75 61 6C 90 20 47 4C 4F     no. actual. GLO
016D60:  42 41 4C 90 20 76 65 63 74 6F 72 2E 90 20 54 68    BAL. vector.. Th
016D70:  65 90 20 69 6E 64 65 78 90 20 6E 75 6D 62 65 72    e. index. number
016D80:  90 20 69 73 2C 20 68 6F 77 65 76 65 72 2C 20 0D    . is, however, .
016D90:  8A 72 65 74 61 69 6E 65 64 20 66 6F 72 20 63 6F    .retained for co
016DA0:  6D 70 61 74 61 62 69 6C 69 74 79 20 77 69 74 68    mpatability with
016DB0:  90 20 6F 74 68 65 72 90 20 63 6F 6D 70 69 6C 65    . other. compile
016DC0:  72 73 2E 90 20 54 68 65 20 6F 75 74 63 6F 6D 65    rs.. The outcome
016DD0:  20 6F 66 20 61 6C 6C 20 0D 8A 74 68 69 73 20 69     of all ..this i
016DE0:  73 20 74 68 61 74 90 20 61 6C 74 68 6F 75 67 68    s that. although
016DF0:  90 20 69 74 90 20 69 73 90 20 70 6F 73 73 69 62    . it. is. possib
016E00:  6C 65 90 20 74 6F 90 20 72 65 61 64 90 20 74 68    le. to. read. th
016E10:  65 90 20 61 64 64 72 65 73 73 90 20 6F 66 20 61    e. address. of a
016E20:  20 0D 8A 70 72 6F 63 65 64 75 72 65 2C 20 61 6E     ..procedure, an
016E30:  64 20 73 6F 20 70 61 73 73 20 70 72 6F 63 65 64    d so pass proced
016E40:  75 72 65 73 20 61 73 20 70 61 72 61 6D 65 74 65    ures as paramete
016E50:  72 73 2C 20 69 74 20 69 73 20 6E 6F 74 20 70 6F    rs, it is not po
016E60:  73 73 69 62 6C 65 20 74 6F 20 0D 8A 61 73 73 69    ssible to ..assi
016E70:  67 6E 20 74 6F 20 61 20 70 72 6F 63 65 64 75 72    gn to a procedur
016E80:  65 2E 20 59 6F 75 20 63 61 6E 2C 20 68 6F 77 65    e. You can, howe
016E90:  76 65 72 2C 20 73 65 74 20 75 70 20 61 20 67 6C    ver, set up a gl
016EA0:  6F 62 61 6C 20 76 61 72 69 61 62 6C 65 20 77 69    obal variable wi
016EB0:  74 68 20 0D 8A 61 20 64 69 66 66 65 72 65 6E 74    th ..a different
016EC0:  20 6E 61 6D 65 20 66 72 6F 6D 90 20 61 90 20 70     name from. a. p
016ED0:  72 6F 63 65 64 75 72 65 90 20 61 6E 64 90 20 74    rocedure. and. t
016EE0:  68 65 6E 90 20 61 73 73 69 67 6E 20 74 68 65 20    hen. assign the 
016EF0:  70 72 6F 63 65 64 75 72 65 27 73 20 0D 8A 61 64    procedure's ..ad
016F00:  64 72 65 73 73 20 74 6F 20 74 68 61 74 20 67 6C    dress to that gl
016F10:  6F 62 61 6C 20 76 61 72 69 61 62 6C 65 20 69 6E    obal variable in
016F20:  90 20 79 6F 75 72 90 20 70 72 6F 67 72 61 6D 2E    . your. program.
016F30:  20 54 68 69 73 20 6D 65 61 6E 73 20 74 68 61 74     This means that
016F40:  20 74 68 65 20 0D 8A 70 72 6F 63 65 64 75 72 65     the ..procedure
016F50:  20 63 61 6E 20 74 68 65 6E 20 62 65 20 61 73 73     can then be ass
016F60:  69 67 6E 65 64 20 74 6F 2E 0D 0A 20 20 20 20 20    igned to...     
016F70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
016F80:  20 20 0D 0A 0D 0A E2 4C 45 56 45 4C 20 61 6E 64      .....LEVEL and
016F90:  20 4C 4F 4E 47 4A 55 4D 50 E2 0D 0A 0D 0A 09 4C     LONGJUMP......L
016FA0:  45 56 45 4C 90 20 77 6F 72 6B 73 90 20 69 6E 90    EVEL. works. in.
016FB0:  20 61 90 90 20 73 6C 69 67 68 74 6C 79 90 90 20     a.. slightly.. 
016FC0:  64 69 66 66 65 72 65 6E 74 90 90 20 77 61 79 90    different.. way.
016FD0:  20 66 72 6F 6D 90 20 6D 6F 73 74 90 20 42 43 50     from. most. BCP
016FE0:  4C 20 0D 8A 69 6D 70 6C 65 6D 65 6E 74 61 74 69    L ..implementati
016FF0:  6F 6E 73 2E 90 20 49 74 90 20 75 73 75 61 6C 6C    ons.. It. usuall
017000:  79 90 90 20 72 65 74 75 72 6E 73 90 90 20 61 90    y.. returns.. a.
017010:  90 20 73 69 6E 67 6C 65 90 90 20 31 90 90 20 77    . single.. 1.. w
017020:  6F 72 64 90 20 76 61 6C 75 65 20 0D 8A 72 65 70    ord. value ..rep
017030:  72 65 73 65 6E 74 69 6E 67 20 74 68 65 20 73 74    resenting the st
017040:  61 74 65 20 6F 66 20 74 68 65 20 42 43 50 4C 90    ate of the BCPL.
017050:  20 73 74 61 63 6B 90 20 61 74 90 20 61 20 70 6F     stack. at. a po
017060:  69 6E 74 20 69 6E 20 74 68 65 20 70 72 6F 67 72    int in the progr
017070:  61 6D 2E 20 0D 8A 44 75 65 20 74 6F 20 74 68 65    am. ..Due to the
017080:  20 6C 69 6D 69 74 61 74 69 6F 6E 73 90 20 6F 66     limitations. of
017090:  90 20 74 68 65 90 20 5A 38 30 90 20 69 6E 90 20    . the. Z80. in. 
0170A0:  73 74 61 63 6B 90 20 61 64 64 72 65 73 73 69 6E    stack. addressin
0170B0:  67 90 20 69 74 20 69 73 20 6E 6F 74 20 0D 8A 70    g. it is not ..p
0170C0:  6F 73 73 69 62 6C 65 20 74 6F 20 70 61 63 6B 20    ossible to pack 
0170D0:  74 68 65 90 20 72 65 71 75 69 72 65 64 90 20 69    the. required. i
0170E0:  6E 66 6F 72 6D 61 74 69 6F 6E 90 20 69 6E 74 6F    nformation. into
0170F0:  90 20 6F 6E 65 90 20 77 6F 72 64 20 77 69 74 68    . one. word with
017100:  20 74 68 69 73 20 0D 8A 69 6D 70 6C 65 6D 65 6E     this ..implemen
017110:  74 61 74 69 6F 6E 20 6F 66 20 42 43 50 4C 2E 20    tation of BCPL. 
017120:  49 6E 73 74 65 61 64 20 74 68 65 20 4C 45 56 45    Instead the LEVE
017130:  4C 20 70 72 6F 63 65 64 75 72 65 20 72 65 74 75    L procedure retu
017140:  72 6E 73 20 69 74 73 20 72 65 73 75 6C 74 20 0D    rns its result .
017150:  8A 69 6E 20 61 20 34 20 77 6F 72 64 20 76 65 63    .in a 4 word vec
017160:  74 6F 72 20 70 61 73 73 65 64 20 74 6F 90 20 74    tor passed to. t
017170:  68 65 20 70 72 6F 63 65 64 75 72 65 2E 20 53 65    he procedure. Se
017180:  65 20 61 70 70 65 6E 64 69 78 20 31 20 28 74 65    e appendix 1 (te
017190:  63 68 69 6E 63 61 6C 20 0D 8A 69 6E 66 6F 72 6D    chincal ..inform
0171A0:  61 74 69 6F 6E 29 20 66 6F 72 20 65 78 61 63 74    ation) for exact
0171B0:  20 64 65 74 61 69 6C 73 2E 0D 0A 0D 0A 09 65 2E     details......e.
0171C0:  67 2E 0D 0A 0D 0A 09 09 4C 45 54 20 65 72 72 6F    g.......LET erro
0171D0:  72 6C 65 76 65 6C 20 3D 20 56 45 43 20 33 0D 0A    rlevel = VEC 3..
0171E0:  09 09 6C 65 76 65 6C 28 65 72 72 6F 72 6C 65 76    ..level(errorlev
0171F0:  65 6C 29 0D 0A 0D 0A 0D 0A E2 45 78 74 65 6E 73    el).......Extens
017200:  69 6F 6E 73 20 6E 6F 74 20 73 75 70 70 6F 72 74    ions not support
017210:  65 64 E2 0D 0A 0D 0A 09 54 68 65 20 66 6F 6C 6C    ed......The foll
017220:  6F 77 69 6E 67 20 66 65 61 74 75 72 65 73 2C 20    owing features, 
017230:  77 68 69 63 68 20 61 72 65 20 6D 65 6E 74 69 6F    which are mentio
017240:  6E 65 64 90 20 69 6E 20 74 68 65 20 42 43 50 4C    ned. in the BCPL
017250:  20 62 6F 6F 6B 2C 20 61 72 65 20 0D 8A 6E 6F 74     book, are ..not
017260:  20 73 75 70 70 6F 72 74 65 64 3A 20 73 65 70 61     supported: sepa
017270:  72 61 74 65 90 20 63 6F 6D 70 69 6C 61 74 69 6F    rate. compilatio
017280:  6E 2C 90 20 66 6C 6F 61 74 69 6E 67 90 20 70 6F    n,. floating. po
017290:  69 6E 74 90 20 65 78 74 65 6E 73 69 6F 6E 2C 20    int. extension, 
0172A0:  74 68 65 20 0D 8A 66 69 65 6C 64 20 73 65 6C 65    the ..field sele
0172B0:  63 74 6F 72 20 65 78 74 65 6E 73 69 6F 6E 2E 0D    ctor extension..
0172C0:  0A 0D 0A 0D 0A 3E 70 61 0D 0A 3E 63 65 20 E2 41    .....>pa..>ce .A
0172D0:  31 2E 20 54 45 43 48 4E 49 43 41 4C 20 49 4E 46    1. TECHNICAL INF
0172E0:  4F 52 4D 41 54 49 4F 4E E2 0D 0A 0D 0A 0D 0A 09    ORMATION........
0172F0:  54 68 65 20 63 6F 6D 70 69 6C 65 72 20 61 6C 6C    The compiler all
017300:  6F 63 61 74 65 73 20 64 79 6E 61 6D 69 63 20 73    ocates dynamic s
017310:  74 6F 72 61 67 65 20 66 72 6F 6D 20 74 68 65 20    torage from the 
017320:  68 61 72 64 77 61 72 65 20 73 74 61 63 6B 20 66    hardware stack f
017330:  6F 72 20 0D 8A 6F 72 64 69 6E 61 72 79 20 6C 6F    or ..ordinary lo
017340:  63 61 6C 20 76 61 72 69 61 62 6C 65 73 2E 20 54    cal variables. T
017350:  68 65 73 65 90 20 61 72 65 90 20 61 63 63 65 73    hese. are. acces
017360:  73 65 64 90 20 62 79 90 20 69 6E 64 65 78 69 6E    sed. by. indexin
017370:  67 20 74 68 65 20 73 74 61 63 6B 20 0D 8A 75 73    g the stack ..us
017380:  69 6E 67 20 74 68 65 20 49 58 20 72 65 67 69 73    ing the IX regis
017390:  74 65 72 20 77 68 69 63 68 20 70 6F 69 6E 74 73    ter which points
0173A0:  20 74 6F 20 74 68 65 20 68 69 67 68 20 62 79 74     to the high byt
0173B0:  65 20 6F 66 20 74 68 65 20 6C 61 73 74 20 66 6F    e of the last fo
0173C0:  72 6D 61 6C 20 0D 8A 70 61 72 61 6D 65 74 65 72    rmal ..parameter
0173D0:  20 6D 69 6E 75 73 20 31 32 37 2E 90 20 54 68 65     minus 127.. The
0173E0:  90 20 66 6F 72 6D 61 6C 90 20 70 61 72 61 6D 65    . formal. parame
0173F0:  74 65 72 73 90 20 61 72 65 90 20 73 74 6F 72 65    ters. are. store
017400:  64 90 20 69 6E 20 72 65 76 65 72 73 65 20 0D 8A    d. in reverse ..
017410:  6F 72 64 65 72 2C 20 63 6F 6D 69 6E 67 20 64 6F    order, coming do
017420:  77 6E 90 20 69 6E 90 20 6D 65 6D 6F 72 79 2E 90    wn. in. memory..
017430:  20 49 6D 6D 65 64 69 61 74 65 6C 79 90 20 62 65     Immediately. be
017440:  6C 6F 77 90 20 74 68 65 90 20 66 69 72 73 74 20    low. the. first 
017450:  66 6F 72 6D 61 6C 20 0D 8A 70 61 72 61 6D 65 74    formal ..paramet
017460:  65 72 20 69 73 20 74 68 65 20 72 65 74 75 72 6E    er is the return
017470:  20 61 64 64 72 65 73 73 90 20 66 72 6F 6D 90 20     address. from. 
017480:  74 68 65 90 20 70 72 6F 63 65 64 75 72 65 20 77    the. procedure w
017490:  68 69 63 68 20 63 61 6C 6C 65 64 20 74 68 65 20    hich called the 
0174A0:  0D 8A 63 75 72 72 65 6E 74 6C 79 20 61 63 74 69    ..currently acti
0174B0:  76 65 20 70 72 6F 63 65 64 75 72 65 2E 20 42 65    ve procedure. Be
0174C0:  6C 6F 77 20 74 68 69 73 20 69 73 20 74 68 65 20    low this is the 
0174D0:  6F 6C 64 20 49 58 20 72 65 67 69 73 74 65 72 20    old IX register 
0174E0:  66 72 6F 6D 20 74 68 65 20 0D 8A 63 61 6C 6C 69    from the ..calli
0174F0:  6E 67 20 70 72 6F 63 65 64 75 72 65 20 61 6E 64    ng procedure and
017500:  20 62 65 6C 6F 77 20 74 68 69 73 20 61 20 76 61     below this a va
017510:  6C 75 65 20 77 68 69 63 68 20 72 65 70 72 65 73    lue which repres
017520:  65 6E 74 73 20 74 68 65 20 73 74 61 74 65 20 6F    ents the state o
017530:  66 20 0D 8A 74 68 65 20 76 65 63 74 6F 72 20 73    f ..the vector s
017540:  70 61 63 65 2E 20 4C 6F 63 61 6C 20 76 61 72 69    pace. Local vari
017550:  61 62 6C 65 73 20 6E 6F 77 20 63 6F 6D 65 20 64    ables now come d
017560:  6F 77 6E 20 66 72 6F 6D 20 74 68 69 73 20 73 70    own from this sp
017570:  61 63 65 20 69 6E 20 74 68 65 20 0D 8A 6F 72 64    ace in the ..ord
017580:  65 72 20 74 68 61 74 20 74 68 65 79 20 61 72 65    er that they are
017590:  20 64 65 63 6C 61 72 65 64 20 61 6E 64 20 53 50     declared and SP
0175A0:  20 77 69 6C 6C 90 20 70 6F 69 6E 74 20 74 6F 20     will. point to 
0175B0:  74 68 65 20 6C 6F 77 20 62 79 74 65 20 6F 66 20    the low byte of 
0175C0:  74 68 65 20 0D 8A 6C 61 73 74 20 6C 6F 63 61 6C    the ..last local
0175D0:  20 76 61 72 69 61 62 6C 65 20 63 75 72 72 65 6E     variable curren
0175E0:  74 6C 79 20 69 6E 20 73 63 6F 70 65 2E 0D 0A 09    tly in scope....
0175F0:  57 68 65 6E 20 61 20 6E 65 77 90 20 6C 6F 63 61    When a new. loca
017600:  6C 90 20 76 61 72 69 61 62 6C 65 90 20 69 73 90    l. variable. is.
017610:  20 64 65 63 6C 61 72 65 64 2C 90 20 69 74 73 90     declared,. its.
017620:  20 69 6E 69 74 69 61 6C 90 20 76 61 6C 75 65 20     initial. value 
017630:  69 73 20 0D 8A 63 61 6C 63 75 6C 61 74 65 64 20    is ..calculated 
017640:  61 6E 64 20 74 68 65 6E 20 70 75 73 68 65 64 20    and then pushed 
017650:  6F 6E 74 6F 20 74 68 65 20 73 74 61 63 6B 2E 20    onto the stack. 
017660:  57 68 65 6E 20 61 20 76 65 63 74 6F 72 20 69 73    When a vector is
017670:  20 61 6C 6C 6F 63 61 74 65 64 2C 20 0D 8A 73 70     allocated, ..sp
017680:  61 63 65 20 69 73 20 74 61 6B 65 6E 20 66 72 6F    ace is taken fro
017690:  6D 90 20 74 68 65 90 20 76 65 63 74 6F 72 90 20    m. the. vector. 
0176A0:  73 70 61 63 65 2C 90 20 77 68 69 63 68 90 20 69    space,. which. i
0176B0:  73 20 64 69 72 65 63 74 6C 79 20 61 66 74 65 72    s directly after
0176C0:  20 74 68 65 20 0D 8A 70 72 6F 67 72 61 6D 2C 20     the ..program, 
0176D0:  61 6E 64 20 61 20 70 6F 69 6E 74 65 72 20 74 6F    and a pointer to
0176E0:  20 74 68 69 73 20 73 70 61 63 65 20 69 73 20 70     this space is p
0176F0:  75 73 68 65 64 20 6F 6E 74 6F 20 74 68 65 20 73    ushed onto the s
017700:  74 61 63 6B 2E 0D 0A 0D 0A 65 2E 67 2E 20 66 6F    tack.....e.g. fo
017710:  72 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20    r the following 
017720:  70 72 6F 63 65 64 75 72 65 0D 0A 0D 0A 20 20 20    procedure....   
017730:  20 20 20 20 20 20 20 20 20 20 20 20 20 4C 45 54                 LET
017740:  20 78 28 61 2C 62 29 20 42 45 0D 0A 20 20 20 20     x(a,b) BE..    
017750:  20 20 20 20 20 20 20 20 20 20 20 20 24 28 0D 0A                $(..
017760:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
017770:  20 20 4C 45 54 20 7A 20 3D 20 30 0D 0A 20 20 20      LET z = 0..   
017780:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2E                   .
017790:  2E 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ....            
0177A0:  20 20 20 20 24 29 0D 0A 0D 0A 61 74 20 74 68 65        $)....at the
0177B0:  20 70 6F 69 6E 74 20 6D 61 72 6B 65 64 20 62 79     point marked by
0177C0:  20 74 68 65 20 64 6F 74 73 20 74 68 65 20 73 74     the dots the st
0177D0:  61 63 6B 20 6C 6F 6F 6B 73 20 6C 69 6B 65 20 74    ack looks like t
0177E0:  68 69 73 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20    his....         
0177F0:  20 20 20 20 20 20 20 62 20 20 20 20 20 20 20 20           b        
017800:  20 49 58 20 2B 20 31 32 37 0D 0A 20 20 20 20 20     IX + 127..     
017810:  20 20 20 20 20 20 20 20 20 20 20 61 20 20 20 20               a    
017820:  20 20 20 20 20 49 58 20 2B 20 31 32 35 0D 0A 20         IX + 125.. 
017830:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                   r
017840:  65 74 20 61 64 64 72 20 20 49 58 20 2B 20 31 32    et addr  IX + 12
017850:  33 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    3..             
017860:  20 20 20 6F 6C 64 20 49 58 20 20 20 20 49 58 20       old IX    IX 
017870:  2B 20 31 32 31 0D 0A 20 20 20 20 20 20 20 20 20    + 121..         
017880:  20 20 20 20 20 20 20 76 65 63 20 70 74 72 20 20           vec ptr  
017890:  20 49 58 20 2B 20 31 31 39 0D 0A 20 20 20 20 20     IX + 119..     
0178A0:  20 20 20 20 20 20 20 20 20 20 20 7A 20 20 20 20               z    
0178B0:  20 20 20 20 20 49 58 20 2B 20 31 31 37 2C 20 53         IX + 117, S
0178C0:  50 20 70 6F 69 6E 74 73 20 68 65 72 65 0D 0A 0D    P points here...
0178D0:  0A 09 57 68 65 6E 20 6C 6F 63 61 6C 20 76 61 72    ..When local var
0178E0:  69 61 62 6C 65 73 20 61 72 65 90 20 75 6E 64 65    iables are. unde
0178F0:  63 6C 61 72 65 64 90 20 28 69 2E 65 2E 90 20 61    clared. (i.e.. a
017900:  74 90 20 74 68 65 90 20 65 6E 64 20 6F 66 20 74    t. the. end of t
017910:  68 65 69 72 20 0D 8A 62 6C 6F 63 6B 29 2C 20 74    heir ..block), t
017920:  68 65 20 73 74 61 63 6B 20 70 6F 69 6E 74 65 72    he stack pointer
017930:  20 69 73 20 6D 6F 76 65 64 20 75 70 20 74 6F 20     is moved up to 
017940:  72 65 6C 65 61 73 65 20 74 68 65 20 73 70 61 63    release the spac
017950:  65 20 75 73 65 64 2E 0D 0A 3E 70 61 0D 0A 09 53    e used...>pa...S
017960:  74 61 74 69 63 20 76 61 72 69 61 62 6C 65 73 20    tatic variables 
017970:  61 72 65 20 61 6C 6C 6F 63 61 74 65 64 20 74 68    are allocated th
017980:  65 69 72 90 20 73 70 61 63 65 90 20 61 74 20 63    eir. space. at c
017990:  6F 6D 70 69 6C 65 20 74 69 6D 65 2E 20 54 68 65    ompile time. The
0179A0:  79 20 0D 8A 61 72 65 20 65 6D 62 65 64 64 65 64    y ..are embedded
0179B0:  20 69 6E 20 74 68 65 20 63 6F 64 65 20 61 6E 64     in the code and
0179C0:  90 20 61 72 65 20 72 65 2D 69 6E 69 74 69 61 6C    . are re-initial
0179D0:  69 73 65 64 20 65 61 63 68 20 74 69 6D 65 20 74    ised each time t
0179E0:  68 65 20 70 72 6F 67 72 61 6D 20 0D 8A 69 73 20    he program ..is 
0179F0:  72 75 6E 2E 20 54 68 65 20 73 74 61 63 6B 20 69    run. The stack i
017A00:  73 20 70 6C 61 63 65 64 90 20 61 74 90 20 74 68    s placed. at. th
017A10:  65 90 20 74 6F 70 20 6F 66 20 74 68 65 20 61 76    e. top of the av
017A20:  61 69 6C 61 62 6C 65 20 6D 65 6D 6F 72 79 2E 20    ailable memory. 
017A30:  46 6F 72 20 0D 8A 43 50 2F 4D 20 76 65 72 73 69    For ..CP/M versi
017A40:  6F 6E 73 20 74 68 69 73 20 69 73 20 63 61 6C 63    ons this is calc
017A50:  75 6C 61 74 65 64 20 66 72 6F 6D 20 74 68 65 20    ulated from the 
017A60:  73 74 61 72 74 20 6F 66 20 74 68 65 20 42 44 4F    start of the BDO
017A70:  53 2E 20 0D 0A 09 49 6E 20 41 4D 53 44 4F 53 20    S. ...In AMSDOS 
017A80:  76 65 72 73 69 6F 6E 73 2C 20 73 74 61 74 69 63    versions, static
017A90:  20 76 61 72 69 61 62 6C 65 20 73 70 61 63 65 20     variable space 
017AA0:  69 73 20 64 65 74 65 72 6D 69 6E 65 64 20 61 74    is determined at
017AB0:  20 63 6F 6D 70 69 6C 65 20 0D 8A 74 69 6D 65 2C     compile ..time,
017AC0:  20 70 6F 73 73 69 62 6C 79 20 75 73 69 6E 67 20     possibly using 
017AD0:  74 68 65 20 48 90 20 6F 70 74 69 6F 6E 2E 90 20    the H. option.. 
017AE0:  41 73 20 61 6C 72 65 61 64 79 20 6D 65 6E 74 69    As already menti
017AF0:  6F 6E 65 64 20 76 65 63 74 6F 72 20 73 70 61 63    oned vector spac
017B00:  65 20 0D 8A 69 73 20 74 61 6B 65 6E 20 66 72 6F    e ..is taken fro
017B10:  6D 20 74 68 65 20 61 72 65 61 20 6F 66 20 6D 65    m the area of me
017B20:  6D 6F 72 79 20 64 69 72 65 63 74 6C 79 20 61 66    mory directly af
017B30:  74 65 72 20 74 68 65 20 70 72 6F 67 72 61 6D 2E    ter the program.
017B40:  20 54 68 65 20 73 74 61 72 74 20 0D 8A 6F 66 20     The start ..of 
017B50:  61 20 70 72 6F 67 72 61 6D 20 69 73 20 23 78 31    a program is #x1
017B60:  30 30 90 20 66 6F 72 90 20 43 50 2F 4D 90 20 76    00. for. CP/M. v
017B70:  65 72 73 69 6F 6E 73 90 20 61 6E 64 90 20 64 65    ersions. and. de
017B80:  66 61 75 6C 74 73 20 74 6F 20 74 68 65 20 66 69    faults to the fi
017B90:  72 73 74 20 0D 8A 75 73 61 62 6C 65 20 62 79 74    rst ..usable byt
017BA0:  65 20 6F 66 20 6D 65 6D 6F 72 79 20 66 6F 72 20    e of memory for 
017BB0:  41 4D 53 44 4F 53 2E 20 54 68 69 73 20 6D 61 79    AMSDOS. This may
017BC0:  90 20 62 65 20 63 68 61 6E 67 65 64 20 62 79 20    . be changed by 
017BD0:  75 73 65 20 6F 66 20 74 68 65 20 4F 20 0D 8A 6F    use of the O ..o
017BE0:  70 74 69 6F 6E 2E 0D 0A 0D 0A 0D 0A 09 54 68 69    ption........Thi
017BF0:  73 20 6C 65 61 76 65 73 20 61 20 6D 65 6D 6F 72    s leaves a memor
017C00:  79 20 6D 61 70 20 6C 6F 6F 6B 69 6E 67 20 6C 69    y map looking li
017C10:  6B 65 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ke:......       
017C20:  20 20 20 20 20 20 20 20 20 7C 20 48 61 72 64 77             | Hardw
017C30:  61 72 65 20 73 74 61 63 6B 20 20 20 7C 0D 0A 20    are stack   |.. 
017C40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C                   |
017C50:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
017C60:  2D 2D 7C 20 3C 20 53 50 0D 0A 20 20 20 20 20 20    --| < SP..      
017C70:  20 20 20 20 20 20 20 20 20 20 7C 20 20 20 20 20              |     
017C80:  20 20 20 20 20 20 20 20 20 20 20 20 20 7C 0D 0A                 |..
017C90:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
017CA0:  7C 20 65 6D 70 74 79 20 20 20 20 20 20 20 20 20    | empty         
017CB0:  20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20       |..          
017CC0:  20 20 20 20 20 20 7C 20 20 20 20 20 20 20 20 20          |         
017CD0:  20 20 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 20             |..    
017CE0:  20 20 20 20 20 20 20 20 20 20 20 20 7C 2D 2D 2D                |---
017CF0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C    ---------------|
017D00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
017D10:  14 00 00 00 02 09 50 E5 14 00 C1 02 00 00 00 02    ......P.........
017D20:  14 00 C2 02 00 00 00 02 14 00 C3 02 00 00 00 02    ................
017D30:  14 00 C4 02 00 00 00 02 14 00 C5 02 00 00 00 02    ................
017D40:  14 00 C6 02 00 00 00 02 14 00 C7 02 00 00 00 02    ................
017D50:  14 00 C8 02 00 00 00 02 14 00 C9 02 00 00 00 02    ................
017D60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017D70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017D80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017D90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017E00:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
017E10:  20 20 7C 20 56 65 63 74 6F 72 73 20 20 20 20 20      | Vectors     
017E20:  20 20 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20         |..        
017E30:  20 20 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D 2D            |-------
017E40:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 0D 0A 20 20    -----------|..  
017E50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20                  | 
017E60:  50 72 6F 67 72 61 6D 20 61 6E 64 20 20 20 20 20    Program and     
017E70:  20 7C 0D 0A 09 09 09 7C 20 73 74 61 74 69 63 20     |.....| static 
017E80:  76 61 72 69 61 62 6C 65 73 20 7C 0D 0A 20 20 20    variables |..   
017E90:  20 20 20 20 20 20 20 20 20 20 20 20 20 7C 2D 2D                 |--
017EA0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
017EB0:  7C 20 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    | ..            
017EC0:  20 20 20 20 7C 20 72 75 6E 74 69 6D 65 20 72 6F        | runtime ro
017ED0:  75 74 69 6E 65 73 20 7C 0D 0A 20 20 20 20 20 20    utines |..      
017EE0:  20 20 20 20 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D              |-----
017EF0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 20 3C    -------------| <
017F00:  20 70 72 6F 67 72 61 6D 20 73 74 61 72 74 0D 0A     program start..
017F10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
017F20:  7C 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    |               
017F30:  20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20       |..          
017F40:  20 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D 2D 2D 2D          |---------
017F50:  2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 20 3C 20 30 0D 0A    ---------| < 0..
017F60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
017F70:  0D 0A 09 57 68 65 6E 20 77 72 69 74 69 6E 67 20    ...When writing 
017F80:  61 6E 79 20 69 6E 6C 69 6E 65 90 20 63 6F 64 65    any inline. code
017F90:  90 20 74 68 65 90 20 75 73 65 72 90 20 6D 75 73    . the. user. mus
017FA0:  74 90 20 65 6E 73 75 72 65 20 74 68 61 74 20 74    t. ensure that t
017FB0:  68 65 20 49 58 20 0D 8A 72 65 67 69 73 74 65 72    he IX ..register
017FC0:  20 61 6E 64 20 74 68 65 20 53 50 20 61 72 65 90     and the SP are.
017FD0:  20 72 65 73 74 6F 72 65 64 90 20 74 6F 90 20 74     restored. to. t
017FE0:  68 65 69 72 20 66 6F 72 6D 65 72 20 70 6F 73 69    heir former posi
017FF0:  74 69 6F 6E 73 20 77 68 65 6E 20 74 68 65 20 0D    tions when the .
018000:  8A 63 6F 64 65 20 66 69 6E 69 73 68 65 73 2E 20    .code finishes. 
018010:  46 61 69 6C 75 72 65 20 74 6F 90 20 64 6F 90 20    Failure to. do. 
018020:  74 68 69 73 90 20 77 69 6C 6C 90 20 61 6C 6D 6F    this. will. almo
018030:  73 74 90 20 63 65 72 74 61 69 6E 6C 79 20 63 61    st. certainly ca
018040:  75 73 65 20 74 68 65 20 0D 8A 70 72 6F 67 72 61    use the ..progra
018050:  6D 20 74 6F 90 20 63 72 61 73 68 2E 90 20 54 68    m to. crash.. Th
018060:  65 90 20 41 6D 73 74 72 61 64 90 20 61 6C 73 6F    e. Amstrad. also
018070:  90 20 72 65 71 75 69 72 65 73 90 20 74 68 61 74    . requires. that
018080:  90 20 74 68 65 90 20 61 6C 74 65 72 6E 61 74 65    . the. alternate
018090:  20 0D 8A 72 65 67 69 73 74 65 72 20 73 65 74 20     ..register set 
0180A0:  69 73 20 6E 6F 74 20 75 73 65 64 2E 0D 0A 0D 0A    is not used.....
0180B0:  09 54 68 65 20 4C 45 56 45 4C 20 6C 69 62 72 61    .The LEVEL libra
0180C0:  72 79 20 70 72 6F 63 65 64 75 72 65 20 73 74 6F    ry procedure sto
0180D0:  72 65 73 90 20 69 6E 66 6F 72 6D 61 74 69 6F 6E    res. information
0180E0:  20 61 62 6F 75 74 20 74 68 65 20 73 74 61 74 65     about the state
0180F0:  20 6F 66 20 0D 8A 63 6F 6D 70 75 74 61 74 69 6F     of ..computatio
018100:  6E 20 69 6E 20 61 20 34 20 77 6F 72 64 20 76 65    n in a 4 word ve
018110:  63 74 6F 72 2E 20 54 68 65 90 20 34 90 20 76 61    ctor. The. 4. va
018120:  6C 75 65 73 20 77 68 69 63 68 20 61 72 65 20 73    lues which are s
018130:  74 6F 72 65 64 20 61 72 65 20 61 73 20 0D 8A 66    tored are as ..f
018140:  6F 6C 6C 6F 77 73 0D 0A 0D 0A 09 77 6F 72 64 20    ollows.....word 
018150:  30 20 2D 2D 20 54 68 65 20 6F 6C 64 20 76 65 63    0 -- The old vec
018160:  74 6F 72 20 62 61 73 65 20 70 6F 69 6E 74 65 72    tor base pointer
018170:  0D 0A 09 77 6F 72 64 20 31 20 2D 2D 20 54 68 65    ...word 1 -- The
018180:  20 76 65 63 74 6F 72 20 74 6F 70 20 70 6F 69 6E     vector top poin
018190:  74 65 72 0D 0A 09 77 6F 72 64 20 32 20 2D 2D 20    ter...word 2 -- 
0181A0:  49 58 0D 0A 09 77 6F 72 64 20 33 20 2D 2D 20 53    IX...word 3 -- S
0181B0:  50 0D 0A 0D 0A 09 57 68 65 6E 20 4C 4F 4E 47 4A    P.....When LONGJ
0181C0:  55 4D 50 20 69 73 20 75 73 65 64 90 20 74 68 69    UMP is used. thi
0181D0:  73 90 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 90 20    s. information. 
0181E0:  69 73 90 20 75 73 65 64 90 20 74 6F 20 72 65 73    is. used. to res
0181F0:  74 6F 72 65 20 74 68 65 20 0D 8A 73 74 61 74 65    tore the ..state
018200:  20 6F 66 20 63 6F 6D 70 75 74 61 74 69 6F 6E 2E     of computation.
018210:  0D 0A 3E 70 61 0D 0A 09 54 68 65 20 31 34 74 68    ..>pa...The 14th
018220:  20 61 6E 64 20 31 35 74 68 90 20 62 79 74 65 73     and 15th. bytes
018230:  90 20 6F 66 90 20 61 6E 79 90 20 6F 62 6A 65 63    . of. any. objec
018240:  74 90 20 70 72 6F 67 72 61 6D 20 70 72 6F 64 75    t. program produ
018250:  63 65 64 20 61 6C 77 61 79 73 20 0D 8A 70 6F 69    ced always ..poi
018260:  6E 74 20 74 6F 20 74 68 65 20 62 61 73 65 20 6F    nt to the base o
018270:  66 20 74 68 65 20 63 75 72 72 65 6E 74 90 20 76    f the current. v
018280:  65 63 74 6F 72 20 61 6C 6C 6F 63 61 74 69 6F 6E    ector allocation
018290:  2E 20 54 68 65 20 31 36 74 68 20 61 6E 64 20 31    . The 16th and 1
0182A0:  37 74 68 20 0D 8A 62 79 74 65 73 20 61 6C 77 61    7th ..bytes alwa
0182B0:  79 73 20 70 6F 69 6E 74 20 74 6F 20 74 68 65 20    ys point to the 
0182C0:  74 6F 70 20 6F 66 20 74 68 65 20 63 75 72 72 65    top of the curre
0182D0:  6E 74 20 76 65 63 74 6F 72 20 61 6C 6C 6F 63 61    nt vector alloca
0182E0:  74 69 6F 6E 2E 20 41 6C 6C 20 6F 66 20 0D 8A 74    tion. All of ..t
0182F0:  68 65 20 76 65 63 74 6F 72 20 73 70 61 63 65 20    he vector space 
018300:  72 65 71 75 69 72 65 64 20 66 6F 72 90 20 61 6E    required for. an
018310:  79 90 20 70 61 72 74 69 63 75 6C 61 72 20 70 72    y. particular pr
018320:  6F 63 65 64 75 72 65 20 61 63 74 69 76 61 74 69    ocedure activati
018330:  6F 6E 20 69 73 20 0D 8A 61 6C 6C 6F 63 61 74 65    on is ..allocate
018340:  64 20 6F 6E 20 65 6E 74 72 79 20 74 6F 20 74 68    d on entry to th
018350:  61 74 20 70 72 6F 63 65 64 75 72 65 90 20 61 6E    at procedure. an
018360:  64 20 64 65 2D 61 6C 6C 6F 63 61 74 65 64 20 6F    d de-allocated o
018370:  6E 20 65 78 69 74 2E 20 57 68 65 6E 20 61 20 0D    n exit. When a .
018380:  8A 76 65 63 74 6F 72 20 69 73 20 64 65 63 6C 61    .vector is decla
018390:  72 65 64 20 77 69 74 68 69 6E 20 61 20 70 72 6F    red within a pro
0183A0:  63 65 64 75 72 65 90 20 69 74 90 20 69 73 90 20    cedure. it. is. 
0183B0:  67 69 76 65 6E 20 61 20 63 68 75 6E 6B 20 6F 66    given a chunk of
0183C0:  20 6D 65 6D 6F 72 79 20 0D 8A 77 69 74 68 69 6E     memory ..within
0183D0:  20 74 68 69 73 20 61 6C 6C 6F 63 61 74 69 6F 6E     this allocation
0183E0:  2E 0D 0A 0D 0A 09 54 68 65 20 63 6F 6D 70 69 6C    ......The compil
0183F0:  65 72 20 69 73 20 61 90 20 74 77 6F 90 20 70 61    er is a. two. pa
018400:  73 73 90 20 63 6F 6D 70 69 6C 65 72 2E 90 20 54    ss. compiler.. T
018410:  68 65 90 20 66 69 72 73 74 20 70 61 73 73 20 72    he. first pass r
018420:  65 61 64 73 20 74 68 65 20 0D 8A 73 6F 75 72 63    eads the ..sourc
018430:  65 20 74 65 78 74 20 6F 66 20 74 68 65 20 70 72    e text of the pr
018440:  6F 67 72 61 6D 2C 20 64 6F 65 73 20 73 79 6E 74    ogram, does synt
018450:  61 78 20 61 6E 61 6C 79 73 69 73 20 6F 66 20 69    ax analysis of i
018460:  74 20 61 6E 64 20 70 72 6F 64 75 63 65 73 20 61    t and produces a
018470:  6E 20 0D 8A 61 70 70 6C 69 63 61 74 69 76 65 20    n ..applicative 
018480:  65 78 70 72 65 73 73 69 6F 6E 20 74 72 65 65 20    expression tree 
018490:  77 68 69 63 68 90 20 72 65 70 72 65 73 65 6E 74    which. represent
0184A0:  73 90 20 74 68 65 20 70 72 6F 67 72 61 6D 2E 20    s. the program. 
0184B0:  54 68 65 20 73 65 63 6F 6E 64 20 0D 8A 70 61 73    The second ..pas
0184C0:  73 20 67 6F 65 73 20 6F 76 65 72 20 74 68 69 73    s goes over this
0184D0:  20 74 72 65 65 20 61 6E 64 20 70 72 6F 64 75 63     tree and produc
0184E0:  65 73 90 20 63 6F 64 65 20 66 6F 72 20 69 74 2E    es. code for it.
0184F0:  20 54 68 65 20 73 65 63 6F 6E 64 20 70 61 73 73     The second pass
018500:  20 69 73 20 0D 8A 69 6E 20 66 61 63 74 20 64 6F     is ..in fact do
018510:  6E 65 20 74 77 69 63 65 3B 20 74 68 65 20 66 69    ne twice; the fi
018520:  72 73 74 20 74 69 6D 65 20 6E 6F 20 63 6F 64 65    rst time no code
018530:  20 69 73 20 70 72 6F 64 75 63 65 64 20 62 75 74     is produced but
018540:  20 74 68 65 20 70 72 6F 67 72 61 6D 20 0D 8A 69     the program ..i
018550:  73 20 63 68 65 63 6B 65 64 20 66 6F 72 20 61 6E    s checked for an
018560:  79 20 73 65 6D 61 6E 74 69 63 90 20 65 72 72 6F    y semantic. erro
018570:  72 73 90 20 73 75 63 68 90 20 61 73 20 75 6E 64    rs. such. as und
018580:  65 66 69 6E 65 64 20 69 64 65 6E 74 69 66 69 65    efined identifie
018590:  72 73 20 6F 72 20 0D 8A 69 6C 6C 65 67 61 6C 20    rs or ..illegal 
0185A0:  61 73 73 69 67 6E 6D 65 6E 74 73 2E 20 49 66 20    assignments. If 
0185B0:  74 68 69 73 20 70 61 73 73 90 20 72 75 6E 73 90    this pass. runs.
0185C0:  20 73 6D 6F 6F 74 68 6C 79 20 77 69 74 68 20 6E     smoothly with n
0185D0:  6F 20 65 72 72 6F 72 73 20 62 65 69 6E 67 20 0D    o errors being .
0185E0:  8A 70 69 63 6B 65 64 20 75 70 20 74 68 65 6E 20    .picked up then 
0185F0:  74 68 65 20 73 65 63 6F 6E 64 20 70 61 73 73 90    the second pass.
018600:  20 77 69 6C 6C 20 62 65 20 72 65 70 65 61 74 65     will be repeate
018610:  64 2C 20 74 68 69 73 20 74 69 6D 65 20 67 65 6E    d, this time gen
018620:  65 72 61 74 69 6E 67 20 0D 8A 63 6F 64 65 2E 0D    erating ..code..
018630:  0A 3E 70 61 0D 0A 3E 63 65 20 E2 41 32 2E 20 53    .>pa..>ce .A2. S
018640:  55 4D 4D 41 52 59 20 41 4E 44 20 49 4E 44 45 58    UMMARY AND INDEX
018650:  20 4F 46 20 4C 49 42 52 41 52 59 20 52 4F 55 54     OF LIBRARY ROUT
018660:  49 4E 45 53 E2 0D 0A 0D 0A 0D 0A 09 54 68 65 20    INES........The 
018670:  6C 65 74 74 65 72 20 20 61 74 20 74 68 65 20 73    letter  at the s
018680:  74 61 72 74 20 6F 66 90 20 65 61 63 68 90 20 6C    tart of. each. l
018690:  69 6E 65 90 20 69 6E 20 74 68 65 20 20 66 6F 6C    ine. in the  fol
0186A0:  6C 6F 77 69 6E 67 20 6C 69 73 74 20 6F 66 20 0D    lowing list of .
0186B0:  8A 6C 69 62 72 61 72 79 20 72 6F 75 74 69 6E 65    .library routine
0186C0:  73 20 69 6E 64 69 63 61 74 65 73 20 74 68 65 20    s indicates the 
0186D0:  64 65 67 72 65 65 90 20 6F 66 20 70 6F 72 74 61    degree. of porta
0186E0:  62 69 6C 69 74 79 20 6F 66 20 74 68 65 20 72 6F    bility of the ro
0186F0:  75 74 69 6E 65 73 2E 20 0D 8A 46 75 6C 6C 20 64    utines. ..Full d
018700:  65 74 61 69 6C 73 20 61 72 65 20 67 69 76 65 6E    etails are given
018710:  20 69 6E 20 41 70 70 65 6E 64 69 78 20 33 2E 0D     in Appendix 3..
018720:  0A 09 4E 6F 74 65 3A 20 41 20 6D 65 61 6E 73 20    ..Note: A means 
018730:  41 4D 53 44 4F 53 20 76 65 72 73 69 6F 6E 20 6F    AMSDOS version o
018740:  6E 6C 79 2C 20 43 20 6D 65 61 6E 73 20 43 50 2F    nly, C means CP/
018750:  4D 20 76 65 72 73 69 6F 6E 20 6F 6E 6C 79 0D 0A    M version only..
018760:  0D 0A 09 53 20 69 6E 64 69 63 61 74 65 73 20 72    ...S indicates r
018770:  6F 75 74 69 6E 65 20 69 73 20 70 61 72 74 20 6F    outine is part o
018780:  66 20 74 68 65 20 73 74 61 6E 64 61 72 64 20 42    f the standard B
018790:  43 50 4C 20 49 2F 4F 20 6C 69 62 72 61 72 79 0D    CPL I/O library.
0187A0:  0A 09 44 20 69 6E 64 69 63 61 74 65 73 20 61 20    ..D indicates a 
0187B0:  73 74 61 6E 64 61 72 64 20 42 43 50 4C 90 20 72    standard BCPL. r
0187C0:  6F 75 74 69 6E 65 90 20 62 75 74 20 77 69 74 68    outine. but with
0187D0:  20 61 20 73 6C 69 67 68 74 20 64 69 66 66 65 72     a slight differ
0187E0:  65 6E 63 65 0D 8A 20 20 20 20 20 20 69 6E 20 74    ence..      in t
0187F0:  68 65 20 77 61 79 20 69 74 20 69 73 20 75 73 65    he way it is use
018800:  64 2E 0D 0A 09 46 20 69 6E 64 69 63 61 74 65 73    d....F indicates
018810:  20 66 72 65 71 75 65 6E 74 6C 79 20 66 6F 75 6E     frequently foun
018820:  64 20 73 69 6D 69 6C 61 72 20 72 6F 75 74 69 6E    d similar routin
018830:  65 73 20 69 6E 20 42 43 50 4C 20 73 79 73 74 65    es in BCPL syste
018840:  6D 73 0D 0A 09 41 6C 6C 20 75 6E 6D 61 72 6B 65    ms...All unmarke
018850:  64 20 72 6F 75 74 69 6E 65 73 20 61 72 65 20 41    d routines are A
018860:  72 6E 6F 72 20 42 43 50 4C 20 73 70 65 63 69 66    rnor BCPL specif
018870:  69 63 2E 0D 0A 0D 0A 0D 0A 3E 2D 2D 21 2D 2D 2D    ic.......>--!---
018880:  21 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 21 2D 2D    !------------!--
018890:  2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D    --!-------!-----
0188A0:  2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D    --!-------!-----
0188B0:  2D 2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D    --!-------!-----
0188C0:  2D 2D 2D 2D 52 0D 0A 09 09 6E 61 6D 65 20 09 70    ----R....name .p
0188D0:  67 09 64 65 73 63 72 69 70 74 69 6F 6E 0D 0A 0D    g.description...
0188E0:  0A 09 53 09 61 70 74 6F 76 65 63 20 09 34 30 09    ..S.aptovec .40.
0188F0:  63 61 6C 6C 20 61 20 72 6F 75 74 69 6E 65 20 77    call a routine w
018900:  69 74 68 20 61 20 64 79 6E 61 6D 69 63 61 6C 6C    ith a dynamicall
018910:  79 20 61 6C 6C 6F 63 61 74 65 64 20 76 65 63 74    y allocated vect
018920:  6F 72 0D 0A 43 09 09 62 64 6F 73 61 20 09 34 35    or..C..bdosa .45
018930:  09 63 61 6C 6C 20 74 68 65 20 42 44 4F 53 2C 20    .call the BDOS, 
018940:  72 65 74 75 72 6E 69 6E 67 20 76 61 6C 75 65 73    returning values
018950:  0D 0A 43 09 09 62 64 6F 73 62 20 09 34 35 09 63    ..C..bdosb .45.c
018960:  61 6C 6C 20 74 68 65 20 42 44 4F 53 2C 20 6E 6F    all the BDOS, no
018970:  74 20 72 65 74 75 72 6E 69 6E 67 20 76 61 6C 75    t returning valu
018980:  65 73 0D 0A 43 09 09 62 69 6F 73 20 09 34 35 09    es..C..bios .45.
018990:  63 61 6C 6C 20 74 68 65 20 42 49 4F 53 2C 20 72    call the BIOS, r
0189A0:  65 74 75 72 6E 69 6E 67 20 61 20 76 61 6C 75 65    eturning a value
0189B0:  0D 0A 09 09 62 79 74 65 6D 6F 76 65 20 09 34 30    ....bytemove .40
0189C0:  09 6D 6F 76 65 20 61 20 62 6C 6F 63 6B 20 6F 66    .move a block of
0189D0:  20 6D 65 6D 6F 72 79 20 75 73 69 6E 67 20 62 79     memory using by
0189E0:  74 65 20 61 64 64 72 65 73 73 65 73 0D 0A 09 46    te addresses...F
0189F0:  09 63 61 6C 6C 20 09 34 30 09 63 61 6C 6C 20 61    .call .40.call a
018A00:  20 6D 61 63 68 69 6E 65 20 63 6F 64 65 20 72 6F     machine code ro
018A10:  75 74 69 6E 65 0D 0A 09 46 09 63 61 70 69 74 61    utine...F.capita
018A20:  6C 63 68 20 09 34 31 09 63 6F 6E 76 65 72 74 20    lch .41.convert 
018A30:  63 68 61 72 61 63 74 65 72 20 66 72 6F 6D 20 6C    character from l
018A40:  6F 77 65 72 20 74 6F 20 75 70 70 65 72 20 63 61    ower to upper ca
018A50:  73 65 0D 0A 09 09 63 6C 6F 73 65 69 6E 20 09 33    se....closein .3
018A60:  37 09 63 6C 6F 73 65 20 61 6E 20 69 6E 70 75 74    7.close an input
018A70:  20 66 69 6C 65 0D 0A 09 09 63 6C 6F 73 65 6F 75     file....closeou
018A80:  74 20 09 33 37 09 63 6C 6F 73 65 20 61 6E 20 6F    t .37.close an o
018A90:  75 74 70 75 74 20 66 69 6C 65 0D 0A 09 46 09 63    utput file...F.c
018AA0:  6F 6D 70 63 68 20 09 34 31 09 63 6F 6D 70 61 72    ompch .41.compar
018AB0:  65 20 74 77 6F 20 63 68 61 72 61 63 74 65 72 73    e two characters
018AC0:  0D 0A 09 46 09 63 6F 6D 70 73 74 72 69 6E 67 20    ...F.compstring 
018AD0:  09 34 31 09 63 6F 6D 70 61 72 65 20 74 77 6F 20    .41.compare two 
018AE0:  73 74 72 69 6E 67 73 0D 0A 09 09 64 65 62 75 67    strings....debug
018AF0:  20 09 34 38 09 64 65 62 75 67 67 69 6E 67 20 61     .48.debugging a
018B00:  69 64 0D 0A 09 09 64 65 63 76 61 6C 20 09 34 31    id....decval .41
018B10:  09 63 6F 6E 76 65 72 74 20 61 20 68 65 78 61 64    .convert a hexad
018B20:  65 63 69 6D 61 6C 20 64 69 67 69 74 20 74 6F 20    ecimal digit to 
018B30:  64 65 63 69 6D 61 6C 0D 0A 09 46 09 64 65 6C 65    decimal...F.dele
018B40:  74 65 20 09 34 32 09 64 65 6C 65 74 65 20 61 20    te .42.delete a 
018B50:  66 69 6C 65 0D 0A 09 53 09 65 6E 64 72 65 61 64    file...S.endread
018B60:  09 33 34 09 63 6C 6F 73 65 20 74 68 65 20 63 75    .34.close the cu
018B70:  72 72 65 6E 74 20 69 6E 70 75 74 20 73 74 72 65    rrent input stre
018B80:  61 6D 0D 0A 09 53 09 65 6E 64 77 72 69 74 65 20    am...S.endwrite 
018B90:  09 33 34 09 63 6C 6F 73 65 20 74 68 65 20 63 75    .34.close the cu
018BA0:  72 72 65 6E 74 20 6F 75 74 70 75 74 20 73 74 72    rrent output str
018BB0:  65 61 6D 0D 0A 41 09 09 65 78 74 65 72 6E 61 6C    eam..A..external
018BC0:  20 09 34 36 09 63 61 6C 6C 20 61 6E 20 65 78 74     .46.call an ext
018BD0:  65 72 6E 61 6C 20 63 6F 6D 6D 61 6E 64 0D 0A 09    ernal command...
018BE0:  44 09 66 69 6E 64 69 6E 70 75 74 20 09 33 35 09    D.findinput .35.
018BF0:  6F 70 65 6E 20 61 6E 20 69 6E 70 75 74 20 66 69    open an input fi
018C00:  6C 65 0D 0A 09 44 09 66 69 6E 64 6F 75 74 70 75    le...D.findoutpu
018C10:  74 20 09 33 36 09 6F 70 65 6E 20 61 6E 20 6F 75    t .36.open an ou
018C20:  74 70 75 74 20 66 69 6C 65 0D 0A 43 09 09 66 69    tput file..C..fi
018C30:  72 6D 77 61 72 65 20 09 34 35 09 63 61 6C 6C 20    rmware .45.call 
018C40:  74 68 65 20 66 69 72 6D 77 61 72 65 20 28 43 50    the firmware (CP
018C50:  2F 4D 20 50 6C 75 73 20 6F 6E 6C 79 29 0D 0A 09    /M Plus only)...
018C60:  09 66 6C 75 73 68 20 09 33 37 09 66 6C 75 73 68    .flush .37.flush
018C70:  20 74 68 65 20 6B 65 79 62 6F 61 72 64 20 62 75     the keyboard bu
018C80:  66 66 65 72 0D 0A 09 53 09 67 65 74 62 79 74 65    ffer...S.getbyte
018C90:  20 09 34 37 09 67 65 74 20 61 20 62 79 74 65 20     .47.get a byte 
018CA0:  66 72 6F 6D 20 61 20 73 74 72 69 6E 67 0D 0A 09    from a string...
018CB0:  53 09 69 6E 70 75 74 20 09 33 33 09 72 65 74 75    S.input .33.retu
018CC0:  72 6E 20 74 68 65 20 63 75 72 72 65 6E 74 6C 79    rn the currently
018CD0:  20 73 65 6C 65 63 74 65 64 20 6F 75 74 70 75 74     selected output
018CE0:  20 73 74 72 65 61 6D 0D 0A 09 44 09 6C 65 76 65     stream...D.leve
018CF0:  6C 20 09 34 32 09 67 65 74 20 70 6F 69 6E 74 65    l .42.get pointe
018D00:  72 20 74 6F 20 63 75 72 72 65 6E 74 20 65 6E 76    r to current env
018D10:  69 72 6F 6E 6D 65 6E 74 0D 0A 09 44 09 6C 6F 6E    ironment...D.lon
018D20:  67 6A 75 6D 70 20 09 34 32 09 6A 75 6D 70 20 74    gjump .42.jump t
018D30:  6F 20 6F 75 74 65 72 20 6C 65 76 65 6C 20 6F 66    o outer level of
018D40:  20 70 72 6F 67 72 61 6D 0D 0A 09 53 09 6E 65 77     program...S.new
018D50:  6C 69 6E 65 20 09 32 37 09 73 74 61 72 74 20 61    line .27.start a
018D60:  20 6E 65 77 20 6C 69 6E 65 20 69 6E 20 74 68 65     new line in the
018D70:  20 6F 75 74 70 75 74 0D 0A 09 53 09 6E 65 77 70     output...S.newp
018D80:  61 67 65 20 09 32 37 09 73 74 61 72 74 20 61 20    age .27.start a 
018D90:  6E 65 77 20 70 61 67 65 20 69 6E 20 74 68 65 20    new page in the 
018DA0:  6F 75 74 70 75 74 0D 0A 09 53 09 6F 75 74 70 75    output...S.outpu
018DB0:  74 20 09 33 33 09 72 65 74 75 72 6E 20 74 68 65    t .33.return the
018DC0:  20 63 75 72 72 65 6E 74 6C 79 20 73 65 6C 65 63     currently selec
018DD0:  74 65 64 20 6F 75 74 70 75 74 20 73 74 72 65 61    ted output strea
018DE0:  6D 0D 0A 3E 70 61 0D 0A 0D 0A 0D 0A 09 53 09 70    m..>pa.......S.p
018DF0:  61 63 6B 73 74 72 69 6E 67 20 09 34 37 09 63 6F    ackstring .47.co
018E00:  6D 70 61 63 74 20 61 20 73 74 72 69 6E 67 0D 0A    mpact a string..
018E10:  09 09 70 72 62 75 73 79 20 09 33 38 09 73 65 65    ..prbusy .38.see
018E20:  20 69 66 20 74 68 65 20 70 72 69 6E 74 65 72 20     if the printer 
018E30:  69 73 20 62 75 73 79 0D 0A 09 09 70 72 63 68 20    is busy....prch 
018E40:  09 33 38 09 73 65 6E 64 20 61 20 63 68 61 72 61    .38.send a chara
018E50:  63 74 65 72 20 74 6F 20 74 68 65 20 70 72 69 6E    cter to the prin
018E60:  74 65 72 0D 0A 09 53 09 70 75 74 62 79 74 65 20    ter...S.putbyte 
018E70:  09 34 37 09 70 75 74 20 61 20 62 79 74 65 20 69    .47.put a byte i
018E80:  6E 74 6F 20 61 20 73 74 72 69 6E 67 0D 0A 09 46    nto a string...F
018E90:  09 72 61 6E 64 6F 6D 20 09 34 32 09 72 65 74 75    .random .42.retu
018EA0:  72 6E 20 61 20 70 73 65 75 64 6F 2D 72 61 6E 64    rn a pseudo-rand
018EB0:  6F 6D 20 6E 75 6D 62 65 72 0D 0A 09 53 09 72 64    om number...S.rd
018EC0:  63 68 20 09 33 31 09 72 65 61 64 20 61 20 63 68    ch .31.read a ch
018ED0:  61 72 61 63 74 65 72 0D 0A 09 09 72 64 74 65 73    aracter....rdtes
018EE0:  74 20 09 33 38 09 73 65 65 20 69 66 20 61 20 6B    t .38.see if a k
018EF0:  65 79 20 68 61 73 20 62 65 65 6E 20 70 72 65 73    ey has been pres
018F00:  73 65 64 0D 0A 09 09 72 64 76 64 75 20 09 33 38    sed....rdvdu .38
018F10:  09 72 65 61 64 20 63 68 61 72 61 63 74 65 72 20    .read character 
018F20:  66 72 6F 6D 20 74 68 65 20 6B 65 79 62 6F 61 72    from the keyboar
018F30:  64 0D 0A 09 09 72 65 61 64 63 68 20 09 33 39 09    d....readch .39.
018F40:  72 65 61 64 20 61 20 63 68 61 72 61 63 74 65 72    read a character
018F50:  20 66 72 6F 6D 20 74 68 65 20 69 6E 70 75 74 20     from the input 
018F60:  66 69 6C 65 0D 0A 09 53 09 72 65 61 64 6E 20 09    file...S.readn .
018F70:  33 31 09 72 65 61 64 20 61 20 64 65 63 69 6D 61    31.read a decima
018F80:  6C 20 6E 75 6D 62 65 72 0D 0A 09 53 09 72 65 61    l number...S.rea
018F90:  64 73 20 09 33 31 09 72 65 61 64 20 61 20 73 74    ds .31.read a st
018FA0:  72 69 6E 67 0D 0A 43 09 09 72 65 61 64 73 65 63    ring..C..readsec
018FB0:  74 6F 72 09 2D 09 72 65 61 64 20 61 20 31 32 38    tor.-.read a 128
018FC0:  20 62 79 74 65 20 73 65 63 74 6F 72 20 66 72 6F     byte sector fro
018FD0:  6D 20 64 69 73 63 0D 0A 09 46 09 72 65 6E 61 6D    m disc...F.renam
018FE0:  65 20 09 34 32 09 72 65 6E 61 6D 65 20 61 20 66    e .42.rename a f
018FF0:  69 6C 65 0D 0A 43 09 53 09 72 65 77 69 6E 64 20    ile..C.S.rewind 
019000:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
019010:  15 00 00 00 02 09 50 E5 15 00 C1 02 00 00 00 02    ......P.........
019020:  15 00 C2 02 00 00 00 02 15 00 C3 02 00 00 00 02    ................
019030:  15 00 C4 02 00 00 00 02 15 00 C5 02 00 00 00 02    ................
019040:  15 00 C6 02 00 00 00 02 15 00 C7 02 00 00 00 02    ................
019050:  15 00 C8 02 00 00 00 02 15 00 C9 02 00 00 00 02    ................
019060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
019070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
019080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
019090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0190A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0190B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0190C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0190D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0190E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0190F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
019100:  09 33 36 09 72 65 77 69 6E 64 20 74 68 65 20 69    .36.rewind the i
019110:  6E 70 75 74 20 73 74 72 65 61 6D 0D 0A 43 09 09    nput stream..C..
019120:  72 65 77 69 6E 64 69 6E 20 09 33 39 09 72 65 77    rewindin .39.rew
019130:  69 6E 64 20 61 6E 20 69 6E 70 75 74 20 66 69 6C    ind an input fil
019140:  65 0D 0A 09 53 09 73 65 6C 65 63 74 69 6E 70 75    e...S.selectinpu
019150:  74 20 09 33 33 09 63 68 61 6E 67 65 20 74 68 65    t .33.change the
019160:  20 69 6E 70 75 74 20 73 74 72 65 61 6D 0D 0A 09     input stream...
019170:  53 09 73 65 6C 65 63 74 6F 75 74 70 75 74 20 33    S.selectoutput 3
019180:  34 09 63 68 61 6E 67 65 20 74 68 65 20 6F 75 74    4.change the out
019190:  70 75 74 20 73 74 72 65 61 6D 0D 0A 43 09 09 73    put stream..C..s
0191A0:  65 74 66 63 62 09 2D 09 73 65 74 20 75 70 20 61    etfcb.-.set up a
0191B0:  20 66 69 6C 65 20 63 6F 6E 74 72 6F 6C 20 62 6C     file control bl
0191C0:  6F 63 6B 0D 0A 09 53 09 73 74 6F 70 20 09 34 33    ock...S.stop .43
0191D0:  09 73 74 6F 70 20 61 20 70 72 6F 67 72 61 6D 20    .stop a program 
0191E0:  61 6E 64 20 73 65 74 20 72 65 74 75 72 6E 20 63    and set return c
0191F0:  6F 64 65 0D 0A 09 09 73 74 72 74 6F 6E 75 6D 20    ode....strtonum 
019200:  09 33 32 09 63 6F 6E 76 65 72 74 20 61 20 73 74    .32.convert a st
019210:  72 69 6E 67 20 74 6F 20 61 20 64 65 63 69 6D 61    ring to a decima
019220:  6C 20 6E 75 6D 62 65 72 0D 0A 43 09 09 74 61 69    l number..C..tai
019230:  6C 20 09 34 36 09 72 65 74 75 72 6E 73 20 74 68    l .46.returns th
019240:  65 20 43 50 2F 4D 20 63 6F 6D 6D 61 6E 64 20 74    e CP/M command t
019250:  61 69 6C 20 61 73 20 61 20 73 74 72 69 6E 67 0D    ail as a string.
019260:  0A 41 09 46 09 74 69 6D 65 20 09 34 36 09 72 65    .A.F.time .46.re
019270:  74 75 72 6E 20 74 68 65 20 74 69 6D 65 0D 0A 09    turn the time...
019280:  53 09 75 6E 70 61 63 6B 73 74 72 69 6E 67 09 34    S.unpackstring.4
019290:  37 09 65 78 70 61 6E 64 20 61 20 73 74 72 69 6E    7.expand a strin
0192A0:  67 20 69 6E 74 6F 20 61 20 76 65 63 74 6F 72 0D    g into a vector.
0192B0:  0A 09 53 09 75 6E 72 64 63 68 20 09 33 32 09 70    ..S.unrdch .32.p
0192C0:  75 74 20 62 61 63 6B 20 74 68 65 20 6C 61 73 74    ut back the last
0192D0:  20 72 65 61 64 20 63 68 61 72 61 63 74 65 72 0D     read character.
0192E0:  0A 09 46 09 75 70 70 65 72 63 61 73 65 20 09 34    ..F.uppercase .4
0192F0:  34 09 73 61 6D 65 20 61 73 20 63 61 70 69 74 61    4.same as capita
019300:  6C 63 68 0D 0A 09 09 76 65 72 73 69 6F 6E 20 09    lch....version .
019310:  34 34 09 72 65 74 75 72 6E 20 74 68 65 20 6F 70    44.return the op
019320:  65 72 61 74 69 6E 67 20 73 79 73 74 65 6D 20 61    erating system a
019330:  6E 64 20 63 6F 6D 70 75 74 65 72 0D 0A 09 53 09    nd computer...S.
019340:  77 72 63 68 20 09 32 37 09 77 72 69 74 65 20 61    wrch .27.write a
019350:  20 63 68 61 72 61 63 74 65 72 0D 0A 09 09 77 72     character....wr
019360:  69 74 65 63 68 20 09 33 39 09 77 72 69 74 65 20    itech .39.write 
019370:  61 20 63 68 61 72 61 63 74 65 72 20 74 6F 20 74    a character to t
019380:  68 65 20 6F 75 74 70 75 74 20 66 69 6C 65 0D 0A    he output file..
019390:  09 53 09 77 72 69 74 65 64 20 09 32 37 09 77 72    .S.writed .27.wr
0193A0:  69 74 65 20 61 20 64 65 63 69 6D 61 6C 20 6E 75    ite a decimal nu
0193B0:  6D 62 65 72 0D 0A 09 53 09 77 72 69 74 65 66 20    mber...S.writef 
0193C0:  09 32 38 09 66 6F 72 6D 61 74 74 65 64 20 77 72    .28.formatted wr
0193D0:  69 74 65 0D 0A 09 53 09 77 72 69 74 65 68 65 78    ite...S.writehex
0193E0:  20 09 32 39 09 77 72 69 74 65 20 61 20 68 65 78     .29.write a hex
0193F0:  61 64 65 63 69 6D 61 6C 20 6E 75 6D 62 65 72 0D    adecimal number.
019400:  0A 09 53 09 77 72 69 74 65 6E 20 09 32 39 09 77    ..S.writen .29.w
019410:  72 69 74 65 20 61 20 64 65 63 69 6D 61 6C 20 6E    rite a decimal n
019420:  75 6D 62 65 72 20 69 6E 20 6D 69 6E 69 6D 75 6D    umber in minimum
019430:  20 77 69 64 74 68 0D 0A 09 53 09 77 72 69 74 65     width...S.write
019440:  6F 63 74 20 09 32 39 09 77 72 69 74 65 20 61 6E    oct .29.write an
019450:  20 6F 63 74 61 6C 20 6E 75 6D 62 65 72 0D 0A 09     octal number...
019460:  53 09 77 72 69 74 65 73 20 09 32 39 09 77 72 69    S.writes .29.wri
019470:  74 65 20 61 20 73 74 72 69 6E 67 0D 0A 43 09 09    te a string..C..
019480:  77 72 69 74 65 73 65 63 74 6F 72 09 2D 09 77 72    writesector.-.wr
019490:  69 74 65 20 61 20 31 32 38 20 62 79 74 65 20 73    ite a 128 byte s
0194A0:  65 63 74 6F 72 20 74 6F 20 64 69 73 63 0D 0A 09    ector to disc...
0194B0:  46 09 77 72 69 74 65 74 20 09 33 30 09 77 72 69    F.writet .30.wri
0194C0:  74 65 20 61 20 73 74 72 69 6E 67 20 61 6E 64 20    te a string and 
0194D0:  70 61 64 20 77 69 74 68 20 73 70 61 63 65 73 0D    pad with spaces.
0194E0:  0A 09 46 09 77 72 69 74 65 75 20 09 33 30 09 77    ..F.writeu .30.w
0194F0:  72 69 74 65 20 61 6E 20 75 6E 73 69 67 6E 65 64    rite an unsigned
019500:  20 64 65 63 69 6D 61 6C 20 6E 75 6D 62 65 72 0D     decimal number.
019510:  0A 09 09 77 72 76 64 75 20 09 33 39 09 77 72 69    ...wrvdu .39.wri
019520:  74 65 20 63 68 61 72 61 63 74 65 72 20 74 6F 20    te character to 
019530:  74 68 65 20 73 63 72 65 65 6E 0D 0A 3E 70 61 0D    the screen..>pa.
019540:  0A 3E 2D 2D 2D 21 2D 2D 2D 2D 2D 21 2D 2D 2D 2D    .>---!-----!----
019550:  2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D    -!-------!------
019560:  2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D    -!-------!------
019570:  2D 21 2D 2D 2D 2D 2D 2D 2D 21 2D 2D 2D 2D 2D 2D    -!-------!------
019580:  2D 21 2D 2D 2D 2D 52 0D 0A 3E 63 65 20 E2 41 33    -!----R..>ce .A3
019590:  2E 20 50 4F 52 54 41 42 49 4C 49 54 59 E2 0D 0A    . PORTABILITY...
0195A0:  0D 0A 0D 0A 09 4D 6F 73 74 20 6F 66 20 74 68 65    .....Most of the
0195B0:  20 61 62 6F 76 65 90 20 49 2F 4F 90 20 72 6F 75     above. I/O. rou
0195C0:  74 69 6E 65 73 90 20 77 69 6C 6C 90 20 62 65 90    tines. will. be.
0195D0:  20 66 6F 75 6E 64 20 69 6E 20 76 69 72 74 75 61     found in virtua
0195E0:  6C 6C 79 20 61 6C 6C 20 0D 8A 76 65 72 73 69 6F    lly all ..versio
0195F0:  6E 73 20 6F 66 20 42 43 50 4C 2E 20 53 6F 6D 65    ns of BCPL. Some
019600:  20 61 72 65 90 20 6C 65 73 73 90 20 73 74 61 6E     are. less. stan
019610:  64 61 72 64 2C 90 20 61 6E 64 90 20 73 6F 6D 65    dard,. and. some
019620:  20 61 72 65 20 73 70 65 63 69 66 69 63 20 74 6F     are specific to
019630:  20 0D 8A 41 72 6E 6F 72 20 42 43 50 4C 2E 20 49     ..Arnor BCPL. I
019640:  66 20 61 20 70 72 6F 67 72 61 6D 20 6D 61 79 90    f a program may.
019650:  20 62 65 90 20 72 65 71 75 69 72 65 64 20 74 6F     be. required to
019660:  20 72 75 6E 20 75 6E 64 65 72 20 6F 74 68 65 72     run under other
019670:  20 76 65 72 73 69 6F 6E 73 20 0D 8A 6F 66 20 42     versions ..of B
019680:  43 50 4C 20 74 68 65 73 65 20 6C 65 73 73 90 20    CPL these less. 
019690:  73 74 61 6E 64 61 72 64 90 20 72 6F 75 74 69 6E    standard. routin
0196A0:  65 73 90 20 73 68 6F 75 6C 64 90 20 62 65 90 20    es. should. be. 
0196B0:  75 73 65 64 90 20 61 73 20 6C 69 74 74 6C 65 20    used. as little 
0196C0:  61 73 20 0D 8A 70 6F 73 73 69 62 6C 65 2E 0D 0A    as ..possible...
0196D0:  0D 0A 0D 0A 0D 0A 52 6F 75 74 69 6E 65 73 20 74    ......Routines t
0196E0:  68 61 74 20 61 72 65 20 70 61 72 74 20 6F 66 20    hat are part of 
0196F0:  74 68 65 90 20 73 74 61 6E 64 61 72 64 20 42 43    the. standard BC
019700:  50 4C 20 49 2F 4F 20 6C 69 62 72 61 72 79 20 28    PL I/O library (
019710:  74 68 6F 73 65 20 6D 61 72 6B 65 64 20 0D 8A 27    those marked ..'
019720:  64 27 20 61 72 65 20 75 73 65 64 20 69 6E 20 61    d' are used in a
019730:  20 73 6C 69 67 68 74 6C 79 20 64 69 66 66 65 72     slightly differ
019740:  65 6E 74 20 77 61 79 20 69 6E 20 41 72 6E 6F 72    ent way in Arnor
019750:  20 42 43 50 4C 29 3A 0D 0A 0D 0A 61 70 74 6F 76     BCPL):....aptov
019760:  65 63 2C 90 20 65 6E 64 72 65 61 64 2C 90 20 65    ec,. endread,. e
019770:  6E 64 77 72 69 74 65 2C 90 20 66 69 6E 64 69 6E    ndwrite,. findin
019780:  70 75 74 28 64 29 2C 90 20 66 69 6E 64 6F 75 74    put(d),. findout
019790:  70 75 74 28 64 29 2C 90 20 67 65 74 62 79 74 65    put(d),. getbyte
0197A0:  2C 20 0D 8A 69 6E 70 75 74 2C 20 6C 65 76 65 6C    , ..input, level
0197B0:  28 64 29 2C 20 6C 6F 6E 67 6A 75 6D 70 28 64 29    (d), longjump(d)
0197C0:  2C 90 20 6E 65 77 6C 69 6E 65 2C 90 20 6E 65 77    ,. newline,. new
0197D0:  70 61 67 65 2C 90 20 6F 75 74 70 75 74 2C 20 70    page,. output, p
0197E0:  61 63 6B 73 74 72 69 6E 67 2C 20 0D 8A 70 75 74    ackstring, ..put
0197F0:  62 79 74 65 2C 20 72 64 63 68 2C 20 72 65 61 64    byte, rdch, read
019800:  6E 2C 20 72 65 61 64 73 2C 90 20 72 65 77 69 6E    n, reads,. rewin
019810:  64 2C 20 73 65 6C 65 63 74 69 6E 70 75 74 2C 20    d, selectinput, 
019820:  73 65 6C 65 63 74 6F 75 74 70 75 74 2C 20 73 74    selectoutput, st
019830:  6F 70 2C 20 0D 8A 75 6E 70 61 63 6B 73 74 72 69    op, ..unpackstri
019840:  6E 67 2C 90 20 75 6E 72 64 63 68 2C 90 20 77 72    ng,. unrdch,. wr
019850:  63 68 2C 90 90 20 77 72 69 74 65 64 2C 90 90 20    ch,.. writed,.. 
019860:  77 72 69 74 65 66 2C 90 90 20 77 72 69 74 65 68    writef,.. writeh
019870:  65 78 2C 90 20 77 72 69 74 65 6E 2C 20 0D 8A 77    ex,. writen, ..w
019880:  72 69 74 65 6F 63 74 2C 20 77 72 69 74 65 73 2E    riteoct, writes.
019890:  0D 0A 0D 0A 0D 0A 52 6F 75 74 69 6E 65 73 20 74    ......Routines t
0198A0:  68 61 74 20 61 72 65 20 6E 6F 74 20 65 6E 74 69    hat are not enti
0198B0:  72 65 6C 79 20 73 74 61 6E 64 61 72 64 20 28 74    rely standard (t
0198C0:  68 6F 75 67 68 20 6D 61 6E 79 20 42 43 50 4C 20    hough many BCPL 
0198D0:  73 79 73 74 65 6D 73 20 68 61 76 65 20 0D 8A 73    systems have ..s
0198E0:  6F 6D 65 74 68 69 6E 67 20 73 69 6D 69 6C 61 72    omething similar
0198F0:  29 3A 0D 0A 0D 0A 63 61 6C 6C 2C 20 63 61 70 69    ):....call, capi
019900:  74 61 6C 63 68 2C 20 63 6F 6D 70 63 68 2C 90 20    talch, compch,. 
019910:  63 6F 6D 70 73 74 72 69 6E 67 2C 90 20 64 65 6C    compstring,. del
019920:  65 74 65 2C 90 20 72 61 6E 64 6F 6D 2C 90 20 72    ete,. random,. r
019930:  65 6E 61 6D 65 2C 20 74 69 6D 65 2C 20 0D 8A 75    ename, time, ..u
019940:  70 70 65 72 63 61 73 65 2C 20 77 72 69 74 65 74    ppercase, writet
019950:  2C 20 77 72 69 74 65 75 2E 0D 0A 0D 0A 0D 0A 52    , writeu.......R
019960:  6F 75 74 69 6E 65 73 20 73 70 65 63 69 66 69 63    outines specific
019970:  20 74 6F 20 41 72 6E 6F 72 20 42 43 50 4C 3A 0D     to Arnor BCPL:.
019980:  0A 0D 0A 62 64 6F 73 61 2C 90 20 62 64 6F 73 62    ...bdosa,. bdosb
019990:  2C 90 20 62 69 6F 73 2C 90 20 62 79 74 65 6D 6F    ,. bios,. bytemo
0199A0:  76 65 2C 90 20 63 6C 6F 73 65 69 6E 2C 90 20 63    ve,. closein,. c
0199B0:  6C 6F 73 65 6F 75 74 2C 90 20 64 65 62 75 67 2C    loseout,. debug,
0199C0:  90 20 64 65 63 76 61 6C 2C 20 0D 8A 65 78 74 65    . decval, ..exte
0199D0:  72 6E 61 6C 2C 90 20 66 69 72 6D 77 61 72 65 2C    rnal,. firmware,
0199E0:  90 20 66 6C 75 73 68 2C 90 20 70 72 62 75 73 79    . flush,. prbusy
0199F0:  2C 90 20 70 72 63 68 2C 90 20 72 64 74 65 73 74    ,. prch,. rdtest
019A00:  2C 90 20 72 64 76 64 75 2C 90 20 72 65 61 64 63    ,. rdvdu,. readc
019A10:  68 2C 20 0D 8A 72 65 61 64 73 65 63 74 6F 72 2C    h, ..readsector,
019A20:  90 20 72 65 77 69 6E 64 69 6E 2C 90 20 73 65 74    . rewindin,. set
019A30:  66 63 62 2C 90 20 73 74 72 74 6F 6E 75 6D 2C 90    fcb,. strtonum,.
019A40:  90 20 74 61 69 6C 2C 90 20 76 65 72 73 69 6F 6E    . tail,. version
019A50:  2C 90 20 77 72 69 74 65 63 68 2C 20 0D 8A 77 72    ,. writech, ..wr
019A60:  69 74 65 73 65 63 74 6F 72 2C 20 77 72 76 64 75    itesector, wrvdu
019A70:  2C 20 70 6C 75 73 20 61 6C 6C 20 74 68 65 20 72    , plus all the r
019A80:  6F 75 74 69 6E 65 73 90 20 69 6E 20 74 68 65 20    outines. in the 
019A90:  66 69 6C 65 20 22 41 4D 53 44 4F 53 22 2C 20 77    file "AMSDOS", w
019AA0:  68 69 63 68 20 0D 8A 61 72 65 20 61 6C 73 6F 20    hich ..are also 
019AB0:  43 50 43 20 6D 61 63 68 69 6E 65 20 73 70 65 63    CPC machine spec
019AC0:  69 66 69 63 20 61 73 20 77 65 6C 6C 2E 0D 0A 0D    ific as well....
019AD0:  0A 0D 0A 3E 70 61 0D 0A 20 20 20 20 20 20 20 20    ...>pa..        
019AE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
019AF0:  20 20 E2 41 34 2E 20 45 52 52 4F 52 20 4D 45 53      .A4. ERROR MES
019B00:  53 41 47 45 53 E2 0D 0A 0D 0A 0D 0A 09 54 68 65    SAGES........The
019B10:  72 65 20 61 72 65 20 74 68 72 65 65 20 6D 61 69    re are three mai
019B20:  6E 20 73 65 74 73 20 6F 66 20 65 72 72 6F 72 20    n sets of error 
019B30:  6D 65 73 73 61 67 65 73 20 77 68 69 63 68 20 63    messages which c
019B40:  61 6E 20 6F 63 63 75 72 2E 20 54 68 65 73 65 20    an occur. These 
019B50:  0D 8A 61 72 65 20 66 61 74 61 6C 20 65 72 72 6F    ..are fatal erro
019B60:  72 73 20 77 68 69 63 68 20 63 61 75 73 65 20 74    rs which cause t
019B70:  68 65 90 20 63 6F 6D 70 69 6C 65 72 20 74 6F 20    he. compiler to 
019B80:  61 62 6F 72 74 20 69 6D 6D 65 64 69 61 74 65 6C    abort immediatel
019B90:  79 2C 20 70 68 61 73 65 20 0D 8A 31 20 65 72 72    y, phase ..1 err
019BA0:  6F 72 73 20 77 68 69 63 68 20 77 69 6C 6C 20 73    ors which will s
019BB0:  74 6F 70 90 20 74 68 65 90 20 63 6F 6D 70 69 6C    top. the. compil
019BC0:  61 74 69 6F 6E 90 20 61 66 74 65 72 90 20 70 68    ation. after. ph
019BD0:  61 73 65 20 31 20 61 6E 64 20 66 69 6E 61 6C 6C    ase 1 and finall
019BE0:  79 20 0D 8A 70 68 61 73 65 20 32 20 65 72 72 6F    y ..phase 2 erro
019BF0:  72 73 20 77 68 69 63 68 20 77 69 6C 6C 20 73 74    rs which will st
019C00:  6F 70 20 63 6F 6D 70 69 6C 61 74 69 6F 6E 20 61    op compilation a
019C10:  74 20 74 68 65 20 65 6E 64 20 6F 66 20 74 68 65    t the end of the
019C20:  20 66 69 72 73 74 20 72 75 6E 20 0D 8A 6F 66 20     first run ..of 
019C30:  70 68 61 73 65 20 32 2E 0D 0A 09 4D 6F 73 74 20    phase 2....Most 
019C40:  65 72 72 6F 72 20 6D 65 73 73 61 67 65 73 20 67    error messages g
019C50:  69 76 65 90 20 61 90 20 6C 69 6E 65 90 20 6E 75    ive. a. line. nu
019C60:  6D 62 65 72 2C 90 20 66 6F 72 20 65 78 61 6D 70    mber,. for examp
019C70:  6C 65 20 22 45 78 70 65 63 74 69 6E 67 20 0D 8A    le "Expecting ..
019C80:  63 6F 6D 6D 61 6E 64 20 6E 65 61 72 20 6C 69 6E    command near lin
019C90:  65 20 32 37 22 2E 20 54 68 65 90 20 77 6F 72 64    e 27". The. word
019CA0:  90 20 22 6E 65 61 72 22 90 20 69 73 20 75 73 65    . "near". is use
019CB0:  64 20 62 65 63 61 75 73 65 20 74 68 65 20 63 6F    d because the co
019CC0:  6D 70 69 6C 65 72 20 0D 8A 67 69 76 65 73 20 74    mpiler ..gives t
019CD0:  68 65 20 6C 69 6E 65 20 6E 75 6D 62 65 72 20 61    he line number a
019CE0:  74 20 77 68 69 63 68 20 69 74 90 20 64 69 73 63    t which it. disc
019CF0:  6F 76 65 72 65 64 20 74 68 65 20 70 72 6F 62 6C    overed the probl
019D00:  65 6D 2C 20 61 6E 64 20 74 68 69 73 20 69 73 20    em, and this is 
019D10:  0D 8A 6E 6F 74 20 6E 65 63 65 73 73 61 72 69 6C    ..not necessaril
019D20:  79 20 74 68 65 20 73 61 6D 65 20 6C 69 6E 65 90    y the same line.
019D30:  20 74 68 61 74 90 20 6E 65 65 64 73 20 63 6F 72     that. needs cor
019D40:  72 65 63 74 69 6E 67 2E 20 54 68 65 20 6C 69 6E    recting. The lin
019D50:  65 20 6E 75 6D 62 65 72 20 0D 8A 72 65 66 65 72    e number ..refer
019D60:  73 20 74 6F 20 74 68 65 20 70 6F 73 69 74 69 6F    s to the positio
019D70:  6E 20 6F 66 20 74 68 65 90 20 6C 69 6E 65 90 20    n of the. line. 
019D80:  77 69 74 68 69 6E 90 20 74 68 65 90 20 66 69 6C    within. the. fil
019D90:  65 2C 20 61 6E 64 20 6E 6F 74 20 74 6F 20 74 68    e, and not to th
019DA0:  65 20 0D 8A 74 6F 74 61 6C 20 6E 75 6D 62 65 72    e ..total number
019DB0:  20 6F 66 20 6C 69 6E 65 73 20 63 6F 6D 70 69 6C     of lines compil
019DC0:  65 64 20 73 6F 20 66 61 72 2E 0D 0A 0D 0A 0D 0A    ed so far.......
019DD0:  E2 28 69 29 20 46 61 74 61 6C 20 45 72 72 6F 72    .(i) Fatal Error
019DE0:  73 E2 0D 0A 0D 0A 0D 0A 4F 75 74 20 6F 66 20 6D    s.......Out of m
019DF0:  65 6D 6F 72 79 0D 0A 0D 0A 09 54 68 65 20 63 6F    emory.....The co
019E00:  6D 70 69 6C 65 72 20 68 61 73 20 72 75 6E 20 6F    mpiler has run o
019E10:  75 74 90 20 6F 66 90 20 72 6F 6F 6D 90 20 66 6F    ut. of. room. fo
019E20:  72 90 20 74 68 65 20 70 72 6F 67 72 61 6D 20 6F    r. the program o
019E30:  72 20 69 74 73 20 73 79 6D 62 6F 6C 20 0D 8A 74    r its symbol ..t
019E40:  61 62 6C 65 2E 20 43 61 6E 20 73 6F 6D 65 74 69    able. Can someti
019E50:  6D 65 73 20 62 65 20 73 6F 6C 76 65 64 20 62 79    mes be solved by
019E60:  20 72 65 2D 75 73 69 6E 67 20 6C 6F 63 61 6C 20     re-using local 
019E70:  76 61 72 69 61 62 6C 65 20 6E 61 6D 65 73 2E 0D    variable names..
019E80:  0A 0D 0A 0D 0A 4F 75 74 20 6F 66 20 73 79 6D 62    .....Out of symb
019E90:  6F 6C 20 73 70 61 63 65 0D 0A 0D 0A 09 56 65 72    ol space.....Ver
019EA0:  79 20 73 69 6D 69 6C 61 72 20 74 6F 20 74 68 65    y similar to the
019EB0:  20 61 62 6F 76 65 20 65 78 63 65 70 74 90 20 74     above except. t
019EC0:  68 61 74 90 20 74 68 65 20 70 72 6F 67 72 61 6D    hat. the program
019ED0:  20 6D 61 79 20 6E 6F 74 20 62 65 20 74 6F 6F 20     may not be too 
019EE0:  0D 8A 62 69 67 2E 20 54 72 79 20 63 6F 6D 70 69    ..big. Try compi
019EF0:  6C 69 6E 67 20 69 74 20 74 6F 20 64 69 73 63 20    ling it to disc 
019F00:  77 68 69 63 68 20 61 6C 6C 6F 77 73 20 74 77 69    which allows twi
019F10:  63 65 20 61 73 20 6D 75 63 68 20 73 79 6D 62 6F    ce as much symbo
019F20:  6C 20 73 70 61 63 65 2E 0D 0A 09 49 66 20 79 6F    l space....If yo
019F30:  75 20 61 72 65 20 63 6F 6D 70 69 6C 69 6E 67 20    u are compiling 
019F40:  61 90 20 70 69 65 63 65 90 20 6F 66 90 20 74 65    a. piece. of. te
019F50:  78 74 90 20 69 6E 20 6D 65 6D 6F 72 79 20 66 72    xt. in memory fr
019F60:  6F 6D 20 50 52 4F 54 45 58 54 20 6F 72 20 0D 8A    om PROTEXT or ..
019F70:  4D 41 58 41 4D 20 74 68 65 6E 20 73 61 76 69 6E    MAXAM then savin
019F80:  67 20 74 68 65 20 74 65 78 74 20 74 6F 90 20 64    g the text to. d
019F90:  69 73 63 2C 90 20 63 6C 65 61 72 69 6E 67 20 74    isc,. clearing t
019FA0:  68 65 20 6D 65 6D 6F 72 79 20 61 6E 64 20 74 68    he memory and th
019FB0:  65 6E 20 72 65 2D 0D 8A 63 6F 6D 70 69 6C 69 6E    en re-..compilin
019FC0:  67 20 6D 61 79 20 73 6F 6C 76 65 20 74 68 69 73    g may solve this
019FD0:  20 70 72 6F 62 6C 65 6D 2E 0D 0A 0D 0A 0D 0A 49     problem.......I
019FE0:  2F 4F 20 65 72 72 6F 72 0D 0A 0D 0A 09 41 6E 20    /O error.....An 
019FF0:  65 72 72 6F 72 20 68 61 73 20 6F 63 63 75 72 72    error has occurr
01A000:  65 64 20 77 68 65 6E 90 20 77 72 69 74 69 6E 67    ed when. writing
01A010:  90 20 74 6F 90 20 74 68 65 20 6F 75 74 70 75 74    . to. the output
01A020:  20 66 69 6C 65 2E 20 4D 61 79 20 6D 65 61 6E 20     file. May mean 
01A030:  0D 8A 74 68 61 74 20 74 68 65 20 64 69 73 63 20    ..that the disc 
01A040:  69 73 20 66 75 6C 6C 2E 0D 0A 0D 0A 0D 0A 43 61    is full.......Ca
01A050:  6E 27 74 20 6F 70 65 6E 20 69 6E 70 75 74 20 66    n't open input f
01A060:  69 6C 65 0D 0A 0D 0A 09 54 68 65 20 66 69 6C 65    ile.....The file
01A070:  6E 61 6D 65 20 67 69 76 65 6E 20 69 6E 20 61 20    name given in a 
01A080:  47 45 54 90 20 64 69 72 65 63 74 69 76 65 90 20    GET. directive. 
01A090:  63 6F 75 6C 64 90 20 6E 6F 74 20 62 65 20 66 6F    could. not be fo
01A0A0:  75 6E 64 20 6F 6E 20 74 68 65 20 0D 8A 64 69 73    und on the ..dis
01A0B0:  63 2E 0D 0A 0D 0A 0D 0A 43 61 6E 27 74 20 6F 70    c.......Can't op
01A0C0:  65 6E 20 6F 75 74 70 75 74 20 66 69 6C 65 0D 0A    en output file..
01A0D0:  0D 0A 09 54 68 65 20 63 6F 6D 70 69 6C 65 72 20    ...The compiler 
01A0E0:  77 61 73 20 74 72 79 69 6E 67 20 74 6F 20 6F 70    was trying to op
01A0F0:  65 6E 20 61 20 66 69 6C 65 20 74 6F 20 6F 75 74    en a file to out
01A100:  70 75 74 20 74 68 65 20 63 6F 6D 70 69 6C 65 64    put the compiled
01A110:  20 63 6F 64 65 20 0D 8A 74 6F 2C 20 62 75 74 20     code ..to, but 
01A120:  66 6F 72 20 73 6F 6D 65 20 72 65 61 73 6F 6E 20    for some reason 
01A130:  77 61 73 20 6E 6F 74 20 61 62 6C 65 20 74 6F 20    was not able to 
01A140:  6F 70 65 6E 20 69 74 2E 0D 0A 3E 70 61 0D 0A 42    open it...>pa..B
01A150:  72 6F 6B 65 6E 20 69 6E 0D 0A 0D 0A 09 45 53 43    roken in.....ESC
01A160:  20 6F 72 20 53 54 4F 50 20 77 61 73 20 70 72 65     or STOP was pre
01A170:  73 73 65 64 20 74 77 69 63 65 20 69 6E 20 61 20    ssed twice in a 
01A180:  72 6F 77 2E 20 50 72 65 73 73 69 6E 67 20 69 74    row. Pressing it
01A190:  20 6F 6E 63 65 20 77 69 6C 6C 20 68 61 6C 74 20     once will halt 
01A1A0:  0D 8A 74 68 65 20 63 6F 6D 70 69 6C 65 72 20 61    ..the compiler a
01A1B0:  6E 64 20 63 61 75 73 65 90 20 69 74 90 20 74 6F    nd cause. it. to
01A1C0:  90 20 77 61 69 74 90 20 66 6F 72 90 20 61 6E 6F    . wait. for. ano
01A1D0:  74 68 65 72 20 6B 65 79 20 70 72 65 73 73 2E 20    ther key press. 
01A1E0:  50 72 65 73 73 69 6E 67 20 0D 8A 65 73 63 61 70    Pressing ..escap
01A1F0:  65 20 61 67 61 69 6E 20 63 61 75 73 65 73 20 74    e again causes t
01A200:  68 69 73 20 65 72 72 6F 72 20 77 68 69 6C 65 90    his error while.
01A210:  20 61 6E 79 20 6F 74 68 65 72 20 6B 65 79 20 63     any other key c
01A220:  61 75 73 65 73 20 63 6F 6D 70 69 6C 61 74 69 6F    auses compilatio
01A230:  6E 20 0D 8A 74 6F 20 63 6F 6E 74 69 6E 75 65 2E    n ..to continue.
01A240:  0D 0A 0D 0A 0D 0A 55 6E 64 65 66 69 6E 65 64 20    ......Undefined 
01A250:  53 54 41 52 54 0D 0A 0D 0A 09 41 6C 6C 20 70 72    START.....All pr
01A260:  6F 67 72 61 6D 73 20 6D 75 73 74 90 20 68 61 76    ograms must. hav
01A270:  65 90 20 61 90 20 70 72 6F 63 65 64 75 72 65 90    e. a. procedure.
01A280:  20 63 61 6C 6C 65 64 90 20 53 54 41 52 54 2E 90     called. START..
01A290:  20 54 68 65 20 70 72 6F 67 72 61 6D 20 0D 8A 73     The program ..s
01A2A0:  75 62 6D 69 74 74 65 64 20 64 69 64 20 6E 6F 74    ubmitted did not
01A2B0:  20 68 61 76 65 20 74 68 69 73 20 70 72 6F 63 65     have this proce
01A2C0:  64 75 72 65 2E 0D 0A 0D 0A 0D 0A 42 61 64 20 47    dure.......Bad G
01A2D0:  45 54 0D 0A 0D 0A 09 44 75 65 20 74 6F 20 74 68    ET.....Due to th
01A2E0:  65 20 6C 69 6D 69 74 61 74 69 6F 6E 73 20 6F 66    e limitations of
01A2F0:  20 41 4D 53 44 4F 53 90 20 6F 6E 6C 79 90 20 6F     AMSDOS. only. o
01A300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
01A310:  16 00 00 00 02 09 50 E5 16 00 C1 02 00 00 00 02    ......P.........
01A320:  16 00 C2 02 00 00 00 02 16 00 C3 02 00 00 00 02    ................
01A330:  16 00 C4 02 00 00 00 02 16 00 C5 02 00 00 00 02    ................
01A340:  16 00 C6 02 00 00 00 02 16 00 C7 02 00 00 00 02    ................
01A350:  16 00 C8 02 00 00 00 02 16 00 C9 02 00 00 00 02    ................
01A360:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A370:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A380:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A390:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A400:  6E 65 20 66 69 6C 65 20 63 61 6E 20 62 65 20 6F    ne file can be o
01A410:  70 65 6E 65 64 20 66 6F 72 20 0D 8A 69 6E 70 75    pened for ..inpu
01A420:  74 20 61 74 20 61 6E 79 90 20 6F 6E 65 90 20 74    t at any. one. t
01A430:  69 6D 65 2E 90 20 41 90 20 66 69 6C 65 90 20 77    ime.. A. file. w
01A440:  61 73 90 20 6F 70 65 6E 65 64 90 20 77 68 69 63    as. opened. whic
01A450:  68 90 20 63 6F 6E 74 61 69 6E 65 64 20 61 20 47    h. contained a G
01A460:  45 54 20 0D 8A 64 69 72 65 63 74 69 76 65 2E 20    ET ..directive. 
01A470:  57 69 6C 6C 20 61 6C 73 6F 20 6F 63 63 75 72 90    Will also occur.
01A480:  20 69 66 90 20 61 90 20 70 69 65 63 65 90 20 6F     if. a. piece. o
01A490:  66 20 73 74 6F 72 65 64 20 50 52 4F 54 45 58 54    f stored PROTEXT
01A4A0:  2F 4D 41 58 41 4D 20 74 65 78 74 20 0D 8A 61 74    /MAXAM text ..at
01A4B0:  74 65 6D 70 74 73 20 74 6F 20 47 45 54 20 69 74    tempts to GET it
01A4C0:  73 65 6C 66 2E 0D 0A 0D 0A 0D 0A 4E 6F 6E 2D 41    self.......Non-A
01A4D0:  53 43 49 49 20 66 69 6C 65 0D 0A 0D 0A 09 54 68    SCII file.....Th
01A4E0:  65 20 63 6F 6D 70 69 6C 65 72 20 77 61 73 20 69    e compiler was i
01A4F0:  6E 73 74 72 75 63 74 65 64 20 74 6F 20 6F 70 65    nstructed to ope
01A500:  6E 90 20 61 90 20 66 69 6C 65 20 62 75 74 20 74    n. a. file but t
01A510:  68 61 74 20 66 69 6C 65 20 64 69 64 20 6E 6F 74    hat file did not
01A520:  20 0D 8A 63 6F 6E 74 61 69 6E 20 41 53 43 49 49     ..contain ASCII
01A530:  20 74 65 78 74 90 20 77 68 69 63 68 90 20 69 73     text. which. is
01A540:  90 20 72 65 71 75 69 72 65 64 90 20 66 6F 72 90    . required. for.
01A550:  20 74 68 65 90 20 63 6F 6D 70 69 6C 65 72 2E 90     the. compiler..
01A560:  20 55 73 65 72 73 20 6F 66 20 0D 8A 43 50 43 20     Users of ..CPC 
01A570:  76 65 72 73 69 6F 6E 73 20 6F 66 20 50 52 4F 54    versions of PROT
01A580:  45 58 54 20 73 68 6F 75 6C 64 20 75 73 65 20 70    EXT should use p
01A590:  72 6F 67 72 61 6D 20 6D 6F 64 65 2C 20 77 68 69    rogram mode, whi
01A5A0:  63 68 20 77 69 6C 6C 20 73 61 76 65 20 74 68 65    ch will save the
01A5B0:  20 66 69 6C 65 20 0D 8A 69 6E 20 41 53 43 49 49     file ..in ASCII
01A5C0:  20 66 6F 72 6D 61 74 2E 0D 0A 0D 0A 0D 0A 46 69     format.......Fi
01A5D0:  6C 65 20 69 6E 74 61 63 74 0D 0A 0D 0A 09 54 68    le intact.....Th
01A5E0:  69 73 20 6F 63 63 75 72 73 20 6F 6E 20 43 50 2F    is occurs on CP/
01A5F0:  4D 20 76 65 72 73 69 6F 6E 73 20 77 68 65 6E 20    M versions when 
01A600:  74 68 65 20 64 65 73 74 69 6E 61 74 69 6F 6E 20    the destination 
01A610:  66 69 6C 65 20 65 78 69 73 74 65 64 20 62 75 74    file existed but
01A620:  20 0D 8A 74 68 65 20 75 73 65 72 20 74 79 70 65     ..the user type
01A630:  64 20 4E 20 77 68 65 6E 20 61 73 6B 65 64 20 69    d N when asked i
01A640:  66 20 74 68 65 20 66 69 6C 65 20 73 68 6F 75 6C    f the file shoul
01A650:  64 20 62 65 20 64 65 6C 65 74 65 64 2E 0D 0A 0D    d be deleted....
01A660:  0A 0D 0A 42 61 64 20 53 4F 55 52 43 45 20 6E 61    ...Bad SOURCE na
01A670:  6D 65 0D 0A 0D 0A 09 43 50 2F 4D 20 76 65 72 73    me.....CP/M vers
01A680:  69 6F 6E 73 20 63 68 65 63 6B 20 74 68 65 20 73    ions check the s
01A690:  6F 75 72 63 65 20 6E 61 6D 65 20 67 69 76 65 6E    ource name given
01A6A0:  2C 20 61 6E 64 20 69 66 20 69 74 20 69 73 20 69    , and if it is i
01A6B0:  6E 76 61 6C 69 64 20 69 6E 20 0D 8A 73 6F 6D 65    nvalid in ..some
01A6C0:  20 77 61 79 20 65 2E 67 2E 20 68 61 73 20 61 6E     way e.g. has an
01A6D0:  20 65 78 74 65 6E 73 69 6F 6E 20 6F 66 90 20 6D     extension of. m
01A6E0:  6F 72 65 20 74 68 61 6E 20 33 20 6C 65 74 74 65    ore than 3 lette
01A6F0:  72 73 20 74 68 65 6E 20 74 68 69 73 20 65 72 72    rs then this err
01A700:  6F 72 20 0D 8A 77 69 6C 6C 20 62 65 20 67 69 76    or ..will be giv
01A710:  65 6E 2E 0D 0A 0D 0A 0D 0A 42 61 64 20 44 45 53    en.......Bad DES
01A720:  54 49 4E 41 54 49 4F 4E 20 6E 61 6D 65 0D 0A 0D    TINATION name...
01A730:  0A 09 41 73 20 61 62 6F 76 65 2E 0D 0A 3E 70 61    ..As above...>pa
01A740:  0D 0A E2 28 69 69 29 20 53 79 6E 74 61 78 20 45    ...(ii) Syntax E
01A750:  72 72 6F 72 73 E2 0D 0A 0D 0A 09 50 68 61 73 65    rrors......Phase
01A760:  20 31 20 65 72 72 6F 72 73 20 61 72 65 20 61 6C     1 errors are al
01A770:  6C 20 73 79 6E 74 61 78 20 65 72 72 6F 72 73 20    l syntax errors 
01A780:  77 69 74 68 69 6E 20 74 68 65 20 70 72 6F 67 72    within the progr
01A790:  61 6D 2E 20 4F 66 74 65 6E 20 74 68 65 20 0D 8A    am. Often the ..
01A7A0:  63 61 75 73 65 20 77 69 6C 6C 20 62 65 20 61 20    cause will be a 
01A7B0:  6D 69 73 73 69 6E 67 20 24 29 20 6F 72 20 29 90    missing $) or ).
01A7C0:  20 77 68 69 63 68 20 77 69 6C 6C 20 70 72 6F 62     which will prob
01A7D0:  61 62 6C 79 20 63 61 75 73 65 20 77 68 61 74 20    ably cause what 
01A7E0:  6D 61 79 20 61 74 20 0D 8A 66 69 72 73 74 20 73    may at ..first s
01A7F0:  65 65 6D 90 74 6F 20 62 65 20 61 6E 20 6F 64 64    eem.to be an odd
01A800:  90 20 65 72 72 6F 72 90 20 6D 65 73 73 61 67 65    . error. message
01A810:  2E 20 53 79 6E 74 61 78 20 65 72 72 6F 72 73 20    . Syntax errors 
01A820:  61 72 65 20 72 65 70 6F 72 74 65 64 20 61 73 20    are reported as 
01A830:  0D 8A 6F 63 63 75 72 72 69 6E 67 20 6E 65 61 72    ..occurring near
01A840:  20 61 20 63 65 72 74 61 69 6E 20 6C 69 6E 65 2E     a certain line.
01A850:  90 20 54 68 69 73 90 20 69 73 90 20 74 68 65 20    . This. is. the 
01A860:  6C 69 6E 65 20 77 69 74 68 69 6E 20 61 20 70 61    line within a pa
01A870:  72 74 69 63 75 6C 61 72 20 0D 8A 66 69 6C 65 2E    rticular ..file.
01A880:  20 49 66 20 74 68 65 20 63 6F 6D 70 69 6C 65 72     If the compiler
01A890:  20 6C 69 73 74 69 6E 67 90 20 69 73 90 20 73 77     listing. is. sw
01A8A0:  69 74 63 68 65 64 90 20 6F 66 66 20 77 68 65 6E    itched. off when
01A8B0:  20 74 68 65 20 65 72 72 6F 72 20 6F 63 63 75 72     the error occur
01A8C0:  73 20 0D 8A 74 68 65 6E 20 61 20 62 75 66 66 65    s ..then a buffe
01A8D0:  72 2C 20 68 6F 6C 64 69 6E 67 20 74 68 65 20 6C    r, holding the l
01A8E0:  61 73 74 20 66 65 77 20 6C 69 6E 65 73 20 6F 66    ast few lines of
01A8F0:  20 74 65 78 74 20 72 65 61 64 20 66 72 6F 6D 20     text read from 
01A900:  74 68 65 20 73 6F 75 72 63 65 20 0D 8A 63 6F 64    the source ..cod
01A910:  65 2C 20 77 69 6C 6C 20 62 65 20 64 69 73 70 6C    e, will be displ
01A920:  61 79 65 64 2E 0D 0A 0D 0A 0D 0A 42 61 64 20 65    ayed.......Bad e
01A930:  78 70 72 65 73 73 69 6F 6E 0D 0A 0D 0A 09 54 68    xpression.....Th
01A940:  65 20 65 78 70 72 65 73 73 69 6F 6E 20 62 65 69    e expression bei
01A950:  6E 67 20 65 78 61 6D 69 6E 65 64 90 20 77 61 73    ng examined. was
01A960:  90 20 66 61 75 6C 74 79 90 20 69 6E 90 20 73 6F    . faulty. in. so
01A970:  6D 65 90 20 77 61 79 2E 20 4D 61 79 62 65 20 61    me. way. Maybe a
01A980:  20 0D 8A 63 6F 6D 6D 61 6E 64 20 6E 61 6D 65 20     ..command name 
01A990:  77 61 73 20 75 73 65 64 20 61 73 20 61 6E 20 69    was used as an i
01A9A0:  64 65 6E 74 69 66 69 65 72 2E 0D 0A 0D 0A 0D 0A    dentifier.......
01A9B0:  42 61 64 20 76 65 63 74 6F 72 20 64 65 66 69 6E    Bad vector defin
01A9C0:  69 74 69 6F 6E 0D 0A 0D 0A 09 41 20 76 65 63 74    ition.....A vect
01A9D0:  6F 72 20 64 65 66 69 6E 69 74 69 6F 6E 20 77 61    or definition wa
01A9E0:  73 20 62 61 64 90 20 69 6E 90 20 73 6F 6D 65 90    s bad. in. some.
01A9F0:  20 77 61 79 2E 20 49 6E 20 70 61 72 74 69 63 75     way. In particu
01AA00:  6C 61 72 20 6F 6E 6C 79 20 6F 6E 65 20 0D 8A 76    lar only one ..v
01AA10:  65 63 74 6F 72 20 6D 61 79 20 62 65 90 20 64 65    ector may be. de
01AA20:  63 6C 61 72 65 64 90 20 69 6E 90 20 61 6E 79 90    clared. in. any.
01AA30:  20 4C 45 54 90 20 63 6F 6D 6D 61 6E 64 90 20 28     LET. command. (
01AA40:  61 6C 74 68 6F 75 67 68 20 73 69 6D 75 6C 74 61    although simulta
01AA50:  6E 65 6F 75 73 20 0D 8A 64 65 66 69 6E 69 74 69    neous ..definiti
01AA60:  6F 6E 73 20 61 72 65 20 61 6C 6C 6F 77 65 64 29    ons are allowed)
01AA70:  2E 0D 0A 0D 0A 0D 0A 42 61 64 20 70 72 6F 63 65    .......Bad proce
01AA80:  64 75 72 65 20 64 65 66 69 6E 69 74 69 6F 6E 0D    dure definition.
01AA90:  0A 0D 0A 09 41 20 70 72 6F 63 65 64 75 72 65 20    ....A procedure 
01AAA0:  64 65 66 69 6E 69 74 69 6F 6E 20 77 61 73 20 62    definition was b
01AAB0:  61 64 6C 79 90 20 6D 61 64 65 2E 90 20 4D 61 79    adly. made.. May
01AAC0:  90 20 68 61 76 65 20 62 65 65 6E 20 73 6F 6D 65    . have been some
01AAD0:  20 6F 74 68 65 72 20 0D 8A 66 6F 72 6D 20 6F 66     other ..form of
01AAE0:  20 64 65 66 69 6E 69 74 69 6F 6E 20 77 68 69 63     definition whic
01AAF0:  68 20 77 65 6E 74 20 77 72 6F 6E 67 2E 0D 0A 0D    h went wrong....
01AB00:  0A 0D 0A 42 61 64 20 46 4F 52 20 6C 6F 6F 70 0D    ...Bad FOR loop.
01AB10:  0A 0D 0A 09 54 68 65 20 46 4F 52 20 6C 6F 6F 70    ....The FOR loop
01AB20:  20 77 61 73 20 62 61 64 6C 79 20 66 6F 72 6D 65     was badly forme
01AB30:  64 20 69 6E 20 73 6F 6D 65 20 77 61 79 2E 0D 0A    d in some way...
01AB40:  0D 0A 0D 0A 6E 65 65 64 20 3A 20 6F 72 20 3D 20    ....need : or = 
01AB50:  69 6E 20 63 6F 6E 73 74 61 6E 74 20 64 65 66 69    in constant defi
01AB60:  6E 69 74 69 6F 6E 0D 0A 0D 0A 09 43 6F 6E 73 74    nition.....Const
01AB70:  61 6E 74 2C 20 47 6C 6F 62 61 6C 20 61 6E 64 90    ant, Global and.
01AB80:  20 53 74 61 74 69 63 90 20 64 65 66 69 6E 69 74     Static. definit
01AB90:  69 6F 6E 73 90 20 72 65 71 75 69 72 65 90 20 62    ions. require. b
01ABA0:  6F 74 68 90 20 3A 90 20 61 6E 64 20 3D 20 0D 8A    oth. :. and = ..
01ABB0:  62 65 74 77 65 65 6E 20 74 68 65 20 69 64 65 6E    between the iden
01ABC0:  74 69 66 69 65 72 20 61 6E 64 20 74 68 65 90 20    tifier and the. 
01ABD0:  63 6F 6E 73 74 61 6E 74 90 20 65 78 70 72 65 73    constant. expres
01ABE0:  73 69 6F 6E 2E 20 4F 6E 65 20 6F 72 20 74 68 65    sion. One or the
01ABF0:  20 6F 74 68 65 72 20 0D 8A 69 73 20 6D 69 73 73     other ..is miss
01AC00:  69 6E 67 0D 0A 0D 0A 0D 0A 4D 69 73 73 69 6E 67    ing......Missing
01AC10:  20 24 29 0D 0A 0D 0A 09 41 20 24 29 20 77 61 73     $).....A $) was
01AC20:  20 65 78 70 65 63 74 65 64 20 62 75 74 20 6E 6F     expected but no
01AC30:  74 90 20 66 6F 75 6E 64 2E 90 20 43 68 65 63 6B    t. found.. Check
01AC40:  20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 6F     the number of o
01AC50:  70 65 6E 69 6E 67 20 61 6E 64 20 0D 8A 63 6C 6F    pening and ..clo
01AC60:  73 69 6E 67 20 73 65 63 74 69 6F 6E 20 62 72 61    sing section bra
01AC70:  63 6B 65 74 73 20 69 6E 20 74 68 65 20 70 72 6F    ckets in the pro
01AC80:  67 72 61 6D 2E 0D 0A 3E 70 61 0D 0A 4D 69 73 73    gram...>pa..Miss
01AC90:  69 6E 67 20 24 28 0D 0A 0D 0A 09 41 20 63 6F 6D    ing $(.....A com
01ACA0:  70 6F 75 6E 64 20 73 74 61 74 65 6D 65 6E 74 20    pound statement 
01ACB0:  77 61 73 20 6E 65 65 64 65 64 20 62 75 74 90 20    was needed but. 
01ACC0:  74 68 65 20 6F 70 65 6E 69 6E 67 20 24 28 20 77    the opening $( w
01ACD0:  61 73 20 6E 6F 74 20 66 6F 75 6E 64 2E 20 0D 8A    as not found. ..
01ACE0:  49 6E 20 70 61 72 74 69 63 75 6C 61 72 20 61 6C    In particular al
01ACF0:  6C 20 53 57 49 54 43 48 4F 4E 20 73 74 61 74 65    l SWITCHON state
01AD00:  6D 65 6E 74 73 20 6D 75 73 74 20 62 65 20 63 6F    ments must be co
01AD10:  6D 70 6F 75 6E 64 2E 0D 0A 0D 0A 0D 0A 4D 69 73    mpound.......Mis
01AD20:  73 69 6E 67 20 29 0D 0A 0D 0A 09 41 20 63 6C 6F    sing ).....A clo
01AD30:  73 69 6E 67 20 62 72 61 63 6B 65 74 20 69 6E 90    sing bracket in.
01AD40:  20 61 6E 90 20 65 78 70 72 65 73 73 69 6F 6E 90     an. expression.
01AD50:  20 6F 72 20 70 72 6F 63 65 64 75 72 65 20 63 61     or procedure ca
01AD60:  6C 6C 2F 64 65 66 69 6E 69 74 69 6F 6E 20 0D 8A    ll/definition ..
01AD70:  77 61 73 20 6D 69 73 73 69 6E 67 2E 0D 0A 0D 0A    was missing.....
01AD80:  0D 0A 53 65 63 74 69 6F 6E 20 74 61 67 20 6D 69    ..Section tag mi
01AD90:  73 6D 61 74 63 68 0D 0A 0D 0A 09 41 20 73 65 63    smatch.....A sec
01ADA0:  74 69 6F 6E 20 62 72 61 63 6B 65 74 20 77 61 73    tion bracket was
01ADB0:  20 74 61 67 67 65 64 20 62 75 74 90 20 74 68 65     tagged but. the
01ADC0:  90 20 74 61 67 20 64 69 64 20 6E 6F 74 20 68 61    . tag did not ha
01ADD0:  76 65 20 61 20 6D 61 74 63 68 69 6E 67 20 0D 8A    ve a matching ..
01ADE0:  6F 70 65 6E 69 6E 67 20 73 65 63 74 69 6F 6E 20    opening section 
01ADF0:  62 72 61 63 6B 65 74 2E 20 4D 61 79 20 62 65 20    bracket. May be 
01AE00:  63 61 75 73 65 64 90 20 62 79 90 20 6F 6D 69 74    caused. by. omit
01AE10:  74 69 6E 67 20 74 68 65 20 73 70 61 63 65 20 61    ting the space a
01AE20:  66 74 65 72 20 61 20 0D 8A 73 65 63 74 69 6F 6E    fter a ..section
01AE30:  20 62 72 61 63 6B 65 74 2E 0D 0A 0D 0A 0D 0A 45     bracket.......E
01AE40:  78 70 65 63 74 69 6E 67 20 63 6F 6D 6D 61 6E 64    xpecting command
01AE50:  0D 0A 0D 0A 09 41 20 63 6F 6D 6D 61 6E 64 20 77    .....A command w
01AE60:  61 73 20 65 78 70 65 63 74 65 64 20 62 75 74 20    as expected but 
01AE70:  6F 6E 65 90 20 77 61 73 90 20 6E 6F 74 20 66 6F    one. was. not fo
01AE80:  75 6E 64 2E 20 54 68 69 73 20 63 61 6E 20 62 65    und. This can be
01AE90:  20 63 61 75 73 65 64 20 0D 8A 62 79 2C 20 66 6F     caused ..by, fo
01AEA0:  72 20 65 78 61 6D 70 6C 65 2C 20 6F 6D 69 74 74    r example, omitt
01AEB0:  69 6E 67 20 74 68 65 20 63 6F 6C 6F 6E 20 69 6E    ing the colon in
01AEC0:  90 20 61 6E 20 61 73 73 69 67 6E 6D 65 6E 74 20    . an assignment 
01AED0:  63 6F 6D 6D 61 6E 64 2C 20 6F 72 20 62 79 20 61    command, or by a
01AEE0:  20 0D 8A 64 65 63 6C 61 72 61 74 69 6F 6E 20 61     ..declaration a
01AEF0:  70 70 65 61 72 69 6E 67 20 61 66 74 65 72 20 61    ppearing after a
01AF00:  20 63 6F 6D 6D 61 6E 64 2E 0D 0A 0D 0A 0D 0A 45     command.......E
01AF10:  78 70 65 63 74 69 6E 67 20 6E 75 6D 62 65 72 0D    xpecting number.
01AF20:  0A 0D 0A 09 41 20 6E 75 6D 62 65 72 20 77 61 73    ....A number was
01AF30:  20 65 78 70 65 63 74 65 64 20 62 75 74 20 6E 6F     expected but no
01AF40:  74 20 66 6F 75 6E 64 2E 20 55 73 75 61 6C 6C 79    t found. Usually
01AF50:  20 66 6F 6C 6C 6F 77 69 6E 67 20 61 20 23 2E 0D     following a #..
01AF60:  0A 0D 0A 0D 0A 45 78 70 65 63 74 69 6E 67 20 2C    .....Expecting ,
01AF70:  0D 0A 0D 0A 09 54 68 65 20 63 6F 6D 70 69 6C 65    .....The compile
01AF80:  72 20 77 61 73 20 65 78 70 65 63 74 69 6E 67 90    r was expecting.
01AF90:  20 61 90 20 63 6F 6D 6D 61 90 20 28 2C 29 90 20     a. comma. (,). 
01AFA0:  62 75 74 90 20 64 69 64 90 20 6E 6F 74 20 66 69    but. did. not fi
01AFB0:  6E 64 20 6F 6E 65 2E 20 0D 8A 4F 63 63 75 72 73    nd one. ..Occurs
01AFC0:  20 69 6E 20 61 20 63 6F 6E 64 69 74 69 6F 6E 61     in a conditiona
01AFD0:  6C 20 65 78 70 72 65 73 73 69 6F 6E 2E 0D 0A 0D    l expression....
01AFE0:  0A 0D 0A 45 4C 53 45 20 65 78 70 65 63 74 65 64    ...ELSE expected
01AFF0:  0D 0A 0D 0A 09 54 68 65 20 45 4C 53 45 20 70 61    .....The ELSE pa
01B000:  72 74 20 69 6E 20 61 90 20 54 45 53 54 90 20 73    rt in a. TEST. s
01B010:  74 61 74 65 6D 65 6E 74 90 20 69 73 90 20 6E 6F    tatement. is. no
01B020:  74 90 20 6F 70 74 69 6F 6E 61 6C 20 61 6E 64 20    t. optional and 
01B030:  77 61 73 20 6E 6F 74 20 0D 8A 70 72 65 73 65 6E    was not ..presen
01B040:  74 20 69 6E 20 74 68 69 73 20 63 61 73 65 2E 0D    t in this case..
01B050:  0A 0D 0A 0D 0A 49 4E 54 4F 20 65 78 70 65 63 74    .....INTO expect
01B060:  65 64 0D 0A 0D 0A 09 54 68 65 20 63 6F 6E 74 72    ed.....The contr
01B070:  6F 6C 20 65 78 70 72 65 73 73 69 6F 6E 20 6F 66    ol expression of
01B080:  20 61 90 20 53 57 54 49 43 48 4F 4E 90 20 63 6F     a. SWTICHON. co
01B090:  6D 6D 61 6E 64 20 6D 75 73 74 20 62 65 20 66 6F    mmand must be fo
01B0A0:  6C 6C 6F 77 65 64 20 62 79 20 0D 8A 74 68 65 20    llowed by ..the 
01B0B0:  6B 65 79 77 6F 72 64 20 49 4E 54 4F 2E 20 49 6E    keyword INTO. In
01B0C0:  20 74 68 69 73 20 63 61 73 65 20 69 74 20 77 61     this case it wa
01B0D0:  73 20 6E 6F 74 2E 0D 8A 3E 70 61 0D 0A 3A 20 65    s not...>pa..: e
01B0E0:  78 70 65 63 74 65 64 0D 0A 0D 0A 09 41 20 63 6F    xpected.....A co
01B0F0:  6C 6F 6E 20 69 73 20 65 78 70 65 63 74 65 64 20    lon is expected 
01B100:  61 66 74 65 72 20 61 20 63 61 73 65 20 6C 61 62    after a case lab
01B110:  65 6C 20 6F 72 20 44 45 46 41 55 4C 54 20 62 75    el or DEFAULT bu
01B120:  74 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 20 0D    t the compiler .
01B130:  8A 64 69 64 20 6E 6F 74 20 66 69 6E 64 20 6F 6E    .did not find on
01B140:  65 2E 0D 0A 0D 0A 0D 0A 45 78 70 65 63 74 69 6E    e.......Expectin
01B150:  67 20 69 64 65 6E 74 69 66 69 65 72 0D 0A 0D 0A    g identifier....
01B160:  09 54 68 65 20 63 6F 6D 70 69 6C 65 72 20 77 61    .The compiler wa
01B170:  73 20 65 78 70 65 63 74 69 6E 67 20 61 6E 90 20    s expecting an. 
01B180:  69 64 65 6E 74 69 66 69 65 72 90 20 65 2E 67 2E    identifier. e.g.
01B190:  90 20 61 66 74 65 72 20 4C 45 54 20 62 75 74 20    . after LET but 
01B1A0:  64 69 64 20 0D 8A 6E 6F 74 20 66 69 6E 64 20 6F    did ..not find o
01B1B0:  6E 65 2E 0D 0A 0D 0A 0D 0A 53 74 72 69 6E 67 20    ne.......String 
01B1C0:  74 6F 6F 20 6C 6F 6E 67 0D 0A 0D 0A 09 42 43 50    too long.....BCP
01B1D0:  4C 20 63 6F 6E 73 74 61 6E 74 20 73 74 72 69 6E    L constant strin
01B1E0:  67 73 20 63 61 6E 20 6F 6E 6C 79 20 62 65 20 32    gs can only be 2
01B1F0:  35 35 20 63 68 61 72 61 63 74 65 72 73 20 6C 6F    55 characters lo
01B200:  6E 67 2E 0D 0A 0D 0A 0D 0A 42 61 64 20 63 68 61    ng.......Bad cha
01B210:  72 61 63 74 65 72 0D 0A 0D 0A 09 54 68 65 20 63    racter.....The c
01B220:  68 61 72 61 63 74 65 72 20 72 65 61 64 20 77 61    haracter read wa
01B230:  73 90 20 69 6C 6C 65 67 61 6C 90 20 69 6E 90 20    s. illegal. in. 
01B240:  74 68 65 90 20 70 72 65 73 65 6E 74 20 63 6F 6E    the. present con
01B250:  74 65 78 74 2E 20 65 2E 67 2E 20 69 74 20 0D 8A    text. e.g. it ..
01B260:  63 6F 75 6C 64 20 68 61 76 65 20 62 65 65 6E 20    could have been 
01B270:  61 20 7B 20 69 6E 73 74 65 61 64 20 6F 66 20 2F    a { instead of /
01B280:  2A 0D 0A 0D 0A 0D 0A 42 61 64 20 63 68 61 72 61    *......Bad chara
01B290:  63 74 65 72 20 63 6F 6E 73 74 61 6E 74 0D 0A 0D    cter constant...
01B2A0:  0A 09 41 20 63 68 61 72 61 63 74 65 72 90 20 63    ..A character. c
01B2B0:  6F 6E 73 74 61 6E 74 90 20 77 61 73 90 20 62 61    onstant. was. ba
01B2C0:  64 6C 79 90 20 66 6F 72 6D 65 64 2C 90 20 75 73    dly. formed,. us
01B2D0:  75 61 6C 6C 79 90 20 63 61 75 73 65 64 90 20 62    ually. caused. b
01B2E0:  79 90 20 61 20 0D 8A 63 61 72 72 69 61 67 65 20    y. a ..carriage 
01B2F0:  72 65 74 75 72 6E 20 66 6F 6C 6C 6F 77 69 6E 67    return following
01B300:  20 61 6E 20 61 73 74 65 72 69 73 6B 2E 0D 0A 0D     an asterisk....
01B310:  0A 0D 0A 42 61 64 20 6F 70 74 69 6F 6E 20 6C 69    ...Bad option li
01B320:  6E 65 0D 0A 0D 0A 09 54 68 65 20 6F 70 74 69 6F    ne.....The optio
01B330:  6E 73 20 69 6E 20 61 6E 20 6F 70 74 69 6F 6E 20    ns in an option 
01B340:  63 6F 6D 6D 61 6E 64 90 20 6D 75 73 74 90 20 62    command. must. b
01B350:  65 20 73 65 70 61 72 61 74 65 64 20 62 79 20 63    e separated by c
01B360:  6F 6D 6D 61 73 20 61 6E 64 20 0D 8A 6D 75 73 74    ommas and ..must
01B370:  20 65 6E 64 20 77 69 74 68 20 61 20 73 65 6D 69     end with a semi
01B380:  2D 63 6F 6C 6F 6E 20 6F 72 20 61 74 20 74 68 65    -colon or at the
01B390:  20 65 6E 64 20 6F 66 20 74 68 65 20 6C 69 6E 65     end of the line
01B3A0:  2E 0D 0A 0D 0A 0D 0A 3F 20 69 73 20 6F 6E 6C 79    .......? is only
01B3B0:  20 61 6C 6C 6F 77 65 64 20 69 6E 20 64 65 66 69     allowed in defi
01B3C0:  6E 69 74 69 6F 6E 73 0D 0A 0D 0A 09 53 65 6C 66    nitions.....Self
01B3D0:  2D 65 78 70 6C 61 6E 61 74 6F 72 79 2E 90 20 54    -explanatory.. T
01B3E0:  68 65 90 20 6F 6E 6C 79 90 20 75 6E 64 65 66 69    he. only. undefi
01B3F0:  6E 65 64 90 20 76 61 6C 75 65 73 90 20 61 6C 6C    ned. values. all
01B400:  6F 77 65 64 90 20 61 72 65 90 20 74 68 65 20 0D    owed. are. the .
01B410:  8A 69 6E 69 74 69 61 6C 69 73 61 74 69 6F 6E 20    .initialisation 
01B420:  76 61 6C 75 65 73 20 6F 66 20 73 69 6D 70 6C 65    values of simple
01B430:  20 76 61 72 69 61 62 6C 65 73 20 69 6E 20 61 20     variables in a 
01B440:  4C 45 54 20 63 6F 6D 6D 61 6E 64 2E 20 3F 20 61    LET command. ? a
01B450:  6E 79 77 68 65 72 65 20 0D 8A 65 6C 73 65 20 69    nywhere ..else i
01B460:  73 20 69 6C 6C 65 67 61 6C 2E 0D 0A 3E 70 61 0D    s illegal...>pa.
01B470:  0A E2 28 69 69 69 29 20 53 65 6D 61 6E 74 69 63    ..(iii) Semantic
01B480:  20 45 72 72 6F 72 73 E2 0D 0A 0D 0A 0D 0A 09 54     Errors........T
01B490:  68 65 20 72 65 73 74 20 6F 66 20 74 68 65 90 20    he rest of the. 
01B4A0:  65 72 72 6F 72 73 90 20 61 72 65 90 20 73 65 6D    errors. are. sem
01B4B0:  61 6E 74 69 63 90 20 65 72 72 6F 72 73 90 20 77    antic. errors. w
01B4C0:  68 69 63 68 20 6F 63 63 75 72 20 64 75 72 69 6E    hich occur durin
01B4D0:  67 20 0D 8A 70 68 61 73 65 20 74 77 6F 20 6F 66    g ..phase two of
01B4E0:  20 74 68 65 20 63 6F 6D 70 69 6C 65 72 2E 90 20     the compiler.. 
01B4F0:  54 68 65 73 65 90 20 61 72 65 90 20 75 73 75 61    These. are. usua
01B500:  6C 6C 79 90 20 64 75 65 90 20 74 6F 20 74 68 65    lly. due. to the
01B510:  20 75 73 65 20 6F 66 20 61 6E 20 0D 8A 69 6E 76     use of an ..inv
01B520:  61 6C 69 64 20 69 64 65 6E 74 69 66 69 65 72 20    alid identifier 
01B530:  6E 61 6D 65 20 6F 72 20 61 20 62 61 64 6C 79 20    name or a badly 
01B540:  63 6F 6E 73 74 72 75 63 74 65 64 20 6C 6F 6F 70    constructed loop
01B550:  2E 0D 0A 0D 0A 0D 0A 45 78 70 72 65 73 73 69 6F    .......Expressio
01B560:  6E 2F 69 64 20 6D 69 73 6D 61 74 63 68 0D 0A 0D    n/id mismatch...
01B570:  0A 09 54 68 65 20 6E 75 6D 62 65 72 20 6F 66 20    ..The number of 
01B580:  6C 65 66 74 20 61 6E 64 20 72 69 67 68 74 90 20    left and right. 
01B590:  68 61 6E 64 90 20 73 69 64 65 73 20 69 6E 20 61    hand. sides in a
01B5A0:  20 6D 75 6C 74 69 70 6C 65 20 61 73 73 69 67 6E     multiple assign
01B5B0:  6D 65 6E 74 20 0D 8A 6F 72 20 64 65 63 6C 61 72    ment ..or declar
01B5C0:  61 74 69 6F 6E 20 77 61 73 20 6E 6F 74 20 65 71    ation was not eq
01B5D0:  75 61 6C 2E 0D 0A 0D 0A 0D 0A 49 6E 76 61 6C 69    ual.......Invali
01B5E0:  64 20 61 73 73 69 67 6E 6D 65 6E 74 0D 0A 0D 0A    d assignment....
01B5F0:  09 59 6F 75 20 68 61 76 65 20 61 74 74 65 6D 70    .You have attemp
01B600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
01B610:  17 00 00 00 02 09 50 E5 17 00 C1 02 00 00 00 02    ......P.........
01B620:  17 00 C2 02 00 00 00 02 17 00 C3 02 00 00 00 02    ................
01B630:  17 00 C4 02 00 00 00 02 17 00 C5 02 00 00 00 02    ................
01B640:  17 00 C6 02 00 00 00 02 17 00 C7 02 00 00 00 02    ................
01B650:  17 00 C8 02 00 00 00 02 17 00 C9 02 00 00 00 02    ................
01B660:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B670:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B680:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B690:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B6A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B6B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B6C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B6D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B6E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B6F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B700:  74 65 64 20 74 6F 20 61 73 73 69 67 6E 20 74 6F    ted to assign to
01B710:  20 73 6F 6D 65 74 68 69 6E 67 20 77 68 69 63 68     something which
01B720:  20 69 73 20 6E 6F 74 20 61 73 73 69 67 6E 61 62     is not assignab
01B730:  6C 65 2E 20 0D 8A 65 2E 67 2E 20 61 20 63 6F 6E    le. ..e.g. a con
01B740:  73 74 61 6E 74 20 6F 72 20 70 72 6F 63 65 64 75    stant or procedu
01B750:  72 65 2E 0D 0A 0D 0A 0D 0A 52 45 53 55 4C 54 49    re.......RESULTI
01B760:  53 20 6F 75 74 73 69 64 65 20 61 20 56 41 4C 4F    S outside a VALO
01B770:  46 0D 0A 0D 0A 09 41 20 52 45 53 55 4C 54 49 53    F.....A RESULTIS
01B780:  20 63 6F 6D 6D 61 6E 64 20 77 61 73 20 66 6F 75     command was fou
01B790:  6E 64 20 6F 75 74 73 69 64 65 20 61 20 56 41 4C    nd outside a VAL
01B7A0:  4F 46 20 62 6C 6F 63 6B 2E 0D 0A 0D 0A 0D 0A 4C    OF block.......L
01B7B0:  4F 4F 50 20 66 6F 75 6E 64 20 6F 75 74 73 69 64    OOP found outsid
01B7C0:  65 20 6C 6F 6F 70 0D 0A 0D 0A 09 41 20 4C 4F 4F    e loop.....A LOO
01B7D0:  50 20 63 6F 6D 6D 61 6E 64 20 69 73 20 6F 6E 6C    P command is onl
01B7E0:  79 20 6C 65 67 61 6C 20 69 6E 73 69 64 65 20 6F    y legal inside o
01B7F0:  6E 65 20 6F 66 20 74 68 65 20 6C 6F 6F 70 69 6E    ne of the loopin
01B800:  67 20 63 6F 6E 73 74 72 75 63 74 73 2E 0D 0A 0D    g constructs....
01B810:  0A 0D 0A 42 52 45 41 4B 20 66 6F 75 6E 64 20 6F    ...BREAK found o
01B820:  75 74 73 69 64 65 20 6C 6F 6F 70 0D 0A 0D 0A 09    utside loop.....
01B830:  41 20 42 52 45 41 4B 20 63 6F 6D 6D 61 6E 64 20    A BREAK command 
01B840:  69 73 20 6F 6E 6C 79 20 6C 65 67 61 6C 20 69 6E    is only legal in
01B850:  73 69 64 65 20 6F 6E 65 20 6F 66 20 74 68 65 20    side one of the 
01B860:  6C 6F 6F 70 69 6E 67 20 63 6F 6E 73 74 72 75 63    looping construc
01B870:  74 73 2E 0D 0A 0D 0A 0D 0A 52 45 54 55 52 4E 20    ts.......RETURN 
01B880:  66 6F 75 6E 64 20 6F 75 74 73 69 64 65 20 50 52    found outside PR
01B890:  4F 43 2F 46 55 4E 43 0D 0A 0D 0A 09 41 20 52 45    OC/FUNC.....A RE
01B8A0:  54 55 52 4E 20 63 6F 6D 6D 61 6E 64 20 69 73 90    TURN command is.
01B8B0:  20 6F 6E 6C 79 90 20 6C 65 67 61 6C 90 20 77 69     only. legal. wi
01B8C0:  74 68 69 6E 90 20 61 90 20 70 72 6F 63 65 64 75    thin. a. procedu
01B8D0:  72 65 20 6F 72 20 66 75 6E 63 74 69 6F 6E 20 0D    re or function .
01B8E0:  8A 62 6F 64 79 2E 0D 0A 0D 0A 0D 0A 45 4E 44 43    .body.......ENDC
01B8F0:  41 53 45 20 6F 75 74 73 69 64 65 20 61 20 53 57    ASE outside a SW
01B900:  49 54 43 48 4F 4E 0D 0A 0D 0A 09 41 6E 20 45 4E    ITCHON.....An EN
01B910:  44 43 41 53 45 20 73 74 61 74 65 6D 65 6E 74 20    DCASE statement 
01B920:  77 61 73 90 20 66 6F 75 6E 64 90 20 6F 75 74 73    was. found. outs
01B930:  69 64 65 90 20 74 68 65 90 20 62 6F 64 79 90 20    ide. the. body. 
01B940:  6F 66 20 61 20 53 57 49 54 43 48 4F 4E 20 0D 8A    of a SWITCHON ..
01B950:  63 6F 6D 6D 61 6E 64 2E 0D 0A 0D 0A 0D 0A 56 41    command.......VA
01B960:  4C 4F 46 20 6D 75 73 74 20 63 6F 6E 74 61 69 6E    LOF must contain
01B970:  20 52 45 53 55 4C 54 49 53 0D 0A 0D 0A 09 41 20     RESULTIS.....A 
01B980:  56 41 4C 4F 46 20 65 78 70 72 65 73 73 69 6F 6E    VALOF expression
01B990:  20 6D 75 73 74 20 63 6F 6E 74 61 69 6E 20 61 74     must contain at
01B9A0:  20 6C 65 61 73 74 20 6F 6E 65 20 52 45 53 55 4C     least one RESUL
01B9B0:  54 49 53 20 63 6F 6D 6D 61 6E 64 0D 0A 3E 70 61    TIS command..>pa
01B9C0:  0D 0A 49 6E 76 61 6C 69 64 20 61 70 70 6C 69 63    ..Invalid applic
01B9D0:  61 74 69 6F 6E 20 6F 66 20 4C 56 0D 0A 0D 0A 09    ation of LV.....
01B9E0:  54 68 65 20 4C 56 20 6F 72 20 40 20 6F 70 65 72    The LV or @ oper
01B9F0:  61 74 6F 72 20 77 61 73 90 20 75 73 65 64 90 20    ator was. used. 
01BA00:  69 6E 90 20 61 6E 20 69 6E 63 6F 72 72 65 63 74    in. an incorrect
01BA10:  20 63 6F 6E 74 65 78 74 20 69 2E 65 2E 20 6F 6E     context i.e. on
01BA20:  20 61 20 0D 8A 63 6F 6E 73 74 61 6E 74 2E 20 4C     a ..constant. L
01BA30:  56 20 69 73 20 27 6C 65 66 74 20 76 61 6C 75 65    V is 'left value
01BA40:  27 20 61 6E 64 20 6D 65 61 6E 73 20 74 68 65 20    ' and means the 
01BA50:  65 76 61 6C 75 61 74 69 6F 6E 20 6F 66 20 61 6E    evaluation of an
01BA60:  20 65 78 70 72 65 73 73 69 6F 6E 20 0D 8A 74 6F     expression ..to
01BA70:  20 6F 62 74 61 69 6E 20 61 6E 20 61 64 64 72 65     obtain an addre
01BA80:  73 73 2E 0D 0A 0D 0A 0D 0A 44 79 6E 61 6D 69 63    ss.......Dynamic
01BA90:  20 66 72 65 65 20 76 61 72 69 61 62 6C 65 20 75     free variable u
01BAA0:  73 65 64 0D 0A 0D 0A 09 41 20 76 61 72 69 61 62    sed.....A variab
01BAB0:  6C 65 20 77 61 73 90 20 75 73 65 64 90 20 69 6E    le was. used. in
01BAC0:  90 20 61 6E 90 20 65 6D 62 65 64 64 65 64 90 20    . an. embedded. 
01BAD0:  70 72 6F 63 65 64 75 72 65 90 20 77 68 69 63 68    procedure. which
01BAE0:  90 20 68 61 64 20 62 65 65 6E 20 0D 8A 64 65 63    . had been ..dec
01BAF0:  6C 61 72 65 64 20 69 6E 20 61 6E 20 6F 75 74 65    lared in an oute
01BB00:  72 20 70 72 6F 63 65 64 75 72 65 2E 0D 0A 0D 0A    r procedure.....
01BB10:  0D 0A 43 41 53 45 2F 44 45 46 41 55 4C 54 20 66    ..CASE/DEFAULT f
01BB20:  6F 75 6E 64 20 6F 75 74 73 69 64 65 20 53 57 49    ound outside SWI
01BB30:  54 43 48 4F 4E 0D 0A 0D 0A 09 43 41 53 45 20 6F    TCHON.....CASE o
01BB40:  72 90 20 44 45 46 41 55 4C 54 90 20 73 74 61 74    r. DEFAULT. stat
01BB50:  65 6D 65 6E 74 73 90 20 61 72 65 90 20 6F 6E 6C    ements. are. onl
01BB60:  79 90 20 76 61 6C 69 64 90 20 69 6E 73 69 64 65    y. valid. inside
01BB70:  90 20 61 20 53 57 49 54 43 48 4F 4E 20 0D 8A 73    . a SWITCHON ..s
01BB80:  74 61 74 65 6D 65 6E 74 2E 0D 0A 0D 0A 0D 0A 55    tatement.......U
01BB90:  6E 64 65 66 69 6E 65 64 20 69 64 65 6E 74 69 66    ndefined identif
01BBA0:  69 65 72 0D 0A 0D 0A 09 41 20 76 61 72 69 61 62    ier.....A variab
01BBB0:  6C 65 20 77 61 73 20 75 73 65 64 20 77 68 69 63    le was used whic
01BBC0:  68 20 68 61 64 20 6E 6F 74 20 62 65 65 6E 20 64    h had not been d
01BBD0:  65 66 69 6E 65 64 20 6F 72 20 77 61 73 20 6E 6F    efined or was no
01BBE0:  74 20 69 6E 20 73 63 6F 70 65 20 0D 8A 77 68 65    t in scope ..whe
01BBF0:  6E 20 69 74 20 77 61 73 20 75 73 65 64 2E 0D 0A    n it was used...
01BC00:  0D 0A 0D 0A 4C 61 62 65 6C 73 20 6E 65 65 64 20    ....Labels need 
01BC10:  61 20 67 6C 6F 62 61 6C 0D 0A 0D 0A 09 41 20 6C    a global.....A l
01BC20:  61 62 65 6C 20 77 61 73 20 64 65 66 69 6E 65 64    abel was defined
01BC30:  20 77 68 65 6E 20 69 6E 20 74 68 65 90 20 73 63     when in the. sc
01BC40:  6F 70 65 90 20 6F 66 20 61 20 6C 6F 63 61 6C 20    ope. of a local 
01BC50:  76 61 72 69 61 62 6C 65 20 6F 66 20 74 68 65 20    variable of the 
01BC60:  0D 8A 73 61 6D 65 20 6E 61 6D 65 2E 20 41 73 20    ..same name. As 
01BC70:  74 68 65 20 76 61 72 69 61 62 6C 65 90 20 77 69    the variable. wi
01BC80:  6C 6C 90 20 62 65 90 20 69 6E 69 74 69 61 6C 69    ll. be. initiali
01BC90:  73 65 64 90 20 74 6F 20 74 68 65 20 76 61 6C 75    sed. to the valu
01BCA0:  65 20 6F 66 20 74 68 65 20 0D 8A 6C 61 62 65 6C    e of the ..label
01BCB0:  2C 20 69 74 20 6D 75 73 74 20 62 65 20 61 20 47    , it must be a G
01BCC0:  4C 4F 42 41 4C 20 6F 72 20 53 54 41 54 49 43 2E    LOBAL or STATIC.
01BCD0:  90 20 49 66 20 6E 6F 20 76 61 72 69 61 62 6C 65    . If no variable
01BCE0:  20 6F 66 20 74 68 65 20 73 61 6D 65 20 6E 61 6D     of the same nam
01BCF0:  65 20 0D 8A 69 73 20 69 6E 20 73 63 6F 70 65 20    e ..is in scope 
01BD00:  74 68 65 6E 20 6F 6E 65 20 77 69 6C 6C 20 62 65    then one will be
01BD10:  20 63 72 65 61 74 65 64 2E 0D 0A 0D 0A 0D 0A 4E     created.......N
01BD20:  65 65 64 20 63 6F 6E 73 74 61 6E 74 20 65 78 70    eed constant exp
01BD30:  72 65 73 73 69 6F 6E 0D 0A 0D 0A 09 41 20 63 6F    ression.....A co
01BD40:  6E 73 74 61 6E 74 20 65 78 70 72 65 73 73 69 6F    nstant expressio
01BD50:  6E 90 20 77 61 73 90 20 72 65 71 75 69 72 65 64    n. was. required
01BD60:  90 20 62 75 74 90 20 6E 6F 74 90 20 66 6F 75 6E    . but. not. foun
01BD70:  64 2E 20 45 78 61 6D 70 6C 65 73 20 6F 66 20 0D    d. Examples of .
01BD80:  8A 63 6F 6E 73 74 61 6E 74 73 20 62 65 69 6E 67    .constants being
01BD90:  20 72 65 71 75 69 72 65 64 20 61 72 65 90 20 74     required are. t
01BDA0:  68 65 90 20 49 4E 4C 49 4E 45 90 20 73 74 61 74    he. INLINE. stat
01BDB0:  65 6D 65 6E 74 2C 20 64 65 63 6C 61 72 61 74 69    ement, declarati
01BDC0:  6F 6E 73 20 61 6E 64 20 0D 8A 43 41 53 45 20 6C    ons and ..CASE l
01BDD0:  61 62 65 6C 73 2E 0D 0A 0D 0A 0D 0A 28 69 76 29    abels.......(iv)
01BDE0:  20 49 6E 74 65 72 6E 61 6C 20 63 6F 6D 70 69 6C     Internal compil
01BDF0:  65 72 20 65 72 72 6F 72 73 0D 0A 20 20 20 20 20    er errors..     
01BE00:  20 20 20 0D 0A 09 54 68 65 72 65 20 69 73 20 61       ...There is a
01BE10:  20 66 6F 75 72 74 68 20 74 79 70 65 20 6F 66 90     fourth type of.
01BE20:  20 65 72 72 6F 72 90 20 62 75 74 90 20 79 6F 75     error. but. you
01BE30:  20 73 68 6F 75 6C 64 20 6E 65 76 65 72 20 73 65     should never se
01BE40:  65 20 74 68 65 73 65 2E 20 0D 8A 54 68 65 73 65    e these. ..These
01BE50:  20 61 72 65 20 69 6E 74 65 72 6E 61 6C 20 63 6F     are internal co
01BE60:  6D 70 69 6C 65 72 20 65 72 72 6F 72 73 90 20 61    mpiler errors. a
01BE70:  6E 64 90 20 69 6E 64 69 63 61 74 65 20 70 6F 73    nd. indicate pos
01BE80:  73 69 62 6C 65 20 62 75 67 73 20 69 6E 20 74 68    sible bugs in th
01BE90:  65 20 0D 8A 63 6F 6D 70 69 6C 65 72 2E 0D 0A 09    e ..compiler....
01BEA0:  50 6C 65 61 73 65 20 72 65 70 6F 72 74 20 61 6E    Please report an
01BEB0:  79 20 69 6E 63 69 64 65 6E 63 65 20 6F 66 20 6F    y incidence of o
01BEC0:  6E 65 20 6F 66 20 74 68 65 73 65 20 65 72 72 6F    ne of these erro
01BED0:  72 73 20 74 6F 20 41 72 6E 6F 72 2E 0D 0A 0D 0A    rs to Arnor.....
01BEE0:  20 20 20 20 20 20 20 20 45 72 72 6F 72 20 69 6E            Error in
01BEF0:  20 74 72 61 6E 73 6C 61 74 69 6F 6E 20 6E 6F 64     translation nod
01BF00:  65 0D 0A 20 20 20 20 20 20 20 20 55 6E 65 78 70    e..        Unexp
01BF10:  65 63 74 65 64 20 6E 6F 64 65 20 69 6E 20 65 78    ected node in ex
01BF20:  70 72 65 73 73 69 6F 6E 0D 0A 20 20 20 20 20 20    pression..      
01BF30:  20 20 44 65 63 6C 61 72 61 74 69 6F 6E 20 65 72      Declaration er
01BF40:  72 6F 72 0D 0A 1A 0D 0A 20 20 20 20 20 20 20 20    ror.....        
01BF50:  55 6E 65 78 70 65 63 74 65 64 20 6E 6F 64 65 20    Unexpected node 
01BF60:  69 6E 20 65 78 70 72 65 73 73 69 6F 6E 0D 0A 20    in expression.. 
01BF70:  20 20 20 20 20 20 20 44 65 63 6C 61 72 61 74 69           Declarati
01BF80:  8A 63 6F 6E 73 74 61 6E 74 73 20 62 65 69 6E 67    .constants being
01BF90:  20 72 65 71 75 69 72 65 64 20 61 72 65 90 20 74     required are. t
01BFA0:  68 65 90 20 49 4E 4C 49 4E 45 90 20 73 74 61 74    he. INLINE. stat
01BFB0:  65 6D 65 6E 74 2C 20 64 65 63 6C 61 72 61 74 69    ement, declarati
01BFC0:  6F 6E 73 20 61 6E 64 20 0D 8A 43 41 53 45 20 6C    ons and ..CASE l
01BFD0:  61 62 65 6C 73 2E 0D 0A 0D 0A 0D 0A 28 69 76 29    abels.......(iv)
01BFE0:  20 49 6E 74 65 72 6E 61 6C 20 63 6F 6D 70 69 6C     Internal compil
01BFF0:  65 72 20 65 72 72 6F 72 73 0D 0A 20 20 20 20 20    er errors..     
01C000:  20 20 20 0D 0A 09 54 68 65 72 65 20 69 73 20 61       ...There is a
01C010:  20 66 6F 75 72 74 68 20 74 79 70 65 20 6F 66 90     fourth type of.
01C020:  20 65 72 72 6F 72 90 20 62 75 74 90 20 79 6F 75     error. but. you
01C030:  20 73 68 6F 75 6C 64 20 6E 65 76 65 72 20 73 65     should never se
01C040:  65 20 74 68 65 73 65 2E 20 0D 8A 54 68 65 73 65    e these. ..These
01C050:  20 61 72 65 20 69 6E 74 65 72 6E 61 6C 20 63 6F     are internal co
01C060:  6D 70 69 6C 65 72 20 65 72 72 6F 72 73 90 20 61    mpiler errors. a
01C070:  6E 64 90 20 69 6E 64 69 63 61 74 65 20 70 6F 73    nd. indicate pos
01C080:  73 69 62 6C 65 20 62 75 67 73 20 69 6E 20 74 68    sible bugs in th
01C090:  65 20 0D 8A 63 6F 6D 70 69 6C 65 72 2E 0D 0A 09    e ..compiler....
01C0A0:  50 6C 65 61 73 65 20 72 65 70 6F 72 74 20 61 6E    Please report an
01C0B0:  79 20 69 6E 63 69 64 65 6E 63 65 20 6F 66 20 6F    y incidence of o
01C0C0:  6E 65 20 6F 66 20 74 68 65 73 65 20 65 72 72 6F    ne of these erro
01C0D0:  72 73 20 74 6F 20 41 72 6E 6F 72 2E 0D 0A 0D 0A    rs to Arnor.....
01C0E0:  20 20 20 20 20 20 20 20 45 72 72 6F 72 20 69 6E            Error in
01C0F0:  20 74 72 61 6E 73 6C 61 74 69 6F 6E 20 6E 6F 64     translation nod
01C100:  6F 70 74 69 6F 6E 20 62 2D 0D 0A 67 65 74 20 22    option b-..get "
01C110:  63 6C 69 62 68 64 72 22 0D 0A 0D 0A 2F 2A 20 41    clibhdr"..../* A
01C120:  20 73 69 6D 70 6C 65 20 66 75 6C 6C 20 73 63 72     simple full scr
01C130:  65 65 6E 20 65 64 69 74 6F 72 20 2A 2F 0D 0A 2F    een editor */../
01C140:  2A 20 43 50 2F 4D 20 76 65 72 73 69 6F 6E 20 66    * CP/M version f
01C150:  6F 72 20 43 50 2F 4D 20 32 2E 32 20 61 6E 64 20    or CP/M 2.2 and 
01C160:  43 50 2F 4D 20 50 6C 75 73 20 2A 2F 0D 0A 2F 2F    CP/M Plus */..//
01C170:  20 6D 6F 64 69 66 69 65 64 20 30 32 2F 31 32 2F     modified 02/12/
01C180:  31 39 38 36 0D 0A 0D 0A 4D 41 4E 49 46 45 53 54    1986....MANIFEST
01C190:  20 24 28 20 69 6E 73 20 3D 20 54 52 55 45 20 3B     $( ins = TRUE ;
01C1A0:  20 6F 76 65 72 20 3D 20 46 41 4C 53 45 20 3B 20     over = FALSE ; 
01C1B0:  63 75 72 73 6C 65 66 74 20 3D 20 23 78 46 32 20    cursleft = #xF2 
01C1C0:  3B 20 63 75 72 73 72 69 67 68 74 20 3D 20 23 78    ; cursright = #x
01C1D0:  46 33 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    F3..            
01C1E0:  63 75 72 73 75 70 20 3D 20 23 78 46 30 20 3B 20    cursup = #xF0 ; 
01C1F0:  63 75 72 73 64 6F 77 6E 20 3D 20 23 78 46 31 20    cursdown = #xF1 
01C200:  3B 20 65 73 63 61 70 65 20 3D 20 23 78 46 43 20    ; escape = #xFC 
01C210:  3B 20 69 67 6E 6F 72 65 20 3D 20 23 78 45 46 0D    ; ignore = #xEF.
01C220:  0A 20 20 20 20 20 20 20 20 20 20 20 20 73 74 6F    .            sto
01C230:  70 20 3D 20 33 0D 0A 20 20 20 20 20 20 20 20 20    p = 3..         
01C240:  20 20 20 73 63 75 72 73 75 70 20 3D 20 23 78 46       scursup = #xF
01C250:  34 20 3B 20 73 63 75 72 73 64 6F 77 6E 20 3D 20    4 ; scursdown = 
01C260:  23 78 46 35 20 3B 20 73 63 75 72 73 6C 65 66 74    #xF5 ; scursleft
01C270:  20 3D 20 23 78 46 36 0D 0A 20 20 20 20 20 20 20     = #xF6..       
01C280:  20 20 20 20 20 73 63 75 72 73 72 69 67 68 74 20         scursright 
01C290:  3D 20 23 78 46 37 0D 0A 20 20 20 20 20 20 20 20    = #xF7..        
01C2A0:  20 20 20 20 63 63 75 72 73 75 70 20 3D 20 23 78        ccursup = #x
01C2B0:  46 38 20 3B 20 63 63 75 72 73 64 6F 77 6E 20 3D    F8 ; ccursdown =
01C2C0:  20 23 78 46 39 0D 0A 20 20 20 20 20 20 20 20 20     #xF9..         
01C2D0:  20 20 20 63 63 75 72 73 6C 65 66 74 20 3D 20 23       ccursleft = #
01C2E0:  78 46 41 20 3B 20 63 63 75 72 73 72 69 67 68 74    xFA ; ccursright
01C2F0:  20 3D 20 23 78 46 42 0D 0A 20 20 20 20 20 20 20     = #xFB..       
01C300:  20 20 20 20 20 63 6F 70 65 6E 73 71 20 3D 20 32         copensq = 2
01C310:  37 20 3B 20 63 63 6C 6F 73 65 73 71 20 3D 20 32    7 ; cclosesq = 2
01C320:  39 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 6D    9..            m
01C330:  61 78 73 63 72 68 65 69 67 68 74 20 3D 20 33 31    axscrheight = 31
01C340:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 6D 61    ..            ma
01C350:  78 63 68 72 20 3D 20 32 32 39 39 38 20 20 20 20    xchr = 22998    
01C360:  20 2F 2F 20 63 61 6E 20 62 65 20 69 6E 63 72 65     // can be incre
01C370:  61 73 65 64 20 66 6F 72 20 43 50 2F 4D 20 50 6C    ased for CP/M Pl
01C380:  75 73 20 6F 6E 6C 79 0D 0A 20 20 20 20 20 20 20    us only..       
01C390:  20 20 20 24 29 0D 0A 0D 0A 0D 0A 2F 2A 0D 0A 20       $)....../*.. 
01C3A0:  20 20 74 65 78 74 65 6E 64 20 70 6F 69 6E 74 73      textend points
01C3B0:  20 74 6F 20 74 68 65 20 6C 61 73 74 20 63 68 61     to the last cha
01C3C0:  72 61 63 74 65 72 20 69 6E 20 74 68 65 20 66 69    racter in the fi
01C3D0:  6C 65 20 77 68 69 63 68 20 77 69 6C 6C 20 61 6C    le which will al
01C3E0:  77 61 79 73 20 62 65 20 61 0D 0A 20 20 20 63 68    ways be a..   ch
01C3F0:  61 72 61 63 74 65 72 20 31 33 2E 20 74 65 78 74    aracter 13. text
01C400:  70 74 72 20 70 6F 69 6E 74 73 20 74 6F 20 74 68    ptr points to th
01C410:  65 20 66 69 72 73 74 20 63 68 61 72 61 63 74 65    e first characte
01C420:  72 20 6F 66 20 74 68 65 20 63 75 72 72 65 6E 74    r of the current
01C430:  20 6C 69 6E 65 2E 0D 0A 20 20 20 74 65 78 74 73     line...   texts
01C440:  74 61 72 74 20 70 6F 69 6E 74 73 20 74 6F 20 74    tart points to t
01C450:  68 65 20 73 74 61 72 74 20 6F 66 20 74 68 65 20    he start of the 
01C460:  74 65 78 74 20 73 70 61 63 65 2E 0D 0A 2A 2F 0D    text space...*/.
01C470:  0A 0D 0A 53 54 41 54 49 43 20 24 28 20 69 6E 73    ...STATIC $( ins
01C480:  65 72 74 20 3D 20 69 6E 73 20 3B 20 74 65 78 74    ert = ins ; text
01C490:  65 6E 64 20 3D 20 30 20 3B 20 74 65 78 74 70 74    end = 0 ; textpt
01C4A0:  72 20 3D 20 30 20 3B 20 74 65 78 74 73 74 61 72    r = 0 ; textstar
01C4B0:  74 20 3D 20 30 0D 0A 20 20 20 20 20 20 20 20 20    t = 0..         
01C4C0:  20 78 20 3D 20 31 20 3B 20 79 20 3D 20 31 20 3B     x = 1 ; y = 1 ;
01C4D0:  20 70 72 65 76 20 3D 20 30 20 3B 20 66 69 6C 65     prev = 0 ; file
01C4E0:  20 3D 20 30 20 3B 20 62 75 66 66 70 72 69 6E 74     = 0 ; buffprint
01C4F0:  20 3D 20 46 41 4C 53 45 0D 0A 20 20 20 20 20 20     = FALSE..      
01C500:  20 20 20 20 6C 69 6E 65 6E 75 6D 62 65 72 20 3D        linenumber =
01C510:  20 31 20 20 3B 20 73 63 72 68 65 69 67 68 74 3D     1  ; scrheight=
01C520:  30 20 20 3B 20 76 65 72 3D 30 20 24 29 0D 0A 0D    0  ; ver=0 $)...
01C530:  0A 47 4C 4F 42 41 4C 20 24 28 20 65 72 72 76 65    .GLOBAL $( errve
01C540:  63 20 3A 20 30 20 3B 20 65 72 72 6C 61 62 20 3A    c : 0 ; errlab :
01C550:  20 31 20 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 62     1 $)......LET b
01C560:  79 74 65 6D 6F 76 65 28 73 6F 75 72 63 65 2C 64    ytemove(source,d
01C570:  65 73 74 2C 6E 75 6D 62 65 72 29 20 42 45 0D 0A    est,number) BE..
01C580:  0D 0A 24 28 0D 0A 20 20 69 6E 6C 69 6E 65 20 32    ..$(..  inline 2
01C590:  32 31 2C 31 30 32 2C 31 32 33 20 20 20 20 20 20    21,102,123      
01C5A0:  2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 32 33 29    // ld h,(ix+123)
01C5B0:  0D 0A 20 20 69 6E 6C 69 6E 65 20 32 32 31 2C 31    ..  inline 221,1
01C5C0:  31 30 2C 31 32 32 20 20 20 20 20 20 2F 2F 20 6C    10,122      // l
01C5D0:  64 20 6C 2C 28 69 78 2B 31 32 32 29 0D 0A 20 20    d l,(ix+122)..  
01C5E0:  69 6E 6C 69 6E 65 20 32 32 31 2C 38 36 2C 31 32    inline 221,86,12
01C5F0:  35 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 64 2C    5       // ld d,
01C600:  28 69 78 2B 31 32 35 29 0D 0A 20 20 69 6E 6C 69    (ix+125)..  inli
01C610:  6E 65 20 32 32 31 2C 39 34 2C 31 32 34 20 20 20    ne 221,94,124   
01C620:  20 20 20 20 2F 2F 20 6C 64 20 65 2C 28 69 78 2B        // ld e,(ix+
01C630:  31 32 34 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 32    124)..  inline 2
01C640:  32 31 2C 37 30 2C 31 32 37 20 20 20 20 20 20 20    21,70,127       
01C650:  2F 2F 20 6C 64 20 62 2C 28 69 78 2B 31 32 37 29    // ld b,(ix+127)
01C660:  0D 0A 20 20 69 6E 6C 69 6E 65 20 32 32 31 2C 37    ..  inline 221,7
01C670:  38 2C 31 32 36 20 20 20 20 20 20 20 2F 2F 20 6C    8,126       // l
01C680:  64 20 63 2C 28 69 78 2B 31 32 36 29 0D 0A 20 20    d c,(ix+126)..  
01C690:  69 6E 6C 69 6E 65 20 31 36 37 20 20 20 20 20 20    inline 167      
01C6A0:  20 20 20 20 20 20 20 20 2F 2F 20 61 6E 64 20 61            // and a
01C6B0:  0D 0A 20 20 69 6E 6C 69 6E 65 20 32 33 37 2C 38    ..  inline 237,8
01C6C0:  32 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 73    2           // s
01C6D0:  62 63 20 68 6C 2C 64 65 0D 0A 20 20 69 6E 6C 69    bc hl,de..  inli
01C6E0:  6E 65 20 32 35 20 20 20 20 20 20 20 20 20 20 20    ne 25           
01C6F0:  20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 64 65        // add hl,de
01C700:  0D 0A 20 20 69 6E 6C 69 6E 65 20 35 36 2C 34 20    ..  inline 56,4 
01C710:  20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 6A                // j
01C720:  72 20 63 2C 2B 34 0D 0A 20 20 69 6E 6C 69 6E 65    r c,+4..  inline
01C730:  20 32 33 37 2C 31 37 36 20 20 20 20 20 20 20 20     237,176        
01C740:  20 20 2F 2F 20 6C 64 69 72 0D 0A 20 20 69 6E 6C      // ldir..  inl
01C750:  69 6E 65 20 32 34 2C 38 20 20 20 20 20 20 20 20    ine 24,8        
01C760:  20 20 20 20 20 2F 2F 20 6A 72 20 2B 38 0D 0A 20         // jr +8.. 
01C770:  20 69 6E 6C 69 6E 65 20 31 31 20 20 20 20 20 20     inline 11      
01C780:  20 20 20 20 20 20 20 20 20 2F 2F 20 64 65 63 20             // dec 
01C790:  62 63 0D 0A 20 20 69 6E 6C 69 6E 65 20 39 20 20    bc..  inline 9  
01C7A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F                  //
01C7B0:  20 61 64 64 20 68 6C 2C 62 63 0D 0A 20 20 69 6E     add hl,bc..  in
01C7C0:  6C 69 6E 65 20 32 33 35 20 20 20 20 20 20 20 20    line 235        
01C7D0:  20 20 20 20 20 20 2F 2F 20 65 78 20 64 65 2C 68          // ex de,h
01C7E0:  6C 0D 0A 20 20 69 6E 6C 69 6E 65 20 39 20 20 20    l..  inline 9   
01C7F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20                 // 
01C800:  61 64 64 20 68 6C 2C 62 63 0D 0A 20 20 69 6E 6C    add hl,bc..  inl
01C810:  69 6E 65 20 32 33 35 20 20 20 20 20 20 20 20 20    ine 235         
01C820:  20 20 20 20 20 2F 2F 20 65 78 20 64 65 2C 68 6C         // ex de,hl
01C830:  0D 0A 20 20 69 6E 6C 69 6E 65 20 33 20 20 20 20    ..  inline 3    
01C840:  20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 69                // i
01C850:  6E 63 20 62 63 0D 0A 20 20 69 6E 6C 69 6E 65 20    nc bc..  inline 
01C860:  32 33 37 2C 31 38 34 20 20 20 20 20 20 20 20 20    237,184         
01C870:  20 2F 2F 20 6C 64 64 72 0D 0A 24 29 0D 0A 0D 0A     // lddr..$)....
01C880:  4C 45 54 20 63 61 6C 6C 28 61 64 64 72 2C 61 66    LET call(addr,af
01C890:  2C 62 63 2C 64 65 2C 68 6C 2C 69 78 29 20 42 45    ,bc,de,hl,ix) BE
01C8A0:  0D 0A 0D 0A 24 28 20 20 4C 45 54 20 73 61 76 65    ....$(  LET save
01C8B0:  33 20 3D 20 56 45 43 20 31 0D 0A 20 20 20 20 62    3 = VEC 1..    b
01C8C0:  79 74 65 6D 6F 76 65 28 23 78 39 30 2C 20 73 61    ytemove(#x90, sa
01C8D0:  76 65 33 2A 32 2C 20 33 29 0D 0A 20 20 20 20 30    ve3*2, 3)..    0
01C8E0:  25 23 78 39 30 20 3A 3D 20 23 78 43 33 0D 0A 20    %#x90 := #xC3.. 
01C8F0:  20 20 20 30 25 23 78 39 31 20 3A 3D 20 61 64 64       0%#x91 := add
01C900:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
01C910:  18 00 00 00 02 09 50 E5 18 00 C1 02 00 00 00 02    ......P.........
01C920:  18 00 C2 02 00 00 00 02 18 00 C3 02 00 00 00 02    ................
01C930:  18 00 C4 02 00 00 00 02 18 00 C5 02 00 00 00 02    ................
01C940:  18 00 C6 02 00 00 00 02 18 00 C7 02 00 00 00 02    ................
01C950:  18 00 C8 02 00 00 00 02 18 00 C9 02 00 00 00 02    ................
01C960:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C970:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C980:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C990:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C9A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C9B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C9C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C9D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C9E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C9F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01CA00:  72 20 26 20 23 78 46 46 0D 0A 20 20 20 20 30 25    r & #xFF..    0%
01CA10:  23 78 39 32 20 3A 3D 20 28 20 61 64 64 72 20 26    #x92 := ( addr &
01CA20:  20 23 78 46 46 30 30 20 29 20 3E 3E 20 38 0D 0A     #xFF00 ) >> 8..
01CA30:  0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44    ..    inline #xD
01CA40:  44 2C 23 78 45 35 20 20 20 20 20 20 20 20 20 20    D,#xE5          
01CA50:  20 20 2F 2F 20 70 75 73 68 20 69 78 0D 0A 20 20      // push ix..  
01CA60:  20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78      inline #xDD,#x
01CA70:  36 36 2C 23 78 37 37 20 20 20 20 20 20 20 2F 2F    66,#x77       //
01CA80:  20 6C 64 20 68 2C 28 69 78 2B 31 31 39 29 0D 0A     ld h,(ix+119)..
01CA90:  20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C        inline #xDD,
01CAA0:  23 78 36 45 2C 23 78 37 36 20 20 20 20 20 20 20    #x6E,#x76       
01CAB0:  2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 31 38 29    // ld l,(ix+118)
01CAC0:  0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 32    ..    inline #x2
01CAD0:  39 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    9               
01CAE0:  20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 0D 0A      // add hl,hl..
01CAF0:  20 20 20 20 69 6E 6C 69 6E 65 20 23 78 35 45 20        inline #x5E 
01CB00:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01CB10:  2F 2F 20 6C 64 20 65 2C 28 68 6C 29 0D 0A 20 20    // ld e,(hl)..  
01CB20:  20 20 69 6E 6C 69 6E 65 20 23 78 32 33 20 20 20      inline #x23   
01CB30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F                  //
01CB40:  20 69 6E 63 20 68 6C 0D 0A 20 20 20 20 69 6E 6C     inc hl..    inl
01CB50:  69 6E 65 20 23 78 35 36 20 20 20 20 20 20 20 20    ine #x56        
01CB60:  20 20 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 64             // ld d
01CB70:  2C 28 68 6C 29 0D 0A 20 20 20 20 69 6E 6C 69 6E    ,(hl)..    inlin
01CB80:  65 20 23 78 44 35 20 20 20 20 20 20 20 20 20 20    e #xD5          
01CB90:  20 20 20 20 20 20 20 2F 2F 20 70 75 73 68 20 64           // push d
01CBA0:  65 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78    e..    inline #x
01CBB0:  44 44 2C 23 78 36 36 2C 23 78 37 39 20 20 20 20    DD,#x66,#x79    
01CBC0:  20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31       // ld h,(ix+1
01CBD0:  32 31 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20    21)..    inline 
01CBE0:  23 78 44 44 2C 23 78 36 45 2C 23 78 37 38 20 20    #xDD,#x6E,#x78  
01CBF0:  20 20 20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78         // ld l,(ix
01CC00:  2B 31 32 30 29 0D 0A 20 20 20 20 69 6E 6C 69 6E    +120)..    inlin
01CC10:  65 20 23 78 32 39 20 20 20 20 20 20 20 20 20 20    e #x29          
01CC20:  20 20 20 20 20 20 20 2F 2F 20 61 64 64 20 68 6C           // add hl
01CC30:  2C 68 6C 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20    ,hl..    inline 
01CC40:  23 78 34 45 20 20 20 20 20 20 20 20 20 20 20 20    #x4E            
01CC50:  20 20 20 20 20 2F 2F 20 6C 64 20 63 2C 28 68 6C         // ld c,(hl
01CC60:  29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78    )..    inline #x
01CC70:  32 33 20 20 20 20 20 20 20 20 20 20 20 20 20 20    23              
01CC80:  20 20 20 2F 2F 20 69 6E 63 20 68 6C 0D 0A 20 20       // inc hl..  
01CC90:  20 20 69 6E 6C 69 6E 65 20 23 78 34 36 20 20 20      inline #x46   
01CCA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F                  //
01CCB0:  20 6C 64 20 62 2C 28 68 6C 29 0D 0A 20 20 20 20     ld b,(hl)..    
01CCC0:  69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 36    inline #xDD,#x66
01CCD0:  2C 23 78 37 46 20 20 20 20 20 20 20 2F 2F 20 6C    ,#x7F       // l
01CCE0:  64 20 68 2C 28 69 78 2B 31 32 37 29 0D 0A 20 20    d h,(ix+127)..  
01CCF0:  20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78      inline #xDD,#x
01CD00:  36 45 2C 23 78 37 45 20 20 20 20 20 20 20 2F 2F    6E,#x7E       //
01CD10:  20 6C 64 20 6C 2C 28 69 78 2B 31 32 36 29 0D 0A     ld l,(ix+126)..
01CD20:  20 20 20 20 69 6E 6C 69 6E 65 20 23 78 32 39 20        inline #x29 
01CD30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01CD40:  2F 2F 20 61 64 64 20 68 6C 2C 68 6C 0D 0A 20 20    // add hl,hl..  
01CD50:  20 20 69 6E 6C 69 6E 65 20 23 78 35 45 20 20 20      inline #x5E   
01CD60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F                  //
01CD70:  20 6C 64 20 65 2C 28 68 6C 29 0D 0A 20 20 20 20     ld e,(hl)..    
01CD80:  69 6E 6C 69 6E 65 20 23 78 32 33 20 20 20 20 20    inline #x23     
01CD90:  20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 69                // i
01CDA0:  6E 63 20 68 6C 0D 0A 20 20 20 20 69 6E 6C 69 6E    nc hl..    inlin
01CDB0:  65 20 23 78 35 36 20 20 20 20 20 20 20 20 20 20    e #x56          
01CDC0:  20 20 20 20 20 20 20 2F 2F 20 6C 64 20 64 2C 28           // ld d,(
01CDD0:  68 6C 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20    hl)..    inline 
01CDE0:  23 78 44 35 20 20 20 20 20 20 20 20 20 20 20 20    #xD5            
01CDF0:  20 20 20 20 20 2F 2F 20 70 75 73 68 20 64 65 0D         // push de.
01CE00:  0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 44    .    inline #xDD
01CE10:  2C 23 78 36 36 2C 23 78 37 44 20 20 20 20 20 20    ,#x66,#x7D      
01CE20:  20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 32 35     // ld h,(ix+125
01CE30:  29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78    )..    inline #x
01CE40:  44 44 2C 23 78 36 45 2C 23 78 37 43 20 20 20 20    DD,#x6E,#x7C    
01CE50:  20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31       // ld l,(ix+1
01CE60:  32 34 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20    24)..    inline 
01CE70:  23 78 32 39 20 20 20 20 20 20 20 20 20 20 20 20    #x29            
01CE80:  20 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68         // add hl,h
01CE90:  6C 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78    l..    inline #x
01CEA0:  35 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    5E              
01CEB0:  20 20 20 2F 2F 20 6C 64 20 65 2C 28 68 6C 29 0D       // ld e,(hl).
01CEC0:  0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 32 33    .    inline #x23
01CED0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01CEE0:  20 2F 2F 20 69 6E 63 20 68 6C 0D 0A 20 20 20 20     // inc hl..    
01CEF0:  69 6E 6C 69 6E 65 20 23 78 35 36 20 20 20 20 20    inline #x56     
01CF00:  20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 6C                // l
01CF10:  64 20 64 2C 28 68 6C 29 0D 0A 20 20 20 20 69 6E    d d,(hl)..    in
01CF20:  6C 69 6E 65 20 23 78 44 35 20 20 20 20 20 20 20    line #xD5       
01CF30:  20 20 20 20 20 20 20 20 20 20 2F 2F 20 70 75 73              // pus
01CF40:  68 20 64 65 0D 0A 20 20 20 20 69 6E 6C 69 6E 65    h de..    inline
01CF50:  20 23 78 44 44 2C 23 78 36 36 2C 23 78 37 42 20     #xDD,#x66,#x7B 
01CF60:  20 20 20 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69          // ld h,(i
01CF70:  78 2B 31 32 33 29 0D 0A 20 20 20 20 69 6E 6C 69    x+123)..    inli
01CF80:  6E 65 20 23 78 44 44 2C 23 78 36 45 2C 23 78 37    ne #xDD,#x6E,#x7
01CF90:  41 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 6C 2C    A       // ld l,
01CFA0:  28 69 78 2B 31 32 32 29 0D 0A 20 20 20 20 69 6E    (ix+122)..    in
01CFB0:  6C 69 6E 65 20 23 78 32 39 20 20 20 20 20 20 20    line #x29       
01CFC0:  20 20 20 20 20 20 20 20 20 20 2F 2F 20 61 64 64              // add
01CFD0:  20 68 6C 2C 68 6C 0D 0A 20 20 20 20 69 6E 6C 69     hl,hl..    inli
01CFE0:  6E 65 20 23 78 35 45 20 20 20 20 20 20 20 20 20    ne #x5E         
01CFF0:  20 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 65 2C            // ld e,
01D000:  28 68 6C 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65    (hl)..    inline
01D010:  20 23 78 32 33 20 20 20 20 20 20 20 20 20 20 20     #x23           
01D020:  20 20 20 20 20 20 2F 2F 20 69 6E 63 20 68 6C 0D          // inc hl.
01D030:  0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 35 36    .    inline #x56
01D040:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01D050:  20 2F 2F 20 6C 64 20 64 2C 28 68 6C 29 0D 0A 20     // ld d,(hl).. 
01D060:  20 20 20 69 6E 6C 69 6E 65 20 23 78 45 31 20 20       inline #xE1  
01D070:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F                   /
01D080:  2F 20 70 6F 70 20 68 6C 0D 0A 20 20 20 20 69 6E    / pop hl..    in
01D090:  6C 69 6E 65 20 23 78 44 44 2C 23 78 45 31 20 20    line #xDD,#xE1  
01D0A0:  20 20 20 20 20 20 20 20 20 20 2F 2F 20 70 6F 70              // pop
01D0B0:  20 69 78 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20     ix..    inline 
01D0C0:  23 78 46 31 20 20 20 20 20 20 20 20 20 20 20 20    #xF1            
01D0D0:  20 20 20 20 20 2F 2F 20 70 6F 70 20 61 66 0D 0A         // pop af..
01D0E0:  20 20 20 20 69 6E 6C 69 6E 65 20 23 78 43 44 2C        inline #xCD,
01D0F0:  23 78 39 30 2C 23 78 30 30 20 20 20 20 20 20 20    #x90,#x00       
01D100:  2F 2F 20 63 61 6C 6C 20 26 39 30 0D 0A 20 20 20    // call &90..   
01D110:  20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 32     inline #xDD,#x2
01D120:  32 2C 23 78 39 30 2C 23 78 30 30 20 20 2F 2F 20    2,#x90,#x00  // 
01D130:  6C 64 20 28 26 39 30 29 2C 69 78 0D 0A 20 20 20    ld (&90),ix..   
01D140:  20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 45     inline #xDD,#xE
01D150:  31 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20    1            // 
01D160:  70 6F 70 20 69 78 0D 0A 20 20 20 20 69 6E 6C 69    pop ix..    inli
01D170:  6E 65 20 23 78 46 35 20 20 20 20 20 20 20 20 20    ne #xF5         
01D180:  20 20 20 20 20 20 20 20 2F 2F 20 70 75 73 68 20            // push 
01D190:  61 66 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23    af..    inline #
01D1A0:  78 45 35 20 20 20 20 20 20 20 20 20 20 20 20 20    xE5             
01D1B0:  20 20 20 20 2F 2F 20 70 75 73 68 20 68 6C 0D 0A        // push hl..
01D1C0:  20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C        inline #xDD,
01D1D0:  23 78 36 36 2C 23 78 37 42 20 20 20 20 20 20 20    #x66,#x7B       
01D1E0:  2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 32 33 29    // ld h,(ix+123)
01D1F0:  0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44    ..    inline #xD
01D200:  44 2C 23 78 36 45 2C 23 78 37 41 20 20 20 20 20    D,#x6E,#x7A     
01D210:  20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 32      // ld l,(ix+12
01D220:  32 29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23    2)..    inline #
01D230:  78 32 39 20 20 20 20 20 20 20 20 20 20 20 20 20    x29             
01D240:  20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C        // add hl,hl
01D250:  0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 37    ..    inline #x7
01D260:  33 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3               
01D270:  20 20 2F 2F 20 6C 64 20 28 68 6C 29 2C 65 0D 0A      // ld (hl),e..
01D280:  20 20 20 20 69 6E 6C 69 6E 65 20 23 78 32 33 20        inline #x23 
01D290:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01D2A0:  2F 2F 20 69 6E 63 20 68 6C 0D 0A 20 20 20 20 69    // inc hl..    i
01D2B0:  6E 6C 69 6E 65 20 23 78 37 32 20 20 20 20 20 20    nline #x72      
01D2C0:  20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 6C 64               // ld
01D2D0:  20 28 68 6C 29 2C 64 0D 0A 20 20 20 20 69 6E 6C     (hl),d..    inl
01D2E0:  69 6E 65 20 23 78 44 44 2C 23 78 36 36 2C 23 78    ine #xDD,#x66,#x
01D2F0:  37 44 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 68    7D       // ld h
01D300:  2C 28 69 78 2B 31 32 35 29 0D 0A 20 20 20 20 69    ,(ix+125)..    i
01D310:  6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 45 2C    nline #xDD,#x6E,
01D320:  23 78 37 43 20 20 20 20 20 20 20 2F 2F 20 6C 64    #x7C       // ld
01D330:  20 6C 2C 28 69 78 2B 31 32 34 29 0D 0A 20 20 20     l,(ix+124)..   
01D340:  20 69 6E 6C 69 6E 65 20 23 78 32 39 20 20 20 20     inline #x29    
01D350:  20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20                 // 
01D360:  61 64 64 20 68 6C 2C 68 6C 0D 0A 20 20 20 20 69    add hl,hl..    i
01D370:  6E 6C 69 6E 65 20 23 78 44 31 20 20 20 20 20 20    nline #xD1      
01D380:  20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 70 6F               // po
01D390:  70 20 64 65 0D 0A 20 20 20 20 69 6E 6C 69 6E 65    p de..    inline
01D3A0:  20 23 78 37 33 20 20 20 20 20 20 20 20 20 20 20     #x73           
01D3B0:  20 20 20 20 20 20 2F 2F 20 6C 64 20 28 68 6C 29          // ld (hl)
01D3C0:  2C 65 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23    ,e..    inline #
01D3D0:  78 32 33 20 20 20 20 20 20 20 20 20 20 20 20 20    x23             
01D3E0:  20 20 20 20 2F 2F 20 69 6E 63 20 68 6C 0D 0A 20        // inc hl.. 
01D3F0:  20 20 20 69 6E 6C 69 6E 65 20 23 78 37 32 20 20       inline #x72  
01D400:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F                   /
01D410:  2F 20 6C 64 20 28 68 6C 29 2C 64 0D 0A 20 20 20    / ld (hl),d..   
01D420:  20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36     inline #xDD,#x6
01D430:  36 2C 23 78 37 46 20 20 20 20 20 20 20 2F 2F 20    6,#x7F       // 
01D440:  6C 64 20 68 2C 28 69 78 2B 31 32 37 29 0D 0A 20    ld h,(ix+127).. 
01D450:  20 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23       inline #xDD,#
01D460:  78 36 45 2C 23 78 37 45 20 20 20 20 20 20 20 2F    x6E,#x7E       /
01D470:  2F 20 6C 64 20 6C 2C 28 69 78 2B 31 32 36 29 0D    / ld l,(ix+126).
01D480:  0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 32 39    .    inline #x29
01D490:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01D4A0:  20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 0D 0A 20     // add hl,hl.. 
01D4B0:  20 20 20 69 6E 6C 69 6E 65 20 23 78 45 44 2C 23       inline #xED,#
01D4C0:  78 35 42 2C 23 78 39 30 2C 23 78 30 30 20 20 2F    x5B,#x90,#x00  /
01D4D0:  2F 20 6C 64 20 64 65 2C 28 26 39 30 29 0D 0A 20    / ld de,(&90).. 
01D4E0:  20 20 20 69 6E 6C 69 6E 65 20 23 78 37 33 20 20       inline #x73  
01D4F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F                   /
01D500:  2F 20 6C 64 20 28 68 6C 29 2C 65 0D 0A 20 20 20    / ld (hl),e..   
01D510:  20 69 6E 6C 69 6E 65 20 23 78 32 33 20 20 20 20     inline #x23    
01D520:  20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20                 // 
01D530:  69 6E 63 20 68 6C 0D 0A 20 20 20 20 69 6E 6C 69    inc hl..    inli
01D540:  6E 65 20 23 78 37 32 20 20 20 20 20 20 20 20 20    ne #x72         
01D550:  20 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 28 68            // ld (h
01D560:  6C 29 2C 64 0D 0A 20 20 20 20 69 6E 6C 69 6E 65    l),d..    inline
01D570:  20 23 78 44 44 2C 23 78 36 36 2C 23 78 37 39 20     #xDD,#x66,#x79 
01D580:  20 20 20 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69          // ld h,(i
01D590:  78 2B 31 32 31 29 0D 0A 20 20 20 20 69 6E 6C 69    x+121)..    inli
01D5A0:  6E 65 20 23 78 44 44 2C 23 78 36 45 2C 23 78 37    ne #xDD,#x6E,#x7
01D5B0:  38 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 6C 2C    8       // ld l,
01D5C0:  28 69 78 2B 31 32 30 29 0D 0A 20 20 20 20 69 6E    (ix+120)..    in
01D5D0:  6C 69 6E 65 20 23 78 32 39 20 20 20 20 20 20 20    line #x29       
01D5E0:  20 20 20 20 20 20 20 20 20 20 2F 2F 20 61 64 64              // add
01D5F0:  20 68 6C 2C 68 6C 0D 0A 20 20 20 20 69 6E 6C 69     hl,hl..    inli
01D600:  6E 65 20 23 78 37 31 20 20 20 20 20 20 20 20 20    ne #x71         
01D610:  20 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 28 68            // ld (h
01D620:  6C 29 2C 63 0D 0A 20 20 20 20 69 6E 6C 69 6E 65    l),c..    inline
01D630:  20 23 78 32 33 20 20 20 20 20 20 20 20 20 20 20     #x23           
01D640:  20 20 20 20 20 20 2F 2F 20 69 6E 63 20 68 6C 0D          // inc hl.
01D650:  0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 37 30    .    inline #x70
01D660:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01D670:  20 2F 2F 20 6C 64 20 28 68 6C 29 2C 62 0D 0A 20     // ld (hl),b.. 
01D680:  20 20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23       inline #xDD,#
01D690:  78 36 36 2C 23 78 37 37 20 20 20 20 20 20 20 2F    x66,#x77       /
01D6A0:  2F 20 6C 64 20 68 2C 28 69 78 2B 31 31 39 29 0D    / ld h,(ix+119).
01D6B0:  0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 44    .    inline #xDD
01D6C0:  2C 23 78 36 45 2C 23 78 37 36 20 20 20 20 20 20    ,#x6E,#x76      
01D6D0:  20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 31 38     // ld l,(ix+118
01D6E0:  29 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78    )..    inline #x
01D6F0:  32 39 20 20 20 20 20 20 20 20 20 20 20 20 20 20    29              
01D700:  20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 0D       // add hl,hl.
01D710:  0A 20 20 20 20 69 6E 6C 69 6E 65 20 23 78 44 31    .    inline #xD1
01D720:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01D730:  20 2F 2F 20 70 6F 70 20 64 65 0D 0A 20 20 20 20     // pop de..    
01D740:  69 6E 6C 69 6E 65 20 23 78 37 33 20 20 20 20 20    inline #x73     
01D750:  20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 6C                // l
01D760:  64 20 28 68 6C 29 2C 65 0D 0A 20 20 20 20 69 6E    d (hl),e..    in
01D770:  6C 69 6E 65 20 23 78 32 33 20 20 20 20 20 20 20    line #x23       
01D780:  20 20 20 20 20 20 20 20 20 20 2F 2F 20 69 6E 63              // inc
01D790:  20 68 6C 0D 0A 20 20 20 20 69 6E 6C 69 6E 65 20     hl..    inline 
01D7A0:  23 78 37 32 20 20 20 20 20 20 20 20 20 20 20 20    #x72            
01D7B0:  20 20 20 20 20 2F 2F 20 6C 64 20 28 68 6C 29 2C         // ld (hl),
01D7C0:  64 0D 0A 20 20 20 20 62 79 74 65 6D 6F 76 65 28    d..    bytemove(
01D7D0:  73 61 76 65 33 2A 32 2C 20 23 78 39 30 2C 20 33    save3*2, #x90, 3
01D7E0:  29 0D 0A 24 29 0D 0A 0D 0A 4C 45 54 20 66 69 72    )..$)....LET fir
01D7F0:  6D 77 61 72 65 28 61 64 64 72 2C 61 66 2C 62 63    mware(addr,af,bc
01D800:  2C 64 65 2C 68 6C 2C 69 78 29 20 42 45 0D 0A 0D    ,de,hl,ix) BE...
01D810:  0A 24 28 20 20 4C 45 54 20 73 61 76 65 36 20 3D    .$(  LET save6 =
01D820:  20 56 45 43 20 33 0D 0A 20 20 20 20 62 79 74 65     VEC 3..    byte
01D830:  6D 6F 76 65 28 23 78 38 30 2C 20 73 61 76 65 36    move(#x80, save6
01D840:  2A 32 2C 20 36 29 0D 0A 20 20 20 20 30 25 23 78    *2, 6)..    0%#x
01D850:  38 30 20 3A 3D 20 23 78 43 44 0D 0A 20 20 20 20    80 := #xCD..    
01D860:  30 25 23 78 38 31 20 3A 3D 20 30 25 28 30 25 31    0%#x81 := 0%(0%1
01D870:  20 2B 20 32 35 36 2A 30 25 32 20 2B 20 38 37 20     + 256*0%2 + 87 
01D880:  2B 31 29 0D 0A 20 20 20 20 30 25 23 78 38 32 20    +1)..    0%#x82 
01D890:  3A 3D 20 30 25 28 30 25 31 20 2B 20 32 35 36 2A    := 0%(0%1 + 256*
01D8A0:  30 25 32 20 2B 20 38 37 20 2B 32 29 0D 0A 20 20    0%2 + 87 +2)..  
01D8B0:  20 20 30 25 23 78 38 33 20 3A 3D 20 61 64 64 72      0%#x83 := addr
01D8C0:  20 26 20 23 78 46 46 0D 0A 20 20 20 20 30 25 23     & #xFF..    0%#
01D8D0:  78 38 34 20 3A 3D 20 28 20 61 64 64 72 20 26 20    x84 := ( addr & 
01D8E0:  23 78 46 46 30 30 20 29 20 3E 3E 20 38 0D 0A 20    #xFF00 ) >> 8.. 
01D8F0:  20 20 20 30 25 23 78 38 35 20 3A 3D 20 23 78 43       0%#x85 := #xC
01D900:  39 0D 0A 20 20 20 20 63 61 6C 6C 20 28 23 78 38    9..    call (#x8
01D910:  30 2C 61 66 2C 62 63 2C 64 65 2C 68 6C 2C 69 78    0,af,bc,de,hl,ix
01D920:  29 0D 0A 20 20 20 20 62 79 74 65 6D 6F 76 65 28    )..    bytemove(
01D930:  73 61 76 65 36 2A 32 2C 20 23 78 38 30 2C 20 36    save6*2, #x80, 6
01D940:  29 0D 0A 24 29 0D 0A 0D 0A 61 6E 64 20 76 65 72    )..$)....and ver
01D950:  73 69 6F 6E 28 29 20 3D 20 56 41 4C 4F 46 0D 0A    sion() = VALOF..
01D960:  0D 0A 24 28 20 20 4C 45 54 20 63 2C 64 65 3D 31    ..$(  LET c,de=1
01D970:  32 2C 3F 0D 0A 20 20 20 20 4C 45 54 20 61 66 2C    2,?..    LET af,
01D980:  62 63 2C 68 6C 2C 69 78 20 3D 20 3F 2C 3F 2C 3F    bc,hl,ix = ?,?,?
01D990:  2C 3F 0D 0A 20 20 20 20 62 64 6F 73 61 28 40 63    ,?..    bdosa(@c
01D9A0:  2C 40 64 65 29 0D 0A 20 20 20 20 49 46 20 28 64    ,@de)..    IF (d
01D9B0:  65 20 26 20 23 78 46 46 29 20 3C 20 23 78 33 30    e & #xFF) < #x30
01D9C0:  20 54 48 45 4E 20 52 45 53 55 4C 54 49 53 20 32     THEN RESULTIS 2
01D9D0:  0D 0A 20 20 20 20 66 69 72 6D 77 61 72 65 28 23    ..    firmware(#
01D9E0:  78 45 33 2C 40 61 66 2C 40 62 63 2C 40 64 65 2C    xE3,@af,@bc,@de,
01D9F0:  40 68 6C 2C 40 69 78 29 0D 0A 20 20 20 20 52 45    @hl,@ix)..    RE
01DA00:  53 55 4C 54 49 53 20 33 20 2B 20 28 20 28 61 66    SULTIS 3 + ( (af
01DA10:  20 26 20 23 78 46 46 30 30 29 20 3E 3E 20 38 20     & #xFF00) >> 8 
01DA20:  29 0D 0A 24 29 0D 0A 0D 0A 4C 45 54 20 65 73 63    )..$)....LET esc
01DA30:  63 6F 64 65 28 78 29 20 42 45 0D 0A 0D 0A 24 28    code(x) BE....$(
01DA40:  20 20 77 72 63 68 28 32 37 29 20 3B 20 77 72 63      wrch(27) ; wrc
01DA50:  68 28 78 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45    h(x)..$)......LE
01DA60:  54 20 63 6C 65 61 72 73 63 72 28 29 20 42 45 0D    T clearscr() BE.
01DA70:  0A 24 28 0D 0A 20 20 20 20 54 45 53 54 20 76 65    .$(..    TEST ve
01DA80:  72 3D 32 20 54 48 45 4E 20 77 72 63 68 28 31 32    r=2 THEN wrch(12
01DA90:  29 20 45 4C 53 45 20 65 73 63 63 6F 64 65 28 27    ) ELSE esccode('
01DAA0:  45 27 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54    E')..$)......LET
01DAB0:  20 74 61 62 28 78 2C 79 29 20 42 45 0D 0A 0D 0A     tab(x,y) BE....
01DAC0:  24 28 0D 0A 0D 0A 20 20 54 45 53 54 20 76 65 72    $(....  TEST ver
01DAD0:  3D 32 20 54 48 45 4E 0D 0A 20 20 24 28 0D 0A 20    =2 THEN..  $(.. 
01DAE0:  20 20 20 62 64 6F 73 62 28 36 2C 33 31 29 20 3B       bdosb(6,31) ;
01DAF0:  20 62 64 6F 73 62 28 36 2C 78 29 20 3B 20 62 64     bdosb(6,x) ; bd
01DB00:  6F 73 62 28 36 2C 79 29 0D 0A 20 20 24 29 0D 0A    osb(6,y)..  $)..
01DB10:  20 20 45 4C 53 45 0D 0A 20 20 24 28 0D 0A 20 20      ELSE..  $(..  
01DB20:  20 20 20 65 73 63 63 6F 64 65 28 27 59 27 29 20       esccode('Y') 
01DB30:  3B 20 77 72 63 68 28 79 2B 33 32 2D 31 29 20 3B    ; wrch(y+32-1) ;
01DB40:  20 77 72 63 68 28 78 2B 33 32 2D 31 29 0D 0A 20     wrch(x+32-1).. 
01DB50:  20 24 29 0D 0A 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C     $)....$)......L
01DB60:  45 54 20 73 70 61 63 65 73 28 6E 75 6D 62 65 72    ET spaces(number
01DB70:  29 20 42 45 20 24 28 20 46 4F 52 20 61 20 3D 20    ) BE $( FOR a = 
01DB80:  31 20 54 4F 20 6E 75 6D 62 65 72 20 44 4F 20 77    1 TO number DO w
01DB90:  72 63 68 28 27 20 27 29 20 24 29 0D 0A 0D 0A 0D    rch(' ') $).....
01DBA0:  0A 4C 45 54 20 61 73 63 69 69 28 63 68 61 72 29    .LET ascii(char)
01DBB0:  20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 54 45 53     BE....$(..  TES
01DBC0:  54 20 63 68 61 72 3D 31 33 20 54 48 45 4E 20 6E    T char=13 THEN n
01DBD0:  65 77 6C 69 6E 65 28 29 20 45 4C 53 45 20 77 72    ewline() ELSE wr
01DBE0:  63 68 28 63 68 61 72 29 0D 0A 24 29 0D 0A 0D 0A    ch(char)..$)....
01DBF0:  0D 0A 4C 45 54 20 63 75 72 73 6F 6E 28 29 20 42    ..LET curson() B
01DC00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
01DC10:  19 00 00 00 02 09 50 E5 19 00 C1 02 00 00 00 02    ......P.........
01DC20:  19 00 C2 02 00 00 00 02 19 00 C3 02 00 00 00 02    ................
01DC30:  19 00 C4 02 00 00 00 02 19 00 C5 02 00 00 00 02    ................
01DC40:  19 00 C6 02 00 00 00 02 19 00 C7 02 00 00 00 02    ................
01DC50:  19 00 C8 02 00 00 00 02 19 00 C9 02 00 00 00 02    ................
01DC60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DC70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DC80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DC90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DD00:  45 20 72 65 74 75 72 6E 0D 0A 4C 45 54 20 63 75    E return..LET cu
01DD10:  72 73 65 6E 28 29 20 42 45 20 72 65 74 75 72 6E    rsen() BE return
01DD20:  0D 0A 4C 45 54 20 63 75 72 73 64 69 28 29 20 42    ..LET cursdi() B
01DD30:  45 20 72 65 74 75 72 6E 0D 0A 0D 0A 4C 45 54 20    E return....LET 
01DD40:  62 65 65 70 28 29 20 42 45 20 24 28 20 77 72 63    beep() BE $( wrc
01DD50:  68 28 37 29 20 24 29 0D 0A 0D 0A 0D 0A 2F 2A 20    h(7) $)....../* 
01DD60:  54 68 69 73 20 72 6F 75 74 69 6E 65 20 72 65 74    This routine ret
01DD70:  75 72 6E 73 20 74 68 65 20 6E 75 6D 62 65 72 20    urns the number 
01DD80:  6F 66 20 63 68 61 72 61 63 74 65 72 73 20 75 70    of characters up
01DD90:  20 74 6F 20 61 6E 64 20 69 6E 63 6C 75 64 69 6E     to and includin
01DDA0:  67 20 74 68 65 0D 0A 20 20 20 6E 65 78 74 20 43    g the..   next C
01DDB0:  52 20 2A 2F 0D 0A 0D 0A 4C 45 54 20 6C 69 6E 65    R */....LET line
01DDC0:  6C 65 6E 67 74 68 28 66 72 6F 6D 29 20 3D 20 56    length(from) = V
01DDD0:  41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45    ALOF....$(..  LE
01DDE0:  54 20 73 6F 66 61 72 20 3D 20 31 0D 0A 20 20 57    T sofar = 1..  W
01DDF0:  48 49 4C 45 20 21 66 72 6F 6D 20 4E 45 20 31 33    HILE !from NE 13
01DE00:  20 44 4F 20 24 28 20 73 6F 66 61 72 20 3A 3D 20     DO $( sofar := 
01DE10:  73 6F 66 61 72 20 2B 20 31 20 3B 20 66 72 6F 6D    sofar + 1 ; from
01DE20:  20 3A 3D 20 66 72 6F 6D 20 2B 20 31 20 24 29 0D     := from + 1 $).
01DE30:  0A 20 20 52 45 53 55 4C 54 49 53 20 73 6F 66 61    .  RESULTIS sofa
01DE40:  72 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 2F 2A 20    r..$)......../* 
01DE50:  54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C    This routine wil
01DE60:  6C 20 70 72 69 6E 74 20 6E 75 6D 20 63 68 61 72    l print num char
01DE70:  61 63 74 65 72 73 20 6F 66 20 6C 69 6E 65 20 61    acters of line a
01DE80:  6E 64 20 74 68 65 6E 20 66 69 6C 6C 20 74 68 65    nd then fill the
01DE90:  20 72 65 73 74 20 6F 66 20 74 68 65 0D 0A 20 20     rest of the..  
01DEA0:  20 6C 69 6E 65 20 77 69 74 68 20 73 70 61 63 65     line with space
01DEB0:  73 20 2A 2F 0D 0A 0D 0A 41 4E 44 20 70 72 69 6E    s */....AND prin
01DEC0:  74 63 6C 72 28 6C 69 6E 65 2C 6E 75 6D 29 20 42    tclr(line,num) B
01DED0:  45 0D 0A 0D 0A 24 28 0D 0A 20 20 46 4F 52 20 61    E....$(..  FOR a
01DEE0:  20 3D 20 30 20 54 4F 20 6E 75 6D 2D 31 20 44 4F     = 0 TO num-1 DO
01DEF0:  20 77 72 63 68 28 6C 69 6E 65 21 61 29 0D 0A 20     wrch(line!a).. 
01DF00:  20 73 70 61 63 65 73 28 37 39 2D 6E 75 6D 29 0D     spaces(79-num).
01DF10:  0A 24 29 0D 0A 0D 0A 0D 0A 2F 2A 20 54 68 69 73    .$)....../* This
01DF20:  20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 70 72     routine will pr
01DF30:  69 6E 74 20 65 69 74 68 65 72 20 74 68 65 20 77    int either the w
01DF40:  68 6F 6C 65 20 62 75 66 66 65 72 20 66 72 6F 6D    hole buffer from
01DF50:  20 78 20 6F 6E 20 6F 72 20 6A 75 73 74 20 74 68     x on or just th
01DF60:  65 20 6E 65 77 0D 0A 20 20 20 63 68 61 72 61 63    e new..   charac
01DF70:  74 65 72 20 2A 2F 0D 0A 0D 0A 41 4E 44 20 72 65    ter */....AND re
01DF80:  70 72 69 6E 74 28 6C 69 6E 65 2C 70 6F 73 29 20    print(line,pos) 
01DF90:  42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 54 45 53 54    BE....$(..  TEST
01DFA0:  20 69 6E 73 65 72 74 20 54 48 45 4E 20 46 4F 52     insert THEN FOR
01DFB0:  20 61 20 3D 20 70 6F 73 20 54 4F 20 6C 69 6E 65     a = pos TO line
01DFC0:  21 30 2D 31 20 44 4F 20 77 72 63 68 28 6C 69 6E    !0-1 DO wrch(lin
01DFD0:  65 21 61 29 0D 0A 20 20 45 4C 53 45 20 77 72 63    e!a)..  ELSE wrc
01DFE0:  68 28 6C 69 6E 65 21 70 6F 73 29 0D 0A 24 29 0D    h(line!pos)..$).
01DFF0:  0A 0D 0A 0D 0A 0D 0A 2F 2A 20 54 68 69 73 20 72    ......./* This r
01E000:  6F 75 74 69 6E 65 20 77 69 6C 6C 20 72 65 6D 6F    outine will remo
01E010:  76 65 20 61 20 63 68 61 72 61 63 74 65 72 20 66    ve a character f
01E020:  72 6F 6D 20 74 68 65 20 62 75 66 66 65 72 20 2A    rom the buffer *
01E030:  2F 0D 0A 0D 0A 41 4E 44 20 64 65 6C 65 74 65 28    /....AND delete(
01E040:  6C 69 6E 65 2C 78 29 20 42 45 0D 0A 0D 0A 24 28    line,x) BE....$(
01E050:  0D 0A 20 20 54 45 53 54 20 69 6E 73 65 72 74 20    ..  TEST insert 
01E060:  54 48 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20    THEN..  $(..    
01E070:  6C 69 6E 65 21 30 20 3A 3D 20 6C 69 6E 65 21 30    line!0 := line!0
01E080:  20 2D 20 31 0D 0A 20 20 20 20 46 4F 52 20 61 20     - 1..    FOR a 
01E090:  3D 20 78 20 54 4F 20 6C 69 6E 65 21 30 20 44 4F    = x TO line!0 DO
01E0A0:  20 6C 69 6E 65 21 61 20 3A 3D 20 6C 69 6E 65 21     line!a := line!
01E0B0:  28 61 2B 31 29 0D 0A 20 20 24 29 0D 0A 20 20 45    (a+1)..  $)..  E
01E0C0:  4C 53 45 20 6C 69 6E 65 21 78 20 3A 3D 20 27 20    LSE line!x := ' 
01E0D0:  27 0D 0A 24 29 0D 0A 0D 0A 0D 0A 2F 2A 20 54 68    '..$)....../* Th
01E0E0:  69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20    is routine will 
01E0F0:  69 6E 73 65 72 74 20 61 20 63 68 61 72 61 63 74    insert a charact
01E100:  65 72 20 69 6E 74 6F 20 74 68 65 20 62 75 66 66    er into the buff
01E110:  65 72 20 61 74 20 74 68 65 20 70 6F 69 6E 74 20    er at the point 
01E120:  67 69 76 65 6E 20 2A 2F 0D 0A 0D 0A 41 4E 44 20    given */....AND 
01E130:  62 69 6E 73 65 72 74 28 6C 69 6E 65 2C 70 6F 73    binsert(line,pos
01E140:  69 74 69 6F 6E 2C 63 68 61 72 61 63 74 65 72 29    ition,character)
01E150:  20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 54 45 53     BE....$(..  TES
01E160:  54 20 69 6E 73 65 72 74 20 54 48 45 4E 0D 0A 20    T insert THEN.. 
01E170:  20 24 28 0D 0A 20 20 20 20 46 4F 52 20 61 20 3D     $(..    FOR a =
01E180:  20 6C 69 6E 65 21 30 20 54 4F 20 70 6F 73 69 74     line!0 TO posit
01E190:  69 6F 6E 20 42 59 20 2D 31 20 6C 69 6E 65 21 28    ion BY -1 line!(
01E1A0:  61 2B 31 29 20 3A 3D 20 6C 69 6E 65 21 61 0D 0A    a+1) := line!a..
01E1B0:  20 20 20 20 6C 69 6E 65 21 70 6F 73 69 74 69 6F        line!positio
01E1C0:  6E 20 3A 3D 20 63 68 61 72 61 63 74 65 72 0D 0A    n := character..
01E1D0:  20 20 20 20 6C 69 6E 65 21 30 20 3A 3D 20 6C 69        line!0 := li
01E1E0:  6E 65 21 30 20 2B 20 31 0D 0A 20 20 24 29 0D 0A    ne!0 + 1..  $)..
01E1F0:  20 20 45 4C 53 45 20 6C 69 6E 65 21 70 6F 73 69      ELSE line!posi
01E200:  74 69 6F 6E 20 3A 3D 20 63 68 61 72 61 63 74 65    tion := characte
01E210:  72 0D 0A 24 29 0D 0A 0D 0A 0D 0A 41 4E 44 20 76    r..$)......AND v
01E220:  61 6C 69 64 61 74 65 28 6C 69 6E 65 2C 78 29 20    alidate(line,x) 
01E230:  3D 20 56 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20    = VALOF....$(.. 
01E240:  20 49 46 20 78 20 3C 3D 20 6C 69 6E 65 21 30 20     IF x <= line!0 
01E250:  54 48 45 4E 20 52 45 53 55 4C 54 49 53 20 78 0D    THEN RESULTIS x.
01E260:  0A 20 20 74 61 62 28 6C 69 6E 65 21 30 2C 79 29    .  tab(line!0,y)
01E270:  0D 0A 20 20 52 45 53 55 4C 54 49 53 20 6C 69 6E    ..  RESULTIS lin
01E280:  65 21 30 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 2F    e!0..$)......../
01E290:  2A 0D 0A 0D 0A 20 20 54 68 65 20 6C 69 6E 65 20    *....  The line 
01E2A0:  67 69 76 65 6E 20 69 73 20 69 6E 20 62 75 66 66    given is in buff
01E2B0:  65 72 20 69 6E 20 74 68 65 20 66 6F 6C 6C 6F 77    er in the follow
01E2C0:  69 6E 67 20 66 6F 72 6D 61 74 0D 0A 0D 0A 20 20    ing format....  
01E2D0:  20 30 3A 20 6C 65 6E 67 74 68 0D 0A 20 20 20 31     0: length..   1
01E2E0:  2D 20 73 74 72 69 6E 67 20 69 6E 20 75 6E 70 61    - string in unpa
01E2F0:  63 6B 65 64 20 66 6F 72 6D 61 74 20 66 6F 6C 6C    cked format foll
01E300:  6F 77 65 64 20 62 79 20 31 33 0D 0A 0D 0A 20 20    owed by 13....  
01E310:  54 68 65 20 72 6F 75 74 69 6E 65 20 72 65 61 63    The routine reac
01E320:  74 73 20 74 6F 20 6B 65 79 20 61 6E 64 20 74 61    ts to key and ta
01E330:  6B 65 73 20 74 68 65 20 61 70 70 72 6F 70 72 69    kes the appropri
01E340:  61 74 65 20 61 63 74 69 6F 6E 0D 0A 0D 0A 2A 2F    ate action....*/
01E350:  0D 0A 0D 0A 41 4E 44 20 62 75 69 6C 64 62 75 66    ....AND buildbuf
01E360:  66 28 62 75 66 66 65 72 2C 6B 65 79 29 20 3D 20    f(buffer,key) = 
01E370:  56 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 74    VALOF....$(..  t
01E380:  61 62 28 78 2C 79 29 0D 0A 20 20 53 57 49 54 43    ab(x,y)..  SWITC
01E390:  48 4F 4E 20 6B 65 79 20 49 4E 54 4F 0D 0A 20 20    HON key INTO..  
01E3A0:  24 28 0D 0A 20 20 20 20 43 41 53 45 20 31 33 3A    $(..    CASE 13:
01E3B0:  0D 0A 20 20 20 20 20 20 78 20 3A 3D 20 76 61 6C    ..      x := val
01E3C0:  69 64 61 74 65 28 62 75 66 66 65 72 2C 78 29 0D    idate(buffer,x).
01E3D0:  0A 20 20 20 20 20 20 62 69 6E 73 65 72 74 28 62    .      binsert(b
01E3E0:  75 66 66 65 72 2C 78 2C 31 33 29 0D 0A 20 20 20    uffer,x,13)..   
01E3F0:  20 20 20 77 72 63 68 28 31 33 29 0D 0A 20 20 20       wrch(13)..   
01E400:  20 20 20 70 72 69 6E 74 63 6C 72 28 62 75 66 66       printclr(buff
01E410:  65 72 2B 31 2C 6C 69 6E 65 6C 65 6E 67 74 68 28    er+1,linelength(
01E420:  62 75 66 66 65 72 2B 31 29 2D 31 29 20 3B 20 52    buffer+1)-1) ; R
01E430:  45 53 55 4C 54 49 53 20 31 33 0D 0A 20 20 20 20    ESULTIS 13..    
01E440:  43 41 53 45 20 63 75 72 73 6C 65 66 74 3A 20 43    CASE cursleft: C
01E450:  41 53 45 20 73 63 75 72 73 6C 65 66 74 3A 0D 0A    ASE scursleft:..
01E460:  20 20 20 20 20 20 54 45 53 54 20 78 3E 31 20 54          TEST x>1 T
01E470:  48 45 4E 0D 0A 20 20 20 20 20 20 20 20 78 20 3A    HEN..        x :
01E480:  3D 20 78 20 2D 20 31 0D 0A 20 20 20 20 20 20 45    = x - 1..      E
01E490:  4C 53 45 20 62 65 65 70 28 29 0D 0A 20 20 20 20    LSE beep()..    
01E4A0:  20 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 43      ENDCASE..    C
01E4B0:  41 53 45 20 63 75 72 73 72 69 67 68 74 3A 20 43    ASE cursright: C
01E4C0:  41 53 45 20 73 63 75 72 73 72 69 67 68 74 3A 0D    ASE scursright:.
01E4D0:  0A 20 20 20 20 20 20 54 45 53 54 20 78 20 3C 3D    .      TEST x <=
01E4E0:  20 62 75 66 66 65 72 21 30 2D 31 20 54 48 45 4E     buffer!0-1 THEN
01E4F0:  0D 0A 20 20 20 20 20 20 20 20 78 20 3A 3D 20 78    ..        x := x
01E500:  20 2B 20 31 0D 0A 20 20 20 20 20 20 45 4C 53 45     + 1..      ELSE
01E510:  20 62 65 65 70 28 29 0D 0A 20 20 20 20 20 20 45     beep()..      E
01E520:  4E 44 43 41 53 45 0D 0A 20 20 20 20 43 41 53 45    NDCASE..    CASE
01E530:  20 63 63 75 72 73 6C 65 66 74 3A 20 20 78 20 3A     ccursleft:  x :
01E540:  3D 20 31 20 3B 20 45 4E 44 43 41 53 45 0D 0A 20    = 1 ; ENDCASE.. 
01E550:  20 20 20 43 41 53 45 20 63 63 75 72 73 72 69 67       CASE ccursrig
01E560:  68 74 3A 20 78 20 3A 3D 20 62 75 66 66 65 72 21    ht: x := buffer!
01E570:  30 20 3B 20 45 4E 44 43 41 53 45 0D 0A 20 20 20    0 ; ENDCASE..   
01E580:  20 43 41 53 45 20 73 63 75 72 73 75 70 3A 20 43     CASE scursup: C
01E590:  41 53 45 20 73 63 75 72 73 64 6F 77 6E 3A 0D 0A    ASE scursdown:..
01E5A0:  20 20 20 20 43 41 53 45 20 63 63 75 72 73 75 70        CASE ccursup
01E5B0:  3A 20 43 41 53 45 20 63 63 75 72 73 64 6F 77 6E    : CASE ccursdown
01E5C0:  3A 0D 0A 20 20 20 20 43 41 53 45 20 63 6F 70 65    :..    CASE cope
01E5D0:  6E 73 71 3A 20 43 41 53 45 20 63 63 6C 6F 73 65    nsq: CASE cclose
01E5E0:  73 71 3A 0D 0A 20 20 20 20 43 41 53 45 20 65 73    sq:..    CASE es
01E5F0:  63 61 70 65 3A 20 43 41 53 45 20 73 74 6F 70 3A    cape: CASE stop:
01E600:  20 43 41 53 45 20 63 75 72 73 75 70 3A 20 43 41     CASE cursup: CA
01E610:  53 45 20 63 75 72 73 64 6F 77 6E 3A 20 52 45 53    SE cursdown: RES
01E620:  55 4C 54 49 53 20 6B 65 79 0D 0A 20 20 20 20 43    ULTIS key..    C
01E630:  41 53 45 20 31 32 37 3A 0D 0A 20 20 20 20 20 20    ASE 127:..      
01E640:  78 20 3A 3D 20 76 61 6C 69 64 61 74 65 28 62 75    x := validate(bu
01E650:  66 66 65 72 2C 78 29 0D 0A 20 20 20 20 20 20 49    ffer,x)..      I
01E660:  46 20 78 20 3D 20 31 20 54 48 45 4E 20 52 45 53    F x = 1 THEN RES
01E670:  55 4C 54 49 53 20 31 32 37 0D 0A 20 20 20 20 20    ULTIS 127..     
01E680:  20 78 20 3A 3D 20 78 20 2D 20 31 0D 0A 20 20 20     x := x - 1..   
01E690:  20 20 20 74 61 62 28 78 2C 79 29 0D 0A 20 20 20       tab(x,y)..   
01E6A0:  20 20 20 64 65 6C 65 74 65 28 62 75 66 66 65 72       delete(buffer
01E6B0:  2C 78 29 0D 0A 20 20 20 20 20 20 72 65 70 72 69    ,x)..      repri
01E6C0:  6E 74 28 62 75 66 66 65 72 2C 78 29 0D 0A 20 20    nt(buffer,x)..  
01E6D0:  20 20 20 20 49 46 20 69 6E 73 65 72 74 20 54 48        IF insert TH
01E6E0:  45 4E 20 77 72 63 68 28 27 20 27 29 0D 0A 20 20    EN wrch(' ')..  
01E6F0:  20 20 20 20 45 4E 44 43 41 53 45 0D 0A 20 20 20        ENDCASE..   
01E700:  20 44 45 46 41 55 4C 54 3A 0D 0A 20 20 20 20 20     DEFAULT:..     
01E710:  20 78 20 3A 3D 20 76 61 6C 69 64 61 74 65 28 62     x := validate(b
01E720:  75 66 66 65 72 2C 78 29 0D 0A 20 20 20 20 20 20    uffer,x)..      
01E730:  54 45 53 54 20 62 75 66 66 65 72 21 30 20 3C 20    TEST buffer!0 < 
01E740:  38 30 20 54 48 45 4E 0D 0A 20 20 20 20 20 20 24    80 THEN..      $
01E750:  28 0D 0A 20 20 20 20 20 20 20 20 62 69 6E 73 65    (..        binse
01E760:  72 74 28 62 75 66 66 65 72 2C 78 2C 6B 65 79 29    rt(buffer,x,key)
01E770:  0D 0A 20 20 20 20 20 20 20 20 72 65 70 72 69 6E    ..        reprin
01E780:  74 28 62 75 66 66 65 72 2C 78 29 0D 0A 20 20 20    t(buffer,x)..   
01E790:  20 20 20 20 20 49 46 20 69 6E 73 65 72 74 20 4C         IF insert L
01E7A0:  4F 47 4F 52 20 78 3C 62 75 66 66 65 72 21 30 20    OGOR x<buffer!0 
01E7B0:  54 48 45 4E 20 78 20 3A 3D 20 78 20 2B 20 31 0D    THEN x := x + 1.
01E7C0:  0A 20 20 20 20 20 20 24 29 0D 0A 20 20 20 20 20    .      $)..     
01E7D0:  20 45 4C 53 45 20 62 65 65 70 28 29 0D 0A 20 20     ELSE beep()..  
01E7E0:  20 20 20 20 45 4E 44 43 41 53 45 20 3B 0D 0A 20        ENDCASE ;.. 
01E7F0:  20 20 20 43 41 53 45 20 69 67 6E 6F 72 65 3A 0D       CASE ignore:.
01E800:  0A 20 20 24 29 0D 0A 20 20 52 45 53 55 4C 54 49    .  $)..  RESULTI
01E810:  53 20 46 41 4C 53 45 0D 0A 24 29 0D 0A 0D 0A 0D    S FALSE..$).....
01E820:  0A 0D 0A 2F 2A 20 54 68 69 73 20 69 73 20 74 68    .../* This is th
01E830:  65 20 62 75 66 66 65 72 20 65 64 69 74 20 72 6F    e buffer edit ro
01E840:  75 74 69 6E 65 20 2A 2F 0D 0A 0D 0A 4C 45 54 20    utine */....LET 
01E850:  62 75 66 66 65 72 28 6C 69 6E 65 29 20 3D 20 56    buffer(line) = V
01E860:  41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45    ALOF....$(..  LE
01E870:  54 20 6B 65 79 70 72 65 73 73 20 3D 20 30 0D 0A    T keypress = 0..
01E880:  20 20 24 28 0D 0A 20 20 20 20 74 61 62 28 36 2C      $(..    tab(6,
01E890:  73 63 72 68 65 69 67 68 74 29 20 3B 20 77 72 69    scrheight) ; wri
01E8A0:  74 65 66 28 22 25 49 34 22 2C 6C 69 6E 65 6E 75    tef("%I4",linenu
01E8B0:  6D 62 65 72 29 0D 0A 20 20 20 20 74 61 62 28 31    mber)..    tab(1
01E8C0:  38 2C 73 63 72 68 65 69 67 68 74 29 20 3B 20 77    8,scrheight) ; w
01E8D0:  72 69 74 65 66 28 22 25 49 32 22 2C 78 29 0D 0A    ritef("%I2",x)..
01E8E0:  20 20 20 20 74 61 62 28 78 2C 79 29 0D 0A 20 20        tab(x,y)..  
01E8F0:  20 20 63 75 72 73 65 6E 28 29 0D 0A 20 20 20 20      cursen()..    
01E900:  6B 65 79 70 72 65 73 73 20 3A 3D 20 72 64 63 68    keypress := rdch
01E910:  28 29 0D 0A 20 20 20 20 63 75 72 73 64 69 28 29    ()..    cursdi()
01E920:  0D 0A 20 20 20 20 6B 65 79 70 72 65 73 73 20 3A    ..    keypress :
01E930:  3D 20 62 75 69 6C 64 62 75 66 66 28 6C 69 6E 65    = buildbuff(line
01E940:  2C 6B 65 79 70 72 65 73 73 29 0D 0A 20 20 24 29    ,keypress)..  $)
01E950:  20 52 45 50 45 41 54 55 4E 54 49 4C 20 6B 65 79     REPEATUNTIL key
01E960:  70 72 65 73 73 0D 0A 20 20 70 72 65 76 21 79 20    press..  prev!y 
01E970:  3A 3D 20 6C 69 6E 65 6C 65 6E 67 74 68 28 6C 69    := linelength(li
01E980:  6E 65 2B 31 29 2D 31 0D 0A 20 20 52 45 53 55 4C    ne+1)-1..  RESUL
01E990:  54 49 53 20 6B 65 79 70 72 65 73 73 0D 0A 24 29    TIS keypress..$)
01E9A0:  0D 0A 0D 0A 0D 0A 41 4E 44 20 69 6E 69 74 62 75    ......AND initbu
01E9B0:  66 66 28 6C 69 6E 65 2C 66 72 6F 6D 29 20 42 45    ff(line,from) BE
01E9C0:  0D 0A 0D 0A 24 28 0D 0A 20 20 21 6C 69 6E 65 20    ....$(..  !line 
01E9D0:  3A 3D 20 30 0D 0A 20 20 24 28 0D 0A 20 20 20 20    := 0..  $(..    
01E9E0:  21 6C 69 6E 65 20 3A 3D 20 21 6C 69 6E 65 20 2B    !line := !line +
01E9F0:  20 31 0D 0A 20 20 20 20 6C 69 6E 65 21 28 21 6C     1..    line!(!l
01EA00:  69 6E 65 29 20 3A 3D 20 74 65 78 74 73 74 61 72    ine) := textstar
01EA10:  74 25 66 72 6F 6D 0D 0A 20 20 20 20 66 72 6F 6D    t%from..    from
01EA20:  20 3A 3D 20 66 72 6F 6D 20 2B 20 31 0D 0A 20 20     := from + 1..  
01EA30:  24 29 20 52 45 50 45 41 54 55 4E 54 49 4C 20 74    $) REPEATUNTIL t
01EA40:  65 78 74 73 74 61 72 74 25 28 66 72 6F 6D 2D 31    extstart%(from-1
01EA50:  29 20 3D 20 31 33 0D 0A 24 29 0D 0A 0D 0A 0D 0A    ) = 13..$)......
01EA60:  0D 0A 0D 0A 2F 2A 20 54 68 65 20 61 62 6F 76 65    ..../* The above
01EA70:  20 72 6F 75 74 69 6E 65 73 20 77 6F 72 6B 20 77     routines work w
01EA80:  69 74 68 20 70 6F 69 6E 74 65 72 73 20 61 6E 64    ith pointers and
01EA90:  20 77 6F 72 64 73 2E 20 54 68 65 20 6E 65 78 74     words. The next
01EAA0:  20 73 65 74 20 6F 66 20 72 6F 75 74 69 6E 65 73     set of routines
01EAB0:  0D 0A 20 20 20 77 6F 72 6B 20 77 69 74 68 20 62    ..   work with b
01EAC0:  79 74 65 73 20 61 6E 64 20 61 72 72 61 79 20 69    ytes and array i
01EAD0:  6E 64 69 63 65 73 20 2A 2F 0D 0A 0D 0A 0D 0A 4C    ndices */......L
01EAE0:  45 54 20 6C 69 6E 65 6C 65 6E 67 74 68 28 66 72    ET linelength(fr
01EAF0:  6F 6D 29 20 3D 20 56 41 4C 4F 46 0D 0A 0D 0A 24    om) = VALOF....$
01EB00:  28 0D 0A 20 20 4C 45 54 20 73 6F 66 61 72 20 3D    (..  LET sofar =
01EB10:  20 31 0D 0A 20 20 57 48 49 4C 45 20 74 65 78 74     1..  WHILE text
01EB20:  73 74 61 72 74 25 66 72 6F 6D 20 4E 45 20 31 33    start%from NE 13
01EB30:  20 44 4F 20 24 28 20 73 6F 66 61 72 20 3A 3D 20     DO $( sofar := 
01EB40:  73 6F 66 61 72 20 2B 20 31 20 3B 20 66 72 6F 6D    sofar + 1 ; from
01EB50:  20 3A 3D 20 66 72 6F 6D 20 2B 20 31 20 24 29 0D     := from + 1 $).
01EB60:  0A 20 20 52 45 53 55 4C 54 49 53 20 73 6F 66 61    .  RESULTIS sofa
01EB70:  72 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 4C 45 54    r..$)........LET
01EB80:  20 77 72 69 74 65 28 66 72 6F 6D 2C 78 2C 79 29     write(from,x,y)
01EB90:  20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 74 61 62     BE....$(..  tab
01EBA0:  28 78 2C 79 29 0D 0A 20 20 46 4F 52 20 61 20 3D    (x,y)..  FOR a =
01EBB0:  20 66 72 6F 6D 20 54 4F 20 66 72 6F 6D 20 2B 20     from TO from + 
01EBC0:  6C 69 6E 65 6C 65 6E 67 74 68 28 66 72 6F 6D 29    linelength(from)
01EBD0:  20 2D 20 32 20 44 4F 20 77 72 63 68 28 74 65 78     - 2 DO wrch(tex
01EBE0:  74 73 74 61 72 74 25 61 29 0D 0A 20 20 70 72 65    tstart%a)..  pre
01EBF0:  76 21 79 20 3A 3D 20 6C 69 6E 65 6C 65 6E 67 74    v!y := linelengt
01EC00:  68 28 66 72 6F 6D 29 20 2D 20 31 0D 0A 24 29 0D    h(from) - 1..$).
01EC10:  0A 0D 0A 0D 0A 4C 45 54 20 73 74 61 74 75 73 28    .....LET status(
01EC20:  29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 74 61    ) BE....$(..  ta
01EC30:  62 28 31 2C 73 63 72 68 65 69 67 68 74 29 0D 0A    b(1,scrheight)..
01EC40:  20 20 54 45 53 54 20 76 65 72 3D 34 20 54 48 45      TEST ver=4 THE
01EC50:  4E 0D 0A 20 20 20 20 77 72 69 74 65 66 28 22 4C    N..    writef("L
01EC60:  69 6E 65 3A 25 49 34 20 43 6F 6C 75 6D 6E 3A 25    ine:%I4 Column:%
01EC70:  49 32 20 28 53 54 4F 50 20 74 6F 20 6D 65 6E 75    I2 (STOP to menu
01EC80:  29 22 2C 6C 69 6E 65 6E 75 6D 62 65 72 2C 78 29    )",linenumber,x)
01EC90:  0D 0A 20 20 45 4C 53 45 0D 0A 20 20 20 20 77 72    ..  ELSE..    wr
01ECA0:  69 74 65 66 28 22 4C 69 6E 65 3A 25 49 34 20 43    itef("Line:%I4 C
01ECB0:  6F 6C 75 6D 6E 3A 25 49 32 20 28 45 53 43 20 74    olumn:%I2 (ESC t
01ECC0:  6F 20 6D 65 6E 75 29 22 2C 6C 69 6E 65 6E 75 6D    o menu)",linenum
01ECD0:  62 65 72 2C 78 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A    ber,x)..$)......
01ECE0:  0D 0A 4C 45 54 20 63 6C 73 28 29 20 42 45 0D 0A    ..LET cls() BE..
01ECF0:  0D 0A 24 28 0D 0A 20 20 63 6C 65 61 72 73 63 72    ..$(..  clearscr
01ED00:  28 29 0D 0A 20 20 63 75 72 73 6F 6E 28 29 20 3B    ()..  curson() ;
01ED10:  20 63 75 72 73 64 69 28 29 0D 0A 20 20 46 4F 52     cursdi()..  FOR
01ED20:  20 61 20 3D 20 31 20 54 4F 20 73 63 72 68 65 69     a = 1 TO scrhei
01ED30:  67 68 74 2D 31 20 44 4F 20 70 72 65 76 21 61 20    ght-1 DO prev!a 
01ED40:  3A 3D 20 30 0D 0A 20 20 73 74 61 74 75 73 28 29    := 0..  status()
01ED50:  0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ..$)............
01ED60:  2F 2A 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20    /* This routine 
01ED70:  77 69 6C 6C 20 6D 6F 76 65 20 74 68 65 20 74 65    will move the te
01ED80:  78 74 20 6F 6E 20 74 68 65 20 73 63 72 65 65 6E    xt on the screen
01ED90:  20 64 6F 77 6E 20 61 20 6C 69 6E 65 20 61 6E 64     down a line and
01EDA0:  20 61 6C 74 65 72 20 74 68 65 0D 0A 20 20 20 70     alter the..   p
01EDB0:  72 65 76 69 6F 75 73 20 61 72 72 61 79 20 2A 2F    revious array */
01EDC0:  0D 0A 0D 0A 4C 45 54 20 64 6F 77 6E 28 29 20 42    ....LET down() B
01EDD0:  45 0D 0A 0D 0A 24 28 0D 0A 20 20 74 61 62 28 31    E....$(..  tab(1
01EDE0:  2C 31 29 20 3B 20 72 65 76 6C 66 28 29 20 3B 20    ,1) ; revlf() ; 
01EDF0:  77 72 63 68 28 31 33 29 0D 0A 20 20 73 74 61 74    wrch(13)..  stat
01EE00:  75 73 28 29 20 3B 20 73 70 61 63 65 73 28 70 72    us() ; spaces(pr
01EE10:  65 76 21 28 73 63 72 68 65 69 67 68 74 2D 31 29    ev!(scrheight-1)
01EE20:  2D 33 33 29 0D 0A 20 20 46 4F 52 20 61 20 3D 20    -33)..  FOR a = 
01EE30:  73 63 72 68 65 69 67 68 74 2D 31 20 54 4F 20 32    scrheight-1 TO 2
01EE40:  20 42 59 20 2D 31 20 44 4F 20 70 72 65 76 21 61     BY -1 DO prev!a
01EE50:  20 3A 3D 20 70 72 65 76 21 28 61 2D 31 29 0D 0A     := prev!(a-1)..
01EE60:  20 20 70 72 65 76 21 31 20 3A 3D 20 30 0D 0A 24      prev!1 := 0..$
01EE70:  29 0D 0A 0D 0A 41 4E 44 20 72 65 76 6C 66 28 29    )....AND revlf()
01EE80:  20 42 45 0D 0A 24 28 0D 0A 20 20 54 45 53 54 20     BE..$(..  TEST 
01EE90:  76 65 72 3D 32 20 54 48 45 4E 0D 0A 20 20 20 20    ver=2 THEN..    
01EEA0:  77 72 63 68 28 31 31 29 0D 0A 20 20 45 4C 53 45    wrch(11)..  ELSE
01EEB0:  0D 0A 20 20 24 28 0D 0A 20 20 20 20 65 73 63 63    ..  $(..    escc
01EEC0:  6F 64 65 28 27 49 27 29 0D 0A 20 20 24 29 0D 0A    ode('I')..  $)..
01EED0:  24 29 0D 0A 0D 0A 2F 2A 20 54 68 69 73 20 72 6F    $)..../* This ro
01EEE0:  75 74 69 6E 65 20 77 69 6C 6C 20 6D 6F 76 65 20    utine will move 
01EEF0:  74 68 65 20 74 65 78 74 20 75 70 20 6F 6E 65 20    the text up one 
01EF00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
01EF10:  1A 00 00 00 02 09 50 E5 1A 00 C1 02 00 00 00 02    ......P.........
01EF20:  1A 00 C2 02 00 00 00 02 1A 00 C3 02 00 00 00 02    ................
01EF30:  1A 00 C4 02 00 00 00 02 1A 00 C5 02 00 00 00 02    ................
01EF40:  1A 00 C6 02 00 00 00 02 1A 00 C7 02 00 00 00 02    ................
01EF50:  1A 00 C8 02 00 00 00 02 1A 00 C9 02 00 00 00 02    ................
01EF60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EF70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EF80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EF90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EFA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EFB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EFC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EFD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EFE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EFF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01F000:  6C 69 6E 65 20 61 6E 64 20 61 6C 74 65 72 20 74    line and alter t
01F010:  68 65 20 70 72 65 76 69 6F 75 73 20 61 72 72 61    he previous arra
01F020:  79 20 2A 2F 0D 0A 0D 0A 4C 45 54 20 75 70 28 29    y */....LET up()
01F030:  20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 74 61 62     BE....$(..  tab
01F040:  28 31 2C 73 63 72 68 65 69 67 68 74 29 20 3B 20    (1,scrheight) ; 
01F050:  73 70 61 63 65 73 28 34 30 29 0D 0A 20 20 77 72    spaces(40)..  wr
01F060:  63 68 28 31 30 29 20 3B 20 77 72 63 68 28 31 33    ch(10) ; wrch(13
01F070:  29 0D 0A 20 20 46 4F 52 20 61 20 3D 20 31 20 54    )..  FOR a = 1 T
01F080:  4F 20 73 63 72 68 65 69 67 68 74 2D 32 20 44 4F    O scrheight-2 DO
01F090:  20 70 72 65 76 21 61 20 3A 3D 20 70 72 65 76 21     prev!a := prev!
01F0A0:  28 61 2B 31 29 0D 0A 20 20 70 72 65 76 21 28 73    (a+1)..  prev!(s
01F0B0:  63 72 68 65 69 67 68 74 2D 31 29 20 3A 3D 20 30    crheight-1) := 0
01F0C0:  0D 0A 20 20 73 74 61 74 75 73 28 29 0D 0A 24 29    ..  status()..$)
01F0D0:  0D 0A 0D 0A 0D 0A 0D 0A 2F 2A 0D 0A 20 20 20 54    ......../*..   T
01F0E0:  68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C    his routine will
01F0F0:  20 72 65 70 72 69 6E 74 20 74 68 65 20 73 63 72     reprint the scr
01F100:  65 65 6E 20 66 72 6F 6D 20 74 68 65 20 79 20 70    een from the y p
01F110:  6F 73 69 74 69 6F 6E 20 61 6E 64 20 74 65 78 74    osition and text
01F120:  20 70 6F 73 69 74 69 6F 6E 0D 0A 20 20 20 67 69     position..   gi
01F130:  76 65 6E 2E 0D 0A 2A 2F 0D 0A 0D 0A 4C 45 54 20    ven...*/....LET 
01F140:  73 63 72 65 65 6E 28 66 72 6F 6D 2C 79 70 6F 73    screen(from,ypos
01F150:  29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 46 4F    ) BE....$(..  FO
01F160:  52 20 79 20 3D 20 79 70 6F 73 20 54 4F 20 73 63    R y = ypos TO sc
01F170:  72 68 65 69 67 68 74 2D 31 20 44 4F 0D 0A 20 20    rheight-1 DO..  
01F180:  24 28 0D 0A 20 20 20 20 4C 45 54 20 6C 20 3D 20    $(..    LET l = 
01F190:  30 0D 0A 20 20 20 20 74 61 62 28 31 2C 79 29 0D    0..    tab(1,y).
01F1A0:  0A 20 20 20 20 49 46 20 66 72 6F 6D 20 3E 20 74    .    IF from > t
01F1B0:  65 78 74 65 6E 64 20 54 48 45 4E 20 24 28 20 73    extend THEN $( s
01F1C0:  70 61 63 65 73 28 38 30 29 20 3B 20 70 72 65 76    paces(80) ; prev
01F1D0:  21 79 20 3A 3D 20 30 20 3B 20 42 52 45 41 4B 20    !y := 0 ; BREAK 
01F1E0:  24 29 0D 0A 20 20 20 20 6C 20 3A 3D 20 6C 69 6E    $)..    l := lin
01F1F0:  65 6C 65 6E 67 74 68 28 66 72 6F 6D 29 20 2D 20    elength(from) - 
01F200:  31 0D 0A 20 20 20 20 46 4F 52 20 61 20 3D 20 66    1..    FOR a = f
01F210:  72 6F 6D 20 54 4F 20 66 72 6F 6D 20 2B 20 6C 20    rom TO from + l 
01F220:  2D 20 31 20 44 4F 20 77 72 63 68 28 74 65 78 74    - 1 DO wrch(text
01F230:  73 74 61 72 74 25 61 29 0D 0A 20 20 20 20 73 70    start%a)..    sp
01F240:  61 63 65 73 28 70 72 65 76 21 79 2D 6C 29 0D 0A    aces(prev!y-l)..
01F250:  20 20 20 20 70 72 65 76 21 79 20 3A 3D 20 6C 0D        prev!y := l.
01F260:  0A 20 20 20 20 66 72 6F 6D 20 3A 3D 20 66 72 6F    .    from := fro
01F270:  6D 20 2B 20 6C 20 2B 20 31 0D 0A 20 20 24 29 0D    m + l + 1..  $).
01F280:  0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 4C 45 54 20 66    .$)........LET f
01F290:  6F 72 77 61 72 64 28 70 74 72 29 20 3D 20 56 41    orward(ptr) = VA
01F2A0:  4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 49 46 20    LOF....$(..  IF 
01F2B0:  70 74 72 20 2B 20 6C 69 6E 65 6C 65 6E 67 74 68    ptr + linelength
01F2C0:  28 70 74 72 29 20 3E 20 74 65 78 74 65 6E 64 20    (ptr) > textend 
01F2D0:  54 48 45 4E 0D 0A 20 20 20 20 24 28 20 62 65 65    THEN..    $( bee
01F2E0:  70 28 29 20 3B 20 52 45 53 55 4C 54 49 53 20 70    p() ; RESULTIS p
01F2F0:  74 72 20 24 29 0D 0A 20 20 70 74 72 20 3A 3D 20    tr $)..  ptr := 
01F300:  70 74 72 20 2B 20 6C 69 6E 65 6C 65 6E 67 74 68    ptr + linelength
01F310:  28 70 74 72 29 0D 0A 20 20 52 45 53 55 4C 54 49    (ptr)..  RESULTI
01F320:  53 20 70 74 72 0D 0A 24 29 0D 0A 0D 0A 41 4E 44    S ptr..$)....AND
01F330:  20 62 61 63 6B 6C 69 6E 65 28 70 74 72 29 20 3D     backline(ptr) =
01F340:  20 56 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20     VALOF....$(..  
01F350:  49 46 20 70 74 72 20 3D 20 30 20 54 48 45 4E 20    IF ptr = 0 THEN 
01F360:  24 28 20 62 65 65 70 28 29 20 3B 20 52 45 53 55    $( beep() ; RESU
01F370:  4C 54 49 53 20 70 74 72 20 24 29 0D 0A 20 20 70    LTIS ptr $)..  p
01F380:  74 72 20 3A 3D 20 70 74 72 20 2D 20 31 0D 0A 20    tr := ptr - 1.. 
01F390:  20 20 20 52 45 50 45 41 54 57 48 49 4C 45 20 74       REPEATWHILE t
01F3A0:  65 78 74 73 74 61 72 74 25 28 70 74 72 2D 31 29    extstart%(ptr-1)
01F3B0:  20 4E 45 20 31 33 20 4C 4F 47 41 4E 44 20 70 74     NE 13 LOGAND pt
01F3C0:  72 20 4E 45 20 30 0D 0A 20 20 52 45 53 55 4C 54    r NE 0..  RESULT
01F3D0:  49 53 20 70 74 72 0D 0A 24 29 0D 0A 0D 0A 0D 0A    IS ptr..$)......
01F3E0:  2F 2A 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20    /* This routine 
01F3F0:  77 69 6C 6C 20 72 65 63 6F 6E 73 74 72 75 63 74    will reconstruct
01F400:  20 74 68 65 20 73 63 72 65 65 6E 20 2A 2F 0D 0A     the screen */..
01F410:  0D 0A 4C 45 54 20 72 65 63 6F 6E 73 74 72 75 63    ..LET reconstruc
01F420:  74 28 66 72 6F 6D 29 20 42 45 0D 0A 0D 0A 24 28    t(from) BE....$(
01F430:  0D 0A 20 20 4C 45 54 20 74 70 74 72 20 3D 20 66    ..  LET tptr = f
01F440:  72 6F 6D 0D 0A 20 20 63 6C 73 28 29 0D 0A 20 20    rom..  cls()..  
01F450:  46 4F 52 20 61 20 3D 20 79 20 54 4F 20 32 20 42    FOR a = y TO 2 B
01F460:  59 20 2D 31 20 44 4F 0D 0A 20 20 24 28 0D 0A 20    Y -1 DO..  $(.. 
01F470:  20 20 20 54 45 53 54 20 74 70 74 72 20 3D 20 30       TEST tptr = 0
01F480:  20 54 48 45 4E 20 24 28 20 79 20 3A 3D 20 79 20     THEN $( y := y 
01F490:  2D 20 61 20 2B 20 31 20 3B 20 42 52 45 41 4B 20    - a + 1 ; BREAK 
01F4A0:  24 29 0D 0A 20 20 20 20 45 4C 53 45 20 74 70 74    $)..    ELSE tpt
01F4B0:  72 20 3A 3D 20 62 61 63 6B 6C 69 6E 65 28 74 70    r := backline(tp
01F4C0:  74 72 29 0D 0A 20 20 24 29 0D 0A 20 20 73 63 72    tr)..  $)..  scr
01F4D0:  65 65 6E 28 74 70 74 72 2C 31 29 0D 0A 24 29 0D    een(tptr,1)..$).
01F4E0:  0A 0D 0A 0D 0A 4C 45 54 20 65 72 72 6F 72 28 6D    .....LET error(m
01F4F0:  65 73 73 61 67 65 29 20 42 45 0D 0A 0D 0A 24 28    essage) BE....$(
01F500:  0D 0A 20 20 74 61 62 28 31 2C 73 63 72 68 65 69    ..  tab(1,scrhei
01F510:  67 68 74 29 20 3B 20 77 72 69 74 65 66 28 22 25    ght) ; writef("%
01F520:  53 2E 20 48 69 74 20 61 6E 79 20 6B 65 79 20 74    S. Hit any key t
01F530:  6F 20 63 6F 6E 74 69 6E 75 65 22 2C 6D 65 73 73    o continue",mess
01F540:  61 67 65 29 0D 0A 20 20 62 65 65 70 28 29 0D 0A    age)..  beep()..
01F550:  20 20 72 64 63 68 28 29 0D 0A 20 20 74 61 62 28      rdch()..  tab(
01F560:  33 33 2C 73 63 72 68 65 69 67 68 74 29 20 3B 20    33,scrheight) ; 
01F570:  73 70 61 63 65 73 28 32 30 29 20 3B 20 73 74 61    spaces(20) ; sta
01F580:  74 75 73 28 29 0D 0A 20 20 62 75 66 66 70 72 69    tus()..  buffpri
01F590:  6E 74 20 3A 3D 20 54 52 55 45 0D 0A 20 20 72 65    nt := TRUE..  re
01F5A0:  63 6F 6E 73 74 72 75 63 74 28 74 65 78 74 70 74    construct(textpt
01F5B0:  72 29 0D 0A 20 20 6C 6F 6E 67 6A 75 6D 70 28 65    r)..  longjump(e
01F5C0:  72 72 6C 61 62 2C 65 72 72 76 65 63 29 0D 0A 24    rrlab,errvec)..$
01F5D0:  29 0D 0A 0D 0A 0D 0A 0D 0A 4C 45 54 20 6D 61 6B    )........LET mak
01F5E0:  65 73 70 61 63 65 28 61 74 2C 73 69 7A 65 29 20    espace(at,size) 
01F5F0:  42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 62 79 74 65    BE....$(..  byte
01F600:  6D 6F 76 65 28 74 65 78 74 73 74 61 72 74 2A 32    move(textstart*2
01F610:  2B 61 74 2C 74 65 78 74 73 74 61 72 74 2A 32 2B    +at,textstart*2+
01F620:  61 74 2B 73 69 7A 65 2C 74 65 78 74 65 6E 64 2D    at+size,textend-
01F630:  61 74 2B 31 29 0D 0A 20 20 74 65 78 74 65 6E 64    at+1)..  textend
01F640:  20 3A 3D 20 74 65 78 74 65 6E 64 20 2B 20 73 69     := textend + si
01F650:  7A 65 0D 0A 24 29 0D 0A 0D 0A 0D 0A 41 4E 44 20    ze..$)......AND 
01F660:  63 6C 6F 73 65 73 70 61 63 65 28 61 74 2C 73 69    closespace(at,si
01F670:  7A 65 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20    ze) BE....$(..  
01F680:  62 79 74 65 6D 6F 76 65 28 74 65 78 74 73 74 61    bytemove(textsta
01F690:  72 74 2A 32 2B 61 74 2B 73 69 7A 65 2C 74 65 78    rt*2+at+size,tex
01F6A0:  74 73 74 61 72 74 2A 32 2B 61 74 2C 74 65 78 74    tstart*2+at,text
01F6B0:  65 6E 64 2D 61 74 2D 73 69 7A 65 2B 31 29 0D 0A    end-at-size+1)..
01F6C0:  20 20 74 65 78 74 65 6E 64 20 3A 3D 20 74 65 78      textend := tex
01F6D0:  74 65 6E 64 20 2D 20 73 69 7A 65 0D 0A 24 29 0D    tend - size..$).
01F6E0:  0A 0D 0A 0D 0A 0D 0A 41 4E 44 20 63 6F 70 79 28    .......AND copy(
01F6F0:  66 72 6F 6D 2C 64 65 73 74 2C 6E 75 6D 62 65 72    from,dest,number
01F700:  29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 46 4F    ) BE....$(..  FO
01F710:  52 20 61 20 3D 20 30 20 54 4F 20 6E 75 6D 62 65    R a = 0 TO numbe
01F720:  72 2D 31 20 44 4F 20 74 65 78 74 73 74 61 72 74    r-1 DO textstart
01F730:  25 28 64 65 73 74 2B 61 29 20 3A 3D 20 66 72 6F    %(dest+a) := fro
01F740:  6D 21 61 0D 0A 24 29 0D 0A 0D 0A 0D 0A 2F 2A 20    m!a..$)....../* 
01F750:  41 20 62 75 66 66 65 72 20 6C 69 6E 65 20 69 73    A buffer line is
01F760:  20 74 6F 20 62 65 20 69 6E 73 65 72 74 65 64 20     to be inserted 
01F770:  61 74 20 61 74 20 2A 2F 0D 0A 0D 0A 4C 45 54 20    at at */....LET 
01F780:  6C 69 6E 73 65 72 74 28 6C 69 6E 65 2C 61 74 29    linsert(line,at)
01F790:  20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 54     BE....$(..  LET
01F7A0:  20 63 75 72 72 65 6E 74 2C 20 6E 65 77 20 3D 20     current, new = 
01F7B0:  6C 69 6E 65 6C 65 6E 67 74 68 28 61 74 29 2C 20    linelength(at), 
01F7C0:  6C 69 6E 65 21 30 0D 0A 20 20 54 45 53 54 20 6E    line!0..  TEST n
01F7D0:  65 77 2D 63 75 72 72 65 6E 74 2B 74 65 78 74 65    ew-current+texte
01F7E0:  6E 64 20 3C 20 6D 61 78 63 68 72 20 54 48 45 4E    nd < maxchr THEN
01F7F0:  0D 0A 20 20 24 28 0D 0A 20 20 20 20 54 45 53 54    ..  $(..    TEST
01F800:  20 63 75 72 72 65 6E 74 3E 6E 65 77 20 54 48 45     current>new THE
01F810:  4E 20 63 6C 6F 73 65 73 70 61 63 65 28 61 74 2C    N closespace(at,
01F820:  63 75 72 72 65 6E 74 2D 6E 65 77 29 0D 0A 20 20    current-new)..  
01F830:  20 20 45 4C 53 45 20 49 46 20 63 75 72 72 65 6E      ELSE IF curren
01F840:  74 3C 6E 65 77 20 54 48 45 4E 20 6D 61 6B 65 73    t<new THEN makes
01F850:  70 61 63 65 28 61 74 2C 6E 65 77 2D 63 75 72 72    pace(at,new-curr
01F860:  65 6E 74 29 0D 0A 20 20 20 20 63 6F 70 79 28 6C    ent)..    copy(l
01F870:  69 6E 65 2B 31 2C 61 74 2C 6E 65 77 29 0D 0A 20    ine+1,at,new).. 
01F880:  20 24 29 0D 0A 20 20 45 4C 53 45 20 65 72 72 6F     $)..  ELSE erro
01F890:  72 28 22 4E 6F 20 72 6F 6F 6D 22 29 0D 0A 24 29    r("No room")..$)
01F8A0:  0D 0A 0D 0A 0D 0A 0D 0A 4C 45 54 20 67 65 74 66    ........LET getf
01F8B0:  69 6C 65 6E 61 6D 65 28 78 2C 79 2C 6E 61 6D 65    ilename(x,y,name
01F8C0:  29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 74 61    ) BE....$(..  ta
01F8D0:  62 28 78 2C 79 29 20 3B 20 77 72 69 74 65 73 28    b(x,y) ; writes(
01F8E0:  22 45 6E 74 65 72 20 66 69 6C 65 20 6E 61 6D 65    "Enter file name
01F8F0:  3A 20 22 29 0D 0A 20 20 63 75 72 73 65 6E 28 29    : ")..  cursen()
01F900:  20 3B 20 72 65 61 64 73 28 6E 61 6D 65 29 20 3B     ; reads(name) ;
01F910:  20 63 75 72 73 64 69 28 29 0D 0A 20 20 6E 65 77     cursdi()..  new
01F920:  6C 69 6E 65 28 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A    line()..$)......
01F930:  0D 0A 4C 45 54 20 6C 6F 61 64 74 65 78 74 28 6C    ..LET loadtext(l
01F940:  69 6E 65 29 20 3D 20 56 41 4C 4F 46 0D 0A 0D 0A    ine) = VALOF....
01F950:  24 28 0D 0A 20 20 4C 45 54 20 6E 61 6D 65 20 3D    $(..  LET name =
01F960:  20 56 45 43 20 32 30 0D 0A 20 20 67 65 74 66 69     VEC 20..  getfi
01F970:  6C 65 6E 61 6D 65 28 32 35 2C 31 39 2C 6E 61 6D    lename(25,19,nam
01F980:  65 29 0D 0A 20 20 54 45 53 54 20 66 69 6E 64 69    e)..  TEST findi
01F990:  6E 70 75 74 28 6E 61 6D 65 2C 66 69 6C 65 29 20    nput(name,file) 
01F9A0:  54 48 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20    THEN..  $(..    
01F9B0:  4C 45 54 20 63 68 61 72 20 3D 20 30 0D 0A 20 20    LET char = 0..  
01F9C0:  20 20 74 65 78 74 70 74 72 2C 20 78 2C 20 79 2C      textptr, x, y,
01F9D0:  20 6C 69 6E 65 6E 75 6D 62 65 72 2C 20 74 65 78     linenumber, tex
01F9E0:  74 65 6E 64 20 3A 3D 20 30 2C 20 31 2C 20 31 2C    tend := 0, 1, 1,
01F9F0:  20 31 2C 20 2D 31 0D 0A 20 20 20 20 74 65 78 74     1, -1..    text
01FA00:  73 74 61 72 74 25 30 20 3A 3D 20 31 33 0D 0A 20    start%0 := 13.. 
01FA10:  20 20 20 63 68 61 72 20 3A 3D 20 72 65 61 64 63       char := readc
01FA20:  68 28 66 69 6C 65 29 0D 0A 20 20 20 20 55 4E 54    h(file)..    UNT
01FA30:  49 4C 20 63 68 61 72 20 3D 20 73 6F 66 74 65 6F    IL char = softeo
01FA40:  66 63 68 20 4C 4F 47 4F 52 20 63 68 61 72 20 3D    fch LOGOR char =
01FA50:  20 65 6E 64 73 74 72 65 61 6D 63 68 20 4C 4F 47     endstreamch LOG
01FA60:  4F 52 20 74 65 78 74 65 6E 64 20 3D 20 6D 61 78    OR textend = max
01FA70:  63 68 72 20 44 4F 0D 0A 20 20 20 20 24 28 0D 0A    chr DO..    $(..
01FA80:  20 20 20 20 20 20 55 4E 4C 45 53 53 20 63 68 61          UNLESS cha
01FA90:  72 20 3D 20 31 30 20 54 48 45 4E 0D 0A 20 20 20    r = 10 THEN..   
01FAA0:  20 20 20 24 28 0D 0A 20 20 20 20 20 20 20 20 74       $(..        t
01FAB0:  65 78 74 65 6E 64 20 3A 3D 20 74 65 78 74 65 6E    extend := texten
01FAC0:  64 20 2B 20 31 0D 0A 20 20 20 20 20 20 20 20 74    d + 1..        t
01FAD0:  65 78 74 73 74 61 72 74 25 74 65 78 74 65 6E 64    extstart%textend
01FAE0:  20 3A 3D 20 63 68 61 72 0D 0A 20 20 20 20 20 20     := char..      
01FAF0:  24 29 0D 0A 20 20 20 20 20 20 63 68 61 72 20 3A    $)..      char :
01FB00:  3D 20 72 65 61 64 63 68 28 66 69 6C 65 29 0D 0A    = readch(file)..
01FB10:  20 20 20 20 24 29 0D 0A 20 20 20 20 55 4E 4C 45        $)..    UNLE
01FB20:  53 53 20 74 65 78 74 73 74 61 72 74 25 74 65 78    SS textstart%tex
01FB30:  74 65 6E 64 20 3D 20 31 33 20 44 4F 0D 0A 20 20    tend = 13 DO..  
01FB40:  20 20 24 28 0D 0A 20 20 20 20 20 20 74 65 78 74      $(..      text
01FB50:  65 6E 64 20 3A 3D 20 74 65 78 74 65 6E 64 20 2B    end := textend +
01FB60:  20 31 0D 0A 20 20 20 20 20 20 74 65 78 74 73 74     1..      textst
01FB70:  61 72 74 25 74 65 78 74 65 6E 64 20 3A 3D 20 31    art%textend := 1
01FB80:  33 20 20 20 20 0D 0A 20 20 20 20 24 29 0D 0A 20    3    ..    $).. 
01FB90:  20 20 20 49 46 20 74 65 78 74 65 6E 64 20 3E 3D       IF textend >=
01FBA0:  20 6D 61 78 63 68 72 20 54 48 45 4E 0D 0A 20 20     maxchr THEN..  
01FBB0:  20 20 24 28 0D 0A 20 20 20 20 20 20 74 65 78 74      $(..      text
01FBC0:  65 6E 64 20 3A 3D 20 74 65 78 74 65 6E 64 20 2D    end := textend -
01FBD0:  20 31 0D 0A 20 20 20 20 20 20 74 65 78 74 73 74     1..      textst
01FBE0:  61 72 74 25 74 65 78 74 65 6E 64 20 3A 3D 20 31    art%textend := 1
01FBF0:  33 0D 0A 20 20 20 20 20 20 63 6C 6F 73 65 69 6E    3..      closein
01FC00:  28 66 69 6C 65 29 0D 0A 20 20 20 20 20 20 69 6E    (file)..      in
01FC10:  69 74 62 75 66 66 28 6C 69 6E 65 2C 30 29 0D 0A    itbuff(line,0)..
01FC20:  20 20 20 20 20 20 65 72 72 6F 72 28 22 4E 6F 20          error("No 
01FC30:  72 6F 6F 6D 22 29 0D 0A 20 20 20 20 24 29 0D 0A    room")..    $)..
01FC40:  20 20 20 20 49 46 20 74 65 78 74 65 6E 64 20 3D        IF textend =
01FC50:  20 2D 31 20 54 48 45 4E 20 74 65 78 74 65 6E 64     -1 THEN textend
01FC60:  20 3A 3D 20 30 0D 0A 20 20 20 20 63 6C 6F 73 65     := 0..    close
01FC70:  69 6E 28 66 69 6C 65 29 0D 0A 20 20 20 20 52 45    in(file)..    RE
01FC80:  53 55 4C 54 49 53 20 54 52 55 45 0D 0A 20 20 24    SULTIS TRUE..  $
01FC90:  29 0D 0A 20 20 45 4C 53 45 0D 0A 20 20 24 28 0D    )..  ELSE..  $(.
01FCA0:  0A 20 20 20 20 77 72 69 74 65 66 28 22 25 53 20    .    writef("%S 
01FCB0:  6E 6F 74 20 66 6F 75 6E 64 22 2C 6E 61 6D 65 29    not found",name)
01FCC0:  0D 0A 20 20 20 20 72 64 63 68 28 29 0D 0A 20 20    ..    rdch()..  
01FCD0:  20 20 52 45 53 55 4C 54 49 53 20 46 41 4C 53 45      RESULTIS FALSE
01FCE0:  0D 0A 20 20 24 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A    ..  $)..$)......
01FCF0:  41 4E 44 20 73 61 76 65 74 65 78 74 28 29 20 3D    AND savetext() =
01FD00:  20 56 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20     VALOF....$(..  
01FD10:  4C 45 54 20 6E 61 6D 65 20 3D 20 56 45 43 20 32    LET name = VEC 2
01FD20:  30 0D 0A 20 20 4C 45 54 20 64 69 73 63 65 72 72    0..  LET discerr
01FD30:  6F 72 28 66 69 6C 65 29 20 3D 20 56 41 4C 4F 46    or(file) = VALOF
01FD40:  0D 0A 20 20 24 28 0D 0A 20 20 20 20 77 72 69 74    ..  $(..    writ
01FD50:  65 73 28 22 44 69 73 63 20 65 72 72 6F 72 2E 20    es("Disc error. 
01FD60:  48 69 74 20 61 20 6B 65 79 22 29 0D 0A 20 20 20    Hit a key")..   
01FD70:  20 72 64 63 68 28 29 0D 0A 20 20 20 20 63 6C 6F     rdch()..    clo
01FD80:  73 65 6F 75 74 28 66 69 6C 65 29 0D 0A 20 20 20    seout(file)..   
01FD90:  20 52 45 53 55 4C 54 49 53 20 46 41 4C 53 45 0D     RESULTIS FALSE.
01FDA0:  0A 20 20 24 29 0D 0A 20 20 67 65 74 66 69 6C 65    .  $)..  getfile
01FDB0:  6E 61 6D 65 28 32 35 2C 31 39 2C 6E 61 6D 65 29    name(25,19,name)
01FDC0:  0D 0A 20 20 54 45 53 54 20 66 69 6E 64 6F 75 74    ..  TEST findout
01FDD0:  70 75 74 28 6E 61 6D 65 2C 66 69 6C 65 29 20 54    put(name,file) T
01FDE0:  48 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 46    HEN..  $(..    F
01FDF0:  4F 52 20 61 20 3D 20 30 20 54 4F 20 74 65 78 74    OR a = 0 TO text
01FE00:  65 6E 64 20 44 4F 0D 0A 20 20 20 20 24 28 0D 0A    end DO..    $(..
01FE10:  20 20 20 20 20 20 55 4E 4C 45 53 53 20 77 72 69          UNLESS wri
01FE20:  74 65 63 68 28 74 65 78 74 73 74 61 72 74 25 61    tech(textstart%a
01FE30:  2C 66 69 6C 65 29 20 54 48 45 4E 20 52 45 53 55    ,file) THEN RESU
01FE40:  4C 54 49 53 20 64 69 73 63 65 72 72 6F 72 28 66    LTIS discerror(f
01FE50:  69 6C 65 29 0D 0A 20 20 20 20 20 20 49 46 20 74    ile)..      IF t
01FE60:  65 78 74 73 74 61 72 74 25 61 20 3D 20 31 33 20    extstart%a = 13 
01FE70:  54 48 45 4E 20 55 4E 4C 45 53 53 20 77 72 69 74    THEN UNLESS writ
01FE80:  65 63 68 28 31 30 2C 66 69 6C 65 29 20 54 48 45    ech(10,file) THE
01FE90:  4E 0D 0A 20 20 20 20 20 20 20 20 52 45 53 55 4C    N..        RESUL
01FEA0:  54 49 53 20 64 69 73 63 65 72 72 6F 72 28 66 69    TIS discerror(fi
01FEB0:  6C 65 29 0D 0A 20 20 20 20 24 29 0D 0A 20 20 20    le)..    $)..   
01FEC0:  20 63 6C 6F 73 65 6F 75 74 28 66 69 6C 65 29 0D     closeout(file).
01FED0:  0A 20 20 20 20 52 45 53 55 4C 54 49 53 20 54 52    .    RESULTIS TR
01FEE0:  55 45 0D 0A 20 20 24 29 0D 0A 20 20 45 4C 53 45    UE..  $)..  ELSE
01FEF0:  0D 0A 20 20 24 28 0D 0A 20 20 20 20 77 72 69 74    ..  $(..    writ
01FF00:  65 73 28 22 43 61 6E 6E 6F 74 20 6F 70 65 6E 20    es("Cannot open 
01FF10:  22 29 20 3B 20 77 72 69 74 65 73 28 6E 61 6D 65    ") ; writes(name
01FF20:  29 0D 0A 20 20 20 20 52 45 53 55 4C 54 49 53 20    )..    RESULTIS 
01FF30:  46 41 4C 53 45 0D 0A 20 20 24 29 0D 0A 24 29 0D    FALSE..  $)..$).
01FF40:  0A 0D 0A 0D 0A 41 4E 44 20 67 6F 6C 69 6E 65 28    .....AND goline(
01FF50:  29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45    ) BE....$(..  LE
01FF60:  54 20 6C 69 6E 65 6E 75 6D 20 3D 20 30 0D 0A 20    T linenum = 0.. 
01FF70:  20 6C 69 6E 65 6E 75 6D 62 65 72 20 3A 3D 20 31     linenumber := 1
01FF80:  0D 0A 20 20 74 61 62 28 32 35 2C 31 39 29 0D 0A    ..  tab(25,19)..
01FF90:  20 20 77 72 69 74 65 66 28 22 45 6E 74 65 72 20      writef("Enter 
01FFA0:  6C 69 6E 65 20 6E 75 6D 62 65 72 3A 20 22 29 0D    line number: ").
01FFB0:  0A 20 20 63 75 72 73 65 6E 28 29 20 3B 20 6C 69    .  cursen() ; li
01FFC0:  6E 65 6E 75 6D 20 3A 3D 20 72 65 61 64 6E 28 29    nenum := readn()
01FFD0:  20 3B 20 63 75 72 73 64 69 28 29 0D 0A 20 20 74     ; cursdi()..  t
01FFE0:  65 78 74 70 74 72 2C 20 78 20 3A 3D 20 30 2C 20    extptr, x := 0, 
01FFF0:  31 0D 0A 20 20 46 4F 52 20 63 6F 75 6E 74 20 3D    1..  FOR count =
020000:  20 32 20 54 4F 20 6C 69 6E 65 6E 75 6D 20 44 4F     2 TO linenum DO
020010:  0D 0A 20 20 24 28 0D 0A 20 20 20 20 4C 45 54 20    ..  $(..    LET 
020020:  6F 70 74 72 20 3D 20 74 65 78 74 70 74 72 0D 0A    optr = textptr..
020030:  20 20 20 20 74 65 78 74 70 74 72 20 3A 3D 20 66        textptr := f
020040:  6F 72 77 61 72 64 28 74 65 78 74 70 74 72 29 0D    orward(textptr).
020050:  0A 20 20 20 20 49 46 20 6F 70 74 72 20 3D 20 74    .    IF optr = t
020060:  65 78 74 70 74 72 20 54 48 45 4E 20 42 52 45 41    extptr THEN BREA
020070:  4B 0D 0A 20 20 20 20 6C 69 6E 65 6E 75 6D 62 65    K..    linenumbe
020080:  72 20 3A 3D 20 6C 69 6E 65 6E 75 6D 62 65 72 20    r := linenumber 
020090:  2B 20 31 0D 0A 20 20 24 29 0D 0A 20 20 79 20 3A    + 1..  $)..  y :
0200A0:  3D 20 31 32 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A    = 12..$)........
0200B0:  2F 2A 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20    /* This routine 
0200C0:  63 68 65 63 6B 73 20 66 6F 72 20 61 20 6D 61 74    checks for a mat
0200D0:  63 68 20 2A 2F 0D 0A 0D 0A 41 4E 44 20 6D 61 74    ch */....AND mat
0200E0:  63 68 28 66 72 6F 6D 2C 74 61 72 67 65 74 29 20    ch(from,target) 
0200F0:  3D 20 56 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20    = VALOF....$(.. 
020100:  20 46 4F 52 20 61 20 3D 20 31 20 54 4F 20 74 61     FOR a = 1 TO ta
020110:  72 67 65 74 25 30 20 44 4F 0D 0A 20 20 20 20 49    rget%0 DO..    I
020120:  46 20 74 65 78 74 73 74 61 72 74 25 28 66 72 6F    F textstart%(fro
020130:  6D 2B 61 2D 31 29 20 4E 45 20 74 61 72 67 65 74    m+a-1) NE target
020140:  25 61 20 54 48 45 4E 20 52 45 53 55 4C 54 49 53    %a THEN RESULTIS
020150:  20 46 41 4C 53 45 0D 0A 20 20 52 45 53 55 4C 54     FALSE..  RESULT
020160:  49 53 20 54 52 55 45 0D 0A 24 29 0D 0A 0D 0A 0D    IS TRUE..$).....
020170:  0A 0D 0A 2F 2A 20 54 68 69 73 20 69 73 20 74 68    .../* This is th
020180:  65 20 66 69 6E 64 20 73 74 72 69 6E 67 20 72 6F    e find string ro
020190:  75 74 69 6E 65 20 2A 2F 0D 0A 0D 0A 41 4E 44 20    utine */....AND 
0201A0:  66 69 6E 64 73 74 72 69 6E 67 28 29 20 42 45 0D    findstring() BE.
0201B0:  0A 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 6F 70 74    ...$(..  LET opt
0201C0:  72 2C 20 6F 78 2C 20 6F 79 2C 20 6F 6C 69 6E 65    r, ox, oy, oline
0201D0:  20 3D 20 74 65 78 74 70 74 72 2C 20 78 2C 20 79     = textptr, x, y
0201E0:  2C 20 6C 69 6E 65 6E 75 6D 62 65 72 0D 0A 20 20    , linenumber..  
0201F0:  4C 45 54 20 73 65 61 72 63 68 20 3D 20 56 45 43    LET search = VEC
020200:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
020210:  1B 00 00 00 02 09 50 E5 1B 00 C1 02 00 00 00 02    ......P.........
020220:  1B 00 C2 02 00 00 00 02 1B 00 C3 02 00 00 00 02    ................
020230:  1B 00 C4 02 00 00 00 02 1B 00 C5 02 00 00 00 02    ................
020240:  1B 00 C6 02 00 00 00 02 1B 00 C7 02 00 00 00 02    ................
020250:  1B 00 C8 02 00 00 00 02 1B 00 C9 02 00 00 00 02    ................
020260:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
020270:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
020280:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
020290:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0202A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0202B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0202C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0202D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0202E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0202F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
020300:  20 32 30 0D 0A 20 20 74 61 62 28 32 35 2C 31 39     20..  tab(25,19
020310:  29 0D 0A 20 20 77 72 69 74 65 66 28 22 45 6E 74    )..  writef("Ent
020320:  65 72 20 73 74 72 69 6E 67 3A 20 22 29 0D 0A 20    er string: ").. 
020330:  20 63 75 72 73 65 6E 28 29 20 3B 20 72 65 61 64     cursen() ; read
020340:  73 28 73 65 61 72 63 68 29 20 3B 20 63 75 72 73    s(search) ; curs
020350:  64 69 28 29 0D 0A 20 20 74 65 78 74 70 74 72 20    di()..  textptr 
020360:  3A 3D 20 74 65 78 74 70 74 72 20 2B 20 78 20 2D    := textptr + x -
020370:  20 31 0D 0A 20 20 55 4E 4C 45 53 53 20 74 65 78     1..  UNLESS tex
020380:  74 73 74 61 72 74 25 74 65 78 74 70 74 72 3D 31    tstart%textptr=1
020390:  33 20 54 48 45 4E 20 74 65 78 74 70 74 72 20 3A    3 THEN textptr :
0203A0:  3D 20 74 65 78 74 70 74 72 20 2B 20 31 0D 0A 20    = textptr + 1.. 
0203B0:  20 55 4E 4C 45 53 53 20 74 65 78 74 70 74 72 20     UNLESS textptr 
0203C0:  3E 3D 20 74 65 78 74 65 6E 64 20 44 4F 0D 0A 20    >= textend DO.. 
0203D0:  20 24 28 0D 0A 20 20 20 20 54 45 53 54 20 74 65     $(..    TEST te
0203E0:  78 74 73 74 61 72 74 25 74 65 78 74 70 74 72 3D    xtstart%textptr=
0203F0:  31 33 20 54 48 45 4E 0D 0A 20 20 20 20 20 20 6C    13 THEN..      l
020400:  69 6E 65 6E 75 6D 62 65 72 20 3A 3D 20 6C 69 6E    inenumber := lin
020410:  65 6E 75 6D 62 65 72 20 2B 20 31 0D 0A 20 20 20    enumber + 1..   
020420:  20 45 4C 53 45 0D 0A 20 20 20 20 24 28 0D 0A 20     ELSE..    $(.. 
020430:  20 20 20 20 20 49 46 20 6D 61 74 63 68 28 74 65         IF match(te
020440:  78 74 70 74 72 2C 73 65 61 72 63 68 29 20 54 48    xtptr,search) TH
020450:  45 4E 0D 0A 20 20 20 20 20 20 24 28 0D 0A 20 20    EN..      $(..  
020460:  20 20 20 20 20 20 6F 70 74 72 20 3A 3D 20 74 65          optr := te
020470:  78 74 70 74 72 0D 0A 20 20 20 20 20 20 20 20 57    xtptr..        W
020480:  48 49 4C 45 20 74 65 78 74 73 74 61 72 74 25 28    HILE textstart%(
020490:  74 65 78 74 70 74 72 2D 31 29 20 4E 45 20 31 33    textptr-1) NE 13
0204A0:  20 4C 4F 47 41 4E 44 20 74 65 78 74 70 74 72 20     LOGAND textptr 
0204B0:  4E 45 20 30 20 44 4F 0D 0A 20 20 20 20 20 20 20    NE 0 DO..       
0204C0:  20 20 20 74 65 78 74 70 74 72 20 3A 3D 20 74 65       textptr := te
0204D0:  78 74 70 74 72 20 2D 20 31 0D 0A 20 20 20 20 20    xtptr - 1..     
0204E0:  20 20 20 78 2C 20 79 20 3A 3D 20 6F 70 74 72 20       x, y := optr 
0204F0:  2D 20 74 65 78 74 70 74 72 20 2B 20 31 2C 20 31    - textptr + 1, 1
020500:  32 0D 0A 20 20 20 20 20 20 20 20 42 52 45 41 4B    2..        BREAK
020510:  0D 0A 20 20 20 20 20 20 24 29 0D 0A 20 20 20 20    ..      $)..    
020520:  24 29 0D 0A 20 20 20 20 74 65 78 74 70 74 72 20    $)..    textptr 
020530:  3A 3D 20 74 65 78 74 70 74 72 20 2B 20 31 0D 0A    := textptr + 1..
020540:  20 20 20 20 49 46 20 74 65 78 74 70 74 72 20 3E        IF textptr >
020550:  3D 20 74 65 78 74 65 6E 64 20 54 48 45 4E 0D 0A    = textend THEN..
020560:  20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 74 65        $(..      te
020570:  78 74 70 74 72 2C 20 78 2C 20 79 2C 20 6C 69 6E    xtptr, x, y, lin
020580:  65 6E 75 6D 62 65 72 20 3A 3D 20 6F 70 74 72 2C    enumber := optr,
020590:  20 6F 78 2C 20 6F 79 2C 20 6F 6C 69 6E 65 0D 0A     ox, oy, oline..
0205A0:  20 20 20 20 20 20 42 52 45 41 4B 0D 0A 20 20 20          BREAK..   
0205B0:  20 24 29 0D 0A 20 20 24 29 20 52 45 50 45 41 54     $)..  $) REPEAT
0205C0:  0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 2F 2A 20 54    ..$)......../* T
0205D0:  68 69 73 20 69 73 20 74 68 65 20 6D 61 69 6E 20    his is the main 
0205E0:  6D 65 6E 75 20 72 6F 75 74 69 6E 65 20 2A 2F 0D    menu routine */.
0205F0:  0A 0D 0A 4C 45 54 20 6D 65 6E 75 28 6C 69 6E 65    ...LET menu(line
020600:  29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45    ) BE....$(..  LE
020610:  54 20 74 70 74 72 20 3D 20 30 0D 0A 20 20 6C 69    T tptr = 0..  li
020620:  6E 73 65 72 74 28 6C 69 6E 65 2C 74 65 78 74 70    nsert(line,textp
020630:  74 72 29 0D 0A 20 20 24 28 0D 0A 20 20 20 20 4C    tr)..  $(..    L
020640:  45 54 20 6B 65 79 20 3D 20 30 0D 0A 20 20 20 20    ET key = 0..    
020650:  63 6C 65 61 72 73 63 72 28 29 0D 0A 20 20 20 20    clearscr()..    
020660:  74 61 62 28 33 32 2C 34 29 20 20 3B 20 77 72 69    tab(32,4)  ; wri
020670:  74 65 73 28 22 42 43 50 4C 20 65 64 69 74 6F 72    tes("BCPL editor
020680:  22 29 0D 0A 20 20 20 20 74 61 62 28 33 32 2C 35    ")..    tab(32,5
020690:  29 20 20 3B 20 77 72 69 74 65 73 28 22 2D 2D 2D    )  ; writes("---
0206A0:  2D 2D 2D 2D 2D 2D 2D 2D 22 29 0D 0A 20 20 20 20    --------")..    
0206B0:  74 61 62 28 33 32 2C 39 29 20 20 3B 20 77 72 69    tab(32,9)  ; wri
0206C0:  74 65 73 28 22 4C 3A 20 4C 6F 61 64 20 74 65 78    tes("L: Load tex
0206D0:  74 22 29 0D 0A 20 20 20 20 74 61 62 28 33 32 2C    t")..    tab(32,
0206E0:  31 30 29 20 3B 20 77 72 69 74 65 73 28 22 53 3A    10) ; writes("S:
0206F0:  20 53 61 76 65 20 74 65 78 74 22 29 0D 0A 20 20     Save text")..  
020700:  20 20 74 61 62 28 33 32 2C 31 31 29 20 3B 20 77      tab(32,11) ; w
020710:  72 69 74 65 73 28 22 45 3A 20 45 64 69 74 20 74    rites("E: Edit t
020720:  65 78 74 22 29 0D 0A 20 20 20 20 74 61 62 28 33    ext")..    tab(3
020730:  32 2C 31 32 29 20 3B 20 77 72 69 74 65 73 28 22    2,12) ; writes("
020740:  47 3A 20 47 6F 74 6F 20 6C 69 6E 65 22 29 0D 0A    G: Goto line")..
020750:  20 20 20 20 74 61 62 28 33 32 2C 31 33 29 20 3B        tab(32,13) ;
020760:  20 77 72 69 74 65 73 28 22 46 3A 20 46 69 6E 64     writes("F: Find
020770:  20 73 74 72 69 6E 67 22 29 0D 0A 20 20 20 20 74     string")..    t
020780:  61 62 28 33 32 2C 31 34 29 20 3B 20 77 72 69 74    ab(32,14) ; writ
020790:  65 73 28 22 51 3A 20 51 75 69 74 22 29 0D 0A 20    es("Q: Quit").. 
0207A0:  20 20 20 74 61 62 28 33 32 2C 31 37 29 20 3B 20       tab(32,17) ; 
0207B0:  77 72 69 74 65 73 28 22 53 65 6C 65 63 74 20 6F    writes("Select o
0207C0:  70 74 69 6F 6E 3A 20 22 29 0D 0A 20 20 20 20 24    ption: ")..    $
0207D0:  28 20 63 75 72 73 65 6E 28 29 0D 0A 20 20 20 20    ( cursen()..    
0207E0:  20 20 20 6B 65 79 20 3A 3D 20 72 64 63 68 28 29       key := rdch()
0207F0:  0D 0A 20 20 20 20 20 20 20 63 75 72 73 64 69 28    ..       cursdi(
020800:  29 0D 0A 20 20 20 20 24 29 20 52 45 50 45 41 54    )..    $) REPEAT
020810:  57 48 49 4C 45 20 6B 65 79 20 3D 20 69 67 6E 6F    WHILE key = igno
020820:  72 65 0D 0A 20 20 20 20 53 57 49 54 43 48 4F 4E    re..    SWITCHON
020830:  20 6B 65 79 20 49 4E 54 4F 0D 0A 20 20 20 20 24     key INTO..    $
020840:  28 0D 0A 20 20 20 20 20 20 43 41 53 45 20 27 4C    (..      CASE 'L
020850:  27 3A 20 43 41 53 45 20 27 6C 27 3A 20 77 72 63    ': CASE 'l': wrc
020860:  68 28 27 4C 27 29 20 3B 20 49 46 20 6C 6F 61 64    h('L') ; IF load
020870:  74 65 78 74 28 6C 69 6E 65 29 20 54 48 45 4E 20    text(line) THEN 
020880:  42 52 45 41 4B 20 3B 20 45 4E 44 43 41 53 45 0D    BREAK ; ENDCASE.
020890:  0A 20 20 20 20 20 20 43 41 53 45 20 27 53 27 3A    .      CASE 'S':
0208A0:  20 43 41 53 45 20 27 73 27 3A 20 77 72 63 68 28     CASE 's': wrch(
0208B0:  27 53 27 29 20 3B 20 49 46 20 73 61 76 65 74 65    'S') ; IF savete
0208C0:  78 74 28 29 20 54 48 45 4E 20 42 52 45 41 4B 20    xt() THEN BREAK 
0208D0:  3B 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20    ; ENDCASE..     
0208E0:  20 43 41 53 45 20 27 47 27 3A 20 43 41 53 45 20     CASE 'G': CASE 
0208F0:  27 67 27 3A 20 77 72 63 68 28 27 47 27 29 20 3B    'g': wrch('G') ;
020900:  20 67 6F 6C 69 6E 65 28 29 20 3B 20 42 52 45 41     goline() ; BREA
020910:  4B 0D 0A 20 20 20 20 20 20 43 41 53 45 20 27 46    K..      CASE 'F
020920:  27 3A 20 43 41 53 45 20 27 66 27 3A 20 77 72 63    ': CASE 'f': wrc
020930:  68 28 27 46 27 29 20 3B 20 78 20 3A 3D 20 76 61    h('F') ; x := va
020940:  6C 69 64 61 74 65 28 6C 69 6E 65 2C 78 29 0D 0A    lidate(line,x)..
020950:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
020960:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
020970:  20 20 20 20 20 20 66 69 6E 64 73 74 72 69 6E 67          findstring
020980:  28 29 20 3B 20 42 52 45 41 4B 0D 0A 20 20 20 20    () ; BREAK..    
020990:  20 20 43 41 53 45 20 27 45 27 3A 20 43 41 53 45      CASE 'E': CASE
0209A0:  20 27 65 27 3A 20 77 72 63 68 28 27 45 27 29 20     'e': wrch('E') 
0209B0:  3B 20 42 52 45 41 4B 0D 0A 20 20 20 20 20 20 43    ; BREAK..      C
0209C0:  41 53 45 20 27 51 27 3A 20 43 41 53 45 20 27 71    ASE 'Q': CASE 'q
0209D0:  27 3A 20 77 72 63 68 28 27 51 27 29 20 3B 20 66    ': wrch('Q') ; f
0209E0:  69 6E 69 73 68 0D 0A 20 20 20 20 24 29 0D 0A 20    inish..    $).. 
0209F0:  20 20 20 62 65 65 70 28 29 0D 0A 20 20 24 29 20       beep()..  $) 
020A00:  52 45 50 45 41 54 0D 0A 20 20 72 65 63 6F 6E 73    REPEAT..  recons
020A10:  74 72 75 63 74 28 74 65 78 74 70 74 72 29 0D 0A    truct(textptr)..
020A20:  24 29 0D 0A 0D 0A 0D 0A 0D 0A 2F 2A 20 54 68 69    $)......../* Thi
020A30:  73 20 72 6F 75 74 69 6E 65 20 64 65 61 6C 73 20    s routine deals 
020A40:  77 69 74 68 20 74 68 65 20 64 65 6C 65 74 69 6F    with the deletio
020A50:  6E 20 6F 66 20 61 20 43 52 20 2A 2F 0D 0A 0D 0A    n of a CR */....
020A60:  4C 45 54 20 64 65 6C 65 74 65 6C 28 6C 69 6E 65    LET deletel(line
020A70:  29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 54 45    ) BE....$(..  TE
020A80:  53 54 20 74 65 78 74 70 74 72 20 4E 45 20 30 20    ST textptr NE 0 
020A90:  54 48 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20    THEN..  $(..    
020AA0:  4C 45 54 20 6F 70 74 72 2C 20 74 70 74 72 20 3D    LET optr, tptr =
020AB0:  20 74 65 78 74 70 74 72 2C 20 62 61 63 6B 6C 69     textptr, backli
020AC0:  6E 65 28 74 65 78 74 70 74 72 29 0D 0A 20 20 20    ne(textptr)..   
020AD0:  20 54 45 53 54 20 6C 69 6E 65 6C 65 6E 67 74 68     TEST linelength
020AE0:  28 74 70 74 72 29 20 2B 20 6C 69 6E 65 21 30 20    (tptr) + line!0 
020AF0:  2D 20 31 20 3C 20 38 30 20 54 48 45 4E 0D 0A 20    - 1 < 80 THEN.. 
020B00:  20 20 20 24 28 0D 0A 20 20 20 20 20 20 49 46 20       $(..      IF 
020B10:  6C 69 6E 65 21 30 2D 6C 69 6E 65 6C 65 6E 67 74    line!0-linelengt
020B20:  68 28 74 65 78 74 70 74 72 29 2B 74 65 78 74 65    h(textptr)+texte
020B30:  6E 64 20 3E 3D 20 6D 61 78 63 68 72 20 54 48 45    nd >= maxchr THE
020B40:  4E 20 65 72 72 6F 72 28 22 4E 6F 20 72 6F 6F 6D    N error("No room
020B50:  22 29 0D 0A 20 20 20 20 20 20 74 65 78 74 73 74    ")..      textst
020B60:  61 72 74 25 28 74 65 78 74 70 74 72 2D 31 29 20    art%(textptr-1) 
020B70:  3A 3D 20 30 0D 0A 20 20 20 20 20 20 6C 69 6E 73    := 0..      lins
020B80:  65 72 74 28 6C 69 6E 65 2C 74 65 78 74 70 74 72    ert(line,textptr
020B90:  2D 31 29 0D 0A 20 20 20 20 20 20 74 65 78 74 70    -1)..      textp
020BA0:  74 72 20 3A 3D 20 74 70 74 72 0D 0A 20 20 20 20    tr := tptr..    
020BB0:  20 20 6C 69 6E 65 6E 75 6D 62 65 72 20 3A 3D 20      linenumber := 
020BC0:  6C 69 6E 65 6E 75 6D 62 65 72 20 2D 20 31 0D 0A    linenumber - 1..
020BD0:  20 20 20 20 20 20 78 20 3A 3D 20 6C 69 6E 65 6C          x := linel
020BE0:  65 6E 67 74 68 28 74 65 78 74 70 74 72 29 20 2D    ength(textptr) -
020BF0:  20 6C 69 6E 65 21 30 20 2B 20 31 0D 0A 20 20 20     line!0 + 1..   
020C00:  20 20 20 54 45 53 54 20 79 20 3D 20 31 20 54 48       TEST y = 1 TH
020C10:  45 4E 0D 0A 20 20 20 20 20 20 24 28 0D 0A 20 20    EN..      $(..  
020C20:  20 20 20 20 20 20 77 72 69 74 65 28 74 65 78 74          write(text
020C30:  70 74 72 2C 31 2C 31 29 0D 0A 20 20 20 20 20 20    ptr,1,1)..      
020C40:  24 29 0D 0A 20 20 20 20 20 20 45 4C 53 45 20 79    $)..      ELSE y
020C50:  20 3A 3D 20 79 20 2D 20 31 0D 0A 20 20 20 20 24     := y - 1..    $
020C60:  29 0D 0A 20 20 20 20 45 4C 53 45 20 65 72 72 6F    )..    ELSE erro
020C70:  72 28 22 4C 69 6E 65 20 74 6F 6F 20 6C 6F 6E 67    r("Line too long
020C80:  20 74 6F 20 6A 6F 69 6E 22 29 0D 0A 20 20 24 29     to join")..  $)
020C90:  0D 0A 20 20 45 4C 53 45 20 65 72 72 6F 72 28 22    ..  ELSE error("
020CA0:  54 6F 70 20 6F 66 20 66 69 6C 65 22 29 0D 0A 24    Top of file")..$
020CB0:  29 0D 0A 0D 0A 0D 0A 4C 45 54 20 61 64 64 6C 28    )......LET addl(
020CC0:  6C 69 6E 65 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A    line) BE....$(..
020CD0:  20 20 4C 45 54 20 63 6F 70 79 20 3D 20 56 45 43      LET copy = VEC
020CE0:  20 38 30 0D 0A 20 20 4C 45 54 20 70 74 72 20 3D     80..  LET ptr =
020CF0:  20 31 0D 0A 20 20 46 4F 52 20 61 20 3D 20 30 20     1..  FOR a = 0 
020D00:  54 4F 20 6C 69 6E 65 21 30 20 44 4F 20 63 6F 70    TO line!0 DO cop
020D10:  79 21 61 20 3A 3D 20 6C 69 6E 65 21 61 0D 0A 20    y!a := line!a.. 
020D20:  20 57 48 49 4C 45 20 6C 69 6E 65 21 70 74 72 20     WHILE line!ptr 
020D30:  4E 45 20 31 33 20 44 4F 20 70 74 72 20 3A 3D 20    NE 13 DO ptr := 
020D40:  70 74 72 20 2B 20 31 0D 0A 20 20 46 4F 52 20 61    ptr + 1..  FOR a
020D50:  20 3D 20 70 74 72 20 54 4F 20 6C 69 6E 65 21 30     = ptr TO line!0
020D60:  2D 31 20 44 4F 20 6C 69 6E 65 21 61 20 3A 3D 20    -1 DO line!a := 
020D70:  6C 69 6E 65 21 28 61 2B 31 29 0D 0A 20 20 6C 69    line!(a+1)..  li
020D80:  6E 65 21 30 20 3A 3D 20 6C 69 6E 65 21 30 20 2D    ne!0 := line!0 -
020D90:  20 31 0D 0A 20 20 6C 69 6E 73 65 72 74 28 63 6F     1..  linsert(co
020DA0:  70 79 2C 74 65 78 74 70 74 72 29 0D 0A 20 20 78    py,textptr)..  x
020DB0:  2C 20 6C 69 6E 65 6E 75 6D 62 65 72 20 3A 3D 20    , linenumber := 
020DC0:  31 2C 20 6C 69 6E 65 6E 75 6D 62 65 72 20 2B 20    1, linenumber + 
020DD0:  31 0D 0A 20 20 74 65 78 74 70 74 72 20 3A 3D 20    1..  textptr := 
020DE0:  66 6F 72 77 61 72 64 28 74 65 78 74 70 74 72 29    forward(textptr)
020DF0:  0D 0A 20 20 54 45 53 54 20 79 20 3D 20 73 63 72    ..  TEST y = scr
020E00:  68 65 69 67 68 74 2D 31 20 54 48 45 4E 0D 0A 20    height-1 THEN.. 
020E10:  20 24 28 0D 0A 20 20 20 20 75 70 28 29 0D 0A 20     $(..    up().. 
020E20:  20 20 20 77 72 69 74 65 28 74 65 78 74 70 74 72       write(textptr
020E30:  2C 31 2C 73 63 72 68 65 69 67 68 74 2D 31 29 0D    ,1,scrheight-1).
020E40:  0A 20 20 24 29 0D 0A 20 20 45 4C 53 45 20 79 20    .  $)..  ELSE y 
020E50:  3A 3D 20 79 20 2B 20 31 0D 0A 24 29 0D 0A 0D 0A    := y + 1..$)....
020E60:  0D 0A 4C 45 54 20 6D 6F 76 65 75 70 28 29 20 42    ..LET moveup() B
020E70:  45 0D 0A 0D 0A 24 28 0D 0A 20 20 55 4E 4C 45 53    E....$(..  UNLES
020E80:  53 20 74 65 78 74 70 74 72 20 3D 20 30 20 54 48    S textptr = 0 TH
020E90:  45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 74 65    EN..  $(..    te
020EA0:  78 74 70 74 72 20 3A 3D 20 62 61 63 6B 6C 69 6E    xtptr := backlin
020EB0:  65 28 74 65 78 74 70 74 72 29 0D 0A 20 20 20 20    e(textptr)..    
020EC0:  6C 69 6E 65 6E 75 6D 62 65 72 20 3A 3D 20 6C 69    linenumber := li
020ED0:  6E 65 6E 75 6D 62 65 72 20 2D 20 31 0D 0A 20 20    nenumber - 1..  
020EE0:  20 20 54 45 53 54 20 79 20 3D 20 31 20 54 48 45      TEST y = 1 THE
020EF0:  4E 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 20 20    N..    $(..     
020F00:  20 64 6F 77 6E 28 29 0D 0A 20 20 20 20 20 20 77     down()..      w
020F10:  72 69 74 65 28 74 65 78 74 70 74 72 2C 31 2C 31    rite(textptr,1,1
020F20:  29 0D 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45    )..    $)..    E
020F30:  4C 53 45 20 79 20 3A 3D 20 79 20 2D 20 31 0D 0A    LSE y := y - 1..
020F40:  20 20 24 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45      $)..$)......LE
020F50:  54 20 75 70 63 75 72 73 28 6C 69 6E 65 29 20 42    T upcurs(line) B
020F60:  45 0D 0A 0D 0A 24 28 0D 0A 20 20 6C 69 6E 73 65    E....$(..  linse
020F70:  72 74 28 6C 69 6E 65 2C 74 65 78 74 70 74 72 29    rt(line,textptr)
020F80:  0D 0A 20 20 6D 6F 76 65 75 70 28 29 0D 0A 24 29    ..  moveup()..$)
020F90:  0D 0A 0D 0A 0D 0A 4C 45 54 20 6D 6F 76 65 64 6F    ......LET movedo
020FA0:  77 6E 28 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20    wn() BE....$(.. 
020FB0:  20 4C 45 54 20 6F 70 74 72 20 3D 20 74 65 78 74     LET optr = text
020FC0:  70 74 72 0D 0A 20 20 74 65 78 74 70 74 72 20 3A    ptr..  textptr :
020FD0:  3D 20 66 6F 72 77 61 72 64 28 74 65 78 74 70 74    = forward(textpt
020FE0:  72 29 0D 0A 20 20 55 4E 4C 45 53 53 20 74 65 78    r)..  UNLESS tex
020FF0:  74 70 74 72 20 3D 20 6F 70 74 72 20 54 48 45 4E    tptr = optr THEN
021000:  0D 0A 20 20 24 28 0D 0A 20 20 20 20 6C 69 6E 65    ..  $(..    line
021010:  6E 75 6D 62 65 72 20 3A 3D 20 6C 69 6E 65 6E 75    number := linenu
021020:  6D 62 65 72 20 2B 20 31 0D 0A 20 20 20 20 54 45    mber + 1..    TE
021030:  53 54 20 79 20 3D 20 73 63 72 68 65 69 67 68 74    ST y = scrheight
021040:  2D 31 20 54 48 45 4E 0D 0A 20 20 20 20 24 28 0D    -1 THEN..    $(.
021050:  0A 20 20 20 20 20 20 75 70 28 29 0D 0A 20 20 20    .      up()..   
021060:  20 20 20 77 72 69 74 65 28 74 65 78 74 70 74 72       write(textptr
021070:  2C 31 2C 73 63 72 68 65 69 67 68 74 2D 31 29 0D    ,1,scrheight-1).
021080:  0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45 4C 53    .    $)..    ELS
021090:  45 20 79 20 3A 3D 20 79 20 2B 20 31 0D 0A 20 20    E y := y + 1..  
0210A0:  24 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 4C 45    $)..$)........LE
0210B0:  54 20 64 6F 77 6E 63 75 72 73 28 6C 69 6E 65 29    T downcurs(line)
0210C0:  20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 6C 69 6E     BE....$(..  lin
0210D0:  73 65 72 74 28 6C 69 6E 65 2C 74 65 78 74 70 74    sert(line,textpt
0210E0:  72 29 0D 0A 20 20 6D 6F 76 65 64 6F 77 6E 28 29    r)..  movedown()
0210F0:  0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 4C 45 54 20    ..$)........LET 
021100:  73 75 70 63 75 72 73 28 6C 69 6E 65 29 20 42 45    supcurs(line) BE
021110:  0D 0A 0D 0A 24 28 0D 0A 20 20 6C 69 6E 73 65 72    ....$(..  linser
021120:  74 28 6C 69 6E 65 2C 74 65 78 74 70 74 72 29 0D    t(line,textptr).
021130:  0A 20 20 46 4F 52 20 61 20 3D 20 31 20 54 4F 20    .  FOR a = 1 TO 
021140:  73 63 72 68 65 69 67 68 74 2D 34 20 44 4F 0D 0A    scrheight-4 DO..
021150:  20 20 24 28 0D 0A 20 20 20 20 49 46 20 74 65 78      $(..    IF tex
021160:  74 70 74 72 20 3D 20 30 20 54 48 45 4E 20 42 52    tptr = 0 THEN BR
021170:  45 41 4B 0D 0A 20 20 20 20 6D 6F 76 65 75 70 28    EAK..    moveup(
021180:  29 0D 0A 20 20 24 29 0D 0A 24 29 0D 0A 0D 0A 4C    )..  $)..$)....L
021190:  45 54 20 73 64 6F 77 6E 63 75 72 73 28 6C 69 6E    ET sdowncurs(lin
0211A0:  65 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 6C    e) BE....$(..  l
0211B0:  69 6E 73 65 72 74 28 6C 69 6E 65 2C 74 65 78 74    insert(line,text
0211C0:  70 74 72 29 0D 0A 20 20 46 4F 52 20 61 20 3D 20    ptr)..  FOR a = 
0211D0:  31 20 54 4F 20 73 63 72 68 65 69 67 68 74 2D 34    1 TO scrheight-4
0211E0:  20 44 4F 0D 0A 20 20 24 28 0D 0A 20 20 20 20 4C     DO..  $(..    L
0211F0:  45 54 20 6F 70 74 72 20 3D 20 74 65 78 74 70 74    ET optr = textpt
021200:  72 0D 0A 20 20 20 20 6D 6F 76 65 64 6F 77 6E 28    r..    movedown(
021210:  29 0D 0A 20 20 20 20 49 46 20 6F 70 74 72 20 3D    )..    IF optr =
021220:  20 74 65 78 74 70 74 72 20 54 48 45 4E 20 42 52     textptr THEN BR
021230:  45 41 4B 0D 0A 20 20 24 29 0D 0A 24 29 0D 0A 0D    EAK..  $)..$)...
021240:  0A 0D 0A 0D 0A 4C 45 54 20 74 6F 70 28 6C 69 6E    .....LET top(lin
021250:  65 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 6C    e) BE....$(..  l
021260:  69 6E 73 65 72 74 28 6C 69 6E 65 2C 74 65 78 74    insert(line,text
021270:  70 74 72 29 0D 0A 20 20 74 65 78 74 70 74 72 2C    ptr)..  textptr,
021280:  20 78 2C 20 79 2C 20 6C 69 6E 65 6E 75 6D 62 65     x, y, linenumbe
021290:  72 20 3A 3D 20 30 2C 20 31 2C 20 31 2C 20 31 0D    r := 0, 1, 1, 1.
0212A0:  0A 20 20 72 65 63 6F 6E 73 74 72 75 63 74 28 74    .  reconstruct(t
0212B0:  65 78 74 70 74 72 29 0D 0A 24 29 0D 0A 0D 0A 0D    extptr)..$).....
0212C0:  0A 4C 45 54 20 62 6F 74 74 6F 6D 28 6C 69 6E 65    .LET bottom(line
0212D0:  29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45    ) BE....$(..  LE
0212E0:  54 20 6F 70 74 72 20 3D 20 30 0D 0A 20 20 6C 69    T optr = 0..  li
0212F0:  6E 73 65 72 74 28 6C 69 6E 65 2C 74 65 78 74 70    nsert(line,textp
021300:  74 72 29 0D 0A 20 20 74 65 78 74 70 74 72 2C 20    tr)..  textptr, 
021310:  78 2C 20 79 2C 20 6C 69 6E 65 6E 75 6D 62 65 72    x, y, linenumber
021320:  20 3A 3D 20 30 2C 20 31 2C 20 31 2C 20 30 0D 0A     := 0, 1, 1, 0..
021330:  20 20 24 28 0D 0A 20 20 20 20 6F 70 74 72 20 3A      $(..    optr :
021340:  3D 20 74 65 78 74 70 74 72 0D 0A 20 20 20 20 74    = textptr..    t
021350:  65 78 74 70 74 72 20 3A 3D 20 66 6F 72 77 61 72    extptr := forwar
021360:  64 28 74 65 78 74 70 74 72 29 0D 0A 20 20 20 20    d(textptr)..    
021370:  79 20 3A 3D 20 79 20 2B 20 31 0D 0A 20 20 20 20    y := y + 1..    
021380:  6C 69 6E 65 6E 75 6D 62 65 72 20 3A 3D 20 6C 69    linenumber := li
021390:  6E 65 6E 75 6D 62 65 72 20 2B 20 31 0D 0A 20 20    nenumber + 1..  
0213A0:  24 29 20 52 45 50 45 41 54 55 4E 54 49 4C 20 6F    $) REPEATUNTIL o
0213B0:  70 74 72 20 3D 20 74 65 78 74 70 74 72 0D 0A 20    ptr = textptr.. 
0213C0:  20 49 46 20 79 20 3E 20 73 63 72 68 65 69 67 68     IF y > scrheigh
0213D0:  74 2D 31 20 54 48 45 4E 20 79 20 3A 3D 20 73 63    t-1 THEN y := sc
0213E0:  72 68 65 69 67 68 74 2D 31 0D 0A 20 20 72 65 63    rheight-1..  rec
0213F0:  6F 6E 73 74 72 75 63 74 28 74 65 78 74 70 74 72    onstruct(textptr
021400:  29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 2F 2A 20 41 6C    )..$)....../* Al
021410:  6C 20 6C 69 6E 65 73 20 65 6E 64 20 69 6E 20 31    l lines end in 1
021420:  33 20 2A 2F 0D 0A 2F 2A 20 54 68 65 20 65 64 69    3 */../* The edi
021430:  74 20 62 75 66 66 65 72 20 69 73 20 68 65 6C 64    t buffer is held
021440:  20 69 6E 20 75 6E 70 61 63 6B 65 64 20 66 6F 72     in unpacked for
021450:  6D 61 74 2E 20 54 68 65 20 77 68 6F 6C 65 20 74    mat. The whole t
021460:  65 78 74 20 69 73 20 73 74 6F 72 65 64 20 69 6E    ext is stored in
021470:  0D 0A 20 20 20 70 61 63 6B 65 64 20 66 6F 72 6D    ..   packed form
021480:  61 74 20 2A 2F 0D 0A 0D 0A 4C 45 54 20 73 74 61    at */....LET sta
021490:  72 74 28 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20    rt() BE....$(.. 
0214A0:  20 4C 45 54 20 66 69 6C 65 62 75 66 66 20 3D 20     LET filebuff = 
0214B0:  56 45 43 20 38 31 0D 0A 20 20 4C 45 54 20 70 72    VEC 81..  LET pr
0214C0:  65 76 69 6F 75 73 20 3D 20 56 45 43 20 6D 61 78    evious = VEC max
0214D0:  73 63 72 68 65 69 67 68 74 2D 31 0D 0A 20 20 4C    scrheight-1..  L
0214E0:  45 54 20 74 65 78 74 20 3D 20 56 45 43 20 6D 61    ET text = VEC ma
0214F0:  78 63 68 72 2F 32 2B 31 0D 0A 20 20 4C 45 54 20    xchr/2+1..  LET 
021500:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
021510:  1C 00 00 00 02 09 50 E5 1C 00 C1 02 00 00 00 02    ......P.........
021520:  1C 00 C2 02 00 00 00 02 1C 00 C3 02 00 00 00 02    ................
021530:  1C 00 C4 02 00 00 00 02 1C 00 C5 02 00 00 00 02    ................
021540:  1C 00 C6 02 00 00 00 02 1C 00 C7 02 00 00 00 02    ................
021550:  1C 00 C8 02 00 00 00 02 1C 00 C9 02 00 00 00 02    ................
021560:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021570:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021580:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021590:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021600:  69 6E 62 75 66 66 20 3D 20 56 45 43 20 38 31 0D    inbuff = VEC 81.
021610:  0A 20 20 4C 45 54 20 65 72 72 6F 72 20 3D 20 56    .  LET error = V
021620:  45 43 20 34 0D 0A 20 20 4C 45 54 20 63 6F 70 79    EC 4..  LET copy
021630:  70 74 72 2C 20 6C 61 73 74 6B 65 79 2C 20 6E 65    ptr, lastkey, ne
021640:  77 73 63 72 65 65 6E 20 3D 20 30 2C 20 30 2C 20    wscreen = 0, 0, 
021650:  54 52 55 45 0D 0A 20 20 76 65 72 20 3A 3D 20 76    TRUE..  ver := v
021660:  65 72 73 69 6F 6E 28 29 0D 0A 20 20 73 63 72 68    ersion()..  scrh
021670:  65 69 67 68 74 20 3A 3D 20 76 65 72 3D 34 20 2D    eight := ver=4 -
021680:  3E 20 33 31 2C 20 76 65 72 3D 33 20 2D 3E 20 32    > 31, ver=3 -> 2
021690:  34 2C 20 32 35 0D 0A 20 20 74 65 78 74 70 74 72    4, 25..  textptr
0216A0:  2C 20 74 65 78 74 65 6E 64 2C 20 74 65 78 74 73    , textend, texts
0216B0:  74 61 72 74 2C 20 65 72 72 76 65 63 20 3A 3D 20    tart, errvec := 
0216C0:  30 2C 20 30 2C 20 74 65 78 74 2C 20 65 72 72 6F    0, 0, text, erro
0216D0:  72 0D 0A 20 20 70 72 65 76 2C 20 66 69 6C 65 20    r..  prev, file 
0216E0:  3A 3D 20 70 72 65 76 69 6F 75 73 2C 20 66 69 6C    := previous, fil
0216F0:  65 62 75 66 66 0D 0A 20 20 63 6C 73 28 29 0D 0A    ebuff..  cls()..
021700:  20 20 74 65 78 74 73 74 61 72 74 25 30 20 3A 3D      textstart%0 :=
021710:  20 31 33 0D 0A 20 20 24 28 0D 0A 20 20 20 20 6C     13..  $(..    l
021720:  65 76 65 6C 28 65 72 72 76 65 63 29 0D 0A 20 20    evel(errvec)..  
021730:  20 20 69 6E 69 74 62 75 66 66 28 69 6E 62 75 66      initbuff(inbuf
021740:  66 2C 74 65 78 74 70 74 72 29 0D 0A 20 20 20 20    f,textptr)..    
021750:  49 46 20 6E 65 77 73 63 72 65 65 6E 20 54 48 45    IF newscreen THE
021760:  4E 20 73 63 72 65 65 6E 28 74 65 78 74 70 74 72    N screen(textptr
021770:  2C 79 29 0D 0A 20 20 20 20 65 72 72 6C 61 62 3A    ,y)..    errlab:
021780:  0D 0A 20 20 20 20 49 46 20 62 75 66 66 70 72 69    ..    IF buffpri
021790:  6E 74 20 54 48 45 4E 0D 0A 20 20 20 20 24 28 0D    nt THEN..    $(.
0217A0:  0A 20 20 20 20 20 20 74 61 62 28 31 2C 79 29 0D    .      tab(1,y).
0217B0:  0A 20 20 20 20 20 20 46 4F 52 20 61 20 3D 20 31    .      FOR a = 1
0217C0:  20 54 4F 20 69 6E 62 75 66 66 21 30 2D 31 20 44     TO inbuff!0-1 D
0217D0:  4F 20 77 72 63 68 28 69 6E 62 75 66 66 21 61 29    O wrch(inbuff!a)
0217E0:  20 3B 20 73 70 61 63 65 73 28 38 30 2D 69 6E 62     ; spaces(80-inb
0217F0:  75 66 66 21 30 29 0D 0A 20 20 20 20 20 20 62 75    uff!0)..      bu
021800:  66 66 70 72 69 6E 74 20 3A 3D 20 46 41 4C 53 45    ffprint := FALSE
021810:  0D 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 6C 61    ..    $)..    la
021820:  73 74 6B 65 79 20 3A 3D 20 62 75 66 66 65 72 28    stkey := buffer(
021830:  69 6E 62 75 66 66 29 0D 0A 20 20 20 20 6E 65 77    inbuff)..    new
021840:  73 63 72 65 65 6E 20 3A 3D 20 46 41 4C 53 45 0D    screen := FALSE.
021850:  0A 20 20 20 20 53 57 49 54 43 48 4F 4E 20 6C 61    .    SWITCHON la
021860:  73 74 6B 65 79 20 49 4E 54 4F 0D 0A 20 20 20 20    stkey INTO..    
021870:  24 28 0D 0A 20 20 20 20 20 20 43 41 53 45 20 31    $(..      CASE 1
021880:  32 37 3A 20 6E 65 77 73 63 72 65 65 6E 20 3A 3D    27: newscreen :=
021890:  20 54 52 55 45 20 3B 20 64 65 6C 65 74 65 6C 28     TRUE ; deletel(
0218A0:  69 6E 62 75 66 66 29 20 3B 20 45 4E 44 43 41 53    inbuff) ; ENDCAS
0218B0:  45 0D 0A 20 20 20 20 20 20 43 41 53 45 20 31 33    E..      CASE 13
0218C0:  3A 20 6E 65 77 73 63 72 65 65 6E 20 3A 3D 20 54    : newscreen := T
0218D0:  52 55 45 20 3B 20 61 64 64 6C 28 69 6E 62 75 66    RUE ; addl(inbuf
0218E0:  66 29 20 3B 20 45 4E 44 43 41 53 45 0D 0A 20 20    f) ; ENDCASE..  
0218F0:  20 20 20 20 43 41 53 45 20 63 75 72 73 75 70 3A        CASE cursup:
021900:  20 43 41 53 45 20 73 63 75 72 73 75 70 3A 20 75     CASE scursup: u
021910:  70 63 75 72 73 28 69 6E 62 75 66 66 29 20 3B 20    pcurs(inbuff) ; 
021920:  45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 20 43    ENDCASE..      C
021930:  41 53 45 20 63 75 72 73 64 6F 77 6E 3A 20 43 41    ASE cursdown: CA
021940:  53 45 20 73 63 75 72 73 64 6F 77 6E 3A 20 64 6F    SE scursdown: do
021950:  77 6E 63 75 72 73 28 69 6E 62 75 66 66 29 20 3B    wncurs(inbuff) ;
021960:  20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 20     ENDCASE..      
021970:  43 41 53 45 20 63 63 75 72 73 75 70 3A 20 73 75    CASE ccursup: su
021980:  70 63 75 72 73 28 69 6E 62 75 66 66 29 20 3B 20    pcurs(inbuff) ; 
021990:  45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 20 43    ENDCASE..      C
0219A0:  41 53 45 20 63 63 75 72 73 64 6F 77 6E 3A 20 73    ASE ccursdown: s
0219B0:  64 6F 77 6E 63 75 72 73 28 69 6E 62 75 66 66 29    downcurs(inbuff)
0219C0:  20 3B 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20     ; ENDCASE..    
0219D0:  20 20 43 41 53 45 20 63 6F 70 65 6E 73 71 3A 20      CASE copensq: 
0219E0:  74 6F 70 28 69 6E 62 75 66 66 29 20 3B 20 45 4E    top(inbuff) ; EN
0219F0:  44 43 41 53 45 0D 0A 20 20 20 20 20 20 43 41 53    DCASE..      CAS
021A00:  45 20 63 63 6C 6F 73 65 73 71 3A 20 62 6F 74 74    E cclosesq: bott
021A10:  6F 6D 28 69 6E 62 75 66 66 29 20 3B 20 45 4E 44    om(inbuff) ; END
021A20:  43 41 53 45 0D 0A 20 20 20 20 20 20 43 41 53 45    CASE..      CASE
021A30:  20 65 73 63 61 70 65 3A 20 43 41 53 45 20 73 74     escape: CASE st
021A40:  6F 70 3A 20 6D 65 6E 75 28 69 6E 62 75 66 66 29    op: menu(inbuff)
021A50:  20 3B 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20     ; ENDCASE..    
021A60:  24 29 0D 0A 20 20 24 29 20 52 45 50 45 41 54 0D    $)..  $) REPEAT.
021A70:  0A 24 29 0D 0A 2E 0D 0A 1A 6F 6F 20 6C 6F 6E 67    .$)......oo long
021A80:  32 37 3A 20 6E 65 77 73 63 72 65 65 6E 20 3A 3D    27: newscreen :=
021A90:  20 54 52 55 45 20 3B 20 64 65 6C 65 74 65 6C 28     TRUE ; deletel(
021AA0:  69 6E 62 75 66 66 29 20 3B 20 45 4E 44 43 41 53    inbuff) ; ENDCAS
021AB0:  45 0D 0A 20 20 20 20 20 20 43 41 53 45 20 31 33    E..      CASE 13
021AC0:  3A 20 6E 65 77 73 63 72 65 65 6E 20 3A 3D 20 54    : newscreen := T
021AD0:  52 55 45 20 3B 20 61 64 64 6C 28 69 6E 62 75 66    RUE ; addl(inbuf
021AE0:  66 29 20 3B 20 45 4E 44 43 41 53 45 0D 0A 20 20    f) ; ENDCASE..  
021AF0:  20 20 20 20 43 41 53 45 20 63 75 72 73 75 70 3A        CASE cursup:
021B00:  20 43 41 53 45 20 73 63 75 72 73 75 70 3A 20 75     CASE scursup: u
021B10:  70 63 75 72 73 28 69 6E 62 75 66 66 29 20 3B 20    pcurs(inbuff) ; 
021B20:  45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 20 43    ENDCASE..      C
021B30:  41 53 45 20 63 75 72 73 64 6F 77 6E 3A 20 43 41    ASE cursdown: CA
021B40:  53 45 20 73 63 75 72 73 64 6F 77 6E 3A 20 64 6F    SE scursdown: do
021B50:  77 6E 63 75 72 73 28 69 6E 62 75 66 66 29 20 3B    wncurs(inbuff) ;
021B60:  20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 20     ENDCASE..      
021B70:  43 41 53 45 20 63 63 75 72 73 75 70 3A 20 73 75    CASE ccursup: su
021B80:  70 63 75 72 73 28 69 6E 62 75 66 66 29 20 3B 20    pcurs(inbuff) ; 
021B90:  45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 20 43    ENDCASE..      C
021BA0:  41 53 45 20 63 63 75 72 73 64 6F 77 6E 3A 20 73    ASE ccursdown: s
021BB0:  64 6F 77 6E 63 75 72 73 28 69 6E 62 75 66 66 29    downcurs(inbuff)
021BC0:  20 3B 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20     ; ENDCASE..    
021BD0:  20 20 43 41 53 45 20 63 6F 70 65 6E 73 71 3A 20      CASE copensq: 
021BE0:  74 6F 70 28 69 6E 62 75 66 66 29 20 3B 20 45 4E    top(inbuff) ; EN
021BF0:  44 43 41 53 45 0D 0A 20 20 20 20 20 20 43 41 53    DCASE..      CAS
021C00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021C10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021C20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021C30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021C40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021C50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021C60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021C70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021C80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021C90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021CA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021CB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021CC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021CD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021CE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021CF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021DA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021DB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021DC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021DD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021DE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021DF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021E00:  21 2E 39 11 9B 3B 01 11 00 3E 0A C3 9E 01 00 00    !.9..;...>......
021E10:  00 00 00 00 00 00 CD 5C 01 F5 78 06 10 29 CB 11    .......\..x..)..
021E20:  17 30 01 19 10 F7 F1 CB 7F C8 EB 21 00 00 A7 ED    .0.........!....
021E30:  52 C9 CD 5C 01 F5 3E 10 CB 21 CB 10 CB 15 CB 14    R..\..>..!......
021E40:  A7 ED 52 38 03 03 18 01 19 3D 20 EC 50 59 EB F1    ..R8.....= .PY..
021E50:  A7 C8 7C EE FF 67 7D EE FF 6F 23 C9 44 4D 21 00    ..|..g}..o#.DM!.
021E60:  00 3E 00 CB 78 28 0A A7 ED 42 44 4D 21 00 00 3E    .>..x(...BDM!..>
021E70:  80 CB 7A C8 EE 80 A7 ED 52 EB 21 00 00 C9 A7 28    ..z.....R.!....(
021E80:  17 EB 4E 23 46 23 EB A7 ED 42 28 0C 09 EB 23 23    ..N#F#...B(...##
021E90:  3D 20 EF 5E 23 56 EB E9 EB 5E 23 56 EB E9 32 15    = .^#V...^#V..2.
021EA0:  01 32 14 01 E5 EB 78 B1 28 11 5E 23 56 23 D5 5E    .2....x.(.^#V#.^
021EB0:  23 56 23 E3 73 23 72 E1 0B 18 EB CB 45 28 01 23    #V#.s#r.....E(.#
021EC0:  22 12 01 22 10 01 ED 43 0E 01 C1 CD 78 03 F9 00    ".."...C....x...
021ED0:  00 60 69 CD 9D 01 C3 00 00 00 00 00 00 00 00 00    .`i.............
021EE0:  00 D1 DD E5 ED 4B 10 01 C5 ED 4B 12 01 ED 43 10    .....K....K...C.
021EF0:  01 09 22 12 01 EB E9 7A B3 C8 29 1B 18 F9 7A B3    .."....z..)...z.
021F00:  C8 CB 3C CB 1D 1B 18 F6 C1 E1 E5 C5 29 ED 5B 10    ..<.........).[.
021F10:  01 73 23 72 23 ED 5B 12 01 73 23 72 23 DD E5 D1    .s#r#.[..s#r#...
021F20:  73 23 72 23 EB 21 04 00 39 EB 73 23 72 C9 C1 C1    s#r#.!..9.s#r...
021F30:  E1 29 5E 23 56 23 ED 53 10 01 5E 23 56 23 ED 53    .)^#V#.S..^#V#.S
021F40:  12 01 5E 23 56 23 D5 DD E1 5E 23 66 6B F9 60 69    ..^#V#...^#fk.`i
021F50:  E9 E1 C1 D1 D5 C5 E5 2A 10 01 E5 D5 2A 12 01 22    .......*....*.."
021F60:  10 01 CB 3C CB 1D E5 EB 23 29 38 49 EB 2A 10 01    ...<....#)8I.*..
021F70:  19 38 42 22 12 01 EB 21 CE FF 39 A7 ED 52 38 35    .8B"...!..9..R85
021F80:  60 69 CD 9D 01 E1 E1 2A 10 01 22 12 01 E1 22 10    `i.....*.."...".
021F90:  01 C9 D1 DD E5 ED 4B 10 01 C5 ED 4B 12 01 ED 43    ......K....K...C
021FA0:  10 01 09 38 10 22 12 01 44 4D 21 CE FF 39 A7 ED    ...8."..DM!..9..
021FB0:  42 38 02 EB E9 CD CC 02 53 74 61 63 6B 20 6F 76    B8......Stack ov
021FC0:  65 72 66 6C 6F 77 0D 0A 00 C3 D6 01 E1 7E 23 E5    erflow.......~#.
021FD0:  A7 C8 CD D7 02 18 F5 0E 02 5F C3 05 00 3A 14 01    ........._...:..
021FE0:  3D 32 14 01 C0 3A 15 01 32 14 01 CD 66 03 A7 C8    =2...:..2...f...
021FF0:  E5 C5 F5 3A 0E 01 FE 08 28 0E 4F 06 00 21 D9 01    ...:....(.O..!..
022000:  09 3C 32 0E 01 F1 77 F5 F1 C1 E1 FE 03 28 03 FE    .<2...w......(..
022010:  FC C0 CD 66 03 A7 28 FA FE 03 28 03 FE FC C0 0E    ...f..(...(.....
022020:  6C 11 00 FF CD 05 00 CD CC 02 0D 0A 2A 2A 20 42    l...........** B
022030:  52 45 41 4B 20 2A 2A 0D 0A 00 C3 D6 01 3A 0E 01    REAK **......:..
022040:  A7 28 19 3A 0E 01 3D 32 0E 01 4F 06 00 3A D9 01    .(.:..=2..O..:..
022050:  28 10 21 DA 01 11 D9 01 ED B0 18 06 CD 66 03 A7    (.!..........f..
022060:  28 FA 5F 16 00 C9 E5 D5 C5 DD E5 0E 06 1E FF CD    (._.............
022070:  05 00 DD E1 C1 D1 E1 C9 2A 06 00 2B CB 45 C8 2B    ........*..+.E.+
022080:  C9 C3 8C 03 08 07 06 05 04 03 02 01 21 00 00 CD    ............!...
022090:  92 02 DD 21 88 FF DD 39 2A 86 03 11 D2 03 3E 02    ...!...9*.....>.
0220A0:  C3 7E 01 DD 66 7F DD 6E 7E E5 CD 7B 0D E1 C3 DC    .~..f..n~..{....
0220B0:  03 DD 66 7F DD 6E 7E E5 CD C5 0D E1 C3 DC 03 2A    ..f..n~........*
0220C0:  86 03 E5 DD 66 7F DD 6E 7E E5 CD C4 0F E1 E1 C3    ....f..n~.......
0220D0:  DC 03 01 00 B1 03 00 00 A3 03 BF 03 E1 22 10 01    ........£...."..
0220E0:  DD E1 C9 21 00 00 CD 92 02 DD 21 9E FF DD 39 DD    ...!......!...9.
0220F0:  E5 E1 11 6A 00 19 CB 3C CB 1D E5 2A 14 04 E5 DD    ...j...<...*....
022100:  66 69 DD 6E 68 29 6E 26 00 7C EE 80 67 22 14 04    fi.nh)n&.|..g"..
022110:  21 01 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA    !......BKz..W.R.
022120:  9B 05 C5 DD 66 69 DD 6E 68 29 DD 56 5D DD 5E 5C    ....fi.nh).V].^\
022130:  19 6E 26 00 E5 DD 66 5B DD 6E 5A 11 25 00 A7 ED    .n&...f[.nZ.%...
022140:  52 C2 8A 05 DD 66 61 DD 6E 60 29 5E 23 56 EB E5    R....fa.n`)^#V..
022150:  DD 66 5D DD 6E 5C 23 DD 74 5D DD 75 5C DD 66 69    .f].n\#.t].u\.fi
022160:  DD 6E 68 29 DD 56 5D DD 5E 5C 19 6E 26 00 E5 DD    .nh).V].^\.n&...
022170:  66 5D DD 6E 5C 23 E5 DD 66 69 DD 6E 68 29 D1 19    f].n\#..fi.nh)..
022180:  6E 26 00 E5 CD B0 16 E1 EB E5 DD 66 61 DD 6E 60    n&.........fa.n`
022190:  23 DD 74 61 DD 75 60 DD 66 57 DD 6E 56 11 57 05    #.ta.u`.fW.nV.W.
0221A0:  3E 07 C3 7E 01 DD 66 59 DD 6E 58 E5 CD A7 05 E1    >..~..fY.nX.....
0221B0:  21 00 00 EB C3 75 05 DD 66 59 DD 6E 58 E5 CD 8C    !....u..fY.nX...
0221C0:  03 E1 21 00 00 EB C3 75 05 21 00 00 E5 DD 66 59    ..!....u.!....fY
0221D0:  DD 6E 58 E5 CD 00 06 E1 E1 21 00 00 EB C3 75 05    .nX......!....u.
0221E0:  DD 66 55 DD 6E 54 E5 DD 66 59 DD 6E 58 E5 CD ED    .fU.nT..fY.nX...
0221F0:  07 E1 E1 21 01 00 EB C3 75 05 DD 66 55 DD 6E 54    ...!....u..fU.nT
022200:  E5 DD 66 59 DD 6E 58 E5 CD 6B 07 E1 E1 21 01 00    ..fY.nX..k...!..
022210:  EB C3 75 05 DD 66 55 DD 6E 54 E5 DD 66 59 DD 6E    ..u..fU.nT..fY.n
022220:  58 E5 CD 00 06 E1 E1 21 01 00 EB C3 75 05 21 00    X......!....u.!.
022230:  00 EB C3 75 05 DD 66 57 DD 6E 56 E5 CD 8C 03 E1    ...u..fW.nV.....
022240:  DD 66 61 DD 6E 60 2B DD 74 61 DD 75 60 21 00 00    .fa.n`+.ta.u`!..
022250:  EB C3 75 05 C3 75 05 24 00 2E 05 49 00 14 05 58    ..u..u.$...I...X
022260:  00 FA 04 4F 00 E0 04 4E 00 C9 04 43 00 B7 04 53    ...O...N...C...S
022270:  00 A5 04 35 05 EB EB DD 66 5D DD 6E 5C 19 DD 74    ...5....f].n\..t
022280:  5D DD 75 5C E1 E1 E1 C3 95 05 DD 66 5B DD 6E 5A    ].u\.......f[.nZ
022290:  E5 CD 8C 03 E1 E1 E1 23 C3 13 04 E1 22 14 04 E1    .......#...."...
0222A0:  E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88    .".....!......!.
0222B0:  FF DD 39 2A CC 05 E5 DD 66 7F DD 6E 7E 29 6E 26    ..9*....f..n~)n&
0222C0:  00 7C EE 80 67 22 CC 05 21 01 00 11 00 00 EB 42    .|..g"..!......B
0222D0:  4B 7A EE 80 57 ED 52 DA F5 05 C5 DD 66 7F DD 6E    Kz..W.R.....f..n
0222E0:  7E 29 DD 56 75 DD 5E 74 19 6E 26 00 E5 CD 8C 03    ~).Vu.^t.n&.....
0222F0:  E1 E1 23 18 D6 E1 22 CC 05 E1 22 10 01 DD E1 C9    ..#..."...".....
022300:  21 2A 00 CD 92 02 DD 21 8A FF DD 39 21 00 00 E5    !*.....!...9!...
022310:  DD 66 7D DD 6E 7C E5 2A 10 01 CB 3C CB 1D E5 DD    .f}.n|.*...<....
022320:  66 7D DD 6E 7C 7C EE 80 67 11 00 80 A7 ED 52 D2    f}.n||..g.....R.
022330:  54 06 DD 66 7F DD 6E 7E 2B DD 74 7F DD 75 7E DD    T..f..n~+.t..u~.
022340:  66 73 DD 6E 72 7C EE FF 67 7D EE FF 6F 23 DD 74    fs.nr|..g}..o#.t
022350:  73 DD 75 72 DD 66 73 DD 6E 72 11 0A 00 CD 32 01    s.ur.fs.nr....2.
022360:  EB E5 DD 66 71 DD 6E 70 DD 56 75 DD 5E 74 19 29    ...fq.np.Vu.^t.)
022370:  D1 73 23 72 DD 66 73 DD 6E 72 11 0A 00 CD 32 01    .s#r.fs.nr....2.
022380:  DD 74 73 DD 75 72 DD 66 75 DD 6E 74 23 DD 74 75    .ts.ur.fu.nt#.tu
022390:  DD 75 74 DD 7E 73 DD B6 72 C2 54 06 2A B5 06 E5    .ut.~s..r.T.*...
0223A0:  DD 66 7F DD 6E 7E 7C EE 80 67 22 B5 06 DD 66 75    .f..n~|..g"...fu
0223B0:  DD 6E 74 23 11 00 00 EB 42 4B 7A EE 80 57 ED 52    .nt#....BKz..W.R
0223C0:  DA D0 06 C5 21 20 00 E5 CD 8C 03 E1 E1 23 18 E4    ....! .......#..
0223D0:  E1 22 B5 06 DD 66 7D DD 6E 7C 7C EE 80 67 11 00    ."...f}.n||..g..
0223E0:  80 A7 ED 52 D2 EF 06 21 2D 00 E5 CD 8C 03 E1 2A    ...R...!-......*
0223F0:  05 07 E5 21 00 00 7C EE 80 67 22 05 07 DD 66 75    ...!..|..g"...fu
022400:  DD 6E 74 2B 11 00 00 44 4D 7C EE 80 67 ED 52 DA    .nt+...DM|..g.R.
022410:  32 07 C5 DD 66 71 DD 6E 70 DD 56 6D DD 5E 6C 19    2...fq.np.Vm.^l.
022420:  29 5E 23 56 EB 11 30 00 19 E5 CD 8C 03 E1 E1 2B    )^#V..0........+
022430:  18 D2 E1 22 05 07 21 06 00 39 F9 2A 10 01 22 12    ..."..!..9.*..".
022440:  01 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21    ..".....!......!
022450:  88 FF DD 39 21 00 00 E5 DD 66 7F DD 6E 7E E5 CD    ...9!....f..n~..
022460:  00 06 E1 E1 E1 22 10 01 DD E1 C9 21 00 00 CD 92    .....".....!....
022470:  02 DD 21 8A FF DD 39 DD 56 7F DD 5E 7E 7A EE 80    ..!...9.V..^~z..
022480:  57 21 01 80 A7 ED 52 D2 A4 07 DD 66 7F DD 6E 7E    W!....R....f..n~
022490:  2B E5 DD 66 7D DD 6E 7C 11 04 00 CD FE 01 E5 CD    +..f}.n|........
0224A0:  6B 07 E1 E1 21 D5 03 C3 CA 07 30 00 31 00 32 00    k...!.....0.1.2.
0224B0:  33 00 34 00 35 00 36 00 37 00 38 00 39 00 41 00    3.4.5.6.7.8.9.A.
0224C0:  42 00 43 00 44 00 45 00 46 00 E5 DD 66 7D DD 6E    B.C.D.E.F...f}.n
0224D0:  7C 11 0F 00 7C A2 67 7D A3 6F D1 19 29 5E 23 56    |...|.g}£o..)^#V
0224E0:  EB E5 CD 8C 03 E1 E1 22 10 01 DD E1 C9 21 00 00    .......".....!..
0224F0:  CD 92 02 DD 21 8A FF DD 39 DD 56 7F DD 5E 7E 7A    ....!...9.V..^~z
022500:  EE 80 57 21 01 80 A7 ED 52 D2 26 08 DD 66 7F DD    ..W!....R.&..f..
022510:  6E 7E 2B E5 DD 66 7D DD 6E 7C 11 03 00 CD FE 01    n~+..f}.n|......
022520:  E5 CD ED 07 E1 E1 DD 66 7D DD 6E 7C 11 07 00 7C    .......f}.n|...|
022530:  A2 67 7D A3 6F 11 30 00 19 E5 CD 8C 03 E1 E1 22    .g}£o.0........"
022540:  10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD    .....!......!...
022550:  39 21 0D 01 E5 CD 8C 03 E1 E1 22 10 01 DD E1 C9    9!........".....
022560:  21 00 00 CD 92 02 DD 21 86 FF DD 39 2A 88 03 7C    !......!...9*..|
022570:  B5 CA 93 08 2A 88 03 E5 21 00 00 22 88 03 DD 66    ....*...!.."...f
022580:  79 DD 6E 78 22 8A 03 DD 66 79 DD 6E 78 EB E1 C3    y.nx"...fy.nx...
022590:  AF 08 E1 2A 84 03 7C B5 C2 A2 08 CD 3D 03 EB C3    ...*..|.....=...
0225A0:  AB 08 2A 84 03 E5 CD C4 0E E1 EB EB C3 AF 08 E1    ..*.............
0225B0:  22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF    ".....!......!..
0225C0:  DD 39 2A 8A 03 22 88 03 E1 22 10 01 DD E1 C9 21    .9*.."...".....!
0225D0:  00 00 CD 92 02 DD 21 88 FF DD 39 21 00 00 E5 E5    ......!...9!....
0225E0:  2A F5 08 E5 DD 66 77 DD 6E 76 7C EE 80 67 22 F5    *....fw.nv|..g".
0225F0:  08 21 01 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52    .!......BKz..W.R
022600:  DA 20 09 C5 21 08 00 E5 CD 8C 03 E1 21 20 00 E5    . ..!.......! ..
022610:  CD 8C 03 E1 21 08 00 E5 CD 8C 03 E1 E1 23 18 D4    ....!........#..
022620:  E1 22 F5 08 21 00 00 DD 74 77 DD 75 76 CD 60 08    ."..!...tw.uv.`.
022630:  EB DD 74 75 DD 75 74 DD 66 75 DD 6E 74 11 0D 00    ..tu.ut.fu.nt...
022640:  A7 ED 52 CA 00 0A DD 66 75 DD 6E 74 11 FC 00 A7    ..R....fu.nt....
022650:  ED 52 CA 00 0A DD 66 75 DD 6E 74 11 03 00 A7 ED    .R....fu.nt.....
022660:  52 CA 00 0A DD 66 75 DD 6E 74 11 7F 00 A7 ED 52    R....fu.nt.....R
022670:  C2 AF 09 DD 7E 77 DD B6 76 C2 87 09 21 07 00 E5    ....~w..v...!...
022680:  CD 8C 03 E1 C3 AC 09 21 08 00 E5 CD 8C 03 E1 21    .......!.......!
022690:  20 00 E5 CD 8C 03 E1 21 08 00 E5 CD 8C 03 E1 DD     ......!........
0226A0:  66 77 DD 6E 76 2B DD 74 77 DD 75 76 C3 F3 09 DD    fw.nv+.tw.uv....
0226B0:  66 77 DD 6E 76 11 FF 00 A7 ED 52 C2 C9 09 21 07    fw.nv.....R...!.
0226C0:  00 E5 CD 8C 03 E1 C3 F3 09 DD 66 75 DD 6E 74 E5    ..........fu.nt.
0226D0:  CD 8C 03 E1 DD 66 77 DD 6E 76 23 DD 74 77 DD 75    .....fw.nv#.tw.u
0226E0:  76 DD 66 7F DD 6E 7E 29 DD 56 77 DD 5E 76 19 DD    v.f..n~).Vw.^v..
0226F0:  7E 74 77 CD 60 08 EB DD 74 75 DD 75 74 C3 37 09    ~tw.`...tu.ut.7.
022700:  DD 66 75 DD 6E 74 11 FC 00 A7 ED 52 CA 1E 0A DD    .fu.nt.....R....
022710:  66 75 DD 6E 74 11 03 00 A7 ED 52 C2 27 0A DD 7E    fu.nt.....R.'..~
022720:  77 DD B6 76 C2 E0 08 DD 66 75 DD 6E 74 11 FC 00    w..v....fu.nt...
022730:  A7 ED 52 CA 45 0A DD 66 75 DD 6E 74 11 03 00 A7    ..R.E..fu.nt....
022740:  ED 52 C2 4B 0A 21 00 00 C3 51 0A DD 66 77 DD 6E    .R.K.!...Q..fw.n
022750:  76 E5 DD 66 7F DD 6E 7E 29 D1 73 DD 66 75 DD 6E    v..f..n~).s.fu.n
022760:  74 11 03 00 A7 ED 52 21 FF FF 28 03 21 00 00 E5    t.....R!..(.!...
022770:  DD 66 75 DD 6E 74 11 FC 00 A7 ED 52 21 FF FF 28    .fu.nt.....R!..(
022780:  03 21 00 00 D1 7C B2 67 7D B3 6F 7C EE FF 67 7D    .!...|.g}.o|..g}
022790:  EE FF 6F EB E1 E1 C3 9B 0A E1 E1 E1 22 10 01 DD    ..o........."...
0227A0:  E1 C9 21 02 01 CD 92 02 DD 21 86 FF DD 39 2A 10    ..!......!...9*.
0227B0:  01 CB 3C CB 1D E5 DD 66 79 DD 6E 78 E5 CD CF 08    ..<....fy.nx....
0227C0:  E1 21 0A 00 E5 DD 66 79 DD 6E 78 E5 CD E5 0A E1    .!....fy.nx.....
0227D0:  E1 EB EB E1 C3 D8 0A E1 2A 10 01 22 12 01 E1 22    ........*.."..."
0227E0:  10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A FF DD    .....!......!...
0227F0:  39 21 01 00 E5 21 00 00 E5 DD 66 7D DD 6E 7C 29    9!...!....f}.n|)
022800:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
022810:  1D 00 00 00 02 09 50 E5 1D 00 C1 02 00 00 00 02    ......P.........
022820:  1D 00 C2 02 00 00 00 02 1D 00 C3 02 00 00 00 02    ................
022830:  1D 00 C4 02 00 00 00 02 1D 00 C5 02 00 00 00 02    ................
022840:  1D 00 C6 02 00 00 00 02 1D 00 C7 02 00 00 00 02    ................
022850:  1D 00 C8 02 00 00 00 02 1D 00 C9 02 00 00 00 02    ................
022860:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
022870:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
022880:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
022890:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0228A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0228B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0228C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0228D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0228E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0228F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
022900:  6E 26 00 DD 56 75 DD 5E 74 7C EE 80 67 7A EE 80    n&..Vu.^t|..gz..
022910:  57 A7 ED 52 DA A3 0B DD 66 7D DD 6E 7C 29 DD 56    W..R.£..f}.n|).V
022920:  75 DD 5E 74 19 6E 26 00 E5 CD B0 16 E1 EB 7C EE    u.^t.n&.......|.
022930:  80 67 11 00 80 A7 ED 52 DA A3 0B DD 66 7D DD 6E    .g.....R.£..f}.n
022940:  7C 29 DD 56 75 DD 5E 74 19 6E 26 00 E5 CD B0 16    |).Vu.^t.n&.....
022950:  E1 DD 66 7F DD 6E 7E 7C EE 80 67 7A EE 80 57 A7    ..f..n~|..gz..W.
022960:  ED 52 DA A3 0B DD 66 7D DD 6E 7C 29 DD 56 75 DD    .R.£..f}.n|).Vu.
022970:  5E 74 19 6E 26 00 E5 CD B0 16 E1 D5 DD 66 73 DD    ^t.n&........fs.
022980:  6E 72 DD 56 7F DD 5E 7E CD 16 01 D1 19 DD 74 73    nr.V..^~......ts
022990:  DD 75 72 DD 66 75 DD 6E 74 23 DD 74 75 DD 75 74    .ur.fu.nt#.tu.ut
0229A0:  C3 F9 0A DD 66 73 DD 6E 72 EB E1 E1 C3 B1 0B E1    ....fs.nr.......
0229B0:  E1 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21    ..".....!......!
0229C0:  8A FF DD 39 21 0F 00 E5 DD 66 7F DD 6E 7E 29 E5    ...9!....f..n~).
0229D0:  DD 66 7F DD 6E 7E E5 DD 66 7D DD 6E 7C E5 CD 11    .f..n~..f}.n|...
0229E0:  12 E1 E1 DD E5 E1 11 72 00 19 CB 3C CB 1D E5 DD    .......r...<....
0229F0:  E5 E1 11 74 00 19 CB 3C CB 1D E5 CD 2D 14 E1 E1    ...t...<....-...
022A00:  DD 66 7F DD 6E 7E 11 11 00 19 29 36 A4 23 36 00    .f..n~....)6.#6.
022A10:  DD 66 75 DD 6E 74 11 FF 00 A7 ED 52 21 FF FF 20    .fu.nt.....R!.. 
022A20:  03 21 00 00 EB E1 E1 C3 2C 0C E1 E1 E1 22 10 01    .!......,...."..
022A30:  DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 2A    ...!......!...9*
022A40:  84 03 E5 21 00 00 22 84 03 DD 56 79 DD 5E 78 7A    ...!.."...Vy.^xz
022A50:  EE 80 57 21 00 80 A7 ED 52 D2 6B 0C DD 66 79 DD    ..W!....R.k..fy.
022A60:  6E 78 E5 CD 7D 0F E1 EB C3 6E 0C 21 FF FF EB E1    nx..}....n.!....
022A70:  C3 74 0C E1 E1 22 10 01 DD E1 C9 21 00 00 CD 92    .t...".....!....
022A80:  02 DD 21 86 FF DD 39 ED 5B 84 03 7A EE 80 57 21    ..!...9.[..z..W!
022A90:  00 80 A7 ED 52 D2 A0 0C 2A 84 03 E5 CD 94 0F E1    ....R...*.......
022AA0:  E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A    .".....!......!.
022AB0:  FF DD 39 21 16 00 E5 DD 66 7F DD 6E 7E 29 E5 DD    ..9!....f..n~)..
022AC0:  66 7F DD 6E 7E E5 DD 66 7D DD 6E 7C E5 CD 11 12    f..n~..f}.n|....
022AD0:  E1 E1 DD 66 7F DD 6E 7E 29 E5 21 13 00 E5 CD 6F    ...f..n~).!....o
022AE0:  14 E1 E1 DD E5 E1 11 72 00 19 CB 3C CB 1D E5 DD    .......r...<....
022AF0:  E5 E1 11 74 00 19 CB 3C CB 1D E5 CD 2D 14 E1 E1    ...t...<....-...
022B00:  DD 66 7F DD 6E 7E 11 11 00 19 29 36 24 23 36 00    .f..n~....)6$#6.
022B10:  DD 66 75 DD 6E 74 11 FF 00 A7 ED 52 21 FF FF 20    .fu.nt.....R!.. 
022B20:  03 21 00 00 EB E1 E1 C3 2C 0D E1 E1 E1 22 10 01    .!......,...."..
022B30:  DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 2A    ...!......!...9*
022B40:  86 03 E5 21 00 00 22 86 03 DD 56 79 DD 5E 78 7A    ...!.."...Vy.^xz
022B50:  EE 80 57 21 00 80 A7 ED 52 D2 6B 0D DD 66 79 DD    ..W!....R.k..fy.
022B60:  6E 78 E5 CD 94 10 E1 EB C3 6E 0D 21 FF FF EB E1    nx.......n.!....
022B70:  C3 74 0D E1 E1 22 10 01 DD E1 C9 21 00 00 CD 92    .t...".....!....
022B80:  02 DD 21 88 FF DD 39 DD 66 7F DD 6E 7E 11 0D 01    ..!...9.f..n~...
022B90:  A7 ED 52 C2 A7 0D 21 0D 00 E5 CD 7B 0D E1 21 0A    ..R...!....{..!.
022BA0:  00 DD 74 7F DD 75 7E DD 66 7F DD 6E 7E E5 21 02    ..t..u~.f..n~.!.
022BB0:  00 E5 CD 6F 14 E1 E1 21 FF FF EB C3 BE 0D E1 22    ...o...!......."
022BC0:  10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD    .....!......!...
022BD0:  39 DD 66 7F DD 6E 7E 11 0D 01 A7 ED 52 C2 F1 0D    9.f..n~.....R...
022BE0:  21 0D 00 E5 CD C5 0D E1 21 0A 00 DD 74 7F DD 75    !.......!...t..u
022BF0:  7E DD 66 7F DD 6E 7E E5 21 05 00 E5 CD 6F 14 E1    ~.f..n~.!....o..
022C00:  E1 21 FF FF EB C3 08 0E E1 22 10 01 DD E1 C9 21    .!.......".....!
022C10:  00 00 CD 92 02 DD 21 86 FF DD 39 E5 DD E5 E1 11    ......!...9.....
022C20:  78 00 19 CB 3C CB 1D E5 21 0F 00 E5 CD 92 14 E1    x...<...!.......
022C30:  E1 DD 66 79 DD 6E 78 11 00 00 A7 ED 52 21 FF FF    ..fy.nx.....R!..
022C40:  28 03 21 00 00 EB E1 C3 4B 0E E1 E1 22 10 01 DD    (.!.....K..."...
022C50:  E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 21 0B    ..!......!...9!.
022C60:  00 E5 E5 DD E5 E1 11 76 00 19 CB 3C CB 1D E5 DD    .......v...<....
022C70:  E5 E1 11 78 00 19 CB 3C CB 1D E5 CD 2D 14 E1 E1    ...x...<....-...
022C80:  DD 66 79 DD 6E 78 11 01 00 A7 ED 52 21 FF FF 28    .fy.nx.....R!..(
022C90:  03 21 00 00 EB E1 E1 C3 9C 0E E1 E1 E1 22 10 01    .!..........."..
022CA0:  DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 CD    ...!......!...9.
022CB0:  52 0E EB 7C B5 CA BD 0E CD 3D 03 18 F2 E1 22 10    R..|.....=....".
022CC0:  01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39    ....!......!...9
022CD0:  21 00 00 E5 21 00 00 E5 DD 66 7F DD 6E 7E 11 11    !...!....f..n~..
022CE0:  00 19 29 5E 23 56 EB 11 A4 00 A7 ED 52 C2 1A 0F    ..)^#V......R...
022CF0:  DD 66 7F DD 6E 7E E5 CD 37 11 E1 EB 7C EE FF 67    .f..n~..7...|..g
022D00:  7D EE FF 6F DD 74 75 DD 75 74 DD 66 7F DD 6E 7E    }..o.tu.ut.f..n~
022D10:  11 11 00 19 29 36 24 23 36 00 DD 66 7F DD 6E 7E    ....)6$#6..f..n~
022D20:  11 11 00 19 29 5E 23 56 EB E5 DD 66 7F DD 6E 7E    ....)^#V...f..n~
022D30:  29 D1 19 6E 26 00 DD 74 77 DD 75 76 DD 66 7F DD    )..n&..tw.uv.f..
022D40:  6E 7E 11 11 00 19 29 5E 23 56 EB 23 E5 DD 66 7F    n~....)^#V.#..f.
022D50:  DD 6E 7E 11 11 00 19 29 D1 73 23 72 DD 66 77 DD    .n~....).s#r.fw.
022D60:  6E 76 DD 56 75 DD 5E 74 7C B2 67 7D B3 6F EB E1    nv.Vu.^t|.g}.o..
022D70:  E1 C3 76 0F E1 E1 E1 22 10 01 DD E1 C9 21 00 00    ..v....".....!..
022D80:  CD 92 02 DD 21 88 FF DD 39 21 FF FF EB E1 22 10    ....!...9!....".
022D90:  01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39    ....!......!...9
022DA0:  DD 66 7F DD 6E 7E 29 11 20 00 19 36 00 DD 66 7F    .f..n~). ..6..f.
022DB0:  DD 6E 7E 11 11 00 19 29 36 A4 23 36 00 E1 22 10    .n~....)6.#6..".
022DC0:  01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A FF DD 39    ....!......!...9
022DD0:  21 FF FF E5 DD 66 7D DD 6E 7C 11 0D 01 A7 ED 52    !....f}.n|.....R
022DE0:  C2 0A 10 DD 66 7F DD 6E 7E E5 21 0D 00 E5 CD C4    ....f..n~.!.....
022DF0:  0F E1 E1 EB 7C B5 C2 01 10 21 00 00 EB E1 C3 8D    ....|....!......
022E00:  10 21 0A 00 DD 74 7D DD 75 7C DD 66 7F DD 6E 7E    .!...t}.u|.f..n~
022E10:  11 11 00 19 29 5E 23 56 EB 11 A4 00 A7 ED 52 C2    ....)^#V......R.
022E20:  44 10 DD 66 7F DD 6E 7E E5 CD A4 11 E1 EB DD 74    D..f..n~.......t
022E30:  75 DD 75 74 DD 66 7F DD 6E 7E 11 11 00 19 29 36    u.ut.f..n~....)6
022E40:  24 23 36 00 DD 66 7F DD 6E 7E 11 11 00 19 29 5E    $#6..f..n~....)^
022E50:  23 56 EB E5 DD 66 7F DD 6E 7E 29 D1 19 DD 7E 7C    #V...f..n~)...~|
022E60:  77 DD 66 7F DD 6E 7E 11 11 00 19 29 5E 23 56 EB    w.f..n~....)^#V.
022E70:  23 E5 DD 66 7F DD 6E 7E 11 11 00 19 29 D1 73 23    #..f..n~....).s#
022E80:  72 DD 66 75 DD 6E 74 EB E1 C3 8D 10 E1 E1 22 10    r.fu.nt.......".
022E90:  01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39    ....!......!...9
022EA0:  21 10 00 E5 DD 66 7F DD 6E 7E 29 E5 DD 66 7F DD    !....f..n~)..f..
022EB0:  6E 7E 11 11 00 19 29 5E 23 56 EB 11 A4 00 A7 ED    n~....)^#V......
022EC0:  52 CA D4 10 DD 66 7F DD 6E 7E E5 21 1A 00 E5 CD    R....f..n~.!....
022ED0:  C4 0F E1 E1 DD 66 7F DD 6E 7E 11 11 00 19 29 5E    .....f..n~....)^
022EE0:  23 56 EB 11 24 00 A7 ED 52 CA F7 10 DD 66 7F DD    #V..$...R....f..
022EF0:  6E 7E E5 CD A4 11 E1 DD E5 E1 11 74 00 19 CB 3C    n~.........t...<
022F00:  CB 1D E5 DD E5 E1 11 76 00 19 CB 3C CB 1D E5 CD    .......v...<....
022F10:  2D 14 E1 E1 DD 66 77 DD 6E 76 11 FF 00 A7 ED 52    -....fw.nv.....R
022F20:  21 FF FF 20 03 21 00 00 EB E1 E1 C3 30 11 E1 E1    !.. .!......0...
022F30:  E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88    .".....!......!.
022F40:  FF DD 39 21 14 00 E5 DD 66 7F DD 6E 7E 29 E5 DD    ..9!....f..n~)..
022F50:  66 7F DD 6E 7E 29 11 24 00 19 E5 21 1A 00 E5 CD    f..n~).$...!....
022F60:  6F 14 E1 E1 DD E5 E1 11 74 00 19 CB 3C CB 1D E5    o.......t...<...
022F70:  DD E5 E1 11 76 00 19 CB 3C CB 1D E5 CD 2D 14 E1    ....v...<....-..
022F80:  E1 DD 66 77 DD 6E 76 11 00 00 A7 ED 52 21 FF FF    ..fw.nv.....R!..
022F90:  28 03 21 00 00 EB E1 E1 C3 9D 11 E1 E1 E1 22 10    (.!...........".
022FA0:  01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39    ....!......!...9
022FB0:  21 15 00 E5 DD 66 7F DD 6E 7E 29 E5 DD 66 7F DD    !....f..n~)..f..
022FC0:  6E 7E 29 11 24 00 19 E5 21 1A 00 E5 CD 6F 14 E1    n~).$...!....o..
022FD0:  E1 DD E5 E1 11 74 00 19 CB 3C CB 1D E5 DD E5 E1    .....t...<......
022FE0:  11 76 00 19 CB 3C CB 1D E5 CD 2D 14 E1 E1 DD 66    .v...<....-....f
022FF0:  77 DD 6E 76 11 00 00 A7 ED 52 21 FF FF 28 03 21    w.nv.....R!..(.!
023000:  00 00 EB E1 E1 C3 0A 12 E1 E1 E1 22 10 01 DD E1    ..........."....
023010:  C9 21 00 00 CD 92 02 DD 21 8A FF DD 39 21 01 00    .!......!...9!..
023020:  E5 21 01 00 E5 21 00 00 E5 21 FF FF E5 2A 3F 12    .!...!...!...*?.
023030:  E5 21 0B 00 7C EE 80 67 22 3F 12 21 01 00 11 00    .!..|..g"?.!....
023040:  00 EB 42 4B 7A EE 80 57 ED 52 DA 62 12 C5 DD 66    ..BKz..W.R.b...f
023050:  7F DD 6E 7E 29 DD 56 6B DD 5E 6A 19 36 20 E1 23    ..n~).Vk.^j.6 .#
023060:  18 DC E1 22 3F 12 DD 66 7F DD 6E 7E 29 36 00 DD    ..."?..f..n~)6..
023070:  66 7D DD 6E 7C 29 6E 26 00 DD 56 75 DD 5E 74 7C    f}.n|)n&..Vu.^t|
023080:  EE 80 67 7A EE 80 57 A7 ED 52 DA 6D 13 DD 66 7D    ..gz..W..R.m..f}
023090:  DD 6E 7C 29 DD 56 75 DD 5E 74 19 6E 26 00 E5 CD    .n|).Vu.^t.n&...
0230A0:  43 16 E1 EB DD 74 71 DD 75 70 DD 66 75 DD 6E 74    C....tq.up.fu.nt
0230B0:  23 DD 74 75 DD 75 74 DD 66 73 DD 6E 72 11 02 00    #.tu.ut.fs.nr...
0230C0:  A7 ED 52 C2 0F 13 DD 66 6F DD 6E 6E 7C B5 CA 0F    ..R....fo.nn|...
0230D0:  13 DD 66 71 DD 6E 70 11 3A 00 A7 ED 52 C2 0F 13    ..fq.np.:...R...
0230E0:  DD 66 7F DD 6E 7E 29 23 6E 26 00 11 BF FF 19 23    .f..n~)#n&.....#
0230F0:  E5 DD 66 7F DD 6E 7E 29 D1 73 21 01 00 DD 74 73    ..f..n~).s!...ts
023100:  DD 75 72 21 00 00 DD 74 6F DD 75 6E C3 6F 12 DD    .ur!...to.un.o..
023110:  66 71 DD 6E 70 11 2E 00 A7 ED 52 C2 2A 13 21 09    fq.np.....R.*.!.
023120:  00 DD 74 73 DD 75 72 C3 6D 13 DD 66 73 DD 6E 72    ..ts.ur.m..fs.nr
023130:  11 09 00 A7 ED 52 CA 48 13 DD 66 71 DD 6E 70 11    .....R.H..fq.np.
023140:  20 00 A7 ED 52 C2 4B 13 C3 6D 13 DD 66 7F DD 6E     ...R.K..m..f..n
023150:  7E 29 DD 56 73 DD 5E 72 19 DD 7E 70 77 DD 66 73    ~).Vs.^r..~pw.fs
023160:  DD 6E 72 23 DD 74 73 DD 75 72 C3 6F 12 DD 66 71    .nr#.ts.ur.o..fq
023170:  DD 6E 70 11 2E 00 A7 ED 52 C2 07 14 DD 66 7D DD    .np.....R....f}.
023180:  6E 7C 29 6E 26 00 DD 56 75 DD 5E 74 7C EE 80 67    n|)n&..Vu.^t|..g
023190:  7A EE 80 57 A7 ED 52 DA 07 14 DD 66 7D DD 6E 7C    z..W..R....f}.n|
0231A0:  29 DD 56 75 DD 5E 74 19 6E 26 00 E5 CD 43 16 E1    ).Vu.^t.n&...C..
0231B0:  EB DD 74 71 DD 75 70 DD 66 75 DD 6E 74 23 DD 74    ..tq.up.fu.nt#.t
0231C0:  75 DD 75 74 DD 66 71 DD 6E 70 11 20 00 A7 ED 52    u.ut.fq.np. ...R
0231D0:  CA E2 13 DD 66 73 DD 6E 72 11 0C 00 A7 ED 52 C2    ....fs.nr.....R.
0231E0:  E5 13 C3 07 14 DD 66 7F DD 6E 7E 29 DD 56 73 DD    ......f..n~).Vs.
0231F0:  5E 72 19 DD 7E 70 77 DD 66 73 DD 6E 72 23 DD 74    ^r..~pw.fs.nr#.t
023200:  73 DD 75 72 C3 7C 13 DD 66 7F DD 6E 7E 29 11 0C    s.ur.|..f..n~)..
023210:  00 19 36 00 DD 66 7F DD 6E 7E 29 11 20 00 19 36    ..6..f..n~). ..6
023220:  00 21 08 00 39 F9 E1 22 10 01 DD E1 C9 21 00 00    .!..9..".....!..
023230:  CD 92 02 DD 21 8A FF DD 39 DD 66 7F DD 6E 7E 29    ....!...9.f..n~)
023240:  5E 23 56 DD 66 7D DD 6E 7C 29 4E DD E5 CD 05 00    ^#V.f}.n|)N.....
023250:  DD E1 EB DD 66 7F DD 6E 7E 29 73 23 72 DD 66 7D    ....f..n~)s#r.f}
023260:  DD 6E 7C 29 77 23 36 00 E1 22 10 01 DD E1 C9 21    .n|)w#6..".....!
023270:  00 00 CD 92 02 DD 21 8A FF DD 39 DD 56 7F DD 5E    ......!...9.V..^
023280:  7E DD 4E 7C DD E5 CD 05 00 DD E1 E1 22 10 01 DD    ~.N|........"...
023290:  E1 C9 21 04 00 CD 92 02 DD 21 8A FF DD 39 2A 10    ..!......!...9*.
0232A0:  01 CB 3C CB 1D E5 21 00 00 29 11 80 00 19 6E 26    ..<...!..)....n&
0232B0:  00 E5 DD 66 75 DD 6E 74 29 D1 73 21 00 00 29 11    ...fu.nt).s!..).
0232C0:  81 00 19 6E 26 00 E5 DD 66 75 DD 6E 74 29 23 D1    ...n&...fu.nt)#.
0232D0:  73 21 00 00 29 11 82 00 19 6E 26 00 E5 DD 66 75    s!..)....n&...fu
0232E0:  DD 6E 74 29 11 02 00 19 D1 73 21 00 00 29 11 80    .nt).....s!..)..
0232F0:  00 19 36 C3 DD 66 7D DD 6E 7C 2B 54 5D 29 19 E5    ..6..f}.n|+T])..
023300:  21 00 00 29 11 02 00 19 6E 26 00 EB 21 00 01 CD    !..)....n&..!...
023310:  16 01 E5 21 00 00 29 23 6E 26 00 D1 19 D1 19 23    ...!..)#n&.....#
023320:  E5 21 00 00 29 D1 19 6E 26 00 E5 21 00 00 29 11    .!..)..n&..!..).
023330:  81 00 19 D1 73 DD 66 7D DD 6E 7C 2B 54 5D 29 19    ....s.f}.n|+T]).
023340:  E5 21 00 00 29 11 02 00 19 6E 26 00 EB 21 00 01    .!..)....n&..!..
023350:  CD 16 01 E5 21 00 00 29 23 6E 26 00 D1 19 D1 19    ....!..)#n&.....
023360:  11 02 00 19 E5 21 00 00 29 D1 19 6E 26 00 E5 21    .....!..)..n&..!
023370:  00 00 29 11 82 00 19 D1 73 DD E5 CD 80 00 DD E1    ..).....s.......
023380:  DD 66 7F DD 6E 7E 29 77 23 36 00 DD 66 75 DD 6E    .f..n~)w#6..fu.n
023390:  74 29 6E 26 00 E5 21 00 00 29 11 80 00 19 D1 73    t)n&..!..).....s
0233A0:  DD 66 75 DD 6E 74 29 23 6E 26 00 E5 21 00 00 29    .fu.nt)#n&..!..)
0233B0:  11 81 00 19 D1 73 DD 66 75 DD 6E 74 29 11 02 00    .....s.fu.nt)...
0233C0:  19 6E 26 00 E5 21 00 00 29 11 82 00 19 D1 73 E1    .n&..!..).....s.
0233D0:  2A 10 01 22 12 01 E1 22 10 01 DD E1 C9 21 00 00    *.."...".....!..
0233E0:  CD 92 02 DD 21 88 FF DD 39 DD 66 7F DD 6E 7E 22    ....!...9.f..n~"
0233F0:  84 03 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD    ...".....!......
023400:  21 88 FF DD 39 DD 66 7F DD 6E 7E 22 86 03 E1 22    !...9.f..n~"..."
023410:  10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD    .....!......!...
023420:  39 2A 84 03 EB E1 22 10 01 DD E1 C9 21 00 00 CD    9*....".....!...
023430:  92 02 DD 21 86 FF DD 39 2A 86 03 EB E1 22 10 01    ...!...9*...."..
023440:  DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 DD    ...!......!...9.
023450:  66 7F DD 6E 7E 7C EE 80 67 11 61 80 A7 ED 52 DA    f..n~|..g.a...R.
023460:  82 16 DD 56 7F DD 5E 7E 7A EE 80 57 21 7A 80 A7    ...V..^~z..W!z..
023470:  ED 52 DA 82 16 DD 66 7F DD 6E 7E 11 E0 FF 19 C3    .R....f..n~.....
023480:  88 16 DD 66 7F DD 6E 7E EB E1 22 10 01 DD E1 C9    ...f..n~..".....
023490:  21 00 00 CD 92 02 DD 21 88 FF DD 39 DD 66 7F DD    !......!...9.f..
0234A0:  6E 7E E5 CD 43 16 E1 EB EB E1 22 10 01 DD E1 C9    n~..C.....".....
0234B0:  21 00 00 CD 92 02 DD 21 88 FF DD 39 DD 66 7F DD    !......!...9.f..
0234C0:  6E 7E 7C EE 80 67 11 30 80 A7 ED 52 DA EF 16 DD    n~|..g.0...R....
0234D0:  56 7F DD 5E 7E 7A EE 80 57 21 39 80 A7 ED 52 DA    V..^~z..W!9...R.
0234E0:  EF 16 DD 66 7F DD 6E 7E 11 D0 FF 19 C3 FD 16 DD    ...f..n~........
0234F0:  66 7F DD 6E 7E 11 BF FF 19 11 0A 00 19 EB E1 22    f..n~.........."
023500:  10 01 DD E1 C9 C3 20 17 18 17 16 15 14 13 12 11    ...... .........
023510:  10 0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01    ................
023520:  C3 28 17 00 04 03 02 01 21 00 00 CD 92 02 DD 21    .(......!......!
023530:  8C FF DD 39 DD 66 7B DD 6E 7A DD 56 7D DD 5E 7C    ...9.f{.nz.V}.^|
023540:  DD 46 7F DD 4E 7E A7 ED 52 19 38 04 ED B0 18 08    .F..N~..R.8.....
023550:  0B 09 EB 09 EB 03 ED B8 E1 22 10 01 DD E1 C9 21    .........".....!
023560:  04 00 CD 92 02 DD 21 92 FF DD 39 2A 10 01 CB 3C    ......!...9*...<
023570:  CB 1D E5 21 03 00 E5 DD 66 6D DD 6E 6C 29 E5 21    ...!....fm.nl).!
023580:  90 00 E5 CD 28 17 21 06 00 39 F9 21 00 00 29 11    ....(.!..9.!..).
023590:  90 00 19 36 C3 DD 66 75 DD 6E 74 11 FF 00 7C A2    ...6..fu.nt...|.
0235A0:  67 7D A3 6F E5 21 00 00 29 11 91 00 19 D1 73 DD    g}£o.!..).....s.
0235B0:  66 75 DD 6E 74 11 00 FF 7C A2 67 7D A3 6F 11 08    fu.nt...|.g}£o..
0235C0:  00 CD FE 01 E5 21 00 00 29 11 92 00 19 D1 73 DD    .....!..).....s.
0235D0:  E5 DD 66 77 DD 6E 76 29 5E 23 56 D5 DD 66 79 DD    ..fw.nv)^#V..fy.
0235E0:  6E 78 29 4E 23 46 DD 66 7F DD 6E 7E 29 5E 23 56    nx)N#F.f..n~)^#V
0235F0:  D5 DD 66 7D DD 6E 7C 29 5E 23 56 D5 DD 66 7B DD    ..f}.n|)^#V..f{.
023600:  6E 7A 29 5E 23 56 E1 DD E1 F1 CD 90 00 DD 22 90    nz)^#V........".
023610:  00 DD E1 F5 E5 DD 66 7B DD 6E 7A 29 73 23 72 DD    ......f{.nz)s#r.
023620:  66 7D DD 6E 7C 29 D1 73 23 72 DD 66 7F DD 6E 7E    f}.n|).s#r.f..n~
023630:  29 ED 5B 90 00 73 23 72 DD 66 79 DD 6E 78 29 71    ).[..s#r.fy.nx)q
023640:  23 70 DD 66 77 DD 6E 76 29 D1 73 23 72 21 03 00    #p.fw.nv).s#r!..
023650:  E5 21 90 00 E5 DD 66 6D DD 6E 6C 29 E5 CD 28 17    .!....fm.nl)..(.
023660:  21 06 00 39 F9 E1 2A 10 01 22 12 01 E1 22 10 01    !..9..*.."..."..
023670:  DD E1 C9 21 08 00 CD 92 02 DD 21 92 FF DD 39 2A    ...!......!...9*
023680:  10 01 CB 3C CB 1D E5 21 06 00 E5 DD 66 6D DD 6E    ...<...!....fm.n
023690:  6C 29 E5 21 80 00 E5 CD 28 17 21 06 00 39 F9 21    l).!....(.!..9.!
0236A0:  00 00 29 11 80 00 19 36 CD 21 00 00 29 11 02 00    ..)....6.!..)...
0236B0:  19 6E 26 00 EB 21 00 01 CD 16 01 E5 21 00 00 29    .n&..!......!..)
0236C0:  23 6E 26 00 D1 19 11 57 00 19 23 E5 21 00 00 29    #n&....W..#.!..)
0236D0:  D1 19 6E 26 00 E5 21 00 00 29 11 81 00 19 D1 73    ..n&..!..).....s
0236E0:  21 00 00 29 11 02 00 19 6E 26 00 EB 21 00 01 CD    !..)....n&..!...
0236F0:  16 01 E5 21 00 00 29 23 6E 26 00 D1 19 11 57 00    ...!..)#n&....W.
023700:  19 11 02 00 19 E5 21 00 00 29 D1 19 6E 26 00 E5    ......!..)..n&..
023710:  21 00 00 29 11 82 00 19 D1 73 DD 66 75 DD 6E 74    !..).....s.fu.nt
023720:  11 FF 00 7C A2 67 7D A3 6F E5 21 00 00 29 11 83    ...|.g}£o.!..)..
023730:  00 19 D1 73 DD 66 75 DD 6E 74 11 00 FF 7C A2 67    ...s.fu.nt...|.g
023740:  7D A3 6F 11 08 00 CD FE 01 E5 21 00 00 29 11 84    }£o.......!..)..
023750:  00 19 D1 73 21 00 00 29 11 85 00 19 36 C9 DD 66    ...s!..)....6..f
023760:  7F DD 6E 7E E5 DD 66 7D DD 6E 7C E5 DD 66 7B DD    ..n~..f}.n|..f{.
023770:  6E 7A E5 DD 66 79 DD 6E 78 E5 DD 66 77 DD 6E 76    nz..fy.nx..fw.nv
023780:  E5 21 80 00 E5 CD 5F 17 21 0C 00 39 F9 21 06 00    .!...._.!..9.!..
023790:  E5 21 80 00 E5 DD 66 6D DD 6E 6C 29 E5 CD 28 17    .!....fm.nl)..(.
0237A0:  21 06 00 39 F9 E1 2A 10 01 22 12 01 E1 22 10 01    !..9..*.."..."..
0237B0:  DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 21    ...!......!...9!
0237C0:  0C 00 E5 E5 E5 E5 E5 E5 DD E5 E1 11 76 00 19 CB    ............v...
0237D0:  3C CB 1D E5 DD E5 E1 11 78 00 19 CB 3C CB 1D E5    <.......x...<...
0237E0:  CD 2D 14 E1 E1 DD 66 77 DD 6E 76 11 FF 00 7C A2    .-....fw.nv...|.
0237F0:  67 7D A3 6F 7C EE 80 67 11 30 80 A7 ED 52 D2 0D    g}£o|..g.0...R..
023800:  1A 21 02 00 EB 21 0C 00 39 F9 C3 7F 1A DD E5 E1    .!...!..9.......
023810:  11 6E 00 19 CB 3C CB 1D E5 DD E5 E1 11 70 00 19    .n...<.......p..
023820:  CB 3C CB 1D E5 DD E5 E1 11 76 00 19 CB 3C CB 1D    .<.......v...<..
023830:  E5 DD E5 E1 11 72 00 19 CB 3C CB 1D E5 DD E5 E1    .....r...<......
023840:  11 74 00 19 CB 3C CB 1D E5 21 E3 00 E5 CD 73 18    .t...<...!....s.
023850:  21 0C 00 39 F9 DD 66 75 DD 6E 74 11 00 FF 7C A2    !..9..fu.nt...|.
023860:  67 7D A3 6F 11 08 00 CD FE 01 EB 21 03 00 19 EB    g}£o.......!....
023870:  21 0C 00 39 F9 C3 7F 1A 21 08 00 39 F9 E1 E1 E1    !..9....!..9....
023880:  22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF    ".....!......!..
023890:  DD 39 21 1B 00 E5 CD 8C 03 E1 DD 66 7F DD 6E 7E    .9!........f..n~
0238A0:  E5 CD 8C 03 E1 E1 22 10 01 DD E1 C9 21 00 00 CD    ......".....!...
0238B0:  92 02 DD 21 86 FF DD 39 2A 1E 17 11 02 00 A7 ED    ...!...9*.......
0238C0:  52 C2 CF 1A 21 0C 00 E5 CD 8C 03 E1 C3 D7 1A 21    R...!..........!
0238D0:  45 00 E5 CD 86 1A E1 E1 22 10 01 DD E1 C9 21 00    E.......".....!.
0238E0:  00 CD 92 02 DD 21 8A FF DD 39 2A 1E 17 11 02 00    .....!...9*.....
0238F0:  A7 ED 52 C2 26 1B 21 1F 00 E5 21 06 00 E5 CD 6F    ..R.&.!...!....o
023900:  14 E1 E1 DD 66 7D DD 6E 7C E5 21 06 00 E5 CD 6F    ....f}.n|.!....o
023910:  14 E1 E1 DD 66 7F DD 6E 7E E5 21 06 00 E5 CD 6F    ....f..n~.!....o
023920:  14 E1 E1 C3 4E 1B 21 59 00 E5 CD 86 1A E1 DD 66    ....N.!Y.......f
023930:  7F DD 6E 7E 11 20 00 19 2B E5 CD 8C 03 E1 DD 66    ..n~. ..+......f
023940:  7D DD 6E 7C 11 20 00 19 2B E5 CD 8C 03 E1 E1 22    }.n|. ..+......"
023950:  10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD    .....!......!...
023960:  39 2A 76 1B E5 DD 66 7F DD 6E 7E 7C EE 80 67 22    9*v...f..n~|..g"
023970:  76 1B 21 01 00 11 00 00 EB 42 4B 7A EE 80 57 ED    v.!......BKz..W.
023980:  52 DA 91 1B C5 21 20 00 E5 CD 8C 03 E1 E1 23 18    R....! .......#.
023990:  E4 E1 22 76 1B E1 22 10 01 DD E1 C9 21 00 00 CD    .."v..".....!...
0239A0:  92 02 DD 21 88 FF DD 39 DD 66 7F DD 6E 7E 11 0D    ...!...9.f..n~..
0239B0:  00 A7 ED 52 C2 BD 1B CD 45 08 C3 C8 1B DD 66 7F    ...R....E.....f.
0239C0:  DD 6E 7E E5 CD 8C 03 E1 E1 22 10 01 DD E1 C9 21    .n~......".....!
0239D0:  00 00 CD 92 02 DD 21 86 FF DD 39 C3 DE 1B E1 22    ......!...9...."
0239E0:  10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD    .....!......!...
0239F0:  39 C3 F4 1B E1 22 10 01 DD E1 C9 21 00 00 CD 92    9....".....!....
023A00:  02 DD 21 86 FF DD 39 C3 0A 1C E1 22 10 01 DD E1    ..!...9...."....
023A10:  C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 21 07 00    .!......!...9!..
023A20:  E5 CD 8C 03 E1 E1 22 10 01 DD E1 C9 21 00 00 CD    ......".....!...
023A30:  92 02 DD 21 88 FF DD 39 21 01 00 E5 DD 66 7F DD    ...!...9!....f..
023A40:  6E 7E 29 5E 23 56 EB 11 0D 00 A7 ED 52 CA 6C 1C    n~)^#V......R.l.
023A50:  DD 66 77 DD 6E 76 23 DD 74 77 DD 75 76 DD 66 7F    .fw.nv#.tw.uv.f.
023A60:  DD 6E 7E 23 DD 74 7F DD 75 7E 18 D0 DD 66 77 DD    .n~#.t..u~...fw.
023A70:  6E 76 EB E1 C3 78 1C E1 E1 22 10 01 DD E1 C9 21    nv...x...".....!
023A80:  00 00 CD 92 02 DD 21 8A FF DD 39 2A A1 1C E5 DD    ......!...9*....
023A90:  66 7F DD 6E 7E 2B 7C EE 80 67 22 A1 1C 21 00 00    f..n~+|..g"..!..
023AA0:  11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA CB 1C C5    ....BKz..W.R....
023AB0:  DD 66 7D DD 6E 7C DD 56 73 DD 5E 72 19 29 5E 23    .f}.n|.Vs.^r.)^#
023AC0:  56 EB E5 CD 8C 03 E1 E1 23 18 D5 E1 22 A1 1C 21    V.......#..."..!
023AD0:  4F 00 DD 56 7F DD 5E 7E A7 ED 52 E5 CD 55 1B E1    O..V..^~..R..U..
023AE0:  E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A    .".....!......!.
023AF0:  FF DD 39 2A 08 17 7C B5 CA 4A 1D 2A 19 1D E5 DD    ..9*..|..J.*....
023B00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
023B10:  1E 00 00 00 02 09 50 E5 1E 00 C1 02 00 00 00 02    ......P.........
023B20:  1E 00 C2 02 00 00 00 02 1E 00 C3 02 00 00 00 02    ................
023B30:  1E 00 C4 02 00 00 00 02 1E 00 C5 02 00 00 00 02    ................
023B40:  1E 00 C6 02 00 00 00 02 1E 00 C7 02 00 00 00 02    ................
023B50:  1E 00 C8 02 00 00 00 02 1E 00 C9 02 00 00 00 02    ................
023B60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023B70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023B80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023B90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023C00:  66 7D DD 6E 7C 29 5E 23 56 EB 2B 7C EE 80 67 22    f}.n|)^#V.+|..g"
023C10:  19 1D DD 66 7F DD 6E 7E 11 00 00 EB 42 4B 7A EE    ...f..n~....BKz.
023C20:  80 57 ED 52 DA 43 1D C5 DD 66 7D DD 6E 7C DD 56    .W.R.C...f}.n|.V
023C30:  73 DD 5E 72 19 29 5E 23 56 EB E5 CD 8C 03 E1 E1    s.^r.)^#V.......
023C40:  23 18 D5 E1 22 19 1D C3 61 1D DD 66 7D DD 6E 7C    #..."...a..f}.n|
023C50:  DD 56 7F DD 5E 7E 19 29 5E 23 56 EB E5 CD 8C 03    .V..^~.)^#V.....
023C60:  E1 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21    ..".....!......!
023C70:  8A FF DD 39 2A 08 17 7C B5 CA F2 1D DD 66 7D DD    ...9*..|.....f}.
023C80:  6E 7C 29 5E 23 56 EB 2B E5 DD 66 7D DD 6E 7C 29    n|)^#V.+..f}.n|)
023C90:  D1 73 23 72 2A B1 1D E5 DD 66 7D DD 6E 7C 29 5E    .s#r*....f}.n|)^
023CA0:  23 56 EB 7C EE 80 67 22 B1 1D DD 66 7F DD 6E 7E    #V.|..g"...f..n~
023CB0:  11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA EB 1D C5    ....BKz..W.R....
023CC0:  DD 66 73 DD 6E 72 23 EB DD 66 7D DD 6E 7C 19 29    .fs.nr#..f}.n|.)
023CD0:  5E 23 56 EB E5 DD 66 7D DD 6E 7C DD 56 73 DD 5E    ^#V...f}.n|.Vs.^
023CE0:  72 19 29 D1 73 23 72 E1 23 18 C5 E1 22 B1 1D C3    r.).s#r.#..."...
023CF0:  05 1E DD 66 7D DD 6E 7C DD 56 7F DD 5E 7E 19 29    ...f}.n|.V..^~.)
023D00:  36 20 23 36 00 E1 22 10 01 DD E1 C9 21 00 00 CD    6 #6..".....!...
023D10:  92 02 DD 21 8C FF DD 39 2A 08 17 7C B5 CA AC 1E    ...!...9*..|....
023D20:  2A 3D 1E E5 DD 66 7D DD 6E 7C 7C EE 80 67 22 3D    *=...f}.n||..g"=
023D30:  1E DD 66 7B DD 6E 7A 29 5E 23 56 EB 11 00 00 44    ..f{.nz)^#V....D
023D40:  4D 7C EE 80 67 ED 52 DA 76 1E C5 DD 66 7B DD 6E    M|..g.R.v...f{.n
023D50:  7A DD 56 71 DD 5E 70 19 29 5E 23 56 EB E5 DD 66    z.Vq.^p.)^#V...f
023D60:  71 DD 6E 70 23 EB DD 66 7B DD 6E 7A 19 29 D1 73    q.np#..f{.nz.).s
023D70:  23 72 E1 2B 18 C6 E1 22 3D 1E DD 66 7B DD 6E 7A    #r.+..."=..f{.nz
023D80:  DD 56 7D DD 5E 7C 19 29 DD 56 7F DD 5E 7E 73 23    .V}.^|.).V..^~s#
023D90:  72 DD 66 7B DD 6E 7A 29 5E 23 56 EB 23 E5 DD 66    r.f{.nz)^#V.#..f
023DA0:  7B DD 6E 7A 29 D1 73 23 72 C3 C3 1E DD 66 7B DD    {.nz).s#r....f{.
023DB0:  6E 7A DD 56 7D DD 5E 7C 19 29 DD 56 7F DD 5E 7E    nz.V}.^|.).V..^~
023DC0:  73 23 72 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02    s#r.".....!.....
023DD0:  DD 21 8A FF DD 39 DD 66 7D DD 6E 7C 29 5E 23 56    .!...9.f}.n|)^#V
023DE0:  EB DD 56 7F DD 5E 7E 7C EE 80 67 7A EE 80 57 A7    ..V..^~|..gz..W.
023DF0:  ED 52 DA FF 1E DD 66 7F DD 6E 7E EB C3 23 1F 2A    .R....f..n~..#.*
023E00:  12 17 E5 DD 66 7D DD 6E 7C 29 5E 23 56 EB E5 CD    ....f}.n|)^#V...
023E10:  DE 1A E1 E1 DD 66 7D DD 6E 7C 29 5E 23 56 EB EB    .....f}.n|)^#V..
023E20:  C3 23 1F E1 22 10 01 DD E1 C9 21 00 00 CD 92 02    .#..".....!.....
023E30:  DD 21 8A FF DD 39 2A 12 17 E5 2A 10 17 E5 CD DE    .!...9*...*.....
023E40:  1A E1 E1 DD 66 7F DD 6E 7E 11 16 21 3E 13 C3 7E    ....f..n~..!>..~
023E50:  01 2A 10 17 E5 DD 66 7D DD 6E 7C E5 CD CA 1E E1    .*....f}.n|.....
023E60:  E1 EB 22 10 17 21 0D 00 E5 2A 10 17 E5 DD 66 7D    .."..!...*....f}
023E70:  DD 6E 7C E5 CD 0C 1E 21 06 00 39 F9 21 0D 00 E5    .n|....!..9.!...
023E80:  CD 8C 03 E1 DD 66 7D DD 6E 7C 23 E5 CD 2C 1C E1    .....f}.n|#..,..
023E90:  EB 2B E5 DD 66 7D DD 6E 7C 23 E5 CD 7F 1C E1 E1    .+..f}.n|#......
023EA0:  21 0D 00 EB C3 6B 21 ED 5B 10 17 7A EE 80 57 21    !....k!.[..z..W!
023EB0:  01 80 A7 ED 52 D2 C2 1F 2A 10 17 2B 22 10 17 C3    ....R...*..+"...
023EC0:  C5 1F CD 11 1C C3 64 21 DD 66 7D DD 6E 7C 29 5E    ......d!.f}.n|)^
023ED0:  23 56 EB 2B ED 5B 10 17 7C EE 80 67 7A EE 80 57    #V.+.[..|..gz..W
023EE0:  A7 ED 52 DA F0 1F 2A 10 17 23 22 10 17 C3 F3 1F    ..R...*..#".....
023EF0:  CD 11 1C C3 64 21 21 01 00 22 10 17 C3 64 21 DD    ....d!!.."...d!.
023F00:  66 7D DD 6E 7C 29 5E 23 56 EB 22 10 17 C3 64 21    f}.n|)^#V."...d!
023F10:  DD 66 7F DD 6E 7E EB C3 6B 21 2A 10 17 E5 DD 66    .f..n~..k!*....f
023F20:  7D DD 6E 7C E5 CD CA 1E E1 E1 EB 22 10 17 2A 10    }.n|......."..*.
023F30:  17 11 01 00 A7 ED 52 C2 41 20 21 7F 00 EB C3 6B    ......R.A !....k
023F40:  21 2A 10 17 2B 22 10 17 2A 12 17 E5 2A 10 17 E5    !*..+"..*...*...
023F50:  CD DE 1A E1 E1 2A 10 17 E5 DD 66 7D DD 6E 7C E5    .....*....f}.n|.
023F60:  CD 68 1D E1 E1 2A 10 17 E5 DD 66 7D DD 6E 7C E5    .h...*....f}.n|.
023F70:  CD E7 1C E1 E1 2A 08 17 7C B5 CA 85 20 21 20 00    .....*..|... ! .
023F80:  E5 CD 8C 03 E1 C3 64 21 2A 10 17 E5 DD 66 7D DD    ......d!*....f}.
023F90:  6E 7C E5 CD CA 1E E1 E1 EB 22 10 17 DD 66 7D DD    n|......."...f}.
023FA0:  6E 7C 29 5E 23 56 EB 7C EE 80 67 11 50 80 A7 ED    n|)^#V.|..g.P...
023FB0:  52 D2 0D 21 DD 66 7F DD 6E 7E E5 2A 10 17 E5 DD    R..!.f..n~.*....
023FC0:  66 7D DD 6E 7C E5 CD 0C 1E 21 06 00 39 F9 2A 10    f}.n|....!..9.*.
023FD0:  17 E5 DD 66 7D DD 6E 7C E5 CD E7 1C E1 E1 2A 08    ...f}.n|......*.
023FE0:  17 7C B5 C2 03 21 DD 66 7D DD 6E 7C 29 5E 23 56    .|...!.f}.n|)^#V
023FF0:  EB EB 2A 10 17 7C EE 80 67 7A EE 80 57 A7 ED 52    ..*..|..gz..W..R
024000:  D2 0A 21 2A 10 17 23 22 10 17 C3 10 21 CD 11 1C    ..!*..#"....!...
024010:  C3 64 21 C3 64 21 EF 00 13 21 7F 00 1A 20 F1 00    .d!.d!...!... ..
024020:  10 20 F0 00 10 20 03 00 10 20 FC 00 10 20 1D 00    . ... ... ... ..
024030:  10 20 1B 00 10 20 F9 00 10 20 F8 00 10 20 F5 00    . ... ... ... ..
024040:  10 20 F4 00 10 20 FB 00 FF 1F FA 00 F6 1F F7 00    . ... ..........
024050:  C8 1F F3 00 C8 1F F6 00 A7 1F F2 00 A7 1F 0D 00    ................
024060:  51 1F 88 20 21 00 00 EB C3 6B 21 E1 22 10 01 DD    Q.. !....k!."...
024070:  E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 21 00    ..!......!...9!.
024080:  00 E5 2A 1C 17 E5 21 06 00 E5 CD DE 1A E1 E1 2A    ..*...!........*
024090:  1A 17 E5 21 CD 10 C3 9E 21 01 03 25 49 34 E5 CD    ...!....!..%I4..
0240A0:  E3 03 E1 E1 2A 1C 17 E5 21 12 00 E5 CD DE 1A E1    ....*...!.......
0240B0:  E1 2A 10 17 E5 21 DE 10 C3 C0 21 01 03 25 49 32    .*...!....!..%I2
0240C0:  E5 CD E3 03 E1 E1 2A 12 17 E5 2A 10 17 E5 CD DE    ......*...*.....
0240D0:  1A E1 E1 CD E5 1B CD 60 08 EB DD 74 77 DD 75 76    .......`...tw.uv
0240E0:  CD FB 1B DD 66 77 DD 6E 76 E5 DD 66 7F DD 6E 7E    ....fw.nv..f..n~
0240F0:  E5 CD 2A 1F E1 E1 EB DD 74 77 DD 75 76 DD 66 77    ..*.....tw.uv.fw
024100:  DD 6E 76 7C B5 CA 82 21 DD 66 7F DD 6E 7E 23 E5    .nv|...!.f..n~#.
024110:  CD 2C 1C E1 EB 2B E5 2A 14 17 ED 5B 12 17 19 29    .,...+.*...[...)
024120:  D1 73 23 72 DD 66 77 DD 6E 76 EB E1 C3 30 22 E1    .s#r.fw.nv...0".
024130:  E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A    .".....!......!.
024140:  FF DD 39 DD 66 7D DD 6E 7C 29 36 00 23 36 00 DD    ..9.f}.n|)6.#6..
024150:  66 7D DD 6E 7C 29 5E 23 56 EB 23 E5 DD 66 7D DD    f}.n|)^#V.#..f}.
024160:  6E 7C 29 D1 73 23 72 2A 0E 17 29 DD 56 7F DD 5E    n|).s#r*..).V..^
024170:  7E 19 6E 26 00 E5 DD 66 7D DD 6E 7C 29 5E 23 56    ~.n&...f}.n|)^#V
024180:  EB EB DD 66 7D DD 6E 7C 19 29 D1 73 23 72 DD 66    ...f}.n|.).s#r.f
024190:  7F DD 6E 7E 23 DD 74 7F DD 75 7E DD 66 7F DD 6E    ..n~#.t..u~.f..n
0241A0:  7E 2B E5 2A 0E 17 29 D1 19 6E 26 00 11 0D 00 A7    ~+.*..)..n&.....
0241B0:  ED 52 C2 4F 22 E1 22 10 01 DD E1 C9 21 00 00 CD    .R.O".".....!...
0241C0:  92 02 DD 21 88 FF DD 39 21 01 00 E5 2A 0E 17 29    ...!...9!...*..)
0241D0:  DD 56 7F DD 5E 7E 19 6E 26 00 11 0D 00 A7 ED 52    .V..^~.n&......R
0241E0:  CA FF 22 DD 66 77 DD 6E 76 23 DD 74 77 DD 75 76    ..".fw.nv#.tw.uv
0241F0:  DD 66 7F DD 6E 7E 23 DD 74 7F DD 75 7E 18 CD DD    .f..n~#.t..u~...
024200:  66 77 DD 6E 76 EB E1 C3 0B 23 E1 E1 22 10 01 DD    fw.nv....#.."...
024210:  E1 C9 21 00 00 CD 92 02 DD 21 8C FF DD 39 DD 66    ..!......!...9.f
024220:  7F DD 6E 7E E5 DD 66 7D DD 6E 7C E5 CD DE 1A E1    ..n~..f}.n|.....
024230:  E1 2A 59 23 E5 DD 66 7B DD 6E 7A E5 CD BC 22 E1    .*Y#..f{.nz...".
024240:  DD 66 7B DD 6E 7A 19 11 FE FF 19 7C EE 80 67 22    .f{.nz.....|..g"
024250:  59 23 DD 66 7B DD 6E 7A 11 00 00 EB 42 4B 7A EE    Y#.f{.nz....BKz.
024260:  80 57 ED 52 DA 7F 23 C5 2A 0E 17 29 DD 56 71 DD    .W.R..#.*..).Vq.
024270:  5E 70 19 6E 26 00 E5 CD 8C 03 E1 E1 23 18 D9 E1    ^p.n&.......#...
024280:  22 59 23 DD 66 7B DD 6E 7A E5 CD BC 22 E1 EB 2B    "Y#.f{.nz..."..+
024290:  E5 2A 14 17 DD 56 7F DD 5E 7E 19 29 D1 73 23 72    .*...V..^~.).s#r
0242A0:  E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86    .".....!......!.
0242B0:  FF DD 39 2A 1C 17 E5 21 01 00 E5 CD DE 1A E1 E1    ..9*...!........
0242C0:  2A 1E 17 11 04 00 A7 ED 52 C2 09 24 2A 10 17 E5    *.......R..$*...
0242D0:  2A 1A 17 E5 21 ED 11 C3 FD 23 22 4C 69 6E 65 3A    *...!....#"Line:
0242E0:  25 49 34 20 43 6F 6C 75 6D 6E 3A 25 49 32 20 28    %I4 Column:%I2 (
0242F0:  53 54 4F 50 20 74 6F 20 6D 65 6E 75 29 E5 CD E3    STOP to menu)...
024300:  03 21 06 00 39 F9 C3 43 24 2A 10 17 E5 2A 1A 17    .!..9..C$*...*..
024310:  E5 21 0C 12 C3 3A 24 01 21 4C 69 6E 65 3A 25 49    .!...:$.!Line:%I
024320:  34 20 43 6F 6C 75 6D 6E 3A 25 49 32 20 28 45 53    4 Column:%I2 (ES
024330:  43 20 74 6F 20 6D 65 6E 75 29 E5 CD E3 03 21 06    C to menu)....!.
024340:  00 39 F9 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02    .9..".....!.....
024350:  DD 21 86 FF DD 39 CD AC 1A CD CF 1B CD FB 1B 2A    .!...9.........*
024360:  72 24 E5 2A 1C 17 2B 7C EE 80 67 22 72 24 21 01    r$.*..+|..g"r$!.
024370:  00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA 95 24    .....BKz..W.R..$
024380:  C5 2A 14 17 DD 56 77 DD 5E 76 19 29 36 00 23 36    .*...Vw.^v.)6.#6
024390:  00 E1 23 18 DC E1 22 72 24 CD A7 23 E1 22 10 01    ..#..."r$..#."..
0243A0:  DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF DD 39 21    ...!......!...9!
0243B0:  01 00 E5 21 01 00 E5 CD DE 1A E1 E1 CD 3C 25 21    ...!.........<%!
0243C0:  0D 00 E5 CD 8C 03 E1 CD A7 23 2A 1C 17 2B EB 2A    .........#*..+.*
0243D0:  14 17 19 29 5E 23 56 EB 11 DF FF 19 E5 CD 55 1B    ...)^#V.......U.
0243E0:  E1 2A F4 24 E5 21 02 00 7C EE 80 67 22 F4 24 2A    .*.$.!..|..g".$*
0243F0:  1C 17 2B 11 00 00 44 4D 7C EE 80 67 ED 52 DA 27    ..+...DM|..g.R.'
024400:  25 C5 DD 66 77 DD 6E 76 2B EB 2A 14 17 19 29 5E    %..fw.nv+.*...)^
024410:  23 56 EB E5 2A 14 17 DD 56 77 DD 5E 76 19 29 D1    #V..*...Vw.^v.).
024420:  73 23 72 E1 2B 18 CC E1 22 F4 24 2A 14 17 23 29    s#r.+...".$*..#)
024430:  36 00 23 36 00 E1 22 10 01 DD E1 C9 21 00 00 CD    6.#6..".....!...
024440:  92 02 DD 21 86 FF DD 39 2A 1E 17 11 02 00 A7 ED    ...!...9*.......
024450:  52 C2 5F 25 21 0B 00 E5 CD 8C 03 E1 C3 67 25 21    R._%!........g%!
024460:  49 00 E5 CD 86 1A E1 E1 22 10 01 DD E1 C9 21 00    I.......".....!.
024470:  00 CD 92 02 DD 21 86 FF DD 39 2A 1C 17 E5 21 01    .....!...9*...!.
024480:  00 E5 CD DE 1A E1 E1 21 28 00 E5 CD 55 1B E1 21    .......!(...U..!
024490:  0A 00 E5 CD 8C 03 E1 21 0D 00 E5 CD 8C 03 E1 2A    .......!.......*
0244A0:  B5 25 E5 2A 1C 17 11 FE FF 19 7C EE 80 67 22 B5    .%.*......|..g".
0244B0:  25 21 01 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52    %!......BKz..W.R
0244C0:  DA E9 25 C5 DD 66 77 DD 6E 76 23 EB 2A 14 17 19    ..%..fw.nv#.*...
0244D0:  29 5E 23 56 EB E5 2A 14 17 DD 56 77 DD 5E 76 19    )^#V..*...Vw.^v.
0244E0:  29 D1 73 23 72 E1 23 18 CB E1 22 B5 25 2A 1C 17    ).s#r.#...".%*..
0244F0:  2B EB 2A 14 17 19 29 36 00 23 36 00 CD A7 23 E1    +.*...)6.#6...#.
024500:  22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A FF    ".....!......!..
024510:  DD 39 2A 28 26 E5 2A 1C 17 2B 7C EE 80 67 22 28    .9*(&.*..+|..g"(
024520:  26 DD 66 7F DD 6E 7E 11 00 00 EB 42 4B 7A EE 80    &.f..n~....BKz..
024530:  57 ED 52 DA 27 27 C5 21 00 00 E5 DD 66 73 DD 6E    W.R.''.!....fs.n
024540:  72 E5 21 01 00 E5 CD DE 1A E1 E1 2A 0A 17 DD 56    r.!........*...V
024550:  7D DD 5E 7C 7C EE 80 67 7A EE 80 57 A7 ED 52 D2    }.^||..gz..W..R.
024560:  7F 26 21 50 00 E5 CD 55 1B E1 2A 14 17 DD 56 73    .&!P...U..*...Vs
024570:  DD 5E 72 19 29 36 00 23 36 00 E1 E1 C3 27 27 DD    .^r.)6.#6....''.
024580:  66 7D DD 6E 7C E5 CD BC 22 E1 EB 2B DD 74 71 DD    f}.n|..."..+.tq.
024590:  75 70 2A B2 26 E5 DD 66 7D DD 6E 7C DD 56 71 DD    up*.&..f}.n|.Vq.
0245A0:  5E 70 19 2B 7C EE 80 67 22 B2 26 DD 66 7D DD 6E    ^p.+|..g".&.f}.n
0245B0:  7C 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA D8 26    |....BKz..W.R..&
0245C0:  C5 2A 0E 17 29 DD 56 6D DD 5E 6C 19 6E 26 00 E5    .*..).Vm.^l.n&..
0245D0:  CD 8C 03 E1 E1 23 18 D9 E1 22 B2 26 2A 14 17 DD    .....#...".&*...
0245E0:  56 73 DD 5E 72 19 29 5E 23 56 EB DD 56 71 DD 5E    Vs.^r.)^#V..Vq.^
0245F0:  70 A7 ED 52 E5 CD 55 1B E1 2A 14 17 DD 56 73 DD    p..R..U..*...Vs.
024600:  5E 72 19 29 DD 56 71 DD 5E 70 73 23 72 DD 66 7D    ^r.).Vq.^ps#r.f}
024610:  DD 6E 7C DD 56 71 DD 5E 70 19 23 DD 74 7D DD 75    .n|.Vq.^p.#.t}.u
024620:  7C E1 E1 23 C3 27 26 E1 22 28 26 E1 22 10 01 DD    |..#.'&."(&."...
024630:  E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 DD 66    ..!......!...9.f
024640:  7F DD 6E 7E E5 CD BC 22 E1 DD 66 7F DD 6E 7E 19    ..n~..."..f..n~.
024650:  EB 2A 0A 17 7C EE 80 67 7A EE 80 57 A7 ED 52 D2    .*..|..gz..W..R.
024660:  6F 27 CD 11 1C DD 66 7F DD 6E 7E EB C3 91 27 DD    o'....f..n~...'.
024670:  66 7F DD 6E 7E E5 CD BC 22 E1 DD 66 7F DD 6E 7E    f..n~..."..f..n~
024680:  19 DD 74 7F DD 75 7E DD 66 7F DD 6E 7E EB C3 91    ..t..u~.f..n~...
024690:  27 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21    '.".....!......!
0246A0:  88 FF DD 39 DD 7E 7F DD B6 7E C2 BA 27 CD 11 1C    ...9.~...~..'...
0246B0:  DD 66 7F DD 6E 7E EB C3 F4 27 DD 66 7F DD 6E 7E    .f..n~...'.f..n~
0246C0:  2B DD 74 7F DD 75 7E DD 66 7F DD 6E 7E 2B E5 2A    +.t..u~.f..n~+.*
0246D0:  0E 17 29 D1 19 6E 26 00 11 0D 00 A7 ED 52 CA EA    ..)..n&......R..
0246E0:  27 DD 7E 7F DD B6 7E C2 BA 27 DD 66 7F DD 6E 7E    '.~...~..'.f..n~
0246F0:  EB C3 F4 27 E1 22 10 01 DD E1 C9 21 00 00 CD 92    ...'.".....!....
024700:  02 DD 21 88 FF DD 39 DD 66 7F DD 6E 7E E5 CD 4A    ..!...9.f..n~..J
024710:  24 2A 23 28 E5 21 02 00 7C EE 80 67 22 23 28 2A    $*#(.!..|..g"#(*
024720:  12 17 11 00 00 44 4D 7C EE 80 67 ED 52 DA 67 28    .....DM|..g.R.g(
024730:  C5 DD 7E 77 DD B6 76 C2 51 28 2A 12 17 DD 56 73    ..~w..v.Q(*...Vs
024740:  DD 5E 72 A7 ED 52 23 22 12 17 E1 C3 67 28 C3 63    .^r..R#"....g(.c
024750:  28 DD 66 77 DD 6E 76 E5 CD 98 27 E1 EB DD 74 77    (.fw.nv...'...tw
024760:  DD 75 76 E1 2B 18 BB E1 22 23 28 21 01 00 E5 DD    .uv.+..."#(!....
024770:  66 77 DD 6E 76 E5 CD 06 26 E1 E1 E1 E1 22 10 01    fw.nv...&...."..
024780:  DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 2A    ...!......!...9*
024790:  1C 17 E5 21 01 00 E5 CD DE 1A E1 E1 DD 66 7F DD    ...!.........f..
0247A0:  6E 7E E5 21 55 14 C3 C6 28 01 1B 25 53 2E 20 48    n~.!U...(..%S. H
0247B0:  69 74 20 61 6E 79 20 6B 65 79 20 74 6F 20 63 6F    it any key to co
0247C0:  6E 74 69 6E 75 65 E5 CD E3 03 E1 E1 CD 11 1C CD    ntinue..........
0247D0:  60 08 2A 1C 17 E5 21 21 00 E5 CD DE 1A E1 E1 21    `.*...!!.......!
0247E0:  14 00 E5 CD 55 1B E1 CD A7 23 21 FF FF 22 18 17    ....U....#!.."..
0247F0:  2A 0C 17 E5 CD FB 27 E1 2A 24 17 E5 2A 26 17 E5    *.....'.*$..*&..
024800:  CD 2E 02 E1 E1 E1 22 10 01 DD E1 C9 21 00 00 CD    ......".....!...
024810:  92 02 DD 21 8A FF DD 39 2A 0A 17 DD 56 7D DD 5E    ...!...9*...V}.^
024820:  7C A7 ED 52 23 E5 2A 0E 17 29 DD 56 7D DD 5E 7C    |..R#.*..).V}.^|
024830:  19 DD 56 7F DD 5E 7E 19 E5 2A 0E 17 29 DD 56 7D    ..V..^~..*..).V}
024840:  DD 5E 7C 19 E5 CD 28 17 21 06 00 39 F9 2A 0A 17    .^|...(.!..9.*..
024850:  DD 56 7F DD 5E 7E 19 22 0A 17 E1 22 10 01 DD E1    .V..^~."..."....
024860:  C9 21 00 00 CD 92 02 DD 21 8A FF DD 39 2A 0A 17    .!......!...9*..
024870:  DD 56 7D DD 5E 7C A7 ED 52 DD 56 7F DD 5E 7E A7    .V}.^|..R.V..^~.
024880:  ED 52 23 E5 2A 0E 17 29 DD 56 7D DD 5E 7C 19 E5    .R#.*..).V}.^|..
024890:  2A 0E 17 29 DD 56 7D DD 5E 7C 19 DD 56 7F DD 5E    *..).V}.^|..V..^
0248A0:  7E 19 E5 CD 28 17 21 06 00 39 F9 2A 0A 17 DD 56    ~...(.!..9.*...V
0248B0:  7F DD 5E 7E A7 ED 52 22 0A 17 E1 22 10 01 DD E1    ..^~..R"..."....
0248C0:  C9 21 00 00 CD 92 02 DD 21 8C FF DD 39 2A E3 29    .!......!...9*.)
0248D0:  E5 DD 66 7F DD 6E 7E 2B 7C EE 80 67 22 E3 29 21    ..f..n~+|..g".)!
0248E0:  00 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA 1F    ......BKz..W.R..
0248F0:  2A C5 DD 66 7B DD 6E 7A DD 56 71 DD 5E 70 19 29    *..f{.nz.Vq.^p.)
024900:  5E 23 56 EB E5 DD 66 7D DD 6E 7C DD 56 71 DD 5E    ^#V...f}.n|.Vq.^
024910:  70 19 E5 2A 0E 17 29 D1 19 D1 73 E1 23 18 C3 E1    p..*..)...s.#...
024920:  22 E3 29 E1 22 10 01 DD E1 C9 21 00 00 CD 92 02    ".).".....!.....
024930:  DD 21 8A FF DD 39 DD 66 7F DD 6E 7E E5 CD BC 22    .!...9.f..n~..."
024940:  E1 EB E5 DD 66 7D DD 6E 7C 29 5E 23 56 EB E5 DD    ....f}.n|)^#V...
024950:  66 73 DD 6E 72 DD 56 75 DD 5E 74 A7 ED 52 ED 5B    fs.nr.Vu.^t..R.[
024960:  0A 17 19 7C EE 80 67 11 D6 D9 A7 ED 52 D2 00 2B    ...|..g.....R..+
024970:  DD 66 73 DD 6E 72 DD 56 75 DD 5E 74 7C EE 80 67    .fs.nr.Vu.^t|..g
024980:  7A EE 80 57 A7 ED 52 D2 A9 2A DD 66 75 DD 6E 74    z..W..R..*.fu.nt
024990:  DD 56 73 DD 5E 72 A7 ED 52 E5 DD 66 7F DD 6E 7E    .Vs.^r..R..f..n~
0249A0:  E5 CD 61 29 E1 E1 C3 DF 2A DD 66 75 DD 6E 74 DD    ..a)....*.fu.nt.
0249B0:  56 73 DD 5E 72 7C EE 80 67 7A EE 80 57 A7 ED 52    Vs.^r|..gz..W..R
0249C0:  D2 DF 2A DD 66 73 DD 6E 72 DD 56 75 DD 5E 74 A7    ..*.fs.nr.Vu.^t.
0249D0:  ED 52 E5 DD 66 7F DD 6E 7E E5 CD 0C 29 E1 E1 DD    .R..f..n~...)...
0249E0:  66 73 DD 6E 72 E5 DD 66 7F DD 6E 7E E5 DD 66 7D    fs.nr..f..n~..f}
0249F0:  DD 6E 7C 23 E5 CD C1 29 21 06 00 39 F9 C3 13 2B    .n|#...)!..9...+
024A00:  21 83 15 C3 0E 2B 07 4E 6F 20 72 6F 6F 6D E5 CD    !....+.No room..
024A10:  83 28 E1 E1 E1 E1 22 10 01 DD E1 C9 21 00 00 CD    .(....".....!...
024A20:  92 02 DD 21 8C FF DD 39 DD 66 7D DD 6E 7C E5 DD    ...!...9.f}.n|..
024A30:  66 7B DD 6E 7A E5 CD DE 1A E1 E1 21 A1 15 C3 54    f{.nz......!...T
024A40:  2B 01 11 45 6E 74 65 72 20 66 69 6C 65 20 6E 61    +..Enter file na
024A50:  6D 65 3A 20 E5 CD A7 05 E1 CD E5 1B DD 66 7F DD    me: .........f..
024A60:  6E 7E E5 CD CF 08 E1 CD FB 1B CD 45 08 E1 22 10    n~.........E..".
024A70:  01 DD E1 C9 21 2A 00 CD 92 02 DD 21 88 FF DD 39    ....!*.....!...9
024A80:  2A 10 01 CB 3C CB 1D E5 DD 66 77 DD 6E 76 E5 21    *...<....fw.nv.!
024A90:  13 00 E5 21 19 00 E5 CD 1C 2B 21 06 00 39 F9 2A    ...!.....+!..9.*
024AA0:  16 17 E5 DD 66 77 DD 6E 76 E5 CD B8 0B E1 E1 EB    ....fw.nv.......
024AB0:  7C B5 CA E6 2C 21 00 00 E5 21 00 00 22 0C 17 21    |...,!...!.."..!
024AC0:  01 00 22 10 17 21 01 00 22 12 17 21 01 00 22 1A    .."..!.."..!..".
024AD0:  17 21 FF FF 22 0A 17 2A 0E 17 29 36 0D 2A 16 17    .!.."..*..)6.*..
024AE0:  E5 CD C4 0E E1 EB DD 74 75 DD 75 74 DD 66 75 DD    .......tu.ut.fu.
024AF0:  6E 74 11 1A 00 A7 ED 52 CA 4A 2C DD 66 75 DD 6E    nt.....R.J,.fu.n
024B00:  74 11 FF FF A7 ED 52 CA 4A 2C 2A 0A 17 11 D6 59    t.....R.J,*....Y
024B10:  A7 ED 52 CA 4A 2C DD 66 75 DD 6E 74 11 0A 00 A7    ..R.J,.fu.nt....
024B20:  ED 52 CA 39 2C 2A 0A 17 23 22 0A 17 2A 0E 17 29    .R.9,*..#"..*..)
024B30:  ED 5B 0A 17 19 DD 7E 74 77 2A 16 17 E5 CD C4 0E    .[....~tw*......
024B40:  E1 EB DD 74 75 DD 75 74 18 A2 2A 0E 17 29 ED 5B    ...tu.ut..*..).[
024B50:  0A 17 19 6E 26 00 11 0D 00 A7 ED 52 CA 71 2C 2A    ...n&......R.q,*
024B60:  0A 17 23 22 0A 17 2A 0E 17 29 ED 5B 0A 17 19 36    ..#"..*..).[...6
024B70:  0D 2A 0A 17 7C EE 80 67 11 D6 D9 A7 ED 52 DA BF    .*..|..g.....R..
024B80:  2C 2A 0A 17 2B 22 0A 17 2A 0E 17 29 ED 5B 0A 17    ,*..+"..*..).[..
024B90:  19 36 0D 2A 16 17 E5 CD 7D 0F E1 21 00 00 E5 DD    .6.*....}..!....
024BA0:  66 7F DD 6E 7E E5 CD 37 22 E1 E1 21 59 16 C3 BA    f..n~..7"..!Y...
024BB0:  2C 01 07 4E 6F 20 72 6F 6F 6D E5 CD 83 28 E1 2A    ,..No room...(.*
024BC0:  0A 17 11 FF FF A7 ED 52 C2 D1 2C 21 00 00 22 0A    .......R..,!..".
024BD0:  17 2A 16 17 E5 CD 7D 0F E1 21 FF FF EB E1 E1 C3    .*....}..!......
024BE0:  13 2D E1 C3 12 2D DD 66 77 DD 6E 76 E5 21 7A 16    .-...-.fw.nv.!z.
024BF0:  C3 01 2D 01 0C 25 53 20 6E 6F 74 20 66 6F 75 6E    ..-..%S not foun
024C00:  64 E5 CD E3 03 E1 E1 CD 60 08 21 00 00 EB E1 C3    d.......`.!.....
024C10:  13 2D E1 2A 10 01 22 12 01 E1 22 10 01 DD E1 C9    .-.*.."...".....
024C20:  21 2A 00 CD 92 02 DD 21 86 FF DD 39 2A 10 01 CB    !*.....!...9*...
024C30:  3C CB 1D E5 C3 81 2D 21 00 00 CD 92 02 DD 21 88    <.....-!......!.
024C40:  FF DD 39 21 A5 16 C3 60 2D 01 15 44 69 73 63 20    ..9!...`-..Disc 
024C50:  65 72 72 6F 72 2E 20 48 69 74 20 61 20 6B 65 79    error. Hit a key
024C60:  E5 CD A7 05 E1 CD 60 08 DD 66 7F DD 6E 7E E5 CD    ......`..f..n~..
024C70:  94 10 E1 21 00 00 EB C3 7A 2D E1 22 10 01 DD E1    ...!....z-."....
024C80:  C9 DD 66 79 DD 6E 78 E5 21 13 00 E5 21 19 00 E5    ..fy.nx.!...!...
024C90:  CD 1C 2B 21 06 00 39 F9 2A 16 17 E5 DD 66 79 DD    ..+!..9.*....fy.
024CA0:  6E 78 E5 CD A7 0C E1 E1 EB 7C B5 CA 56 2E 2A C0    nx.......|..V.*.
024CB0:  2D E5 2A 0A 17 7C EE 80 67 22 C0 2D 21 00 00 11    -.*..|..g".-!...
024CC0:  00 00 EB 42 4B 7A EE 80 57 ED 52 DA 3F 2E C5 2A    ...BKz..W.R.?..*
024CD0:  16 17 E5 2A 0E 17 29 DD 56 75 DD 5E 74 19 6E 26    ...*..).Vu.^t.n&
024CE0:  00 E5 CD C4 0F E1 E1 EB 7C B5 C2 FF 2D 2A 16 17    ........|...-*..
024CF0:  E5 CD 37 2D E1 EB EB 21 06 00 39 F9 C3 82 2E 2A    ..7-...!..9....*
024D00:  0E 17 29 DD 56 75 DD 5E 74 19 6E 26 00 11 0D 00    ..).Vu.^t.n&....
024D10:  A7 ED 52 C2 3B 2E 2A 16 17 E5 21 0A 00 E5 CD C4    ..R.;.*...!.....
024D20:  0F E1 E1 EB 7C B5 C2 3B 2E 2A 16 17 E5 CD 37 2D    ....|..;.*....7-
024D30:  E1 EB EB 21 06 00 39 F9 C3 82 2E E1 23 18 80 E1    ...!..9.....#...
024D40:  22 C0 2D 2A 16 17 E5 CD 94 10 E1 21 FF FF EB E1    ".-*.......!....
024D50:  C3 82 2E C3 81 2E 21 2E 17 C3 69 2E 0C 43 61 6E    ......!...i..Can
024D60:  6E 6F 74 20 6F 70 65 6E 20 E5 CD A7 05 E1 DD 66    not open ......f
024D70:  79 DD 6E 78 E5 CD A7 05 E1 21 00 00 EB E1 C3 82    y.nx.....!......
024D80:  2E E1 2A 10 01 22 12 01 E1 22 10 01 DD E1 C9 21    ..*.."...".....!
024D90:  00 00 CD 92 02 DD 21 86 FF DD 39 21 00 00 E5 21    ......!...9!...!
024DA0:  01 00 22 1A 17 21 13 00 E5 21 19 00 E5 CD DE 1A    .."..!...!......
024DB0:  E1 E1 21 5C 17 C3 CC 2E 13 45 6E 74 65 72 20 6C    ..!\.....Enter l
024DC0:  69 6E 65 20 6E 75 6D 62 65 72 3A 20 E5 CD E3 03    ine number: ....
024DD0:  E1 CD E5 1B CD A2 0A EB DD 74 79 DD 75 78 CD FB    .........ty.ux..
024DE0:  1B 21 00 00 22 0C 17 21 01 00 22 10 17 2A 02 2F    .!.."..!.."..*./
024DF0:  E5 DD 66 79 DD 6E 78 7C EE 80 67 22 02 2F 21 02    ..fy.nx|..g"./!.
024E00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
024E10:  1F 00 00 00 02 09 50 E5 1F 00 C1 02 00 00 00 02    ......P.........
024E20:  1F 00 C2 02 00 00 00 02 1F 00 C3 02 00 00 00 02    ................
024E30:  1F 00 C4 02 00 00 00 02 1F 00 C5 02 00 00 00 02    ................
024E40:  1F 00 C6 02 00 00 00 02 1F 00 C7 02 00 00 00 02    ................
024E50:  1F 00 C8 02 00 00 00 02 1F 00 C9 02 00 00 00 02    ................
024E60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024E70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024E80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024E90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024ED0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024F00:  00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA 42 2F    .....BKz..W.R.B/
024F10:  C5 2A 0C 17 E5 2A 0C 17 E5 CD 32 27 E1 EB 22 0C    .*...*....2'..".
024F20:  17 DD 66 73 DD 6E 72 ED 5B 0C 17 A7 ED 52 C2 36    ..fs.nr.[....R.6
024F30:  2F E1 E1 C3 42 2F 2A 1A 17 23 22 1A 17 E1 E1 23    /...B/*..#"....#
024F40:  18 BF E1 22 02 2F 21 0C 00 22 12 17 E1 E1 22 10    ..."./!.."....".
024F50:  01 DD E1 C9 21 00 00 CD 92 02 DD 21 8A FF DD 39    ....!......!...9
024F60:  2A 79 2F E5 DD 66 7F DD 6E 7E 29 6E 26 00 7C EE    *y/..f..n~)n&.|.
024F70:  80 67 22 79 2F 21 01 00 11 00 00 EB 42 4B 7A EE    .g"y/!......BKz.
024F80:  80 57 ED 52 DA C6 2F C5 DD 66 7F DD 6E 7E 29 DD    .W.R../..f..n~).
024F90:  56 73 DD 5E 72 19 6E 26 00 E5 DD 66 7D DD 6E 7C    Vs.^r.n&...f}.n|
024FA0:  DD 56 73 DD 5E 72 19 2B E5 2A 0E 17 29 D1 19 6E    .Vs.^r.+.*..)..n
024FB0:  26 00 D1 A7 ED 52 CA C2 2F 21 00 00 EB E1 E1 C3    &....R../!......
024FC0:  D1 2F E1 23 18 B2 E1 22 79 2F 21 FF FF EB C3 D1    ./.#..."y/!.....
024FD0:  2F E1 22 10 01 DD E1 C9 21 2A 00 CD 92 02 DD 21    /.".....!*.....!
024FE0:  86 FF DD 39 2A 0C 17 E5 2A 10 17 E5 2A 12 17 E5    ...9*...*...*...
024FF0:  2A 1A 17 E5 2A 10 01 CB 3C CB 1D E5 21 13 00 E5    *...*...<...!...
025000:  21 19 00 E5 CD DE 1A E1 E1 21 08 18 C3 1F 30 01    !........!....0.
025010:  0E 45 6E 74 65 72 20 73 74 72 69 6E 67 3A 20 E5    .Enter string: .
025020:  CD E3 03 E1 CD E5 1B DD 66 71 DD 6E 70 E5 CD CF    ........fq.np...
025030:  08 E1 CD FB 1B 2A 0C 17 ED 5B 10 17 19 2B 22 0C    .....*...[...+".
025040:  17 2A 0E 17 29 ED 5B 0C 17 19 6E 26 00 11 0D 00    .*..).[...n&....
025050:  A7 ED 52 CA 5D 30 2A 0C 17 23 22 0C 17 2A 0C 17    ..R.]0*..#"..*..
025060:  ED 5B 0A 17 7C EE 80 67 7A EE 80 57 A7 ED 52 D2    .[..|..gz..W..R.
025070:  38 31 2A 0E 17 29 ED 5B 0C 17 19 6E 26 00 11 0D    81*..).[...n&...
025080:  00 A7 ED 52 C2 91 30 2A 1A 17 23 22 1A 17 C3 F2    ...R..0*..#"....
025090:  30 DD 66 71 DD 6E 70 E5 2A 0C 17 E5 CD 54 2F E1    0.fq.np.*....T/.
0250A0:  E1 EB 7C B5 CA F2 30 2A 0C 17 DD 74 79 DD 75 78    ..|...0*...ty.ux
0250B0:  2A 0C 17 2B E5 2A 0E 17 29 D1 19 6E 26 00 11 0D    *..+.*..)..n&...
0250C0:  00 A7 ED 52 CA D8 30 2A 0C 17 7C B5 CA D8 30 2A    ...R..0*..|...0*
0250D0:  0C 17 2B 22 0C 17 18 D8 DD 66 79 DD 6E 78 ED 5B    ..+".....fy.nx.[
0250E0:  0C 17 A7 ED 52 23 22 10 17 21 0C 00 22 12 17 C3    ....R#"..!.."...
0250F0:  38 31 2A 0C 17 23 22 0C 17 2A 0C 17 ED 5B 0A 17    81*..#"..*...[..
025100:  7C EE 80 67 7A EE 80 57 A7 ED 52 DA 35 31 DD 66    |..gz..W..R.51.f
025110:  79 DD 6E 78 22 0C 17 DD 66 77 DD 6E 76 22 10 17    y.nx"...fw.nv"..
025120:  DD 66 75 DD 6E 74 22 12 17 DD 66 73 DD 6E 72 22    .fu.nt"...fs.nr"
025130:  1A 17 C3 38 31 C3 72 30 E1 21 08 00 39 F9 2A 10    ...81.r0.!..9.*.
025140:  01 22 12 01 E1 22 10 01 DD E1 C9 21 00 00 CD 92    ."...".....!....
025150:  02 DD 21 88 FF DD 39 21 00 00 E5 2A 0C 17 E5 DD    ..!...9!...*....
025160:  66 7F DD 6E 7E E5 CD 2A 2A E1 E1 21 00 00 E5 CD    f..n~..**..!....
025170:  AC 1A 21 04 00 E5 21 20 00 E5 CD DE 1A E1 E1 21    ..!...! .......!
025180:  C3 18 C3 92 31 01 0B 42 43 50 4C 20 65 64 69 74    ....1..BCPL edit
025190:  6F 72 E5 CD A7 05 E1 21 05 00 E5 21 20 00 E5 CD    or.....!...! ...
0251A0:  DE 1A E1 E1 21 D5 18 C3 B6 31 0B 2D 2D 2D 2D 2D    ....!....1.-----
0251B0:  2D 2D 2D 2D 2D 2D E5 CD A7 05 E1 21 09 00 E5 21    ------.....!...!
0251C0:  20 00 E5 CD DE 1A E1 E1 21 E7 18 C3 DB 31 0C 4C     .......!....1.L
0251D0:  3A 20 4C 6F 61 64 20 74 65 78 74 E5 CD A7 05 E1    : Load text.....
0251E0:  21 0A 00 E5 21 20 00 E5 CD DE 1A E1 E1 21 FA 18    !...! .......!..
0251F0:  C3 01 32 01 0C 53 3A 20 53 61 76 65 20 74 65 78    ..2..S: Save tex
025200:  74 E5 CD A7 05 E1 21 0B 00 E5 21 20 00 E5 CD DE    t.....!...! ....
025210:  1A E1 E1 21 0D 19 C3 27 32 01 0C 45 3A 20 45 64    ...!...'2..E: Ed
025220:  69 74 20 74 65 78 74 E5 CD A7 05 E1 21 0C 00 E5    it text.....!...
025230:  21 20 00 E5 CD DE 1A E1 E1 21 20 19 C3 4D 32 01    ! .......! ..M2.
025240:  0C 47 3A 20 47 6F 74 6F 20 6C 69 6E 65 E5 CD A7    .G: Goto line...
025250:  05 E1 21 0D 00 E5 21 20 00 E5 CD DE 1A E1 E1 21    ..!...! .......!
025260:  33 19 C3 75 32 01 0E 46 3A 20 46 69 6E 64 20 73    3..u2..F: Find s
025270:  74 72 69 6E 67 E5 CD A7 05 E1 21 0E 00 E5 21 20    tring.....!...! 
025280:  00 E5 CD DE 1A E1 E1 21 47 19 C3 96 32 01 07 51    .......!G...2..Q
025290:  3A 20 51 75 69 74 E5 CD A7 05 E1 21 11 00 E5 21    : Quit.....!...!
0252A0:  20 00 E5 CD DE 1A E1 E1 21 57 19 C3 BE 32 0F 53     .......!W...2.S
0252B0:  65 6C 65 63 74 20 6F 70 74 69 6F 6E 3A 20 E5 CD    elect option: ..
0252C0:  A7 05 E1 CD E5 1B CD 60 08 EB DD 74 75 DD 75 74    .......`...tu.ut
0252D0:  CD FB 1B DD 66 75 DD 6E 74 11 EF 00 A7 ED 52 CA    ....fu.nt.....R.
0252E0:  C3 32 DD 66 75 DD 6E 74 11 74 33 3E 0C C3 7E 01    .2.fu.nt.t3>..~.
0252F0:  21 4C 00 E5 CD 8C 03 E1 DD 66 7F DD 6E 7E E5 CD    !L.......f..n~..
025300:  74 2B E1 EB 7C B5 CA 0D 33 E1 C3 AD 33 C3 A6 33    t+..|...3...3..3
025310:  21 53 00 E5 CD 8C 03 E1 CD 20 2D EB 7C B5 CA 25    !S....... -.|..%
025320:  33 E1 C3 AD 33 C3 A6 33 21 47 00 E5 CD 8C 03 E1    3...3..3!G......
025330:  CD 8F 2E E1 C3 AD 33 21 46 00 E5 CD 8C 03 E1 2A    ......3!F......*
025340:  10 17 E5 DD 66 7F DD 6E 7E E5 CD CA 1E E1 E1 EB    ....f..n~.......
025350:  22 10 17 CD D8 2F E1 C3 AD 33 21 45 00 E5 CD 8C    "..../...3!E....
025360:  03 E1 E1 C3 AD 33 21 51 00 E5 CD 8C 03 E1 C3 D6    .....3!Q........
025370:  01 C3 A6 33 71 00 66 33 51 00 66 33 65 00 5A 33    ...3q.f3Q.f3e.Z3
025380:  45 00 5A 33 66 00 37 33 46 00 37 33 67 00 28 33    E.Z3f.73F.73g.(3
025390:  47 00 28 33 73 00 10 33 53 00 10 33 6C 00 F0 32    G.(3s..3S..3l..2
0253A0:  4C 00 F0 32 A6 33 CD 11 1C E1 C3 6B 31 2A 0C 17    L..2.3.....k1*..
0253B0:  E5 CD FB 27 E1 E1 E1 22 10 01 DD E1 C9 21 00 00    ...'...".....!..
0253C0:  CD 92 02 DD 21 88 FF DD 39 2A 0C 17 7C B5 CA E4    ....!...9*..|...
0253D0:  34 2A 0C 17 E5 2A 0C 17 E5 CD 98 27 E1 EB E5 DD    4*...*.....'....
0253E0:  66 7F DD 6E 7E 29 5E 23 56 EB E5 DD 66 75 DD 6E    f..n~)^#V...fu.n
0253F0:  74 E5 CD BC 22 E1 EB D1 19 2B 7C EE 80 67 11 50    t..."....+|..g.P
025400:  80 A7 ED 52 D2 BD 34 2A 0C 17 E5 CD BC 22 E1 D5    ...R..4*....."..
025410:  DD 66 7F DD 6E 7E 29 5E 23 56 EB D1 A7 ED 52 ED    .f..n~)^#V....R.
025420:  5B 0A 17 19 7C EE 80 67 11 D6 D9 A7 ED 52 DA 45    [...|..g.....R.E
025430:  34 21 1C 1A C3 40 34 01 07 4E 6F 20 72 6F 6F 6D    4!...@4..No room
025440:  E5 CD 83 28 E1 2A 0C 17 2B E5 2A 0E 17 29 D1 19    ...(.*..+.*..)..
025450:  36 00 2A 0C 17 2B E5 DD 66 7F DD 6E 7E E5 CD 2A    6.*..+..f..n~..*
025460:  2A E1 E1 DD 66 75 DD 6E 74 22 0C 17 2A 1A 17 2B    *...fu.nt"..*..+
025470:  22 1A 17 DD 66 7F DD 6E 7E 29 5E 23 56 EB E5 2A    "...f..n~)^#V..*
025480:  0C 17 E5 CD BC 22 E1 EB D1 A7 ED 52 23 22 10 17    .....".....R#"..
025490:  2A 12 17 11 01 00 A7 ED 52 C2 B3 34 21 01 00 E5    *.......R..4!...
0254A0:  21 01 00 E5 2A 0C 17 E5 CD 12 23 21 06 00 39 F9    !...*.....#!..9.
0254B0:  C3 BA 34 2A 12 17 2B 22 12 17 C3 DF 34 21 62 1A    ..4*..+"....4!b.
0254C0:  C3 DA 34 01 15 4C 69 6E 65 20 74 6F 6F 20 6C 6F    ..4..Line too lo
0254D0:  6E 67 20 74 6F 20 6A 6F 69 6E E5 CD 83 28 E1 E1    ng to join...(..
0254E0:  E1 C3 FB 34 21 75 1A C3 F6 34 0B 54 6F 70 20 6F    ...4!u...4.Top o
0254F0:  66 20 66 69 6C 65 E5 CD 83 28 E1 E1 22 10 01 DD    f file...(.."...
025500:  E1 C9 21 A2 00 CD 92 02 DD 21 88 FF DD 39 2A 10    ..!......!...9*.
025510:  01 CB 3C CB 1D E5 21 01 00 E5 2A 34 35 E5 DD 66    ..<...!...*45..f
025520:  7F DD 6E 7E 29 5E 23 56 EB 7C EE 80 67 22 34 35    ..n~)^#V.|..g"45
025530:  21 00 00 11 00 00 EB 42 4B 7A EE 80 57 ED 52 DA    !......BKz..W.R.
025540:  6C 35 C5 DD 66 7F DD 6E 7E DD 56 71 DD 5E 70 19    l5..f..n~.Vq.^p.
025550:  29 5E 23 56 EB E5 DD 66 77 DD 6E 76 DD 56 71 DD    )^#V...fw.nv.Vq.
025560:  5E 70 19 29 D1 73 23 72 E1 23 18 C7 E1 22 34 35    ^p.).s#r.#..."45
025570:  DD 66 7F DD 6E 7E DD 56 75 DD 5E 74 19 29 5E 23    .f..n~.Vu.^t.)^#
025580:  56 EB 11 0D 00 A7 ED 52 CA 9A 35 DD 66 75 DD 6E    V......R..5.fu.n
025590:  74 23 DD 74 75 DD 75 74 18 D6 2A B8 35 E5 DD 66    t#.tu.ut..*.5..f
0255A0:  7F DD 6E 7E 29 5E 23 56 EB 2B 7C EE 80 67 22 B8    ..n~)^#V.+|..g".
0255B0:  35 DD 66 75 DD 6E 74 11 00 00 EB 42 4B 7A EE 80    5.fu.nt....BKz..
0255C0:  57 ED 52 DA F2 35 C5 DD 66 71 DD 6E 70 23 EB DD    W.R..5..fq.np#..
0255D0:  66 7F DD 6E 7E 19 29 5E 23 56 EB E5 DD 66 7F DD    f..n~.)^#V...f..
0255E0:  6E 7E DD 56 71 DD 5E 70 19 29 D1 73 23 72 E1 23    n~.Vq.^p.).s#r.#
0255F0:  18 C5 E1 22 B8 35 DD 66 7F DD 6E 7E 29 5E 23 56    ...".5.f..n~)^#V
025600:  EB 2B E5 DD 66 7F DD 6E 7E 29 D1 73 23 72 2A 0C    .+..f..n~).s#r*.
025610:  17 E5 DD 66 77 DD 6E 76 E5 CD 2A 2A E1 E1 21 01    ...fw.nv..**..!.
025620:  00 22 10 17 2A 1A 17 23 22 1A 17 2A 0C 17 E5 CD    ."..*..#"..*....
025630:  32 27 E1 EB 22 0C 17 2A 1C 17 2B EB 2A 12 17 A7    2'.."..*..+.*...
025640:  ED 52 C2 60 36 CD 6E 25 2A 1C 17 2B E5 21 01 00    .R.`6.n%*..+.!..
025650:  E5 2A 0C 17 E5 CD 12 23 21 06 00 39 F9 C3 67 36    .*.....#!..9..g6
025660:  2A 12 17 23 22 12 17 E1 E1 2A 10 01 22 12 01 E1    *..#"....*.."...
025670:  22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86 FF    ".....!......!..
025680:  DD 39 2A 0C 17 7C B5 CA CA 36 2A 0C 17 E5 CD 98    .9*..|...6*.....
025690:  27 E1 EB 22 0C 17 2A 1A 17 2B 22 1A 17 2A 12 17    '.."..*..+"..*..
0256A0:  11 01 00 A7 ED 52 C2 C3 36 CD A3 24 21 01 00 E5    .....R..6.£$!...
0256B0:  21 01 00 E5 2A 0C 17 E5 CD 12 23 21 06 00 39 F9    !...*.....#!..9.
0256C0:  C3 CA 36 2A 12 17 2B 22 12 17 E1 22 10 01 DD E1    ..6*..+"..."....
0256D0:  C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 2A 0C 17    .!......!...9*..
0256E0:  E5 DD 66 7F DD 6E 7E E5 CD 2A 2A E1 E1 CD 76 36    ..f..n~..**...v6
0256F0:  E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 86    .".....!......!.
025700:  FF DD 39 2A 0C 17 E5 2A 0C 17 E5 CD 32 27 E1 EB    ..9*...*....2'..
025710:  22 0C 17 2A 0C 17 DD 56 79 DD 5E 78 A7 ED 52 CA    "..*...Vy.^x..R.
025720:  59 37 2A 1A 17 23 22 1A 17 2A 1C 17 2B EB 2A 12    Y7*..#"..*..+.*.
025730:  17 A7 ED 52 C2 52 37 CD 6E 25 2A 1C 17 2B E5 21    ...R.R7.n%*..+.!
025740:  01 00 E5 2A 0C 17 E5 CD 12 23 21 06 00 39 F9 C3    ...*.....#!..9..
025750:  59 37 2A 12 17 23 22 12 17 E1 E1 22 10 01 DD E1    Y7*..#"...."....
025760:  C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 2A 0C 17    .!......!...9*..
025770:  E5 DD 66 7F DD 6E 7E E5 CD 2A 2A E1 E1 CD F7 36    ..f..n~..**....6
025780:  E1 22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88    .".....!......!.
025790:  FF DD 39 2A 0C 17 E5 DD 66 7F DD 6E 7E E5 CD 2A    ..9*....f..n~..*
0257A0:  2A E1 E1 2A B9 37 E5 2A 1C 17 11 FC FF 19 7C EE    *..*.7.*......|.
0257B0:  80 67 22 B9 37 21 01 00 11 00 00 EB 42 4B 7A EE    .g".7!......BKz.
0257C0:  80 57 ED 52 DA DB 37 C5 2A 0C 17 7C B5 C2 D4 37    .W.R..7.*..|...7
0257D0:  E1 C3 DB 37 CD 76 36 E1 23 18 DD E1 22 B9 37 E1    ...7.v6.#...".7.
0257E0:  22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF    ".....!......!..
0257F0:  DD 39 2A 0C 17 E5 DD 66 7F DD 6E 7E E5 CD 2A 2A    .9*....f..n~..**
025800:  E1 E1 2A 18 38 E5 2A 1C 17 11 FC FF 19 7C EE 80    ..*.8.*......|..
025810:  67 22 18 38 21 01 00 11 00 00 EB 42 4B 7A EE 80    g".8!......BKz..
025820:  57 ED 52 DA 48 38 C5 2A 0C 17 E5 CD F7 36 DD 66    W.R.H8.*.....6.f
025830:  73 DD 6E 72 ED 5B 0C 17 A7 ED 52 C2 43 38 E1 E1    s.nr.[....R.C8..
025840:  C3 48 38 E1 E1 23 18 CF E1 22 18 38 E1 22 10 01    .H8..#...".8."..
025850:  DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF DD 39 2A    ...!......!...9*
025860:  0C 17 E5 DD 66 7F DD 6E 7E E5 CD 2A 2A E1 E1 21    ....f..n~..**..!
025870:  00 00 22 0C 17 21 01 00 22 10 17 21 01 00 22 12    .."..!.."..!..".
025880:  17 21 01 00 22 1A 17 2A 0C 17 E5 CD FB 27 E1 E1    .!.."..*.....'..
025890:  22 10 01 DD E1 C9 21 00 00 CD 92 02 DD 21 88 FF    ".....!......!..
0258A0:  DD 39 21 00 00 E5 2A 0C 17 E5 DD 66 7F DD 6E 7E    .9!...*....f..n~
0258B0:  E5 CD 2A 2A E1 E1 21 00 00 22 0C 17 21 01 00 22    ..**..!.."..!.."
0258C0:  10 17 21 01 00 22 12 17 21 00 00 22 1A 17 2A 0C    ..!.."..!.."..*.
0258D0:  17 DD 74 77 DD 75 76 2A 0C 17 E5 CD 32 27 E1 EB    ..tw.uv*....2'..
0258E0:  22 0C 17 2A 12 17 23 22 12 17 2A 1A 17 23 22 1A    "..*..#"..*..#".
0258F0:  17 DD 66 77 DD 6E 76 ED 5B 0C 17 A7 ED 52 C2 CE    ..fw.nv.[....R..
025900:  38 2A 1C 17 2B ED 5B 12 17 7C EE 80 67 7A EE 80    8*..+.[..|..gz..
025910:  57 A7 ED 52 D2 1E 39 2A 1C 17 2B 22 12 17 2A 0C    W..R..9*..+"..*.
025920:  17 E5 CD FB 27 E1 E1 E1 22 10 01 DD E1 C9 21 6A    ....'...".....!j
025930:  5B CD 92 02 DD 21 86 FF DD 39 2A 10 01 CB 3C CB    [....!...9*...<.
025940:  1D E5 2A 10 01 11 A4 00 19 CB 3C CB 1D E5 2A 10    ..*.......<...*.
025950:  01 11 E2 00 19 CB 3C CB 1D E5 2A 10 01 11 BC 5A    ......<...*....Z
025960:  19 CB 3C CB 1D E5 2A 10 01 11 60 5B 19 CB 3C CB    ..<...*...`[..<.
025970:  1D E5 21 00 00 E5 21 00 00 E5 21 FF FF E5 CD B3    ..!...!...!.....
025980:  19 EB 22 1E 17 2A 1E 17 11 04 00 A7 ED 52 C2 97    .."..*.......R..
025990:  39 21 1F 00 C3 AC 39 2A 1E 17 11 03 00 A7 ED 52    9!....9*.......R
0259A0:  C2 A9 39 21 18 00 C3 AC 39 21 19 00 22 1C 17 21    ..9!....9!.."..!
0259B0:  00 00 22 0C 17 21 00 00 22 0A 17 DD 66 75 DD 6E    .."..!.."...fu.n
0259C0:  74 22 0E 17 DD 66 71 DD 6E 70 22 24 17 DD 66 77    t"...fq.np"$..fw
0259D0:  DD 6E 76 22 14 17 DD 66 79 DD 6E 78 22 16 17 CD    .nv"...fy.nx"...
0259E0:  4A 24 2A 0E 17 29 36 0D 2A 24 17 E5 CD 08 02 E1    J$*..)6.*$......
0259F0:  2A 0C 17 E5 DD 66 73 DD 6E 72 E5 CD 37 22 E1 E1    *....fs.nr..7"..
025A00:  DD 66 6B DD 6E 6A 7C B5 CA 18 3A 2A 12 17 E5 2A    .fk.nj|...:*...*
025A10:  0C 17 E5 CD 06 26 E1 E1 2A 18 17 7C B5 CA 93 3A    .....&..*..|...:
025A20:  2A 12 17 E5 21 01 00 E5 CD DE 1A E1 E1 2A 48 3A    *...!........*H:
025A30:  E5 DD 66 73 DD 6E 72 29 5E 23 56 EB 2B 7C EE 80    ..fs.nr)^#V.+|..
025A40:  67 22 48 3A 21 01 00 11 00 00 EB 42 4B 7A EE 80    g"H:!......BKz..
025A50:  57 ED 52 DA 72 3A C5 DD 66 73 DD 6E 72 DD 56 67    W.R.r:..fs.nr.Vg
025A60:  DD 5E 66 19 29 5E 23 56 EB E5 CD 8C 03 E1 E1 23    .^f.)^#V.......#
025A70:  18 D5 E1 22 48 3A DD 66 73 DD 6E 72 29 5E 23 56    ..."H:.fs.nr)^#V
025A80:  EB EB 21 50 00 A7 ED 52 E5 CD 55 1B E1 21 00 00    ..!P...R..U..!..
025A90:  22 18 17 DD 66 73 DD 6E 72 E5 CD 72 21 E1 EB DD    "...fs.nr..r!...
025AA0:  74 6D DD 75 6C 21 00 00 DD 74 6B DD 75 6A DD 66    tm.ul!...tk.uj.f
025AB0:  6D DD 6E 6C 11 4F 3B 3E 0C C3 7E 01 21 FF FF DD    m.nl.O;>..~.!...
025AC0:  74 6B DD 75 6A DD 66 73 DD 6E 72 E5 CD BD 33 E1    tk.uj.fs.nr...3.
025AD0:  C3 81 3B 21 FF FF DD 74 6B DD 75 6A DD 66 73 DD    ..;!...tk.uj.fs.
025AE0:  6E 72 E5 CD 02 35 E1 C3 81 3B DD 66 73 DD 6E 72    nr...5...;.fs.nr
025AF0:  E5 CD D1 36 E1 C3 81 3B DD 66 73 DD 6E 72 E5 CD    ...6...;.fs.nr..
025B00:  61 37 E1 C3 81 3B DD 66 73 DD 6E 72 E5 CD 87 37    a7...;.fs.nr...7
025B10:  E1 C3 81 3B DD 66 73 DD 6E 72 E5 CD E6 37 E1 C3    ...;.fs.nr...7..
025B20:  81 3B DD 66 73 DD 6E 72 E5 CD 53 38 E1 C3 81 3B    .;.fs.nr..S8...;
025B30:  DD 66 73 DD 6E 72 E5 CD 96 38 E1 C3 81 3B DD 66    .fs.nr...8...;.f
025B40:  73 DD 6E 72 E5 CD 4B 31 E1 C3 81 3B C3 81 3B 03    s.nr..K1...;..;.
025B50:  00 3E 3B FC 00 3E 3B 1D 00 30 3B 1B 00 22 3B F9    .>;..>;..0;..";.
025B60:  00 14 3B F8 00 06 3B F5 00 F8 3A F1 00 F8 3A F4    ..;...;...:...:.
025B70:  00 EA 3A F0 00 EA 3A 0D 00 D3 3A 7F 00 BC 3A 81    ..:...:...:...:.
025B80:  3B C3 E8 39 21 06 00 39 F9 E1 E1 E1 E1 E1 2A 10    ;..9!..9......*.
025B90:  01 22 12 01 E1 22 10 01 DD E1 C9 26 17 18 3A 1E    ."...".....&..:.
025BA0:  17 00 00 1C 17 00 00 1A 17 01 00 18 17 00 00 16    ................
025BB0:  17 00 00 14 17 00 00 12 17 01 00 10 17 01 00 0E    ................
025BC0:  17 00 00 0C 17 00 00 0A 17 00 00 08 17 FF FF 8A    ................
025BD0:  03 00 00 88 03 00 00 86 03 00 00 84 03 00 00 02    ................
025BE0:  F6 14 3B F8 00 06 3B F5 00 F8 3A F1 00 F8 3A F4    ..;...;...:...:.
025BF0:  00 EA 3A F0 00 EA 3A 0D 00 D3 3A 7F 00 BC 3A 81    ..:...:...:...:.
025C00:  DD 66 6B DD 6E 6A 7C B5 CA 18 3A 2A 12 17 E5 2A    .fk.nj|...:*...*
025C10:  0C 17 E5 CD 06 26 E1 E1 2A 18 17 7C B5 CA 93 3A    .....&..*..|...:
025C20:  2A 12 17 E5 21 01 00 E5 CD DE 1A E1 E1 2A 48 3A    *...!........*H:
025C30:  E5 DD 66 73 DD 6E 72 29 5E 23 56 EB 2B 7C EE 80    ..fs.nr)^#V.+|..
025C40:  67 22 48 3A 21 01 00 11 00 00 EB 42 4B 7A EE 80    g"H:!......BKz..
025C50:  57 ED 52 DA 72 3A C5 DD 66 73 DD 6E 72 DD 56 67    W.R.r:..fs.nr.Vg
025C60:  DD 5E 66 19 29 5E 23 56 EB E5 CD 8C 03 E1 E1 23    .^f.)^#V.......#
025C70:  18 D5 E1 22 48 3A DD 66 73 DD 6E 72 29 5E 23 56    ..."H:.fs.nr)^#V
025C80:  EB EB 21 50 00 A7 ED 52 E5 CD 55 1B E1 21 00 00    ..!P...R..U..!..
025C90:  22 18 17 DD 66 73 DD 6E 72 E5 CD 72 21 E1 EB DD    "...fs.nr..r!...
025CA0:  74 6D DD 75 6C 21 00 00 DD 74 6B DD 75 6A DD 66    tm.ul!...tk.uj.f
025CB0:  6D DD 6E 6C 11 4F 3B 3E 0C C3 7E 01 21 FF FF DD    m.nl.O;>..~.!...
025CC0:  74 6B DD 75 6A DD 66 73 DD 6E 72 E5 CD BD 33 E1    tk.uj.fs.nr...3.
025CD0:  C3 81 3B 21 FF FF DD 74 6B DD 75 6A DD 66 73 DD    ..;!...tk.uj.fs.
025CE0:  6E 72 E5 CD 02 35 E1 C3 81 3B DD 66 73 DD 6E 72    nr...5...;.fs.nr
025CF0:  E5 CD D1 36 E1 C3 81 3B DD 66 73 DD 6E 72 E5 CD    ...6...;.fs.nr..
025D00:  2F 2F 20 43 4C 49 42 48 44 52 20 20 20 73 74 61    // CLIBHDR   sta
025D10:  6E 64 61 72 64 20 43 50 2F 4D 20 6C 69 62 72 61    ndard CP/M libra
025D20:  72 79 20 68 65 61 64 65 72 2C 20 6C 61 73 74 20    ry header, last 
025D30:  6D 6F 64 69 66 69 65 64 20 32 31 2F 30 33 2F 31    modified 21/03/1
025D40:  39 38 37 0D 0A 0D 0A 0D 0A 4D 41 4E 49 46 45 53    987......MANIFES
025D50:  54 20 24 28 20 62 79 74 65 73 70 65 72 77 6F 72    T $( bytesperwor
025D60:  64 20 3D 20 32 20 3B 20 62 69 74 73 70 65 72 77    d = 2 ; bitsperw
025D70:  6F 72 64 20 3D 20 31 36 0D 0A 20 20 20 20 20 20    ord = 16..      
025D80:  20 20 20 20 20 20 73 6F 66 74 65 6F 66 63 68 20          softeofch 
025D90:  3D 20 32 36 20 20 20 3B 20 65 6E 64 73 74 72 65    = 26   ; endstre
025DA0:  61 6D 63 68 20 3D 20 2D 31 0D 0A 20 20 20 20 20    amch = -1..     
025DB0:  20 20 20 20 20 20 20 76 64 75 73 74 72 65 61 6D           vdustream
025DC0:  20 3D 20 30 20 20 20 20 3B 20 70 72 69 6E 74 73     = 0    ; prints
025DD0:  74 72 65 61 6D 20 3D 20 31 0D 0A 20 20 20 20 20    tream = 1..     
025DE0:  20 20 20 20 20 20 20 6D 61 78 69 6E 74 20 3D 20           maxint = 
025DF0:  33 32 37 36 37 20 20 20 3B 20 6D 69 6E 69 6E 74    32767   ; minint
025E00:  20 3D 20 2D 33 32 37 36 38 0D 0A 20 20 20 20 20     = -32768..     
025E10:  20 20 20 20 20 20 20 6E 65 77 6C 69 6E 65 63 68           newlinech
025E20:  20 3D 20 32 36 39 0D 0A 20 20 20 20 20 20 20 20     = 269..        
025E30:  20 24 29 0D 0A 0D 0A 53 54 41 54 49 43 20 20 20     $)....STATIC   
025E40:  24 28 20 72 65 61 64 73 74 72 65 61 6D 20 3D 20    $( readstream = 
025E50:  30 20 3B 20 77 72 69 74 65 73 74 72 65 61 6D 20    0 ; writestream 
025E60:  3D 20 30 0D 0A 20 20 20 20 20 20 20 20 20 20 20    = 0..           
025E70:  20 72 65 74 75 72 6E 65 64 20 3D 20 30 20 20 20     returned = 0   
025E80:  3B 20 6C 61 73 74 63 68 61 72 20 3D 20 30 0D 0A    ; lastchar = 0..
025E90:  20 20 20 20 20 20 20 20 20 24 29 0D 0A 0D 0A 0D             $).....
025EA0:  0A 2F 2A 2A 2A 2A 20 4F 55 54 50 55 54 20 52 4F    ./**** OUTPUT RO
025EB0:  55 54 49 4E 45 53 20 2A 2A 2A 2A 2F 0D 0A 0D 0A    UTINES ****/....
025EC0:  4C 45 54 20 77 72 63 68 28 63 68 61 72 29 20 42    LET wrch(char) B
025ED0:  45 0D 0A 24 28 0D 0A 20 20 53 57 49 54 43 48 4F    E..$(..  SWITCHO
025EE0:  4E 20 77 72 69 74 65 73 74 72 65 61 6D 20 49 4E    N writestream IN
025EF0:  54 4F 0D 0A 20 20 24 28 0D 0A 20 20 20 20 20 43    TO..  $(..     C
025F00:  41 53 45 20 76 64 75 73 74 72 65 61 6D 20 20 20    ASE vdustream   
025F10:  3A 20 20 77 72 76 64 75 28 63 68 61 72 29 20 3B    :  wrvdu(char) ;
025F20:  20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 43     ENDCASE..     C
025F30:  41 53 45 20 70 72 69 6E 74 73 74 72 65 61 6D 20    ASE printstream 
025F40:  3A 20 20 70 72 63 68 28 63 68 61 72 29 20 3B 20    :  prch(char) ; 
025F50:  45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 44 45    ENDCASE..     DE
025F60:  46 41 55 4C 54 20 20 20 20 20 20 20 20 20 20 3A    FAULT          :
025F70:  20 20 77 72 69 74 65 63 68 28 63 68 61 72 2C 77      writech(char,w
025F80:  72 69 74 65 73 74 72 65 61 6D 29 0D 0A 20 20 24    ritestream)..  $
025F90:  29 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 77 72 69    )..$)....AND wri
025FA0:  74 65 66 28 73 74 72 69 6E 67 2C 61 2C 62 2C 63    tef(string,a,b,c
025FB0:  2C 64 2C 65 2C 66 2C 67 2C 68 2C 69 2C 6A 2C 6B    ,d,e,f,g,h,i,j,k
025FC0:  29 20 42 45 0D 0A 24 28 0D 0A 20 20 4C 45 54 20    ) BE..$(..  LET 
025FD0:  70 70 74 72 20 3D 20 40 61 0D 0A 20 20 46 4F 52    pptr = @a..  FOR
025FE0:  20 63 70 74 72 20 3D 20 31 20 54 4F 20 73 74 72     cptr = 1 TO str
025FF0:  69 6E 67 25 30 20 44 4F 0D 0A 20 20 24 28 0D 0A    ing%0 DO..  $(..
026000:  20 20 20 20 4C 45 54 20 6B 20 3D 20 73 74 72 69        LET k = stri
026010:  6E 67 25 63 70 74 72 0D 0A 20 20 20 20 54 45 53    ng%cptr..    TES
026020:  54 20 6B 20 3D 20 27 25 27 20 54 48 45 4E 0D 0A    T k = '%' THEN..
026030:  20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 4C 45        $(..      LE
026040:  54 20 61 72 67 20 3D 20 21 70 70 74 72 0D 0A 20    T arg = !pptr.. 
026050:  20 20 20 20 20 63 70 74 72 20 3A 3D 20 63 70 74         cptr := cpt
026060:  72 20 2B 20 31 0D 0A 20 20 20 20 20 20 24 28 0D    r + 1..      $(.
026070:  0A 20 20 20 20 20 20 20 20 4C 45 54 20 63 68 2C    .        LET ch,
026080:  20 73 69 7A 65 20 3D 20 73 74 72 69 6E 67 25 63     size = string%c
026090:  70 74 72 2C 20 64 65 63 76 61 6C 28 73 74 72 69    ptr, decval(stri
0260A0:  6E 67 25 28 63 70 74 72 2B 31 29 29 0D 0A 20 20    ng%(cptr+1))..  
0260B0:  20 20 20 20 20 20 70 70 74 72 20 3A 3D 20 70 70          pptr := pp
0260C0:  74 72 20 2B 20 31 0D 0A 20 20 20 20 20 20 20 20    tr + 1..        
0260D0:  63 70 74 72 20 3A 3D 20 63 70 74 72 20 2B 20 56    cptr := cptr + V
0260E0:  41 4C 4F 46 0D 0A 20 20 20 20 20 20 20 20 53 57    ALOF..        SW
0260F0:  49 54 43 48 4F 4E 20 63 68 20 49 4E 54 4F 0D 0A    ITCHON ch INTO..
026100:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
026110:  20 00 00 00 02 09 50 E5 20 00 C1 02 00 00 00 02     .....P. .......
026120:  20 00 C2 02 00 00 00 02 20 00 C3 02 00 00 00 02     ....... .......
026130:  20 00 C4 02 00 00 00 02 20 00 C5 02 00 00 00 02     ....... .......
026140:  20 00 C6 02 00 00 00 02 20 00 C7 02 00 00 00 02     ....... .......
026150:  20 00 C8 02 00 00 00 02 20 00 C9 02 00 00 00 02     ....... .......
026160:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026170:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026180:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026190:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0261A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0261B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0261C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0261D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0261E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0261F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026200:  20 20 20 20 20 20 20 20 24 28 0D 0A 20 20 20 20            $(..    
026210:  20 20 20 20 20 20 43 41 53 45 20 27 53 27 3A 20          CASE 'S': 
026220:  77 72 69 74 65 73 28 61 72 67 29 20 20 20 3B 20    writes(arg)   ; 
026230:  52 45 53 55 4C 54 49 53 20 30 0D 0A 20 20 20 20    RESULTIS 0..    
026240:  20 20 20 20 20 20 43 41 53 45 20 27 43 27 3A 20          CASE 'C': 
026250:  77 72 63 68 28 61 72 67 29 20 20 20 20 20 3B 20    wrch(arg)     ; 
026260:  52 45 53 55 4C 54 49 53 20 30 0D 0A 20 20 20 20    RESULTIS 0..    
026270:  20 20 20 20 20 20 43 41 53 45 20 27 4E 27 3A 20          CASE 'N': 
026280:  77 72 69 74 65 64 28 61 72 67 2C 30 29 20 3B 20    writed(arg,0) ; 
026290:  52 45 53 55 4C 54 49 53 20 30 0D 0A 20 20 20 20    RESULTIS 0..    
0262A0:  20 20 20 20 20 20 43 41 53 45 20 27 4F 27 3A 20          CASE 'O': 
0262B0:  77 72 69 74 65 6F 63 74 28 61 72 67 2C 73 69 7A    writeoct(arg,siz
0262C0:  65 29 20 3B 20 52 45 53 55 4C 54 49 53 20 31 0D    e) ; RESULTIS 1.
0262D0:  0A 20 20 20 20 20 20 20 20 20 20 43 41 53 45 20    .          CASE 
0262E0:  27 58 27 3A 20 77 72 69 74 65 68 65 78 28 61 72    'X': writehex(ar
0262F0:  67 2C 73 69 7A 65 29 20 3B 20 52 45 53 55 4C 54    g,size) ; RESULT
026300:  49 53 20 31 0D 0A 20 20 20 20 20 20 20 20 20 20    IS 1..          
026310:  43 41 53 45 20 27 49 27 3A 20 77 72 69 74 65 64    CASE 'I': writed
026320:  28 61 72 67 2C 73 69 7A 65 29 20 20 20 3B 20 52    (arg,size)   ; R
026330:  45 53 55 4C 54 49 53 20 31 0D 0A 20 20 20 20 20    ESULTIS 1..     
026340:  20 20 20 20 20 43 41 53 45 20 27 24 27 3A 20 52         CASE '$': R
026350:  45 53 55 4C 54 49 53 20 30 0D 0A 20 20 20 20 20    ESULTIS 0..     
026360:  20 20 20 20 20 44 45 46 41 55 4C 54 20 3A 20 77         DEFAULT : w
026370:  72 63 68 28 63 68 29 20 3B 20 70 70 74 72 20 3A    rch(ch) ; pptr :
026380:  3D 20 70 70 74 72 20 2D 20 31 20 20 20 3B 20 52    = pptr - 1   ; R
026390:  45 53 55 4C 54 49 53 20 30 0D 0A 20 20 20 20 20    ESULTIS 0..     
0263A0:  20 20 20 24 29 0D 0A 20 20 20 20 20 20 24 29 0D       $)..      $).
0263B0:  0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45 4C 53    .    $)..    ELS
0263C0:  45 20 77 72 63 68 28 6B 29 0D 0A 20 20 24 29 0D    E wrch(k)..  $).
0263D0:  0A 24 29 0D 0A 0D 0A 41 4E 44 20 77 72 69 74 65    .$)....AND write
0263E0:  73 28 73 29 20 42 45 20 46 4F 52 20 63 20 3D 20    s(s) BE FOR c = 
0263F0:  31 20 54 4F 20 73 25 30 20 44 4F 20 77 72 63 68    1 TO s%0 DO wrch
026400:  28 73 25 63 29 0D 0A 0D 0A 41 4E 44 20 77 72 69    (s%c)....AND wri
026410:  74 65 64 28 6E 75 6D 2C 64 29 20 42 45 0D 0A 24    ted(num,d) BE..$
026420:  28 0D 0A 20 20 4C 45 54 20 74 65 6D 70 20 3D 20    (..  LET temp = 
026430:  56 45 43 20 32 30 0D 0A 20 20 41 4E 44 20 70 74    VEC 20..  AND pt
026440:  72 2C 20 6E 20 3D 20 30 2C 20 6E 75 6D 0D 0A 20    r, n = 0, num.. 
026450:  20 49 46 20 6E 75 6D 3C 30 20 54 48 45 4E 20 64     IF num<0 THEN d
026460:  2C 20 6E 20 3A 3D 20 64 2D 31 2C 20 2D 6E 0D 0A    , n := d-1, -n..
026470:  20 20 74 65 6D 70 21 70 74 72 2C 20 6E 2C 20 70      temp!ptr, n, p
026480:  74 72 20 3A 3D 20 6E 20 52 45 4D 20 31 30 2C 20    tr := n REM 10, 
026490:  6E 2F 31 30 2C 20 70 74 72 2B 31 20 52 45 50 45    n/10, ptr+1 REPE
0264A0:  41 54 55 4E 54 49 4C 20 6E 20 3D 20 30 0D 0A 20    ATUNTIL n = 0.. 
0264B0:  20 46 4F 52 20 6A 20 3D 20 70 74 72 2B 31 20 54     FOR j = ptr+1 T
0264C0:  4F 20 64 20 44 4F 20 77 72 63 68 28 27 20 27 29    O d DO wrch(' ')
0264D0:  0D 0A 20 20 49 46 20 6E 75 6D 3C 30 20 54 48 45    ..  IF num<0 THE
0264E0:  4E 20 77 72 63 68 28 27 2D 27 29 0D 0A 20 20 46    N wrch('-')..  F
0264F0:  4F 52 20 6A 20 3D 20 70 74 72 2D 31 20 54 4F 20    OR j = ptr-1 TO 
026500:  30 20 42 59 20 2D 31 20 44 4F 20 77 72 63 68 28    0 BY -1 DO wrch(
026510:  74 65 6D 70 21 6A 2B 27 30 27 29 0D 0A 24 29 0D    temp!j+'0')..$).
026520:  0A 0D 0A 41 4E 44 20 77 72 69 74 65 6E 28 6E 29    ...AND writen(n)
026530:  20 42 45 20 77 72 69 74 65 64 28 6E 2C 30 29 0D     BE writed(n,0).
026540:  0A 0D 0A 41 4E 44 20 77 72 69 74 65 68 65 78 28    ...AND writehex(
026550:  6E 75 6D 2C 64 29 20 42 45 0D 0A 24 28 0D 0A 20    num,d) BE..$(.. 
026560:  20 49 46 20 44 3E 31 20 54 48 45 4E 20 77 72 69     IF D>1 THEN wri
026570:  74 65 68 65 78 28 6E 75 6D 3E 3E 34 2C 20 64 2D    tehex(num>>4, d-
026580:  31 29 0D 0A 20 20 77 72 63 68 28 28 6E 75 6D 20    1)..  wrch((num 
026590:  4C 4F 47 41 4E 44 20 31 35 29 21 54 41 42 4C 45    LOGAND 15)!TABLE
0265A0:  20 27 30 27 2C 27 31 27 2C 27 32 27 2C 27 33 27     '0','1','2','3'
0265B0:  2C 27 34 27 2C 27 35 27 2C 27 36 27 2C 27 37 27    ,'4','5','6','7'
0265C0:  2C 27 38 27 2C 27 39 27 2C 0D 0A 20 20 20 20 20    ,'8','9',..     
0265D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0265E0:  20 20 20 20 20 20 20 20 27 41 27 2C 27 42 27 2C            'A','B',
0265F0:  27 43 27 2C 27 44 27 2C 27 45 27 2C 27 46 27 29    'C','D','E','F')
026600:  0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 77 72 69 74    ..$)....AND writ
026610:  65 6F 63 74 28 6E 75 6D 2C 64 29 20 42 45 0D 0A    eoct(num,d) BE..
026620:  24 28 0D 0A 20 20 49 46 20 64 3E 31 20 54 48 45    $(..  IF d>1 THE
026630:  4E 20 77 72 69 74 65 6F 63 74 28 6E 75 6D 3E 3E    N writeoct(num>>
026640:  33 2C 64 2D 31 29 0D 0A 20 20 77 72 63 68 28 28    3,d-1)..  wrch((
026650:  6E 75 6D 20 4C 4F 47 41 4E 44 20 37 29 2B 27 30    num LOGAND 7)+'0
026660:  27 29 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 6E 65    ')..$)....AND ne
026670:  77 6C 69 6E 65 28 29 20 42 45 20 20 77 72 63 68    wline() BE  wrch
026680:  28 6E 65 77 6C 69 6E 65 63 68 29 0D 0A 0D 0A 0D    (newlinech).....
026690:  0A 2F 2A 2A 2A 2A 20 49 4E 50 55 54 20 52 4F 55    ./**** INPUT ROU
0266A0:  54 49 4E 45 53 20 2A 2A 2A 2A 2F 0D 0A 0D 0A 41    TINES ****/....A
0266B0:  4E 44 20 72 64 63 68 28 29 20 3D 20 56 41 4C 4F    ND rdch() = VALO
0266C0:  46 0D 0A 24 28 0D 0A 20 20 55 4E 4C 45 53 53 20    F..$(..  UNLESS 
0266D0:  72 65 74 75 72 6E 65 64 20 3D 20 30 20 54 48 45    returned = 0 THE
0266E0:  4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 4C 45 54    N..  $(..    LET
0266F0:  20 63 20 3D 20 72 65 74 75 72 6E 65 64 0D 0A 20     c = returned.. 
026700:  20 20 20 72 65 74 75 72 6E 65 64 20 3A 3D 20 30       returned := 0
026710:  0D 0A 20 20 20 20 6C 61 73 74 63 68 61 72 20 3A    ..    lastchar :
026720:  3D 20 63 0D 0A 20 20 20 20 52 45 53 55 4C 54 49    = c..    RESULTI
026730:  53 20 63 0D 0A 20 20 24 29 0D 0A 20 20 52 45 53    S c..  $)..  RES
026740:  55 4C 54 49 53 20 72 65 61 64 73 74 72 65 61 6D    ULTIS readstream
026750:  20 3D 20 30 20 2D 3E 20 72 64 76 64 75 28 29 2C     = 0 -> rdvdu(),
026760:  20 72 65 61 64 63 68 28 72 65 61 64 73 74 72 65     readch(readstre
026770:  61 6D 29 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 75    am)..$)....AND u
026780:  6E 72 64 63 68 28 29 20 42 45 20 72 65 74 75 72    nrdch() BE retur
026790:  6E 65 64 20 3A 3D 20 6C 61 73 74 63 68 61 72 0D    ned := lastchar.
0267A0:  0A 0D 0A 41 4E 44 20 72 65 61 64 73 28 61 72 72    ...AND reads(arr
0267B0:  61 79 29 20 3D 20 56 41 4C 4F 46 0D 0A 24 28 0D    ay) = VALOF..$(.
0267C0:  0A 20 20 4D 41 4E 49 46 45 53 54 20 24 28 20 65    .  MANIFEST $( e
0267D0:  73 63 61 70 65 20 3D 20 23 78 46 43 20 20 3B 20    scape = #xFC  ; 
0267E0:  20 73 74 6F 70 3D 33 20 3B 20 6D 61 78 6C 65 6E     stop=3 ; maxlen
0267F0:  3D 32 35 35 20 24 29 0D 0A 20 20 4C 45 54 20 70    =255 $)..  LET p
026800:  74 72 2C 20 63 20 3D 20 30 2C 20 3F 0D 0A 20 20    tr, c = 0, ?..  
026810:  24 28 0D 0A 20 20 20 20 46 4F 52 20 69 3D 31 20    $(..    FOR i=1 
026820:  74 6F 20 70 74 72 20 44 4F 20 24 28 20 77 72 63    to ptr DO $( wrc
026830:  68 28 38 29 20 3B 20 77 72 63 68 28 27 20 27 29    h(8) ; wrch(' ')
026840:  20 3B 20 77 72 63 68 28 38 29 20 24 29 0D 0A 20     ; wrch(8) $).. 
026850:  20 20 20 70 74 72 3A 3D 30 0D 0A 20 20 20 20 63       ptr:=0..    c
026860:  20 3A 3D 20 72 64 63 68 28 29 0D 0A 20 20 20 20     := rdch()..    
026870:  55 4E 54 49 4C 20 63 3D 31 33 20 7C 20 63 3D 65    UNTIL c=13 | c=e
026880:  73 63 61 70 65 20 7C 20 63 3D 73 74 6F 70 20 44    scape | c=stop D
026890:  4F 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 20 20    O..    $(..     
0268A0:  20 54 45 53 54 20 63 3D 31 32 37 20 54 48 45 4E     TEST c=127 THEN
0268B0:  0D 0A 20 20 20 20 20 20 24 28 0D 0A 20 20 20 20    ..      $(..    
0268C0:  20 20 20 20 54 45 53 54 20 70 74 72 3D 30 20 54        TEST ptr=0 T
0268D0:  48 45 4E 20 77 72 63 68 28 37 29 0D 0A 20 20 20    HEN wrch(7)..   
0268E0:  20 20 20 20 20 45 4C 53 45 0D 0A 20 20 20 20 20         ELSE..     
0268F0:  20 20 20 24 28 0D 0A 20 20 20 20 20 20 20 20 20       $(..         
026900:  20 77 72 63 68 28 38 29 20 3B 20 77 72 63 68 28     wrch(8) ; wrch(
026910:  27 20 27 29 20 3B 20 77 72 63 68 28 38 29 0D 0A    ' ') ; wrch(8)..
026920:  20 20 20 20 20 20 20 20 20 20 70 74 72 20 3A 3D              ptr :=
026930:  20 70 74 72 2D 31 0D 0A 20 20 20 20 20 20 20 20     ptr-1..        
026940:  24 29 0D 0A 20 20 20 20 20 20 24 29 0D 0A 20 20    $)..      $)..  
026950:  20 20 20 20 45 4C 53 45 0D 0A 20 20 20 20 20 20        ELSE..      
026960:  24 28 0D 0A 20 20 20 20 20 20 20 20 54 45 53 54    $(..        TEST
026970:  20 70 74 72 3D 6D 61 78 6C 65 6E 20 54 48 45 4E     ptr=maxlen THEN
026980:  20 77 72 63 68 28 37 29 0D 0A 20 20 20 20 20 20     wrch(7)..      
026990:  20 20 45 4C 53 45 0D 0A 20 20 20 20 20 20 20 20      ELSE..        
0269A0:  24 28 20 77 72 63 68 28 63 29 0D 0A 20 20 20 20    $( wrch(c)..    
0269B0:  20 20 20 20 20 20 20 70 74 72 20 3A 3D 20 70 74           ptr := pt
0269C0:  72 20 2B 20 31 0D 0A 20 20 20 20 20 20 20 20 20    r + 1..         
0269D0:  20 20 61 72 72 61 79 25 70 74 72 20 3A 3D 20 63      array%ptr := c
0269E0:  0D 0A 20 20 20 20 20 20 20 20 24 29 0D 0A 20 20    ..        $)..  
0269F0:  20 20 20 20 24 29 0D 0A 20 20 20 20 20 20 63 20        $)..      c 
026A00:  3A 3D 20 72 64 63 68 28 29 0D 0A 20 20 20 20 24    := rdch()..    $
026A10:  29 0D 0A 20 20 24 29 0D 0A 20 20 52 45 50 45 41    )..  $)..  REPEA
026A20:  54 57 48 49 4C 45 20 28 63 3D 65 73 63 61 70 65    TWHILE (c=escape
026A30:  20 7C 20 63 3D 20 73 74 6F 70 29 20 26 20 28 70     | c= stop) & (p
026A40:  74 72 20 5C 3D 20 30 29 0D 0A 20 20 61 72 72 61    tr \= 0)..  arra
026A50:  79 25 30 20 3A 3D 20 28 63 3D 65 73 63 61 70 65    y%0 := (c=escape
026A60:  20 7C 20 63 3D 73 74 6F 70 29 20 2D 3E 20 30 2C     | c=stop) -> 0,
026A70:  20 70 74 72 0D 0A 20 20 52 45 53 55 4C 54 49 53     ptr..  RESULTIS
026A80:  20 4E 4F 54 20 28 63 3D 65 73 63 61 70 65 20 7C     NOT (c=escape |
026A90:  20 63 3D 73 74 6F 70 29 0D 0A 24 29 0D 0A 0D 0A     c=stop)..$)....
026AA0:  41 4E 44 20 72 65 61 64 6E 28 29 20 3D 20 56 41    AND readn() = VA
026AB0:  4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 69    LOF..$(..  LET i
026AC0:  6E 70 75 74 20 3D 20 56 45 43 20 31 32 38 0D 0A    nput = VEC 128..
026AD0:  20 20 72 65 61 64 73 28 69 6E 70 75 74 29 0D 0A      reads(input)..
026AE0:  20 20 52 45 53 55 4C 54 49 53 20 73 74 72 74 6F      RESULTIS strto
026AF0:  6E 75 6D 28 69 6E 70 75 74 2C 31 30 29 0D 0A 24    num(input,10)..$
026B00:  29 0D 0A 0D 0A 41 4E 44 20 73 74 72 74 6F 6E 75    )....AND strtonu
026B10:  6D 28 73 74 72 69 6E 67 2C 62 61 73 65 29 20 3D    m(string,base) =
026B20:  20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C 45     VALOF..$(..  LE
026B30:  54 20 70 74 72 2C 20 74 6F 74 61 6C 20 3D 20 31    T ptr, total = 1
026B40:  2C 20 30 0D 0A 20 20 57 48 49 4C 45 20 70 74 72    , 0..  WHILE ptr
026B50:  20 3C 3D 20 73 74 72 69 6E 67 25 30 20 4C 4F 47     <= string%0 LOG
026B60:  41 4E 44 20 28 30 3C 3D 64 65 63 76 61 6C 28 73    AND (0<=decval(s
026B70:  74 72 69 6E 67 25 70 74 72 29 3C 62 61 73 65 29    tring%ptr)<base)
026B80:  20 44 4F 0D 0A 20 20 24 28 0D 0A 20 20 20 20 74     DO..  $(..    t
026B90:  6F 74 61 6C 20 3A 3D 20 74 6F 74 61 6C 20 2A 20    otal := total * 
026BA0:  62 61 73 65 20 2B 20 64 65 63 76 61 6C 28 73 74    base + decval(st
026BB0:  72 69 6E 67 25 70 74 72 29 0D 0A 20 20 20 20 70    ring%ptr)..    p
026BC0:  74 72 20 3A 3D 20 70 74 72 20 2B 20 31 0D 0A 20    tr := ptr + 1.. 
026BD0:  20 24 29 0D 0A 20 20 52 45 53 55 4C 54 49 53 20     $)..  RESULTIS 
026BE0:  74 6F 74 61 6C 0D 0A 24 29 0D 0A 0D 0A 0D 0A 2F    total..$)....../
026BF0:  2A 2A 2A 2A 20 46 49 4C 45 20 49 2F 4F 20 52 4F    **** FILE I/O RO
026C00:  55 54 49 4E 45 53 20 2A 2A 2A 2A 2F 0D 0A 0D 0A    UTINES ****/....
026C10:  41 4E 44 20 66 69 6E 64 69 6E 70 75 74 28 6E 61    AND findinput(na
026C20:  6D 65 2C 20 62 75 66 66 65 72 29 20 3D 20 56 41    me, buffer) = VA
026C30:  4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 63    LOF..$(..  LET c
026C40:  2C 20 64 65 20 3D 20 31 35 2C 20 62 75 66 66 65    , de = 15, buffe
026C50:  72 2A 32 0D 0A 20 20 73 65 74 66 63 62 28 6E 61    r*2..  setfcb(na
026C60:  6D 65 2C 20 62 75 66 66 65 72 29 20 20 20 20 2F    me, buffer)    /
026C70:  2F 20 73 65 74 20 74 68 65 20 66 63 62 0D 0A 20    / set the fcb.. 
026C80:  20 62 64 6F 73 61 28 40 63 2C 20 40 64 65 29 20     bdosa(@c, @de) 
026C90:  20 20 20 20 20 20 20 20 20 2F 2F 20 6F 70 65 6E             // open
026CA0:  20 66 69 6C 65 0D 0A 20 20 62 75 66 66 65 72 21     file..  buffer!
026CB0:  31 37 20 3A 3D 20 31 36 34 20 20 20 20 20 20 20    17 := 164       
026CC0:  20 2F 2F 20 73 65 74 20 73 65 63 74 6F 72 20 70     // set sector p
026CD0:  6F 69 6E 74 65 72 0D 0A 20 20 52 45 53 55 4C 54    ointer..  RESULT
026CE0:  49 53 20 63 20 5C 3D 20 32 35 35 0D 0A 24 29 0D    IS c \= 255..$).
026CF0:  0A 0D 0A 41 4E 44 20 65 6E 64 72 65 61 64 28 29    ...AND endread()
026D00:  20 3D 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 20     = VALOF..$(..  
026D10:  4C 45 54 20 62 75 66 3D 72 65 61 64 73 74 72 65    LET buf=readstre
026D20:  61 6D 0D 0A 20 20 72 65 61 64 73 74 72 65 61 6D    am..  readstream
026D30:  20 3A 3D 20 76 64 75 73 74 72 65 61 6D 0D 0A 20     := vdustream.. 
026D40:  20 52 45 53 55 4C 54 49 53 20 62 75 66 3E 30 20     RESULTIS buf>0 
026D50:  2D 3E 20 63 6C 6F 73 65 69 6E 28 62 75 66 29 2C    -> closein(buf),
026D60:  20 54 52 55 45 0D 0A 24 29 0D 0A 0D 0A 41 4E 44     TRUE..$)....AND
026D70:  20 72 65 77 69 6E 64 28 29 20 42 45 20 49 46 20     rewind() BE IF 
026D80:  72 65 61 64 73 74 72 65 61 6D 20 3E 20 30 20 54    readstream > 0 T
026D90:  48 45 4E 20 72 65 77 69 6E 64 69 6E 28 72 65 61    HEN rewindin(rea
026DA0:  64 73 74 72 65 61 6D 29 0D 0A 0D 0A 41 4E 44 20    dstream)....AND 
026DB0:  66 69 6E 64 6F 75 74 70 75 74 28 6E 61 6D 65 2C    findoutput(name,
026DC0:  62 75 66 66 65 72 29 20 3D 20 56 41 4C 4F 46 0D    buffer) = VALOF.
026DD0:  0A 24 28 0D 0A 20 20 4C 45 54 20 63 2C 20 64 65    .$(..  LET c, de
026DE0:  20 3D 20 32 32 2C 20 62 75 66 66 65 72 2A 32 0D     = 22, buffer*2.
026DF0:  0A 20 20 73 65 74 66 63 62 28 6E 61 6D 65 2C 20    .  setfcb(name, 
026E00:  62 75 66 66 65 72 29 0D 0A 20 20 62 64 6F 73 62    buffer)..  bdosb
026E10:  28 31 39 2C 20 62 75 66 66 65 72 2A 32 29 0D 0A    (19, buffer*2)..
026E20:  20 20 62 64 6F 73 61 28 40 63 2C 20 40 64 65 29      bdosa(@c, @de)
026E30:  0D 0A 20 20 62 75 66 66 65 72 21 31 37 20 3A 3D    ..  buffer!17 :=
026E40:  20 33 36 0D 0A 20 20 52 45 53 55 4C 54 49 53 20     36..  RESULTIS 
026E50:  63 20 5C 3D 20 32 35 35 0D 0A 24 29 0D 0A 0D 0A    c \= 255..$)....
026E60:  41 4E 44 20 65 6E 64 77 72 69 74 65 28 29 20 3D    AND endwrite() =
026E70:  20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C 45     VALOF..$(..  LE
026E80:  54 20 62 75 66 20 3D 20 77 72 69 74 65 73 74 72    T buf = writestr
026E90:  65 61 6D 0D 0A 20 20 77 72 69 74 65 73 74 72 65    eam..  writestre
026EA0:  61 6D 20 3A 3D 20 76 64 75 73 74 72 65 61 6D 0D    am := vdustream.
026EB0:  0A 20 20 52 45 53 55 4C 54 49 53 20 62 75 66 3E    .  RESULTIS buf>
026EC0:  30 20 2D 3E 20 63 6C 6F 73 65 6F 75 74 28 62 75    0 -> closeout(bu
026ED0:  66 29 2C 20 54 52 55 45 0D 0A 24 29 0D 0A 0D 0A    f), TRUE..$)....
026EE0:  0D 0A 2F 2A 2A 2A 2A 20 50 52 49 4D 49 54 49 56    ../**** PRIMITIV
026EF0:  45 20 49 2F 4F 20 52 4F 55 54 49 4E 45 53 20 2A    E I/O ROUTINES *
026F00:  2A 2A 2A 2F 0D 0A 0D 0A 41 4E 44 20 77 72 76 64    ***/....AND wrvd
026F10:  75 28 63 29 20 3D 20 56 41 4C 4F 46 0D 0A 24 28    u(c) = VALOF..$(
026F20:  0D 0A 20 20 49 46 20 63 3D 6E 65 77 6C 69 6E 65    ..  IF c=newline
026F30:  63 68 20 54 48 45 4E 20 24 28 20 77 72 76 64 75    ch THEN $( wrvdu
026F40:  28 31 33 29 20 3B 20 63 3A 3D 31 30 20 24 29 0D    (13) ; c:=10 $).
026F50:  0A 20 20 62 64 6F 73 62 28 32 2C 63 29 0D 0A 20    .  bdosb(2,c).. 
026F60:  20 52 45 53 55 4C 54 49 53 20 54 52 55 45 0D 0A     RESULTIS TRUE..
026F70:  24 29 0D 0A 0D 0A 41 4E 44 20 70 72 63 68 28 63    $)....AND prch(c
026F80:  29 20 3D 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20    ) = VALOF..$(.. 
026F90:  20 49 46 20 63 3D 6E 65 77 6C 69 6E 65 63 68 20     IF c=newlinech 
026FA0:  54 48 45 4E 20 24 28 20 70 72 63 68 28 31 33 29    THEN $( prch(13)
026FB0:  20 3B 20 63 3A 3D 31 30 20 24 29 0D 0A 20 20 62     ; c:=10 $)..  b
026FC0:  64 6F 73 62 28 35 2C 63 29 0D 0A 20 20 52 45 53    dosb(5,c)..  RES
026FD0:  55 4C 54 49 53 20 54 52 55 45 0D 0A 24 29 0D 0A    ULTIS TRUE..$)..
026FE0:  0D 0A 41 4E 44 20 70 72 62 75 73 79 28 29 20 3D    ..AND prbusy() =
026FF0:  20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C 45     VALOF..$(..  LE
027000:  54 20 61 3D 3F 0D 0A 20 20 62 69 6F 73 28 31 35    T a=?..  bios(15
027010:  2C 40 61 29 0D 0A 20 20 52 45 53 55 4C 54 49 53    ,@a)..  RESULTIS
027020:  20 61 20 3D 20 30 20 20 20 20 20 20 20 20 2F 2F     a = 0        //
027030:  20 54 52 55 45 20 69 66 20 70 72 69 6E 74 65 72     TRUE if printer
027040:  20 62 75 73 79 0D 0A 24 29 0D 0A 0D 0A 41 4E 44     busy..$)....AND
027050:  20 72 64 74 65 73 74 28 29 20 3D 20 56 41 4C 4F     rdtest() = VALO
027060:  46 0D 0A 24 28 20 20 0D 0A 20 20 4C 45 54 20 63    F..$(  ..  LET c
027070:  2C 64 65 20 3D 20 31 31 2C 3F 0D 0A 20 20 62 64    ,de = 11,?..  bd
027080:  6F 73 61 28 40 63 2C 40 64 65 29 0D 0A 20 20 52    osa(@c,@de)..  R
027090:  45 53 55 4C 54 49 53 20 63 3D 31 0D 0A 24 29 0D    ESULTIS c=1..$).
0270A0:  0A 0D 0A 41 4E 44 20 66 6C 75 73 68 28 29 20 42    ...AND flush() B
0270B0:  45 20 57 48 49 4C 45 20 72 64 74 65 73 74 28 29    E WHILE rdtest()
0270C0:  20 72 64 76 64 75 28 29 0D 0A 0D 0A 41 4E 44 20     rdvdu()....AND 
0270D0:  72 65 61 64 63 68 28 62 75 66 66 65 72 29 20 3D    readch(buffer) =
0270E0:  20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C 45     VALOF..$(..  LE
0270F0:  54 20 63 68 61 72 61 63 74 65 72 2C 20 66 61 69    T character, fai
027100:  6C 20 3D 20 30 2C 20 46 41 4C 53 45 0D 0A 20 20    l = 0, FALSE..  
027110:  49 46 20 62 75 66 66 65 72 21 31 37 20 3D 20 31    IF buffer!17 = 1
027120:  36 34 20 54 48 45 4E 0D 0A 20 20 24 28 0D 0A 20    64 THEN..  $(.. 
027130:  20 20 20 66 61 69 6C 20 3A 3D 20 4E 4F 54 20 72       fail := NOT r
027140:  65 61 64 73 65 63 74 6F 72 28 62 75 66 66 65 72    eadsector(buffer
027150:  29 20 20 20 20 2F 2F 20 72 65 61 64 20 61 20 73    )    // read a s
027160:  65 63 74 6F 72 0D 0A 20 20 20 20 62 75 66 66 65    ector..    buffe
027170:  72 21 31 37 20 3A 3D 20 33 36 0D 0A 20 20 24 29    r!17 := 36..  $)
027180:  0D 0A 20 20 63 68 61 72 61 63 74 65 72 20 3A 3D    ..  character :=
027190:  20 62 75 66 66 65 72 25 28 62 75 66 66 65 72 21     buffer%(buffer!
0271A0:  31 37 29 0D 0A 20 20 62 75 66 66 65 72 21 31 37    17)..  buffer!17
0271B0:  20 3A 3D 20 62 75 66 66 65 72 21 31 37 20 2B 20     := buffer!17 + 
0271C0:  31 0D 0A 20 20 52 45 53 55 4C 54 49 53 20 63 68    1..  RESULTIS ch
0271D0:  61 72 61 63 74 65 72 20 4C 4F 47 4F 52 20 66 61    aracter LOGOR fa
0271E0:  69 6C 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 63 6C    il..$)....AND cl
0271F0:  6F 73 65 69 6E 28 62 75 66 66 65 72 29 20 3D 20    osein(buffer) = 
027200:  54 52 55 45 0D 0A 0D 0A 41 4E 44 20 72 65 77 69    TRUE....AND rewi
027210:  6E 64 69 6E 28 62 75 66 66 65 72 29 20 42 45 20    ndin(buffer) BE 
027220:  24 28 20 62 75 66 66 65 72 25 33 32 20 3A 3D 20    $( buffer%32 := 
027230:  30 20 20 3B 20 20 62 75 66 66 65 72 21 31 37 20    0  ;  buffer!17 
027240:  3A 3D 20 31 36 34 20 24 29 0D 0A 0D 0A 41 4E 44    := 164 $)....AND
027250:  20 77 72 69 74 65 63 68 28 63 68 61 72 2C 20 62     writech(char, b
027260:  75 66 66 65 72 29 20 3D 20 56 41 4C 4F 46 0D 0A    uffer) = VALOF..
027270:  24 28 0D 0A 20 20 4C 45 54 20 73 75 63 63 65 73    $(..  LET succes
027280:  73 20 3D 20 54 52 55 45 0D 0A 20 20 49 46 20 63    s = TRUE..  IF c
027290:  68 61 72 3D 6E 65 77 6C 69 6E 65 63 68 20 54 48    har=newlinech TH
0272A0:  45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 55 4E    EN..  $(..    UN
0272B0:  4C 45 53 53 20 77 72 69 74 65 63 68 28 31 33 2C    LESS writech(13,
0272C0:  62 75 66 66 65 72 29 20 52 45 53 55 4C 54 49 53    buffer) RESULTIS
0272D0:  20 46 41 4C 53 45 0D 0A 20 20 20 20 63 68 61 72     FALSE..    char
0272E0:  3A 3D 31 30 0D 0A 20 20 24 29 0D 0A 20 20 49 46    :=10..  $)..  IF
0272F0:  20 62 75 66 66 65 72 21 31 37 20 3D 20 31 36 34     buffer!17 = 164
027300:  20 54 48 45 4E 0D 0A 20 20 24 28 0D 0A 20 20 20     THEN..  $(..   
027310:  20 73 75 63 63 65 73 73 20 3A 3D 20 77 72 69 74     success := writ
027320:  65 73 65 63 74 6F 72 28 62 75 66 66 65 72 29 0D    esector(buffer).
027330:  0A 20 20 20 20 62 75 66 66 65 72 21 31 37 20 3A    .    buffer!17 :
027340:  3D 20 33 36 0D 0A 20 20 24 29 0D 0A 20 20 62 75    = 36..  $)..  bu
027350:  66 66 65 72 25 28 62 75 66 66 65 72 21 31 37 29    ffer%(buffer!17)
027360:  20 3A 3D 20 63 68 61 72 0D 0A 20 20 62 75 66 66     := char..  buff
027370:  65 72 21 31 37 20 3A 3D 20 62 75 66 66 65 72 21    er!17 := buffer!
027380:  31 37 20 2B 20 31 0D 0A 20 20 52 45 53 55 4C 54    17 + 1..  RESULT
027390:  49 53 20 73 75 63 63 65 73 73 0D 0A 24 29 0D 0A    IS success..$)..
0273A0:  0D 0A 41 4E 44 20 63 6C 6F 73 65 6F 75 74 28 62    ..AND closeout(b
0273B0:  75 66 66 65 72 29 20 3D 20 56 41 4C 4F 46 0D 0A    uffer) = VALOF..
0273C0:  24 28 0D 0A 20 20 4C 45 54 20 63 2C 20 64 65 20    $(..  LET c, de 
0273D0:  3D 20 31 36 2C 62 75 66 66 65 72 2A 32 0D 0A 20    = 16,buffer*2.. 
0273E0:  20 55 4E 4C 45 53 53 20 62 75 66 66 65 72 21 31     UNLESS buffer!1
0273F0:  37 20 3D 20 31 36 34 20 54 48 45 4E 20 77 72 69    7 = 164 THEN wri
027400:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
027410:  21 00 00 00 02 09 50 E5 21 00 C1 02 00 00 00 02    !.....P.!.......
027420:  21 00 C2 02 00 00 00 02 21 00 C3 02 00 00 00 02    !.......!.......
027430:  21 00 C4 02 00 00 00 02 21 00 C5 02 00 00 00 02    !.......!.......
027440:  21 00 C6 02 00 00 00 02 21 00 C7 02 00 00 00 02    !.......!.......
027450:  21 00 C8 02 00 00 00 02 21 00 C9 02 00 00 00 02    !.......!.......
027460:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
027470:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
027480:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
027490:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0274A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0274B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0274C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0274D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0274E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0274F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
027500:  74 65 63 68 28 32 36 2C 62 75 66 66 65 72 29 0D    tech(26,buffer).
027510:  0A 20 20 55 4E 4C 45 53 53 20 62 75 66 66 65 72    .  UNLESS buffer
027520:  21 31 37 20 3D 20 33 36 20 54 48 45 4E 20 77 72    !17 = 36 THEN wr
027530:  69 74 65 73 65 63 74 6F 72 28 62 75 66 66 65 72    itesector(buffer
027540:  29 0D 0A 20 20 62 64 6F 73 61 28 40 63 2C 40 64    )..  bdosa(@c,@d
027550:  65 29 0D 0A 20 20 52 45 53 55 4C 54 49 53 20 63    e)..  RESULTIS c
027560:  20 5C 3D 20 32 35 35 0D 0A 24 29 0D 0A 0D 0A 41     \= 255..$)....A
027570:  4E 44 20 72 65 61 64 73 65 63 74 6F 72 28 62 75    ND readsector(bu
027580:  66 66 65 72 29 20 3D 20 56 41 4C 4F 46 0D 0A 24    ffer) = VALOF..$
027590:  28 0D 0A 20 20 4C 45 54 20 72 65 73 75 6C 74 2C    (..  LET result,
0275A0:  20 62 75 66 66 20 3D 20 32 30 2C 20 62 75 66 66     buff = 20, buff
0275B0:  65 72 2A 32 0D 0A 20 20 62 64 6F 73 62 28 32 36    er*2..  bdosb(26
0275C0:  2C 20 62 75 66 66 65 72 2A 32 2B 33 36 29 0D 0A    , buffer*2+36)..
0275D0:  20 20 62 64 6F 73 61 28 40 72 65 73 75 6C 74 2C      bdosa(@result,
0275E0:  20 40 62 75 66 66 29 0D 0A 20 20 52 45 53 55 4C     @buff)..  RESUL
0275F0:  54 49 53 20 72 65 73 75 6C 74 20 3D 20 30 20 20    TIS result = 0  
027600:  20 20 20 2F 2F 20 54 52 55 45 20 69 73 20 73 75       // TRUE is su
027610:  63 63 65 73 73 66 75 6C 20 61 6E 64 20 6E 6F 74    ccessful and not
027620:  20 68 61 72 64 20 45 4F 46 0D 0A 24 29 0D 0A 0D     hard EOF..$)...
027630:  0A 41 4E 44 20 77 72 69 74 65 73 65 63 74 6F 72    .AND writesector
027640:  28 62 75 66 66 65 72 29 20 3D 20 56 41 4C 4F 46    (buffer) = VALOF
027650:  0D 0A 24 28 0D 0A 20 20 4C 45 54 20 72 65 73 75    ..$(..  LET resu
027660:  6C 74 2C 20 62 75 66 66 20 3D 20 32 31 2C 20 62    lt, buff = 21, b
027670:  75 66 66 65 72 2A 32 0D 0A 20 20 62 64 6F 73 62    uffer*2..  bdosb
027680:  28 32 36 2C 20 62 75 66 66 65 72 2A 32 2B 33 36    (26, buffer*2+36
027690:  29 0D 0A 20 20 62 64 6F 73 61 28 40 72 65 73 75    )..  bdosa(@resu
0276A0:  6C 74 2C 20 40 62 75 66 66 29 0D 0A 20 20 52 45    lt, @buff)..  RE
0276B0:  53 55 4C 54 49 53 20 72 65 73 75 6C 74 20 3D 20    SULTIS result = 
0276C0:  30 20 20 20 20 20 20 2F 2F 20 54 52 55 45 20 69    0      // TRUE i
0276D0:  66 20 77 72 69 74 74 65 6E 20 73 75 63 63 65 73    f written succes
0276E0:  73 66 75 6C 6C 79 0D 0A 24 29 0D 0A 0D 0A 41 4E    sfully..$)....AN
0276F0:  44 20 73 65 74 66 63 62 28 6E 61 6D 65 2C 20 62    D setfcb(name, b
027700:  75 66 66 65 72 29 20 42 45 0D 0A 24 28 0D 0A 20    uffer) BE..$(.. 
027710:  20 4C 45 54 20 6E 70 74 72 2C 20 66 70 74 72 2C     LET nptr, fptr,
027720:  20 63 2C 20 64 72 76 66 6C 61 67 20 3D 20 31 2C     c, drvflag = 1,
027730:  20 31 2C 20 30 2C 20 54 52 55 45 0D 0A 20 20 46     1, 0, TRUE..  F
027740:  4F 52 20 69 20 3D 20 31 20 54 4F 20 31 31 20 62    OR i = 1 TO 11 b
027750:  75 66 66 65 72 25 69 20 3A 3D 20 27 20 27 0D 0A    uffer%i := ' '..
027760:  20 20 62 75 66 66 65 72 25 30 20 3A 3D 20 30 0D      buffer%0 := 0.
027770:  0A 20 20 57 48 49 4C 45 20 6E 70 74 72 20 3C 3D    .  WHILE nptr <=
027780:  20 6E 61 6D 65 25 30 20 44 4F 0D 0A 20 20 24 28     name%0 DO..  $(
027790:  0D 0A 20 20 20 20 63 20 3A 3D 20 75 70 70 65 72    ..    c := upper
0277A0:  63 61 73 65 28 6E 61 6D 65 25 6E 70 74 72 29 0D    case(name%nptr).
0277B0:  0A 20 20 20 20 6E 70 74 72 20 3A 3D 20 6E 70 74    .    nptr := npt
0277C0:  72 20 2B 20 31 0D 0A 20 20 20 20 49 46 20 66 70    r + 1..    IF fp
0277D0:  74 72 20 3D 20 32 20 4C 4F 47 41 4E 44 20 64 72    tr = 2 LOGAND dr
0277E0:  76 66 6C 61 67 20 4C 4F 47 41 4E 44 20 63 20 3D    vflag LOGAND c =
0277F0:  20 27 3A 27 20 54 48 45 4E 0D 0A 20 20 20 20 24     ':' THEN..    $
027800:  28 0D 0A 20 20 20 20 20 20 62 75 66 66 65 72 25    (..      buffer%
027810:  30 20 3A 3D 20 62 75 66 66 65 72 25 31 20 2D 20    0 := buffer%1 - 
027820:  27 41 27 20 2B 20 31 0D 0A 20 20 20 20 20 20 66    'A' + 1..      f
027830:  70 74 72 2C 20 64 72 76 66 6C 61 67 20 3A 3D 20    ptr, drvflag := 
027840:  31 2C 20 46 41 4C 53 45 0D 0A 20 20 20 20 20 20    1, FALSE..      
027850:  4C 4F 4F 50 0D 0A 20 20 20 20 24 29 0D 0A 20 20    LOOP..    $)..  
027860:  20 20 49 46 20 63 20 3D 20 27 2E 27 20 54 48 45      IF c = '.' THE
027870:  4E 20 24 28 20 66 70 74 72 20 3A 3D 20 39 20 3B    N $( fptr := 9 ;
027880:  20 42 52 45 41 4B 20 24 29 0D 0A 20 20 20 20 49     BREAK $)..    I
027890:  46 20 66 70 74 72 20 3D 20 39 20 4C 4F 47 4F 52    F fptr = 9 LOGOR
0278A0:  20 63 20 3D 20 27 20 27 20 54 48 45 4E 20 42 52     c = ' ' THEN BR
0278B0:  45 41 4B 0D 0A 20 20 20 20 62 75 66 66 65 72 25    EAK..    buffer%
0278C0:  66 70 74 72 20 3A 3D 20 63 0D 0A 20 20 20 20 66    fptr := c..    f
0278D0:  70 74 72 20 3A 3D 20 66 70 74 72 20 2B 20 31 0D    ptr := fptr + 1.
0278E0:  0A 20 20 24 29 0D 0A 20 20 49 46 20 63 20 3D 20    .  $)..  IF c = 
0278F0:  27 2E 27 20 54 48 45 4E 0D 0A 20 20 20 20 57 48    '.' THEN..    WH
027900:  49 4C 45 20 6E 70 74 72 20 3C 3D 20 6E 61 6D 65    ILE nptr <= name
027910:  25 30 20 44 4F 0D 0A 20 20 20 20 24 28 0D 0A 20    %0 DO..    $(.. 
027920:  20 20 20 20 20 63 20 3A 3D 20 75 70 70 65 72 63         c := upperc
027930:  61 73 65 28 6E 61 6D 65 25 6E 70 74 72 29 0D 0A    ase(name%nptr)..
027940:  20 20 20 20 20 20 6E 70 74 72 20 3A 3D 20 6E 70          nptr := np
027950:  74 72 20 2B 20 31 0D 0A 20 20 20 20 20 20 49 46    tr + 1..      IF
027960:  20 63 20 3D 20 27 20 27 20 4C 4F 47 4F 52 20 66     c = ' ' LOGOR f
027970:  70 74 72 20 3D 20 31 32 20 54 48 45 4E 20 42 52    ptr = 12 THEN BR
027980:  45 41 4B 0D 0A 20 20 20 20 20 20 62 75 66 66 65    EAK..      buffe
027990:  72 25 66 70 74 72 20 3A 3D 20 63 0D 0A 20 20 20    r%fptr := c..   
0279A0:  20 20 20 66 70 74 72 20 3A 3D 20 66 70 74 72 20       fptr := fptr 
0279B0:  2B 20 31 0D 0A 20 20 20 20 24 29 0D 0A 20 20 62    + 1..    $)..  b
0279C0:  75 66 66 65 72 25 31 32 2C 20 62 75 66 66 65 72    uffer%12, buffer
0279D0:  25 33 32 20 3A 3D 20 30 2C 20 30 0D 0A 24 29 0D    %32 := 0, 0..$).
0279E0:  0A 0D 0A 0D 0A 2F 2A 2A 2A 2A 20 4D 49 53 43 45    ...../**** MISCE
0279F0:  4C 4C 41 4E 45 4F 55 53 20 52 4F 55 54 49 4E 45    LLANEOUS ROUTINE
027A00:  53 20 2A 2A 2A 2A 2F 0D 0A 0D 0A 41 4E 44 20 62    S ****/....AND b
027A10:  64 6F 73 61 28 63 2C 64 65 29 20 42 45 0D 0A 24    dosa(c,de) BE..$
027A20:  28 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 32 31 2C    (..  INLINE 221,
027A30:  31 30 32 2C 31 32 37 20 20 20 20 20 20 2F 2F 20    102,127      // 
027A40:  6C 64 20 68 2C 28 69 78 2B 31 32 37 29 0D 0A 20    ld h,(ix+127).. 
027A50:  20 49 4E 4C 49 4E 45 20 32 32 31 2C 31 31 30 2C     INLINE 221,110,
027A60:  31 32 36 20 20 20 20 20 20 2F 2F 20 6C 64 20 6C    126      // ld l
027A70:  2C 28 69 78 2B 31 32 36 29 0D 0A 20 20 49 4E 4C    ,(ix+126)..  INL
027A80:  49 4E 45 20 34 31 20 20 20 20 20 20 20 20 20 20    INE 41          
027A90:  20 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68         // add hl,h
027AA0:  6C 0D 0A 20 20 49 4E 4C 49 4E 45 20 39 34 20 20    l..  INLINE 94  
027AB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20                 // 
027AC0:  6C 64 20 65 2C 28 68 6C 29 0D 0A 20 20 49 4E 4C    ld e,(hl)..  INL
027AD0:  49 4E 45 20 33 35 20 20 20 20 20 20 20 20 20 20    INE 35          
027AE0:  20 20 20 20 20 2F 2F 20 69 6E 63 20 68 6C 0D 0A         // inc hl..
027AF0:  20 20 49 4E 4C 49 4E 45 20 38 36 20 20 20 20 20      INLINE 86     
027B00:  20 20 20 20 20 20 20 20 20 20 2F 2F 20 6C 64 20              // ld 
027B10:  64 2C 28 68 6C 29 0D 0A 20 20 49 4E 4C 49 4E 45    d,(hl)..  INLINE
027B20:  20 32 32 31 2C 31 30 32 2C 31 32 35 20 20 20 20     221,102,125    
027B30:  20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 32      // ld h,(ix+12
027B40:  35 29 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 32 31    5)..  INLINE 221
027B50:  2C 31 31 30 2C 31 32 34 20 20 20 20 20 20 2F 2F    ,110,124      //
027B60:  20 6C 64 20 6C 2C 28 69 78 2B 31 32 34 29 0D 0A     ld l,(ix+124)..
027B70:  20 20 49 4E 4C 49 4E 45 20 34 31 20 20 20 20 20      INLINE 41     
027B80:  20 20 20 20 20 20 20 20 20 20 2F 2F 20 61 64 64              // add
027B90:  20 68 6C 2C 68 6C 0D 0A 20 20 49 4E 4C 49 4E 45     hl,hl..  INLINE
027BA0:  20 37 38 20 20 20 20 20 20 20 20 20 20 20 20 20     78             
027BB0:  20 20 2F 2F 20 6C 64 20 63 2C 28 68 6C 29 0D 0A      // ld c,(hl)..
027BC0:  20 20 49 4E 4C 49 4E 45 20 32 32 31 2C 32 32 39      INLINE 221,229
027BD0:  20 20 20 20 20 20 20 20 20 20 2F 2F 20 70 75 73              // pus
027BE0:  68 20 69 78 0D 0A 20 20 49 4E 4C 49 4E 45 20 32    h ix..  INLINE 2
027BF0:  30 35 2C 35 2C 30 20 20 20 20 20 20 20 20 20 20    05,5,0          
027C00:  2F 2F 20 63 61 6C 6C 20 62 64 6F 73 0D 0A 20 20    // call bdos..  
027C10:  49 4E 4C 49 4E 45 20 32 32 31 2C 32 32 35 20 20    INLINE 221,225  
027C20:  20 20 20 20 20 20 20 20 2F 2F 20 70 6F 70 20 69            // pop i
027C30:  78 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 33 35 20    x..  INLINE 235 
027C40:  20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20                 // 
027C50:  65 78 20 64 65 2C 68 6C 0D 0A 20 20 49 4E 4C 49    ex de,hl..  INLI
027C60:  4E 45 20 32 32 31 2C 31 30 32 2C 31 32 37 20 20    NE 221,102,127  
027C70:  20 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B        // ld h,(ix+
027C80:  31 32 37 29 0D 0A 20 20 49 4E 4C 49 4E 45 20 32    127)..  INLINE 2
027C90:  32 31 2C 31 31 30 2C 31 32 36 20 20 20 20 20 20    21,110,126      
027CA0:  2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 32 36 29    // ld l,(ix+126)
027CB0:  0D 0A 20 20 49 4E 4C 49 4E 45 20 34 31 20 20 20    ..  INLINE 41   
027CC0:  20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 61                // a
027CD0:  64 64 20 68 6C 2C 68 6C 0D 0A 20 20 49 4E 4C 49    dd hl,hl..  INLI
027CE0:  4E 45 20 31 31 35 20 20 20 20 20 20 20 20 20 20    NE 115          
027CF0:  20 20 20 20 2F 2F 20 6C 64 20 28 68 6C 29 2C 65        // ld (hl),e
027D00:  0D 0A 20 20 49 4E 4C 49 4E 45 20 33 35 20 20 20    ..  INLINE 35   
027D10:  20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 69                // i
027D20:  6E 63 20 68 6C 0D 0A 20 20 49 4E 4C 49 4E 45 20    nc hl..  INLINE 
027D30:  31 31 34 20 20 20 20 20 20 20 20 20 20 20 20 20    114             
027D40:  20 2F 2F 20 6C 64 20 28 68 6C 29 2C 64 0D 0A 20     // ld (hl),d.. 
027D50:  20 49 4E 4C 49 4E 45 20 32 32 31 2C 31 30 32 2C     INLINE 221,102,
027D60:  31 32 35 20 20 20 20 20 20 2F 2F 20 6C 64 20 68    125      // ld h
027D70:  2C 28 69 78 2B 31 32 35 29 0D 0A 20 20 49 4E 4C    ,(ix+125)..  INL
027D80:  49 4E 45 20 32 32 31 2C 31 31 30 2C 31 32 34 20    INE 221,110,124 
027D90:  20 20 20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78         // ld l,(ix
027DA0:  2B 31 32 34 29 0D 0A 20 20 49 4E 4C 49 4E 45 20    +124)..  INLINE 
027DB0:  34 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20    41              
027DC0:  20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 0D 0A 20     // add hl,hl.. 
027DD0:  20 49 4E 4C 49 4E 45 20 31 31 39 20 20 20 20 20     INLINE 119     
027DE0:  20 20 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 28             // ld (
027DF0:  68 6C 29 2C 61 0D 0A 20 20 49 4E 4C 49 4E 45 20    hl),a..  INLINE 
027E00:  33 35 20 20 20 20 20 20 20 20 20 20 20 20 20 20    35              
027E10:  20 2F 2F 20 69 6E 63 20 68 6C 0D 0A 20 20 49 4E     // inc hl..  IN
027E20:  4C 49 4E 45 20 35 34 2C 30 20 20 20 20 20 20 20    LINE 54,0       
027E30:  20 20 20 20 20 20 2F 2F 20 6C 64 20 28 68 6C 29          // ld (hl)
027E40:  2C 30 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 62 64    ,0..$)....AND bd
027E50:  6F 73 62 28 63 2C 64 65 29 20 42 45 0D 0A 24 28    osb(c,de) BE..$(
027E60:  0D 0A 20 20 49 4E 4C 49 4E 45 20 32 32 31 2C 38    ..  INLINE 221,8
027E70:  36 2C 31 32 37 20 20 20 20 20 20 20 2F 2F 20 6C    6,127       // l
027E80:  64 20 64 2C 28 69 78 2B 31 32 37 29 0D 0A 20 20    d d,(ix+127)..  
027E90:  49 4E 4C 49 4E 45 20 32 32 31 2C 39 34 2C 31 32    INLINE 221,94,12
027EA0:  36 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 65 2C    6       // ld e,
027EB0:  28 69 78 2B 31 32 36 29 0D 0A 20 20 49 4E 4C 49    (ix+126)..  INLI
027EC0:  4E 45 20 32 32 31 2C 37 38 2C 31 32 34 20 20 20    NE 221,78,124   
027ED0:  20 20 20 20 2F 2F 20 6C 64 20 63 2C 28 69 78 2B        // ld c,(ix+
027EE0:  31 32 34 29 0D 0A 20 20 49 4E 4C 49 4E 45 20 32    124)..  INLINE 2
027EF0:  32 31 2C 32 32 39 20 20 20 20 20 20 20 20 20 20    21,229          
027F00:  2F 2F 20 70 75 73 68 20 69 78 0D 0A 20 20 49 4E    // push ix..  IN
027F10:  4C 49 4E 45 20 32 30 35 2C 35 2C 30 20 20 20 20    LINE 205,5,0    
027F20:  20 20 20 20 20 20 2F 2F 20 63 61 6C 6C 20 62 64          // call bd
027F30:  6F 73 0D 0A 20 20 49 4E 4C 49 4E 45 20 32 32 31    os..  INLINE 221
027F40:  2C 32 32 35 20 20 20 20 20 20 20 20 20 20 2F 2F    ,225          //
027F50:  20 70 6F 70 20 69 78 0D 0A 24 29 0D 0A 0D 0A 41     pop ix..$)....A
027F60:  4E 44 20 62 69 6F 73 28 6E 2C 61 29 20 42 45 0D    ND bios(n,a) BE.
027F70:  0A 24 28 0D 0A 20 20 4C 45 54 20 73 61 76 65 3D    .$(..  LET save=
027F80:  56 45 43 20 31 0D 0A 20 20 73 61 76 65 25 30 20    VEC 1..  save%0 
027F90:  3A 3D 20 30 25 23 78 38 30 20 3B 20 73 61 76 65    := 0%#x80 ; save
027FA0:  25 31 20 3A 3D 20 30 25 23 78 38 31 20 3B 20 73    %1 := 0%#x81 ; s
027FB0:  61 76 65 25 32 20 3A 3D 20 30 25 23 78 38 32 0D    ave%2 := 0%#x82.
027FC0:  0A 20 20 30 25 23 78 38 30 20 3A 3D 20 23 78 43    .  0%#x80 := #xC
027FD0:  33 0D 0A 20 20 30 25 23 78 38 31 20 3A 3D 20 30    3..  0%#x81 := 0
027FE0:  25 28 30 25 31 20 2B 20 32 35 36 2A 30 25 32 20    %(0%1 + 256*0%2 
027FF0:  2B 20 28 6E 2D 31 29 2A 33 20 2B 31 29 0D 0A 20    + (n-1)*3 +1).. 
028000:  20 30 25 23 78 38 32 20 3A 3D 20 30 25 28 30 25     0%#x82 := 0%(0%
028010:  31 20 2B 20 32 35 36 2A 30 25 32 20 2B 20 28 6E    1 + 256*0%2 + (n
028020:  2D 31 29 2A 33 20 2B 32 29 0D 0A 20 20 49 4E 4C    -1)*3 +2)..  INL
028030:  49 4E 45 20 32 32 31 2C 32 32 39 20 20 20 20 20    INE 221,229     
028040:  20 20 20 20 20 2F 2F 20 70 75 73 68 20 69 78 0D         // push ix.
028050:  0A 20 20 49 4E 4C 49 4E 45 20 23 78 43 44 2C 23    .  INLINE #xCD,#
028060:  78 38 30 2C 23 78 30 30 20 20 20 2F 2F 20 63 61    x80,#x00   // ca
028070:  6C 6C 20 62 69 6F 73 20 72 6F 75 74 69 6E 65 0D    ll bios routine.
028080:  0A 20 20 49 4E 4C 49 4E 45 20 32 32 31 2C 32 32    .  INLINE 221,22
028090:  35 20 20 20 20 20 20 20 20 20 20 2F 2F 20 70 6F    5          // po
0280A0:  70 20 69 78 0D 0A 20 20 49 4E 4C 49 4E 45 20 32    p ix..  INLINE 2
0280B0:  32 31 2C 31 30 32 2C 31 32 37 20 20 20 20 20 20    21,102,127      
0280C0:  2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 32 37 29    // ld h,(ix+127)
0280D0:  0D 0A 20 20 49 4E 4C 49 4E 45 20 32 32 31 2C 31    ..  INLINE 221,1
0280E0:  31 30 2C 31 32 36 20 20 20 20 20 20 2F 2F 20 6C    10,126      // l
0280F0:  64 20 6C 2C 28 69 78 2B 31 32 36 29 0D 0A 20 20    d l,(ix+126)..  
028100:  49 4E 4C 49 4E 45 20 34 31 20 20 20 20 20 20 20    INLINE 41       
028110:  20 20 20 20 20 20 20 20 2F 2F 20 61 64 64 20 68            // add h
028120:  6C 2C 68 6C 0D 0A 20 20 49 4E 4C 49 4E 45 20 31    l,hl..  INLINE 1
028130:  31 39 20 20 20 20 20 20 20 20 20 20 20 20 20 20    19              
028140:  2F 2F 20 6C 64 20 28 68 6C 29 2C 61 0D 0A 20 20    // ld (hl),a..  
028150:  49 4E 4C 49 4E 45 20 33 35 20 20 20 20 20 20 20    INLINE 35       
028160:  20 20 20 20 20 20 20 20 2F 2F 20 69 6E 63 20 68            // inc h
028170:  6C 0D 0A 20 20 49 4E 4C 49 4E 45 20 35 34 2C 30    l..  INLINE 54,0
028180:  20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20                 // 
028190:  6C 64 20 28 68 6C 29 2C 30 0D 0A 20 20 30 25 23    ld (hl),0..  0%#
0281A0:  78 38 30 20 3A 3D 20 73 61 76 65 25 30 20 3B 20    x80 := save%0 ; 
0281B0:  30 25 23 78 38 31 20 3A 3D 20 73 61 76 65 25 31    0%#x81 := save%1
0281C0:  20 3B 20 30 25 23 78 38 32 20 3A 3D 20 73 61 76     ; 0%#x82 := sav
0281D0:  65 25 32 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 73    e%2..$)....AND s
0281E0:  65 6C 65 63 74 69 6E 70 75 74 28 73 74 72 65 61    electinput(strea
0281F0:  6D 29 20 20 42 45 20 72 65 61 64 73 74 72 65 61    m)  BE readstrea
028200:  6D 20 20 3A 3D 20 73 74 72 65 61 6D 0D 0A 41 4E    m  := stream..AN
028210:  44 20 73 65 6C 65 63 74 6F 75 74 70 75 74 28 73    D selectoutput(s
028220:  74 72 65 61 6D 29 20 42 45 20 77 72 69 74 65 73    tream) BE writes
028230:  74 72 65 61 6D 20 3A 3D 20 73 74 72 65 61 6D 0D    tream := stream.
028240:  0A 41 4E 44 20 69 6E 70 75 74 28 29 20 20 3D 20    .AND input()  = 
028250:  72 65 61 64 73 74 72 65 61 6D 0D 0A 41 4E 44 20    readstream..AND 
028260:  6F 75 74 70 75 74 28 29 20 3D 20 77 72 69 74 65    output() = write
028270:  73 74 72 65 61 6D 0D 0A 41 4E 44 20 75 70 70 65    stream..AND uppe
028280:  72 63 61 73 65 28 63 68 61 72 29 20 3D 20 27 61    rcase(char) = 'a
028290:  27 3C 3D 63 68 61 72 3C 3D 27 7A 27 20 2D 3E 20    '<=char<='z' -> 
0282A0:  63 68 61 72 20 2D 20 33 32 2C 20 63 68 61 72 0D    char - 32, char.
0282B0:  0A 41 4E 44 20 63 61 70 69 74 61 6C 63 68 28 63    .AND capitalch(c
0282C0:  29 20 3D 20 75 70 70 65 72 63 61 73 65 28 63 29    ) = uppercase(c)
0282D0:  0D 0A 41 4E 44 20 64 65 63 76 61 6C 28 64 69 67    ..AND decval(dig
0282E0:  69 74 29 20 3D 20 27 30 27 3C 3D 64 69 67 69 74    it) = '0'<=digit
0282F0:  3C 3D 27 39 27 20 20 2D 3E 20 64 69 67 69 74 2D    <='9'  -> digit-
028300:  27 30 27 2C 20 64 69 67 69 74 2D 27 41 27 2B 31    '0', digit-'A'+1
028310:  30 0D 0A 0D 0A 1A 43 50 2F 4D 20 6C 69 62 72 61    0.....CP/M libra
028320:  72 79 20 68 65 61 64 65 72 2C 20 6C 61 73 74 20    ry header, last 
028330:  6D 6F 64 69 66 69 65 64 20 32 31 2F 30 33 2F 31    modified 21/03/1
028340:  39 38 37 0D 0A 0D 0A 0D 0A 4D 41 4E 49 46 45 53    987......MANIFES
028350:  54 20 24 28 20 62 79 74 65 73 70 65 72 77 6F 72    T $( bytesperwor
028360:  64 20 3D 20 32 20 3B 20 62 69 74 73 70 65 72 77    d = 2 ; bitsperw
028370:  6F 72 64 20 3D 20 31 36 0D 0A 20 20 20 20 20 20    ord = 16..      
028380:  20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20                 // 
028390:  6C 64 20 28 68 6C 29 2C 30 0D 0A 20 20 30 25 23    ld (hl),0..  0%#
0283A0:  78 38 30 20 3A 3D 20 73 61 76 65 25 30 20 3B 20    x80 := save%0 ; 
0283B0:  30 25 23 78 38 31 20 3A 3D 20 73 61 76 65 25 31    0%#x81 := save%1
0283C0:  20 3B 20 30 25 23 78 38 32 20 3A 3D 20 73 61 76     ; 0%#x82 := sav
0283D0:  65 25 32 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 73    e%2..$)....AND s
0283E0:  65 6C 65 63 74 69 6E 70 75 74 28 73 74 72 65 61    electinput(strea
0283F0:  6D 29 20 20 42 45 20 72 65 61 64 73 74 72 65 61    m)  BE readstrea
028400:  6D 20 20 3A 3D 20 73 74 72 65 61 6D 0D 0A 41 4E    m  := stream..AN
028410:  44 20 73 65 6C 65 63 74 6F 75 74 70 75 74 28 73    D selectoutput(s
028420:  74 72 65 61 6D 29 20 42 45 20 77 72 69 74 65 73    tream) BE writes
028430:  74 72 65 61 6D 20 3A 3D 20 73 74 72 65 61 6D 0D    tream := stream.
028440:  0A 41 4E 44 20 69 6E 70 75 74 28 29 20 20 3D 20    .AND input()  = 
028450:  72 65 61 64 73 74 72 65 61 6D 0D 0A 41 4E 44 20    readstream..AND 
028460:  6F 75 74 70 75 74 28 29 20 3D 20 77 72 69 74 65    output() = write
028470:  73 74 72 65 61 6D 0D 0A 41 4E 44 20 75 70 70 65    stream..AND uppe
028480:  72 63 61 73 65 28 63 68 61 72 29 20 3D 20 27 61    rcase(char) = 'a
028490:  27 3C 3D 63 68 61 72 3C 3D 27 7A 27 20 2D 3E 20    '<=char<='z' -> 
0284A0:  63 68 61 72 20 2D 20 33 32 2C 20 63 68 61 72 0D    char - 32, char.
0284B0:  0A 41 4E 44 20 63 61 70 69 74 61 6C 63 68 28 63    .AND capitalch(c
0284C0:  29 20 3D 20 75 70 70 65 72 63 61 73 65 28 63 29    ) = uppercase(c)
0284D0:  0D 0A 41 4E 44 20 64 65 63 76 61 6C 28 64 69 67    ..AND decval(dig
0284E0:  69 74 29 20 3D 20 27 30 27 3C 3D 64 69 67 69 74    it) = '0'<=digit
0284F0:  3C 3D 27 39 27 20 20 2D 3E 20 64 69 67 69 74 2D    <='9'  -> digit-
028500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0285A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0285B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0285C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0285D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0285E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0285F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0286A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0286B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0286C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0286D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0286E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0286F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028700:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
028710:  22 00 00 00 02 09 50 E5 22 00 C1 02 00 00 00 02    ".....P.".......
028720:  22 00 C2 02 00 00 00 02 22 00 C3 02 00 00 00 02    ".......".......
028730:  22 00 C4 02 00 00 00 02 22 00 C5 02 00 00 00 02    ".......".......
028740:  22 00 C6 02 00 00 00 02 22 00 C7 02 00 00 00 02    ".......".......
028750:  22 00 C8 02 00 00 00 02 22 00 C9 02 00 00 00 02    ".......".......
028760:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
028770:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
028780:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
028790:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
028800:  2F 2F 20 43 4C 49 42 48 44 52 31 20 20 20 61 64    // CLIBHDR1   ad
028810:  64 69 74 69 6F 6E 61 6C 20 43 50 2F 4D 20 6C 69    ditional CP/M li
028820:  62 72 61 72 79 20 68 65 61 64 65 72 2C 20 6C 61    brary header, la
028830:  73 74 20 6D 6F 64 69 66 69 65 64 20 31 39 2F 31    st modified 19/1
028840:  31 2F 31 39 38 36 0D 0A 0D 0A 0D 0A 53 54 41 54    1/1986......STAT
028850:  49 43 20 24 28 20 72 61 6E 64 6F 6D 73 65 65 64    IC $( randomseed
028860:  20 3D 20 30 20 24 29 0D 0A 0D 0A 4C 45 54 20 72     = 0 $)....LET r
028870:  61 6E 64 6F 6D 28 29 20 3D 20 56 41 4C 4F 46 0D    andom() = VALOF.
028880:  0A 24 28 0D 0A 20 20 72 61 6E 64 6F 6D 73 65 65    .$(..  randomsee
028890:  64 20 3A 3D 20 72 61 6E 64 6F 6D 73 65 65 64 20    d := randomseed 
0288A0:  2A 20 23 78 41 33 45 44 20 2B 20 23 78 31 44 33    * #xA3ED + #x1D3
0288B0:  31 0D 0A 20 20 52 45 53 55 4C 54 49 53 20 72 61    1..  RESULTIS ra
0288C0:  6E 64 6F 6D 73 65 65 64 0D 0A 24 29 0D 0A 0D 0A    ndomseed..$)....
0288D0:  41 4E 44 20 73 74 6F 70 28 63 6F 64 65 29 20 42    AND stop(code) B
0288E0:  45 0D 0A 24 28 0D 0A 20 20 62 64 6F 73 62 28 31    E..$(..  bdosb(1
0288F0:  30 38 2C 63 6F 64 65 29 0D 0A 20 20 66 69 6E 69    08,code)..  fini
028900:  73 68 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 74 61    sh..$)....AND ta
028910:  69 6C 28 73 74 72 69 6E 67 29 20 42 45 0D 0A 24    il(string) BE..$
028920:  28 0D 0A 20 20 73 74 72 69 6E 67 25 30 20 3A 3D    (..  string%0 :=
028930:  20 30 25 23 78 38 30 0D 0A 20 20 46 4F 52 20 61     0%#x80..  FOR a
028940:  20 3D 20 31 20 54 4F 20 73 74 72 69 6E 67 25 30     = 1 TO string%0
028950:  20 44 4F 20 73 74 72 69 6E 67 25 61 20 3A 3D 20     DO string%a := 
028960:  30 25 28 23 78 38 30 2B 61 29 0D 0A 24 29 0D 0A    0%(#x80+a)..$)..
028970:  0D 0A 41 4E 44 20 64 65 6C 65 74 65 28 6E 61 6D    ..AND delete(nam
028980:  65 2C 62 75 66 66 65 72 29 20 3D 20 56 41 4C 4F    e,buffer) = VALO
028990:  46 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 63 2C 20    F..$(..  LET c, 
0289A0:  64 65 20 3D 20 31 39 2C 20 62 75 66 66 65 72 2A    de = 19, buffer*
0289B0:  32 0D 0A 20 20 73 65 74 66 63 62 28 6E 61 6D 65    2..  setfcb(name
0289C0:  2C 62 75 66 66 65 72 29 0D 0A 20 20 62 64 6F 73    ,buffer)..  bdos
0289D0:  61 28 40 63 2C 40 64 65 29 0D 0A 20 20 52 45 53    a(@c,@de)..  RES
0289E0:  55 4C 54 49 53 20 63 5C 3D 32 35 35 0D 0A 24 29    ULTIS c\=255..$)
0289F0:  0D 0A 0D 0A 41 4E 44 20 72 65 6E 61 6D 65 28 6E    ....AND rename(n
028A00:  61 6D 65 31 2C 6E 61 6D 65 32 2C 62 75 66 66 65    ame1,name2,buffe
028A10:  72 29 20 3D 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A    r) = VALOF..$(..
028A20:  20 20 4C 45 54 20 63 2C 20 64 65 20 3D 20 32 33      LET c, de = 23
028A30:  2C 20 62 75 66 66 65 72 2A 32 0D 0A 20 20 73 65    , buffer*2..  se
028A40:  74 66 63 62 28 6E 61 6D 65 31 2C 62 75 66 66 65    tfcb(name1,buffe
028A50:  72 29 0D 0A 20 20 73 65 74 66 63 62 28 6E 61 6D    r)..  setfcb(nam
028A60:  65 32 2C 62 75 66 66 65 72 2B 31 36 29 0D 0A 20    e2,buffer+16).. 
028A70:  20 62 79 74 65 6D 6F 76 65 28 62 75 66 66 65 72     bytemove(buffer
028A80:  2A 32 2B 33 32 2C 62 75 66 66 65 72 2A 32 2B 31    *2+32,buffer*2+1
028A90:  36 2C 31 36 29 0D 0A 20 20 62 64 6F 73 61 28 40    6,16)..  bdosa(@
028AA0:  63 2C 40 64 65 29 0D 0A 20 20 52 45 53 55 4C 54    c,@de)..  RESULT
028AB0:  49 53 20 63 5C 3D 32 35 35 0D 0A 24 29 0D 0A 0D    IS c\=255..$)...
028AC0:  0A 41 4E 44 20 77 72 69 74 65 74 28 73 2C 6E 29    .AND writet(s,n)
028AD0:  20 42 45 0D 0A 24 28 20 20 0D 0A 20 20 77 72 69     BE..$(  ..  wri
028AE0:  74 65 73 28 73 29 0D 0A 20 20 46 4F 52 20 69 20    tes(s)..  FOR i 
028AF0:  3D 20 31 20 74 6F 20 6E 2D 73 25 30 20 44 4F 20    = 1 to n-s%0 DO 
028B00:  77 72 63 68 28 27 20 27 29 0D 0A 24 29 0D 0A 0D    wrch(' ')..$)...
028B10:  0A 41 4E 44 20 77 72 69 74 65 75 28 6E 2C 64 29    .AND writeu(n,d)
028B20:  20 42 45 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 6D     BE..$(..  LET m
028B30:  20 3D 20 28 6E 3E 3E 31 29 2F 35 0D 0A 20 20 55     = (n>>1)/5..  U
028B40:  4E 4C 45 53 53 20 6D 3D 30 20 44 4F 0D 0A 20 20    NLESS m=0 DO..  
028B50:  24 28 0D 0A 20 20 20 20 77 72 69 74 65 64 28 6D    $(..    writed(m
028B60:  2C 64 2D 31 29 0D 0A 20 20 20 20 64 20 3A 3D 20    ,d-1)..    d := 
028B70:  31 0D 0A 20 20 24 29 0D 0A 20 20 77 72 69 74 65    1..  $)..  write
028B80:  64 28 6E 2D 6D 2A 31 30 2C 64 29 0D 0A 24 29 0D    d(n-m*10,d)..$).
028B90:  0A 0D 0A 41 4E 44 20 6E 65 77 70 61 67 65 28 29    ...AND newpage()
028BA0:  20 42 45 20 20 77 72 63 68 28 31 32 29 0D 0A 0D     BE  wrch(12)...
028BB0:  0A 41 4E 44 20 63 6F 6D 70 63 68 28 63 68 31 2C    .AND compch(ch1,
028BC0:  63 68 32 29 20 3D 20 63 61 70 69 74 61 6C 63 68    ch2) = capitalch
028BD0:  28 63 68 31 29 20 2D 20 63 61 70 69 74 61 6C 63    (ch1) - capitalc
028BE0:  68 28 63 68 32 29 0D 0A 0D 0A 41 4E 44 20 63 6F    h(ch2)....AND co
028BF0:  6D 70 73 74 72 69 6E 67 28 73 31 2C 73 32 29 20    mpstring(s1,s2) 
028C00:  3D 20 56 41 4C 4F 46 0D 0A 24 28 0D 0A 20 20 4C    = VALOF..$(..  L
028C10:  45 54 20 6C 65 6E 31 2C 6C 65 6E 32 20 3D 20 73    ET len1,len2 = s
028C20:  31 25 30 2C 20 73 32 25 30 0D 0A 20 20 4C 45 54    1%0, s2%0..  LET
028C30:  20 73 68 6F 72 74 65 72 20 3D 20 6C 65 6E 31 3C     shorter = len1<
028C40:  6C 65 6E 32 20 2D 3E 20 73 31 2C 20 73 32 0D 0A    len2 -> s1, s2..
028C50:  20 20 46 4F 52 20 69 20 3D 20 31 20 74 6F 20 73      FOR i = 1 to s
028C60:  68 6F 72 74 65 72 25 30 20 44 4F 0D 0A 20 20 24    horter%0 DO..  $
028C70:  28 0D 0A 20 20 20 20 4C 45 54 20 72 65 73 20 3D    (..    LET res =
028C80:  20 63 6F 6D 70 63 68 28 73 31 25 69 2C 20 73 32     compch(s1%i, s2
028C90:  25 69 29 0D 0A 20 20 20 20 55 4E 4C 45 53 53 20    %i)..    UNLESS 
028CA0:  72 65 73 3D 30 20 52 45 53 55 4C 54 49 53 20 72    res=0 RESULTIS r
028CB0:  65 73 0D 0A 20 20 24 29 0D 0A 20 20 52 45 53 55    es..  $)..  RESU
028CC0:  4C 54 49 53 20 6C 65 6E 31 3D 6C 65 6E 32 20 2D    LTIS len1=len2 -
028CD0:  3E 20 30 2C 20 73 68 6F 72 74 65 72 3D 73 31 20    > 0, shorter=s1 
028CE0:  2D 3E 20 2D 31 2C 31 0D 0A 24 29 0D 0A 0D 0A 41    -> -1,1..$)....A
028CF0:  4E 44 20 62 79 74 65 6D 6F 76 65 28 73 6F 75 72    ND bytemove(sour
028D00:  63 65 2C 64 65 73 74 2C 6E 75 6D 62 65 72 29 20    ce,dest,number) 
028D10:  42 45 0D 0A 24 28 0D 0A 20 20 69 6E 6C 69 6E 65    BE..$(..  inline
028D20:  20 32 32 31 2C 31 30 32 2C 31 32 33 20 20 20 20     221,102,123    
028D30:  20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 32      // ld h,(ix+12
028D40:  33 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 32 31    3)..  inline 221
028D50:  2C 31 31 30 2C 31 32 32 20 20 20 20 20 20 2F 2F    ,110,122      //
028D60:  20 6C 64 20 6C 2C 28 69 78 2B 31 32 32 29 0D 0A     ld l,(ix+122)..
028D70:  20 20 69 6E 6C 69 6E 65 20 32 32 31 2C 38 36 2C      inline 221,86,
028D80:  31 32 35 20 20 20 20 20 20 20 2F 2F 20 6C 64 20    125       // ld 
028D90:  64 2C 28 69 78 2B 31 32 35 29 0D 0A 20 20 69 6E    d,(ix+125)..  in
028DA0:  6C 69 6E 65 20 32 32 31 2C 39 34 2C 31 32 34 20    line 221,94,124 
028DB0:  20 20 20 20 20 20 2F 2F 20 6C 64 20 65 2C 28 69          // ld e,(i
028DC0:  78 2B 31 32 34 29 0D 0A 20 20 69 6E 6C 69 6E 65    x+124)..  inline
028DD0:  20 32 32 31 2C 37 30 2C 31 32 37 20 20 20 20 20     221,70,127     
028DE0:  20 20 2F 2F 20 6C 64 20 62 2C 28 69 78 2B 31 32      // ld b,(ix+12
028DF0:  37 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 32 31    7)..  inline 221
028E00:  2C 37 38 2C 31 32 36 20 20 20 20 20 20 20 2F 2F    ,78,126       //
028E10:  20 6C 64 20 63 2C 28 69 78 2B 31 32 36 29 0D 0A     ld c,(ix+126)..
028E20:  20 20 69 6E 6C 69 6E 65 20 31 36 37 20 20 20 20      inline 167    
028E30:  20 20 20 20 20 20 20 20 20 20 2F 2F 20 61 6E 64              // and
028E40:  20 61 0D 0A 20 20 69 6E 6C 69 6E 65 20 32 33 37     a..  inline 237
028E50:  2C 38 32 20 20 20 20 20 20 20 20 20 20 20 2F 2F    ,82           //
028E60:  20 73 62 63 20 68 6C 2C 64 65 0D 0A 20 20 69 6E     sbc hl,de..  in
028E70:  6C 69 6E 65 20 32 35 20 20 20 20 20 20 20 20 20    line 25         
028E80:  20 20 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C          // add hl,
028E90:  64 65 0D 0A 20 20 69 6E 6C 69 6E 65 20 35 36 2C    de..  inline 56,
028EA0:  34 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F    4             //
028EB0:  20 6A 72 20 63 2C 2B 34 0D 0A 20 20 69 6E 6C 69     jr c,+4..  inli
028EC0:  6E 65 20 32 33 37 2C 31 37 36 20 20 20 20 20 20    ne 237,176      
028ED0:  20 20 20 20 2F 2F 20 6C 64 69 72 0D 0A 20 20 69        // ldir..  i
028EE0:  6E 6C 69 6E 65 20 32 34 2C 38 20 20 20 20 20 20    nline 24,8      
028EF0:  20 20 20 20 20 20 20 2F 2F 20 6A 72 20 2B 38 0D           // jr +8.
028F00:  0A 20 20 69 6E 6C 69 6E 65 20 31 31 20 20 20 20    .  inline 11    
028F10:  20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 64 65               // de
028F20:  63 20 62 63 0D 0A 20 20 69 6E 6C 69 6E 65 20 39    c bc..  inline 9
028F30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
028F40:  2F 2F 20 61 64 64 20 68 6C 2C 62 63 0D 0A 20 20    // add hl,bc..  
028F50:  69 6E 6C 69 6E 65 20 32 33 35 20 20 20 20 20 20    inline 235      
028F60:  20 20 20 20 20 20 20 20 2F 2F 20 65 78 20 64 65            // ex de
028F70:  2C 68 6C 0D 0A 20 20 69 6E 6C 69 6E 65 20 39 20    ,hl..  inline 9 
028F80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F                   /
028F90:  2F 20 61 64 64 20 68 6C 2C 62 63 0D 0A 20 20 69    / add hl,bc..  i
028FA0:  6E 6C 69 6E 65 20 32 33 35 20 20 20 20 20 20 20    nline 235       
028FB0:  20 20 20 20 20 20 20 2F 2F 20 65 78 20 64 65 2C           // ex de,
028FC0:  68 6C 0D 0A 20 20 69 6E 6C 69 6E 65 20 33 20 20    hl..  inline 3  
028FD0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F                  //
028FE0:  20 69 6E 63 20 62 63 0D 0A 20 20 69 6E 6C 69 6E     inc bc..  inlin
028FF0:  65 20 32 33 37 2C 31 38 34 20 20 20 20 20 20 20    e 237,184       
029000:  20 20 20 2F 2F 20 6C 64 64 72 0D 0A 24 29 0D 0A       // lddr..$)..
029010:  0D 0A 41 4E 44 20 63 61 6C 6C 28 61 64 64 72 2C    ..AND call(addr,
029020:  61 66 2C 62 63 2C 64 65 2C 68 6C 2C 69 78 29 20    af,bc,de,hl,ix) 
029030:  42 45 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 73 61    BE..$(..  LET sa
029040:  76 65 33 20 3D 20 56 45 43 20 31 0D 0A 20 20 62    ve3 = VEC 1..  b
029050:  79 74 65 6D 6F 76 65 28 23 78 39 30 2C 20 73 61    ytemove(#x90, sa
029060:  76 65 33 2A 32 2C 20 33 29 0D 0A 20 20 30 25 23    ve3*2, 3)..  0%#
029070:  78 39 30 20 3A 3D 20 23 78 43 33 0D 0A 20 20 30    x90 := #xC3..  0
029080:  25 23 78 39 31 20 3A 3D 20 61 64 64 72 20 26 20    %#x91 := addr & 
029090:  23 78 46 46 0D 0A 20 20 30 25 23 78 39 32 20 3A    #xFF..  0%#x92 :
0290A0:  3D 20 28 20 61 64 64 72 20 26 20 23 78 46 46 30    = ( addr & #xFF0
0290B0:  30 20 29 20 3E 3E 20 38 0D 0A 20 20 69 6E 6C 69    0 ) >> 8..  inli
0290C0:  6E 65 20 23 78 44 44 2C 23 78 45 35 20 20 20 20    ne #xDD,#xE5    
0290D0:  20 20 20 20 20 20 20 20 2F 2F 20 70 75 73 68 20            // push 
0290E0:  69 78 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 44    ix..  inline #xD
0290F0:  44 2C 23 78 36 36 2C 23 78 37 37 20 20 20 20 20    D,#x66,#x77     
029100:  20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31 31      // ld h,(ix+11
029110:  39 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 44    9)..  inline #xD
029120:  44 2C 23 78 36 45 2C 23 78 37 36 20 20 20 20 20    D,#x6E,#x76     
029130:  20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31 31      // ld l,(ix+11
029140:  38 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 32    8)..  inline #x2
029150:  39 2C 23 78 35 45 2C 23 78 35 36 2C 23 78 32 33    9,#x5E,#x56,#x23
029160:  20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 3A 6C      // add hl,hl:l
029170:  64 20 65 2C 28 68 6C 29 3A 69 6E 63 20 68 6C 3A    d e,(hl):inc hl:
029180:  6C 64 20 64 2C 28 68 6C 29 0D 0A 20 20 69 6E 6C    ld d,(hl)..  inl
029190:  69 6E 65 20 23 78 44 35 20 20 20 20 20 20 20 20    ine #xD5        
0291A0:  20 20 20 20 20 20 20 20 20 2F 2F 20 70 75 73 68             // push
0291B0:  20 64 65 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78     de..  inline #x
0291C0:  44 44 2C 23 78 36 36 2C 23 78 37 39 20 20 20 20    DD,#x66,#x79    
0291D0:  20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31       // ld h,(ix+1
0291E0:  32 31 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78    21)..  inline #x
0291F0:  44 44 2C 23 78 36 45 2C 23 78 37 38 20 20 20 20    DD,#x6E,#x78    
029200:  20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31       // ld l,(ix+1
029210:  32 30 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78    20)..  inline #x
029220:  32 39 2C 23 78 34 45 2C 23 78 32 33 2C 23 78 34    29,#x4E,#x23,#x4
029230:  36 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 3A    6  // add hl,hl:
029240:  6C 64 20 63 2C 28 68 6C 29 3A 69 6E 63 20 68 6C    ld c,(hl):inc hl
029250:  3A 6C 64 20 62 2C 28 68 6C 29 0D 0A 20 20 69 6E    :ld b,(hl)..  in
029260:  6C 69 6E 65 20 23 78 44 44 2C 23 78 36 36 2C 23    line #xDD,#x66,#
029270:  78 37 46 20 20 20 20 20 20 20 2F 2F 20 6C 64 20    x7F       // ld 
029280:  68 2C 28 69 78 2B 31 32 37 29 0D 0A 20 20 69 6E    h,(ix+127)..  in
029290:  6C 69 6E 65 20 23 78 44 44 2C 23 78 36 45 2C 23    line #xDD,#x6E,#
0292A0:  78 37 45 20 20 20 20 20 20 20 2F 2F 20 6C 64 20    x7E       // ld 
0292B0:  6C 2C 28 69 78 2B 31 32 36 29 0D 0A 20 20 69 6E    l,(ix+126)..  in
0292C0:  6C 69 6E 65 20 23 78 32 39 2C 23 78 35 45 2C 23    line #x29,#x5E,#
0292D0:  78 32 33 2C 23 78 35 36 20 20 2F 2F 20 61 64 64    x23,#x56  // add
0292E0:  20 68 6C 2C 68 6C 3A 6C 64 20 65 2C 28 68 6C 29     hl,hl:ld e,(hl)
0292F0:  3A 69 6E 63 20 68 6C 3A 6C 64 20 64 2C 28 68 6C    :inc hl:ld d,(hl
029300:  29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 44 35    )..  inline #xD5
029310:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
029320:  20 2F 2F 20 70 75 73 68 20 64 65 0D 0A 20 20 69     // push de..  i
029330:  6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 36 2C    nline #xDD,#x66,
029340:  23 78 37 44 20 20 20 20 20 20 20 2F 2F 20 6C 64    #x7D       // ld
029350:  20 68 2C 28 69 78 2B 31 32 35 29 0D 0A 20 20 69     h,(ix+125)..  i
029360:  6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 45 2C    nline #xDD,#x6E,
029370:  23 78 37 43 20 20 20 20 20 20 20 2F 2F 20 6C 64    #x7C       // ld
029380:  20 6C 2C 28 69 78 2B 31 32 34 29 0D 0A 20 20 69     l,(ix+124)..  i
029390:  6E 6C 69 6E 65 20 23 78 32 39 2C 23 78 35 45 2C    nline #x29,#x5E,
0293A0:  23 78 32 33 2C 23 78 35 36 20 20 2F 2F 20 61 64    #x23,#x56  // ad
0293B0:  64 20 68 6C 2C 68 6C 3A 6C 64 20 65 2C 28 68 6C    d hl,hl:ld e,(hl
0293C0:  29 3A 69 6E 63 20 68 6C 3A 6C 64 20 64 2C 28 68    ):inc hl:ld d,(h
0293D0:  6C 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 44    l)..  inline #xD
0293E0:  35 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    5               
0293F0:  20 20 2F 2F 20 70 75 73 68 20 64 65 0D 0A 20 20      // push de..  
029400:  69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 36    inline #xDD,#x66
029410:  2C 23 78 37 42 20 20 20 20 20 20 20 2F 2F 20 6C    ,#x7B       // l
029420:  64 20 68 2C 28 69 78 2B 31 32 33 29 0D 0A 20 20    d h,(ix+123)..  
029430:  69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 45    inline #xDD,#x6E
029440:  2C 23 78 37 41 20 20 20 20 20 20 20 2F 2F 20 6C    ,#x7A       // l
029450:  64 20 6C 2C 28 69 78 2B 31 32 32 29 0D 0A 20 20    d l,(ix+122)..  
029460:  69 6E 6C 69 6E 65 20 23 78 32 39 2C 23 78 35 45    inline #x29,#x5E
029470:  2C 23 78 32 33 2C 23 78 35 36 20 20 2F 2F 20 61    ,#x23,#x56  // a
029480:  64 64 20 68 6C 2C 68 6C 3A 6C 64 20 65 2C 28 68    dd hl,hl:ld e,(h
029490:  6C 29 3A 69 6E 63 20 68 6C 3A 6C 64 20 64 2C 28    l):inc hl:ld d,(
0294A0:  68 6C 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78    hl)..  inline #x
0294B0:  45 31 2C 23 78 44 44 2C 23 78 45 31 2C 23 78 46    E1,#xDD,#xE1,#xF
0294C0:  31 20 20 2F 2F 20 70 6F 70 20 68 6C 3A 70 6F 70    1  // pop hl:pop
0294D0:  20 69 78 3A 70 6F 70 20 61 66 0D 0A 20 20 69 6E     ix:pop af..  in
0294E0:  6C 69 6E 65 20 23 78 43 44 2C 23 78 39 30 2C 23    line #xCD,#x90,#
0294F0:  78 30 30 20 20 20 20 20 20 20 2F 2F 20 63 61 6C    x00       // cal
029500:  6C 20 26 39 30 0D 0A 20 20 69 6E 6C 69 6E 65 20    l &90..  inline 
029510:  23 78 44 44 2C 23 78 32 32 2C 23 78 39 30 2C 23    #xDD,#x22,#x90,#
029520:  78 30 30 20 20 2F 2F 20 6C 64 20 28 26 39 30 29    x00  // ld (&90)
029530:  2C 69 78 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78    ,ix..  inline #x
029540:  44 44 2C 23 78 45 31 20 20 20 20 20 20 20 20 20    DD,#xE1         
029550:  20 20 20 2F 2F 20 70 6F 70 20 69 78 0D 0A 20 20       // pop ix..  
029560:  69 6E 6C 69 6E 65 20 23 78 46 35 2C 23 78 45 35    inline #xF5,#xE5
029570:  20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 70                // p
029580:  75 73 68 20 61 66 3A 70 75 73 68 20 68 6C 0D 0A    ush af:push hl..
029590:  20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78      inline #xDD,#x
0295A0:  36 36 2C 23 78 37 42 20 20 20 20 20 20 20 2F 2F    66,#x7B       //
0295B0:  20 6C 64 20 68 2C 28 69 78 2B 31 32 33 29 0D 0A     ld h,(ix+123)..
0295C0:  20 20 69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78      inline #xDD,#x
0295D0:  36 45 2C 23 78 37 41 20 20 20 20 20 20 20 2F 2F    6E,#x7A       //
0295E0:  20 6C 64 20 6C 2C 28 69 78 2B 31 32 32 29 0D 0A     ld l,(ix+122)..
0295F0:  20 20 69 6E 6C 69 6E 65 20 23 78 32 39 2C 23 78      inline #x29,#x
029600:  37 33 2C 23 78 32 33 2C 23 78 37 32 20 20 2F 2F    73,#x23,#x72  //
029610:  20 61 64 64 20 68 6C 2C 68 6C 3A 6C 64 20 28 68     add hl,hl:ld (h
029620:  6C 29 2C 65 3A 69 6E 63 20 68 6C 3A 6C 64 20 28    l),e:inc hl:ld (
029630:  68 6C 29 2C 64 0D 0A 20 20 69 6E 6C 69 6E 65 20    hl),d..  inline 
029640:  23 78 44 44 2C 23 78 36 36 2C 23 78 37 44 20 20    #xDD,#x66,#x7D  
029650:  20 20 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78         // ld h,(ix
029660:  2B 31 32 35 29 0D 0A 20 20 69 6E 6C 69 6E 65 20    +125)..  inline 
029670:  23 78 44 44 2C 23 78 36 45 2C 23 78 37 43 20 20    #xDD,#x6E,#x7C  
029680:  20 20 20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78         // ld l,(ix
029690:  2B 31 32 34 29 0D 0A 20 20 69 6E 6C 69 6E 65 20    +124)..  inline 
0296A0:  23 78 32 39 2C 23 78 44 31 20 20 20 20 20 20 20    #x29,#xD1       
0296B0:  20 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68         // add hl,h
0296C0:  6C 3A 70 6F 70 20 64 65 0D 0A 20 20 69 6E 6C 69    l:pop de..  inli
0296D0:  6E 65 20 23 78 37 33 2C 23 78 32 33 2C 23 78 37    ne #x73,#x23,#x7
0296E0:  32 20 20 20 20 20 20 20 2F 2F 20 6C 64 20 28 68    2       // ld (h
0296F0:  6C 29 2C 65 3A 69 6E 63 20 68 6C 3A 6C 64 20 28    l),e:inc hl:ld (
029700:  68 6C 29 2C 64 0D 0A 20 20 69 6E 6C 69 6E 65 20    hl),d..  inline 
029710:  23 78 44 44 2C 23 78 36 36 2C 23 78 37 46 20 20    #xDD,#x66,#x7F  
029720:  20 20 20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78         // ld h,(ix
029730:  2B 31 32 37 29 0D 0A 20 20 69 6E 6C 69 6E 65 20    +127)..  inline 
029740:  23 78 44 44 2C 23 78 36 45 2C 23 78 37 45 20 20    #xDD,#x6E,#x7E  
029750:  20 20 20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78         // ld l,(ix
029760:  2B 31 32 36 29 0D 0A 20 20 69 6E 6C 69 6E 65 20    +126)..  inline 
029770:  23 78 32 39 20 20 20 20 20 20 20 20 20 20 20 20    #x29            
029780:  20 20 20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68         // add hl,h
029790:  6C 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78 45 44    l..  inline #xED
0297A0:  2C 23 78 35 42 2C 23 78 39 30 2C 23 78 30 30 20    ,#x5B,#x90,#x00 
0297B0:  20 2F 2F 20 6C 64 20 64 65 2C 28 26 39 30 29 0D     // ld de,(&90).
0297C0:  0A 20 20 69 6E 6C 69 6E 65 20 23 78 37 33 2C 23    .  inline #x73,#
0297D0:  78 32 33 2C 23 78 37 32 20 20 20 20 20 20 20 2F    x23,#x72       /
0297E0:  2F 20 6C 64 20 28 68 6C 29 2C 65 3A 69 6E 63 20    / ld (hl),e:inc 
0297F0:  68 6C 3A 6C 64 20 28 68 6C 29 2C 64 0D 0A 20 20    hl:ld (hl),d..  
029800:  69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 36    inline #xDD,#x66
029810:  2C 23 78 37 39 20 20 20 20 20 20 20 2F 2F 20 6C    ,#x79       // l
029820:  64 20 68 2C 28 69 78 2B 31 32 31 29 0D 0A 20 20    d h,(ix+121)..  
029830:  69 6E 6C 69 6E 65 20 23 78 44 44 2C 23 78 36 45    inline #xDD,#x6E
029840:  2C 23 78 37 38 20 20 20 20 20 20 20 2F 2F 20 6C    ,#x78       // l
029850:  64 20 6C 2C 28 69 78 2B 31 32 30 29 0D 0A 20 20    d l,(ix+120)..  
029860:  69 6E 6C 69 6E 65 20 23 78 32 39 2C 23 78 37 31    inline #x29,#x71
029870:  2C 23 78 32 33 2C 23 78 37 30 20 20 2F 2F 20 61    ,#x23,#x70  // a
029880:  64 64 20 68 6C 2C 68 6C 3A 6C 64 20 28 68 6C 29    dd hl,hl:ld (hl)
029890:  2C 63 3A 69 6E 63 20 68 6C 3A 6C 64 20 28 68 6C    ,c:inc hl:ld (hl
0298A0:  29 2C 62 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78    ),b..  inline #x
0298B0:  44 44 2C 23 78 36 36 2C 23 78 37 37 20 20 20 20    DD,#x66,#x77    
0298C0:  20 20 20 2F 2F 20 6C 64 20 68 2C 28 69 78 2B 31       // ld h,(ix+1
0298D0:  31 39 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78    19)..  inline #x
0298E0:  44 44 2C 23 78 36 45 2C 23 78 37 36 20 20 20 20    DD,#x6E,#x76    
0298F0:  20 20 20 2F 2F 20 6C 64 20 6C 2C 28 69 78 2B 31       // ld l,(ix+1
029900:  31 38 29 0D 0A 20 20 69 6E 6C 69 6E 65 20 23 78    18)..  inline #x
029910:  32 39 2C 23 78 44 31 20 20 20 20 20 20 20 20 20    29,#xD1         
029920:  20 20 20 2F 2F 20 61 64 64 20 68 6C 2C 68 6C 3A       // add hl,hl:
029930:  70 6F 70 20 64 65 0D 0A 20 20 69 6E 6C 69 6E 65    pop de..  inline
029940:  20 23 78 37 33 2C 23 78 32 33 2C 23 78 37 32 20     #x73,#x23,#x72 
029950:  20 20 20 20 20 20 2F 2F 20 6C 64 20 28 68 6C 29          // ld (hl)
029960:  2C 65 3A 69 6E 63 20 68 6C 3A 6C 64 20 28 68 6C    ,e:inc hl:ld (hl
029970:  29 2C 64 0D 0A 20 20 62 79 74 65 6D 6F 76 65 28    ),d..  bytemove(
029980:  73 61 76 65 33 2A 32 2C 20 23 78 39 30 2C 20 33    save3*2, #x90, 3
029990:  29 0D 0A 24 29 0D 0A 0D 0A 41 4E 44 20 66 69 72    )..$)....AND fir
0299A0:  6D 77 61 72 65 28 61 64 64 72 2C 61 66 2C 62 63    mware(addr,af,bc
0299B0:  2C 64 65 2C 68 6C 2C 69 78 29 20 42 45 0D 0A 24    ,de,hl,ix) BE..$
0299C0:  28 0D 0A 20 20 4C 45 54 20 73 61 76 65 36 20 3D    (..  LET save6 =
0299D0:  20 56 45 43 20 33 0D 0A 20 20 62 79 74 65 6D 6F     VEC 3..  bytemo
0299E0:  76 65 28 23 78 38 30 2C 20 73 61 76 65 36 2A 32    ve(#x80, save6*2
0299F0:  2C 20 36 29 0D 0A 20 20 30 25 23 78 38 30 20 3A    , 6)..  0%#x80 :
029A00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
029A10:  23 00 00 00 02 09 50 E5 23 00 C1 02 00 00 00 02    #.....P.#.......
029A20:  23 00 C2 02 00 00 00 02 23 00 C3 02 00 00 00 02    #.......#.......
029A30:  23 00 C4 02 00 00 00 02 23 00 C5 02 00 00 00 02    #.......#.......
029A40:  23 00 C6 02 00 00 00 02 23 00 C7 02 00 00 00 02    #.......#.......
029A50:  23 00 C8 02 00 00 00 02 23 00 C9 02 00 00 00 02    #.......#.......
029A60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029A70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029A80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029A90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029AA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029AB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029AC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029AD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029AE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029AF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029B00:  3D 20 23 78 43 44 0D 0A 20 20 30 25 23 78 38 31    = #xCD..  0%#x81
029B10:  20 3A 3D 20 30 25 28 30 25 31 20 2B 20 32 35 36     := 0%(0%1 + 256
029B20:  2A 30 25 32 20 2B 20 38 37 20 2B 31 29 0D 0A 20    *0%2 + 87 +1).. 
029B30:  20 30 25 23 78 38 32 20 3A 3D 20 30 25 28 30 25     0%#x82 := 0%(0%
029B40:  31 20 2B 20 32 35 36 2A 30 25 32 20 2B 20 38 37    1 + 256*0%2 + 87
029B50:  20 2B 32 29 0D 0A 20 20 30 25 23 78 38 33 20 3A     +2)..  0%#x83 :
029B60:  3D 20 61 64 64 72 20 26 20 23 78 46 46 0D 0A 20    = addr & #xFF.. 
029B70:  20 30 25 23 78 38 34 20 3A 3D 20 28 20 61 64 64     0%#x84 := ( add
029B80:  72 20 26 20 23 78 46 46 30 30 20 29 20 3E 3E 20    r & #xFF00 ) >> 
029B90:  38 0D 0A 20 20 30 25 23 78 38 35 20 3A 3D 20 23    8..  0%#x85 := #
029BA0:  78 43 39 0D 0A 20 20 63 61 6C 6C 20 28 23 78 38    xC9..  call (#x8
029BB0:  30 2C 61 66 2C 62 63 2C 64 65 2C 68 6C 2C 69 78    0,af,bc,de,hl,ix
029BC0:  29 0D 0A 20 20 62 79 74 65 6D 6F 76 65 28 73 61    )..  bytemove(sa
029BD0:  76 65 36 2A 32 2C 20 23 78 38 30 2C 20 36 29 0D    ve6*2, #x80, 6).
029BE0:  0A 24 29 0D 0A 0D 0A 41 4E 44 20 76 65 72 73 69    .$)....AND versi
029BF0:  6F 6E 28 29 20 3D 20 56 41 4C 4F 46 0D 0A 24 28    on() = VALOF..$(
029C00:  0D 0A 20 20 4C 45 54 20 63 2C 64 65 3D 31 32 2C    ..  LET c,de=12,
029C10:  3F 0D 0A 20 20 4C 45 54 20 61 66 2C 62 63 2C 68    ?..  LET af,bc,h
029C20:  6C 2C 69 78 20 3D 20 3F 2C 3F 2C 3F 2C 3F 0D 0A    l,ix = ?,?,?,?..
029C30:  20 20 62 64 6F 73 61 28 40 63 2C 40 64 65 29 0D      bdosa(@c,@de).
029C40:  0A 20 20 49 46 20 28 64 65 20 26 20 23 78 46 46    .  IF (de & #xFF
029C50:  29 20 3C 20 23 78 33 30 20 54 48 45 4E 20 52 45    ) < #x30 THEN RE
029C60:  53 55 4C 54 49 53 20 32 0D 0A 20 20 66 69 72 6D    SULTIS 2..  firm
029C70:  77 61 72 65 28 23 78 45 33 2C 40 61 66 2C 40 62    ware(#xE3,@af,@b
029C80:  63 2C 40 64 65 2C 40 68 6C 2C 40 69 78 29 0D 0A    c,@de,@hl,@ix)..
029C90:  20 20 52 45 53 55 4C 54 49 53 20 33 20 2B 20 28      RESULTIS 3 + (
029CA0:  20 61 66 20 3E 3E 20 38 20 29 0D 0A 24 29 0D 0A     af >> 8 )..$)..
029CB0:  0D 0A 41 4E 44 20 67 65 74 62 79 74 65 28 73 2C    ..AND getbyte(s,
029CC0:  69 29 20 3D 20 73 25 69 0D 0A 41 4E 44 20 70 75    i) = s%i..AND pu
029CD0:  74 62 79 74 65 28 73 2C 69 2C 63 29 20 42 45 20    tbyte(s,i,c) BE 
029CE0:  73 25 69 20 3A 3D 20 63 0D 0A 41 4E 44 20 75 6E    s%i := c..AND un
029CF0:  70 61 63 6B 73 74 72 69 6E 67 28 73 2C 76 29 20    packstring(s,v) 
029D00:  42 45 20 46 4F 52 20 69 20 3D 20 30 20 54 4F 20    BE FOR i = 0 TO 
029D10:  73 25 30 20 44 4F 20 76 21 69 20 3A 3D 20 73 25    s%0 DO v!i := s%
029D20:  69 0D 0A 41 4E 44 20 70 61 63 6B 73 74 72 69 6E    i..AND packstrin
029D30:  67 28 76 2C 73 29 20 42 45 0D 0A 24 28 0D 0A 20    g(v,s) BE..$(.. 
029D40:  20 4C 45 54 20 6E 20 3D 20 21 76 20 4C 4F 47 41     LET n = !v LOGA
029D50:  4E 44 20 23 78 46 46 0D 0A 20 20 46 4F 52 20 69    ND #xFF..  FOR i
029D60:  20 3D 20 31 20 54 4F 20 6E 20 44 4F 20 73 25 69     = 1 TO n DO s%i
029D70:  20 3A 3D 20 73 21 69 0D 0A 24 29 0D 0A 1A 46 0D     := s!i..$)...F.
029D80:  72 20 26 20 23 78 46 46 30 30 20 29 20 3E 3E 20    r & #xFF00 ) >> 
029D90:  38 0D 0A 20 20 30 25 23 78 38 35 20 3A 3D 20 23    8..  0%#x85 := #
029DA0:  78 43 39 0D 0A 20 20 63 61 6C 6C 20 28 23 78 38    xC9..  call (#x8
029DB0:  30 2C 61 66 2C 62 63 2C 64 65 2C 68 6C 2C 69 78    0,af,bc,de,hl,ix
029DC0:  29 0D 0A 20 20 62 79 74 65 6D 6F 76 65 28 73 61    )..  bytemove(sa
029DD0:  76 65 36 2A 32 2C 20 23 78 38 30 2C 20 36 29 0D    ve6*2, #x80, 6).
029DE0:  0A 24 29 0D 0A 0D 0A 41 4E 44 20 76 65 72 73 69    .$)....AND versi
029DF0:  6F 6E 28 29 20 3D 20 56 41 4C 4F 46 0D 0A 24 28    on() = VALOF..$(
029E00:  0D 0A 20 20 4C 45 54 20 63 2C 64 65 3D 31 32 2C    ..  LET c,de=12,
029E10:  3F 0D 0A 20 20 4C 45 54 20 61 66 2C 62 63 2C 68    ?..  LET af,bc,h
029E20:  6C 2C 69 78 20 3D 20 3F 2C 3F 2C 3F 2C 3F 0D 0A    l,ix = ?,?,?,?..
029E30:  20 20 62 64 6F 73 61 28 40 63 2C 40 64 65 29 0D      bdosa(@c,@de).
029E40:  0A 20 20 49 46 20 28 64 65 20 26 20 23 78 46 46    .  IF (de & #xFF
029E50:  29 20 3C 20 23 78 33 30 20 54 48 45 4E 20 52 45    ) < #x30 THEN RE
029E60:  53 55 4C 54 49 53 20 32 0D 0A 20 20 66 69 72 6D    SULTIS 2..  firm
029E70:  77 61 72 65 28 23 78 45 33 2C 40 61 66 2C 40 62    ware(#xE3,@af,@b
029E80:  63 2C 40 64 65 2C 40 68 6C 2C 40 69 78 29 0D 0A    c,@de,@hl,@ix)..
029E90:  20 20 52 45 53 55 4C 54 49 53 20 33 20 2B 20 28      RESULTIS 3 + (
029EA0:  20 61 66 20 3E 3E 20 38 20 29 0D 0A 24 29 0D 0A     af >> 8 )..$)..
029EB0:  0D 0A 41 4E 44 20 67 65 74 62 79 74 65 28 73 2C    ..AND getbyte(s,
029EC0:  69 29 20 3D 20 73 25 69 0D 0A 41 4E 44 20 70 75    i) = s%i..AND pu
029ED0:  74 62 79 74 65 28 73 2C 69 2C 63 29 20 42 45 20    tbyte(s,i,c) BE 
029EE0:  73 25 69 20 3A 3D 20 63 0D 0A 41 4E 44 20 75 6E    s%i := c..AND un
029EF0:  70 61 63 6B 73 74 72 69 6E 67 28 73 2C 76 29 20    packstring(s,v) 
029F00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029FA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029FB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029FC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029FD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029FE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029FF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A0A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A0B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A0C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A0D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A0E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A0F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A100:  2F 2A 20 54 68 69 73 20 69 73 20 61 20 63 6F 70    /* This is a cop
02A110:  79 20 72 6F 75 74 69 6E 65 2E 20 4C 61 73 74 20    y routine. Last 
02A120:  6D 6F 64 69 66 69 65 64 20 30 35 2F 31 31 2F 31    modified 05/11/1
02A130:  39 38 36 20 2A 2F 0D 0A 0D 0A 6F 70 74 69 6F 6E    986 */....option
02A140:  20 62 2D 0D 0A 0D 0A 2F 2A 20 49 6E 63 6C 75 64     b-..../* Includ
02A150:  65 20 74 68 65 20 6C 69 62 72 61 72 79 20 2A 2F    e the library */
02A160:  0D 0A 0D 0A 47 45 54 20 22 63 6C 69 62 68 64 72    ....GET "clibhdr
02A170:  22 0D 0A 0D 0A 4C 45 54 20 73 74 61 72 74 28 29    "....LET start()
02A180:  20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 54     BE....$(..  LET
02A190:  20 69 6E 6E 61 6D 65 20 3D 20 56 45 43 20 32 30     inname = VEC 20
02A1A0:  0D 0A 20 20 4C 45 54 20 69 6E 62 75 66 66 20 3D    ..  LET inbuff =
02A1B0:  20 56 45 43 20 38 32 0D 0A 20 20 4C 45 54 20 6F     VEC 82..  LET o
02A1C0:  75 74 6E 61 6D 65 20 3D 20 56 45 43 20 32 30 0D    utname = VEC 20.
02A1D0:  0A 20 20 4C 45 54 20 6F 75 74 62 75 66 66 20 3D    .  LET outbuff =
02A1E0:  20 56 45 43 20 38 32 0D 0A 20 20 4C 45 54 20 63     VEC 82..  LET c
02A1F0:  20 3D 20 30 0D 0A 20 20 77 72 69 74 65 73 28 22     = 0..  writes("
02A200:  49 6E 70 75 74 20 66 69 6C 65 20 6E 61 6D 65 3A    Input file name:
02A210:  20 20 22 29 0D 0A 20 20 72 65 61 64 73 28 69 6E      ")..  reads(in
02A220:  6E 61 6D 65 29 0D 0A 20 20 49 46 20 69 6E 6E 61    name)..  IF inna
02A230:  6D 65 25 30 20 3D 20 30 20 54 48 45 4E 20 46 49    me%0 = 0 THEN FI
02A240:  4E 49 53 48 0D 0A 20 20 6E 65 77 6C 69 6E 65 28    NISH..  newline(
02A250:  29 0D 0A 20 20 77 72 69 74 65 73 28 22 4F 75 74    )..  writes("Out
02A260:  70 75 74 20 66 69 6C 65 20 6E 61 6D 65 3A 20 22    put file name: "
02A270:  29 0D 0A 20 20 72 65 61 64 73 28 6F 75 74 6E 61    )..  reads(outna
02A280:  6D 65 29 0D 0A 20 20 49 46 20 6F 75 74 6E 61 6D    me)..  IF outnam
02A290:  65 25 30 20 3D 20 30 20 54 48 45 4E 20 46 49 4E    e%0 = 0 THEN FIN
02A2A0:  49 53 48 0D 0A 20 20 54 45 53 54 20 66 69 6E 64    ISH..  TEST find
02A2B0:  69 6E 70 75 74 28 69 6E 6E 61 6D 65 2C 20 69 6E    input(inname, in
02A2C0:  62 75 66 66 29 20 54 48 45 4E 0D 0A 20 20 24 28    buff) THEN..  $(
02A2D0:  0D 0A 20 20 20 20 73 65 6C 65 63 74 69 6E 70 75    ..    selectinpu
02A2E0:  74 28 69 6E 62 75 66 66 29 0D 0A 20 20 20 20 54    t(inbuff)..    T
02A2F0:  45 53 54 20 66 69 6E 64 6F 75 74 70 75 74 28 6F    EST findoutput(o
02A300:  75 74 6E 61 6D 65 2C 20 6F 75 74 62 75 66 66 29    utname, outbuff)
02A310:  20 54 48 45 4E 0D 0A 20 20 20 20 24 28 0D 0A 20     THEN..    $(.. 
02A320:  20 20 20 20 20 73 65 6C 65 63 74 6F 75 74 70 75         selectoutpu
02A330:  74 28 6F 75 74 62 75 66 66 29 0D 0A 20 20 20 20    t(outbuff)..    
02A340:  20 20 24 28 0D 0A 20 20 20 20 20 20 20 20 63 20      $(..        c 
02A350:  3A 3D 20 72 64 63 68 28 29 0D 0A 20 20 20 20 20    := rdch()..     
02A360:  20 20 20 55 4E 4C 45 53 53 20 63 3D 65 6E 64 73       UNLESS c=ends
02A370:  74 72 65 61 6D 63 68 20 44 4F 20 77 72 63 68 28    treamch DO wrch(
02A380:  63 29 0D 0A 20 20 20 20 20 20 24 29 0D 0A 20 20    c)..      $)..  
02A390:  20 20 20 20 52 45 50 45 41 54 55 4E 54 49 4C 20        REPEATUNTIL 
02A3A0:  63 20 3D 20 65 6E 64 73 74 72 65 61 6D 63 68 0D    c = endstreamch.
02A3B0:  0A 20 20 20 20 20 20 65 6E 64 77 72 69 74 65 28    .      endwrite(
02A3C0:  29 0D 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45    )..    $)..    E
02A3D0:  4C 53 45 20 77 72 69 74 65 73 28 22 43 61 6E 27    LSE writes("Can'
02A3E0:  74 20 6F 70 65 6E 20 6F 75 74 70 75 74 20 66 69    t open output fi
02A3F0:  6C 65 22 29 0D 0A 20 20 20 20 65 6E 64 72 65 61    le")..    endrea
02A400:  64 28 29 0D 0A 20 20 24 29 0D 0A 20 20 45 4C 53    d()..  $)..  ELS
02A410:  45 20 77 72 69 74 65 73 28 22 43 61 6E 27 74 20    E writes("Can't 
02A420:  6F 70 65 6E 20 69 6E 70 75 74 20 66 69 6C 65 22    open input file"
02A430:  29 0D 0A 24 29 0D 0A 2E 0D 0A 0D 0A 1A 69 6F 6E    )..$)........ion
02A440:  20 62 2D 0D 0A 0D 0A 2F 2A 20 49 6E 63 6C 75 64     b-..../* Includ
02A450:  65 20 74 68 65 20 6C 69 62 72 61 72 79 20 2A 2F    e the library */
02A460:  0D 0A 0D 0A 47 45 54 20 22 63 6C 69 62 68 64 72    ....GET "clibhdr
02A470:  22 0D 0A 0D 0A 4C 45 54 20 73 74 61 72 74 28 29    "....LET start()
02A480:  6D 65 29 0D 0A 20 20 49 46 20 6F 75 74 6E 61 6D    me)..  IF outnam
02A490:  65 25 30 20 3D 20 30 20 54 48 45 4E 20 46 49 4E    e%0 = 0 THEN FIN
02A4A0:  49 53 48 0D 0A 20 20 54 45 53 54 20 66 69 6E 64    ISH..  TEST find
02A4B0:  69 6E 70 75 74 28 69 6E 6E 61 6D 65 2C 20 69 6E    input(inname, in
02A4C0:  62 75 66 66 29 20 54 48 45 4E 0D 0A 20 20 24 28    buff) THEN..  $(
02A4D0:  0D 0A 20 20 20 20 73 65 6C 65 63 74 69 6E 70 75    ..    selectinpu
02A4E0:  74 28 69 6E 62 75 66 66 29 0D 0A 20 20 20 20 54    t(inbuff)..    T
02A4F0:  45 53 54 20 66 69 6E 64 6F 75 74 70 75 74 28 6F    EST findoutput(o
02A500:  2F 2A 20 42 43 50 4C 20 64 65 62 75 67 20 70 72    /* BCPL debug pr
02A510:  6F 63 65 64 75 72 65 20 30 32 2F 31 31 2F 31 39    ocedure 02/11/19
02A520:  38 36 20 2A 2F 0D 0A 0D 0A 2F 2A 20 20 20 20 20    86 */..../*     
02A530:  20 64 65 62 75 67 28 6F 70 74 2C 6E 2C 64 31 2C     debug(opt,n,d1,
02A540:  64 32 2C 64 33 2C 64 34 2C 64 35 2C 64 36 2C 64    d2,d3,d4,d5,d6,d
02A550:  37 2C 64 38 2C 64 39 2C 64 31 30 2C 64 31 31 2C    7,d8,d9,d10,d11,
02A560:  64 31 32 29 0D 0A 0D 0A 20 20 20 20 20 20 20 20    d12)....        
02A570:  54 68 65 20 66 69 72 73 74 20 70 61 72 61 6D 65    The first parame
02A580:  74 65 72 20 73 70 65 63 69 66 69 65 73 20 74 68    ter specifies th
02A590:  65 20 72 65 71 75 69 72 65 64 20 6F 70 74 69 6F    e required optio
02A5A0:  6E 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20    n.....          
02A5B0:  20 20 20 20 20 20 20 30 20 3A 20 70 61 75 73 65           0 : pause
02A5C0:  20 65 78 65 63 75 74 69 6F 6E 2C 20 77 61 69 74     execution, wait
02A5D0:  20 66 6F 72 20 61 20 6B 65 79 20 74 6F 20 62 65     for a key to be
02A5E0:  20 70 72 65 73 73 65 64 0D 0A 20 20 20 20 20 20     pressed..      
02A5F0:  20 20 20 20 20 20 20 20 20 20 20 31 20 3A 20 64               1 : d
02A600:  69 73 70 6C 61 79 20 76 61 6C 75 65 73 20 6F 66    isplay values of
02A610:  20 76 61 72 69 61 62 6C 65 73 20 69 6E 20 64 65     variables in de
02A620:  63 69 6D 61 6C 0D 0A 20 20 20 20 20 20 20 20 20    cimal..         
02A630:  20 20 20 20 20 20 20 2D 31 20 3A 20 64 69 73 70           -1 : disp
02A640:  6C 61 79 20 6E 61 6D 65 73 20 61 6E 64 20 76 61    lay names and va
02A650:  6C 75 65 73 20 6F 66 20 76 61 72 69 61 62 6C 65    lues of variable
02A660:  73 20 69 6E 20 64 65 63 69 6D 61 6C 0D 0A 20 20    s in decimal..  
02A670:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32                   2
02A680:  20 3A 20 64 69 73 70 6C 61 79 20 76 61 6C 75 65     : display value
02A690:  20 6F 66 20 73 74 72 69 6E 67 73 0D 0A 20 20 20     of strings..   
02A6A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 2D 32 20                 -2 
02A6B0:  3A 20 64 69 73 70 6C 61 79 20 6E 61 6D 65 20 61    : display name a
02A6C0:  6E 64 20 76 61 6C 75 65 20 6F 66 20 73 74 72 69    nd value of stri
02A6D0:  6E 67 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20    ngs..           
02A6E0:  20 20 20 20 20 20 33 20 3A 20 64 69 73 70 6C 61          3 : displa
02A6F0:  79 20 63 6F 6E 74 65 6E 74 73 20 6F 66 20 76 65    y contents of ve
02A700:  63 74 6F 72 73 0D 0A 20 20 20 20 20 20 20 20 20    ctors..         
02A710:  20 20 20 20 20 20 20 2D 33 20 3A 20 64 69 73 70           -3 : disp
02A720:  6C 61 79 20 6E 61 6D 65 20 61 6E 64 20 63 6F 6E    lay name and con
02A730:  74 65 6E 74 73 20 6F 66 20 76 65 63 74 6F 72 73    tents of vectors
02A740:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
02A750:  20 20 20 34 20 3A 20 64 69 73 70 6C 61 79 20 76       4 : display v
02A760:  61 6C 75 65 73 20 6F 66 20 76 61 72 69 61 62 6C    alues of variabl
02A770:  65 73 20 69 6E 20 68 65 78 61 64 65 63 69 6D 61    es in hexadecima
02A780:  6C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    l..             
02A790:  20 20 20 2D 34 20 3A 20 64 69 73 70 6C 61 79 20       -4 : display 
02A7A0:  6E 61 6D 65 73 20 61 6E 64 20 76 61 6C 75 65 73    names and values
02A7B0:  20 6F 66 20 76 61 72 69 61 62 6C 65 73 20 69 6E     of variables in
02A7C0:  20 68 65 78 61 64 65 63 69 6D 61 6C 0D 0A 0D 0A     hexadecimal....
02A7D0:  0D 0A 20 20 20 20 20 20 20 20 54 68 65 20 73 65    ..        The se
02A7E0:  63 6F 6E 64 20 70 61 72 61 6D 65 74 65 72 20 28    cond parameter (
02A7F0:  6E 29 20 69 73 20 74 68 65 20 6E 75 6D 62 65 72    n) is the number
02A800:  20 6F 66 20 76 61 72 69 61 62 6C 65 73 20 6F 72     of variables or
02A810:  20 73 74 72 69 6E 67 73 0D 0A 20 20 20 20 20 20     strings..      
02A820:  20 20 6F 72 20 76 65 63 74 6F 72 73 20 74 6F 20      or vectors to 
02A830:  62 65 20 64 69 73 70 6C 61 79 65 64 2E 0D 0A 0D    be displayed....
02A840:  0A 20 20 20 20 20 20 20 20 49 66 20 6F 70 74 20    .        If opt 
02A850:  69 73 20 70 6F 73 69 74 69 76 65 20 74 68 65 72    is positive ther
02A860:  65 20 66 6F 6C 6C 6F 77 73 20 61 20 6C 69 73 74    e follows a list
02A870:  20 6F 66 20 69 64 65 6E 74 69 66 69 65 72 73 2E     of identifiers.
02A880:  0D 0A 20 20 20 20 20 20 20 20 49 66 20 6F 70 74    ..        If opt
02A890:  20 69 73 20 6E 65 67 61 74 69 76 65 20 74 68 65     is negative the
02A8A0:  72 65 20 66 6F 6C 6C 6F 77 73 20 61 20 6C 69 73    re follows a lis
02A8B0:  74 20 6F 66 20 70 61 69 72 73 20 2D 20 61 20 73    t of pairs - a s
02A8C0:  74 72 69 6E 67 0D 0A 20 20 20 20 20 20 20 20 67    tring..        g
02A8D0:  69 76 69 6E 67 20 74 68 65 20 69 64 65 6E 74 69    iving the identi
02A8E0:  66 69 65 72 20 6E 61 6D 65 20 61 6E 64 20 74 68    fier name and th
02A8F0:  65 20 69 64 65 6E 74 69 66 69 65 72 2E 0D 0A 0D    e identifier....
02A900:  0A 20 20 20 20 20 20 20 20 46 6F 72 20 6F 70 74    .        For opt
02A910:  69 6F 6E 73 20 33 20 61 6E 64 20 2D 33 20 65 61    ions 3 and -3 ea
02A920:  63 68 20 69 64 65 6E 74 69 66 69 65 72 20 69 73    ch identifier is
02A930:  20 66 6F 6C 6C 6F 77 65 64 20 62 79 20 74 68 65     followed by the
02A940:  20 6C 65 6E 67 74 68 20 6F 66 0D 0A 20 20 20 20     length of..    
02A950:  20 20 20 20 74 68 65 20 76 65 63 74 6F 72 2C 20        the vector, 
02A960:  74 68 61 74 20 69 73 20 74 68 65 20 6E 75 6D 62    that is the numb
02A970:  65 72 20 6F 66 20 62 79 74 65 73 20 74 6F 20 64    er of bytes to d
02A980:  69 73 70 6C 61 79 2E 0D 0A 0D 0A 20 20 20 20 20    isplay.....     
02A990:  20 20 20 45 78 61 6D 70 6C 65 73 3A 0D 0A 20 20       Examples:..  
02A9A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02A9B0:  20 20 20 20 20 20 64 65 62 75 67 28 31 2C 33 2C          debug(1,3,
02A9C0:  76 61 72 31 2C 76 61 72 32 2C 76 61 72 33 29 0D    var1,var2,var3).
02A9D0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
02A9E0:  20 20 20 20 20 20 20 20 20 64 65 62 75 67 28 2D             debug(-
02A9F0:  31 2C 33 2C 22 76 61 72 31 22 2C 76 61 72 31 2C    1,3,"var1",var1,
02AA00:  22 76 61 72 32 22 2C 76 61 72 32 2C 22 76 61 72    "var2",var2,"var
02AA10:  33 22 2C 76 61 72 33 29 0D 0A 20 20 20 20 20 20    3",var3)..      
02AA20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AA30:  20 20 64 65 62 75 67 28 32 2C 31 2C 73 74 72 29      debug(2,1,str)
02AA40:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
02AA50:  20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 28              debug(
02AA60:  2D 32 2C 32 2C 22 73 74 72 31 22 2C 73 74 72 31    -2,2,"str1",str1
02AA70:  2C 22 73 74 72 32 22 2C 73 74 72 32 29 0D 0A 20    ,"str2",str2).. 
02AA80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AA90:  20 20 20 20 20 20 20 64 65 62 75 67 28 33 2C 31           debug(3,1
02AAA0:  2C 76 65 63 74 6F 72 2C 33 32 29 0D 0A 20 20 20    ,vector,32)..   
02AAB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AAC0:  20 20 20 20 20 64 65 62 75 67 28 2D 33 2C 31 2C         debug(-3,1,
02AAD0:  22 76 65 63 74 6F 72 22 2C 76 65 63 74 6F 72 2C    "vector",vector,
02AAE0:  33 32 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20    32)..           
02AAF0:  20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62                 deb
02AB00:  75 67 28 34 2C 32 2C 68 65 78 31 2C 68 65 78 32    ug(4,2,hex1,hex2
02AB10:  29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    )..             
02AB20:  20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67               debug
02AB30:  28 2D 34 2C 33 2C 22 68 65 78 31 22 2C 68 65 78    (-4,3,"hex1",hex
02AB40:  31 2C 22 68 65 78 32 22 2C 68 65 78 32 2C 22 68    1,"hex2",hex2,"h
02AB50:  65 78 33 22 2C 68 65 78 33 29 0D 0A 2A 2F 0D 0A    ex3",hex3)..*/..
02AB60:  0D 0A 0D 0A 41 4E 44 20 64 65 62 75 67 28 6F 70    ....AND debug(op
02AB70:  74 2C 6E 2C 64 31 2C 64 32 2C 64 33 2C 64 34 2C    t,n,d1,d2,d3,d4,
02AB80:  64 35 2C 64 36 2C 64 37 2C 64 38 2C 64 39 2C 64    d5,d6,d7,d8,d9,d
02AB90:  31 30 2C 64 31 31 2C 64 31 32 29 20 62 65 0D 0A    10,d11,d12) be..
02ABA0:  0D 0A 24 28 20 20 20 20 20 20 4D 41 4E 49 46 45    ..$(      MANIFE
02ABB0:  53 54 20 24 28 20 65 73 63 61 70 65 3D 23 78 46    ST $( escape=#xF
02ABC0:  43 20 3B 20 73 74 6F 70 3D 33 20 24 29 0D 0A 20    C ; stop=3 $).. 
02ABD0:  20 20 20 20 20 20 20 4C 45 54 20 70 61 72 6D 2C           LET parm,
02ABE0:  20 63 68 2C 20 6C 65 6E 20 3D 20 40 64 31 2C 20     ch, len = @d1, 
02ABF0:  3F 2C 20 3F 0D 0A 20 20 20 20 20 20 20 20 4C 45    ?, ?..        LE
02AC00:  54 20 77 72 6E 75 6D 2C 20 77 72 77 69 64 20 3D    T wrnum, wrwid =
02AC10:  20 77 72 69 74 65 64 2C 20 30 0D 0A 20 20 20 20     writed, 0..    
02AC20:  20 20 20 20 53 57 49 54 43 48 4F 4E 20 28 6F 70        SWITCHON (op
02AC30:  74 3E 30 20 2D 3E 20 6F 70 74 2C 20 2D 6F 70 74    t>0 -> opt, -opt
02AC40:  29 20 49 4E 54 4F 0D 0A 20 20 20 20 20 20 20 20    ) INTO..        
02AC50:  24 28 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    $(..            
02AC60:  20 20 20 20 43 41 53 45 20 31 20 3A 20 77 72 69        CASE 1 : wri
02AC70:  74 65 73 28 22 2A 6E 42 43 50 4C 20 44 65 62 75    tes("*nBCPL Debu
02AC80:  67 2E 20 56 61 72 69 61 62 6C 65 20 76 61 6C 75    g. Variable valu
02AC90:  65 73 3A 20 22 29 0D 0A 20 20 20 20 20 20 20 20    es: ")..        
02ACA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02ACB0:  20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20 20     ENDCASE..      
02ACC0:  20 20 20 20 20 20 20 20 20 20 43 41 53 45 20 32              CASE 2
02ACD0:  20 3A 20 77 72 69 74 65 73 28 22 2A 6E 42 43 50     : writes("*nBCP
02ACE0:  4C 20 44 65 62 75 67 2E 20 53 74 72 69 6E 67 20    L Debug. String 
02ACF0:  63 6F 6E 74 65 6E 74 73 3A 20 22 29 0D 0A 20 20    contents: ")..  
02AD00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
02AD10:  24 00 00 00 02 09 50 E5 24 00 C1 02 00 00 00 02    $.....P.$.......
02AD20:  24 00 C2 02 00 00 00 02 24 00 C3 02 00 00 00 02    $.......$.......
02AD30:  24 00 C4 02 00 00 00 02 24 00 C5 02 00 00 00 02    $.......$.......
02AD40:  24 00 C6 02 00 00 00 02 24 00 C7 02 00 00 00 02    $.......$.......
02AD50:  24 00 C8 02 00 00 00 02 24 00 C9 02 00 00 00 02    $.......$.......
02AD60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AD70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AD80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AD90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AE00:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AE10:  20 20 20 20 20 20 20 45 4E 44 43 41 53 45 0D 0A           ENDCASE..
02AE20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AE30:  43 41 53 45 20 33 20 3A 20 77 72 69 74 65 73 28    CASE 3 : writes(
02AE40:  22 2A 6E 42 43 50 4C 20 44 65 62 75 67 2E 20 56    "*nBCPL Debug. V
02AE50:  65 63 74 6F 72 20 63 6F 6E 74 65 6E 74 73 3A 20    ector contents: 
02AE60:  22 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ")..            
02AE70:  20 20 20 20 20 20 20 20 20 20 20 20 20 45 4E 44                 END
02AE80:  43 41 53 45 0D 0A 20 20 20 20 20 20 20 20 20 20    CASE..          
02AE90:  20 20 20 20 20 20 43 41 53 45 20 34 20 3A 20 77          CASE 4 : w
02AEA0:  72 69 74 65 73 28 22 2A 6E 42 43 50 4C 20 44 65    rites("*nBCPL De
02AEB0:  62 75 67 2E 20 56 61 72 69 61 62 6C 65 20 76 61    bug. Variable va
02AEC0:  6C 75 65 73 2C 20 68 65 78 3A 20 22 29 0D 0A 20    lues, hex: ").. 
02AED0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AEE0:  20 20 20 20 20 20 20 20 77 72 6E 75 6D 20 3A 3D            wrnum :=
02AEF0:  20 77 72 69 74 65 68 65 78 0D 0A 20 20 20 20 20     writehex..     
02AF00:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AF10:  20 20 20 20 77 72 77 69 64 20 3A 3D 20 34 0D 0A        wrwid := 4..
02AF20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AF30:  20 20 20 20 20 20 20 20 20 45 4E 44 43 41 53 45             ENDCASE
02AF40:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
02AF50:  20 20 44 45 46 41 55 4C 54 3A 0D 0A 20 20 20 20      DEFAULT:..    
02AF60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AF70:  20 20 20 20 77 72 69 74 65 73 28 22 2A 6E 50 72        writes("*nPr
02AF80:  65 73 73 20 61 20 6B 65 79 20 74 6F 20 72 65 73    ess a key to res
02AF90:  75 6D 65 20 65 78 65 63 75 74 69 6F 6E 3A 20 22    ume execution: "
02AFA0:  29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    )..             
02AFB0:  20 20 20 20 20 20 20 20 20 20 20 63 68 3A 3D 72               ch:=r
02AFC0:  64 63 68 28 29 20 3B 20 49 46 20 63 68 3D 65 73    dch() ; IF ch=es
02AFD0:  63 61 70 65 20 7C 20 63 68 3D 73 74 6F 70 20 20    cape | ch=stop  
02AFE0:  74 68 65 6E 20 46 49 4E 49 53 48 0D 0A 20 20 20    then FINISH..   
02AFF0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B000:  20 20 20 20 20 6E 65 77 6C 69 6E 65 28 29 0D 0A         newline()..
02B010:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B020:  20 20 20 20 20 20 20 20 52 45 54 55 52 4E 0D 0A            RETURN..
02B030:  20 20 20 20 20 20 20 20 24 29 0D 0A 0D 0A 20 20            $)....  
02B040:  20 20 20 20 20 20 6E 65 77 6C 69 6E 65 28 29 0D          newline().
02B050:  0A 20 20 20 20 20 20 20 20 49 46 20 6F 70 74 20    .        IF opt 
02B060:  3E 20 30 20 26 20 6F 70 74 20 4E 45 20 33 20 44    > 0 & opt NE 3 D
02B070:  4F 20 77 72 69 74 65 73 28 22 20 20 22 29 0D 0A    O writes("  ")..
02B080:  0D 0A 20 20 20 20 20 20 20 20 46 4F 52 20 69 20    ..        FOR i 
02B090:  3D 20 31 20 54 4F 20 6E 20 44 4F 0D 0A 20 20 20    = 1 TO n DO..   
02B0A0:  20 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 20         $(..       
02B0B0:  20 20 20 20 20 53 57 49 54 43 48 4F 4E 20 6F 70         SWITCHON op
02B0C0:  74 20 49 4E 54 4F 0D 0A 20 20 20 20 20 20 20 20    t INTO..        
02B0D0:  20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 20 20        $(..        
02B0E0:  20 20 20 20 20 20 20 20 43 41 53 45 20 31 3A 0D            CASE 1:.
02B0F0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
02B100:  20 43 41 53 45 20 34 3A 0D 0A 20 20 20 20 20 20     CASE 4:..      
02B110:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B120:  20 20 77 72 6E 75 6D 28 21 70 61 72 6D 2C 77 72      wrnum(!parm,wr
02B130:  77 69 64 29 20 3B 20 77 72 63 68 28 27 20 27 29    wid) ; wrch(' ')
02B140:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
02B150:  20 20 20 20 20 20 20 20 20 20 70 61 72 6D 20 3A              parm :
02B160:  3D 20 70 61 72 6D 20 2B 20 31 0D 0A 20 20 20 20    = parm + 1..    
02B170:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B180:  20 20 20 20 45 4E 44 43 41 53 45 0D 0A 0D 0A 20        ENDCASE.... 
02B190:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                   C
02B1A0:  41 53 45 20 2D 31 3A 0D 0A 20 20 20 20 20 20 20    ASE -1:..       
02B1B0:  20 20 20 20 20 20 20 20 20 43 41 53 45 20 2D 34             CASE -4
02B1C0:  3A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    :..             
02B1D0:  20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65               write
02B1E0:  73 28 22 20 20 22 29 0D 0A 20 20 20 20 20 20 20    s("  ")..       
02B1F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B200:  20 77 72 69 74 65 73 28 21 70 61 72 6D 29 0D 0A     writes(!parm)..
02B210:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B220:  20 20 20 20 20 20 20 20 77 72 69 74 65 73 28 22            writes("
02B230:  20 3D 20 22 29 0D 0A 20 20 20 20 20 20 20 20 20     = ")..         
02B240:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77                   w
02B250:  72 6E 75 6D 28 70 61 72 6D 21 31 2C 77 72 77 69    rnum(parm!1,wrwi
02B260:  64 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    d)..            
02B270:  20 20 20 20 20 20 20 20 20 20 20 20 6E 65 77 6C                newl
02B280:  69 6E 65 28 29 0D 0A 20 20 20 20 20 20 20 20 20    ine()..         
02B290:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                   p
02B2A0:  61 72 6D 20 3A 3D 20 70 61 72 6D 20 2B 20 32 0D    arm := parm + 2.
02B2B0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
02B2C0:  20 20 20 20 20 20 20 20 20 45 4E 44 43 41 53 45             ENDCASE
02B2D0:  0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ....            
02B2E0:  20 20 20 20 43 41 53 45 20 32 3A 0D 0A 20 20 20        CASE 2:..   
02B2F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B300:  20 20 20 20 20 77 72 63 68 28 27 22 27 29 20 3B         wrch('"') ;
02B310:  20 77 72 69 74 65 73 28 21 70 61 72 6D 29 20 3B     writes(!parm) ;
02B320:  20 77 72 63 68 28 27 22 27 29 0D 0A 20 20 20 20     wrch('"')..    
02B330:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B340:  20 20 20 20 77 72 63 68 28 27 20 27 29 0D 0A 20        wrch(' ').. 
02B350:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B360:  20 20 20 20 20 20 20 70 61 72 6D 20 3A 3D 20 70           parm := p
02B370:  61 72 6D 20 2B 20 31 0D 0A 20 20 20 20 20 20 20    arm + 1..       
02B380:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B390:  20 45 4E 44 43 41 53 45 0D 0A 0D 0A 20 20 20 20     ENDCASE....    
02B3A0:  20 20 20 20 20 20 20 20 20 20 20 20 43 41 53 45                CASE
02B3B0:  20 2D 32 3A 0D 0A 20 20 20 20 20 20 20 20 20 20     -2:..          
02B3C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 72                  wr
02B3D0:  69 74 65 73 28 22 20 20 22 29 0D 0A 20 20 20 20    ites("  ")..    
02B3E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B3F0:  20 20 20 20 77 72 69 74 65 73 28 21 70 61 72 6D        writes(!parm
02B400:  29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    )..             
02B410:  20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65               write
02B420:  73 28 22 20 3D 20 22 29 20 3B 20 77 72 63 68 28    s(" = ") ; wrch(
02B430:  27 22 27 29 0D 0A 20 20 20 20 20 20 20 20 20 20    '"')..          
02B440:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 72                  wr
02B450:  69 74 65 73 28 70 61 72 6D 21 31 29 20 3B 20 77    ites(parm!1) ; w
02B460:  72 63 68 28 27 22 27 29 0D 0A 20 20 20 20 20 20    rch('"')..      
02B470:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B480:  20 20 6E 65 77 6C 69 6E 65 28 29 0D 0A 20 20 20      newline()..   
02B490:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B4A0:  20 20 20 20 20 70 61 72 6D 20 3A 3D 20 70 61 72         parm := par
02B4B0:  6D 20 2B 20 32 0D 0A 20 20 20 20 20 20 20 20 20    m + 2..         
02B4C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45                   E
02B4D0:  4E 44 43 41 53 45 0D 0A 0D 0A 20 20 20 20 20 20    NDCASE....      
02B4E0:  20 20 20 20 20 20 20 20 20 20 43 41 53 45 20 33              CASE 3
02B4F0:  3A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    :..             
02B500:  20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67               debug
02B510:  76 65 63 74 6F 72 28 21 70 61 72 6D 2C 70 61 72    vector(!parm,par
02B520:  6D 21 31 29 0D 0A 20 20 20 20 20 20 20 20 20 20    m!1)..          
02B530:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61                  pa
02B540:  72 6D 20 3A 3D 20 70 61 72 6D 20 2B 20 32 0D 0A    rm := parm + 2..
02B550:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B560:  20 20 20 20 20 20 20 20 45 4E 44 43 41 53 45 0D            ENDCASE.
02B570:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
02B580:  20 20 20 43 41 53 45 20 2D 33 3A 0D 0A 20 20 20       CASE -3:..   
02B590:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B5A0:  20 20 20 20 20 77 72 69 74 65 73 28 21 70 61 72         writes(!par
02B5B0:  6D 29 20 3B 20 6E 65 77 6C 69 6E 65 28 29 0D 0A    m) ; newline()..
02B5C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B5D0:  20 20 20 20 20 20 20 20 64 65 62 75 67 76 65 63            debugvec
02B5E0:  74 6F 72 28 70 61 72 6D 21 31 2C 70 61 72 6D 21    tor(parm!1,parm!
02B5F0:  32 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    2)..            
02B600:  20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 6D                parm
02B610:  20 3A 3D 20 70 61 72 6D 20 2B 20 33 0D 0A 20 20     := parm + 3..  
02B620:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B630:  20 20 20 20 20 20 45 4E 44 43 41 53 45 0D 0A 0D          ENDCASE...
02B640:  0A 20 20 20 20 20 20 20 20 20 20 20 20 24 29 0D    .            $).
02B650:  0A 20 20 20 20 20 20 20 20 24 29 0D 0A 20 20 20    .        $)..   
02B660:  20 20 20 20 20 49 46 20 6F 70 74 20 3E 20 30 20         IF opt > 0 
02B670:  26 20 6F 70 74 20 6E 65 20 33 20 44 4F 20 6E 65    & opt ne 3 DO ne
02B680:  77 6C 69 6E 65 28 29 0D 0A 24 29 0D 0A 0D 0A 41    wline()..$)....A
02B690:  4E 44 20 64 65 62 75 67 76 65 63 74 6F 72 28 61    ND debugvector(a
02B6A0:  64 64 72 2C 6C 65 6E 29 20 42 45 0D 0A 0D 0A 24    ddr,len) BE....$
02B6B0:  28 20 20 20 20 20 20 4C 45 54 20 61 73 63 69 69    (      LET ascii
02B6C0:  20 3D 20 76 65 63 20 31 36 0D 0A 20 20 20 20 20     = vec 16..     
02B6D0:  20 20 20 4C 45 54 20 61 73 63 70 74 72 2C 20 6C       LET ascptr, l
02B6E0:  69 6E 65 2C 20 63 68 20 3D 20 31 2C 20 30 2C 20    ine, ch = 1, 0, 
02B6F0:  30 0D 0A 20 20 20 20 20 20 20 20 61 73 63 69 69    0..        ascii
02B700:  25 30 20 3A 3D 20 31 36 0D 0A 20 20 20 20 20 20    %0 := 16..      
02B710:  20 20 46 4F 52 20 6C 69 6E 65 20 3D 20 30 20 54      FOR line = 0 T
02B720:  4F 20 28 6C 65 6E 2D 31 29 2F 31 36 20 44 4F 0D    O (len-1)/16 DO.
02B730:  0A 20 20 20 20 20 20 20 20 24 28 20 20 20 20 20    .        $(     
02B740:  20 77 72 69 74 65 73 28 22 20 20 22 29 0D 0A 20     writes("  ").. 
02B750:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77                   w
02B760:  72 69 74 65 68 65 78 28 32 2A 61 64 64 72 2B 6C    ritehex(2*addr+l
02B770:  69 6E 65 2A 31 36 2C 34 29 20 20 20 20 20 20 2F    ine*16,4)      /
02B780:  2F 20 6E 6F 74 65 20 32 2A 61 64 64 72 20 69 73    / note 2*addr is
02B790:  20 70 68 79 73 69 63 61 6C 20 61 64 64 72 0D 0A     physical addr..
02B7A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B7B0:  77 72 69 74 65 73 28 22 20 20 22 29 0D 0A 20 20    writes("  ")..  
02B7C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 73                  as
02B7D0:  63 70 74 72 20 3A 3D 20 31 0D 0A 20 20 20 20 20    cptr := 1..     
02B7E0:  20 20 20 20 20 20 20 20 20 20 20 46 4F 52 20 62               FOR b
02B7F0:  79 74 65 20 3D 20 30 20 54 4F 20 31 35 20 44 4F    yte = 0 TO 15 DO
02B800:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
02B810:  20 20 24 28 20 20 20 20 20 20 63 68 20 3A 3D 20      $(      ch := 
02B820:  61 64 64 72 25 28 6C 69 6E 65 2A 31 36 2B 62 79    addr%(line*16+by
02B830:  74 65 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20    te)..           
02B840:  20 20 20 20 20 20 20 20 20 20 20 20 20 77 72 69                 wri
02B850:  74 65 68 65 78 28 63 68 2C 32 29 0D 0A 20 20 20    tehex(ch,2)..   
02B860:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B870:  20 20 20 20 20 77 72 63 68 28 27 20 27 29 0D 0A         wrch(' ')..
02B880:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B890:  20 20 20 20 20 20 20 20 49 46 20 62 79 74 65 3D            IF byte=
02B8A0:  37 20 74 68 65 6E 20 77 72 63 68 28 27 20 27 29    7 then wrch(' ')
02B8B0:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
02B8C0:  20 20 20 20 20 20 20 20 20 20 61 73 63 69 69 25              ascii%
02B8D0:  61 73 63 70 74 72 20 3A 3D 20 28 33 31 3C 63 68    ascptr := (31<ch
02B8E0:  3C 31 32 38 29 20 2D 3E 20 63 68 20 2C 20 27 2E    <128) -> ch , '.
02B8F0:  27 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    '..             
02B900:  20 20 20 20 20 20 20 20 20 20 20 61 73 63 70 74               ascpt
02B910:  72 20 3A 3D 20 61 73 63 70 74 72 20 2B 20 31 0D    r := ascptr + 1.
02B920:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
02B930:  20 24 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20     $)..           
02B940:  20 20 20 20 20 77 72 63 68 28 27 20 27 29 0D 0A         wrch(' ')..
02B950:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B960:  77 72 69 74 65 73 28 61 73 63 69 69 29 0D 0A 20    writes(ascii).. 
02B970:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6E                   n
02B980:  65 77 6C 69 6E 65 28 29 0D 0A 20 20 20 20 20 20    ewline()..      
02B990:  20 20 24 29 0D 0A 24 29 0D 0A 1A 31 30 2F 31 39      $)..$)...10/19
02B9A0:  38 36 20 2A 2F 0D 0A 0D 0A 2F 2A 20 20 20 20 20    86 */..../*     
02B9B0:  20 64 65 62 75 67 28 6F 70 74 2C 6E 2C 64 31 2C     debug(opt,n,d1,
02B9C0:  64 32 2C 64 33 2C 64 34 2C 64 35 2C 64 36 2C 64    d2,d3,d4,d5,d6,d
02B9D0:  37 2C 64 38 2C 64 39 2C 64 31 30 2C 64 31 31 2C    7,d8,d9,d10,d11,
02B9E0:  64 31 32 29 0D 0A 0D 0A 20 20 20 20 20 20 20 20    d12)....        
02B9F0:  54 68 65 20 66 69 72 73 74 20 70 61 72 61 6D 65    The first parame
02BA00:  31 34 20 4E 20 53 20 22 5E 27 23 46 30 27 22 20    14 N S "^'#F0'" 
02BA10:  63 75 72 73 6F 72 20 75 70 20 20 20 20 20 20 20    cursor up       
02BA20:  20 20 20 20 4B 65 79 20 64 65 66 69 6E 69 74 69        Key definiti
02BA30:  6F 6E 73 20 66 6F 72 20 42 43 50 4C 20 65 64 69    ons for BCPL edi
02BA40:  74 6F 72 20 6F 6E 20 50 43 57 0D 0A 31 34 20 41    tor on PCW..14 A
02BA50:  20 22 5E 27 23 46 38 27 22 20 61 6C 74 2D 63 75     "^'#F8'" alt-cu
02BA60:  72 73 6F 72 20 75 70 0D 0A 36 20 4E 20 53 20 22    rsor up..6 N S "
02BA70:  5E 27 23 46 33 27 22 20 63 75 72 73 6F 72 20 72    ^'#F3'" cursor r
02BA80:  69 67 68 74 0D 0A 36 20 41 20 22 5E 27 23 46 42    ight..6 A "^'#FB
02BA90:  27 22 20 20 61 6C 74 2D 63 75 72 73 6F 72 20 72    '"  alt-cursor r
02BAA0:  69 67 68 74 0D 0A 37 39 20 4E 20 53 20 22 5E 27    ight..79 N S "^'
02BAB0:  23 46 31 27 22 20 63 75 72 73 6F 72 20 64 6F 77    #F1'" cursor dow
02BAC0:  6E 0D 0A 37 39 20 41 20 22 5E 27 23 46 39 27 22    n..79 A "^'#F9'"
02BAD0:  20 61 6C 74 2D 63 75 72 73 6F 72 20 64 6F 77 6E     alt-cursor down
02BAE0:  0D 0A 31 35 20 4E 20 53 20 22 5E 27 23 46 32 27    ..15 N S "^'#F2'
02BAF0:  22 20 63 75 72 73 6F 72 20 6C 65 66 74 0D 0A 31    " cursor left..1
02BB00:  35 20 41 20 22 5E 27 23 46 41 27 22 20 61 6C 74    5 A "^'#FA'" alt
02BB10:  2D 63 75 72 73 6F 72 20 6C 65 66 74 0D 0A 36 36    -cursor left..66
02BB20:  20 4E 20 22 5E 27 23 46 43 27 22 20 73 74 6F 70     N "^'#FC'" stop
02BB30:  0D 0A 32 36 20 41 20 22 5E 27 32 37 27 22 20 61    ..26 A "^'27'" a
02BB40:  6C 74 2D 5B 0D 0A 31 37 20 41 20 22 5E 27 32 39    lt-[..17 A "^'29
02BB50:  27 22 20 61 6C 74 2D 5D 0D 0A 0D 0A 1A 46 42 27    '" alt-].....FB'
02BB60:  22 20 20 61 6C 74 2D 63 75 72 73 6F 72 20 72 69    "  alt-cursor ri
02BB70:  67 68 74 0D 0A 37 39 20 4E 20 53 20 22 5E 27 23    ght..79 N S "^'#
02BB80:  65 77 6C 69 6E 65 28 29 0D 0A 20 20 20 20 20 20    ewline()..      
02BB90:  20 20 24 29 0D 0A 24 29 0D 0A 1A 31 30 2F 31 39      $)..$)...10/19
02BBA0:  38 36 20 2A 2F 0D 0A 0D 0A 2F 2A 20 20 20 20 20    86 */..../*     
02BBB0:  20 64 65 62 75 67 28 6F 70 74 2C 6E 2C 64 31 2C     debug(opt,n,d1,
02BBC0:  64 32 2C 64 33 2C 64 34 2C 64 35 2C 64 36 2C 64    d2,d3,d4,d5,d6,d
02BBD0:  37 2C 64 38 2C 64 39 2C 64 31 30 2C 64 31 31 2C    7,d8,d9,d10,d11,
02BBE0:  64 31 32 29 0D 0A 0D 0A 20 20 20 20 20 20 20 20    d12)....        
02BBF0:  54 68 65 20 66 69 72 73 74 20 70 61 72 61 6D 65    The first parame
02BC00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BCA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BCB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BCC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BCD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BCE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BCF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BDA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BDB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BDC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BDD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BDE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BDF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BE00:  0D 0A 2F 2A 20 54 68 69 73 20 69 73 20 61 20 42    ../* This is a B
02BE10:  43 50 4C 20 62 65 61 75 74 69 66 69 65 72 2E 20    CPL beautifier. 
02BE20:  49 74 20 77 69 6C 6C 20 74 75 72 6E 20 61 6C 6C    It will turn all
02BE30:  20 6B 65 79 77 6F 72 64 73 20 69 6E 74 6F 20 75     keywords into u
02BE40:  70 70 65 72 20 63 61 73 65 20 61 6E 64 0D 0A 20    pper case and.. 
02BE50:  20 20 61 6C 6C 20 69 64 65 6E 74 69 66 69 65 72      all identifier
02BE60:  73 20 69 6E 74 6F 20 6C 6F 77 65 72 20 63 61 73    s into lower cas
02BE70:  65 20 2A 2F 0D 0A 0D 0A 2F 2F 20 6D 6F 64 69 66    e */....// modif
02BE80:  69 65 64 20 33 30 2F 31 30 2F 31 39 38 36 0D 0A    ied 30/10/1986..
02BE90:  0D 0A 2F 2A 20 72 65 61 64 20 69 6E 20 74 68 65    ../* read in the
02BEA0:  20 73 74 61 6E 64 61 72 64 20 6C 69 62 72 61 72     standard librar
02BEB0:  79 20 68 65 61 64 65 72 20 2A 2F 0D 0A 0D 0A 4F    y header */....O
02BEC0:  50 54 49 4F 4E 20 42 2D 0D 0A 0D 0A 47 45 54 20    PTION B-....GET 
02BED0:  22 63 6C 69 62 68 64 72 22 0D 0A 0D 0A 4F 50 54    "clibhdr"....OPT
02BEE0:  49 4F 4E 20 42 2B 0D 0A 0D 0A 4D 41 4E 49 46 45    ION B+....MANIFE
02BEF0:  53 54 0D 0A 24 28 0D 0A 20 20 69 6E 64 65 6E 74    ST..$(..  indent
02BF00:  73 69 7A 65 20 3D 20 32 0D 0A 20 20 63 6F 6D 6D    size = 2..  comm
02BF10:  65 6E 74 73 20 3D 20 33 35 0D 0A 24 29 0D 0A 0D    ents = 35..$)...
02BF20:  0A 0D 0A 47 4C 4F 42 41 4C 0D 0A 24 28 0D 0A 20    ...GLOBAL..$(.. 
02BF30:  20 6B 65 79 77 6F 72 64 73 3A 20 30 0D 0A 20 20     keywords: 0..  
02BF40:  69 6E 70 75 74 3A 20 31 0D 0A 20 20 6F 75 74 70    input: 1..  outp
02BF50:  75 74 3A 20 32 0D 0A 20 20 65 72 72 76 65 63 3A    ut: 2..  errvec:
02BF60:  20 33 0D 0A 20 20 65 72 72 6F 72 3A 20 34 0D 0A     3..  error: 4..
02BF70:  20 20 6C 61 73 74 63 68 72 3A 20 35 0D 0A 20 20      lastchr: 5..  
02BF80:  6B 65 79 65 6E 64 3A 20 36 0D 0A 24 29 0D 0A 0D    keyend: 6..$)...
02BF90:  0A 53 54 41 54 49 43 0D 0A 24 28 0D 0A 20 20 69    .STATIC..$(..  i
02BFA0:  6E 64 65 6E 74 20 3D 20 30 0D 0A 20 20 6E 6C 64    ndent = 0..  nld
02BFB0:  6F 6E 65 20 3D 20 54 52 55 45 0D 0A 20 20 69 64    one = TRUE..  id
02BFC0:  66 6C 61 67 20 3D 20 46 41 4C 53 45 0D 0A 20 20    flag = FALSE..  
02BFD0:  63 6F 6C 75 6D 6E 20 3D 20 30 0D 0A 24 29 0D 0A    column = 0..$)..
02BFE0:  0D 0A 4C 45 54 20 65 72 72 28 6D 65 73 73 61 67    ..LET err(messag
02BFF0:  65 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 6E    e) BE....$(..  n
02C000:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
02C010:  25 00 00 00 02 09 50 E5 25 00 C1 02 00 00 00 02    %.....P.%.......
02C020:  25 00 C2 02 00 00 00 02 25 00 C3 02 00 00 00 02    %.......%.......
02C030:  25 00 C4 02 00 00 00 02 25 00 C5 02 00 00 00 02    %.......%.......
02C040:  25 00 C6 02 00 00 00 02 25 00 C7 02 00 00 00 02    %.......%.......
02C050:  25 00 C8 02 00 00 00 02 25 00 C9 02 00 00 00 02    %.......%.......
02C060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C100:  65 77 6C 69 6E 65 28 29 0D 0A 20 20 77 72 69 74    ewline()..  writ
02C110:  65 73 28 6D 65 73 73 61 67 65 29 0D 0A 20 20 6E    es(message)..  n
02C120:  65 77 6C 69 6E 65 28 29 0D 0A 20 20 6C 6F 6E 67    ewline()..  long
02C130:  6A 75 6D 70 28 65 72 72 6F 72 2C 20 65 72 72 76    jump(error, errv
02C140:  65 63 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54    ec)..$)......LET
02C150:  20 73 70 61 63 65 28 63 68 61 72 29 20 3D 20 28     space(char) = (
02C160:  20 63 68 61 72 3D 27 20 27 20 7C 20 63 68 61 72     char=' ' | char
02C170:  3D 39 20 29 0D 0A 0D 0A 4C 45 54 20 72 61 77 63    =9 )....LET rawc
02C180:  68 72 28 29 20 3D 20 56 41 4C 4F 46 0D 0A 0D 0A    hr() = VALOF....
02C190:  24 28 0D 0A 20 20 4C 45 54 20 74 65 6D 70 20 3D    $(..  LET temp =
02C1A0:  20 72 65 61 64 63 68 28 69 6E 70 75 74 29 0D 0A     readch(input)..
02C1B0:  20 20 57 48 49 4C 45 20 74 65 6D 70 20 3D 20 31      WHILE temp = 1
02C1C0:  30 20 44 4F 20 74 65 6D 70 20 3A 3D 20 72 65 61    0 DO temp := rea
02C1D0:  64 63 68 28 69 6E 70 75 74 29 0D 0A 20 20 49 46    dch(input)..  IF
02C1E0:  20 6C 61 73 74 63 68 72 20 3D 20 65 6E 64 73 74     lastchr = endst
02C1F0:  72 65 61 6D 63 68 20 4C 4F 47 41 4E 44 20 74 65    reamch LOGAND te
02C200:  6D 70 20 3D 20 65 6E 64 73 74 72 65 61 6D 63 68    mp = endstreamch
02C210:  20 54 48 45 4E 20 65 72 72 28 22 55 6E 65 78 70     THEN err("Unexp
02C220:  65 63 74 65 64 20 45 4F 46 22 29 0D 0A 20 20 6C    ected EOF")..  l
02C230:  61 73 74 63 68 72 20 3A 3D 20 74 65 6D 70 0D 0A    astchr := temp..
02C240:  20 20 52 45 53 55 4C 54 49 53 20 6C 61 73 74 63      RESULTIS lastc
02C250:  68 72 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20    hr..$)......LET 
02C260:  67 65 74 63 68 72 28 29 20 3D 20 56 41 4C 4F 46    getchr() = VALOF
02C270:  0D 0A 0D 0A 24 28 0D 0A 20 20 72 61 77 63 68 72    ....$(..  rawchr
02C280:  28 29 0D 0A 20 20 49 46 20 27 41 27 20 3C 3D 20    ()..  IF 'A' <= 
02C290:  6C 61 73 74 63 68 72 20 3C 3D 20 27 5A 27 20 54    lastchr <= 'Z' T
02C2A0:  48 45 4E 20 6C 61 73 74 63 68 72 20 3A 3D 20 6C    HEN lastchr := l
02C2B0:  61 73 74 63 68 72 20 2B 20 33 32 0D 0A 20 20 52    astchr + 32..  R
02C2C0:  45 53 55 4C 54 49 53 20 6C 61 73 74 63 68 72 0D    ESULTIS lastchr.
02C2D0:  0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 6F 75 74    .$)......LET out
02C2E0:  28 63 68 61 72 61 63 74 65 72 29 20 42 45 0D 0A    (character) BE..
02C2F0:  0D 0A 24 28 0D 0A 20 20 55 4E 4C 45 53 53 20 6E    ..$(..  UNLESS n
02C300:  6C 64 6F 6E 65 20 4C 4F 47 4F 52 20 63 68 61 72    ldone LOGOR char
02C310:  61 63 74 65 72 20 3D 20 31 33 20 54 48 45 4E 0D    acter = 13 THEN.
02C320:  0A 20 20 24 28 0D 0A 20 20 20 20 6E 6C 64 6F 6E    .  $(..    nldon
02C330:  65 20 3A 3D 20 54 52 55 45 0D 0A 20 20 20 20 46    e := TRUE..    F
02C340:  4F 52 20 73 70 61 63 65 20 3D 20 31 20 54 4F 20    OR space = 1 TO 
02C350:  69 6E 64 65 6E 74 20 6F 75 74 28 27 20 27 29 0D    indent out(' ').
02C360:  0A 20 20 24 29 0D 0A 20 20 54 45 53 54 20 63 68    .  $)..  TEST ch
02C370:  61 72 61 63 74 65 72 20 3D 20 31 33 20 54 48 45    aracter = 13 THE
02C380:  4E 0D 0A 20 20 24 28 0D 0A 20 20 20 20 6E 65 77    N..  $(..    new
02C390:  6C 69 6E 65 28 29 0D 0A 20 20 20 20 77 72 69 74    line()..    writ
02C3A0:  65 63 68 28 31 33 2C 6F 75 74 70 75 74 29 0D 0A    ech(13,output)..
02C3B0:  20 20 20 20 77 72 69 74 65 63 68 28 31 30 2C 6F        writech(10,o
02C3C0:  75 74 70 75 74 29 0D 0A 0D 0A 20 20 20 20 6E 6C    utput)....    nl
02C3D0:  64 6F 6E 65 20 3A 3D 20 46 41 4C 53 45 0D 0A 20    done := FALSE.. 
02C3E0:  20 20 20 69 64 66 6C 61 67 20 3A 3D 20 46 41 4C       idflag := FAL
02C3F0:  53 45 0D 0A 20 20 20 20 63 6F 6C 75 6D 6E 20 3A    SE..    column :
02C400:  3D 20 30 0D 0A 20 20 24 29 0D 0A 20 20 45 4C 53    = 0..  $)..  ELS
02C410:  45 0D 0A 20 20 24 28 0D 0A 20 20 20 20 63 6F 6C    E..  $(..    col
02C420:  75 6D 6E 20 3A 3D 20 63 6F 6C 75 6D 6E 20 2B 20    umn := column + 
02C430:  31 0D 0A 20 20 20 20 77 72 63 68 28 63 68 61 72    1..    wrch(char
02C440:  61 63 74 65 72 29 0D 0A 20 20 20 20 77 72 69 74    acter)..    writ
02C450:  65 63 68 28 63 68 61 72 61 63 74 65 72 2C 6F 75    ech(character,ou
02C460:  74 70 75 74 29 0D 0A 20 20 24 29 0D 0A 24 29 0D    tput)..  $)..$).
02C470:  0A 0D 0A 0D 0A 4C 45 54 20 68 65 78 76 61 6C 28    .....LET hexval(
02C480:  63 68 61 72 29 20 3D 20 56 41 4C 4F 46 0D 0A 0D    char) = VALOF...
02C490:  0A 24 28 0D 0A 20 20 54 45 53 54 20 27 30 27 20    .$(..  TEST '0' 
02C4A0:  3C 3D 20 63 68 61 72 20 3C 3D 20 27 39 27 20 54    <= char <= '9' T
02C4B0:  48 45 4E 20 52 45 53 55 4C 54 49 53 20 63 68 61    HEN RESULTIS cha
02C4C0:  72 20 2D 20 27 30 27 0D 0A 20 20 45 4C 53 45 20    r - '0'..  ELSE 
02C4D0:  54 45 53 54 20 27 61 27 20 3C 3D 20 63 68 61 72    TEST 'a' <= char
02C4E0:  20 3C 3D 20 27 66 27 20 54 48 45 4E 20 52 45 53     <= 'f' THEN RES
02C4F0:  55 4C 54 49 53 20 63 68 61 72 20 2D 20 27 61 27    ULTIS char - 'a'
02C500:  20 2B 20 31 30 0D 0A 20 20 45 4C 53 45 20 52 45     + 10..  ELSE RE
02C510:  53 55 4C 54 49 53 20 31 30 30 0D 0A 24 29 0D 0A    SULTIS 100..$)..
02C520:  0D 0A 0D 0A 4C 45 54 20 72 65 61 64 6E 75 6D 28    ....LET readnum(
02C530:  62 61 73 65 2C 20 66 69 72 73 74 29 20 42 45 0D    base, first) BE.
02C540:  0A 0D 0A 24 28 0D 0A 20 20 57 48 49 4C 45 20 68    ...$(..  WHILE h
02C550:  65 78 76 61 6C 28 66 69 72 73 74 29 20 3C 20 62    exval(first) < b
02C560:  61 73 65 20 44 4F 0D 0A 20 20 24 28 0D 0A 20 20    ase DO..  $(..  
02C570:  20 20 6F 75 74 28 68 65 78 76 61 6C 28 66 69 72      out(hexval(fir
02C580:  73 74 29 20 3C 20 31 30 20 2D 3E 20 66 69 72 73    st) < 10 -> firs
02C590:  74 2C 20 66 69 72 73 74 20 2D 20 33 32 29 0D 0A    t, first - 32)..
02C5A0:  20 20 20 20 66 69 72 73 74 20 3A 3D 20 67 65 74        first := get
02C5B0:  63 68 72 28 29 0D 0A 20 20 24 29 0D 0A 20 20 69    chr()..  $)..  i
02C5C0:  64 66 6C 61 67 20 3A 3D 20 32 0D 0A 24 29 0D 0A    dflag := 2..$)..
02C5D0:  0D 0A 0D 0A 4C 45 54 20 73 74 72 69 6E 67 73 61    ....LET stringsa
02C5E0:  6D 65 28 73 74 72 69 6E 67 31 2C 20 73 74 72 69    me(string1, stri
02C5F0:  6E 67 32 29 20 3D 20 56 41 4C 4F 46 0D 0A 0D 0A    ng2) = VALOF....
02C600:  24 28 0D 0A 20 20 49 46 20 21 73 74 72 69 6E 67    $(..  IF !string
02C610:  31 20 4E 45 20 21 73 74 72 69 6E 67 32 20 54 48    1 NE !string2 TH
02C620:  45 4E 20 52 45 53 55 4C 54 49 53 20 46 41 4C 53    EN RESULTIS FALS
02C630:  45 0D 0A 20 20 46 4F 52 20 70 74 72 20 3D 20 31    E..  FOR ptr = 1
02C640:  20 54 4F 20 21 73 74 72 69 6E 67 31 0D 0A 20 20     TO !string1..  
02C650:  49 46 20 73 74 72 69 6E 67 31 21 70 74 72 20 4E    IF string1!ptr N
02C660:  45 20 73 74 72 69 6E 67 32 21 70 74 72 20 54 48    E string2!ptr TH
02C670:  45 4E 20 52 45 53 55 4C 54 49 53 20 46 41 4C 53    EN RESULTIS FALS
02C680:  45 0D 0A 20 20 52 45 53 55 4C 54 49 53 20 54 52    E..  RESULTIS TR
02C690:  55 45 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20    UE..$)......LET 
02C6A0:  73 79 73 77 6F 72 64 28 77 6F 72 64 29 20 3D 20    sysword(word) = 
02C6B0:  56 41 4C 4F 46 0D 0A 0D 0A 24 28 0D 0A 20 20 4C    VALOF....$(..  L
02C6C0:  45 54 20 73 74 61 72 74 20 3D 20 6B 65 79 77 6F    ET start = keywo
02C6D0:  72 64 73 0D 0A 20 20 57 48 49 4C 45 20 73 74 61    rds..  WHILE sta
02C6E0:  72 74 20 3C 20 6B 65 79 65 6E 64 20 44 4F 0D 0A    rt < keyend DO..
02C6F0:  20 20 24 28 0D 0A 20 20 20 20 49 46 20 73 74 72      $(..    IF str
02C700:  69 6E 67 73 61 6D 65 28 73 74 61 72 74 20 2B 20    ingsame(start + 
02C710:  31 2C 20 77 6F 72 64 29 20 54 48 45 4E 20 52 45    1, word) THEN RE
02C720:  53 55 4C 54 49 53 20 73 74 61 72 74 0D 0A 20 20    SULTIS start..  
02C730:  20 20 73 74 61 72 74 20 3A 3D 20 73 74 61 72 74      start := start
02C740:  20 2B 20 73 74 61 72 74 21 31 20 2B 20 32 0D 0A     + start!1 + 2..
02C750:  20 20 24 29 0D 0A 20 20 52 45 53 55 4C 54 49 53      $)..  RESULTIS
02C760:  20 46 41 4C 53 45 0D 0A 24 29 0D 0A 0D 0A 0D 0A     FALSE..$)......
02C770:  4C 45 54 20 69 64 73 70 61 63 65 28 29 20 42 45    LET idspace() BE
02C780:  0D 0A 0D 0A 24 28 0D 0A 20 20 49 46 20 69 64 66    ....$(..  IF idf
02C790:  6C 61 67 20 54 48 45 4E 20 6F 75 74 28 27 20 27    lag THEN out(' '
02C7A0:  29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 77    )..$)......LET w
02C7B0:  72 69 74 65 77 6F 72 64 28 77 6F 72 64 29 20 42    riteword(word) B
02C7C0:  45 0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 70    E....$(..  LET p
02C7D0:  74 72 2C 20 69 64 66 20 3D 20 73 79 73 77 6F 72    tr, idf = syswor
02C7E0:  64 28 77 6F 72 64 29 2C 20 31 0D 0A 20 20 54 45    d(word), 1..  TE
02C7F0:  53 54 20 70 74 72 20 54 48 45 4E 0D 0A 20 20 24    ST ptr THEN..  $
02C800:  28 0D 0A 20 20 20 20 49 46 20 21 70 74 72 20 4C    (..    IF !ptr L
02C810:  4F 47 4F 52 20 69 64 66 6C 61 67 20 54 48 45 4E    OGOR idflag THEN
02C820:  20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 20 46     out(' ')..    F
02C830:  4F 52 20 63 70 74 72 20 3D 20 31 20 54 4F 20 77    OR cptr = 1 TO w
02C840:  6F 72 64 21 30 20 6F 75 74 28 77 6F 72 64 21 63    ord!0 out(word!c
02C850:  70 74 72 20 2D 20 33 32 29 0D 0A 20 20 20 20 49    ptr - 32)..    I
02C860:  46 20 21 70 74 72 20 54 48 45 4E 0D 0A 20 20 20    F !ptr THEN..   
02C870:  20 24 28 0D 0A 20 20 20 20 20 20 6F 75 74 28 27     $(..      out('
02C880:  20 27 29 0D 0A 20 20 20 20 20 20 69 64 66 20 3A     ')..      idf :
02C890:  3D 20 30 0D 0A 20 20 20 20 24 29 0D 0A 20 20 24    = 0..    $)..  $
02C8A0:  29 0D 0A 20 20 45 4C 53 45 0D 0A 20 20 24 28 0D    )..  ELSE..  $(.
02C8B0:  0A 20 20 20 20 69 64 73 70 61 63 65 28 29 0D 0A    .    idspace()..
02C8C0:  20 20 20 20 46 4F 52 20 70 74 72 20 3D 20 31 20        FOR ptr = 1 
02C8D0:  54 4F 20 77 6F 72 64 21 30 20 44 4F 20 6F 75 74    TO word!0 DO out
02C8E0:  28 77 6F 72 64 21 70 74 72 29 0D 0A 20 20 20 20    (word!ptr)..    
02C8F0:  69 64 66 20 3A 3D 20 32 0D 0A 20 20 24 29 0D 0A    idf := 2..  $)..
02C900:  20 20 69 64 66 6C 61 67 20 3A 3D 20 69 64 66 0D      idflag := idf.
02C910:  0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 69 64 65    .$)......LET ide
02C920:  6E 74 28 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20    nt() BE....$(.. 
02C930:  20 4C 45 54 20 77 6F 72 64 62 75 66 66 20 3D 20     LET wordbuff = 
02C940:  56 45 43 20 32 30 0D 0A 20 20 4C 45 54 20 77 70    VEC 20..  LET wp
02C950:  74 72 20 3D 20 30 0D 0A 20 20 57 48 49 4C 45 20    tr = 0..  WHILE 
02C960:  27 61 27 20 3C 3D 20 6C 61 73 74 63 68 72 20 3C    'a' <= lastchr <
02C970:  3D 20 27 7A 27 20 4C 4F 47 4F 52 20 27 30 27 20    = 'z' LOGOR '0' 
02C980:  3C 3D 20 6C 61 73 74 63 68 72 20 3C 3D 20 27 39    <= lastchr <= '9
02C990:  27 20 44 4F 0D 0A 20 20 24 28 0D 0A 20 20 20 20    ' DO..  $(..    
02C9A0:  77 70 74 72 20 3A 3D 20 77 70 74 72 20 2B 20 31    wptr := wptr + 1
02C9B0:  0D 0A 20 20 20 20 77 6F 72 64 62 75 66 66 21 77    ..    wordbuff!w
02C9C0:  70 74 72 20 3A 3D 20 6C 61 73 74 63 68 72 0D 0A    ptr := lastchr..
02C9D0:  20 20 20 20 67 65 74 63 68 72 28 29 0D 0A 20 20        getchr()..  
02C9E0:  24 29 0D 0A 20 20 77 6F 72 64 62 75 66 66 21 30    $)..  wordbuff!0
02C9F0:  20 3A 3D 20 77 70 74 72 0D 0A 20 20 77 72 69 74     := wptr..  writ
02CA00:  65 77 6F 72 64 28 77 6F 72 64 62 75 66 66 29 0D    eword(wordbuff).
02CA10:  0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 73 74 72    .$)......LET str
02CA20:  63 68 72 28 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A    chr() BE....$(..
02CA30:  20 20 54 45 53 54 20 6C 61 73 74 63 68 72 20 3D      TEST lastchr =
02CA40:  20 27 2A 2A 27 20 54 48 45 4E 0D 0A 20 20 24 28     '**' THEN..  $(
02CA50:  0D 0A 20 20 20 20 6F 75 74 28 27 2A 2A 27 29 0D    ..    out('**').
02CA60:  0A 20 20 20 20 6F 75 74 28 72 61 77 63 68 72 28    .    out(rawchr(
02CA70:  29 29 0D 0A 20 20 24 29 0D 0A 20 20 45 4C 53 45    ))..  $)..  ELSE
02CA80:  20 6F 75 74 28 6C 61 73 74 63 68 72 29 0D 0A 20     out(lastchr).. 
02CA90:  20 72 61 77 63 68 72 28 29 0D 0A 24 29 0D 0A 0D     rawchr()..$)...
02CAA0:  0A 0D 0A 4C 45 54 20 63 6F 6E 64 6E 6C 28 29 20    ...LET condnl() 
02CAB0:  42 45 0D 0A 0D 0A 24 28 0D 0A 20 20 49 46 20 6E    BE....$(..  IF n
02CAC0:  6C 64 6F 6E 65 20 54 48 45 4E 20 6F 75 74 28 31    ldone THEN out(1
02CAD0:  33 29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 0D 0A 4C 45    3)..$)........LE
02CAE0:  54 20 70 75 6E 63 74 75 61 74 65 28 29 20 42 45    T punctuate() BE
02CAF0:  0D 0A 0D 0A 24 28 0D 0A 20 20 4C 45 54 20 74 65    ....$(..  LET te
02CB00:  6D 70 20 3D 20 30 0D 0A 20 20 53 57 49 54 43 48    mp = 0..  SWITCH
02CB10:  4F 4E 20 6C 61 73 74 63 68 72 20 49 4E 54 4F 0D    ON lastchr INTO.
02CB20:  0A 20 20 24 28 0D 0A 20 20 20 20 43 41 53 45 20    .  $(..    CASE 
02CB30:  27 24 27 3A 0D 0A 20 20 20 20 63 6F 6E 64 6E 6C    '$':..    condnl
02CB40:  28 29 0D 0A 20 20 20 20 74 65 6D 70 20 3A 3D 20    ()..    temp := 
02CB50:  67 65 74 63 68 72 28 29 0D 0A 20 20 20 20 67 65    getchr()..    ge
02CB60:  74 63 68 72 28 29 0D 0A 20 20 20 20 54 45 53 54    tchr()..    TEST
02CB70:  20 74 65 6D 70 20 3D 20 27 28 27 20 54 48 45 4E     temp = '(' THEN
02CB80:  0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20    ..    $(..      
02CB90:  6F 75 74 28 27 24 27 29 0D 0A 20 20 20 20 20 20    out('$')..      
02CBA0:  6F 75 74 28 27 28 27 29 0D 0A 20 20 20 20 20 20    out('(')..      
02CBB0:  69 64 65 6E 74 28 29 0D 0A 20 20 20 20 20 20 69    ident()..      i
02CBC0:  6E 64 65 6E 74 20 3A 3D 20 69 6E 64 65 6E 74 20    ndent := indent 
02CBD0:  2B 20 69 6E 64 65 6E 74 73 69 7A 65 0D 0A 20 20    + indentsize..  
02CBE0:  20 20 24 29 0D 0A 20 20 20 20 45 4C 53 45 0D 0A      $)..    ELSE..
02CBF0:  20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 69 6E        $(..      in
02CC00:  64 65 6E 74 20 3A 3D 20 69 6E 64 65 6E 74 20 2D    dent := indent -
02CC10:  20 69 6E 64 65 6E 74 73 69 7A 65 0D 0A 20 20 20     indentsize..   
02CC20:  20 20 20 6F 75 74 28 27 24 27 29 0D 0A 20 20 20       out('$')..   
02CC30:  20 20 20 6F 75 74 28 27 29 27 29 0D 0A 20 20 20       out(')')..   
02CC40:  20 20 20 69 64 65 6E 74 28 29 0D 0A 20 20 20 20       ident()..    
02CC50:  24 29 0D 0A 20 20 20 20 55 4E 4C 45 53 53 20 6C    $)..    UNLESS l
02CC60:  61 73 74 63 68 72 20 3D 20 31 33 20 54 48 45 4E    astchr = 13 THEN
02CC70:  20 6F 75 74 28 31 33 29 0D 0A 20 20 20 20 45 4E     out(13)..    EN
02CC80:  44 43 41 53 45 0D 0A 20 20 20 20 43 41 53 45 20    DCASE..    CASE 
02CC90:  27 3B 27 3A 0D 0A 20 20 20 20 6F 75 74 28 31 33    ';':..    out(13
02CCA0:  29 0D 0A 20 20 20 20 67 65 74 63 68 72 28 29 0D    )..    getchr().
02CCB0:  0A 20 20 20 20 45 4E 44 43 41 53 45 0D 0A 20 20    .    ENDCASE..  
02CCC0:  20 20 43 41 53 45 20 27 22 27 3A 0D 0A 20 20 20      CASE '"':..   
02CCD0:  20 69 64 73 70 61 63 65 28 29 0D 0A 20 20 20 20     idspace()..    
02CCE0:  6F 75 74 28 27 22 27 29 0D 0A 20 20 20 20 72 61    out('"')..    ra
02CCF0:  77 63 68 72 28 29 0D 0A 20 20 20 20 55 4E 54 49    wchr()..    UNTI
02CD00:  4C 20 6C 61 73 74 63 68 72 20 3D 20 27 22 27 20    L lastchr = '"' 
02CD10:  73 74 72 63 68 72 28 29 0D 0A 20 20 20 20 6F 75    strchr()..    ou
02CD20:  74 28 27 22 27 29 0D 0A 20 20 20 20 67 65 74 63    t('"')..    getc
02CD30:  68 72 28 29 0D 0A 20 20 20 20 69 64 66 6C 61 67    hr()..    idflag
02CD40:  20 3A 3D 20 32 0D 0A 20 20 20 20 52 45 54 55 52     := 2..    RETUR
02CD50:  4E 0D 0A 20 20 20 20 43 41 53 45 20 27 3C 27 3A    N..    CASE '<':
02CD60:  20 43 41 53 45 20 27 3E 27 3A 0D 0A 20 20 20 20     CASE '>':..    
02CD70:  74 65 6D 70 20 3A 3D 20 6C 61 73 74 63 68 72 0D    temp := lastchr.
02CD80:  0A 20 20 20 20 67 65 74 63 68 72 28 29 0D 0A 20    .    getchr().. 
02CD90:  20 20 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20       out(' ')..   
02CDA0:  20 54 45 53 54 20 6C 61 73 74 63 68 72 20 3D 20     TEST lastchr = 
02CDB0:  27 3D 27 20 4C 4F 47 4F 52 20 6C 61 73 74 63 68    '=' LOGOR lastch
02CDC0:  72 20 3D 20 74 65 6D 70 20 54 48 45 4E 0D 0A 20    r = temp THEN.. 
02CDD0:  20 20 20 24 28 0D 0A 20 20 20 20 20 20 6F 75 74       $(..      out
02CDE0:  28 74 65 6D 70 29 0D 0A 20 20 20 20 20 20 6F 75    (temp)..      ou
02CDF0:  74 28 6C 61 73 74 63 68 72 29 0D 0A 20 20 20 20    t(lastchr)..    
02CE00:  20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 20 20      getchr()..    
02CE10:  24 29 0D 0A 20 20 20 20 45 4C 53 45 20 6F 75 74    $)..    ELSE out
02CE20:  28 74 65 6D 70 29 0D 0A 20 20 20 20 6F 75 74 28    (temp)..    out(
02CE30:  27 20 27 29 0D 0A 20 20 20 20 45 4E 44 43 41 53    ' ')..    ENDCAS
02CE40:  45 0D 0A 20 20 20 20 43 41 53 45 20 27 3A 27 3A    E..    CASE ':':
02CE50:  0D 0A 20 20 20 20 54 45 53 54 20 67 65 74 63 68    ..    TEST getch
02CE60:  72 28 29 20 3D 20 27 3D 27 20 54 48 45 4E 0D 0A    r() = '=' THEN..
02CE70:  20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 6F 75        $(..      ou
02CE80:  74 28 27 20 27 29 0D 0A 20 20 20 20 20 20 6F 75    t(' ')..      ou
02CE90:  74 28 27 3A 27 29 0D 0A 20 20 20 20 20 20 6F 75    t(':')..      ou
02CEA0:  74 28 27 3D 27 29 0D 0A 20 20 20 20 20 20 6F 75    t('=')..      ou
02CEB0:  74 28 27 20 27 29 0D 0A 20 20 20 20 20 20 67 65    t(' ')..      ge
02CEC0:  74 63 68 72 28 29 0D 0A 20 20 20 20 24 29 0D 0A    tchr()..    $)..
02CED0:  20 20 20 20 45 4C 53 45 0D 0A 20 20 20 20 24 28        ELSE..    $(
02CEE0:  0D 0A 20 20 20 20 20 20 6F 75 74 28 27 3A 27 29    ..      out(':')
02CEF0:  0D 0A 20 20 20 20 20 20 69 64 66 6C 61 67 20 3A    ..      idflag :
02CF00:  3D 20 31 0D 0A 20 20 20 20 20 20 52 45 54 55 52    = 1..      RETUR
02CF10:  4E 0D 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45    N..    $)..    E
02CF20:  4E 44 43 41 53 45 0D 0A 20 20 20 20 43 41 53 45    NDCASE..    CASE
02CF30:  20 27 2D 27 3A 0D 0A 20 20 20 20 6F 75 74 28 27     '-':..    out('
02CF40:  20 27 29 0D 0A 20 20 20 20 54 45 53 54 20 67 65     ')..    TEST ge
02CF50:  74 63 68 72 28 29 20 3D 20 27 3E 27 20 54 48 45    tchr() = '>' THE
02CF60:  4E 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 20 20    N..    $(..     
02CF70:  20 6F 75 74 28 27 2D 27 29 0D 0A 20 20 20 20 20     out('-')..     
02CF80:  20 6F 75 74 28 27 3E 27 29 0D 0A 20 20 20 20 20     out('>')..     
02CF90:  20 67 65 74 63 68 72 28 29 0D 0A 20 20 20 20 24     getchr()..    $
02CFA0:  29 0D 0A 20 20 20 20 45 4C 53 45 20 6F 75 74 28    )..    ELSE out(
02CFB0:  27 2D 27 29 0D 0A 20 20 20 20 6F 75 74 28 27 20    '-')..    out(' 
02CFC0:  27 29 0D 0A 20 20 20 20 45 4E 44 43 41 53 45 0D    ')..    ENDCASE.
02CFD0:  0A 20 20 20 20 43 41 53 45 20 27 2F 27 3A 0D 0A    .    CASE '/':..
02CFE0:  20 20 20 20 67 65 74 63 68 72 28 29 0D 0A 20 20        getchr()..  
02CFF0:  20 20 54 45 53 54 20 6C 61 73 74 63 68 72 20 3D      TEST lastchr =
02D000:  20 27 2A 2A 27 20 54 48 45 4E 0D 0A 20 20 20 20     '**' THEN..    
02D010:  24 28 0D 0A 20 20 20 20 20 20 74 65 6D 70 20 3A    $(..      temp :
02D020:  3D 20 69 6E 64 65 6E 74 0D 0A 20 20 20 20 20 20    = indent..      
02D030:  69 6E 64 65 6E 74 20 3A 3D 20 30 0D 0A 20 20 20    indent := 0..   
02D040:  20 20 20 63 6F 6E 64 6E 6C 28 29 0D 0A 20 20 20       condnl()..   
02D050:  20 20 20 6F 75 74 28 27 2F 27 29 0D 0A 20 20 20       out('/')..   
02D060:  20 20 20 6F 75 74 28 27 2A 2A 27 29 0D 0A 20 20       out('**')..  
02D070:  20 20 20 20 72 61 77 63 68 72 28 29 0D 0A 20 20        rawchr()..  
02D080:  20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 20 20        $(..        
02D090:  55 4E 54 49 4C 20 6C 61 73 74 63 68 72 20 3D 20    UNTIL lastchr = 
02D0A0:  27 2A 2A 27 20 44 4F 0D 0A 20 20 20 20 20 20 20    '**' DO..       
02D0B0:  20 24 28 0D 0A 20 20 20 20 20 20 20 20 20 20 6F     $(..          o
02D0C0:  75 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 20 20    ut(lastchr)..   
02D0D0:  20 20 20 20 20 20 20 72 61 77 63 68 72 28 29 0D           rawchr().
02D0E0:  0A 20 20 20 20 20 20 20 20 24 29 0D 0A 20 20 20    .        $)..   
02D0F0:  20 20 20 20 20 6F 75 74 28 27 2A 2A 27 29 0D 0A         out('**')..
02D100:  20 20 20 20 20 20 20 20 72 61 77 63 68 72 28 29            rawchr()
02D110:  0D 0A 20 20 20 20 20 20 24 29 0D 0A 20 20 20 20    ..      $)..    
02D120:  20 20 52 45 50 45 41 54 55 4E 54 49 4C 20 6C 61      REPEATUNTIL la
02D130:  73 74 63 68 72 20 3D 20 27 2F 27 0D 0A 20 20 20    stchr = '/'..   
02D140:  20 20 20 6F 75 74 28 27 2F 27 29 0D 0A 20 20 20       out('/')..   
02D150:  20 20 20 6F 75 74 28 31 33 29 0D 0A 20 20 20 20       out(13)..    
02D160:  20 20 49 46 20 67 65 74 63 68 72 28 29 20 3D 20      IF getchr() = 
02D170:  31 33 20 54 48 45 4E 20 67 65 74 63 68 72 28 29    13 THEN getchr()
02D180:  0D 0A 20 20 20 20 20 20 69 6E 64 65 6E 74 20 3A    ..      indent :
02D190:  3D 20 74 65 6D 70 0D 0A 20 20 20 20 24 29 0D 0A    = temp..    $)..
02D1A0:  20 20 20 20 45 4C 53 45 20 54 45 53 54 20 6C 61        ELSE TEST la
02D1B0:  73 74 63 68 72 20 3D 20 27 2F 27 20 54 48 45 4E    stchr = '/' THEN
02D1C0:  0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 20 20 20    ..    $(..      
02D1D0:  49 46 20 63 6F 6C 75 6D 6E 20 3E 20 63 6F 6D 6D    IF column > comm
02D1E0:  65 6E 74 73 20 54 48 45 4E 20 6F 75 74 28 31 33    ents THEN out(13
02D1F0:  29 0D 0A 20 20 20 20 20 20 46 4F 52 20 61 20 3D    )..      FOR a =
02D200:  20 63 6F 6C 75 6D 6E 20 54 4F 20 63 6F 6D 6D 65     column TO comme
02D210:  6E 74 73 20 6F 75 74 28 27 20 27 29 0D 0A 20 20    nts out(' ')..  
02D220:  20 20 20 20 6F 75 74 28 27 2F 27 29 0D 0A 20 20        out('/')..  
02D230:  20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 20 20        $(..        
02D240:  6F 75 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 20    out(lastchr)..  
02D250:  20 20 20 20 20 20 72 61 77 63 68 72 28 29 0D 0A          rawchr()..
02D260:  20 20 20 20 20 20 24 29 0D 0A 20 20 20 20 20 20          $)..      
02D270:  52 45 50 45 41 54 55 4E 54 49 4C 20 6C 61 73 74    REPEATUNTIL last
02D280:  63 68 72 20 3D 20 31 33 0D 0A 20 20 20 20 20 20    chr = 13..      
02D290:  6F 75 74 28 31 33 29 0D 0A 0D 0A 20 20 20 20 20    out(13)....     
02D2A0:  20 49 46 20 67 65 74 63 68 72 28 29 20 3D 20 31     IF getchr() = 1
02D2B0:  33 20 54 48 45 4E 20 67 65 74 63 68 72 28 29 0D    3 THEN getchr().
02D2C0:  0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45 4C 53    .    $)..    ELS
02D2D0:  45 20 54 45 53 54 20 6C 61 73 74 63 68 72 20 3D    E TEST lastchr =
02D2E0:  20 27 5C 27 20 54 48 45 4E 0D 0A 20 20 20 20 24     '\' THEN..    $
02D2F0:  28 0D 0A 20 20 20 20 20 20 6F 75 74 28 27 20 27    (..      out(' '
02D300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
02D310:  26 00 00 00 02 09 50 E5 26 00 C1 02 00 00 00 02    &.....P.&.......
02D320:  26 00 C2 02 00 00 00 02 26 00 C3 02 00 00 00 02    &.......&.......
02D330:  26 00 C4 02 00 00 00 02 26 00 C5 02 00 00 00 02    &.......&.......
02D340:  26 00 C6 02 00 00 00 02 26 00 C7 02 00 00 00 02    &.......&.......
02D350:  26 00 C8 02 00 00 00 02 26 00 C9 02 00 00 00 02    &.......&.......
02D360:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D370:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D380:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D390:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D3A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D3B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D3C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D3D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D3E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D3F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D400:  29 0D 0A 20 20 20 20 20 20 6F 75 74 28 27 2F 27    )..      out('/'
02D410:  29 0D 0A 20 20 20 20 20 20 6F 75 74 28 27 5C 27    )..      out('\'
02D420:  29 0D 0A 20 20 20 20 20 20 6F 75 74 28 27 20 27    )..      out(' '
02D430:  29 0D 0A 20 20 20 20 20 20 67 65 74 63 68 72 28    )..      getchr(
02D440:  29 0D 0A 20 20 20 20 24 29 0D 0A 20 20 20 20 45    )..    $)..    E
02D450:  4C 53 45 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20    LSE..    $(..   
02D460:  20 20 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20       out(' ')..   
02D470:  20 20 20 6F 75 74 28 27 2F 27 29 0D 0A 20 20 20       out('/')..   
02D480:  20 20 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20       out(' ')..   
02D490:  20 24 29 0D 0A 20 20 20 20 45 4E 44 43 41 53 45     $)..    ENDCASE
02D4A0:  0D 0A 20 20 20 20 43 41 53 45 20 27 5C 27 3A 0D    ..    CASE '\':.
02D4B0:  0A 20 20 20 20 67 65 74 63 68 72 28 29 0D 0A 20    .    getchr().. 
02D4C0:  20 20 20 54 45 53 54 20 6C 61 73 74 63 68 72 20       TEST lastchr 
02D4D0:  3D 20 27 3D 27 20 4C 4F 47 4F 52 20 6C 61 73 74    = '=' LOGOR last
02D4E0:  63 68 72 20 3D 20 27 2F 27 20 54 48 45 4E 0D 0A    chr = '/' THEN..
02D4F0:  20 20 20 20 24 28 0D 0A 20 20 20 20 20 20 6F 75        $(..      ou
02D500:  74 28 27 20 27 29 0D 0A 20 20 20 20 20 20 6F 75    t(' ')..      ou
02D510:  74 28 27 5C 27 29 0D 0A 20 20 20 20 20 20 6F 75    t('\')..      ou
02D520:  74 28 6C 61 73 74 63 68 72 29 0D 0A 20 20 20 20    t(lastchr)..    
02D530:  20 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 20      out(' ')..    
02D540:  20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 20 20      getchr()..    
02D550:  24 29 0D 0A 20 20 20 20 45 4C 53 45 20 6F 75 74    $)..    ELSE out
02D560:  28 27 5C 27 29 0D 0A 20 20 20 20 45 4E 44 43 41    ('\')..    ENDCA
02D570:  53 45 0D 0A 20 20 20 20 43 41 53 45 20 27 29 27    SE..    CASE ')'
02D580:  3A 20 43 41 53 45 20 27 5D 27 3A 0D 0A 20 20 20    : CASE ']':..   
02D590:  20 6F 75 74 28 6C 61 73 74 63 68 72 29 0D 0A 20     out(lastchr).. 
02D5A0:  20 20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 20       getchr()..   
02D5B0:  20 69 64 66 6C 61 67 20 3A 3D 20 32 0D 0A 20 20     idflag := 2..  
02D5C0:  20 20 52 45 54 55 52 4E 0D 0A 20 20 20 20 43 41      RETURN..    CA
02D5D0:  53 45 20 27 27 27 3A 0D 0A 20 20 20 20 69 64 73    SE ''':..    ids
02D5E0:  70 61 63 65 28 29 0D 0A 20 20 20 20 6F 75 74 28    pace()..    out(
02D5F0:  27 27 27 29 0D 0A 20 20 20 20 72 61 77 63 68 72    ''')..    rawchr
02D600:  28 29 0D 0A 0D 0A 20 20 20 20 73 74 72 63 68 72    ()....    strchr
02D610:  28 29 0D 0A 20 20 20 20 6F 75 74 28 27 27 27 29    ()..    out(''')
02D620:  0D 0A 20 20 20 20 67 65 74 63 68 72 28 29 0D 0A    ..    getchr()..
02D630:  20 20 20 20 69 64 66 6C 61 67 20 3A 3D 20 32 0D        idflag := 2.
02D640:  0A 20 20 20 20 52 45 54 55 52 4E 0D 0A 20 20 20    .    RETURN..   
02D650:  20 43 41 53 45 20 27 21 27 3A 0D 0A 20 20 20 20     CASE '!':..    
02D660:  49 46 20 69 64 66 6C 61 67 20 3D 20 31 20 54 48    IF idflag = 1 TH
02D670:  45 4E 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20    EN out(' ')..   
02D680:  20 6F 75 74 28 27 21 27 29 0D 0A 20 20 20 20 67     out('!')..    g
02D690:  65 74 63 68 72 28 29 0D 0A 20 20 20 20 45 4E 44    etchr()..    END
02D6A0:  43 41 53 45 0D 0A 20 20 20 20 43 41 53 45 20 27    CASE..    CASE '
02D6B0:  2B 27 3A 20 43 41 53 45 20 27 26 27 3A 20 43 41    +': CASE '&': CA
02D6C0:  53 45 20 27 7C 27 3A 20 43 41 53 45 20 27 3D 27    SE '|': CASE '='
02D6D0:  3A 20 43 41 53 45 20 27 2A 2A 27 3A 0D 0A 20 20    : CASE '**':..  
02D6E0:  20 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 20      out(' ')..    
02D6F0:  6F 75 74 28 6C 61 73 74 63 68 72 29 0D 0A 20 20    out(lastchr)..  
02D700:  20 20 6F 75 74 28 27 20 27 29 0D 0A 20 20 20 20      out(' ')..    
02D710:  67 65 74 63 68 72 28 29 0D 0A 20 20 20 20 45 4E    getchr()..    EN
02D720:  44 43 41 53 45 0D 0A 20 20 20 20 43 41 53 45 20    DCASE..    CASE 
02D730:  27 2C 27 3A 0D 0A 20 20 20 20 6F 75 74 28 6C 61    ',':..    out(la
02D740:  73 74 63 68 72 29 0D 0A 20 20 20 20 6F 75 74 28    stchr)..    out(
02D750:  27 20 27 29 0D 0A 20 20 20 20 67 65 74 63 68 72    ' ')..    getchr
02D760:  28 29 0D 0A 20 20 20 20 45 4E 44 43 41 53 45 0D    ()..    ENDCASE.
02D770:  0A 20 20 20 20 44 45 46 41 55 4C 54 3A 20 6F 75    .    DEFAULT: ou
02D780:  74 28 6C 61 73 74 63 68 72 29 0D 0A 20 20 20 20    t(lastchr)..    
02D790:  67 65 74 63 68 72 28 29 0D 0A 20 20 24 29 0D 0A    getchr()..  $)..
02D7A0:  20 20 69 64 66 6C 61 67 20 3A 3D 20 46 41 4C 53      idflag := FALS
02D7B0:  45 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 62    E..$)......LET b
02D7C0:  65 61 75 74 69 66 79 28 29 20 42 45 0D 0A 0D 0A    eautify() BE....
02D7D0:  24 28 0D 0A 20 20 4C 45 54 20 74 65 6D 70 20 3D    $(..  LET temp =
02D7E0:  20 30 0D 0A 20 20 57 48 49 4C 45 20 28 6C 61 73     0..  WHILE (las
02D7F0:  74 63 68 72 20 4E 45 20 65 6E 64 73 74 72 65 61    tchr NE endstrea
02D800:  6D 63 68 29 20 26 20 28 6C 61 73 74 63 68 72 20    mch) & (lastchr 
02D810:  4E 45 20 73 6F 66 74 65 6F 66 63 68 29 20 44 4F    NE softeofch) DO
02D820:  0D 0A 20 20 24 28 0D 0A 20 20 20 20 57 48 49 4C    ..  $(..    WHIL
02D830:  45 20 73 70 61 63 65 28 6C 61 73 74 63 68 72 29    E space(lastchr)
02D840:  20 44 4F 20 67 65 74 63 68 72 28 29 0D 0A 20 20     DO getchr()..  
02D850:  20 20 54 45 53 54 20 27 61 27 20 3C 3D 20 6C 61      TEST 'a' <= la
02D860:  73 74 63 68 72 20 3C 3D 20 27 7A 27 20 54 48 45    stchr <= 'z' THE
02D870:  4E 20 69 64 65 6E 74 28 29 0D 0A 20 20 20 20 45    N ident()..    E
02D880:  4C 53 45 20 54 45 53 54 20 27 30 27 20 3C 3D 20    LSE TEST '0' <= 
02D890:  6C 61 73 74 63 68 72 20 3C 3D 20 27 39 27 20 54    lastchr <= '9' T
02D8A0:  48 45 4E 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20    HEN..    $(..   
02D8B0:  20 20 20 69 64 73 70 61 63 65 28 29 0D 0A 20 20       idspace()..  
02D8C0:  20 20 20 20 72 65 61 64 6E 75 6D 28 31 30 2C 20        readnum(10, 
02D8D0:  6C 61 73 74 63 68 72 29 0D 0A 20 20 20 20 24 29    lastchr)..    $)
02D8E0:  0D 0A 20 20 20 20 45 4C 53 45 20 54 45 53 54 20    ..    ELSE TEST 
02D8F0:  6C 61 73 74 63 68 72 20 3D 20 27 23 27 20 54 48    lastchr = '#' TH
02D900:  45 4E 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20 20    EN..    $(..    
02D910:  20 20 69 64 73 70 61 63 65 28 29 0D 0A 20 20 20      idspace()..   
02D920:  20 20 20 6F 75 74 28 27 23 27 29 0D 0A 20 20 20       out('#')..   
02D930:  20 20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 20       getchr()..   
02D940:  20 20 20 53 57 49 54 43 48 4F 4E 20 6C 61 73 74       SWITCHON last
02D950:  63 68 72 20 49 4E 54 4F 0D 0A 20 20 20 20 20 20    chr INTO..      
02D960:  24 28 0D 0A 20 20 20 20 20 20 20 20 43 41 53 45    $(..        CASE
02D970:  20 27 78 27 3A 20 6F 75 74 28 27 78 27 29 0D 0A     'x': out('x')..
02D980:  20 20 20 20 20 20 20 20 72 65 61 64 6E 75 6D 28            readnum(
02D990:  31 36 2C 20 67 65 74 63 68 72 28 29 29 0D 0A 20    16, getchr()).. 
02D9A0:  20 20 20 20 20 20 20 45 4E 44 43 41 53 45 0D 0A           ENDCASE..
02D9B0:  20 20 20 20 20 20 20 20 43 41 53 45 20 27 62 27            CASE 'b'
02D9C0:  3A 20 6F 75 74 28 27 62 27 29 0D 0A 20 20 20 20    : out('b')..    
02D9D0:  20 20 20 20 72 65 61 64 6E 75 6D 28 32 2C 20 67        readnum(2, g
02D9E0:  65 74 63 68 72 28 29 29 0D 0A 20 20 20 20 20 20    etchr())..      
02D9F0:  20 20 45 4E 44 43 41 53 45 0D 0A 20 20 20 20 20      ENDCASE..     
02DA00:  20 20 20 43 41 53 45 20 27 6F 27 3A 20 6F 75 74       CASE 'o': out
02DA10:  28 27 6F 27 29 0D 0A 20 20 20 20 20 20 20 20 72    ('o')..        r
02DA20:  65 61 64 6E 75 6D 28 38 2C 20 67 65 74 63 68 72    eadnum(8, getchr
02DA30:  28 29 29 0D 0A 20 20 20 20 20 20 20 20 45 4E 44    ())..        END
02DA40:  43 41 53 45 0D 0A 20 20 20 20 20 20 20 20 44 45    CASE..        DE
02DA50:  46 41 55 4C 54 3A 20 72 65 61 64 6E 75 6D 28 38    FAULT: readnum(8
02DA60:  2C 20 6C 61 73 74 63 68 72 29 0D 0A 20 20 20 20    , lastchr)..    
02DA70:  20 20 24 29 0D 0A 20 20 20 20 24 29 0D 0A 20 20      $)..    $)..  
02DA80:  20 20 45 4C 53 45 20 54 45 53 54 20 6C 61 73 74      ELSE TEST last
02DA90:  63 68 72 20 3D 20 31 33 20 54 48 45 4E 0D 0A 20    chr = 13 THEN.. 
02DAA0:  20 20 20 24 28 0D 0A 20 20 20 20 20 20 6F 75 74       $(..      out
02DAB0:  28 31 33 29 0D 0A 20 20 20 20 20 20 67 65 74 63    (13)..      getc
02DAC0:  68 72 28 29 0D 0A 20 20 20 20 24 29 0D 0A 20 20    hr()..    $)..  
02DAD0:  20 20 45 4C 53 45 20 70 75 6E 63 74 75 61 74 65      ELSE punctuate
02DAE0:  28 29 0D 0A 20 20 24 29 0D 0A 24 29 0D 0A 0D 0A    ()..  $)..$)....
02DAF0:  0D 0A 4C 45 54 20 66 69 6C 65 73 28 29 20 42 45    ..LET files() BE
02DB00:  0D 0A 24 28 0D 0A 20 20 4C 45 54 20 6E 61 6D 65    ..$(..  LET name
02DB10:  69 6E 20 3D 20 56 45 43 20 31 30 0D 0A 20 20 41    in = VEC 10..  A
02DB20:  4E 44 20 6E 61 6D 65 6F 75 74 20 3D 20 56 45 43    ND nameout = VEC
02DB30:  20 31 30 0D 0A 20 20 77 72 69 74 65 73 28 22 45     10..  writes("E
02DB40:  6E 74 65 72 20 74 68 65 20 69 6E 70 75 74 20 66    nter the input f
02DB50:  69 6C 65 20 6E 61 6D 65 3A 20 20 22 29 0D 0A 20    ile name:  ").. 
02DB60:  20 72 65 61 64 73 28 6E 61 6D 65 69 6E 29 0D 0A     reads(namein)..
02DB70:  20 20 6E 65 77 6C 69 6E 65 28 29 0D 0A 20 20 77      newline()..  w
02DB80:  72 69 74 65 73 28 22 45 6E 74 65 72 20 74 68 65    rites("Enter the
02DB90:  20 6F 75 74 70 75 74 20 66 69 6C 65 20 6E 61 6D     output file nam
02DBA0:  65 3A 20 22 29 0D 0A 20 20 72 65 61 64 73 28 6E    e: ")..  reads(n
02DBB0:  61 6D 65 6F 75 74 29 0D 0A 20 20 6E 65 77 6C 69    ameout)..  newli
02DBC0:  6E 65 28 29 0D 0A 20 20 55 4E 4C 45 53 53 20 66    ne()..  UNLESS f
02DBD0:  69 6E 64 69 6E 70 75 74 28 6E 61 6D 65 69 6E 2C    indinput(namein,
02DBE0:  20 69 6E 70 75 74 29 20 54 48 45 4E 20 65 72 72     input) THEN err
02DBF0:  28 22 43 61 6E 27 74 20 6F 70 65 6E 20 69 6E 70    ("Can't open inp
02DC00:  75 74 22 29 0D 0A 20 20 55 4E 4C 45 53 53 20 66    ut")..  UNLESS f
02DC10:  69 6E 64 6F 75 74 70 75 74 28 6E 61 6D 65 6F 75    indoutput(nameou
02DC20:  74 2C 20 6F 75 74 70 75 74 29 20 54 48 45 4E 20    t, output) THEN 
02DC30:  65 72 72 28 22 43 61 6E 27 74 20 6F 70 65 6E 20    err("Can't open 
02DC40:  6F 75 74 70 75 74 22 29 0D 0A 24 29 0D 0A 0D 0A    output")..$)....
02DC50:  0D 0A 0D 0A 4C 45 54 20 72 65 61 64 77 6F 72 64    ....LET readword
02DC60:  73 28 73 74 72 69 6E 67 29 20 42 45 0D 0A 0D 0A    s(string) BE....
02DC70:  24 28 0D 0A 20 20 4C 45 54 20 6C 65 6E 67 74 68    $(..  LET length
02DC80:  2C 20 72 65 73 74 2C 20 6C 65 6E 67 74 68 70 74    , rest, lengthpt
02DC90:  72 20 3D 20 73 74 72 69 6E 67 25 30 2C 20 31 2C    r = string%0, 1,
02DCA0:  20 30 0D 0A 20 20 57 48 49 4C 45 20 6C 65 6E 67     0..  WHILE leng
02DCB0:  74 68 20 3E 20 72 65 73 74 20 44 4F 0D 0A 20 20    th > rest DO..  
02DCC0:  24 28 0D 0A 20 20 20 20 54 45 53 54 20 73 74 72    $(..    TEST str
02DCD0:  69 6E 67 25 72 65 73 74 20 3D 20 27 42 27 20 54    ing%rest = 'B' T
02DCE0:  48 45 4E 0D 0A 20 20 20 20 24 28 0D 0A 20 20 20    HEN..    $(..   
02DCF0:  20 20 20 21 6B 65 79 65 6E 64 20 3A 3D 20 54 52       !keyend := TR
02DD00:  55 45 0D 0A 20 20 20 20 20 20 72 65 73 74 20 3A    UE..      rest :
02DD10:  3D 20 72 65 73 74 20 2B 20 31 0D 0A 20 20 20 20    = rest + 1..    
02DD20:  24 29 0D 0A 20 20 20 20 45 4C 53 45 20 21 6B 65    $)..    ELSE !ke
02DD30:  79 65 6E 64 20 3A 3D 20 46 41 4C 53 45 0D 0A 20    yend := FALSE.. 
02DD40:  20 20 20 6C 65 6E 67 74 68 70 74 72 20 3A 3D 20       lengthptr := 
02DD50:  6B 65 79 65 6E 64 20 2B 20 31 0D 0A 20 20 20 20    keyend + 1..    
02DD60:  6B 65 79 65 6E 64 20 3A 3D 20 6B 65 79 65 6E 64    keyend := keyend
02DD70:  20 2B 20 32 0D 0A 20 20 20 20 21 6C 65 6E 67 74     + 2..    !lengt
02DD80:  68 70 74 72 20 3A 3D 20 30 0D 0A 20 20 20 20 57    hptr := 0..    W
02DD90:  48 49 4C 45 20 73 74 72 69 6E 67 25 72 65 73 74    HILE string%rest
02DDA0:  20 4E 45 20 27 2C 27 20 44 4F 0D 0A 20 20 20 20     NE ',' DO..    
02DDB0:  24 28 0D 0A 20 20 20 20 20 20 21 6B 65 79 65 6E    $(..      !keyen
02DDC0:  64 20 3A 3D 20 73 74 72 69 6E 67 25 72 65 73 74    d := string%rest
02DDD0:  0D 0A 20 20 20 20 20 20 6B 65 79 65 6E 64 2C 20    ..      keyend, 
02DDE0:  72 65 73 74 2C 20 21 6C 65 6E 67 74 68 70 74 72    rest, !lengthptr
02DDF0:  20 3A 3D 20 6B 65 79 65 6E 64 20 2B 20 31 2C 20     := keyend + 1, 
02DE00:  72 65 73 74 20 2B 20 31 2C 20 21 6C 65 6E 67 74    rest + 1, !lengt
02DE10:  68 70 74 72 20 2B 20 31 0D 0A 20 20 20 20 24 29    hptr + 1..    $)
02DE20:  0D 0A 20 20 20 20 72 65 73 74 20 3A 3D 20 72 65    ..    rest := re
02DE30:  73 74 20 2B 20 31 0D 0A 20 20 24 29 0D 0A 24 29    st + 1..  $)..$)
02DE40:  0D 0A 0D 0A 0D 0A 41 4E 44 20 72 65 61 64 73 79    ......AND readsy
02DE50:  73 28 29 20 42 45 0D 0A 0D 0A 24 28 0D 0A 20 20    s() BE....$(..  
02DE60:  72 65 61 64 77 6F 72 64 73 28 22 61 6E 64 2C 62    readwords("and,b
02DE70:  65 2C 62 72 65 61 6B 2C 62 79 2C 63 61 73 65 2C    e,break,by,case,
02DE80:  64 6F 2C 64 65 66 61 75 6C 74 2C 42 65 71 2C 42    do,default,Beq,B
02DE90:  65 71 76 2C 65 6C 73 65 2C 65 6E 64 63 61 73 65    eqv,else,endcase
02DEA0:  2C 66 61 6C 73 65 2C 66 6F 72 2C 22 29 0D 0A 20    ,false,for,").. 
02DEB0:  20 72 65 61 64 77 6F 72 64 73 28 22 66 69 6E 69     readwords("fini
02DEC0:  73 68 2C 67 6F 74 6F 2C 42 67 65 2C 42 67 72 2C    sh,goto,Bge,Bgr,
02DED0:  67 6C 6F 62 61 6C 2C 67 65 74 2C 69 66 2C 69 6E    global,get,if,in
02DEE0:  74 6F 2C 6C 65 74 2C 42 6C 76 2C 42 6C 65 2C 42    to,let,Blv,Ble,B
02DEF0:  6C 73 2C 42 6C 6F 67 6F 72 2C 42 6C 6F 67 61 6E    ls,Blogor,Blogan
02DF00:  64 2C 22 29 0D 0A 20 20 72 65 61 64 77 6F 72 64    d,")..  readword
02DF10:  73 28 22 6C 6F 6F 70 2C 42 6C 73 68 69 66 74 2C    s("loop,Blshift,
02DF20:  6D 61 6E 69 66 65 73 74 2C 42 6E 65 2C 6E 6F 74    manifest,Bne,not
02DF30:  2C 42 6E 65 71 76 2C 6F 72 2C 72 65 73 75 6C 74    ,Bneqv,or,result
02DF40:  69 73 2C 72 65 74 75 72 6E 2C 42 72 65 6D 2C 42    is,return,Brem,B
02DF50:  72 73 68 69 66 74 2C 22 29 0D 0A 20 20 72 65 61    rshift,")..  rea
02DF60:  64 77 6F 72 64 73 28 22 42 72 76 2C 72 65 70 65    dwords("Brv,repe
02DF70:  61 74 2C 72 65 70 65 61 74 77 68 69 6C 65 2C 72    at,repeatwhile,r
02DF80:  65 70 65 61 74 75 6E 74 69 6C 2C 73 77 69 74 63    epeatuntil,switc
02DF90:  68 6F 6E 2C 73 74 61 74 69 63 2C 74 6F 2C 74 65    hon,static,to,te
02DFA0:  73 74 2C 74 72 75 65 2C 22 29 0D 0A 20 20 72 65    st,true,")..  re
02DFB0:  61 64 77 6F 72 64 73 28 22 74 68 65 6E 2C 74 61    adwords("then,ta
02DFC0:  62 6C 65 2C 75 6E 74 69 6C 2C 75 6E 6C 65 73 73    ble,until,unless
02DFD0:  2C 76 65 63 2C 76 61 6C 6F 66 2C 77 68 69 6C 65    ,vec,valof,while
02DFE0:  2C 69 6E 6C 69 6E 65 2C 6F 70 74 69 6F 6E 2C 22    ,inline,option,"
02DFF0:  29 0D 0A 24 29 0D 0A 0D 0A 0D 0A 4C 45 54 20 73    )..$)......LET s
02E000:  74 61 72 74 28 29 20 42 45 0D 0A 0D 0A 24 28 0D    tart() BE....$(.
02E010:  0A 20 20 4C 45 54 20 77 6F 72 64 61 72 72 61 79    .  LET wordarray
02E020:  20 3D 20 56 45 43 20 35 30 30 0D 0A 20 20 41 4E     = VEC 500..  AN
02E030:  44 20 69 6E 62 75 66 66 20 3D 20 56 45 43 20 38    D inbuff = VEC 8
02E040:  32 0D 0A 20 20 41 4E 44 20 6F 75 74 62 75 66 66    2..  AND outbuff
02E050:  20 3D 20 56 45 43 20 38 32 0D 0A 20 20 41 4E 44     = VEC 82..  AND
02E060:  20 6E 61 6D 65 69 6E 20 3D 20 56 45 43 20 31 30     namein = VEC 10
02E070:  0D 0A 20 20 41 4E 44 20 6E 61 6D 65 6F 75 74 20    ..  AND nameout 
02E080:  3D 20 56 45 43 20 31 30 0D 0A 20 20 41 4E 44 20    = VEC 10..  AND 
02E090:  6C 65 76 20 3D 20 56 45 43 20 33 0D 0A 20 20 6C    lev = VEC 3..  l
02E0A0:  65 76 65 6C 28 6C 65 76 29 0D 0A 20 20 65 72 72    evel(lev)..  err
02E0B0:  76 65 63 2C 20 69 6E 70 75 74 2C 20 6F 75 74 70    vec, input, outp
02E0C0:  75 74 20 3A 3D 20 6C 65 76 2C 20 69 6E 62 75 66    ut := lev, inbuf
02E0D0:  66 2C 20 6F 75 74 62 75 66 66 0D 0A 20 20 6B 65    f, outbuff..  ke
02E0E0:  79 77 6F 72 64 73 2C 20 6B 65 79 65 6E 64 20 3A    ywords, keyend :
02E0F0:  3D 20 77 6F 72 64 61 72 72 61 79 2C 20 77 6F 72    = wordarray, wor
02E100:  64 61 72 72 61 79 0D 0A 20 20 72 65 61 64 73 79    darray..  readsy
02E110:  73 28 29 0D 0A 20 20 66 69 6C 65 73 28 29 0D 0A    s()..  files()..
02E120:  20 20 67 65 74 63 68 72 28 29 0D 0A 20 20 62 65      getchr()..  be
02E130:  61 75 74 69 66 79 28 29 0D 0A 20 20 65 72 72 6F    autify()..  erro
02E140:  72 3A 20 63 6C 6F 73 65 69 6E 28 69 6E 70 75 74    r: closein(input
02E150:  29 0D 0A 20 20 63 6C 6F 73 65 6F 75 74 28 6F 75    )..  closeout(ou
02E160:  74 70 75 74 29 0D 0A 20 20 6E 65 77 6C 69 6E 65    tput)..  newline
02E170:  28 29 0D 0A 20 20 77 72 69 74 65 73 28 22 42 43    ()..  writes("BC
02E180:  50 4C 20 62 65 61 75 74 69 66 69 65 72 20 66 69    PL beautifier fi
02E190:  6E 69 73 68 65 64 22 29 0D 0A 24 29 0D 0A 2E 0D    nished")..$)....
02E1A0:  0A 1A 20 77 69 6C 6C 20 74 75 72 6E 20 61 6C 6C    .. will turn all
02E1B0:  20 6B 65 79 77 6F 72 64 73 20 69 6E 74 6F 20 75     keywords into u
02E1C0:  70 70 65 72 20 63 61 73 65 20 61 6E 64 0D 0A 20    pper case and.. 
02E1D0:  20 20 61 6C 6C 20 69 64 65 6E 74 69 66 69 65 72      all identifier
02E1E0:  73 20 69 6E 74 6F 20 6C 6F 77 65 72 20 63 61 73    s into lower cas
02E1F0:  65 20 2A 2F 0D 0A 0D 0A 2F 2F 20 6D 6F 64 69 66    e */....// modif
02E200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E2A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E2B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E2C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E2D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E2E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E2F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E3A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E3B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E3C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E3D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E3E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E3F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E4A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E4B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E4C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E4D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E4E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E4F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E5A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E5B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E5C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E5D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E5E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E5F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
02E610:  27 00 00 00 02 09 50 E5 27 00 C1 02 00 00 00 02    '.....P.'.......
02E620:  27 00 C2 02 00 00 00 02 27 00 C3 02 00 00 00 02    '.......'.......
02E630:  27 00 C4 02 00 00 00 02 27 00 C5 02 00 00 00 02    '.......'.......
02E640:  27 00 C6 02 00 00 00 02 27 00 C7 02 00 00 00 02    '.......'.......
02E650:  27 00 C8 02 00 00 00 02 27 00 C9 02 00 00 00 02    '.......'.......
02E660:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E670:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E680:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E690:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E7A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E7B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E7C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E7D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E7E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E7F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E8A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E8B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E8C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E8D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E8E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E8F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E9A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E9B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E9C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E9D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E9E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E9F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EAA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EAB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EAC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EAD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EAE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EAF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EBA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EBB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EBC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EBD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EBE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EBF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ECA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ECB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ECC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ECD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ECE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ECF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EDA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EDB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EDC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EDD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EDE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EDF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EEA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EEB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EEC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EEE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EEF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EFA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EFB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EFC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EFD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EFE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EFF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F0A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F0B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F0C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F0D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F0E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F0F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F1A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F1B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F1C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F1D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F1E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F1F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F2A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F2B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F2C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F2D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F2E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F2F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F3A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F3B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F3C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F3D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F3E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F3F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F4A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F4B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F4C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F4D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F4E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F4F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F5A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F5B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F5C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F5D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F5E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F5F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F6A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F6B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F6C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F6D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F6E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F6F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F7A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F7B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F7C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F7D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F7E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F7F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F8A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F8B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F8C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F8D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F8E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F8F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
RESULT OF SEARCH :
PRO=281   CHEA=0   COD=55   MUSI=0   COP=40   GRA=129   WRIT=195   198=12   199=0   STARTER=0   KBI=0   CAAV=0   L.TOURNIER=0  
EXTENDED CPC DSK File    SAMdisk120814(  PBCPL    COMx  BCPLM1      BCPLM1     !
"#$%&'()*+,-./0BCPLM1     1BCPLM2     23456789ABCPLM2     BCDEFGHIJKLMNOPQBCPLM2
     RBCPLM3     STUVWXYZabBCPLM3     5cdefghiBDC    B jklmnopqrstuvwxyBDC    B 
)zBEDC    COMvCIBHDR    ICLIBHDR1   )OPY    B  DEBUG      (£KEYDEFS PCWTIDY    B
  Dvx)0!R!R8 PYgo#DM!x( BDM!zR!(N#F#B(## #V#V22x(#V##V#s#rE(#""CxiKKC"z)z)s#r#s#
r#s#r#!9s#r)#V#S#V#S#V##fki**"#)8I*8B"!9R85i*""KKC8"DM!9B8Stack overflow  #22f(O
!2w(f((l  ** BREAK **  (2O(!f(*+E+s"h*+(+"K!p"M*KMR*KR"+"*",!".!*"!"12!!6 !"x.(#
 x(# ,KsW!*"Ylq5!$*,*R7!$*7*42g!"5*(!$!7!$*74!"!H 2g*l"5! !$*5lR7!$!74 Phase 1 c
omplete. Tree size Phase 2 complete. Code size Phase 1 errors Phase 2 errors Arn
or BCPL compiler v (c) PJB & Arnor Ltd., 1986  !3$00.1020!J$*K! 6#!("0#!4w#! 4"3
6O!4"I6O!"2f22 2222 2!star+E(+")A 2!* 8(((80 2! (( !(!2Wy3$!$*17"$88*#"202H(I(((
(0 q523*Y near line   ESC to abort, any other key continues+00!*W#2E#2F!"G(!P  S
TOP to abort, any other key continuesG(X!( (222!w220    *£*R2**w+"***R2**r+s+"* 
#  0'kkdk kk/R00 y0g(! *5#"5*7#"7F#*£!w#1w#2w#"##*R0* 0"!"1 2!J4Too many files!(
$x(#E4  Can't open ww w 666 8 (X w8 (.( (, (+6 6  6  (7YW6J4Bad SOURCE nameJ4Bad
 DESTINATION namex3#E zK(!£u!t"7   6B    zK66  #u!t"COM£!V"R   #s!r"# J4Disc Ful
l#!V"( !£!V"R "  P#!#s!r"7!"!p zKp!$y(!$!$3Y(N3J4File intact3y2yppOutput file ex
ists Delete (Y/N)  and is R/O*+# ( # (  "0(7a .((O *q5M *g q5A q5u B!8 &(&  q5#u
 g 5 q5"u  &q5"u M +V+!R+r+sCg    q5u  g 3 q53g / q5/g N **N!F#q5NR $v is only a
llowed in definitions  q5#u g vBad expression*W"$0! *$(#####F##foHz8*$*$yq5u "$"
("&(*$K&( z 8*$*$q5u 6(vExpecting ,q5u  *$q5B(!B!K z*$8q5u "$O!  (#*$q5u "$y$# 9
# # 5" " 8( Q( A+XXXXXX %    !  *W*YsW!+"Y7K 1q5 q5SYSWI( !(+( q5!I((6q56O(vExpe
cting identifier*q5g  Aq52( DO q5u EvBad vector definitionA ROq5O !B! q5G q5u Fv
Bad PROCEDURE definitionvMissing )(R  g q5u 6 q567KI(( JS vExpecting command'(((
)(pq5'(Z g u G!q ! ##Vx###OM.&8A"140- ZZ#ZZZ*fHP q5 Oq5SK6Lq5u g q5u Kq5u K !I-v
ELSE expected**q5q5u !!*vINTO expected!q5u !Sv expectedq5!Sg q5!/u ,!/u ! q5u K 
pvBad FOR loopq5Pg !(q5*W*Y!!9sW!"Y(*(&vNeed  or  in constant definitionq5u !qp!
7KO(SYSWH!GoI(vMissing $)*B($*3KB vSection tag mismatchq5vMissing $(#G q5 G!(###
'Z()40 (G(xG(G*M"l*."7!"9"A"C"G"U*K2**"*Z"2r2v2n2z2tc n**R*hs#r7*js#r**R(#**G#J4
Undefined START*A!9R2!1JR0P1L-40"p'!Z!(L!L!)V!V!+!*p"e### $$#2 A j%J4Error in tr
anslation node! "GX6#6 "jX "hX*#+!s#z K7!DM!!#V#z£ut##$p C/!!4ut### levelongjuma
ptoverdvd!!#V#&2+6#6#6#Vw#w##+V+n+V+n*Q*9*+V++V+n"*9C93"QTB $Vd3Undefined identi
fier,nf S+++V+!1V++V+GUFUTUUUVUWUXUYUDtEJ4Declaration error!1!51DTETG'F'T'U'V'W'
X'Y'+V+&2+6#6#6# s#r+V++F+N6 ! 6 !+V++i+F+N+F+NV+ 6 3Expression/id mismatcv%nf0#
)Q"QKSB8"Snf**( !!(  X*U"U+V++*IR  *GK7q#p273*S*O*9*22!"S"QV++I*z*g."z "7!z3""z*
S! !oS*Os#r22"*9C9"O"S"U7s#rV+F(T(V(X(n3 &v%! "OX!2!R9*U*UF(G(T(U(**T(#U(X(Y(Z((
(((***"*"*!,"*!,+V++F+n6 ++F+N+V+6 +F+N+V+ij6O(&(8Q1v%281(v%+V+v%!)s#r+V+v%)08W,
!6#6zs#r(v%(!()(v%+!7s+00620,0 (61s1wOM+V+6 +V++V+0F#6 +++V+V+&26#6##w2  P+V++ V
+n+V++V+0&26##s#r+V++V+"S+V+nz+V+h+++V+&2+6#w#6#Es#rbkSE !"" " "+V++,7V+n7 !(!nf
s#r+++V+GV+O "283( 13v%*33G x26(xv%+++V+xGV+ !"" " "+++++V+,!73V+n X7!3+V+n7s#r 
    DM2r222v2w2s*7"x "t " "+V++,7V+n*x-77!r3  +V+v%n2n!n!P3RESULTIS outside a VA
LO!z! +!v!"3LOOP found outside loo!r!v(F3m-3BREAK found outside loo3RETURN found
 outside FUNC/PRO+V+v%+V+285((3Labels need a globa67NFa"+V+n*v*x*r*t"t"r"x"v****
""""F( nfnfX*l##"lR2 2r2v "t*7"x2w2s+V+n*x-7!r3     2r2v22 "t "x " "2w2s*7+V++n7
!v3V+,77!r3  +V++"!V+nz+++V+0KEa"V+hV!z( ##V7 ####7(*7"E+*r+s+p+q+"**22 "+V+v% T
X **C!"C*A+V+n*AR##7##*7ut*ARuE(+*A++++nfnf++++*C *7##"A"C7!3""w((3CASE/DEFAULT 
outside a SWITCHO#+V+0*KADM!9B2is#r7#s#r*A####"A+V+nwn#*7"C+V+n!!#3ENDCASE used 
outside SWITCHO *d* "dX2nfv%! %*dXnfv%*7K7*dq#pnf !0!&%(!4% "tXg."r%%"v "x*9*nfn
fn2"*9C97!v3!M%2-7!r3"*dX"d g" BKzWRDMgR#+A%G%L%i*!%1M&O&R&K&&C&3&.1''I'&' 'NK(/
f(5()9L)'*$v*((*V*6**8*Ql+!*****%**J4Unexpected node in expression!28 !0$fn0!1*1
+V+v%!&go#+V+v%!& (go#&*n*p2n2o "p+V+n!n  3VALOF must contain RESULTI73"p"n!!!!+
V+!U'1O'8(&'3Invalid application of L28 (0!'n-&!'!F 1!'nf+V+v%+V+v%!')#V+V+v%!(g
o!*7###  X*7((Ox 7s#r(+V+(7s#r6 +V++(V+0+!(R!(!+!(R! !+++V+08 ++V+v%!(2)))i#++++
V+08+!0)R+V+v%!R!(2+++V+08+*+V+v%!z)2))))))))) )) )))i*88G)!*!*!*!*!*! *T)T))T))
T))T))))T))+*o/!J*b/!J*R!8!o/!j*b/!j*R!0!+*(!'+!* go+!*go+!*g£o+!*go+*+* !"" " "
nf,!73nfv% X!73nfv%7s#r +!w+n&!#V#!+ !+V++rsV+rs!v%2!+r+sM95+V++F+n+F+N+V+iM(2O(
.M(MO(I,0&v%v%M(O(,0&v%v%v%W,O(28 0$V011K(L(7Gcx2c!,12c-----J... $/.t..MR/OR/v%!
4-7-c(!Y-(###!! (08F  nfDM7R !c-(###ib/!p.7-o/b/o/N.V00O J+V+O 12840# v%!4-7-+!p
.-+V+08+V++Fr+Ns##q#p7Rc! c! **c!" "+V+,7!32c""+V+,**c!" "+V+  P,7!32c""+V+,5/c+
V+,*KC"*KC"0%-z.t.+F+N+V+i +V++F+n0808X+!/gzW08v%!/gg!zgkgO(,0&v%W,!0!gzW03Need 
constant expressio!B01Ol0M0500900$0001%0.0028(V7+V+7+V+0+V+0070R70!1701701i70W£7
0W7770z(T70z(%T7g1x)0!Rg1!R8 PYgo#DM!x( BDM!zR!otu018"13Invalid assignmen( nfXO 
# #N#F####BK#V#B(## #V*DM!9B5iKB83*KAx(TZDM!9B88iKA*Z"*K9q#p#s#r#w""9J4Out of me
mory*9 B**7 *7####*7"EjnfR 3G($(!d3Dynamic free variable used,7nf223# *#" 423# 4
*#" 4  BKVqp6q#pFnfsrBKOx2GyOx  o&!9!(4$*U(+V+!)44 inglobal definition###$!l4 3$
!k4"$2l4. Compilation abandoned.*(l3+0!4$Please insert system disc then press an
y keyV5z4 0###VT#(*!9DMB8J4Out of symbol spacer+s6#6#6#w#8"7O#8y'O!#V!9DM*B520! 
 (   *1#"120f2f8 60$9!4"0Ow228S800o&9"M2# zM2b 8Ro&9"Mo 8o&9"Mx 8"o& "M08800o&9"
MvExpecting number' !))o&0&"'8M2!8G( #2##x/ Q 7/    5*(27  *1#"1* 7*(/ 5 / r j 2
  U M2  8 %02-  2  22$ /( $9!4H)l8$9!4I2". %*+22+21+2!£R"52(  7 72" !)" !qN7)08 
8#wyvString too long 7 2 2!vBad charactervBad character constant2f(8(8J4Broken i
n+5,67&!8*9(A)BAB%QRq5N(vBad GET!599!lb9!b D9+( -n92929,99 99q5Mn9299!s(9+(-(vBa
d option linew99 q5q5,9q5! (!w#8.( w#+w)T))008)))002)08ag'0)))) 8*7)!#() xX!8(##
#  7  *1#"1)*(!#8())88G   ''**""NnTtS s BbPpC c 8ag87'0a87087andbebreakbycasedod
efaulteqeqvelseendcasefalseforfinishgotogegrgtglobalgetifintoinlineletlvlelsltlo
gorlogandlooplshiftmanifestnenotneqvorresultisreturn£remrshiftrvrepeatrepeatwhil
erepeatuntilswitchonstatictotesttruethentableuntilunlessvecvalofwhileoptionabs7-
o/b/o/N.V00O J+V+O 1testtruethentableuntilunlessvecvalofwhileoptionabs7-o/b/o/N.
V00O J+V+O 1BCPLM1      produce the error message 'dynamic free variable used'. 
 p---!-----!-----!-------!-------!-------!-------!-------!-------!----R  tm 3  b
m 11  hm 0  fm 2    ce BCPL    ce THE SYSTEMS PROGRAMMING LANGUAGE      ce Amstr
ad PCW8256/8512    ce Amstrad CPC6128/664/464                              ce by
 Phillip Blenkinsopp        ce                                CONTENTS    1  Abo
ut BCPL   3  2  Using Arnor BCPL under CP/M 5  3  Using Arnor BCPL under AMSDOS 
8  4  Compiler options 12  5  Some key facts about BCPL14  6  Two BCPL programs1
6  7  Summary of the BCPL language18  8  The Arnor BCPL libraries26  9  Differen
ces from standard BCPL49       APPENDICES    1  Technical information51  2  Summ
ary and index of library routines54  3  Portability56  4  Error messages57      
Copyright (c) Arnor Ltd.,1986             Issue 1, 1986 (v1.00/2.00)    AMSTRA  
PD is a registered trademark of Amstrad Consumer Electronics plc.  CP/M and CP/M
 Plus are trademarks of Digital Research Inc.    All rights reserved. It is ille
gal to reproduce or transmit either  this manual or the accompanying computer pr
ogram in any form without  the written permission of the copyright holder. Softw
are piracy is  theft.    The BCPL compiler was developed using the MAXAM assembl
er ROM.  This manual was written on the PROTEXT word processor and checked  usin
g PROSPELL.    ce Arnor Ltd., 118 Whitehorse Road, Croydon, CR0 2JF.  op  fo    
                              %              ce 1. ABOUT BCPL      BCPL is often
 described as a "systems programming language". This  makes BCPL sound very gran
d and technical, but this is not the case.  BCPL is certainly a very good langua
ge for writing programs such as  operating systems, compilers and word processor
s but the features that  make BCPL ideal for these applications also make it an 
excellent  general purpose language.  What are these features First, flexibility
. BCPL programs are not  constrained by rules as to which operations can be perf
ormed on which  type of variable. Indeed there are no different variable types -
- all  variables are simple numbers and other types and structures are  achieved
 by using variables differently. This makes BCPL very  different from other lang
uages such as BASIC and PASCAL. A string is  treated as a variable pointing to a
 string, similarly a vector. Even  procedures are simply variables containing th
e address of the  procedure, and these may be assigned to or passed as parameter
s.  This flexibility allows the BCPL programmer to access any part of  memory (i
ndeed any individual bit) and so do things that can normally  only be done in ma
chine code. Of course freedom always carries a price  -- responsibility. In lang
uages such as PASCAL the compiler detects an  attempt to perform an illegal or m
eaningless operation. In BCPL it  rarely does so and it is quite possible to cra
sh the system by  corrupting the system memory or jumping to an illegal address.
      An essential book to read    This manual gives an introduction to certain 
aspects of BCPL, as  well as a summary of the facilities implemented in this ver
sion. It  does not attempt to be a complete guide to BCPL programming, and  assu
mes some knowledge of programming (for example in BASIC). Note  that examples of
 the use of most features of BCPL are to be found  among the example programs co
ntained on the disc.    The definitive book on BCPL, both as an introduction and
 a  reference is  "BCPL -- the language and its compiler" by Martin  Richards an
d Colin Whitby-Strevens.  This book is essential reading for the BCPL programmer
. It is  published by Cambridge University Press at a reasonable price in  paper
back. Martin Richards originally designed BCPL in Cambridge in  1967. This book 
will henceforth be referred to as "the BCPL book".  In particular the book conta
ins an excellent section on "Advanced  facilities" which covers, among other thi
ngs, pointers, bit  operations, recursion and scope rules.   For the purposes of
 this manual, the BCPL book is regarded as  defining "standard" BCPL, and any mi
nor variations or enhancements to  this standard are pointed out.  op  ce 2. USI
NG ARNOR BCPL UNDER CP/M      CPC users may use BCPL under CP/M (either 2.2 or P
lus). The  supplied disc has the CP/M version of the program on one side, and th
e  AMSDOS version on the other.     Note PCW8256/8512 users should ignore the AM
SDOS side of the disc and  the EPROM, as well as any references to Amsdos or the
 EPROM/ROM  version, throughout this manual. These are for CPC users only.     T
he newcomer to the language is advised to pass over chapters 2, 3  and 4 on the 
first reading as they describe the mechanics of using the  compiler, rather than
 details of the language.    List of files contained on the disc -- CP/M side   
 The main files are    BCPL.COMthe main compiler program  CLIBHDRthe main I/O li
brary  CLIBHDR1the extra I/O library containing less used routines  DEBUGa routi
ne useful for debugging BCPL programs    The disc also contains the following ex
ample files    ---!-----!-----L-------!-------!-------!-------!-------!-------!-
---R  AS6502.Ba 6502 cross assembler, written in BCPL  BEDC.BBCPL editor source 
code, CP/M version  BEDC.COMBCPL editor object code,   PCP/M version  COPY.Ba si
mple example program which copies  a file  KEYDEFS.PCWa key definition file for 
use with BEDC.COM on the  PCW8256/8512.  TIDY.BA BCPL program to format BCPL sou
rce code tidily  ---!-----!-----!-------!-------!-------!-------!-------!-------
!----R      Creating a working disc    NOTE Under no circumstances should the or
iginal disc be used as a  working disc for normal use. The required files should
 be copied onto  a system disc and the original retained in a safe place, as a b
ackup.    A system disc should be created using DISCKIT (DISCKIT3, DISCKIT2  or 
FORMAT, as appropriate on the CPC range) to format a disc. The  first four files
 in the above list should then be copied (using  PIP) from the supplied BCPL dis
c onto the newly formatted disc,  together with (if using CP/M Plus) the EMS fil
e from the CP/M System  Utilities disc.  This will create a disc suitable for us
e, but you might also  decide to add further files, such as an editor or SETKEYS
.COM (see  below), to the disc.  pa  Entering and editing BCPL programs under CP
/M    Any editor or word processor may beused for typing in BCPL  programs, as l
ong as an ASCII file can be produced.  The CP/M version of PROTEXT is especially
 suitable (using program  mode), as is the Arnor program editor supplied with ot
her Arnor CP/M  programs. Alternatively CPC users can use the AMSDOS versions of
  PROTEXT or MAXAM.  If you do not have a suitable editor the program BEDC.COM c
an be  used, and this should also be copied onto the system disc. This is a  sim
ple full screen editor which is compatible with PROTEXT editing  commands.    No
te  If using BEDC.COM with a PCW8256/8512, the keys must be defined  using SETKE
YS. Suitable definitions are provided in the file  KEYDEFS.PCW and the syntax us
ed is    SETKEYS KEYDEFS.PCW    This can be incorporated into a PROFILE.SUB file
, in which case,  both SETKEYS.COM and SUBMIT.COM must also be copied onto the w
orking  disc.      Compiling a BCPL program under CP/M    The CP/M version of th
e compiler takes a file containing BCPL  source code and produces a COM file con
taining an executable CP/M  object code program. There is no intermediate compil
ation stage. The  command to compile a program is    bcpl source destination    
where source and destination are the names of the files from which  code is take
n and to which it is written. The destination filename is  optional and if omitt
ed will default to the source file name with a  .COM extension. The extensions o
n both filenames are optional. If the  source name has no extension then the com
piler will first search for a  file with no extension and then for a file with a
 .B extension. The  same applies in the GET directive on both CP/M and AMSDOS ve
rsions. If  the destination file has no extension then this will default to .COM
.    e.g.bcpl as6502    will first look for the file AS6502 and if it is not pre
sent will then  look for the file AS6502.B. The compiler will read this file and
 then  send the object code produced to a file AS6502.COM.  pa  Under CP/M Plus 
the compiler returns an error return code if an  error occurred. It can then be 
convenient to use SUBMIT to compile and  run the program with a single command. 
The CP/M conditional command  facility can be used so the the program is only ex
ecuted if no error  occurred. For example a file COMPILE.SUB may contain the fol
lowing    bcpl program.b   y  program  The second line causes the previous versi
on to be deleted. Note  that this will only work under CP/M Plus (CPC6128 and PC
W8256/8512)  and not under CP/M 2.2.      Including other files    Other BCPL so
urce files may be included at any point in a program  by using the GET directive
.    GET "file"    causes compilation to continue with the new file. At the end 
of the  included file compilation resumes at the point after the GET directive  
in the original file.    Most programs will start by including the library routi
nes    GET "CLIBHDR"  GET "CLIBHDR1"// often not needed  GET "DEBUG"// used when
 debugging (see section 8k)    Note that the GET directives to include the libra
ry routines must  be in the order shown because routines in CLIBHDR1 call other 
routines  in CLIBHDR.    Compilation stops on the CP/M version when afull stop '
.' is  found in the initial source file which was specified in the original  com
mand line, or when the end  P of that file is reached.  pa  ce 3. USING ARNOR BC
PL UNDER AMSDOS      NOTE PCW8256/8512 users should ignore this chapter.    BCPL
 may be used from Amsdos on the CPC range, either in ROM form  or from a disc. I
f the ROM version is being used, the files BCPL.BAS  and BCPL.BIN are not requir
ed, though the library files will still be  required.    NOTE Under no circumsta
nces should the original disc be used as a  working disc for normal use. The req
uired files should be copied onto  a system disc and the original retained in a 
safe place, as a backup.    Creating a Working disc    A new disc should be form
atted and the first six files from the  list below should be copied onto it, usi
ng either FILECOPY or PIP from  CP/M, depending on the model being used, or the 
COPY command from the  UTOPIA ROM if that is installed. This will produce a disc
 containing  all the essential files. ROM users can omit the first two files cal
led  BCPL.BAS and BCPL.BIN.    Installing the ROM version    Fit the 16K EPROM i
nto your ROM board following the instructions  supplied with the rom board. The 
ROM selection number is not critical,  though it must not clash with any existin
g ROMs, even if they are not  installed on the ROM board. (The disc rom for exam
ple uses ROM select  7).  Suitable boards may be purchased from Arnor if you do 
not already  have one.  The BCPL ROM provides an extremely convenient and fast e
nvironment  for developing BCPL programs, particularly when used in conjunction 
 with PROTEXT or MAXAM. Programs can be typed in using PROTEXT or MAXAM  and com
piled directly from memory.  The ROM version may only be used on the CPC464, CPC
664, and  CPC6128 computers.      List of files contained on the disc -- AMSDOS 
side    The following files are most important    BCPL.BASthe loader for the com
piler program  BCPL.BINthe main compiler program  ALIBHDRthe main I/O library  A
LIBHDR1the extra I/O library containing less used routines  AMSDOSa further I/O 
library containing graphics routines  DEBUGa routine useful for debugging BCPL p
rograms  pa  The disc also contains the following example files    BED.BBCPL edi
tor source code, AMSDOS version  BED.BINBCPL editor object code, AMSDOS version 
 BED1.Ba file containing directives to compile BED  DIS.Ba Z80 disassembler writ
ten in BCPL  INVADE.Ba space invaders game, written in BCPL    Loading the AMSDO
S disc version    To load the compiler typeRUN"BCPL"      Entering and editing B
CPL programs under AMSDOS    Any editor or word processor may beused for typing 
in BCPL  programs, as long as an ASCII file can be produced.  PROTEXT (using pro
gram mode) and MAXAM are especially suitable, in  particular the ROM versions ar
e recommended for convenience.  If you do not have a suitable editor the program
 BED.BIN can be  used. This is a simple full screen editor which is compatible w
ith  PROTEXT editing commands.  Any source files created should preferably be sa
ved to disc with a  '.B' suffix to the filename. This is not essential, but does
 help  identify the type of files on a disc.    Compiling a BCPL program under A
MSDOS    Apart from having to load the disc version, the disc and ROM  versions 
are used in exactly the same way. There are, however, a few  differences when co
mpared with the CP/M version. The major difference  is that the CP/M version all
ows the inclusion of source files within  other source files. The AMSDOS version
 does not allow this although it  does allow the inclusion of stored PROTEXT/MAX
AM text. Due to this  limitation the AMSDOS version has a simple front end which
 allows you  to type in source code which will then be submitted directly to the
  compiler.   pa  To run the compiler type  BCPL    The screen will clear and th
e BCPL signon message will be printed.  You will then be prompted with "Output f
ile name". The name you type  here is the name of the file into which the progra
m will be compiled.  It is also possible (unless the program is too large) to co
mpile  directly into memory. To do this just press RETURN (or ENTER) in  respons
e to the question.  You will then be presented with the BCPL prompt '--'. The  c
ompiler is now ready to accept BCPL code for compilation. This will  almost alwa
ys consist of one or more GET directives. There are two  forms permitted    (i)G
ET "file"to include another previously prepared file    (ii)GETto include the cu
rrent text (PROTEXT  P/MAXAM)    Any number of GET directives may be typed. Afte
r each one the  compiler will perform the first part of the compilation. To end 
the  compilation and produce the object code type a full stop '.'.      Note If 
the '.B' extensionof a source filenameis omitted from the  filename in a GET com
mand when the filename contains it, Amsdos will  initially produce the message '
filenot found'but will continue to  search for a file with the .B extension and 
compile it.  pa  Testing BCPL programs under AMSDOS    If a program is compiled 
to memory, as described above, the  command 'GO' may be used to run the program.
  Typing 'GO' will run the most recently compiled BCPL program. If  no program h
as been compiled, or an error occurred on compilation,  then GO will simply prin
t the message "No program".   WARNING - it is possible to corrupt a compiled pro
gram in memory  by editing the PROTEXT or MAXAM text, so after editing the progr
am  should always be compiled again before using GO.  With large programs it is 
quite likely that there will be  insufficient memory to compile to memory. There
 are three courses of  action that may be taken here  (i)   if you are using the
 disc version, buy a ROM board and use  the ROM version. You will gain an extra 
16K of memory.  (ii)  compile directly to disc.  (iii) use the CP/M version.    
  Extra facilities for ROM users    ROMON7    Some programs (particularly games)
 will not run with a rom  installed. The command ROMON7 is provided to enable th
e BCPL rom (and  any others) to be turned off. All roms except the AMSDOS rom wi
ll be  turned off. Note that ROMON7 will reset the computer and lose the  conten
ts of memory.    RUN"DISC    When the BCPL ROM is installed, pressing CTRL-ENTER
 will generate  the command RUN"DISC. Thus a file 'DISC' will be run when CTRL-E
NTER  is pressed.    pa  ce 4. COMPILER OPTIONS      The OPTION directive contro
ls various compiler facilities. It does  not cause any code to be generated. The
re are 5 options on the AMSDOS  versions of the compiler and 3 on the CP/M versi
on.  Multiple options  may be selected with a single OPTION directive by separat
ing the  options with commas. The OPTION directive may appear anywhere in a  pro
gram so options can be selected for any part of a program.     The three options
 common to all versions are as follows    If the option is followed by a '+' sig
n the option will be  switched on and if followed by a '--', it will be  switche
d off.    L -- switch listing on or off.     e.g. OPTION L+    S -- switch stack
 checking on or off. If checking is on then the  compiler will check for stack o
verflow at the entry point of each  procedure. If stack checking is off then the
 stack may overflow and  crash the machine.    e.g. OPTION S--    B -- switch br
eak checking on or off. If checking is on then the  object code produced will ch
eck whether the break key (ESC or  STOP) has been pressed at the start of loops 
and at the entry points  of procedures. A number may be specified to control how
 often the key  is checked. The default is 10, which means it is checked once fo
r  every ten loops or procedures.    e.g. OPTION B--       OPTION B+25    The de
faults for the above options are listing off, stack checking  on, break checking
 on.     pa  The remaining two options are only available on AMSDOS versions.   
   O -- sets the code origin to the value of the number which follows  it.   e.g
. OPTION O #x172    will produce code which will run at address 172 (hex).    H 
-- sets the highest byte usable by the compiled code. This is so  that programs 
compiled on one machine can be run on another.   e.g. OPTION H 40000      The or
igin defaults to the first unused byte of memory at compile  time (after any BAS
IC program or text) and the highest byte defaults  to the last unused byte of me
mory at compile time (usually HIMEM).    The main use for the H and O options is
 when producing stand alone  code to be run from a disc with no BASIC support et
c. These options  enable all of the memory to be used for a program. It should b
e noted  however that if the Z80 stack pointer goes below #x4000 or above  #xC00
0 then the machine will probably crash due to the ROM paging  which uses these a
reas of memory.    pa  ce 5. SOME KEY FACTS ABOUT BCPL      (i) BCPL is a struct
ured language    A BCPL program is made up of a number of named procedure  Ps, e
ach of  which is quite separate. There is one special procedure, called  'start'
, which must be present in every BCPL program. This is where  execution will beg
in. This procedure will call other procedures, which  will in turn call other pr
ocedures, and so on.  You will later come across terms such as blocks, compound 
commands  and scope -- terms that apply to structured languages in general.  Exa
mples of other structured programming languages are Pascal,  Modula2 and C. Loco
motive BASIC and Mallard BASIC are not structured  languages.      (ii) BCPL is 
a compiled language    BASIC is usually an interpreted language. When a program 
is run,  the BASIC interpreter reads each line and executes the appropriate  mac
hine code instructions. This decoding is done every time a line is  executed. Th
e result is that BASIC programs run very slowly when  compared with a machine co
de program doing the same thing.  A BCPL program must be submitted to the compil
er before it can be  run. The compiler translates the entire program into machin
e code  instructions. The machine code program is saved and can then be run.  Si
nce each BCPL line is only translated once, a BCPL program runs a  lot faster th
an a corresponding BASIC program.  The disadvantage of using a compiled language
 is that you have to  wait for the program to be compiled each time before you c
an test it.  This is not a problem with Arnor BCPL since it compiles extremely  
quickly.      (iii) BCPL is a typeless language    Most languages have a number 
of internal variable types. BASIC  usually has 6 -- integer, real, string, integ
er array, real array, and  string array. PASCAL and C have rather more, and have
 the ability for  the programmer to define his own using "record" or "struct".  
BCPL has just one internal variable type -- a variable can be  assigned a single
 word value. This is referred to as a bit-pattern  indicating that no inherent m
eaning is attached to this value. The  meaning of the value is determined by the
 way that the programmer uses  it, and this meaning can change. In Arnor's imple
mentation of BCPL  each value is 16 bits long. There follow some examples of how
 some of  the common data types are used in BCPL. Note that in each case a 'LET'
  declaration is required to define a variable before it can be used.  pa  Simul
ating different variable types    IntegerLET number    number  42    This assign
s the value 42 (that is the bit pattern 0000000000101010)  to the variable 'numb
er'.    CharacterLET char    char  'A'    This assigns the number 65 (the ASCII 
code representing the  letter'A') to the variable 'char'.    VectorLET array  VE
C 10  FOR i0 TO 10 DO array!i  i    This sets aside an 11 word (22 byte) area of
 memory, and assigns the  address of the start of this area to the variable 'arr
ay'. The vector  is accessed by the indirection operator '!', where 'array!i' me
ans the  contents of address (array+i). !array means the same as array!0.    Two
 dimensional array    MANIFEST $( m3, n4 $)  LET array  VEC (m+1)*(n+1) -- 1  LE
T getarray(i,j)  array!(m*i+j)  LET putarray(i,j,value) BE array!(m*i+j)  value 
   Multi-dimensional arrays can be implemented by defining a vector and  calcula
ting the required word from the array subscripts.    StringLET text  "BCPL is a 
typeless language"    This stores the string "BCPL is a typeless language" somew
here in  memory, preceded by a byte containing the length of the string. The  va
lue assigned to the variable 'text' is the address of this length  byte. Note th
at this is only possible because the memory address is  the same length as the B
CPL word (this is not a coincidence!).    Note There is a very important differe
nce between the use of single  and double quotes, and confusing these can lead t
o bugs that are very  difficult to find, so be careful! The BCPL book contains a
 very useful  section on the pitfalls of BCPL programming.    Single quotes encl
ose a character and define a constant whose  value is the ASCII code of that cha
racter.   Double quotes enclose a string and define a constant whose value  is t
he address of that string.  pa  ce 6. TWO BCPL PROGRAMS    (i) A very simple BCP
L program    This simply displays a message on the screen.      GET "CLIBHDR"  L
ET start() BE  $(    writes("Hello everyone!")  $)      Points to note    1. LET
 and BE are BCPL keywo  Prds. BCPL keywords are printed in  upper case throughou
t this manual for clarity. It is not necessary to  type them in upper case as th
e compiler ignores the distinction.    2. start(). This is the procedure that mu
st be present. The  brackets indicate that 'start' is the name of a procedure. T
hey will  often contain parameters for the procedure.    3. $( and $). These are
 section brackets, marking the start and  end of the procedure 'start'.    4. wr
ites. This is a BCPL procedure (note the brackets containing  the parameter). It
 is not a BCPL keyword and so the procedure must be  defined somewhere (see belo
w).    5. GET "CLIBHDR". This is a directive (an instruction to the  compiler) t
o compile the BCPL code contained in the file 'CLIBHDR'.  This file is a library
 of useful procedures, including one called  'writes'.      (ii) A slightly more
 complex BCPL program      GET "clibhdr"    /* This is a copy routine */    LET 
start() BE    $(    LET inname  VEC 20   LET inbuff  VEC 82    LET outname  VEC 
20  LET outbuff  VEC 82    LET c  0  pa    writes("Input file name  ")    reads(
inname)    writes("*nOutput file name ")    reads(outname)    TEST findinput(inn
ame, inbuff) THEN    $(      selectinput(inbuff)      TEST findoutput(outname, o
utbuff) THEN      $(        selectoutput(outbuff)        $(          c  rdch()  
        UNLESS cendstreamch DO wrch(c)        $)        REPEATUNTIL c  endstream
ch        endwrite()      $)      ELSE writes("Can't open output file")      end
read()    $)    ELSE writes("Can't open input file")  $)    Points to note    1.
 The use of /* and */ to enclose comments.    2. The use of LET to declare the v
ariables 'inname', 'inbuff',  'outname', 'outbuff', and 'c'. All variables must 
be declared before  use, and the declarations must appear before any commands.  
  3. The use of VEC to define vectors as described above.    4. reads. Another l
ibrary procedure, to read a string from the  keyboard into the vector given as p
arameter.    5. findoutput, findinput, readch, writech. Library procedures to  o
pen files, and read and write characters.    6. TEST ... THEN ... ELSE. A condit
ional command. Section brackets  are used to enclose the block of commands that 
will be executed if the  test succeeds or fails.    7. REPEATUNTIL. The precedin
g block (enclosed in section brackets)  is repeated until the condition becomes 
true (in this case when the  end of the file is reached).  pa  ce 7. SUMMARY OF 
THE BCPL LANGUAGE      The BCPL language is best considered in two parts. First 
the  standard language comprising the commands and syntax for expressions,  cons
tants etc. Second the input/output library routines which are  mostly procedures
 written in BCPL. There are a fairly standard set of  these, but this implementa
tion includes additional I/O routines.    Elements    -----L---!-------!-------!
-------!-------!-------!-------!-------!--R  (i)Variable name. Must start with a
 letter and may also contain  digits and full stops. All characters significant.
  (ii)Number. Can be decimal, octal (prefix with # or #O), hexadecimal  (prefix 
with #X), or binary (prefix with #B).  (iii) String constant. Enclose in double 
quotes.  (iv)Character constant. Enclose in single quotes.    Certain characters
 are represented within a string or character  constant in a special way    *" t
he " symbol  *' the ' symbol  ** the * symbol  *B the backspace character  *C a 
carriage return (13)  *N the newline character (in fact two characters, 13 and 1
0)  *P the new page (form feed) character (12)  *S a space  *T the tab character
  *Xnn a hexadecimal number between 0 and FF, e.g. *XF1    (v)Truth values, TRUE
 and FALSE. Pre-defined constants whose values  are the bit patterns representin
g true and false.      Operators    Addressing operators    !indirection (subscr
ipt), e.g. !a, a!b  address of, the inverse of !, so (!a)  a    Arithmetic opera
tors    +addition  --subtraction  *multiplication  /integer division  REMinteger
 remainder  pa  Relational operators    equal to (or EQ)  not equal to (or  or N
E) less than (or LT)  greater than (or GT)  less than or equal to (or LE)  great
er than or equal to (or GE)      Logical operators    or (or / or LOGOR)  &and (
or / or LOGAND)  not (or  or NOT)  EQVbitwise equivalence  NEQVexclusive or     
 Shift operators    logical shift left, e.g. a4 shifts left 4 bits  logical shif
t right      Other co   P         mponents of expressions    (i)Function call (s
ee below)  (ii)Conditional expression, e.g.  a -- b, c  This means evaluate a as
 a truth value. If true then the value  of the expression is b, otherwise c.  (i
ii)TABLE, e.g. TABLE a,b,c,d  This is an expression whose value is the address i
n memory at  which the table of values is stored. The values must be  constants.
  (iv)VALOF (see below)      Order of precedence of operators (highest first)   
 1. Bracketed expression              9.                           2. Function c
all                    10.                              3. ! as subscript       
            11. &                             4. , ! as indirection             
 12.                              5. %                                13. EQV NE
QV                      6. * / REM ABS                      14. -- (conditional 
expression)  7. + --                             15. TABLE                      
   8.                         16. VALOF                         pa  Note PCW use
rs will find two of the operator symbols not shown on  their keyboards. They are
 obtained by the following key  combinations  --EXTRA key and the key marked wit
h a 1/2 symbol.  --EXTRA key and the full stop key.      Section brackets and co
mpound commands    Many of the commands described below apply to a single comman
d.  For example REPEAT will repeat a command until the required  condition is tr
ue. Section brackets are used to group several  commands as a 'compound command'
, which is considered as a  single command for these purposes. The section brack
ets are $(  and $). The commands to be grouped should be enclosed between  these
 symbols.      Commands    Assignment     is used to assign a value to a variabl
e. There are three  basic forms of the assignment statement    variable  express
ion  variable!subscript  expression  !variable  expression      Conditional comm
ands    IF expression THEN command  UNLESS expression DO command  TEST expressio
n THEN command ELSE command    Note that IF does not take an ELSE clause, TEST m
ust be used.  The ELSE clause must be present in a TEST command.      REPEAT and
 WHILE    command REPEAT  command REPEATUNTIL expression  command REPEATWHILE ex
pression  WHILE expression DO command  UNTIL expression DO command  pa  FOR loop
    FOR i  a TO b DO command  FOR i  a TO b BY c DO command    In the first case
 i takes values starting at a, incrementing by  1 until greater than b.  In the 
second case i is incremented by c. c must be a constant  expression.      SWITCH
ON    SWITCHON expression INTO compound command    The compound command consists
 of a sequence of commands with  case labels attached to commands. A case label 
takes the form  'CASE constant', and causes execution to start at the  following
 instruction if expression has the value constant.  Execution will continue unti
l an ENDCASE command, or to the end  of the SWITCHON compound command. The label
 'DEFAULT' marks the  place where execution is to start if expression does not  
evaluate to any of the constants specified by case labels. For  an example of th
e use of SWITCHON see the 'writef' routine in  CLIBHDR or ALIBHDR.    Blocks and
 scope of identifiers    A BCPL program is made up of one or more blocks. A bloc
k  consists of a sequence of declarations (see below) followed by a  sequence of
 commands. To be precise a BCPL program is a single  block, and any block may co
ntain nested sub-blocks.    The scope of an identifier (variable or procedure) d
efines those  parts of a program where that identifier can be used. Each  identi
fier must be declared with a declaration. The scope of  that identifier is that 
same declaration (thus allowing  recursive definitions), and all subsequent decl
arations and  commands within that block. Thus if a routine is called which is  
outside the block (and routines are usually separate blocks)  then variables def
ined within the original block may not be  used.    There is an important restri
ction. Variables defined within a  block may not be used within a procedure defi
ned within that  block (even though they are in scope). An attempt to do so will
  produce the error message 'dynamic free variable used'.  pa  produce the error
 message 'dynamic free variable used'.  p  PBCPLM2      //zhis will substitute a
 dummy  routine.    pa  ---!-----!-----!-------!-------!-------!-------!-------!
-------!----R  pn 22  tm 3  bm 11  hm 0  fm 2  fo                               
   %  -----L---!-------!-------!-------!-------!-------!-------!-------!--R  Dec
larations    The LET declaration    All variables and routines must be declared 
before they can be  used. There are several forms of declaration    LET variable
  expression    This defines a variable and gives it an initial value. If no  in
itial value is relevant '' may be used in place of the  expression.    LET array
  VEC constant    This creates a vector with the variable 'array' containing the
  address of the vector.      Procedures    LET proc(p1, p2, ...)  expression  L
ET proc(p1, p2, ...) BE command    These define a procedure with parameters p1, 
p2,.... The first  form provides a function, as a value is returned. The express
ion  is often a VALOF clause. This takes the following form    VALOF command    
The command is usually a compound command which contains one or  more RESULTIS c
ommands    RESULTIS expression    When a RESULTIS command is executed the VALOF 
command has  finished and the value of the expression is returned.    The second
 form of the procedure declaration defines a routine.  No value is returned.    
Either form of procedure is invoked by a command    proc(a,b,...)    A function 
call can appear in an expression.    pa  Other declarations    GLOBAL $( var1  c
1  var2  c2  ... $)  STATIC $( var1val1  var2val2  ... $)    Dynamic variables (
those defined with LET) only have an  allocated area of memory when they are wit
hin scope. Variables  defined with GLOBAL or STATIC have a permanently allocated
 word  of memory. The STATIC declaration allows an initial value to be  set. The
 GLOBAL declaration is redundant in this implementation  as it is used when sepa
rate compilation is available. It is  included for compatibility with other BCPL
 compilers.    A global vector can be defined as follows. Declare the name of th
e  vector as a static variable, then declare a dummy vector in  'start' and assi
gn this to the static variable. This ensures  that the vector is in scope throug
hout the program.    Example  STATIC $( errlev0 $)  LET start() BE  $(    LET er
rvecVEC 3    errlev  errvec    ...    MANIFEST $( name1val1  name2val2  ... $)  
  The MANIFEST declaration attaches a name to a constant. It is  not a variable 
and should be used liberally within a BCPL  program to aid readability, and to e
nable constants used by a  program to be easily changed if necessary.      Simul
taneous declarations    A LET declaration may be followed by any number of AND  
declarations. All these declarations are considered as a single  declaration for
 the purposes of scope of identifiers. This  allows mutually recursive procedure
s    LET proc1(...) BE   $(  ... proc2(...) ...  $)    AND proc2(...) BE  $(   .
.. proc1(...) ...  $)  pa  Strings    Strings are stored as follows    One byte 
being the length of the string  The string, one character per byte    Since BCPL
 works with 16 bit words a special means is needed to  access the individual cha
racters of a string. This is the  infixed byte operator '%'. To access the nth c
haracter of a  string use    string%n  To access the length of a string use  str
ing%0  These can be read and written to, allowing strings to be  manipulated in 
any desired manner.      Transfer of control    FINISH    This causes execution 
of the program to stop.    RETURN    Control returns to the calling routine.    
BREAK    Used within a repetitive command (UNTIL, WHILE, REPEAT,  REPEATUNTIL, R
EPEATWHILE, or FOR) it causes execution to resume  at the first command after th
e repetitive com  Pmand.    LOOP    Control passes to the point where the repeti
tive command  condition is tested. For a FOR command control passes to the  poin
t where the control variable is incremented.    ENDCASE    Control passes to the
 command after the end of the SWITCHIN  compound command.    GOTO expression    
Rarely required in BCPL, the GOTO command evaluates the  expression and jumps to
 the address obtained. The expression is  usually a label which is defined by be
ing attached to a command,    e.g.labelname command  pa  Comments and layout of 
programs    There are two ways of putting comments within BCPL programs.    // c
auses the remainder of the line to be ignored  /* causes all text to be ignored 
until the compiler reaches the  symbol */    Additionally a  in column 1 causes 
the whole line to be  ignored. Thus PROTEXT stored commands are ignored.    Mult
iple command lines are allowed. Commands must be separated  by a semicolon () if
 there would otherwise be an an ambiguity.    Blank lines and spaces are ignored
 except where they are  required to separate items. PROTEXT soft spaces, soft li
ne  feeds, and markers are ignored.  pa  ---!-----!-----!-------!-------!-------
!-------!-------!-------!----R  ce                      8. THE ARNOR BCPL LIBRAR
IES      The libraries supplied with the compiler provide procedures for  writin
g to the screen, printer or files and reading from the keyboard  or files. Each 
of these procedures is described below.  The two versions of the compiler need d
ifferent libraries which,  although they look the same from the outside, have di
fferent internal  workings determined by the different operating systems. There 
is an  additional AMSDOS library which contains routines which are only  relevan
t to the CPC machines.    Manifest constants defined in the libraries    These s
hould be used where appropriate to make programs both  readable and portable. Th
ey define implementation dependent constants.    ---!-----!-----!-------L-------
!-------!-------!-------!-------!----R  namevalue   meaning and use    bitsperwo
rd16BCPL word size, for program portability  bytesperword2BCPL word size, for pr
ogram portability  endstreamch--1hard end of file character  maxint32767the larg
est possible integer  minint--32768the smallest possible integer  newlinech269th
e new line character, *N, which is expanded  to carriage return followed by line
 feed  printstream1stream number to select output to printer  softeofch26soft en
d of file character  tickspersec300multiply the value returned by 'time' by this
  to get the time in seconds. AMSDOS only.  vdustream0stream number to select sc
reen/keyboard      ---!-----!-----L-------!-------!-------!-------!-------!-----
--!----R  Key to procedure descriptions    Effect brief explanation of the proce
dure  Returnsdetails any value returned by the procedure. All  library procedure
s may be called as routines, whether  or not they return a value. Only those pro
cedures that  return a value may be called as a function. Note that  several pro
cedures return values in a supplied vector,  but these will be listed as 'nothin
g' since there is  no function value returned.  Locationthis indicates where the
 procedure is defined. The  location for the CP/M version is given first, follow
ed  by the location for the AMSDOS version. Most of the  library procedures are 
written in BCPL and are  contained in one of the library files. A few routines  
are pre-defined, i.e. they are written into the  compiler.  pa  -------------- L
-------!-------!-------!-------!-------!-------!----R  (a) Output Routines      
NEWLINE()    EffectStarts a new line in the currently selected output.  The exac
t effect in Arnor BCPL is to output a carriage  return (13) followed by a line f
eed (10).    ReturnsNothing    LocationCLIBHDR, ALIBHDR      NEWPAGE()    Effect
Starts a new page in the currently selected output.  The exact effect in Arnor B
CPL is to output the form  feed character (12).    ReturnsNothing    LocationCLI
BHDR1, ALIBHDR1      WRCH(char)    EffectThe character is sent to the currently 
selected output  stream. Wrch('*N') has the same effect as newline(),  i.e. carr
iage return and line feed are output.    ReturnsTRUE if successful, FALSE if an 
error occurred.    LocationCLIBHDR, ALIBHDR    Exampleswrch(char)  wr   P       
  ch('A')      WRITED(integer,width)    EffectThe integer is output as a signed 
decimal integer,  right justified in a field of the specified width. If  this wi
dth is insufficient then it will be output in  the minimum width. The number out
put will be in the  range (--32768,32767).    ReturnsNothing    LocationCLIBHDR,
 ALIBHDR  pa  WRITEF(format,a,b,c,d,e,f,g,h,i,j,k)    EffectWRITEF allows charac
ters to be printed out according  to certain formats. The procedure takes one st
ring  parameter which gives the template to be used for  printing. It also takes
 another set of parameters  (up to 11) which give the items to be printed. Note 
 that it is not necessary to provide a BCPL procedure  with all of its formal pa
rameters. The template  parameter is a string which may include the %  character
 followed by a conversion character(s). The  template string is printed out with
 the other  parameters inserted into it in place of the %  character. The conver
sion characters available are  listed below. Some of these must be followed by a
  number to specify the required field width. These are  marked with 'n', which 
can be a decimal or hex digit  (so 'F' gives the maximum width of 15).    ------
-------- !-----L-!-------!-------!-------!-------!-------!----R  S  -- print a s
tring  C  -- print a character  Xn -- print ahex value. If the field width is to
o  small, only the least significant digits will be  output.  On -- print an oct
al value. If the field width is too  small, only the least significant digits wi
ll be  output.  In --print an integer in decimal. If the field width  is too sma
ll, the integer will be output using  the least number of spaces.  N  -- print a
n integer in decimal with no leading  spaces  %  -- print the % character  $  --
 skip a parameter    -------------- L-------!-------!-------!-------!-------!---
----!----R    ReturnsNothing    LocationCLIBHDR, ALIBHDR    Example    LET conve
rt  100  writef("%N in hexadecimal is %X4*N", convert, convert)    would print  
  100 in hexadecimal is 0064    pa  WRITEHEX(integer,width)    EffectThe integer
 is output as an unsigned hexadecimal  integer, right justified in a field of th
e specified  width, with leading zeros. If this width is  insufficient then the 
least significant digits are  output.    ReturnsNothing    LocationCLIBHDR, ALIB
HDR    Examplewritehex(number,4)      WRITEN(integer)    EffectThe integer is ou
tput in decimal in the minimum width.  This is the same as WRITED(integer,0).   
 ReturnsNothing    LocationCLIBHDR, ALIBHDR      WRITEOCT(integer,width)    Effe
ctThe integer is output as an unsigned octal integer,  right justified in a fiel
d of the specified width,  with leading zeros. If this width is insufficient the
n  the least significant digits are output.    ReturnsNothing    LocationCLIBHDR
, ALIBHDR    Examplewriteoct(number,6)      WRITES(string)    EffectThe string i
s output.    ReturnsNothing    LocationCLIBHDR, ALIBHDR    Examplewrites("Enter 
filename ")    pa  WRITET(string,width)    EffectThe string is output in the spe
cified field width. If  the width is longer than the string then spaces are  out
put at the right. If the width is shorter than the  string, the whole string is 
printed.    ReturnsNothing    LocationCLIBHDR1, ALIBHDR1      WRITEU(unsigned,wi
dth)    EffectThe first parameter is treated as an unsigned integer  and output 
in decimal, right justified in the  specified width. If the width is too small t
he number  is printed in the minimum width. The number output  will be in the ra
nge (0,65535).    ReturnsNothing    LocationCLIBHDR1, ALIBHDR1  pa  (b) Input Ro
utines      RDCH()    EffectReads a character from the current input stream.    
ReturnsThe character read.    LocationCLIBHDR, ALIBHDR      READN()    EffectRea
ds a decimal integer from the current input stream.  Leading spaces are ignored.
    ReturnsThe number read.    LocationCLIBHDR, ALIBHDR      READS(string)    Ef
fectA string is read from the current input stream. The  parameter is a vector i
n which the string will be  stored. The string must be terminated by a carriage 
 return. The DEL, or DEL key may be used to delete  backwards. If ESC or STOP is
 pressed when the cursor  is not at the start of the string, all characters are 
 deleted. If   PESC or STOP is pressed when the cursor is  at the start of the s
tring, a string of zero length is  returned. The string is limited to a length o
f 255  bytes, so the vector string should be 128 words in  length.    ReturnsFAL
SE if ESC or STOP pressed, otherwise TRUE    LocationCLIBHDR, ALIBHDR    Example
LET input  VEC 128  UNLESS reads(input) DO error("Escape")    pa  STRTONUM(strin
g,base)    EffectThis function takes a string as its first parameter  and the ba
se of the result as its second. It converts  the string to a number in that base
 and returns it as  the result.    ReturnsThe number obtained by the conversion 
   LocationCLIBHDR, ALIBHDR    ExampleA READX function to input a hexadecimal nu
mber is  easily written  LET readx()  VALOF    $(              LET string  VEC 1
28             reads(string)             RESULTIS strtonum(string,16)  $)      U
NRDCH()    EffectPuts back the last character read from the currently  selected 
stream. This routine should not be called  twice without an intervening call to 
RDCH, the second  call will have no effect. Characters can only be  returned to 
the current stream if RDCH is used, the  facility is not provided at the primiti
ve I/O routine  level (that is RDVDU and READCH).    ReturnsNothing    LocationC
LIBHDR, ALIBHDR    Examplech  rdch() REPEATUNTIL ch13  unrdch()    pa  (c) Strea
m Selection Routines      INPUT()    EffectThis will return a value representing
 the current  input stream. Zero means the keyboard is the current  input stream
, any other value is the address of the  buffer associated with the file from wh
ich input is  being taken.    ReturnsThe current input stream    LocationCLIBHDR
, ALIBHDR      OUTPUT()    EffectThis will return a value representing the curre
nt  output stream. Zero means the VDU is the current  stream, one means the prin
ter is the current stream,  any other value is the address of the buffer  associ
ated with the file to which output is being  sent.    ReturnsThe current output 
stream    LocationCLIBHDR, ALIBHDR      SELECTINPUT(stream)    EffectThis is use
d to change the currently selected input  stream (i.e. that used by rdch). A str
eam value of  zero selects the keyboard. Any other value must be the  address of
 the buffer associated with a file, and  causes input to be taken from that file
. The file must  previously have been opened using FINDINPUT.    ReturnsNothing 
   LocationCLIBHDR, ALIBHDR    pa  SELECTOUTPUT(stream)    EffectThis is used to
 change the currently selected output  stream (i.e. that used by wrch, writef et
c.). A stream  value of zero selects the VDU, a value of one selects  the printe
r. Any other value must be the address of  the buffer associated with a file, an
d causes output  to be sent to that file. The file must have been  previously op
ened using FINDOUTPUT.    ReturnsNothing    LocationCLIBHDR, ALIBHDR    Examples
selectoutput(outfilebuf)  selectoutput(printstream)          (d) File I/O Routin
es      ENDREAD()    EffectThe currently selected input stream is closed.    Ret
urnsTRUE if the file was closed successfully, FALSE if  not.    LocationCLIBHDR,
 ALIBHDR      ENDWRITE()    EffectThe currently selected output stream is closed
. It is  essential that either this routine or CLOSEOUT is used  after writing t
o a file, as it causes the last section  of data to be written to the disc.    R
eturnsTRUE if the file was closed successfully, else FALSE.    LocationCLIBHDR, 
ALIBHDR    pa  FINDINPUT(filename,buffer)    EffectTo open an input file. The fi
rst parameter is a string  giving the name of the file. The second parameter is 
a  vector which will be used for the file buffer. This  vector should be 82 word
s long under CP/M and 1024  words long under AMSDOS. The filename must be a vali
d  CP/M or AMSDOS filename, and may include a drive  specifier.    ReturnsIf the
 file was opened successfully, the value 'TRUE'  is returned, otherwise 'FALSE'.
    LocationCLIBHDR, ALIBHDR    ExampleLET inbuf  VEC 82  TEST findinput("Anames
.dta",inbuf)   THEN selectinput(inbuf)  ELSE error("Cannot open file")      FIND
OUTPUT(filename,buffer)    EffectTo open an output file. The first parameter is 
a  string giving the name of the file. The second  parameter is a vector which w
ill be used for the file  buffer. This vector s  Phould be 82 words long under C
P/M  and 1024 words long under AMSDOS. The filename must be  a valid CP/M or AMS
DOS filename, and may include a  drive specifier.    ReturnsIf the file was open
ed successfully, the value 'TRUE'  is returned, otherwise 'FALSE'.    LocationCL
IBHDR, ALIBHDR    ExampleLET outbuf  VEC 82  TEST findoutput("Anames.dta",outbuf
)   THEN selectoutput(outbuf)  ELSE error("Cannot open file")    pa  REWIND()   
 EffectThe current input stream is rewound. If the current  stream is the keyboa
rd this has no effect, if a file  the file pointer is set to the start of the fi
le, so  the next input will be taken from the start. REWIND is  not provided in 
the AMSDOS version.    ReturnsNothing    LocationCLIBHDR      ---!-----!-----!--
-----!-------!-------!-------!-------!-------!----R    Example of the use of fil
e I/O routines    LET buffer  VEC 1024  LET filename  VEC 20  writef("Please ent
er the message file name ")  reads(filename)  TEST findinput(filename,buffer) TH
EN  $(    LET char      selectinput(buffer)    char  rdch()    UNTIL char  softe
ofch LOGOR char  endstreamch DO      $( wrch(char)  char  rdch() $)    endread(b
uffer)    selectinput(vdustream)  $)  ELSE writef("No messages*N")      This wil
l ask for a file name and then, if that file exists, will  print out the content
s of it.  -------------- L-------!-------!-------!-------!-------!-------!----R 
 ---!-----!-----!-------!-------!-------!-------!-------!-------!----R  pa  (e) 
The Primitive I/O Operations    The library contains primitive routines for read
ing/writing to  files, reading/writing to the VDU, and writing to the printer. T
he  higher level RDCH and WRCH routines switch between these routines when  call
ed upon to do so by SELECTINPUT or SELECTOUTPUT. It is quite  possible to use th
e primitive routines separately from RDCH/WRCH and  so read/write files and the 
screen/keyboard at the same time without  using SELECTINPUT or SELECTOUTPUT. The
se routines are RDVDU, WRVDU,  READCH and WRITECH.    -------------- L-------!--
-----!-------!-------!-------!-------!----R        CLOSEIN(buffer)    EffectThe 
input file associated with the buffer is closed.    ReturnsTRUE if the file was 
closed successfully, FALSE if  not.    LocationCLIBHDR, ALIBHDR      CLOSEOUT(bu
ffer)    EffectThe output file associated with the buffer is closed.  It is esse
ntial that either this routine or  ENDWRITE is used after writing to a file, as 
it causes  the last section of data to be written to the disc.    ReturnsTRUE if
 the file was closed successfully, else FALSE.    LocationCLIBHDR, ALIBHDR      
FLUSH()    EffectEmpties the keyboard buffer.    ReturnsNothing    LocationCLIBH
DR, ALIBHDR    pa  PRBUSY()    EffectFinds out if the printer is busy.    Return
sTRUE if busy, FALSE if not    LocationCLIBHDR, ALIBHDR    ExampleIF prbusy() TH
EN writes("Put the printer on line*N")  WHILE prbusy() LOOP      PRCH(char)    E
ffectSends a character to the printer. If the printer is  busy then PRCH waits u
ntil the character can be sent.  PRBUSY should be used to test for the printer b
eing  busy. This routine is called by WRCH if the printer is  the selected outpu
t stream.    ReturnsTRUE    LocationCLIBHDR, ALIBHDR      RDTEST()    EffectFind
s out if a key has been pressed.    ReturnsTRUE if a key has been pressed, FALSE
 if not.    LocationCLIBHDR, ALIBHDR    ExampleWHILE rdtest() DO rdch()      RDV
DU()    EffectReads a character from the keyboard, whatever the  currently selec
ted input stream. This routine is  called by RDCH if the keyboard is the selecte
d input  stream. RDVDU is pre-defined in the CP/M compiler so  that it can buffe
r characters to allow for break  testing without losing characters.    ReturnsTh
e character read.    LocationPre-defined in CP/M compiler, ALIBHDR    pa  READCH
(buffer)    EffectReads a character from a file, whatever the currently  selecte
d input stream. The buffer is not needed under  AMSDOS. This routine is called b
y RDCH if a file is  the selected input stream.    ReturnsThe character read.   
 LocationCLIBHDR, ALIBHDR      REWINDIN(buffer)    EffectThe file pointer for th
e specified file is set to the  start of the file. This routine is called by REW
IND if  a file is the selected input stream. REWINDIN is not  provided in the AM
SDOS version.    ReturnsNothing    LocationCLIBHDR      P  WRITECH(char,buffer) 
   EffectWrites a character to a file, whatever the currently  selected output s
tream. The buffer is not needed under  AMSDOS. This routine is called by WRCH is
 a file is  the selected output stream.    ReturnsTRUE if successful, FALSE if a
 disc error occurred    LocationCLIBHDR, ALIBHDR    Exampleswritech('$',outfileb
uf)// CP/M version  writech('$')// AMSDOS version      WRVDU(char)    EffectWrit
es a character to the screen, whatever the  currently selected output stream. Th
is routine is  called by WRCH if the screen is the selected output  stream.    R
eturnsTRUE    LocationCLIBHDR, ALIBHDR  pa  (f) Miscellaneous Routines      APTO
VEC(function,arraysize)    EffectThis will create a dynamic array of size arrays
ize and  then pass the address of this array along with its  size to the functio
n. It will return the result of the  function and is equivalent to    LET aptove
c(function,arraysize)  VALOF    $(  LET v  VEC arraysize// illegal in BCPL      
RESULTIS function(v,arraysize)  $)    Returnsthe value returned by the function 
   LocationPre-defined, pre-defined      BYTEMOVE(start,dest,size)    EffectThis
 is a block byte move routine. It works with  actual byte addresses (that is the
 addresses used by  the Z80 processor) so if array names are used as a  paramete
r then they should be multiplied by two as  BCPL works with word addresses. The 
old and new blocks  may overlap.    ReturnsNothing    LocationCLIBHDR1, ALIBHDR1
    Examplebytemove(buffer*2+36,buffer*2+16,16)      CALL(address,af,bc,de,hl,ix
)    EffectCalls a machine code routine at a byte address. All  parameters MUST 
be supplied as values are returned.  The values returned by the machine code rou
tine are  passed back in the variables.    ReturnsNothing    LocationCLIBHDR1, A
LIBHDR1    pa  CAPITALCH(char)    EffectIf the character is a lower case letter 
the upper case  equivalent is returned, otherwise the original  character is ret
urned.    ReturnsThe converted character    LocationCLIBHDR, ALIBHDR      COMPCH
(char1,char2)    EffectCompares two characters, ignoring the distinction  betwee
n upper and lower case. It returns the  difference between the two characters.  
  ReturnsThe difference between the characters    LocationCLIBHDR1, ALIBHDR1    
  COMPSTRING(string1,string2)    EffectCompares two strings, ignoring the distin
ction between  upper and lower case. The result is zero if the  strings are the 
same, positive if string1 follows  string2 alphabetically, and negative if strin
g2  follows string1.    ReturnsThe result of the comparison, as above    Locatio
nCLIBHDR1, ALIBHDR1      DECVAL(digit)    EffectThis returns the decimal value o
f a hexadecimal digit.    ReturnsThe decimal value of the digit    LocationCLIBH
DR, ALIBHDR    Exampledecval('A')// returns 10    pa  DELETE(filename,buffer)   
 EffectThe first parameter is a string specifying the name of  a file. This file
 is then deleted from the disc. The  CP/M version requires an 82 word buffer, th
e AMSDOS  version requires no buffer.    ReturnsTRUE if the operation succeeded,
 FALSE if a disc error  occurred.    LocationCLIBHDR1, ALIBHDR1    Examplesdelet
e("tempfile",buffer)// CP/M version  delete("tempfile")// AMSDOS version      LE
VEL(array)    EffectThis returns the state of the BCPL program in the  array giv
en. The array must be at least 4 words in  size. This routine is used with LONGJ
UMP to allow  jumps between procedures etc. See section 9 for more  details.    
ReturnsNothing    LocationPre-defined, pre-defined      LONGJUMP(address,array) 
   EffectThis will set the state of the program according to  the array given. T
he array must have been set  previously by the use of LEVEL. Once the state has 
 been set it will jump to address. See section 9 for  more details.    ReturnsNo
thing    LocationPre-defined, pre-defined    pa  RANDOM()    EffectThis function
 returns a sequence of pseudo-random  numbers. The sequence will always be the s
ame unless  the seed is initialised first. The seed is stored in a  static varia
ble called 'randomseed', and this should  be initialised to different values to 
produce  different sequences. The sequence runs through all  possible 2 byte val
ues.    ReturnsA randomly generated integer.    LocationCLIBHDR1, A  PLIBHDR1   
   RENAME(filename1,filename2,buffer)    EffectThe first parameter is a string s
pecifying the name of  a file. The file is renamed to the second name. The  CP/M
 version requires an 82 word buffer, the AMSDOS  version requires no buffer.    
ReturnsTRUE if the operation succeeded, FALSE if a disc error  occurred.    Loca
tionCLIBHDR1, ALIBHDR1    Examples  rename("oldname","newname",buffer) // CP/M v
ersion  rename("oldname","newname")        //AMSDOS version      STOP(returncode
)    EffectExecution of the program terminates. Under CP/M Plus  the supplied pa
rameter is used to set the program  return code. By convention a return code bet
ween  #xFF00 and #xFFFE is an error code. The return code is  ignored under CP/M
 2.2 and AMSDOS.    ReturnsNothing    LocationCLIBHDR1, ALIBHDR1    pa  UPPERCAS
E(char)    EffectThis is the same as CAPITALCH.    ReturnsThe converted characte
r    LocationCLIBHDR, ALIBHDR      VERSION()    EffectReturns a number identifyi
ng the operating system  and computer on which the program is being executed.  T
he values returned are  1  CPC, AMSDOS  2  CPC, CP/M 2.2  3  CPC, CP/M Plus  4  
PCW, CP/M Plus    ReturnsThe version number    LocationCLIBHDR1, ALIBHDR1      p
a  (g) Routines provided in the CP/M libraries only    BDOSA(c,de)    EffectThe 
BDOS is called with the parameters passed in the C  and DE registers. The addres
ses of the variables must  be passed in order that results can be returned. The 
 returned values of the A and HL registers from the  BDOS are returned in the va
riables c and de  respectively.    ReturnsNothing    LocationCLIBHDR only      B
DOSB(c,de)    EffectThis is similar to BDOSA except that results are not  return
ed. The values of c and de are passed, not their  addresses.    ReturnsNothing  
  LocationCLIBHDR only      BIOS(n,a)    EffectBIOS routine n is called and the 
value returned by the  BIOS in A is returned in the variable a. The address  of 
a must be passed. This routine is used by PRBUSY.    ReturnsNothing    LocationC
LIBHDR only      FIRMWARE(address,af,bc,de,hl,ix)    EffectOn CP/M Plus, calls t
he firmware ROM (CPC6128 only) or  the extended firmware jumpblock. The values r
eturned  by the firmware routine are passed back in the  variables. All paramete
rs MUST be supplied.    ReturnsNothing    LocationCLIBHDR1 only    pa  TAIL(stri
ng)    EffectTakes a vector as parameter and stores the CP/M  command tail (from
 #x80) in the vector as a string.  This allows BCPL programs to access parameter
s typed  on the CP/M command line. The vector should be 64  words long.    Retur
nsNothing    LocationCLIBHDR1 only        (h) Routines provided in the AMSDOS li
braries only      EXTERNAL(command,nparms,parmblock)    EffectThis allows a BCPL
 program to access an AMSDOS  external command. It is used by DELETE and RENAME.
 The  parameters are passed in the form required by the  firmware for calling an
 external command. See the  DELETE and RENAME routines in ALIBHDR1 for details o
f  how to use this routine.    ReturnsNothing    LocationALIBHDR1 only      TIME
()    EffectReturns the time in units of 1/300 second, as  maintained by the AMS
DOS firmware.    ReturnsThe time    LocationALIBHDR1 only  pa  (i) Routines prov
ided only for compatibility    -------!-------!-------!-------!-------!-------!-
------!-------!----R  These are routines that may be used in existing BCPL progr
ams, but the  infixed byte operator now makes their use unnecessary.  ----------
---- L-------!-------!-------!-------!-------!-------!----R    GETBYTE(string,po
s)    EffectGets a character from a string. This routine is  included for compat
ibility with older BCPL systems and  would usually be replaced by  string%pos   
 ReturnsThe character from the string    LocationCLIBHDR1, ALIBHDR1      PACKSTR
ING(vector,string)    EffectPacks a vector containing one character per word int
o  a string containing two characters per word. This  routine is included for co
mpatibility with older BCPL  systems.    ReturnsNothing    LocationCLIBHDR1, ALI
BHDR1      PUTBYTE(string,pos,char)    EffectPuts a character into a string. Thi
s routine is  included for compatibility with older BCPL systems,  and would usu
ally be replaced by  string%pos  char    ReturnsNothing    LocationCLIBHDR1, ALI
BHDR1      UNPACKSTRIN  PG(string,vector)    EffectUnpacks a string containing t
wo characters per word  into a vector containing one character per word. This  r
outine is included for compatibility with older BCPL  systems.    ReturnsNothing
    LocationCLIBHDR1, ALIBHDR1  pa  (j) AMSDOS Graphics and other routines    --
-!-----!-----!-------!-------!-------!-------!-------!-------!----R  These routi
nes are included in the file "AMSDOS", and are relevant  only to CPC machines. T
hey provide the means for a BCPL program to  access the computer's graphics and 
other firmware facilities, and  in most cases correspond directly to a Locomotiv
e BASIC command. For  details of how to use these routines consult the file AMSD
OS, which  lists the equivalent BASIC routines.    List of routines    border, c
lg, cls, cursdi, cursen, cursoff, curson, draw, drawr, ent,  env, frame, gpen, g
paper, gtest, gtestr, gwindow, gwrch, ink, inkey,  inkmode, keyvalid, locate, mo
de, move, mover, opaque, origin, paper,  pen, plot, plotr, release, rsx, sound, 
speedink, speedkey, stream,  strswap, tag, tagoff, transparent, window, xpos, yp
os        (k) DEBUG    There is one further library routine provided, which is u
seful  when debugging programs. The routine, DEBUG, is supplied in a separate  f
ile, also called 'DEBUG', and provides various options for displaying  variable 
names and contents. These options may be changed with later  releases of BCPL an
d so to ensure accuracy, exact details are only  given in the file.  To use DEBU
G, put the directive 'GET "DEBUG"' near the start of  the program -- so it is co
mpiled after the library routines and before  the first time DEBUG is called.  I
t is possible to compile the program without DEBUG being called,  but without th
e need to remove the calls themselves. Simply replace  'GET"DEBUG"' by 'LET debu
g() BE RETURN'. This will substitute a dummy  routine.    pa  /!his will substit
ute a dummy  routine.    pa  BCPLM3      YYSe          Unexpected node in expres
sion          Declarati---!-----!-----!-------!-------!-------!-------!-------!-
------!----R  pn 49  tm 3  bm 11  hm 0  fm 2  fo                                
  %  ce 9. DIFFERENCES FROM STANDARD BCPL      The INLINE command    This is an 
extension to the normal BCPL command set and allows Z80  code to be incorporated
 directly into a BCPL program. The inline  command is followed by a list of cons
tants separated by commas. The  low byte of these constants is taken and inserte
d directly into the  object code. This allows procedures to call firmware routin
es etc. and  has been used in the LIBHDR files. In order to use this facility  p
roperly you must be aware of the way that the compiler stores  variables and reg
isters which must be left intact. See appendix 1  (technical information).    e.
g.  INLINE 205,#x5A,#xBB    will call the AMSDOS print character routine -- TXT 
OUTPUT.      The infixed byte operator %    This is an extension to standard BCP
L which is supported. The  infixed byte operator will extract a particular byte 
from a vector. In  use this operator is very similar to the ! operator except th
at it  cannot be used as a unary operator and that the second operand always  gi
ves the byte offset from the first operator. The main use of this  operator is w
ith strings to extract a particular character from the  string.    e.g.  LET v  
VEC 19  FOR a  1 TO 39 DO v%a  ' '  v%0  39                     // set the strin
g length byte    will create a string containing 39 spaces.      Undefined initi
al values    The initial value of a simple variable declared in a LET command  m
ay be undefined. This is done by using a question mark (). This is  used to aid 
readability of programs by indicating that there is no  relevant initial value o
f a variable.      FINDINPUT and FINDOUTPUT    The procedures for opening files 
are slightly different from  standard BCPL in that a buffer must be specified as
 a parameter,  instead of them returning a stream identifier.  pa  Global Variab
les      When a procedure is defined in standard BCPL the compiler checks  to se
e if a GLOBAL variable with the same name is in scope. If it is  in scope, then 
that variable will be initialised with the address of  the procedure. If there i
s no such variable in scope then a new STATIC  variable will be created and   Pt
hat variable initialised with the  address of the procedure. When a procedure ca
ll is made the code looks  up the address in the relevant variable and calls tha
t address. The  reason for this indirect calling is to enable easy communication
  between separately compiled units.  As the ARNOR compiler does not allow separ
ate compilation there is  no need for this indirect approach and so a call is ma
de directly to  the address of the procedure. This also means that the number  a
ssociated with a GLOBAL variable in its definition is meaningless as  there is n
o actual GLOBAL vector. The index number is, however,  retained for compatabilit
y with other compilers. The outcome of all  this is that although it is possible
 to read the address of a  procedure, and so pass procedures as parameters, it i
s not possible to  assign to a procedure. You can, however, set up a global vari
able with  a different name from a procedure and then assign the procedure's  ad
dress to that global variable in your program. This means that the  procedure ca
n then be assigned to.                             LEVEL and LONGJUMP    LEVEL w
orks in a slightly different way from most BCPL  implementations. It usually ret
urns a single 1 word value  representing the state of the BCPL stack at a point 
in the program.  Due to the limitations of the Z80 in stack addressing it is not
  possible to pack the required information into one word with this  implementat
ion of BCPL. Instead the LEVEL procedure returns its result  in a 4 word vector 
passed to the procedure. See appendix 1 (techincal  information) for exact detai
ls.    e.g.    LET errorlevel  VEC 3  level(errorlevel)      Extensions not supp
orted    The following features, which are mentioned in the BCPL book, are  not 
supported separate compilation, floating point extension, the  field selector ex
tension.      pa  ce A1. TECHNICAL INFORMATION      The compiler allocates dynam
ic storage from the hardware stack for  ordinary local variables. These are acce
ssed by indexing the stack  using the IX register which points to the high byte 
of the last formal  parameter minus 127. The formal parameters are stored in rev
erse  order, coming down in memory. Immediately below the first formal  paramete
r is the return address from the procedure which called the  currently active pr
ocedure. Below this is the old IX register from the  calling procedure and below
 this a value which represents the state of  the vector space. Local variables n
ow come down from this space in the  order that they are declared and SP will po
int to the low byte of the  last local variable currently in scope.  When a new 
local variable is declared, its initial value is  calculated and then pushed ont
o the stack. When a vector is allocated,  space is taken from the vector space, 
which is directly after the  program, and a pointer to this space is pushed onto
 the stack.    e.g. for the following procedure                    LET x(a,b) BE
                  $(                    LET z  0                    ...         
         $)    at the point marked by the dots the stack looks like this        
            b         IX + 127                  a         IX + 125              
    ret addr  IX + 123                  old IX    IX + 121                  vec 
ptr   IX + 119                  z         IX + 117, SP points here    When local
 variables are undeclared (i.e. at the end of their  block), the stack pointer i
s moved up to release the space used.  pa  Static variables are allocated their 
space at compile time. They  are embedded in the code and are re-initialised eac
h time the program  is run. The stack is placed at the top of the available memo
ry. For  CP/M versions this is calculated from the start of the BDOS.   In AMSDO
S versions, static variable space is determined at compile  time, possibly using
 the H option. As already mentioned vector space  is taken from the area of memo
ry directly after the program. The start  of a program is #x100 for CP/M version
s and defaults to the first  usable byte of memory for AMSDOS. This may be chang
ed by use of the O  option.      This leaves a memory map looking like          
             Hardware stack                     ------------------  SP          
                                             empty                              
                                    ------------------  P                   Vect
ors                            ------------------                   Program and 
        static variables                   ------------------                   
 runtime routines                   ------------------  program start           
                                           ------------------  0                
    When writing any inline code the user must ensure that the IX  register and 
the SP are restored to their former positions when the  code finishes. Failure t
o do this will almost certainly cause the  program to crash. The Amstrad also re
quires that the alternate  register set is not used.    The LEVEL library proced
ure stores information about the state of  computation in a 4 word vector. The 4
 values which are stored are as  follows    word 0 -- The old vector base pointe
r  word 1 -- The vector top pointer  word 2 -- IX  word 3 -- SP    When LONGJUMP
 is used this information is used to restore the  state of computation.  pa  The
 14th and 15th bytes of any object program produced always  point to the base of
 the current vector allocation. The 16th and 17th  bytes always point to the top
 of the current vector allocation. All of  the vector space required for any par
ticular procedure activation is  allocated on entry to that procedure and de-all
ocated on exit. When a  vector is declared within a procedure it is given a chun
k of memory  within this allocation.    The compiler is a two pass compiler. The
 first pass reads the  source text of the program, does syntax analysis of it an
d produces an  applicative expression tree which represents the program. The sec
ond  pass goes over this tree and produces code for it. The second pass is  in f
act done twice the first time no code is produced but the program  is checked fo
r any semantic errors such as undefined identifiers or  illegal assignments. If 
this pass runs smoothly with no errors being  picked up then the second pass wil
l be repeated, this time generating  code.  pa  ce A2. SUMMARY AND INDEX OF LIBR
ARY ROUTINES      The letter  at the start of each line in the  following list o
f  library routines indicates the degree of portability of the routines.  Full d
etails are given in Appendix 3.  Note A means AMSDOS version only, C means CP/M 
version only    S indicates routine is part of the standard BCPL I/O library  D 
indicates a standard BCPL routine but with a slight difference       in the way 
it is used.  F indicates frequently found similar routines in BCPL systems  All 
unmarked routines are Arnor BCPL specific.      --!---!------------!----!-------
!-------!-------!-------!-------!---------R  name pgdescription    Saptovec 40ca
ll a routine with a dynamically allocated vector  Cbdosa 45call the BDOS, return
ing values  Cbdosb 45call the BDOS, not returning values  Cbios 45call the BIOS,
 returning a value  bytemove 40move a block of memory using byte addresses  Fcal
l 40call a machine code routine  Fcapitalch 41convert character from lower to up
per case  closein 37close an input file  closeout 37close an output file  Fcompc
h 41compare two characters  Fcompstring 41compare two strings  debug 48debugging
 aid  decval 41convert a hexadecimal digit to decimal  Fdelete 42delete a file  
Sendread34close the current input stream  Sendwrite 34close the current output s
tream  Aexternal 46call an external command  Dfindinput 35open an input file  Df
indoutput 36open an output file  Cfirmware 45call the firmware (CP/M Plus only) 
 flush 37flush the keyboard buffer  Sgetbyte 47get a byte from a string  Sinput 
33return the currently selected output stream  Dlevel 42get pointer to current e
nvironment  Dlongjump 42jump to outer level of program  Snewline 27start a new l
ine in the output  Snewpage 27start a new page in the output  Soutput 33return t
he currently selected output stream  pa      Spackstring 47compact a string  prb
usy 38see if the printer is busy  prch 38send a character to the printer  Sputby
te 47put a byte into a string  Frandom 42return a pseudo-random number  Srdch 31
read a character  rdtest 38see if a key has been pressed  rdvdu 38read character
 from the keyboard  readch 39read a character from the input file  Sreadn 31read
 a decimal number  Sreads 31read a string  Creadsector-read a 128 byte sector fr
om disc  Frename 42rename a file  CSrewind   P36rewind the input stream  Crewind
in 39rewind an input file  Sselectinput 33change the input stream  Sselectoutput
 34change the output stream  Csetfcb-set up a file control block  Sstop 43stop a
 program and set return code  strtonum 32convert a string to a decimal number  C
tail 46returns the CP/M command tail as a string  AFtime 46return the time  Sunp
ackstring47expand a string into a vector  Sunrdch 32put back the last read chara
cter  Fuppercase 44same as capitalch  version 44return the operating system and 
computer  Swrch 27write a character  writech 39write a character to the output f
ile  Swrited 27write a decimal number  Swritef 28formatted write  Swritehex 29wr
ite a hexadecimal number  Swriten 29write a decimal number in minimum width  Swr
iteoct 29write an octal number  Swrites 29write a string  Cwritesector-write a 1
28 byte sector to disc  Fwritet 30write a string and pad with spaces  Fwriteu 30
write an unsigned decimal number  wrvdu 39write character to the screen  pa  ---
!-----!-----!-------!-------!-------!-------!-------!-------!----R  ce A3. PORTA
BILITY      Most of the above I/O routines will be found in virtually all  versi
ons of BCPL. Some are less standard, and some are specific to  Arnor BCPL. If a 
program may be required to run under other versions  of BCPL these less standard
 routines should be used as little as  possible.        Routines that are part o
f the standard BCPL I/O library (those marked  'd' are used in a slightly differ
ent way in Arnor BCPL)    aptovec, endread, endwrite, findinput(d), findoutput(d
), getbyte,  input, level(d), longjump(d), newline, newpage, output, packstring,
  putbyte, rdch, readn, reads, rewind, selectinput, selectoutput, stop,  unpacks
tring, unrdch, wrch, writed, writef, writehex, writen,  writeoct, writes.      R
outines that are not entirely standard (though many BCPL systems have  something
 similar)    call, capitalch, compch, compstring, delete, random, rename, time, 
 uppercase, writet, writeu.      Routines specific to Arnor BCPL    bdosa, bdosb
, bios, bytemove, closein, closeout, debug, decval,  external, firmware, flush, 
prbusy, prch, rdtest, rdvdu, readch,  readsector, rewindin, setfcb, strtonum, ta
il, version, writech,  writesector, wrvdu, plus all the routines in the file "AM
SDOS", which  are also CPC machine specific as well.      pa                    
        A4. ERROR MESSAGES      There are three main sets of error messages whic
h can occur. These  are fatal errors which cause the compiler to abort immediate
ly, phase  1 errors which will stop the compilation after phase 1 and finally  p
hase 2 errors which will stop compilation at the end of the first run  of phase 
2.  Most error messages give a line number, for example "Expecting  command near
 line 27". The word "near" is used because the compiler  gives the line number a
t which it discovered the problem, and this is  not necessarily the same line th
at needs correcting. The line number  refers to the position of the line within 
the file, and not to the  total number of lines compiled so far.      (i) Fatal 
Errors      Out of memory    The compiler has run out of room for the program or
 its symbol  table. Can sometimes be solved by re-using local variable names.   
   Out of symbol space    Very similar to the above except that the program may 
not be too  big. Try compiling it to disc which allows twice as much symbol spac
e.  If you are compiling a piece of text in memory from PROTEXT or  MAXAM then s
aving the text to disc, clearing the memory and then re- compiling may solve thi
s problem.      I/O error    An error has occurred when writing to the output fi
le. May mean  that the disc is full.      Can't open input file    The filename 
given in a GET directive could not be found on the  disc.      Can't open output
 file    The compiler was trying to open a file to output the compiled code  to,
 but for some reason was not able to open it.  pa  Broken in    ESC or STOP was 
pressed twice in a row. Pressing it once will halt  the compiler and cause it to
 wait for another key press. Pressing  escape again causes this error while any 
other key causes compilation  to continue.      Undefined START    All programs 
must have a procedure called START. The program  submitted did not have this pro
cedure.      Bad GET    Due to the limitations of AMSDOS only o  Pne file can be
 opened for  input at any one time. A file was opened which contained a GET  dir
ective. Will also occur if a piece of stored PROTEXT/MAXAM text  attempts to GET
 itself.      Non-ASCII file    The compiler was instructed to open a file but t
hat file did not  contain ASCII text which is required for the compiler. Users o
f  CPC versions of PROTEXT should use program mode, which will save the file  in
 ASCII format.      File intact    This occurs on CP/M versions when the destina
tion file existed but  the user typed N when asked if the file should be deleted
.      Bad SOURCE name    CP/M versions check the source name given, and if it i
s invalid in  some way e.g. has an extension of more than 3 letters then this er
ror  will be given.      Bad DESTINATION name    As above.  pa  (ii) Syntax Erro
rs    Phase 1 errors are all syntax errors within the program. Often the  cause 
will be a missing $) or ) which will probably cause what may at  first seemto be
 an odd error message. Syntax errors are reported as  occurring near a certain l
ine. This is the line within a particular  file. If the compiler listing is swit
ched off when the error occurs  then a buffer, holding the last few lines of tex
t read from the source  code, will be displayed.      Bad expression    The expr
ession being examined was faulty in some way. Maybe a  command name was used as 
an identifier.      Bad vector definition    A vector definition was bad in some
 way. In particular only one  vector may be declared in any LET command (althoug
h simultaneous  definitions are allowed).      Bad procedure definition    A pro
cedure definition was badly made. May have been some other  form of definition w
hich went wrong.      Bad FOR loop    The FOR loop was badly formed in some way.
      need  or  in constant definition    Constant, Global and Static definition
s require both  and   between the identifier and the constant expression. One or
 the other  is missing      Missing $)    A $) was expected but not found. Check
 the number of opening and  closing section brackets in the program.  pa  Missin
g $(    A compound statement was needed but the opening $( was not found.  In pa
rticular all SWITCHON statements must be compound.      Missing )    A closing b
racket in an expression or procedure call/definition  was missing.      Section 
tag mismatch    A section bracket was tagged but the tag did not have a matching
  opening section bracket. May be caused by omitting the space after a  section 
bracket.      Expecting command    A command was expected but one was not found.
 This can be caused  by, for example, omitting the colon in an assignment comman
d, or by a  declaration appearing after a command.      Expecting number    A nu
mber was expected but not found. Usually following a #.      Expecting ,    The 
compiler was expecting a comma (,) but did not find one.  Occurs in a conditiona
l expression.      ELSE expected    The ELSE part in a TEST statement is not opt
ional and was not  present in this case.      INTO expected    The control expre
ssion of a SWTICHON command must be followed by  the keyword INTO. In this case 
it was not. pa   expected    A colon is expected after a case label or DEFAULT b
ut the compiler  did not find one.      Expecting identifier    The compiler was
 expecting an identifier e.g. after LET but did  not find one.      String too l
ong    BCPL constant strings can only be 255 characters long.      Bad character
    The character read was illegal in the present context. e.g. it  could have b
een a  instead of /*      Bad character constant    A character constant was bad
ly formed, usually caused by a  carriage return following an asterisk.      Bad 
option line    The options in an option command must be separated by commas and 
 must end with a semi-colon or at the end of the line.       is only allowed in 
definitions    Self-explanatory. The only undefined values allowed are the  init
ialisation values of simple variables in a LET command.  anywhere  else is illeg
al.  pa  (iii) Semantic Errors      The rest of the errors are semantic errors w
hich occur during  phase two of the compiler. These are usually due to the use o
f an  invalid identifier name or a badly constructed loop.      Expression/id mi
smatch    The number of left and right hand sides in a multiple assignment  or d
eclaration was not equal.      Invalid assignment    You have attemp  Pted to as
sign to something which is not assignable.  e.g. a constant or procedure.      R
ESULTIS outside a VALOF    A RESULTIS command was found outside a VALOF block.  
    LOOP found outside loop    A LOOP command is only legal inside one of the lo
oping constructs.      BREAK found outside loop    A BREAK command is only legal
 inside one of the looping constructs.      RETURN found outside PROC/FUNC    A 
RETURN command is only legal within a procedure or function  body.      ENDCASE 
outside a SWITCHON    An ENDCASE statement was found outside the body of a SWITC
HON  command.      VALOF must contain RESULTIS    A VALOF expression must contai
n at least one RESULTIS command  pa  Invalid application of LV    The LV or  ope
rator was used in an incorrect context i.e. on a  constant. LV is 'left value' a
nd means the evaluation of an expression  to obtain an address.      Dynamic fre
e variable used    A variable was used in an embedded procedure which had been  
declared in an outer procedure.      CASE/DEFAULT found outside SWITCHON    CASE
 or DEFAULT statements are only valid inside a SWITCHON  statement.      Undefin
ed identifier    A variable was used which had not been defined or was not in sc
ope  when it was used.      Labels need a global    A label was defined when in 
the scope of a local variable of the  same name. As the variable will be initial
ised to the value of the  label, it must be a GLOBAL or STATIC. If no variable o
f the same name  is in scope then one will be created.      Need constant expres
sion    A constant expression was required but not found. Examples of  constants
 being required are the INLINE statement, declarations and  CASE labels.      (i
v) Internal compiler errors            There is a fourth type of error but you s
hould never see these.  These are internal compiler errors and indicate possible
 bugs in the  compiler.  Please report any incidence of one of these errors to A
rnor.            Error in translation node          Unexpected node in expressio
n          Declaration error            Unexpected node in expression          D
eclaraticonstants being required are the INLINE statement, declarations and  CAS
E labels.      (iv) Internal compiler errors            There is a fourth type o
f error but you should never see these.  These are internal compiler errors and 
indicate possible bugs in the  compiler.  Please report any incidence of one of 
these errors to Arnor.            Error in translation nodoption b-  get "clibhd
r"    /* A simple full screen editor */  /* CP/M version for CP/M 2.2 and CP/M P
lus */  // modified 02/12/1986    MANIFEST $( ins  TRUE  over  FALSE  cursleft  
#xF2  cursright  #xF3              cursup  #xF0  cursdown  #xF1  escape  #xFC  i
gnore  #xEF              stop  3              scursup  #xF4  scursdown  #xF5  sc
ursleft  #xF6              scursright  #xF7              ccursup  #xF8  ccursdow
n  #xF9              ccursleft  #xFA  ccursright  #xFB              copensq  27 
 cclosesq  29              maxscrheight  31              maxchr  22998     // ca
n be increased for CP/M Plus only            $)      /*     textend points to th
e last character in the file which will always be a     character 13. textptr po
ints to the first character of the current line.     textstart points to the sta
rt of the text space.  */    STATIC $( insert  ins  textend  0  textptr  0  text
start  0            x  1  y  1  prev  0  file  0  buffprint  FALSE            li
nenumber  1   scrheight0   ver0 $)    GLOBAL $( errvec  0  errlab  1 $)      LET
 bytemove(source,dest,number) BE    $(    inline 221,102,123      // ld h,(ix+12
3)    inline 221,110,122      // ld l,(ix+122)    inline 221,86,125       // ld 
d,(ix+125)    inline 221,94,124       // ld e,(ix+124)    inline 221,70,127     
  // ld b,(ix+127)    inline 221,78,126       // ld c,(ix+126)    inline 167    
          // and a    inline 237,82           // sbc hl,de    inline 25         
      // add hl,de    inline 56,4             // jr c,+4    inline 237,176      
    // ldir    inline 24,8             // jr +8    inline 11               // de
c bc    inline 9                // add hl,bc    inline 235              // ex de
,hl    inline 9                // add hl,bc    inline 235              // ex de,
hl    inline 3                // inc bc    inline 237,184          // lddr  $)  
  LET call(addr,af,bc,de,hl,ix) BE    $(  LET save3  VEC 1      bytemove(#x90, s
ave3*2, 3)      0%#x90  #xC3      0%#x91  add  Pr & #xFF      0%#x92  ( addr & #
xFF00 )  8        inline #xDD,#xE5            // push ix      inline #xDD,#x66,#
x77       // ld h,(ix+119)      inline #xDD,#x6E,#x76       // ld l,(ix+118)    
  inline #x29                 // add hl,hl      inline #x5E                 // l
d e,(hl)      inline #x23                 // inc hl      inline #x56            
     // ld d,(hl)      inline #xD5                 // push de      inline #xDD,#
x66,#x79       // ld h,(ix+121)      inline #xDD,#x6E,#x78       // ld l,(ix+120
)      inline #x29                 // add hl,hl      inline #x4E                
 // ld c,(hl)      inline #x23                 // inc hl      inline #x46       
          // ld b,(hl)      inline #xDD,#x66,#x7F       // ld h,(ix+127)      in
line #xDD,#x6E,#x7E       // ld l,(ix+126)      inline #x29                 // a
dd hl,hl      inline #x5E                 // ld e,(hl)      inline #x23         
        // inc hl      inline #x56                 // ld d,(hl)      inline #xD5
                 // push de      inline #xDD,#x66,#x7D       // ld h,(ix+125)   
   inline #xDD,#x6E,#x7C       // ld l,(ix+124)      inline #x29                
 // add hl,hl      inline #x5E                 // ld e,(hl)      inline #x23    
             // inc hl      inline #x56                 // ld d,(hl)      inline
 #xD5                 // push de      inline #xDD,#x66,#x7B       // ld h,(ix+12
3)      inline #xDD,#x6E,#x7A       // ld l,(ix+122)      inline #x29           
      // add hl,hl      inline #x5E                 // ld e,(hl)      inline #x2
3                 // inc hl      inline #x56                 // ld d,(hl)      i
nline #xE1                 // pop hl      inline #xDD,#xE1            // pop ix 
     inline #xF1                 // pop af      inline #xCD,#x90,#x00       // c
all &90      inline #xDD,#x22,#x90,#x00  // ld (&90),ix      inline #xDD,#xE1   
         // pop ix      inline #xF5                 // push af      inline #xE5 
                // push hl      inline #xDD,#x66,#x7B       // ld h,(ix+123)    
  inline #xDD,#x6E,#x7A       // ld l,(ix+122)      inline #x29                 
// add hl,hl      inline #x73                 // ld (hl),e      inline #x23     
            // inc hl      inline #x72                 // ld (hl),d      inline 
#xDD,#x66,#x7D       // ld h,(ix+125)      inline #xDD,#x6E,#x7C       // ld l,(
ix+124)      inline #x29                 // add hl,hl      inline #xD1          
       // pop de      inline #x73                 // ld (hl),e      inline #x23 
                // inc hl      inline #x72                 // ld (hl),d      inl
ine #xDD,#x66,#x7F       // ld h,(ix+127)      inline #xDD,#x6E,#x7E       // ld
 l,(ix+126)      inline #x29                 // add hl,hl      inline #xED,#x5B,
#x90,#x00  // ld de,(&90)      inline #x73                 // ld (hl),e      inl
ine #x23                 // inc hl      inline #x72                 // ld (hl),d
      inline #xDD,#x66,#x79       // ld h,(ix+121)      inline #xDD,#x6E,#x78   
    // ld l,(ix+120)      inline #x29                 // add hl,hl      inline #
x71                 // ld (hl),c      inline #x23                 // inc hl     
 inline #x70                 // ld (hl),b      inline #xDD,#x66,#x77       // ld
 h,(ix+119)      inline #xDD,#x6E,#x76       // ld l,(ix+118)      inline #x29  
               // add hl,hl      inline #xD1                 // pop de      inli
ne #x73                 // ld (hl),e      inline #x23                 // inc hl 
     inline #x72                 // ld (hl),d      bytemove(save3*2, #x90, 3)  $
)    LET firmware(addr,af,bc,de,hl,ix) BE    $(  LET save6  VEC 3      bytemove(
#x80, save6*2, 6)      0%#x80  #xCD      0%#x81  0%(0%1 + 256*0%2 + 87 +1)      
0%#x82  0%(0%1 + 256*0%2 + 87 +2)      0%#x83  addr & #xFF      0%#x84  ( addr &
 #xFF00 )  8      0%#x85  #xC9      call (#x80,af,bc,de,hl,ix)      bytemove(sav
e6*2, #x80, 6)  $)    and version()  VALOF    $(  LET c,de12,      LET af,bc,hl,
ix  ,,,      bdosa(c,de)      IF (de & #xFF)  #x30 THEN RESULTIS 2      firmware
(#xE3,af,bc,de,hl,ix)      RESULTIS 3 + ( (af & #xFF00)  8 )  $)    LET esccode(
x) BE    $(  wrch(27)  wrch(x)  $)      LET clearscr() BE  $(      TEST ver2 THE
N wrch(12) ELSE esccode('E')  $)      LET tab(x,y) BE    $(      TEST ver2 THEN 
   $(      bdosb(6,31)  bdosb(6,x)  bdosb(6,y)    $)    ELSE    $(       esccode
('Y')  wrch(y+32-1)  wrch(x+32-1)    $)    $)      LET spaces(number) BE $( FOR 
a  1 TO number DO wrch(' ') $)      LET ascii(char) BE    $(    TEST char13 THEN
 newline() ELSE wrch(char)  $)      LET curson() B  PE return  LET cursen() BE r
eturn  LET cursdi() BE return    LET beep() BE $( wrch(7) $)      /* This routin
e returns the number of characters up to and including the     next CR */    LET
 linelength(from)  VALOF    $(    LET sofar  1    WHILE !from NE 13 DO $( sofar 
 sofar + 1  from  from + 1 $)    RESULTIS sofar  $)        /* This routine will 
print num characters of line and then fill the rest of the     line with spaces 
*/    AND printclr(line,num) BE    $(    FOR a  0 TO num-1 DO wrch(line!a)    sp
aces(79-num)  $)      /* This routine will print either the whole buffer from x 
on or just the new     character */    AND reprint(line,pos) BE    $(    TEST in
sert THEN FOR a  pos TO line!0-1 DO wrch(line!a)    ELSE wrch(line!pos)  $)     
   /* This routine will remove a character from the buffer */    AND delete(line
,x) BE    $(    TEST insert THEN    $(      line!0  line!0 - 1      FOR a  x TO 
line!0 DO line!a  line!(a+1)    $)    ELSE line!x  ' '  $)      /* This routine 
will insert a character into the buffer at the point given */    AND binsert(lin
e,position,character) BE    $(    TEST insert THEN    $(      FOR a  line!0 TO p
osition BY -1 line!(a+1)  line!a      line!position  character      line!0  line
!0 + 1    $)    ELSE line!position  character  $)      AND validate(line,x)  VAL
OF    $(    IF x  line!0 THEN RESULTIS x    tab(line!0,y)    RESULTIS line!0  $)
        /*      The line given is in buffer in the following format       0 leng
th     1- string in unpacked format followed by 13      The routine reacts to ke
y and takes the appropriate action    */    AND buildbuff(buffer,key)  VALOF    
$(    tab(x,y)    SWITCHON key INTO    $(      CASE 13        x  validate(buffer
,x)        binsert(buffer,x,13)        wrch(13)        printclr(buffer+1,linelen
gth(buffer+1)-1)  RESULTIS 13      CASE cursleft CASE scursleft        TEST x1 T
HEN          x  x - 1        ELSE beep()        ENDCASE      CASE cursright CASE
 scursright        TEST x  buffer!0-1 THEN          x  x + 1        ELSE beep() 
       ENDCASE      CASE ccursleft  x  1  ENDCASE      CASE ccursright x  buffer
!0  ENDCASE      CASE scursup CASE scursdown      CASE ccursup CASE ccursdown   
   CASE copensq CASE cclosesq      CASE escape CASE stop CASE cursup CASE cursdo
wn RESULTIS key      CASE 127        x  validate(buffer,x)        IF x  1 THEN R
ESULTIS 127        x  x - 1        tab(x,y)        delete(buffer,x)        repri
nt(buffer,x)        IF insert THEN wrch(' ')        ENDCASE      DEFAULT        
x  validate(buffer,x)        TEST buffer!0  80 THEN        $(          binsert(b
uffer,x,key)          reprint(buffer,x)          IF insert LOGOR xbuffer!0 THEN 
x  x + 1        $)        ELSE beep()        ENDCASE       CASE ignore    $)    
RESULTIS FALSE  $)        /* This is the buffer edit routine */    LET buffer(li
ne)  VALOF    $(    LET keypress  0    $(      tab(6,scrheight)  writef("%I4",li
nenumber)      tab(18,scrheight)  writef("%I2",x)      tab(x,y)      cursen()   
   keypress  rdch()      cursdi()      keypress  buildbuff(line,keypress)    $) 
REPEATUNTIL keypress    prev!y  linelength(line+1)-1    RESULTIS keypress  $)   
   AND initbuff(line,from) BE    $(    !line  0    $(      !line  !line + 1     
 line!(!line)  textstart%from      from  from + 1    $) REPEATUNTIL textstart%(f
rom-1)  13  $)          /* The above routines work with pointers and words. The 
next set of routines     work with bytes and array indices */      LET linelengt
h(from)  VALOF    $(    LET sofar  1    WHILE textstart%from NE 13 DO $( sofar  
sofar + 1  from  from + 1 $)    RESULTIS sofar  $)        LET write(from,x,y) BE
    $(    tab(x,y)    FOR a  from TO from + linelength(from) - 2 DO wrch(textsta
rt%a)    prev!y  linelength(from) - 1  $)      LET status() BE    $(    tab(1,sc
rheight)    TEST ver4 THEN      writef("Line%I4 Column%I2 (STOP to menu)",linenu
mber,x)    ELSE      writef("Line%I4 Column%I2 (ESC to menu)",linenumber,x)  $) 
       LET cls() BE    $(    clearscr()    curson()  cursdi()    FOR a  1 TO scr
height-1 DO prev!a  0    status()  $)            /* This routine will move the t
ext on the screen down a line and alter the     previous array */    LET down() 
BE    $(    tab(1,1)  revlf()  wrch(13)    status()  spaces(prev!(scrheight-1)-3
3)    FOR a  scrheight-1 TO 2 BY -1 DO prev!a  prev!(a-1)    prev!1  0  $)    AN
D revlf() BE  $(    TEST ver2 THEN      wrch(11)    ELSE    $(      esccode('I')
    $)  $)    /* This routine will move the text up one   Pline and alter the pr
evious array */    LET up() BE    $(    tab(1,scrheight)  spaces(40)    wrch(10)
  wrch(13)    FOR a  1 TO scrheight-2 DO prev!a  prev!(a+1)    prev!(scrheight-1
)  0    status()  $)        /*     This routine will reprint the screen from the
 y position and text position     given.  */    LET screen(from,ypos) BE    $(  
  FOR y  ypos TO scrheight-1 DO    $(      LET l  0      tab(1,y)      IF from  
textend THEN $( spaces(80)  prev!y  0  BREAK $)      l  linelength(from) - 1    
  FOR a  from TO from + l - 1 DO wrch(textstart%a)      spaces(prev!y-l)      pr
ev!y  l      from  from + l + 1    $)  $)        LET forward(ptr)  VALOF    $(  
  IF ptr + linelength(ptr)  textend THEN      $( beep()  RESULTIS ptr $)    ptr 
 ptr + linelength(ptr)    RESULTIS ptr  $)    AND backline(ptr)  VALOF    $(    
IF ptr  0 THEN $( beep()  RESULTIS ptr $)    ptr  ptr - 1      REPEATWHILE texts
tart%(ptr-1) NE 13 LOGAND ptr NE 0    RESULTIS ptr  $)      /* This routine will
 reconstruct the screen */    LET reconstruct(from) BE    $(    LET tptr  from  
  cls()    FOR a  y TO 2 BY -1 DO    $(      TEST tptr  0 THEN $( y  y - a + 1  
BREAK $)      ELSE tptr  backline(tptr)    $)    screen(tptr,1)  $)      LET err
or(message) BE    $(    tab(1,scrheight)  writef("%S. Hit any key to continue",m
essage)    beep()    rdch()    tab(33,scrheight)  spaces(20)  status()    buffpr
int  TRUE    reconstruct(textptr)    longjump(errlab,errvec)  $)        LET make
space(at,size) BE    $(    bytemove(textstart*2+at,textstart*2+at+size,textend-a
t+1)    textend  textend + size  $)      AND closespace(at,size) BE    $(    byt
emove(textstart*2+at+size,textstart*2+at,textend-at-size+1)    textend  textend 
- size  $)        AND copy(from,dest,number) BE    $(    FOR a  0 TO number-1 DO
 textstart%(dest+a)  from!a  $)      /* A buffer line is to be inserted at at */
    LET linsert(line,at) BE    $(    LET current, new  linelength(at), line!0   
 TEST new-current+textend  maxchr THEN    $(      TEST currentnew THEN closespac
e(at,current-new)      ELSE IF currentnew THEN makespace(at,new-current)      co
py(line+1,at,new)    $)    ELSE error("No room")  $)        LET getfilename(x,y,
name) BE    $(    tab(x,y)  writes("Enter file name ")    cursen()  reads(name) 
 cursdi()    newline()  $)        LET loadtext(line)  VALOF    $(    LET name  V
EC 20    getfilename(25,19,name)    TEST findinput(name,file) THEN    $(      LE
T char  0      textptr, x, y, linenumber, textend  0, 1, 1, 1, -1      textstart
%0  13      char  readch(file)      UNTIL char  softeofch LOGOR char  endstreamc
h LOGOR textend  maxchr DO      $(        UNLESS char  10 THEN        $(        
  textend  textend + 1          textstart%textend  char        $)        char  r
eadch(file)      $)      UNLESS textstart%textend  13 DO      $(        textend 
 textend + 1        textstart%textend  13          $)      IF textend  maxchr TH
EN      $(        textend  textend - 1        textstart%textend  13        close
in(file)        initbuff(line,0)        error("No room")      $)      IF textend
  -1 THEN textend  0      closein(file)      RESULTIS TRUE    $)    ELSE    $(  
    writef("%S not found",name)      rdch()      RESULTIS FALSE    $)  $)      A
ND savetext()  VALOF    $(    LET name  VEC 20    LET discerror(file)  VALOF    
$(      writes("Disc error. Hit a key")      rdch()      closeout(file)      RES
ULTIS FALSE    $)    getfilename(25,19,name)    TEST findoutput(name,file) THEN 
   $(      FOR a  0 TO textend DO      $(        UNLESS writech(textstart%a,file
) THEN RESULTIS discerror(file)        IF textstart%a  13 THEN UNLESS writech(10
,file) THEN          RESULTIS discerror(file)      $)      closeout(file)      R
ESULTIS TRUE    $)    ELSE    $(      writes("Cannot open ")  writes(name)      
RESULTIS FALSE    $)  $)      AND goline() BE    $(    LET linenum  0    linenum
ber  1    tab(25,19)    writef("Enter line number ")    cursen()  linenum  readn
()  cursdi()    textptr, x  0, 1    FOR count  2 TO linenum DO    $(      LET op
tr  textptr      textptr  forward(textptr)      IF optr  textptr THEN BREAK     
 linenumber  linenumber + 1    $)    y  12  $)        /* This routine checks for
 a match */    AND match(from,target)  VALOF    $(    FOR a  1 TO target%0 DO   
   IF textstart%(from+a-1) NE target%a THEN RESULTIS FALSE    RESULTIS TRUE  $) 
       /* This is the find string routine */    AND findstring() BE    $(    LET
 optr, ox, oy, oline  textptr, x, y, linenumber    LET search  VEC  P 20    tab(
25,19)    writef("Enter string ")    cursen()  reads(search)  cursdi()    textpt
r  textptr + x - 1    UNLESS textstart%textptr13 THEN textptr  textptr + 1    UN
LESS textptr  textend DO    $(      TEST textstart%textptr13 THEN        linenum
ber  linenumber + 1      ELSE      $(        IF match(textptr,search) THEN      
  $(          optr  textptr          WHILE textstart%(textptr-1) NE 13 LOGAND te
xtptr NE 0 DO            textptr  textptr - 1          x, y  optr - textptr + 1,
 12          BREAK        $)      $)      textptr  textptr + 1      IF textptr  
textend THEN      $(        textptr, x, y, linenumber  optr, ox, oy, oline      
  BREAK      $)    $) REPEAT  $)        /* This is the main menu routine */    L
ET menu(line) BE    $(    LET tptr  0    linsert(line,textptr)    $(      LET ke
y  0      clearscr()      tab(32,4)   writes("BCPL editor")      tab(32,5)   wri
tes("-----------")      tab(32,9)   writes("L Load text")      tab(32,10)  write
s("S Save text")      tab(32,11)  writes("E Edit text")      tab(32,12)  writes(
"G Goto line")      tab(32,13)  writes("F Find string")      tab(32,14)  writes(
"Q Quit")      tab(32,17)  writes("Select option ")      $( cursen()         key
  rdch()         cursdi()      $) REPEATWHILE key  ignore      SWITCHON key INTO
      $(        CASE 'L' CASE 'l' wrch('L')  IF loadtext(line) THEN BREAK  ENDCA
SE        CASE 'S' CASE 's' wrch('S')  IF savetext() THEN BREAK  ENDCASE        
CASE 'G' CASE 'g' wrch('G')  goline()  BREAK        CASE 'F' CASE 'f' wrch('F') 
 x  validate(line,x)                                        findstring()  BREAK 
       CASE 'E' CASE 'e' wrch('E')  BREAK        CASE 'Q' CASE 'q' wrch('Q')  fi
nish      $)      beep()    $) REPEAT    reconstruct(textptr)  $)        /* This
 routine deals with the deletion of a CR */    LET deletel(line) BE    $(    TES
T textptr NE 0 THEN    $(      LET optr, tptr  textptr, backline(textptr)      T
EST linelength(tptr) + line!0 - 1  80 THEN      $(        IF line!0-linelength(t
extptr)+textend  maxchr THEN error("No room")        textstart%(textptr-1)  0   
     linsert(line,textptr-1)        textptr  tptr        linenumber  linenumber 
- 1        x  linelength(textptr) - line!0 + 1        TEST y  1 THEN        $(  
        write(textptr,1,1)        $)        ELSE y  y - 1      $)      ELSE erro
r("Line too long to join")    $)    ELSE error("Top of file")  $)      LET addl(
line) BE    $(    LET copy  VEC 80    LET ptr  1    FOR a  0 TO line!0 DO copy!a
  line!a    WHILE line!ptr NE 13 DO ptr  ptr + 1    FOR a  ptr TO line!0-1 DO li
ne!a  line!(a+1)    line!0  line!0 - 1    linsert(copy,textptr)    x, linenumber
  1, linenumber + 1    textptr  forward(textptr)    TEST y  scrheight-1 THEN    
$(      up()      write(textptr,1,scrheight-1)    $)    ELSE y  y + 1  $)      L
ET moveup() BE    $(    UNLESS textptr  0 THEN    $(      textptr  backline(text
ptr)      linenumber  linenumber - 1      TEST y  1 THEN      $(        down()  
      write(textptr,1,1)      $)      ELSE y  y - 1    $)  $)      LET upcurs(li
ne) BE    $(    linsert(line,textptr)    moveup()  $)      LET movedown() BE    
$(    LET optr  textptr    textptr  forward(textptr)    UNLESS textptr  optr THE
N    $(      linenumber  linenumber + 1      TEST y  scrheight-1 THEN      $(   
     up()        write(textptr,1,scrheight-1)      $)      ELSE y  y + 1    $)  
$)        LET downcurs(line) BE    $(    linsert(line,textptr)    movedown()  $)
        LET supcurs(line) BE    $(    linsert(line,textptr)    FOR a  1 TO scrhe
ight-4 DO    $(      IF textptr  0 THEN BREAK      moveup()    $)  $)    LET sdo
wncurs(line) BE    $(    linsert(line,textptr)    FOR a  1 TO scrheight-4 DO    
$(      LET optr  textptr      movedown()      IF optr  textptr THEN BREAK    $)
  $)        LET top(line) BE    $(    linsert(line,textptr)    textptr, x, y, li
nenumber  0, 1, 1, 1    reconstruct(textptr)  $)      LET bottom(line) BE    $( 
   LET optr  0    linsert(line,textptr)    textptr, x, y, linenumber  0, 1, 1, 0
    $(      optr  textptr      textptr  forward(textptr)      y  y + 1      line
number  linenumber + 1    $) REPEATUNTIL optr  textptr    IF y  scrheight-1 THEN
 y  scrheight-1    reconstruct(textptr)  $)      /* All lines end in 13 */  /* T
he edit buffer is held in unpacked format. The whole text is stored in     packe
d format */    LET start() BE    $(    LET filebuff  VEC 81    LET previous  VEC
 maxscrheight-1    LET text  VEC maxchr/2+1    LET   Pinbuff  VEC 81    LET erro
r  VEC 4    LET copyptr, lastkey, newscreen  0, 0, TRUE    ver  version()    scr
height  ver4 - 31, ver3 - 24, 25    textptr, textend, textstart, errvec  0, 0, t
ext, error    prev, file  previous, filebuff    cls()    textstart%0  13    $(  
    level(errvec)      initbuff(inbuff,textptr)      IF newscreen THEN screen(te
xtptr,y)      errlab      IF buffprint THEN      $(        tab(1,y)        FOR a
  1 TO inbuff!0-1 DO wrch(inbuff!a)  spaces(80-inbuff!0)        buffprint  FALSE
      $)      lastkey  buffer(inbuff)      newscreen  FALSE      SWITCHON lastke
y INTO      $(        CASE 127 newscreen  TRUE  deletel(inbuff)  ENDCASE        
CASE 13 newscreen  TRUE  addl(inbuff)  ENDCASE        CASE cursup CASE scursup u
pcurs(inbuff)  ENDCASE        CASE cursdown CASE scursdown downcurs(inbuff)  END
CASE        CASE ccursup supcurs(inbuff)  ENDCASE        CASE ccursdown sdowncur
s(inbuff)  ENDCASE        CASE copensq top(inbuff)  ENDCASE        CASE cclosesq
 bottom(inbuff)  ENDCASE        CASE escape CASE stop menu(inbuff)  ENDCASE     
 $)    $) REPEAT  $)  .  oo long27 newscreen  TRUE  deletel(inbuff)  ENDCASE    
    CASE 13 newscreen  TRUE  addl(inbuff)  ENDCASE        CASE cursup CASE scurs
up upcurs(inbuff)  ENDCASE        CASE cursdown CASE scursdown downcurs(inbuff) 
 ENDCASE        CASE ccursup supcurs(inbuff)  ENDCASE        CASE ccursdown sdow
ncurs(inbuff)  ENDCASE        CASE copensq top(inbuff)  ENDCASE        CAS!.9 x)
0!R!R8 PYgo#DM!x( BDM!zR!(N#F#B(## #V#V22x(#V##V#s#rE(#""CxiKKC"z)z)s#r#s#r#s#r#
!9s#r)#V#S#V#S#V##fki**"#)8I*8B"!9R85i*""KKC8"DM!9B8Stack overflow  #22f(O!2w(f(
(l  ** BREAK **  (2O(!f(*+E+!!9*fn fn *fn£"!!9j*finh)n&g"!BKzWRfinh)Vn&fnZ%Rfan)
#Vfn#tufinh)Vn&fn#finh)n&fan#taufWnVWfYnX!ufYnX!u!fYnX!ufUnTfYnX!ufUnTfYnXk!ufUn
TfYnX!u!ufWnVfan+tau!uu$.IXONCS5fntufnZ#""!!9*fn)n&g"!BKzWRfn)Vutn&#""!*!9!fn*fn
gRTfn+tufsnrgo#tsurfsnr 2fqnpVut)s#rfsnr 2tsurfunt#tuutsrT*fng"funt#BKzWR! #"fng
R!-*!g"funt+DMgR2fqnpVml)#V0+"!9*""!!9!fn"!!9VzW!Rfn+fnk!0123456789ABCDEFfng£o)#
V"!!9VzW!R&fn+fnfng£o0"!!9! "!!9**!"fynx"fynx**"!!9*""!!9!*fwnvg"!BKzWR !! !#"!t
wuvtuutfunt R funtR funtR funtRwv!!! !fwnv+twuvfwnvR!funtfwnv#twuvfn)Vwvtwtuut7f
untR funtR' wvfuntRE funtRK !Q fwnvfn)sfuntR!(!funtR!(!gogo "!!9*fynx! fynx  *""
!!9!!fn)  Pn&VutgzWR£fn)Vutn&gR£fn)Vutn&fngzWR£fn)Vutn&fsnrVtsurfunt#tuut fsnr"!
!9!fn)fnfnrt-fn)6#6funtR! !,"!!9*!"VyxzW!Rkfynxn!t"!!9zW!R*"!!9!fn)fnfnfn)!ort-f
n)6$#6funtR! !, "!!9*!"VyxzW!Rk fynxn !t "!!9fn R !  ! tufn!o! "!!9fn R !  ! tuf
n!o!"!!9x!fynxR!(!K"!!9!vx-fynxR!(!"!!9R"!!9!!fn)#VRfn7gotuutfn)6$#6fn)#Vfn)n&tw
uvfn)#V#fn)s#rfwnvVutgov"!!9!"!!9fn) 6fn)6#6"!!9!fn R fn! !! tufn)#VRDfntuutfn)6
$#6fn)#Vfn)wfn)#V#fn)s#rfunt"!!9!fn)fn)#VRfn!fn)#V$Rfntv-fwnvR! !0"!!9!fn)fn)$!o
tv-fwnvR!(!"!!9!fn)fn)$!otv-fwnvR!(! "!!9!!!!*!g"!BKzWRbfn)Vkj6 #"fn)6fn)n&Vutgz
WRmfn)Vutn&Ctqupfunt#tuutfsnrRfonnfqnpRfn)#n&#fn)s!tsur!tounofqnp.R*!tsurmfsnrRH
fqnp RKmfn)Vsrpwfsnr#tsurofqnp.Rfn)n&VutgzWRfn)Vutn&Ctqupfunt#tuutfqnp RfsnrRfn)
Vsrpwfsnr#tsurfn)6fn) 6!9"!!9fn)#Vfn)Nfn)s#rfn)w#6"!!9VN"!!9*!)n&funt)s!)n&funt)
#s!)n&funt)s!)6fn+T)!)n&!!)#n&#!)n&!)sfn+T)!)n&!!)#n&!)n&!)sfn)w#6funt)n&!)sfunt
)#n&!)sfunt)n&!)s*""!!9fn""!!9fn""!!9*"!!9*"!!9fngaRVzW!zRfnfn"!!9fnC"!!9fng0RVz
W!9Rfnfn "   (!!9fnzVFNR8"!!9*!fmnl)!(!9!)6funtg£o!)sfuntg£o!)sfwnv)#Vfynx)N#Ffn
)#Vfn)#Vfnz)#V"fnz)s#rfn)s#rfn)s#rfynx)q#pfwnv)s#r!!fmnl)(!9*""!!9*!fmnl)!(!9!)6
!)n&!!)#n&W#!)n&!)s!)n&!!)#n&W!)n&!)sfuntg£o!)sfuntg£o!)s!)6fnfnfnzfynxfwnv!!9!!
fmnl)(!9*""!!9!vx-fwnvg£og0R !!9npvrt!s!9funtg£o!!9!9"!!9!fn"!!9*R!!E"!!9*R&!!of
n!ofn!oN!Yfn +fn +"!!9*vfng"v!BKzWR! #"v"!!9fn REfn"!!9"!!9"!!9 "!!9!"!!9!fn)#V 
Rlfwnv#twuvfn#tufwnvx"!!9*fn+g"!BKzWRfnVsr)#V#"!OVRU"!!9*J*  Pfn)#V+g"fnBKzWRCfn
Vsr)#V#"afnV)#V"!!9*fn)#V+fn)s#r*fn)#Vg"fnBKzWRfsnr#fn)#VfnVsr)s#r#"fnV)6 #6"!!9
**fng"fnz)#VDMgRvfnzVqp)#Vfqnp#fnz)s#r+"fnzV)Vs#rfnz)#V#fnz)s#rfnzV)Vs#r"!!9fn)#
VVgzWRfn#*fn)#Vfn)#V#"!!9**fn!*fn"! *fn!9! fn#,+fn#! k!zW!R*+"d!fn)#V+gzWR*#"d!!
"d!fn)#V"d!fnk!*fn"*RA !k!*+"***fnh*fn* ! d!*fn"fn)#VgPR !fn*fn!9*fn*!fn)#V*gzWR
 !*#"!d!d!!            Q !k!"!!9!*!*!!%I4*!*!!%I2**twuvfwnvfn*twuvfwnv!fn#,+*)s#
rfwnv0""!!9fn)6#6fn)#V#fn)s#r*)Vn&fn)#Vfn)s#rfn#tufn+*)n& RO""!!9!*)Vn& R"fwnv#t
wuvfn#tufwnv#"!!9fnfn*Y#fnz"fnzg"Y#fnzBKzWR#*)Vqpn&#"Y#fnz"+*V)s#r"!!9*!*R$**!#"
Line%I4 Column%I2 (STOP to menu)!9C$**!$!Line%I4 Column%I2 (ESC to menu)!9"!!9*r
$*+g"r$!BKzWR$*Vwv)6#6#"r$#"!!9!!%! #*+*)#VU*$!g"$*+DMgR'%fwnv+*)#V*Vwv)s#r+"$*#
)6#6"!!9*R%!g%!I"!!9*!!(U! ! *%*g"%!BKzWR%fwnv#*)#V*Vwv)s#r#"%*+*)6#6#"!!9*(&*+g
"(&fnBKzWR''!fsnr!* VgzWR&!PU*Vsr)6#6''fn"+tqup*&fnVqp+g"&fnBKzWR&*)Vmln&#"&*Vsr
)#VVqpRU*Vsr)Vqps#rfnVqp#tu#'&"(&"!!9fn"fn* gzWRo'fn'fn"fntufn'"!!9'fn'fn+tufn+*
)n& R''fn'"!!9fnJ$*#(!g"#(*DMgRg(wvQ(*VsrR#"g(c(fwnv'twuv+"#(!fwnv&"!!9*!fn!U(%S
. Hit any key to continue*!!!U#!"*'*$*&."!!9* VR#*)VV*)V(!9* V" "!!9* VRVR#*)V*)
VV(!9* VR" "!!9*)fn+g")!BKzWR*fnzVqp)#VfnVqp*)s#")"!!9fn"fn)#VfsnrVutR gR+fsnrVu
tgzWR*funtVsrRfna)*funtVsrgzWR*fsnrVutRfn)fsnrfnfn#)!9+!+No room("!!9fnfnz!T+Ent
er file name fnE"!*!9*fwnv!!+!9*fwnv,!!"!"!"!"!" *)6 *tuutfuntRJ,funtRJ,* YRJ,fu
nt R9,* #" *) tw*tuut*) n& Rq,* #" *) 6 * gR,* +" *) 6 *!fn7"!Y,No room(* R,!" *
!--fwnv!z-%S not found!-*""!*!9*-!!9!-Disc error. Hit a keyfn!z-"fynx!!+!9*fynxV
.*-* g"-!BKzWR.**)Vutn&-*7-!9.*)Vutn& R.*! .*7-!9.#"-*!..!.i.Cannot open fynx!.*
""!!9!!"!!!.Enter line number  tyux!"!"*/fynxg"/!  PBKzWRB/**2'"fsnrR6/B/*#"#"/!
""!!9*y/fn)n&g"y/!BKzWR/fn)Vsrn&fnVsr+*)n&R/!/#"y/!/"!*!9*****!!!0Enter string f
qnp*+"*)n& R0*#"* gzWR81*)n& R0*#"0fqnp*T/0*tyux*+*)n& R0*0*+"fynxR#"!"81*#"* gz
WR51fynx"fwnv"funt"fsnr"81r0!9*""!!9!*fn**!!! !1BCPL editor!! !1-----------!! !1
L Load text! ! !2S Save text!! ! '2E Edit text!! ! M2G Goto line! ! !3u2F Find s
tring!! !G2Q Quit!! !W2Select option tuutfuntR2funtt3!Lfnt+ 333!S -%333!G.3!F*fn
"/3!E3!Q3qf3Qf3eZ3EZ3f73F73g(3G(3s3S3l2L23k1*'"!!9*4**'fn)#Vfunt"+gPR4*"fn)#VR g
RE4!4No room(*+*)6*+fn**funt"*+"fn)#V*"R#"*R4!!*#!94*+"4!b4Line too long to join
(4!u4Top of file("!!9*!*45fn)#Vg"45!BKzWRl5fnVqp)#VfwnvVqp)s#r#"45fnVut)#V R5fun
t#tuut*5fn)#V+g"5funtBKzWR5fqnp#fn)#VfnVqp)s#r#"5fn)#V+fn)s#r*fwnv**!"*#"*2'"*+*
R6n%*+!*#!9g6*#"*""!!9*6*'"*+"*R6£$!!*#!96*+""!!9*fn**v6"!!9**2'"*VyxRY7*#"*+*RR
7n%*+!*#!9Y7*#""!!9*fn**6"!!9*fn***7*g"7!BKzWR7*77v6#"7"!!9*fn***8*g"8!BKzWRH8*6
fsnrRC8H8#"8"!!9*fn**!"!"!"!"*'"!!9!*fn**!"!"!"!"*twuv*2'"*#"*#"fwnvR8*+gzWR9*+"
*'"!j!9****Z*!!!"*R9!9*R9!9!"!"!" funt"fqnp"$fwnv"fynx"J$*)6 *$*fsnr7"fknj**&**!
*Hfsnr)#V+g"H!BKzWRrfsnrVgf)#V#"Hfsnr)#V!PRU!"fsnrr!tmul!tkujfmnlO!tkujfsnr3!tku
jfsnr5fsnr6fsnra7fsnr7fsnr7fsnrS8fsnr8fsnrK10" 9!9*""&  fknj**&**!*Hfsnr)#V+g"H!
BKzWRrfsnrVgf)#V#"Hfsnr)#V!PRU!"fsnrr!tmul!tkujfmnlO!tkujfsnr3!tkujfsnr5fsnr6fsn
r// CLIBHDR   standard CP/M library header, last modified 21/03/1987      MANIFE
ST $( bytesperword  2  bitsperword  16              softeofch  26    endstreamch
  -1              vdustream  0     printstream  1              maxint  32767    
minint  -32768              newlinech  269           $)    STATIC   $( readstrea
m  0  writestream  0              returned  0    lastchar  0           $)      /
**** OUTPUT ROUTINES ****/    LET wrch(char) BE  $(    SWITCHON writestream INTO
    $(       CASE vdustream     wrvdu(char)  ENDCASE       CASE printstream   pr
ch(char)  ENDCASE       DEFAULT            writech(char,writestream)    $)  $)  
  AND writef(string,a,b,c,d,e,f,g,h,i,j,k) BE  $(    LET pptr  a    FOR cptr  1 
TO string%0 DO    $(      LET k  string%cptr      TEST k  '%' THEN      $(      
  LET arg  !pptr        cptr  cptr + 1        $(          LET ch, size  string%c
ptr, decval(string%(cptr+1))          pptr  pptr + 1          cptr  cptr + VALOF
          SWITCHON ch INTO     P                 $(            CASE 'S' writes(a
rg)    RESULTIS 0            CASE 'C' wrch(arg)      RESULTIS 0            CASE 
'N' writed(arg,0)  RESULTIS 0            CASE 'O' writeoct(arg,size)  RESULTIS 1
            CASE 'X' writehex(arg,size)  RESULTIS 1            CASE 'I' writed(a
rg,size)    RESULTIS 1            CASE '$' RESULTIS 0            DEFAULT  wrch(c
h)  pptr  pptr - 1    RESULTIS 0          $)        $)      $)      ELSE wrch(k)
    $)  $)    AND writes(s) BE FOR c  1 TO s%0 DO wrch(s%c)    AND writed(num,d)
 BE  $(    LET temp  VEC 20    AND ptr, n  0, num    IF num0 THEN d, n  d-1, -n 
   temp!ptr, n, ptr  n REM 10, n/10, ptr+1 REPEATUNTIL n  0    FOR j  ptr+1 TO d
 DO wrch(' ')    IF num0 THEN wrch('-')    FOR j  ptr-1 TO 0 BY -1 DO wrch(temp!
j+'0')  $)    AND writen(n) BE writed(n,0)    AND writehex(num,d) BE  $(    IF D
1 THEN writehex(num4, d-1)    wrch((num LOGAND 15)!TABLE '0','1','2','3','4','5'
,'6','7','8','9',                               'A','B','C','D','E','F')  $)    
AND writeoct(num,d) BE  $(    IF d1 THEN writeoct(num3,d-1)    wrch((num LOGAND 
7)+'0')  $)    AND newline() BE  wrch(newlinech)      /**** INPUT ROUTINES ****/
    AND rdch()  VALOF  $(    UNLESS returned  0 THEN    $(      LET c  returned 
     returned  0      lastchar  c      RESULTIS c    $)    RESULTIS readstream  
0 - rdvdu(), readch(readstream)  $)    AND unrdch() BE returned  lastchar    AND
 reads(array)  VALOF  $(    MANIFEST $( escape  #xFC    stop3  maxlen255 $)    L
ET ptr, c  0,     $(      FOR i1 to ptr DO $( wrch(8)  wrch(' ')  wrch(8) $)    
  ptr0      c  rdch()      UNTIL c13  cescape  cstop DO      $(        TEST c127
 THEN        $(          TEST ptr0 THEN wrch(7)          ELSE          $(       
     wrch(8)  wrch(' ')  wrch(8)            ptr  ptr-1          $)        $)    
    ELSE        $(          TEST ptrmaxlen THEN wrch(7)          ELSE          $
( wrch(c)             ptr  ptr + 1             array%ptr  c          $)        $
)        c  rdch()      $)    $)    REPEATWHILE (cescape  c stop) & (ptr  0)    
array%0  (cescape  cstop) - 0, ptr    RESULTIS NOT (cescape  cstop)  $)    AND r
eadn()  VALOF  $(    LET input  VEC 128    reads(input)    RESULTIS strtonum(inp
ut,10)  $)    AND strtonum(string,base)  VALOF  $(    LET ptr, total  1, 0    WH
ILE ptr  string%0 LOGAND (0decval(string%ptr)base) DO    $(      total  total * 
base + decval(string%ptr)      ptr  ptr + 1    $)    RESULTIS total  $)      /**
** FILE I/O ROUTINES ****/    AND findinput(name, buffer)  VALOF  $(    LET c, d
e  15, buffer*2    setfcb(name, buffer)    // set the fcb    bdosa(c, de)       
   // open file    buffer!17  164        // set sector pointer    RESULTIS c  25
5  $)    AND endread()  VALOF  $(    LET bufreadstream    readstream  vdustream 
   RESULTIS buf0 - closein(buf), TRUE  $)    AND rewind() BE IF readstream  0 TH
EN rewindin(readstream)    AND findoutput(name,buffer)  VALOF  $(    LET c, de  
22, buffer*2    setfcb(name, buffer)    bdosb(19, buffer*2)    bdosa(c, de)    b
uffer!17  36    RESULTIS c  255  $)    AND endwrite()  VALOF  $(    LET buf  wri
testream    writestream  vdustream    RESULTIS buf0 - closeout(buf), TRUE  $)   
   /**** PRIMITIVE I/O ROUTINES ****/    AND wrvdu(c)  VALOF  $(    IF cnewlinec
h THEN $( wrvdu(13)  c10 $)    bdosb(2,c)    RESULTIS TRUE  $)    AND prch(c)  V
ALOF  $(    IF cnewlinech THEN $( prch(13)  c10 $)    bdosb(5,c)    RESULTIS TRU
E  $)    AND prbusy()  VALOF  $(    LET a    bios(15,a)    RESULTIS a  0        
// TRUE if printer busy  $)    AND rdtest()  VALOF  $(      LET c,de  11,    bdo
sa(c,de)    RESULTIS c1  $)    AND flush() BE WHILE rdtest() rdvdu()    AND read
ch(buffer)  VALOF  $(    LET character, fail  0, FALSE    IF buffer!17  164 THEN
    $(      fail  NOT readsector(buffer)    // read a sector      buffer!17  36 
   $)    character  buffer%(buffer!17)    buffer!17  buffer!17 + 1    RESULTIS c
haracter LOGOR fail  $)    AND closein(buffer)  TRUE    AND rewindin(buffer) BE 
$( buffer%32  0    buffer!17  164 $)    AND writech(char, buffer)  VALOF  $(    
LET success  TRUE    IF charnewlinech THEN    $(      UNLESS writech(13,buffer) 
RESULTIS FALSE      char10    $)    IF buffer!17  164 THEN    $(      success  w
ritesector(buffer)      buffer!17  36    $)    buffer%(buffer!17)  char    buffe
r!17  buffer!17 + 1    RESULTIS success  $)    AND closeout(buffer)  VALOF  $(  
  LET c, de  16,buffer*2    UNLESS buffer!17  164 THEN wri  !P!!!!!!!!!tech(26,b
uffer)    UNLESS buffer!17  36 THEN writesector(buffer)    bdosa(c,de)    RESULT
IS c  255  $)    AND readsector(buffer)  VALOF  $(    LET result, buff  20, buff
er*2    bdosb(26, buffer*2+36)    bdosa(result, buff)    RESULTIS result  0     
// TRUE is successful and not hard EOF  $)    AND writesector(buffer)  VALOF  $(
    LET result, buff  21, buffer*2    bdosb(26, buffer*2+36)    bdosa(result, bu
ff)    RESULTIS result  0      // TRUE if written successfully  $)    AND setfcb
(name, buffer) BE  $(    LET nptr, fptr, c, drvflag  1, 1, 0, TRUE    FOR i  1 T
O 11 buffer%i  ' '    buffer%0  0    WHILE nptr  name%0 DO    $(      c  upperca
se(name%nptr)      nptr  nptr + 1      IF fptr  2 LOGAND drvflag LOGAND c  '' TH
EN      $(        buffer%0  buffer%1 - 'A' + 1        fptr, drvflag  1, FALSE   
     LOOP      $)      IF c  '.' THEN $( fptr  9  BREAK $)      IF fptr  9 LOGOR
 c  ' ' THEN BREAK      buffer%fptr  c      fptr  fptr + 1    $)    IF c  '.' TH
EN      WHILE nptr  name%0 DO      $(        c  uppercase(name%nptr)        nptr
  nptr + 1        IF c  ' ' LOGOR fptr  12 THEN BREAK        buffer%fptr  c     
   fptr  fptr + 1      $)    buffer%12, buffer%32  0, 0  $)      /**** MISCELLAN
EOUS ROUTINES ****/    AND bdosa(c,de) BE  $(    INLINE 221,102,127      // ld h
,(ix+127)    INLINE 221,110,126      // ld l,(ix+126)    INLINE 41              
 // add hl,hl    INLINE 94               // ld e,(hl)    INLINE 35              
 // inc hl    INLINE 86               // ld d,(hl)    INLINE 221,102,125      //
 ld h,(ix+125)    INLINE 221,110,124      // ld l,(ix+124)    INLINE 41         
      // add hl,hl    INLINE 78               // ld c,(hl)    INLINE 221,229    
      // push ix    INLINE 205,5,0          // call bdos    INLINE 221,225      
    // pop ix    INLINE 235              // ex de,hl    INLINE 221,102,127      
// ld h,(ix+127)    INLINE 221,110,126      // ld l,(ix+126)    INLINE 41       
        // add hl,hl    INLINE 115              // ld (hl),e    INLINE 35       
        // inc hl    INLINE 114              // ld (hl),d    INLINE 221,102,125 
     // ld h,(ix+125)    INLINE 221,110,124      // ld l,(ix+124)    INLINE 41  
             // add hl,hl    INLINE 119              // ld (hl),a    INLINE 35  
             // inc hl    INLINE 54,0             // ld (hl),0  $)    AND bdosb(
c,de) BE  $(    INLINE 221,86,127       // ld d,(ix+127)    INLINE 221,94,126   
    // ld e,(ix+126)    INLINE 221,78,124       // ld c,(ix+124)    INLINE 221,2
29          // push ix    INLINE 205,5,0          // call bdos    INLINE 221,225
          // pop ix  $)    AND bios(n,a) BE  $(    LET saveVEC 1    save%0  0%#x
80  save%1  0%#x81  save%2  0%#x82    0%#x80  #xC3    0%#x81  0%(0%1 + 256*0%2 +
 (n-1)*3 +1)    0%#x82  0%(0%1 + 256*0%2 + (n-1)*3 +2)    INLINE 221,229        
  // push ix    INLINE #xCD,#x80,#x00   // call bios routine    INLINE 221,225  
        // pop ix    INLINE 221,102,127      // ld h,(ix+127)    INLINE 221,110,
126      // ld l,(ix+126)    INLINE 41               // add hl,hl    INLINE 119 
             // ld (hl),a    INLINE 35               // inc hl    INLINE 54,0   
          // ld (hl),0    0%#x80  save%0  0%#x81  save%1  0%#x82  save%2  $)    
AND selectinput(stream)  BE readstream   stream  AND selectoutput(stream) BE wri
testream  stream  AND input()   readstream  AND output()  writestream  AND upper
case(char)  'a'char'z' - char - 32, char  AND capitalch(c)  uppercase(c)  AND de
cval(digit)  '0'digit'9'  - digit-'0', digit-'A'+10    CP/M library header, last
 modified 21/03/1987      MANIFEST $( bytesperword  2  bitsperword  16          
           // ld (hl),0    0%#x80  save%0  0%#x81  save%1  0%#x82  save%2  $)   
 AND selectinput(stream)  BE readstream   stream  AND selectoutput(stream) BE wr
itestream  stream  AND input()   readstream  AND output()  writestream  AND uppe
rcase(char)  'a'char'z' - char - 32, char  AND capitalch(c)  uppercase(c)  AND d
ecval(digit)  '0'digit'9'  - digit-  "P"""""""""// CLIBHDR1   additional CP/M li
brary header, last modified 19/11/1986      STATIC $( randomseed  0 $)    LET ra
ndom()  VALOF  $(    randomseed  randomseed * #xA3ED + #x1D31    RESULTIS random
seed  $)    AND stop(code) BE  $(    bdosb(108,code)    finish  $)    AND tail(s
tring) BE  $(    string%0  0%#x80    FOR a  1 TO string%0 DO string%a  0%(#x80+a
)  $)    AND delete(name,buffer)  VALOF  $(    LET c, de  19, buffer*2    setfcb
(name,buffer)    bdosa(c,de)    RESULTIS c255  $)    AND rename(name1,name2,buff
er)  VALOF  $(    LET c, de  23, buffer*2    setfcb(name1,buffer)    setfcb(name
2,buffer+16)    bytemove(buffer*2+32,buffer*2+16,16)    bdosa(c,de)    RESULTIS 
c255  $)    AND writet(s,n) BE  $(      writes(s)    FOR i  1 to n-s%0 DO wrch('
 ')  $)    AND writeu(n,d) BE  $(    LET m  (n1)/5    UNLESS m0 DO    $(      wr
ited(m,d-1)      d  1    $)    writed(n-m*10,d)  $)    AND newpage() BE  wrch(12
)    AND compch(ch1,ch2)  capitalch(ch1) - capitalch(ch2)    AND compstring(s1,s
2)  VALOF  $(    LET len1,len2  s1%0, s2%0    LET shorter  len1len2 - s1, s2    
FOR i  1 to shorter%0 DO    $(      LET res  compch(s1%i, s2%i)      UNLESS res0
 RESULTIS res    $)    RESULTIS len1len2 - 0, shorters1 - -1,1  $)    AND bytemo
ve(source,dest,number) BE  $(    inline 221,102,123      // ld h,(ix+123)    inl
ine 221,110,122      // ld l,(ix+122)    inline 221,86,125       // ld d,(ix+125
)    inline 221,94,124       // ld e,(ix+124)    inline 221,70,127       // ld b
,(ix+127)    inline 221,78,126       // ld c,(ix+126)    inline 167             
 // and a    inline 237,82           // sbc hl,de    inline 25               // 
add hl,de    inline 56,4             // jr c,+4    inline 237,176          // ld
ir    inline 24,8             // jr +8    inline 11               // dec bc    i
nline 9                // add hl,bc    inline 235              // ex de,hl    in
line 9                // add hl,bc    inline 235              // ex de,hl    inl
ine 3                // inc bc    inline 237,184          // lddr  $)    AND cal
l(addr,af,bc,de,hl,ix) BE  $(    LET save3  VEC 1    bytemove(#x90, save3*2, 3) 
   0%#x90  #xC3    0%#x91  addr & #xFF    0%#x92  ( addr & #xFF00 )  8    inline
 #xDD,#xE5            // push ix    inline #xDD,#x66,#x77       // ld h,(ix+119)
    inline #xDD,#x6E,#x76       // ld l,(ix+118)    inline #x29,#x5E,#x56,#x23  
// add hl,hlld e,(hl)inc hlld d,(hl)    inline #xD5                 // push de  
  inline #xDD,#x66,#x79       // ld h,(ix+121)    inline #xDD,#x6E,#x78       //
 ld l,(ix+120)    inline #x29,#x4E,#x23,#x46  // add hl,hlld c,(hl)inc hlld b,(h
l)    inline #xDD,#x66,#x7F       // ld h,(ix+127)    inline #xDD,#x6E,#x7E     
  // ld l,(ix+126)    inline #x29,#x5E,#x23,#x56  // add hl,hlld e,(hl)inc hlld 
d,(hl)    inline #xD5                 // push de    inline #xDD,#x66,#x7D       
// ld h,(ix+125)    inline #xDD,#x6E,#x7C       // ld l,(ix+124)    inline #x29,
#x5E,#x23,#x56  // add hl,hlld e,(hl)inc hlld d,(hl)    inline #xD5             
    // push de    inline #xDD,#x66,#x7B       // ld h,(ix+123)    inline #xDD,#x
6E,#x7A       // ld l,(ix+122)    inline #x29,#x5E,#x23,#x56  // add hl,hlld e,(
hl)inc hlld d,(hl)    inline #xE1,#xDD,#xE1,#xF1  // pop hlpop ixpop af    inlin
e #xCD,#x90,#x00       // call &90    inline #xDD,#x22,#x90,#x00  // ld (&90),ix
    inline #xDD,#xE1            // pop ix    inline #xF5,#xE5            // push
 afpush hl    inline #xDD,#x66,#x7B       // ld h,(ix+123)    inline #xDD,#x6E,#
x7A       // ld l,(ix+122)    inline #x29,#x73,#x23,#x72  // add hl,hlld (hl),ei
nc hlld (hl),d    inline #xDD,#x66,#x7D       // ld h,(ix+125)    inline #xDD,#x
6E,#x7C       // ld l,(ix+124)    inline #x29,#xD1            // add hl,hlpop de
    inline #x73,#x23,#x72       // ld (hl),einc hlld (hl),d    inline #xDD,#x66,
#x7F       // ld h,(ix+127)    inline #xDD,#x6E,#x7E       // ld l,(ix+126)    i
nline #x29                 // add hl,hl    inline #xED,#x5B,#x90,#x00  // ld de,
(&90)    inline #x73,#x23,#x72       // ld (hl),einc hlld (hl),d    inline #xDD,
#x66,#x79       // ld h,(ix+121)    inline #xDD,#x6E,#x78       // ld l,(ix+120)
    inline #x29,#x71,#x23,#x70  // add hl,hlld (hl),cinc hlld (hl),b    inline #
xDD,#x66,#x77       // ld h,(ix+119)    inline #xDD,#x6E,#x76       // ld l,(ix+
118)    inline #x29,#xD1            // add hl,hlpop de    inline #x73,#x23,#x72 
      // ld (hl),einc hlld (hl),d    bytemove(save3*2, #x90, 3)  $)    AND firmw
are(addr,af,bc,de,hl,ix) BE  $(    LET save6  VEC 3    bytemove(#x80, save6*2, 6
)    0%#x80   #P######### #xCD    0%#x81  0%(0%1 + 256*0%2 + 87 +1)    0%#x82  0
%(0%1 + 256*0%2 + 87 +2)    0%#x83  addr & #xFF    0%#x84  ( addr & #xFF00 )  8 
   0%#x85  #xC9    call (#x80,af,bc,de,hl,ix)    bytemove(save6*2, #x80, 6)  $) 
   AND version()  VALOF  $(    LET c,de12,    LET af,bc,hl,ix  ,,,    bdosa(c,de
)    IF (de & #xFF)  #x30 THEN RESULTIS 2    firmware(#xE3,af,bc,de,hl,ix)    RE
SULTIS 3 + ( af  8 )  $)    AND getbyte(s,i)  s%i  AND putbyte(s,i,c) BE s%i  c 
 AND unpackstring(s,v) BE FOR i  0 TO s%0 DO v!i  s%i  AND packstring(v,s) BE  $
(    LET n  !v LOGAND #xFF    FOR i  1 TO n DO s%i  s!i  $)  F r & #xFF00 )  8  
  0%#x85  #xC9    call (#x80,af,bc,de,hl,ix)    bytemove(save6*2, #x80, 6)  $)  
  AND version()  VALOF  $(    LET c,de12,    LET af,bc,hl,ix  ,,,    bdosa(c,de)
    IF (de & #xFF)  #x30 THEN RESULTIS 2    firmware(#xE3,af,bc,de,hl,ix)    RES
ULTIS 3 + ( af  8 )  $)    AND getbyte(s,i)  s%i  AND putbyte(s,i,c) BE s%i  c  
AND unpackstring(s,v) /* This is a copy routine. Last modified 05/11/1986 */    
option b-    /* Include the library */    GET "clibhdr"    LET start() BE    $( 
   LET inname  VEC 20    LET inbuff  VEC 82    LET outname  VEC 20    LET outbuf
f  VEC 82    LET c  0    writes("Input file name  ")    reads(inname)    IF inna
me%0  0 THEN FINISH    newline()    writes("Output file name ")    reads(outname
)    IF outname%0  0 THEN FINISH    TEST findinput(inname, inbuff) THEN    $(   
   selectinput(inbuff)      TEST findoutput(outname, outbuff) THEN      $(      
  selectoutput(outbuff)        $(          c  rdch()          UNLESS cendstreamc
h DO wrch(c)        $)        REPEATUNTIL c  endstreamch        endwrite()      
$)      ELSE writes("Can't open output file")      endread()    $)    ELSE write
s("Can't open input file")  $)  .    ion b-    /* Include the library */    GET 
"clibhdr"    LET start()me)    IF outname%0  0 THEN FINISH    TEST findinput(inn
ame, inbuff) THEN    $(      selectinput(inbuff)      TEST findoutput(o/* BCPL d
ebug procedure 02/11/1986 */    /*      debug(opt,n,d1,d2,d3,d4,d5,d6,d7,d8,d9,d
10,d11,d12)            The first parameter specifies the required option.       
              0  pause execution, wait for a key to be pressed                  
 1  display values of variables in decimal                  -1  display names an
d values of variables in decimal                   2  display value of strings  
                -2  display name and value of strings                   3  displ
ay contents of vectors                  -3  display name and contents of vectors
                   4  display values of variables in hexadecimal                
  -4  display names and values of variables in hexadecimal              The seco
nd parameter (n) is the number of variables or strings          or vectors to be
 displayed.            If opt is positive there follows a list of identifiers.  
        If opt is negative there follows a list of pairs - a string          giv
ing the identifier name and the identifier.            For options 3 and -3 each
 identifier is followed by the length of          the vector, that is the number
 of bytes to display.            Examples                          debug(1,3,var
1,var2,var3)                          debug(-1,3,"var1",var1,"var2",var2,"var3",
var3)                          debug(2,1,str)                          debug(-2,
2,"str1",str1,"str2",str2)                          debug(3,1,vector,32)        
                  debug(-3,1,"vector",vector,32)                          debug(
4,2,hex1,hex2)                          debug(-4,3,"hex1",hex1,"hex2",hex2,"hex3
",hex3)  */      AND debug(opt,n,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12) be    $
(      MANIFEST $( escape#xFC  stop3 $)          LET parm, ch, len  d1, ,       
    LET wrnum, wrwid  writed, 0          SWITCHON (opt0 - opt, -opt) INTO       
   $(                  CASE 1  writes("*nBCPL Debug. Variable values ")         
                  ENDCASE                  CASE 2  writes("*nBCPL Debug. String 
contents ")      $P$$$$$$$$$                       ENDCASE                  CASE
 3  writes("*nBCPL Debug. Vector contents ")                           ENDCASE  
                CASE 4  writes("*nBCPL Debug. Variable values, hex ")           
                wrnum  writehex                           wrwid  4              
             ENDCASE                  DEFAULT                          writes("*
nPress a key to resume execution ")                          chrdch()  IF chesca
pe  chstop  then FINISH                          newline()                      
    RETURN          $)            newline()          IF opt  0 & opt NE 3 DO wri
tes("  ")            FOR i  1 TO n DO          $(              SWITCHON opt INTO
              $(                  CASE 1                  CASE 4                
          wrnum(!parm,wrwid)  wrch(' ')                          parm  parm + 1 
                         ENDCASE                    CASE -1                  CAS
E -4                          writes("  ")                          writes(!parm
)                          writes("  ")                          wrnum(parm!1,wr
wid)                          newline()                          parm  parm + 2 
                         ENDCASE                    CASE 2                      
    wrch('"')  writes(!parm)  wrch('"')                          wrch(' ')      
                    parm  parm + 1                          ENDCASE             
       CASE -2                          writes("  ")                          wr
ites(!parm)                          writes("  ")  wrch('"')                    
      writes(parm!1)  wrch('"')                          newline()              
            parm  parm + 2                          ENDCASE                    C
ASE 3                          debugvector(!parm,parm!1)                        
  parm  parm + 2                          ENDCASE                    CASE -3    
                      writes(!parm)  newline()                          debugvec
tor(parm!1,parm!2)                          parm  parm + 3                      
    ENDCASE                $)          $)          IF opt  0 & opt ne 3 DO newli
ne()  $)    AND debugvector(addr,len) BE    $(      LET ascii  vec 16          L
ET ascptr, line, ch  1, 0, 0          ascii%0  16          FOR line  0 TO (len-1
)/16 DO          $(      writes("  ")                  writehex(2*addr+line*16,4
)      // note 2*addr is physical addr                  writes("  ")            
      ascptr  1                  FOR byte  0 TO 15 DO                  $(      c
h  addr%(line*16+byte)                          writehex(ch,2)                  
        wrch(' ')                          IF byte7 then wrch(' ')              
            ascii%ascptr  (31ch128) - ch , '.'                          ascptr  
ascptr + 1                  $)                  wrch(' ')                  write
s(ascii)                  newline()          $)  $)  10/1986 */    /*      debug
(opt,n,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12)            The first parame14 N S
 "'#F0'" cursor up           Key definitions for BCPL editor on PCW  14 A "'#F8'
" alt-cursor up  6 N S "'#F3'" cursor right  6 A "'#FB'"  alt-cursor right  79 N
 S "'#F1'" cursor down  79 A "'#F9'" alt-cursor down  15 N S "'#F2'" cursor left
  15 A "'#FA'" alt-cursor left  66 N "'#FC'" stop  26 A "'27'" alt-  17 A "'29'"
 alt-    FB'"  alt-cursor right  79 N S "'#ewline()          $)  $)  10/1986 */ 
   /*      debug(opt,n,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12)            The fi
rst parame  /* This is a BCPL beautifier. It will turn all keywords into upper c
ase and     all identifiers into lower case */    // modified 30/10/1986    /* r
ead in the standard library header */    OPTION B-    GET "clibhdr"    OPTION B+
    MANIFEST  $(    indentsize  2    comments  35  $)      GLOBAL  $(    keyword
s 0    input 1    output 2    errvec 3    error 4    lastchr 5    keyend 6  $)  
  STATIC  $(    indent  0    nldone  TRUE    idflag  FALSE    column  0  $)    L
ET err(message) BE    $(    n  %P%%%%%%%%%ewline()    writes(message)    newline
()    longjump(error, errvec)  $)      LET space(char)  ( char' '  char9 )    LE
T rawchr()  VALOF    $(    LET temp  readch(input)    WHILE temp  10 DO temp  re
adch(input)    IF lastchr  endstreamch LOGAND temp  endstreamch THEN err("Unexpe
cted EOF")    lastchr  temp    RESULTIS lastchr  $)      LET getchr()  VALOF    
$(    rawchr()    IF 'A'  lastchr  'Z' THEN lastchr  lastchr + 32    RESULTIS la
stchr  $)      LET out(character) BE    $(    UNLESS nldone LOGOR character  13 
THEN    $(      nldone  TRUE      FOR space  1 TO indent out(' ')    $)    TEST 
character  13 THEN    $(      newline()      writech(13,output)      writech(10,
output)        nldone  FALSE      idflag  FALSE      column  0    $)    ELSE    
$(      column  column + 1      wrch(character)      writech(character,output)  
  $)  $)      LET hexval(char)  VALOF    $(    TEST '0'  char  '9' THEN RESULTIS
 char - '0'    ELSE TEST 'a'  char  'f' THEN RESULTIS char - 'a' + 10    ELSE RE
SULTIS 100  $)      LET readnum(base, first) BE    $(    WHILE hexval(first)  ba
se DO    $(      out(hexval(first)  10 - first, first - 32)      first  getchr()
    $)    idflag  2  $)      LET stringsame(string1, string2)  VALOF    $(    IF
 !string1 NE !string2 THEN RESULTIS FALSE    FOR ptr  1 TO !string1    IF string
1!ptr NE string2!ptr THEN RESULTIS FALSE    RESULTIS TRUE  $)      LET sysword(w
ord)  VALOF    $(    LET start  keywords    WHILE start  keyend DO    $(      IF
 stringsame(start + 1, word) THEN RESULTIS start      start  start + start!1 + 2
    $)    RESULTIS FALSE  $)      LET idspace() BE    $(    IF idflag THEN out('
 ')  $)      LET writeword(word) BE    $(    LET ptr, idf  sysword(word), 1    T
EST ptr THEN    $(      IF !ptr LOGOR idflag THEN out(' ')      FOR cptr  1 TO w
ord!0 out(word!cptr - 32)      IF !ptr THEN      $(        out(' ')        idf  
0      $)    $)    ELSE    $(      idspace()      FOR ptr  1 TO word!0 DO out(wo
rd!ptr)      idf  2    $)    idflag  idf  $)      LET ident() BE    $(    LET wo
rdbuff  VEC 20    LET wptr  0    WHILE 'a'  lastchr  'z' LOGOR '0'  lastchr  '9'
 DO    $(      wptr  wptr + 1      wordbuff!wptr  lastchr      getchr()    $)   
 wordbuff!0  wptr    writeword(wordbuff)  $)      LET strchr() BE    $(    TEST 
lastchr  '**' THEN    $(      out('**')      out(rawchr())    $)    ELSE out(las
tchr)    rawchr()  $)      LET condnl() BE    $(    IF nldone THEN out(13)  $)  
      LET punctuate() BE    $(    LET temp  0    SWITCHON lastchr INTO    $(    
  CASE '$'      condnl()      temp  getchr()      getchr()      TEST temp  '(' T
HEN      $(        out('$')        out('(')        ident()        indent  indent
 + indentsize      $)      ELSE      $(        indent  indent - indentsize      
  out('$')        out(')')        ident()      $)      UNLESS lastchr  13 THEN o
ut(13)      ENDCASE      CASE ''      out(13)      getchr()      ENDCASE      CA
SE '"'      idspace()      out('"')      rawchr()      UNTIL lastchr  '"' strchr
()      out('"')      getchr()      idflag  2      RETURN      CASE '' CASE ''  
    temp  lastchr      getchr()      out(' ')      TEST lastchr  '' LOGOR lastch
r  temp THEN      $(        out(temp)        out(lastchr)        getchr()      $
)      ELSE out(temp)      out(' ')      ENDCASE      CASE ''      TEST getchr()
  '' THEN      $(        out(' ')        out('')        out('')        out(' ') 
       getchr()      $)      ELSE      $(        out('')        idflag  1       
 RETURN      $)      ENDCASE      CASE '-'      out(' ')      TEST getchr()  '' 
THEN      $(        out('-')        out('')        getchr()      $)      ELSE ou
t('-')      out(' ')      ENDCASE      CASE '/'      getchr()      TEST lastchr 
 '**' THEN      $(        temp  indent        indent  0        condnl()        o
ut('/')        out('**')        rawchr()        $(          UNTIL lastchr  '**' 
DO          $(            out(lastchr)            rawchr()          $)          
out('**')          rawchr()        $)        REPEATUNTIL lastchr  '/'        out
('/')        out(13)        IF getchr()  13 THEN getchr()        indent  temp   
   $)      ELSE TEST lastchr  '/' THEN      $(        IF column  comments THEN o
ut(13)        FOR a  column TO comments out(' ')        out('/')        $(      
    out(lastchr)          rawchr()        $)        REPEATUNTIL lastchr  13     
   out(13)          IF getchr()  13 THEN getchr()      $)      ELSE TEST lastchr
  '' THEN      $(        out(' '  &P&&&&&&&&&)        out('/')        out('')   
     out(' ')        getchr()      $)      ELSE      $(        out(' ')        o
ut('/')        out(' ')      $)      ENDCASE      CASE ''      getchr()      TES
T lastchr  '' LOGOR lastchr  '/' THEN      $(        out(' ')        out('')    
    out(lastchr)        out(' ')        getchr()      $)      ELSE out('')      
ENDCASE      CASE ')' CASE ''      out(lastchr)      getchr()      idflag  2    
  RETURN      CASE '''      idspace()      out(''')      rawchr()        strchr(
)      out(''')      getchr()      idflag  2      RETURN      CASE '!'      IF i
dflag  1 THEN out(' ')      out('!')      getchr()      ENDCASE      CASE '+' CA
SE '&' CASE '' CASE '' CASE '**'      out(' ')      out(lastchr)      out(' ')  
    getchr()      ENDCASE      CASE ','      out(lastchr)      out(' ')      get
chr()      ENDCASE      DEFAULT out(lastchr)      getchr()    $)    idflag  FALS
E  $)      LET beautify() BE    $(    LET temp  0    WHILE (lastchr NE endstream
ch) & (lastchr NE softeofch) DO    $(      WHILE space(lastchr) DO getchr()     
 TEST 'a'  lastchr  'z' THEN ident()      ELSE TEST '0'  lastchr  '9' THEN      
$(        idspace()        readnum(10, lastchr)      $)      ELSE TEST lastchr  
'#' THEN      $(        idspace()        out('#')        getchr()        SWITCHO
N lastchr INTO        $(          CASE 'x' out('x')          readnum(16, getchr(
))          ENDCASE          CASE 'b' out('b')          readnum(2, getchr())    
      ENDCASE          CASE 'o' out('o')          readnum(8, getchr())          
ENDCASE          DEFAULT readnum(8, lastchr)        $)      $)      ELSE TEST la
stchr  13 THEN      $(        out(13)        getchr()      $)      ELSE punctuat
e()    $)  $)      LET files() BE  $(    LET namein  VEC 10    AND nameout  VEC 
10    writes("Enter the input file name  ")    reads(namein)    newline()    wri
tes("Enter the output file name ")    reads(nameout)    newline()    UNLESS find
input(namein, input) THEN err("Can't open input")    UNLESS findoutput(nameout, 
output) THEN err("Can't open output")  $)        LET readwords(string) BE    $( 
   LET length, rest, lengthptr  string%0, 1, 0    WHILE length  rest DO    $(   
   TEST string%rest  'B' THEN      $(        !keyend  TRUE        rest  rest + 1
      $)      ELSE !keyend  FALSE      lengthptr  keyend + 1      keyend  keyend
 + 2      !lengthptr  0      WHILE string%rest NE ',' DO      $(        !keyend 
 string%rest        keyend, rest, !lengthptr  keyend + 1, rest + 1, !lengthptr +
 1      $)      rest  rest + 1    $)  $)      AND readsys() BE    $(    readword
s("and,be,break,by,case,do,default,Beq,Beqv,else,endcase,false,for,")    readwor
ds("finish,goto,Bge,Bgr,global,get,if,into,let,Blv,Ble,Bls,Blogor,Blogand,")    
readwords("loop,Blshift,manifest,Bne,not,Bneqv,or,resultis,return,Brem,Brshift,"
)    readwords("Brv,repeat,repeatwhile,repeatuntil,switchon,static,to,test,true,
")    readwords("then,table,until,unless,vec,valof,while,inline,option,")  $)   
   LET start() BE    $(    LET wordarray  VEC 500    AND inbuff  VEC 82    AND o
utbuff  VEC 82    AND namein  VEC 10    AND nameout  VEC 10    AND lev  VEC 3   
 level(lev)    errvec, input, output  lev, inbuff, outbuff    keywords, keyend  
wordarray, wordarray    readsys()    files()    getchr()    beautify()    error 
closein(input)    closeout(output)    newline()    writes("BCPL beautifier finis
hed")  $)  .   will turn all keywords into upper case and     all identifiers in
to lower case */    // modif  'P'''''''''
Tous droits réservés. Reproduction sans autorisation interdite. © Kukulcan