MS-DOS Kermit (UK) (Face B) (1985) [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 43 50 43 20 45 44 53 4B 20 45 44 49 54 52    ..CPC EDSK EDITR
000030:  2A 01 00 00 13 13 13 13 13 13 13 13 13 13 13 13    *...............
000040:  13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13    ................
000050:  13 13 13 13 13 13 13 13 13 13 13 13 13 13 00 00    ................
000060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 13    ................
000070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000100:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
000110:  00 00 00 00 02 09 4E E5 00 00 C1 02 00 00 00 02    ......N.........
000120:  00 00 C6 02 00 00 00 02 00 00 C2 02 00 00 00 02    ................
000130:  00 00 C7 02 00 00 00 02 00 00 C3 02 00 00 00 02    ................
000140:  00 00 C8 02 00 00 00 02 00 00 C4 02 00 00 00 02    ................
000150:  00 00 C9 02 00 00 00 02 00 00 C5 02 00 00 00 02    ................
000160:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000170:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000180:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000190:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0001A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0001B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0001C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0001D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0001E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0001F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000200:  00 43 50 34 43 4D 44 20 20 41 53 4D 00 00 00 80    .CP4CMD  ASM....
000210:  02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11    ................
000220:  00 43 50 34 43 4D 44 20 20 41 53 4D 01 00 00 38    .CP4CMD  ASM...8
000230:  12 13 14 15 16 17 18 00 00 00 00 00 00 00 00 00    ................
000240:  00 43 50 34 43 50 4D 20 20 41 53 4D 00 00 00 34    .CP4CPM  ASM...4
000250:  19 1A 1B 1C 1D 1E 1F 00 00 00 00 00 00 00 00 00    ................
000260:  00 43 50 34 44 45 46 20 20 41 53 4D 00 00 00 3C    .CP4DEF  ASM...<
000270:  20 21 22 23 24 25 26 27 00 00 00 00 00 00 00 00     !"#$%&'........
000280:  00 43 50 34 4B 45 52 20 20 41 53 4D 00 00 00 20    .CP4KER  ASM... 
000290:  28 29 2A 2B 00 00 00 00 00 00 00 00 00 00 00 00    ()*+............
0002A0:  00 43 50 34 53 59 53 20 20 41 53 4D 00 00 00 80    .CP4SYS  ASM....
0002B0:  2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B    ,-./0123456789:;
0002C0:  00 43 50 34 53 59 53 20 20 41 53 4D 01 00 00 80    .CP4SYS  ASM....
0002D0:  3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B    <=>?@ABCDEFGHIJK
0002E0:  00 43 50 34 53 59 53 20 20 41 53 4D 02 00 00 80    .CP4SYS  ASM....
0002F0:  4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B    LMNOPQRSTUVWXYZ[
000300:  00 43 50 34 53 59 53 20 20 41 53 4D 03 00 00 80    .CP4SYS  ASM....
000310:  5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B    \]^_`abcdefghijk
000320:  00 43 50 34 53 59 53 20 20 41 53 4D 04 00 00 80    .CP4SYS  ASM....
000330:  6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B    lmnopqrstuvwxyz{
000340:  00 43 50 34 53 59 53 20 20 41 53 4D 05 00 00 80    .CP4SYS  ASM....
000350:  7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B    |}~.............
000360:  00 43 50 34 53 59 53 20 20 41 53 4D 06 00 00 0E    .CP4SYS  ASM....
000370:  8C 8D 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000380:  00 43 50 34 54 54 20 20 20 41 53 4D 00 00 00 80    .CP4TT   ASM....
000390:  8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D    ................
0003A0:  00 43 50 34 54 54 20 20 20 41 53 4D 01 00 00 34    .CP4TT   ASM...4
0003B0:  9E 9F A0 A1 A2 A3 A4 00 00 00 00 00 00 00 00 00    .....£..........
0003C0:  00 43 50 34 54 59 50 20 20 41 53 4D 00 00 00 44    .CP4TYP  ASM...D
0003D0:  A5 A6 A7 A8 A9 AA AB AC AD 00 00 00 00 00 00 00    ................
0003E0:  00 43 50 34 57 4C 44 20 20 41 53 4D 00 00 00 20    .CP4WLD  ASM... 
0003F0:  AE AF B0 B1 00 00 00 00 00 00 00 00 00 00 00 00    ................
000400:  2C 20 61 6E 64 20 6D 61 6E 79 0D 0A 3B 20 6F 74    , and many..; ot
000410:  68 65 72 73 2E 0D 0A 0D 0A 3B 0D 0A 3B 09 54 68    hers.....;..;.Th
000420:  69 73 20 66 69 6C 65 20 70 72 6F 76 69 64 65 73    is file provides
000430:  20 61 20 75 73 65 72 20 6F 72 69 65 6E 74 65 64     a user oriented
000440:  20 77 61 79 20 6F 66 20 70 61 72 73 69 6E 67 20     way of parsing 
000450:  63 6F 6D 6D 61 6E 64 73 2E 0D 0A 3B 09 49 74 20    commands...;.It 
000460:  69 73 20 73 69 6D 69 6C 61 72 20 74 6F 20 74 68    is similar to th
000470:  61 74 20 6F 66 20 74 68 65 20 43 4F 4D 4E 44 20    at of the COMND 
000480:  4A 53 59 53 20 69 6E 20 54 4F 50 53 2D 32 30 2E    JSYS in TOPS-20.
000490:  0D 0A 3B 0D 0A 3B 20 72 65 76 69 73 69 6F 6E 20    ..;..; revision 
0004A0:  68 69 73 74 6F 72 79 20 28 6C 61 74 65 73 74 20    history (latest 
0004B0:  66 69 72 73 74 29 3A 0D 0A 3B 20 65 64 69 74 20    first):..; edit 
0004C0:  35 3A 20 36 2D 46 65 62 2D 38 35 20 62 79 20 43    5: 6-Feb-85 by C
0004D0:  68 61 72 6C 65 73 20 43 61 72 76 61 6C 68 6F 0D    harles Carvalho.
0004E0:  0A 3B 09 4D 61 6B 65 20 66 66 75 73 73 79 20 61    .;.Make ffussy a
0004F0:  20 72 75 6E 74 69 6D 65 20 28 72 61 74 68 65 72     runtime (rather
000500:  20 74 68 61 6E 20 61 73 73 65 6D 62 6C 79 2D 74     than assembly-t
000510:  69 6D 65 29 20 73 77 69 74 63 68 2C 20 74 6F 0D    ime) switch, to.
000520:  0A 3B 09 65 6C 69 6D 69 6E 61 74 65 20 63 6F 6E    .;.eliminate con
000530:  64 69 74 69 6F 6E 61 6C 20 61 73 73 65 6D 62 6C    ditional assembl
000540:  79 20 69 6E 20 73 79 73 74 65 6D 2D 69 6E 64 65    y in system-inde
000550:  70 65 6E 64 65 6E 74 20 6D 6F 64 75 6C 65 2E 0D    pendent module..
000560:  0A 3B 09 44 6F 6E 27 74 20 61 6C 6C 6F 77 20 5F    .;.Don't allow _
000570:  25 7C 28 29 2F 5C 20 69 6E 20 66 69 6C 65 6E 61    %|()/\ in filena
000580:  6D 65 73 20 69 66 20 66 66 75 73 73 79 20 73 65    mes if ffussy se
000590:  74 3B 20 6D 79 20 43 50 2F 4D 20 6D 61 6E 75 61    t; my CP/M manua
0005A0:  6C 0D 0A 3B 09 64 69 73 61 6C 6C 6F 77 73 20 74    l..;.disallows t
0005B0:  68 6F 73 65 2C 20 74 6F 6F 2E 0D 0A 3B 0D 0A 3B    hose, too...;..;
0005C0:  20 65 64 69 74 20 34 3A 20 31 33 2D 4A 61 6E 2D     edit 4: 13-Jan-
0005D0:  38 35 20 62 79 20 56 61 6E 79 61 20 4A 2E 43 6F    85 by Vanya J.Co
0005E0:  6F 70 65 72 20 50 69 6D 61 20 43 6F 6D 6D 75 6E    oper Pima Commun
0005F0:  2E 20 43 6F 6C 6C 65 67 65 20 54 65 6C 3A 20 36    . College Tel: 6
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:  30 32 2D 38 38 34 2D 36 38 30 39 0D 0A 3B 0D 0A    02-884-6809..;..
000810:  3B 70 63 63 30 30 36 09 32 2D 6A 61 6E 2D 38 35    ;pcc006.2-jan-85
000820:  09 56 4A 43 09 6D 6F 64 75 6C 65 73 3A 63 70 34    .VJC.modules:cp4
000830:  63 6D 64 2C 63 70 34 75 74 6C 0D 0A 3B 09 50 72    cmd,cp4utl..;.Pr
000840:  6F 62 6C 65 6D 73 20 77 69 74 68 20 22 3F 22 20    oblems with "?" 
000850:  69 6E 20 66 69 6C 65 73 70 65 63 73 2E 20 20 4F    in filespecs.  O
000860:  6E 20 72 65 70 61 72 73 65 2C 20 6D 61 79 20 63    n reparse, may c
000870:  61 75 73 65 20 61 63 74 69 6F 6E 0D 0A 3B 09 66    ause action..;.f
000880:  6C 61 67 20 74 6F 20 62 65 20 72 65 73 65 74 20    lag to be reset 
000890:  61 74 20 77 72 6F 6E 67 20 70 6F 69 6E 74 2C 20    at wrong point, 
0008A0:  72 65 71 75 69 72 69 6E 67 20 6D 75 6C 74 69 70    requiring multip
0008B0:  6C 65 20 3C 43 52 3E 27 73 0D 0A 3B 09 74 6F 20    le <CR>'s..;.to 
0008C0:  74 65 72 6D 69 6E 61 74 65 20 74 68 65 20 6C 69    terminate the li
0008D0:  6E 65 20 6F 72 20 6F 74 68 65 72 20 77 65 69 72    ne or other weir
0008E0:  64 20 73 74 75 66 66 2E 20 20 41 6C 73 6F 20 6E    d stuff.  Also n
0008F0:  65 65 64 20 74 6F 0D 0A 3B 09 63 68 65 63 6B 20    eed to..;.check 
000900:  66 6C 61 67 20 61 6E 64 20 63 6F 6D 70 6C 61 69    flag and complai
000910:  6E 20 69 66 20 77 69 6C 64 2D 63 61 72 64 73 20    n if wild-cards 
000920:  69 6C 6C 65 67 61 6C 2E 0D 0A 0D 0A 3B 70 63 63    illegal.....;pcc
000930:  30 30 37 09 32 2D 4A 61 6E 2D 38 35 09 76 6A 63    007.2-Jan-85.vjc
000940:  09 6D 6F 64 75 6C 65 73 3A 63 70 34 64 65 66 2C    .modules:cp4def,
000950:  63 70 34 63 6D 64 0D 0A 3B 09 43 6D 69 66 69 6C    cp4cmd..;.Cmifil
000960:  20 69 73 20 74 6F 6F 20 66 75 73 73 79 20 61 62     is too fussy ab
000970:  6F 75 74 20 77 68 61 74 20 63 68 61 72 61 63 74    out what charact
000980:  65 72 73 20 74 6F 20 61 63 63 65 70 74 20 69 6E    ers to accept in
000990:  20 61 0D 0A 3B 09 66 69 6C 65 73 70 65 63 2E 20     a..;.filespec. 
0009A0:  20 4D 79 20 43 50 2F 4D 20 6D 61 6E 75 61 6C 20     My CP/M manual 
0009B0:  73 61 79 73 20 61 6E 79 20 70 72 69 6E 74 61 62    says any printab
0009C0:  6C 65 20 63 68 61 72 61 63 74 65 72 20 69 73 20    le character is 
0009D0:  6F 6B 0D 0A 3B 09 65 78 63 65 70 74 20 3C 3E 2E    ok..;.except <>.
0009E0:  2C 3B 3A 3F 2A 5B 5D 2C 20 61 6E 64 20 6C 6F 77    ,;:?*[], and low
0009F0:  65 72 20 63 61 73 65 2E 20 20 49 6E 20 70 72 61    er case.  In pra
000A00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000AA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000AB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000AC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000AD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000AE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000AF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000BA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000BB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000BC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000BD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000BE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000BF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000C00:  63 74 69 63 65 2C 20 65 76 65 6E 20 74 68 6F 73    ctice, even thos
000C10:  65 20 77 6F 72 6B 0D 0A 3B 09 73 6F 6D 65 74 69    e work..;.someti
000C20:  6D 65 73 2E 20 20 4B 65 72 6D 69 74 20 69 74 73    mes.  Kermit its
000C30:  65 6C 66 20 75 73 65 73 20 27 26 27 20 69 66 20    elf uses '&' if 
000C40:  66 69 6C 65 20 77 61 72 6E 69 6E 67 20 69 73 20    file warning is 
000C50:  6F 6E 2C 0D 0A 3B 09 61 6E 64 20 74 68 65 6E 20    on,..;.and then 
000C60:  77 6F 6E 27 74 20 6C 65 74 20 79 6F 75 20 72 65    won't let you re
000C70:  66 65 72 65 6E 63 65 20 74 68 65 20 66 69 6C 65    ference the file
000C80:  2E 20 20 41 6C 6C 6F 77 20 61 6C 6C 0D 0A 3B 09    .  Allow all..;.
000C90:  70 72 69 6E 74 61 62 6C 65 20 63 68 61 72 61 63    printable charac
000CA0:  74 65 72 73 20 65 78 63 65 70 74 20 74 68 6F 73    ters except thos
000CB0:  65 20 61 62 6F 76 65 2E 20 20 41 64 64 20 63 6F    e above.  Add co
000CC0:  6E 64 69 74 69 6F 6E 61 6C 0D 0A 3B 09 66 66 75    nditional..;.ffu
000CD0:  73 73 79 2C 20 73 6F 20 74 68 61 74 20 69 66 20    ssy, so that if 
000CE0:  6E 6F 74 20 66 66 75 73 73 79 2C 20 61 6C 6C 20    not ffussy, all 
000CF0:  73 70 65 63 69 61 6C 20 63 68 61 72 61 63 74 65    special characte
000D00:  72 73 20 77 69 6C 6C 20 62 65 0D 0A 3B 09 61 6C    rs will be..;.al
000D10:  6C 6F 77 65 64 2C 20 6A 75 73 74 20 63 6F 6E 76    lowed, just conv
000D20:  65 72 74 20 6C 6F 77 65 72 20 74 6F 20 75 70 70    ert lower to upp
000D30:  65 72 2D 63 61 73 65 2E 0D 0A 0D 0A 3B 20 65 64    er-case.....; ed
000D40:  69 74 20 33 3A 20 4A 75 6C 79 20 38 2C 20 31 39    it 3: July 8, 19
000D50:  38 34 20 28 43 4A 43 29 0D 0A 3B 09 69 6E 74 65    84 (CJC)..;.inte
000D60:  67 72 61 74 65 20 54 6F 61 64 20 48 61 6C 6C 20    grate Toad Hall 
000D70:  63 68 61 6E 67 65 73 20 66 6F 72 20 4C 41 53 4D    changes for LASM
000D80:  20 63 6F 6D 70 61 74 69 62 69 6C 69 74 79 3A 20     compatibility: 
000D90:  43 50 34 43 50 4D 20 69 73 20 6C 69 6E 6B 65 64    CP4CPM is linked
000DA0:  0D 0A 3B 09 62 79 20 43 50 34 57 4C 44 2C 20 61    ..;.by CP4WLD, a
000DB0:  6E 64 20 6C 69 6E 6B 73 20 43 50 34 55 54 4C 2E    nd links CP4UTL.
000DC0:  0D 0A 3B 09 0D 0A 3B 20 65 64 69 74 20 32 3A 20    ..;...; edit 2: 
000DD0:  4A 75 6E 65 20 35 2C 20 31 39 38 34 20 28 43 4A    June 5, 1984 (CJ
000DE0:  43 29 0D 0A 3B 09 66 6F 72 6D 61 74 74 69 6E 67    C)..;.formatting
000DF0:  20 61 6E 64 20 64 6F 63 75 6D 65 6E 74 61 74 69     and documentati
000E00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000E10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000E20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000E30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000E40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000E50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000E60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000E70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000E80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000E90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000EA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000EB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000EC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000ED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000EE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000EF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000FA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000FB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000FC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000FD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000FE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000FF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001000:  6F 6E 3B 20 64 65 6C 65 74 65 20 75 6E 6E 65 63    on; delete unnec
001010:  65 73 73 61 72 79 20 63 6F 64 65 20 61 74 20 63    essary code at c
001020:  6D 69 6E 62 37 3B 20 61 64 64 0D 0A 3B 09 6D 6F    minb7; add..;.mo
001030:  64 75 6C 65 20 76 65 72 73 69 6F 6E 20 73 74 72    dule version str
001040:  69 6E 67 2E 0D 0A 3B 0D 0A 3B 20 65 64 69 74 20    ing...;..; edit 
001050:  31 3A 20 4D 61 79 2C 20 31 39 38 34 20 28 43 4A    1: May, 1984 (CJ
001060:  43 29 0D 0A 3B 09 65 78 74 72 61 63 74 65 64 20    C)..;.extracted 
001070:  66 72 6F 6D 20 43 50 4D 42 41 53 45 2E 4D 38 30    from CPMBASE.M80
001080:  20 76 65 72 73 69 6F 6E 20 33 2E 39 3B 20 6D 6F     version 3.9; mo
001090:  64 69 66 69 63 61 74 69 6F 6E 73 20 61 72 65 20    difications are 
0010A0:  64 65 73 63 72 69 62 65 64 20 69 6E 0D 0A 3B 09    described in..;.
0010B0:  74 68 65 20 61 63 63 6F 6D 70 61 6E 79 69 6E 67    the accompanying
0010C0:  20 2E 55 50 44 20 66 69 6C 65 2E 0D 0A 0D 0A 63     .UPD file.....c
0010D0:  6D 64 76 65 72 3A 09 64 62 09 27 43 50 34 43 4D    mdver:.db.'CP4CM
0010E0:  44 2E 41 53 4D 20 28 35 29 20 20 36 2D 46 65 62    D.ASM (5)  6-Feb
0010F0:  2D 38 35 24 27 09 3B 20 6E 61 6D 65 2C 20 65 64    -85$'.; name, ed
001100:  69 74 20 6E 75 6D 62 65 72 2C 20 64 61 74 65 0D    it number, date.
001110:  0A 0D 0A 3B 09 54 68 69 73 20 72 6F 75 74 69 6E    ...;.This routin
001120:  65 20 70 72 69 6E 74 73 20 74 68 65 20 70 72 6F    e prints the pro
001130:  6D 70 74 20 69 6E 20 44 45 20 61 6E 64 20 73 70    mpt in DE and sp
001140:  65 63 69 66 69 65 73 20 74 68 65 20 72 65 70 61    ecifies the repa
001150:  72 73 65 0D 0A 3B 09 61 64 64 72 65 73 73 2E 0D    rse..;.address..
001160:  0A 3B 09 63 61 6C 6C 65 64 20 62 79 3A 20 20 6B    .;.called by:  k
001170:  65 72 6D 69 74 0D 0A 0D 0A 70 72 6F 6D 70 74 3A    ermit....prompt:
001180:  09 70 6F 70 09 68 09 09 3B 47 65 74 20 74 68 65    .pop.h..;Get the
001190:  20 72 65 74 75 72 6E 20 61 64 64 72 65 73 73 2E     return address.
0011A0:  0D 0A 09 70 75 73 68 09 68 09 09 3B 50 75 74 20    ...push.h..;Put 
0011B0:  69 74 20 6F 6E 20 74 68 65 20 73 74 61 63 6B 20    it on the stack 
0011C0:  61 67 61 69 6E 2E 0D 0A 09 73 68 6C 64 09 63 6D    again....shld.cm
0011D0:  72 70 72 73 09 09 3B 53 61 76 65 20 69 74 20 61    rprs..;Save it a
0011E0:  73 20 74 68 65 20 61 64 64 72 65 73 73 20 74 6F    s the address to
0011F0:  20 67 6F 20 74 6F 20 6F 6E 20 72 65 70 61 72 73     go to on repars
001200:  3B 20 43 50 34 43 4D 44 2E 41 53 4D 0D 0A 3B 09    ; CP4CMD.ASM..;.
001210:  4B 45 52 4D 49 54 20 2D 20 28 43 65 6C 74 69 63    KERMIT - (Celtic
001220:  20 66 6F 72 20 22 46 52 45 45 22 29 0D 0A 3B 0D     for "FREE")..;.
001230:  0A 3B 09 54 68 69 73 20 69 73 20 74 68 65 20 43    .;.This is the C
001240:  50 2F 4D 2D 38 30 20 69 6D 70 6C 65 6D 65 6E 74    P/M-80 implement
001250:  61 74 69 6F 6E 20 6F 66 20 74 68 65 20 43 6F 6C    ation of the Col
001260:  75 6D 62 69 61 20 55 6E 69 76 65 72 73 69 74 79    umbia University
001270:  0D 0A 3B 09 4B 45 52 4D 49 54 20 66 69 6C 65 20    ..;.KERMIT file 
001280:  74 72 61 6E 73 66 65 72 20 70 72 6F 74 6F 63 6F    transfer protoco
001290:  6C 2E 0D 0A 3B 0D 0A 3B 09 56 65 72 73 69 6F 6E    l...;..;.Version
0012A0:  20 34 2E 30 0D 0A 3B 0D 0A 3B 09 43 6F 70 79 72     4.0..;..;.Copyr
0012B0:  69 67 68 74 20 4A 75 6E 65 20 31 39 38 31 2C 31    ight June 1981,1
0012C0:  39 38 32 2C 31 39 38 33 2C 31 39 38 34 2C 31 39    982,1983,1984,19
0012D0:  38 35 0D 0A 3B 09 43 6F 6C 75 6D 62 69 61 20 55    85..;.Columbia U
0012E0:  6E 69 76 65 72 73 69 74 79 0D 0A 3B 0D 0A 3B 20    niversity..;..; 
0012F0:  4F 72 69 67 69 6E 61 6C 6C 79 20 77 72 69 74 74    Originally writt
001300:  65 6E 20 62 79 20 42 69 6C 6C 20 43 61 74 63 68    en by Bill Catch
001310:  69 6E 67 73 20 6F 66 20 74 68 65 20 43 6F 6C 75    ings of the Colu
001320:  6D 62 69 61 20 55 6E 69 76 65 72 73 69 74 79 20    mbia University 
001330:  43 65 6E 74 65 72 20 66 6F 72 0D 0A 3B 20 43 6F    Center for..; Co
001340:  6D 70 75 74 69 6E 67 20 41 63 74 69 76 69 74 69    mputing Activiti
001350:  65 73 2C 20 36 31 32 20 57 2E 20 31 31 35 74 68    es, 612 W. 115th
001360:  20 53 74 2E 2C 20 4E 65 77 20 59 6F 72 6B 2C 20     St., New York, 
001370:  4E 59 20 31 30 30 32 35 2E 0D 0A 3B 0D 0A 3B 20    NY 10025...;..; 
001380:  43 6F 6E 74 72 69 62 75 74 69 6F 6E 73 20 62 79    Contributions by
001390:  20 46 72 61 6E 6B 20 64 61 20 43 72 75 7A 2C 20     Frank da Cruz, 
0013A0:  44 61 70 68 6E 65 20 54 7A 6F 61 72 2C 20 42 65    Daphne Tzoar, Be
0013B0:  72 6E 69 65 20 45 69 62 65 6E 2C 0D 0A 3B 20 42    rnie Eiben,..; B
0013C0:  72 75 63 65 20 54 61 6E 6E 65 72 2C 20 4E 69 63    ruce Tanner, Nic
0013D0:  6B 20 42 75 73 68 2C 20 47 72 65 67 20 53 6D 61    k Bush, Greg Sma
0013E0:  6C 6C 2C 20 4B 69 6D 6D 6F 20 4C 61 61 6B 73 6F    ll, Kimmo Laakso
0013F0:  6E 65 6E 2C 20 4A 65 66 66 20 44 61 6D 65 6E 73    nen, Jeff Damens
001400:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
001410:  01 00 00 00 02 09 4E E5 01 00 C1 02 00 00 00 02    ......N.........
001420:  01 00 C6 02 00 00 00 02 01 00 C2 02 00 00 00 02    ................
001430:  01 00 C7 02 00 00 00 02 01 00 C3 02 00 00 00 02    ................
001440:  01 00 C8 02 00 00 00 02 01 00 C4 02 00 00 00 02    ................
001450:  01 00 C9 02 00 00 00 02 01 00 C5 02 00 00 00 02    ................
001460:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
001470:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
001480:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
001490:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0014A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0014B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0014C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0014D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0014E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0014F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
001500:  65 2E 0D 0A 09 6C 78 69 09 68 2C 30 09 09 3B 43    e....lxi.h,0..;C
001510:  6C 65 61 72 20 6F 75 74 20 68 6C 20 70 61 69 72    lear out hl pair
001520:  2E 0D 0A 09 64 61 64 09 73 70 09 09 3B 47 65 74    ....dad.sp..;Get
001530:  20 74 68 65 20 70 72 65 73 65 6E 74 20 73 74 61     the present sta
001540:  63 6B 20 70 6F 69 6E 74 65 72 2E 0D 0A 09 73 68    ck pointer....sh
001550:  6C 64 09 63 6D 6F 73 74 70 09 09 3B 53 61 76 65    ld.cmostp..;Save
001560:  20 66 6F 72 20 6C 61 74 65 72 20 72 65 73 74 6F     for later resto
001570:  72 61 6C 2E 0D 0A 09 78 63 68 67 09 09 09 3B 53    ral....xchg...;S
001580:  61 76 65 20 74 68 65 20 70 6F 69 6E 74 65 72 20    ave the pointer 
001590:  74 6F 20 74 68 65 20 70 72 6F 6D 70 74 2E 0D 0A    to the prompt...
0015A0:  09 73 68 6C 64 09 63 6D 70 72 6D 70 0D 0A 09 78    .shld.cmprmp...x
0015B0:  63 68 67 0D 0A 09 6C 78 69 09 68 2C 63 6D 64 62    chg...lxi.h,cmdb
0015C0:  75 66 0D 0A 09 73 68 6C 64 09 63 6D 63 70 74 72    uf...shld.cmcptr
0015D0:  09 09 3B 49 6E 69 74 69 61 6C 69 7A 65 20 74 68    ..;Initialize th
0015E0:  65 20 63 6F 6D 6D 61 6E 64 20 70 6F 69 6E 74 65    e command pointe
0015F0:  72 2E 0D 0A 09 73 68 6C 64 09 63 6D 64 70 74 72    r....shld.cmdptr
001600:  0D 0A 09 78 72 61 09 61 0D 0A 09 73 74 61 09 63    ...xra.a...sta.c
001610:  6D 61 66 6C 67 09 09 3B 5A 65 72 6F 20 74 68 65    maflg..;Zero the
001620:  20 66 6C 61 67 73 2E 0D 0A 09 73 74 61 09 63 6D     flags....sta.cm
001630:  63 63 6E 74 0D 0A 09 6D 76 69 09 61 2C 30 46 46    ccnt...mvi.a,0FF
001640:  48 09 09 3B 54 72 79 20 69 74 20 74 68 69 73 20    H..;Try it this 
001650:  77 61 79 20 28 44 61 70 68 6E 65 2E 29 0D 0A 09    way (Daphne.)...
001660:  73 74 61 09 63 6D 73 66 6C 67 0D 0A 09 63 61 6C    sta.cmsflg...cal
001670:  6C 09 70 72 63 72 6C 66 09 09 3B 50 72 69 6E 74    l.prcrlf..;Print
001680:  20 61 20 43 52 2F 4C 46 20 5B 54 6F 61 64 20 48     a CR/LF [Toad H
001690:  61 6C 6C 5D 0D 0A 09 6A 6D 70 09 70 72 70 72 6D    all]...jmp.prprm
0016A0:  70 09 09 3B 50 72 69 6E 74 20 74 68 65 20 70 72    p..;Print the pr
0016B0:  6F 6D 70 74 2E 20 20 5B 54 6F 61 64 20 48 61 6C    ompt.  [Toad Hal
0016C0:  6C 5D 0D 0A 3B 0C 0D 0A 3B 09 54 68 69 73 20 61    l]..;...;.This a
0016D0:  64 64 72 65 73 73 20 69 73 20 6A 75 6D 70 65 64    ddress is jumped
0016E0:  20 74 6F 20 6F 6E 20 72 65 70 61 72 73 65 2E 0D     to on reparse..
0016F0:  0A 3B 09 68 65 72 65 20 66 72 6F 6D 3A 20 20 63    .;.here from:  c
001700:  6F 2E 0D 0A 09 6D 76 69 09 63 2C 63 6F 6E 6F 75    o....mvi.c,conou
001710:  74 0D 0A 09 6D 76 69 09 65 2C 62 65 6C 6C 09 09    t...mvi.e,bell..
001720:  3B 47 65 74 20 61 20 62 65 6C 6C 2E 0D 0A 09 63    ;Get a bell....c
001730:  61 6C 6C 09 62 64 6F 73 0D 0A 09 78 72 61 09 61    all.bdos...xra.a
001740:  0D 0A 09 73 74 61 09 63 6D 61 66 6C 67 09 09 3B    ...sta.cmaflg..;
001750:  54 75 72 6E 20 6F 66 66 20 74 68 65 20 61 63 74    Turn off the act
001760:  69 6F 6E 20 66 6C 61 67 2E 0D 0A 09 6C 68 6C 64    ion flag....lhld
001770:  09 63 6D 63 70 74 72 09 09 3B 4D 6F 76 65 20 74    .cmcptr..;Move t
001780:  68 65 20 70 6F 69 6E 74 65 72 20 74 6F 20 62 65    he pointer to be
001790:  66 6F 72 65 20 74 68 65 20 65 73 63 61 70 65 2E    fore the escape.
0017A0:  0D 0A 09 64 63 78 09 68 0D 0A 09 73 68 6C 64 09    ...dcx.h...shld.
0017B0:  63 6D 63 70 74 72 0D 0A 09 73 68 6C 64 09 63 6D    cmcptr...shld.cm
0017C0:  64 70 74 72 0D 0A 09 6C 78 69 09 68 2C 63 6D 63    dptr...lxi.h,cmc
0017D0:  63 6E 74 09 3B 47 65 74 20 74 68 65 20 63 68 61    cnt.;Get the cha
0017E0:  72 20 63 6F 75 6E 74 2E 0D 0A 09 64 63 72 09 6D    r count....dcr.m
0017F0:  09 09 3B 44 65 63 72 65 6D 65 6E 74 20 69 74 20    ..;Decrement it 
001800:  62 79 20 6F 6E 65 2E 0D 0A 09 6A 6D 70 09 63 6D    by one....jmp.cm
001810:  74 78 74 31 09 09 3B 54 72 79 20 61 67 61 69 6E    txt1..;Try again
001820:  2E 0D 0A 0D 0A 63 6D 74 78 74 32 3A 09 63 70 69    .....cmtxt2:.cpi
001830:  09 27 3F 27 09 09 3B 49 73 20 69 74 20 61 20 71    .'?'..;Is it a q
001840:  75 65 73 74 69 6F 6E 20 6D 61 72 6B 3F 0D 0A 09    uestion mark?...
001850:  6A 7A 09 63 6D 74 78 74 33 09 09 3B 49 66 20 73    jz.cmtxt3..;If s
001860:  6F 20 70 75 74 20 69 74 20 69 6E 20 74 68 65 20    o put it in the 
001870:  74 65 78 74 2E 0D 0A 09 63 70 69 09 66 66 09 09    text....cpi.ff..
001880:  3B 49 73 20 69 74 20 61 20 66 6F 72 6D 66 65 65    ;Is it a formfee
001890:  64 3F 0D 0A 09 63 7A 09 63 6C 72 74 6F 70 09 09    d?...cz.clrtop..
0018A0:  3B 49 66 20 73 6F 20 62 6C 61 6E 6B 20 74 68 65    ;If so blank the
0018B0:  20 73 63 72 65 65 6E 2E 0D 0A 09 6D 6F 76 09 61     screen....mov.a
0018C0:  2C 62 09 09 3B 52 65 74 75 72 6E 20 74 68 65 20    ,b..;Return the 
0018D0:  63 6F 75 6E 74 2E 0D 0A 09 6C 68 6C 64 09 63 6D    count....lhld.cm
0018E0:  70 74 61 62 09 09 3B 52 65 74 75 72 6E 20 75 70    ptab..;Return up
0018F0:  64 61 74 65 64 20 70 6F 69 6E 74 65 72 20 69 6E    dated pointer in
001900:  6D 63 66 72 6D 2C 20 63 6D 6B 65 79 77 2C 20 63    mcfrm, cmkeyw, c
001910:  6D 69 66 69 6C 2C 20 63 6D 69 6E 62 66 0D 0A 0D    mifil, cminbf...
001920:  0A 72 65 70 61 72 73 3A 09 6C 68 6C 64 09 63 6D    .repars:.lhld.cm
001930:  6F 73 74 70 09 09 3B 47 65 74 20 74 68 65 20 6F    ostp..;Get the o
001940:  6C 64 20 73 74 61 63 6B 20 70 6F 69 6E 74 65 72    ld stack pointer
001950:  2E 0D 0A 09 73 70 68 6C 09 09 09 3B 4D 61 6B 65    ....sphl...;Make
001960:  20 69 74 20 74 68 65 20 70 72 65 73 65 6E 74 20     it the present 
001970:  6F 6E 65 2E 0D 0A 09 6C 78 69 09 68 2C 63 6D 64    one....lxi.h,cmd
001980:  62 75 66 0D 0A 09 73 68 6C 64 09 63 6D 64 70 74    buf...shld.cmdpt
001990:  72 0D 0A 09 6D 76 69 09 61 2C 30 46 46 48 09 09    r...mvi.a,0FFH..
0019A0:  3B 54 72 79 20 69 74 20 74 68 69 73 20 77 61 79    ;Try it this way
0019B0:  20 28 44 61 70 68 6E 65 2E 29 0D 0A 09 73 74 61     (Daphne.)...sta
0019C0:  09 63 6D 73 66 6C 67 0D 0A 09 6C 68 6C 64 09 63    .cmsflg...lhld.c
0019D0:  6D 72 70 72 73 09 09 3B 47 65 74 20 74 68 65 20    mrprs..;Get the 
0019E0:  72 65 70 61 72 73 65 20 61 64 64 72 65 73 73 2E    reparse address.
0019F0:  0D 0A 09 70 63 68 6C 09 09 09 3B 47 6F 20 74 68    ...pchl...;Go th
001A00:  65 72 65 2E 0D 0A 0D 0A 3B 09 54 68 69 73 20 61    ere.....;.This a
001A10:  64 64 72 65 73 73 20 63 61 6E 20 62 65 20 6A 75    ddress can be ju
001A20:  6D 70 65 64 20 74 6F 20 6F 6E 20 61 20 70 61 72    mped to on a par
001A30:  73 69 6E 67 20 65 72 72 6F 72 2E 0D 0A 3B 09 68    sing error...;.h
001A40:  65 72 65 20 66 72 6F 6D 3A 20 20 63 6D 6B 65 79    ere from:  cmkey
001A50:  77 2C 20 63 6D 69 6E 62 66 0D 0A 0D 0A 70 72 73    w, cminbf....prs
001A60:  65 72 72 3A 09 6C 68 6C 64 09 63 6D 6F 73 74 70    err:.lhld.cmostp
001A70:  09 09 3B 47 65 74 20 74 68 65 20 6F 6C 64 20 73    ..;Get the old s
001A80:  74 61 63 6B 20 70 6F 69 6E 74 65 72 2E 0D 0A 09    tack pointer....
001A90:  73 70 68 6C 09 09 09 3B 4D 61 6B 65 20 69 74 20    sphl...;Make it 
001AA0:  74 68 65 20 70 72 65 73 65 6E 74 20 6F 6E 65 2E    the present one.
001AB0:  0D 0A 09 6C 78 69 09 68 2C 63 6D 64 62 75 66 0D    ...lxi.h,cmdbuf.
001AC0:  0A 09 73 68 6C 64 09 63 6D 63 70 74 72 09 09 3B    ..shld.cmcptr..;
001AD0:  49 6E 69 74 69 61 6C 69 7A 65 20 74 68 65 20 63    Initialize the c
001AE0:  6F 6D 6D 61 6E 64 20 70 6F 69 6E 74 65 72 2E 0D    ommand pointer..
001AF0:  0A 09 73 68 6C 64 09 63 6D 64 70 74 72 0D 0A 09    ..shld.cmdptr...
001B00:  20 48 4C 2E 0D 0A 09 78 63 68 67 0D 0A 09 6A 6D     HL....xchg...jm
001B10:  70 09 72 73 6B 70 09 09 3B 52 65 74 75 72 6E 20    p.rskp..;Return 
001B20:  73 75 63 63 65 73 73 2E 0D 0A 0D 0A 63 6D 74 78    success.....cmtx
001B30:  74 33 3A 09 6C 78 69 09 68 2C 63 6D 61 66 6C 67    t3:.lxi.h,cmaflg
001B40:  09 3B 50 6F 69 6E 74 20 74 6F 20 74 68 65 20 61    .;Point to the a
001B50:  63 74 69 6F 6E 20 66 6C 61 67 2E 0D 0A 09 6D 76    ction flag....mv
001B60:  69 09 6D 2C 30 09 09 3B 53 65 74 20 69 74 20 74    i.m,0..;Set it t
001B70:  6F 20 7A 65 72 6F 2E 0D 0A 63 6D 74 78 74 35 3A    o zero...cmtxt5:
001B80:  09 69 6E 72 09 62 09 09 3B 49 6E 63 72 65 6D 65    .inr.b..;Increme
001B90:  6E 74 20 74 68 65 20 63 6F 75 6E 74 2E 0D 0A 09    nt the count....
001BA0:  6C 68 6C 64 09 63 6D 70 74 61 62 09 09 3B 47 65    lhld.cmptab..;Ge
001BB0:  74 20 74 68 65 20 70 6F 69 6E 74 65 72 2E 0D 0A    t the pointer...
001BC0:  09 6D 6F 76 09 6D 2C 61 09 09 3B 50 75 74 20 74    .mov.m,a..;Put t
001BD0:  68 65 20 63 68 61 72 20 69 6E 20 74 68 65 20 61    he char in the a
001BE0:  72 72 61 79 2E 0D 0A 09 69 6E 78 09 68 0D 0A 09    rray....inx.h...
001BF0:  73 68 6C 64 09 63 6D 70 74 61 62 09 09 3B 53 61    shld.cmptab..;Sa
001C00:  76 65 20 74 68 65 20 75 70 64 61 74 65 64 20 70    ve the updated p
001C10:  6F 69 6E 74 65 72 2E 0D 0A 09 6A 6D 70 09 63 6D    ointer....jmp.cm
001C20:  74 78 74 31 09 09 3B 47 65 74 20 61 6E 6F 74 68    txt1..;Get anoth
001C30:  65 72 20 63 68 61 72 2E 0D 0A 0D 0A 3B 0C 0D 0A    er char.....;...
001C40:  3B 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 67    ;.This routine g
001C50:  65 74 73 20 61 20 63 6F 6E 66 69 72 6D 2E 0D 0A    ets a confirm...
001C60:  3B 09 63 61 6C 6C 65 64 20 62 79 3A 20 63 6F 6D    ;.called by: com
001C70:  6E 64 0D 0A 0D 0A 63 6D 63 66 72 6D 3A 09 63 61    nd....cmcfrm:.ca
001C80:  6C 6C 09 63 6D 67 74 63 68 09 09 3B 47 65 74 20    ll.cmgtch..;Get 
001C90:  61 20 63 68 61 72 2E 0D 0A 09 6F 72 61 09 61 09    a char....ora.a.
001CA0:  09 3B 49 73 20 69 74 20 6E 65 67 61 74 69 76 65    .;Is it negative
001CB0:  20 28 61 20 74 65 72 6D 69 6E 61 74 6F 72 3B 61     (a terminator;a
001CC0:  20 73 70 61 63 65 20 6F 72 0D 0A 09 09 09 09 3B     space or......;
001CD0:  61 20 74 61 62 20 77 69 6C 6C 20 6E 6F 74 20 62    a tab will not b
001CE0:  65 20 72 65 74 75 72 6E 65 64 20 68 65 72 65 20    e returned here 
001CF0:  61 73 20 74 68 65 79 0D 0A 09 09 09 09 3B 77 69    as they......;wi
001D00:  78 72 61 09 61 0D 0A 09 73 74 61 09 63 6D 61 66    xra.a...sta.cmaf
001D10:  6C 67 09 09 3B 5A 65 72 6F 20 74 68 65 20 66 6C    lg..;Zero the fl
001D20:  61 67 73 2E 0D 0A 09 73 74 61 09 63 6D 63 63 6E    ags....sta.cmccn
001D30:  74 0D 0A 09 6D 76 69 09 61 2C 30 46 46 48 09 09    t...mvi.a,0FFH..
001D40:  3B 54 72 79 20 69 74 20 74 68 69 73 20 77 61 79    ;Try it this way
001D50:  20 28 44 61 70 68 6E 65 2E 29 0D 0A 09 73 74 61     (Daphne.)...sta
001D60:  09 63 6D 73 66 6C 67 0D 0A 09 63 61 6C 6C 09 70    .cmsflg...call.p
001D70:  72 63 72 6C 66 09 09 3B 50 72 69 6E 74 20 61 20    rcrlf..;Print a 
001D80:  43 52 2F 4C 46 20 20 5B 54 6F 61 64 20 48 61 6C    CR/LF  [Toad Hal
001D90:  6C 5D 0D 0A 09 63 61 6C 6C 09 70 72 70 72 6D 70    l]...call.prprmp
001DA0:  09 09 3B 50 72 69 6E 74 20 74 68 65 20 70 72 6F    ..;Print the pro
001DB0:  6D 70 74 20 20 5B 54 6F 61 64 20 48 61 6C 6C 5D    mpt  [Toad Hall]
001DC0:  0D 0A 3B 2A 20 49 6E 73 74 65 61 64 20 72 65 74    ..;* Instead ret
001DD0:  75 72 6E 20 74 6F 20 62 65 66 6F 72 65 20 74 68    urn to before th
001DE0:  65 20 70 72 6F 6D 70 74 20 63 61 6C 6C 2E 0D 0A    e prompt call...
001DF0:  09 6C 68 6C 64 09 63 6D 72 70 72 73 0D 0A 09 70    .lhld.cmrprs...p
001E00:  63 68 6C 0D 0A 3B 0C 0D 0A 3B 09 54 68 69 73 20    chl..;...;.This 
001E10:  72 6F 75 74 69 6E 65 20 70 61 72 73 65 73 20 74    routine parses t
001E20:  68 65 20 73 70 65 63 69 66 69 65 64 20 66 75 6E    he specified fun
001E30:  63 74 69 6F 6E 20 69 6E 20 41 2E 20 20 41 6E 79    ction in A.  Any
001E40:  20 61 64 64 69 74 69 6F 6E 61 6C 0D 0A 3B 09 69     additional..;.i
001E50:  6E 66 6F 72 6D 61 74 69 6F 6E 20 69 73 20 69 6E    nformation is in
001E60:  20 44 45 20 61 6E 64 20 48 4C 2E 0D 0A 3B 09 52     DE and HL...;.R
001E70:  65 74 75 72 6E 73 20 2B 31 20 6F 6E 20 73 75 63    eturns +1 on suc
001E80:  63 65 73 73 0D 0A 3B 09 09 2B 34 20 6F 6E 20 66    cess..;..+4 on f
001E90:  61 69 6C 75 72 65 20 28 61 73 73 75 6D 65 73 20    ailure (assumes 
001EA0:  61 20 4A 4D 50 20 66 6F 6C 6C 6F 77 73 20 74 68    a JMP follows th
001EB0:  65 20 63 61 6C 6C 29 0D 0A 3B 09 63 61 6C 6C 65    e call)..;.calle
001EC0:  64 20 62 79 3A 20 20 6C 6F 67 2C 20 73 65 74 63    d by:  log, setc
001ED0:  6F 6D 2C 20 72 65 61 64 2C 20 73 65 6E 64 2C 20    om, read, send, 
001EE0:  78 6D 69 74 2C 20 64 69 72 2C 20 65 72 61 2C 20    xmit, dir, era, 
001EF0:  6B 65 79 63 6D 64 2C 20 63 66 6D 63 6D 64 0D 0A    keycmd, cfmcmd..
001F00:  6C 6C 20 62 65 20 73 65 65 6E 20 61 73 20 6C 65    ll be seen as le
001F10:  61 64 69 6E 67 20 77 68 69 74 65 20 73 70 61 63    ading white spac
001F20:  65 2E 29 0D 0A 09 72 70 09 09 09 3B 49 66 20 6E    e.)...rp...;If n
001F30:  6F 74 2C 20 72 65 74 75 72 6E 20 66 61 69 6C 75    ot, return failu
001F40:  72 65 2E 0D 0A 09 61 6E 69 09 37 46 48 09 09 3B    re....ani.7FH..;
001F50:  54 75 72 6E 20 6F 66 66 20 74 68 65 20 6D 69 6E    Turn off the min
001F60:  75 73 20 62 69 74 2E 0D 0A 09 63 70 69 09 65 73    us bit....cpi.es
001F70:  63 09 09 3B 49 73 20 69 74 20 61 6E 20 65 73 63    c..;Is it an esc
001F80:  61 70 65 3F 0D 0A 09 6A 6E 7A 09 63 6D 63 66 72    ape?...jnz.cmcfr
001F90:  32 0D 0A 09 6D 76 69 09 63 2C 63 6F 6E 6F 75 74    2...mvi.c,conout
001FA0:  0D 0A 09 6D 76 69 09 65 2C 62 65 6C 6C 09 09 3B    ...mvi.e,bell..;
001FB0:  47 65 74 20 61 20 62 65 6C 6C 2E 0D 0A 09 63 61    Get a bell....ca
001FC0:  6C 6C 09 62 64 6F 73 0D 0A 09 78 72 61 09 61 0D    ll.bdos...xra.a.
001FD0:  0A 09 73 74 61 09 63 6D 61 66 6C 67 09 09 3B 54    ..sta.cmaflg..;T
001FE0:  75 72 6E 20 6F 66 66 20 74 68 65 20 61 63 74 69    urn off the acti
001FF0:  6F 6E 20 66 6C 61 67 2E 0D 0A 09 6C 68 6C 64 09    on flag....lhld.
002000:  63 6D 63 70 74 72 09 09 3B 4D 6F 76 65 20 74 68    cmcptr..;Move th
002010:  65 20 70 6F 69 6E 74 65 72 20 74 6F 20 62 65 66    e pointer to bef
002020:  6F 72 65 20 74 68 65 20 65 73 63 61 70 65 2E 0D    ore the escape..
002030:  0A 09 64 63 78 09 68 0D 0A 09 73 68 6C 64 09 63    ..dcx.h...shld.c
002040:  6D 63 70 74 72 0D 0A 09 73 68 6C 64 09 63 6D 64    mcptr...shld.cmd
002050:  70 74 72 0D 0A 09 6C 78 69 09 68 2C 63 6D 63 63    ptr...lxi.h,cmcc
002060:  6E 74 09 3B 47 65 74 20 74 68 65 20 63 68 61 72    nt.;Get the char
002070:  20 63 6F 75 6E 74 2E 0D 0A 09 64 63 72 09 6D 09     count....dcr.m.
002080:  09 3B 44 65 63 72 65 6D 65 6E 74 20 69 74 20 62    .;Decrement it b
002090:  79 20 6F 6E 65 2E 0D 0A 09 6A 6D 70 09 63 6D 63    y one....jmp.cmc
0020A0:  66 72 6D 09 09 3B 54 72 79 20 61 67 61 69 6E 2E    frm..;Try again.
0020B0:  0D 0A 0D 0A 63 6D 63 66 72 32 3A 09 63 70 69 09    ....cmcfr2:.cpi.
0020C0:  27 3F 27 09 09 3B 43 75 72 69 6F 75 73 3F 0D 0A    '?'..;Curious?..
0020D0:  09 6A 6E 7A 09 63 6D 63 66 72 33 0D 0A 09 6C 78    .jnz.cmcfr3...lx
0020E0:  69 09 64 2C 63 6D 69 6E 30 30 09 3B 50 72 69 6E    i.d,cmin00.;Prin
0020F0:  74 20 73 6F 6D 65 74 68 69 6E 67 20 75 73 65 66    t something usef
002100:  0D 0A 63 6F 6D 6E 64 3A 09 73 74 61 09 63 6D 73    ..comnd:.sta.cms
002110:  74 61 74 09 09 3B 53 61 76 65 20 77 68 61 74 20    tat..;Save what 
002120:  77 65 20 61 72 65 20 70 72 65 73 65 6E 74 6C 79    we are presently
002130:  20 70 61 72 73 69 6E 67 2E 0D 0A 09 63 61 6C 6C     parsing....call
002140:  09 63 6D 69 6E 62 66 09 09 3B 47 65 74 20 63 68    .cminbf..;Get ch
002150:  61 72 73 20 75 6E 74 69 6C 20 61 6E 20 61 63 74    ars until an act
002160:  69 6F 6E 20 6F 72 20 61 20 65 72 61 73 65 20 63    ion or a erase c
002170:  68 61 72 2E 0D 0A 09 63 70 69 09 63 6D 63 66 6D    har....cpi.cmcfm
002180:  09 09 3B 50 61 72 73 65 20 61 20 63 6F 6E 66 69    ..;Parse a confi
002190:  72 6D 3F 0D 0A 09 6A 7A 09 63 6D 63 66 72 6D 09    rm?...jz.cmcfrm.
0021A0:  09 3B 47 6F 20 67 65 74 20 6F 6E 65 2E 0D 0A 09    .;Go get one....
0021B0:  63 70 69 09 63 6D 6B 65 79 09 09 3B 50 61 72 73    cpi.cmkey..;Pars
0021C0:  65 20 61 20 6B 65 79 77 6F 72 64 3F 0D 0A 09 6A    e a keyword?...j
0021D0:  7A 09 63 6D 6B 65 79 77 09 09 3B 54 72 79 20 61    z.cmkeyw..;Try a
0021E0:  6E 64 20 67 65 74 20 6F 6E 65 2E 0D 0A 09 63 70    nd get one....cp
0021F0:  69 09 63 6D 69 66 69 09 09 3B 50 61 72 73 65 20    i.cmifi..;Parse 
002200:  61 6E 20 69 6E 70 75 74 20 66 69 6C 65 20 73 70    an input file sp
002210:  65 63 3F 0D 0A 09 6A 7A 09 63 6D 69 66 69 6C 09    ec?...jz.cmifil.
002220:  09 3B 47 6F 20 67 65 74 20 6F 6E 65 2E 0D 0A 09    .;Go get one....
002230:  63 70 69 09 63 6D 69 66 69 6E 09 09 3B 49 6E 70    cpi.cmifin..;Inp
002240:  75 74 20 66 69 6C 65 2D 73 70 65 63 20 73 69 6C    ut file-spec sil
002250:  65 6E 74 3F 0D 0A 09 6A 7A 09 63 6D 69 66 69 6C    ent?...jz.cmifil
002260:  09 09 3B 64 6F 20 61 73 20 68 65 20 77 69 73 68    ..;do as he wish
002270:  65 73 0D 0A 09 63 70 69 09 63 6D 6F 66 69 09 09    es...cpi.cmofi..
002280:  3B 4F 75 74 70 75 74 20 66 69 6C 65 20 73 70 65    ;Output file spe
002290:  63 3F 0D 0A 09 6A 7A 09 63 6D 6F 66 69 6C 09 09    c?...jz.cmofil..
0022A0:  3B 47 6F 20 67 65 74 20 6F 6E 65 2E 0D 0A 09 63    ;Go get one....c
0022B0:  70 69 09 63 6D 74 78 74 09 09 3B 50 61 72 73 65    pi.cmtxt..;Parse
0022C0:  20 61 72 62 69 74 72 61 72 79 20 74 65 78 74 3F     arbitrary text?
0022D0:  0D 0A 09 6A 7A 09 63 6D 74 65 78 74 09 09 3B 47    ...jz.cmtext..;G
0022E0:  6F 20 64 6F 20 69 74 2E 0D 0A 09 6C 78 69 09 64    o do it....lxi.d
0022F0:  2C 63 6D 65 72 30 30 09 3B 22 3F 55 6E 72 65 63    ,cmer00.;"?Unrec
002300:  75 6C 2E 0D 0A 09 63 61 6C 6C 09 70 72 74 73 74    ul....call.prtst
002310:  72 0D 0A 09 63 61 6C 6C 09 70 72 63 72 6C 66 09    r...call.prcrlf.
002320:  09 3B 50 72 69 6E 74 20 61 20 63 72 6C 66 2E 20    .;Print a crlf. 
002330:  20 5B 54 6F 61 64 20 48 61 6C 6C 5D 0D 0A 20 09     [Toad Hall].. .
002340:  63 61 6C 6C 09 70 72 70 72 6D 70 09 09 3B 52 65    call.prprmp..;Re
002350:  70 72 69 6E 74 20 74 68 65 20 70 72 6F 6D 70 74    print the prompt
002360:  20 20 5B 54 6F 61 64 20 48 61 6C 6C 5D 0D 0A 09      [Toad Hall]...
002370:  6C 68 6C 64 09 63 6D 64 70 74 72 09 09 3B 47 65    lhld.cmdptr..;Ge
002380:  74 20 74 68 65 20 70 6F 69 6E 74 65 72 20 69 6E    t the pointer in
002390:  74 6F 20 74 68 65 20 62 75 66 66 65 72 2E 0D 0A    to the buffer...
0023A0:  09 6D 76 69 09 61 2C 27 24 27 09 09 3B 50 75 74    .mvi.a,'$'..;Put
0023B0:  20 61 20 24 20 74 68 65 72 65 20 66 6F 72 20 70     a $ there for p
0023C0:  72 69 6E 74 69 6E 67 2E 0D 0A 09 6D 6F 76 09 6D    rinting....mov.m
0023D0:  2C 61 0D 0A 09 6C 68 6C 64 09 63 6D 63 70 74 72    ,a...lhld.cmcptr
0023E0:  0D 0A 09 64 63 78 09 68 09 09 3B 44 65 63 72 65    ...dcx.h..;Decre
0023F0:  6D 65 6E 74 20 61 6E 64 20 73 61 76 65 20 74 68    ment and save th
002400:  65 20 62 75 66 66 65 72 20 70 6F 69 6E 74 65 72    e buffer pointer
002410:  2E 0D 0A 09 73 68 6C 64 09 63 6D 63 70 74 72 0D    ....shld.cmcptr.
002420:  0A 09 6C 78 69 09 64 2C 63 6D 64 62 75 66 0D 0A    ..lxi.d,cmdbuf..
002430:  09 63 61 6C 6C 09 70 72 74 73 74 72 0D 0A 09 78    .call.prtstr...x
002440:  72 61 09 61 09 09 3B 54 75 72 6E 20 6F 66 66 20    ra.a..;Turn off 
002450:  74 68 65 20 61 63 74 69 6F 6E 20 66 6C 61 67 2E    the action flag.
002460:  0D 0A 09 73 74 61 09 63 6D 61 66 6C 67 0D 0A 09    ...sta.cmaflg...
002470:  6A 6D 70 09 72 65 70 61 72 73 09 09 3B 52 65 70    jmp.repars..;Rep
002480:  61 72 73 65 20 65 76 65 72 79 74 68 69 6E 67 2E    arse everything.
002490:  0D 0A 0D 0A 63 6D 63 66 72 33 3A 09 63 70 69 09    ....cmcfr3:.cpi.
0024A0:  66 66 09 09 3B 49 73 20 69 74 20 61 20 66 6F 72    ff..;Is it a for
0024B0:  6D 20 66 65 65 64 3F 0D 0A 09 63 7A 09 63 6C 72    m feed?...cz.clr
0024C0:  74 6F 70 09 09 3B 49 66 20 73 6F 20 62 6C 61 6E    top..;If so blan
0024D0:  6B 20 74 68 65 20 73 63 72 65 65 6E 2E 0D 0A 09    k the screen....
0024E0:  6A 6D 70 09 72 73 6B 70 0D 0A 3B 0C 0D 0A 3B 09    jmp.rskp..;...;.
0024F0:  54 68 69 73 20 72 6F 75 74 69 6E 65 20 70 61 72    This routine par
002500:  6F 67 6E 69 7A 65 64 20 43 4F 4D 4E 44 20 63 61    ognized COMND ca
002510:  6C 6C 22 0D 0A 09 63 61 6C 6C 09 70 72 74 73 74    ll"...call.prtst
002520:  72 0D 0A 09 72 65 74 0D 0A 3B 0C 0D 0A 3B 09 54    r...ret..;...;.T
002530:  68 69 73 20 72 6F 75 74 69 6E 65 20 70 61 72 73    his routine pars
002540:  65 73 20 61 72 62 69 74 72 61 72 79 20 74 65 78    es arbitrary tex
002550:  74 20 75 70 20 74 6F 20 61 20 43 52 2E 0D 0A 3B    t up to a CR...;
002560:  09 41 63 63 65 70 74 73 20 44 45 3A 09 61 64 64    .Accepts DE:.add
002570:  72 65 73 73 20 74 6F 20 70 75 74 20 74 65 78 74    ress to put text
002580:  0D 0A 3B 09 52 65 74 75 72 6E 73 20 69 6E 20 41    ..;.Returns in A
002590:  3A 09 6E 75 6D 62 65 72 20 6F 66 20 63 68 61 72    :.number of char
0025A0:  73 20 69 6E 20 74 65 78 74 20 28 6D 61 79 20 62    s in text (may b
0025B0:  65 20 30 29 0D 0A 3B 09 09 20 20 44 45 3A 09 75    e 0)..;..  DE:.u
0025C0:  70 64 61 74 65 64 20 70 6F 69 6E 74 65 72 0D 0A    pdated pointer..
0025D0:  3B 09 63 61 6C 6C 65 64 20 62 79 3A 20 63 6F 6D    ;.called by: com
0025E0:  6E 64 0D 0A 0D 0A 63 6D 74 65 78 74 3A 09 78 63    nd....cmtext:.xc
0025F0:  68 67 09 09 09 3B 50 75 74 20 74 68 65 20 70 6F    hg...;Put the po
002600:  69 6E 74 65 72 20 74 6F 20 74 68 65 20 64 65 73    inter to the des
002610:  74 20 69 6E 20 48 4C 2E 0D 0A 09 73 68 6C 64 09    t in HL....shld.
002620:  63 6D 70 74 61 62 09 09 3B 53 61 76 65 20 74 68    cmptab..;Save th
002630:  65 20 70 6F 69 6E 74 65 72 2E 0D 0A 09 6D 76 69    e pointer....mvi
002640:  09 62 2C 30 09 09 3B 49 6E 69 74 20 74 68 65 20    .b,0..;Init the 
002650:  63 68 61 72 20 63 6F 75 6E 74 0D 0A 63 6D 74 78    char count..cmtx
002660:  74 31 3A 09 63 61 6C 6C 09 63 6D 67 74 63 68 09    t1:.call.cmgtch.
002670:  09 3B 47 65 74 20 61 20 63 68 61 72 2E 0D 0A 09    .;Get a char....
002680:  6F 72 61 09 61 09 09 3B 54 65 72 6D 69 6E 61 74    ora.a..;Terminat
002690:  6F 72 3F 0D 0A 09 6A 70 09 63 6D 74 78 74 35 09    or?...jp.cmtxt5.
0026A0:  09 3B 4E 6F 2C 20 70 75 74 20 69 6E 20 75 73 65    .;No, put in use
0026B0:  72 20 73 70 61 63 65 2E 0D 0A 09 61 6E 69 09 37    r space....ani.7
0026C0:  46 48 09 09 3B 54 75 72 6E 20 6F 66 66 20 6D 69    FH..;Turn off mi
0026D0:  6E 75 73 20 62 69 74 2E 0D 0A 09 63 70 69 09 65    nus bit....cpi.e
0026E0:  73 63 09 09 3B 41 6E 20 65 73 63 61 70 65 3F 0D    sc..;An escape?.
0026F0:  0A 09 6A 6E 7A 09 63 6D 74 78 74 32 09 09 3B 4E    ..jnz.cmtxt2..;N
002700:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
002710:  02 00 00 00 02 09 4E E5 02 00 C1 02 00 00 00 02    ......N.........
002720:  02 00 C6 02 00 00 00 02 02 00 C2 02 00 00 00 02    ................
002730:  02 00 C7 02 00 00 00 02 02 00 C3 02 00 00 00 02    ................
002740:  02 00 C8 02 00 00 00 02 02 00 C4 02 00 00 00 02    ................
002750:  02 00 C9 02 00 00 00 02 02 00 C5 02 00 00 00 02    ................
002760:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
002770:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
002780:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
002790:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0027A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0027B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0027C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0027D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0027E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0027F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
002800:  73 65 73 20 61 20 6B 65 79 77 6F 72 64 20 66 72    ses a keyword fr
002810:  6F 6D 20 74 68 65 20 74 61 62 6C 65 20 70 6F 69    om the table poi
002820:  6E 74 65 64 0D 0A 3B 09 74 6F 20 69 6E 20 44 45    nted..;.to in DE
002830:  2E 20 20 54 68 65 20 66 6F 72 6D 61 74 20 6F 66    .  The format of
002840:  20 74 68 65 20 74 61 62 6C 65 20 69 73 20 61 73     the table is as
002850:  20 66 6F 6C 6C 6F 77 73 3A 0D 0A 3B 0D 0A 3B 09     follows:..;..;.
002860:  61 64 64 72 3A 09 64 62 09 6E 09 3B 57 68 65 72    addr:.db.n.;Wher
002870:  65 20 6E 20 69 73 20 74 68 65 20 23 20 6F 66 20    e n is the # of 
002880:  65 6E 74 72 69 65 73 20 69 6E 20 74 68 65 20 74    entries in the t
002890:  61 62 6C 65 2E 0D 0A 3B 09 09 64 62 09 6D 09 3B    able...;..db.m.;
0028A0:  4D 20 69 73 20 74 68 65 20 73 69 7A 65 20 6F 66    M is the size of
0028B0:  20 74 68 65 20 6B 65 79 77 6F 72 64 2E 0D 0A 3B     the keyword...;
0028C0:  09 09 64 62 09 27 73 74 72 69 6E 67 24 27 20 3B    ..db.'string$' ;
0028D0:  57 68 65 72 65 20 73 74 72 69 6E 67 20 69 73 20    Where string is 
0028E0:  74 68 65 20 6B 65 79 77 6F 72 64 2E 0D 0A 3B 09    the keyword...;.
0028F0:  09 64 62 09 61 2C 62 09 3B 57 68 65 72 65 20 61    .db.a,b.;Where a
002900:  20 26 20 62 20 61 72 65 20 70 69 65 63 65 73 20     & b are pieces 
002910:  6F 66 20 64 61 74 61 0D 0A 3B 09 09 09 09 3B 74    of data..;....;t
002920:  6F 20 62 65 20 72 65 74 75 72 6E 65 64 2E 20 20    o be returned.  
002930:  28 4D 75 73 74 20 62 65 20 74 77 6F 20 6F 66 20    (Must be two of 
002940:  74 68 65 6D 2E 29 0D 0A 3B 0D 0A 3B 09 54 68 65    them.)..;..;.The
002950:  20 6B 65 79 77 6F 72 64 73 20 6D 75 73 74 20 62     keywords must b
002960:  65 20 69 6E 20 61 6C 70 68 61 62 65 74 69 63 61    e in alphabetica
002970:  6C 20 6F 72 64 65 72 2E 0D 0A 3B 2A 2A 2A 2A 20    l order...;**** 
002980:  4E 6F 74 65 3A 20 20 54 68 65 20 64 61 74 61 20    Note:  The data 
002990:  76 61 6C 75 65 20 61 20 69 73 20 72 65 74 75 72    value a is retur
0029A0:  6E 65 64 20 69 6E 20 72 65 67 69 73 74 65 72 73    ned in registers
0029B0:  20 41 20 61 6E 64 20 45 2E 20 20 54 68 65 0D 0A     A and E.  The..
0029C0:  3B 2A 2A 2A 2A 09 64 61 74 61 20 76 61 6C 75 65    ;****.data value
0029D0:  20 62 20 69 73 20 72 65 74 75 72 6E 65 64 20 69     b is returned i
0029E0:  6E 20 72 65 67 69 73 74 65 72 20 44 2E 20 20 54    n register D.  T
0029F0:  68 69 73 20 61 6C 6C 6F 77 73 20 74 68 65 20 74    his allows the t
002A00:  0A 09 6A 7A 09 63 6D 6B 79 33 34 0D 0A 09 69 6E    ..jz.cmky34...in
002A10:  78 09 68 0D 0A 09 78 63 68 67 0D 0A 09 6D 6F 76    x.h...xchg...mov
002A20:  09 6D 2C 61 09 09 3B 4D 6F 76 65 20 69 74 20 69    .m,a..;Move it i
002A30:  6E 74 6F 20 74 68 65 20 62 75 66 66 65 72 2E 0D    nto the buffer..
002A40:  0A 09 69 6E 78 09 68 0D 0A 09 78 63 68 67 0D 0A    ..inx.h...xchg..
002A50:  09 6C 64 61 09 63 6D 63 63 6E 74 09 09 3B 49 6E    .lda.cmccnt..;In
002A60:  63 72 65 6D 65 6E 74 20 74 68 65 20 63 68 61 72    crement the char
002A70:  20 63 6F 75 6E 74 2E 0D 0A 09 69 6E 72 09 61 0D     count....inr.a.
002A80:  0A 09 73 74 61 09 63 6D 63 63 6E 74 0D 0A 09 6A    ..sta.cmccnt...j
002A90:  6D 70 09 63 6D 6B 79 33 33 0D 0A 0D 0A 63 6D 6B    mp.cmky33....cmk
002AA0:  79 33 34 3A 09 6C 64 61 09 63 6D 63 63 6E 74 09    y34:.lda.cmccnt.
002AB0:  09 3B 47 65 74 20 74 68 65 20 63 68 61 72 61 63    .;Get the charac
002AC0:  74 65 72 20 63 6F 75 6E 74 2E 0D 0A 09 69 6E 72    ter count....inr
002AD0:  09 61 09 09 3B 49 6E 63 72 65 6D 65 6E 74 20 61    .a..;Increment a
002AE0:  6E 64 20 73 61 76 65 20 69 74 2E 0D 0A 09 73 74    nd save it....st
002AF0:  61 09 63 6D 63 63 6E 74 0D 0A 09 78 63 68 67 09    a.cmccnt...xchg.
002B00:  09 09 3B 50 75 74 20 74 68 65 20 63 6F 6D 6D 61    ..;Put the comma
002B10:  6E 64 20 62 75 66 66 65 72 20 70 6F 69 6E 74 65    nd buffer pointe
002B20:  72 20 69 6E 20 48 4C 2E 0D 0A 09 6D 76 69 09 61    r in HL....mvi.a
002B30:  2C 27 20 27 09 09 3B 47 65 74 20 61 20 62 6C 61    ,' '..;Get a bla
002B40:  6E 6B 2E 0D 0A 09 6D 6F 76 09 6D 2C 61 09 09 3B    nk....mov.m,a..;
002B50:  50 75 74 20 69 74 20 69 6E 20 74 68 65 20 63 6F    Put it in the co
002B60:  6D 6D 61 6E 64 20 62 75 66 66 65 72 2E 0D 0A 09    mmand buffer....
002B70:  69 6E 78 09 68 09 09 3B 49 6E 63 72 65 6D 65 6E    inx.h..;Incremen
002B80:  74 20 74 68 65 20 70 6F 69 6E 74 65 72 0D 0A 09    t the pointer...
002B90:  73 68 6C 64 09 63 6D 63 70 74 72 09 09 3B 53 61    shld.cmcptr..;Sa
002BA0:  76 65 20 74 68 65 20 75 70 64 61 74 65 64 20 70    ve the updated p
002BB0:  6F 69 6E 74 65 72 2E 0D 0A 09 73 68 6C 64 09 63    ointer....shld.c
002BC0:  6D 64 70 74 72 0D 0A 09 70 6F 70 09 68 0D 0A 09    mdptr...pop.h...
002BD0:  70 75 73 68 09 68 0D 0A 09 78 63 68 67 0D 0A 09    push.h...xchg...
002BE0:  63 61 6C 6C 09 70 72 74 73 74 72 09 09 3B 50 72    call.prtstr..;Pr
002BF0:  69 6E 74 20 74 68 65 20 72 65 73 74 20 6F 66 20    int the rest of 
002C00:  77 6F 20 64 61 74 61 0D 0A 3B 09 62 79 74 65 73    wo data..;.bytes
002C10:  20 74 6F 20 62 65 20 73 74 6F 72 65 64 20 61 73     to be stored as
002C20:  3A 0D 0A 3B 09 09 64 77 09 78 78 78 0D 0A 3B 09    :..;..dw.xxx..;.
002C30:  61 6E 64 20 72 65 73 75 6C 74 20 69 6E 20 61 20    and result in a 
002C40:  63 6F 72 72 65 63 74 6C 79 20 66 6F 72 6D 61 74    correctly format
002C50:  74 65 64 20 31 36 2D 62 69 74 20 76 61 6C 75 65    ted 16-bit value
002C60:  20 69 6E 20 72 65 67 69 73 74 65 72 20 70 61 69     in register pai
002C70:  72 0D 0A 3B 09 44 45 2E 0D 0A 3B 09 63 61 6C 6C    r..;.DE...;.call
002C80:  65 64 20 62 79 3A 20 63 6F 6D 6E 64 0D 0A 0D 0A    ed by: comnd....
002C90:  63 6D 6B 65 79 77 3A 09 73 68 6C 64 09 63 6D 68    cmkeyw:.shld.cmh
002CA0:  6C 70 09 09 3B 53 61 76 65 20 74 68 65 20 68 65    lp..;Save the he
002CB0:  6C 70 2E 0D 0A 09 78 63 68 67 09 09 09 3B 47 65    lp....xchg...;Ge
002CC0:  74 20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66    t the address of
002CD0:  20 74 68 65 20 74 61 62 6C 65 2E 0D 0A 09 73 68     the table....sh
002CE0:  6C 64 09 63 6D 70 74 61 62 09 09 3B 53 61 76 65    ld.cmptab..;Save
002CF0:  20 74 68 65 20 62 65 67 69 6E 6E 69 6E 67 20 6F     the beginning o
002D00:  66 20 6B 65 79 77 6F 72 64 20 74 61 62 20 66 6F    f keyword tab fo
002D10:  72 20 27 3F 27 2E 0D 0A 09 6D 6F 76 09 62 2C 6D    r '?'....mov.b,m
002D20:  09 09 3B 47 65 74 20 74 68 65 20 6E 75 6D 62 65    ..;Get the numbe
002D30:  72 20 6F 66 20 65 6E 74 72 69 65 73 20 69 6E 20    r of entries in 
002D40:  74 68 65 20 74 61 62 6C 65 2E 0D 0A 09 69 6E 78    the table....inx
002D50:  09 68 0D 0A 09 73 68 6C 64 09 63 6D 6B 70 74 72    .h...shld.cmkptr
002D60:  0D 0A 09 6C 68 6C 64 09 63 6D 64 70 74 72 09 09    ...lhld.cmdptr..
002D70:  3B 53 61 76 65 20 74 68 65 20 63 6F 6D 6D 61 6E    ;Save the comman
002D80:  64 20 70 6F 69 6E 74 65 72 2E 0D 0A 09 73 68 6C    d pointer....shl
002D90:  64 09 63 6D 73 70 74 72 0D 0A 63 6D 6B 65 79 32    d.cmsptr..cmkey2
002DA0:  3A 20 6D 6F 76 09 61 2C 62 09 09 3B 47 65 74 20    : mov.a,b..;Get 
002DB0:  74 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 65 6E    the number of en
002DC0:  74 72 69 65 73 20 6C 65 66 74 2E 0D 0A 09 6F 72    tries left....or
002DD0:  61 09 61 09 09 3B 41 6E 79 20 6C 65 66 74 3F 0D    a.a..;Any left?.
002DE0:  0A 09 72 7A 09 09 09 3B 49 66 20 6E 6F 74 20 77    ..rz...;If not w
002DF0:  65 20 66 61 69 6C 65 64 2E 0D 0A 09 6C 68 6C 64    e failed....lhld
002E00:  74 68 65 20 6B 65 79 77 6F 72 64 2E 0D 0A 09 6D    the keyword....m
002E10:  76 69 09 63 2C 63 6F 6E 6F 75 74 0D 0A 09 6D 76    vi.c,conout...mv
002E20:  69 09 65 2C 27 20 27 0D 0A 09 63 61 6C 6C 09 62    i.e,' '...call.b
002E30:  64 6F 73 09 09 3B 50 72 69 6E 74 20 61 20 62 6C    dos..;Print a bl
002E40:  61 6E 6B 2E 0D 0A 09 70 6F 70 09 68 0D 0A 09 70    ank....pop.h...p
002E50:  6F 70 09 62 0D 0A 09 70 6F 70 09 64 0D 0A 09 6A    op.b...pop.d...j
002E60:  6D 70 09 63 6D 6B 79 33 37 0D 0A 0D 0A 63 6D 6B    mp.cmky37....cmk
002E70:  79 33 35 3A 09 70 75 73 68 09 68 0D 0A 09 70 75    y35:.push.h...pu
002E80:  73 68 09 64 0D 0A 09 63 61 6C 6C 09 63 6D 61 6D    sh.d...call.cmam
002E90:  62 67 0D 0A 09 20 6A 6D 70 09 63 6D 6B 79 33 36    bg... jmp.cmky36
002EA0:  0D 0A 09 6C 78 69 09 64 2C 63 6D 65 72 30 31 0D    ...lxi.d,cmer01.
002EB0:  0A 09 63 61 6C 6C 09 70 72 74 73 74 72 09 09 3B    ..call.prtstr..;
002EC0:  53 61 79 20 69 74 73 20 61 6D 62 69 67 75 6F 75    Say its ambiguou
002ED0:  73 2E 0D 0A 09 6A 6D 70 09 70 72 73 65 72 72 09    s....jmp.prserr.
002EE0:  09 3B 47 69 76 65 20 75 70 2E 0D 0A 0D 0A 63 6D    .;Give up.....cm
002EF0:  6B 79 33 36 3A 09 70 6F 70 09 64 0D 0A 09 70 6F    ky36:.pop.d...po
002F00:  70 09 68 0D 0A 63 6D 6B 79 33 37 3A 09 69 6E 72    p.h..cmky37:.inr
002F10:  09 65 09 09 3B 41 64 64 20 6F 6E 65 20 69 6E 63    .e..;Add one inc
002F20:  61 73 65 20 69 74 20 69 73 20 6E 65 67 61 74 69    ase it is negati
002F30:  76 65 2E 0D 0A 09 6D 76 69 09 64 2C 30 0D 0A 09    ve....mvi.d,0...
002F40:  64 61 64 09 64 09 09 3B 49 6E 63 72 65 6D 65 6E    dad.d..;Incremen
002F50:  74 20 70 61 73 74 20 74 68 65 20 6B 65 79 77 6F    t past the keywo
002F60:  72 64 2E 0D 0A 09 69 6E 78 09 68 09 09 3B 50 61    rd....inx.h..;Pa
002F70:  73 74 20 74 68 65 20 24 2E 0D 0A 09 6D 6F 76 09    st the $....mov.
002F80:  65 2C 6D 09 09 3B 47 65 74 20 74 68 65 20 64 61    e,m..;Get the da
002F90:  74 61 2E 0D 0A 09 69 6E 78 09 68 0D 0A 09 6D 6F    ta....inx.h...mo
002FA0:  76 09 64 2C 6D 0D 0A 09 6D 6F 76 09 61 2C 65 0D    v.d,m...mov.a,e.
002FB0:  0A 09 6A 6D 70 09 72 73 6B 70 0D 0A 0D 0A 63 6D    ..jmp.rskp....cm
002FC0:  6B 65 79 34 3A 09 63 70 69 09 27 61 27 09 09 3B    key4:.cpi.'a'..;
002FD0:  49 73 20 69 74 20 6C 65 73 73 20 74 68 61 6E 20    Is it less than 
002FE0:  61 3F 0D 0A 09 6A 6D 09 63 6D 6B 79 34 31 09 09    a?...jm.cmky41..
002FF0:  3B 49 66 20 73 6F 20 64 6F 6E 27 74 20 63 61 70    ;If so don't cap
003000:  09 63 6D 6B 70 74 72 0D 0A 09 6D 6F 76 09 65 2C    .cmkptr...mov.e,
003010:  6D 09 09 3B 47 65 74 20 74 68 65 20 6C 65 6E 67    m..;Get the leng
003020:  74 68 20 6F 66 20 74 68 65 20 6B 65 79 77 6F 72    th of the keywor
003030:  64 2E 0D 0A 09 69 6E 78 09 68 0D 0A 63 6D 6B 65    d....inx.h..cmke
003040:  79 33 3A 09 64 63 72 09 65 09 09 3B 44 65 63 72    y3:.dcr.e..;Decr
003050:  65 6D 65 6E 74 20 74 68 65 20 6E 75 6D 62 65 72    ement the number
003060:  20 6F 66 20 63 68 61 72 73 20 6C 65 66 74 2E 0D     of chars left..
003070:  0A 09 6D 6F 76 09 61 2C 65 0D 0A 09 63 70 69 09    ..mov.a,e...cpi.
003080:  30 46 46 48 09 09 3B 48 61 76 65 20 77 65 20 70    0FFH..;Have we p
003090:  61 73 73 65 64 20 74 68 65 20 65 6E 64 3F 0D 0A    assed the end?..
0030A0:  09 6A 6D 09 63 6D 6B 65 79 35 09 09 3B 49 66 20    .jm.cmkey5..;If 
0030B0:  73 6F 20 67 6F 20 74 6F 20 74 68 65 20 6E 65 78    so go to the nex
0030C0:  74 2E 0D 0A 09 63 61 6C 6C 09 63 6D 67 74 63 68    t....call.cmgtch
0030D0:  09 09 3B 47 65 74 20 61 20 63 68 61 72 2E 0D 0A    ..;Get a char...
0030E0:  09 6F 72 61 09 61 09 09 3B 49 73 20 69 74 20 61    .ora.a..;Is it a
0030F0:  20 74 65 72 6D 69 6E 61 74 6F 72 3F 0D 0A 09 6A     terminator?...j
003100:  70 09 63 6D 6B 65 79 34 09 09 3B 49 66 20 70 6F    p.cmkey4..;If po
003110:  73 69 74 69 76 65 2C 20 69 74 20 69 73 20 6E 6F    sitive, it is no
003120:  74 2E 0D 0A 09 61 6E 69 09 37 46 48 09 09 3B 54    t....ani.7FH..;T
003130:  75 72 6E 20 6F 66 66 20 74 68 65 20 6D 69 6E 75    urn off the minu
003140:  73 20 62 69 74 2E 0D 0A 09 63 70 69 09 27 3F 27    s bit....cpi.'?'
003150:  0D 0A 09 6A 6E 7A 09 63 6D 6B 79 33 31 0D 0A 09    ...jnz.cmky31...
003160:  78 72 61 09 61 0D 0A 09 73 74 61 09 63 6D 61 66    xra.a...sta.cmaf
003170:  6C 67 09 09 3B 54 75 72 6E 20 6F 66 66 20 74 68    lg..;Turn off th
003180:  65 20 61 63 74 69 6F 6E 20 66 6C 61 67 2E 0D 0A    e action flag...
003190:  09 6C 78 69 09 68 2C 63 6D 63 63 6E 74 09 3B 44    .lxi.h,cmccnt.;D
0031A0:  65 63 72 65 6D 65 6E 74 20 74 68 65 20 63 68 61    ecrement the cha
0031B0:  72 20 63 6F 75 6E 74 2E 0D 0A 09 64 63 72 09 6D    r count....dcr.m
0031C0:  0D 0A 3B 2A 20 4D 75 73 74 20 67 6F 20 74 68 72    ..;* Must go thr
0031D0:  6F 75 67 68 20 74 68 65 20 6B 65 79 77 6F 72 64    ough the keyword
0031E0:  20 74 61 62 6C 65 20 61 6E 64 20 70 72 69 6E 74     table and print
0031F0:  20 74 68 65 6D 2E 0D 0A 09 6C 68 6C 64 09 63 6D     them....lhld.cm
003200:  69 74 61 6C 69 7A 65 20 69 74 2E 0D 0A 09 63 70    italize it....cp
003210:  69 09 27 7A 27 2B 31 09 09 3B 49 73 20 69 74 20    i.'z'+1..;Is it 
003220:  6D 6F 72 65 20 74 68 61 6E 20 7A 3F 0D 0A 09 6A    more than z?...j
003230:  70 09 63 6D 6B 79 34 31 09 09 3B 49 66 20 73 6F    p.cmky41..;If so
003240:  20 64 6F 6E 27 74 20 63 61 70 69 74 61 6C 69 7A     don't capitaliz
003250:  65 20 69 74 2E 0D 0A 09 61 6E 69 09 31 33 37 4F    e it....ani.137O
003260:  09 09 3B 43 61 70 69 74 61 6C 69 7A 65 20 69 74    ..;Capitalize it
003270:  2E 0D 0A 63 6D 6B 79 34 31 3A 09 6D 6F 76 09 64    ...cmky41:.mov.d
003280:  2C 6D 09 09 3B 47 65 74 20 74 68 65 20 6E 65 78    ,m..;Get the nex
003290:  74 20 63 68 61 72 20 6F 66 20 74 68 65 20 6B 65    t char of the ke
0032A0:  79 77 6F 72 64 2E 0D 0A 09 69 6E 78 09 68 0D 0A    yword....inx.h..
0032B0:  09 63 6D 70 09 64 09 09 3B 4D 61 74 63 68 3F 0D    .cmp.d..;Match?.
0032C0:  0A 09 6A 7A 09 63 6D 6B 65 79 33 09 09 3B 49 66    ..jz.cmkey3..;If
0032D0:  20 73 6F 20 67 65 74 20 74 68 65 20 6E 65 78 74     so get the next
0032E0:  20 6C 65 74 74 65 72 2E 0D 0A 0D 0A 63 6D 6B 65     letter.....cmke
0032F0:  79 35 3A 09 6D 76 69 09 64 2C 30 0D 0A 09 6D 6F    y5:.mvi.d,0...mo
003300:  76 09 61 2C 65 09 09 3B 47 65 74 20 74 68 65 20    v.a,e..;Get the 
003310:  6E 75 6D 62 65 72 20 6F 66 20 63 68 61 72 73 20    number of chars 
003320:  6C 65 66 74 2E 0D 0A 09 6F 72 61 09 61 09 09 3B    left....ora.a..;
003330:  49 73 20 69 74 20 6E 65 67 61 74 69 76 65 3F 0D    Is it negative?.
003340:  0A 09 6A 70 09 63 6D 6B 79 35 31 0D 0A 09 6D 76    ..jp.cmky51...mv
003350:  69 09 64 2C 30 46 46 48 09 09 3B 49 66 20 73 6F    i.d,0FFH..;If so
003360:  2C 20 73 69 67 6E 20 65 78 74 65 6E 64 2E 0D 0A    , sign extend...
003370:  63 6D 6B 79 35 31 3A 09 64 61 64 09 64 09 09 3B    cmky51:.dad.d..;
003380:  49 6E 63 72 65 6D 65 6E 74 20 70 61 73 74 20 74    Increment past t
003390:  68 65 20 6B 65 79 77 6F 72 64 2E 0D 0A 09 6C 78    he keyword....lx
0033A0:  69 09 64 2C 30 30 30 33 48 09 09 3B 50 6C 75 73    i.d,0003H..;Plus
0033B0:  20 74 68 65 20 24 20 61 6E 64 20 64 61 74 61 2E     the $ and data.
0033C0:  0D 0A 09 64 61 64 09 64 0D 0A 09 73 68 6C 64 09    ...dad.d...shld.
0033D0:  63 6D 6B 70 74 72 0D 0A 09 64 63 72 09 62 09 09    cmkptr...dcr.b..
0033E0:  3B 44 65 63 72 65 6D 65 6E 74 20 74 68 65 20 6E    ;Decrement the n
0033F0:  75 6D 62 65 72 20 6F 66 20 65 6E 74 72 69 65 73    umber of entries
003400:  68 6C 70 09 09 3B 46 6F 72 20 6E 6F 77 20 70 72    hlp..;For now pr
003410:  69 6E 74 20 74 68 65 20 68 65 6C 70 20 74 65 78    int the help tex
003420:  74 2E 0D 0A 09 78 63 68 67 0D 0A 09 63 61 6C 6C    t....xchg...call
003430:  09 70 72 74 73 74 72 0D 0A 09 63 61 6C 6C 09 70    .prtstr...call.p
003440:  72 63 72 6C 66 09 09 3B 50 72 69 6E 74 20 61 20    rcrlf..;Print a 
003450:  63 72 6C 66 20 20 5B 54 6F 61 64 20 48 61 6C 6C    crlf  [Toad Hall
003460:  5D 0D 0A 09 63 61 6C 6C 09 70 72 70 72 6D 70 09    ]...call.prprmp.
003470:  09 3B 52 65 70 72 69 6E 74 20 74 68 65 20 70 72    .;Reprint the pr
003480:  6F 6D 70 74 20 20 5B 54 6F 61 64 20 48 61 6C 6C    ompt  [Toad Hall
003490:  5D 0D 0A 09 6C 68 6C 64 09 63 6D 64 70 74 72 09    ]...lhld.cmdptr.
0034A0:  09 3B 47 65 74 20 74 68 65 20 70 6F 69 6E 74 65    .;Get the pointe
0034B0:  72 20 69 6E 74 6F 20 74 68 65 20 62 75 66 66 65    r into the buffe
0034C0:  72 2E 0D 0A 09 6D 76 69 09 61 2C 27 24 27 09 09    r....mvi.a,'$'..
0034D0:  3B 50 75 74 20 61 20 24 20 74 68 65 72 65 20 66    ;Put a $ there f
0034E0:  6F 72 20 70 72 69 6E 74 69 6E 67 2E 0D 0A 09 6D    or printing....m
0034F0:  6F 76 09 6D 2C 61 0D 0A 09 6C 68 6C 64 09 63 6D    ov.m,a...lhld.cm
003500:  63 70 74 72 0D 0A 09 64 63 78 09 68 09 09 3B 44    cptr...dcx.h..;D
003510:  65 63 72 65 6D 65 6E 74 20 61 6E 64 20 73 61 76    ecrement and sav
003520:  65 20 74 68 65 20 62 75 66 66 65 72 20 70 6F 69    e the buffer poi
003530:  6E 74 65 72 2E 0D 0A 09 73 68 6C 64 09 63 6D 63    nter....shld.cmc
003540:  70 74 72 0D 0A 09 6C 78 69 09 64 2C 63 6D 64 62    ptr...lxi.d,cmdb
003550:  75 66 0D 0A 09 63 61 6C 6C 09 70 72 74 73 74 72    uf...call.prtstr
003560:  0D 0A 09 6A 6D 70 09 72 65 70 61 72 73 09 09 3B    ...jmp.repars..;
003570:  52 65 70 61 72 73 65 20 65 76 65 72 79 74 68 69    Reparse everythi
003580:  6E 67 2E 0D 0A 0D 0A 63 6D 6B 79 33 31 3A 09 63    ng.....cmky31:.c
003590:  70 69 09 65 73 63 09 09 3B 49 73 20 69 74 20 61    pi.esc..;Is it a
0035A0:  6E 20 65 73 63 61 70 65 3F 0D 0A 09 6A 6E 7A 09    n escape?...jnz.
0035B0:  63 6D 6B 79 33 35 0D 0A 09 78 72 61 09 61 0D 0A    cmky35...xra.a..
0035C0:  09 73 74 61 09 63 6D 61 66 6C 67 09 09 3B 54 75    .sta.cmaflg..;Tu
0035D0:  72 6E 20 6F 66 66 20 74 68 65 20 61 63 74 69 6F    rn off the actio
0035E0:  6E 20 66 6C 61 67 2E 0D 0A 09 70 75 73 68 09 64    n flag....push.d
0035F0:  0D 0A 09 70 75 73 68 09 62 0D 0A 09 70 75 73 68    ...push.b...push
003600:  20 6C 65 66 74 2E 0D 0A 09 6C 68 6C 64 09 63 6D     left....lhld.cm
003610:  73 70 74 72 09 09 3B 47 65 74 20 74 68 65 20 6F    sptr..;Get the o
003620:  6C 64 20 63 6D 64 70 74 72 2E 0D 0A 09 73 68 6C    ld cmdptr....shl
003630:  64 09 63 6D 64 70 74 72 09 09 3B 52 65 73 74 6F    d.cmdptr..;Resto
003640:  72 65 20 69 74 2E 0D 0A 3B 2A 20 63 68 65 63 6B    re it...;* check
003650:  20 73 6F 20 77 65 20 64 6F 6E 27 74 20 70 61 73     so we don't pas
003660:  73 20 69 74 2E 0D 0A 09 6A 6D 70 09 63 6D 6B 65    s it....jmp.cmke
003670:  79 32 09 09 3B 47 6F 20 63 68 65 63 6B 20 74 68    y2..;Go check th
003680:  65 20 6E 65 78 74 20 6B 65 79 77 6F 72 64 2E 0D    e next keyword..
003690:  0A 3B 0C 0D 0A 3B 09 54 65 73 74 20 6B 65 79 77    .;...;.Test keyw
0036A0:  6F 72 64 20 66 6F 72 20 61 6D 62 69 67 75 69 74    ord for ambiguit
0036B0:  79 2E 0D 0A 3B 09 72 65 74 75 72 6E 73 3A 20 6E    y...;.returns: n
0036C0:  6F 6E 73 6B 69 70 20 69 66 20 61 6D 62 69 67 75    onskip if ambigu
0036D0:  6F 75 73 2C 20 73 6B 69 70 20 69 66 20 4F 4B 2E    ous, skip if OK.
0036E0:  0D 0A 3B 09 63 61 6C 6C 65 64 20 62 79 3A 20 63    ..;.called by: c
0036F0:  6D 6B 65 79 77 0D 0A 0D 0A 63 6D 61 6D 62 67 3A    mkeyw....cmambg:
003700:  09 64 63 72 09 62 09 09 3B 44 65 63 72 65 6D 65    .dcr.b..;Decreme
003710:  6E 74 20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66    nt the number of
003720:  20 65 6E 74 72 69 65 73 20 6C 65 66 74 2E 0D 0A     entries left...
003730:  09 72 6D 09 09 09 3B 49 66 20 6E 6F 6E 65 20 6C    .rm...;If none l
003740:  65 66 74 20 74 68 65 6E 20 69 74 20 69 73 20 6E    eft then it is n
003750:  6F 74 20 61 6D 62 69 67 75 6F 75 73 2E 0D 0A 09    ot ambiguous....
003760:  69 6E 72 09 65 09 09 3B 54 68 69 73 20 69 73 20    inr.e..;This is 
003770:  6F 66 66 20 62 79 20 6F 6E 65 3B 61 64 6A 75 73    off by one;adjus
003780:  74 2E 0D 0A 09 6D 6F 76 09 63 2C 65 09 09 3B 53    t....mov.c,e..;S
003790:  61 76 65 20 74 68 65 20 63 68 61 72 20 63 6F 75    ave the char cou
0037A0:  6E 74 2E 0D 0A 09 6D 6F 76 09 61 2C 65 0D 0A 09    nt....mov.a,e...
0037B0:  6F 72 61 09 61 09 09 3B 41 6E 79 20 63 68 61 72    ora.a..;Any char
0037C0:  73 20 6C 65 66 74 3F 0D 0A 09 72 7A 09 09 09 3B    s left?...rz...;
0037D0:  4E 6F 2C 20 69 74 20 63 61 6E 27 74 20 62 65 20    No, it can't be 
0037E0:  61 6D 62 69 67 75 6F 75 73 2E 0D 0A 09 6D 76 69    ambiguous....mvi
0037F0:  09 64 2C 30 0D 0A 09 64 61 64 09 64 09 09 3B 49    .d,0...dad.d..;I
003800:  09 68 0D 0A 09 63 61 6C 6C 09 63 6D 61 6D 62 67    .h...call.cmambg
003810:  0D 0A 09 20 6A 6D 70 09 63 6D 6B 79 33 32 09 09    ... jmp.cmky32..
003820:  3B 4E 6F 74 20 61 6D 62 69 67 75 6F 75 73 2E 0D    ;Not ambiguous..
003830:  0A 09 6D 76 69 09 63 2C 63 6F 6E 6F 75 74 0D 0A    ..mvi.c,conout..
003840:  09 6D 76 69 09 65 2C 62 65 6C 6C 0D 0A 09 63 61    .mvi.e,bell...ca
003850:  6C 6C 09 62 64 6F 73 09 09 3B 52 69 6E 67 20 74    ll.bdos..;Ring t
003860:  68 65 20 62 65 6C 6C 2E 0D 0A 09 6C 68 6C 64 09    he bell....lhld.
003870:  63 6D 63 70 74 72 09 09 3B 4D 6F 76 65 20 74 68    cmcptr..;Move th
003880:  65 20 70 6F 69 6E 74 65 72 20 74 6F 20 62 65 66    e pointer to bef
003890:  6F 72 65 20 74 68 65 20 65 73 63 61 70 65 2E 0D    ore the escape..
0038A0:  0A 09 64 63 78 09 68 0D 0A 09 73 68 6C 64 09 63    ..dcx.h...shld.c
0038B0:  6D 63 70 74 72 0D 0A 09 73 68 6C 64 09 63 6D 64    mcptr...shld.cmd
0038C0:  70 74 72 0D 0A 09 6C 78 69 09 68 2C 63 6D 63 63    ptr...lxi.h,cmcc
0038D0:  6E 74 09 3B 47 65 74 20 74 68 65 20 63 68 61 72    nt.;Get the char
0038E0:  20 63 6F 75 6E 74 2E 0D 0A 09 64 63 72 09 6D 09     count....dcr.m.
0038F0:  09 3B 44 65 63 72 65 6D 65 6E 74 20 69 74 20 62    .;Decrement it b
003900:  79 20 6F 6E 65 2E 0D 0A 09 70 6F 70 09 68 0D 0A    y one....pop.h..
003910:  09 70 6F 70 09 62 0D 0A 09 70 6F 70 09 64 0D 0A    .pop.b...pop.d..
003920:  09 69 6E 72 09 65 09 09 3B 49 6E 63 72 65 6D 65    .inr.e..;Increme
003930:  6E 74 20 74 68 65 20 6C 65 66 74 20 74 6F 20 70    nt the left to p
003940:  61 72 73 65 20 63 68 61 72 20 63 6F 75 6E 74 2E    arse char count.
003950:  0D 0A 09 6A 6D 70 09 63 6D 6B 65 79 33 0D 0A 0D    ...jmp.cmkey3...
003960:  0A 63 6D 6B 79 33 32 3A 09 6C 68 6C 64 09 63 6D    .cmky32:.lhld.cm
003970:  63 70 74 72 09 09 3B 50 6F 69 6E 74 65 72 20 69    cptr..;Pointer i
003980:  6E 74 6F 20 62 75 66 66 65 72 2E 0D 0A 09 64 63    nto buffer....dc
003990:  78 09 68 09 09 3B 42 61 63 6B 75 70 20 74 6F 20    x.h..;Backup to 
0039A0:  74 68 65 20 65 73 63 61 70 65 2E 0D 0A 09 78 63    the escape....xc
0039B0:  68 67 0D 0A 09 70 6F 70 09 68 0D 0A 09 70 75 73    hg...pop.h...pus
0039C0:  68 09 68 0D 0A 63 6D 6B 79 33 33 3A 09 6D 6F 76    h.h..cmky33:.mov
0039D0:  09 61 2C 6D 09 09 3B 47 65 74 20 74 68 65 20 6E    .a,m..;Get the n
0039E0:  65 78 74 20 63 68 61 72 2E 0D 0A 09 63 70 69 09    ext char....cpi.
0039F0:  27 24 27 09 09 3B 46 69 6E 69 73 68 65 64 3F 0D    '$'..;Finished?.
003A00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
003A10:  03 00 00 00 02 09 4E E5 03 00 C1 02 00 00 00 02    ......N.........
003A20:  03 00 C6 02 00 00 00 02 03 00 C2 02 00 00 00 02    ................
003A30:  03 00 C7 02 00 00 00 02 03 00 C3 02 00 00 00 02    ................
003A40:  03 00 C8 02 00 00 00 02 03 00 C4 02 00 00 00 02    ................
003A50:  03 00 C9 02 00 00 00 02 03 00 C5 02 00 00 00 02    ................
003A60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003A70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003A80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003A90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003B00:  6E 63 72 65 6D 65 6E 74 20 70 61 73 74 20 74 68    ncrement past th
003B10:  65 20 6B 65 79 77 6F 72 64 2E 0D 0A 09 6D 76 69    e keyword....mvi
003B20:  09 65 2C 33 09 09 3B 50 6C 75 73 20 74 68 65 20    .e,3..;Plus the 
003B30:  24 20 61 6E 64 20 64 61 74 61 2E 0D 0A 09 64 61    $ and data....da
003B40:  64 09 64 0D 0A 09 6D 6F 76 09 62 2C 6D 09 09 3B    d.d...mov.b,m..;
003B50:  47 65 74 20 74 68 65 20 6C 65 6E 67 74 68 20 6F    Get the length o
003B60:  66 20 74 68 65 20 6B 65 79 77 6F 72 64 2E 0D 0A    f the keyword...
003B70:  09 69 6E 78 09 68 0D 0A 09 78 63 68 67 0D 0A 09    .inx.h...xchg...
003B80:  6C 68 6C 64 09 63 6D 6B 70 74 72 09 09 3B 47 65    lhld.cmkptr..;Ge
003B90:  74 20 70 6F 69 6E 74 65 72 20 74 6F 20 6B 65 79    t pointer to key
003BA0:  77 6F 72 64 20 65 6E 74 72 79 2E 0D 0A 09 6D 6F    word entry....mo
003BB0:  76 09 61 2C 6D 09 09 3B 47 65 74 20 74 68 65 20    v.a,m..;Get the 
003BC0:  6C 65 6E 67 74 68 20 6F 66 20 74 68 65 20 6B 65    length of the ke
003BD0:  79 77 6F 72 64 2E 0D 0A 09 73 75 62 09 63 09 09    yword....sub.c..
003BE0:  3B 53 75 62 74 72 61 63 74 20 68 6F 77 20 6D 61    ;Subtract how ma
003BF0:  6E 79 20 6C 65 66 74 2E 0D 0A 09 6D 6F 76 09 63    ny left....mov.c
003C00:  2C 61 09 09 3B 53 61 76 65 20 74 68 65 20 63 6F    ,a..;Save the co
003C10:  75 6E 74 2E 0D 0A 09 63 6D 70 09 62 0D 0A 09 6A    unt....cmp.b...j
003C20:  7A 09 63 6D 61 6D 62 30 0D 0A 09 72 70 09 09 09    z.cmamb0...rp...
003C30:  3B 49 66 20 6C 61 72 67 65 72 20 74 68 61 6E 20    ;If larger than 
003C40:  74 68 65 20 6E 65 77 20 77 6F 72 64 20 74 68 65    the new word the
003C50:  6E 20 6E 6F 74 20 61 6D 62 2E 0D 0A 63 6D 61 6D    n not amb...cmam
003C60:  62 30 3A 09 6C 68 6C 64 09 63 6D 73 70 74 72 09    b0:.lhld.cmsptr.
003C70:  09 3B 47 65 74 20 74 68 65 20 70 6F 69 6E 74 65    .;Get the pointe
003C80:  72 20 74 6F 20 77 68 61 74 20 70 61 72 73 65 64    r to what parsed
003C90:  2E 0D 0A 63 6D 61 6D 62 31 3A 09 64 63 72 09 63    ...cmamb1:.dcr.c
003CA0:  09 09 3B 44 65 63 72 65 6D 65 6E 74 20 74 68 65    ..;Decrement the
003CB0:  20 63 6F 75 6E 74 2E 0D 0A 09 6A 6D 09 72 73 6B     count....jm.rsk
003CC0:  70 09 09 3B 49 66 20 77 65 20 61 72 65 20 64 6F    p..;If we are do
003CD0:  6E 65 20 74 68 65 6E 20 69 74 20 69 73 20 61 6D    ne then it is am
003CE0:  62 69 67 75 6F 75 73 2E 0D 0A 09 78 63 68 67 09    biguous....xchg.
003CF0:  09 09 3B 45 78 63 68 61 6E 67 65 20 74 68 65 20    ..;Exchange the 
003D00:  63 3A 09 6C 68 6C 64 09 63 6D 66 63 62 32 09 09    c:.lhld.cmfcb2..
003D10:  3B 46 69 6C 6C 20 74 68 65 20 72 65 73 74 20 77    ;Fill the rest w
003D20:  69 74 68 20 43 50 2F 4D 20 77 69 6C 64 63 61 72    ith CP/M wildcar
003D30:  64 73 2E 0D 0A 63 6D 66 72 63 31 3A 09 63 70 69    ds...cmfrc1:.cpi
003D40:  09 31 31 09 09 3B 44 6F 6E 65 3F 0D 0A 09 6A 70    .11..;Done?...jp
003D50:  09 63 6D 66 72 63 32 09 09 3B 59 65 73 2E 0D 0A    .cmfrc2..;Yes...
003D60:  09 6D 76 69 09 6D 2C 27 3F 27 0D 0A 09 69 6E 78    .mvi.m,'?'...inx
003D70:  09 68 0D 0A 09 69 6E 72 09 61 0D 0A 09 6A 6D 70    .h...inr.a...jmp
003D80:  09 63 6D 66 72 63 31 0D 0A 0D 0A 63 6D 66 72 63    .cmfrc1....cmfrc
003D90:  32 3A 09 6D 76 69 09 63 2C 73 66 69 72 73 74 09    2:.mvi.c,sfirst.
003DA0:  3B 46 69 6E 64 20 66 69 72 73 74 20 6D 61 74 63    ;Find first matc
003DB0:  68 69 6E 67 20 66 69 6C 65 3F 0D 0A 09 6C 68 6C    hing file?...lhl
003DC0:  64 09 63 6D 66 63 62 0D 0A 09 78 63 68 67 0D 0A    d.cmfcb...xchg..
003DD0:  09 63 61 6C 6C 09 62 64 6F 73 0D 0A 09 63 70 69    .call.bdos...cpi
003DE0:  09 30 46 46 48 0D 0A 09 6A 7A 09 63 6D 66 72 63    .0FFH...jz.cmfrc
003DF0:  39 09 09 3B 4E 6F 2C 20 6C 6F 73 65 2E 0D 0A 09    9..;No, lose....
003E00:  6C 78 69 09 68 2C 66 63 62 62 6C 6B 09 3B 43 6F    lxi.h,fcbblk.;Co
003E10:  70 79 20 66 69 72 73 74 20 66 69 6C 65 20 73 70    py first file sp
003E20:  65 63 2E 0D 0A 09 63 61 6C 6C 09 66 73 70 63 6F    ec....call.fspco
003E30:  70 0D 0A 09 6C 78 69 09 68 2C 66 63 62 62 6C 6B    p...lxi.h,fcbblk
003E40:  2B 31 30 48 09 3B 47 65 74 20 61 6E 6F 74 68 65    +10H.;Get anothe
003E50:  72 20 63 6F 70 79 20 28 69 6E 20 63 61 73 65 20    r copy (in case 
003E60:  6E 6F 74 20 61 6D 62 69 67 75 6F 75 73 29 2E 0D    not ambiguous)..
003E70:  0A 09 63 61 6C 6C 09 66 73 70 63 6F 70 0D 0A 09    ..call.fspcop...
003E80:  6D 76 69 09 63 2C 73 6E 65 78 74 09 09 3B 4D 6F    mvi.c,snext..;Mo
003E90:  72 65 20 6D 61 74 63 68 69 6E 67 20 73 70 65 63    re matching spec
003EA0:  73 3F 0D 0A 09 6C 68 6C 64 09 63 6D 66 63 62 0D    s?...lhld.cmfcb.
003EB0:  0A 09 78 63 68 67 0D 0A 09 63 61 6C 6C 09 62 64    ..xchg...call.bd
003EC0:  6F 73 0D 0A 09 63 70 69 09 30 46 46 48 0D 0A 09    os...cpi.0FFH...
003ED0:  6A 7A 09 63 6D 66 72 63 33 09 09 3B 4F 6E 6C 79    jz.cmfrc3..;Only
003EE0:  20 6F 6E 65 2E 0D 0A 09 6C 78 69 09 68 2C 66 63     one....lxi.h,fc
003EF0:  62 62 6C 6B 2B 31 30 48 09 3B 43 6F 70 79 20 73    bblk+10H.;Copy s
003F00:  70 6F 69 6E 74 65 72 73 2E 0D 0A 09 6D 6F 76 09    pointers....mov.
003F10:  62 2C 6D 09 09 3B 47 65 74 20 74 68 65 20 6E 65    b,m..;Get the ne
003F20:  78 74 20 63 68 61 72 20 6F 66 20 74 68 65 20 6B    xt char of the k
003F30:  65 79 77 6F 72 64 0D 0A 09 69 6E 78 09 68 0D 0A    eyword...inx.h..
003F40:  09 78 63 68 67 09 09 09 3B 45 78 63 68 61 6E 67    .xchg...;Exchang
003F50:  65 20 74 68 65 20 70 6F 69 6E 74 65 72 73 2E 0D    e the pointers..
003F60:  0A 09 6D 6F 76 09 61 2C 6D 09 09 3B 47 65 74 20    ..mov.a,m..;Get 
003F70:  74 68 65 20 6E 65 78 74 20 70 61 72 73 65 64 20    the next parsed 
003F80:  63 68 61 72 2E 0D 0A 09 69 6E 78 09 68 0D 0A 09    char....inx.h...
003F90:  63 70 69 09 27 61 27 09 09 3B 49 73 20 69 74 20    cpi.'a'..;Is it 
003FA0:  6C 65 73 73 20 74 68 61 6E 20 61 3F 0D 0A 09 6A    less than a?...j
003FB0:  6D 09 63 6D 61 6D 62 32 09 09 3B 49 66 20 73 6F    m.cmamb2..;If so
003FC0:  20 64 6F 6E 27 74 20 63 61 70 69 74 61 6C 69 7A     don't capitaliz
003FD0:  65 20 69 74 2E 0D 0A 09 63 70 69 09 27 7A 27 2B    e it....cpi.'z'+
003FE0:  31 09 09 3B 49 73 20 69 74 20 6D 6F 72 65 20 74    1..;Is it more t
003FF0:  68 61 6E 20 7A 3F 0D 0A 09 6A 70 09 63 6D 61 6D    han z?...jp.cmam
004000:  62 32 09 09 3B 49 66 20 73 6F 20 64 6F 6E 27 74    b2..;If so don't
004010:  20 63 61 70 69 74 61 6C 69 7A 65 20 69 74 2E 0D     capitalize it..
004020:  0A 09 61 6E 69 09 31 33 37 4F 0D 0A 63 6D 61 6D    ..ani.137O..cmam
004030:  62 32 3A 09 63 6D 70 09 62 09 09 3B 41 72 65 20    b2:.cmp.b..;Are 
004040:  74 68 65 79 20 65 71 75 61 6C 3F 0D 0A 09 72 6E    they equal?...rn
004050:  7A 09 09 09 3B 49 66 20 6E 6F 74 20 74 68 65 6E    z...;If not then
004060:  20 69 74 73 20 6E 6F 74 20 61 6D 62 69 67 75 6F     its not ambiguo
004070:  75 73 2E 0D 0A 09 6A 6D 70 09 63 6D 61 6D 62 31    us....jmp.cmamb1
004080:  09 09 3B 43 68 65 63 6B 20 74 68 65 20 6E 65 78    ..;Check the nex
004090:  74 20 63 68 61 72 2E 0D 0A 3B 0C 0D 0A 3B 09 63    t char...;...;.c
0040A0:  6D 6F 66 69 6C 20 2D 20 70 61 72 73 65 20 6F 75    mofil - parse ou
0040B0:  74 70 75 74 20 66 69 6C 65 73 70 65 63 0D 0A 3B    tput filespec..;
0040C0:  09 63 6D 69 66 69 6C 20 2D 20 70 61 72 73 65 20    .cmifil - parse 
0040D0:  69 6E 70 75 74 20 66 69 6C 65 73 70 65 63 0D 0A    input filespec..
0040E0:  3B 09 68 65 72 65 20 66 72 6F 6D 3A 20 63 6F 6D    ;.here from: com
0040F0:  6E 64 0D 0A 0D 0A 63 6D 6F 66 69 6C 3A 09 6D 76    nd....cmofil:.mv
004100:  65 63 6F 6E 64 20 66 69 6C 65 20 73 70 65 63 2E    econd file spec.
004110:  0D 0A 09 63 61 6C 6C 09 66 73 70 63 6F 70 0D 0A    ...call.fspcop..
004120:  63 6D 66 72 63 33 3A 09 6C 78 69 09 64 2C 66 63    cmfrc3:.lxi.d,fc
004130:  62 62 6C 6B 09 3B 53 74 61 72 74 20 63 6F 6D 70    bblk.;Start comp
004140:  61 72 69 6E 67 20 66 69 6C 65 20 6E 61 6D 65 73    aring file names
004150:  2E 0D 0A 09 6C 78 69 09 68 2C 66 63 62 62 6C 6B    ....lxi.h,fcbblk
004160:  2B 31 30 48 0D 0A 09 6C 64 61 09 74 65 6D 70 31    +10H...lda.temp1
004170:  09 09 3B 42 79 70 61 73 73 20 63 68 61 72 61 63    ..;Bypass charac
004180:  74 65 72 73 20 74 79 70 65 64 2E 0D 0A 09 63 70    ters typed....cp
004190:  69 09 39 09 09 3B 50 61 73 74 20 27 2E 27 3F 0D    i.9..;Past '.'?.
0041A0:  0A 09 6A 6D 09 63 6D 66 72 63 34 09 09 3B 4E 6F    ..jm.cmfrc4..;No
0041B0:  2E 0D 0A 09 64 63 72 09 61 09 09 3B 59 65 73 2C    ....dcr.a..;Yes,
0041C0:  20 64 6F 6E 27 74 20 63 6F 75 6E 74 20 70 6F 69     don't count poi
0041D0:  6E 74 2E 0D 0A 63 6D 66 72 63 34 3A 09 6D 76 69    nt...cmfrc4:.mvi
0041E0:  09 63 2C 30 0D 0A 63 6D 66 72 6C 31 3A 09 63 6D    .c,0..cmfrl1:.cm
0041F0:  70 09 63 09 09 3B 42 79 70 61 73 73 65 64 3F 0D    p.c..;Bypassed?.
004200:  0A 09 6A 7A 09 63 6D 66 72 6C 32 09 09 3B 59 65    ..jz.cmfrl2..;Ye
004210:  73 2E 0D 0A 09 69 6E 78 09 64 0D 0A 09 69 6E 78    s....inx.d...inx
004220:  09 68 0D 0A 09 69 6E 72 09 63 0D 0A 09 6A 6D 70    .h...inr.c...jmp
004230:  09 63 6D 66 72 6C 31 09 09 3B 52 65 70 65 61 74    .cmfrl1..;Repeat
004240:  2E 0D 0A 0D 0A 63 6D 66 72 6C 32 3A 09 6D 6F 76    .....cmfrl2:.mov
004250:  09 61 2C 63 09 09 3B 47 65 74 20 66 69 6C 65 20    .a,c..;Get file 
004260:  6E 61 6D 65 20 63 68 61 72 61 63 74 65 72 73 20    name characters 
004270:  70 72 6F 63 65 73 73 65 64 2E 0D 0A 09 63 70 69    processed....cpi
004280:  09 31 31 09 09 3B 41 6C 6C 20 64 6F 6E 65 3F 0D    .11..;All done?.
004290:  0A 09 6A 7A 09 63 6D 66 72 63 35 09 09 3B 59 65    ..jz.cmfrc5..;Ye
0042A0:  73 2E 0D 0A 09 63 70 69 09 38 09 09 3B 45 6E 64    s....cpi.8..;End
0042B0:  20 6F 66 20 66 69 6C 65 20 6E 61 6D 65 3F 0D 0A     of file name?..
0042C0:  09 6A 6E 7A 09 63 6D 66 72 6C 33 09 09 3B 4E 6F    .jnz.cmfrl3..;No
0042D0:  2E 0D 0A 09 6C 64 61 09 74 65 6D 70 31 09 09 3B    ....lda.temp1..;
0042E0:  45 78 61 63 74 6C 79 20 61 74 20 70 6F 69 6E 74    Exactly at point
0042F0:  3F 0D 0A 09 63 70 69 09 39 0D 0A 09 6A 7A 09 63    ?...cpi.9...jz.c
004300:  69 09 61 2C 30 09 09 3B 44 6F 6E 27 74 20 61 6C    i.a,0..;Don't al
004310:  6C 6F 77 20 77 69 6C 64 63 61 72 64 73 2E 0D 0A    low wildcards...
004320:  3B 09 6A 6D 70 09 63 6D 69 66 69 6C 09 09 3B 46    ;.jmp.cmifil..;F
004330:  6F 72 20 6E 6F 77 2C 20 74 68 65 20 73 61 6D 65    or now, the same
004340:  20 61 73 20 43 4D 49 46 49 2E 0D 0A 63 6D 69 66     as CMIFI...cmif
004350:  69 6C 3A 09 73 74 61 09 63 6D 66 77 6C 64 09 09    il:.sta.cmfwld..
004360:  3B 53 65 74 20 77 69 6C 64 63 61 72 64 20 66 6C    ;Set wildcard fl
004370:  61 67 0D 0A 09 78 63 68 67 09 09 09 3B 47 65 74    ag...xchg...;Get
004380:  20 74 68 65 20 66 63 62 20 61 64 64 72 65 73 73     the fcb address
004390:  2E 0D 0A 09 73 68 6C 64 09 63 6D 66 63 62 09 09    ....shld.cmfcb..
0043A0:  3B 53 61 76 65 20 69 74 2E 0D 0A 09 6D 76 69 09    ;Save it....mvi.
0043B0:  65 2C 30 09 09 3B 49 6E 69 74 69 61 6C 69 7A 65    e,0..;Initialize
0043C0:  20 63 68 61 72 20 63 6F 75 6E 74 2E 0D 0A 09 6D     char count....m
0043D0:  76 69 09 6D 2C 30 09 09 3B 53 65 74 20 74 68 65    vi.m,0..;Set the
0043E0:  20 64 72 69 76 65 20 74 6F 20 64 65 66 61 75 6C     drive to defaul
0043F0:  74 20 74 6F 20 63 75 72 72 65 6E 74 2E 0D 0A 09    t to current....
004400:  69 6E 78 09 68 0D 0A 09 73 68 6C 64 09 63 6D 66    inx.h...shld.cmf
004410:  63 62 32 0D 0A 09 78 72 61 09 61 09 09 3B 49 6E    cb2...xra.a..;In
004420:  69 74 69 61 6C 69 7A 65 20 63 6F 75 6E 74 65 72    itialize counter
004430:  2E 0D 0A 63 6D 69 66 69 30 3A 09 6D 76 69 09 6D    ...cmifi0:.mvi.m
004440:  2C 27 20 27 09 09 3B 42 6C 61 6E 6B 20 74 68 65    ,' '..;Blank the
004450:  20 46 43 42 2E 0D 0A 09 69 6E 78 09 68 0D 0A 09     FCB....inx.h...
004460:  69 6E 72 09 61 0D 0A 09 63 70 69 09 30 43 48 09    inr.a...cpi.0CH.
004470:  09 3B 54 77 65 6C 76 65 3F 0D 0A 09 6A 6D 09 63    .;Twelve?...jm.c
004480:  6D 69 66 69 30 0D 0A 63 6D 69 66 69 31 3A 09 63    mifi0..cmifi1:.c
004490:  61 6C 6C 09 63 6D 67 74 63 68 09 09 3B 47 65 74    all.cmgtch..;Get
0044A0:  20 61 6E 6F 74 68 65 72 20 63 68 61 72 2E 0D 0A     another char...
0044B0:  09 6F 72 61 09 61 09 09 3B 49 73 20 69 74 20 61    .ora.a..;Is it a
0044C0:  6E 20 61 63 74 69 6F 6E 20 63 68 61 72 61 63 74    n action charact
0044D0:  65 72 3F 0D 0A 09 6A 70 09 63 6D 69 66 69 32 0D    er?...jp.cmifi2.
0044E0:  0A 09 61 6E 69 09 37 46 48 09 09 3B 54 75 72 6E    ..ani.7FH..;Turn
0044F0:  20 6F 66 66 20 74 68 65 20 61 63 74 69 6F 6E 20     off the action 
004500:  6D 66 72 6C 33 09 09 3B 59 65 73 2C 20 64 6F 6E    mfrl3..;Yes, don
004510:  27 74 20 6F 75 74 70 75 74 20 61 20 73 65 63 6F    't output a seco
004520:  6E 64 20 70 6F 69 6E 74 2E 0D 0A 09 6D 76 69 09    nd point....mvi.
004530:  61 2C 27 2E 27 09 09 3B 4F 75 74 70 75 74 20 73    a,'.'..;Output s
004540:  65 70 61 72 61 74 6F 72 2E 0D 0A 09 63 61 6C 6C    eparator....call
004550:  09 63 6D 66 70 75 74 0D 0A 63 6D 66 72 6C 33 3A    .cmfput..cmfrl3:
004560:  09 6C 64 61 78 09 64 09 09 3B 47 65 74 20 61 20    .ldax.d..;Get a 
004570:  63 68 61 72 61 63 74 65 72 20 66 72 6F 6D 20 66    character from f
004580:  69 72 73 74 20 66 69 6C 65 20 73 70 65 63 2E 0D    irst file spec..
004590:  0A 09 69 6E 78 09 64 0D 0A 09 6D 6F 76 09 62 2C    ..inx.d...mov.b,
0045A0:  6D 09 09 3B 47 65 74 20 66 72 6F 6D 20 73 65 63    m..;Get from sec
0045B0:  6F 6E 64 20 66 69 6C 65 20 73 70 65 63 2E 0D 0A    ond file spec...
0045C0:  09 69 6E 78 09 68 0D 0A 09 63 6D 70 09 62 09 09    .inx.h...cmp.b..
0045D0:  3B 43 6F 6D 70 61 72 65 2E 0D 0A 09 6A 6E 7A 09    ;Compare....jnz.
0045E0:  63 6D 66 72 63 35 09 09 3B 41 6D 62 69 67 75 6F    cmfrc5..;Ambiguo
0045F0:  75 73 2E 0D 0A 09 69 6E 72 09 63 09 09 3B 53 61    us....inr.c..;Sa
004600:  6D 65 2C 20 63 6F 75 6E 74 2E 0D 0A 09 63 70 69    me, count....cpi
004610:  09 27 20 27 09 09 3B 42 6C 61 6E 6B 3F 0D 0A 09    .' '..;Blank?...
004620:  6A 7A 09 63 6D 66 72 6C 32 09 09 3B 59 65 73 2C    jz.cmfrl2..;Yes,
004630:  20 64 6F 6E 27 74 20 6F 75 74 70 75 74 2E 0D 0A     don't output...
004640:  09 63 61 6C 6C 09 63 6D 66 70 75 74 09 09 3B 50    .call.cmfput..;P
004650:  75 74 20 63 68 61 72 61 63 74 65 72 20 69 6E 74    ut character int
004660:  6F 20 62 75 66 66 65 72 2E 0D 0A 09 6A 6D 70 09    o buffer....jmp.
004670:  63 6D 66 72 6C 32 09 09 3B 52 65 70 65 61 74 2E    cmfrl2..;Repeat.
004680:  0D 0A 0D 0A 63 6D 66 72 63 35 3A 09 6D 6F 76 09    ....cmfrc5:.mov.
004690:  61 2C 63 09 09 3B 47 65 74 20 63 6F 75 6E 74 20    a,c..;Get count 
0046A0:  6F 66 20 63 68 61 72 61 63 74 65 72 73 20 70 72    of characters pr
0046B0:  6F 63 65 73 73 65 64 2E 0D 0A 09 73 74 61 09 74    ocessed....sta.t
0046C0:  65 6D 70 31 09 09 3B 53 61 76 65 20 69 74 2E 0D    emp1..;Save it..
0046D0:  0A 09 6D 76 69 09 61 2C 27 24 27 09 09 3B 47 65    ..mvi.a,'$'..;Ge
0046E0:  74 20 74 65 72 6D 69 6E 61 74 6F 72 2E 0D 0A 09    t terminator....
0046F0:  63 61 6C 6C 09 63 6D 66 70 75 74 09 09 3B 50 75    call.cmfput..;Pu
004700:  62 69 74 2E 0D 0A 09 63 70 69 09 27 3F 27 09 09    bit....cpi.'?'..
004710:  3B 41 20 71 75 65 73 74 69 6F 6E 20 6D 61 72 6B    ;A question mark
004720:  3F 0D 0A 09 6A 6E 7A 09 63 6D 69 66 31 32 0D 0A    ?...jnz.cmif12..
004730:  09 6C 64 61 09 63 6D 66 77 6C 64 09 09 3B 5B 70    .lda.cmfwld..;[p
004740:  63 63 30 30 36 5D 20 57 69 6C 64 63 61 72 64 73    cc006] Wildcards
004750:  20 61 6C 6C 6F 77 65 64 3F 0D 0A 09 6F 72 61 09     allowed?...ora.
004760:  61 09 09 3B 5B 70 63 63 30 30 36 5D 0D 0A 09 6A    a..;[pcc006]...j
004770:  7A 09 63 6D 69 66 31 31 09 09 3B 5B 70 63 63 30    z.cmif11..;[pcc0
004780:  30 36 5D 20 63 6F 6D 70 6C 61 69 6E 20 69 66 20    06] complain if 
004790:  6E 6F 74 0D 0A 09 6C 68 6C 64 09 63 6D 64 70 74    not...lhld.cmdpt
0047A0:  72 09 09 3B 5B 6A 64 5D 20 49 6E 63 72 65 6D 65    r..;[jd] Increme
0047B0:  6E 74 20 62 75 66 66 65 72 20 70 6F 69 6E 74 65    nt buffer pointe
0047C0:  72 0D 0A 09 69 6E 78 09 68 09 09 3B 5B 6A 64 5D    r...inx.h..;[jd]
0047D0:  20 74 68 61 74 20 77 61 73 20 64 65 63 72 65 6D     that was decrem
0047E0:  65 6E 74 65 64 20 69 6E 20 63 6D 67 74 63 68 0D    ented in cmgtch.
0047F0:  0A 09 73 68 6C 64 09 63 6D 64 70 74 72 09 09 3B    ..shld.cmdptr..;
004800:  5B 6A 64 5D 20 73 69 6E 63 65 20 77 65 20 77 61    [jd] since we wa
004810:  6E 74 20 74 68 69 73 20 63 68 72 0D 0A 09 6C 64    nt this chr...ld
004820:  61 09 63 6D 63 70 74 72 09 09 3B 5B 70 63 63 30    a.cmcptr..;[pcc0
004830:  30 36 5D 20 67 65 74 20 6C 73 62 20 6F 66 20 72    06] get lsb of r
004840:  65 61 6C 20 69 6E 70 75 74 20 70 6F 69 6E 74 65    eal input pointe
004850:  72 0D 0A 09 63 6D 70 09 6C 09 09 3B 5B 70 63 63    r...cmp.l..;[pcc
004860:  30 30 36 5D 20 69 73 20 74 68 69 73 20 74 68 65    006] is this the
004870:  20 6C 61 73 74 20 63 68 72 20 69 6E 70 75 74 3F     last chr input?
004880:  0D 0A 09 6A 6E 7A 09 63 6D 69 66 31 61 09 09 3B    ...jnz.cmif1a..;
004890:  5B 70 63 63 30 30 36 5D 20 6E 6F 2C 20 64 6F 6E    [pcc006] no, don
0048A0:  27 74 20 72 65 73 65 74 20 61 63 74 69 6F 6E 20    't reset action 
0048B0:  66 6C 61 67 0D 0A 09 78 72 61 09 61 09 09 3B 5B    flag...xra.a..;[
0048C0:  70 63 63 30 30 36 5D 20 79 65 73 2C 20 72 65 73    pcc006] yes, res
0048D0:  65 74 20 61 63 74 69 6F 6E 20 66 6C 61 67 0D 0A    et action flag..
0048E0:  09 73 74 61 09 63 6D 61 66 6C 67 09 09 3B 5B 70    .sta.cmaflg..;[p
0048F0:  63 63 30 30 36 5D 0D 0A 63 6D 69 66 31 61 3A 09    cc006]..cmif1a:.
004900:  74 20 69 74 20 69 6E 74 6F 20 62 75 66 66 65 72    t it into buffer
004910:  2E 0D 0A 09 6C 68 6C 64 09 63 6D 64 70 74 72 09    ....lhld.cmdptr.
004920:  09 3B 4F 75 74 70 75 74 20 72 65 63 6F 67 6E 69    .;Output recogni
004930:  7A 65 64 20 63 68 61 72 61 63 74 65 72 73 2E 0D    zed characters..
004940:  0A 09 78 63 68 67 0D 0A 09 6D 76 69 09 63 2C 70    ..xchg...mvi.c,p
004950:  72 73 74 72 0D 0A 09 63 61 6C 6C 09 62 64 6F 73    rstr...call.bdos
004960:  0D 0A 09 6C 68 6C 64 09 63 6D 63 70 74 72 09 09    ...lhld.cmcptr..
004970:  3B 52 65 6D 6F 76 65 20 74 65 72 6D 69 6E 61 74    ;Remove terminat
004980:  6F 72 20 66 72 6F 6D 20 62 75 66 66 65 72 2E 0D    or from buffer..
004990:  0A 09 64 63 78 09 68 0D 0A 09 73 68 6C 64 09 63    ..dcx.h...shld.c
0049A0:  6D 63 70 74 72 0D 0A 09 6C 78 69 09 68 2C 63 6D    mcptr...lxi.h,cm
0049B0:  63 63 6E 74 0D 0A 09 64 63 72 09 6D 0D 0A 09 6C    ccnt...dcr.m...l
0049C0:  64 61 09 74 65 6D 70 31 09 09 3B 43 68 61 72 61    da.temp1..;Chara
0049D0:  63 74 65 72 73 20 70 72 6F 63 65 73 73 65 64 2E    cters processed.
0049E0:  0D 0A 09 63 70 69 09 31 31 09 09 3B 43 6F 6D 70    ...cpi.11..;Comp
0049F0:  6C 65 74 65 20 66 69 6C 65 20 6E 61 6D 65 2E 0D    lete file name..
004A00:  0A 09 6A 7A 09 72 65 70 61 72 73 09 09 3B 59 65    ..jz.repars..;Ye
004A10:  73 2C 20 64 6F 6E 27 74 20 62 65 65 70 2E 0D 0A    s, don't beep...
004A20:  0D 0A 63 6D 66 72 63 39 3A 09 6D 76 69 09 63 2C    ..cmfrc9:.mvi.c,
004A30:  63 6F 6E 6F 75 74 0D 0A 09 6D 76 69 09 65 2C 62    conout...mvi.e,b
004A40:  65 6C 6C 0D 0A 09 63 61 6C 6C 09 62 64 6F 73 09    ell...call.bdos.
004A50:  09 3B 52 69 6E 67 20 74 68 65 20 62 65 6C 6C 2E    .;Ring the bell.
004A60:  0D 0A 09 6A 6D 70 09 72 65 70 61 72 73 0D 0A 3B    ...jmp.repars..;
004A70:  0C 0D 0A 3B 09 43 6F 6E 74 69 6E 75 65 20 66 69    ...;.Continue fi
004A80:  6C 65 20 73 70 65 63 20 70 61 72 73 69 6E 67 2E    le spec parsing.
004A90:  0D 0A 0D 0A 63 6D 69 66 31 33 3A 09 6D 6F 76 09    ....cmif13:.mov.
004AA0:  61 2C 65 09 09 3B 49 74 20 6D 75 73 74 20 62 65    a,e..;It must be
004AB0:  20 61 20 74 65 72 6D 69 6E 61 74 6F 72 2E 0D 0A     a terminator...
004AC0:  09 6F 72 61 09 61 09 09 3B 54 65 73 74 20 74 68    .ora.a..;Test th
004AD0:  65 20 6C 65 6E 67 74 68 20 6F 66 20 74 68 65 20    e length of the 
004AE0:  66 69 6C 65 20 6E 61 6D 65 2E 0D 0A 09 6A 7A 09    file name....jz.
004AF0:  63 6D 69 66 69 39 09 09 3B 49 66 20 7A 65 72 6F    cmifi9..;If zero
004B00:  6D 76 69 09 61 2C 27 3F 27 09 09 3B 5B 70 63 63    mvi.a,'?'..;[pcc
004B10:  30 30 36 5D 20 67 65 74 20 69 74 20 62 61 63 6B    006] get it back
004B20:  20 69 6E 20 41 0D 0A 09 6A 6D 70 09 63 6D 69 66     in A...jmp.cmif
004B30:  69 38 09 09 3B 54 72 65 61 74 20 6C 69 6B 65 20    i8..;Treat like 
004B40:  61 6E 79 20 6F 74 68 65 72 20 63 68 61 72 61 63    any other charac
004B50:  74 65 72 0D 0A 0D 0A 63 6D 69 66 31 32 3A 09 63    ter....cmif12:.c
004B60:  70 69 09 65 73 63 09 09 3B 41 6E 20 65 73 63 61    pi.esc..;An esca
004B70:  70 65 3F 0D 0A 09 6A 6E 7A 09 63 6D 69 66 31 33    pe?...jnz.cmif13
004B80:  0D 0A 3B 54 72 79 20 74 6F 20 72 65 63 6F 67 6E    ..;Try to recogn
004B90:  69 7A 65 20 66 69 6C 65 2D 73 70 65 63 20 61 27    ize file-spec a'
004BA0:  6C 61 20 54 4F 50 53 2D 32 30 0D 0A 09 78 72 61    la TOPS-20...xra
004BB0:  09 61 0D 0A 09 73 74 61 09 63 6D 61 66 6C 67 09    .a...sta.cmaflg.
004BC0:  09 3B 54 75 72 6E 20 6F 66 66 20 74 68 65 20 61    .;Turn off the a
004BD0:  63 74 69 6F 6E 20 66 6C 61 67 2E 0D 0A 09 6C 68    ction flag....lh
004BE0:  6C 64 09 63 6D 63 70 74 72 09 09 3B 4D 6F 76 65    ld.cmcptr..;Move
004BF0:  20 74 68 65 20 70 6F 69 6E 74 65 72 20 74 6F 20     the pointer to 
004C00:  62 65 66 6F 72 65 20 74 68 65 20 65 73 63 61 70    before the escap
004C10:  65 2E 0D 0A 09 64 63 78 09 68 0D 0A 09 73 68 6C    e....dcx.h...shl
004C20:  64 09 63 6D 63 70 74 72 0D 0A 09 73 68 6C 64 09    d.cmcptr...shld.
004C30:  63 6D 64 70 74 72 0D 0A 09 6C 78 69 09 68 2C 63    cmdptr...lxi.h,c
004C40:  6D 63 63 6E 74 09 3B 47 65 74 20 74 68 65 20 63    mccnt.;Get the c
004C50:  68 61 72 20 63 6F 75 6E 74 2E 0D 0A 09 64 63 72    har count....dcr
004C60:  09 6D 09 09 3B 44 65 63 72 65 6D 65 6E 74 20 69    .m..;Decrement i
004C70:  74 20 62 79 20 6F 6E 65 2E 0D 0A 09 6D 6F 76 09    t by one....mov.
004C80:  61 2C 65 09 09 3B 53 61 76 65 20 63 68 61 72 61    a,e..;Save chara
004C90:  63 74 65 72 20 63 6F 75 6E 74 20 75 70 20 74 6F    cter count up to
004CA0:  20 6E 6F 77 2E 0D 0A 09 73 74 61 09 74 65 6D 70     now....sta.temp
004CB0:  31 0D 0A 09 63 70 69 09 39 09 09 3B 50 61 73 74    1...cpi.9..;Past
004CC0:  20 27 2E 27 3F 0D 0A 09 6A 6D 09 63 6D 66 72 65     '.'?...jm.cmfre
004CD0:  63 09 09 3B 4E 6F 2E 0D 0A 09 64 63 72 09 61 09    c..;No....dcr.a.
004CE0:  09 3B 59 65 73 2C 20 64 6F 6E 27 74 20 63 6F 75    .;Yes, don't cou
004CF0:  6E 74 20 70 6F 69 6E 74 2E 0D 0A 63 6D 66 72 65    nt point...cmfre
004D00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
004D10:  04 00 00 00 02 09 4E E5 04 00 C1 02 00 00 00 02    ......N.........
004D20:  04 00 C6 02 00 00 00 02 04 00 C2 02 00 00 00 02    ................
004D30:  04 00 C7 02 00 00 00 02 04 00 C3 02 00 00 00 02    ................
004D40:  04 00 C8 02 00 00 00 02 04 00 C4 02 00 00 00 02    ................
004D50:  04 00 C9 02 00 00 00 02 04 00 C5 02 00 00 00 02    ................
004D60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004D70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004D80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004D90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004DA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004DB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004DC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004DD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004DE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004DF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004E00:  20 63 6F 6D 70 6C 61 69 6E 2E 0D 0A 09 63 70 69     complain....cpi
004E10:  09 30 44 48 0D 0A 09 6A 70 09 63 6D 69 66 69 39    .0DH...jp.cmifi9
004E20:  09 09 3B 49 66 20 74 6F 6F 20 6C 6F 6E 67 20 63    ..;If too long c
004E30:  6F 6D 70 6C 61 69 6E 2E 0D 0A 09 6A 6D 70 09 72    omplain....jmp.r
004E40:  73 6B 70 09 09 3B 4F 74 68 65 72 77 69 73 65 20    skp..;Otherwise 
004E50:  77 65 20 68 61 76 65 20 73 75 63 63 65 65 64 65    we have succeede
004E60:  64 2E 0D 0A 0D 0A 63 6D 69 66 69 32 3A 09 63 70    d.....cmifi2:.cp
004E70:  69 09 27 2E 27 0D 0A 09 6A 6E 7A 09 63 6D 69 66    i.'.'...jnz.cmif
004E80:  69 33 0D 0A 09 69 6E 72 09 65 0D 0A 09 6D 6F 76    i3...inr.e...mov
004E90:  09 61 2C 65 0D 0A 09 63 70 69 09 31 48 09 09 3B    .a,e...cpi.1H..;
004EA0:  41 6E 79 20 63 68 61 72 73 20 79 65 74 3F 0D 0A    Any chars yet?..
004EB0:  09 6A 7A 09 63 6D 69 66 69 39 09 09 3B 4E 6F 2C    .jz.cmifi9..;No,
004EC0:  20 67 69 76 65 20 65 72 72 6F 72 2E 0D 0A 09 63     give error....c
004ED0:  70 69 09 30 41 48 09 09 3B 54 65 6E 74 68 20 63    pi.0AH..;Tenth c
004EE0:  68 61 72 3F 0D 0A 09 6A 70 09 63 6D 69 66 69 39    har?...jp.cmifi9
004EF0:  09 09 3B 50 61 73 74 20 69 74 2C 20 67 69 76 65    ..;Past it, give
004F00:  20 61 6E 20 65 72 72 6F 72 2E 0D 0A 09 6D 76 69     an error....mvi
004F10:  09 63 2C 39 48 0D 0A 09 6D 76 69 09 62 2C 30 0D    .c,9H...mvi.b,0.
004F20:  0A 09 6C 68 6C 64 09 63 6D 66 63 62 0D 0A 09 64    ..lhld.cmfcb...d
004F30:  61 64 09 62 09 09 3B 50 6F 69 6E 74 20 74 6F 20    ad.b..;Point to 
004F40:  66 69 6C 65 20 74 79 70 65 20 66 69 65 6C 64 2E    file type field.
004F50:  0D 0A 09 73 68 6C 64 09 63 6D 66 63 62 32 0D 0A    ...shld.cmfcb2..
004F60:  09 6D 76 69 09 65 2C 39 48 09 09 3B 53 61 79 20    .mvi.e,9H..;Say 
004F70:  77 65 27 76 65 20 67 6F 74 74 65 6E 20 6E 69 6E    we've gotten nin
004F80:  65 2E 0D 0A 09 6A 6D 70 09 63 6D 69 66 69 31 09    e....jmp.cmifi1.
004F90:  09 3B 47 65 74 20 74 68 65 20 6E 65 78 74 20 63    .;Get the next c
004FA0:  68 61 72 2E 0D 0A 0D 0A 63 6D 69 66 69 33 3A 09    har.....cmifi3:.
004FB0:  63 70 69 09 27 3A 27 0D 0A 09 6A 6E 7A 09 63 6D    cpi.':'...jnz.cm
004FC0:  69 66 69 34 0D 0A 09 69 6E 72 09 65 0D 0A 09 6D    ifi4...inr.e...m
004FD0:  6F 76 09 61 2C 65 0D 0A 09 63 70 69 09 32 48 09    ov.a,e...cpi.2H.
004FE0:  09 3B 49 73 20 69 74 20 69 6E 20 74 68 65 20 72    .;Is it in the r
004FF0:  69 67 68 74 20 70 6C 61 63 65 20 66 6F 72 20 61    ight place for a
005000:  20 63 61 73 65 20 69 74 73 20 6F 6B 0D 0A 09 6A     case its ok...j
005010:  6D 09 63 6D 69 66 69 38 09 09 3B 5B 70 63 63 30    m.cmifi8..;[pcc0
005020:  30 37 5D 20 28 44 45 4C 20 6E 65 76 65 72 20 67    07] (DEL never g
005030:  65 74 73 20 68 65 72 65 29 0D 0A 09 63 70 69 09    ets here)...cpi.
005040:  27 7A 27 2B 31 09 09 3B 5B 70 63 63 30 30 37 5D    'z'+1..;[pcc007]
005050:  20 6F 6E 6C 79 20 63 6F 6E 76 65 72 74 20 6C 65     only convert le
005060:  74 74 65 72 73 0D 0A 09 6A 70 09 63 6D 69 66 69    tters...jp.cmifi
005070:  38 09 09 3B 5B 70 63 63 30 30 37 5D 0D 0A 09 61    8..;[pcc007]...a
005080:  6E 69 09 31 33 37 4F 09 09 3B 43 61 70 69 74 61    ni.137O..;Capita
005090:  6C 69 7A 65 2E 0D 0A 63 6D 69 66 69 38 3A 09 6C    lize...cmifi8:.l
0050A0:  68 6C 64 09 63 6D 66 63 62 32 09 09 3B 47 65 74    hld.cmfcb2..;Get
0050B0:  20 74 68 65 20 70 6F 69 6E 74 65 72 20 69 6E 74     the pointer int
0050C0:  6F 20 74 68 65 20 46 43 42 2E 0D 0A 09 6D 6F 76    o the FCB....mov
0050D0:  09 6D 2C 61 09 09 3B 50 75 74 20 74 68 65 20 63    .m,a..;Put the c
0050E0:  68 61 72 20 74 68 65 72 65 2E 0D 0A 09 69 6E 78    har there....inx
0050F0:  09 68 0D 0A 09 73 68 6C 64 09 63 6D 66 63 62 32    .h...shld.cmfcb2
005100:  0D 0A 09 69 6E 72 09 65 0D 0A 09 6A 6D 70 09 63    ...inr.e...jmp.c
005110:  6D 69 66 69 31 0D 0A 0D 0A 63 6D 69 66 69 39 3A    mifi1....cmifi9:
005120:  09 6C 64 61 09 63 6D 73 74 61 74 0D 0A 09 63 70    .lda.cmstat...cp
005130:  69 09 63 6D 69 66 69 6E 09 09 3B 22 73 69 6C 65    i.cmifin..;"sile
005140:  6E 74 22 3F 0D 0A 09 6A 7A 09 72 09 09 3B 59 65    nt"?...jz.r..;Ye
005150:  73 2C 6C 65 74 20 68 69 6D 20 67 6F 20 77 2F 6F    s,let him go w/o
005160:  20 63 68 65 63 6B 0D 0A 09 6C 78 69 09 64 2C 63     check...lxi.d,c
005170:  6D 65 72 30 32 0D 0A 63 6D 69 66 31 30 3A 09 6D    mer02..cmif10:.m
005180:  76 69 09 63 2C 70 72 73 74 72 0D 0A 09 63 61 6C    vi.c,prstr...cal
005190:  6C 09 62 64 6F 73 0D 0A 09 72 65 74 0D 0A 0D 0A    l.bdos...ret....
0051A0:  63 6D 69 66 31 31 3A 09 6C 78 69 09 64 2C 63 6D    cmif11:.lxi.d,cm
0051B0:  65 72 30 33 09 3B 43 6F 6D 70 6C 61 69 6E 20 61    er03.;Complain a
0051C0:  62 6F 75 74 20 77 69 6C 64 63 61 72 64 73 2E 0D    bout wildcards..
0051D0:  0A 09 6A 6D 70 09 63 6D 69 66 31 30 0D 0A 0D 0A    ..jmp.cmif10....
0051E0:  3B 0C 0D 0A 0D 0A 3B 09 63 6F 70 79 20 66 69 6C    ;.....;.copy fil
0051F0:  65 6E 61 6D 65 20 66 72 6F 6D 20 62 75 66 66 65    ename from buffe
005200:  20 64 72 69 76 65 3F 0D 0A 09 6A 6E 7A 09 63 6D     drive?...jnz.cm
005210:  69 66 69 39 09 09 3B 49 66 20 6E 6F 74 2C 20 63    ifi9..;If not, c
005220:  6F 6D 70 6C 61 69 6E 2E 0D 0A 09 6C 68 6C 64 09    omplain....lhld.
005230:  63 6D 66 63 62 32 0D 0A 09 64 63 78 09 68 09 09    cmfcb2...dcx.h..
005240:  3B 50 6F 69 6E 74 20 74 6F 20 70 72 65 76 69 6F    ;Point to previo
005250:  75 73 20 63 68 61 72 61 63 74 65 72 2E 0D 0A 09    us character....
005260:  6D 6F 76 09 61 2C 6D 09 09 3B 47 65 74 20 74 68    mov.a,m..;Get th
005270:  65 20 64 72 69 76 65 20 6E 61 6D 65 2E 0D 0A 09    e drive name....
005280:  73 75 69 09 27 40 27 09 09 3B 47 65 74 20 74 68    sui.'@'..;Get th
005290:  65 20 64 72 69 76 65 20 6E 75 6D 62 65 72 2E 0D    e drive number..
0052A0:  0A 09 73 68 6C 64 09 63 6D 66 63 62 32 09 09 3B    ..shld.cmfcb2..;
0052B0:  53 61 76 65 20 70 6F 69 6E 74 65 72 20 74 6F 20    Save pointer to 
0052C0:  62 65 67 69 6E 6E 69 6E 67 20 6F 66 20 6E 61 6D    beginning of nam
0052D0:  65 20 66 69 65 6C 64 2E 0D 0A 09 64 63 78 09 68    e field....dcx.h
0052E0:  09 09 3B 50 6F 69 6E 74 20 74 6F 20 64 72 69 76    ..;Point to driv
0052F0:  65 20 6E 75 6D 62 65 72 2E 0D 0A 09 6D 6F 76 09    e number....mov.
005300:  6D 2C 61 09 09 3B 50 75 74 20 69 74 20 69 6E 20    m,a..;Put it in 
005310:  74 68 65 20 66 63 62 2E 0D 0A 09 6D 76 69 09 65    the fcb....mvi.e
005320:  2C 30 09 09 3B 53 74 61 72 74 20 63 68 61 72 61    ,0..;Start chara
005330:  63 74 65 72 20 63 6F 75 6E 74 20 6F 76 65 72 2E    cter count over.
005340:  0D 0A 09 6A 6D 70 09 63 6D 69 66 69 31 0D 0A 0D    ...jmp.cmifi1...
005350:  0A 63 6D 69 66 69 34 3A 09 63 70 69 09 27 2A 27    .cmifi4:.cpi.'*'
005360:  0D 0A 09 6A 6E 7A 09 63 6D 69 66 69 37 0D 0A 09    ...jnz.cmifi7...
005370:  6C 64 61 09 63 6D 66 77 6C 64 09 09 3B 57 69 6C    lda.cmfwld..;Wil
005380:  64 63 61 72 64 73 20 61 6C 6C 6F 77 65 64 3F 0D    dcards allowed?.
005390:  0A 09 63 70 69 09 30 0D 0A 09 6A 7A 09 63 6D 69    ..cpi.0...jz.cmi
0053A0:  66 31 31 09 09 3B 4E 6F 2C 63 6F 6D 70 6C 61 69    f11..;No,complai
0053B0:  6E 0D 0A 09 6D 6F 76 09 61 2C 65 0D 0A 09 63 70    n...mov.a,e...cp
0053C0:  69 09 38 48 09 09 3B 49 73 20 74 68 69 73 20 69    i.8H..;Is this i
0053D0:  6E 20 74 68 65 20 6E 61 6D 65 20 6F 72 20 74 79    n the name or ty
0053E0:  70 65 20 66 69 65 6C 64 3F 0D 0A 09 6A 7A 09 63    pe field?...jz.c
0053F0:  6D 69 66 69 39 09 09 3B 49 66 20 69 74 73 20 77    mifi9..;If its w
005400:  72 0D 0A 3B 09 63 61 6C 6C 65 64 20 77 69 74 68    r..;.called with
005410:  20 48 4C 20 3D 20 64 65 73 74 69 6E 61 74 69 6F     HL = destinatio
005420:  6E 2C 20 41 20 3D 20 70 6F 73 69 74 69 6F 6E 20    n, A = position 
005430:  28 30 2D 33 29 20 69 6E 20 62 75 66 66 65 72 0D    (0-3) in buffer.
005440:  0A 3B 09 63 61 6C 6C 65 64 20 62 79 3A 20 63 6D    .;.called by: cm
005450:  69 66 69 6C 0D 0A 0D 0A 66 73 70 63 6F 70 3A 09    ifil....fspcop:.
005460:  70 75 73 68 09 70 73 77 09 09 3B 53 61 76 65 20    push.psw..;Save 
005470:  41 2E 0D 0A 09 6C 78 69 09 64 2C 62 75 66 66 09    A....lxi.d,buff.
005480:  09 3B 47 65 74 20 74 68 65 20 72 69 67 68 74 20    .;Get the right 
005490:  6F 66 66 73 65 74 20 69 6E 20 74 68 65 20 62 75    offset in the bu
0054A0:  66 66 65 72 2E 0D 0A 09 72 6C 63 0D 0A 09 72 6C    ffer....rlc...rl
0054B0:  63 0D 0A 09 72 6C 63 0D 0A 09 72 6C 63 0D 0A 09    c...rlc...rlc...
0054C0:  72 6C 63 0D 0A 09 61 64 64 20 09 65 0D 0A 09 69    rlc...add .e...i
0054D0:  6E 72 09 61 09 09 3B 42 79 70 61 73 73 20 64 72    nr.a..;Bypass dr
0054E0:  69 76 65 20 73 70 65 63 2E 0D 0A 09 6D 6F 76 09    ive spec....mov.
0054F0:  65 2C 61 0D 0A 09 6D 76 69 09 62 2C 31 31 09 09    e,a...mvi.b,11..
005500:  3B 43 6F 70 79 20 66 69 6C 65 20 6E 61 6D 65 2E    ;Copy file name.
005510:  0D 0A 66 73 70 63 70 31 3A 09 6C 64 61 78 09 64    ..fspcp1:.ldax.d
005520:  0D 0A 09 69 6E 78 09 64 0D 0A 09 6D 6F 76 09 6D    ...inx.d...mov.m
005530:  2C 61 0D 0A 09 69 6E 78 09 68 0D 0A 09 64 63 72    ,a...inx.h...dcr
005540:  09 62 0D 0A 09 6A 6E 7A 09 66 73 70 63 70 31 0D    .b...jnz.fspcp1.
005550:  0A 09 70 6F 70 09 70 73 77 09 09 3B 52 65 73 74    ..pop.psw..;Rest
005560:  6F 72 65 20 41 2E 0D 0A 09 72 65 74 0D 0A 0D 0A    ore A....ret....
005570:  3B 09 61 70 70 65 6E 64 20 63 68 61 72 61 63 74    ;.append charact
005580:  65 72 20 69 6E 20 41 20 74 6F 20 63 6F 6D 6D 61    er in A to comma
005590:  6E 64 20 62 75 66 66 65 72 0D 0A 3B 09 63 61 6C    nd buffer..;.cal
0055A0:  6C 65 64 20 62 79 3A 20 63 6D 69 66 69 6C 0D 0A    led by: cmifil..
0055B0:  0D 0A 63 6D 66 70 75 74 3A 09 70 75 73 68 09 68    ..cmfput:.push.h
0055C0:  09 09 3B 53 61 76 65 20 48 2E 0D 0A 09 6C 68 6C    ..;Save H....lhl
0055D0:  64 09 63 6D 63 70 74 72 09 09 3B 47 65 74 20 62    d.cmcptr..;Get b
0055E0:  75 66 66 65 72 20 70 6F 69 6E 74 65 72 2E 0D 0A    uffer pointer...
0055F0:  09 6D 6F 76 09 6D 2C 61 09 09 3B 53 74 6F 72 65    .mov.m,a..;Store
005600:  68 65 72 65 20 74 68 65 20 64 6F 74 20 73 68 6F    here the dot sho
005610:  75 6C 64 20 62 65 20 67 69 76 65 20 75 70 2E 0D    uld be give up..
005620:  0A 09 6A 70 09 63 6D 69 66 69 35 09 09 3B 54 79    ..jp.cmifi5..;Ty
005630:  70 65 2E 0D 0A 09 6D 76 69 09 62 2C 38 48 09 09    pe....mvi.b,8H..
005640:  3B 45 69 67 68 74 20 63 68 61 72 73 2E 0D 0A 09    ;Eight chars....
005650:  6A 6D 70 09 63 6D 69 66 69 36 0D 0A 0D 0A 63 6D    jmp.cmifi6....cm
005660:  69 66 69 35 3A 09 6D 76 69 09 62 2C 30 43 48 09    ifi5:.mvi.b,0CH.
005670:  09 3B 54 68 72 65 65 20 63 68 61 72 73 2E 0D 0A    .;Three chars...
005680:  63 6D 69 66 69 36 3A 09 6C 68 6C 64 09 63 6D 66    cmifi6:.lhld.cmf
005690:  63 62 32 09 09 3B 47 65 74 20 61 20 70 6F 69 6E    cb2..;Get a poin
0056A0:  74 65 72 20 69 6E 74 6F 20 74 68 65 20 46 43 42    ter into the FCB
0056B0:  2E 0D 0A 09 6D 76 69 09 61 2C 27 3F 27 0D 0A 09    ....mvi.a,'?'...
0056C0:  6D 6F 76 09 6D 2C 61 09 09 3B 50 75 74 20 61 20    mov.m,a..;Put a 
0056D0:  71 75 65 73 74 69 6F 6E 20 6D 61 72 6B 20 69 6E    question mark in
0056E0:  2E 0D 0A 09 69 6E 78 09 68 0D 0A 09 73 68 6C 64    ....inx.h...shld
0056F0:  09 63 6D 66 63 62 32 0D 0A 09 69 6E 72 09 65 0D    .cmfcb2...inr.e.
005700:  0A 09 6D 6F 76 09 61 2C 65 0D 0A 09 63 6D 70 09    ..mov.a,e...cmp.
005710:  62 0D 0A 09 6A 6D 09 63 6D 69 66 69 36 09 09 3B    b...jm.cmifi6..;
005720:  47 6F 20 66 69 6C 6C 20 69 6E 20 61 6E 6F 74 68    Go fill in anoth
005730:  65 72 2E 0D 0A 09 6A 6D 70 09 63 6D 69 66 69 31    er....jmp.cmifi1
005740:  09 09 3B 47 65 74 20 74 68 65 20 6E 65 78 74 20    ..;Get the next 
005750:  63 68 61 72 2E 0D 0A 0D 0A 63 6D 69 66 69 37 3A    char.....cmifi7:
005760:  09 63 70 69 09 27 21 27 09 09 3B 5B 70 63 63 30    .cpi.'!'..;[pcc0
005770:  30 37 5D 20 63 6F 6E 74 72 6F 6C 20 63 68 72 20    07] control chr 
005780:  6F 72 20 73 70 61 63 65 3F 0D 0A 09 6A 6D 09 63    or space?...jm.c
005790:  6D 69 66 69 39 09 09 3B 5B 70 63 63 30 30 37 5D    mifi9..;[pcc007]
0057A0:  20 79 65 73 2C 20 69 6C 6C 65 67 61 6C 0D 0A 09     yes, illegal...
0057B0:  6D 6F 76 09 68 2C 61 09 09 3B 5B 35 5D 20 73 74    mov.h,a..;[5] st
0057C0:  61 73 68 20 69 6E 70 75 74 20 63 68 61 72 20 66    ash input char f
0057D0:  6F 72 20 61 20 62 69 74 0D 0A 09 6C 64 61 09 66    or a bit...lda.f
0057E0:  66 75 73 73 79 09 09 3B 5B 35 5D 20 20 77 68 69    fussy..;[5]  whi
0057F0:  6C 65 20 77 65 20 63 68 65 63 6B 20 74 68 65 20    le we check the 
005800:  20 69 6E 20 62 75 66 66 65 72 2E 0D 0A 09 69 6E     in buffer....in
005810:  78 09 68 0D 0A 09 73 68 6C 64 09 63 6D 63 70 74    x.h...shld.cmcpt
005820:  72 0D 0A 09 6C 78 69 09 68 2C 63 6D 63 63 6E 74    r...lxi.h,cmccnt
005830:  09 3B 43 6F 75 6E 74 20 69 74 2E 0D 0A 09 69 6E    .;Count it....in
005840:  72 09 6D 0D 0A 09 70 6F 70 09 68 09 09 3B 52 65    r.m...pop.h..;Re
005850:  73 74 6F 72 65 20 48 2E 0D 0A 09 72 65 74 0D 0A    store H....ret..
005860:  3B 0C 0D 0A 3B 09 52 65 61 64 20 63 68 61 72 61    ;...;.Read chara
005870:  63 74 65 72 73 20 66 72 6F 6D 20 74 68 65 20 63    cters from the c
005880:  6F 6D 6D 61 6E 64 20 62 75 66 66 65 72 2E 0D 0A    ommand buffer...
005890:  3B 09 63 61 6C 6C 65 64 20 62 79 3A 20 20 63 6D    ;.called by:  cm
0058A0:  74 65 78 74 2C 20 63 6D 63 66 72 6D 2C 20 63 6D    text, cmcfrm, cm
0058B0:  6B 65 79 77 2C 20 63 6D 69 66 69 6C 0D 0A 0D 0A    keyw, cmifil....
0058C0:  63 6D 67 74 63 68 3A 09 70 75 73 68 09 68 0D 0A    cmgtch:.push.h..
0058D0:  09 70 75 73 68 09 62 0D 0A 63 6D 67 74 63 31 3A    .push.b..cmgtc1:
0058E0:  09 6C 64 61 09 63 6D 61 66 6C 67 0D 0A 09 6F 72    .lda.cmaflg...or
0058F0:  61 09 61 09 09 3B 49 73 20 69 74 20 73 65 74 2E    a.a..;Is it set.
005900:  0D 0A 09 63 7A 09 63 6D 69 6E 62 66 09 09 3B 49    ...cz.cminbf..;I
005910:  66 20 74 68 65 20 61 63 74 69 6F 6E 20 63 68 61    f the action cha
005920:  72 20 66 6C 61 67 20 69 73 20 6E 6F 74 20 73 65    r flag is not se
005930:  74 20 67 65 74 20 6D 6F 72 65 2E 0D 0A 09 6C 68    t get more....lh
005940:  6C 64 09 63 6D 64 70 74 72 09 09 3B 47 65 74 20    ld.cmdptr..;Get 
005950:  61 20 70 6F 69 6E 74 65 72 20 69 6E 74 6F 20 74    a pointer into t
005960:  68 65 20 62 75 66 66 65 72 2E 0D 0A 09 6D 6F 76    he buffer....mov
005970:  09 61 2C 6D 09 09 3B 47 65 74 20 74 68 65 20 6E    .a,m..;Get the n
005980:  65 78 74 20 63 68 61 72 2E 0D 0A 09 69 6E 78 09    ext char....inx.
005990:  68 0D 0A 09 73 68 6C 64 09 63 6D 64 70 74 72 0D    h...shld.cmdptr.
0059A0:  0A 09 63 70 69 09 27 20 27 09 09 3B 49 73 20 69    ..cpi.' '..;Is i
0059B0:  74 20 61 20 73 70 61 63 65 3F 0D 0A 09 6A 7A 09    t a space?...jz.
0059C0:  63 6D 67 74 63 32 0D 0A 09 63 70 69 09 74 61 62    cmgtc2...cpi.tab
0059D0:  09 09 3B 4F 72 20 61 20 74 61 62 3F 0D 0A 09 6A    ..;Or a tab?...j
0059E0:  6E 7A 09 63 6D 67 74 63 33 0D 0A 63 6D 67 74 63    nz.cmgtc3..cmgtc
0059F0:  32 3A 09 6C 64 61 09 63 6D 73 66 6C 67 09 09 3B    2:.lda.cmsflg..;
005A00:  66 75 73 73 79 20 66 6C 61 67 0D 0A 09 6F 72 61    fussy flag...ora
005A10:  09 61 09 09 3B 5B 35 5D 20 73 65 74 20 74 68 65    .a..;[5] set the
005A20:  20 66 6C 61 67 73 20 61 63 63 6F 72 64 69 6E 67     flags according
005A30:  6C 79 0D 0A 09 6D 6F 76 09 61 2C 68 09 09 3B 5B    ly...mov.a,h..;[
005A40:  35 5D 20 72 65 73 74 6F 72 65 20 74 68 65 20 69    5] restore the i
005A50:  6E 70 75 74 20 63 68 61 72 61 63 74 65 72 0D 0A    nput character..
005A60:  09 6A 7A 09 63 6D 69 66 37 61 09 09 3B 5B 35 5D    .jz.cmif7a..;[5]
005A70:  20 69 66 20 66 66 75 73 73 79 3D 30 2C 20 61 6C     if ffussy=0, al
005A80:  6C 6F 77 20 3C 3E 2E 2C 3B 3A 3F 2A 5B 5D 0D 0A    low <>.,;:?*[]..
005A90:  3B 5B 35 5D 20 53 6F 20 66 61 72 2C 20 77 65 27    ;[5] So far, we'
005AA0:  76 65 20 65 6C 69 6D 69 6E 61 74 65 64 20 22 61    ve eliminated "a
005AB0:  63 74 69 6F 6E 20 63 68 61 72 61 63 74 65 72 73    ction characters
005AC0:  22 20 28 69 6E 63 6C 75 64 69 6E 67 20 71 75 65    " (including que
005AD0:  73 74 69 6F 6E 29 2C 0D 0A 3B 5B 35 5D 20 70 65    stion),..;[5] pe
005AE0:  72 69 6F 64 2C 20 63 6F 6C 6F 6E 2C 20 61 73 74    riod, colon, ast
005AF0:  65 72 69 73 6B 2C 20 63 6F 6E 74 72 6F 6C 20 63    erisk, control c
005B00:  68 61 72 61 63 74 65 72 73 2C 20 61 6E 64 20 73    haracters, and s
005B10:  70 61 63 65 2E 0D 0A 3B 5B 35 5D 20 54 68 61 74    pace...;[5] That
005B20:  20 6C 65 61 76 65 73 20 75 73 20 25 28 29 2C 2F     leaves us %(),/
005B30:  3B 3C 3D 3E 5B 5C 5D 5F 7C 20 74 6F 20 63 68 65    ;<=>[\]_| to che
005B40:  63 6B 20 66 6F 72 2E 0D 0A 09 63 70 69 09 27 25    ck for....cpi.'%
005B50:  27 09 09 3B 5B 35 5D 0D 0A 09 6A 7A 09 63 6D 69    '..;[5]...jz.cmi
005B60:  66 69 39 09 09 3B 5B 35 5D 0D 0A 09 63 70 69 09    fi9..;[5]...cpi.
005B70:  27 28 27 09 09 3B 5B 35 5D 0D 0A 09 6A 7A 09 63    '('..;[5]...jz.c
005B80:  6D 69 66 69 39 09 09 3B 5B 35 5D 0D 0A 09 63 70    mifi9..;[5]...cp
005B90:  69 09 27 29 27 09 09 3B 5B 35 5D 0D 0A 09 6A 7A    i.')'..;[5]...jz
005BA0:  09 63 6D 69 66 69 39 09 09 3B 5B 35 5D 0D 0A 09    .cmifi9..;[5]...
005BB0:  63 70 69 09 27 2C 27 09 09 3B 5B 70 63 63 30 30    cpi.','..;[pcc00
005BC0:  37 5D 20 77 65 65 64 20 6F 75 74 20 63 6F 6D 6D    7] weed out comm
005BD0:  61 0D 0A 09 6A 7A 09 63 6D 69 66 69 39 09 09 3B    a...jz.cmifi9..;
005BE0:  5B 70 63 63 30 30 37 5D 0D 0A 09 63 70 69 09 27    [pcc007]...cpi.'
005BF0:  2F 27 09 09 3B 5B 35 5D 0D 0A 09 6A 7A 09 63 6D    /'..;[5]...jz.cm
005C00:  47 65 74 20 74 68 65 20 73 70 61 63 65 20 66 6C    Get the space fl
005C10:  61 67 2E 0D 0A 09 6F 72 61 09 61 09 09 3B 57 61    ag....ora.a..;Wa
005C20:  73 20 74 68 65 20 6C 61 73 74 20 63 68 61 72 20    s the last char 
005C30:  61 20 73 70 61 63 65 3F 0D 0A 09 6A 6E 7A 09 63    a space?...jnz.c
005C40:  6D 67 74 63 31 09 09 3B 59 65 73 2C 20 67 65 74    mgtc1..;Yes, get
005C50:  20 61 6E 6F 74 68 65 72 20 63 68 61 72 2E 0D 0A     another char...
005C60:  09 6D 76 69 09 61 2C 30 46 46 48 09 09 3B 53 65    .mvi.a,0FFH..;Se
005C70:  74 20 74 68 65 20 73 70 61 63 65 20 66 6C 61 67    t the space flag
005C80:  2E 0D 0A 09 73 74 61 09 63 6D 73 66 6C 67 0D 0A    ....sta.cmsflg..
005C90:  09 6D 76 69 09 61 2C 27 20 27 0D 0A 09 70 6F 70    .mvi.a,' '...pop
005CA0:  09 62 0D 0A 09 70 6F 70 09 68 0D 0A 09 6A 6D 70    .b...pop.h...jmp
005CB0:  09 63 6D 67 74 63 35 0D 0A 0D 0A 63 6D 67 74 63    .cmgtc5....cmgtc
005CC0:  33 3A 09 70 75 73 68 09 70 73 77 0D 0A 09 78 72    3:.push.psw...xr
005CD0:  61 09 61 0D 0A 09 73 74 61 09 63 6D 73 66 6C 67    a.a...sta.cmsflg
005CE0:  09 09 3B 5A 65 72 6F 20 74 68 65 20 73 70 61 63    ..;Zero the spac
005CF0:  65 20 66 6C 61 67 2E 0D 0A 09 70 6F 70 09 70 73    e flag....pop.ps
005D00:  77 0D 0A 09 70 6F 70 09 62 0D 0A 09 70 6F 70 09    w...pop.b...pop.
005D10:  68 0D 0A 09 63 70 69 09 65 73 63 0D 0A 09 6A 7A    h...cpi.esc...jz
005D20:  09 63 6D 67 74 63 35 0D 0A 09 63 70 69 09 27 3F    .cmgtc5...cpi.'?
005D30:  27 09 09 3B 49 73 20 74 68 65 20 75 73 65 72 20    '..;Is the user 
005D40:  63 75 72 69 6F 75 73 3F 0D 0A 09 6A 7A 09 63 6D    curious?...jz.cm
005D50:  67 74 63 34 0D 0A 09 63 70 69 09 63 72 0D 0A 09    gtc4...cpi.cr...
005D60:  6A 7A 09 63 6D 67 74 63 34 0D 0A 09 63 70 69 09    jz.cmgtc4...cpi.
005D70:  6C 66 0D 0A 09 6A 7A 09 63 6D 67 74 63 34 0D 0A    lf...jz.cmgtc4..
005D80:  09 63 70 69 09 66 66 0D 0A 09 72 6E 7A 09 09 09    .cpi.ff...rnz...
005D90:  3B 4E 6F 74 20 61 6E 20 61 63 74 69 6F 6E 20 63    ;Not an action c
005DA0:  68 61 72 2C 20 6A 75 73 74 20 72 65 74 75 72 6E    har, just return
005DB0:  2E 0D 0A 63 6D 67 74 63 34 3A 09 70 75 73 68 09    ...cmgtc4:.push.
005DC0:  68 0D 0A 09 6C 68 6C 64 09 63 6D 64 70 74 72 0D    h...lhld.cmdptr.
005DD0:  0A 09 64 63 78 09 68 0D 0A 09 73 68 6C 64 09 63    ..dcx.h...shld.c
005DE0:  6D 64 70 74 72 0D 0A 09 70 6F 70 09 68 0D 0A 63    mdptr...pop.h..c
005DF0:  6D 67 74 63 35 3A 09 6F 72 69 09 38 30 48 09 09    mgtc5:.ori.80H..
005E00:  69 66 69 39 09 09 3B 5B 35 5D 0D 0A 09 63 70 69    ifi9..;[5]...cpi
005E10:  09 27 39 27 2B 31 09 09 3B 5B 70 63 63 30 30 37    .'9'+1..;[pcc007
005E20:  5D 20 61 6E 79 74 68 69 6E 67 20 65 6C 73 65 20    ] anything else 
005E30:  32 31 48 2D 33 39 48 20 69 73 20 6F 6B 0D 0A 09    21H-39H is ok...
005E40:  6A 6D 09 63 6D 69 66 69 38 09 09 3B 5B 70 63 63    jm.cmifi8..;[pcc
005E50:  30 30 37 5D 20 65 78 63 65 70 74 20 27 2A 27 20    007] except '*' 
005E60:  6E 65 76 65 72 20 67 65 74 73 20 68 65 72 65 0D    never gets here.
005E70:  0A 09 63 70 69 09 27 40 27 09 09 3B 5B 70 63 63    ..cpi.'@'..;[pcc
005E80:  30 30 37 5D 20 61 6C 6C 20 6F 66 20 33 41 48 2D    007] all of 3AH-
005E90:  33 46 48 20 69 73 20 69 6C 6C 65 67 61 6C 0D 0A    3FH is illegal..
005EA0:  09 6A 6D 09 63 6D 69 66 69 39 09 09 3B 5B 70 63    .jm.cmifi9..;[pc
005EB0:  63 30 30 37 5D 0D 0A 09 63 70 69 09 27 5B 27 09    c007]...cpi.'['.
005EC0:  09 3B 5B 70 63 63 30 30 37 5D 20 5B 5C 5D 20 61    .;[pcc007] [\] a
005ED0:  6C 73 6F 20 69 6C 6C 65 67 61 6C 0D 0A 09 6A 6D    lso illegal...jm
005EE0:  09 63 6D 69 66 69 38 09 09 3B 5B 70 63 63 30 30    .cmifi8..;[pcc00
005EF0:  37 5D 0D 0A 09 63 70 69 09 27 5D 27 2B 31 09 09    7]...cpi.']'+1..
005F00:  3B 5B 70 63 63 30 30 37 5D 0D 0A 09 6A 6D 09 63    ;[pcc007]...jm.c
005F10:  6D 69 66 69 39 09 09 3B 5B 70 63 63 30 30 37 5D    mifi9..;[pcc007]
005F20:  0D 0A 09 63 70 69 09 27 5F 27 09 09 3B 5B 35 5D    ...cpi.'_'..;[5]
005F30:  0D 0A 09 6A 7A 09 63 6D 69 66 69 39 09 09 3B 5B    ...jz.cmifi9..;[
005F40:  35 5D 20 28 49 66 20 49 20 77 61 73 20 64 6F 69    5] (If I was doi
005F50:  6E 67 20 43 50 2F 4D 2C 20 49 20 77 6F 75 6C 64    ng CP/M, I would
005F60:  20 68 61 76 65 0D 0A 09 63 70 69 09 27 7C 27 09     have...cpi.'|'.
005F70:  09 3B 5B 35 5D 20 20 6A 75 73 74 20 65 6C 69 6D    .;[5]  just elim
005F80:  69 6E 61 74 65 64 20 61 6C 6C 20 74 68 65 6D 20    inated all them 
005F90:  66 75 6E 6E 79 20 63 68 61 72 73 0D 0A 09 6A 7A    funny chars...jz
005FA0:  09 63 6D 69 66 69 39 09 09 3B 5B 35 5D 20 20 69    .cmifi9..;[5]  i
005FB0:  6E 73 74 65 61 64 20 6F 66 20 61 20 72 61 6E 64    nstead of a rand
005FC0:  6F 6D 20 73 65 6C 65 63 74 69 6F 6E 29 0D 0A 63    om selection)..c
005FD0:  6D 69 66 37 61 3A 09 09 09 09 3B 5B 35 5D 0D 0A    mif7a:....;[5]..
005FE0:  09 63 70 69 09 27 61 27 09 09 3B 5B 70 63 63 30    .cpi.'a'..;[pcc0
005FF0:  30 37 5D 20 69 66 20 6E 6F 74 20 6C 6F 77 65 72    07] if not lower
006000:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
006010:  05 00 00 00 02 09 4E E5 05 00 C1 02 00 00 00 02    ......N.........
006020:  05 00 C6 02 00 00 00 02 05 00 C2 02 00 00 00 02    ................
006030:  05 00 C7 02 00 00 00 02 05 00 C3 02 00 00 00 02    ................
006040:  05 00 C8 02 00 00 00 02 05 00 C4 02 00 00 00 02    ................
006050:  05 00 C9 02 00 00 00 02 05 00 C5 02 00 00 00 02    ................
006060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
006070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
006080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
006090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
006100:  3B 4D 61 6B 65 20 74 68 65 20 63 68 61 72 20 6E    ;Make the char n
006110:  65 67 61 74 69 76 65 20 74 6F 20 69 6E 64 69 63    egative to indic
006120:  61 74 65 20 69 74 20 69 73 0D 0A 09 72 65 74 09    ate it is...ret.
006130:  09 09 3B 61 20 74 65 72 6D 69 6E 61 74 6F 72 2E    ..;a terminator.
006140:  0D 0A 3B 0C 0D 0A 3B 09 52 65 61 64 20 63 68 61    ..;...;.Read cha
006150:  72 61 63 74 65 72 73 20 66 72 6F 6D 20 63 6F 6E    racters from con
006160:  73 6F 6C 65 20 69 6E 74 6F 20 63 6F 6D 6D 61 6E    sole into comman
006170:  64 20 62 75 66 66 65 72 2C 20 70 72 6F 63 65 73    d buffer, proces
006180:  73 69 6E 67 0D 0A 3B 09 65 64 69 74 69 6E 67 20    sing..;.editing 
006190:  63 68 61 72 61 63 74 65 72 73 20 28 5E 48 2C 20    characters (^H, 
0061A0:  5E 4D 2C 20 5E 4A 2C 20 5E 4C 2C 20 5E 55 2C 20    ^M, ^J, ^L, ^U, 
0061B0:  5E 58 2C 20 3F 2C 20 64 65 6C 29 2E 0D 0A 3B 09    ^X, ?, del)...;.
0061C0:  63 61 6C 6C 65 64 20 62 79 3A 20 63 6F 6D 6E 64    called by: comnd
0061D0:  2C 20 63 6D 67 74 63 68 0D 0A 0D 0A 63 6D 69 6E    , cmgtch....cmin
0061E0:  62 66 3A 09 70 75 73 68 09 70 73 77 0D 0A 09 70    bf:.push.psw...p
0061F0:  75 73 68 09 64 0D 0A 09 70 75 73 68 09 68 0D 0A    ush.d...push.h..
006200:  09 6C 64 61 09 63 6D 61 66 6C 67 09 09 3B 49 73    .lda.cmaflg..;Is
006210:  20 74 68 65 20 61 63 74 69 6F 6E 20 63 68 61 72     the action char
006220:  20 66 6C 61 67 20 73 65 74 3F 0D 0A 09 6F 72 61     flag set?...ora
006230:  09 61 0D 0A 09 6A 6E 7A 09 63 6D 69 6E 62 39 09    .a...jnz.cminb9.
006240:  09 3B 49 66 20 73 6F 20 67 65 74 20 6E 6F 20 6D    .;If so get no m
006250:  6F 72 65 20 63 68 61 72 73 2E 0D 0A 63 6D 69 6E    ore chars...cmin
006260:  62 31 3A 09 6C 78 69 09 68 2C 63 6D 63 63 6E 74    b1:.lxi.h,cmccnt
006270:  09 3B 49 6E 63 72 65 6D 65 6E 74 20 74 68 65 20    .;Increment the 
006280:  63 68 61 72 20 63 6F 75 6E 74 2E 0D 0A 09 69 6E    char count....in
006290:  72 09 6D 0D 0A 09 6D 76 69 09 63 2C 63 6F 6E 69    r.m...mvi.c,coni
0062A0:  6E 09 09 3B 47 65 74 20 61 20 63 68 61 72 2E 0D    n..;Get a char..
0062B0:  0A 09 63 61 6C 6C 09 62 64 6F 73 0D 0A 09 6C 68    ..call.bdos...lh
0062C0:  6C 64 09 63 6D 63 70 74 72 09 09 3B 47 65 74 20    ld.cmcptr..;Get 
0062D0:  74 68 65 20 70 6F 69 6E 74 65 72 20 69 6E 74 6F    the pointer into
0062E0:  20 74 68 65 20 62 75 66 66 65 72 2E 0D 0A 09 6D     the buffer....m
0062F0:  6F 76 09 6D 2C 61 09 09 3B 50 75 74 20 69 74 20    ov.m,a..;Put it 
006300:  3B 20 43 50 34 43 50 4D 2E 41 53 4D 0D 0A 3B 09    ; CP4CPM.ASM..;.
006310:  4B 45 52 4D 49 54 20 2D 20 28 43 65 6C 74 69 63    KERMIT - (Celtic
006320:  20 66 6F 72 20 22 46 52 45 45 22 29 0D 0A 3B 0D     for "FREE")..;.
006330:  0A 3B 09 54 68 69 73 20 69 73 20 74 68 65 20 43    .;.This is the C
006340:  50 2F 4D 2D 38 30 20 69 6D 70 6C 65 6D 65 6E 74    P/M-80 implement
006350:  61 74 69 6F 6E 20 6F 66 20 74 68 65 20 43 6F 6C    ation of the Col
006360:  75 6D 62 69 61 20 55 6E 69 76 65 72 73 69 74 79    umbia University
006370:  0D 0A 3B 09 4B 45 52 4D 49 54 20 66 69 6C 65 20    ..;.KERMIT file 
006380:  74 72 61 6E 73 66 65 72 20 70 72 6F 74 6F 63 6F    transfer protoco
006390:  6C 2E 0D 0A 3B 0D 0A 3B 09 56 65 72 73 69 6F 6E    l...;..;.Version
0063A0:  20 34 2E 30 0D 0A 3B 0D 0A 3B 09 43 6F 70 79 72     4.0..;..;.Copyr
0063B0:  69 67 68 74 20 4A 75 6E 65 20 31 39 38 31 2C 31    ight June 1981,1
0063C0:  39 38 32 2C 31 39 38 33 2C 31 39 38 34 0D 0A 3B    982,1983,1984..;
0063D0:  09 43 6F 6C 75 6D 62 69 61 20 55 6E 69 76 65 72    .Columbia Univer
0063E0:  73 69 74 79 0D 0A 3B 0D 0A 3B 20 4F 72 69 67 69    sity..;..; Origi
0063F0:  6E 61 6C 6C 79 20 77 72 69 74 74 65 6E 20 62 79    nally written by
006400:  20 42 69 6C 6C 20 43 61 74 63 68 69 6E 67 73 20     Bill Catchings 
006410:  6F 66 20 74 68 65 20 43 6F 6C 75 6D 62 69 61 20    of the Columbia 
006420:  55 6E 69 76 65 72 73 69 74 79 20 43 65 6E 74 65    University Cente
006430:  72 20 66 6F 72 0D 0A 3B 20 43 6F 6D 70 75 74 69    r for..; Computi
006440:  6E 67 20 41 63 74 69 76 69 74 69 65 73 2C 20 36    ng Activities, 6
006450:  31 32 20 57 2E 20 31 31 35 74 68 20 53 74 2E 2C    12 W. 115th St.,
006460:  20 4E 65 77 20 59 6F 72 6B 2C 20 4E 59 20 31 30     New York, NY 10
006470:  30 32 35 2E 0D 0A 3B 0D 0A 3B 20 43 6F 6E 74 72    025...;..; Contr
006480:  69 62 75 74 69 6F 6E 73 20 62 79 20 46 72 61 6E    ibutions by Fran
006490:  6B 20 64 61 20 43 72 75 7A 2C 20 44 61 70 68 6E    k da Cruz, Daphn
0064A0:  65 20 54 7A 6F 61 72 2C 20 42 65 72 6E 69 65 20    e Tzoar, Bernie 
0064B0:  45 69 62 65 6E 2C 0D 0A 3B 20 42 72 75 63 65 20    Eiben,..; Bruce 
0064C0:  54 61 6E 6E 65 72 2C 20 4E 69 63 6B 20 42 75 73    Tanner, Nick Bus
0064D0:  68 2C 20 47 72 65 67 20 53 6D 61 6C 6C 2C 20 4B    h, Greg Small, K
0064E0:  69 6D 6D 6F 20 4C 61 61 6B 73 6F 6E 65 6E 2C 20    immo Laaksonen, 
0064F0:  4A 65 66 66 20 44 61 6D 65 6E 73 2C 20 61 6E 64    Jeff Damens, and
006500:  69 6E 20 74 68 65 20 62 75 66 66 65 72 2E 0D 0A    in the buffer...
006510:  09 69 6E 78 09 68 0D 0A 09 73 68 6C 64 09 63 6D    .inx.h...shld.cm
006520:  63 70 74 72 0D 0A 09 63 70 69 09 32 35 4F 09 09    cptr...cpi.25O..
006530:  3B 49 73 20 69 74 20 61 20 5E 55 3F 0D 0A 09 6A    ;Is it a ^U?...j
006540:  7A 09 63 6D 6E 62 31 32 09 09 3B 59 65 73 2E 0D    z.cmnb12..;Yes..
006550:  0A 09 63 70 69 09 33 30 4F 09 09 3B 49 73 20 69    ..cpi.30O..;Is i
006560:  74 20 61 20 5E 58 3F 0D 0A 09 6A 6E 7A 09 63 6D    t a ^X?...jnz.cm
006570:  69 6E 62 32 0D 0A 63 6D 6E 62 31 32 3A 09 63 61    inb2..cmnb12:.ca
006580:  6C 6C 09 63 6C 72 6C 69 6E 09 09 3B 43 6C 65 61    ll.clrlin..;Clea
006590:  72 20 74 68 65 20 6C 69 6E 65 2E 0D 0A 09 63 61    r the line....ca
0065A0:  6C 6C 09 70 72 70 72 6D 70 09 09 3B 50 72 69 6E    ll.prprmp..;Prin
0065B0:  74 20 74 68 65 20 70 72 6F 6D 70 74 20 20 5B 54    t the prompt  [T
0065C0:  6F 61 64 20 48 61 6C 6C 5D 0D 0A 09 6C 78 69 09    oad Hall]...lxi.
0065D0:  68 2C 63 6D 64 62 75 66 0D 0A 09 73 68 6C 64 09    h,cmdbuf...shld.
0065E0:  63 6D 63 70 74 72 09 09 3B 52 65 73 65 74 20 74    cmcptr..;Reset t
0065F0:  68 65 20 70 6F 69 6E 74 20 74 6F 20 74 68 65 20    he point to the 
006600:  73 74 61 72 74 2E 0D 0A 09 6C 78 69 09 68 2C 63    start....lxi.h,c
006610:  6D 63 63 6E 74 09 3B 5A 65 72 6F 20 74 68 65 20    mccnt.;Zero the 
006620:  63 6F 75 6E 74 2E 0D 0A 09 6D 76 69 09 6D 2C 30    count....mvi.m,0
006630:  0D 0A 09 6A 6D 70 09 72 65 70 61 72 73 09 09 3B    ...jmp.repars..;
006640:  47 6F 20 73 74 61 72 74 20 6F 76 65 72 2E 0D 0A    Go start over...
006650:  0D 0A 63 6D 69 6E 62 32 3A 09 63 70 69 09 31 30    ..cminb2:.cpi.10
006660:  4F 09 09 3B 42 61 63 6B 73 70 61 63 65 3F 0D 0A    O..;Backspace?..
006670:  09 6A 7A 09 63 6D 69 6E 62 33 0D 0A 09 63 70 69    .jz.cminb3...cpi
006680:  09 64 65 6C 09 09 3B 6F 72 20 44 65 6C 65 74 65    .del..;or Delete
006690:  3F 0D 0A 09 6A 6E 7A 09 63 6D 69 6E 62 34 0D 0A    ?...jnz.cminb4..
0066A0:  09 63 61 6C 6C 09 64 65 6C 63 68 72 09 09 3B 50    .call.delchr..;P
0066B0:  72 69 6E 74 20 74 68 65 20 64 65 6C 65 74 65 20    rint the delete 
0066C0:  73 74 72 69 6E 67 2E 0D 0A 63 6D 69 6E 62 33 3A    string...cminb3:
0066D0:  09 6C 64 61 09 63 6D 63 63 6E 74 09 09 3B 44 65    .lda.cmccnt..;De
0066E0:  63 72 65 6D 65 6E 74 20 74 68 65 20 63 68 61 72    crement the char
0066F0:  20 63 6F 75 6E 74 20 62 79 20 74 77 6F 2E 0D 0A     count by two...
006700:  20 6D 61 6E 79 0D 0A 3B 20 6F 74 68 65 72 73 2E     many..; others.
006710:  0D 0A 3B 0D 0A 3B 09 54 68 69 73 20 66 69 6C 65    ..;..;.This file
006720:  20 64 75 70 6C 69 63 61 74 65 73 20 74 68 65 20     duplicates the 
006730:  43 50 2F 4D 20 44 49 52 20 61 6E 64 20 45 52 41    CP/M DIR and ERA
006740:  20 66 75 6E 63 74 69 6F 6E 73 20 73 6F 20 77 65     functions so we
006750:  20 64 6F 6E 27 74 20 68 61 76 65 0D 0A 3B 09 74     don't have..;.t
006760:  6F 20 65 78 69 74 2E 0D 0A 3B 0D 0A 3B 20 72 65    o exit...;..; re
006770:  76 69 73 69 6F 6E 20 68 69 73 74 6F 72 79 3A 0D    vision history:.
006780:  0A 3B 20 65 64 69 74 20 33 3A 20 4A 75 6C 79 20    .; edit 3: July 
006790:  38 2C 20 31 39 38 34 20 28 43 4A 43 29 0D 0A 3B    8, 1984 (CJC)..;
0067A0:  09 4D 65 72 67 65 20 6D 6F 64 69 66 69 63 61 74    .Merge modificat
0067B0:  69 6F 6E 73 20 66 72 6F 6D 20 54 6F 61 64 20 48    ions from Toad H
0067C0:  61 6C 6C 3A 20 73 75 70 70 6F 72 74 20 4C 41 53    all: support LAS
0067D0:  4D 20 28 6C 69 6E 6B 65 64 20 62 79 20 43 50 34    M (linked by CP4
0067E0:  54 54 2C 0D 0A 3B 09 6C 69 6E 6B 73 20 74 6F 20    TT,..;.links to 
0067F0:  43 50 34 57 4C 44 29 2C 20 75 73 65 20 70 72 63    CP4WLD), use prc
006800:  72 6C 66 20 77 68 65 72 65 20 61 70 70 72 6F 70    rlf where approp
006810:  72 69 61 74 65 2E 0D 0A 3B 0D 0A 3B 20 65 64 69    riate...;..; edi
006820:  74 20 32 3A 20 4A 75 6E 65 20 35 2C 20 31 39 38    t 2: June 5, 198
006830:  34 20 28 43 4A 43 29 0D 0A 3B 09 64 6F 63 75 6D    4 (CJC)..;.docum
006840:  65 6E 74 61 74 69 6F 6E 20 61 6E 64 20 66 6F 72    entation and for
006850:  6D 61 74 74 69 6E 67 3B 20 64 65 6C 65 74 65 20    matting; delete 
006860:  75 6E 75 73 65 64 20 63 6F 64 65 20 28 64 69 72    unused code (dir
006870:  31 33 29 3B 20 61 64 64 20 6D 6F 64 75 6C 65 0D    13); add module.
006880:  0A 3B 09 76 65 72 73 69 6F 6E 20 73 74 72 69 6E    .;.version strin
006890:  67 2E 0D 0A 3B 0D 0A 3B 20 65 64 69 74 20 31 3A    g...;..; edit 1:
0068A0:  20 4D 61 79 2C 20 31 39 38 34 20 28 43 4A 43 29     May, 1984 (CJC)
0068B0:  0D 0A 3B 09 65 78 74 72 61 63 74 65 64 20 66 72    ..;.extracted fr
0068C0:  6F 6D 20 43 50 4D 42 41 53 45 2E 4D 38 30 20 76    om CPMBASE.M80 v
0068D0:  65 72 73 69 6F 6E 20 33 2E 39 3B 20 6D 6F 64 69    ersion 3.9; modi
0068E0:  66 69 63 61 74 69 6F 6E 73 20 61 72 65 20 64 65    fications are de
0068F0:  73 63 72 69 62 65 64 20 69 6E 0D 0A 3B 09 74 68    scribed in..;.th
006900:  09 64 63 72 09 61 0D 0A 09 64 63 72 09 61 0D 0A    .dcr.a...dcr.a..
006910:  09 6F 72 61 09 61 09 09 3B 48 61 76 65 20 77 65    .ora.a..;Have we
006920:  20 67 6F 6E 65 20 74 6F 6F 20 66 61 72 3F 0D 0A     gone too far?..
006930:  09 6A 70 09 63 6D 6E 62 33 32 09 09 3B 49 66 20    .jp.cmnb32..;If 
006940:  6E 6F 74 20 70 72 6F 63 65 65 64 2E 0D 0A 09 6D    not proceed....m
006950:  76 69 09 63 2C 63 6F 6E 6F 75 74 09 3B 52 69 6E    vi.c,conout.;Rin
006960:  67 20 74 68 65 20 62 65 6C 6C 2E 0D 0A 09 6D 76    g the bell....mv
006970:  69 09 65 2C 62 65 6C 6C 0D 0A 09 63 61 6C 6C 09    i.e,bell...call.
006980:  62 64 6F 73 0D 0A 09 6A 6D 70 09 63 6D 6E 62 31    bdos...jmp.cmnb1
006990:  32 09 09 3B 47 6F 20 72 65 70 72 69 6E 74 20 70    2..;Go reprint p
0069A0:  72 6F 6D 70 74 20 61 6E 64 20 72 65 70 61 72 73    rompt and repars
0069B0:  65 2E 0D 0A 0D 0A 63 6D 6E 62 33 32 3A 09 73 74    e.....cmnb32:.st
0069C0:  61 09 63 6D 63 63 6E 74 09 09 3B 53 61 76 65 20    a.cmccnt..;Save 
0069D0:  74 68 65 20 6E 65 77 20 63 68 61 72 20 63 6F 75    the new char cou
0069E0:  6E 74 2E 0D 0A 09 63 61 6C 6C 09 63 6C 72 73 70    nt....call.clrsp
0069F0:  63 09 09 3B 45 72 61 73 65 20 74 68 65 20 63 68    c..;Erase the ch
006A00:  61 72 61 63 74 65 72 2E 0D 0A 09 6C 68 6C 64 09    aracter....lhld.
006A10:  63 6D 63 70 74 72 09 09 3B 47 65 74 20 74 68 65    cmcptr..;Get the
006A20:  20 70 6F 69 6E 74 65 72 20 69 6E 74 6F 20 74 68     pointer into th
006A30:  65 20 62 75 66 66 65 72 2E 0D 0A 09 64 63 78 09    e buffer....dcx.
006A40:  68 09 09 3B 42 61 63 6B 20 75 70 20 69 6E 20 74    h..;Back up in t
006A50:  68 65 20 62 75 66 66 65 72 2E 0D 0A 09 64 63 78    he buffer....dcx
006A60:  09 68 0D 0A 09 73 68 6C 64 09 63 6D 63 70 74 72    .h...shld.cmcptr
006A70:  0D 0A 09 6A 6D 70 09 72 65 70 61 72 73 09 09 3B    ...jmp.repars..;
006A80:  47 6F 20 72 65 70 61 72 73 65 20 65 76 65 72 79    Go reparse every
006A90:  74 68 69 6E 67 2E 0D 0A 0D 0A 63 6D 69 6E 62 34    thing.....cminb4
006AA0:  3A 09 63 70 69 09 27 3F 27 09 09 3B 49 73 20 69    :.cpi.'?'..;Is i
006AB0:  74 20 61 20 71 75 65 73 74 69 6F 6E 20 6D 61 72    t a question mar
006AC0:  6B 2E 0D 0A 09 6A 7A 09 63 6D 69 6E 62 36 0D 0A    k....jz.cminb6..
006AD0:  09 63 70 69 09 65 73 63 09 09 3B 49 73 20 69 74    .cpi.esc..;Is it
006AE0:  20 61 6E 20 65 73 63 61 70 65 3F 0D 0A 09 6A 7A     an escape?...jz
006AF0:  09 63 6D 69 6E 62 36 0D 0A 09 63 70 69 09 63 72    .cminb6...cpi.cr
006B00:  65 20 61 63 63 6F 6D 70 61 6E 79 69 6E 67 20 2E    e accompanying .
006B10:  55 50 44 20 66 69 6C 65 2E 0D 0A 3B 0D 0A 63 70    UPD file...;..cp
006B20:  6D 76 65 72 3A 09 64 62 09 27 43 50 34 43 50 4D    mver:.db.'CP4CPM
006B30:  2E 41 53 4D 20 28 33 29 20 20 38 2D 4A 75 6C 2D    .ASM (3)  8-Jul-
006B40:  38 34 24 27 09 3B 20 6E 61 6D 65 2C 20 65 64 69    84$'.; name, edi
006B50:  74 20 6E 75 6D 62 65 72 2C 20 64 61 74 65 0D 0A    t number, date..
006B60:  0D 0A 6E 70 6C 09 45 51 55 09 30 34 48 09 3B 4E    ..npl.EQU.04H.;N
006B70:  75 6D 62 65 72 20 6F 66 20 6E 61 6D 65 73 20 70    umber of names p
006B80:  65 72 20 6C 69 6E 65 20 66 6F 72 20 64 69 72 20    er line for dir 
006B90:  63 6F 6D 6D 61 6E 64 2E 0D 0A 0D 0A 3B 09 54 68    command.....;.Th
006BA0:  69 73 20 69 73 20 74 68 65 20 44 49 52 20 63 6F    is is the DIR co
006BB0:  6D 6D 61 6E 64 2E 20 20 44 69 73 70 6C 61 79 20    mmand.  Display 
006BC0:  74 68 65 20 6E 61 6D 65 20 61 6E 64 20 73 69 7A    the name and siz
006BD0:  65 20 6F 66 20 61 6C 6C 20 66 69 6C 65 73 0D 0A    e of all files..
006BE0:  3B 09 6D 61 74 63 68 69 6E 67 20 74 68 65 20 66    ;.matching the f
006BF0:  69 6C 65 73 70 65 63 2E 0D 0A 3B 09 68 65 72 65    ilespec...;.here
006C00:  20 66 72 6F 6D 3A 20 6B 65 72 6D 69 74 0D 0A 3B     from: kermit..;
006C10:  0D 0A 3B 09 4E 6F 74 65 3A 20 54 68 69 73 20 69    ..;.Note: This i
006C20:  73 20 61 62 73 74 72 61 63 74 65 64 20 66 72 6F    s abstracted fro
006C30:  6D 20 4B 65 69 74 68 20 50 65 74 65 72 73 6F 6E    m Keith Peterson
006C40:  27 73 20 44 49 52 46 2E 41 53 4D 0D 0A 3B 09 09    's DIRF.ASM..;..
006C50:  64 69 72 65 63 74 6F 72 79 20 70 72 69 6E 74 20    directory print 
006C60:  66 75 6E 63 74 69 6F 6E 2E 20 20 54 68 61 6E 6B    function.  Thank
006C70:  73 20 61 67 61 69 6E 20 4B 65 69 74 68 2E 0D 0A    s again Keith...
006C80:  3B 0D 0A 3B 0D 0A 64 69 72 3A 09 6C 78 69 09 64    ;..;..dir:.lxi.d
006C90:  2C 66 63 62 09 09 3B 57 68 65 72 65 20 74 6F 20    ,fcb..;Where to 
006CA0:  70 75 74 20 74 68 65 20 64 61 74 61 2C 20 69 66    put the data, if
006CB0:  20 61 6E 79 2E 0D 0A 09 6D 76 69 09 61 2C 63 6D     any....mvi.a,cm
006CC0:  69 66 69 6E 0D 0A 09 63 61 6C 6C 09 63 6F 6D 6E    ifin...call.comn
006CD0:  64 09 09 3B 50 61 72 73 65 20 61 20 66 75 6C 6C    d..;Parse a full
006CE0:  20 6F 72 20 70 69 65 63 65 20 6F 66 20 66 69 6C     or piece of fil
006CF0:  65 2D 73 70 65 63 0D 0A 09 20 6A 6D 70 09 64 69    e-spec... jmp.di
006D00:  09 09 3B 49 73 20 69 74 20 61 20 63 61 72 72 69    ..;Is it a carri
006D10:  61 67 65 20 72 65 74 75 72 6E 3F 0D 0A 09 6A 7A    age return?...jz
006D20:  09 63 6D 69 6E 62 35 0D 0A 09 63 70 69 09 6C 66    .cminb5...cpi.lf
006D30:  09 09 3B 49 73 20 69 74 20 61 20 6C 69 6E 65 20    ..;Is it a line 
006D40:  66 65 65 64 3F 0D 0A 09 6A 7A 09 63 6D 69 6E 62    feed?...jz.cminb
006D50:  35 0D 0A 09 63 70 69 09 66 66 09 09 3B 49 73 20    5...cpi.ff..;Is 
006D60:  69 74 20 61 20 66 6F 72 6D 66 65 65 64 3F 0D 0A    it a formfeed?..
006D70:  09 6A 6E 7A 09 63 6D 69 6E 62 31 09 09 3B 6E 6F    .jnz.cminb1..;no
006D80:  20 2D 20 6A 75 73 74 20 73 74 6F 72 65 20 69 74     - just store it
006D90:  20 61 6E 64 20 67 65 74 20 61 6E 6F 74 68 65 72     and get another
006DA0:  20 63 68 61 72 61 63 74 65 72 2E 0D 0A 09 63 61     character....ca
006DB0:  6C 6C 09 63 6C 72 74 6F 70 0D 0A 63 6D 69 6E 62    ll.clrtop..cminb
006DC0:  35 3A 09 6C 64 61 09 63 6D 63 63 6E 74 09 09 3B    5:.lda.cmccnt..;
006DD0:  48 61 76 65 20 77 65 20 70 61 72 73 65 64 20 61    Have we parsed a
006DE0:  6E 79 20 63 68 61 72 73 20 79 65 74 3F 0D 0A 09    ny chars yet?...
006DF0:  63 70 69 09 31 0D 0A 09 6A 7A 09 70 72 73 65 72    cpi.1...jz.prser
006E00:  72 09 09 3B 49 66 20 6E 6F 74 2C 20 6A 75 73 74    r..;If not, just
006E10:  20 73 74 61 72 74 20 6F 76 65 72 2E 0D 0A 63 6D     start over...cm
006E20:  69 6E 62 36 3A 09 6D 76 69 09 61 2C 30 46 46 48    inb6:.mvi.a,0FFH
006E30:  09 09 3B 53 65 74 20 74 68 65 20 61 63 74 69 6F    ..;Set the actio
006E40:  6E 20 66 6C 61 67 2E 0D 0A 09 73 74 61 09 63 6D    n flag....sta.cm
006E50:  61 66 6C 67 0D 0A 09 6A 6D 70 09 63 6D 69 6E 62    aflg...jmp.cminb
006E60:  39 0D 0A 0D 0A 63 6D 69 6E 62 39 3A 09 70 6F 70    9....cminb9:.pop
006E70:  09 68 0D 0A 09 70 6F 70 09 64 0D 0A 09 70 6F 70    .h...pop.d...pop
006E80:  09 70 73 77 0D 0A 09 72 65 74 0D 0A 3B 0C 0D 0A    .psw...ret..;...
006E90:  3B 4C 69 74 74 6C 65 20 75 74 69 6C 69 74 79 20    ;Little utility 
006EA0:  74 6F 20 70 72 69 6E 74 20 74 68 65 20 70 72 6F    to print the pro
006EB0:  6D 70 74 2E 20 20 28 57 65 20 64 6F 20 61 20 4C    mpt.  (We do a L
006EC0:  4F 54 20 6F 66 20 74 68 65 73 65 2E 29 20 20 5B    OT of these.)  [
006ED0:  54 6F 61 64 20 48 61 6C 6C 5D 0D 0A 3B 45 6E 74    Toad Hall]..;Ent
006EE0:  65 72 73 20 77 69 74 68 20 6E 6F 74 68 69 6E 67    ers with nothing
006EF0:  2E 0D 0A 3B 44 65 73 74 72 6F 79 73 20 48 4C 20    ...;Destroys HL 
006F00:  72 32 09 09 3B 44 69 64 6E 27 74 20 67 65 74 20    r2..;Didn't get 
006F10:  61 20 46 55 4C 4C 20 66 69 6C 65 2D 73 70 65 63    a FULL file-spec
006F20:  0D 0A 09 6A 6D 70 09 64 69 72 34 09 09 3B 6C 65    ...jmp.dir4..;le
006F30:  74 73 20 64 6F 20 69 74 0D 0A 3B 0D 0A 3B 0D 0A    ts do it..;..;..
006F40:  3B 4D 61 6B 65 20 46 43 42 20 61 6C 6C 20 27 3F    ;Make FCB all '?
006F50:  27 20 74 6F 20 6D 61 74 63 68 20 61 6E 79 20 66    ' to match any f
006F60:  69 6C 65 0D 0A 64 69 72 32 3A 09 6C 64 61 09 66    ile..dir2:.lda.f
006F70:  63 62 0D 0A 09 63 70 69 09 27 20 27 09 09 3B 43    cb...cpi.' '..;C
006F80:  4D 49 46 49 4E 20 6C 65 61 76 65 73 20 74 68 61    MIFIN leaves tha
006F90:  74 20 61 73 20 27 20 27 0D 0A 09 6A 6E 7A 09 64    t as ' '...jnz.d
006FA0:  69 72 32 61 09 09 3B 68 65 20 74 79 70 65 64 20    ir2a..;he typed 
006FB0:  61 74 20 6C 65 61 73 74 20 78 3A 0D 0A 09 78 72    at least x:...xr
006FC0:  61 09 61 0D 0A 09 73 74 61 09 66 63 62 09 09 3B    a.a...sta.fcb..;
006FD0:  64 65 66 61 75 6C 74 20 64 72 69 76 65 0D 0A 64    default drive..d
006FE0:  69 72 32 61 3A 09 6C 78 69 09 68 2C 66 63 62 2B    ir2a:.lxi.h,fcb+
006FF0:  31 0D 0A 09 6D 76 69 09 62 2C 31 31 09 09 3B 46    1...mvi.b,11..;F
007000:  4E 2B 46 54 20 63 6F 75 6E 74 2E 0D 0A 0D 0A 64    N+FT count.....d
007010:  69 72 33 3A 09 6D 76 69 09 6D 2C 27 3F 27 09 09    ir3:.mvi.m,'?'..
007020:  3B 53 74 6F 72 65 20 27 3F 27 73 20 69 6E 20 46    ;Store '?'s in F
007030:  43 42 2E 0D 0A 09 69 6E 78 09 68 0D 0A 09 64 63    CB....inx.h...dc
007040:  72 09 62 0D 0A 09 6A 6E 7A 09 64 69 72 33 0D 0A    r.b...jnz.dir3..
007050:  3B 50 72 69 6E 74 20 73 69 67 6E 6F 6E 20 6D 65    ;Print signon me
007060:  73 73 61 67 65 20 61 6E 64 20 64 72 69 76 65 20    ssage and drive 
007070:  6E 61 6D 65 0D 0A 64 69 72 34 3A 09 6C 64 61 09    name..dir4:.lda.
007080:  66 63 62 0D 0A 09 6F 72 61 09 61 09 09 3B 69 66    fcb...ora.a..;if
007090:  20 6E 6F 74 20 7A 65 72 6F 2C 20 67 65 74 20 64     not zero, get d
0070A0:  65 66 61 75 6C 74 0D 0A 09 6A 6E 7A 09 64 69 72    efault...jnz.dir
0070B0:  34 61 0D 0A 09 6C 64 61 09 63 75 72 64 73 6B 09    4a...lda.curdsk.
0070C0:  09 3B 67 65 74 20 64 65 66 61 75 6C 74 0D 0A 64    .;get default..d
0070D0:  69 72 34 61 3A 09 61 64 69 09 27 41 27 2D 31 09    ir4a:.adi.'A'-1.
0070E0:  09 3B 41 73 63 69 69 7A 65 20 69 74 0D 0A 09 73    .;Asciize it...s
0070F0:  74 61 09 64 6E 61 6D 31 34 09 09 3B 53 61 76 65    ta.dnam14..;Save
007100:  28 61 6E 64 20 49 20 73 75 70 70 6F 73 65 20 42    (and I suppose B
007110:  20 61 6E 64 20 44 45 20 61 6E 64 20 41 29 2E 0D     and DE and A)..
007120:  0A 0D 0A 70 72 70 72 6D 70 3A 09 6C 68 6C 64 09    ...prprmp:.lhld.
007130:  63 6D 70 72 6D 70 09 09 3B 47 65 74 20 74 68 65    cmprmp..;Get the
007140:  20 70 72 6F 6D 70 74 2E 0D 0A 09 78 63 68 67 0D     prompt....xchg.
007150:  0A 09 63 61 6C 6C 09 70 72 74 73 74 72 0D 0A 09    ..call.prtstr...
007160:  72 65 74 0D 0A 0D 0A 49 46 09 6C 61 73 6D 0D 0A    ret....IF.lasm..
007170:  4C 49 4E 4B 09 43 50 34 55 54 4C 0D 0A 45 4E 44    LINK.CP4UTL..END
007180:  49 46 09 3B 6C 61 73 6D 20 20 5B 54 6F 61 64 20    IF.;lasm  [Toad 
007190:  48 61 6C 6C 5D 0D 0A 00 00 00 00 00 00 00 00 00    Hall]...........
0071A0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0071B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0071C0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0071D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0071E0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0071F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007200:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007210:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007220:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007230:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007240:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007250:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007260:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007270:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007280:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007290:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0072A0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0072B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0072C0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0072D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0072E0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0072F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
007310:  06 00 00 00 02 09 4E E5 06 00 C1 02 00 00 00 02    ......N.........
007320:  06 00 C6 02 00 00 00 02 06 00 C2 02 00 00 00 02    ................
007330:  06 00 C7 02 00 00 00 02 06 00 C3 02 00 00 00 02    ................
007340:  06 00 C8 02 00 00 00 02 06 00 C4 02 00 00 00 02    ................
007350:  06 00 C9 02 00 00 00 02 06 00 C5 02 00 00 00 02    ................
007360:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007370:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007380:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007390:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007400:  20 69 74 20 69 6E 20 6D 65 73 73 61 67 65 2E 0D     it in message..
007410:  0A 09 63 61 6C 6C 09 70 72 63 72 6C 66 0D 0A 09    ..call.prcrlf...
007420:  6C 78 69 09 64 2C 69 6E 6D 73 31 34 09 3B 50 6F    lxi.d,inms14.;Po
007430:  69 6E 74 20 74 6F 20 6D 65 73 73 61 67 65 0D 0A    int to message..
007440:  09 63 61 6C 6C 09 70 72 74 73 74 72 0D 0A 3B 0D    .call.prtstr..;.
007450:  0A 3B 49 6E 69 74 69 61 6C 69 7A 65 20 6E 75 6D    .;Initialize num
007460:  62 65 72 20 6F 66 20 6E 61 6D 65 73 20 70 65 72    ber of names per
007470:  20 6C 69 6E 65 20 63 6F 75 6E 74 65 72 0D 0A 09     line counter...
007480:  6D 76 69 09 61 2C 6E 70 6C 09 09 3B 4E 72 2E 20    mvi.a,npl..;Nr. 
007490:  6E 61 6D 65 73 20 70 65 72 20 6C 69 6E 65 2E 0D    names per line..
0074A0:  0A 09 73 74 61 09 6E 6E 61 6D 73 09 09 3B 49 6E    ..sta.nnams..;In
0074B0:  69 74 20 63 6F 75 6E 74 65 72 2E 0D 0A 3B 0D 0A    it counter...;..
0074C0:  09 63 61 6C 6C 09 64 69 72 32 36 09 09 3B 47 65    .call.dir26..;Ge
0074D0:  74 20 64 69 73 6B 20 70 61 72 61 6D 65 74 65 72    t disk parameter
0074E0:  73 0D 0A 64 69 72 35 3A 09 63 61 6C 6C 09 6D 66    s..dir5:.call.mf
0074F0:  6E 61 6D 65 09 09 3B 67 65 74 20 73 6F 6D 65 20    name..;get some 
007500:  6E 61 6D 65 73 0D 0A 09 6A 6E 63 09 64 69 72 36    names...jnc.dir6
007510:  09 09 3B 67 6F 74 20 6F 6E 65 0D 0A 09 6A 6D 70    ..;got one...jmp
007520:  09 64 69 72 31 37 09 09 3B 67 6F 74 20 6E 6F 6E    .dir17..;got non
007530:  65 20 2D 20 64 6F 20 73 75 6D 6D 61 72 79 0D 0A    e - do summary..
007540:  0D 0A 64 69 72 36 3A 09 09 09 09 3B 43 68 65 63    ..dir6:....;Chec
007550:  6B 20 66 6F 72 20 63 6F 6E 73 6F 6C 65 20 62 72    k for console br
007560:  65 61 6B 0D 0A 09 6D 76 69 09 63 2C 63 6F 6E 73    eak...mvi.c,cons
007570:  74 61 09 3B 43 6B 20 73 74 61 74 75 73 20 6F 66    ta.;Ck status of
007580:  20 6B 62 64 2E 0D 0A 09 63 61 6C 6C 09 62 64 6F     kbd....call.bdo
007590:  73 0D 0A 09 6F 72 61 09 61 09 09 3B 41 6E 79 20    s...ora.a..;Any 
0075A0:  6B 65 79 20 70 72 65 73 73 65 64 3F 0D 0A 09 6A    key pressed?...j
0075B0:  7A 09 64 69 72 36 61 09 09 3B 6E 6F 70 65 2C 20    z.dir6a..;nope, 
0075C0:  6B 65 65 70 20 67 6F 69 6E 67 0D 0A 09 6D 76 69    keep going...mvi
0075D0:  09 63 2C 63 6F 6E 69 6E 0D 0A 09 63 61 6C 6C 09    .c,conin...call.
0075E0:  62 64 6F 73 09 09 3B 67 6F 62 62 6C 65 20 6B 65    bdos..;gobble ke
0075F0:  79 0D 0A 09 6A 6D 70 09 64 69 72 31 37 09 09 3B    y...jmp.dir17..;
007600:  61 6C 6C 09 70 72 74 73 74 72 0D 0A 09 6A 6D 70    all.prtstr...jmp
007610:  09 64 69 72 31 36 09 09 3B 61 6C 6C 20 64 6F 6E    .dir16..;all don
007620:  65 0D 0A 0D 0A 3B 43 6F 6D 70 75 74 65 20 74 68    e....;Compute th
007630:  65 20 73 69 7A 65 20 6F 66 20 74 68 65 20 66 69    e size of the fi
007640:  6C 65 0D 0A 0D 0A 64 69 72 32 35 3A 09 6D 76 69    le....dir25:.mvi
007650:  09 63 2C 63 66 6C 73 7A 09 09 3B 67 65 74 20 66    .c,cflsz..;get f
007660:  69 6C 65 2D 73 69 7A 65 0D 0A 09 6C 78 69 09 64    ile-size...lxi.d
007670:  2C 66 63 62 0D 0A 09 63 61 6C 6C 09 62 64 6F 73    ,fcb...call.bdos
007680:  0D 0A 09 6C 64 61 09 66 63 62 72 6E 6F 09 09 3B    ...lda.fcbrno..;
007690:  73 68 69 66 74 20 6C 65 61 73 74 20 73 69 67 6E    shift least sign
0076A0:  2E 20 70 61 72 74 0D 0A 09 6C 78 69 09 62 2C 30    . part...lxi.b,0
0076B0:  09 09 3B 69 6E 69 74 20 62 63 0D 0A 09 6D 6F 76    ..;init bc...mov
0076C0:  09 6C 2C 61 0D 0A 09 61 6E 69 09 37 0D 0A 09 6A    .l,a...ani.7...j
0076D0:  7A 09 64 69 72 32 35 30 09 09 3B 65 76 65 6E 20    z.dir250..;even 
0076E0:  4B 0D 0A 09 6C 78 69 09 62 2C 31 09 09 3B 73 61    K...lxi.b,1..;sa
0076F0:  76 65 20 66 6F 72 20 6C 61 74 65 72 0D 0A 64 69    ve for later..di
007700:  72 32 35 30 3A 09 70 75 73 68 09 62 09 09 3B 73    r250:.push.b..;s
007710:  61 76 65 20 30 20 6F 72 20 31 20 74 6F 20 61 64    ave 0 or 1 to ad
007720:  64 20 74 6F 20 73 69 7A 65 0D 0A 09 6D 76 69 09    d to size...mvi.
007730:  62 2C 33 09 09 3B 73 68 69 66 74 20 33 20 62 69    b,3..;shift 3 bi
007740:  74 73 0D 0A 64 69 72 32 35 61 3A 09 78 72 61 09    ts..dir25a:.xra.
007750:  61 09 09 3B 63 6C 65 61 72 20 73 69 67 6E 0D 0A    a..;clear sign..
007760:  09 6C 64 61 09 66 63 62 72 6E 6F 2B 31 09 3B 67    .lda.fcbrno+1.;g
007770:  65 74 20 6D 6F 73 74 20 73 69 67 20 62 79 74 65    et most sig byte
007780:  0D 0A 09 72 61 72 09 09 09 3B 73 68 69 66 74 20    ...rar...;shift 
007790:  72 69 67 68 74 0D 0A 09 73 74 61 09 66 63 62 72    right...sta.fcbr
0077A0:  6E 6F 2B 31 09 3B 70 75 74 20 62 61 63 6B 0D 0A    no+1.;put back..
0077B0:  09 6C 64 61 09 66 63 62 72 6E 6F 09 09 3B 67 65    .lda.fcbrno..;ge
0077C0:  74 20 6C 65 61 73 74 20 73 69 67 20 70 61 72 74    t least sig part
0077D0:  0D 0A 09 72 61 72 0D 0A 09 73 74 61 09 66 63 62    ...rar...sta.fcb
0077E0:  72 6E 6F 0D 0A 09 64 63 72 09 62 09 09 3B 6C 6F    rno...dcr.b..;lo
0077F0:  6F 70 20 33 20 74 69 6D 65 73 0D 0A 09 6A 6E 7A    op 3 times...jnz
007800:  61 6E 64 20 70 72 69 6E 74 20 73 75 6D 6D 61 72    and print summar
007810:  79 20 6F 6E 6C 79 0D 0A 0D 0A 3B 50 72 69 6E 74    y only....;Print
007820:  20 61 6E 20 65 6E 74 72 79 0D 0A 64 69 72 36 61     an entry..dir6a
007830:  3A 09 6C 78 69 09 68 2C 66 63 62 2B 31 09 09 3B    :.lxi.h,fcb+1..;
007840:  70 6F 69 6E 74 20 74 6F 20 46 69 6C 65 6E 61 6D    point to Filenam
007850:  65 0D 0A 09 6D 76 69 09 62 2C 38 09 09 3B 46 69    e...mvi.b,8..;Fi
007860:  6C 65 20 6E 61 6D 65 20 6C 65 6E 67 74 68 2E 0D    le name length..
007870:  0A 09 63 61 6C 6C 09 64 69 72 31 31 09 09 3B 54    ..call.dir11..;T
007880:  79 70 65 20 66 69 6C 65 6E 61 6D 65 2E 0D 0A 09    ype filename....
007890:  6D 76 69 09 61 2C 27 2E 27 09 09 3B 50 65 72 69    mvi.a,'.'..;Peri
0078A0:  6F 64 20 61 66 74 65 72 20 46 4E 2E 0D 0A 09 63    od after FN....c
0078B0:  61 6C 6C 09 64 69 72 31 30 0D 0A 09 6D 76 69 09    all.dir10...mvi.
0078C0:  62 2C 33 09 20 09 3B 47 65 74 20 74 68 65 20 66    b,3. .;Get the f
0078D0:  69 6C 65 74 79 70 65 2E 0D 0A 09 63 61 6C 6C 09    iletype....call.
0078E0:  64 69 72 31 31 0D 0A 09 63 61 6C 6C 09 64 69 72    dir11...call.dir
0078F0:  32 35 09 09 3B 70 72 69 6E 74 20 73 69 7A 65 0D    25..;print size.
007900:  0A 09 6C 78 69 09 68 2C 6E 6E 61 6D 73 09 20 09    ..lxi.h,nnams. .
007910:  3B 50 6F 69 6E 74 20 74 6F 20 6E 61 6D 65 73 20    ;Point to names 
007920:  63 6F 75 6E 74 65 72 2E 0D 0A 09 64 63 72 09 6D    counter....dcr.m
007930:  09 20 09 3B 4F 6E 65 20 6C 65 73 73 20 6F 6E 20    . .;One less on 
007940:  74 68 69 73 20 6C 69 6E 65 2E 0D 0A 09 70 75 73    this line....pus
007950:  68 09 70 73 77 0D 0A 09 63 6E 7A 09 64 69 72 37    h.psw...cnz.dir7
007960:  09 20 09 3B 4E 6F 20 63 72 2D 6C 66 20 6E 65 65    . .;No cr-lf nee
007970:  64 65 64 2C 20 64 6F 20 66 65 6E 63 65 2E 0D 0A    ded, do fence...
007980:  09 70 6F 70 09 70 73 77 0D 0A 09 63 7A 09 64 69    .pop.psw...cz.di
007990:  72 31 32 09 20 09 3B 43 72 2D 6C 66 20 6E 65 65    r12. .;Cr-lf nee
0079A0:  64 65 64 2E 0D 0A 09 6A 6D 70 09 64 69 72 35 0D    ded....jmp.dir5.
0079B0:  0A 0D 0A 3B 50 72 69 6E 74 20 73 70 61 63 65 2C    ...;Print space,
0079C0:  20 66 65 6E 63 65 20 63 68 61 72 61 63 74 65 72     fence character
0079D0:  2C 20 74 68 65 6E 20 73 70 61 63 65 0D 0A 64 69    , then space..di
0079E0:  72 37 3A 09 63 61 6C 6C 09 64 69 72 39 0D 0A 09    r7:.call.dir9...
0079F0:  6D 76 69 09 61 2C 27 3A 27 09 20 09 3B 46 65 6E    mvi.a,':'. .;Fen
007A00:  09 64 69 72 32 35 61 0D 0A 09 6D 6F 76 09 6C 2C    .dir25a...mov.l,
007A10:  61 09 09 3B 73 69 7A 65 20 69 6E 20 48 4C 0D 0A    a..;size in HL..
007A20:  09 6C 64 61 09 66 63 62 72 6E 6F 2B 31 0D 0A 09    .lda.fcbrno+1...
007A30:  6D 6F 76 09 68 2C 61 0D 0A 09 70 6F 70 09 62 09    mov.h,a...pop.b.
007A40:  09 3B 67 65 74 20 30 20 6F 72 20 31 0D 0A 09 64    .;get 0 or 1...d
007A50:  61 64 09 62 09 09 3B 72 6F 75 6E 64 20 75 70 20    ad.b..;round up 
007A60:  74 6F 20 4B 42 20 75 73 65 64 0D 0A 09 6C 64 61    to KB used...lda
007A70:  09 62 6D 61 73 6B 09 09 3B 67 65 74 20 28 73 65    .bmask..;get (se
007A80:  63 74 6F 72 73 2F 62 6C 6F 63 6B 29 2D 31 0D 0A    ctors/block)-1..
007A90:  09 72 72 63 0D 0A 09 72 72 63 09 09 09 3B 67 65    .rrc...rrc...;ge
007AA0:  74 20 28 4B 2F 62 6C 6F 63 6B 29 2D 31 0D 0A 09    t (K/block)-1...
007AB0:  72 72 63 0D 0A 09 61 6E 69 09 31 46 48 0D 0A 09    rrc...ani.1FH...
007AC0:  6D 6F 76 09 63 2C 61 0D 0A 09 64 61 64 09 62 09    mov.c,a...dad.b.
007AD0:  09 3B 61 64 64 20 28 4B 2F 62 6C 6F 63 6B 29 2D    .;add (K/block)-
007AE0:  31 20 74 6F 20 73 69 7A 65 20 74 6F 20 72 6F 75    1 to size to rou
007AF0:  6E 64 20 75 70 0D 0A 09 63 6D 61 09 09 09 3B 6D    nd up...cma...;m
007B00:  61 6B 65 20 61 20 6D 61 73 6B 0D 0A 09 61 6E 61    ake a mask...ana
007B10:  09 6C 09 09 3B 74 72 75 6E 63 61 74 65 20 61 66    .l..;truncate af
007B20:  74 65 72 20 72 6F 75 6E 64 69 6E 67 20 75 70 0D    ter rounding up.
007B30:  0A 09 6D 6F 76 09 6C 2C 61 0D 0A 09 70 75 73 68    ..mov.l,a...push
007B40:  09 68 0D 0A 09 6C 78 69 09 62 2C 2D 31 30 09 09    .h...lxi.b,-10..
007B50:  3B 73 75 62 74 72 61 63 74 20 31 30 0D 0A 09 64    ;subtract 10...d
007B60:  61 64 09 62 0D 0A 09 6A 63 09 64 69 72 32 35 64    ad.b...jc.dir25d
007B70:  09 09 3B 3E 3D 20 31 30 0D 0A 09 63 61 6C 6C 09    ..;>= 10...call.
007B80:  64 69 72 38 09 09 3B 20 70 72 69 6E 74 20 61 20    dir8..; print a 
007B90:  6C 65 61 64 69 6E 67 20 73 70 61 63 65 0D 0A 09    leading space...
007BA0:  6A 6D 70 09 64 69 72 32 35 65 0D 0A 0D 0A 64 69    jmp.dir25e....di
007BB0:  72 32 35 64 3A 09 70 6F 70 09 68 09 09 3B 67 65    r25d:.pop.h..;ge
007BC0:  74 20 73 69 7A 65 20 61 67 61 69 6E 0D 0A 09 70    t size again...p
007BD0:  75 73 68 09 68 0D 0A 09 6C 78 69 09 62 2C 2D 31    ush.h...lxi.b,-1
007BE0:  30 30 09 09 3B 73 75 62 74 72 61 63 74 20 31 30    00..;subtract 10
007BF0:  30 0D 0A 09 64 61 64 09 62 0D 0A 09 6A 63 09 64    0...dad.b...jc.d
007C00:  63 65 20 63 68 61 72 61 63 74 65 72 2E 0D 0A 09    ce character....
007C10:  63 61 6C 6C 09 64 69 72 31 30 0D 0A 09 6A 6D 70    call.dir10...jmp
007C20:  09 64 69 72 39 0D 0A 0D 0A 3B 20 64 69 72 38 20    .dir9....; dir8 
007C30:  2D 20 50 72 69 6E 74 20 74 77 6F 20 73 70 61 63    - Print two spac
007C40:  65 73 0D 0A 3B 20 64 69 72 39 20 2D 20 50 72 69    es..; dir9 - Pri
007C50:  6E 74 20 6F 6E 65 20 73 70 61 63 65 0D 0A 3B 20    nt one space..; 
007C60:  64 69 72 31 30 20 2D 20 54 79 70 65 20 63 68 61    dir10 - Type cha
007C70:  72 20 69 6E 20 41 20 72 65 67 69 73 74 65 72 0D    r in A register.
007C80:  0A 64 69 72 38 3A 09 63 61 6C 6C 09 64 69 72 39    .dir8:.call.dir9
007C90:  0D 0A 64 69 72 39 3A 09 6D 76 69 09 61 2C 27 20    ..dir9:.mvi.a,' 
007CA0:  27 0D 0A 64 69 72 31 30 3A 09 70 75 73 68 09 62    '..dir10:.push.b
007CB0:  0D 0A 09 70 75 73 68 09 64 0D 0A 09 70 75 73 68    ...push.d...push
007CC0:  09 68 0D 0A 09 6D 6F 76 09 65 2C 61 09 20 09 3B    .h...mov.e,a. .;
007CD0:  43 68 61 72 20 74 6F 20 45 20 66 6F 72 20 43 50    Char to E for CP
007CE0:  2F 4D 2E 0D 0A 09 6D 76 69 09 63 2C 63 6F 6E 6F    /M....mvi.c,cono
007CF0:  75 74 09 3B 57 72 69 74 65 20 63 68 61 72 20 74    ut.;Write char t
007D00:  6F 20 63 6F 6E 73 6F 6C 65 20 66 75 6E 63 74 69    o console functi
007D10:  6F 6E 2E 0D 0A 09 63 61 6C 6C 09 62 64 6F 73 0D    on....call.bdos.
007D20:  0A 09 70 6F 70 09 68 0D 0A 09 70 6F 70 20 09 64    ..pop.h...pop .d
007D30:  0D 0A 09 70 6F 70 09 62 0D 0A 09 72 65 74 0D 0A    ...pop.b...ret..
007D40:  0D 0A 3B 54 79 70 65 20 28 42 29 20 63 68 61 72    ..;Type (B) char
007D50:  61 63 74 65 72 73 20 66 72 6F 6D 20 6D 65 6D 6F    acters from memo
007D60:  72 79 20 28 48 4C 29 0D 0A 64 69 72 31 31 3A 09    ry (HL)..dir11:.
007D70:  6D 6F 76 09 61 2C 6D 0D 0A 09 61 6E 69 09 37 46    mov.a,m...ani.7F
007D80:  48 09 20 09 3B 52 65 6D 6F 76 65 20 43 50 2F 4D    H. .;Remove CP/M
007D90:  20 32 2E 78 20 61 74 74 72 69 62 75 74 65 73 2E     2.x attributes.
007DA0:  0D 0A 09 63 61 6C 6C 09 64 69 72 31 30 0D 0A 09    ...call.dir10...
007DB0:  69 6E 78 09 68 0D 0A 09 64 63 72 09 62 0D 0A 09    inx.h...dcr.b...
007DC0:  6A 6E 7A 09 64 69 72 31 31 0D 0A 09 72 65 74 0D    jnz.dir11...ret.
007DD0:  0A 0D 0A 3B 43 52 2D 4C 46 20 72 6F 75 74 69 6E    ...;CR-LF routin
007DE0:  65 2E 20 48 4C 3D 4E 4E 41 4D 53 20 75 70 6F 6E    e. HL=NNAMS upon
007DF0:  20 65 6E 74 72 79 0D 0A 64 69 72 31 32 3A 09 70     entry..dir12:.p
007E00:  69 72 32 35 65 09 09 3B 3E 3D 20 31 30 30 0D 0A    ir25e..;>= 100..
007E10:  09 63 61 6C 6C 09 64 69 72 39 09 09 3B 20 70 72    .call.dir9..; pr
007E20:  69 6E 74 20 61 6E 6F 74 68 65 72 20 6C 65 61 64    int another lead
007E30:  69 6E 67 20 73 70 61 63 65 0D 0A 64 69 72 32 35    ing space..dir25
007E40:  65 3A 09 63 61 6C 6C 09 64 69 72 39 09 09 3B 61    e:.call.dir9..;a
007E50:  20 73 70 61 63 65 0D 0A 09 70 6F 70 09 68 09 09     space...pop.h..
007E60:  3B 67 65 74 20 73 69 7A 65 20 62 61 63 6B 0D 0A    ;get size back..
007E70:  09 63 61 6C 6C 09 6E 6F 75 74 09 09 3B 2E 2E 67    .call.nout..;..g
007E80:  6F 20 70 72 69 6E 74 20 69 74 0D 0A 09 6D 76 69    o print it...mvi
007E90:  09 61 2C 27 6B 27 09 09 3B 2E 2E 61 6E 64 20 66    .a,'k'..;..and f
007EA0:  6F 6C 6C 6F 77 20 77 69 74 68 20 4B 20 73 69 7A    ollow with K siz
007EB0:  65 0D 0A 09 63 61 6C 6C 09 64 69 72 31 30 0D 0A    e...call.dir10..
007EC0:  09 72 65 74 0D 0A 0D 0A 64 69 72 32 36 3A 09 6D    .ret....dir26:.m
007ED0:  76 69 09 63 2C 67 74 64 70 61 72 20 09 3B 63 75    vi.c,gtdpar .;cu
007EE0:  72 72 65 6E 74 20 44 49 53 4B 20 50 41 52 41 4D    rrent DISK PARAM
007EF0:  45 54 45 52 20 42 4C 4F 43 4B 0D 0A 09 63 61 6C    ETER BLOCK...cal
007F00:  6C 09 62 64 6F 73 0D 0A 09 69 6E 78 09 68 0D 0A    l.bdos...inx.h..
007F10:  09 69 6E 78 09 68 0D 0A 09 6D 6F 76 09 61 2C 6D    .inx.h...mov.a,m
007F20:  09 09 3B 47 65 74 20 42 6C 6F 63 6B 20 53 68 69    ..;Get Block Shi
007F30:  66 74 20 46 61 63 74 6F 72 0D 0A 09 73 74 61 09    ft Factor...sta.
007F40:  62 73 68 69 66 74 66 0D 0A 09 69 6E 78 09 68 09    bshiftf...inx.h.
007F50:  09 3B 42 75 6D 70 20 74 6F 20 42 6C 6F 63 6B 20    .;Bump to Block 
007F60:  4D 61 73 6B 0D 0A 09 6D 6F 76 09 61 2C 6D 09 09    Mask...mov.a,m..
007F70:  3B 67 65 74 20 69 74 0D 0A 09 73 74 61 09 62 6D    ;get it...sta.bm
007F80:  61 73 6B 0D 0A 09 69 6E 78 09 68 0D 0A 09 69 6E    ask...inx.h...in
007F90:  78 09 68 0D 0A 09 6D 6F 76 09 65 2C 6D 09 09 3B    x.h...mov.e,m..;
007FA0:  47 65 74 20 4D 61 78 20 42 6C 6F 63 6B 20 6E 75    Get Max Block nu
007FB0:  6D 62 65 72 0D 0A 09 69 6E 78 09 68 0D 0A 09 6D    mber...inx.h...m
007FC0:  6F 76 09 64 2C 6D 0D 0A 09 78 63 68 67 0D 0A 09    ov.d,m...xchg...
007FD0:  73 68 6C 64 09 62 6D 61 78 09 09 3B 50 75 74 20    shld.bmax..;Put 
007FE0:  69 74 20 61 77 61 79 0D 0A 09 72 65 74 0D 0A 3B    it away...ret..;
007FF0:  0C 0D 0A 3B 09 45 52 41 20 63 6F 6D 6D 61 6E 64    ...;.ERA command
008000:  75 73 68 09 62 0D 0A 09 70 75 73 68 09 64 0D 0A    ush.b...push.d..
008010:  09 70 75 73 68 09 68 0D 0A 09 63 61 6C 6C 09 70    .push.h...call.p
008020:  72 63 72 6C 66 09 09 3B 50 72 69 6E 74 20 43 52    rcrlf..;Print CR
008030:  2F 4C 46 20 5B 54 6F 61 64 20 48 61 6C 6C 5D 0D    /LF [Toad Hall].
008040:  0A 09 70 6F 70 09 68 09 09 3B 28 64 69 64 20 75    ..pop.h..;(did u
008050:  73 65 20 63 61 6C 6C 20 74 6F 20 64 69 72 31 30    se call to dir10
008060:  2C 20 62 75 74 20 73 6C 6F 6F 6F 77 29 0D 0A 09    , but slooow)...
008070:  70 6F 70 09 64 0D 0A 09 70 6F 70 09 62 0D 0A 09    pop.d...pop.b...
008080:  6D 76 69 09 6D 2C 6E 70 6C 09 20 09 3B 4E 75 6D    mvi.m,npl. .;Num
008090:  62 65 72 20 6F 66 20 6E 61 6D 65 73 20 70 65 72    ber of names per
0080A0:  20 6C 69 6E 65 2E 0D 0A 09 72 65 74 0D 0A 0D 0A     line....ret....
0080B0:  3B 45 78 69 74 20 2D 20 41 6C 6C 20 64 6F 6E 65    ;Exit - All done
0080C0:  2C 20 72 65 74 75 72 6E 20 76 69 61 20 6A 6D 70    , return via jmp
0080D0:  20 28 61 73 20 66 6F 72 20 61 6C 6C 20 6D 61 69     (as for all mai
0080E0:  6E 20 63 6F 6D 6D 61 6E 64 73 29 0D 0A 64 69 72    n commands)..dir
0080F0:  31 36 3A 09 63 61 6C 6C 09 70 72 63 72 6C 66 0D    16:.call.prcrlf.
008100:  0A 09 6C 64 61 09 63 75 72 64 73 6B 0D 0A 09 64    ..lda.curdsk...d
008110:  63 72 09 61 09 09 3B 72 65 6C 61 74 69 76 65 20    cr.a..;relative 
008120:  74 6F 20 30 0D 0A 09 6D 6F 76 09 65 2C 61 0D 0A    to 0...mov.e,a..
008130:  09 6D 76 69 09 63 2C 6C 6F 67 64 73 6B 0D 0A 09    .mvi.c,logdsk...
008140:  63 61 6C 6C 09 62 64 6F 73 09 09 3B 62 61 63 6B    call.bdos..;back
008150:  20 74 6F 20 22 6C 6F 67 67 65 64 20 69 6E 22 20     to "logged in" 
008160:  64 69 73 6B 0D 0A 09 6A 6D 70 09 6B 65 72 6D 69    disk...jmp.kermi
008170:  74 09 20 09 3B 2E 2E 2E 61 6E 64 20 72 65 74 75    t. .;...and retu
008180:  72 6E 20 74 6F 20 6B 65 72 6D 69 74 2E 0D 0A 0D    rn to kermit....
008190:  0A 3B 0D 0A 3B 44 65 74 65 72 6D 69 6E 65 73 20    .;..;Determines 
0081A0:  66 72 65 65 20 73 70 61 63 65 20 72 65 6D 61 69    free space remai
0081B0:  6E 69 6E 67 0D 0A 3B 0D 0A 64 69 72 31 37 3A 09    ning..;..dir17:.
0081C0:  78 72 61 09 61 0D 0A 09 73 74 61 09 6D 66 66 6C    xra.a...sta.mffl
0081D0:  67 31 09 09 3B 63 6C 65 61 6E 20 75 70 20 4D 46    g1..;clean up MF
0081E0:  4E 41 4D 45 0D 0A 09 73 74 61 09 6D 66 66 6C 67    NAME...sta.mfflg
0081F0:  32 0D 0A 09 6C 64 61 09 66 63 62 09 09 3B 20 67    2...lda.fcb..; g
008200:  20 2D 20 65 72 61 73 65 20 61 20 43 50 2F 4D 20     - erase a CP/M 
008210:  66 69 6C 65 0D 0A 3B 09 68 65 72 65 20 66 72 6F    file..;.here fro
008220:  6D 3A 20 6B 65 72 6D 69 74 0D 0A 0D 0A 65 72 61    m: kermit....era
008230:  3A 09 6D 76 69 09 61 2C 63 6D 69 66 69 09 09 3B    :.mvi.a,cmifi..;
008240:  50 61 72 73 65 20 61 20 66 69 6C 65 2D 73 70 65    Parse a file-spe
008250:  63 0D 0A 09 6C 78 69 09 64 2C 66 63 62 09 09 3B    c...lxi.d,fcb..;
008260:  69 6E 74 6F 20 46 43 42 0D 0A 09 63 61 6C 6C 09    into FCB...call.
008270:  63 6F 6D 6E 64 0D 0A 09 20 6A 6D 70 09 6B 65 72    comnd... jmp.ker
008280:  6D 69 74 09 09 3B 62 61 64 20 70 61 72 73 65 0D    mit..;bad parse.
008290:  0A 09 6C 78 69 09 64 2C 66 63 62 0D 0A 09 6D 76    ..lxi.d,fcb...mv
0082A0:  69 09 63 2C 73 66 69 72 73 74 09 3B 63 68 65 63    i.c,sfirst.;chec
0082B0:  6B 20 69 66 20 76 61 6C 69 64 0D 0A 09 63 61 6C    k if valid...cal
0082C0:  6C 09 62 64 6F 73 0D 0A 09 69 6E 72 09 61 09 09    l.bdos...inr.a..
0082D0:  3B 30 20 69 66 20 46 49 4C 45 20 6E 6F 74 20 66    ;0 if FILE not f
0082E0:  6F 75 6E 64 0D 0A 09 6A 6E 7A 09 65 72 61 31 09    ound...jnz.era1.
0082F0:  09 3B 66 6F 75 6E 64 20 61 74 20 6C 65 61 73 74    .;found at least
008300:  20 6F 6E 65 0D 0A 09 6C 78 69 09 64 2C 65 72 6D     one...lxi.d,erm
008310:  73 31 35 09 3B 22 75 6E 61 62 6C 65 20 74 6F 20    s15.;"unable to 
008320:  66 69 6E 64 20 66 69 6C 65 22 0D 0A 09 63 61 6C    find file"...cal
008330:  6C 09 70 72 74 73 74 72 0D 0A 09 6A 6D 70 09 6B    l.prtstr...jmp.k
008340:  65 72 6D 69 74 0D 0A 0D 0A 65 72 61 31 3A 09 6C    ermit....era1:.l
008350:  78 69 09 64 2C 66 63 62 0D 0A 09 6D 76 69 09 63    xi.d,fcb...mvi.c
008360:  2C 64 65 6C 66 0D 0A 09 63 61 6C 6C 09 62 64 6F    ,delf...call.bdo
008370:  73 0D 0A 09 6C 78 69 09 64 2C 69 6E 6D 73 31 38    s...lxi.d,inms18
008380:  09 3B 22 20 46 69 6C 65 28 73 29 20 65 72 61 73    .;" File(s) eras
008390:  65 64 22 0D 0A 09 63 61 6C 6C 09 70 72 74 73 74    ed"...call.prtst
0083A0:  72 0D 0A 09 6A 6D 70 09 6B 65 72 6D 69 74 0D 0A    r...jmp.kermit..
0083B0:  0D 0A 49 46 20 6C 61 73 6D 0D 0A 09 4C 49 4E 4B    ..IF lasm...LINK
0083C0:  09 43 50 34 57 4C 44 0D 0A 45 4E 44 49 46 3B 6C    .CP4WLD..ENDIF;l
0083D0:  61 73 6D 20 20 5B 54 6F 61 64 20 48 61 6C 6C 5D    asm  [Toad Hall]
0083E0:  0D 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0083F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
008400:  65 74 20 64 72 69 76 65 20 6E 75 6D 62 65 72 20    et drive number 
008410:  66 72 6F 6D 20 46 43 42 0D 0A 09 6F 72 61 09 61    from FCB...ora.a
008420:  0D 0A 09 6A 7A 09 64 69 72 31 38 09 09 3B 20 64    ...jz.dir18..; d
008430:  65 66 61 75 6C 74 3F 0D 0A 09 64 63 72 09 61 09    efault?...dcr.a.
008440:  09 3B 20 6E 6F 2C 20 6D 61 6B 65 20 72 65 71 75    .; no, make requ
008450:  65 73 74 65 64 20 64 72 69 76 65 20 63 75 72 72    ested drive curr
008460:  65 6E 74 20 64 72 69 76 65 2E 0D 0A 09 6D 6F 76    ent drive....mov
008470:  09 65 2C 61 0D 0A 09 6D 76 69 09 63 2C 6C 6F 67    .e,a...mvi.c,log
008480:  64 73 6B 0D 0A 09 63 61 6C 6C 09 62 64 6F 73 0D    dsk...call.bdos.
008490:  0A 64 69 72 31 38 3A 09 63 61 6C 6C 09 73 79 73    .dir18:.call.sys
0084A0:  73 70 63 09 09 3B 20 67 65 74 20 73 70 61 63 65    spc..; get space
0084B0:  20 61 76 61 69 6C 61 62 6C 65 20 66 6F 72 20 63     available for c
0084C0:  75 72 72 65 6E 74 20 64 72 69 76 65 0D 0A 09 70    urrent drive...p
0084D0:  75 73 68 09 68 0D 0A 09 6C 78 69 09 64 2C 69 6E    ush.h...lxi.d,in
0084E0:  6D 73 31 35 09 3B 22 44 72 69 76 65 20 22 0D 0A    ms15.;"Drive "..
0084F0:  09 63 61 6C 6C 09 70 72 74 73 74 72 0D 0A 09 6C    .call.prtstr...l
008500:  64 61 09 66 63 62 09 09 3B 49 66 20 6E 6F 20 64    da.fcb..;If no d
008510:  72 69 76 65 2C 20 67 65 74 0D 0A 09 6F 72 61 09    rive, get...ora.
008520:  61 09 09 3B 6C 6F 67 67 65 64 20 69 6E 20 64 72    a..;logged in dr
008530:  69 76 65 0D 0A 09 6A 6E 7A 09 64 69 72 32 34 0D    ive...jnz.dir24.
008540:  0A 09 6D 76 69 09 63 2C 72 64 64 72 76 0D 0A 09    ..mvi.c,rddrv...
008550:  63 61 6C 6C 09 62 64 6F 73 0D 0A 09 69 6E 72 09    call.bdos...inr.
008560:  61 0D 0A 64 69 72 32 34 3A 09 61 64 69 09 27 41    a..dir24:.adi.'A
008570:  27 2D 31 0D 0A 09 73 74 61 09 69 6E 6D 73 31 36    '-1...sta.inms16
008580:  0D 0A 09 6C 78 69 20 09 64 2C 69 6E 6D 73 31 36    ...lxi .d,inms16
008590:  09 3B 22 78 20 68 61 73 20 22 0D 0A 09 63 61 6C    .;"x has "...cal
0085A0:  6C 20 09 70 72 74 73 74 72 0D 0A 09 70 6F 70 09    l .prtstr...pop.
0085B0:  68 09 09 3B 47 65 74 20 6E 75 6D 62 65 72 20 6F    h..;Get number o
0085C0:  66 20 62 79 74 65 73 20 61 76 61 69 6C 61 62 6C    f bytes availabl
0085D0:  65 0D 0A 09 63 61 6C 6C 09 6E 6F 75 74 0D 0A 09    e...call.nout...
0085E0:  6C 78 69 09 64 2C 69 6E 6D 73 31 37 09 3B 22 4B    lxi.d,inms17.;"K
0085F0:  20 62 79 74 65 73 20 66 72 65 65 22 0D 0A 09 63     bytes free"...c
008600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
008610:  07 00 00 00 02 09 4E E5 07 00 C1 02 00 00 00 02    ......N.........
008620:  07 00 C6 02 00 00 00 02 07 00 C2 02 00 00 00 02    ................
008630:  07 00 C7 02 00 00 00 02 07 00 C3 02 00 00 00 02    ................
008640:  07 00 C8 02 00 00 00 02 07 00 C4 02 00 00 00 02    ................
008650:  07 00 C9 02 00 00 00 02 07 00 C5 02 00 00 00 02    ................
008660:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
008670:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
008680:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
008690:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
008700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0087A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0087B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0087C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0087D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0087E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0087F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0088A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0088B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0088C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0088D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0088E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0088F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008900:  6F 6D 6D 65 6E 74 73 20 61 72 6F 75 6E 64 0D 0A    omments around..
008910:  3B 09 61 20 6C 69 74 74 6C 65 2E 0D 0A 3B 0D 0A    ;.a little...;..
008920:  3B 20 65 64 69 74 20 31 3A 20 4D 61 79 2C 20 31    ; edit 1: May, 1
008930:  39 38 34 20 28 43 4A 43 29 0D 0A 3B 09 65 78 74    984 (CJC)..;.ext
008940:  72 61 63 74 65 64 20 66 72 6F 6D 20 43 50 4D 42    racted from CPMB
008950:  41 53 45 2E 4D 38 30 20 76 65 72 73 69 6F 6E 20    ASE.M80 version 
008960:  33 2E 39 3B 20 6D 6F 64 69 66 69 63 61 74 69 6F    3.9; modificatio
008970:  6E 73 20 61 72 65 20 64 65 73 63 72 69 62 65 64    ns are described
008980:  0D 0A 3B 09 69 6E 20 74 68 65 20 61 63 63 6F 6D    ..;.in the accom
008990:  70 61 6E 79 69 6E 67 20 2E 55 50 44 20 66 69 6C    panying .UPD fil
0089A0:  65 2E 0D 0A 3B 0D 0A 0D 0A 3B 53 79 6D 62 6F 6C    e...;....;Symbol
0089B0:  69 63 20 44 65 66 69 6E 69 74 69 6F 6E 73 20 66    ic Definitions f
0089C0:  6F 72 20 73 6F 6D 65 20 41 53 43 49 49 20 63 68    or some ASCII ch
0089D0:  61 72 61 63 74 65 72 73 0D 0A 3B 0D 0A 73 6F 68    aracters..;..soh
0089E0:  09 45 51 55 09 30 31 4F 09 3B 41 53 43 49 49 20    .EQU.01O.;ASCII 
0089F0:  53 4F 48 20 28 43 6F 6E 74 72 6F 6C 2D 41 29 0D    SOH (Control-A).
008A00:  0A 63 74 72 6C 63 09 45 51 55 09 30 33 4F 09 3B    .ctrlc.EQU.03O.;
008A10:  41 53 43 49 49 20 45 54 58 20 28 43 6F 6E 74 72    ASCII ETX (Contr
008A20:  6F 6C 2D 43 29 0D 0A 62 65 6C 6C 09 45 51 55 09    ol-C)..bell.EQU.
008A30:  30 37 4F 09 3B 41 53 43 49 49 20 42 45 4C 20 28    07O.;ASCII BEL (
008A40:  43 6F 6E 74 72 6F 6C 2D 47 29 0D 0A 62 73 09 45    Control-G)..bs.E
008A50:  51 55 09 31 30 4F 09 3B 41 53 43 49 49 20 62 61    QU.10O.;ASCII ba
008A60:  63 6B 73 70 61 63 65 20 28 43 6F 6E 74 72 6F 6C    ckspace (Control
008A70:  2D 48 29 0D 0A 74 61 62 09 45 51 55 09 31 31 4F    -H)..tab.EQU.11O
008A80:  09 3B 41 53 43 49 49 20 54 61 62 20 28 43 6F 6E    .;ASCII Tab (Con
008A90:  74 72 6F 6C 2D 49 29 0D 0A 6C 66 09 45 51 55 09    trol-I)..lf.EQU.
008AA0:  31 32 4F 09 3B 41 53 43 49 49 20 4C 69 6E 65 20    12O.;ASCII Line 
008AB0:  46 65 65 64 20 28 43 54 52 4C 2D 4A 29 0D 0A 66    Feed (CTRL-J)..f
008AC0:  66 09 45 51 55 09 31 34 4F 09 3B 41 53 43 49 49    f.EQU.14O.;ASCII
008AD0:  20 46 6F 72 6D 20 46 65 65 64 20 28 43 54 52 4C     Form Feed (CTRL
008AE0:  2D 4C 29 0D 0A 63 72 09 45 51 55 09 31 35 4F 09    -L)..cr.EQU.15O.
008AF0:  3B 41 53 43 49 49 20 43 61 72 72 69 61 67 65 20    ;ASCII Carriage 
008B00:  3B 20 43 50 34 44 45 46 2E 41 53 4D 0D 0A 3B 09    ; CP4DEF.ASM..;.
008B10:  4B 45 52 4D 49 54 20 2D 20 28 43 65 6C 74 69 63    KERMIT - (Celtic
008B20:  20 66 6F 72 20 22 46 52 45 45 22 29 0D 0A 3B 0D     for "FREE")..;.
008B30:  0A 3B 09 54 68 69 73 20 69 73 20 74 68 65 20 43    .;.This is the C
008B40:  50 2F 4D 2D 38 30 20 69 6D 70 6C 65 6D 65 6E 74    P/M-80 implement
008B50:  61 74 69 6F 6E 20 6F 66 20 74 68 65 20 43 6F 6C    ation of the Col
008B60:  75 6D 62 69 61 20 55 6E 69 76 65 72 73 69 74 79    umbia University
008B70:  0D 0A 3B 09 4B 45 52 4D 49 54 20 66 69 6C 65 20    ..;.KERMIT file 
008B80:  74 72 61 6E 73 66 65 72 20 70 72 6F 74 6F 63 6F    transfer protoco
008B90:  6C 2E 0D 0A 3B 0D 0A 3B 09 56 65 72 73 69 6F 6E    l...;..;.Version
008BA0:  20 34 2E 30 0D 0A 3B 0D 0A 3B 09 43 6F 70 79 72     4.0..;..;.Copyr
008BB0:  69 67 68 74 20 4A 75 6E 65 20 31 39 38 31 2C 31    ight June 1981,1
008BC0:  39 38 32 2C 31 39 38 33 2C 31 39 38 34 2C 31 39    982,1983,1984,19
008BD0:  38 35 0D 0A 3B 09 43 6F 6C 75 6D 62 69 61 20 55    85..;.Columbia U
008BE0:  6E 69 76 65 72 73 69 74 79 0D 0A 3B 0D 0A 3B 20    niversity..;..; 
008BF0:  4F 72 69 67 69 6E 61 6C 6C 79 20 77 72 69 74 74    Originally writt
008C00:  65 6E 20 62 79 20 42 69 6C 6C 20 43 61 74 63 68    en by Bill Catch
008C10:  69 6E 67 73 20 6F 66 20 74 68 65 20 43 6F 6C 75    ings of the Colu
008C20:  6D 62 69 61 20 55 6E 69 76 65 72 73 69 74 79 20    mbia University 
008C30:  43 65 6E 74 65 72 20 66 6F 72 0D 0A 3B 20 43 6F    Center for..; Co
008C40:  6D 70 75 74 69 6E 67 20 41 63 74 69 76 69 74 69    mputing Activiti
008C50:  65 73 2C 20 36 31 32 20 57 2E 20 31 31 35 74 68    es, 612 W. 115th
008C60:  20 53 74 2E 2C 20 4E 65 77 20 59 6F 72 6B 2C 20     St., New York, 
008C70:  4E 59 20 31 30 30 32 35 2E 0D 0A 3B 0D 0A 3B 20    NY 10025...;..; 
008C80:  43 6F 6E 74 72 69 62 75 74 69 6F 6E 73 20 62 79    Contributions by
008C90:  20 46 72 61 6E 6B 20 64 61 20 43 72 75 7A 2C 20     Frank da Cruz, 
008CA0:  44 61 70 68 6E 65 20 54 7A 6F 61 72 2C 20 42 65    Daphne Tzoar, Be
008CB0:  72 6E 69 65 20 45 69 62 65 6E 2C 0D 0A 3B 20 42    rnie Eiben,..; B
008CC0:  72 75 63 65 20 54 61 6E 6E 65 72 2C 20 4E 69 63    ruce Tanner, Nic
008CD0:  6B 20 42 75 73 68 2C 20 47 72 65 67 20 53 6D 61    k Bush, Greg Sma
008CE0:  6C 6C 2C 20 4B 69 6D 6D 6F 20 4C 61 61 6B 73 6F    ll, Kimmo Laakso
008CF0:  6E 65 6E 2C 20 4A 65 66 66 20 44 61 6D 65 6E 73    nen, Jeff Damens
008D00:  52 65 74 75 72 6E 20 28 43 54 52 4C 2D 4D 29 0D    Return (CTRL-M).
008D10:  0A 78 6F 6E 09 45 51 55 09 32 31 4F 09 3B 41 53    .xon.EQU.21O.;AS
008D20:  43 49 49 20 58 4F 4E 20 28 43 6F 6E 74 72 6F 6C    CII XON (Control
008D30:  2D 51 29 0D 0A 78 6F 66 66 09 45 51 55 09 32 33    -Q)..xoff.EQU.23
008D40:  4F 09 3B 41 53 43 49 49 20 58 4F 46 46 20 28 43    O.;ASCII XOFF (C
008D50:  6F 6E 74 72 6F 6C 2D 53 29 0D 0A 65 73 63 09 45    ontrol-S)..esc.E
008D60:  51 55 09 33 33 4F 09 3B 41 53 43 49 49 20 45 53    QU.33O.;ASCII ES
008D70:  43 61 70 65 0D 0A 73 75 62 74 09 45 51 55 09 33    Cape..subt.EQU.3
008D80:  32 4F 09 3B 41 53 43 49 49 20 53 55 42 20 28 43    2O.;ASCII SUB (C
008D90:  54 52 4C 2D 5A 29 0D 0A 64 65 6C 09 45 51 55 09    TRL-Z)..del.EQU.
008DA0:  31 37 37 4F 09 3B 41 53 43 49 49 20 44 45 4C 65    177O.;ASCII DELe
008DB0:  74 65 20 28 72 75 62 6F 75 74 29 0D 0A 3B 0C 0D    te (rubout)..;..
008DC0:  0A 3B 42 44 4F 53 20 63 61 6C 6C 73 0D 0A 62 64    .;BDOS calls..bd
008DD0:  6F 73 09 45 51 55 09 30 30 30 35 48 09 3B 42 44    os.EQU.0005H.;BD
008DE0:  4F 53 20 65 6E 74 72 79 20 70 6F 69 6E 74 2C 20    OS entry point, 
008DF0:  66 6F 72 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E    for the followin
008E00:  67 20 66 75 6E 63 74 69 6F 6E 73 3A 0D 0A 3B 0D    g functions:..;.
008E10:  0A 3B 46 75 6E 63 74 69 6F 6E 20 4E 61 6D 65 09    .;Function Name.
008E20:  09 46 75 6E 63 74 69 6F 6E 09 49 6E 70 75 74 20    .Function.Input 
008E30:  50 61 72 61 6D 65 74 65 72 73 20 4F 75 74 70 75    Parameters Outpu
008E40:  74 20 50 61 72 61 6D 65 74 65 72 0D 0A 3B 3D 3D    t Parameter..;==
008E50:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 09 09 3D 3D 3D    ===========..===
008E60:  3D 3D 3D 3D 3D 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    =====.==========
008E70:  3D 3D 3D 3D 3D 3D 20 3D 3D 3D 3D 3D 3D 3D 3D 3D    ====== =========
008E80:  3D 3D 3D 3D 3D 3D 3D 0D 0A 3B 09 28 41 4C 4C 20    =======..;.(ALL 
008E90:  46 75 6E 63 74 69 6F 6E 20 4E 75 6D 62 65 72 73    Function Numbers
008EA0:  20 61 72 65 20 70 61 73 73 65 64 20 69 6E 20 52     are passed in R
008EB0:  65 67 69 73 74 65 72 20 43 29 0D 0A 63 6F 6E 69    egister C)..coni
008EC0:  6E 09 45 51 55 09 30 31 48 09 3B 52 65 61 64 20    n.EQU.01H.;Read 
008ED0:  43 6F 6E 73 6F 6C 65 09 4E 4F 4E 45 09 09 20 41    Console.NONE.. A
008EE0:  53 43 49 49 20 43 68 61 72 20 69 6E 20 41 0D 0A    SCII Char in A..
008EF0:  63 6F 6E 6F 75 74 09 45 51 55 09 30 32 48 09 3B    conout.EQU.02H.;
008F00:  2C 20 61 6E 64 20 6D 61 6E 79 0D 0A 3B 20 6F 74    , and many..; ot
008F10:  68 65 72 73 2E 0D 0A 3B 0D 0A 3B 09 54 68 69 73    hers...;..;.This
008F20:  20 66 69 6C 65 20 63 6F 6E 74 61 69 6E 73 20 64     file contains d
008F30:  65 66 69 6E 69 74 69 6F 6E 73 20 75 73 65 64 20    efinitions used 
008F40:  62 79 20 62 6F 74 68 20 6D 6F 64 75 6C 65 73 20    by both modules 
008F50:  6F 66 20 4B 65 72 6D 69 74 2E 0D 0A 3B 0D 0A 3B    of Kermit...;..;
008F60:  20 72 65 76 69 73 69 6F 6E 20 68 69 73 74 6F 72     revision histor
008F70:  79 3A 0D 0A 3B 20 65 64 69 74 20 34 3A 20 36 2D    y:..; edit 4: 6-
008F80:  46 65 62 2D 38 35 20 62 79 20 43 68 61 72 6C 65    Feb-85 by Charle
008F90:  73 20 43 61 72 76 61 6C 68 6F 0D 0A 3B 09 6D 6F    s Carvalho..;.mo
008FA0:  64 69 66 79 20 70 63 63 30 30 37 3A 20 72 65 70    dify pcc007: rep
008FB0:  6C 61 63 65 20 66 66 75 73 73 79 20 61 73 73 65    lace ffussy asse
008FC0:  6D 62 6C 79 20 73 77 69 74 63 68 20 77 69 74 68    mbly switch with
008FD0:  20 72 75 6E 74 69 6D 65 20 74 65 73 74 2E 0D 0A     runtime test...
008FE0:  3B 09 61 64 64 20 22 67 65 74 76 6E 6D 22 20 2D    ;.add "getvnm" -
008FF0:  20 67 65 74 20 43 50 2F 4D 20 76 65 72 73 69 6F     get CP/M versio
009000:  6E 20 6E 75 6D 62 65 72 2E 0D 0A 3B 0D 0A 3B 20    n number...;..; 
009010:  65 64 69 74 20 33 3A 20 31 33 2D 4A 61 6E 2D 38    edit 3: 13-Jan-8
009020:  35 20 62 79 20 56 61 6E 79 61 20 4A 2E 43 6F 6F    5 by Vanya J.Coo
009030:  70 65 72 20 50 69 6D 61 20 43 6F 6D 6D 75 6E 2E    per Pima Commun.
009040:  20 43 6F 6C 6C 65 67 65 20 54 65 6C 3A 20 36 30     College Tel: 60
009050:  32 2D 38 38 34 2D 36 38 30 39 0D 0A 3B 0D 0A 3B    2-884-6809..;..;
009060:  70 63 63 30 30 37 09 32 2D 4A 61 6E 2D 38 35 09    pcc007.2-Jan-85.
009070:  76 6A 63 09 6D 6F 64 75 6C 65 73 3A 63 70 34 64    vjc.modules:cp4d
009080:  65 66 2C 63 70 34 63 6D 64 0D 0A 3B 09 43 6D 69    ef,cp4cmd..;.Cmi
009090:  66 69 6C 20 69 73 20 74 6F 6F 20 66 75 73 73 79    fil is too fussy
0090A0:  20 61 62 6F 75 74 20 77 68 61 74 20 63 68 61 72     about what char
0090B0:  61 63 74 65 72 73 20 74 6F 20 61 63 63 65 70 74    acters to accept
0090C0:  20 69 6E 20 61 0D 0A 3B 09 66 69 6C 65 73 70 65     in a..;.filespe
0090D0:  63 2E 20 20 4D 79 20 43 50 2F 4D 20 6D 61 6E 75    c.  My CP/M manu
0090E0:  61 6C 20 73 61 79 73 20 61 6E 79 20 70 72 69 6E    al says any prin
0090F0:  74 61 62 6C 65 20 63 68 61 72 61 63 74 65 72 20    table character 
009100:  57 72 69 74 65 20 43 6F 6E 73 6F 6C 65 09 41 53    Write Console.AS
009110:  43 49 49 20 43 68 61 72 20 69 6E 20 45 09 20 4E    CII Char in E. N
009120:  4F 4E 45 0D 0A 61 75 78 69 6E 09 45 51 55 09 30    ONE..auxin.EQU.0
009130:  33 48 09 3B 41 75 78 69 6C 69 61 72 79 20 69 6E    3H.;Auxiliary in
009140:  70 75 74 0D 0A 72 64 72 69 6E 09 45 51 55 09 30    put..rdrin.EQU.0
009150:  33 48 09 3B 52 65 61 64 20 52 65 61 64 65 72 09    3H.;Read Reader.
009160:  4E 4F 4E 45 09 09 20 41 53 43 49 49 20 43 68 61    NONE.. ASCII Cha
009170:  72 20 69 6E 20 41 0D 0A 6C 73 74 6F 75 74 09 45    r in A..lstout.E
009180:  51 55 09 30 35 48 09 3B 57 72 69 74 65 20 4C 69    QU.05H.;Write Li
009190:  73 74 09 41 53 43 49 49 20 43 68 61 72 20 69 6E    st.ASCII Char in
0091A0:  20 45 09 20 4E 4F 4E 45 0D 0A 64 63 6F 6E 69 6F     E. NONE..dconio
0091B0:  09 45 51 55 09 30 36 48 09 3B 44 69 72 65 63 74    .EQU.06H.;Direct
0091C0:  20 43 6F 6E 20 49 2F 4F 20 41 53 43 49 49 20 43     Con I/O ASCII C
0091D0:  68 61 72 20 69 6E 20 45 09 20 49 2F 4F 20 53 74    har in E. I/O St
0091E0:  61 74 75 73 20 69 6E 20 41 0D 0A 09 09 09 3B 09    atus in A.....;.
0091F0:  09 09 09 20 69 66 20 45 3D 30 46 45 48 2C 0D 0A    ... if E=0FEH,..
009200:  09 09 09 3B 09 09 09 09 20 20 49 6E 70 75 74 20    ...;....  Input 
009210:  69 66 20 45 3D 30 46 46 48 0D 0A 70 72 73 74 72    if E=0FFH..prstr
009220:  09 45 51 55 09 30 39 48 09 3B 50 72 69 6E 74 20    .EQU.09H.;Print 
009230:  53 74 72 69 6E 67 09 53 74 72 69 6E 67 2D 41 64    String.String-Ad
009240:  64 72 65 73 73 09 20 4E 4F 4E 45 0D 0A 09 09 09    dress. NONE.....
009250:  3B 09 09 69 6E 20 44 45 20 28 74 65 72 6D 3D 24    ;..in DE (term=$
009260:  29 0D 0A 72 64 73 74 72 09 45 51 55 09 30 41 48    )..rdstr.EQU.0AH
009270:  09 3B 52 65 61 64 20 42 75 66 66 65 72 09 42 75    .;Read Buffer.Bu
009280:  66 66 65 72 2D 41 64 64 72 65 73 73 09 52 65 61    ffer-Address.Rea
009290:  64 20 42 75 66 66 65 72 20 66 69 6C 6C 65 64 0D    d Buffer filled.
0092A0:  0A 3B 09 09 09 09 09 69 6E 20 44 45 0D 0A 3B 09    .;.....in DE..;.
0092B0:  52 65 61 64 20 42 75 66 66 65 72 09 42 79 74 65    Read Buffer.Byte
0092C0:  09 46 75 6E 63 74 69 6F 6E 0D 0A 3B 09 09 09 20    .Function..;... 
0092D0:  20 31 09 4D 61 78 69 6D 75 6D 20 42 75 66 66 65     1.Maximum Buffe
0092E0:  72 20 4C 65 6E 67 74 68 0D 0A 3B 09 09 09 20 20    r Length..;...  
0092F0:  32 09 43 75 72 72 65 6E 74 20 42 75 66 66 65 72    2.Current Buffer
009300:  69 73 20 6F 6B 0D 0A 3B 09 65 78 63 65 70 74 20    is ok..;.except 
009310:  3C 3E 2E 2C 3B 3A 3F 2A 5B 5D 2C 20 61 6E 64 20    <>.,;:?*[], and 
009320:  6C 6F 77 65 72 20 63 61 73 65 2E 20 20 49 6E 20    lower case.  In 
009330:  70 72 61 63 74 69 63 65 2C 20 65 76 65 6E 20 74    practice, even t
009340:  68 6F 73 65 20 77 6F 72 6B 0D 0A 3B 09 73 6F 6D    hose work..;.som
009350:  65 74 69 6D 65 73 2E 20 20 4B 65 72 6D 69 74 20    etimes.  Kermit 
009360:  69 74 73 65 6C 66 20 75 73 65 73 20 27 26 27 20    itself uses '&' 
009370:  69 66 20 66 69 6C 65 20 77 61 72 6E 69 6E 67 20    if file warning 
009380:  69 73 20 6F 6E 2C 0D 0A 3B 09 61 6E 64 20 74 68    is on,..;.and th
009390:  65 6E 20 77 6F 6E 27 74 20 6C 65 74 20 79 6F 75    en won't let you
0093A0:  20 72 65 66 65 72 65 6E 63 65 20 74 68 65 20 66     reference the f
0093B0:  69 6C 65 2E 20 20 41 6C 6C 6F 77 20 61 6C 6C 0D    ile.  Allow all.
0093C0:  0A 3B 09 70 72 69 6E 74 61 62 6C 65 20 63 68 61    .;.printable cha
0093D0:  72 61 63 74 65 72 73 20 65 78 63 65 70 74 20 74    racters except t
0093E0:  68 6F 73 65 20 61 62 6F 76 65 2E 20 20 41 64 64    hose above.  Add
0093F0:  20 63 6F 6E 64 69 74 69 6F 6E 61 6C 0D 0A 3B 09     conditional..;.
009400:  66 66 75 73 73 79 2C 20 73 6F 20 74 68 61 74 20    ffussy, so that 
009410:  69 66 20 6E 6F 74 20 66 66 75 73 73 79 2C 20 61    if not ffussy, a
009420:  6C 6C 20 73 70 65 63 69 61 6C 20 63 68 61 72 61    ll special chara
009430:  63 74 65 72 73 20 77 69 6C 6C 20 62 65 0D 0A 3B    cters will be..;
009440:  09 61 6C 6C 6F 77 65 64 2C 20 6A 75 73 74 20 63    .allowed, just c
009450:  6F 6E 76 65 72 74 20 6C 6F 77 65 72 20 74 6F 20    onvert lower to 
009460:  75 70 70 65 72 2D 63 61 73 65 2E 0D 0A 3B 0D 0A    upper-case...;..
009470:  3B 70 63 63 30 30 38 09 32 2D 4A 61 6E 2D 38 35    ;pcc008.2-Jan-85
009480:  09 76 6A 63 09 6D 6F 64 75 6C 65 73 3A 63 70 34    .vjc.modules:cp4
009490:  64 65 66 2C 63 70 34 74 74 2C 63 70 34 75 74 6C    def,cp4tt,cp4utl
0094A0:  0D 0A 3B 09 4B 65 79 62 6F 61 72 64 20 69 6E 70    ..;.Keyboard inp
0094B0:  75 74 20 64 75 72 69 6E 67 20 43 4F 4E 4E 45 43    ut during CONNEC
0094C0:  54 20 6D 6F 64 65 20 63 61 6E 20 67 65 74 20 6C    T mode can get l
0094D0:  6F 63 6B 65 64 20 6F 75 74 20 69 66 0D 0A 3B 09    ocked out if..;.
0094E0:  74 68 65 72 65 20 69 73 20 65 6E 6F 75 67 68 20    there is enough 
0094F0:  69 6E 70 75 74 20 66 72 6F 6D 20 74 68 65 20 6D    input from the m
009500:  20 4C 65 6E 67 74 68 20 28 72 65 74 75 72 6E 65     Length (returne
009510:  64 20 76 61 6C 75 65 29 0D 0A 3B 09 09 09 33 2D    d value)..;...3-
009520:  6E 09 44 61 74 61 20 28 72 65 74 75 72 6E 65 64    n.Data (returned
009530:  20 76 61 6C 75 65 73 29 0D 0A 3B 0D 0A 63 6F 6E     values)..;..con
009540:  73 74 61 09 45 51 55 09 30 42 48 09 3B 43 6F 6E    sta.EQU.0BH.;Con
009550:  73 6F 6C 65 20 53 74 61 74 09 4E 4F 4E 45 09 09    sole Stat.NONE..
009560:  4C 53 42 28 41 29 3D 31 20 69 66 20 63 68 61 72    LSB(A)=1 if char
009570:  20 72 65 61 64 79 0D 0A 67 65 74 76 6E 6D 09 45     ready..getvnm.E
009580:  51 55 09 30 43 48 09 3B 56 65 72 73 69 6F 6E 20    QU.0CH.;Version 
009590:  4E 75 6D 62 65 72 09 4E 4F 4E 45 09 09 48 3D 30    Number.NONE..H=0
0095A0:  20 28 43 50 2F 4D 29 2C 20 4C 3D 42 44 4F 53 20     (CP/M), L=BDOS 
0095B0:  76 65 72 0D 0A 69 6E 62 64 6F 73 09 45 51 55 09    ver..inbdos.EQU.
0095C0:  30 44 48 09 3B 49 6E 69 74 20 42 44 4F 53 09 4E    0DH.;Init BDOS.N
0095D0:  4F 4E 45 09 09 4E 4F 4E 45 0D 0A 6C 6F 67 64 73    ONE..NONE..logds
0095E0:  6B 09 45 51 55 09 30 45 48 09 3B 4C 4F 47 2D 49    k.EQU.0EH.;LOG-I
0095F0:  6E 20 64 69 73 6B 09 56 61 6C 75 65 20 69 6E 20    n disk.Value in 
009600:  45 09 4E 4F 4E 45 0D 0A 09 09 09 3B 09 09 41 3D    E.NONE.....;..A=
009610:  30 2C 42 3D 31 2C 2E 2E 2E 0D 0A 6F 70 65 6E 66    0,B=1,.....openf
009620:  09 45 51 55 09 30 46 48 09 3B 4F 70 65 6E 20 46    .EQU.0FH.;Open F
009630:  69 6C 65 09 46 43 42 2D 41 64 64 72 20 69 6E 20    ile.FCB-Addr in 
009640:  44 45 09 42 79 74 65 20 41 64 64 72 2E 6F 66 20    DE.Byte Addr.of 
009650:  46 43 42 2C 0D 0A 09 09 09 3B 09 09 09 09 20 6F    FCB,.....;.... o
009660:  72 20 30 46 46 48 20 69 66 20 6E 6F 74 0D 0A 63    r 0FFH if not..c
009670:  6C 6F 73 66 09 45 51 55 09 31 30 48 09 3B 43 6C    losf.EQU.10H.;Cl
009680:  6F 73 65 20 46 69 6C 65 09 46 43 42 2D 41 64 64    ose File.FCB-Add
009690:  72 20 69 6E 20 44 45 09 42 79 74 65 20 41 64 64    r in DE.Byte Add
0096A0:  72 2E 6F 66 20 46 43 42 2C 0D 0A 09 09 09 3B 09    r.of FCB,.....;.
0096B0:  09 09 09 20 6F 72 20 30 46 46 48 20 69 66 20 6E    ... or 0FFH if n
0096C0:  6F 74 0D 0A 73 66 69 72 73 74 09 45 51 55 09 31    ot..sfirst.EQU.1
0096D0:  31 48 09 3B 53 65 61 72 63 68 20 46 69 6C 65 09    1H.;Search File.
0096E0:  46 43 42 2D 41 64 64 72 20 69 6E 20 44 45 09 42    FCB-Addr in DE.B
0096F0:  79 74 65 20 41 64 64 72 2E 6F 66 20 46 43 42 28    yte Addr.of FCB(
009700:  6F 64 65 6D 20 70 6F 72 74 20 74 6F 20 6B 65 65    odem port to kee
009710:  70 20 70 72 74 63 68 72 0D 0A 3B 09 62 75 73 79    p prtchr..;.busy
009720:  2E 20 20 54 68 69 73 20 63 61 6E 20 68 61 70 70    .  This can happ
009730:  65 6E 20 66 6F 72 20 65 78 61 6D 70 6C 65 2C 20    en for example, 
009740:  69 66 20 74 68 65 20 70 72 69 6E 74 65 72 20 69    if the printer i
009750:  73 20 72 75 6E 6E 69 6E 67 0D 0A 3B 09 61 74 20    s running..;.at 
009760:  74 68 65 20 73 61 6D 65 20 73 70 65 65 64 20 61    the same speed a
009770:  73 20 74 68 65 20 6D 6F 64 65 6D 20 6C 69 6E 65    s the modem line
009780:  2C 20 6C 65 61 76 69 6E 67 20 79 6F 75 20 68 65    , leaving you he
009790:  6C 70 6C 65 73 73 20 74 6F 0D 0A 3B 09 74 75 72    lpless to..;.tur
0097A0:  6E 20 69 74 20 6F 66 66 20 6F 72 20 61 62 6F 72    n it off or abor
0097B0:  74 20 74 68 65 20 68 6F 73 74 2E 20 20 41 64 64    t the host.  Add
0097C0:  20 61 20 66 61 69 72 6E 65 73 73 20 63 6F 75 6E     a fairness coun
0097D0:  74 2C 20 73 6F 20 74 68 61 74 0D 0A 3B 09 61 74    t, so that..;.at
0097E0:  20 6C 65 61 73 74 20 65 76 65 72 79 20 70 72 66     least every prf
0097F0:  61 69 72 20 63 68 61 72 61 63 74 65 72 73 20 77    air characters w
009800:  65 20 6C 6F 6F 6B 20 61 74 20 63 6F 6E 73 6F 6C    e look at consol
009810:  65 20 69 6E 70 75 74 2E 0D 0A 3B 0D 0A 3B 20 65    e input...;..; e
009820:  64 69 74 20 32 3A 20 4A 75 6C 79 20 31 30 2C 20    dit 2: July 10, 
009830:  31 39 38 34 20 28 43 4A 43 29 0D 0A 3B 09 52 65    1984 (CJC)..;.Re
009840:  6D 6F 76 65 20 64 65 66 69 6E 65 73 20 66 6F 72    move defines for
009850:  20 54 52 55 45 20 61 6E 64 20 46 41 4C 53 45 2C     TRUE and FALSE,
009860:  20 64 75 72 69 6E 67 20 72 65 6F 72 67 61 6E 69     during reorgani
009870:  7A 61 74 69 6F 6E 20 66 6F 72 20 4C 41 53 4D 0D    zation for LASM.
009880:  0A 3B 09 63 6F 6D 70 61 74 69 62 69 6C 69 74 79    .;.compatibility
009890:  2E 20 20 49 66 20 77 65 27 72 65 20 75 73 69 6E    .  If we're usin
0098A0:  67 20 4C 41 53 4D 2C 20 74 68 69 73 20 66 69 6C    g LASM, this fil
0098B0:  65 20 69 73 20 6C 69 6E 6B 65 64 20 62 79 20 43    e is linked by C
0098C0:  50 34 4B 45 52 0D 0A 3B 09 6F 72 20 43 50 34 54    P4KER..;.or CP4T
0098D0:  59 50 2C 20 61 6E 64 20 6C 69 6E 6B 73 20 74 6F    YP, and links to
0098E0:  20 43 50 34 4D 49 54 20 6F 72 20 43 50 34 4C 4E     CP4MIT or CP4LN
0098F0:  4B 2E 20 20 41 6C 73 6F 2C 20 70 75 73 68 20 63    K.  Also, push c
009900:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
009910:  08 00 00 00 02 09 4E E5 08 00 C1 02 00 00 00 02    ......N.........
009920:  08 00 C6 02 00 00 00 02 08 00 C2 02 00 00 00 02    ................
009930:  08 00 C7 02 00 00 00 02 08 00 C3 02 00 00 00 02    ................
009940:  08 00 C8 02 00 00 00 02 08 00 C4 02 00 00 00 02    ................
009950:  08 00 C9 02 00 00 00 02 08 00 C5 02 00 00 00 02    ................
009960:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
009970:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
009980:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
009990:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
009A00:  30 2D 33 29 2C 0D 0A 09 09 09 3B 09 09 09 09 20    0-3),.....;.... 
009A10:  6F 72 20 30 46 46 48 20 69 66 20 6E 6F 74 0D 0A    or 0FFH if not..
009A20:  73 6E 65 78 74 09 45 51 55 09 31 32 48 09 3B 53    snext.EQU.12H.;S
009A30:  65 61 72 63 68 20 6E 65 78 74 09 46 43 42 2D 41    earch next.FCB-A
009A40:  64 64 72 20 69 6E 20 44 45 09 42 79 74 65 20 41    ddr in DE.Byte A
009A50:  64 64 72 2E 6F 66 20 6E 65 78 74 20 46 43 42 2C    ddr.of next FCB,
009A60:  0D 0A 09 09 09 3B 09 09 09 09 20 6F 72 20 30 46    .....;.... or 0F
009A70:  46 48 20 69 66 20 6E 6F 74 0D 0A 64 65 6C 66 09    FH if not..delf.
009A80:  45 51 55 09 31 33 48 09 3B 44 65 6C 65 74 65 20    EQU.13H.;Delete 
009A90:  46 69 6C 65 09 46 43 42 2D 41 64 64 72 20 69 6E    File.FCB-Addr in
009AA0:  20 44 45 09 42 79 74 65 20 41 64 64 72 2E 6F 66     DE.Byte Addr.of
009AB0:  20 46 43 42 28 30 2D 33 29 2C 0D 0A 09 09 09 3B     FCB(0-3),.....;
009AC0:  09 09 09 09 20 6F 72 20 30 46 46 48 20 69 66 20    .... or 0FFH if 
009AD0:  6E 6F 74 0D 0A 72 65 61 64 66 09 45 51 55 09 31    not..readf.EQU.1
009AE0:  34 48 09 3B 52 65 61 64 20 52 65 63 6F 72 64 09    4H.;Read Record.
009AF0:  46 43 42 2D 41 64 64 72 20 69 6E 20 44 45 09 30    FCB-Addr in DE.0
009B00:  3D 73 75 63 63 65 73 73 66 75 6C 20 72 65 61 64    =successful read
009B10:  0D 0A 09 09 09 3B 09 09 09 09 31 3D 72 65 61 64    .....;....1=read
009B20:  20 70 61 73 74 20 45 4F 46 0D 0A 09 09 09 3B 09     past EOF.....;.
009B30:  09 09 09 32 3D 72 65 61 64 69 6E 67 20 72 61 6E    ...2=reading ran
009B40:  64 6F 6D 20 64 61 74 61 0D 0A 77 72 69 74 65 66    dom data..writef
009B50:  09 45 51 55 09 31 35 48 09 3B 57 72 69 74 65 20    .EQU.15H.;Write 
009B60:  52 65 63 6F 72 64 09 46 43 42 2D 41 64 64 72 20    Record.FCB-Addr 
009B70:  69 6E 20 44 45 09 30 3D 73 75 63 63 65 73 73 66    in DE.0=successf
009B80:  75 6C 20 77 72 69 74 65 0D 0A 09 09 09 3B 09 09    ul write.....;..
009B90:  09 09 31 3D 45 52 52 4F 52 20 65 78 74 65 6E 64    ..1=ERROR extend
009BA0:  69 6E 67 0D 0A 09 09 09 3B 09 09 09 09 32 3D 45    ing.....;....2=E
009BB0:  6E 64 20 6F 66 20 64 69 73 6B 20 64 61 74 61 0D    nd of disk data.
009BC0:  0A 09 09 09 3B 09 09 09 09 32 35 35 3D 4E 6F 20    ....;....255=No 
009BD0:  6D 6F 72 65 20 44 49 52 20 73 70 61 63 65 0D 0A    more DIR space..
009BE0:  6D 61 6B 65 66 09 45 51 55 09 31 36 48 09 3B 4D    makef.EQU.16H.;M
009BF0:  61 6B 65 20 46 69 6C 65 09 46 43 42 2D 41 64 64    ake File.FCB-Add
009C00:  4F 3B 4D 61 78 69 6D 75 6D 20 73 69 7A 65 20 6F    O;Maximum size o
009C10:  66 20 61 20 70 61 63 6B 65 74 2E 0D 0A 6D 61 78    f a packet...max
009C20:  74 72 79 09 45 51 55 09 30 35 4F 09 3B 20 4E 75    try.EQU.05O.; Nu
009C30:  6D 62 65 72 20 6F 66 20 72 65 74 72 69 65 73 20    mber of retries 
009C40:  6F 6E 20 61 20 70 61 63 6B 65 74 2E 0D 0A 69 6D    on a packet...im
009C50:  78 74 72 79 09 45 51 55 09 32 30 4F 09 3B 20 4E    xtry.EQU.20O.; N
009C60:  75 6D 62 65 72 20 6F 66 20 72 65 74 72 69 65 73    umber of retries
009C70:  20 73 65 6E 64 20 69 6E 69 74 69 61 74 65 2E 0D     send initiate..
009C80:  0A 70 72 66 61 69 72 09 45 51 55 09 31 30 30 09    .prfair.EQU.100.
009C90:  3B 5B 70 63 63 30 30 38 5D 20 50 72 74 63 68 72    ;[pcc008] Prtchr
009CA0:  20 66 61 69 72 6E 65 73 73 20 63 6F 75 6E 74 0D     fairness count.
009CB0:  0A 0D 0A 3B 20 6F 70 63 6F 64 65 73 20 66 6F 72    ...; opcodes for
009CC0:  20 63 6F 6D 6D 61 6E 64 20 70 61 72 73 65 72 0D     command parser.
009CD0:  0A 63 6D 6B 65 79 09 45 51 55 09 30 31 48 09 3B    .cmkey.EQU.01H.;
009CE0:  50 61 72 73 65 20 61 20 6B 65 79 77 6F 72 64 2E    Parse a keyword.
009CF0:  0D 0A 63 6D 69 66 69 09 45 51 55 09 30 32 48 09    ..cmifi.EQU.02H.
009D00:  3B 50 61 72 73 65 20 61 6E 20 69 6E 70 75 74 20    ;Parse an input 
009D10:  66 69 6C 65 20 73 70 65 63 20 28 63 61 6E 20 62    file spec (can b
009D20:  65 20 77 69 6C 64 29 2E 0D 0A 63 6D 6F 66 69 09    e wild)...cmofi.
009D30:  45 51 55 09 30 33 48 09 3B 50 61 72 73 65 20 61    EQU.03H.;Parse a
009D40:  6E 20 6F 75 74 70 75 74 20 66 69 6C 65 20 73 70    n output file sp
009D50:  65 63 2E 0D 0A 63 6D 63 66 6D 09 45 51 55 09 30    ec...cmcfm.EQU.0
009D60:  34 48 09 3B 50 61 72 73 65 20 61 20 63 6F 6E 66    4H.;Parse a conf
009D70:  69 72 6D 2E 0D 0A 63 6D 74 78 74 09 45 51 55 09    irm...cmtxt.EQU.
009D80:  30 35 48 09 3B 50 61 72 73 65 20 74 65 78 74 2E    05H.;Parse text.
009D90:  0D 0A 63 6D 69 66 69 6E 09 45 51 55 09 31 30 48    ..cmifin.EQU.10H
009DA0:  09 3B 50 61 72 73 65 20 61 6E 20 69 6E 70 75 74    .;Parse an input
009DB0:  20 66 69 6C 65 20 73 70 65 63 20 28 62 75 74 20     file spec (but 
009DC0:  6E 6F 0D 0A 09 09 09 3B 45 72 72 6F 72 20 6F 75    no.....;Error ou
009DD0:  74 70 75 74 0D 0A 0D 0A 3B 0C 0D 0A 3B 20 49 66    tput....;...; If
009DE0:  20 74 68 69 73 20 69 73 20 62 65 69 6E 67 20 61     this is being a
009DF0:  73 73 65 6D 62 6C 65 64 20 62 79 20 4C 41 53 4D    ssembled by LASM
009E00:  72 20 69 6E 20 44 45 09 30 2D 33 3D 20 73 75 63    r in DE.0-3= suc
009E10:  63 65 73 73 2C 0D 0A 09 09 09 3B 09 09 09 09 32    cess,.....;....2
009E20:  35 35 3D 20 6E 6F 20 6D 6F 72 65 20 64 69 72 20    55= no more dir 
009E30:  73 70 61 63 65 0D 0A 72 65 6E 61 6D 09 45 51 55    space..renam.EQU
009E40:  09 31 37 48 09 3B 52 65 6E 61 6D 65 20 46 69 6C    .17H.;Rename Fil
009E50:  65 09 46 43 42 2D 41 64 64 72 20 69 6E 20 44 45    e.FCB-Addr in DE
009E60:  09 30 2D 33 3D 20 73 75 63 63 65 73 73 2C 0D 0A    .0-3= success,..
009E70:  09 09 09 3B 09 09 09 09 32 35 35 3D 20 66 69 6C    ...;....255= fil
009E80:  65 20 6E 6F 74 20 66 6F 75 6E 64 0D 0A 72 64 6C    e not found..rdl
009E90:  6F 67 09 45 51 55 09 31 38 48 09 3B 52 65 74 2E    og.EQU.18H.;Ret.
009EA0:  20 4C 6F 67 20 43 6F 64 65 09 4E 4F 4E 45 09 09     Log Code.NONE..
009EB0:  4C 6F 67 69 6E 20 56 65 63 74 6F 72 20 69 6E 20    Login Vector in 
009EC0:  48 4C 0D 0A 72 64 64 72 76 09 45 51 55 09 31 39    HL..rddrv.EQU.19
009ED0:  48 09 3B 52 65 61 64 20 44 72 69 76 65 20 23 09    H.;Read Drive #.
009EE0:  4E 4F 4E 45 09 09 23 20 6F 66 20 6C 6F 67 67 65    NONE..# of logge
009EF0:  64 20 69 6E 20 64 72 69 76 65 20 69 6E 0D 0A 09    d in drive in...
009F00:  09 09 3B 09 09 09 09 28 41 3D 30 2C 42 3D 31 2C    ..;....(A=0,B=1,
009F10:  43 3D 32 2E 2E 2E 2E 29 0D 0A 73 65 74 64 6D 61    C=2....)..setdma
009F20:  09 45 51 55 09 31 41 48 09 3B 53 65 74 20 44 4D    .EQU.1AH.;Set DM
009F30:  41 20 41 64 64 72 2E 09 41 64 64 72 2E 20 6F 66    A Addr..Addr. of
009F40:  20 31 32 38 09 4E 4F 4E 45 0D 0A 09 09 09 3B 09     128.NONE.....;.
009F50:  09 62 79 74 65 20 62 75 66 66 65 72 20 69 6E 20    .byte buffer in 
009F60:  44 45 0D 0A 77 72 74 70 72 74 09 45 51 55 09 31    DE..wrtprt.EQU.1
009F70:  43 48 09 3B 57 72 69 74 65 20 70 72 6F 74 20 64    CH.;Write prot d
009F80:  73 6B 09 4E 4F 4E 45 09 09 4E 4F 4E 45 0D 0A 67    sk.NONE..NONE..g
009F90:  65 74 72 6F 76 09 45 51 55 09 31 44 48 09 3B 47    etrov.EQU.1DH.;G
009FA0:  65 74 20 52 2F 4F 20 56 65 63 74 2E 09 4E 4F 4E    et R/O Vect..NON
009FB0:  45 09 09 48 4C 3D 20 52 2F 4F 20 56 65 63 74 2E    E..HL= R/O Vect.
009FC0:  20 76 61 6C 75 65 0D 0A 73 65 74 66 61 74 09 45     value..setfat.E
009FD0:  51 55 09 31 45 48 09 3B 53 65 74 20 46 69 6C 65    QU.1EH.;Set File
009FE0:  20 41 74 74 72 2E 09 46 43 42 2D 41 64 64 72 2E     Attr..FCB-Addr.
009FF0:  69 6E 20 44 45 09 44 69 72 2E 20 63 6F 64 65 20    in DE.Dir. code 
00A000:  2C 20 77 65 20 6E 65 65 64 20 74 6F 20 4C 49 4E    , we need to LIN
00A010:  4B 20 74 6F 20 6F 6E 65 20 6F 66 20 74 77 6F 20    K to one of two 
00A020:  6D 6F 64 75 6C 65 73 3B 0D 0A 3B 20 69 66 20 77    modules;..; if w
00A030:  65 27 72 65 20 6E 6F 74 20 75 73 69 6E 67 20 4C    e're not using L
00A040:  41 53 4D 2C 20 6E 6F 20 70 72 6F 62 6C 65 6D 2E    ASM, no problem.
00A050:  0D 0A 3B 20 43 50 34 4B 45 52 2E 41 53 4D 20 64    ..; CP4KER.ASM d
00A060:  65 66 69 6E 65 73 20 22 63 70 34 6B 65 72 22 20    efines "cp4ker" 
00A070:  54 52 55 45 2C 20 61 6E 64 20 43 50 34 54 59 50    TRUE, and CP4TYP
00A080:  2E 41 53 4D 20 64 65 66 69 6E 65 73 20 69 74 20    .ASM defines it 
00A090:  46 41 4C 53 45 2C 20 73 6F 20 77 65 20 63 61 6E    FALSE, so we can
00A0A0:  0D 0A 3B 20 64 65 74 65 72 6D 69 6E 65 20 77 68    ..; determine wh
00A0B0:  61 74 27 73 20 67 6F 69 6E 67 20 6F 6E 2E 0D 0A    at's going on...
00A0C0:  49 46 20 6C 61 73 6D 20 41 4E 44 20 63 70 34 6B    IF lasm AND cp4k
00A0D0:  65 72 09 3B 20 62 75 69 6C 64 69 6E 67 20 43 50    er.; building CP
00A0E0:  34 4B 45 52 20 77 69 74 68 20 4C 41 53 4D 3F 0D    4KER with LASM?.
00A0F0:  0A 09 4C 49 4E 4B 09 43 50 34 4D 49 54 09 3B 20    ..LINK.CP4MIT.; 
00A100:  79 65 73 2C 20 63 68 61 69 6E 20 74 6F 20 6E 65    yes, chain to ne
00A110:  78 74 20 70 69 65 63 65 2E 0D 0A 45 4E 44 49 46    xt piece...ENDIF
00A120:  3B 6C 61 73 6D 20 41 4E 44 20 63 70 34 6B 65 72    ;lasm AND cp4ker
00A130:  0D 0A 49 46 20 6C 61 73 6D 20 41 4E 44 20 4E 4F    ..IF lasm AND NO
00A140:  54 20 63 70 34 6B 65 72 09 3B 20 4C 41 53 4D 2C    T cp4ker.; LASM,
00A150:  20 62 75 74 20 6E 6F 74 20 62 75 69 6C 64 69 6E     but not buildin
00A160:  67 20 43 50 34 4B 45 52 3F 0D 0A 09 4C 49 4E 4B    g CP4KER?...LINK
00A170:  09 43 50 34 4C 4E 4B 09 3B 20 79 65 73 2C 20 63    .CP4LNK.; yes, c
00A180:  68 61 69 6E 20 74 6F 20 64 69 66 66 65 72 65 6E    hain to differen
00A190:  74 20 70 69 65 63 65 2E 0D 0A 45 4E 44 49 46 3B    t piece...ENDIF;
00A1A0:  6C 61 73 6D 20 41 4E 44 20 4E 4F 54 20 63 70 34    lasm AND NOT cp4
00A1B0:  6B 65 72 0D 0A 00 00 00 00 00 00 00 00 00 00 00    ker.............
00A1C0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00A1D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00A1E0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00A1F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00A200:  69 6E 20 41 0D 0A 67 74 64 70 61 72 09 45 51 55    in A..gtdpar.EQU
00A210:  09 31 46 48 09 3B 47 65 74 20 44 53 4B 20 70 61    .1FH.;Get DSK pa
00A220:  72 2E 09 4E 4F 4E 45 09 09 48 4C 3D 44 50 42 20    r..NONE..HL=DPB 
00A230:  41 64 64 72 65 73 73 0D 0A 75 73 72 63 6F 64 09    Address..usrcod.
00A240:  45 51 55 09 32 30 48 09 3B 47 65 74 2F 53 65 74    EQU.20H.;Get/Set
00A250:  20 55 73 72 2E 43 64 09 45 3D 30 46 46 48 20 28     Usr.Cd.E=0FFH (
00A260:  67 65 74 29 09 41 3D 63 75 72 72 65 6E 74 20 63    get).A=current c
00A270:  6F 64 65 20 28 67 65 74 29 0D 0A 09 09 09 3B 09    ode (get).....;.
00A280:  09 45 2D 63 6F 64 65 20 28 73 65 74 29 09 41 3D    .E-code (set).A=
00A290:  6E 6F 20 76 61 6C 75 65 20 28 73 65 74 29 0D 0A    no value (set)..
00A2A0:  72 72 61 6E 64 09 45 51 55 09 32 31 48 09 3B 52    rrand.EQU.21H.;R
00A2B0:  65 61 64 20 20 52 61 6E 64 6F 6D 09 46 43 42 2D    ead  Random.FCB-
00A2C0:  41 64 64 72 20 69 6E 20 44 45 09 41 3D 52 65 74    Addr in DE.A=Ret
00A2D0:  75 72 6E 20 63 6F 64 65 0D 0A 77 72 61 6E 64 09    urn code..wrand.
00A2E0:  45 51 55 09 32 32 48 09 3B 57 72 69 74 65 20 52    EQU.22H.;Write R
00A2F0:  61 6E 64 6F 6D 09 46 43 42 2D 41 64 64 72 20 69    andom.FCB-Addr i
00A300:  6E 20 44 45 09 31 3D 72 65 61 64 27 67 20 75 6E    n DE.1=read'g un
00A310:  77 72 69 74 74 65 6E 20 64 61 74 61 0D 0A 09 09    written data....
00A320:  09 3B 09 09 09 09 32 3D 28 6E 6F 74 20 75 73 65    .;....2=(not use
00A330:  64 29 0D 0A 09 09 09 3B 09 09 09 09 33 3D 63 61    d).....;....3=ca
00A340:  6E 27 74 20 63 6C 6F 73 65 20 63 75 72 72 2E 20    n't close curr. 
00A350:  65 78 74 0D 0A 09 09 09 3B 09 09 09 09 34 3D 73    ext.....;....4=s
00A360:  65 65 6B 20 74 6F 20 75 6E 77 72 2E 20 65 78 74    eek to unwr. ext
00A370:  2E 0D 0A 09 09 09 3B 09 09 09 09 35 3D 64 69 72    ......;....5=dir
00A380:  20 6F 76 65 72 66 6C 6F 77 28 77 72 69 74 65 29     overflow(write)
00A390:  0D 0A 09 09 09 3B 09 09 09 09 36 3D 73 65 65 6B    .....;....6=seek
00A3A0:  20 70 61 73 74 20 45 6E 64 20 6F 66 20 44 53 4B     past End of DSK
00A3B0:  0D 0A 63 66 6C 73 7A 09 45 51 55 09 32 33 48 09    ..cflsz.EQU.23H.
00A3C0:  3B 43 6F 6D 70 20 46 69 6C 65 20 53 7A 2E 09 46    ;Comp File Sz..F
00A3D0:  43 42 20 41 64 64 72 2E 69 6E 20 44 45 09 52 61    CB Addr.in DE.Ra
00A3E0:  6E 64 2E 52 65 63 2E 66 69 65 6C 64 20 73 65 74    nd.Rec.field set
00A3F0:  20 74 6F 0D 0A 09 09 09 3B 09 09 09 09 20 46 69     to.....;.... Fi
00A400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A4A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A4B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A4C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A4D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A4E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A4F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A5A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A5B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A5C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A5D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A5E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A5F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00A600:  6C 65 20 73 69 7A 65 0D 0A 73 65 74 72 61 72 09    le size..setrar.
00A610:  45 51 55 09 32 34 48 09 3B 53 65 74 20 52 61 6E    EQU.24H.;Set Ran
00A620:  64 2E 20 52 65 63 2E 09 46 43 42 2D 41 64 64 72    d. Rec..FCB-Addr
00A630:  2E 69 6E 20 44 45 09 52 61 6E 64 2E 52 65 63 2E    .in DE.Rand.Rec.
00A640:  66 69 65 6C 64 20 73 65 74 0D 0A 0D 0A 3B 20 43    field set....; C
00A650:  50 4D 20 32 20 6F 6E 6C 79 3A 0D 0A 70 75 6E 6F    PM 2 only:..puno
00A660:  75 74 09 45 51 55 09 30 34 48 09 3B 57 72 69 74    ut.EQU.04H.;Writ
00A670:  65 20 50 75 6E 63 68 09 41 53 43 49 49 20 43 68    e Punch.ASCII Ch
00A680:  61 72 20 69 6E 20 45 09 20 4E 4F 4E 45 0D 0A 67    ar in E. NONE..g
00A690:  74 69 6F 62 09 45 51 55 09 30 37 48 09 3B 47 65    tiob.EQU.07H.;Ge
00A6A0:  74 20 49 2F 4F 20 73 74 61 74 75 73 20 4E 4F 4E    t I/O status NON
00A6B0:  45 09 09 20 49 2F 4F 20 53 74 61 74 75 73 20 69    E.. I/O Status i
00A6C0:  6E 20 41 0D 0A 70 74 69 6F 62 09 45 51 55 09 30    n A..ptiob.EQU.0
00A6D0:  38 48 09 3B 50 75 74 20 49 2F 4F 20 73 74 61 74    8H.;Put I/O stat
00A6E0:  75 73 09 49 2F 4F 20 53 74 61 74 75 73 20 69 6E    us.I/O Status in
00A6F0:  20 45 09 20 4E 4F 4E 45 0D 0A 67 65 74 61 6C 76     E. NONE..getalv
00A700:  09 45 51 55 09 31 42 48 09 3B 47 65 74 20 41 6C    .EQU.1BH.;Get Al
00A710:  6C 2E 56 65 63 74 2E 09 4E 4F 4E 45 09 09 41 6C    l.Vect..NONE..Al
00A720:  6C 2E 56 65 63 74 20 69 6E 20 48 4C 0D 0A 0D 0A    l.Vect in HL....
00A730:  3B 20 43 50 4D 20 33 20 6F 6E 6C 79 3A 0D 0A 61    ; CPM 3 only:..a
00A740:  75 78 6F 75 74 09 45 51 55 09 30 34 48 09 3B 41    uxout.EQU.04H.;A
00A750:  75 78 69 6C 69 61 72 79 20 6F 75 74 70 75 74 0D    uxiliary output.
00A760:  0A 61 75 78 69 73 74 09 45 51 55 09 30 37 48 09    .auxist.EQU.07H.
00A770:  3B 47 65 74 20 41 55 58 49 4E 3A 20 73 74 61 74    ;Get AUXIN: stat
00A780:  75 73 09 09 20 41 3D 46 46 20 69 66 20 63 68 61    us.. A=FF if cha
00A790:  72 61 63 74 65 72 0D 0A 09 09 09 3B 09 09 09 09    racter.....;....
00A7A0:  20 72 65 61 64 79 2C 20 41 3D 30 20 69 66 20 6E     ready, A=0 if n
00A7B0:  6F 6E 65 0D 0A 61 75 78 6F 73 74 09 45 51 55 09    one..auxost.EQU.
00A7C0:  30 38 48 09 3B 47 65 74 20 41 55 58 4F 55 54 3A    08H.;Get AUXOUT:
00A7D0:  20 73 74 61 74 75 73 09 09 20 41 3D 46 46 20 69     status.. A=FF i
00A7E0:  66 20 72 65 61 64 79 2C 20 41 3D 30 0D 0A 09 09    f ready, A=0....
00A7F0:  09 3B 09 09 09 09 20 69 66 20 6E 6F 74 20 72 65    .;.... if not re
00A800:  3B 20 43 50 34 4B 45 52 2E 41 53 4D 0D 0A 3B 09    ; CP4KER.ASM..;.
00A810:  4B 45 52 4D 49 54 20 2D 20 28 43 65 6C 74 69 63    KERMIT - (Celtic
00A820:  20 66 6F 72 20 22 46 52 45 45 22 29 0D 0A 3B 0D     for "FREE")..;.
00A830:  0A 3B 09 54 68 69 73 20 69 73 20 74 68 65 20 43    .;.This is the C
00A840:  50 2F 4D 2D 38 30 20 69 6D 70 6C 65 6D 65 6E 74    P/M-80 implement
00A850:  61 74 69 6F 6E 20 6F 66 20 74 68 65 20 43 6F 6C    ation of the Col
00A860:  75 6D 62 69 61 20 55 6E 69 76 65 72 73 69 74 79    umbia University
00A870:  0D 0A 3B 09 4B 45 52 4D 49 54 20 66 69 6C 65 20    ..;.KERMIT file 
00A880:  74 72 61 6E 73 66 65 72 20 70 72 6F 74 6F 63 6F    transfer protoco
00A890:  6C 2E 0D 0A 3B 0D 0A 3B 09 56 65 72 73 69 6F 6E    l...;..;.Version
00A8A0:  20 34 2E 30 0D 0A 3B 0D 0A 3B 09 43 6F 70 79 72     4.0..;..;.Copyr
00A8B0:  69 67 68 74 20 4A 75 6E 65 20 31 39 38 31 2C 31    ight June 1981,1
00A8C0:  39 38 32 2C 31 39 38 33 2C 31 39 38 34 0D 0A 3B    982,1983,1984..;
00A8D0:  09 43 6F 6C 75 6D 62 69 61 20 55 6E 69 76 65 72    .Columbia Univer
00A8E0:  73 69 74 79 0D 0A 3B 0D 0A 3B 20 4F 72 69 67 69    sity..;..; Origi
00A8F0:  6E 61 6C 6C 79 20 77 72 69 74 74 65 6E 20 62 79    nally written by
00A900:  20 42 69 6C 6C 20 43 61 74 63 68 69 6E 67 73 20     Bill Catchings 
00A910:  6F 66 20 74 68 65 20 43 6F 6C 75 6D 62 69 61 20    of the Columbia 
00A920:  55 6E 69 76 65 72 73 69 74 79 20 43 65 6E 74 65    University Cente
00A930:  72 20 66 6F 72 0D 0A 3B 20 43 6F 6D 70 75 74 69    r for..; Computi
00A940:  6E 67 20 41 63 74 69 76 69 74 69 65 73 2C 20 36    ng Activities, 6
00A950:  31 32 20 57 2E 20 31 31 35 74 68 20 53 74 2E 2C    12 W. 115th St.,
00A960:  20 4E 65 77 20 59 6F 72 6B 2C 20 4E 59 20 31 30     New York, NY 10
00A970:  30 32 35 2E 0D 0A 3B 0D 0A 3B 20 43 6F 6E 74 72    025...;..; Contr
00A980:  69 62 75 74 69 6F 6E 73 20 62 79 20 46 72 61 6E    ibutions by Fran
00A990:  6B 20 64 61 20 43 72 75 7A 2C 20 44 61 70 68 6E    k da Cruz, Daphn
00A9A0:  65 20 54 7A 6F 61 72 2C 20 42 65 72 6E 69 65 20    e Tzoar, Bernie 
00A9B0:  45 69 62 65 6E 2C 0D 0A 3B 20 42 72 75 63 65 20    Eiben,..; Bruce 
00A9C0:  54 61 6E 6E 65 72 2C 20 4E 69 63 6B 20 42 75 73    Tanner, Nick Bus
00A9D0:  68 2C 20 47 72 65 67 20 53 6D 61 6C 6C 2C 20 4B    h, Greg Small, K
00A9E0:  69 6D 6D 6F 20 4C 61 61 6B 73 6F 6E 65 6E 2C 20    immo Laaksonen, 
00A9F0:  4A 65 66 66 20 44 61 6D 65 6E 73 2C 20 61 6E 64    Jeff Damens, and
00AA00:  61 64 79 0D 0A 67 65 74 66 73 09 45 51 55 09 32    ady..getfs.EQU.2
00AA10:  45 48 09 3B 47 65 74 20 66 72 65 65 20 73 70 61    EH.;Get free spa
00AA20:  63 65 09 45 3D 64 72 69 76 65 09 09 23 20 72 65    ce.E=drive..# re
00AA30:  63 20 66 72 65 65 20 69 6E 20 64 6D 61 20 61 64    c free in dma ad
00AA40:  64 72 0D 0A 3B 0C 0D 0A 70 61 72 65 76 6E 09 45    dr..;...parevn.E
00AA50:  51 55 09 30 30 48 09 3B 45 76 65 6E 20 70 61 72    QU.00H.;Even par
00AA60:  69 74 79 2E 0D 0A 70 61 72 6D 72 6B 09 45 51 55    ity...parmrk.EQU
00AA70:  09 30 33 48 09 3B 4D 61 72 6B 20 70 61 72 69 74    .03H.;Mark parit
00AA80:  79 2E 0D 0A 70 61 72 6E 6F 6E 09 45 51 55 09 30    y...parnon.EQU.0
00AA90:  36 48 09 3B 4E 6F 20 70 61 72 69 74 79 20 28 65    6H.;No parity (e
00AAA0:  69 67 68 74 68 20 62 69 74 20 69 73 20 64 61 74    ighth bit is dat
00AAB0:  61 29 2E 0D 0A 70 61 72 6F 64 64 09 45 51 55 09    a)...parodd.EQU.
00AAC0:  30 39 48 09 3B 4F 64 64 20 70 61 72 69 74 79 2E    09H.;Odd parity.
00AAD0:  0D 0A 70 61 72 73 70 63 09 45 51 55 09 30 43 48    ..parspc.EQU.0CH
00AAE0:  09 3B 53 70 61 63 65 20 70 61 72 69 74 79 2E 0D    .;Space parity..
00AAF0:  0A 0D 0A 64 65 66 70 61 72 09 45 51 55 09 70 61    ...defpar.EQU.pa
00AB00:  72 6E 6F 6E 09 3B 44 65 66 61 75 6C 74 20 70 61    rnon.;Default pa
00AB10:  72 69 74 79 2E 0D 0A 69 62 6D 70 61 72 09 45 51    rity...ibmpar.EQ
00AB20:  55 09 70 61 72 6D 72 6B 09 3B 49 42 4D 20 43 4F    U.parmrk.;IBM CO
00AB30:  4D 54 45 4E 27 73 20 70 61 72 69 74 79 2E 0D 0A    MTEN's parity...
00AB40:  0D 0A 66 63 62 09 45 51 55 09 35 43 48 09 3B 4C    ..fcb.EQU.5CH.;L
00AB50:  6F 63 61 74 69 6F 6E 20 6F 66 20 46 69 6C 65 20    ocation of File 
00AB60:  43 6F 6E 74 72 6F 6C 20 42 6C 6F 63 6B 2E 0D 0A    Control Block...
00AB70:  66 63 62 65 78 74 09 65 71 75 09 66 63 62 2B 31    fcbext.equ.fcb+1
00AB80:  32 0D 0A 66 63 62 72 6E 6F 09 65 71 75 09 66 63    2..fcbrno.equ.fc
00AB90:  62 2B 33 33 0D 0A 62 75 66 66 09 45 51 55 09 38    b+33..buff.EQU.8
00ABA0:  30 48 09 3B 4C 6F 63 61 74 69 6F 6E 20 6F 66 20    0H.;Location of 
00ABB0:  66 69 6C 65 20 6F 75 74 70 75 74 20 62 75 66 66    file output buff
00ABC0:  65 72 20 28 44 4D 41 29 2E 0D 0A 62 75 66 73 69    er (DMA)...bufsi
00ABD0:  7A 09 45 51 55 09 38 30 48 09 3B 53 69 7A 65 20    z.EQU.80H.;Size 
00ABE0:  6F 66 20 44 4D 41 2E 0D 0A 0D 0A 6D 61 78 70 6B    of DMA.....maxpk
00ABF0:  74 20 20 45 51 55 09 27 7E 27 2D 27 20 27 2B 32    t  EQU.'~'-' '+2
00AC00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00AC10:  09 00 00 00 02 09 4E E5 09 00 C1 02 00 00 00 02    ......N.........
00AC20:  09 00 C6 02 00 00 00 02 09 00 C2 02 00 00 00 02    ................
00AC30:  09 00 C7 02 00 00 00 02 09 00 C3 02 00 00 00 02    ................
00AC40:  09 00 C8 02 00 00 00 02 09 00 C4 02 00 00 00 02    ................
00AC50:  09 00 C9 02 00 00 00 02 09 00 C5 02 00 00 00 02    ................
00AC60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00AC70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00AC80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00AC90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00ACA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00ACB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00ACC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00ACD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00ACE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00ACF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00AD00:  20 6D 61 6E 79 0D 0A 3B 20 6F 74 68 65 72 73 2E     many..; others.
00AD10:  0D 0A 3B 0D 0A 0D 0A 3B 20 54 68 69 73 20 69 73    ..;....; This is
00AD20:  20 74 68 65 20 68 65 61 64 65 72 20 66 6F 72 20     the header for 
00AD30:  74 68 65 20 73 79 73 74 65 6D 2D 69 6E 64 65 70    the system-indep
00AD40:  65 6E 64 65 6E 74 20 70 6F 72 74 69 6F 6E 20 6F    endent portion o
00AD50:  66 20 4B 45 52 4D 49 54 2C 20 77 68 69 63 68 0D    f KERMIT, which.
00AD60:  0A 3B 20 63 6F 6E 73 69 73 74 73 20 6F 66 20 74    .; consists of t
00AD70:  68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 66 69 6C    he following fil
00AD80:  65 73 20 28 69 6E 20 74 68 69 73 20 6F 72 64 65    es (in this orde
00AD90:  72 29 3A 0D 0A 3B 09 43 50 34 4B 45 52 2E 41 53    r):..;.CP4KER.AS
00ADA0:  4D 20 2D 20 74 68 69 73 20 66 69 6C 65 0D 0A 3B    M - this file..;
00ADB0:  09 43 50 34 44 45 46 2E 41 53 4D 20 2D 20 64 65    .CP4DEF.ASM - de
00ADC0:  66 69 6E 69 74 69 6F 6E 73 20 66 6F 72 20 62 6F    finitions for bo
00ADD0:  74 68 20 4B 45 52 4D 49 54 20 61 6E 64 20 4B 45    th KERMIT and KE
00ADE0:  52 53 59 53 0D 0A 3B 09 43 50 34 4D 49 54 2E 41    RSYS..;.CP4MIT.A
00ADF0:  53 4D 20 2D 20 69 6E 69 74 69 61 6C 69 7A 61 74    SM - initializat
00AE00:  69 6F 6E 2C 20 6D 61 69 6E 20 6C 6F 6F 70 2C 20    ion, main loop, 
00AE10:  6D 69 73 63 65 6C 6C 61 6E 65 6F 75 73 20 63 6F    miscellaneous co
00AE20:  6D 6D 61 6E 64 73 0D 0A 3B 09 09 20 20 20 20 20    mmands..;..     
00AE30:  28 42 59 45 2C 20 45 58 49 54 2C 20 4C 4F 47 2C    (BYE, EXIT, LOG,
00AE40:  20 53 45 54 2C 20 53 48 4F 57 2C 20 61 6E 64 20     SET, SHOW, and 
00AE50:  53 54 41 54 55 53 29 0D 0A 3B 09 43 50 34 50 4B    STATUS)..;.CP4PK
00AE60:  54 2E 41 53 4D 20 2D 20 74 68 65 20 4B 45 52 4D    T.ASM - the KERM
00AE70:  49 54 20 70 72 6F 74 6F 63 6F 6C 20 68 61 6E 64    IT protocol hand
00AE80:  6C 65 72 20 28 53 45 4E 44 2C 20 52 45 43 45 49    ler (SEND, RECEI
00AE90:  56 45 2C 20 4C 4F 47 4F 55 54 2C 0D 0A 3B 09 09    VE, LOGOUT,..;..
00AEA0:  20 20 20 20 20 61 6E 64 20 46 49 4E 49 53 48 20         and FINISH 
00AEB0:  63 6F 6D 6D 61 6E 64 73 29 0D 0A 3B 09 43 50 34    commands)..;.CP4
00AEC0:  54 54 2E 41 53 4D 20 20 2D 20 74 68 65 20 74 72    TT.ASM  - the tr
00AED0:  61 6E 73 70 61 72 65 6E 74 20 63 6F 6D 6D 61 6E    ansparent comman
00AEE0:  64 73 20 28 54 52 41 4E 53 4D 49 54 2C 20 43 4F    ds (TRANSMIT, CO
00AEF0:  4E 4E 45 43 54 29 0D 0A 3B 09 43 50 34 43 50 4D    NNECT)..;.CP4CPM
00AF00:  74 68 65 20 45 4E 44 20 73 74 61 74 65 6D 65 6E    the END statemen
00AF10:  74 20 68 61 73 20 74 6F 20 62 65 0D 0A 3B 20 69    t has to be..; i
00AF20:  6E 20 43 50 34 55 54 4C 20 66 6F 72 20 4C 41 53    n CP4UTL for LAS
00AF30:  4D 20 28 6F 74 68 65 72 77 69 73 65 2C 20 77 65    M (otherwise, we
00AF40:  27 64 20 6E 65 65 64 20 61 20 66 69 6C 65 20 63    'd need a file c
00AF50:  6F 6E 74 61 69 6E 69 6E 67 20 6A 75 73 74 20 61    ontaining just a
00AF60:  6E 0D 0A 3B 20 45 4E 44 20 73 74 61 74 65 6D 65    n..; END stateme
00AF70:  6E 74 29 2E 20 20 53 6F 2C 20 77 65 20 6C 65 61    nt).  So, we lea
00AF80:  76 65 20 6F 66 66 20 74 68 65 20 49 46 20 6D 38    ve off the IF m8
00AF90:  30 20 4F 52 20 6D 61 63 38 30 20 63 6F 6E 64 69    0 OR mac80 condi
00AFA0:  74 69 6F 6E 61 6C 0D 0A 3B 20 74 68 61 74 20 6F    tional..; that o
00AFB0:  75 67 68 74 20 74 6F 20 62 65 20 61 72 6F 75 6E    ught to be aroun
00AFC0:  64 20 74 68 65 73 65 20 49 4E 43 4C 55 44 45 73    d these INCLUDEs
00AFD0:  2E 20 20 4E 6F 20 70 72 6F 62 6C 65 6D 20 75 6E    .  No problem un
00AFE0:  74 69 6C 20 74 68 65 20 6E 65 78 74 0D 0A 3B 20    til the next..; 
00AFF0:  69 6E 63 6F 6D 70 61 74 69 62 6C 65 20 61 73 73    incompatible ass
00B000:  65 6D 62 6C 65 72 20 63 6F 6D 65 73 20 61 6C 6F    embler comes alo
00B010:  6E 67 2E 2E 2E 0D 0A 09 49 4E 43 4C 55 44 45 20    ng......INCLUDE 
00B020:  43 50 34 44 45 46 2E 41 53 4D 09 3B 20 64 65 66    CP4DEF.ASM.; def
00B030:  69 6E 69 74 69 6F 6E 73 0D 0A 09 49 4E 43 4C 55    initions...INCLU
00B040:  44 45 20 43 50 34 4D 49 54 2E 41 53 4D 09 3B 20    DE CP4MIT.ASM.; 
00B050:  69 6E 69 74 69 61 6C 69 7A 61 74 69 6F 6E 2C 20    initialization, 
00B060:  6D 61 69 6E 20 6C 6F 6F 70 2C 20 73 6F 6D 65 20    main loop, some 
00B070:  63 6F 6D 6D 61 6E 64 73 0D 0A 09 49 4E 43 4C 55    commands...INCLU
00B080:  44 45 09 43 50 34 50 4B 54 2E 41 53 4D 09 3B 20    DE.CP4PKT.ASM.; 
00B090:  4B 45 52 4D 49 54 20 70 72 6F 74 6F 63 6F 6C 20    KERMIT protocol 
00B0A0:  68 61 6E 64 6C 65 72 0D 0A 09 49 4E 43 4C 55 44    handler...INCLUD
00B0B0:  45 20 43 50 34 54 54 2E 41 53 4D 09 3B 20 74 72    E CP4TT.ASM.; tr
00B0C0:  61 6E 73 70 61 72 65 6E 74 20 63 6F 6D 6D 75 6E    ansparent commun
00B0D0:  69 63 61 74 69 6F 6E 20 68 61 6E 64 6C 65 72 0D    ication handler.
00B0E0:  0A 09 49 4E 43 4C 55 44 45 09 43 50 34 43 50 4D    ..INCLUDE.CP4CPM
00B0F0:  2E 41 53 4D 09 3B 20 43 50 2F 4D 20 63 6F 6D 6D    .ASM.; CP/M comm
00B100:  2E 41 53 4D 20 2D 20 43 50 2F 4D 20 63 6F 6D 6D    .ASM - CP/M comm
00B110:  61 6E 64 73 20 28 44 49 52 2C 20 45 52 41 29 0D    ands (DIR, ERA).
00B120:  0A 3B 09 43 50 34 57 4C 44 2E 41 53 4D 20 2D 20    .;.CP4WLD.ASM - 
00B130:  74 68 65 20 77 69 6C 64 63 61 72 64 20 68 61 6E    the wildcard han
00B140:  64 6C 65 72 0D 0A 3B 09 43 50 34 43 4D 44 2E 41    dler..;.CP4CMD.A
00B150:  53 4D 20 2D 20 74 68 65 20 63 6F 6D 6D 61 6E 64    SM - the command
00B160:  20 70 61 72 73 65 72 0D 0A 3B 09 43 50 34 55 54     parser..;.CP4UT
00B170:  4C 2E 41 53 4D 20 2D 20 75 74 69 6C 69 74 79 20    L.ASM - utility 
00B180:  72 6F 75 74 69 6E 65 73 20 61 6E 64 20 64 61 74    routines and dat
00B190:  61 0D 0A 3B 0D 0A 3B 20 57 68 65 6E 20 62 75 69    a..;..; When bui
00B1A0:  6C 64 69 6E 67 20 74 68 65 20 73 79 73 74 65 6D    lding the system
00B1B0:  2D 69 6E 64 65 70 65 6E 64 65 6E 74 20 70 61 72    -independent par
00B1C0:  74 20 77 69 74 68 20 4D 38 30 20 6F 72 20 4D 41    t with M80 or MA
00B1D0:  43 38 30 2C 20 43 50 34 4B 45 52 0D 0A 3B 20 49    C80, CP4KER..; I
00B1E0:  4E 43 4C 55 44 45 73 20 74 68 65 20 6F 74 68 65    NCLUDEs the othe
00B1F0:  72 20 66 69 6C 65 73 3B 20 77 68 65 6E 20 62 75    r files; when bu
00B200:  69 6C 64 69 6E 67 20 77 69 74 68 20 4C 41 53 4D    ilding with LASM
00B210:  2C 20 65 61 63 68 20 66 69 6C 65 20 4C 49 4E 4B    , each file LINK
00B220:  73 20 74 6F 0D 0A 3B 20 74 68 65 20 6E 65 78 74    s to..; the next
00B230:  20 66 69 6C 65 2E 0D 0A 3B 0D 0A 3B 20 46 6F 72     file...;..; For
00B240:  20 6E 6F 77 2C 20 74 68 65 20 73 79 73 74 65 6D     now, the system
00B250:  2D 64 65 70 65 6E 64 65 6E 74 20 72 6F 75 74 69    -dependent routi
00B260:  6E 65 73 20 61 72 65 20 61 6C 6C 20 69 6E 20 43    nes are all in C
00B270:  50 34 53 59 53 2E 41 53 4D 2C 20 77 69 74 68 0D    P4SYS.ASM, with.
00B280:  0A 3B 20 74 68 65 20 61 63 74 75 61 6C 20 63 6F    .; the actual co
00B290:  6E 66 69 67 75 72 61 74 69 6F 6E 20 64 65 66 69    nfiguration defi
00B2A0:  6E 65 64 20 69 6E 20 43 50 34 54 59 50 2E 41 53    ned in CP4TYP.AS
00B2B0:  4D 2E 0D 0A 3B 0D 0A 3B 20 72 65 76 69 73 69 6F    M...;..; revisio
00B2C0:  6E 20 68 69 73 74 6F 72 79 20 28 6C 61 74 65 73    n history (lates
00B2D0:  74 20 66 69 72 73 74 29 3A 0D 0A 3B 20 65 64 69    t first):..; edi
00B2E0:  74 20 33 3A 20 46 65 62 72 75 61 72 79 20 31 30    t 3: February 10
00B2F0:  2C 20 31 39 38 35 20 28 43 4A 43 29 0D 0A 3B 09    , 1985 (CJC)..;.
00B300:  61 6E 64 20 73 75 70 70 6F 72 74 20 28 44 49 52    and support (DIR
00B310:  2C 20 45 52 41 29 0D 0A 09 49 4E 43 4C 55 44 45    , ERA)...INCLUDE
00B320:  09 43 50 34 57 4C 44 2E 41 53 4D 09 3B 20 77 69    .CP4WLD.ASM.; wi
00B330:  6C 64 63 61 72 64 20 68 61 6E 64 6C 65 72 0D 0A    ldcard handler..
00B340:  09 49 4E 43 4C 55 44 45 09 43 50 34 43 4D 44 2E    .INCLUDE.CP4CMD.
00B350:  41 53 4D 09 3B 20 63 6F 6D 6D 61 6E 64 20 70 61    ASM.; command pa
00B360:  72 73 65 72 0D 0A 09 49 4E 43 4C 55 44 45 20 43    rser...INCLUDE C
00B370:  50 34 55 54 4C 2E 41 53 4D 09 3B 20 56 61 72 69    P4UTL.ASM.; Vari
00B380:  6F 75 73 20 75 74 69 6C 69 74 69 65 73 20 61 6E    ous utilities an
00B390:  64 20 64 61 74 61 2C 20 61 6E 64 20 45 4E 44 20    d data, and END 
00B3A0:  5B 54 6F 61 64 48 61 6C 6C 5D 0D 0A 09 45 4E 44    [ToadHall]...END
00B3B0:  09 09 09 3B 20 4D 41 43 38 30 20 69 67 6E 6F 72    ...; MAC80 ignor
00B3C0:  65 73 20 45 4E 44 27 73 20 69 6E 20 69 6E 63 6C    es END's in incl
00B3D0:  75 64 65 64 20 66 69 6C 65 73 2E 2E 2E 0D 0A 00    uded files......
00B3E0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00B3F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00B400:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00B410:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00B420:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00B430:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00B440:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00B450:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00B460:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00B470:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00B480:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00B490:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00B4A0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00B4B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00B4C0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00B4D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00B4E0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00B4F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00B500:  55 70 64 61 74 65 20 66 6F 72 20 76 34 2E 30 35    Update for v4.05
00B510:  3B 20 61 64 64 20 22 76 65 72 6E 6F 22 20 73 6F    ; add "verno" so
00B520:  20 43 50 34 55 54 4C 20 64 6F 65 73 6E 27 74 20     CP4UTL doesn't 
00B530:  68 61 76 65 20 74 6F 20 63 68 61 6E 67 65 0D 0A    have to change..
00B540:  3B 09 6A 75 73 74 20 62 65 63 61 75 73 65 20 73    ;.just because s
00B550:  6F 6D 65 20 6F 74 68 65 72 20 6D 6F 64 75 6C 65    ome other module
00B560:  20 64 69 64 2E 0D 0A 3B 0D 0A 3B 20 65 64 69 74     did...;..; edit
00B570:  20 32 3A 20 53 65 70 74 65 6D 62 65 72 20 31 30     2: September 10
00B580:  2C 20 31 39 38 34 20 28 43 4A 43 29 0D 0A 3B 09    , 1984 (CJC)..;.
00B590:  55 70 64 61 74 65 20 66 6F 72 20 76 34 2E 30 33    Update for v4.03
00B5A0:  2E 0D 0A 3B 0D 0A 3B 20 65 64 69 74 20 31 3A 20    ...;..; edit 1: 
00B5B0:  4A 75 6C 79 20 32 37 2C 20 31 39 38 34 20 28 43    July 27, 1984 (C
00B5C0:  4A 43 29 0D 0A 3B 09 43 72 65 61 74 65 64 20 74    JC)..;.Created t
00B5D0:  6F 20 61 6C 6C 6F 77 20 61 73 73 65 6D 62 6C 79    o allow assembly
00B5E0:  20 6F 66 20 4B 65 72 6D 69 74 20 62 79 20 4C 41     of Kermit by LA
00B5F0:  53 4D 20 61 73 20 77 65 6C 6C 20 61 73 20 4D 41    SM as well as MA
00B600:  43 38 30 20 61 6E 64 20 4D 38 30 2E 0D 0A 0D 0A    C80 and M80.....
00B610:  76 65 72 6E 6F 09 45 51 55 09 30 35 09 09 3B 20    verno.EQU.05..; 
00B620:  6D 69 6E 6F 72 20 76 65 72 73 69 6F 6E 20 6E 75    minor version nu
00B630:  6D 62 65 72 0D 0A 09 0D 0A 3B 20 56 65 72 73 69    mber.....; Versi
00B640:  6F 6E 20 34 2E 30 35 20 6F 66 20 4B 65 72 6D 69    on 4.05 of Kermi
00B650:  74 20 63 6F 6E 73 69 73 74 73 20 6F 66 20 74 68    t consists of th
00B660:  65 20 66 6F 6C 6C 6F 77 69 6E 67 20 65 64 69 74    e following edit
00B670:  20 6C 65 76 65 6C 73 3A 0D 0A 3B 09 63 70 34 6B     levels:..;.cp4k
00B680:  65 72 2E 61 73 6D 20 65 64 69 74 20 33 0D 0A 3B    er.asm edit 3..;
00B690:  09 63 70 34 64 65 66 2E 61 73 6D 20 65 64 69 74    .cp4def.asm edit
00B6A0:  20 34 0D 0A 3B 09 63 70 34 6D 69 74 2E 61 73 6D     4..;.cp4mit.asm
00B6B0:  20 65 64 69 74 20 38 0D 0A 3B 09 63 70 34 70 6B     edit 8..;.cp4pk
00B6C0:  74 2E 61 73 6D 20 65 64 69 74 20 36 0D 0A 3B 09    t.asm edit 6..;.
00B6D0:  63 70 34 74 74 2E 61 73 6D 20 65 64 69 74 20 34    cp4tt.asm edit 4
00B6E0:  0D 0A 3B 09 63 70 34 63 70 6D 2E 61 73 6D 20 65    ..;.cp4cpm.asm e
00B6F0:  64 69 74 20 33 0D 0A 3B 09 63 70 34 77 6C 64 2E    dit 3..;.cp4wld.
00B700:  74 72 61 6E 73 66 65 72 20 70 72 6F 74 6F 63 6F    transfer protoco
00B710:  6C 2E 0D 0A 3B 0D 0A 3B 09 56 65 72 73 69 6F 6E    l...;..;.Version
00B720:  20 34 2E 30 0D 0A 3B 0D 0A 3B 09 43 6F 70 79 72     4.0..;..;.Copyr
00B730:  69 67 68 74 20 4A 75 6E 65 20 31 39 38 31 2C 31    ight June 1981,1
00B740:  39 38 32 2C 31 39 38 33 2C 31 39 38 34 2C 31 39    982,1983,1984,19
00B750:  38 35 0D 0A 3B 09 43 6F 6C 75 6D 62 69 61 20 55    85..;.Columbia U
00B760:  6E 69 76 65 72 73 69 74 79 0D 0A 3B 0D 0A 3B 20    niversity..;..; 
00B770:  4F 72 69 67 69 6E 61 6C 6C 79 20 77 72 69 74 74    Originally writt
00B780:  65 6E 20 62 79 20 42 69 6C 6C 20 43 61 74 63 68    en by Bill Catch
00B790:  69 6E 67 73 20 6F 66 20 74 68 65 20 43 6F 6C 75    ings of the Colu
00B7A0:  6D 62 69 61 20 55 6E 69 76 65 72 73 69 74 79 20    mbia University 
00B7B0:  43 65 6E 74 65 72 20 66 6F 72 0D 0A 3B 20 43 6F    Center for..; Co
00B7C0:  6D 70 75 74 69 6E 67 20 41 63 74 69 76 69 74 69    mputing Activiti
00B7D0:  65 73 2C 20 36 31 32 20 57 2E 20 31 31 35 74 68    es, 612 W. 115th
00B7E0:  20 53 74 2E 2C 20 4E 65 77 20 59 6F 72 6B 2C 20     St., New York, 
00B7F0:  4E 59 20 31 30 30 32 35 2E 0D 0A 3B 0D 0A 3B 20    NY 10025...;..; 
00B800:  43 6F 6E 74 72 69 62 75 74 69 6F 6E 73 20 62 79    Contributions by
00B810:  20 46 72 61 6E 6B 20 64 61 20 43 72 75 7A 2C 20     Frank da Cruz, 
00B820:  44 61 70 68 6E 65 20 54 7A 6F 61 72 2C 20 42 65    Daphne Tzoar, Be
00B830:  72 6E 69 65 20 45 69 62 65 6E 2C 0D 0A 3B 20 42    rnie Eiben,..; B
00B840:  72 75 63 65 20 54 61 6E 6E 65 72 2C 20 4E 69 63    ruce Tanner, Nic
00B850:  6B 20 42 75 73 68 2C 20 47 72 65 67 20 53 6D 61    k Bush, Greg Sma
00B860:  6C 6C 2C 20 4B 69 6D 6D 6F 20 4C 61 61 6B 73 6F    ll, Kimmo Laakso
00B870:  6E 65 6E 2C 20 4A 65 66 66 20 44 61 6D 65 6E 73    nen, Jeff Damens
00B880:  2C 20 61 6E 64 20 6D 61 6E 79 0D 0A 3B 20 6F 74    , and many..; ot
00B890:  68 65 72 73 2E 0D 0A 3B 0D 0A 3B 09 54 68 69 73    hers...;..;.This
00B8A0:  20 66 69 6C 65 20 63 6F 6E 74 61 69 6E 73 20 74     file contains t
00B8B0:  68 65 20 73 79 73 74 65 6D 2D 64 65 70 65 6E 64    he system-depend
00B8C0:  65 6E 74 20 63 6F 64 65 20 61 6E 64 20 64 61 74    ent code and dat
00B8D0:  61 20 66 6F 72 20 4B 45 52 4D 49 54 2E 0D 0A 3B    a for KERMIT...;
00B8E0:  09 49 74 20 77 69 6C 6C 20 62 65 20 70 72 6F 62    .It will be prob
00B8F0:  61 62 6C 79 20 62 65 20 62 72 6F 6B 65 6E 20 69    ably be broken i
00B900:  61 73 6D 20 65 64 69 74 20 33 0D 0A 3B 09 63 70    asm edit 3..;.cp
00B910:  34 63 6D 64 2E 61 73 6D 20 65 64 69 74 20 35 0D    4cmd.asm edit 5.
00B920:  0A 3B 09 63 70 34 75 74 6C 2E 61 73 6D 20 65 64    .;.cp4utl.asm ed
00B930:  69 74 20 36 0D 0A 3B 09 63 70 34 6C 6E 6B 2E 61    it 6..;.cp4lnk.a
00B940:  73 6D 20 65 64 69 74 20 35 20 28 63 70 34 6C 6E    sm edit 5 (cp4ln
00B950:  6B 2E 61 73 6D 20 69 73 20 6E 6F 74 20 61 73 73    k.asm is not ass
00B960:  65 6D 62 6C 65 64 20 77 69 74 68 20 63 70 34 6B    embled with cp4k
00B970:  65 72 2C 20 62 75 74 20 69 74 0D 0A 3B 09 09 64    er, but it..;..d
00B980:  65 66 69 6E 65 73 20 74 68 65 20 6C 69 6E 6B 61    efines the linka
00B990:  67 65 20 61 72 65 61 20 65 78 70 65 63 74 65 64    ge area expected
00B9A0:  20 62 79 20 63 70 34 6B 65 72 2C 20 61 6E 64 20     by cp4ker, and 
00B9B0:  73 6F 20 6D 75 73 74 0D 0A 3B 09 09 6D 61 74 63    so must..;..matc
00B9C0:  68 20 74 68 65 20 64 65 73 63 72 69 70 74 69 6F    h the descriptio
00B9D0:  6E 20 69 6E 20 63 70 34 75 74 6C 2E 61 73 6D 29    n in cp4utl.asm)
00B9E0:  0D 0A 3B 0D 0A 3B 20 56 65 72 73 69 6F 6E 20 34    ..;..; Version 4
00B9F0:  2E 30 35 20 6F 66 20 4B 65 72 6D 69 74 20 68 61    .05 of Kermit ha
00BA00:  73 20 62 65 65 6E 20 74 65 73 74 65 64 20 77 69    s been tested wi
00BA10:  74 68 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67    th the following
00BA20:  20 65 64 69 74 20 6C 65 76 65 6C 73 20 6F 66 0D     edit levels of.
00BA30:  0A 3B 20 74 68 65 20 73 79 73 74 65 6D 2D 64 65    .; the system-de
00BA40:  70 65 6E 64 65 6E 74 20 66 69 6C 65 73 3A 0D 0A    pendent files:..
00BA50:  3B 09 63 70 34 74 79 70 2E 61 73 6D 20 65 64 69    ;.cp4typ.asm edi
00BA60:  74 20 36 0D 0A 3B 09 63 70 34 73 79 73 2E 61 73    t 6..;.cp4sys.as
00BA70:  6D 20 65 64 69 74 20 31 32 0D 0A 3B 0D 0A 0D 0A    m edit 12..;....
00BA80:  46 41 4C 53 45 09 65 71 75 09 30 0D 0A 54 52 55    FALSE.equ.0..TRU
00BA90:  45 09 65 71 75 09 4E 4F 54 20 46 41 4C 53 45 0D    E.equ.NOT FALSE.
00BAA0:  0A 0D 0A 63 70 34 6B 65 72 09 65 71 75 09 54 52    ...cp4ker.equ.TR
00BAB0:  55 45 09 3B 20 62 75 69 6C 64 69 6E 67 20 73 79    UE.; building sy
00BAC0:  73 74 65 6D 2D 69 6E 64 65 70 65 6E 64 65 6E 74    stem-independent
00BAD0:  20 70 61 72 74 0D 0A 0D 0A 3B 0D 0A 3B 20 41 73     part....;..; As
00BAE0:  73 65 6D 62 6C 65 72 20 74 79 70 65 2E 20 20 44    sembler type.  D
00BAF0:  65 66 69 6E 65 20 74 68 65 20 61 70 70 72 6F 70    efine the approp
00BB00:  6E 74 6F 20 69 6E 64 65 70 65 6E 64 65 6E 74 20    nto independent 
00BB10:  66 69 6C 65 73 20 74 6F 20 67 65 6E 65 72 61 74    files to generat
00BB20:  65 0D 0A 3B 09 6F 76 65 72 6C 61 79 73 20 66 6F    e..;.overlays fo
00BB30:  72 20 74 68 65 20 76 61 72 69 6F 75 73 20 73 79    r the various sy
00BB40:  73 74 65 6D 73 2C 20 6F 6E 65 20 6F 72 20 6D 6F    stems, one or mo
00BB50:  72 65 20 6F 76 65 72 6C 61 79 20 70 6F 73 73 69    re overlay possi
00BB60:  62 6C 65 0D 0A 3B 09 66 72 6F 6D 20 65 61 63 68    ble..;.from each
00BB70:  20 66 69 6C 65 2E 20 20 46 6F 72 20 6E 6F 77 2C     file.  For now,
00BB80:  20 77 65 20 77 69 6C 6C 20 6C 65 61 76 65 20 69     we will leave i
00BB90:  74 20 69 6E 20 6F 6E 65 20 70 69 65 63 65 2E 0D    t in one piece..
00BBA0:  0A 3B 0D 0A 3B 20 72 65 76 69 73 69 6F 6E 20 68    .;..; revision h
00BBB0:  69 73 74 6F 72 79 3A 0D 0A 3B 0D 0A 3B 20 65 64    istory:..;..; ed
00BBC0:  69 74 20 31 33 3A 20 4A 75 6C 79 20 32 33 2C 20    it 13: July 23, 
00BBD0:  31 39 38 35 0D 0A 3B 20 20 20 20 20 20 20 63 68    1985..;       ch
00BBE0:  61 6E 67 65 20 44 65 66 61 75 6C 74 20 45 73 63    ange Default Esc
00BBF0:  61 70 65 20 43 68 61 72 61 63 74 65 72 20 74 6F    ape Character to
00BC00:  20 43 6F 6E 74 72 6F 6C 20 4F 20 66 6F 72 20 4F     Control O for O
00BC10:  73 62 6F 72 6E 65 20 31 27 73 2E 0D 0A 3B 20 20    sborne 1's...;  
00BC20:  20 20 20 20 20 20 20 20 20 20 20 20 47 65 72 6D                Germ
00BC30:  61 6E 20 4F 73 62 6F 72 6E 65 73 20 75 73 65 20    an Osbornes use 
00BC40:  74 68 65 20 5C 20 61 73 20 73 70 65 63 69 61 6C    the \ as special
00BC50:  20 47 65 72 6D 61 6E 20 63 68 61 72 61 63 74 65     German characte
00BC60:  72 0D 0A 3B 20 20 20 20 20 20 20 20 20 20 20 20    r..;            
00BC70:  20 20 73 6F 20 69 74 20 63 61 6E 27 74 20 62 65      so it can't be
00BC80:  20 70 75 73 68 65 64 20 74 6F 67 65 74 68 65 72     pushed together
00BC90:  20 77 69 74 68 20 74 68 65 20 63 6F 6E 74 72 6F     with the contro
00BCA0:  6C 20 62 75 74 74 6F 6E 2E 0D 0A 3B 20 20 20 20    l button...;    
00BCB0:  20 20 20 20 20 20 20 20 20 20 45 61 73 69 6C 79              Easily
00BCC0:  20 63 68 61 6E 67 65 64 20 62 61 63 6B 20 2E 20     changed back . 
00BCD0:  28 20 45 62 65 72 68 61 72 64 20 57 2E 20 4C 69    ( Eberhard W. Li
00BCE0:  73 73 65 20 29 0D 0A 3B 0D 0A 3B 20 65 64 69 74    sse )..;..; edit
00BCF0:  20 31 32 3A 20 46 65 62 72 75 61 72 79 20 36 2C     12: February 6,
00BD00:  72 69 61 74 65 20 6F 6E 65 20 54 52 55 45 2C 20    riate one TRUE, 
00BD10:  74 68 65 20 72 65 73 74 20 46 41 4C 53 45 2E 20    the rest FALSE. 
00BD20:  20 28 57 65 20 63 61 6E 27 74 0D 0A 3B 20 75 73     (We can't..; us
00BD30:  65 20 41 53 4D 2C 20 62 65 63 61 75 73 65 20 69    e ASM, because i
00BD40:  74 20 63 61 6E 6E 6F 74 20 68 61 6E 64 6C 65 20    t cannot handle 
00BD50:  6D 75 6C 74 69 70 6C 65 20 69 6E 70 75 74 20 66    multiple input f
00BD60:  69 6C 65 73 29 0D 0A 6D 61 63 38 30 09 45 51 55    iles)..mac80.EQU
00BD70:  09 46 41 4C 53 45 09 09 3B 20 46 6F 72 20 61 73    .FALSE..; For as
00BD80:  73 65 6D 62 6C 79 20 76 69 61 20 4D 41 43 38 30    sembly via MAC80
00BD90:  20 63 72 6F 73 73 2D 61 73 73 65 6D 62 6C 65 72     cross-assembler
00BDA0:  2E 0D 0A 6D 38 30 09 45 51 55 09 46 41 4C 53 45    ...m80.EQU.FALSE
00BDB0:  09 09 3B 20 46 6F 72 20 61 73 73 65 6D 62 6C 79    ..; For assembly
00BDC0:  20 76 69 61 20 4D 69 63 72 6F 73 6F 66 74 27 73     via Microsoft's
00BDD0:  20 4D 38 30 2E 0D 0A 6C 61 73 6D 09 45 51 55 09     M80...lasm.EQU.
00BDE0:  54 52 55 45 09 09 3B 20 46 6F 72 20 61 73 73 65    TRUE..; For asse
00BDF0:  6D 62 6C 79 20 76 69 61 20 4C 41 53 4D 2C 20 61    mbly via LASM, a
00BE00:  20 70 75 62 6C 69 63 2D 64 6F 6D 61 69 6E 0D 0A     public-domain..
00BE10:  09 09 09 09 3B 20 61 73 73 65 6D 62 6C 65 72 2E    ....; assembler.
00BE20:  0D 0A 3B 0D 0A 3B 09 47 65 74 20 74 68 65 20 6F    ..;..;.Get the o
00BE30:  74 68 65 72 20 6D 6F 64 75 6C 65 73 2E 2E 2E 0D    ther modules....
00BE40:  0A 0D 0A 49 46 20 6C 61 73 6D 09 09 09 09 3B 20    ...IF lasm....; 
00BE50:  49 66 20 77 65 27 72 65 20 6C 69 6E 6B 69 6E 67    If we're linking
00BE60:  2C 20 67 6F 20 6F 6E 20 74 6F 20 74 68 65 20 6E    , go on to the n
00BE70:  65 78 74 20 66 69 6C 65 2E 0D 0A 09 4C 49 4E 4B    ext file....LINK
00BE80:  09 43 50 34 44 45 46 0D 0A 45 4E 44 49 46 3B 6C    .CP4DEF..ENDIF;l
00BE90:  61 73 6D 0D 0A 0D 0A 3B 20 49 66 20 77 65 27 72    asm....; If we'r
00BEA0:  65 20 73 74 69 6C 6C 20 68 65 72 65 2C 20 77 65    e still here, we
00BEB0:  20 6D 75 73 74 20 62 65 20 75 73 69 6E 67 20 4D     must be using M
00BEC0:  38 30 20 6F 72 20 4D 41 43 38 30 2E 20 20 4D 38    80 or MAC80.  M8
00BED0:  30 20 64 6F 65 73 6E 27 74 0D 0A 3B 20 6C 69 6B    0 doesn't..; lik
00BEE0:  65 20 45 4E 44 73 20 69 6E 73 69 64 65 20 63 6F    e ENDs inside co
00BEF0:  6E 64 69 74 69 6F 6E 61 6C 73 2C 20 62 75 74 20    nditionals, but 
00BF00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00BF10:  0A 00 00 00 02 09 4E E5 0A 00 C1 02 00 00 00 02    ......N.........
00BF20:  0A 00 C6 02 00 00 00 02 0A 00 C2 02 00 00 00 02    ................
00BF30:  0A 00 C7 02 00 00 00 02 0A 00 C3 02 00 00 00 02    ................
00BF40:  0A 00 C8 02 00 00 00 02 0A 00 C4 02 00 00 00 02    ................
00BF50:  0A 00 C9 02 00 00 00 02 0A 00 C5 02 00 00 00 02    ................
00BF60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BF70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BF80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BF90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BFA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BFB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BFC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BFD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BFE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BFF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00C000:  20 31 39 38 35 0D 0A 3B 09 41 64 64 20 65 78 74     1985..;.Add ext
00C010:  65 6E 64 65 64 20 48 38 39 20 73 75 70 70 6F 72    ended H89 suppor
00C020:  74 20 28 62 79 20 50 61 75 6C 20 4D 69 6C 61 7A    t (by Paul Milaz
00C030:  7A 6F 2C 20 52 69 63 65 20 55 6E 69 76 65 72 73    zo, Rice Univers
00C040:  69 74 79 29 2C 0D 0A 3B 09 73 75 70 70 6F 72 74    ity),..;.support
00C050:  20 66 6F 72 20 4E 6F 72 74 68 73 74 61 72 20 48     for Northstar H
00C060:  6F 72 69 7A 6F 6E 20 77 69 74 68 20 4E 6F 72 74    orizon with Nort
00C070:  68 73 74 61 72 20 43 50 2F 4D 20 61 6E 64 20 53    hstar CP/M and S
00C080:  49 4F 2D 34 20 62 6F 61 72 64 0D 0A 3B 09 28 62    IO-4 board..;.(b
00C090:  79 20 4A 6F 65 20 53 6D 69 74 68 2C 20 43 6F 6C    y Joe Smith, Col
00C0A0:  6F 72 6F 64 6F 20 53 63 68 6F 6F 6C 20 6F 66 20    orodo School of 
00C0B0:  4D 69 6E 65 73 29 2C 20 61 6E 64 20 73 75 70 70    Mines), and supp
00C0C0:  6F 72 74 20 66 6F 72 20 4C 6F 62 6F 0D 0A 3B 09    ort for Lobo..;.
00C0D0:  4D 41 58 2D 38 30 20 63 6F 6D 70 75 74 65 72 20    MAX-80 computer 
00C0E0:  28 66 72 6F 6D 20 48 61 6C 20 48 6F 73 74 65 74    (from Hal Hostet
00C0F0:  6C 65 72 29 0D 0A 3B 0D 0A 3B 20 65 64 69 74 20    ler)..;..; edit 
00C100:  31 31 3A 20 31 33 2D 4A 61 6E 2D 38 35 20 62 79    11: 13-Jan-85 by
00C110:  20 56 61 6E 79 61 20 4A 2E 43 6F 6F 70 65 72 20     Vanya J.Cooper 
00C120:  50 69 6D 61 20 43 6F 6D 6D 75 6E 2E 20 43 6F 6C    Pima Commun. Col
00C130:  6C 65 67 65 20 54 65 6C 3A 20 36 30 32 2D 38 38    lege Tel: 602-88
00C140:  34 2D 36 38 30 39 0D 0A 3B 0D 0A 3B 70 63 63 30    4-6809..;..;pcc0
00C150:  30 31 09 32 37 2D 44 65 63 2D 38 34 09 76 6A 63    01.27-Dec-84.vjc
00C160:  09 6D 6F 64 75 6C 65 73 3A 20 63 70 34 73 79 73    .modules: cp4sys
00C170:  2C 63 70 34 74 79 70 0D 0A 3B 09 41 64 64 20 63    ,cp4typ..;.Add c
00C180:  6F 6E 64 69 74 69 6F 6E 61 6C 20 66 6F 72 20 58    onditional for X
00C190:  65 72 6F 78 20 38 32 30 2E 20 20 49 20 74 68 6F    erox 820.  I tho
00C1A0:  75 67 68 74 20 61 74 20 66 69 72 73 74 20 49 20    ught at first I 
00C1B0:  63 6F 75 6C 64 0D 0A 3B 09 6C 69 76 65 20 77 69    could..;.live wi
00C1C0:  74 68 20 74 68 65 20 6B 61 79 70 72 6F 20 63 6F    th the kaypro co
00C1D0:  6E 64 69 74 69 6F 6E 61 6C 2C 20 62 75 74 20 69    nditional, but i
00C1E0:  74 27 73 20 65 6E 6F 75 67 68 20 6F 66 20 61 20    t's enough of a 
00C1F0:  70 61 69 6E 0D 0A 3B 09 74 68 61 74 20 49 20 61    pain..;.that I a
00C200:  54 6F 61 64 20 48 61 6C 6C 20 63 68 61 6E 67 65    Toad Hall change
00C210:  73 3A 20 20 41 6C 6C 6F 77 20 61 73 73 65 6D 62    s:  Allow assemb
00C220:  6C 79 20 77 69 74 68 20 4C 41 53 4D 2C 20 61 64    ly with LASM, ad
00C230:  64 20 73 75 70 70 6F 72 74 20 66 6F 72 0D 0A 3B    d support for..;
00C240:  09 4D 6F 72 72 6F 77 20 44 65 63 69 73 69 6F 6E    .Morrow Decision
00C250:  20 49 2E 0D 0A 3B 0D 0A 3B 20 65 64 69 74 20 31     I...;..; edit 1
00C260:  3A 20 4D 61 79 2C 20 31 39 38 34 0D 0A 3B 09 65    : May, 1984..;.e
00C270:  78 74 72 61 63 74 65 64 20 66 72 6F 6D 20 43 50    xtracted from CP
00C280:  4D 42 41 53 45 2E 4D 38 30 20 76 65 72 73 69 6F    MBASE.M80 versio
00C290:  6E 20 33 2E 39 3B 20 6D 6F 64 69 66 69 63 61 74    n 3.9; modificat
00C2A0:  69 6F 6E 73 20 61 72 65 20 64 65 73 63 72 69 62    ions are describ
00C2B0:  65 64 0D 0A 3B 09 69 6E 20 74 68 65 20 61 63 63    ed..;.in the acc
00C2C0:  6F 6D 70 61 6E 79 69 6E 67 20 2E 55 50 44 20 66    ompanying .UPD f
00C2D0:  69 6C 65 2E 0D 0A 3B 0D 0A 3B 20 4B 65 65 70 20    ile...;..; Keep 
00C2E0:  6D 6F 64 75 6C 65 20 6E 61 6D 65 2C 20 65 64 69    module name, edi
00C2F0:  74 20 6E 75 6D 62 65 72 2C 20 61 6E 64 20 6C 61    t number, and la
00C300:  73 74 20 72 65 76 69 73 69 6F 6E 20 64 61 74 65    st revision date
00C310:  20 69 6E 20 6D 65 6D 6F 72 79 2E 0D 0A 73 79 73     in memory...sys
00C320:  65 64 74 3A 09 64 62 09 27 43 50 34 53 59 53 2E    edt:.db.'CP4SYS.
00C330:  41 53 4D 20 28 31 32 29 20 20 36 2D 46 65 62 2D    ASM (12)  6-Feb-
00C340:  38 35 24 27 0D 0A 3B 0C 0D 0A 3B 20 41 73 73 65    85$'..;...; Asse
00C350:  6D 62 6C 79 20 74 69 6D 65 20 6D 65 73 73 61 67    mbly time messag
00C360:  65 20 74 6F 20 6C 65 74 20 6D 65 20 6B 6E 6F 77    e to let me know
00C370:  20 49 27 6D 20 62 75 69 6C 64 69 6E 67 20 74 68     I'm building th
00C380:  65 20 72 69 67 68 74 20 76 65 72 73 69 6F 6E 2E    e right version.
00C390:  0D 0A 3B 20 4C 41 53 4D 20 67 65 6E 65 72 61 74    ..; LASM generat
00C3A0:  65 73 20 61 6E 20 27 53 27 20 65 72 72 6F 72 20    es an 'S' error 
00C3B0:  61 6C 6F 6E 67 20 77 69 74 68 20 74 68 65 20 6D    along with the m
00C3C0:  65 73 73 61 67 65 2C 20 77 68 69 63 68 20 69 73    essage, which is
00C3D0:  20 6D 65 73 73 79 2C 20 62 75 74 0D 0A 3B 20 62     messy, but..; b
00C3E0:  65 74 74 65 72 20 74 68 61 6E 20 74 72 79 69 6E    etter than tryin
00C3F0:  67 20 74 6F 20 70 75 74 20 65 76 65 72 79 74 68    g to put everyth
00C400:  64 64 65 64 20 69 74 20 62 61 63 6B 20 69 6E 2E    dded it back in.
00C410:  20 20 54 68 65 20 63 6C 65 61 72 2D 74 6F 2D 65      The clear-to-e
00C420:  6E 64 2D 6F 66 2D 73 63 72 65 65 6E 20 63 68 61    nd-of-screen cha
00C430:  72 0D 0A 3B 09 69 73 20 64 69 66 66 65 72 65 6E    r..;.is differen
00C440:  74 2C 20 20 62 72 65 61 6B 69 6E 67 20 6D 61 6E    t,  breaking man
00C450:  79 20 70 72 6F 67 72 61 6D 73 20 69 6E 20 56 54    y programs in VT
00C460:  35 32 20 6D 6F 64 65 2C 20 61 6E 64 20 74 68 65    52 mode, and the
00C470:  0D 0A 3B 09 64 65 66 61 75 6C 74 20 65 73 63 61    ..;.default esca
00C480:  70 65 20 63 68 61 72 20 63 6F 6E 74 72 6F 6C 2D    pe char control-
00C490:  5C 2C 20 69 73 20 6E 6F 74 20 61 74 20 61 6C 6C    \, is not at all
00C4A0:  20 6F 62 76 69 6F 75 73 20 68 6F 77 0D 0A 3B 09     obvious how..;.
00C4B0:  74 6F 20 74 79 70 65 20 6F 6E 20 74 68 65 20 38    to type on the 8
00C4C0:  32 30 20 6B 65 79 62 6F 61 72 64 2E 20 20 49 66    20 keyboard.  If
00C4D0:  20 79 6F 75 20 6D 75 64 64 6C 65 20 74 68 72 6F     you muddle thro
00C4E0:  75 67 68 20 74 68 65 0D 0A 3B 09 6B 65 79 20 74    ugh the..;.key t
00C4F0:  72 61 6E 73 6C 61 74 69 6F 6E 20 74 61 62 6C 65    ranslation table
00C500:  2C 20 69 74 20 74 75 72 6E 73 20 6F 75 74 20 74    , it turns out t
00C510:  6F 20 62 65 20 63 6F 6E 74 72 6F 6C 2D 63 6F 6D    o be control-com
00C520:  6D 61 2E 0D 0A 3B 09 52 61 74 68 65 72 20 74 68    ma...;.Rather th
00C530:  61 6E 20 4F 52 20 78 65 72 38 32 30 20 61 6C 6C    an OR xer820 all
00C540:  20 74 68 65 20 6F 63 63 75 72 61 6E 63 65 73 20     the occurances 
00C550:  6F 66 20 6B 70 49 49 20 63 6F 6E 64 69 74 69 6F    of kpII conditio
00C560:  6E 61 6C 73 0D 0A 3B 09 49 20 61 64 64 65 64 20    nals..;.I added 
00C570:  61 20 62 62 49 20 63 6F 6E 64 69 74 69 6F 6E 61    a bbI conditiona
00C580:  6C 20 66 6F 72 20 61 6C 6C 20 63 6F 6D 6D 6F 6E    l for all common
00C590:  20 63 6F 64 65 20 66 6F 72 20 74 68 65 20 62 69     code for the bi
00C5A0:  67 0D 0A 3B 09 62 6F 61 72 64 20 49 20 62 61 73    g..;.board I bas
00C5B0:  65 64 20 6D 61 63 68 69 6E 65 73 20 74 68 61 74    ed machines that
00C5C0:  20 69 73 20 61 75 74 6F 6D 61 74 69 63 61 6C 6C     is automaticall
00C5D0:  79 20 74 75 72 6E 65 64 20 6F 6E 20 62 79 0D 0A    y turned on by..
00C5E0:  3B 09 65 69 74 68 65 72 20 6B 70 49 49 20 6F 72    ;.either kpII or
00C5F0:  20 78 65 72 38 32 30 2E 20 20 54 68 69 73 20 77     xer820.  This w
00C600:  69 6E 67 20 69 6E 73 69 64 65 20 61 20 49 46 20    ing inside a IF 
00C610:  6D 38 30 20 4F 52 20 6D 61 63 38 30 20 63 6F 6E    m80 OR mac80 con
00C620:  64 69 74 69 6F 6E 61 6C 2C 0D 0A 3B 20 62 65 63    ditional,..; bec
00C630:  61 75 73 65 20 4C 41 53 4D 20 64 6F 65 73 6E 27    ause LASM doesn'
00C640:  74 20 6C 69 6B 65 20 6E 65 73 74 65 64 20 49 46    t like nested IF
00C650:  27 73 2C 20 65 69 74 68 65 72 2E 0D 0A 0D 0A 49    's, either.....I
00C660:  46 20 72 6F 62 69 6E 0D 0A 2E 70 72 69 6E 74 78    F robin...printx
00C670:  20 2A 20 41 73 73 65 6D 62 6C 69 6E 67 20 4B 45     * Assembling KE
00C680:  52 4D 49 54 2D 38 30 20 66 6F 72 20 74 68 65 20    RMIT-80 for the 
00C690:  44 45 43 20 56 54 31 38 30 20 2A 0D 0A 45 4E 44    DEC VT180 *..END
00C6A0:  49 46 0D 0A 0D 0A 49 46 20 62 72 61 69 6E 0D 0A    IF....IF brain..
00C6B0:  2E 70 72 69 6E 74 78 20 2A 20 41 73 73 65 6D 62    .printx * Assemb
00C6C0:  6C 69 6E 67 20 4B 45 52 4D 49 54 2D 38 30 20 66    ling KERMIT-80 f
00C6D0:  6F 72 20 74 68 65 20 49 6E 74 65 72 74 65 63 20    or the Intertec 
00C6E0:  53 75 70 65 72 62 72 61 69 6E 20 2A 0D 0A 45 4E    Superbrain *..EN
00C6F0:  44 49 46 0D 0A 0D 0A 49 46 20 76 65 63 74 6F 72    DIF....IF vector
00C700:  0D 0A 2E 70 72 69 6E 74 78 20 2A 20 41 73 73 65    ...printx * Asse
00C710:  6D 62 6C 69 6E 67 20 4B 45 52 4D 49 54 2D 38 30    mbling KERMIT-80
00C720:  20 66 6F 72 20 74 68 65 20 56 65 63 74 6F 72 20     for the Vector 
00C730:  47 72 61 70 68 69 63 73 20 2A 0D 0A 45 4E 44 49    Graphics *..ENDI
00C740:  46 0D 0A 0D 0A 49 46 20 6F 73 69 0D 0A 2E 70 72    F....IF osi...pr
00C750:  69 6E 74 78 20 2A 20 41 73 73 65 6D 62 6C 69 6E    intx * Assemblin
00C760:  67 20 4B 45 52 4D 49 54 2D 38 30 20 66 6F 72 20    g KERMIT-80 for 
00C770:  74 68 65 20 4F 68 69 6F 20 53 63 69 65 6E 74 69    the Ohio Scienti
00C780:  66 69 63 20 2A 0D 0A 45 4E 44 49 46 0D 0A 0D 0A    fic *..ENDIF....
00C790:  49 46 20 68 65 61 74 68 0D 0A 2E 70 72 69 6E 74    IF heath...print
00C7A0:  78 20 2A 20 41 73 73 65 6D 62 6C 69 6E 67 20 4B    x * Assembling K
00C7B0:  45 52 4D 49 54 2D 38 30 20 66 6F 72 20 74 68 65    ERMIT-80 for the
00C7C0:  20 48 65 61 74 68 2F 5A 65 6E 69 74 68 20 38 39     Heath/Zenith 89
00C7D0:  20 2A 0D 0A 45 4E 44 49 46 0D 0A 0D 0A 49 46 20     *..ENDIF....IF 
00C7E0:  7A 31 30 30 0D 0A 2E 70 72 69 6E 74 78 20 2A 20    z100...printx * 
00C7F0:  41 73 73 65 6D 62 6C 69 6E 67 20 4B 45 52 4D 49    Assembling KERMI
00C800:  69 6C 6C 20 61 6C 73 6F 20 6D 61 6B 65 20 69 74    ill also make it
00C810:  20 65 61 73 69 65 72 20 69 6E 0D 0A 3B 09 74 68     easier in..;.th
00C820:  65 20 66 75 74 75 72 65 20 69 66 20 61 6E 6F 74    e future if anot
00C830:  68 65 72 20 66 6C 61 76 6F 72 20 6F 66 20 62 69    her flavor of bi
00C840:  67 62 6F 61 72 64 20 69 73 20 61 64 64 65 64 2E    gboard is added.
00C850:  0D 0A 3B 0D 0A 3B 20 65 64 69 74 20 31 30 3A 20    ..;..; edit 10: 
00C860:  35 20 44 65 63 65 6D 62 65 72 20 31 39 38 34 20    5 December 1984 
00C870:  62 79 20 43 4A 43 0D 0A 3B 09 41 64 64 20 6D 69    by CJC..;.Add mi
00C880:  73 73 69 6E 67 20 45 4E 44 49 46 20 28 74 73 6B    ssing ENDIF (tsk
00C890:  2C 20 74 73 6B 29 0D 0A 3B 0D 0A 3B 20 65 64 69    , tsk)..;..; edi
00C8A0:  74 20 39 3A 20 34 20 44 65 63 65 6D 62 65 72 20    t 9: 4 December 
00C8B0:  31 39 38 34 20 62 79 20 43 4A 43 0D 0A 3B 09 41    1984 by CJC..;.A
00C8C0:  64 64 20 74 77 6F 20 6F 73 62 6F 72 6E 65 20 66    dd two osborne f
00C8D0:  69 78 65 73 3A 20 6D 69 73 73 69 6E 67 20 63 72    ixes: missing cr
00C8E0:  6C 66 20 69 6E 20 6F 75 74 6C 69 6E 3A 2C 20 69    lf in outlin:, i
00C8F0:  6E 63 6F 72 72 65 63 74 20 6F 70 63 6F 64 65 20    ncorrect opcode 
00C900:  69 6E 0D 0A 3B 09 69 6E 69 74 69 61 6C 69 7A 61    in..;.initializa
00C910:  74 69 6F 6E 2E 0D 0A 3B 0D 0A 3B 20 65 64 69 74    tion...;..; edit
00C920:  20 38 3A 20 31 33 20 4F 63 74 6F 62 65 72 20 31     8: 13 October 1
00C930:  39 38 34 20 62 79 20 4C 20 4D 20 4A 6F 6E 65 73    984 by L M Jones
00C940:  2C 20 4A 43 43 2C 20 66 6F 72 20 4E 65 77 20 59    , JCC, for New Y
00C950:  6F 72 6B 20 42 6F 74 61 6E 69 63 61 6C 20 47 61    ork Botanical Ga
00C960:  72 64 65 6E 0D 0A 3B 09 41 64 64 20 73 75 70 70    rden..;.Add supp
00C970:  6F 72 74 20 66 6F 72 20 43 50 54 2D 38 35 78 78    ort for CPT-85xx
00C980:  20 73 65 72 69 65 73 20 77 6F 72 64 20 70 72 6F     series word pro
00C990:  63 65 73 73 6F 72 73 20 77 68 65 6E 20 72 75 6E    cessors when run
00C9A0:  6E 69 6E 67 20 43 50 2F 4D 2D 38 30 2E 0D 0A 3B    ning CP/M-80...;
00C9B0:  0D 0A 3B 20 65 64 69 74 20 37 3A 20 32 39 20 41    ..; edit 7: 29 A
00C9C0:  75 67 75 73 74 20 31 39 38 34 20 62 79 20 42 64    ugust 1984 by Bd
00C9D0:  61 6C 65 20 47 61 72 62 65 65 20 40 20 43 4D 55    ale Garbee @ CMU
00C9E0:  0D 0A 3B 09 41 64 64 20 73 75 70 70 6F 72 74 20    ..;.Add support 
00C9F0:  66 6F 72 20 44 69 67 69 63 6F 6D 70 20 44 65 6C    for Digicomp Del
00CA00:  54 2D 38 30 20 66 6F 72 20 74 68 65 20 48 65 61    T-80 for the Hea
00CA10:  74 68 2F 5A 65 6E 69 74 68 20 5A 31 30 30 20 2A    th/Zenith Z100 *
00CA20:  0D 0A 45 4E 44 49 46 0D 0A 0D 0A 49 46 20 61 70    ..ENDIF....IF ap
00CA30:  70 6C 65 0D 0A 2E 70 72 69 6E 74 78 20 2A 20 41    ple...printx * A
00CA40:  73 73 65 6D 62 6C 69 6E 67 20 4B 45 52 4D 49 54    ssembling KERMIT
00CA50:  2D 38 30 20 66 6F 72 20 74 68 65 20 41 70 70 6C    -80 for the Appl
00CA60:  65 20 5D 5B 20 2A 0D 0A 45 4E 44 49 46 3B 61 70    e ][ *..ENDIF;ap
00CA70:  70 6C 65 0D 0A 49 46 20 61 70 6D 6D 64 6D 0D 0A    ple..IF apmmdm..
00CA80:  2E 70 72 69 6E 74 78 20 2A 20 20 20 77 69 74 68    .printx *   with
00CA90:  20 5A 38 30 20 53 6F 66 74 63 61 72 64 20 26 20     Z80 Softcard & 
00CAA0:  4D 69 63 72 6F 6D 6F 64 65 6D 20 49 49 20 20 20    Micromodem II   
00CAB0:  2A 0D 0A 45 4E 44 49 46 3B 61 70 6D 6D 64 6D 0D    *..ENDIF;apmmdm.
00CAC0:  0A 49 46 20 61 70 36 35 35 31 0D 0A 2E 70 72 69    .IF ap6551...pri
00CAD0:  6E 74 78 20 2A 20 20 20 20 20 77 69 74 68 20 5A    ntx *     with Z
00CAE0:  38 30 20 53 6F 66 74 63 61 72 64 20 26 20 36 35    80 Softcard & 65
00CAF0:  35 31 20 41 43 49 41 20 20 20 20 20 2A 0D 0A 45    51 ACIA     *..E
00CB00:  4E 44 49 46 3B 61 70 36 35 35 31 0D 0A 0D 0A 49    NDIF;ap6551....I
00CB10:  46 20 74 72 73 38 30 0D 0A 2E 70 72 69 6E 74 78    F trs80...printx
00CB20:  20 2A 20 41 73 73 65 6D 62 6C 69 6E 67 20 4B 45     * Assembling KE
00CB30:  52 4D 49 54 2D 38 30 20 66 6F 72 20 74 68 65 20    RMIT-80 for the 
00CB40:  54 52 53 2D 38 30 20 49 49 20 2A 0D 0A 45 4E 44    TRS-80 II *..END
00CB50:  49 46 0D 0A 0D 0A 49 46 20 6F 73 62 72 6E 31 0D    IF....IF osbrn1.
00CB60:  0A 2E 70 72 69 6E 74 78 20 2A 20 41 73 73 65 6D    ..printx * Assem
00CB70:  62 6C 69 6E 67 20 4B 45 52 4D 49 54 2D 38 30 20    bling KERMIT-80 
00CB80:  66 6F 72 20 74 68 65 20 4F 73 62 6F 72 6E 65 20    for the Osborne 
00CB90:  31 20 2A 0D 0A 45 4E 44 49 46 0D 0A 0D 0A 49 46    1 *..ENDIF....IF
00CBA0:  20 74 65 6C 63 6F 6E 0D 0A 2E 70 72 69 6E 74 78     telcon...printx
00CBB0:  20 2A 20 41 73 73 65 6D 62 6C 69 6E 67 20 4B 45     * Assembling KE
00CBC0:  52 4D 49 54 2D 38 30 20 66 6F 72 20 74 68 65 20    RMIT-80 for the 
00CBD0:  54 65 6C 63 6F 6E 20 5A 6F 72 62 61 20 2A 0D 0A    Telcon Zorba *..
00CBE0:  45 4E 44 49 46 0D 0A 0D 0A 49 46 20 64 6D 49 49    ENDIF....IF dmII
00CBF0:  0D 0A 2E 70 72 69 6E 74 78 20 2A 20 41 73 73 65    ...printx * Asse
00CC00:  70 68 69 20 31 30 30 20 61 6E 64 20 4E 65 74 72    phi 100 and Netr
00CC10:  6F 6E 69 63 73 20 53 6D 61 72 74 76 69 64 20 74    onics Smartvid t
00CC20:  65 72 6D 69 6E 61 6C 2E 0D 0A 3B 0D 0A 3B 20 65    erminal...;..; e
00CC30:  64 69 74 20 36 3A 20 41 75 67 75 73 74 20 32 31    dit 6: August 21
00CC40:  2C 20 31 39 38 34 0D 0A 3B 09 41 64 64 20 66 6C    , 1984..;.Add fl
00CC50:  73 6D 64 6D 2C 20 74 6F 20 66 6C 75 73 68 20 63    smdm, to flush c
00CC60:  6F 6D 6D 20 6C 69 6E 65 20 6F 6E 20 73 74 61 72    omm line on star
00CC70:  74 75 70 2E 0D 0A 3B 09 53 75 70 70 6F 72 74 20    tup...;.Support 
00CC80:  6D 75 6C 74 69 70 6C 65 2D 73 65 63 74 6F 72 20    multiple-sector 
00CC90:  62 75 66 66 65 72 69 6E 67 20 28 65 78 63 65 70    buffering (excep
00CCA0:  74 20 66 6F 72 20 6F 73 62 6F 72 6E 65 20 31 29    t for osborne 1)
00CCB0:  2E 0D 0A 3B 0D 0A 3B 20 65 64 69 74 20 35 3A 20    ...;..; edit 5: 
00CCC0:  41 75 67 75 73 74 20 31 39 2C 20 31 39 38 34 0D    August 19, 1984.
00CCD0:  0A 3B 09 41 64 64 20 6D 69 73 73 69 6E 67 20 52    .;.Add missing R
00CCE0:  45 54 20 69 6E 20 6F 75 74 6C 70 74 3A 20 28 2A    ET in outlpt: (*
00CCF0:  73 69 67 68 2A 29 2E 20 20 41 6C 73 6F 20 70 72    sigh*).  Also pr
00CD00:  65 73 65 72 76 65 20 44 45 20 69 6E 20 63 61 73    eserve DE in cas
00CD10:  65 0D 0A 3B 09 74 68 65 20 42 49 4F 53 20 64 65    e..;.the BIOS de
00CD20:  73 74 72 6F 79 73 20 69 74 2E 20 20 41 64 64 20    stroys it.  Add 
00CD30:  76 65 72 73 69 6F 6E 20 73 74 72 69 6E 67 20 28    version string (
00CD40:  73 79 73 65 64 74 2C 20 73 69 6E 63 65 20 73 79    sysedt, since sy
00CD50:  73 76 65 72 0D 0A 3B 09 77 61 73 20 61 6C 72 65    sver..;.was alre
00CD60:  61 64 79 20 74 61 6B 65 6E 29 2E 0D 0A 3B 0D 0A    ady taken)...;..
00CD70:  3B 20 65 64 69 74 20 34 3A 20 41 75 67 75 73 74    ; edit 4: August
00CD80:  20 38 2C 20 31 39 38 34 0D 0A 3B 09 52 75 6E 6E     8, 1984..;.Runn
00CD90:  69 6E 67 20 74 65 72 6D 69 6E 61 6C 20 6F 75 74    ing terminal out
00CDA0:  70 75 74 20 74 68 72 6F 75 67 68 20 74 68 65 20    put through the 
00CDB0:  42 44 4F 53 20 64 69 64 6E 27 74 20 77 6F 72 6B    BDOS didn't work
00CDC0:  20 73 6F 20 77 65 6C 6C 20 66 6F 72 0D 0A 3B 09     so well for..;.
00CDD0:  74 68 65 20 4B 61 79 70 72 6F 2E 20 20 52 65 6D    the Kaypro.  Rem
00CDE0:  6F 76 65 20 74 68 65 20 73 70 65 63 69 61 6C 20    ove the special 
00CDF0:  63 68 65 63 6B 20 61 74 20 6F 75 74 63 6F 6E 3A    check at outcon:
00CE00:  6D 62 6C 69 6E 67 20 4B 45 52 4D 49 54 2D 38 30    mbling KERMIT-80
00CE10:  20 66 6F 72 20 74 68 65 20 44 45 43 6D 61 74 65     for the DECmate
00CE20:  20 49 49 20 2A 0D 0A 45 4E 44 49 46 0D 0A 0D 0A     II *..ENDIF....
00CE30:  49 46 20 67 65 6E 65 72 0D 0A 2E 70 72 69 6E 74    IF gener...print
00CE40:  78 20 2A 20 41 73 73 65 6D 62 6C 69 6E 67 20 47    x * Assembling G
00CE50:  65 6E 65 72 69 63 20 4B 45 52 4D 49 54 2D 38 30    eneric KERMIT-80
00CE60:  20 2A 0D 0A 45 4E 44 49 46 0D 0A 0D 0A 49 46 20     *..ENDIF....IF 
00CE70:  63 70 6D 33 0D 0A 2E 70 72 69 6E 74 78 20 2A 20    cpm3...printx * 
00CE80:  41 73 73 65 6D 62 6C 69 6E 67 20 47 65 6E 65 72    Assembling Gener
00CE90:  69 63 20 4B 45 52 4D 49 54 2D 38 30 20 66 6F 72    ic KERMIT-80 for
00CEA0:  20 43 50 2F 4D 20 33 2E 30 20 2A 0D 0A 45 4E 44     CP/M 3.0 *..END
00CEB0:  49 46 0D 0A 0D 0A 49 46 20 6B 70 69 69 0D 0A 2E    IF....IF kpii...
00CEC0:  70 72 69 6E 74 78 20 2A 20 41 73 73 65 6D 62 6C    printx * Assembl
00CED0:  69 6E 67 20 4B 61 79 70 72 6F 20 49 49 20 4B 45    ing Kaypro II KE
00CEE0:  52 4D 49 54 2D 38 30 20 2A 0D 0A 45 4E 44 49 46    RMIT-80 *..ENDIF
00CEF0:  0D 0A 49 46 20 78 65 72 38 32 30 09 09 09 3B 5B    ..IF xer820...;[
00CF00:  70 63 63 30 30 31 5D 0D 0A 2E 70 72 69 6E 74 78    pcc001]...printx
00CF10:  20 2A 20 41 73 73 65 6D 62 6C 69 6E 67 20 58 65     * Assembling Xe
00CF20:  72 6F 78 20 38 32 30 20 4B 45 52 4D 49 54 2D 38    rox 820 KERMIT-8
00CF30:  30 20 2A 0D 0A 45 4E 44 49 46 09 09 09 09 3B 5B    0 *..ENDIF....;[
00CF40:  70 63 63 30 30 31 5D 0D 0A 0D 0A 49 46 20 62 62    pcc001]....IF bb
00CF50:  49 49 0D 0A 2E 70 72 69 6E 74 78 20 2A 20 41 73    II...printx * As
00CF60:  73 65 6D 62 6C 69 6E 67 20 42 69 67 42 6F 61 72    sembling BigBoar
00CF70:  64 20 49 49 20 4B 45 52 4D 49 54 2D 38 30 20 2A    d II KERMIT-80 *
00CF80:  0D 0A 45 4E 44 49 46 0D 0A 0D 0A 49 46 20 6D 64    ..ENDIF....IF md
00CF90:  49 0D 0A 2E 70 72 69 6E 74 78 20 2A 20 41 73 73    I...printx * Ass
00CFA0:  65 6D 62 6C 69 6E 67 20 66 6F 72 20 4D 6F 72 72    embling for Morr
00CFB0:  6F 77 20 44 65 63 69 73 69 6F 6E 20 49 20 2A 0D    ow Decision I *.
00CFC0:  0A 45 4E 44 49 46 09 3B 6D 64 49 20 20 5B 54 6F    .ENDIF.;mdI  [To
00CFD0:  61 64 20 48 61 6C 6C 5D 0D 0A 0D 0A 49 46 20 6D    ad Hall]....IF m
00CFE0:  6D 64 49 0D 0A 2E 70 72 69 6E 74 78 20 2A 20 41    mdI...printx * A
00CFF0:  73 73 65 6D 62 6C 69 6E 67 20 66 6F 72 20 4D 6F    ssembling for Mo
00D000:  2E 0D 0A 3B 0D 0A 3B 20 65 64 69 74 20 33 3A 20    ...;..; edit 3: 
00D010:  41 75 67 75 73 74 20 33 2C 20 31 39 38 34 0D 0A    August 3, 1984..
00D020:  3B 09 6D 6F 76 65 20 22 6D 6F 76 65 72 22 20 74    ;.move "mover" t
00D030:  6F 20 43 50 34 53 59 53 20 66 72 6F 6D 20 43 50    o CP4SYS from CP
00D040:  34 55 54 4C 2C 20 73 6F 20 77 65 20 63 61 6E 20    4UTL, so we can 
00D050:  75 73 65 20 5A 38 30 20 62 6C 6F 63 6B 20 6D 6F    use Z80 block mo
00D060:  76 65 2E 0D 0A 3B 09 64 65 66 69 6E 65 20 5A 38    ve...;.define Z8
00D070:  30 20 74 72 75 65 20 6F 72 20 66 61 6C 73 65 20    0 true or false 
00D080:  77 68 65 6E 20 73 65 74 74 69 6E 67 20 75 70 20    when setting up 
00D090:  74 68 65 20 72 65 73 74 20 6F 66 20 74 68 65 20    the rest of the 
00D0A0:  70 61 72 61 6D 65 74 65 72 73 2E 0D 0A 3B 09 28    parameters...;.(
00D0B0:  49 27 6D 20 6F 6E 6C 79 20 64 65 66 69 6E 69 6E    I'm only definin
00D0C0:  67 20 61 73 20 5A 38 30 27 73 20 74 68 65 20 6F    g as Z80's the o
00D0D0:  6E 65 73 20 49 20 4B 4E 4F 57 20 61 72 65 20 5A    nes I KNOW are Z
00D0E0:  38 30 27 73 2C 20 62 65 63 61 75 73 65 20 49 0D    80's, because I.
00D0F0:  0A 3B 09 64 6F 6E 27 74 20 77 61 6E 74 20 74 6F    .;.don't want to
00D100:  20 62 72 65 61 6B 20 61 6E 79 74 68 69 6E 67 20     break anything 
00D110:  62 79 20 67 75 65 73 73 69 6E 67 20 77 72 6F 6E    by guessing wron
00D120:  67 29 2E 20 20 4D 61 6B 65 20 74 68 65 20 76 61    g).  Make the va
00D130:  6C 75 65 73 0D 0A 3B 09 73 74 6F 72 65 64 20 62    lues..;.stored b
00D140:  79 20 73 79 73 69 6E 69 74 20 69 6E 20 22 73 70    y sysinit in "sp
00D150:  65 65 64 22 20 6D 61 74 63 68 20 74 68 65 20 31    eed" match the 1
00D160:  36 2D 62 69 74 20 76 61 6C 75 65 73 20 66 6F 75    6-bit values fou
00D170:  6E 64 20 69 6E 20 74 68 65 0D 0A 3B 09 73 70 65    nd in the..;.spe
00D180:  65 64 20 74 61 62 6C 65 2C 20 73 6F 20 77 65 20    ed table, so we 
00D190:  63 61 6E 20 66 69 6E 64 20 74 68 65 6D 20 6C 61    can find them la
00D1A0:  74 65 72 2E 0D 0A 3B 0D 0A 3B 20 65 64 69 74 20    ter...;..; edit 
00D1B0:  32 3A 20 4A 75 6C 79 20 32 37 2C 20 31 39 38 34    2: July 27, 1984
00D1C0:  20 28 43 4A 43 29 0D 0A 3B 09 41 64 64 20 62 72     (CJC)..;.Add br
00D1D0:  65 61 6B 20 63 61 70 61 62 69 6C 69 74 79 20 66    eak capability f
00D1E0:  6F 72 20 4B 61 79 70 72 6F 20 49 49 20 61 6E 64    or Kaypro II and
00D1F0:  20 62 62 49 49 2E 0D 0A 3B 09 4D 65 72 67 65 20     bbII...;.Merge 
00D200:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00D210:  0B 00 00 00 02 09 4E E5 0B 00 C1 02 00 00 00 02    ......N.........
00D220:  0B 00 C6 02 00 00 00 02 0B 00 C2 02 00 00 00 02    ................
00D230:  0B 00 C7 02 00 00 00 02 0B 00 C3 02 00 00 00 02    ................
00D240:  0B 00 C8 02 00 00 00 02 0B 00 C4 02 00 00 00 02    ................
00D250:  0B 00 C9 02 00 00 00 02 0B 00 C5 02 00 00 00 02    ................
00D260:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D270:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D280:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D290:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D300:  72 72 6F 77 20 4D 69 63 72 6F 20 44 65 63 69 73    rrow Micro Decis
00D310:  69 6F 6E 20 49 20 2A 0D 0A 45 4E 44 49 46 09 3B    ion I *..ENDIF.;
00D320:  6D 6D 64 49 0D 0A 0D 0A 49 46 20 6D 69 6B 6B 6F    mmdI....IF mikko
00D330:  0D 0A 2E 70 72 69 6E 74 78 20 2A 20 41 73 73 65    ...printx * Asse
00D340:  6D 62 6C 69 6E 67 20 4D 69 6B 72 6F 4D 69 6B 6B    mbling MikroMikk
00D350:  6F 20 4B 65 72 6D 69 74 2D 38 30 20 2A 0D 0A 45    o Kermit-80 *..E
00D360:  4E 44 49 46 0D 0A 0D 0A 49 46 20 64 65 6C 70 68    NDIF....IF delph
00D370:  69 09 3B 5B 37 5D 0D 0A 2E 70 72 69 6E 74 78 20    i.;[7]...printx 
00D380:  2A 20 41 73 73 65 6D 62 6C 69 6E 67 20 44 69 67    * Assembling Dig
00D390:  69 63 6F 6D 70 20 44 65 6C 70 68 69 20 31 30 30    icomp Delphi 100
00D3A0:  20 4B 65 72 6D 69 74 2D 38 30 20 2A 0D 0A 45 4E     Kermit-80 *..EN
00D3B0:  44 49 46 09 09 3B 5B 37 5D 0D 0A 0D 0A 49 46 20    DIF..;[7]....IF 
00D3C0:  63 70 74 38 35 78 78 0D 0A 2E 70 72 69 6E 74 78    cpt85xx...printx
00D3D0:  20 2A 20 41 73 73 65 6D 62 6C 69 6E 67 20 43 50     * Assembling CP
00D3E0:  54 2D 38 35 78 78 20 28 75 6E 64 65 72 20 43 6F    T-85xx (under Co
00D3F0:  6D 70 75 50 61 6B 20 43 50 2F 4D 29 20 4B 65 72    mpuPak CP/M) Ker
00D400:  6D 69 74 2D 38 30 20 2A 0D 0A 45 4E 44 49 46 0D    mit-80 *..ENDIF.
00D410:  0A 0D 0A 49 46 20 6E 6F 72 74 68 73 0D 0A 2E 70    ...IF norths...p
00D420:  72 69 6E 74 78 20 2A 20 41 73 73 65 6D 62 6C 69    rintx * Assembli
00D430:  6E 67 20 66 6F 72 20 4E 6F 72 74 68 53 74 61 72    ng for NorthStar
00D440:  20 48 6F 72 69 7A 6F 6E 20 77 69 74 68 20 48 53     Horizon with HS
00D450:  49 4F 2D 34 20 62 6F 61 72 64 20 2A 0D 0A 45 4E    IO-4 board *..EN
00D460:  44 49 46 3B 6E 6F 72 74 68 73 0D 0A 0D 0A 49 46    DIF;norths....IF
00D470:  20 6C 6F 62 6F 09 09 3B 5B 68 68 5D 0D 0A 2E 70     lobo..;[hh]...p
00D480:  72 69 6E 74 78 20 2A 20 41 73 73 65 6D 62 6C 69    rintx * Assembli
00D490:  6E 67 20 4B 65 72 6D 69 74 2D 38 30 20 66 6F 72    ng Kermit-80 for
00D4A0:  20 74 68 65 20 4C 6F 62 6F 20 4D 41 58 2D 38 30     the Lobo MAX-80
00D4B0:  20 2A 0D 0A 45 4E 44 49 46 3B 6C 6F 62 6F 20 5B     *..ENDIF;lobo [
00D4C0:  68 68 5D 0D 0A 0D 0A 3B 20 41 6C 73 6F 20 74 65    hh]....; Also te
00D4D0:  6C 6C 20 77 68 61 74 20 6B 69 6E 64 20 6F 66 20    ll what kind of 
00D4E0:  74 65 72 6D 69 6E 61 6C 2C 20 69 66 20 61 6E 79    terminal, if any
00D4F0:  2C 20 69 73 20 73 65 6C 65 63 74 65 64 0D 0A 49    , is selected..I
00D500:  46 20 6D 69 6B 6B 6F 0D 0A 62 61 74 69 6F 09 45    F mikko..batio.E
00D510:  51 55 09 31 30 31 31 30 30 31 30 42 20 3B 20 49    QU.10110010B ; I
00D520:  2F 4F 20 62 79 74 65 20 63 6F 6E 73 6F 6C 65 20    /O byte console 
00D530:  3D 3E 20 73 65 72 69 61 6C 20 6C 69 6E 65 0D 0A    => serial line..
00D540:  64 65 66 69 6F 09 45 51 55 09 31 30 30 30 30 30    defio.EQU.100000
00D550:  30 31 42 20 3B 20 49 2F 4F 20 62 79 74 65 20 63    01B ; I/O byte c
00D560:  6F 6E 73 6F 6C 65 20 3D 3E 20 43 52 54 20 61 6E    onsole => CRT an
00D570:  64 20 4B 65 79 62 6F 61 72 64 0D 0A 45 4E 44 49    d Keyboard..ENDI
00D580:  46 3B 6D 69 6B 6B 6F 0D 0A 3B 0C 0D 0A 3B 0D 0A    F;mikko..;...;..
00D590:  3B 09 50 72 6F 74 6F 63 6F 6C 20 70 61 72 61 6D    ;.Protocol param
00D5A0:  65 74 65 72 73 2E 20 20 53 6F 6D 65 20 6F 66 20    eters.  Some of 
00D5B0:  74 68 65 73 65 20 63 61 6E 20 62 65 20 63 68 61    these can be cha
00D5C0:  6E 67 65 64 20 77 69 74 68 20 63 6F 6D 6D 61 6E    nged with comman
00D5D0:  64 73 2E 0D 0A 3B 0D 0A 0D 0A 64 72 70 73 69 7A    ds...;....drpsiz
00D5E0:  09 45 51 55 09 35 45 48 09 3B 44 65 66 61 75 6C    .EQU.5EH.;Defaul
00D5F0:  74 20 72 65 63 65 69 76 65 20 70 61 63 6B 65 74    t receive packet
00D600:  20 73 69 7A 65 2E 20 28 6D 61 78 69 6D 75 6D 20     size. (maximum 
00D610:  69 73 20 35 45 48 29 0D 0A 64 73 70 73 69 7A 09    is 5EH)..dspsiz.
00D620:  45 51 55 09 32 30 48 09 3B 44 65 66 61 75 6C 74    EQU.20H.;Default
00D630:  20 73 65 6E 64 20 70 61 63 6B 65 74 20 73 69 7A     send packet siz
00D640:  65 2E 20 28 6D 61 78 69 6D 75 6D 20 69 73 20 35    e. (maximum is 5
00D650:  45 48 29 0D 0A 64 73 74 69 6D 65 09 45 51 55 09    EH)..dstime.EQU.
00D660:  30 38 48 09 3B 44 65 66 61 75 6C 74 20 73 65 6E    08H.;Default sen
00D670:  64 20 74 69 6D 65 20 6F 75 74 20 69 6E 74 65 72    d time out inter
00D680:  76 61 6C 2E 0D 0A 0D 0A 49 46 20 4E 4F 54 20 28    val.....IF NOT (
00D690:  61 70 70 6C 65 20 4F 52 20 6F 73 62 72 6E 31 29    apple OR osbrn1)
00D6A0:  0D 0A 64 72 74 69 6D 65 09 45 51 55 09 30 35 48    ..drtime.EQU.05H
00D6B0:  09 3B 44 65 66 61 75 6C 74 20 72 65 63 65 69 76    .;Default receiv
00D6C0:  65 20 74 69 6D 65 20 6F 75 74 20 69 6E 74 65 72    e time out inter
00D6D0:  76 61 6C 2E 0D 0A 45 4E 44 49 46 3B 4E 4F 54 20    val...ENDIF;NOT 
00D6E0:  28 61 70 70 6C 65 20 4F 52 20 6F 73 62 72 6E 31    (apple OR osbrn1
00D6F0:  29 0D 0A 49 46 20 61 70 70 6C 65 20 4F 52 20 6F    )..IF apple OR o
00D700:  46 20 63 72 74 0D 0A 2E 70 72 69 6E 74 78 20 2A    F crt...printx *
00D710:  20 67 65 6E 65 72 69 63 20 43 52 54 20 73 65 6C     generic CRT sel
00D720:  65 63 74 65 64 20 2A 0D 0A 45 4E 44 49 46 0D 0A    ected *..ENDIF..
00D730:  0D 0A 49 46 20 61 64 6D 33 61 0D 0A 2E 70 72 69    ..IF adm3a...pri
00D740:  6E 74 78 20 2A 20 41 44 4D 33 41 20 73 65 6C 65    ntx * ADM3A sele
00D750:  63 74 65 64 20 2A 0D 0A 45 4E 44 49 46 0D 0A 0D    cted *..ENDIF...
00D760:  0A 49 46 20 73 6D 72 74 76 64 09 3B 5B 37 5D 0D    .IF smrtvd.;[7].
00D770:  0A 2E 70 72 69 6E 74 78 20 2A 20 4E 65 74 72 6F    ..printx * Netro
00D780:  6E 69 63 73 20 53 6D 61 72 74 76 69 64 2D 38 30    nics Smartvid-80
00D790:  20 73 65 6C 65 63 74 65 64 20 2A 0D 0A 45 4E 44     selected *..END
00D7A0:  49 46 09 09 3B 5B 37 5D 0D 0A 0D 0A 49 46 20 74    IF..;[7]....IF t
00D7B0:  76 69 39 32 35 0D 0A 2E 70 72 69 6E 74 78 20 2A    vi925...printx *
00D7C0:  20 54 56 49 39 32 35 20 73 65 6C 65 63 74 65 64     TVI925 selected
00D7D0:  20 2A 0D 0A 45 4E 44 49 46 0D 0A 0D 0A 49 46 20     *..ENDIF....IF 
00D7E0:  76 74 35 32 0D 0A 2E 70 72 69 6E 74 78 20 2A 20    vt52...printx * 
00D7F0:  56 54 35 32 20 73 65 6C 65 63 74 65 64 20 2A 0D    VT52 selected *.
00D800:  0A 45 4E 44 49 46 0D 0A 0D 0A 49 46 20 76 74 31    .ENDIF....IF vt1
00D810:  30 30 0D 0A 2E 70 72 69 6E 74 78 20 2A 20 56 54    00...printx * VT
00D820:  31 30 30 20 73 65 6C 65 63 74 65 64 20 2A 0D 0A    100 selected *..
00D830:  45 4E 44 49 46 0D 0A 3B 0C 0D 0A 3B 3D 3D 3D 3D    ENDIF..;...;====
00D840:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00D850:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00D860:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00D870:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00D880:  3D 3D 3D 3D 3D 0D 0A 3B 09 49 2F 4F 20 42 79 74    =====..;.I/O Byt
00D890:  65 20 61 73 73 69 67 6E 6D 65 6E 74 73 20 28 32    e assignments (2
00D8A0:  2D 62 69 74 20 66 69 65 6C 64 73 20 66 6F 72 20    -bit fields for 
00D8B0:  34 20 64 65 76 69 63 65 73 20 61 74 20 6C 6F 63    4 devices at loc
00D8C0:  20 33 29 0D 0A 3B 0D 0A 3B 62 69 74 73 20 36 2B     3)..;..;bits 6+
00D8D0:  37 09 09 4C 49 53 54 20 66 69 65 6C 64 0D 0A 3B    7..LIST field..;
00D8E0:  09 30 09 09 4C 49 53 54 20 69 73 20 54 65 6C 65    .0..LIST is Tele
00D8F0:  74 79 70 65 20 64 65 76 69 63 65 20 28 54 54 59    type device (TTY
00D900:  73 62 72 6E 31 0D 0A 64 72 74 69 6D 65 09 45 51    sbrn1..drtime.EQ
00D910:  55 09 30 41 48 09 3B 20 55 73 65 20 6C 6F 6E 67    U.0AH.; Use long
00D920:  65 72 20 72 65 63 65 69 76 65 20 74 69 6D 65 6F    er receive timeo
00D930:  75 74 20 6F 6E 20 61 70 70 6C 65 20 61 6E 64 20    ut on apple and 
00D940:  6F 73 62 6F 72 6E 65 2E 0D 0A 45 4E 44 49 46 3B    osborne...ENDIF;
00D950:  61 70 70 6C 65 20 4F 52 20 6F 73 62 72 6E 31 0D    apple OR osbrn1.
00D960:  0A 0D 0A 64 73 70 61 64 09 45 51 55 09 30 30 48    ...dspad.EQU.00H
00D970:  09 3B 44 65 66 61 75 6C 74 20 73 65 6E 64 20 70    .;Default send p
00D980:  61 64 64 69 6E 67 2E 0D 0A 64 72 70 61 64 09 45    adding...drpad.E
00D990:  51 55 09 30 30 48 09 3B 44 65 66 61 75 6C 74 20    QU.00H.;Default 
00D9A0:  72 65 63 65 69 76 65 20 70 61 64 64 69 6E 67 2E    receive padding.
00D9B0:  0D 0A 64 73 70 61 64 63 09 45 51 55 09 30 30 48    ..dspadc.EQU.00H
00D9C0:  09 3B 44 65 66 61 75 6C 74 20 73 65 6E 64 20 70    .;Default send p
00D9D0:  61 64 64 69 6E 67 20 63 68 61 72 2E 0D 0A 64 72    adding char...dr
00D9E0:  70 61 64 63 09 45 51 55 09 30 30 48 09 3B 44 65    padc.EQU.00H.;De
00D9F0:  66 61 75 6C 74 20 72 65 63 65 69 76 65 20 70 61    fault receive pa
00DA00:  64 64 69 6E 67 20 63 68 61 72 2E 0D 0A 64 73 65    dding char...dse
00DA10:  6F 6C 09 45 51 55 09 43 52 09 3B 44 65 66 61 75    ol.EQU.CR.;Defau
00DA20:  6C 74 20 73 65 6E 64 20 45 4F 4C 20 63 68 61 72    lt send EOL char
00DA30:  2E 0D 0A 64 72 65 6F 6C 09 45 51 55 09 43 52 09    ...dreol.EQU.CR.
00DA40:  3B 44 65 66 61 75 6C 74 20 72 65 63 65 69 76 65    ;Default receive
00DA50:  20 45 4F 4C 20 63 68 61 72 2E 0D 0A 64 73 71 75     EOL char...dsqu
00DA60:  6F 74 09 45 51 55 09 27 23 27 09 3B 44 65 66 61    ot.EQU.'#'.;Defa
00DA70:  75 6C 74 20 73 65 6E 64 20 71 75 6F 74 65 20 63    ult send quote c
00DA80:  68 61 72 2E 0D 0A 64 72 71 75 6F 74 09 45 51 55    har...drquot.EQU
00DA90:  09 27 23 27 09 3B 44 65 66 61 75 6C 74 20 72 65    .'#'.;Default re
00DAA0:  63 65 69 76 65 20 71 75 6F 74 65 20 63 68 61 72    ceive quote char
00DAB0:  2E 0D 0A 64 73 63 68 6B 74 09 45 51 55 09 27 31    ...dschkt.EQU.'1
00DAC0:  27 09 3B 44 65 66 61 75 6C 74 20 63 68 65 63 6B    '.;Default check
00DAD0:  73 75 6D 20 74 79 70 65 0D 0A 3B 0C 0D 0A 49 46    sum type..;...IF
00DAE0:  20 6C 6F 62 6F 09 3B 5B 68 68 5D 0D 0A 6D 6E 70     lobo.;[hh]..mnp
00DAF0:  6F 72 74 09 45 51 55 09 30 46 37 45 34 48 09 3B    ort.EQU.0F7E4H.;
00DB00:  3A 29 0D 0A 3B 09 31 09 09 4C 49 53 54 20 69 73    :)..;.1..LIST is
00DB10:  20 43 52 54 20 64 65 76 69 63 65 20 28 43 52 54     CRT device (CRT
00DB20:  3A 29 0D 0A 3B 09 32 09 09 4C 49 53 54 20 69 73    :)..;.2..LIST is
00DB30:  20 4C 69 6E 65 70 72 69 6E 74 65 72 20 28 4C 50     Lineprinter (LP
00DB40:  54 3A 29 0D 0A 3B 09 33 09 09 4C 49 53 54 20 69    T:)..;.3..LIST i
00DB50:  73 20 75 73 65 72 20 64 65 66 69 6E 65 64 20 28    s user defined (
00DB60:  55 4C 31 3A 29 0D 0A 3B 0D 0A 3B 62 69 74 73 20    UL1:)..;..;bits 
00DB70:  34 2B 35 09 09 50 55 4E 43 48 20 66 69 65 6C 64    4+5..PUNCH field
00DB80:  0D 0A 3B 09 30 09 09 50 55 4E 43 48 20 69 73 20    ..;.0..PUNCH is 
00DB90:  54 65 6C 65 74 79 70 65 20 64 65 76 69 63 65 20    Teletype device 
00DBA0:  28 54 54 59 3A 29 0D 0A 3B 09 31 09 09 50 55 4E    (TTY:)..;.1..PUN
00DBB0:  43 48 20 69 73 20 68 69 67 68 20 73 70 65 65 64    CH is high speed
00DBC0:  20 70 75 6E 63 68 20 28 50 55 4E 3A 29 0D 0A 3B     punch (PUN:)..;
00DBD0:  09 32 09 09 50 55 4E 43 48 20 69 73 20 75 73 65    .2..PUNCH is use
00DBE0:  72 20 64 65 66 69 6E 65 64 20 23 31 20 28 55 50    r defined #1 (UP
00DBF0:  31 3A 29 0D 0A 3B 09 33 09 09 50 55 4E 43 48 20    1:)..;.3..PUNCH 
00DC00:  69 73 20 75 73 65 72 20 64 65 66 69 6E 65 64 20    is user defined 
00DC10:  23 32 20 28 55 50 32 3A 29 0D 0A 3B 0D 0A 3B 62    #2 (UP2:)..;..;b
00DC20:  69 74 73 20 32 2B 33 09 09 52 45 41 44 45 52 20    its 2+3..READER 
00DC30:  66 69 65 6C 64 0D 0A 3B 09 30 09 09 52 45 41 44    field..;.0..READ
00DC40:  45 52 20 69 73 20 54 65 6C 65 74 79 70 65 20 64    ER is Teletype d
00DC50:  65 76 69 63 65 20 28 54 54 59 3A 29 0D 0A 3B 09    evice (TTY:)..;.
00DC60:  31 09 09 52 45 41 44 45 52 20 69 73 20 68 69 67    1..READER is hig
00DC70:  68 20 73 70 65 65 64 20 72 65 61 64 65 72 20 28    h speed reader (
00DC80:  52 44 52 3A 29 0D 0A 3B 09 32 09 09 52 45 41 44    RDR:)..;.2..READ
00DC90:  45 52 20 69 73 20 75 73 65 72 20 64 65 66 69 6E    ER is user defin
00DCA0:  65 64 20 23 31 20 28 55 52 31 3A 29 0D 0A 3B 09    ed #1 (UR1:)..;.
00DCB0:  33 09 09 52 45 41 44 45 52 20 69 73 20 75 73 65    3..READER is use
00DCC0:  72 20 64 65 66 69 6E 65 64 20 23 32 20 28 55 52    r defined #2 (UR
00DCD0:  32 3A 29 0D 0A 3B 0D 0A 3B 62 69 74 73 20 30 2B    2:)..;..;bits 0+
00DCE0:  31 09 09 43 4F 4E 53 4F 4C 45 20 66 69 65 6C 64    1..CONSOLE field
00DCF0:  0D 0A 3B 09 30 09 09 43 4F 4E 53 4F 4C 45 20 69    ..;.0..CONSOLE i
00DD00:  4D 6F 64 65 6D 20 64 61 74 61 20 70 6F 72 74 20    Modem data port 
00DD10:  41 0D 0A 6D 6E 70 72 74 73 09 45 51 55 09 30 46    A..mnprts.EQU.0F
00DD20:  37 45 35 48 09 3B 4D 6F 64 65 6D 20 73 74 61 74    7E5H.;Modem stat
00DD30:  75 73 2F 63 6F 6E 72 74 6F 6C 20 70 6F 72 74 20    us/conrtol port 
00DD40:  41 0D 0A 62 61 75 64 72 74 09 45 51 55 09 30 46    A..baudrt.EQU.0F
00DD50:  37 44 30 48 09 3B 42 61 75 64 20 72 61 74 65 20    7D0H.;Baud rate 
00DD60:  70 6F 72 74 20 41 0D 0A 6F 75 74 70 75 74 09 45    port A..output.E
00DD70:  51 55 09 30 34 48 09 3B 54 72 61 6E 73 6D 69 74    QU.04H.;Transmit
00DD80:  20 62 75 66 66 65 72 20 65 6D 70 74 79 0D 0A 69     buffer empty..i
00DD90:  6E 70 75 74 09 45 51 55 09 30 31 48 09 3B 52 65    nput.EQU.01H.;Re
00DDA0:  63 65 69 76 65 20 64 61 74 61 20 61 76 61 69 6C    ceive data avail
00DDB0:  61 62 6C 65 0D 0A 7A 38 30 09 45 51 55 09 54 52    able..z80.EQU.TR
00DDC0:  55 45 09 3B 61 20 67 6F 6F 64 20 7A 38 30 2C 20    UE.;a good z80, 
00DDD0:  68 65 72 65 0D 0A 45 4E 44 49 46 3B 6C 6F 62 6F    here..ENDIF;lobo
00DDE0:  0D 0A 0D 0A 49 46 20 62 72 61 69 6E 0D 0A 62 61    ....IF brain..ba
00DDF0:  75 64 73 74 09 45 51 55 09 36 30 48 09 3B 0D 0A    udst.EQU.60H.;..
00DE00:  62 61 75 64 72 74 09 45 51 55 09 30 45 46 30 30    baudrt.EQU.0EF00
00DE10:  48 09 3B 4D 65 6D 6F 72 79 20 6C 6F 63 61 74 69    H.;Memory locati
00DE20:  6F 6E 20 77 68 65 72 65 20 62 61 75 64 20 72 61    on where baud ra
00DE30:  74 65 73 20 61 72 65 20 73 74 6F 72 65 64 2E 0D    tes are stored..
00DE40:  0A 6D 6E 70 6F 72 74 09 45 51 55 09 35 38 48 09    .mnport.EQU.58H.
00DE50:  3B 4D 6F 64 65 6D 20 64 61 74 61 20 70 6F 72 74    ;Modem data port
00DE60:  0D 0A 6D 6E 70 72 74 73 20 20 45 51 55 09 35 39    ..mnprts  EQU.59
00DE70:  48 09 3B 4D 6F 64 65 6D 20 73 74 61 74 75 73 20    H.;Modem status 
00DE80:  70 6F 72 74 0D 0A 6F 75 74 70 75 74 09 45 51 55    port..output.EQU
00DE90:  09 30 31 48 09 3B 54 72 61 6E 73 6D 69 74 74 65    .01H.;Transmitte
00DEA0:  72 20 65 6D 70 74 79 0D 0A 69 6E 70 75 74 09 45    r empty..input.E
00DEB0:  51 55 09 30 32 48 09 3B 49 6E 70 75 74 20 64 61    QU.02H.;Input da
00DEC0:  74 61 20 61 76 61 69 6C 61 62 6C 65 0D 0A 7A 38    ta available..z8
00DED0:  30 09 45 51 55 09 46 41 4C 53 45 09 3B 49 20 64    0.EQU.FALSE.;I d
00DEE0:  6F 6E 27 74 20 6B 6E 6F 77 2E 2E 2E 0D 0A 45 4E    on't know.....EN
00DEF0:  44 49 46 3B 62 72 61 69 6E 0D 0A 0D 0A 49 46 20    DIF;brain....IF 
00DF00:  73 20 63 6F 6E 73 6F 6C 65 20 70 72 69 6E 74 65    s console printe
00DF10:  72 20 28 54 54 59 3A 29 0D 0A 3B 09 31 09 09 43    r (TTY:)..;.1..C
00DF20:  4F 4E 53 4F 4C 45 20 69 73 20 43 52 54 20 64 65    ONSOLE is CRT de
00DF30:  76 69 63 65 20 28 43 52 54 3A 29 0D 0A 3B 09 32    vice (CRT:)..;.2
00DF40:  09 09 43 4F 4E 53 4F 4C 45 20 69 73 20 69 6E 20    ..CONSOLE is in 
00DF50:  42 61 74 63 68 2D 6D 6F 64 65 20 28 42 41 54 3A    Batch-mode (BAT:
00DF60:  29 3B 52 45 41 44 45 52 20 3D 20 49 6E 70 75 74    );READER = Input
00DF70:  2C 0D 0A 3B 09 09 09 4C 49 53 54 20 3D 20 4F 75    ,..;...LIST = Ou
00DF80:  74 70 75 74 0D 0A 3B 09 33 09 09 43 4F 4E 53 4F    tput..;.3..CONSO
00DF90:  4C 45 20 69 73 20 75 73 65 72 20 64 65 66 69 6E    LE is user defin
00DFA0:  65 64 20 28 55 43 31 3A 29 0D 0A 3B 0D 0A 3B 3D    ed (UC1:)..;..;=
00DFB0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00DFC0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00DFD0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00DFE0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00DFF0:  3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 0D 0A 69 6F 62 79    ========....ioby
00E000:  74 65 09 45 51 55 09 30 33 48 09 3B 4C 6F 63 61    te.EQU.03H.;Loca
00E010:  74 69 6F 6E 20 6F 66 20 49 2F 4F 20 62 79 74 65    tion of I/O byte
00E020:  0D 0A 0D 0A 3B 20 74 68 65 20 62 61 73 69 63 73    ....; the basics
00E030:  2E 2E 2E 0D 0A 49 46 20 72 6F 62 69 6E 20 4F 52    .....IF robin OR
00E040:  20 67 65 6E 65 72 0D 0A 62 61 74 69 6F 09 45 51     gener..batio.EQ
00E050:  55 09 30 35 36 48 09 3B 49 2F 4F 20 62 79 74 65    U.056H.;I/O byte
00E060:  20 43 4F 4E 3D 42 41 54 2C 4C 49 53 54 3D 43 52     CON=BAT,LIST=CR
00E070:  54 2C 52 45 41 44 45 52 3D 52 44 52 2C 50 55 4E    T,READER=RDR,PUN
00E080:  43 48 3D 50 54 50 0D 0A 64 65 66 69 6F 09 45 51    CH=PTP..defio.EQ
00E090:  55 09 30 39 35 48 09 3B 49 2F 4F 20 62 79 74 65    U.095H.;I/O byte
00E0A0:  20 43 4F 4E 3D 43 52 54 2C 4C 49 53 54 3D 4C 50     CON=CRT,LIST=LP
00E0B0:  54 2C 52 45 41 44 45 52 3D 52 44 52 2C 50 55 4E    T,READER=RDR,PUN
00E0C0:  43 48 3D 50 54 50 0D 0A 45 4E 44 49 46 3B 72 6F    CH=PTP..ENDIF;ro
00E0D0:  62 69 6E 20 4F 52 20 67 65 6E 65 72 0D 0A 0D 0A    bin OR gener....
00E0E0:  49 46 20 67 65 6E 65 72 0D 0A 63 72 74 69 6F 09    IF gener..crtio.
00E0F0:  65 71 75 09 30 31 30 31 30 31 30 31 42 09 3B 20    equ.01010101B.; 
00E100:  6F 73 69 0D 0A 6D 6E 70 6F 72 74 09 45 51 55 09    osi..mnport.EQU.
00E110:  30 43 46 30 31 48 09 3B 4D 6F 64 65 6D 20 64 61    0CF01H.;Modem da
00E120:  74 61 20 70 6F 72 74 0D 0A 6D 6E 70 72 74 73 20    ta port..mnprts 
00E130:  20 45 51 55 09 30 43 46 30 30 48 09 3B 4D 6F 64     EQU.0CF00H.;Mod
00E140:  65 6D 20 73 74 61 74 75 73 20 70 6F 72 74 0D 0A    em status port..
00E150:  6F 75 74 70 75 74 09 45 51 55 09 30 32 48 09 3B    output.EQU.02H.;
00E160:  54 72 61 6E 73 6D 69 74 74 65 72 20 65 6D 70 74    Transmitter empt
00E170:  79 0D 0A 69 6E 70 75 74 09 45 51 55 09 30 31 48    y..input.EQU.01H
00E180:  09 3B 49 6E 70 75 74 20 64 61 74 61 20 61 76 61    .;Input data ava
00E190:  69 6C 61 62 6C 65 0D 0A 7A 38 30 09 45 51 55 09    ilable..z80.EQU.
00E1A0:  46 41 4C 53 45 09 3B 49 20 64 6F 6E 27 74 20 6B    FALSE.;I don't k
00E1B0:  6E 6F 77 2E 2E 2E 0D 0A 45 4E 44 49 46 3B 6F 73    now.....ENDIF;os
00E1C0:  69 0D 0A 0D 0A 49 46 20 76 65 63 74 6F 72 0D 0A    i....IF vector..
00E1D0:  6D 6E 70 6F 72 74 09 45 51 55 09 30 34 48 09 3B    mnport.EQU.04H.;
00E1E0:  4D 6F 64 65 6D 20 64 61 74 61 20 70 6F 72 74 0D    Modem data port.
00E1F0:  0A 6D 6E 70 72 74 73 09 45 51 55 09 30 35 48 09    .mnprts.EQU.05H.
00E200:  3B 4D 6F 64 65 6D 20 73 74 61 74 75 73 20 70 6F    ;Modem status po
00E210:  72 74 0D 0A 6F 75 74 70 75 74 09 45 51 55 09 30    rt..output.EQU.0
00E220:  31 48 09 3B 54 72 61 6E 73 6D 69 74 74 65 72 20    1H.;Transmitter 
00E230:  65 6D 70 74 79 0D 0A 69 6E 70 75 74 09 45 51 55    empty..input.EQU
00E240:  09 30 32 48 09 3B 49 6E 70 75 74 20 64 61 74 61    .02H.;Input data
00E250:  20 61 76 61 69 6C 61 62 6C 65 0D 0A 7A 38 30 09     available..z80.
00E260:  45 51 55 09 46 41 4C 53 45 09 3B 49 20 64 6F 6E    EQU.FALSE.;I don
00E270:  27 74 20 6B 6E 6F 77 2E 2E 2E 0D 0A 45 4E 44 49    't know.....ENDI
00E280:  46 3B 76 65 63 74 6F 72 0D 0A 0D 0A 49 46 20 64    F;vector....IF d
00E290:  65 6C 70 68 69 09 09 3B 5B 37 5D 0D 0A 6D 6E 70    elphi..;[7]..mnp
00E2A0:  6F 72 74 09 45 51 55 09 32 32 48 09 3B 5B 37 5D    ort.EQU.22H.;[7]
00E2B0:  20 4D 6F 64 65 6D 20 64 61 74 61 20 70 6F 72 74     Modem data port
00E2C0:  0D 0A 6D 6E 70 72 74 73 09 45 51 55 09 32 33 48    ..mnprts.EQU.23H
00E2D0:  09 3B 5B 37 5D 20 4D 6F 64 65 6D 20 73 74 61 74    .;[7] Modem stat
00E2E0:  75 73 20 70 6F 72 74 0D 0A 6F 75 74 70 75 74 09    us port..output.
00E2F0:  45 51 55 09 30 31 48 09 3B 5B 37 5D 20 54 72 61    EQU.01H.;[7] Tra
00E300:  75 73 65 20 43 52 54 3A 20 64 65 76 69 63 65 0D    use CRT: device.
00E310:  0A 70 74 72 69 6F 09 65 71 75 09 30 31 30 31 30    .ptrio.equ.01010
00E320:  31 31 30 42 09 3B 20 75 73 65 20 50 54 52 3A 20    110B.; use PTR: 
00E330:  64 65 76 69 63 65 0D 0A 74 74 79 69 6F 09 65 71    device..ttyio.eq
00E340:  75 09 30 30 30 30 30 30 30 30 42 09 3B 20 75 73    u.00000000B.; us
00E350:  65 20 54 54 59 3A 20 64 65 76 69 63 65 0D 0A 75    e TTY: device..u
00E360:  63 31 69 6F 09 65 71 75 09 30 31 30 31 30 31 31    c1io.equ.0101011
00E370:  31 42 09 3B 20 75 73 65 20 55 43 31 3A 20 64 65    1B.; use UC1: de
00E380:  76 69 63 65 0D 0A 75 72 31 69 6F 09 65 71 75 09    vice..ur1io.equ.
00E390:  30 31 31 30 31 30 31 30 42 09 3B 20 75 73 65 20    01101010B.; use 
00E3A0:  55 52 31 3A 20 64 65 76 69 63 65 0D 0A 75 72 32    UR1: device..ur2
00E3B0:  69 6F 09 65 71 75 09 30 31 31 31 31 31 31 30 42    io.equ.01111110B
00E3C0:  09 3B 20 75 73 65 20 55 52 32 3A 20 64 65 76 69    .; use UR2: devi
00E3D0:  63 65 0D 0A 45 4E 44 49 46 3B 67 65 6E 65 72 0D    ce..ENDIF;gener.
00E3E0:  0A 0D 0A 49 46 20 72 6F 62 69 6E 0D 0A 6C 70 74    ...IF robin..lpt
00E3F0:  69 6F 09 45 51 55 09 30 35 34 48 09 3B 49 2F 4F    io.EQU.054H.;I/O
00E400:  20 62 79 74 65 20 43 4F 4E 3D 54 54 59 2C 4C 49     byte CON=TTY,LI
00E410:  53 54 3D 43 52 54 2C 52 45 41 44 45 52 3D 50 54    ST=CRT,READER=PT
00E420:  52 2C 50 55 4E 43 48 3D 50 54 50 0D 0A 67 70 70    R,PUNCH=PTP..gpp
00E430:  69 6F 09 45 51 55 09 30 35 37 48 09 3B 49 2F 4F    io.EQU.057H.;I/O
00E440:  20 62 79 74 65 20 43 4F 4E 3D 55 43 31 2C 4C 49     byte CON=UC1,LI
00E450:  53 54 3D 43 52 54 2C 52 45 41 44 45 52 3D 52 44    ST=CRT,READER=RD
00E460:  52 2C 50 55 4E 43 48 3D 50 54 50 0D 0A 45 4E 44    R,PUNCH=PTP..END
00E470:  49 46 3B 72 6F 62 69 6E 0D 0A 0D 0A 49 46 20 64    IF;robin....IF d
00E480:  6D 49 49 0D 0A 62 61 74 69 6F 09 45 51 55 09 30    mII..batio.EQU.0
00E490:  34 32 48 09 3B 49 2F 4F 20 62 79 74 65 20 43 4F    42H.;I/O byte CO
00E4A0:  4E 3D 42 41 54 2C 4C 49 53 54 3D 43 52 54 2C 52    N=BAT,LIST=CRT,R
00E4B0:  45 41 44 45 52 3D 52 44 52 0D 0A 64 65 66 69 6F    EADER=RDR..defio
00E4C0:  09 45 51 55 09 30 38 31 48 09 3B 49 2F 4F 20 62    .EQU.081H.;I/O b
00E4D0:  79 74 65 20 43 4F 4E 3D 43 52 54 2C 4C 49 53 54    yte CON=CRT,LIST
00E4E0:  3D 4C 50 54 2C 52 45 41 44 45 52 3D 52 44 52 0D    =LPT,READER=RDR.
00E4F0:  0A 45 4E 44 49 46 3B 64 6D 49 49 0D 0A 0D 0A 49    .ENDIF;dmII....I
00E500:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00E510:  0C 00 00 00 02 09 4E E5 0C 00 C1 02 00 00 00 02    ......N.........
00E520:  0C 00 C6 02 00 00 00 02 0C 00 C2 02 00 00 00 02    ................
00E530:  0C 00 C7 02 00 00 00 02 0C 00 C3 02 00 00 00 02    ................
00E540:  0C 00 C8 02 00 00 00 02 0C 00 C4 02 00 00 00 02    ................
00E550:  0C 00 C9 02 00 00 00 02 0C 00 C5 02 00 00 00 02    ................
00E560:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E570:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E580:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E590:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E600:  6E 73 6D 69 74 74 65 72 20 65 6D 70 74 79 0D 0A    nsmitter empty..
00E610:  69 6E 70 75 74 09 45 51 55 09 30 32 48 09 3B 5B    input.EQU.02H.;[
00E620:  37 5D 20 49 6E 70 75 74 20 64 61 74 61 20 61 76    7] Input data av
00E630:  61 69 6C 61 62 6C 65 0D 0A 62 61 75 64 72 74 09    ailable..baudrt.
00E640:  65 71 75 09 32 39 68 09 3B 5B 37 5D 20 42 61 75    equ.29h.;[7] Bau
00E650:  64 20 72 61 74 65 20 70 6F 72 74 20 66 6F 72 20    d rate port for 
00E660:  63 68 61 6E 6E 65 6C 20 32 20 28 64 65 66 61 75    channel 2 (defau
00E670:  6C 74 29 0D 0A 7A 38 30 09 45 51 55 09 74 72 75    lt)..z80.EQU.tru
00E680:  65 09 3B 5B 37 5D 20 57 65 27 72 65 20 75 73 69    e.;[7] We're usi
00E690:  6E 67 20 74 68 65 20 7A 38 30 20 73 69 64 65 20    ng the z80 side 
00E6A0:  6F 66 20 74 68 65 20 64 75 61 6C 20 70 72 6F 63    of the dual proc
00E6B0:  65 73 73 6F 72 0D 0A 45 4E 44 49 46 3B 5B 37 5D    essor..ENDIF;[7]
00E6C0:  20 64 65 6C 70 68 69 0D 0A 0D 0A 49 46 20 68 65     delphi....IF he
00E6D0:  61 74 68 0D 0A 0D 0A 3B 09 44 65 66 69 6E 69 74    ath....;.Definit
00E6E0:  69 6F 6E 73 20 66 6F 72 20 74 68 65 20 38 32 35    ions for the 825
00E6F0:  30 20 41 43 45 0D 0A 0D 0A 61 63 65 72 62 72 09    0 ACE....acerbr.
00E700:  45 51 55 09 30 09 3B 20 41 43 45 20 52 65 63 65    EQU.0.; ACE Rece
00E710:  69 76 65 72 20 42 75 66 66 65 72 20 52 65 67 69    iver Buffer Regi
00E720:  73 74 65 72 20 6F 66 66 73 65 74 20 28 52 2F 4F    ster offset (R/O
00E730:  29 20 28 44 4C 41 42 20 3D 20 30 29 0D 0A 61 63    ) (DLAB = 0)..ac
00E740:  65 74 68 72 09 45 51 55 09 30 09 3B 20 41 43 45    ethr.EQU.0.; ACE
00E750:  20 54 72 61 6E 73 6D 69 74 74 65 72 20 48 6F 6C     Transmitter Hol
00E760:  64 69 6E 67 20 52 65 67 69 73 74 65 72 20 6F 66    ding Register of
00E770:  66 73 65 74 20 28 57 2F 4F 29 0D 0A 61 63 65 64    fset (W/O)..aced
00E780:  6C 6C 09 45 51 55 09 30 09 3B 20 41 43 45 20 44    ll.EQU.0.; ACE D
00E790:  69 76 69 73 6F 72 20 4C 61 74 63 68 20 28 4C 6F    ivisor Latch (Lo
00E7A0:  77 29 09 28 44 4C 41 42 20 3D 20 31 29 0D 0A 61    w).(DLAB = 1)..a
00E7B0:  63 65 64 6C 68 09 45 51 55 09 31 09 3B 20 41 43    cedlh.EQU.1.; AC
00E7C0:  45 20 44 69 76 69 73 6F 72 20 4C 61 74 63 68 20    E Divisor Latch 
00E7D0:  28 48 69 67 68 29 09 28 44 4C 41 42 20 3D 20 31    (High).(DLAB = 1
00E7E0:  29 0D 0A 61 63 65 69 65 72 09 45 51 55 09 31 09    )..aceier.EQU.1.
00E7F0:  3B 20 41 43 45 20 49 6E 74 65 72 72 75 70 74 20    ; ACE Interrupt 
00E800:  09 09 3B 6A 62 20 4F 75 74 70 75 74 20 42 75 66    ..;jb Output Buf
00E810:  66 65 72 20 45 6D 70 74 79 2E 0D 0A 69 6E 70 75    fer Empty...inpu
00E820:  74 09 45 51 55 09 30 38 48 09 09 3B 6A 62 20 49    t.EQU.08H..;jb I
00E830:  6E 70 75 74 20 52 65 67 69 73 74 65 72 20 46 75    nput Register Fu
00E840:  6C 6C 2E 0D 0A 6D 6E 63 69 6E 62 09 45 51 55 09    ll...mncinb.EQU.
00E850:  31 38 48 09 09 3B 6A 62 20 43 6F 6E 74 72 6F 6C    18H..;jb Control
00E860:  20 50 6F 72 74 20 49 6E 69 74 69 61 6C 69 7A 61     Port Initializa
00E870:  74 69 6F 6E 20 42 79 74 65 0D 0A 09 09 09 09 3B    tion Byte......;
00E880:  6A 62 20 20 28 38 2D 62 69 74 2C 20 6E 6F 20 70    jb  (8-bit, no p
00E890:  61 72 69 74 79 2C 20 31 2D 73 74 6F 70 2C 20 31    arity, 1-stop, 1
00E8A0:  32 30 30 20 62 61 75 64 29 0D 0A 6D 6E 6D 69 6E    200 baud)..mnmin
00E8B0:  62 09 45 51 55 09 30 42 48 09 09 3B 6A 62 20 4D    b.EQU.0BH..;jb M
00E8C0:  61 73 74 65 72 20 50 6F 72 74 20 49 6E 69 74 69    aster Port Initi
00E8D0:  61 6C 69 7A 61 74 69 6F 6E 20 42 79 74 65 0D 0A    alization Byte..
00E8E0:  09 09 09 09 3B 6A 62 20 20 28 44 54 52 2C 20 52    ....;jb  (DTR, R
00E8F0:  54 53 2C 20 6E 6F 20 69 6E 74 65 72 72 75 70 74    TS, no interrupt
00E900:  73 29 0D 0A 7A 38 30 09 45 51 55 09 54 52 55 45    s)..z80.EQU.TRUE
00E910:  09 09 3B 5A 38 30 20 53 6F 66 74 63 61 72 64 0D    ..;Z80 Softcard.
00E920:  0A 45 4E 44 49 46 3B 61 70 36 35 35 31 0D 0A 0D    .ENDIF;ap6551...
00E930:  0A 49 46 20 6F 73 62 72 6E 31 0D 0A 3B 4F 73 62    .IF osbrn1..;Osb
00E940:  6F 72 6E 65 20 31 20 75 73 65 73 20 36 38 35 30    orne 1 uses 6850
00E950:  20 41 43 49 41 2C 20 62 75 74 20 6D 65 6D 6F 72     ACIA, but memor
00E960:  79 20 6D 61 70 70 65 64 2E 20 20 44 65 72 69 76    y mapped.  Deriv
00E970:  65 64 20 66 72 6F 6D 20 41 70 70 6C 65 2E 0D 0A    ed from Apple...
00E980:  42 41 55 44 52 54 09 45 51 55 09 30 45 46 43 31    BAUDRT.EQU.0EFC1
00E990:  48 09 3B 4D 65 6D 6F 72 79 20 6C 6F 63 61 74 69    H.;Memory locati
00E9A0:  6F 6E 20 77 68 65 72 65 20 62 61 75 64 20 72 61    on where baud ra
00E9B0:  74 65 73 20 61 72 65 20 73 74 6F 72 65 64 2E 0D    tes are stored..
00E9C0:  0A 4F 53 54 4F 50 09 45 51 55 09 34 30 30 30 48    .OSTOP.EQU.4000H
00E9D0:  09 3B 57 68 65 72 65 20 77 65 20 6D 6F 76 65 20    .;Where we move 
00E9E0:  4F 53 4D 4F 56 45 20 74 6F 20 61 74 20 73 74 61    OSMOVE to at sta
00E9F0:  72 74 75 70 0D 0A 4F 53 50 4F 52 54 09 45 51 55    rtup..OSPORT.EQU
00EA00:  45 6E 61 62 6C 65 20 52 65 67 69 73 74 65 72 20    Enable Register 
00EA10:  28 44 4C 41 42 20 3D 20 30 29 0D 0A 61 63 65 69    (DLAB = 0)..acei
00EA20:  69 72 09 45 51 55 09 32 09 3B 20 41 43 45 20 49    ir.EQU.2.; ACE I
00EA30:  6E 74 65 72 72 75 70 74 20 49 64 65 6E 74 69 66    nterrupt Identif
00EA40:  69 63 61 74 69 6F 6E 20 52 65 67 69 73 74 65 72    ication Register
00EA50:  0D 0A 61 63 65 6C 63 72 09 45 51 55 09 33 09 3B    ..acelcr.EQU.3.;
00EA60:  20 41 43 45 20 4C 69 6E 65 20 43 6F 6E 74 72 6F     ACE Line Contro
00EA70:  6C 20 52 65 67 69 73 74 65 72 0D 0A 61 63 65 6D    l Register..acem
00EA80:  63 72 09 45 51 55 09 34 09 3B 20 41 43 45 20 4D    cr.EQU.4.; ACE M
00EA90:  6F 64 65 6D 20 43 6F 6E 74 72 6F 6C 20 52 65 67    odem Control Reg
00EAA0:  69 73 74 65 72 0D 0A 61 63 65 6C 73 72 09 45 51    ister..acelsr.EQ
00EAB0:  55 09 35 09 3B 20 41 43 45 20 4C 69 6E 65 20 53    U.5.; ACE Line S
00EAC0:  74 61 74 75 73 20 52 65 67 69 73 74 65 72 20 6F    tatus Register o
00EAD0:  66 66 73 65 74 0D 0A 61 63 65 6D 73 72 09 45 51    ffset..acemsr.EQ
00EAE0:  55 09 36 09 3B 20 41 43 45 20 4D 6F 64 65 6D 20    U.6.; ACE Modem 
00EAF0:  53 74 61 74 75 73 20 52 65 67 69 73 74 65 72 0D    Status Register.
00EB00:  0A 0D 0A 61 63 65 38 62 77 09 45 51 55 09 30 30    ...ace8bw.EQU.00
00EB10:  30 30 30 30 31 31 62 20 3B 20 38 20 62 69 74 20    000011b ; 8 bit 
00EB20:  77 6F 72 64 73 0D 0A 61 63 65 73 62 09 45 51 55    words..acesb.EQU
00EB30:  09 30 31 30 30 30 30 30 30 62 20 3B 20 73 65 74    .01000000b ; set
00EB40:  20 62 72 65 61 6B 0D 0A 61 63 65 64 6C 61 09 45     break..acedla.E
00EB50:  51 55 09 31 30 30 30 30 30 30 30 62 20 3B 20 64    QU.10000000b ; d
00EB60:  69 76 69 73 6F 72 20 6C 61 74 63 68 20 61 63 63    ivisor latch acc
00EB70:  65 73 73 0D 0A 61 63 65 64 74 72 09 45 51 55 09    ess..acedtr.EQU.
00EB80:  30 30 30 30 30 30 30 31 62 20 3B 20 64 61 74 61    00000001b ; data
00EB90:  20 74 65 72 6D 69 6E 61 6C 20 72 65 61 64 79 0D     terminal ready.
00EBA0:  0A 61 63 65 6C 6F 6F 09 45 51 55 09 30 30 30 31    .aceloo.EQU.0001
00EBB0:  30 30 30 30 62 20 3B 20 6C 6F 6F 70 62 61 63 6B    0000b ; loopback
00EBC0:  20 6D 6F 64 65 0D 0A 61 63 65 64 72 09 45 51 55     mode..acedr.EQU
00EBD0:  09 30 30 30 30 30 30 30 31 62 20 3B 20 64 61 74    .00000001b ; dat
00EBE0:  61 20 72 65 61 64 79 0D 0A 61 63 65 74 68 65 09    a ready..acethe.
00EBF0:  45 51 55 09 30 30 31 30 30 30 30 30 62 20 3B 20    EQU.00100000b ; 
00EC00:  09 32 41 30 31 48 09 3B 43 6F 6D 6D 75 6E 69 63    .2A01H.;Communic
00EC10:  61 74 69 6F 6E 73 20 50 6F 72 74 2E 0D 0A 4F 53    ations Port...OS
00EC20:  50 52 54 53 09 45 51 55 09 32 41 30 30 48 09 3B    PRTS.EQU.2A00H.;
00EC30:  43 6F 6D 6D 75 6E 69 63 61 74 69 6F 6E 73 20 50    Communications P
00EC40:  6F 72 74 20 53 74 61 74 75 73 2E 0D 0A 4F 55 54    ort Status...OUT
00EC50:  50 55 54 09 45 51 55 09 30 32 48 09 3B 4F 75 74    PUT.EQU.02H.;Out
00EC60:  70 75 74 20 42 75 66 66 65 72 20 45 6D 70 74 79    put Buffer Empty
00EC70:  2E 0D 0A 49 4E 50 55 54 09 45 51 55 09 30 31 48    ...INPUT.EQU.01H
00EC80:  09 3B 49 6E 70 75 74 20 52 65 67 69 73 74 65 72    .;Input Register
00EC90:  20 46 75 6C 6C 2E 0D 0A 4F 53 42 49 4E 31 09 45     Full...OSBIN1.E
00ECA0:  51 55 09 35 37 48 09 3B 46 69 72 73 74 20 49 6E    QU.57H.;First In
00ECB0:  69 74 20 43 68 61 72 61 63 74 65 72 20 66 6F 72    it Character for
00ECC0:  20 36 38 35 30 20 41 43 49 41 20 28 52 65 73 65     6850 ACIA (Rese
00ECD0:  74 29 0D 0A 3B 28 49 20 77 6F 75 6C 64 20 68 61    t)..;(I would ha
00ECE0:  76 65 20 74 68 6F 75 67 68 74 20 30 33 2C 20 62    ve thought 03, b
00ECF0:  75 74 20 70 72 6F 6D 20 63 6F 64 65 20 77 72 69    ut prom code wri
00ED00:  74 65 73 20 35 37 20 74 68 65 72 65 29 0D 0A 4F    tes 57 there)..O
00ED10:  53 42 49 31 32 09 45 51 55 09 35 35 48 09 3B 53    SBI12.EQU.55H.;S
00ED20:  65 63 6F 6E 64 20 49 6E 69 74 20 43 68 61 72 61    econd Init Chara
00ED30:  63 74 65 72 20 66 6F 72 20 41 43 49 41 20 28 38    cter for ACIA (8
00ED40:  2D 62 69 74 73 2C 20 31 32 30 30 29 0D 0A 4F 53    -bits, 1200)..OS
00ED50:  42 49 30 33 09 45 51 55 09 35 36 48 09 3B 53 65    BI03.EQU.56H.;Se
00ED60:  63 6F 6E 64 20 69 6E 69 74 20 63 68 61 72 2E 20    cond init char. 
00ED70:  66 6F 72 20 41 43 49 41 20 28 38 20 62 69 74 73    for ACIA (8 bits
00ED80:  2C 20 33 30 30 29 0D 0A 3B 28 64 6F 6E 27 74 20    , 300)..;(don't 
00ED90:  61 73 6B 2E 2E 20 49 20 64 6F 6E 27 74 20 6B 6E    ask.. I don't kn
00EDA0:  6F 77 20 77 68 79 20 53 45 54 55 50 20 77 72 69    ow why SETUP wri
00EDB0:  74 65 73 20 35 35 20 61 6E 64 20 35 36 20 65 69    tes 55 and 56 ei
00EDC0:  74 68 65 72 29 0D 0A 7A 38 30 09 45 51 55 09 54    ther)..z80.EQU.T
00EDD0:  52 55 45 09 3B 5B 68 68 5D 20 61 20 7A 38 30 20    RUE.;[hh] a z80 
00EDE0:  68 65 72 65 2C 20 61 6C 73 6F 0D 0A 45 4E 44 49    here, also..ENDI
00EDF0:  46 3B 6F 73 62 72 6E 31 0D 0A 0D 0A 49 46 20 74    F;osbrn1....IF t
00EE00:  74 72 61 6E 73 6D 69 74 74 65 72 20 68 6F 6C 64    transmitter hold
00EE10:  69 6E 67 20 72 65 67 69 73 74 65 72 20 65 6D 70    ing register emp
00EE20:  74 79 0D 0A 0D 0A 6D 6E 70 6F 72 74 09 45 51 55    ty....mnport.EQU
00EE30:  09 33 33 30 4F 09 3B 4D 6F 64 65 6D 20 64 61 74    .330O.;Modem dat
00EE40:  61 20 70 6F 72 74 0D 0A 6D 6E 70 72 74 73 09 45    a port..mnprts.E
00EE50:  51 55 09 6D 6E 70 6F 72 74 2B 61 63 65 6C 73 72    QU.mnport+acelsr
00EE60:  09 3B 4D 6F 64 65 6D 20 73 74 61 74 75 73 20 70    .;Modem status p
00EE70:  6F 72 74 0D 0A 6F 75 74 70 75 74 09 45 51 55 09    ort..output.EQU.
00EE80:  61 63 65 74 68 65 09 3B 54 72 61 6E 73 6D 69 74    acethe.;Transmit
00EE90:  74 65 72 20 65 6D 70 74 79 0D 0A 69 6E 70 75 74    ter empty..input
00EEA0:  09 45 51 55 09 61 63 65 64 72 09 3B 49 6E 70 75    .EQU.acedr.;Inpu
00EEB0:  74 20 64 61 74 61 20 61 76 61 69 6C 61 62 6C 65    t data available
00EEC0:  0D 0A 7A 38 30 09 45 51 55 09 54 52 55 45 09 3B    ..z80.EQU.TRUE.;
00EED0:  48 38 39 20 75 73 65 73 20 74 68 65 20 5A 38 30    H89 uses the Z80
00EEE0:  0D 0A 45 4E 44 49 46 3B 68 65 61 74 68 0D 0A 0D    ..ENDIF;heath...
00EEF0:  0A 49 46 20 7A 31 30 30 0D 0A 6D 6E 70 6F 72 74    .IF z100..mnport
00EF00:  09 45 51 55 09 30 45 43 48 09 3B 4D 6F 64 65 6D    .EQU.0ECH.;Modem
00EF10:  20 64 61 74 61 20 70 6F 72 74 0D 0A 6D 6E 70 72     data port..mnpr
00EF20:  74 73 09 45 51 55 09 30 45 44 48 09 3B 4D 6F 64    ts.EQU.0EDH.;Mod
00EF30:  65 6D 20 73 74 61 74 75 73 20 70 6F 72 74 0D 0A    em status port..
00EF40:  6F 75 74 70 75 74 09 45 51 55 09 30 31 48 09 3B    output.EQU.01H.;
00EF50:  54 72 61 6E 73 6D 69 74 74 65 72 20 65 6D 70 74    Transmitter empt
00EF60:  79 0D 0A 69 6E 70 75 74 09 45 51 55 09 30 32 48    y..input.EQU.02H
00EF70:  09 3B 49 6E 70 75 74 20 64 61 74 61 20 61 76 61    .;Input data ava
00EF80:  69 6C 61 62 6C 65 0D 0A 7A 38 30 09 45 51 55 09    ilable..z80.EQU.
00EF90:  46 41 4C 53 45 09 3B 5B 68 68 5D 20 74 68 69 73    FALSE.;[hh] this
00EFA0:  20 6F 6E 65 27 73 20 61 6E 20 38 30 38 35 2E 0D     one's an 8085..
00EFB0:  0A 45 4E 44 49 46 3B 7A 31 30 30 0D 0A 0D 0A 49    .ENDIF;z100....I
00EFC0:  46 20 74 72 73 38 30 0D 0A 3B 4E 45 45 44 53 20    F trs80..;NEEDS 
00EFD0:  64 69 73 70 6C 61 79 20 64 65 66 69 6E 69 74 69    display definiti
00EFE0:  6F 6E 20 28 65 2E 67 2E 20 74 72 73 38 30 6C 62    on (e.g. trs80lb
00EFF0:  20 6F 72 20 74 72 73 38 30 70 74 29 0D 0A 6D 6E     or trs80pt)..mn
00F000:  65 6C 63 6F 6E 0D 0A 4D 4E 50 4F 52 54 09 45 51    elcon..MNPORT.EQ
00F010:  55 09 32 30 48 09 3B 4D 6F 64 65 6D 20 64 61 74    U.20H.;Modem dat
00F020:  61 20 70 6F 72 74 0D 0A 4D 4E 50 52 54 53 09 45    a port..MNPRTS.E
00F030:  51 55 09 32 31 48 09 3B 4D 6F 64 65 6D 20 73 74    QU.21H.;Modem st
00F040:  61 74 75 73 20 70 6F 72 74 0D 0A 4F 55 54 50 55    atus port..OUTPU
00F050:  54 09 45 51 55 09 30 31 48 09 3B 54 72 61 6E 73    T.EQU.01H.;Trans
00F060:  6D 69 74 74 65 72 20 65 6D 70 74 79 0D 0A 49 4E    mitter empty..IN
00F070:  50 55 54 09 45 51 55 09 30 32 48 09 3B 49 6E 70    PUT.EQU.02H.;Inp
00F080:  75 74 20 64 61 74 61 20 61 76 61 69 6C 61 62 6C    ut data availabl
00F090:  65 0D 0A 7A 38 30 09 45 51 55 09 46 41 4C 53 45    e..z80.EQU.FALSE
00F0A0:  09 3B 49 20 64 6F 6E 27 74 20 6B 6E 6F 77 2E 2E    .;I don't know..
00F0B0:  2E 0D 0A 45 4E 44 49 46 3B 74 65 6C 63 6F 6E 0D    ...ENDIF;telcon.
00F0C0:  0A 0D 0A 49 46 20 72 6F 62 69 6E 0D 0A 3B 54 68    ...IF robin..;Th
00F0D0:  6F 73 65 20 64 65 66 69 6E 69 74 69 6F 6E 73 20    ose definitions 
00F0E0:  62 65 6C 6F 77 20 74 68 61 74 20 61 72 65 20 63    below that are c
00F0F0:  6F 6D 6D 65 6E 74 65 64 20 6F 75 74 20 61 72 65    ommented out are
00F100:  20 6A 75 73 74 20 66 6F 72 20 69 6E 66 6F 72 6D     just for inform
00F110:  61 74 69 6F 6E 0D 0A 3B 2A 2A 2A 2A 2A 20 4E 4F    ation..;***** NO
00F120:  54 20 67 65 6E 65 72 61 6C 6C 79 20 66 6F 75 6E    T generally foun
00F130:  64 20 69 6E 20 64 69 73 74 72 69 62 75 74 65 64    d in distributed
00F140:  20 64 6F 63 75 6D 65 6E 74 61 74 69 6F 6E 20 2A     documentation *
00F150:  2A 2A 2A 0D 0A 0D 0A 3B 70 62 61 75 73 6C 20 45    ***....;pbausl E
00F160:  51 55 09 39 30 48 09 3B 54 68 65 20 42 61 75 64    QU.90H.;The Baud
00F170:  2D 52 61 74 65 20 72 65 67 69 73 74 65 72 2E 0D    -Rate register..
00F180:  0A 70 72 6E 74 73 74 09 45 51 55 09 34 39 48 09    .prntst.EQU.49H.
00F190:  3B 50 72 69 6E 74 65 72 0D 0A 3B 70 72 6E 64 61    ;Printer..;prnda
00F1A0:  74 09 45 51 55 09 34 38 48 0D 0A 63 6F 6E 74 73    t.EQU.48H..conts
00F1B0:  74 09 45 51 55 09 34 31 48 09 3B 43 6F 6E 73 6F    t.EQU.41H.;Conso
00F1C0:  6C 65 0D 0A 3B 63 6F 6E 64 61 74 09 45 51 55 09    le..;condat.EQU.
00F1D0:  34 30 48 0D 0A 67 65 6E 74 73 74 09 45 51 55 09    40H..gentst.EQU.
00F1E0:  35 31 48 09 3B 47 65 6E 65 72 61 6C 20 70 6F 72    51H.;General por
00F1F0:  74 2E 0D 0A 3B 67 65 6E 64 61 74 09 45 51 55 09    t...;gendat.EQU.
00F200:  70 6F 72 74 09 45 51 55 09 30 46 34 48 09 3B 4D    port.EQU.0F4H.;M
00F210:  6F 64 65 6D 20 64 61 74 61 20 70 6F 72 74 20 28    odem data port (
00F220:  30 46 35 48 20 66 6F 72 20 70 6F 72 74 20 42 29    0F5H for port B)
00F230:  0D 0A 6D 6E 70 72 74 73 09 45 51 55 09 30 46 36    ..mnprts.EQU.0F6
00F240:  48 09 3B 4D 6F 64 65 6D 20 73 74 61 74 75 73 20    H.;Modem status 
00F250:  70 6F 72 74 20 28 30 46 37 48 20 66 6F 72 20 70    port (0F7H for p
00F260:  6F 72 74 20 42 29 0D 0A 6F 75 74 70 75 74 09 45    ort B)..output.E
00F270:  51 55 09 30 34 48 09 3B 54 72 61 6E 73 6D 69 74    QU.04H.;Transmit
00F280:  74 65 72 20 65 6D 70 74 79 0D 0A 69 6E 70 75 74    ter empty..input
00F290:  09 45 51 55 09 30 31 48 09 3B 49 6E 70 75 74 20    .EQU.01H.;Input 
00F2A0:  64 61 74 61 20 61 76 61 69 6C 61 62 6C 65 0D 0A    data available..
00F2B0:  7A 38 30 09 45 51 55 09 54 52 55 45 09 3B 5B 68    z80.EQU.TRUE.;[h
00F2C0:  68 5D 20 41 6C 6C 20 54 52 53 2D 38 30 27 73 20    h] All TRS-80's 
00F2D0:  62 75 74 20 74 68 65 20 43 6F 43 6F 0D 0A 45 4E    but the CoCo..EN
00F2E0:  44 49 46 3B 74 72 73 38 30 0D 0A 0D 0A 49 46 20    DIF;trs80....IF 
00F2F0:  61 70 6D 6D 64 6D 0D 0A 3B 41 50 50 4C 45 20 53    apmmdm..;APPLE S
00F300:  6C 6F 74 20 32 20 63 6F 6E 74 61 69 6E 73 20 4D    lot 2 contains M
00F310:  69 63 72 6F 6D 6F 64 65 6D 20 49 49 2E 0D 0A 4D    icromodem II...M
00F320:  4E 50 4F 52 54 09 45 51 55 09 30 45 30 41 37 48    NPORT.EQU.0E0A7H
00F330:  09 3B 43 6F 6D 6D 75 6E 69 63 61 74 69 6F 6E 73    .;Communications
00F340:  20 50 6F 72 74 2E 0D 0A 6D 6E 70 72 74 73 09 45     Port...mnprts.E
00F350:  51 55 09 30 45 30 41 36 48 09 3B 43 6F 6D 6D 75    QU.0E0A6H.;Commu
00F360:  6E 69 63 61 74 69 6F 6E 73 20 50 6F 72 74 20 53    nications Port S
00F370:  74 61 74 75 73 2E 0D 0A 6D 6E 6D 6F 64 6D 09 45    tatus...mnmodm.E
00F380:  51 55 09 30 45 30 41 35 48 09 3B 4D 6F 64 65 6D    QU.0E0A5H.;Modem
00F390:  20 43 6F 6E 74 72 6F 6C 20 50 6F 72 74 2E 0D 0A     Control Port...
00F3A0:  6F 72 67 6D 6F 64 09 45 51 55 09 38 45 48 09 3B    orgmod.EQU.8EH.;
00F3B0:  4D 6F 64 65 6D 20 4F 72 69 67 69 6E 61 74 65 20    Modem Originate 
00F3C0:  4D 6F 64 65 2E 0D 0A 4F 55 54 50 55 54 09 45 51    Mode...OUTPUT.EQ
00F3D0:  55 09 30 32 48 09 3B 4F 75 74 70 75 74 20 42 75    U.02H.;Output Bu
00F3E0:  66 66 65 72 20 45 6D 70 74 79 2E 0D 0A 49 4E 50    ffer Empty...INP
00F3F0:  55 54 09 45 51 55 09 30 31 48 09 3B 49 6E 70 75    UT.EQU.01H.;Inpu
00F400:  35 30 48 0D 0A 63 6F 6D 74 73 74 09 45 51 55 09    50H..comtst.EQU.
00F410:  35 39 48 09 3B 43 4F 4D 4D 2D 50 6F 72 74 0D 0A    59H.;COMM-Port..
00F420:  3B 63 6F 6D 64 61 74 09 45 51 55 09 35 38 48 0D    ;comdat.EQU.58H.
00F430:  0A 3B 6F 75 74 70 75 74 09 45 51 55 09 30 31 48    .;output.EQU.01H
00F440:  09 3B 4F 75 74 70 75 74 20 72 65 61 64 79 20 62    .;Output ready b
00F450:  69 74 2E 0D 0A 3B 69 6E 70 75 74 09 45 51 55 09    it...;input.EQU.
00F460:  30 32 48 09 3B 49 6E 70 75 74 20 72 65 61 64 79    02H.;Input ready
00F470:  20 62 69 74 2E 0D 0A 7A 38 30 09 45 51 55 09 54     bit...z80.EQU.T
00F480:  52 55 45 09 3B 20 54 68 69 73 20 6F 6E 65 27 73    RUE.; This one's
00F490:  20 61 20 5A 38 30 2E 0D 0A 45 4E 44 49 46 3B 72     a Z80...ENDIF;r
00F4A0:  6F 62 69 6E 0D 0A 0D 0A 49 46 20 62 62 49 0D 0A    obin....IF bbI..
00F4B0:  6D 6E 70 6F 72 74 09 65 71 75 09 30 34 68 09 09    mnport.equ.04h..
00F4C0:  3B 20 4D 6F 64 65 6D 20 64 61 74 61 20 70 6F 72    ; Modem data por
00F4D0:  74 0D 0A 6D 6E 70 72 74 73 09 65 71 75 09 30 36    t..mnprts.equ.06
00F4E0:  68 09 09 3B 20 4D 6F 64 65 6D 20 73 74 61 74 75    h..; Modem statu
00F4F0:  73 20 70 6F 72 74 0D 0A 6F 75 74 70 75 74 09 65    s port..output.e
00F500:  71 75 09 30 34 68 09 09 3B 20 54 72 61 6E 73 6D    qu.04h..; Transm
00F510:  69 74 20 62 75 66 66 65 72 20 65 6D 70 74 79 0D    it buffer empty.
00F520:  0A 69 6E 70 75 74 09 65 71 75 09 30 31 68 09 09    .input.equ.01h..
00F530:  3B 20 52 65 63 65 69 76 65 20 64 61 74 61 20 61    ; Receive data a
00F540:  76 61 69 6C 61 62 6C 65 0D 0A 62 61 75 64 72 74    vailable..baudrt
00F550:  09 65 71 75 09 30 30 68 09 09 3B 20 42 61 75 64    .equ.00h..; Baud
00F560:  20 72 61 74 65 20 70 6F 72 74 20 66 6F 72 20 63     rate port for c
00F570:  68 61 6E 6E 65 6C 20 41 0D 0A 7A 38 30 09 45 51    hannel A..z80.EQ
00F580:  55 09 54 52 55 45 09 09 3B 20 54 68 69 73 20 6F    U.TRUE..; This o
00F590:  6E 65 27 73 20 61 20 5A 38 30 2E 0D 0A 45 4E 44    ne's a Z80...END
00F5A0:  49 46 3B 62 62 49 0D 0A 0D 0A 49 46 20 6E 6F 72    IF;bbI....IF nor
00F5B0:  74 68 73 20 3B 54 68 65 20 62 61 73 69 63 20 4E    ths ;The basic N
00F5C0:  6F 72 74 68 73 74 61 72 20 48 6F 72 69 7A 6F 6E    orthstar Horizon
00F5D0:  20 42 49 4F 53 20 64 6F 65 73 20 6E 6F 74 20 61     BIOS does not a
00F5E0:  63 63 65 73 73 20 70 6F 72 74 73 20 32 2D 35 0D    ccess ports 2-5.
00F5F0:  0A 70 6F 72 74 30 64 20 20 65 71 75 20 20 20 20    .port0d  equ    
00F600:  74 20 52 65 67 69 73 74 65 72 20 46 75 6C 6C 2E    t Register Full.
00F610:  0D 0A 61 70 69 6E 63 31 09 45 51 55 09 30 33 48    ..apinc1.EQU.03H
00F620:  09 3B 46 69 72 73 74 20 49 6E 69 74 20 43 68 61    .;First Init Cha
00F630:  72 61 63 74 65 72 20 66 6F 72 20 36 38 35 30 20    racter for 6850 
00F640:  41 43 49 41 20 28 52 65 73 65 74 29 0D 0A 61 70    ACIA (Reset)..ap
00F650:  69 6E 63 32 09 45 51 55 09 31 31 48 09 3B 53 65    inc2.EQU.11H.;Se
00F660:  63 6F 6E 64 20 49 6E 69 74 20 43 68 61 72 61 63    cond Init Charac
00F670:  74 65 72 20 66 6F 72 20 41 43 49 41 20 28 38 2D    ter for ACIA (8-
00F680:  62 69 74 73 29 0D 0A 61 70 6F 66 66 68 09 45 51    bits)..apoffh.EQ
00F690:  55 09 38 30 48 09 3B 53 65 74 20 69 66 20 4F 46    U.80H.;Set if OF
00F6A0:  46 48 4F 4F 4B 0D 0A 41 50 33 30 30 09 45 51 55    FHOOK..AP300.EQU
00F6B0:  09 31 09 3B 33 30 30 20 42 61 75 64 0D 0A 7A 38    .1.;300 Baud..z8
00F6C0:  30 09 45 51 55 09 54 52 55 45 09 3B 5A 38 30 20    0.EQU.TRUE.;Z80 
00F6D0:  53 6F 66 74 63 61 72 64 0D 0A 45 4E 44 49 46 3B    Softcard..ENDIF;
00F6E0:  61 70 6D 6D 64 6D 0D 0A 0D 0A 49 46 20 61 70 36    apmmdm....IF ap6
00F6F0:  35 35 31 09 09 3B 6A 62 0D 0A 6D 6E 70 6F 72 74    551..;jb..mnport
00F700:  09 45 51 55 09 30 45 30 38 38 48 2B 28 31 30 48    .EQU.0E088H+(10H
00F710:  2A 61 70 73 6C 6F 74 29 09 3B 6A 62 20 43 6F 6D    *apslot).;jb Com
00F720:  6D 75 6E 69 63 61 74 69 6F 6E 73 20 50 6F 72 74    munications Port
00F730:  2E 0D 0A 6D 6E 70 72 74 73 09 45 51 55 09 30 45    ...mnprts.EQU.0E
00F740:  30 38 39 48 2B 28 31 30 48 2A 61 70 73 6C 6F 74    089H+(10H*apslot
00F750:  29 09 3B 6A 62 20 43 6F 6D 6D 75 6E 69 63 61 74    ).;jb Communicat
00F760:  69 6F 6E 73 20 50 6F 72 74 20 53 74 61 74 75 73    ions Port Status
00F770:  2E 0D 0A 6D 6E 70 72 74 63 09 45 51 55 09 30 45    ...mnprtc.EQU.0E
00F780:  30 38 42 48 2B 28 31 30 48 2A 61 70 73 6C 6F 74    08BH+(10H*apslot
00F790:  29 09 3B 6A 62 20 43 6F 6D 6D 75 6E 69 63 61 74    ).;jb Communicat
00F7A0:  69 6F 6E 73 20 43 6F 6E 74 72 6F 6C 0D 0A 6D 6E    ions Control..mn
00F7B0:  70 72 74 6D 09 45 51 55 09 30 45 30 38 41 48 2B    prtm.EQU.0E08AH+
00F7C0:  28 31 30 48 2A 61 70 73 6C 6F 74 29 09 3B 6A 62    (10H*apslot).;jb
00F7D0:  20 43 6F 6D 6D 75 6E 69 63 61 74 69 6F 6E 73 20     Communications 
00F7E0:  4D 61 73 74 65 72 20 28 63 6F 6D 6D 61 6E 64 29    Master (command)
00F7F0:  0D 0A 6F 75 74 70 75 74 09 45 51 55 09 31 30 48    ..output.EQU.10H
00F800:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00F810:  0D 00 00 00 02 09 4E E5 0D 00 C1 02 00 00 00 02    ......N.........
00F820:  0D 00 C6 02 00 00 00 02 0D 00 C2 02 00 00 00 02    ................
00F830:  0D 00 C7 02 00 00 00 02 0D 00 C3 02 00 00 00 02    ................
00F840:  0D 00 C8 02 00 00 00 02 0D 00 C4 02 00 00 00 02    ................
00F850:  0D 00 C9 02 00 00 00 02 0D 00 C5 02 00 00 00 02    ................
00F860:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F870:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F880:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F890:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F8A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F8B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F8C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F8D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F8E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F8F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F900:  20 30 32 68 20 20 20 20 20 20 20 20 20 20 20 20     02h            
00F910:  20 3B 50 6F 72 74 20 30 20 64 61 74 61 20 28 63     ;Port 0 data (c
00F920:  6F 6E 73 6F 6C 65 29 0D 0A 70 6F 72 74 30 73 20    onsole)..port0s 
00F930:  20 65 71 75 20 20 20 20 20 30 33 68 20 20 20 20     equ     03h    
00F940:  20 20 20 20 20 20 20 20 20 3B 50 6F 72 74 20 30             ;Port 0
00F950:  20 73 74 61 74 75 73 0D 0A 70 6F 72 74 31 64 20     status..port1d 
00F960:  20 65 71 75 20 20 20 20 20 30 34 68 20 20 20 20     equ     04h    
00F970:  20 20 20 20 20 20 20 20 20 3B 50 6F 72 74 20 31             ;Port 1
00F980:  20 64 61 74 61 20 28 70 72 69 6E 74 65 72 29 0D     data (printer).
00F990:  0A 70 6F 72 74 31 73 20 20 65 71 75 20 20 20 20    .port1s  equ    
00F9A0:  20 30 35 68 20 20 20 20 20 20 20 20 20 20 20 20     05h            
00F9B0:  20 3B 50 6F 72 74 20 31 20 73 74 61 74 75 73 0D     ;Port 1 status.
00F9C0:  0A 0D 0A 70 6F 72 74 32 62 20 20 65 71 75 20 20    ...port2b  equ  
00F9D0:  20 20 20 31 30 68 20 20 20 20 20 20 20 20 20 20       10h          
00F9E0:  20 20 20 3B 50 6F 72 74 20 32 20 62 61 75 64 0D       ;Port 2 baud.
00F9F0:  0A 70 6F 72 74 32 69 20 20 65 71 75 20 20 20 20    .port2i  equ    
00FA00:  20 31 31 68 20 20 20 20 20 20 20 20 20 20 20 20     11h            
00FA10:  20 3B 50 6F 72 74 20 32 20 69 6E 74 65 72 72 75     ;Port 2 interru
00FA20:  70 74 20 6D 61 73 6B 0D 0A 70 6F 72 74 32 64 20    pt mask..port2d 
00FA30:  20 65 71 75 20 20 20 20 20 31 32 68 20 20 20 20     equ     12h    
00FA40:  20 20 20 20 20 20 20 20 20 3B 50 6F 72 74 20 32             ;Port 2
00FA50:  20 64 61 74 61 0D 0A 70 6F 72 74 32 73 20 20 65     data..port2s  e
00FA60:  71 75 20 20 20 20 20 31 33 68 20 20 20 20 20 20    qu     13h      
00FA70:  20 20 20 20 20 20 20 3B 50 6F 72 74 20 32 20 73           ;Port 2 s
00FA80:  74 61 74 75 73 0D 0A 0D 0A 70 6F 72 74 33 62 20    tatus....port3b 
00FA90:  20 65 71 75 20 20 20 20 20 31 34 68 20 20 20 20     equ     14h    
00FAA0:  20 20 20 20 20 20 20 20 20 3B 50 6F 72 74 20 33             ;Port 3
00FAB0:  20 62 61 75 64 0D 0A 70 6F 72 74 33 69 20 20 65     baud..port3i  e
00FAC0:  71 75 20 20 20 20 20 31 35 68 20 20 20 20 20 20    qu     15h      
00FAD0:  20 20 20 20 20 20 20 3B 50 6F 72 74 20 33 20 69           ;Port 3 i
00FAE0:  6E 74 65 72 72 75 70 74 20 6D 61 73 6B 0D 0A 70    nterrupt mask..p
00FAF0:  6F 72 74 33 64 20 20 65 71 75 20 20 20 20 20 31    ort3d  equ     1
00FB00:  3B 6D 6D 64 49 0D 0A 0D 0A 49 46 20 6D 64 49 09    ;mmdI....IF mdI.
00FB10:  3B 4D 6F 72 72 6F 77 20 44 65 63 69 73 69 6F 6E    ;Morrow Decision
00FB20:  20 49 20 2D 20 74 68 65 20 62 69 67 20 73 75 63     I - the big suc
00FB30:  6B 65 72 0D 0A 6D 6E 70 6F 72 74 09 65 71 75 09    ker..mnport.equ.
00FB40:  34 38 48 09 09 3B 20 4D 6F 64 65 6D 20 64 61 74    48H..; Modem dat
00FB50:  61 20 70 6F 72 74 2E 0D 0A 6D 6E 70 72 74 73 09    a port...mnprts.
00FB60:  65 71 75 09 34 44 48 09 09 3B 20 4D 6F 64 65 6D    equ.4DH..; Modem
00FB70:  20 73 74 61 74 75 73 20 70 6F 72 74 2E 0D 0A 6F     status port...o
00FB80:  75 74 70 75 74 09 65 71 75 09 32 30 48 09 09 3B    utput.equ.20H..;
00FB90:  20 54 72 61 6E 73 6D 69 74 74 65 72 20 65 6D 70     Transmitter emp
00FBA0:  74 79 2E 0D 0A 69 6E 70 75 74 09 65 71 75 09 31    ty...input.equ.1
00FBB0:  09 09 3B 20 49 6E 70 75 74 20 64 61 74 61 20 61    ..; Input data a
00FBC0:  76 61 69 6C 61 62 6C 65 2E 0D 0A 6D 62 61 73 65    vailable...mbase
00FBD0:  09 65 71 75 09 34 38 48 09 09 3B 20 42 61 73 65    .equ.48H..; Base
00FBE0:  20 61 64 64 72 65 73 73 20 6F 66 20 4D 75 6C 74     address of Mult
00FBF0:  69 20 49 2F 4F 20 70 6F 72 74 0D 0A 09 09 09 09    i I/O port......
00FC00:  3B 20 20 20 73 65 6C 65 63 74 6F 72 20 61 72 65    ;   selector are
00FC10:  61 2E 0D 0A 67 72 70 73 65 6C 09 65 71 75 09 34    a...grpsel.equ.4
00FC20:  46 48 09 09 3B 20 47 72 6F 75 70 20 73 65 6C 65    FH..; Group sele
00FC30:  63 74 20 70 6F 72 74 2E 0D 0A 72 62 72 09 65 71    ct port...rbr.eq
00FC40:  75 09 34 38 48 09 09 3B 20 52 65 61 64 20 44 61    u.48H..; Read Da
00FC50:  74 61 20 42 75 66 66 65 72 2E 0D 0A 67 72 6F 75    ta Buffer...grou
00FC60:  70 09 65 71 75 09 31 09 09 3B 20 4D 75 6C 74 69    p.equ.1..; Multi
00FC70:  20 49 2F 4F 20 47 72 6F 75 70 20 62 79 74 65 20     I/O Group byte 
00FC80:  66 6F 72 20 73 65 72 69 61 6C 20 70 6F 72 74 73    for serial ports
00FC90:  2E 0D 0A 63 6F 6E 67 72 70 09 65 71 75 09 31 09    ...congrp.equ.1.
00FCA0:  09 3B 20 53 65 72 69 61 6C 20 50 6F 72 74 20 31    .; Serial Port 1
00FCB0:  20 66 6F 72 20 63 6F 6E 73 6F 6C 65 0D 0A 6D 64     for console..md
00FCC0:  6D 67 72 70 09 65 71 75 09 33 09 09 3B 20 53 65    mgrp.equ.3..; Se
00FCD0:  72 69 61 6C 20 50 6F 72 74 20 33 20 66 6F 72 20    rial Port 3 for 
00FCE0:  6D 6F 64 65 6D 2E 0D 0A 0D 0A 3B 20 46 6F 6C 6C    modem.....; Foll
00FCF0:  6F 77 69 6E 67 20 61 72 65 20 6E 65 65 64 65 64    owing are needed
00FD00:  36 68 20 20 20 20 20 20 20 20 20 20 20 20 20 3B    6h             ;
00FD10:  50 6F 72 74 20 33 20 64 61 74 61 0D 0A 70 6F 72    Port 3 data..por
00FD20:  74 33 73 20 20 65 71 75 20 20 20 20 20 31 37 68    t3s  equ     17h
00FD30:  20 20 20 20 20 20 20 20 20 20 20 20 20 3B 50 6F                 ;Po
00FD40:  72 74 20 33 20 73 74 61 74 75 73 0D 0A 0D 0A 70    rt 3 status....p
00FD50:  6F 72 74 34 62 20 20 65 71 75 20 20 20 20 20 31    ort4b  equ     1
00FD60:  38 68 20 20 20 20 20 20 20 20 20 20 20 20 20 3B    8h             ;
00FD70:  50 6F 72 74 20 34 20 62 61 75 64 0D 0A 70 6F 72    Port 4 baud..por
00FD80:  74 34 69 20 20 65 71 75 20 20 20 20 20 31 39 68    t4i  equ     19h
00FD90:  20 20 20 20 20 20 20 20 20 20 20 20 20 3B 50 6F                 ;Po
00FDA0:  72 74 20 34 20 69 6E 74 65 72 72 75 70 74 20 6D    rt 4 interrupt m
00FDB0:  61 73 6B 0D 0A 70 6F 72 74 34 64 20 20 65 71 75    ask..port4d  equ
00FDC0:  20 20 20 20 20 31 41 68 20 20 20 20 20 20 20 20         1Ah        
00FDD0:  20 20 20 20 20 3B 50 6F 72 74 20 34 20 64 61 74         ;Port 4 dat
00FDE0:  61 0D 0A 70 6F 72 74 34 73 20 20 65 71 75 20 20    a..port4s  equ  
00FDF0:  20 20 20 31 42 68 20 20 20 20 20 20 20 20 20 20       1Bh          
00FE00:  20 20 20 3B 50 6F 72 74 20 34 20 73 74 61 74 75       ;Port 4 statu
00FE10:  73 0D 0A 0D 0A 70 6F 72 74 35 62 20 20 65 71 75    s....port5b  equ
00FE20:  20 20 20 20 20 31 43 68 20 20 20 20 20 20 20 20         1Ch        
00FE30:  20 20 20 20 20 3B 50 6F 72 74 20 35 20 62 61 75         ;Port 5 bau
00FE40:  64 0D 0A 70 6F 72 74 35 69 20 20 65 71 75 20 20    d..port5i  equ  
00FE50:  20 20 20 31 44 68 20 20 20 20 20 20 20 20 20 20       1Dh          
00FE60:  20 20 20 3B 50 6F 72 74 20 35 20 69 6E 74 65 72       ;Port 5 inter
00FE70:  72 75 70 74 20 6D 61 73 6B 0D 0A 70 6F 72 74 35    rupt mask..port5
00FE80:  64 20 20 65 71 75 20 20 20 20 20 31 45 68 20 20    d  equ     1Eh  
00FE90:  20 20 20 20 20 20 20 20 20 20 20 3B 50 6F 72 74               ;Port
00FEA0:  20 35 20 64 61 74 61 0D 0A 70 6F 72 74 35 73 20     5 data..port5s 
00FEB0:  20 65 71 75 20 20 20 20 20 31 46 68 20 20 20 20     equ     1Fh    
00FEC0:  20 20 20 20 20 20 20 20 20 3B 50 6F 72 74 20 35             ;Port 5
00FED0:  20 73 74 61 74 75 73 0D 0A 0D 0A 4E 53 31 39 4B     status....NS19K
00FEE0:  32 09 45 51 55 09 30 30 48 09 09 3B 31 39 2E 32    2.EQU.00H..;19.2
00FEF0:  20 6B 69 6C 6F 62 61 75 64 0D 0A 4E 53 39 36 30     kilobaud..NS960
00FF00:  20 66 6F 72 20 62 61 75 64 20 72 61 74 65 20 63     for baud rate c
00FF10:  68 61 6E 67 65 73 2E 2E 2E 5B 54 6F 61 64 20 48    hanges...[Toad H
00FF20:  61 6C 6C 5D 0D 0A 0D 0A 64 6C 6D 09 65 71 75 09    all]....dlm.equ.
00FF30:  34 39 48 09 09 3B 20 42 61 75 64 20 52 61 74 65    49H..; Baud Rate
00FF40:  20 44 69 76 69 73 6F 72 20 28 4D 6F 73 74 20 53     Divisor (Most S
00FF50:  69 67 20 42 69 74 29 0D 0A 64 6C 6C 09 65 71 75    ig Bit)..dll.equ
00FF60:  09 34 38 48 09 09 3B 20 42 61 75 64 20 52 61 74    .48H..; Baud Rat
00FF70:  65 20 44 69 76 69 73 6F 72 20 28 4C 65 61 73 74    e Divisor (Least
00FF80:  20 53 69 67 20 42 69 74 29 0D 0A 69 65 72 09 65     Sig Bit)..ier.e
00FF90:  71 75 09 34 39 48 09 09 3B 20 49 6E 74 65 72 72    qu.49H..; Interr
00FFA0:  75 70 74 20 45 6E 61 62 6C 65 20 52 65 67 69 73    upt Enable Regis
00FFB0:  74 65 72 0D 0A 6C 63 72 09 65 71 75 09 34 42 48    ter..lcr.equ.4BH
00FFC0:  09 09 3B 20 4C 69 6E 65 20 43 6F 6E 74 72 6F 6C    ..; Line Control
00FFD0:  20 52 65 67 69 73 74 65 72 0D 0A 6C 73 72 09 65     Register..lsr.e
00FFE0:  71 75 09 34 44 48 09 09 3B 20 4C 69 6E 65 20 53    qu.4DH..; Line S
00FFF0:  74 61 74 75 73 20 52 65 67 69 73 74 65 72 0D 0A    tatus Register..
010000:  6D 73 72 09 65 71 75 09 34 45 48 09 09 3B 20 4D    msr.equ.4EH..; M
010010:  6F 64 65 6D 20 53 74 61 74 75 73 20 52 65 67 69    odem Status Regi
010020:  73 74 65 72 0D 0A 64 6C 61 62 09 65 71 75 09 38    ster..dlab.equ.8
010030:  30 48 09 09 3B 20 44 69 76 69 73 6F 72 20 4C 61    0H..; Divisor La
010040:  74 63 68 20 41 63 63 65 73 73 20 42 69 74 0D 0A    tch Access Bit..
010050:  77 6C 73 30 09 65 71 75 09 31 09 09 3B 20 57 6F    wls0.equ.1..; Wo
010060:  72 64 20 4C 65 6E 67 74 68 20 53 65 6C 65 63 74    rd Length Select
010070:  20 42 69 74 20 30 0D 0A 77 6C 73 31 09 65 71 75     Bit 0..wls1.equ
010080:  09 32 09 09 3B 20 57 6F 72 64 20 4C 65 6E 67 74    .2..; Word Lengt
010090:  68 20 53 65 6C 65 63 74 20 42 69 74 20 31 20 66    h Select Bit 1 f
0100A0:  6F 72 20 38 20 62 69 74 20 77 6F 72 64 0D 0A 73    or 8 bit word..s
0100B0:  74 62 09 65 71 75 09 34 09 09 3B 20 53 74 6F 70    tb.equ.4..; Stop
0100C0:  20 62 69 74 20 63 6F 75 6E 74 20 2D 20 32 20 73     bit count - 2 s
0100D0:  74 6F 70 20 62 69 74 73 0D 0A 69 6D 61 73 6B 09    top bits..imask.
0100E0:  65 71 75 09 30 09 09 3B 20 49 6E 74 65 72 72 75    equ.0..; Interru
0100F0:  70 74 20 6D 61 73 6B 20 28 61 6C 6C 20 64 69 73    pt mask (all dis
010100:  30 09 45 51 55 09 30 31 48 09 09 3B 39 36 30 30    0.EQU.01H..;9600
010110:  20 62 61 75 64 0D 0A 4E 53 34 38 30 30 09 45 51     baud..NS4800.EQ
010120:  55 09 30 32 48 09 09 3B 34 38 30 30 20 62 61 75    U.02H..;4800 bau
010130:  64 0D 0A 4E 53 32 34 30 30 09 45 51 55 09 30 33    d..NS2400.EQU.03
010140:  48 09 09 3B 32 34 30 30 20 62 61 75 64 0D 0A 4E    H..;2400 baud..N
010150:  53 31 32 30 30 09 45 51 55 09 30 34 48 09 09 3B    S1200.EQU.04H..;
010160:  31 32 30 30 20 62 61 75 64 0D 0A 4E 53 30 36 30    1200 baud..NS060
010170:  30 09 45 51 55 09 30 35 48 09 09 3B 20 36 30 30    0.EQU.05H..; 600
010180:  20 62 61 75 64 0D 0A 4E 53 30 33 30 30 09 45 51     baud..NS0300.EQ
010190:  55 09 30 36 48 09 09 3B 20 33 30 30 20 62 61 75    U.06H..; 300 bau
0101A0:  64 0D 0A 4E 53 30 31 31 30 09 45 51 55 09 30 37    d..NS0110.EQU.07
0101B0:  48 09 09 3B 20 31 31 30 20 62 61 75 64 0D 0A 3B    H..; 110 baud..;
0101C0:  3B 20 53 65 74 20 74 6F 20 75 73 65 20 70 6F 72    ; Set to use por
0101D0:  74 20 35 20 61 74 20 31 32 30 30 20 62 61 75 64    t 5 at 1200 baud
0101E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 2A 2A 2A                 ***
0101F0:  2A 2A 0D 0A 6D 6E 70 6F 72 74 20 20 65 71 75 20    **..mnport  equ 
010200:  20 20 20 20 70 6F 72 74 35 64 09 09 3B 44 61 74        port5d..;Dat
010210:  61 20 70 6F 72 74 0D 0A 6D 6E 70 72 74 73 09 65    a port..mnprts.e
010220:  71 75 09 70 6F 72 74 35 73 09 09 3B 53 74 61 74    qu.port5s..;Stat
010230:  75 73 20 70 6F 72 74 0D 0A 62 61 75 64 72 74 09    us port..baudrt.
010240:  65 71 75 09 70 6F 72 74 35 62 09 09 3B 42 61 75    equ.port5b..;Bau
010250:  64 20 72 61 74 65 20 70 6F 72 74 0D 0A 62 61 75    d rate port..bau
010260:  64 69 6E 69 09 65 71 75 09 6E 73 31 32 30 30 09    dini.equ.ns1200.
010270:  09 3B 49 6E 69 74 69 61 6C 20 62 61 75 64 20 72    .;Initial baud r
010280:  61 74 65 0D 0A 6F 75 74 70 75 74 09 45 51 55 09    ate..output.EQU.
010290:  31 09 09 3B 42 69 74 20 6F 66 20 55 41 52 54 20    1..;Bit of UART 
0102A0:  73 74 61 74 75 73 20 66 6F 72 20 74 72 61 6E 73    status for trans
0102B0:  6D 69 74 74 65 72 20 72 65 61 64 79 0D 0A 69 6E    mitter ready..in
0102C0:  70 75 74 09 45 51 55 09 32 09 09 3B 42 69 74 20    put.EQU.2..;Bit 
0102D0:  6F 66 20 55 41 52 54 20 73 74 61 74 75 73 20 66    of UART status f
0102E0:  6F 72 20 72 65 63 65 69 76 65 72 20 72 65 61 64    or receiver read
0102F0:  79 0D 0A 7A 38 30 09 65 71 75 09 46 41 4C 53 45    y..z80.equ.FALSE
010300:  61 62 6C 65 64 29 0D 0A 7A 38 30 09 45 51 55 09    abled)..z80.EQU.
010310:  54 52 55 45 09 09 3B 20 54 68 69 73 20 6F 6E 65    TRUE..; This one
010320:  27 73 20 61 20 5A 38 30 2E 0D 0A 45 4E 44 49 46    's a Z80...ENDIF
010330:  09 3B 6D 64 49 20 20 20 4E 4F 54 45 3A 20 6E 65    .;mdI   NOTE: ne
010340:  65 64 73 20 74 65 72 6D 69 6E 61 6C 20 64 65 66    eds terminal def
010350:  69 6E 69 74 69 6F 6E 2E 20 5B 54 6F 61 64 20 48    inition. [Toad H
010360:  61 6C 6C 5D 0D 0A 0D 0A 49 46 20 6D 69 6B 6B 6F    all]....IF mikko
010370:  0D 0A 73 69 6F 61 63 09 45 51 55 09 30 46 46 31    ..sioac.EQU.0FF1
010380:  32 48 09 09 3B 53 49 4F 20 63 68 61 6E 6E 65 6C    2H..;SIO channel
010390:  20 41 20 72 65 67 69 73 74 65 72 28 73 29 20 61     A register(s) a
0103A0:  64 64 72 65 73 73 0D 0A 73 69 6F 6F 33 09 45 51    ddress..sioo3.EQ
0103B0:  55 09 30 31 30 30 30 30 30 31 42 20 09 3B 53 49    U.01000001B .;SI
0103C0:  4F 20 57 72 69 74 65 20 52 65 67 2E 20 33 20 6F    O Write Reg. 3 o
0103D0:  72 69 67 69 6E 61 6C 20 73 65 74 75 70 20 28 3F    riginal setup (?
0103E0:  29 0D 0A 09 09 09 09 3B 52 58 20 37 20 62 69 74    )......;RX 7 bit
0103F0:  73 2C 73 79 6E 63 68 20 6D 6F 64 65 20 62 69 74    s,synch mode bit
010400:  73 20 30 2C 52 58 20 65 6E 61 62 6C 65 0D 0A 73    s 0,RX enable..s
010410:  69 6F 6E 33 09 45 51 55 09 31 31 30 30 31 31 31    ion3.EQU.1100111
010420:  31 42 09 3B 53 49 4F 20 57 72 69 74 65 20 52 65    1B.;SIO Write Re
010430:  67 2E 20 33 20 4B 45 52 4D 49 54 20 73 65 74 75    g. 3 KERMIT setu
010440:  70 0D 0A 09 09 09 09 3B 52 58 20 38 20 62 69 74    p......;RX 8 bit
010450:  73 2C 73 79 6E 63 68 20 6D 6F 64 65 20 62 69 74    s,synch mode bit
010460:  73 20 30 2C 52 58 20 65 6E 61 62 6C 65 0D 0A 73    s 0,RX enable..s
010470:  69 6F 6F 34 09 45 51 55 09 30 31 30 30 31 31 31    ioo4.EQU.0100111
010480:  31 42 09 3B 53 49 4F 20 57 72 69 74 65 20 52 65    1B.;SIO Write Re
010490:  67 2E 20 34 20 6F 72 69 67 69 6E 61 6C 20 73 65    g. 4 original se
0104A0:  74 75 70 20 28 3F 29 0D 0A 09 09 09 09 3B 58 31    tup (?)......;X1
0104B0:  36 20 63 6C 6F 63 6B 2C 38 20 62 69 74 20 73 79    6 clock,8 bit sy
0104C0:  6E 63 68 28 69 67 6E 6F 72 65 64 29 2C 0D 0A 09    nch(ignored),...
0104D0:  09 09 09 3B 32 73 74 6F 70 20 62 69 74 73 2C 70    ...;2stop bits,p
0104E0:  61 72 20 65 76 65 6E 28 6F 6E 29 0D 0A 73 69 6F    ar even(on)..sio
0104F0:  6E 34 09 45 51 55 09 30 31 30 30 30 31 30 30 42    n4.EQU.01000100B
010500:  0D 0A 45 4E 44 49 46 3B 6E 6F 72 74 68 73 0D 0A    ..ENDIF;norths..
010510:  0D 0A 49 46 20 62 62 49 49 0D 0A 6D 6E 70 6F 72    ..IF bbII..mnpor
010520:  74 09 65 71 75 09 38 30 68 09 09 3B 20 4D 6F 64    t.equ.80h..; Mod
010530:  65 6D 20 64 61 74 61 20 70 6F 72 74 20 28 53 49    em data port (SI
010540:  4F 20 63 68 61 6E 6E 65 6C 20 41 29 0D 0A 6D 6E    O channel A)..mn
010550:  70 72 74 73 09 65 71 75 09 38 31 68 09 09 3B 20    prts.equ.81h..; 
010560:  4D 6F 64 65 6D 20 73 74 61 74 75 73 20 70 6F 72    Modem status por
010570:  74 0D 0A 6F 75 74 70 75 74 09 65 71 75 09 30 34    t..output.equ.04
010580:  68 09 09 3B 20 54 72 61 6E 73 6D 69 74 20 62 75    h..; Transmit bu
010590:  66 66 65 72 20 65 6D 70 74 79 0D 0A 69 6E 70 75    ffer empty..inpu
0105A0:  74 09 65 71 75 09 30 31 68 09 09 3B 20 52 65 63    t.equ.01h..; Rec
0105B0:  65 69 76 65 20 64 61 74 61 20 61 76 61 69 6C 61    eive data availa
0105C0:  62 6C 65 0D 0A 62 61 75 64 72 74 09 65 71 75 09    ble..baudrt.equ.
0105D0:  38 39 68 09 09 3B 20 42 61 75 64 20 72 61 74 65    89h..; Baud rate
0105E0:  20 70 6F 72 74 20 66 6F 72 20 63 68 61 6E 6E 65     port for channe
0105F0:  6C 20 41 0D 0A 7A 38 30 09 45 51 55 09 54 52 55    l A..z80.EQU.TRU
010600:  45 09 09 3B 20 54 68 69 73 20 6F 6E 65 27 73 20    E..; This one's 
010610:  61 20 5A 38 30 2E 0D 0A 45 4E 44 49 46 3B 62 62    a Z80...ENDIF;bb
010620:  49 49 0D 0A 0D 0A 49 46 20 63 70 74 38 35 78 78    II....IF cpt85xx
010630:  0D 0A 62 61 75 64 72 74 09 45 51 55 09 34 43 68    ..baudrt.EQU.4Ch
010640:  09 09 3B 20 42 61 75 64 20 72 61 74 65 20 67 65    ..; Baud rate ge
010650:  6E 65 72 61 74 65 72 20 28 4E 61 74 69 6F 6E 61    nerater (Nationa
010660:  6C 20 4D 4D 35 33 30 37 29 0D 0A 6D 6E 70 6F 72    l MM5307)..mnpor
010670:  74 09 45 51 55 09 34 42 68 09 09 3B 20 43 6F 6D    t.EQU.4Bh..; Com
010680:  6D 20 70 6F 72 74 20 64 61 74 61 20 72 65 67 69    m port data regi
010690:  73 74 65 72 20 28 49 6E 74 65 6C 20 38 32 35 31    ster (Intel 8251
0106A0:  29 0D 0A 6D 6E 70 72 74 73 09 45 51 55 09 34 41    )..mnprts.EQU.4A
0106B0:  68 09 09 3B 20 43 6F 6D 6D 20 70 6F 72 74 20 63    h..; Comm port c
0106C0:  6F 6D 6D 61 6E 64 2F 73 74 61 74 75 73 20 72 65    ommand/status re
0106D0:  67 69 73 74 65 72 0D 0A 6F 75 74 70 75 74 09 45    gister..output.E
0106E0:  51 55 09 30 31 68 09 09 3B 20 54 72 61 6E 73 6D    QU.01h..; Transm
0106F0:  69 74 74 65 72 20 62 75 66 66 65 72 20 65 6D 70    itter buffer emp
010700:  09 3B 53 49 4F 20 57 72 69 74 65 20 52 65 67 2E    .;SIO Write Reg.
010710:  20 34 20 4B 45 52 4D 49 54 20 73 65 74 75 70 0D     4 KERMIT setup.
010720:  0A 09 09 09 09 3B 58 31 36 20 63 6C 6F 63 6B 2C    .....;X16 clock,
010730:  38 20 62 69 74 20 73 79 6E 63 68 28 69 67 6E 6F    8 bit synch(igno
010740:  72 65 64 29 2C 0D 0A 09 09 09 09 3B 31 73 74 6F    red),......;1sto
010750:  70 20 62 69 74 2C 70 61 72 20 6F 66 66 0D 0A 73    p bit,par off..s
010760:  69 6F 6F 35 09 45 51 55 09 31 30 31 30 31 30 31    ioo5.EQU.1010101
010770:  30 42 09 3B 53 49 4F 20 57 72 69 74 65 20 52 65    0B.;SIO Write Re
010780:  67 2E 20 35 20 6F 72 69 67 69 6E 61 6C 20 73 65    g. 5 original se
010790:  74 75 70 20 28 3F 29 0D 0A 09 09 09 09 3B 44 54    tup (?)......;DT
0107A0:  52 2C 54 58 20 37 20 62 69 74 73 2C 54 58 20 65    R,TX 7 bits,TX e
0107B0:  6E 61 62 6C 65 2C 52 54 53 0D 0A 73 69 6F 6E 35    nable,RTS..sion5
0107C0:  09 45 51 55 09 31 31 31 30 31 30 31 30 42 09 3B    .EQU.11101010B.;
0107D0:  53 49 4F 20 57 72 69 74 65 20 52 65 67 2E 20 35    SIO Write Reg. 5
0107E0:  20 4B 45 52 4D 49 54 20 73 65 74 75 70 0D 0A 09     KERMIT setup...
0107F0:  09 09 09 3B 44 54 52 2C 54 58 20 38 20 62 69 74    ...;DTR,TX 8 bit
010800:  73 2C 54 58 20 65 6E 61 62 6C 65 2C 52 54 53 0D    s,TX enable,RTS.
010810:  0A 74 78 63 6C 6B 09 45 51 55 09 30 46 46 33 30    .txclk.EQU.0FF30
010820:  48 09 3B 42 61 75 64 20 72 61 74 65 20 67 65 6E    H.;Baud rate gen
010830:  65 72 61 74 6F 72 20 28 43 54 43 29 20 66 6F 72    erator (CTC) for
010840:  20 74 72 61 6E 73 6D 69 74 74 65 72 0D 0A 72 78     transmitter..rx
010850:  63 6C 6B 09 45 51 55 09 30 46 46 33 31 48 09 3B    clk.EQU.0FF31H.;
010860:  42 61 75 64 20 72 61 74 65 20 67 65 6E 65 72 61    Baud rate genera
010870:  74 6F 72 20 28 43 54 43 29 20 66 6F 72 20 72 65    tor (CTC) for re
010880:  63 65 69 76 65 72 0D 0A 63 68 6D 61 73 6B 09 45    ceiver..chmask.E
010890:  51 55 09 30 46 31 46 32 48 09 3B 4D 61 73 6B 20    QU.0F1F2H.;Mask 
0108A0:  62 79 74 65 20 61 64 64 72 65 73 73 20 66 6F 72    byte address for
0108B0:  20 53 49 4F 20 63 68 2E 20 41 20 72 65 63 65 70     SIO ch. A recep
0108C0:  74 69 6F 6E 0D 0A 7A 38 30 09 45 51 55 09 54 52    tion..z80.EQU.TR
0108D0:  55 45 09 3B 49 74 27 73 20 67 6F 74 20 61 20 53    UE.;It's got a S
0108E0:  49 4F 20 61 6E 64 20 61 20 43 54 43 2C 20 69 74    IO and a CTC, it
0108F0:  20 6D 75 73 74 20 62 65 20 61 20 5A 38 30 0D 0A     must be a Z80..
010900:  74 79 20 66 6C 61 67 0D 0A 69 6E 70 75 74 09 45    ty flag..input.E
010910:  51 55 09 30 32 68 09 09 3B 20 52 65 63 69 76 65    QU.02h..; Recive
010920:  72 20 62 75 66 66 65 72 20 66 75 6C 6C 20 66 6C    r buffer full fl
010930:  61 67 0D 0A 54 78 45 6D 70 74 79 09 45 51 55 09    ag..TxEmpty.EQU.
010940:  30 34 68 09 09 3B 20 54 72 61 6E 73 6D 69 74 74    04h..; Transmitt
010950:  65 72 20 65 6D 70 74 79 20 66 6C 61 67 0D 0A 7A    er empty flag..z
010960:  38 30 09 45 51 55 09 46 41 4C 53 45 09 09 3B 20    80.EQU.FALSE..; 
010970:  49 74 27 73 20 72 65 61 6C 6C 79 20 61 6E 20 38    It's really an 8
010980:  30 38 30 20 5B 6F 72 20 38 30 38 35 20 2E 2E 2E    080 [or 8085 ...
010990:  20 73 61 6D 65 20 74 68 69 6E 67 5D 0D 0A 45 4E     same thing]..EN
0109A0:  44 49 46 3B 63 70 74 38 35 78 78 0D 0A 0D 0A 49    DIF;cpt85xx....I
0109B0:  46 20 6D 6D 64 49 09 3B 4D 6F 72 72 6F 77 20 4D    F mmdI.;Morrow M
0109C0:  69 63 72 6F 44 65 63 69 73 69 6F 6E 20 2D 20 74    icroDecision - t
0109D0:  68 65 20 73 69 6E 67 6C 65 2D 62 6F 61 72 64 20    he single-board 
0109E0:  6F 6E 65 0D 0A 6D 6E 70 6F 72 74 09 45 51 55 09    one..mnport.EQU.
0109F0:  30 46 45 48 09 3B 4D 6F 72 72 6F 77 20 50 72 69    0FEH.;Morrow Pri
010A00:  6E 74 65 72 20 55 41 52 54 20 64 61 74 61 20 70    nter UART data p
010A10:  6F 72 74 0D 0A 6D 6E 70 72 74 73 09 45 51 55 09    ort..mnprts.EQU.
010A20:  30 46 46 48 09 3B 4D 6F 72 72 6F 77 20 50 72 69    0FFH.;Morrow Pri
010A30:  6E 74 65 72 20 55 41 52 54 20 63 6F 6D 6D 61 6E    nter UART comman
010A40:  64 2F 73 74 61 74 75 73 0D 0A 6F 75 74 70 75 74    d/status..output
010A50:  09 45 51 55 09 30 31 48 09 3B 4F 75 74 70 75 74    .EQU.01H.;Output
010A60:  20 72 65 61 64 79 20 62 69 74 2E 0D 0A 69 6E 70     ready bit...inp
010A70:  75 74 09 45 51 55 09 30 32 48 09 3B 49 6E 70 75    ut.EQU.02H.;Inpu
010A80:  74 20 20 72 65 61 64 79 20 62 69 74 2E 0D 0A 3B    t  ready bit...;
010A90:  4E 6F 74 65 3A 09 4E 65 65 64 73 20 74 65 72 6D    Note:.Needs term
010AA0:  69 6E 61 6C 20 64 65 66 69 6E 69 74 69 6F 6E 20    inal definition 
010AB0:  28 76 74 31 30 30 2C 20 76 74 35 32 2C 20 74 76    (vt100, vt52, tv
010AC0:  69 39 32 35 2C 20 61 64 6D 33 61 20 6F 72 20 63    i925, adm3a or c
010AD0:  72 74 20 61 62 6F 76 65 29 0D 0A 7A 38 30 09 45    rt above)..z80.E
010AE0:  51 55 09 46 41 4C 53 45 09 3B 49 20 64 6F 6E 27    QU.FALSE.;I don'
010AF0:  74 20 6B 6E 6F 77 2E 2E 2E 0D 0A 45 4E 44 49 46    t know.....ENDIF
010B00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
010B10:  0E 00 00 00 02 09 4E E5 0E 00 C1 02 00 00 00 02    ......N.........
010B20:  0E 00 C6 02 00 00 00 02 0E 00 C2 02 00 00 00 02    ................
010B30:  0E 00 C7 02 00 00 00 02 0E 00 C3 02 00 00 00 02    ................
010B40:  0E 00 C8 02 00 00 00 02 0E 00 C4 02 00 00 00 02    ................
010B50:  0E 00 C9 02 00 00 00 02 0E 00 C5 02 00 00 00 02    ................
010B60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010B70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010B80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010B90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010C00:  45 4E 44 49 46 3B 6D 69 6B 6B 6F 0D 0A 0D 0A 49    ENDIF;mikko....I
010C10:  46 20 72 6F 62 69 6E 20 4F 52 20 64 6D 49 49 0D    F robin OR dmII.
010C20:  0A 7A 38 30 09 45 51 55 09 54 52 55 45 09 3B 20    .z80.EQU.TRUE.; 
010C30:  54 68 69 73 20 6F 6E 65 27 73 20 61 20 5A 38 30    This one's a Z80
010C40:  0D 0A 45 4E 44 49 46 3B 72 6F 62 69 6E 20 4F 52    ..ENDIF;robin OR
010C50:  20 64 6D 49 49 0D 0A 0D 0A 49 46 20 67 65 6E 65     dmII....IF gene
010C60:  72 20 4F 52 20 63 70 6D 33 09 3B 20 54 6F 20 62    r OR cpm3.; To b
010C70:  65 20 74 72 75 6C 79 20 67 65 6E 65 72 69 63 2C    e truly generic,
010C80:  20 77 65 20 6D 75 73 74 20 61 73 73 75 6D 65 20     we must assume 
010C90:  38 30 38 30 2E 0D 0A 7A 38 30 09 45 51 55 09 46    8080...z80.EQU.F
010CA0:  41 4C 53 45 0D 0A 45 4E 44 49 46 3B 67 65 6E 65    ALSE..ENDIF;gene
010CB0:  72 20 4F 52 20 63 70 6D 33 0D 0A 3B 0C 0D 0A 49    r OR cpm3..;...I
010CC0:  46 20 62 72 61 69 6E 20 4F 52 20 6F 73 69 20 4F    F brain OR osi O
010CD0:  52 20 61 70 70 6C 65 20 4F 52 20 74 65 6C 63 6F    R apple OR telco
010CE0:  6E 20 4F 52 20 78 65 72 38 32 30 0D 0A 64 65 66    n OR xer820..def
010CF0:  65 73 63 09 45 51 55 09 27 5D 27 2D 31 30 30 4F    esc.EQU.']'-100O
010D00:  09 3B 54 68 65 20 64 65 66 61 75 6C 74 20 65 73    .;The default es
010D10:  63 61 70 65 20 63 68 61 72 61 63 74 65 72 2E 0D    cape character..
010D20:  0A 45 4E 44 49 46 3B 62 72 61 69 6E 20 4F 52 20    .ENDIF;brain OR 
010D30:  6F 73 69 20 4F 52 20 61 70 70 6C 65 20 4F 52 20    osi OR apple OR 
010D40:  74 65 6C 63 6F 6E 20 4F 52 20 78 65 72 38 32 30    telcon OR xer820
010D50:  0D 0A 0D 0A 49 46 20 76 65 63 74 6F 72 0D 0A 64    ....IF vector..d
010D60:  65 66 65 73 63 09 45 51 55 09 27 7E 27 09 09 3B    efesc.EQU.'~'..;
010D70:  56 65 63 74 6F 72 20 63 61 6E 27 74 20 74 79 70    Vector can't typ
010D80:  65 20 27 5D 27 2E 0D 0A 45 4E 44 49 46 3B 76 65    e ']'...ENDIF;ve
010D90:  63 74 6F 72 0D 0A 0D 0A 49 46 20 72 6F 62 69 6E    ctor....IF robin
010DA0:  20 4F 52 20 64 6D 49 49 20 4F 52 20 6D 69 6B 6B     OR dmII OR mikk
010DB0:  6F 20 4F 52 20 68 65 61 74 68 20 4F 52 20 7A 31    o OR heath OR z1
010DC0:  30 30 20 4F 52 20 6B 70 49 49 20 4F 52 20 6C 6F    00 OR kpII OR lo
010DD0:  62 6F 0D 0A 64 65 66 65 73 63 09 45 51 55 09 27    bo..defesc.EQU.'
010DE0:  5C 27 2D 31 30 30 4F 09 3B 54 68 65 20 64 65 66    \'-100O.;The def
010DF0:  61 75 6C 74 20 69 73 20 43 6F 6E 74 72 6F 6C 20    ault is Control 
010E00:  22 0D 0A 09 63 61 6C 6C 09 70 72 74 73 74 72 0D    "...call.prtstr.
010E10:  0A 09 6C 78 69 09 64 2C 74 74 79 74 79 70 09 3B    ..lxi.d,ttytyp.;
010E20:  20 74 65 72 6D 69 6E 61 6C 20 74 79 70 65 0D 0A     terminal type..
010E30:  09 63 61 6C 6C 09 70 72 74 73 74 72 0D 0A 45 4E    .call.prtstr..EN
010E40:  44 49 46 3B 61 64 6D 33 61 20 4F 52 20 74 76 69    DIF;adm3a OR tvi
010E50:  39 32 35 20 4F 52 20 76 74 35 32 20 4F 52 20 76    925 OR vt52 OR v
010E60:  74 31 30 30 20 4F 52 20 73 6D 72 74 76 64 09 3B    t100 OR smrtvd.;
010E70:  5B 37 5D 0D 0A 09 63 61 6C 6C 09 70 72 63 72 6C    [7]...call.prcrl
010E80:  66 09 09 3B 20 70 72 69 6E 74 20 43 52 2F 4C 46    f..; print CR/LF
010E90:  0D 0A 3B 0D 0A 3B 20 6E 6F 77 2C 20 74 6F 20 77    ..;..; now, to w
010EA0:  6F 72 6B 2E 2E 2E 0D 0A 3B 0D 0A 49 46 20 4E 4F    ork.....;..IF NO
010EB0:  54 20 6F 73 62 72 6E 31 09 09 09 3B 20 6C 6F 63    T osbrn1...; loc
010EC0:  61 74 65 20 6C 61 72 67 65 20 62 75 66 66 65 72    ate large buffer
010ED0:  20 66 6F 72 20 6D 75 6C 74 69 2D 73 65 63 74 6F     for multi-secto
010EE0:  72 20 49 2F 4F 0D 0A 3B 20 57 68 61 74 20 77 65    r I/O..; What we
010EF0:  20 77 61 6E 74 20 74 6F 20 64 6F 20 68 65 72 65     want to do here
010F00:  20 69 73 20 66 69 6E 64 20 74 68 65 20 63 63 70     is find the ccp
010F10:  2E 20 20 53 70 61 63 65 20 62 65 74 77 65 65 6E    .  Space between
010F20:  20 6F 76 6C 65 6E 64 20 61 6E 64 20 74 68 65 20     ovlend and the 
010F30:  63 63 70 0D 0A 3B 20 69 73 20 61 76 61 69 6C 61    ccp..; is availa
010F40:  62 6C 65 20 66 6F 72 20 62 75 66 66 65 72 69 6E    ble for bufferin
010F50:  67 2C 20 65 78 63 65 70 74 20 77 65 20 64 6F 6E    g, except we don
010F60:  27 74 20 77 61 6E 74 20 74 6F 20 75 73 65 20 6D    't want to use m
010F70:  6F 72 65 20 74 68 61 6E 20 6D 61 78 73 65 63 0D    ore than maxsec.
010F80:  0A 3B 20 62 75 66 66 65 72 73 20 28 69 66 20 77    .; buffers (if w
010F90:  65 20 75 73 65 20 74 6F 6F 20 6D 61 6E 79 2C 20    e use too many, 
010FA0:  74 68 65 20 72 65 6D 6F 74 65 20 65 6E 64 20 63    the remote end c
010FB0:  6F 75 6C 64 20 74 69 6D 65 20 6F 75 74 20 77 68    ould time out wh
010FC0:  69 6C 65 20 77 65 27 72 65 0D 0A 3B 20 77 72 69    ile we're..; wri
010FD0:  74 69 6E 67 20 74 6F 20 64 69 73 6B 29 2E 20 20    ting to disk).  
010FE0:  6D 61 78 73 65 63 20 69 73 20 73 79 73 74 65 6D    maxsec is system
010FF0:  2D 64 65 70 65 6E 64 65 6E 74 2C 20 62 75 74 20    -dependent, but 
011000:  5C 20 2D 2D 20 69 74 27 73 20 65 61 73 69 65 72    \ -- it's easier
011010:  20 42 2E 45 2E 0D 0A 45 4E 44 49 46 3B 72 6F 62     B.E...ENDIF;rob
011020:  69 6E 20 4F 52 20 64 6D 49 49 20 4F 52 20 6D 69    in OR dmII OR mi
011030:  6B 6B 6F 20 4F 52 20 68 65 61 74 68 20 4F 52 20    kko OR heath OR 
011040:  7A 31 30 30 20 4F 52 20 6B 70 49 49 20 4F 52 20    z100 OR kpII OR 
011050:  6C 6F 62 6F 0D 0A 0D 0A 49 46 20 63 72 74 20 4F    lobo....IF crt O
011060:  52 20 76 74 31 30 30 20 4F 52 20 76 74 35 32 20    R vt100 OR vt52 
011070:  4F 52 20 74 76 69 39 32 35 20 4F 52 20 61 64 6D    OR tvi925 OR adm
011080:  33 61 20 4F 52 20 73 6D 72 74 76 64 20 4F 52 20    3a OR smrtvd OR 
011090:  63 70 74 38 35 78 78 0D 0A 64 65 66 65 73 63 09    cpt85xx..defesc.
0110A0:  45 51 55 09 27 5C 27 2D 31 30 30 4F 09 3B 53 74    EQU.'\'-100O.;St
0110B0:  69 6C 6C 20 43 6F 6E 74 72 6F 6C 2D 5C 20 28 6A    ill Control-\ (j
0110C0:  75 73 74 20 72 61 6E 20 6F 75 74 20 6F 66 20 72    ust ran out of r
0110D0:  6F 6F 6D 2E 2E 2E 29 0D 0A 45 4E 44 49 46 3B 63    oom...)..ENDIF;c
0110E0:  72 74 20 4F 52 20 76 74 31 30 30 20 4F 52 20 76    rt OR vt100 OR v
0110F0:  74 35 32 20 4F 52 20 74 76 69 39 32 35 20 4F 52    t52 OR tvi925 OR
011100:  20 61 64 6D 33 61 20 4F 52 20 73 6D 72 74 76 64     adm3a OR smrtvd
011110:  20 4F 52 20 63 70 74 38 35 78 78 0D 0A 0D 0A 69     OR cpt85xx....i
011120:  66 20 6F 73 62 72 6E 31 0D 0A 64 65 66 65 73 63    f osbrn1..defesc
011130:  20 20 65 71 75 20 20 20 20 20 27 4F 27 2D 31 30      equ     'O'-10
011140:  30 4F 20 20 20 20 20 20 20 20 3B 20 47 65 72 6D    0O        ; Germ
011150:  61 6E 20 4F 73 62 6F 72 6E 65 73 20 63 61 6E 27    an Osbornes can'
011160:  74 20 64 6F 20 43 6F 6E 74 72 6F 6C 20 5C 0D 0A    t do Control \..
011170:  65 6E 64 69 66 20 6F 73 62 72 6E 31 20 20 20 20    endif osbrn1    
011180:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
011190:  3B 20 43 6F 6E 74 72 6F 6C 20 4F 20 69 73 20 63    ; Control O is c
0111A0:  6C 6F 73 65 20 65 6E 6F 75 67 68 2E 0D 0A 0D 0A    lose enough.....
0111B0:  49 46 20 74 72 73 38 30 0D 0A 64 65 66 65 73 63    IF trs80..defesc
0111C0:  09 45 51 55 09 27 5F 27 2D 31 30 30 4F 09 3B 43    .EQU.'_'-100O.;C
0111D0:  54 52 4C 2D 5F 20 28 44 6F 77 6E 2D 61 72 72 6F    TRL-_ (Down-arro
0111E0:  77 20 6F 6E 20 54 52 53 2D 38 30 20 6B 65 79 62    w on TRS-80 keyb
0111F0:  6F 61 72 64 29 0D 0A 45 4E 44 49 46 3B 74 72 73    oard)..ENDIF;trs
011200:  66 6F 72 20 6E 6F 77 20 77 65 27 6C 6C 20 6A 75    for now we'll ju
011210:  73 74 0D 0A 3B 20 75 73 65 20 38 4B 62 79 74 65    st..; use 8Kbyte
011220:  73 2E 20 20 49 66 20 79 6F 75 20 67 65 74 20 72    s.  If you get r
011230:  65 74 72 61 6E 73 6D 69 73 73 69 6F 6E 73 20 61    etransmissions a
011240:  6E 64 20 6F 74 68 65 72 20 70 72 6F 74 6F 63 6F    nd other protoco
011250:  6C 20 65 72 72 6F 72 73 20 61 66 74 65 72 0D 0A    l errors after..
011260:  3B 20 74 72 61 6E 73 66 65 72 72 69 6E 67 20 74    ; transferring t
011270:  68 65 20 66 69 72 73 74 20 6D 61 78 73 65 63 20    he first maxsec 
011280:  73 65 63 74 6F 72 73 2C 20 6C 6F 77 65 72 20 6D    sectors, lower m
011290:  61 78 73 65 63 2E 0D 0A 0D 0A 3B 20 49 27 6D 20    axsec.....; I'm 
0112A0:  65 78 63 6C 75 64 69 6E 67 20 74 68 65 20 4F 73    excluding the Os
0112B0:  62 6F 72 6E 65 20 31 20 66 6F 72 20 6E 6F 77 20    borne 1 for now 
0112C0:  62 65 63 61 75 73 65 20 69 74 20 6E 65 65 64 73    because it needs
0112D0:  20 63 6F 64 65 20 75 70 20 61 74 20 34 30 30 30     code up at 4000
0112E0:  48 2C 0D 0A 3B 20 73 6F 20 77 65 27 64 20 68 61    H,..; so we'd ha
0112F0:  76 65 20 74 6F 20 73 74 61 72 74 20 74 68 65 20    ve to start the 
011300:  62 75 66 66 65 72 20 61 66 74 65 72 20 74 68 61    buffer after tha
011310:  74 2E 0D 0A 0D 0A 6D 61 78 73 65 63 09 45 51 55    t.....maxsec.EQU
011320:  09 28 38 2A 31 30 32 34 29 2F 62 75 66 73 69 7A    .(8*1024)/bufsiz
011330:  09 3B 20 38 4B 20 2F 20 6E 75 6D 62 65 72 20 6F    .; 8K / number o
011340:  66 20 62 79 74 65 73 20 70 65 72 20 73 65 63 74    f bytes per sect
011350:  6F 72 0D 0A 0D 0A 09 6C 78 69 09 68 2C 6F 76 6C    or.....lxi.h,ovl
011360:  65 6E 64 09 3B 20 67 65 74 20 73 74 61 72 74 20    end.; get start 
011370:  6F 66 20 62 75 66 66 65 72 0D 0A 09 73 68 6C 64    of buffer...shld
011380:  09 62 75 66 61 64 72 09 09 3B 20 73 74 6F 72 65    .bufadr..; store
011390:  20 69 6E 20 6C 69 6E 6B 61 67 65 20 73 65 63 74     in linkage sect
0113A0:  69 6F 6E 0D 0A 09 6D 76 69 09 61 2C 6D 61 78 73    ion...mvi.a,maxs
0113B0:  65 63 09 3B 20 67 65 74 20 73 69 7A 65 20 6F 66    ec.; get size of
0113C0:  20 62 75 66 66 65 72 2C 20 69 6E 20 73 65 63 74     buffer, in sect
0113D0:  6F 72 73 0D 0A 09 73 74 61 09 62 75 66 73 65 63    ors...sta.bufsec
0113E0:  09 09 3B 20 73 74 6F 72 65 20 74 68 61 74 2C 20    ..; store that, 
0113F0:  74 6F 6F 2E 0D 0A 45 4E 44 49 46 3B 4E 4F 54 20    too...ENDIF;NOT 
011400:  38 30 0D 0A 0D 0A 3B 20 53 65 6C 65 63 74 20 69    80....; Select i
011410:  6E 69 74 69 61 6C 20 73 65 74 74 69 6E 67 20 66    nitial setting f
011420:  6F 72 20 56 54 2D 35 32 20 65 6D 75 6C 61 74 69    or VT-52 emulati
011430:  6F 6E 20 66 6C 61 67 2E 0D 0A 49 46 20 63 72 74    on flag...IF crt
011440:  09 09 09 09 3B 20 49 66 20 64 75 6D 62 20 6F 72    ....; If dumb or
011450:  20 75 6E 6B 6E 6F 77 6E 20 63 6F 6E 73 6F 6C 65     unknown console
011460:  2C 0D 0A 76 74 76 61 6C 09 45 51 55 09 30 46 46    ,..vtval.EQU.0FF
011470:  48 09 09 3B 20 20 77 65 20 63 61 6E 27 74 20 73    H..;  we can't s
011480:  75 70 70 6F 72 74 20 56 54 35 32 20 65 6D 75 6C    upport VT52 emul
011490:  61 74 69 6F 6E 0D 0A 45 4E 44 49 46 3B 63 72 74    ation..ENDIF;crt
0114A0:  0D 0A 0D 0A 49 46 20 68 65 61 74 68 20 4F 52 20    ....IF heath OR 
0114B0:  7A 31 30 30 20 4F 52 20 74 65 6C 63 6F 6E 20 4F    z100 OR telcon O
0114C0:  52 20 76 74 35 32 20 3B 20 49 66 20 63 6F 6E 73    R vt52 ; If cons
0114D0:  6F 6C 65 20 6C 6F 6F 6B 73 20 6C 69 6B 65 20 28    ole looks like (
0114E0:  6F 72 20 69 73 29 20 56 54 35 32 0D 0A 76 74 76    or is) VT52..vtv
0114F0:  61 6C 09 45 51 55 09 30 09 09 3B 20 20 77 65 20    al.EQU.0..;  we 
011500:  64 6F 6E 27 74 20 6E 65 65 64 20 56 54 35 32 20    don't need VT52 
011510:  65 6D 75 6C 61 74 69 6F 6E 0D 0A 45 4E 44 49 46    emulation..ENDIF
011520:  3B 68 65 61 74 68 20 4F 52 20 7A 31 30 30 20 4F    ;heath OR z100 O
011530:  52 20 74 65 6C 63 6F 6E 20 4F 52 20 76 74 35 32    R telcon OR vt52
011540:  0D 0A 0D 0A 49 46 20 72 6F 62 69 6E 20 4F 52 20    ....IF robin OR 
011550:  64 6D 49 49 20 4F 52 20 76 74 31 30 30 09 3B 20    dmII OR vt100.; 
011560:  49 66 20 63 6F 6E 73 6F 6C 65 20 6C 6F 6F 6B 73    If console looks
011570:  20 6C 69 6B 65 20 56 54 31 30 30 0D 0A 76 74 76     like VT100..vtv
011580:  61 6C 09 45 51 55 09 30 09 09 3B 20 77 65 20 70    al.EQU.0..; we p
011590:  72 6F 62 61 62 6C 79 20 64 6F 6E 27 74 20 77 61    robably don't wa
0115A0:  6E 74 20 56 54 35 32 20 65 6D 75 6C 61 74 69 6F    nt VT52 emulatio
0115B0:  6E 0D 0A 45 4E 44 49 46 3B 72 6F 62 69 6E 20 4F    n..ENDIF;robin O
0115C0:  52 20 64 6D 49 49 20 4F 52 20 76 74 31 30 30 0D    R dmII OR vt100.
0115D0:  0A 0D 0A 3B 20 49 66 20 6E 6F 6E 65 20 6F 66 20    ...; If none of 
0115E0:  74 68 65 20 61 62 6F 76 65 2C 20 64 65 66 61 75    the above, defau
0115F0:  6C 74 20 74 6F 20 56 54 35 32 2D 45 4D 55 4C 41    lt to VT52-EMULA
011600:  6F 73 62 72 6E 31 0D 0A 0D 0A 49 46 20 69 6F 62    osbrn1....IF iob
011610:  79 74 09 09 09 3B 20 28 61 63 74 75 61 6C 6C 79    yt...; (actually
011620:  2C 20 77 65 20 6F 75 67 68 74 20 74 6F 20 64 6F    , we ought to do
011630:  20 74 68 69 73 20 66 6F 72 20 65 76 65 72 79 62     this for everyb
011640:  6F 64 79 29 0D 0A 09 63 61 6C 6C 09 69 6E 69 61    ody)...call.inia
011650:  64 72 09 3B 49 6E 69 74 69 61 6C 69 7A 65 20 74    dr.;Initialize t
011660:  68 65 20 42 49 4F 53 20 61 64 64 72 65 73 73 65    he BIOS addresse
011670:  73 0D 0A 09 6D 76 69 09 63 2C 67 74 69 6F 62 09    s...mvi.c,gtiob.
011680:  3B 47 65 74 20 63 75 72 72 65 6E 74 20 49 2F 4F    ;Get current I/O
011690:  20 62 79 74 65 0D 0A 09 63 61 6C 6C 09 62 64 6F     byte...call.bdo
0116A0:  73 09 3B 46 72 6F 6D 20 43 50 2F 4D 0D 0A 09 73    s.;From CP/M...s
0116B0:  74 61 09 63 6F 6E 69 6F 62 09 3B 52 65 6D 65 6D    ta.coniob.;Remem
0116C0:  62 65 72 20 77 68 65 72 65 20 63 6F 6E 73 6F 6C    ber where consol
0116D0:  65 20 69 73 0D 0A 45 4E 44 49 46 3B 69 6F 62 79    e is..ENDIF;ioby
0116E0:  74 0D 0A 0D 0A 49 46 20 6F 73 62 72 6E 31 0D 0A    t....IF osbrn1..
0116F0:  09 6C 78 69 09 64 2C 6F 73 74 6F 70 09 09 3B 77    .lxi.d,ostop..;w
011700:  68 65 72 65 20 77 65 27 72 65 20 6D 6F 76 69 6E    here we're movin
011710:  67 20 69 74 20 74 6F 0D 0A 09 6C 78 69 09 68 2C    g it to...lxi.h,
011720:  6F 73 6D 6F 76 65 09 3B 77 68 61 74 20 77 65 27    osmove.;what we'
011730:  72 65 20 6D 6F 76 69 6E 67 0D 0A 09 6D 76 69 09    re moving...mvi.
011740:  62 2C 6F 73 6D 63 74 09 09 3B 48 6F 77 20 6D 61    b,osmct..;How ma
011750:  6E 79 20 62 79 74 65 73 20 77 65 27 72 65 20 6D    ny bytes we're m
011760:  6F 76 69 6E 67 0D 0A 09 63 61 6C 6C 09 6D 6F 76    oving...call.mov
011770:  65 72 0D 0A 09 6C 64 61 09 62 61 75 64 72 74 09    er...lda.baudrt.
011780:  09 3B 20 46 69 6E 64 20 6F 75 74 20 77 68 61 74    .; Find out what
011790:  20 73 70 65 65 64 20 69 73 20 63 75 72 72 65 6E     speed is curren
0117A0:  74 0D 0A 09 61 6E 69 09 31 0D 0A 09 6D 76 69 09    t...ani.1...mvi.
0117B0:  61 2C 6F 73 62 69 30 33 09 3B 20 61 73 73 75 6D    a,osbi03.; assum
0117C0:  65 20 33 30 30 20 62 61 75 64 0D 0A 09 6A 7A 09    e 300 baud...jz.
0117D0:  6F 73 73 74 72 31 0D 0A 09 6D 76 69 09 61 2C 6F    osstr1...mvi.a,o
0117E0:  73 62 69 31 32 09 3B 20 6E 6F 70 65 2C 20 69 74    sbi12.; nope, it
0117F0:  27 73 20 31 32 30 30 2E 0D 0A 6F 73 73 74 72 31    's 1200...osstr1
011800:  54 49 4F 4E 20 4F 4E 2E 0D 0A 49 46 20 4E 4F 54    TION ON...IF NOT
011810:  20 28 63 72 74 20 4F 52 20 68 65 61 74 68 20 4F     (crt OR heath O
011820:  52 20 7A 31 30 30 20 4F 52 20 74 65 6C 63 6F 6E    R z100 OR telcon
011830:  20 4F 52 20 76 74 35 32 20 4F 52 20 72 6F 62 69     OR vt52 OR robi
011840:  6E 20 4F 52 20 64 6D 49 49 20 4F 52 20 76 74 31    n OR dmII OR vt1
011850:  30 30 29 0D 0A 76 74 76 61 6C 09 45 51 55 09 31    00)..vtval.EQU.1
011860:  0D 0A 45 4E 44 49 46 3B 4E 4F 54 20 28 63 72 74    ..ENDIF;NOT (crt
011870:  20 4F 52 20 68 65 61 74 68 20 4F 52 20 7A 31 30     OR heath OR z10
011880:  30 20 4F 52 20 74 65 6C 63 6F 6E 20 4F 52 20 76    0 OR telcon OR v
011890:  74 35 32 20 4F 52 20 72 6F 62 69 6E 20 4F 52 20    t52 OR robin OR 
0118A0:  64 6D 49 49 20 4F 52 20 76 74 31 30 30 29 0D 0A    dmII OR vt100)..
0118B0:  0D 0A 3B 20 53 65 74 20 74 68 65 20 66 75 7A 7A    ..; Set the fuzz
0118C0:  79 20 74 69 6D 65 6F 75 74 20 76 61 6C 75 65 2E    y timeout value.
0118D0:  20 20 52 61 6E 67 65 20 69 73 20 31 20 28 56 45      Range is 1 (VE
0118E0:  52 59 20 73 68 6F 72 74 29 20 74 68 72 6F 75 67    RY short) throug
0118F0:  68 20 30 66 66 66 66 48 20 74 6F 20 7A 65 72 6F    h 0ffffH to zero
011900:  0D 0A 3B 20 28 6D 61 78 69 6D 75 6D 29 2E 20 20    ..; (maximum).  
011910:  54 68 65 20 61 63 74 75 61 6C 20 64 75 72 61 74    The actual durat
011920:  69 6F 6E 20 69 73 20 61 20 66 75 6E 63 74 69 6F    ion is a functio
011930:  6E 20 6F 66 20 74 68 65 20 6C 6F 6F 70 20 6C 65    n of the loop le
011940:  6E 67 74 68 20 61 6E 64 20 74 68 65 0D 0A 3B 20    ngth and the..; 
011950:  70 72 6F 63 65 73 73 6F 72 20 73 70 65 65 64 2E    processor speed.
011960:  20 20 46 6F 72 20 6E 6F 77 2C 20 77 65 27 6C 6C      For now, we'll
011970:  20 6D 61 6B 65 20 69 74 20 7A 65 72 6F 20 66 6F     make it zero fo
011980:  72 20 65 76 65 72 79 62 6F 64 79 2C 20 62 75 74    r everybody, but
011990:  20 66 65 65 6C 20 66 72 65 65 0D 0A 3B 20 74 6F     feel free..; to
0119A0:  20 63 68 61 6E 67 65 20 69 74 20 66 6F 72 20 79     change it for y
0119B0:  6F 75 72 20 73 79 73 74 65 6D 2E 0D 0A 66 75 7A    our system...fuz
0119C0:  76 61 6C 09 45 51 55 09 30 0D 0A 0D 0A 3B 0C 0D    val.EQU.0....;..
0119D0:  0A 3B 0D 0A 3B 09 53 79 73 74 65 6D 2D 64 65 70    .;..;.System-dep
0119E0:  65 6E 64 65 6E 74 20 69 6E 69 74 69 61 6C 69 7A    endent initializ
0119F0:  61 74 69 6F 6E 0D 0A 3B 09 43 61 6C 6C 65 64 20    ation..;.Called 
011A00:  3A 09 73 74 61 09 73 70 65 65 64 09 09 3B 20 73    :.sta.speed..; s
011A10:  61 76 65 20 69 6E 69 74 69 61 6C 20 73 70 65 65    ave initial spee
011A20:  64 0D 0A 09 73 74 61 09 73 70 65 65 64 2B 31 09    d...sta.speed+1.
011A30:  09 3B 20 20 61 73 20 31 36 20 62 69 74 73 2C 20    .;  as 16 bits, 
011A40:  74 6F 20 6D 61 74 63 68 20 73 70 65 65 64 20 74    to match speed t
011A50:  61 62 6C 65 20 65 6E 74 72 69 65 73 0D 0A 09 6D    able entries...m
011A60:  6F 76 09 64 2C 61 0D 0A 09 6D 6F 76 09 65 2C 61    ov.d,a...mov.e,a
011A70:  09 09 3B 20 67 65 74 20 69 6E 69 74 69 61 6C 20    ..; get initial 
011A80:  73 70 65 65 64 20 69 6E 20 44 45 0D 0A 09 63 61    speed in DE...ca
011A90:  6C 6C 09 73 79 73 73 70 64 09 09 3B 73 65 74 20    ll.sysspd..;set 
011AA0:  75 70 20 70 61 72 69 74 79 20 65 74 63 2E 0D 0A    up parity etc...
011AB0:  45 4E 44 49 46 3B 6F 73 62 72 6E 31 0D 0A 0D 0A    ENDIF;osbrn1....
011AC0:  49 46 20 62 62 49 20 4F 52 20 62 62 49 49 0D 0A    IF bbI OR bbII..
011AD0:  09 6C 78 69 09 64 2C 73 69 6F 74 62 6C 09 3B 20    .lxi.d,siotbl.; 
011AE0:  4C 6F 61 64 20 74 68 65 20 61 64 64 72 65 73 73    Load the address
011AF0:  20 6F 66 20 74 68 65 20 73 74 61 74 75 73 20 61     of the status a
011B00:  62 6C 65 0D 0A 09 6D 76 69 09 63 2C 73 69 6F 6C    ble...mvi.c,siol
011B10:  65 6E 09 3B 20 4C 65 6E 67 74 68 20 6F 66 20 73    en.; Length of s
011B20:  74 61 74 75 73 20 74 61 62 6C 65 0D 0A 73 69 6F    tatus table..sio
011B30:  6C 75 70 3A 09 3B 4C 6F 6F 70 20 62 61 63 6B 20    lup:.;Loop back 
011B40:  68 65 72 65 20 66 6F 72 20 65 61 63 68 20 63 6F    here for each co
011B50:  6D 6D 61 6E 64 20 62 79 74 65 0D 0A 09 6C 64 61    mmand byte...lda
011B60:  78 09 64 09 09 3B 20 4C 6F 61 64 20 74 68 65 20    x.d..; Load the 
011B70:  66 69 72 73 74 20 62 79 74 65 20 69 6E 74 6F 20    first byte into 
011B80:  41 0D 0A 09 69 6E 78 09 64 09 09 3B 20 49 6E 64    A...inx.d..; Ind
011B90:  65 78 20 74 68 65 20 70 6F 69 6E 74 65 72 0D 0A    ex the pointer..
011BA0:  09 6F 75 74 09 6D 6E 70 72 74 73 09 09 3B 20 53    .out.mnprts..; S
011BB0:  65 6E 64 20 69 74 20 74 6F 20 74 68 65 20 73 74    end it to the st
011BC0:  61 74 75 73 20 70 6F 72 74 0D 0A 09 64 63 72 09    atus port...dcr.
011BD0:  63 09 09 3B 20 44 65 63 72 65 6D 65 6E 74 20 74    c..; Decrement t
011BE0:  68 65 20 62 79 74 65 20 63 6F 75 6E 74 65 72 0D    he byte counter.
011BF0:  0A 09 6A 6E 7A 09 73 69 6F 6C 75 70 09 09 3B 20    ..jnz.siolup..; 
011C00:  6F 6E 63 65 20 61 74 20 70 72 6F 67 72 61 6D 20    once at program 
011C10:  73 74 61 72 74 2E 0D 0A 73 79 73 69 6E 69 74 3A    start...sysinit:
011C20:  0D 0A 09 6D 76 69 09 63 2C 67 65 74 76 6E 6D 09    ...mvi.c,getvnm.
011C30:  3B 20 67 65 74 20 74 68 65 20 42 44 4F 53 20 76    ; get the BDOS v
011C40:  65 72 73 69 6F 6E 20 6E 75 6D 62 65 72 20 28 65    ersion number (e
011C50:  2E 67 2E 20 32 32 48 2C 20 33 31 48 29 0D 0A 09    .g. 22H, 31H)...
011C60:  63 61 6C 6C 09 62 64 6F 73 0D 0A 09 6D 6F 76 09    call.bdos...mov.
011C70:  61 2C 6C 0D 0A 09 73 74 61 09 62 64 6F 73 76 72    a,l...sta.bdosvr
011C80:  09 09 3B 20 61 6E 64 20 73 74 6F 72 65 20 69 74    ..; and store it
011C90:  20 61 77 61 79 20 66 6F 72 20 66 75 74 75 72 65     away for future
011CA0:  20 72 65 66 65 72 65 6E 63 65 0D 0A 3B 0D 0A 09     reference..;...
011CB0:  6C 78 69 09 64 2C 63 66 67 6D 73 67 09 3B 20 22    lxi.d,cfgmsg.; "
011CC0:  63 6F 6E 66 69 67 75 72 65 64 20 66 6F 72 20 22    configured for "
011CD0:  0D 0A 09 63 61 6C 6C 09 70 72 74 73 74 72 0D 0A    ...call.prtstr..
011CE0:  09 6C 78 69 09 64 2C 73 79 73 76 65 72 09 3B 20    .lxi.d,sysver.; 
011CF0:  67 65 74 20 63 6F 6E 66 69 67 75 72 61 74 69 6F    get configuratio
011D00:  6E 20 77 65 27 72 65 20 63 6F 6E 66 69 67 75 72    n we're configur
011D10:  65 64 20 66 6F 72 0D 0A 09 63 61 6C 6C 09 70 72    ed for...call.pr
011D20:  74 73 74 72 09 09 3B 20 70 72 69 6E 74 20 69 74    tstr..; print it
011D30:  2E 0D 0A 3B 0D 0A 3B 09 49 66 20 77 65 27 72 65    ...;..;.If we're
011D40:  20 73 65 74 20 75 70 20 74 6F 20 64 6F 20 73 70     set up to do sp
011D50:  65 63 69 61 6C 20 74 65 72 6D 69 6E 61 6C 20 68    ecial terminal h
011D60:  61 6E 64 6C 69 6E 67 2C 20 73 61 79 20 77 68 61    andling, say wha
011D70:  74 20 6B 69 6E 64 0D 0A 3B 09 6F 66 20 74 65 72    t kind..;.of ter
011D80:  6D 69 6E 61 6C 20 77 65 20 65 78 70 65 63 74 2E    minal we expect.
011D90:  2E 2E 20 28 75 6E 6C 65 73 73 20 69 74 27 73 20    .. (unless it's 
011DA0:  74 68 65 20 67 65 6E 65 72 69 63 20 27 63 72 74    the generic 'crt
011DB0:  27 29 0D 0A 49 46 20 61 64 6D 33 61 20 4F 52 20    ')..IF adm3a OR 
011DC0:  74 76 69 39 32 35 20 4F 52 20 76 74 35 32 20 4F    tvi925 OR vt52 O
011DD0:  52 20 76 74 31 30 30 20 4F 52 20 73 6D 72 74 76    R vt100 OR smrtv
011DE0:  64 09 09 3B 5B 37 5D 0D 0A 09 6C 78 69 09 64 2C    d..;[7]...lxi.d,
011DF0:  77 69 74 6D 73 67 09 3B 20 22 20 77 69 74 68 20    witmsg.; " with 
011E00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
011E10:  0F 00 00 00 02 09 4E E5 0F 00 C1 02 00 00 00 02    ......N.........
011E20:  0F 00 C6 02 00 00 00 02 0F 00 C2 02 00 00 00 02    ................
011E30:  0F 00 C7 02 00 00 00 02 0F 00 C3 02 00 00 00 02    ................
011E40:  0F 00 C8 02 00 00 00 02 0F 00 C4 02 00 00 00 02    ................
011E50:  0F 00 C9 02 00 00 00 02 0F 00 C5 02 00 00 00 02    ................
011E60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011E70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011E80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011E90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011EA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011EB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011EC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011ED0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011EE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011EF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011F00:  4A 75 6D 70 20 62 61 63 6B 20 66 6F 72 20 6D 6F    Jump back for mo
011F10:  72 65 20 63 6F 6D 6D 61 6E 64 73 0D 0A 45 4E 44    re commands..END
011F20:  49 46 3B 62 62 49 20 6F 72 20 62 62 49 49 0D 0A    IF;bbI or bbII..
011F30:  0D 0A 49 46 20 63 70 74 38 35 78 78 0D 0A 09 6D    ..IF cpt85xx...m
011F40:  76 69 09 61 2C 38 30 68 09 09 3B 20 53 65 6E 64    vi.a,80h..; Send
011F50:  20 55 41 52 54 20 72 65 73 65 74 20 5B 66 6F 72     UART reset [for
011F60:  63 65 20 69 64 6C 65 5D 20 62 79 20 73 65 74 74    ce idle] by sett
011F70:  69 6E 67 0D 0A 09 6F 75 74 09 62 61 75 64 72 74    ing...out.baudrt
011F80:  09 09 3B 20 20 20 20 62 69 74 20 37 20 6F 66 20    ..;    bit 7 of 
011F90:  62 61 75 64 20 72 61 74 65 20 49 2F 4F 20 70 6F    baud rate I/O po
011FA0:  72 74 0D 0A 09 6D 76 69 09 61 2C 30 46 68 09 09    rt...mvi.a,0Fh..
011FB0:  3B 20 43 6C 65 61 72 20 72 65 73 65 74 20 62 69    ; Clear reset bi
011FC0:  74 20 61 6E 64 20 64 65 66 61 75 6C 74 20 74 6F    t and default to
011FD0:  20 39 36 30 30 20 62 61 75 64 0D 0A 09 6F 75 74     9600 baud...out
011FE0:  09 62 61 75 64 72 74 0D 0A 09 6D 76 69 09 61 2C    .baudrt...mvi.a,
011FF0:  34 45 68 09 09 3B 20 53 65 74 20 55 41 52 54 20    4Eh..; Set UART 
012000:  6D 6F 64 65 20 74 6F 20 61 73 79 6E 63 20 31 36    mode to async 16
012010:  78 20 63 6C 6F 63 6B 2C 20 38 20 64 61 74 61 0D    x clock, 8 data.
012020:  0A 09 6F 75 74 09 6D 6E 70 72 74 73 09 09 3B 20    ..out.mnprts..; 
012030:  20 20 20 62 69 74 73 2C 20 6E 6F 20 70 61 72 69       bits, no pari
012040:  74 79 2C 20 61 6E 64 20 31 20 73 74 6F 70 20 62    ty, and 1 stop b
012050:  69 74 0D 0A 09 6D 76 69 09 61 2C 33 37 68 09 09    it...mvi.a,37h..
012060:  3B 20 53 65 74 20 63 6F 6D 6D 61 6E 64 20 74 6F    ; Set command to
012070:  20 54 78 20 65 6E 61 62 6C 65 2C 20 44 54 52 20     Tx enable, DTR 
012080:  6F 6E 2C 20 52 78 20 65 6E 61 62 6C 65 2C 0D 0A    on, Rx enable,..
012090:  09 6F 75 74 09 6D 6E 70 72 74 73 09 09 3B 20 20    .out.mnprts..;  
0120A0:  20 20 62 72 65 61 6B 20 6F 66 66 2C 20 65 72 72      break off, err
0120B0:  6F 72 20 72 65 73 65 74 2C 20 61 6E 64 20 52 54    or reset, and RT
0120C0:  53 20 6F 6E 0D 0A 45 4E 44 49 46 3B 63 70 74 38    S on..ENDIF;cpt8
0120D0:  35 78 78 0D 0A 0D 0A 49 46 20 6C 6F 62 6F 09 3B    5xx....IF lobo.;
0120E0:  5B 68 68 5D 0D 0A 09 6C 78 69 09 64 2C 73 69 6F    [hh]...lxi.d,sio
0120F0:  74 62 6C 09 3B 5B 68 68 5D 20 61 64 64 72 65 73    tbl.;[hh] addres
012100:  73 6F 20 77 65 20 63 61 6E 20 74 65 6C 6C 20 77    so we can tell w
012110:  68 61 74 20 73 70 65 65 64 20 69 73 20 73 65 6C    hat speed is sel
012120:  65 63 74 65 64 2E 0D 0A 3B 0D 0A 09 6D 76 69 09    ected...;...mvi.
012130:  61 2C 30 37 68 09 09 3B 5B 37 5D 20 67 65 74 20    a,07h..;[7] get 
012140:  76 61 6C 75 65 20 66 6F 72 20 31 32 30 30 20 62    value for 1200 b
012150:  61 75 64 0D 0A 09 6F 75 74 09 62 61 75 64 72 74    aud...out.baudrt
012160:  09 09 3B 5B 37 5D 20 73 65 74 20 69 74 20 66 6F    ..;[7] set it fo
012170:  72 20 70 6F 72 74 20 32 0D 0A 09 73 74 61 09 73    r port 2...sta.s
012180:  70 65 65 64 09 09 3B 5B 37 5D 20 73 61 76 65 20    peed..;[7] save 
012190:  66 6F 72 20 73 74 61 74 75 73 20 64 69 73 70 6C    for status displ
0121A0:  61 79 0D 0A 09 73 74 61 09 73 70 65 65 64 2B 31    ay...sta.speed+1
0121B0:  0D 0A 45 4E 44 49 46 3B 5B 37 5D 20 64 65 6C 70    ..ENDIF;[7] delp
0121C0:  68 69 0D 0A 3B 0C 0D 0A 49 46 20 68 65 61 74 68    hi..;...IF heath
0121D0:  0D 0A 3B 0D 0A 3B 09 53 79 73 74 65 6D 20 64 65    ..;..;.System de
0121E0:  70 65 6E 64 65 6E 74 20 73 74 61 72 74 75 70 20    pendent startup 
0121F0:  66 6F 72 20 48 38 39 0D 0A 3B 0D 0A 0D 0A 09 63    for H89..;.....c
012200:  61 6C 6C 09 6D 64 6D 6F 66 6C 09 09 3B 20 6B 65    all.mdmofl..; ke
012210:  65 70 20 74 68 65 20 6C 69 6E 65 20 73 61 66 65    ep the line safe
012220:  20 66 72 6F 6D 20 67 61 72 62 61 67 65 0D 0A 0D     from garbage...
012230:  0A 3B 09 46 69 72 73 74 2C 20 74 65 6C 6C 20 4B    .;.First, tell K
012240:  65 72 6D 69 74 20 74 68 65 20 6D 6F 64 65 6D 20    ermit the modem 
012250:  70 6F 72 74 27 73 20 63 75 72 72 65 6E 74 20 73    port's current s
012260:  70 65 65 64 0D 0A 09 69 6E 09 6D 6E 70 6F 72 74    peed...in.mnport
012270:  2B 61 63 65 6C 63 72 0D 0A 09 6F 72 69 09 61 63    +acelcr...ori.ac
012280:  65 64 6C 61 0D 0A 09 6F 75 74 09 6D 6E 70 6F 72    edla...out.mnpor
012290:  74 2B 61 63 65 6C 63 72 09 3B 20 61 63 63 65 73    t+acelcr.; acces
0122A0:  73 20 74 68 65 20 41 43 45 27 73 20 64 69 76 69    s the ACE's divi
0122B0:  73 6F 72 20 6C 61 74 63 68 0D 0A 09 69 6E 09 6D    sor latch...in.m
0122C0:  6E 70 6F 72 74 2B 61 63 65 64 6C 6C 09 3B 20 67    nport+acedll.; g
0122D0:  65 74 20 74 68 65 20 6C 6F 77 20 62 79 74 65 0D    et the low byte.
0122E0:  0A 09 73 74 61 09 73 70 65 65 64 0D 0A 09 69 6E    ..sta.speed...in
0122F0:  09 6D 6E 70 6F 72 74 2B 61 63 65 64 6C 68 09 3B    .mnport+acedlh.;
012300:  73 20 6F 66 20 73 74 61 74 75 73 20 74 61 62 6C    s of status tabl
012310:  65 0D 0A 09 6D 76 69 09 63 2C 73 69 6F 6C 65 6E    e...mvi.c,siolen
012320:  09 3B 5B 68 68 5D 20 6C 65 6E 67 74 68 20 6F 66    .;[hh] length of
012330:  20 74 68 65 20 74 61 62 6C 65 0D 0A 73 69 6F 6C     the table..siol
012340:  75 70 3A 09 3B 5B 68 68 5D 20 6C 6F 6F 70 20 68    up:.;[hh] loop h
012350:  65 72 65 20 66 6F 72 20 65 61 63 68 20 63 6F 6D    ere for each com
012360:  6D 61 6E 64 20 62 79 74 65 0D 0A 09 6C 64 61 78    mand byte...ldax
012370:  09 64 09 09 3B 5B 68 68 5D 20 6C 6F 61 64 20 66    .d..;[hh] load f
012380:  69 72 73 74 20 62 79 74 65 20 69 6E 74 6F 20 41    irst byte into A
012390:  0D 0A 09 69 6E 78 09 64 09 09 3B 5B 68 68 5D 20    ...inx.d..;[hh] 
0123A0:  69 6E 64 65 78 20 70 6F 69 6E 74 65 72 20 74 6F    index pointer to
0123B0:  20 6E 65 78 74 20 62 75 74 65 0D 0A 09 73 74 61     next bute...sta
0123C0:  09 6D 6E 70 72 74 73 09 09 3B 5B 68 68 5D 20 73    .mnprts..;[hh] s
0123D0:  65 6E 64 20 69 74 20 74 6F 20 73 74 61 74 75 73    end it to status
0123E0:  20 70 6F 72 74 20 41 0D 0A 09 73 74 61 09 6D 6E     port A...sta.mn
0123F0:  70 72 74 73 2B 32 09 3B 5B 68 68 5D 20 61 6E 64    prts+2.;[hh] and
012400:  20 74 6F 20 73 74 61 74 75 73 20 70 6F 72 74 20     to status port 
012410:  42 0D 0A 09 64 63 72 09 63 09 09 3B 5B 68 68 5D    B...dcr.c..;[hh]
012420:  20 64 65 63 72 65 6D 65 6E 74 20 74 68 65 20 63     decrement the c
012430:  6F 75 6E 74 65 72 0D 0A 09 6A 6E 7A 09 73 69 6F    ounter...jnz.sio
012440:  6C 75 70 09 09 3B 5B 68 68 5D 20 6C 6F 6F 70 20    lup..;[hh] loop 
012450:  62 61 63 6B 20 66 6F 72 20 6D 6F 72 65 20 63 6F    back for more co
012460:  6D 6D 61 6E 64 73 0D 0A 09 6D 76 69 09 61 2C 30    mmands...mvi.a,0
012470:  35 48 09 09 3B 5B 68 68 5D 20 76 61 6C 75 65 20    5H..;[hh] value 
012480:  66 6F 72 20 33 30 30 20 62 61 75 64 0D 0A 09 73    for 300 baud...s
012490:  74 61 09 62 61 75 64 72 74 09 09 3B 5B 68 68 5D    ta.baudrt..;[hh]
0124A0:  20 73 74 61 72 74 69 6E 67 20 64 65 66 61 75 6C     starting defaul
0124B0:  74 20 66 6F 72 20 70 6F 72 74 20 41 0D 0A 09 73    t for port A...s
0124C0:  74 61 09 62 61 75 64 72 74 2B 34 09 3B 5B 68 68    ta.baudrt+4.;[hh
0124D0:  5D 20 61 6E 64 20 66 6F 72 20 70 6F 72 74 20 42    ] and for port B
0124E0:  0D 0A 09 73 74 61 09 73 70 65 65 64 09 09 3B 5B    ...sta.speed..;[
0124F0:  68 68 5D 20 74 65 6C 6C 20 70 72 6F 67 72 61 6D    hh] tell program
012500:  20 61 6E 64 20 74 68 65 20 68 69 67 68 20 62 79     and the high by
012510:  74 65 0D 0A 09 73 74 61 09 73 70 65 65 64 2B 31    te...sta.speed+1
012520:  0D 0A 0D 0A 3B 09 4E 6F 77 20 73 65 74 20 75 70    ....;.Now set up
012530:  20 74 68 65 20 70 6F 72 74 20 66 6F 72 20 4B 65     the port for Ke
012540:  72 6D 69 74 0D 0A 09 6D 76 69 09 61 2C 61 63 65    rmit...mvi.a,ace
012550:  38 62 77 09 3B 20 38 20 64 61 74 61 20 62 69 74    8bw.; 8 data bit
012560:  73 2C 20 31 20 73 74 6F 70 20 62 69 74 2C 20 6E    s, 1 stop bit, n
012570:  6F 20 70 61 72 69 74 79 0D 0A 09 6F 75 74 09 6D    o parity...out.m
012580:  6E 70 6F 72 74 2B 61 63 65 6C 63 72 0D 0A 09 69    nport+acelcr...i
012590:  6E 09 6D 6E 70 6F 72 74 2B 61 63 65 6D 63 72 0D    n.mnport+acemcr.
0125A0:  0A 09 6F 72 69 09 61 63 65 64 74 72 09 09 3B 20    ..ori.acedtr..; 
0125B0:  72 61 69 73 65 20 44 54 52 20 28 6A 75 73 74 20    raise DTR (just 
0125C0:  69 6E 20 63 61 73 65 29 0D 0A 09 6F 75 74 09 6D    in case)...out.m
0125D0:  6E 70 6F 72 74 2B 61 63 65 6D 63 72 0D 0A 09 63    nport+acemcr...c
0125E0:  61 6C 6C 09 6D 64 6D 6F 6E 6C 09 09 3B 20 61 6E    all.mdmonl..; an
0125F0:  64 20 70 75 74 20 74 68 65 20 41 43 45 20 62 61    d put the ACE ba
012600:  63 6B 20 6F 6E 20 6C 69 6E 65 0D 0A 09 72 65 74    ck on line...ret
012610:  0D 0A 0D 0A 3B 09 54 61 6B 65 20 74 68 65 20 41    ....;.Take the A
012620:  43 45 20 6F 66 66 20 6C 69 6E 65 20 62 65 66 6F    CE off line befo
012630:  72 65 20 6D 6F 64 69 66 79 69 6E 67 20 69 74 73    re modifying its
012640:  20 73 74 61 74 65 0D 0A 6D 64 6D 6F 66 6C 3A 0D     state..mdmofl:.
012650:  0A 09 69 6E 09 6D 6E 70 6F 72 74 2B 61 63 65 69    ..in.mnport+acei
012660:  65 72 09 3B 20 73 61 76 65 20 74 68 65 20 41 43    er.; save the AC
012670:  45 27 73 20 69 6E 74 65 72 72 75 70 74 20 73 74    E's interrupt st
012680:  61 74 65 0D 0A 09 73 74 61 09 69 65 72 73 61 76    ate...sta.iersav
012690:  0D 0A 09 78 72 61 09 61 0D 0A 09 6F 75 74 09 6D    ...xra.a...out.m
0126A0:  6E 70 6F 72 74 2B 61 63 65 69 65 72 09 3B 20 61    nport+aceier.; a
0126B0:  6E 64 20 64 69 73 61 62 6C 65 20 41 43 45 20 69    nd disable ACE i
0126C0:  6E 74 65 72 72 75 70 74 73 0D 0A 09 69 6E 09 6D    nterrupts...in.m
0126D0:  6E 70 6F 72 74 2B 61 63 65 6D 63 72 09 3B 20 6E    nport+acemcr.; n
0126E0:  6F 77 20 70 75 74 20 74 68 65 20 41 43 45 20 69    ow put the ACE i
0126F0:  6E 20 6C 6F 6F 70 62 61 63 6B 20 6D 6F 64 65 0D    n loopback mode.
012700:  20 74 68 65 79 27 72 65 20 73 65 74 0D 0A 09 6D     they're set...m
012710:  76 69 09 61 2C 30 45 34 48 09 09 3B 5B 68 68 5D    vi.a,0E4H..;[hh]
012720:  20 76 61 6C 75 65 20 66 6F 72 20 70 6F 72 74 20     value for port 
012730:  41 0D 0A 09 73 74 61 09 70 6F 72 74 09 09 3B 5B    A...sta.port..;[
012740:  68 68 5D 20 74 65 6C 6C 20 70 72 6F 67 72 61 6D    hh] tell program
012750:  20 77 65 27 76 65 20 73 65 74 20 74 68 69 73 2C     we've set this,
012760:  20 74 6F 6F 0D 0A 09 6D 76 69 09 61 2C 30 44 30     too...mvi.a,0D0
012770:  48 09 09 3B 5B 68 68 5D 20 70 6F 72 74 20 41 20    H..;[hh] port A 
012780:  62 61 75 64 20 72 61 74 65 20 76 61 6C 75 65 0D    baud rate value.
012790:  0A 09 73 74 61 09 70 6F 72 74 2B 31 09 09 3B 5B    ..sta.port+1..;[
0127A0:  68 68 5D 20 73 61 76 65 20 74 68 69 73 20 61 73    hh] save this as
0127B0:  20 77 65 6C 6C 2C 20 66 6F 72 20 63 6F 6E 73 69     well, for consi
0127C0:  73 74 61 6E 63 79 0D 0A 45 4E 44 49 46 09 3B 6C    stancy..ENDIF.;l
0127D0:  6F 62 6F 0D 0A 0D 0A 49 46 20 6D 69 6B 6B 6F 0D    obo....IF mikko.
0127E0:  0A 09 6C 78 69 09 64 2C 6D 69 6E 74 62 6C 09 3B    ..lxi.d,mintbl.;
0127F0:  41 64 64 72 65 73 73 20 6F 66 20 4B 45 52 4D 49    Address of KERMI
012800:  54 20 52 65 67 20 76 61 6C 75 65 73 20 28 77 68    T Reg values (wh
012810:  61 74 29 0D 0A 09 6D 76 69 09 63 2C 6D 69 6E 6C    at)...mvi.c,minl
012820:  65 6E 09 3B 4C 65 6E 67 74 68 20 6F 66 20 74 61    en.;Length of ta
012830:  62 6C 65 20 28 68 6F 77 20 6D 61 6E 79 29 0D 0A    ble (how many)..
012840:  09 6C 78 69 09 68 2C 73 69 6F 61 63 09 09 3B 53    .lxi.h,sioac..;S
012850:  65 6E 64 20 64 61 74 61 20 74 6F 20 63 68 2E 20    end data to ch. 
012860:  41 20 53 49 4F 20 72 65 67 69 73 74 65 72 73 20    A SIO registers 
012870:  28 74 6F 20 77 68 65 72 65 29 0D 0A 09 63 61 6C    (to where)...cal
012880:  6C 09 6D 6F 76 6D 69 6B 0D 0A 09 6D 76 69 09 61    l.movmik...mvi.a
012890:  2C 30 46 46 48 09 09 3B 53 65 74 20 63 68 2E 20    ,0FFH..;Set ch. 
0128A0:  41 20 6D 61 73 6B 20 74 6F 20 75 73 65 20 61 6C    A mask to use al
0128B0:  6C 20 62 69 74 73 0D 0A 09 73 74 61 09 63 68 6D    l bits...sta.chm
0128C0:  61 73 6B 0D 0A 45 4E 44 49 46 3B 6D 69 6B 6B 6F    ask..ENDIF;mikko
0128D0:  0D 0A 0D 0A 49 46 20 62 72 61 69 6E 0D 0A 09 6C    ....IF brain...l
0128E0:  64 61 09 62 61 75 64 72 74 09 09 3B 20 66 65 74    da.baudrt..; fet
0128F0:  63 68 20 63 75 72 72 65 6E 74 20 62 61 75 64 20    ch current baud 
012900:  0A 09 6F 72 69 09 61 63 65 6C 6F 6F 0D 0A 09 6F    ..ori.aceloo...o
012910:  75 74 09 6D 6E 70 6F 72 74 2B 61 63 65 6D 63 72    ut.mnport+acemcr
012920:  0D 0A 09 72 65 74 0D 0A 0D 0A 3B 09 50 75 74 20    ...ret....;.Put 
012930:  74 68 65 20 41 43 45 20 62 61 63 6B 20 6F 6E 20    the ACE back on 
012940:  6C 69 6E 65 0D 0A 6D 64 6D 6F 6E 6C 3A 0D 0A 09    line..mdmonl:...
012950:  69 6E 09 6D 6E 70 6F 72 74 09 09 3B 20 66 6C 75    in.mnport..; flu
012960:  73 68 20 6C 65 66 74 2D 6F 76 65 72 20 67 61 72    sh left-over gar
012970:  62 61 67 65 20 69 6E 20 74 68 65 20 72 65 63 65    bage in the rece
012980:  69 76 65 20 62 75 66 66 65 72 0D 0A 09 6D 76 69    ive buffer...mvi
012990:  09 61 2C 37 09 09 3B 20 77 61 69 74 20 61 62 6F    .a,7..; wait abo
0129A0:  75 74 20 32 20 33 30 30 2D 62 61 75 64 20 63 68    ut 2 300-baud ch
0129B0:  61 72 61 63 74 65 72 20 74 69 6D 65 73 0D 0A 09    aracter times...
0129C0:  63 61 6C 6C 09 64 65 6C 61 79 0D 0A 09 69 6E 09    call.delay...in.
0129D0:  6D 6E 70 6F 72 74 09 09 3B 20 61 6E 64 20 66 6C    mnport..; and fl
0129E0:  75 73 68 20 6D 6F 72 65 20 67 61 72 62 61 67 65    ush more garbage
0129F0:  0D 0A 09 69 6E 09 6D 6E 70 6F 72 74 2B 61 63 65    ...in.mnport+ace
012A00:  6D 63 72 09 3B 20 74 61 6B 65 20 74 68 65 20 41    mcr.; take the A
012A10:  43 45 20 6F 75 74 20 6F 66 20 6C 6F 6F 70 62 61    CE out of loopba
012A20:  63 6B 20 6D 6F 64 65 0D 0A 09 61 6E 69 09 30 46    ck mode...ani.0F
012A30:  46 48 2D 61 63 65 6C 6F 6F 0D 0A 09 6F 75 74 09    FH-aceloo...out.
012A40:  6D 6E 70 6F 72 74 2B 61 63 65 6D 63 72 0D 0A 09    mnport+acemcr...
012A50:  6C 64 61 09 69 65 72 73 61 76 0D 0A 09 6F 75 74    lda.iersav...out
012A60:  09 6D 6E 70 6F 72 74 2B 61 63 65 69 65 72 09 3B    .mnport+aceier.;
012A70:  20 61 6E 64 20 72 65 73 74 6F 72 65 20 74 68 65     and restore the
012A80:  20 41 43 45 27 73 20 69 6E 74 65 72 72 75 70 74     ACE's interrupt
012A90:  20 73 74 61 74 65 0D 0A 09 72 65 74 0D 0A 0D 0A     state...ret....
012AA0:  69 65 72 73 61 76 3A 09 64 73 09 31 0D 0A 45 4E    iersav:.ds.1..EN
012AB0:  44 49 46 3B 68 65 61 74 68 0D 0A 0D 0A 09 72 65    DIF;heath.....re
012AC0:  74 09 09 09 3B 20 72 65 74 75 72 6E 20 66 72 6F    t...; return fro
012AD0:  6D 20 73 79 73 74 65 6D 2D 64 65 70 65 6E 64 65    m system-depende
012AE0:  6E 74 20 72 6F 75 74 69 6E 65 0D 0A 0D 0A 62 64    nt routine....bd
012AF0:  6F 73 76 72 3A 09 64 73 09 31 09 09 3B 20 73 70    osvr:.ds.1..; sp
012B00:  72 61 74 65 0D 0A 09 61 6E 69 09 30 46 30 48 09    rate...ani.0F0H.
012B10:  09 3B 20 65 78 74 72 61 63 74 20 6C 65 66 74 20    .; extract left 
012B20:  6E 69 62 62 6C 65 0D 0A 09 72 72 63 09 09 09 3B    nibble...rrc...;
012B30:  20 73 68 69 66 74 20 72 69 67 68 74 20 34 20 70     shift right 4 p
012B40:  6C 61 63 65 73 0D 0A 09 72 72 63 0D 0A 09 72 72    laces...rrc...rr
012B50:  63 0D 0A 09 72 72 63 0D 0A 09 73 74 61 09 73 70    c...rrc...sta.sp
012B60:  65 65 64 09 09 3B 20 73 74 6F 72 65 20 61 73 20    eed..; store as 
012B70:  63 6F 6D 6D 20 70 6F 72 74 20 73 70 65 65 64 0D    comm port speed.
012B80:  0A 09 73 74 61 09 73 70 65 65 64 2B 31 09 09 3B    ..sta.speed+1..;
012B90:  20 20 28 31 36 20 62 69 74 73 2C 20 74 6F 20 6D      (16 bits, to m
012BA0:  61 74 63 68 20 73 70 65 65 64 20 74 61 62 6C 65    atch speed table
012BB0:  20 65 6E 74 72 69 65 73 29 0D 0A 45 4E 44 49 46     entries)..ENDIF
012BC0:  3B 62 72 61 69 6E 0D 0A 0D 0A 49 46 20 6D 64 49    ;brain....IF mdI
012BD0:  0D 0A 09 6C 78 69 09 68 2C 39 36 09 09 3B 44 65    ...lxi.h,96..;De
012BE0:  66 61 75 6C 74 20 31 32 30 30 20 62 61 75 64 20    fault 1200 baud 
012BF0:  6D 6F 64 65 6D 20 70 6F 72 74 20 73 70 65 65 64    modem port speed
012C00:  0D 0A 09 73 68 6C 64 09 73 70 65 65 64 09 09 3B    ...shld.speed..;
012C10:  53 74 6F 72 65 20 61 73 20 6D 6F 64 65 6D 20 70    Store as modem p
012C20:  6F 72 74 20 73 70 65 65 64 0D 0A 09 63 61 6C 6C    ort speed...call
012C30:  09 73 79 73 73 70 64 09 09 3B 49 6E 69 74 69 61    .sysspd..;Initia
012C40:  6C 69 7A 65 20 74 68 65 20 70 6F 72 74 0D 0A 45    lize the port..E
012C50:  4E 44 49 46 3B 6D 64 49 20 20 5B 54 6F 61 64 20    NDIF;mdI  [Toad 
012C60:  48 61 6C 6C 5D 0D 0A 0D 0A 49 46 20 61 70 36 35    Hall]....IF ap65
012C70:  35 31 0D 0A 09 6C 64 61 09 6D 6E 70 72 74 63 09    51...lda.mnprtc.
012C80:  09 3B 20 72 65 61 64 20 63 6F 6E 74 72 6F 6C 20    .; read control 
012C90:  70 6F 72 74 0D 0A 09 61 6E 69 09 30 66 48 09 09    port...ani.0fH..
012CA0:  3B 20 65 78 74 72 61 63 74 20 6C 6F 77 20 6F 72    ; extract low or
012CB0:  64 65 72 20 6E 79 62 62 6C 65 0D 0A 09 73 74 61    der nybble...sta
012CC0:  09 73 70 65 65 64 09 09 3B 20 73 74 6F 72 65 20    .speed..; store 
012CD0:  61 73 20 63 6F 6D 6D 20 6C 69 6E 65 20 73 70 65    as comm line spe
012CE0:  65 64 0D 0A 09 73 74 61 09 73 70 65 65 64 2B 31    ed...sta.speed+1
012CF0:  09 09 3B 20 20 28 31 36 20 62 69 74 73 2C 20 74    ..;  (16 bits, t
012D00:  61 63 65 20 74 6F 20 73 61 76 65 20 74 68 65 20    ace to save the 
012D10:  42 44 4F 53 20 76 65 72 73 69 6F 6E 20 6E 75 6D    BDOS version num
012D20:  62 65 72 0D 0A 0D 0A 3B 0C 0D 0A 49 46 20 69 6F    ber....;...IF io
012D30:  62 79 74 0D 0A 3B 09 54 68 69 73 20 6F 6E 65 20    byt..;.This one 
012D40:  69 73 20 68 6F 70 65 66 75 6C 6C 79 20 74 68 65    is hopefully the
012D50:  20 6C 61 73 74 20 22 69 6D 70 72 6F 76 65 6D 65     last "improveme
012D60:  6E 74 22 20 69 6E 20 76 69 65 77 20 6F 66 20 47    nt" in view of G
012D70:  45 4E 45 52 49 43 0D 0A 3B 4B 65 72 6D 69 74 2E    ENERIC..;Kermit.
012D80:  20 49 74 20 75 73 65 73 20 66 6F 72 20 43 68 61     It uses for Cha
012D90:  72 61 63 74 65 72 2D 49 2F 4F 20 74 68 65 20 42    racter-I/O the B
012DA0:  49 4F 53 2D 72 6F 75 74 69 6E 65 73 20 28 20 69    IOS-routines ( i
012DB0:  6E 73 74 65 61 64 20 6F 66 20 74 68 65 0D 0A 3B    nstead of the..;
012DC0:  22 6E 6F 72 6D 61 6C 22 20 42 44 4F 53 20 72 6F    "normal" BDOS ro
012DD0:  75 74 69 6E 65 73 2E 20 57 68 61 74 20 64 6F 65    utines. What doe
012DE0:  73 20 69 74 20 67 69 76 65 20 75 73 20 28 68 6F    s it give us (ho
012DF0:  70 65 66 75 6C 6C 79 29 20 3A 20 4D 6F 72 65 20    pefully) : More 
012E00:  73 70 65 65 64 2C 0D 0A 3B 68 69 67 68 65 72 20    speed,..;higher 
012E10:  63 68 61 6E 63 65 20 6F 66 20 73 75 63 63 65 73    chance of succes
012E20:  73 20 28 20 49 2F 4F 20 62 79 74 65 20 69 6D 70    s ( I/O byte imp
012E30:  6C 65 6D 65 6E 74 65 64 20 69 6E 20 42 49 4F 53    lemented in BIOS
012E40:  20 5B 69 66 20 61 74 20 61 6C 6C 5D 29 2C 0D 0A     [if at all]),..
012E50:  3B 62 75 74 20 6E 6F 20 22 65 78 74 72 61 22 20    ;but no "extra" 
012E60:  64 65 76 69 63 65 20 68 61 6E 64 6C 69 6E 67 20    device handling 
012E70:  2D 20 74 68 61 74 27 73 20 64 6F 6E 65 20 62 79    - that's done by
012E80:  20 42 44 4F 53 2E 0D 0A 3B 0D 0A 3B 09 48 6F 77     BDOS...;..;.How
012E90:  20 64 6F 20 77 65 20 22 67 65 74 22 20 74 68 65     do we "get" the
012EA0:  20 63 61 6C 6C 2D 61 64 72 65 73 73 65 73 3F 20     call-adresses? 
012EB0:  20 4C 6F 63 61 74 69 6F 6E 20 30 20 68 61 73 20     Location 0 has 
012EC0:  61 20 4A 4D 50 20 57 61 72 6D 2D 42 6F 6F 74 0D    a JMP Warm-Boot.
012ED0:  0A 3B 69 6E 20 43 50 2F 4D 20 77 68 69 63 68 20    .;in CP/M which 
012EE0:  70 6F 69 6E 74 73 20 69 6E 74 6F 20 74 68 65 20    points into the 
012EF0:  73 65 63 6F 6E 64 20 6C 6F 63 61 74 69 6F 6E 20    second location 
012F00:  6F 20 6D 61 74 63 68 20 73 70 65 65 64 20 74 61    o match speed ta
012F10:  62 6C 65 20 65 6E 74 72 69 65 73 29 0D 0A 09 6D    ble entries)...m
012F20:  76 69 09 61 2C 6D 6E 6D 69 6E 62 09 3B 6A 62 20    vi.a,mnminb.;jb 
012F30:  69 6E 69 74 69 61 6C 69 7A 61 74 69 6F 6E 20 72    initialization r
012F40:  6F 75 74 69 6E 65 0D 0A 09 73 74 61 09 6D 6E 70    outine...sta.mnp
012F50:  72 74 73 09 09 3B 6A 62 0D 0A 09 73 74 61 09 6D    rts..;jb...sta.m
012F60:  6E 70 72 74 6D 09 09 3B 6A 62 20 69 6E 69 74 69    nprtm..;jb initi
012F70:  61 6C 69 7A 65 20 6D 61 73 74 65 72 20 28 63 6F    alize master (co
012F80:  6D 6D 61 6E 64 29 20 70 6F 72 74 0D 0A 09 6D 76    mmand) port...mv
012F90:  69 09 61 2C 6D 6E 63 69 6E 62 09 3B 6A 62 0D 0A    i.a,mncinb.;jb..
012FA0:  09 73 74 61 09 6D 6E 70 72 74 63 09 09 3B 6A 62    .sta.mnprtc..;jb
012FB0:  20 69 6E 69 74 69 61 6C 69 7A 65 20 63 6F 6E 74     initialize cont
012FC0:  72 6F 6C 20 70 6F 72 74 0D 0A 45 4E 44 49 46 3B    rol port..ENDIF;
012FD0:  61 70 36 35 35 31 0D 0A 0D 0A 49 46 20 6E 6F 72    ap6551....IF nor
012FE0:  74 68 73 0D 0A 09 6D 76 69 09 61 2C 62 61 75 64    ths...mvi.a,baud
012FF0:  69 6E 69 09 3B 47 65 74 20 69 6E 69 74 69 61 6C    ini.;Get initial
013000:  20 73 70 65 65 64 0D 0A 09 6F 75 74 09 62 61 75     speed...out.bau
013010:  64 72 74 0D 0A 09 73 74 61 09 73 70 65 65 64 09    drt...sta.speed.
013020:  09 3B 73 61 76 65 20 66 6F 72 20 73 74 61 74 75    .;save for statu
013030:  73 20 64 69 73 70 6C 61 79 0D 0A 09 73 74 61 09    s display...sta.
013040:  73 70 65 65 64 2B 31 0D 0A 45 4E 44 49 46 3B 6E    speed+1..ENDIF;n
013050:  6F 72 74 68 73 0D 0A 0D 0A 49 46 20 64 65 6C 70    orths....IF delp
013060:  68 69 09 09 09 3B 5B 37 5D 0D 0A 3B 0D 0A 3B 09    hi...;[7]..;..;.
013070:  73 68 6F 76 65 20 74 68 65 20 64 65 66 61 75 6C    shove the defaul
013080:  74 20 62 61 75 64 20 72 61 74 65 20 28 31 32 30    t baud rate (120
013090:  30 29 20 69 6E 20 74 6F 20 74 68 65 20 44 65 6C    0) in to the Del
0130A0:  70 68 69 20 70 6F 72 74 20 61 64 64 72 65 73 73    phi port address
0130B0:  0D 0A 3B 09 66 6F 72 20 74 68 65 20 62 61 75 64    ..;.for the baud
0130C0:  20 72 61 74 65 20 67 65 6E 65 72 61 74 6F 72 20     rate generator 
0130D0:  6F 6E 20 70 6F 72 74 20 32 2C 20 74 68 65 20 64    on port 2, the d
0130E0:  65 66 61 75 6C 74 20 70 6F 72 74 3B 20 73 61 76    efault port; sav
0130F0:  65 20 74 68 69 73 0D 0A 3B 09 76 61 6C 75 65 20    e this..;.value 
013100:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
013110:  10 00 00 00 02 09 4E E5 10 00 C1 02 00 00 00 02    ......N.........
013120:  10 00 C6 02 00 00 00 02 10 00 C2 02 00 00 00 02    ................
013130:  10 00 C7 02 00 00 00 02 10 00 C3 02 00 00 00 02    ................
013140:  10 00 C8 02 00 00 00 02 10 00 C4 02 00 00 00 02    ................
013150:  10 00 C9 02 00 00 00 02 10 00 C5 02 00 00 00 02    ................
013160:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
013170:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
013180:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
013190:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0131A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0131B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0131C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0131D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0131E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0131F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
013200:  6F 66 20 74 68 65 20 42 49 4F 53 20 4A 4D 50 2D    of the BIOS JMP-
013210:  56 65 63 74 6F 72 2E 20 20 54 68 65 0D 0A 3B 6E    Vector.  The..;n
013220:  65 78 74 20 74 68 72 65 65 20 6C 6F 63 61 74 69    ext three locati
013230:  6F 6E 73 20 6F 66 20 74 68 65 20 4A 4D 50 2D 56    ons of the JMP-V
013240:  65 63 74 6F 72 20 70 6F 69 6E 74 20 74 6F 20 74    ector point to t
013250:  68 65 20 43 4F 4E 53 54 41 54 2C 43 4F 4E 49 4E    he CONSTAT,CONIN
013260:  2C 43 4F 4E 4F 55 54 0D 0A 3B 42 49 4F 53 2D 72    ,CONOUT..;BIOS-r
013270:  6F 75 74 69 6E 65 73 2E 20 20 43 4F 4E 4F 55 54    outines.  CONOUT
013280:  20 77 61 6E 74 73 20 74 68 65 20 63 68 61 72 61     wants the chara
013290:  63 74 65 72 20 69 6E 20 43 2E 0D 0A 3B 0D 0A 3B    cter in C...;..;
0132A0:  2D 20 42 65 72 6E 69 65 20 45 69 62 65 6E 0D 0A    - Bernie Eiben..
0132B0:  0D 0A 69 6E 69 61 64 72 3A 09 6C 68 6C 64 09 31    ..iniadr:.lhld.1
0132C0:  09 09 3B 67 65 74 20 42 49 4F 53 20 57 61 72 6D    ..;get BIOS Warm
0132D0:  73 74 61 72 74 2D 61 64 64 72 65 73 73 0D 0A 09    start-address...
0132E0:  6C 78 69 09 64 2C 33 09 09 3B 6E 65 78 74 20 61    lxi.d,3..;next a
0132F0:  64 72 65 73 73 20 69 73 20 43 4F 4E 53 54 41 54    dress is CONSTAT
013300:  20 69 6E 20 42 49 4F 53 0D 0A 09 64 61 64 09 64     in BIOS...dad.d
013310:  0D 0A 09 73 68 6C 64 09 62 63 6F 6E 73 74 2B 31    ...shld.bconst+1
013320:  09 3B 73 74 75 66 66 20 69 74 20 69 6E 74 6F 20    .;stuff it into 
013330:  74 68 65 20 63 61 6C 6C 2D 69 6E 73 74 72 75 63    the call-instruc
013340:  74 69 6F 6E 0D 0A 09 6C 78 69 09 64 2C 33 09 09    tion...lxi.d,3..
013350:  3B 6E 65 78 74 20 61 64 72 65 73 73 20 69 73 20    ;next adress is 
013360:  43 4F 4E 49 4E 20 69 6E 20 42 49 4F 53 0D 0A 09    CONIN in BIOS...
013370:  64 61 64 09 64 0D 0A 09 73 68 6C 64 09 62 63 6F    dad.d...shld.bco
013380:  6E 69 6E 2B 31 09 3B 0D 0A 09 6C 78 69 09 64 2C    nin+1.;...lxi.d,
013390:  33 09 09 3B 6E 65 78 74 20 61 64 72 65 73 73 20    3..;next adress 
0133A0:  69 73 20 43 4F 4E 4F 55 54 20 69 6E 20 42 49 4F    is CONOUT in BIO
0133B0:  53 0D 0A 09 64 61 64 09 64 0D 0A 09 73 68 6C 64    S...dad.d...shld
0133C0:  09 62 63 6E 6F 75 74 2B 31 0D 0A 09 6C 78 69 09    .bcnout+1...lxi.
0133D0:  64 2C 33 09 09 3B 6E 65 78 74 20 61 64 64 72 65    d,3..;next addre
0133E0:  73 73 20 69 73 20 4C 49 53 54 20 69 6E 20 42 49    ss is LIST in BI
0133F0:  4F 53 0D 0A 09 64 61 64 09 64 0D 0A 09 73 68 6C    OS...dad.d...shl
013400:  30 0D 0A 6D 69 6F 6C 65 6E 09 65 71 75 09 24 2D    0..miolen.equ.$-
013410:  6D 69 6F 74 62 6C 09 3B 4D 69 6B 72 6F 4D 69 6B    miotbl.;MikroMik
013420:  6B 6F 20 53 49 4F 20 74 61 62 6C 65 20 6C 65 6E    ko SIO table len
013430:  67 74 68 20 28 6F 72 69 67 69 6E 61 6C 20 76 61    gth (original va
013440:  6C 75 65 73 29 0D 0A 0D 0A 3B 20 63 6F 6D 6D 61    lues)....; comma
013450:  6E 64 20 6C 69 73 74 20 74 6F 20 73 65 74 20 75    nd list to set u
013460:  70 20 53 49 4F 20 63 68 69 70 20 66 6F 72 20 6F    p SIO chip for o
013470:  70 65 72 61 74 69 6F 6E 20 77 69 74 68 20 4B 65    peration with Ke
013480:  72 6D 69 74 0D 0A 6D 69 6E 74 62 6C 3A 09 64 62    rmit..mintbl:.db
013490:  09 33 09 09 3B 72 65 67 2E 20 33 0D 0A 09 64 62    .3..;reg. 3...db
0134A0:  09 73 69 6F 6E 33 0D 0A 09 64 62 09 35 09 09 3B    .sion3...db.5..;
0134B0:  72 65 67 2E 20 35 0D 0A 09 64 62 09 73 69 6F 6E    reg. 5...db.sion
0134C0:  35 0D 0A 09 64 62 09 34 09 09 3B 72 65 67 2E 20    5...db.4..;reg. 
0134D0:  34 0D 0A 09 64 62 09 73 69 6F 6E 34 0D 0A 09 64    4...db.sion4...d
0134E0:  62 09 30 09 09 3B 72 65 73 65 6C 65 63 74 20 72    b.0..;reselect r
0134F0:  65 67 2E 20 30 0D 0A 6D 69 6E 6C 65 6E 09 65 71    eg. 0..minlen.eq
013500:  75 09 24 2D 6D 69 6E 74 62 6C 09 3B 4D 69 6B 72    u.$-mintbl.;Mikr
013510:  6F 4D 69 6B 6B 6F 20 53 49 4F 20 74 61 62 6C 65    oMikko SIO table
013520:  20 6C 65 6E 67 74 68 20 28 4B 45 52 4D 49 54 20     length (KERMIT 
013530:  76 61 6C 75 65 73 29 0D 0A 45 4E 44 49 46 3B 6D    values)..ENDIF;m
013540:  69 6B 6B 6F 0D 0A 3B 0C 0D 0A 3B 0D 0A 3B 09 73    ikko..;...;..;.s
013550:  79 73 74 65 6D 2D 64 65 70 65 6E 64 65 6E 74 20    ystem-dependent 
013560:  74 65 72 6D 69 6E 61 74 69 6F 6E 20 70 72 6F 63    termination proc
013570:  65 73 73 69 6E 67 0D 0A 3B 09 49 66 20 77 65 27    essing..;.If we'
013580:  76 65 20 63 68 61 6E 67 65 64 20 61 6E 79 74 68    ve changed anyth
013590:  69 6E 67 2C 20 74 68 69 73 20 69 73 20 6F 75 72    ing, this is our
0135A0:  20 6C 61 73 74 20 63 68 61 6E 63 65 20 74 6F 20     last chance to 
0135B0:  70 75 74 20 69 74 20 62 61 63 6B 2E 0D 0A 73 79    put it back...sy
0135C0:  73 65 78 69 74 3A 0D 0A 49 46 20 6D 69 6B 6B 6F    sexit:..IF mikko
0135D0:  0D 0A 09 6C 78 69 09 64 2C 6D 69 6F 74 62 6C 09    ...lxi.d,miotbl.
0135E0:  3B 4C 6F 61 64 20 74 68 65 20 61 64 72 65 73 73    ;Load the adress
0135F0:  20 6F 66 20 6F 72 69 67 69 6E 61 6C 20 72 65 67     of original reg
013600:  64 09 62 6C 73 6F 75 74 2B 31 0D 0A 09 72 65 74    d.blsout+1...ret
013610:  09 09 09 3B 41 6E 64 20 72 65 74 75 72 6E 0D 0A    ...;And return..
013620:  0D 0A 62 63 6F 6E 73 74 3A 09 6A 6D 70 09 24 2D    ..bconst:.jmp.$-
013630:  24 09 09 3B 43 61 6C 6C 20 42 49 4F 53 20 64 69    $..;Call BIOS di
013640:  72 65 63 74 6C 79 20 28 66 69 6C 6C 65 64 20 69    rectly (filled i
013650:  6E 20 62 79 20 69 6E 69 61 64 72 29 0D 0A 0D 0A    n by iniadr)....
013660:  62 63 6F 6E 69 6E 3A 09 6A 6D 70 09 24 2D 24 09    bconin:.jmp.$-$.
013670:  09 3B 43 61 6C 6C 20 42 49 4F 53 20 64 69 72 65    .;Call BIOS dire
013680:  63 74 6C 79 20 28 66 69 6C 6C 65 64 20 69 6E 20    ctly (filled in 
013690:  62 79 20 69 6E 69 61 64 72 29 0D 0A 0D 0A 62 63    by iniadr)....bc
0136A0:  6E 6F 75 74 3A 09 6A 6D 70 09 24 2D 24 09 09 3B    nout:.jmp.$-$..;
0136B0:  43 61 6C 6C 20 42 49 4F 53 20 64 69 72 65 63 74    Call BIOS direct
0136C0:  6C 79 20 28 66 69 6C 6C 65 64 20 69 6E 20 62 79    ly (filled in by
0136D0:  20 69 6E 69 61 64 72 29 0D 0A 0D 0A 62 6C 73 6F     iniadr)....blso
0136E0:  75 74 3A 09 6A 6D 70 09 24 2D 24 09 09 3B 20 2E    ut:.jmp.$-$..; .
0136F0:  2E 2E 2E 0D 0A 45 4E 44 49 46 3B 69 6F 62 79 74    .....ENDIF;iobyt
013700:  0D 0A 0D 0A 49 46 20 6D 69 6B 6B 6F 09 09 09 3B    ....IF mikko...;
013710:  63 75 72 72 65 6E 74 6C 79 20 66 6F 72 20 4D 49    currently for MI
013720:  4B 52 4F 4D 49 4B 4B 4F 20 6F 6E 6C 79 0D 0A 3B    KROMIKKO only..;
013730:  20 63 6F 70 79 20 63 6F 6D 6D 61 6E 64 20 62 6C     copy command bl
013740:  6F 63 6B 20 69 6E 74 6F 20 6D 65 6D 6F 72 79 2D    ock into memory-
013750:  6D 61 70 70 65 64 20 53 49 4F 2E 0D 0A 6D 6F 76    mapped SIO...mov
013760:  6D 69 6B 3A 09 64 69 09 09 09 3B 64 69 73 61 62    mik:.di...;disab
013770:  6C 65 20 69 6E 74 65 72 72 75 70 74 73 0D 0A 6D    le interrupts..m
013780:  6F 76 6D 6B 31 3A 09 6C 64 61 78 09 64 09 09 3B    ovmk1:.ldax.d..;
013790:  47 65 74 20 61 20 72 65 67 69 73 74 65 72 20 76    Get a register v
0137A0:  61 6C 75 65 0D 0A 09 6D 6F 76 09 6D 2C 61 09 09    alue...mov.m,a..
0137B0:  3B 4F 75 74 70 75 74 20 69 74 0D 0A 09 69 6E 78    ;Output it...inx
0137C0:  09 64 09 09 3B 4E 65 78 74 20 76 61 6C 75 65 0D    .d..;Next value.
0137D0:  0A 09 64 63 72 09 63 09 09 3B 44 65 63 72 65 6D    ..dcr.c..;Decrem
0137E0:  65 6E 74 20 63 6F 75 6E 74 65 72 0D 0A 09 6A 6E    ent counter...jn
0137F0:  7A 09 6D 6F 76 6D 6B 31 09 09 3B 52 65 70 65 61    z.movmk1..;Repea
013800:  20 76 61 6C 75 65 73 0D 0A 09 6D 76 69 09 63 2C     values...mvi.c,
013810:  6D 69 6F 6C 65 6E 09 3B 4C 65 6E 67 74 68 20 6F    miolen.;Length o
013820:  66 20 74 61 62 6C 65 0D 0A 09 6C 78 69 09 68 2C    f table...lxi.h,
013830:  73 69 6F 61 63 09 09 3B 53 65 6E 64 20 64 61 74    sioac..;Send dat
013840:  61 20 74 6F 20 63 68 20 41 20 53 49 4F 20 72 65    a to ch A SIO re
013850:  67 69 73 74 65 72 73 0D 0A 09 63 61 6C 6C 09 6D    gisters...call.m
013860:  6F 76 6D 69 6B 0D 0A 09 6D 76 69 09 61 2C 30 37    ovmik...mvi.a,07
013870:  46 48 09 09 3B 53 65 74 20 63 68 20 41 20 6D 61    FH..;Set ch A ma
013880:  73 6B 20 74 6F 20 75 73 65 20 6A 75 73 74 20 37    sk to use just 7
013890:  20 62 69 74 73 0D 0A 09 73 74 61 09 63 68 6D 61     bits...sta.chma
0138A0:  73 6B 0D 0A 45 4E 44 49 46 3B 6D 69 6B 6B 6F 0D    sk..ENDIF;mikko.
0138B0:  0A 0D 0A 49 46 20 63 70 74 38 35 78 78 0D 0A 09    ...IF cpt85xx...
0138C0:  6D 76 69 09 61 2C 38 30 68 09 09 3B 20 52 65 73    mvi.a,80h..; Res
0138D0:  65 74 20 28 66 6F 72 63 65 20 69 64 6C 65 29 20    et (force idle) 
0138E0:  74 68 65 20 38 32 35 31 20 55 41 52 54 20 76 69    the 8251 UART vi
0138F0:  61 20 62 69 74 20 37 0D 0A 09 6F 75 74 09 62 61    a bit 7...out.ba
013900:  75 64 72 74 09 09 3B 20 20 20 20 6F 66 20 74 68    udrt..;    of th
013910:  65 20 62 61 75 64 20 72 61 74 65 20 67 65 6E 65    e baud rate gene
013920:  72 61 74 65 72 20 70 6F 72 74 0D 0A 09 6D 76 69    rater port...mvi
013930:  09 61 2C 30 30 68 09 09 3B 20 61 6E 64 20 74 75    .a,00h..; and tu
013940:  72 6E 20 6F 66 66 20 74 68 65 20 62 61 75 64 20    rn off the baud 
013950:  72 61 74 65 20 67 65 6E 65 72 61 74 65 72 0D 0A    rate generater..
013960:  09 6F 75 74 09 62 61 75 64 72 74 0D 0A 45 4E 44    .out.baudrt..END
013970:  49 46 3B 63 70 74 38 35 78 78 0D 0A 09 72 65 74    IF;cpt85xx...ret
013980:  0D 0A 0D 0A 3B 0D 0A 3B 09 73 79 73 74 65 6D 2D    ....;..;.system-
013990:  64 65 70 65 6E 64 65 6E 74 20 70 72 6F 63 65 73    dependent proces
0139A0:  73 69 6E 67 20 66 6F 72 20 73 74 61 72 74 20 6F    sing for start o
0139B0:  66 20 43 4F 4E 4E 45 43 54 20 63 6F 6D 6D 61 6E    f CONNECT comman
0139C0:  64 0D 0A 3B 0D 0A 73 79 73 63 6F 6E 3A 0D 0A 49    d..;..syscon:..I
0139D0:  46 20 61 70 6D 6D 64 6D 0D 0A 09 63 61 6C 6C 09    F apmmdm...call.
0139E0:  63 6B 64 69 61 6C 09 09 3B 53 65 65 20 69 66 20    ckdial..;See if 
0139F0:  64 69 61 6C 69 6E 67 20 69 73 20 72 65 71 75 69    dialing is requi
013A00:  74 20 75 6E 74 69 6C 20 64 6F 6E 65 0D 0A 09 65    t until done...e
013A10:  69 0D 0A 09 72 65 74 0D 0A 45 4E 44 49 46 3B 6D    i...ret..ENDIF;m
013A20:  69 6B 6B 6F 0D 0A 3B 0C 0D 0A 49 46 20 6F 73 62    ikko..;...IF osb
013A30:  72 6E 31 0D 0A 6F 73 6D 6F 76 65 3A 0D 0A 6F 73    rn1..osmove:..os
013A40:  66 6C 61 67 09 65 71 75 09 30 45 46 30 38 48 09    flag.equ.0EF08H.
013A50:  09 3B 4F 73 62 6F 72 6E 65 20 31 20 42 61 6E 6B    .;Osborne 1 Bank
013A60:  2D 32 20 66 6C 61 67 0D 0A 3B 0D 0A 3B 20 72 65    -2 flag..;..; re
013A70:  74 75 72 6E 20 6D 6F 64 65 6D 20 73 74 61 74 75    turn modem statu
013A80:  8E 16 05 00 02 14 C3 11 87 99 87 A5 87 AB 87 B1    ................
013A90:  87 EB 22 43 8A EB 7B 32 D6 94 21 00 00 22 45 8A    .."C..{2..!.."E.
013AA0:  39 22 0F 8A 31 41 8A AF 32 E0 94 32 DE 94 21 74    9"..1A..2..2..!t
013AB0:  94 E5 79 FE 29 D0 4B 21 47 87 5F 16 00 19 19 5E    ..y.).K!G._....^
013AC0:  23 56 2A 43 8A EB E9 03 95 C8 89 90 88 CE 89 12    #V*C............
013AD0:  95 0F 95 D4 89 ED 89 F3 89 F8 89 E1 88 FE 89 7E    ...............~
013AE0:  93 83 93 45 93 9C 93 A5 93 AB 93 C8 93 D7 93 E0    ...E............
013AF0:  93 E6 93 EC 93 F5 93 FE 93 04 94 0A 94 11 94 2C    ...............,
013B00:  73 20 69 6E 20 41 0D 0A 3B 0D 0A 4F 53 4C 44 53    s in A..;..OSLDS
013B10:  54 09 45 51 55 09 6F 73 74 6F 70 2D 6F 73 6D 6F    T.EQU.ostop-osmo
013B20:  76 65 2B 24 0D 0A 09 44 49 0D 0A 09 4F 55 54 09    ve+$...DI...OUT.
013B30:  30 0D 0A 09 4C 44 41 09 6F 73 70 72 74 73 09 09    0...LDA.osprts..
013B40:  3B 52 65 61 64 20 74 68 65 20 73 74 61 74 75 73    ;Read the status
013B50:  20 70 6F 72 74 0D 0A 09 4F 55 54 09 31 0D 0A 09     port...OUT.1...
013B60:  45 49 0D 0A 09 72 65 74 0D 0A 3B 0D 0A 3B 20 73    EI...ret..;..; s
013B70:  65 74 20 6D 6F 64 65 6D 20 73 74 61 74 75 73 20    et modem status 
013B80:  66 72 6F 6D 20 41 0D 0A 3B 0D 0A 4F 53 53 54 53    from A..;..OSSTS
013B90:  54 09 65 71 75 09 6F 73 74 6F 70 2D 6F 73 6D 6F    T.equ.ostop-osmo
013BA0:  76 65 2B 24 0D 0A 09 44 49 0D 0A 09 4F 55 54 09    ve+$...DI...OUT.
013BB0:  30 0D 0A 09 53 54 41 09 6F 73 70 72 74 73 09 3B    0...STA.osprts.;
013BC0:  57 72 69 74 65 20 74 68 65 20 63 6F 6E 74 72 6F    Write the contro
013BD0:  6C 20 70 6F 72 74 0D 0A 09 6A 6D 70 09 6F 73 73    l port...jmp.oss
013BE0:  74 65 78 0D 0A 3B 0D 0A 3B 20 72 65 61 64 20 63    tex..;..; read c
013BF0:  68 61 72 61 63 74 65 72 20 66 72 6F 6D 20 6D 6F    haracter from mo
013C00:  72 65 64 2E 0D 0A 09 20 6A 6D 70 09 6B 65 72 6D    red.... jmp.kerm
013C10:  69 74 09 09 3B 47 6F 20 74 6F 20 63 6F 6D 6D 61    it..;Go to comma
013C20:  6E 64 20 6C 6F 6F 70 20 69 66 20 61 62 6F 72 74    nd loop if abort
013C30:  65 64 2E 0D 0A 45 4E 44 49 46 3B 61 70 6D 6D 64    ed...ENDIF;apmmd
013C40:  6D 0D 0A 0D 0A 49 46 20 72 6F 62 69 6E 20 4F 52    m....IF robin OR
013C50:  20 74 72 73 38 30 20 4F 52 20 63 70 74 38 35 78     trs80 OR cpt85x
013C60:  78 09 3B 46 6F 72 20 52 6F 62 69 6E 2F 54 52 53    x.;For Robin/TRS
013C70:  38 30 2F 43 50 54 2D 38 35 78 78 2C 20 61 64 64    80/CPT-85xx, add
013C80:  20 73 6F 6D 65 20 6D 6F 72 65 20 69 6E 66 6F 0D     some more info.
013C90:  0A 09 6C 78 69 09 64 2C 63 6F 6E 6D 73 67 09 3B    ..lxi.d,conmsg.;
013CA0:  20 61 62 6F 75 74 20 6F 62 73 63 75 72 65 20 6B     about obscure k
013CB0:  65 79 20 63 6F 6D 62 69 6E 61 74 69 6F 6E 73 0D    ey combinations.
013CC0:  0A 09 63 61 6C 6C 09 70 72 74 73 74 72 0D 0A 45    ..call.prtstr..E
013CD0:  4E 44 49 46 3B 72 6F 62 69 6E 20 4F 52 20 74 72    NDIF;robin OR tr
013CE0:  73 38 30 20 4F 52 20 63 70 74 38 35 78 78 0D 0A    s80 OR cpt85xx..
013CF0:  0D 0A 49 46 20 6F 73 62 72 6E 31 09 09 09 3B 2A    ..IF osbrn1...;*
013D00:  2A 2A 20 54 68 69 73 20 69 73 20 53 6F 66 74 77    ** This is Softw
013D10:  61 72 65 20 64 65 70 65 6E 64 65 6E 74 20 2A 2A    are dependent **
013D20:  2A 0D 0A 09 6C 68 6C 64 09 31 09 09 3B 4D 6F 64    *...lhld.1..;Mod
013D30:  69 66 79 20 62 61 63 6B 2D 61 72 72 6F 77 20 63    ify back-arrow c
013D40:  6F 64 65 20 74 6F 20 44 45 4C 45 54 45 0D 0A 09    ode to DELETE...
013D50:  6D 76 69 09 6C 2C 30 09 09 3B 47 65 74 20 42 49    mvi.l,0..;Get BI
013D60:  4F 53 2D 73 74 61 72 74 20 61 64 64 72 65 73 73    OS-start address
013D70:  0D 0A 09 6C 78 69 09 64 2C 38 35 48 09 09 3B 41    ...lxi.d,85H..;A
013D80:  64 72 65 73 73 20 66 6F 72 20 6B 65 79 2D 63 6F    dress for key-co
013D90:  64 65 20 3D 20 58 58 38 35 48 0D 0A 09 64 61 64    de = XX85H...dad
013DA0:  09 64 0D 0A 09 6D 6F 76 09 65 2C 6D 09 09 3B 47    .d...mov.e,m..;G
013DB0:  65 74 20 69 74 20 69 6E 20 44 45 0D 0A 09 69 6E    et it in DE...in
013DC0:  78 09 68 0D 0A 09 6D 6F 76 09 64 2C 6D 0D 0A 09    x.h...mov.d,m...
013DD0:  78 63 68 67 09 09 09 3B 4D 65 6D 6F 72 79 20 70    xchg...;Memory p
013DE0:  6F 69 6E 74 65 72 20 74 6F 20 48 4C 0D 0A 09 6D    ointer to HL...m
013DF0:  76 69 09 6D 2C 64 65 6C 09 09 3B 6D 6F 64 69 66    vi.m,del..;modif
013E00:  64 65 6D 20 69 6E 74 6F 20 41 0D 0A 3B 0D 0A 4F    dem into A..;..O
013E10:  53 4C 44 44 41 09 65 71 75 09 6F 73 74 6F 70 2D    SLDDA.equ.ostop-
013E20:  6F 73 6D 6F 76 65 2B 24 0D 0A 09 44 49 0D 0A 09    osmove+$...DI...
013E30:  4F 55 54 09 30 0D 0A 09 4C 44 41 09 6F 73 70 6F    OUT.0...LDA.ospo
013E40:  72 74 0D 0A 09 4F 55 54 09 31 0D 0A 09 45 49 0D    rt...OUT.1...EI.
013E50:  0A 09 72 65 74 0D 0A 3B 0D 0A 3B 09 6F 75 74 70    ..ret..;..;.outp
013E60:  75 74 20 63 68 61 72 61 63 74 65 72 20 69 6E 20    ut character in 
013E70:  41 20 74 6F 20 6D 6F 64 65 6D 0D 0A 3B 0D 0A 4F    A to modem..;..O
013E80:  53 53 54 44 41 09 65 71 75 09 6F 73 74 6F 70 2D    SSTDA.equ.ostop-
013E90:  6F 73 6D 6F 76 65 2B 24 0D 0A 09 44 49 0D 0A 09    osmove+$...DI...
013EA0:  4F 55 54 09 30 0D 0A 09 53 54 41 09 6F 73 70 6F    OUT.0...STA.ospo
013EB0:  72 74 0D 0A 6F 73 73 74 65 78 09 65 71 75 09 6F    rt..osstex.equ.o
013EC0:  73 74 6F 70 2D 6F 73 6D 6F 76 65 2B 24 0D 0A 09    stop-osmove+$...
013ED0:  4F 55 54 09 31 0D 0A 09 6D 76 69 09 61 2C 31 0D    OUT.1...mvi.a,1.
013EE0:  0A 09 73 74 61 09 6F 73 66 6C 61 67 0D 0A 09 45    ..sta.osflag...E
013EF0:  49 0D 0A 09 72 65 74 0D 0A 6F 73 6D 63 74 09 65    I...ret..osmct.e
013F00:  71 75 09 24 2D 6F 73 6D 6F 76 65 0D 0A 45 4E 44    qu.$-osmove..END
013F10:  49 46 3B 6F 73 62 72 6E 31 0D 0A 0D 0A 49 46 20    IF;osbrn1....IF 
013F20:  62 62 49 20 4F 52 20 62 62 49 49 20 4F 52 20 6C    bbI OR bbII OR l
013F30:  6F 62 6F 0D 0A 3B 20 4C 69 73 74 20 6F 66 20 63    obo..; List of c
013F40:  6F 6D 6D 61 6E 64 73 20 74 6F 20 73 65 74 20 75    ommands to set u
013F50:  70 20 53 49 4F 20 63 68 61 6E 6E 65 6C 20 41 20    p SIO channel A 
013F60:  66 6F 72 20 61 73 79 6E 63 68 72 6F 6E 6F 75 73    for asynchronous
013F70:  20 6F 70 65 72 61 74 69 6F 6E 2E 0D 0A 73 69 6F     operation...sio
013F80:  74 62 6C 3A 09 44 42 09 31 38 48 09 09 3B 20 43    tbl:.DB.18H..; C
013F90:  68 61 6E 6E 65 6C 20 72 65 73 65 74 0D 0A 09 44    hannel reset...D
013FA0:  42 09 31 38 48 09 09 3B 20 61 6E 6F 74 68 65 72    B.18H..; another
013FB0:  2C 20 69 6E 20 63 61 73 65 20 72 65 67 69 73 74    , in case regist
013FC0:  65 72 20 30 20 77 61 73 6E 27 74 20 73 65 6C 65    er 0 wasn't sele
013FD0:  63 74 65 64 0D 0A 09 44 42 09 30 34 48 09 09 3B    cted...DB.04H..;
013FE0:  20 53 65 6C 65 63 74 20 72 65 67 69 73 74 65 72     Select register
013FF0:  20 34 0D 0A 09 44 42 09 34 34 48 09 09 3B 20 31     4...DB.44H..; 1
014000:  79 20 74 68 65 20 63 6F 64 65 0D 0A 45 4E 44 49    y the code..ENDI
014010:  46 3B 6F 73 62 72 6E 31 0D 0A 09 72 65 74 0D 0A    F;osbrn1...ret..
014020:  0D 0A 63 6F 6E 6D 73 67 3A 09 09 3B 20 4D 65 73    ..conmsg:..; Mes
014030:  73 61 67 65 73 20 70 72 69 6E 74 65 64 20 77 68    sages printed wh
014040:  65 6E 20 65 6E 74 65 72 69 6E 67 20 74 72 61 6E    en entering tran
014050:  73 70 61 72 65 6E 74 20 28 43 4F 4E 4E 45 43 54    sparent (CONNECT
014060:  29 20 6D 6F 64 65 3A 0D 0A 49 46 20 72 6F 62 69    ) mode:..IF robi
014070:  6E 09 3B 20 20 66 6F 72 20 52 6F 62 69 6E 2C 20    n.;  for Robin, 
014080:  63 6F 6E 74 72 6F 6C 2D 53 20 6B 65 79 20 69 73    control-S key is
014090:  20 68 69 64 64 65 6E 0D 0A 09 64 62 09 27 20 28     hidden...db.' (
0140A0:  54 79 70 65 20 4C 65 66 74 20 41 72 72 6F 77 20    Type Left Arrow 
0140B0:  74 6F 20 73 65 6E 64 20 43 54 52 4C 2D 53 29 27    to send CTRL-S)'
0140C0:  2C 63 72 2C 6C 66 2C 27 24 27 0D 0A 45 4E 44 49    ,cr,lf,'$'..ENDI
0140D0:  46 3B 72 6F 62 69 6E 0D 0A 49 46 20 74 72 73 38    F;robin..IF trs8
0140E0:  30 09 3B 20 20 66 6F 72 20 54 52 53 2D 38 30 2C    0.;  for TRS-80,
0140F0:  20 74 68 65 20 70 72 65 66 65 72 72 65 64 20 65     the preferred e
014100:  73 63 61 70 65 20 6B 65 79 20 69 73 20 68 69 64    scape key is hid
014110:  64 65 6E 0D 0A 09 64 62 09 27 20 28 43 6F 6E 74    den...db.' (Cont
014120:  72 6F 6C 2D 5F 20 69 73 20 74 68 65 20 44 6F 77    rol-_ is the Dow
014130:  6E 2D 41 72 72 6F 77 20 6B 65 79 20 6F 6E 20 74    n-Arrow key on t
014140:  68 65 20 54 52 53 2D 38 30 20 6B 65 79 62 6F 61    he TRS-80 keyboa
014150:  72 64 29 27 0D 0A 09 64 62 09 63 72 2C 6C 66 2C    rd)'...db.cr,lf,
014160:  27 24 27 0D 0A 45 4E 44 49 46 3B 74 72 73 38 30    '$'..ENDIF;trs80
014170:  0D 0A 49 46 20 63 70 74 38 35 78 78 09 3B 20 20    ..IF cpt85xx.;  
014180:  66 6F 72 20 43 50 54 2D 38 35 78 78 2C 20 73 6F    for CPT-85xx, so
014190:  6D 65 20 67 72 61 70 68 69 63 73 20 6D 61 70 20    me graphics map 
0141A0:  22 66 75 6E 6E 79 22 20 74 6F 20 6B 65 79 62 6F    "funny" to keybo
0141B0:  61 72 64 20 69 6E 20 43 50 2F 4D 0D 0A 09 64 62    ard in CP/M...db
0141C0:  09 27 20 28 55 73 65 20 20 43 4F 44 45 20 2B 20    .' (Use  CODE + 
0141D0:  53 48 49 46 54 20 2B 20 31 2F 32 20 20 6B 65 79    SHIFT + 1/2  key
0141E0:  20 74 6F 20 67 65 6E 65 72 61 74 65 20 61 20 43     to generate a C
0141F0:  6F 6E 74 72 6F 6C 2D 5C 29 27 0D 0A 09 64 62 09    ontrol-\)'...db.
014200:  20 73 74 6F 70 20 62 69 74 2C 20 63 6C 6F 63 6B     stop bit, clock
014210:  2A 31 36 0D 0A 20 09 44 42 09 30 31 48 09 09 3B    *16.. .DB.01H..;
014220:  20 53 65 6C 65 63 74 20 72 65 67 69 73 74 65 72     Select register
014230:  20 31 0D 0A 09 44 42 09 30 30 48 09 09 3B 20 4E     1...DB.00H..; N
014240:  6F 20 69 6E 74 65 72 72 75 70 74 73 20 65 6E 61    o interrupts ena
014250:  62 6C 65 64 0D 0A 20 09 44 42 09 30 33 48 09 09    bled.. .DB.03H..
014260:  3B 20 53 65 6C 65 63 74 20 72 65 67 69 73 74 65    ; Select registe
014270:  72 20 33 0D 0A 20 09 44 42 09 30 43 31 48 09 09    r 3.. .DB.0C1H..
014280:  3B 20 52 78 20 65 6E 61 62 6C 65 2C 20 38 20 62    ; Rx enable, 8 b
014290:  69 74 20 52 78 20 63 68 61 72 61 63 74 65 72 0D    it Rx character.
0142A0:  0A 20 09 44 42 09 30 35 48 09 09 3B 20 53 65 6C    . .DB.05H..; Sel
0142B0:  65 63 74 20 72 65 67 69 73 74 65 72 20 35 0D 0A    ect register 5..
0142C0:  20 09 44 42 09 30 45 41 48 09 09 3B 20 54 78 20     .DB.0EAH..; Tx 
0142D0:  65 6E 61 62 6C 65 2C 20 38 20 62 69 74 20 54 78    enable, 8 bit Tx
0142E0:  20 63 68 61 72 61 63 74 65 72 2C 0D 0A 20 09 09     character,.. ..
0142F0:  09 09 3B 20 20 72 61 69 73 65 20 44 54 52 20 61    ..;  raise DTR a
014300:  6E 64 20 52 54 53 0D 0A 73 69 6F 6C 65 6E 09 65    nd RTS..siolen.e
014310:  71 75 09 24 2D 73 69 6F 74 62 6C 09 3B 20 6C 65    qu.$-siotbl.; le
014320:  6E 67 74 68 20 6F 66 20 63 6F 6D 6D 61 6E 64 20    ngth of command 
014330:  6C 69 73 74 0D 0A 45 4E 44 49 46 3B 62 62 49 20    list..ENDIF;bbI 
014340:  6F 72 20 62 62 49 49 20 4F 52 20 6C 6F 62 6F 0D    or bbII OR lobo.
014350:  0A 0D 0A 49 46 20 6D 69 6B 6B 6F 0D 0A 3B 20 63    ...IF mikko..; c
014360:  6F 6D 6D 61 6E 64 20 6C 69 73 74 20 74 6F 20 73    ommand list to s
014370:  65 74 20 53 49 4F 20 63 68 69 70 20 62 61 63 6B    et SIO chip back
014380:  20 74 6F 20 6E 6F 72 6D 61 6C 20 73 74 61 74 65     to normal state
014390:  0D 0A 6D 69 6F 74 62 6C 3A 09 64 62 09 33 09 09    ..miotbl:.db.3..
0143A0:  3B 72 65 67 2E 20 33 0D 0A 09 64 62 09 73 69 6F    ;reg. 3...db.sio
0143B0:  6F 33 0D 0A 09 64 62 09 35 09 09 3B 72 65 67 2E    o3...db.5..;reg.
0143C0:  20 35 0D 0A 09 64 62 09 73 69 6F 6F 35 0D 0A 09     5...db.sioo5...
0143D0:  64 62 09 34 09 09 3B 72 65 67 2E 20 34 0D 0A 09    db.4..;reg. 4...
0143E0:  64 62 09 73 69 6F 6F 34 0D 0A 09 64 62 09 30 09    db.sioo4...db.0.
0143F0:  09 3B 72 65 73 65 6C 65 63 74 20 72 65 67 2E 20    .;reselect reg. 
014400:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
014410:  11 00 00 00 02 09 4E E5 11 00 C1 02 00 00 00 02    ......N.........
014420:  11 00 C6 02 00 00 00 02 11 00 C2 02 00 00 00 02    ................
014430:  11 00 C7 02 00 00 00 02 11 00 C3 02 00 00 00 02    ................
014440:  11 00 C8 02 00 00 00 02 11 00 C4 02 00 00 00 02    ................
014450:  11 00 C9 02 00 00 00 02 11 00 C5 02 00 00 00 02    ................
014460:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014470:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014480:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014490:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014500:  63 72 2C 6C 66 2C 27 24 27 0D 0A 45 4E 44 49 46    cr,lf,'$'..ENDIF
014510:  3B 63 70 74 38 35 78 78 0D 0A 3B 0C 0D 0A 49 46    ;cpt85xx..;...IF
014520:  20 61 70 6D 6D 64 6D 0D 0A 3B 54 68 69 73 20 63     apmmdm..;This c
014530:  6F 64 65 20 77 61 73 20 6D 6F 73 74 6C 79 20 74    ode was mostly t
014540:  61 6B 65 6E 20 66 72 6F 6D 0D 0A 3B 09 41 50 4D    aken from..;.APM
014550:  4F 44 45 4D 2E 41 53 4D 20 56 32 2E 31 0D 0A 3B    ODEM.ASM V2.1..;
014560:  09 42 61 73 65 64 20 6F 6E 20 4D 4F 44 45 4D 2E    .Based on MODEM.
014570:  41 53 4D 20 62 79 20 57 61 72 64 20 43 68 72 69    ASM by Ward Chri
014580:  73 74 65 6E 73 65 6E 0D 0A 3B 09 4D 6F 64 69 66    stensen..;.Modif
014590:  69 65 64 20 66 6F 72 20 74 68 65 20 41 70 70 6C    ied for the Appl
0145A0:  65 20 5D 5B 20 62 79 20 47 6F 72 64 6F 6E 20 42    e ][ by Gordon B
0145B0:  61 6E 6B 73 20 31 2D 4A 61 6E 2D 38 31 0D 0A 3B    anks 1-Jan-81..;
0145C0:  09 4D 69 63 72 6F 6D 6F 64 65 6D 20 5D 5B 20 64    .Micromodem ][ d
0145D0:  69 61 6C 65 72 20 6F 70 74 69 6F 6E 20 62 79 20    ialer option by 
0145E0:  44 61 76 20 48 6F 6C 6C 65 20 20 32 2D 46 65 62    Dav Holle  2-Feb
0145F0:  2D 38 31 0D 0A 3B 09 43 6F 64 65 20 6D 6F 64 69    -81..;.Code modi
014600:  66 69 65 64 20 66 6F 72 20 4B 45 52 4D 49 54 20    fied for KERMIT 
014610:  62 79 20 53 63 6F 74 74 20 52 6F 62 69 6E 73 6F    by Scott Robinso
014620:  6E 20 31 34 2D 4F 63 74 2D 38 32 0D 0A 3B 0D 0A    n 14-Oct-82..;..
014630:  3B 43 6F 6D 65 20 68 65 72 65 20 74 6F 20 73 65    ;Come here to se
014640:  65 20 69 66 20 77 65 20 6E 65 65 64 20 74 6F 20    e if we need to 
014650:  64 69 61 6C 20 61 20 6E 75 6D 62 65 72 2E 0D 0A    dial a number...
014660:  3B 0D 0A 63 6B 64 69 61 6C 3A 09 6C 64 61 09 6D    ;..ckdial:.lda.m
014670:  6E 70 6F 72 74 09 09 3B 61 63 63 65 73 73 20 74    nport..;access t
014680:  68 65 20 64 61 74 61 20 70 6F 72 74 0D 0A 09 6C    he data port...l
014690:  64 61 09 6D 6E 70 72 74 73 09 09 3B 63 68 65 63    da.mnprts..;chec
0146A0:  6B 20 73 74 61 74 75 73 0D 0A 09 61 6E 69 09 34    k status...ani.4
0146B0:  09 09 3B 64 6F 20 77 65 20 61 6C 72 65 61 64 79    ..;do we already
0146C0:  20 68 61 76 65 20 63 61 72 72 69 65 72 3F 0D 0A     have carrier?..
0146D0:  09 6A 7A 09 72 73 6B 70 09 09 3B 59 65 73 2C 20    .jz.rskp..;Yes, 
0146E0:  6A 75 73 74 20 63 6F 6E 74 69 6E 75 65 0D 0A 09    just continue...
0146F0:  78 72 61 20 09 61 09 09 3B 48 61 6E 67 75 70 20    xra .a..;Hangup 
014700:  70 6C 65 20 5A 38 30 0D 0A 09 09 09 09 3B 63 6C    ple Z80......;cl
014710:  6F 63 6B 3D 32 2E 30 34 31 4D 48 7A 29 0D 0A 3B    ock=2.041MHz)..;
014720:  0D 0A 64 65 6C 61 79 32 3A 09 64 63 72 09 65 09    ..delay2:.dcr.e.
014730:  09 3B 63 6F 75 6E 74 0D 0A 09 6A 6E 7A 09 64 65    .;count...jnz.de
014740:  6C 61 79 32 09 09 3B 64 6F 77 6E 0D 0A 3B 0D 0A    lay2..;down..;..
014750:  09 64 63 72 09 63 09 09 3B 6D 6F 72 65 20 6D 69    .dcr.c..;more mi
014760:  6C 6C 69 73 65 63 73 3F 0D 0A 09 6A 6E 7A 09 64    llisecs?...jnz.d
014770:  65 6C 61 79 31 09 09 3B 79 65 73 0D 0A 09 64 63    elay1..;yes...dc
014780:  72 09 62 09 09 3B 6E 6F 20 2D 20 6D 6F 72 65 20    r.b..;no - more 
014790:  69 6E 20 68 69 20 62 79 74 65 3F 0D 0A 09 6A 6E    in hi byte?...jn
0147A0:  7A 09 64 65 6C 61 79 31 09 09 3B 79 65 73 0D 0A    z.delay1..;yes..
0147B0:  09 70 6F 70 09 64 09 09 3B 6E 6F 2C 09 72 65 73    .pop.d..;no,.res
0147C0:  74 6F 72 65 20 44 2C 45 0D 0A 09 70 6F 70 09 62    tore D,E...pop.b
0147D0:  09 09 3B 09 72 65 73 74 6F 72 65 20 42 2C 43 0D    ..;.restore B,C.
0147E0:  0A 09 72 65 74 0D 0A 45 4E 44 49 46 3B 61 70 6D    ..ret..ENDIF;apm
0147F0:  6D 64 6D 0D 0A 3B 0C 0D 0A 3B 0D 0A 3B 09 73 79    mdm..;...;..;.sy
014800:  73 63 6C 73 20 2D 20 73 79 73 74 65 6D 2D 64 65    scls - system-de
014810:  70 65 6E 64 65 6E 74 20 63 6C 6F 73 65 20 72 6F    pendent close ro
014820:  75 74 69 6E 65 0D 0A 3B 09 63 61 6C 6C 65 64 20    utine..;.called 
014830:  77 68 65 6E 20 65 78 69 74 69 6E 67 20 74 72 61    when exiting tra
014840:  6E 73 70 61 72 65 6E 74 20 73 65 73 73 69 6F 6E    nsparent session
014850:  2E 0D 0A 3B 0D 0A 73 79 73 63 6C 73 3A 0D 0A 49    ...;..syscls:..I
014860:  46 20 6F 73 62 72 6E 31 0D 0A 09 6C 68 6C 64 09    F osbrn1...lhld.
014870:  31 09 09 3B 4D 6F 64 69 66 79 20 62 61 63 6B 2D    1..;Modify back-
014880:  61 72 72 6F 77 20 63 6F 64 65 20 74 6F 20 42 41    arrow code to BA
014890:  43 4B 53 50 41 43 45 0D 0A 09 6D 76 69 09 6C 2C    CKSPACE...mvi.l,
0148A0:  30 09 09 3B 47 65 74 20 42 49 4F 53 20 61 64 64    0..;Get BIOS add
0148B0:  72 65 73 73 0D 0A 09 6C 78 69 09 64 2C 38 35 48    ress...lxi.d,85H
0148C0:  09 09 3B 41 64 64 72 65 73 73 20 66 6F 72 20 6B    ..;Address for k
0148D0:  65 79 2D 63 6F 64 65 20 3D 58 58 38 35 48 0D 0A    ey-code =XX85H..
0148E0:  09 64 61 64 09 64 0D 0A 09 6D 6F 76 09 65 2C 6D    .dad.d...mov.e,m
0148F0:  09 09 3B 47 65 74 20 69 74 20 69 6E 20 44 45 0D    ..;Get it in DE.
014900:  50 68 6F 6E 65 20 66 6F 72 20 73 74 61 72 74 65    Phone for starte
014910:  72 73 0D 0A 09 73 74 61 09 6D 6E 6D 6F 64 6D 0D    rs...sta.mnmodm.
014920:  0A 09 6C 78 69 09 62 2C 31 30 30 30 09 09 3B 44    ..lxi.b,1000..;D
014930:  65 6C 61 79 20 66 6F 72 20 61 20 73 65 63 6F 6E    elay for a secon
014940:  64 0D 0A 09 63 61 6C 6C 09 64 65 6C 61 79 0D 0A    d...call.delay..
014950:  09 6D 76 69 09 61 2C 38 46 48 09 09 3B 6F 72 67    .mvi.a,8FH..;org
014960:  6D 6F 64 2B 61 70 33 30 30 2B 61 70 6F 66 66 68    mod+ap300+apoffh
014970:  0D 0A 09 73 74 61 09 68 6F 6C 64 64 09 09 3B 73    ...sta.holdd..;s
014980:  74 6F 72 69 6E 67 20 6D 6F 64 65 20 66 6F 72 20    toring mode for 
014990:  61 66 74 65 72 20 64 69 61 6C 69 6E 67 0D 0A 09    after dialing...
0149A0:  6D 76 69 09 41 2C 38 44 48 09 09 3B 47 6F 20 4F    mvi.A,8DH..;Go O
0149B0:  66 66 68 6F 6F 6B 20 74 6F 20 73 74 61 72 74 20    ffhook to start 
0149C0:  64 69 61 6C 69 6E 67 20 73 65 71 75 65 6E 63 65    dialing sequence
0149D0:  0D 0A 09 73 74 61 09 6D 6E 6D 6F 64 6D 0D 0A 09    ...sta.mnmodm...
0149E0:  6D 76 69 09 61 2C 61 70 69 6E 63 31 09 3B 49 6E    mvi.a,apinc1.;In
0149F0:  69 74 20 41 43 49 41 0D 0A 09 73 74 61 09 6D 6E    it ACIA...sta.mn
014A00:  70 6F 72 74 0D 0A 09 6D 76 69 09 61 2C 61 70 69    port...mvi.a,api
014A10:  6E 63 32 09 3B 53 65 74 20 41 43 49 41 20 62 69    nc2.;Set ACIA bi
014A20:  74 73 20 70 65 72 20 63 68 61 72 61 63 74 65 72    ts per character
014A30:  0D 0A 09 73 74 61 09 6D 6E 70 6F 72 74 0D 0A 0D    ...sta.mnport...
014A40:  0A 09 6C 78 69 09 62 2C 32 35 30 30 09 09 3B 77    ..lxi.b,2500..;w
014A50:  61 69 74 20 32 2E 35 20 73 65 63 6F 6E 64 73 20    ait 2.5 seconds 
014A60:  66 6F 72 20 64 69 61 6C 20 74 6F 6E 65 0D 0A 09    for dial tone...
014A70:  63 61 6C 6C 09 64 65 6C 61 79 0D 0A 09 6C 78 69    call.delay...lxi
014A80:  09 64 2C 64 69 61 6C 6D 73 09 3B 41 73 6B 20 74    .d,dialms.;Ask t
014A90:  68 65 20 75 73 65 72 20 66 6F 72 20 74 68 65 20    he user for the 
014AA0:  6E 75 6D 62 65 72 0D 0A 09 63 61 6C 6C 09 70 72    number...call.pr
014AB0:  74 73 74 72 0D 0A 3B 0D 0A 67 74 64 69 61 6C 3A    tstr..;..gtdial:
014AC0:  20 6D 76 69 09 63 2C 63 6F 6E 69 6E 09 09 3B 47     mvi.c,conin..;G
014AD0:  65 74 20 61 20 63 68 61 72 61 63 74 65 72 0D 0A    et a character..
014AE0:  09 63 61 6C 6C 09 62 64 6F 73 0D 0A 09 70 75 73    .call.bdos...pus
014AF0:  68 09 70 73 77 09 09 3B 73 61 76 65 20 69 74 0D    h.psw..;save it.
014B00:  0A 09 69 6E 78 09 68 0D 0A 09 6D 6F 76 09 64 2C    ..inx.h...mov.d,
014B10:  6D 0D 0A 09 78 63 68 67 09 09 09 3B 41 64 64 72    m...xchg...;Addr
014B20:  65 73 73 20 74 6F 20 48 4C 0D 0A 09 6D 76 69 09    ess to HL...mvi.
014B30:  6D 2C 62 73 09 09 3B 4D 6F 64 69 66 79 20 63 6F    m,bs..;Modify co
014B40:  64 65 0D 0A 45 4E 44 49 46 3B 6F 73 62 72 6E 31    de..ENDIF;osbrn1
014B50:  0D 0A 09 72 65 74 0D 0A 3B 0C 0D 0A 3B 0D 0A 3B    ...ret..;...;..;
014B60:  09 73 79 73 69 6E 68 20 2D 20 68 65 6C 70 20 66    .sysinh - help f
014B70:  6F 72 20 73 79 73 74 65 6D 2D 64 65 70 65 6E 64    or system-depend
014B80:  65 6E 74 20 73 70 65 63 69 61 6C 20 66 75 6E 63    ent special func
014B90:  74 69 6F 6E 73 2E 0D 0A 3B 09 63 61 6C 6C 65 64    tions...;.called
014BA0:  20 69 6E 20 72 65 73 70 6F 6E 73 65 20 74 6F 20     in response to 
014BB0:  3C 65 73 63 61 70 65 3E 3F 2C 20 61 66 74 65 72    <escape>?, after
014BC0:  20 6C 69 73 74 69 6E 67 20 61 6C 6C 20 74 68 65     listing all the
014BD0:  0D 0A 3B 09 73 79 73 74 65 6D 2D 69 6E 64 65 70    ..;.system-indep
014BE0:  65 6E 64 65 6E 74 20 65 73 63 61 70 65 20 73 65    endent escape se
014BF0:  71 75 65 6E 63 65 73 2E 0D 0A 3B 0D 0A 73 79 73    quences...;..sys
014C00:  69 6E 68 3A 09 0D 0A 49 46 20 61 70 6D 6D 64 6D    inh:...IF apmmdm
014C10:  20 4F 52 20 72 6F 62 69 6E 20 4F 52 20 64 6D 49     OR robin OR dmI
014C20:  49 20 4F 52 20 62 62 49 49 20 4F 52 20 62 62 49    I OR bbII OR bbI
014C30:  20 4F 52 20 63 70 74 38 35 78 78 20 4F 52 20 68     OR cpt85xx OR h
014C40:  65 61 74 68 20 4F 52 20 6C 6F 62 6F 0D 0A 09 6C    eath OR lobo...l
014C50:  78 69 09 64 2C 69 6E 68 6C 70 73 09 3B 20 77 65    xi.d,inhlps.; we
014C60:  20 67 6F 74 20 6F 70 74 69 6F 6E 73 2E 2E 2E 0D     got options....
014C70:  0A 09 63 61 6C 6C 09 70 72 74 73 74 72 09 09 3B    ..call.prtstr..;
014C80:  20 70 72 69 6E 74 20 74 68 65 6D 2E 0D 0A 45 4E     print them...EN
014C90:  44 49 46 3B 61 70 6D 6D 64 6D 20 4F 52 20 72 6F    DIF;apmmdm OR ro
014CA0:  62 69 6E 20 4F 52 20 64 6D 49 49 20 4F 52 20 62    bin OR dmII OR b
014CB0:  62 49 49 20 4F 52 20 62 62 49 20 4F 52 20 63 70    bII OR bbI OR cp
014CC0:  74 38 35 78 78 20 4F 52 20 68 65 61 74 68 20 4F    t85xx OR heath O
014CD0:  52 20 6C 6F 62 6F 0D 0A 09 72 65 74 0D 0A 0D 0A    R lobo...ret....
014CE0:  3B 61 64 64 69 74 69 6F 6E 61 6C 2C 20 73 79 73    ;additional, sys
014CF0:  74 65 6D 2D 64 65 70 65 6E 64 65 6E 74 20 68 65    tem-dependent he
014D00:  0A 09 63 70 69 09 33 30 48 09 09 3B 69 73 20 69    ..cpi.30H..;is i
014D10:  74 20 62 69 67 20 65 6E 6F 75 67 68 20 74 6F 20    t big enough to 
014D20:  64 69 61 6C 3F 0D 0A 09 6A 63 09 64 69 61 6C 65    dial?...jc.diale
014D30:  64 09 09 3B 6E 6F 0D 0A 09 63 70 69 09 33 41 48    d..;no...cpi.3AH
014D40:  09 09 3B 69 73 20 69 74 20 74 6F 6F 20 62 69 67    ..;is it too big
014D50:  20 74 6F 20 64 69 61 6C 3F 0D 0A 09 6A 6E 63 09     to dial?...jnc.
014D60:  64 69 61 6C 65 64 09 09 3B 79 65 73 0D 0A 09 61    dialed..;yes...a
014D70:  6E 69 09 30 46 48 09 09 3B 6F 6B 2C 20 69 74 27    ni.0FH..;ok, it'
014D80:  73 20 61 20 64 69 67 69 74 2C 20 67 65 74 20 69    s a digit, get i
014D90:  74 73 20 76 61 6C 75 65 0D 0A 09 6A 6E 7A 09 64    ts value...jnz.d
014DA0:  69 61 6C 6E 7A 09 09 3B 64 69 61 6C 20 6E 6F 6E    ialnz..;dial non
014DB0:  7A 65 72 6F 20 64 69 67 69 74 73 20 61 73 2D 69    zero digits as-i
014DC0:  73 0D 0A 09 6D 76 69 09 41 2C 31 30 09 09 3B 64    s...mvi.A,10..;d
014DD0:  69 61 6C 20 7A 65 72 6F 20 61 73 20 74 65 6E 0D    ial zero as ten.
014DE0:  0A 3B 0D 0A 64 69 61 6C 6E 7A 3A 09 6D 6F 76 09    .;..dialnz:.mov.
014DF0:  65 2C 61 09 09 3B 63 6F 75 6E 74 20 70 75 6C 73    e,a..;count puls
014E00:  65 73 20 69 6E 20 45 2D 72 65 67 0D 0A 64 6F 70    es in E-reg..dop
014E10:  75 6C 73 3A 20 6D 76 69 09 61 2C 30 44 48 09 09    uls: mvi.a,0DH..
014E20:  3B 70 75 74 20 69 74 20 6F 6E 2D 68 6F 6F 6B 0D    ;put it on-hook.
014E30:  0A 09 73 74 61 09 6D 6E 6D 6F 64 6D 0D 0A 09 6C    ..sta.mnmodm...l
014E40:  78 69 09 62 2C 36 31 09 09 3B 36 31 2D 6D 69 6C    xi.b,61..;61-mil
014E50:  6C 69 73 65 63 20 70 75 6C 73 65 0D 0A 09 63 61    lisec pulse...ca
014E60:  6C 6C 09 64 65 6C 61 79 0D 0A 09 6D 76 69 09 61    ll.delay...mvi.a
014E70:  2C 38 44 48 09 09 3B 74 61 6B 65 20 69 74 20 6F    ,8DH..;take it o
014E80:  66 66 2D 68 6F 6F 6B 20 61 67 61 69 6E 2E 2E 2E    ff-hook again...
014E90:  0D 0A 09 73 74 61 09 6D 6E 6D 6F 64 6D 0D 0A 09    ...sta.mnmodm...
014EA0:  6C 78 69 09 62 2C 33 39 09 09 3B 33 39 2D 6D 69    lxi.b,39..;39-mi
014EB0:  6C 6C 69 73 65 63 20 64 65 6C 61 79 20 62 65 74    llisec delay bet
014EC0:  77 65 65 6E 20 70 75 6C 73 65 73 0D 0A 09 63 61    ween pulses...ca
014ED0:  6C 6C 09 64 65 6C 61 79 0D 0A 09 64 63 72 09 65    ll.delay...dcr.e
014EE0:  09 09 3B 61 6E 79 20 6D 6F 72 65 20 70 75 6C 73    ..;any more puls
014EF0:  65 73 20 74 6F 20 64 6F 3F 0D 0A 09 6A 6E 7A 09    es to do?...jnz.
014F00:  6C 70 20 66 6F 72 20 74 72 61 6E 73 70 61 72 65    lp for transpare
014F10:  6E 74 20 6D 6F 64 65 0D 0A 3B 20 28 74 77 6F 2D    nt mode..; (two-
014F20:  63 68 61 72 61 63 74 65 72 20 65 73 63 61 70 65    character escape
014F30:  20 73 65 71 75 65 6E 63 65 73 29 0D 0A 69 6E 68     sequences)..inh
014F40:  6C 70 73 3A 0D 0A 0D 0A 49 46 20 72 6F 62 69 6E    lps:....IF robin
014F50:  20 4F 52 20 64 6D 49 49 20 4F 52 20 62 62 49 49     OR dmII OR bbII
014F60:  20 4F 52 20 62 62 49 20 4F 52 20 63 70 74 38 35     OR bbI OR cpt85
014F70:  78 78 20 4F 52 20 68 65 61 74 68 20 4F 52 20 6C    xx OR heath OR l
014F80:  6F 62 6F 0D 0A 09 64 62 09 63 72 2C 6C 66 2C 27    obo...db.cr,lf,'
014F90:  42 20 20 54 72 61 6E 73 6D 69 74 20 61 20 42 52    B  Transmit a BR
014FA0:  45 41 4B 27 0D 0A 45 4E 44 49 46 3B 72 6F 62 69    EAK'..ENDIF;robi
014FB0:  6E 20 4F 52 20 64 6D 49 49 20 4F 52 20 62 62 49    n OR dmII OR bbI
014FC0:  49 20 4F 52 20 62 62 49 20 4F 52 20 63 70 74 38    I OR bbI OR cpt8
014FD0:  35 78 78 20 4F 52 20 68 65 61 74 68 20 4F 52 20    5xx OR heath OR 
014FE0:  6C 6F 62 6F 0D 0A 0D 0A 49 46 20 61 70 6D 6D 64    lobo....IF apmmd
014FF0:  6D 20 4F 52 20 68 65 61 74 68 20 4F 52 20 6C 6F    m OR heath OR lo
015000:  62 6F 0D 0A 09 64 62 09 63 72 2C 6C 66 2C 27 44    bo...db.cr,lf,'D
015010:  20 20 44 72 6F 70 20 74 68 65 20 6C 69 6E 65 27      Drop the line'
015020:  0D 0A 45 4E 44 49 46 3B 61 70 6D 6D 64 6D 20 4F    ..ENDIF;apmmdm O
015030:  52 20 68 65 61 74 68 20 4F 52 20 6C 6F 62 6F 0D    R heath OR lobo.
015040:  0A 0D 0A 09 64 62 09 27 24 27 09 09 09 3B 5B 68    ....db.'$'...;[h
015050:  68 5D 20 74 61 62 6C 65 20 74 65 72 6D 69 6E 61    h] table termina
015060:  74 6F 72 0D 0A 0D 0A 3B 0D 0A 3B 09 73 79 73 69    tor....;..;.sysi
015070:  6E 74 20 2D 20 73 79 73 74 65 6D 20 64 65 70 65    nt - system depe
015080:  6E 64 65 6E 74 20 73 70 65 63 69 61 6C 20 66 75    ndent special fu
015090:  6E 63 74 69 6F 6E 73 0D 0A 3B 09 63 61 6C 6C 65    nctions..;.calle
0150A0:  64 20 77 68 65 6E 20 74 72 61 6E 73 70 61 72 65    d when transpare
0150B0:  6E 74 20 65 73 63 61 70 65 20 63 68 61 72 61 63    nt escape charac
0150C0:  74 65 72 20 68 61 73 20 62 65 65 6E 20 74 79 70    ter has been typ
0150D0:  65 64 3B 0D 0A 3B 09 74 68 65 20 73 65 63 6F 6E    ed;..;.the secon
0150E0:  64 20 63 68 61 72 61 63 74 65 72 20 6F 66 20 74    d character of t
0150F0:  68 65 20 73 65 71 75 65 6E 63 65 20 69 73 20 69    he sequence is i
015100:  64 6F 70 75 6C 73 09 09 3B 79 65 70 2C 20 64 6F    dopuls..;yep, do
015110:  20 27 65 6D 0D 0A 09 6C 78 69 09 62 2C 36 30 30     'em...lxi.b,600
015120:  09 09 3B 64 65 6C 61 79 20 36 30 30 20 6D 73 65    ..;delay 600 mse
015130:  63 73 20 62 65 74 77 65 65 6E 20 64 69 67 69 74    cs between digit
015140:  73 0D 0A 09 63 61 6C 6C 09 64 65 6C 61 79 0D 0A    s...call.delay..
015150:  3B 0D 0A 64 69 61 6C 65 64 3A 09 70 6F 70 09 70    ;..dialed:.pop.p
015160:  73 77 09 09 3B 67 65 74 20 62 61 63 6B 20 74 68    sw..;get back th
015170:  65 20 63 68 61 72 0D 0A 09 63 70 69 09 63 72 09    e char...cpi.cr.
015180:  09 3B 64 6F 20 77 65 20 68 61 76 65 20 61 20 43    .;do we have a C
015190:  52 20 28 64 6F 6E 65 20 64 69 61 6C 69 6E 67 29    R (done dialing)
0151A0:  3F 0D 0A 09 6A 6E 7A 09 67 74 64 69 61 6C 09 09    ?...jnz.gtdial..
0151B0:  3B 6E 6F 2C 20 6B 65 65 70 20 6F 6E 20 64 69 61    ;no, keep on dia
0151C0:  6C 69 6E 27 0D 0A 09 6C 78 69 09 64 2C 64 69 61    lin'...lxi.d,dia
0151D0:  6C 6D 32 0D 0A 09 63 61 6C 6C 09 70 72 74 73 74    lm2...call.prtst
0151E0:  72 0D 0A 0D 0A 74 69 63 74 6F 63 3A 20 6D 76 69    r....tictoc: mvi
0151F0:  09 63 2C 64 63 6F 6E 69 6F 09 3B 44 69 72 65 63    .c,dconio.;Direc
015200:  74 20 63 6F 6E 73 6F 6C 65 20 69 6E 70 75 74 2E    t console input.
015210:  0D 0A 09 6D 76 69 09 65 2C 30 46 46 48 0D 0A 09    ...mvi.e,0FFH...
015220:  63 61 6C 6C 09 62 64 6F 73 0D 0A 09 6F 72 61 09    call.bdos...ora.
015230:  61 09 09 3B 48 61 76 65 20 61 20 63 68 61 72 63    a..;Have a charc
015240:  74 65 72 3F 0D 0A 09 6A 6E 7A 20 09 6E 6F 64 69    ter?...jnz .nodi
015250:  61 6C 09 09 3B 49 66 20 73 6F 20 77 65 20 61 62    al..;If so we ab
015260:  6F 72 74 0D 0A 09 6C 64 61 09 6D 6E 70 6F 72 74    ort...lda.mnport
015270:  09 20 09 3B 61 63 63 65 73 73 20 74 68 65 20 64    . .;access the d
015280:  61 74 61 20 70 6F 72 74 0D 0A 09 6C 64 61 09 6D    ata port...lda.m
015290:  6E 70 72 74 73 09 09 3B 67 65 74 20 6D 6F 64 65    nprts..;get mode
0152A0:  6D 20 73 74 61 74 75 73 0D 0A 09 61 6E 69 09 34    m status...ani.4
0152B0:  09 09 3B 63 61 72 72 69 65 72 3F 0D 0A 09 6A 6E    ..;carrier?...jn
0152C0:  7A 09 74 69 63 74 6F 63 09 09 3B 4E 6F 0D 0A 3B    z.tictoc..;No..;
0152D0:  0D 0A 09 6C 64 61 09 68 6F 6C 64 64 09 09 3B 67    ...lda.holdd..;g
0152E0:  65 74 20 74 68 65 20 6F 6C 64 20 6D 6F 64 65 6D    et the old modem
0152F0:  20 63 6F 6E 74 72 6F 6C 20 62 79 74 65 0D 0A 09     control byte...
015300:  6E 20 41 20 28 61 6E 64 20 69 6E 20 42 29 2E 0D    n A (and in B)..
015310:  0A 3B 09 72 65 74 75 72 6E 73 3A 0D 0A 3B 09 6E    .;.returns:..;.n
015320:  6F 6E 2D 73 6B 69 70 3A 20 73 65 71 75 65 6E 63    on-skip: sequenc
015330:  65 20 68 61 73 20 62 65 65 6E 20 70 72 6F 63 65    e has been proce
015340:  73 73 65 64 0D 0A 3B 09 73 6B 69 70 3A 09 73 65    ssed..;.skip:.se
015350:  71 75 65 6E 63 65 20 77 61 73 20 6E 6F 74 20 72    quence was not r
015360:  65 63 6F 67 6E 69 7A 65 64 0D 0A 73 79 73 69 6E    ecognized..sysin
015370:  74 3A 09 61 6E 69 09 31 33 37 4F 09 09 3B 20 63    t:.ani.137O..; c
015380:  6F 6E 76 65 72 74 20 6C 6F 77 65 72 20 63 61 73    onvert lower cas
015390:  65 20 74 6F 20 75 70 70 65 72 2C 20 66 6F 72 20    e to upper, for 
0153A0:  74 65 73 74 69 6E 67 2E 2E 2E 0D 0A 49 46 20 61    testing.....IF a
0153B0:  70 6D 6D 64 6D 0D 0A 09 63 70 69 09 27 44 27 09    pmmdm...cpi.'D'.
0153C0:  09 3B 44 69 73 63 6F 6E 6E 65 63 74 20 4D 6F 64    .;Disconnect Mod
0153D0:  65 6D 3F 0D 0A 09 6A 6E 7A 09 69 6E 74 63 30 30    em?...jnz.intc00
0153E0:  09 09 3B 4E 6F 2E 0D 0A 09 78 72 61 09 61 09 09    ..;No....xra.a..
0153F0:  3B 59 65 73 2C 20 68 61 6E 67 75 70 20 74 68 65    ;Yes, hangup the
015400:  20 6D 6F 64 65 6D 0D 0A 09 73 74 61 09 6D 6E 6D     modem...sta.mnm
015410:  6F 64 6D 0D 0A 09 72 65 74 09 09 09 3B 20 63 6F    odm...ret...; co
015420:  6D 6D 61 6E 64 20 68 61 73 20 62 65 65 6E 20 65    mmand has been e
015430:  78 65 63 75 74 65 64 0D 0A 69 6E 74 63 30 30 3A    xecuted..intc00:
015440:  0D 0A 45 4E 44 49 46 3B 61 70 6D 6D 64 6D 0D 0A    ..ENDIF;apmmdm..
015450:  0D 0A 49 46 20 68 65 61 74 68 0D 0A 09 63 70 69    ..IF heath...cpi
015460:  09 27 44 27 09 09 3B 20 64 72 6F 70 20 6C 69 6E    .'D'..; drop lin
015470:  65 3F 0D 0A 09 6A 6E 7A 09 69 6E 74 63 30 30 09    e?...jnz.intc00.
015480:  09 3B 20 6E 6F 3A 20 20 74 72 79 20 6E 65 78 74    .; no:  try next
015490:  20 66 75 6E 63 74 69 6F 6E 20 63 68 61 72 61 63     function charac
0154A0:  74 65 72 0D 0A 0D 0A 6D 64 6D 64 72 70 3A 09 69    ter....mdmdrp:.i
0154B0:  6E 09 6D 6E 70 6F 72 74 2B 61 63 65 6D 63 72 09    n.mnport+acemcr.
0154C0:  3B 20 28 77 65 20 61 6C 73 6F 20 67 65 74 20 68    ; (we also get h
0154D0:  65 72 65 20 66 72 6F 6D 20 73 79 73 62 79 65 29    ere from sysbye)
0154E0:  0D 0A 09 61 6E 69 09 30 46 46 48 2D 61 63 65 64    ...ani.0FFH-aced
0154F0:  74 72 0D 0A 09 6F 75 74 09 6D 6E 70 6F 72 74 2B    tr...out.mnport+
015500:  73 74 61 09 6D 6E 6D 6F 64 6D 09 09 3B 74 75 72    sta.mnmodm..;tur
015510:  6E 20 6F 75 72 20 63 61 72 72 69 65 72 20 6F 6E    n our carrier on
015520:  0D 0A 0D 0A 09 6C 78 69 09 64 2C 64 69 61 6C 6D    .....lxi.d,dialm
015530:  33 0D 0A 09 63 61 6C 6C 09 70 72 74 73 74 72 0D    3...call.prtstr.
015540:  0A 09 6A 6D 70 09 72 73 6B 70 0D 0A 6E 6F 64 69    ..jmp.rskp..nodi
015550:  61 6C 3A 20 78 72 61 09 61 09 09 3B 48 61 6E 67    al: xra.a..;Hang
015560:  75 70 20 74 68 65 20 6D 6F 64 65 6D 2E 0D 0A 09    up the modem....
015570:  73 74 61 09 6D 6E 6D 6F 64 6D 0D 0A 09 72 65 74    sta.mnmodm...ret
015580:  09 09 09 3B 52 65 74 75 72 6E 20 74 6F 20 61 62    ...;Return to ab
015590:  6F 72 74 20 74 68 65 20 63 6F 6D 6D 61 6E 64 2E    ort the command.
0155A0:  0D 0A 3B 0D 0A 68 6F 6C 64 64 3A 09 64 62 09 30    ..;..holdd:.db.0
0155B0:  09 09 3B 4D 6F 64 65 6D 20 73 65 74 75 70 20 63    ..;Modem setup c
0155C0:  6F 64 65 0D 0A 64 69 61 6C 6D 73 3A 09 44 42 09    ode..dialms:.DB.
0155D0:  27 4E 75 6D 62 65 72 20 74 6F 20 44 69 61 6C 3A    'Number to Dial:
0155E0:  20 24 27 0D 0A 64 69 61 6C 6D 32 3A 09 44 42 09     $'..dialm2:.DB.
0155F0:  43 52 2C 4C 46 2C 27 41 77 61 69 74 69 6E 67 20    CR,LF,'Awaiting 
015600:  43 61 72 72 69 65 72 2E 2E 2E 2E 28 61 6E 79 20    Carrier....(any 
015610:  6B 65 79 20 61 62 6F 72 74 73 29 24 27 0D 0A 64    key aborts)$'..d
015620:  69 61 6C 6D 33 3A 09 44 42 09 63 72 2C 6C 66 2C    ialm3:.DB.cr,lf,
015630:  27 43 6F 6E 6E 65 63 74 65 64 2E 27 2C 43 52 2C    'Connected.',CR,
015640:  4C 46 2C 27 24 27 0D 0A 3B 0D 0A 3B 44 45 4C 41    LF,'$'..;..;DELA
015650:  59 20 77 61 69 74 20 66 6F 72 20 74 68 65 20 6E    Y wait for the n
015660:  75 6D 62 65 72 20 6F 66 20 6D 69 6C 6C 69 73 65    umber of millise
015670:  63 73 20 69 6E 20 42 2C 43 0D 0A 3B 0D 0A 64 65    cs in B,C..;..de
015680:  6C 61 79 3A 09 70 75 73 68 09 62 09 09 3B 73 61    lay:.push.b..;sa
015690:  76 65 20 42 2C 43 0D 0A 09 70 75 73 68 09 64 09    ve B,C...push.d.
0156A0:  09 3B 73 61 76 65 20 44 2C 45 0D 0A 09 69 6E 72    .;save D,E...inr
0156B0:  09 62 09 09 3B 62 75 6D 70 20 42 20 66 6F 72 20    .b..;bump B for 
0156C0:  6C 61 74 65 72 20 44 43 52 0D 0A 3B 0D 0A 64 65    later DCR..;..de
0156D0:  6C 61 79 31 3A 09 6D 76 69 09 65 2C 31 32 36 09    lay1:.mvi.e,126.
0156E0:  09 3B 64 65 6C 61 79 20 63 6F 75 6E 74 20 66 6F    .;delay count fo
0156F0:  72 20 31 20 6D 69 6C 6C 69 73 65 63 20 28 41 70    r 1 millisec (Ap
015700:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
015710:  12 00 00 00 02 09 4E E5 12 00 C1 02 00 00 00 02    ......N.........
015720:  12 00 C6 02 00 00 00 02 12 00 C2 02 00 00 00 02    ................
015730:  12 00 C7 02 00 00 00 02 12 00 C3 02 00 00 00 02    ................
015740:  12 00 C8 02 00 00 00 02 12 00 C4 02 00 00 00 02    ................
015750:  12 00 C9 02 00 00 00 02 12 00 C5 02 00 00 00 02    ................
015760:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015770:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015780:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015790:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0157A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0157B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0157C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0157D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0157E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0157F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015800:  61 63 65 6D 63 72 09 3B 20 79 65 73 3A 20 64 72    acemcr.; yes: dr
015810:  6F 70 20 44 54 52 0D 0A 09 6D 76 69 09 61 2C 35    op DTR...mvi.a,5
015820:  30 09 09 3B 20 20 20 20 20 20 66 6F 72 20 68 61    0..;      for ha
015830:  6C 66 20 61 20 73 65 63 6F 6E 64 0D 0A 09 63 61    lf a second...ca
015840:  6C 6C 09 64 65 6C 61 79 0D 0A 09 69 6E 09 6D 6E    ll.delay...in.mn
015850:  70 6F 72 74 2B 61 63 65 6D 63 72 0D 0A 09 6F 72    port+acemcr...or
015860:  69 09 61 63 65 64 74 72 0D 0A 09 6F 75 74 09 6D    i.acedtr...out.m
015870:  6E 70 6F 72 74 2B 61 63 65 6D 63 72 09 3B 20 20    nport+acemcr.;  
015880:  20 20 20 20 61 6E 64 20 74 68 65 6E 20 72 65 73        and then res
015890:  74 6F 72 65 20 69 74 0D 0A 09 72 65 74 0D 0A 69    tore it...ret..i
0158A0:  6E 74 63 30 30 3A 0D 0A 45 4E 44 49 46 3B 68 65    ntc00:..ENDIF;he
0158B0:  61 74 68 0D 0A 0D 0A 49 46 20 72 6F 62 69 6E 20    ath....IF robin 
0158C0:  4F 52 20 64 6D 49 49 20 4F 52 20 62 62 49 20 4F    OR dmII OR bbI O
0158D0:  52 20 62 62 49 49 20 4F 52 20 63 70 74 38 35 78    R bbII OR cpt85x
0158E0:  78 20 4F 52 20 68 65 61 74 68 20 4F 52 20 6C 6F    x OR heath OR lo
0158F0:  62 6F 0D 0A 09 63 70 69 09 27 42 27 09 09 3B 20    bo...cpi.'B'..; 
015900:  73 65 6E 64 20 62 72 65 61 6B 3F 0D 0A 09 6A 7A    send break?...jz
015910:  09 73 65 6E 64 62 72 09 09 3B 20 79 65 73 2C 20    .sendbr..; yes, 
015920:  67 6F 20 64 6F 20 69 74 2E 20 20 72 65 74 75 72    go do it.  retur
015930:  6E 20 6E 6F 6E 73 6B 69 70 20 77 68 65 6E 20 74    n nonskip when t
015940:  68 72 6F 75 67 68 2E 0D 0A 45 4E 44 49 46 3B 72    hrough...ENDIF;r
015950:  6F 62 69 6E 20 4F 52 20 64 6D 49 49 20 4F 52 20    obin OR dmII OR 
015960:  62 62 49 20 4F 52 20 62 62 49 49 20 4F 52 20 63    bbI OR bbII OR c
015970:  70 74 38 35 78 78 20 4F 52 20 68 65 61 74 68 20    pt85xx OR heath 
015980:  4F 52 20 6C 6F 62 6F 0D 0A 49 46 20 6C 6F 62 6F    OR lobo..IF lobo
015990:  09 3B 5B 68 68 5D 0D 0A 09 63 70 69 09 27 44 27    .;[hh]...cpi.'D'
0159A0:  09 09 3B 5B 68 68 5D 20 64 69 73 63 6F 6E 6E 65    ..;[hh] disconne
0159B0:  63 74 3F 0D 0A 09 6A 7A 09 64 69 73 63 6F 6E 09    ct?...jz.discon.
0159C0:  09 3B 5B 68 68 5D 20 79 65 73 2C 20 67 6F 20 64    .;[hh] yes, go d
0159D0:  6F 20 69 74 2E 20 6E 6F 6E 73 6B 69 70 20 72 65    o it. nonskip re
0159E0:  74 75 72 6E 20 77 68 65 6E 20 64 6F 6E 65 2E 0D    turn when done..
0159F0:  0A 45 4E 44 49 46 09 3B 6C 6F 62 6F 0D 0A 0D 0A    .ENDIF.;lobo....
015A00:  74 20 61 6E 6F 74 68 65 72 20 63 68 61 72 61 63    t another charac
015A10:  74 65 72 3B 0D 0A 3B 09 74 68 65 20 70 72 65 76    ter;..;.the prev
015A20:  69 6F 75 73 20 63 68 61 72 61 63 74 65 72 20 69    ious character i
015A30:  73 20 73 74 69 6C 6C 20 62 65 69 6E 67 20 73 68    s still being sh
015A40:  69 66 74 65 64 20 6F 6E 74 6F 20 74 68 65 20 6C    ifted onto the l
015A50:  69 6E 65 2E 0D 0A 3B 09 41 6E 6F 74 68 65 72 20    ine...;.Another 
015A60:  73 74 61 74 75 73 20 62 69 74 2C 20 22 61 6C 6C    status bit, "all
015A70:  20 64 6F 6E 65 22 2C 20 69 73 20 73 65 74 20 74     done", is set t
015A80:  6F 20 69 6E 64 69 63 61 74 65 20 74 68 61 74 20    o indicate that 
015A90:  74 68 65 0D 0A 3B 09 74 72 61 6E 73 6D 69 74 74    the..;.transmitt
015AA0:  65 72 20 69 73 20 72 65 61 6C 6C 79 20 69 64 6C    er is really idl
015AB0:  65 2E 0D 0A 73 6E 64 62 72 31 3A 09 6D 76 69 09    e...sndbr1:.mvi.
015AC0:  61 2C 31 09 09 3B 20 73 65 6C 65 63 74 20 52 65    a,1..; select Re
015AD0:  61 64 20 52 65 67 69 73 74 65 72 20 31 0D 0A 09    ad Register 1...
015AE0:  6F 75 74 09 6D 6E 70 72 74 73 0D 0A 09 69 6E 09    out.mnprts...in.
015AF0:  6D 6E 70 72 74 73 09 09 3B 20 72 65 61 64 20 74    mnprts..; read t
015B00:  68 65 20 63 6F 6E 74 65 6E 74 73 0D 0A 09 61 6E    he contents...an
015B10:  69 09 31 09 09 3B 20 74 65 73 74 20 22 61 6C 6C    i.1..; test "all
015B20:  20 64 6F 6E 65 22 20 66 6C 61 67 0D 0A 09 6A 7A     done" flag...jz
015B30:  09 73 6E 64 62 72 31 09 09 3B 20 6C 6F 6F 70 20    .sndbr1..; loop 
015B40:  75 6E 74 69 6C 20 69 74 27 73 20 6E 6F 6E 7A 65    until it's nonze
015B50:  72 6F 2E 0D 0A 3B 0D 0A 3B 09 4E 65 78 74 2C 20    ro...;..;.Next, 
015B60:  73 65 74 20 74 68 65 20 22 73 65 6E 64 20 62 72    set the "send br
015B70:  65 61 6B 22 20 62 69 74 20 74 6F 20 73 74 61 72    eak" bit to star
015B80:  74 20 74 68 65 20 74 72 61 6E 73 6D 69 74 74 65    t the transmitte
015B90:  72 20 73 70 61 63 69 6E 67 2E 0D 0A 09 6D 76 69    r spacing....mvi
015BA0:  09 61 2C 35 09 09 3B 20 73 65 6C 65 63 74 20 57    .a,5..; select W
015BB0:  72 69 74 65 20 52 65 67 69 73 74 65 72 20 35 0D    rite Register 5.
015BC0:  0A 09 6F 75 74 09 6D 6E 70 72 74 73 0D 0A 09 6D    ..out.mnprts...m
015BD0:  76 69 09 61 2C 30 46 41 48 09 09 3B 20 54 78 20    vi.a,0FAH..; Tx 
015BE0:  65 6E 61 62 6C 65 2C 20 38 20 62 69 74 20 54 78    enable, 8 bit Tx
015BF0:  20 63 68 61 72 61 63 74 65 72 2C 20 53 65 6E 64     character, Send
015C00:  09 6A 6D 70 09 72 73 6B 70 09 09 3B 20 74 61 6B    .jmp.rskp..; tak
015C10:  65 20 73 6B 69 70 20 72 65 74 75 72 6E 20 2D 20    e skip return - 
015C20:  63 6F 6D 6D 61 6E 64 20 6E 6F 74 20 72 65 63 6F    command not reco
015C30:  67 6E 69 7A 65 64 2E 0D 0A 0D 0A 3B 0C 0D 0A 49    gnized.....;...I
015C40:  46 20 72 6F 62 69 6E 20 3B 44 65 66 69 6E 69 74    F robin ;Definit
015C50:  69 6F 6E 73 20 26 20 63 6F 64 65 20 74 6F 20 73    ions & code to s
015C60:  65 6E 64 20 61 20 42 52 45 41 4B 20 28 75 6E 67    end a BREAK (ung
015C70:  65 6E 65 72 69 63 61 6C 6C 79 2C 20 6E 6F 20 6F    enerically, no o
015C80:  74 68 65 72 20 77 61 79 29 2E 0D 0A 0D 0A 63 6F    ther way).....co
015C90:  6D 63 74 6C 09 65 71 75 09 35 39 68 09 09 3B 56    mctl.equ.59h..;V
015CA0:  54 31 38 30 20 63 6F 6D 6D 75 6E 69 63 61 74 69    T180 communicati
015CB0:  6F 6E 73 20 70 6F 72 74 0D 0A 63 72 74 63 74 6C    ons port..crtctl
015CC0:  09 65 71 75 09 34 31 68 09 09 3B 56 54 31 38 30    .equ.41h..;VT180
015CD0:  20 63 72 74 20 70 6F 72 74 0D 0A 0D 0A 3B 56 54     crt port....;VT
015CE0:  31 38 30 20 73 65 72 69 61 6C 20 70 6F 72 74 20    180 serial port 
015CF0:  63 6F 6D 6D 61 6E 64 20 62 69 74 73 0D 0A 0D 0A    command bits....
015D00:  74 78 65 09 65 71 75 09 31 09 09 3B 74 72 61 6E    txe.equ.1..;tran
015D10:  73 6D 69 74 20 65 6E 61 62 6C 65 0D 0A 64 74 72    smit enable..dtr
015D20:  09 65 71 75 09 32 09 09 3B 64 74 72 20 6F 6E 0D    .equ.2..;dtr on.
015D30:  0A 72 78 65 09 65 71 75 09 34 09 09 3B 72 78 20    .rxe.equ.4..;rx 
015D40:  65 6E 61 62 6C 65 0D 0A 73 6E 64 62 72 6B 09 65    enable..sndbrk.e
015D50:  71 75 09 38 0D 0A 72 65 72 72 09 65 71 75 09 31    qu.8..rerr.equ.1
015D60:  30 68 09 09 3B 72 65 73 65 74 20 65 72 72 6F 72    0h..;reset error
015D70:  0D 0A 72 74 73 09 65 71 75 09 32 30 68 09 09 3B    ..rts.equ.20h..;
015D80:  52 54 53 20 6F 6E 0D 0A 72 65 73 65 74 09 65 71    RTS on..reset.eq
015D90:  75 09 34 30 68 09 09 3B 70 6F 72 74 20 72 65 73    u.40h..;port res
015DA0:  65 74 0D 0A 0D 0A 3B 53 65 6E 64 20 61 20 62 72    et....;Send a br
015DB0:  65 61 6B 20 74 6F 20 74 68 65 20 63 6F 6D 6D 75    eak to the commu
015DC0:  6E 69 63 61 74 69 6F 6E 73 20 70 6F 72 74 2E 0D    nications port..
015DD0:  0A 3B 0D 0A 0D 0A 73 65 6E 64 62 72 3A 09 6C 78    .;....sendbr:.lx
015DE0:  69 09 68 2C 33 38 35 30 30 09 09 3B 32 35 30 20    i.h,38500..;250 
015DF0:  6D 73 28 3F 29 0D 0A 09 6C 64 61 09 70 72 74 61    ms(?)...lda.prta
015E00:  20 42 72 65 61 6B 2C 0D 0A 09 6F 75 74 09 6D 6E     Break,...out.mn
015E10:  70 72 74 73 09 09 3B 20 20 44 54 52 20 61 6E 64    prts..;  DTR and
015E20:  20 52 54 53 20 6F 6E 2E 0D 0A 3B 0D 0A 3B 09 4E     RTS on...;..;.N
015E30:  6F 77 2C 20 64 65 6C 61 79 20 66 6F 72 20 33 30    ow, delay for 30
015E40:  20 68 75 6E 64 72 65 64 74 68 73 20 6F 66 20 61     hundredths of a
015E50:  20 73 65 63 6F 6E 64 0D 0A 09 6D 76 69 09 61 2C     second...mvi.a,
015E60:  33 30 09 09 3B 20 64 65 6C 61 79 20 63 6F 75 6E    30..; delay coun
015E70:  74 0D 0A 09 63 61 6C 6C 09 64 65 6C 61 79 0D 0A    t...call.delay..
015E80:  3B 0D 0A 3B 09 54 69 6D 65 27 73 20 75 70 2E 20    ;..;.Time's up. 
015E90:  50 75 74 20 74 72 61 6E 73 6D 69 74 74 65 72 20    Put transmitter 
015EA0:  62 61 63 6B 20 69 6E 20 6E 6F 72 6D 61 6C 20 73    back in normal s
015EB0:  74 61 74 65 20 28 64 61 74 61 20 62 79 74 65 20    tate (data byte 
015EC0:  69 73 20 74 68 65 0D 0A 3B 09 73 61 6D 65 20 61    is the..;.same a
015ED0:  73 20 74 68 65 20 6F 6E 65 20 69 6E 20 73 69 6F    s the one in sio
015EE0:  74 62 6C 3A 20 66 6F 72 20 57 72 69 74 65 20 52    tbl: for Write R
015EF0:  65 67 69 73 74 65 72 20 35 29 20 61 6E 64 20 72    egister 5) and r
015F00:  65 74 75 72 6E 2E 0D 0A 09 6D 76 69 09 61 2C 35    eturn....mvi.a,5
015F10:  09 09 3B 20 73 65 6C 65 63 74 20 57 72 69 74 65    ..; select Write
015F20:  20 52 65 67 69 73 74 65 72 20 35 0D 0A 09 6F 75     Register 5...ou
015F30:  74 09 6D 6E 70 72 74 73 0D 0A 09 6D 76 69 09 61    t.mnprts...mvi.a
015F40:  2C 30 45 41 48 09 09 3B 20 54 78 20 65 6E 61 62    ,0EAH..; Tx enab
015F50:  6C 65 2C 20 38 20 62 69 74 20 54 78 20 63 68 61    le, 8 bit Tx cha
015F60:  72 61 63 74 65 72 2C 0D 0A 09 6F 75 74 09 6D 6E    racter,...out.mn
015F70:  70 72 74 73 09 09 3B 20 20 44 54 52 20 61 6E 64    prts..;  DTR and
015F80:  20 52 54 53 20 6F 6E 2E 0D 0A 09 72 65 74 09 09     RTS on....ret..
015F90:  09 3B 20 64 6F 6E 65 2E 0D 0A 45 4E 44 49 46 3B    .; done...ENDIF;
015FA0:  62 62 49 20 4F 52 20 62 62 49 49 0D 0A 0D 0A 49    bbI OR bbII....I
015FB0:  46 20 6C 6F 62 6F 09 3B 5B 68 68 5D 20 09 54 68    F lobo.;[hh] .Th
015FC0:  69 73 20 72 6F 75 74 69 6E 65 20 73 65 6E 64 73    is routine sends
015FD0:  20 61 20 62 72 65 61 6B 20 74 6F 6E 65 20 6F 72     a break tone or
015FE0:  20 64 69 73 63 6F 6E 6E 65 63 74 73 20 61 20 6D     disconnects a m
015FF0:  6F 64 65 6D 0D 0A 3B 09 09 28 74 68 6F 73 65 20    odem..;..(those 
016000:  64 72 09 09 3B 47 65 74 20 61 64 64 72 65 73 73    dr..;Get address
016010:  20 6F 66 20 73 65 6C 65 63 74 65 64 20 70 6F 72     of selected por
016020:  74 0D 0A 09 6D 6F 76 09 63 2C 61 09 09 3B 49 6E    t...mov.c,a..;In
016030:  74 6F 20 43 0D 0A 09 6D 76 69 09 61 2C 73 6E 64    to C...mvi.a,snd
016040:  62 72 6B 2B 64 74 72 0D 0A 3B 09 4F 55 54 09 43    brk+dtr..;.OUT.C
016050:  2C 41 09 09 3B 57 61 6E 74 20 74 6F 20 73 65 6E    ,A..;Want to sen
016060:  64 20 74 6F 20 70 6F 72 74 20 61 64 64 72 65 73    d to port addres
016070:  73 65 64 20 62 79 20 43 0D 0A 09 64 62 09 30 45    sed by C...db.0E
016080:  44 48 2C 30 37 39 48 09 3B 4F 70 20 63 6F 64 65    DH,079H.;Op code
016090:  20 66 6F 72 20 61 62 6F 76 65 20 69 6E 73 74 72     for above instr
0160A0:  75 63 74 69 6F 6E 0D 0A 73 6E 64 62 72 31 3A 09    uction..sndbr1:.
0160B0:  64 63 78 09 68 09 09 3B 74 69 6D 69 6E 67 20 6C    dcx.h..;timing l
0160C0:  6F 6F 70 2E 2E 2E 0D 0A 09 6D 6F 76 09 61 2C 6C    oop......mov.a,l
0160D0:  0D 0A 09 6F 72 61 09 68 0D 0A 09 6A 6E 7A 09 73    ...ora.h...jnz.s
0160E0:  6E 64 62 72 31 09 09 3B 2E 2E 2E 75 6E 74 69 6C    ndbr1..;...until
0160F0:  20 6F 76 65 72 0D 0A 09 6C 64 61 09 70 72 74 61     over...lda.prta
016100:  64 72 09 09 3B 47 65 74 20 74 68 65 20 61 64 64    dr..;Get the add
016110:  72 65 73 73 20 66 6F 72 20 74 68 65 20 70 6F 72    ress for the por
016120:  74 0D 0A 09 6D 6F 76 09 63 2C 61 09 09 3B 49 6E    t...mov.c,a..;In
016130:  74 6F 20 43 0D 0A 09 6D 76 69 09 61 2C 74 78 65    to C...mvi.a,txe
016140:  2B 64 74 72 2B 72 78 65 2B 72 65 72 72 2B 72 74    +dtr+rxe+rerr+rt
016150:  73 09 3B 65 6E 61 62 6C 65 20 74 72 2F 72 63 2C    s.;enable tr/rc,
016160:  20 64 74 72 2C 20 72 65 73 65 74 20 65 72 72 6F     dtr, reset erro
016170:  72 0D 0A 3B 09 6F 75 74 09 63 2C 61 09 09 3B 5A    r..;.out.c,a..;Z
016180:  2D 38 30 20 6F 6E 6C 79 20 69 6E 73 74 72 75 63    -80 only instruc
016190:  74 69 6F 6E 0D 0A 09 64 62 09 30 45 44 48 2C 30    tion...db.0EDH,0
0161A0:  37 39 48 09 3B 4F 70 20 63 6F 64 65 20 66 6F 72    79H.;Op code for
0161B0:  20 61 62 6F 76 65 20 69 6E 73 74 72 75 63 74 69     above instructi
0161C0:  6F 6E 0D 0A 09 6F 75 74 09 63 6F 6E 74 73 74 09    on...out.contst.
0161D0:  09 3B 72 65 73 65 74 20 70 6F 72 74 73 0D 0A 09    .;reset ports...
0161E0:  72 65 74 0D 0A 45 4E 44 49 46 3B 72 6F 62 69 6E    ret..ENDIF;robin
0161F0:  0D 0A 3B 0C 0D 0A 49 46 20 64 6D 49 49 09 09 09    ..;...IF dmII...
016200:  74 68 61 74 20 72 65 73 70 6F 6E 64 20 74 6F 20    that respond to 
016210:  69 74 29 20 62 79 20 73 65 74 74 69 6E 67 20 74    it) by setting t
016220:  68 65 20 44 54 52 20 6C 69 6E 65 20 6C 6F 77 0D    he DTR line low.
016230:  0A 3B 09 09 66 6F 72 20 33 30 30 20 6D 73 2E 0D    .;..for 300 ms..
016240:  0A 3B 0D 0A 73 65 6E 64 62 72 3A 09 6D 76 69 09    .;..sendbr:.mvi.
016250:  61 2C 30 35 48 09 09 3B 5B 68 68 5D 20 77 72 69    a,05H..;[hh] wri
016260:  74 65 20 72 65 67 69 73 74 65 72 20 35 0D 0A 09    te register 5...
016270:  63 61 6C 6C 09 6F 75 74 63 74 6C 09 09 3B 5B 68    call.outctl..;[h
016280:  68 5D 20 73 65 6E 64 20 69 74 20 74 6F 20 63 6F    h] send it to co
016290:  6E 74 72 6F 6C 20 70 6F 72 74 0D 0A 09 6D 76 69    ntrol port...mvi
0162A0:  09 61 2C 30 46 41 48 09 09 3B 5B 68 68 5D 20 76    .a,0FAH..;[hh] v
0162B0:  61 6C 75 65 20 74 6F 20 73 65 6E 64 20 62 72 65    alue to send bre
0162C0:  61 6B 20 74 6F 6E 65 0D 0A 09 6A 6D 70 09 73 6E    ak tone...jmp.sn
0162D0:  64 62 72 31 09 09 3B 5B 68 68 5D 0D 0A 3B 0D 0A    dbr1..;[hh]..;..
0162E0:  64 69 73 63 6F 6E 3A 09 6D 76 69 09 61 2C 30 35    discon:.mvi.a,05
0162F0:  48 09 09 3B 5B 68 68 5D 20 77 72 69 74 65 20 72    H..;[hh] write r
016300:  65 67 69 73 74 65 72 20 35 0D 0A 09 63 61 6C 6C    egister 5...call
016310:  09 6F 75 74 63 74 6C 09 09 3B 5B 68 68 5D 20 73    .outctl..;[hh] s
016320:  65 6E 64 20 69 74 20 74 6F 20 74 68 65 20 63 6F    end it to the co
016330:  6E 74 72 6F 6C 20 70 6F 72 74 0D 0A 09 6D 76 69    ntrol port...mvi
016340:  09 61 2C 30 36 41 48 09 09 3B 5B 68 68 5D 20 44    .a,06AH..;[hh] D
016350:  54 52 20 6F 66 66 20 61 6E 64 20 62 72 65 61 6B    TR off and break
016360:  20 74 6F 6E 65 20 6F 6E 0D 0A 73 6E 64 62 72 31     tone on..sndbr1
016370:  3A 09 63 61 6C 6C 09 6F 75 74 63 74 6C 09 09 3B    :.call.outctl..;
016380:  5B 68 68 5D 20 73 65 6E 64 20 74 6F 20 63 6F 6E    [hh] send to con
016390:  74 72 6F 6C 20 70 6F 72 74 0D 0A 09 6D 76 69 09    trol port...mvi.
0163A0:  61 2C 33 30 09 09 3B 5B 68 68 5D 20 64 65 6C 61    a,30..;[hh] dela
0163B0:  79 20 63 6F 75 6E 74 20 66 6F 72 20 33 30 30 20    y count for 300 
0163C0:  6D 73 2E 0D 0A 09 63 61 6C 6C 09 64 65 6C 61 79    ms....call.delay
0163D0:  09 09 3B 5B 68 68 5D 20 77 61 69 74 20 61 20 77    ..;[hh] wait a w
0163E0:  68 69 6C 65 2E 2E 2E 0D 0A 09 6D 76 69 09 61 2C    hile......mvi.a,
0163F0:  30 35 48 09 09 3B 5B 68 68 5D 20 77 72 69 74 65    05H..;[hh] write
016400:  09 3B 5B 6A 64 5D 20 74 68 69 73 20 61 64 64 65    .;[jd] this adde
016410:  64 20 74 6F 20 73 65 6E 64 20 62 72 65 61 6B 20    d to send break 
016420:  6F 6E 20 44 45 43 6D 61 74 65 0D 0A 0D 0A 3B 20    on DECmate....; 
016430:  44 45 43 6D 61 74 65 20 63 6F 6D 6D 61 6E 64 20    DECmate command 
016440:  63 6F 64 65 73 20 66 6F 72 20 36 31 32 30 20 49    codes for 6120 I
016450:  2F 4F 20 70 72 6F 63 65 73 73 6F 72 0D 0A 6F 62    /O processor..ob
016460:  6F 66 66 09 65 71 75 09 33 66 68 09 09 3B 20 6F    off.equ.3fh..; o
016470:  66 66 73 65 74 20 6F 66 20 6F 75 74 62 79 74 20    ffset of outbyt 
016480:  72 6F 75 74 69 6E 65 20 66 6F 72 20 36 31 32 30    routine for 6120
016490:  0D 0A 70 72 74 63 74 6C 09 65 71 75 09 30 32 68    ..prtctl.equ.02h
0164A0:  09 09 3B 20 70 6F 72 74 20 63 6F 6E 74 72 6F 6C    ..; port control
0164B0:  0D 0A 62 72 64 61 74 09 65 71 75 09 30 36 68 09    ..brdat.equ.06h.
0164C0:  09 3B 20 64 61 74 61 20 74 6F 20 74 65 6C 6C 20    .; data to tell 
0164D0:  36 31 32 30 20 74 6F 20 73 65 6E 64 20 61 20 62    6120 to send a b
0164E0:  72 65 61 6B 0D 0A 62 72 64 75 72 09 65 71 75 09    reak..brdur.equ.
0164F0:  33 30 09 09 3B 20 64 75 72 61 74 69 6F 6E 2C 20    30..; duration, 
016500:  33 30 20 3D 20 33 30 30 20 6D 73 2E 0D 0A 0D 0A    30 = 300 ms.....
016510:  73 65 6E 64 62 72 3A 09 6C 78 69 09 62 2C 28 62    sendbr:.lxi.b,(b
016520:  72 64 61 74 20 2A 20 31 30 30 68 29 20 2B 20 70    rdat * 100h) + p
016530:  72 74 63 74 6C 20 3B 20 63 2F 70 72 74 63 74 6C    rtctl ; c/prtctl
016540:  2C 20 62 2F 62 72 64 61 74 0D 0A 09 63 61 6C 6C    , b/brdat...call
016550:  09 6F 75 74 62 79 74 0D 0A 09 6C 78 69 09 62 2C    .outbyt...lxi.b,
016560:  62 72 64 75 72 2A 31 30 30 68 09 09 3B 20 62 2F    brdur*100h..; b/
016570:  64 75 72 61 74 69 6F 6E 2C 20 63 2F 30 0D 0A 3B    duration, c/0..;
016580:  09 66 61 6C 6C 20 74 68 72 6F 75 67 68 20 69 6E    .fall through in
016590:  74 6F 20 6F 75 74 62 79 74 0D 0A 0D 0A 6F 75 74    to outbyt....out
0165A0:  62 79 74 3A 09 6C 68 6C 64 09 31 09 09 3B 20 67    byt:.lhld.1..; g
0165B0:  65 74 20 77 61 72 6D 20 62 6F 6F 74 20 61 64 64    et warm boot add
0165C0:  72 65 73 73 0D 0A 09 6C 78 69 09 64 2C 6F 62 6F    ress...lxi.d,obo
0165D0:  66 66 09 09 3B 20 6F 66 66 73 65 74 20 6F 66 20    ff..; offset of 
0165E0:  6F 75 74 62 79 74 20 72 6F 75 74 69 6E 65 0D 0A    outbyt routine..
0165F0:  09 64 61 64 09 64 09 09 3B 20 63 6F 6D 70 75 74    .dad.d..; comput
016600:  20 72 65 67 69 73 74 65 72 20 35 0D 0A 09 63 61     register 5...ca
016610:  6C 6C 09 6F 75 74 63 74 6C 09 09 3B 5B 68 68 5D    ll.outctl..;[hh]
016620:  20 67 65 74 20 69 74 27 73 20 61 74 74 65 6E 74     get it's attent
016630:  69 6F 6E 0D 0A 09 6D 76 69 09 61 2C 30 45 41 48    ion...mvi.a,0EAH
016640:  09 09 3B 5B 68 68 5D 20 6E 6F 72 6D 61 6C 20 38    ..;[hh] normal 8
016650:  20 62 69 74 73 2C 20 44 54 52 20 6F 6E 2C 20 52     bits, DTR on, R
016660:  54 53 20 6F 6E 2C 20 65 74 63 2E 0D 0A 09 63 61    TS on, etc....ca
016670:  6C 6C 09 6F 75 74 63 74 6C 09 09 3B 5B 68 68 5D    ll.outctl..;[hh]
016680:  20 72 65 73 74 6F 72 65 20 53 49 4F 0D 0A 09 72     restore SIO...r
016690:  65 74 0D 0A 3B 0D 0A 6F 75 74 63 74 6C 3A 09 73    et..;..outctl:.s
0166A0:  74 61 09 6D 6E 70 72 74 73 09 09 3B 5B 68 68 5D    ta.mnprts..;[hh]
0166B0:  0D 0A 09 72 65 74 0D 0A 45 4E 44 49 46 09 3B 6C    ...ret..ENDIF.;l
0166C0:  6F 62 6F 0D 0A 3B 0C 0D 0A 0D 0A 49 46 20 63 70    obo..;.....IF cp
0166D0:  74 38 35 78 78 09 09 09 3B 5B 6C 6D 6A 5D 20 73    t85xx...;[lmj] s
0166E0:  65 6E 64 20 62 72 65 61 6B 20 6F 6E 20 63 70 74    end break on cpt
0166F0:  38 35 78 78 0D 0A 73 65 6E 64 62 72 3A 0D 0A 3B    85xx..sendbr:..;
016700:  0D 0A 3B 09 45 6E 73 75 72 65 20 74 68 61 74 20    ..;.Ensure that 
016710:  74 68 65 20 74 72 61 6E 73 6D 69 74 74 65 72 20    the transmitter 
016720:  68 61 73 20 66 69 6E 69 73 68 65 64 20 73 65 6E    has finished sen
016730:  64 69 6E 67 20 62 75 66 66 65 72 65 64 20 63 68    ding buffered ch
016740:  61 72 73 0D 0A 73 6E 64 62 72 31 3A 09 69 6E 09    ars..sndbr1:.in.
016750:  6D 6E 70 72 74 73 09 09 3B 20 67 65 74 20 55 41    mnprts..; get UA
016760:  52 54 20 73 74 61 74 75 73 0D 0A 09 61 6E 69 09    RT status...ani.
016770:  54 78 45 6D 70 74 79 09 09 3B 20 65 76 65 72 79    TxEmpty..; every
016780:  74 68 69 6E 67 20 73 65 6E 74 3F 0D 0A 09 6A 7A    thing sent?...jz
016790:  09 73 6E 64 62 72 31 09 09 3B 20 6E 6F 2C 20 77    .sndbr1..; no, w
0167A0:  61 69 74 20 61 20 62 69 74 20 6D 6F 72 65 0D 0A    ait a bit more..
0167B0:  3B 0D 0A 3B 09 42 65 67 69 6E 20 73 65 6E 64 69    ;..;.Begin sendi
0167C0:  6E 67 20 61 20 62 72 65 61 6B 20 62 79 20 73 65    ng a break by se
0167D0:  74 74 69 6E 67 20 62 69 74 20 69 6E 20 55 41 52    tting bit in UAR
0167E0:  54 20 63 6F 6D 6D 61 6E 64 20 72 65 67 69 73 74    T command regist
0167F0:  65 72 0D 0A 09 6D 76 69 09 61 2C 33 46 68 09 09    er...mvi.a,3Fh..
016800:  65 20 61 64 64 72 65 73 73 0D 0A 09 70 63 68 6C    e address...pchl
016810:  09 09 09 3B 20 62 72 61 6E 63 68 20 74 68 65 72    ...; branch ther
016820:  65 20 28 61 20 63 61 6C 6C 72 65 74 29 0D 0A 0D    e (a callret)...
016830:  0A 45 4E 44 49 46 3B 64 6D 49 49 0D 0A 3B 0C 0D    .ENDIF;dmII..;..
016840:  0A 49 46 20 62 62 49 20 4F 52 20 62 62 49 49 09    .IF bbI OR bbII.
016850:  09 09 3B 5B 63 6A 63 5D 20 73 65 6E 64 20 62 72    ..;[cjc] send br
016860:  65 61 6B 20 6F 6E 20 4B 61 79 70 72 6F 20 61 6E    eak on Kaypro an
016870:  64 20 62 62 49 49 0D 0A 3B 20 4F 66 66 69 63 69    d bbII..; Offici
016880:  61 6C 6C 79 2C 20 61 20 22 62 72 65 61 6B 22 20    ally, a "break" 
016890:  69 73 20 33 30 30 20 6D 69 6C 6C 69 73 65 63 6F    is 300 milliseco
0168A0:  6E 64 73 20 6F 66 20 22 73 70 61 63 65 22 20 28    nds of "space" (
0168B0:  69 64 6C 65 20 6C 69 6E 65 20 69 73 0D 0A 3B 20    idle line is..; 
0168C0:  22 6D 61 72 6B 22 29 2E 20 20 28 6F 72 20 6D 61    "mark").  (or ma
0168D0:  79 62 65 20 32 30 30 20 6D 69 6C 6C 69 73 65 63    ybe 200 millisec
0168E0:  6F 6E 64 73 3B 20 49 20 66 6F 72 67 65 74 2E 29    onds; I forget.)
0168F0:  20 20 54 68 65 20 74 69 6D 69 6E 67 20 69 73 6E      The timing isn
016900:  27 74 0D 0A 3B 20 75 73 75 61 6C 6C 79 20 74 68    't..; usually th
016910:  61 74 20 63 72 69 74 69 63 61 6C 2C 20 62 75 74    at critical, but
016920:  20 77 65 27 6C 6C 20 6D 61 6B 65 20 61 6E 20 61     we'll make an a
016930:  74 74 65 6D 70 74 2C 20 61 74 20 6C 65 61 73 74    ttempt, at least
016940:  2E 20 20 53 65 6E 64 69 6E 67 0D 0A 3B 20 74 6F    .  Sending..; to
016950:  6F 20 6C 6F 6E 67 20 61 20 62 72 65 61 6B 20 63    o long a break c
016960:  61 6E 20 63 61 75 73 65 20 73 6F 6D 65 20 6D 6F    an cause some mo
016970:  64 65 6D 73 20 74 6F 20 68 61 6E 67 20 75 70 2E    dems to hang up.
016980:  0D 0A 0D 0A 73 65 6E 64 62 72 3A 09 0D 0A 3B 09    ....sendbr:...;.
016990:  46 69 72 73 74 2C 20 6D 61 6B 65 20 73 75 72 65    First, make sure
0169A0:  20 74 68 65 20 74 72 61 6E 73 6D 69 74 74 65 72     the transmitter
0169B0:  20 69 73 20 72 65 61 6C 6C 79 20 65 6D 70 74 79     is really empty
0169C0:  2E 20 20 28 54 68 65 20 53 49 4F 20 73 65 74 73    .  (The SIO sets
0169D0:  0D 0A 3B 09 22 74 72 61 6E 73 6D 69 74 74 65 72    ..;."transmitter
0169E0:  20 62 75 66 66 65 72 20 65 6D 70 74 79 22 20 77     buffer empty" w
0169F0:  68 65 6E 20 69 74 20 63 61 6E 20 61 63 63 65 70    hen it can accep
016A00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
016A10:  13 00 00 00 02 09 4E E5 13 00 C1 02 00 00 00 02    ......N.........
016A20:  13 00 C6 02 00 00 00 02 13 00 C2 02 00 00 00 02    ................
016A30:  13 00 C7 02 00 00 00 02 13 00 C3 02 00 00 00 02    ................
016A40:  13 00 C8 02 00 00 00 02 13 00 C4 02 00 00 00 02    ................
016A50:  13 00 C9 02 00 00 00 02 13 00 C5 02 00 00 00 02    ................
016A60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016A70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016A80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016A90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016B00:  3B 20 53 65 74 20 54 78 45 6E 61 2C 20 44 54 52    ; Set TxEna, DTR
016B10:  2C 20 52 78 45 6E 61 2C 20 53 42 72 65 61 6B 2C    , RxEna, SBreak,
016B20:  20 45 72 72 52 73 74 2C 20 52 54 53 0D 0A 09 6F     ErrRst, RTS...o
016B30:  75 74 09 6D 6E 70 72 74 73 0D 0A 3B 0D 0A 3B 09    ut.mnprts..;..;.
016B40:  57 61 69 74 20 66 6F 72 20 32 35 30 20 6D 69 6C    Wait for 250 mil
016B50:  6C 69 73 65 63 6F 6E 64 73 20 28 75 73 69 6E 67    liseconds (using
016B60:  20 68 75 6E 64 72 65 64 74 68 73 20 73 65 63 6F     hundredths seco
016B70:  6E 64 20 64 65 61 6C 79 20 72 6F 75 74 69 6E 65    nd dealy routine
016B80:  29 0D 0A 09 6D 76 69 09 61 2C 32 35 0D 0A 09 63    )...mvi.a,25...c
016B90:  61 6C 6C 09 64 65 6C 61 79 0D 0A 3B 0D 0A 3B 09    all.delay..;..;.
016BA0:  52 65 73 75 6D 65 20 6E 6F 72 6D 61 6C 20 6F 70    Resume normal op
016BB0:  65 72 61 74 69 6F 6E 20 62 79 20 63 6C 65 61 72    eration by clear
016BC0:  69 6E 67 20 74 68 65 20 53 65 6E 64 42 72 65 61    ing the SendBrea
016BD0:  6B 20 63 6F 6D 6D 61 6E 64 20 62 69 74 0D 0A 09    k command bit...
016BE0:  6D 76 69 09 61 2C 33 37 68 09 09 3B 53 65 74 20    mvi.a,37h..;Set 
016BF0:  54 78 45 6E 61 2C 20 44 54 52 2C 20 52 78 45 6E    TxEna, DTR, RxEn
016C00:  61 2C 20 45 72 72 52 73 74 2C 20 52 54 53 0D 0A    a, ErrRst, RTS..
016C10:  09 6F 75 74 09 6D 6E 70 72 74 73 0D 0A 3B 0D 0A    .out.mnprts..;..
016C20:  09 72 65 74 09 09 09 3B 64 6F 6E 65 0D 0A 45 4E    .ret...;done..EN
016C30:  44 49 46 3B 63 70 74 38 35 78 78 0D 0A 0D 0A 3B    DIF;cpt85xx....;
016C40:  0C 0D 0A 49 46 20 68 65 61 74 68 0D 0A 3B 0D 0A    ...IF heath..;..
016C50:  3B 09 53 65 6E 64 20 42 52 45 41 4B 20 6F 6E 20    ;.Send BREAK on 
016C60:  48 38 39 0D 0A 3B 0D 0A 73 65 6E 64 62 72 3A 09    H89..;..sendbr:.
016C70:  69 6E 09 6D 6E 70 6F 72 74 2B 61 63 65 6C 63 72    in.mnport+acelcr
016C80:  0D 0A 09 6F 72 69 09 61 63 65 73 62 0D 0A 09 6F    ...ori.acesb...o
016C90:  75 74 09 6D 6E 70 6F 72 74 2B 61 63 65 6C 63 72    ut.mnport+acelcr
016CA0:  09 3B 20 73 65 74 20 41 43 45 20 62 72 65 61 6B    .; set ACE break
016CB0:  20 63 6F 6E 64 69 74 69 6F 6E 0D 0A 09 6D 76 69     condition...mvi
016CC0:  09 61 2C 33 30 0D 0A 09 63 61 6C 6C 09 64 65 6C    .a,30...call.del
016CD0:  61 79 09 09 3B 20 77 61 69 74 20 33 30 30 20 6D    ay..; wait 300 m
016CE0:  69 6C 6C 69 73 65 63 6F 6E 64 73 0D 0A 09 69 6E    illiseconds...in
016CF0:  09 6D 6E 70 6F 72 74 2B 61 63 65 6C 63 72 0D 0A    .mnport+acelcr..
016D00:  68 5D 0D 0A 09 63 61 6C 6C 09 64 69 73 63 6F 6E    h]...call.discon
016D10:  09 09 3B 5B 68 68 5D 20 66 6F 72 63 65 20 6D 6F    ..;[hh] force mo
016D20:  64 65 6D 20 74 6F 20 68 61 6E 67 20 75 70 0D 0A    dem to hang up..
016D30:  45 4E 44 49 46 3B 6C 6F 62 6F 0D 0A 09 72 65 74    ENDIF;lobo...ret
016D40:  0D 0A 3B 0C 0D 0A 3B 09 54 68 69 73 20 69 73 20    ..;...;.This is 
016D50:  74 68 65 20 73 79 73 74 65 6D 2D 64 65 70 65 6E    the system-depen
016D60:  64 65 6E 74 20 63 6F 6D 6D 61 6E 64 20 74 6F 20    dent command to 
016D70:  63 68 61 6E 67 65 20 74 68 65 20 62 61 75 64 20    change the baud 
016D80:  72 61 74 65 2E 0D 0A 3B 09 44 45 20 63 6F 6E 74    rate...;.DE cont
016D90:  61 69 6E 73 20 74 68 65 20 74 77 6F 2D 62 79 74    ains the two-byt
016DA0:  65 20 76 61 6C 75 65 20 66 72 6F 6D 20 74 68 65    e value from the
016DB0:  20 62 61 75 64 20 72 61 74 65 20 74 61 62 6C 65     baud rate table
016DC0:  3B 20 74 68 69 73 0D 0A 3B 09 76 61 6C 75 65 20    ; this..;.value 
016DD0:  69 73 20 61 6C 73 6F 20 73 74 6F 72 65 64 20 69    is also stored i
016DE0:  6E 20 27 73 70 65 65 64 27 2E 0D 0A 73 79 73 73    n 'speed'...syss
016DF0:  70 64 3A 0D 0A 0D 0A 3B 20 53 65 74 20 74 68 65    pd:....; Set the
016E00:  20 73 70 65 65 64 20 66 6F 72 20 74 68 65 20 42     speed for the B
016E10:  72 61 69 6E 0D 0A 49 46 20 62 72 61 69 6E 0D 0A    rain..IF brain..
016E20:  09 6C 64 61 09 62 61 75 64 72 74 09 09 3B 47 65    .lda.baudrt..;Ge
016E30:  74 20 74 68 65 20 70 72 65 73 65 6E 74 20 62 61    t the present ba
016E40:  75 64 20 72 61 74 65 73 2E 0D 0A 09 61 6E 69 09    ud rates....ani.
016E50:  30 66 48 09 09 3B 74 75 72 6E 20 6F 66 66 20 74    0fH..;turn off t
016E60:  68 65 20 6C 65 66 74 0D 0A 09 6D 6F 76 09 64 2C    he left...mov.d,
016E70:  61 09 09 3B 53 65 74 20 69 74 20 61 73 69 64 65    a..;Set it aside
016E80:  2E 0D 0A 09 6D 6F 76 09 61 2C 65 09 09 3B 47 65    ....mov.a,e..;Ge
016E90:  74 20 74 68 65 20 6E 65 77 20 62 61 75 64 20 72    t the new baud r
016EA0:  61 74 65 2E 0D 0A 09 72 6C 63 09 09 09 3B 53 68    ate....rlc...;Sh
016EB0:  69 66 74 20 6C 65 66 74 20 34 20 70 6C 61 63 65    ift left 4 place
016EC0:  73 2E 0D 0A 09 72 6C 63 0D 0A 09 72 6C 63 0D 0A    s....rlc...rlc..
016ED0:  09 72 6C 63 0D 0A 09 6F 72 61 09 64 09 09 3B 20    .rlc...ora.d..; 
016EE0:  63 6F 6D 62 69 6E 65 20 77 69 74 68 20 74 68 65    combine with the
016EF0:  20 6F 6C 64 20 62 61 75 64 20 72 61 74 65 0D 0A     old baud rate..
016F00:  09 61 6E 69 09 30 46 46 48 2D 61 63 65 73 62 0D    .ani.0FFH-acesb.
016F10:  0A 09 6F 75 74 09 6D 6E 70 6F 72 74 2B 61 63 65    ..out.mnport+ace
016F20:  6C 63 72 09 3B 20 61 6E 64 20 63 6C 65 61 72 20    lcr.; and clear 
016F30:  41 43 45 20 62 72 65 61 6B 20 63 6F 6E 64 69 74    ACE break condit
016F40:  69 6F 6E 0D 0A 09 72 65 74 0D 0A 0D 0A 45 4E 44    ion...ret....END
016F50:  49 46 3B 68 65 61 74 68 0D 0A 0D 0A 49 46 20 62    IF;heath....IF b
016F60:  62 49 20 4F 52 20 62 62 49 49 20 4F 52 20 63 70    bI OR bbII OR cp
016F70:  74 38 35 78 78 20 4F 52 20 68 65 61 74 68 20 4F    t85xx OR heath O
016F80:  52 20 6C 6F 62 6F 0D 0A 3B 0D 0A 3B 5B 63 6A 63    R lobo..;..;[cjc
016F90:  5D 09 44 65 6C 61 79 20 72 6F 75 74 69 6E 65 2E    ].Delay routine.
016FA0:  20 20 43 61 6C 6C 65 64 20 77 69 74 68 20 74 69      Called with ti
016FB0:  6D 65 20 28 68 75 6E 64 72 65 64 74 68 73 20 6F    me (hundredths o
016FC0:  66 20 73 65 63 6F 6E 64 73 29 20 69 6E 20 41 2E    f seconds) in A.
016FD0:  0D 0A 3B 09 54 68 65 20 69 6E 6E 65 72 20 6C 6F    ..;.The inner lo
016FE0:  6F 70 20 64 65 6C 61 79 73 20 31 30 30 31 20 54    op delays 1001 T
016FF0:  2D 73 74 61 74 65 73 2C 20 61 73 73 75 6D 69 6E    -states, assumin
017000:  67 20 6E 6F 20 77 61 69 74 20 73 74 61 74 65 73    g no wait states
017010:  20 61 72 65 0D 0A 3B 09 69 6E 73 65 72 74 65 64     are..;.inserted
017020:  3B 20 74 68 69 73 20 69 73 20 72 65 70 65 61 74    ; this is repeat
017030:  65 64 20 43 50 55 53 50 44 20 74 69 6D 65 73 2C    ed CPUSPD times,
017040:  20 66 6F 72 20 61 20 74 6F 74 61 6C 20 64 65 6C     for a total del
017050:  61 79 20 6F 66 20 6A 75 73 74 0D 0A 3B 09 6F 76    ay of just..;.ov
017060:  65 72 20 30 2E 30 31 20 73 65 63 6F 6E 64 2E 20    er 0.01 second. 
017070:  28 43 50 55 53 50 44 20 73 68 6F 75 6C 64 20 62    (CPUSPD should b
017080:  65 20 73 65 74 20 74 6F 20 74 68 65 20 73 79 73    e set to the sys
017090:  74 65 6D 20 63 6C 6F 63 6B 20 72 61 74 65 2C 0D    tem clock rate,.
0170A0:  0A 3B 09 69 6E 20 75 6E 69 74 73 20 6F 66 20 31    .;.in units of 1
0170B0:  30 30 4B 48 7A 3A 20 66 6F 72 20 61 6E 20 75 6E    00KHz: for an un
0170C0:  6D 6F 64 69 66 69 65 64 20 4B 61 79 70 72 6F 20    modified Kaypro 
0170D0:  49 49 2C 20 74 68 61 74 27 73 20 32 35 20 66 6F    II, that's 25 fo
0170E0:  72 0D 0A 3B 09 32 2E 35 20 4D 48 7A 2E 20 20 53    r..;.2.5 MHz.  S
0170F0:  6F 6D 65 20 65 6E 74 65 72 70 72 69 73 69 6E 67    ome enterprising
017100:  09 73 74 61 09 62 61 75 64 72 74 09 09 3B 53 74    .sta.baudrt..;St
017110:  6F 72 65 20 74 68 65 20 6E 65 77 20 62 61 75 64    ore the new baud
017120:  20 72 61 74 65 73 2E 0D 0A 09 6F 75 74 09 62 61     rates....out.ba
017130:  75 64 73 74 09 09 3B 53 65 74 20 74 68 65 20 62    udst..;Set the b
017140:  61 75 64 20 72 61 74 65 73 2E 0D 0A 09 72 65 74    aud rates....ret
017150:  0D 0A 45 4E 44 49 46 3B 62 72 61 69 6E 0D 0A 0D    ..ENDIF;brain...
017160:  0A 3B 20 53 65 74 20 74 68 65 20 73 70 65 65 64    .; Set the speed
017170:  20 66 6F 72 20 74 68 65 20 4F 73 62 6F 72 6E 65     for the Osborne
017180:  20 49 0D 0A 49 46 20 6F 73 62 72 6E 31 0D 0A 09     I..IF osbrn1...
017190:  6D 76 69 09 61 2C 6F 73 62 69 6E 31 09 3B 52 65    mvi.a,osbin1.;Re
0171A0:  73 65 74 20 74 68 65 20 41 43 49 41 0D 0A 09 63    set the ACIA...c
0171B0:  61 6C 6C 09 6F 73 73 74 73 74 09 09 3B 57 72 69    all.osstst..;Wri
0171C0:  74 65 20 74 68 65 20 63 6F 6E 74 72 6F 6C 20 70    te the control p
0171D0:  6F 72 74 0D 0A 6F 73 62 73 31 3A 09 69 6E 72 09    ort..osbs1:.inr.
0171E0:  63 09 09 3B 57 61 69 74 69 6E 67 20 6C 6F 6F 70    c..;Waiting loop
0171F0:  0D 0A 09 6A 6E 7A 09 6F 73 62 73 31 0D 0A 09 6D    ...jnz.osbs1...m
017200:  6F 76 09 61 2C 65 09 09 3B 20 67 65 74 20 74 68    ov.a,e..; get th
017210:  65 20 73 70 65 63 69 66 69 65 64 20 73 70 65 65    e specified spee
017220:  64 0D 0A 09 6A 6D 70 09 6F 73 73 74 73 74 09 09    d...jmp.osstst..
017230:  3B 57 72 69 74 65 20 74 68 65 20 63 6F 6E 74 72    ;Write the contr
017240:  6F 6C 20 72 65 67 2E 0D 0A 45 4E 44 49 46 3B 6F    ol reg...ENDIF;o
017250:  73 62 72 6E 31 0D 0A 0D 0A 3B 20 53 65 74 20 74    sbrn1....; Set t
017260:  68 65 20 73 70 65 65 64 20 66 6F 72 20 62 69 67    he speed for big
017270:  62 6F 61 72 64 20 49 49 0D 0A 49 46 20 62 62 49    board II..IF bbI
017280:  49 0D 0A 09 64 69 09 09 09 3B 20 64 6F 6E 27 74    I...di...; don't
017290:  20 6C 65 74 20 61 6E 79 74 68 69 6E 67 20 62 65     let anything be
0172A0:  74 77 65 65 6E 20 74 68 65 20 64 61 74 61 20 62    tween the data b
0172B0:  79 74 65 73 0D 0A 09 6D 76 69 09 61 2C 30 31 30    ytes...mvi.a,010
0172C0:  30 30 31 31 31 62 09 3B 20 67 65 74 20 74 68 65    00111b.; get the
0172D0:  20 63 6F 6D 6D 61 6E 64 20 62 79 74 65 20 28 6C     command byte (l
0172E0:  6F 61 64 20 74 69 6D 65 20 63 6F 6E 73 74 61 6E    oad time constan
0172F0:  74 29 0D 0A 09 6F 75 74 09 62 61 75 64 72 74 09    t)...out.baudrt.
017300:  20 73 6F 75 6C 20 63 6F 75 6C 64 20 64 65 74 65     soul could dete
017310:  72 6D 69 6E 65 20 77 68 65 74 68 65 72 20 6F 72    rmine whether or
017320:  20 6E 6F 74 20 74 68 65 0D 0A 3B 09 4B 61 79 70     not the..;.Kayp
017330:  72 6F 20 61 63 74 75 61 6C 6C 79 20 69 6E 73 65    ro actually inse
017340:  72 74 73 20 61 20 77 61 69 74 20 73 74 61 74 65    rts a wait state
017350:  20 6F 6E 20 69 6E 73 74 72 75 63 74 69 6F 6E 20     on instruction 
017360:  66 65 74 63 68 20 28 61 20 63 6F 6D 6D 6F 6E 0D    fetch (a common.
017370:  0A 3B 09 70 72 61 63 74 69 63 65 29 3B 20 69 66    .;.practice); if
017380:  20 73 6F 2C 20 74 68 65 20 6D 61 67 69 63 20 6E     so, the magic n
017390:  75 6D 62 65 72 20 61 74 20 64 65 6C 61 79 32 20    umber at delay2 
0173A0:  6E 65 65 64 73 20 74 6F 20 62 65 20 64 65 63 72    needs to be decr
0173B0:  65 61 73 65 64 2E 0D 0A 3B 09 28 57 65 20 61 6C    eased...;.(We al
0173C0:  73 6F 20 6E 65 67 6C 65 63 74 20 74 6F 20 63 6F    so neglect to co
0173D0:  6E 73 69 64 65 72 20 74 69 6D 65 20 73 70 65 6E    nsider time spen
0173E0:  74 20 61 74 20 69 6E 74 65 72 72 75 70 74 20 6C    t at interrupt l
0173F0:  65 76 65 6C 29 2E 0D 0A 3B 0D 0A 3B 09 63 61 6C    evel)...;..;.cal
017400:  6C 65 64 20 62 79 3A 20 73 65 6E 64 62 72 0D 0A    led by: sendbr..
017410:  3B 09 64 65 73 74 72 6F 79 73 20 42 43 0D 0A 0D    ;.destroys BC...
017420:  0A 64 65 6C 61 79 3A 09 6D 76 69 09 63 2C 63 70    .delay:.mvi.c,cp
017430:  75 73 70 64 09 3B 20 4E 75 6D 62 65 72 20 6F 66    uspd.; Number of
017440:  20 74 69 6D 65 73 20 74 6F 20 77 61 69 74 20 31     times to wait 1
017450:  30 30 30 20 54 2D 73 74 61 74 65 73 20 74 6F 0D    000 T-states to.
017460:  0A 09 09 09 09 3B 20 20 6D 61 6B 65 20 2E 30 31    .....;  make .01
017470:  20 73 65 63 6F 6E 64 20 64 65 6C 61 79 0D 0A 64     second delay..d
017480:  65 6C 61 79 32 3A 09 6D 76 69 09 62 2C 37 30 09    elay2:.mvi.b,70.
017490:  09 3B 20 4E 75 6D 62 65 72 20 6F 66 20 74 69 6D    .; Number of tim
0174A0:  65 73 20 74 6F 20 65 78 65 63 75 74 65 20 69 6E    es to execute in
0174B0:  6E 65 72 20 6C 6F 6F 70 20 74 6F 0D 0A 09 09 09    ner loop to.....
0174C0:  09 3B 20 20 6D 61 6B 65 20 31 30 30 30 20 54 2D    .;  make 1000 T-
0174D0:  73 74 61 74 65 20 64 65 6C 61 79 0D 0A 64 65 6C    state delay..del
0174E0:  61 79 33 3A 09 64 63 72 09 62 09 09 3B 20 34 20    ay3:.dcr.b..; 4 
0174F0:  54 2D 73 74 61 74 65 73 20 28 2A 20 37 30 20 2A    T-states (* 70 *
017500:  09 3B 20 6F 75 74 70 75 74 20 69 74 20 74 6F 20    .; output it to 
017510:  43 54 43 0D 0A 09 6D 6F 76 09 61 2C 65 09 09 3B    CTC...mov.a,e..;
017520:  20 47 65 74 20 74 68 65 20 70 61 72 73 65 64 20     Get the parsed 
017530:  76 61 6C 75 65 2E 0D 0A 09 6F 75 74 09 62 61 75    value....out.bau
017540:  64 72 74 09 09 3B 20 54 65 6C 6C 20 74 68 65 20    drt..; Tell the 
017550:  62 61 75 64 20 72 61 74 65 20 67 65 6E 65 72 61    baud rate genera
017560:  74 6F 72 2E 0D 0A 09 65 69 09 09 09 3B 20 65 6E    tor....ei...; en
017570:  64 20 6F 66 20 63 72 69 74 69 63 61 6C 20 73 65    d of critical se
017580:  63 74 69 6F 6E 0D 0A 09 72 65 74 0D 0A 45 4E 44    ction...ret..END
017590:  49 46 3B 62 62 49 49 0D 0A 0D 0A 3B 5B 68 68 5D    IF;bbII....;[hh]
0175A0:  20 73 65 74 20 74 68 65 20 73 70 65 65 64 20 66     set the speed f
0175B0:  6F 72 20 61 20 6C 6F 62 6F 20 4D 41 58 2D 38 30    or a lobo MAX-80
0175C0:  0D 0A 49 46 20 6C 6F 62 6F 0D 0A 09 6D 6F 76 09    ..IF lobo...mov.
0175D0:  61 2C 65 09 09 3B 5B 68 68 5D 20 67 65 74 20 74    a,e..;[hh] get t
0175E0:  68 65 20 70 61 72 73 65 64 20 76 61 6C 75 65 0D    he parsed value.
0175F0:  0A 73 65 74 62 64 3A 09 73 74 61 09 62 61 75 64    .setbd:.sta.baud
017600:  72 74 09 09 3B 5B 68 68 5D 20 61 6E 64 20 73 65    rt..;[hh] and se
017610:  6E 64 20 69 74 20 74 6F 20 74 68 65 20 62 61 75    nd it to the bau
017620:  64 20 72 61 74 65 20 70 6F 72 74 0D 0A 09 72 65    d rate port...re
017630:  74 09 09 09 3B 5B 68 68 5D 0D 0A 45 4E 44 49 46    t...;[hh]..ENDIF
017640:  3B 6C 6F 62 6F 0D 0A 0D 0A 3B 20 53 65 74 20 74    ;lobo....; Set t
017650:  68 65 20 73 70 65 65 64 20 66 6F 72 20 62 69 67    he speed for big
017660:  62 6F 61 72 64 20 49 20 6F 72 20 74 68 65 20 64    board I or the d
017670:  65 6C 70 68 69 20 6F 72 20 74 68 65 20 43 50 54    elphi or the CPT
017680:  2D 38 35 78 78 20 6F 72 20 4E 6F 72 74 68 73 74    -85xx or Northst
017690:  61 72 0D 0A 49 46 20 62 62 49 20 4F 52 20 64 65    ar..IF bbI OR de
0176A0:  6C 70 68 69 20 4F 52 20 63 70 74 38 35 78 78 0D    lphi OR cpt85xx.
0176B0:  0A 09 6D 6F 76 09 61 2C 65 09 09 3B 20 67 65 74    ..mov.a,e..; get
0176C0:  20 74 68 65 20 70 61 72 73 65 64 20 76 61 6C 75     the parsed valu
0176D0:  65 0D 0A 09 6F 75 74 09 62 61 75 64 72 74 09 09    e...out.baudrt..
0176E0:  3B 20 54 65 6C 6C 20 74 68 65 20 62 61 75 64 20    ; Tell the baud 
0176F0:  72 61 74 65 20 67 65 6E 65 72 61 74 6F 72 2E 0D    rate generator..
017700:  20 63 70 75 73 70 64 29 0D 0A 09 6A 6E 7A 09 64     cpuspd)...jnz.d
017710:  65 6C 61 79 33 09 09 3B 20 31 30 20 54 2D 73 74    elay3..; 10 T-st
017720:  61 74 65 73 20 28 2A 20 37 30 20 2A 20 63 70 75    ates (* 70 * cpu
017730:  73 70 64 29 0D 0A 09 64 63 72 09 63 09 09 3B 20    spd)...dcr.c..; 
017740:  34 20 54 2D 73 74 61 74 65 73 20 28 2A 20 63 70    4 T-states (* cp
017750:  75 73 70 64 29 0D 0A 09 6A 6E 7A 09 64 65 6C 61    uspd)...jnz.dela
017760:  79 32 09 09 3B 20 31 30 20 54 2D 73 74 61 74 65    y2..; 10 T-state
017770:  73 20 28 2A 20 63 70 75 73 70 64 29 0D 0A 09 09    s (* cpuspd)....
017780:  09 09 3B 20 74 6F 74 61 6C 20 64 65 6C 61 79 3A    ..; total delay:
017790:  20 28 28 31 34 20 2A 20 37 30 29 20 2B 20 31 34     ((14 * 70) + 14
0177A0:  29 20 2A 20 63 70 75 73 70 64 0D 0A 09 09 09 09    ) * cpuspd......
0177B0:  3B 20 20 3D 20 31 30 30 31 20 2A 20 63 70 75 73    ;  = 1001 * cpus
0177C0:  70 64 0D 0A 09 64 63 72 09 61 09 09 3B 20 34 20    pd...dcr.a..; 4 
0177D0:  54 2D 73 74 61 74 65 73 0D 0A 09 6A 6E 7A 09 64    T-states...jnz.d
0177E0:  65 6C 61 79 09 09 3B 20 31 30 20 54 2D 73 74 61    elay..; 10 T-sta
0177F0:  74 65 73 0D 0A 09 72 65 74 09 09 09 3B 20 67 72    tes...ret...; gr
017800:  61 6E 64 20 74 6F 74 61 6C 3A 20 28 28 31 30 30    and total: ((100
017810:  31 20 2A 20 63 70 75 73 70 64 29 20 2B 20 31 34    1 * cpuspd) + 14
017820:  29 20 2A 20 61 0D 0A 45 4E 44 49 46 3B 62 62 49    ) * a..ENDIF;bbI
017830:  20 4F 52 20 62 62 49 49 20 4F 52 20 63 70 74 38     OR bbII OR cpt8
017840:  35 78 78 20 4F 52 20 68 65 61 74 68 20 4F 52 20    5xx OR heath OR 
017850:  6C 6F 62 6F 0D 0A 3B 0C 0D 0A 3B 0D 0A 3B 09 73    lobo..;...;..;.s
017860:  79 73 66 6C 74 20 2D 20 73 79 73 74 65 6D 2D 64    ysflt - system-d
017870:  65 70 65 6E 64 65 6E 74 20 66 69 6C 74 65 72 0D    ependent filter.
017880:  0A 3B 09 63 61 6C 6C 65 64 20 77 69 74 68 20 63    .;.called with c
017890:  68 61 72 61 63 74 65 72 20 69 6E 20 45 2E 0D 0A    haracter in E...
0178A0:  3B 09 69 66 20 74 68 69 73 20 63 68 61 72 61 63    ;.if this charac
0178B0:  74 65 72 20 73 68 6F 75 6C 64 20 6E 6F 74 20 62    ter should not b
0178C0:  65 20 70 72 69 6E 74 65 64 2C 20 72 65 74 75 72    e printed, retur
0178D0:  6E 20 77 69 74 68 20 41 20 3D 20 7A 65 72 6F 2E    n with A = zero.
0178E0:  0D 0A 3B 09 70 72 65 73 65 72 76 65 73 20 62 63    ..;.preserves bc
0178F0:  2C 20 64 65 2C 20 68 6C 2E 0D 0A 3B 09 6E 6F 74    , de, hl...;.not
017900:  0A 09 72 65 74 0D 0A 45 4E 44 49 46 3B 62 62 49    ..ret..ENDIF;bbI
017910:  20 4F 52 20 64 65 6C 70 68 69 20 4F 52 20 63 70     OR delphi OR cp
017920:  74 38 35 78 78 20 4F 52 20 6E 6F 72 74 68 73 0D    t85xx OR norths.
017930:  0A 0D 0A 3B 20 53 65 74 20 74 68 65 20 73 70 65    ...; Set the spe
017940:  65 64 20 66 6F 72 20 4D 69 63 72 6F 4D 69 6B 6B    ed for MicroMikk
017950:  6F 2E 20 20 44 45 20 69 73 20 62 61 75 64 20 72    o.  DE is baud r
017960:  61 74 65 20 6D 75 6C 74 69 70 6C 69 65 72 0D 0A    ate multiplier..
017970:  49 46 20 6D 69 6B 6B 6F 0D 0A 09 64 69 0D 0A 09    IF mikko...di...
017980:  6C 78 69 09 68 2C 74 78 63 6C 6B 0D 0A 09 6D 6F    lxi.h,txclk...mo
017990:  76 09 6D 2C 64 09 09 3B 4C 53 42 20 66 69 72 73    v.m,d..;LSB firs
0179A0:  74 20 28 73 77 61 70 70 65 64 20 69 6E 20 6D 65    t (swapped in me
0179B0:  6D 6F 72 79 29 0D 0A 09 6D 6F 76 09 6D 2C 65 09    mory)...mov.m,e.
0179C0:  09 3B 4D 53 42 20 6C 61 73 74 0D 0A 09 6C 78 69    .;MSB last...lxi
0179D0:  09 68 2C 72 78 63 6C 6B 0D 0A 09 6D 6F 76 09 6D    .h,rxclk...mov.m
0179E0:  2C 64 0D 0A 09 6D 6F 76 09 6D 2C 65 0D 0A 09 6D    ,d...mov.m,e...m
0179F0:  76 69 09 62 2C 30 09 09 3B 22 6D 6F 64 69 66 69    vi.b,0..;"modifi
017A00:  65 72 22 20 66 6F 72 20 31 20 73 74 6F 70 20 62    er" for 1 stop b
017A10:  69 74 0D 0A 09 6D 76 69 09 61 2C 32 09 09 3B 54    it...mvi.a,2..;T
017A20:  65 73 74 20 4D 53 42 20 6F 66 20 73 70 65 65 64    est MSB of speed
017A30:  20 3E 32 20 28 31 31 30 20 62 70 73 20 6F 72 20     >2 (110 bps or 
017A40:  6C 65 73 73 29 0D 0A 09 63 6D 70 09 65 0D 0A 09    less)...cmp.e...
017A50:  6A 70 09 6D 69 6B 73 70 31 0D 0A 09 6D 76 69 09    jp.miksp1...mvi.
017A60:  62 2C 30 30 30 30 31 30 30 30 42 09 3B 22 6D 6F    b,00001000B.;"mo
017A70:  64 69 66 69 65 72 22 20 66 6F 72 20 32 20 73 74    difier" for 2 st
017A80:  6F 70 20 62 69 74 73 0D 0A 6D 69 6B 73 70 31 3A    op bits..miksp1:
017A90:  09 6D 76 69 09 61 2C 34 09 09 3B 53 65 6C 65 63    .mvi.a,4..;Selec
017AA0:  74 20 53 49 4F 20 52 65 67 20 34 0D 0A 09 6C 78    t SIO Reg 4...lx
017AB0:  69 09 68 2C 73 69 6F 61 63 0D 0A 09 6D 6F 76 09    i.h,sioac...mov.
017AC0:  6D 2C 61 0D 0A 09 6D 76 69 09 61 2C 73 69 6F 6E    m,a...mvi.a,sion
017AD0:  34 09 09 3B 47 65 74 20 76 61 6C 75 65 73 0D 0A    4..;Get values..
017AE0:  09 6F 72 61 09 62 09 09 3B 41 64 64 20 6D 6F 64    .ora.b..;Add mod
017AF0:  69 66 69 65 72 0D 0A 09 6D 6F 76 09 6D 2C 61 09    ifier...mov.m,a.
017B00:  65 3A 20 3C 78 6F 6E 3E 2C 3C 78 6F 66 66 3E 2C    e: <xon>,<xoff>,
017B10:  3C 64 65 6C 3E 2C 20 61 6E 64 20 3C 6E 75 6C 3E    <del>, and <nul>
017B20:  20 61 72 65 20 61 6C 77 61 79 73 20 64 69 73 63     are always disc
017B30:  61 72 64 65 64 2E 0D 0A 73 79 73 66 6C 74 3A 0D    arded...sysflt:.
017B40:  0A 09 6D 6F 76 09 61 2C 65 09 09 3B 20 67 65 74    ..mov.a,e..; get
017B50:  20 63 68 61 72 61 63 74 65 72 20 66 6F 72 20 74     character for t
017B60:  65 73 74 69 6E 67 0D 0A 49 46 20 6D 69 6B 6B 6F    esting..IF mikko
017B70:  0D 0A 09 63 70 69 09 27 4F 27 2D 31 30 30 4F 09    ...cpi.'O'-100O.
017B80:  3B 43 6F 6E 74 72 6F 6C 2D 4F 27 73 20 6C 6F 63    ;Control-O's loc
017B90:  6B 20 6B 65 79 62 6F 61 72 64 0D 0A 09 72 6E 7A    k keyboard...rnz
017BA0:  09 09 09 3B 20 69 66 20 6E 6F 74 20 63 6F 6E 74    ...; if not cont
017BB0:  72 6F 6C 2D 4F 2C 20 69 74 27 73 20 6F 6B 2E 0D    rol-O, it's ok..
017BC0:  0A 09 78 72 61 09 61 09 09 3B 20 64 6F 6E 27 74    ..xra.a..; don't
017BD0:  20 61 6C 6C 6F 77 20 63 6F 6E 74 72 6F 6C 2D 4F     allow control-O
017BE0:  20 6F 75 74 2E 0D 0A 45 4E 44 49 46 3B 6D 69 6B     out...ENDIF;mik
017BF0:  6B 6F 0D 0A 09 72 65 74 0D 0A 3B 0C 0D 0A 3B 0D    ko...ret..;...;.
017C00:  0A 3B 20 73 79 73 74 65 6D 2D 64 65 70 65 6E 64    .; system-depend
017C10:  65 6E 74 20 70 72 6F 63 65 73 73 69 6E 67 20 66    ent processing f
017C20:  6F 72 20 42 59 45 20 63 6F 6D 6D 61 6E 64 2E 0D    or BYE command..
017C30:  0A 3B 20 20 66 6F 72 20 61 70 6D 6D 64 6D 2C 20    .;  for apmmdm, 
017C40:  68 65 61 74 68 2C 20 61 6E 64 20 6C 6F 62 6F 2C    heath, and lobo,
017C50:  20 68 61 6E 67 20 75 70 20 74 68 65 20 70 68 6F     hang up the pho
017C60:  6E 65 2E 0D 0A 73 79 73 62 79 65 3A 0D 0A 49 46    ne...sysbye:..IF
017C70:  20 61 70 6D 6D 64 6D 0D 0A 09 78 72 61 09 61 09     apmmdm...xra.a.
017C80:  09 3B 48 61 6E 67 75 70 20 6F 75 72 20 65 6E 64    .;Hangup our end
017C90:  2C 20 74 6F 6F 2E 0D 0A 09 73 74 61 09 6D 6E 6D    , too....sta.mnm
017CA0:  6F 64 6D 0D 0A 45 4E 44 49 46 3B 61 70 6D 6D 64    odm..ENDIF;apmmd
017CB0:  6D 0D 0A 0D 0A 49 46 20 68 65 61 74 68 0D 0A 09    m....IF heath...
017CC0:  63 61 6C 6C 09 6D 64 6D 64 72 70 09 09 3B 20 20    call.mdmdrp..;  
017CD0:  53 6C 65 61 7A 79 20 62 75 74 20 65 66 66 65 63    Sleazy but effec
017CE0:  74 69 76 65 0D 0A 45 4E 44 49 46 3B 68 65 61 74    tive..ENDIF;heat
017CF0:  68 0D 0A 0D 0A 49 46 20 6C 6F 62 6F 09 3B 5B 68    h....IF lobo.;[h
017D00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
017D10:  14 00 00 00 02 09 4E E5 14 00 C1 02 00 00 00 02    ......N.........
017D20:  14 00 C6 02 00 00 00 02 14 00 C2 02 00 00 00 02    ................
017D30:  14 00 C7 02 00 00 00 02 14 00 C3 02 00 00 00 02    ................
017D40:  14 00 C8 02 00 00 00 02 14 00 C4 02 00 00 00 02    ................
017D50:  14 00 C9 02 00 00 00 02 14 00 C5 02 00 00 00 02    ................
017D60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017D70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017D80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017D90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017E00:  09 3B 53 65 74 20 76 61 6C 75 65 20 28 73 74 6F    .;Set value (sto
017E10:  70 20 62 69 74 73 29 0D 0A 09 65 69 0D 0A 09 72    p bits)...ei...r
017E20:  65 74 0D 0A 45 4E 44 49 46 3B 6D 69 6B 6B 6F 0D    et..ENDIF;mikko.
017E30:  0A 0D 0A 3B 20 53 65 74 20 74 68 65 20 73 70 65    ...; Set the spe
017E40:  65 64 20 66 6F 72 20 41 70 70 6C 65 20 77 69 74    ed for Apple wit
017E50:  68 20 36 35 35 31 20 41 43 49 41 0D 0A 49 46 20    h 6551 ACIA..IF 
017E60:  61 70 36 35 35 31 0D 0A 09 6C 64 61 09 6D 6E 70    ap6551...lda.mnp
017E70:  72 74 63 09 09 3B 6A 62 20 72 65 61 64 20 63 6F    rtc..;jb read co
017E80:  6E 74 72 6F 6C 20 70 6F 72 74 0D 0A 09 61 6E 69    ntrol port...ani
017E90:  09 30 46 30 48 09 09 3B 6A 62 20 7A 61 70 20 6C    .0F0H..;jb zap l
017EA0:  6F 77 20 6F 72 64 65 72 20 6E 79 62 62 6C 65 0D    ow order nybble.
017EB0:  0A 09 6F 72 61 09 65 09 09 3B 6A 62 20 70 75 74    ..ora.e..;jb put
017EC0:  20 72 61 74 65 20 69 6E 20 6C 6F 77 20 6F 72 64     rate in low ord
017ED0:  65 72 20 6E 79 62 62 6C 65 0D 0A 09 73 74 61 09    er nybble...sta.
017EE0:  6D 6E 70 72 74 63 09 09 3B 6A 62 20 73 65 6E 64    mnprtc..;jb send
017EF0:  20 74 6F 20 63 6F 6E 74 72 6F 6C 20 70 6F 72 74     to control port
017F00:  0D 0A 09 72 65 74 0D 0A 45 4E 44 49 46 3B 61 70    ...ret..ENDIF;ap
017F10:  36 35 35 31 0D 0A 0D 0A 3B 20 53 65 74 20 74 68    6551....; Set th
017F20:  65 20 73 70 65 65 64 20 66 6F 72 20 74 68 65 20    e speed for the 
017F30:  44 65 63 69 73 69 6F 6E 20 49 0D 0A 49 46 20 6D    Decision I..IF m
017F40:  64 49 0D 0A 09 63 61 6C 6C 09 73 65 6C 6D 64 6D    dI...call.selmdm
017F50:  09 09 3B 4C 65 74 27 73 20 62 65 20 61 62 73 6F    ..;Let's be abso
017F60:  6C 75 74 65 6C 79 20 73 75 72 65 2C 20 68 75 68    lutely sure, huh
017F70:  3F 0D 0A 09 6D 76 69 09 61 2C 64 6C 61 62 2B 77    ?...mvi.a,dlab+w
017F80:  6C 73 31 2B 77 6C 73 30 2B 73 74 62 20 3B 53 65    ls1+wls0+stb ;Se
017F90:  74 20 64 61 74 61 20 6C 61 74 63 68 20 61 63 63    t data latch acc
017FA0:  65 73 73 20 62 69 74 0D 0A 09 6F 75 74 09 6C 63    ess bit...out.lc
017FB0:  72 09 09 3B 4F 75 74 20 74 6F 20 4C 69 6E 65 20    r..;Out to Line 
017FC0:  43 6F 6E 74 72 6F 6C 20 52 65 67 69 73 74 65 72    Control Register
017FD0:  0D 0A 09 6C 68 6C 64 09 73 70 65 65 64 09 09 3B    ...lhld.speed..;
017FE0:  4C 6F 61 64 20 62 61 75 64 72 61 74 65 20 6D 75    Load baudrate mu
017FF0:  6C 74 69 70 6C 69 65 72 0D 0A 09 78 63 68 67 0D    ltiplier...xchg.
018000:  68 0D 0A 09 64 62 09 30 34 68 2C 27 32 34 30 30    h...db.04h,'2400
018010:  24 27 2C 09 31 30 68 2C 31 30 68 0D 0A 09 64 62    $',.10h,10h...db
018020:  09 30 33 68 2C 27 33 30 30 24 27 2C 09 38 30 68    .03h,'300$',.80h
018030:  2C 38 30 68 0D 0A 09 64 62 09 30 35 68 2C 27 33    ,80h...db.05h,'3
018040:  38 34 30 30 24 27 2C 09 30 31 68 2C 30 31 68 0D    8400$',.01h,01h.
018050:  0A 09 64 62 09 30 34 68 2C 27 34 38 30 30 24 27    ..db.04h,'4800$'
018060:  2C 09 30 38 68 2C 30 38 68 0D 0A 09 64 62 09 30    ,.08h,08h...db.0
018070:  33 68 2C 27 36 30 30 24 27 2C 09 34 30 68 2C 34    3h,'600$',.40h,4
018080:  30 68 0D 0A 09 64 62 09 30 34 68 2C 27 39 36 30    0h...db.04h,'960
018090:  30 24 27 2C 09 30 34 68 2C 30 34 68 0D 0A 0D 0A    0$',.04h,04h....
0180A0:  73 70 68 74 62 6C 3A 20 64 62 09 63 72 2C 6C 66    sphtbl: db.cr,lf
0180B0:  2C 27 20 20 20 33 30 30 20 20 20 36 30 30 20 20    ,'   300   600  
0180C0:  31 32 30 30 20 20 32 34 30 30 20 20 34 38 30 30    1200  2400  4800
0180D0:  20 20 39 36 30 30 20 31 39 32 30 30 20 33 38 34      9600 19200 384
0180E0:  30 30 24 27 0D 0A 45 4E 44 49 46 3B 62 62 49 49    00$'..ENDIF;bbII
0180F0:  0D 0A 0D 0A 49 46 20 63 70 74 38 35 78 78 0D 0A    ....IF cpt85xx..
018100:  73 70 64 74 62 6C 3A 09 64 62 09 31 35 09 09 09    spdtbl:.db.15...
018110:  3B 20 31 35 20 65 6E 74 72 69 65 73 0D 0A 09 64    ; 15 entries...d
018120:  62 09 30 33 2C 27 31 31 30 24 27 2C 09 30 33 68    b.03,'110$',.03h
018130:  2C 30 33 68 0D 0A 09 64 62 09 30 34 2C 27 31 32    ,03h...db.04,'12
018140:  30 30 24 27 2C 09 30 39 68 2C 30 39 68 0D 0A 09    00$',.09h,09h...
018150:  64 62 09 30 35 2C 27 31 33 34 2E 35 24 27 2C 09    db.05,'134.5$',.
018160:  30 34 68 2C 30 34 68 0D 0A 09 64 62 09 30 33 2C    04h,04h...db.03,
018170:  27 31 35 30 24 27 2C 09 30 35 68 2C 30 35 68 0D    '150$',.05h,05h.
018180:  0A 09 64 62 09 30 34 2C 27 31 38 30 30 24 27 2C    ..db.04,'1800$',
018190:  09 30 41 68 2C 30 41 68 0D 0A 09 64 62 09 30 34    .0Ah,0Ah...db.04
0181A0:  2C 27 32 34 30 30 24 27 2C 09 30 42 68 2C 30 42    ,'2400$',.0Bh,0B
0181B0:  68 0D 0A 09 64 62 09 30 33 2C 27 33 30 30 24 27    h...db.03,'300$'
0181C0:  2C 09 30 36 68 2C 30 36 68 0D 0A 09 64 62 09 30    ,.06h,06h...db.0
0181D0:  34 2C 27 33 36 30 30 24 27 2C 09 30 43 68 2C 30    4,'3600$',.0Ch,0
0181E0:  43 68 0D 0A 09 64 62 09 30 34 2C 27 34 38 30 30    Ch...db.04,'4800
0181F0:  24 27 2C 09 30 44 68 2C 30 44 68 0D 0A 09 64 62    $',.0Dh,0Dh...db
018200:  0A 09 6D 6F 76 09 61 2C 64 09 09 3B 47 65 74 20    ..mov.a,d..;Get 
018210:  6C 6F 77 20 6F 72 64 65 72 20 62 79 74 65 20 66    low order byte f
018220:  6F 72 20 62 61 75 64 20 72 61 74 65 0D 0A 09 6F    or baud rate...o
018230:  75 74 09 64 6C 6D 09 09 3B 4F 75 74 20 74 6F 20    ut.dlm..;Out to 
018240:  74 68 65 20 4D 53 42 20 64 69 76 69 73 6F 72 20    the MSB divisor 
018250:  70 6F 72 74 0D 0A 09 6D 6F 76 09 61 2C 65 09 09    port...mov.a,e..
018260:  3B 2E 2E 2E 61 6E 64 20 74 68 65 20 68 69 67 68    ;...and the high
018270:  20 6F 72 64 65 72 20 62 79 74 65 0D 0A 09 6F 75     order byte...ou
018280:  74 09 64 6C 6C 09 09 3B 4F 75 74 20 74 6F 20 74    t.dll..;Out to t
018290:  68 65 20 4C 53 42 20 64 69 76 69 73 6F 72 20 70    he LSB divisor p
0182A0:  6F 72 74 0D 0A 09 6D 76 69 09 61 2C 77 6C 73 31    ort...mvi.a,wls1
0182B0:  2B 77 6C 73 30 2B 73 74 62 09 3B 45 6E 61 62 6C    +wls0+stb.;Enabl
0182C0:  65 20 44 69 76 69 73 6F 72 20 41 63 63 65 73 73    e Divisor Access
0182D0:  20 4C 61 74 63 68 0D 0A 09 6F 75 74 09 6C 63 72     Latch...out.lcr
0182E0:  09 09 3B 4F 75 74 20 74 6F 20 41 43 45 20 4C 69    ..;Out to ACE Li
0182F0:  6E 65 20 43 6F 6E 74 72 6F 6C 20 52 65 67 69 73    ne Control Regis
018300:  74 65 72 0D 0A 09 78 72 61 09 61 09 09 3B 43 6C    ter...xra.a..;Cl
018310:  65 61 72 20 41 0D 0A 09 6F 75 74 09 69 65 72 09    ear A...out.ier.
018320:  09 3B 53 65 74 20 6E 6F 20 69 6E 74 65 72 72 75    .;Set no interru
018330:  70 74 73 0D 0A 09 6F 75 74 09 6C 73 72 09 09 3B    pts...out.lsr..;
018340:  43 6C 65 61 72 20 73 74 61 74 75 73 0D 0A 09 69    Clear status...i
018350:  6E 09 6D 73 72 09 09 3B 43 6C 65 61 72 20 4D 6F    n.msr..;Clear Mo
018360:  64 65 6D 20 53 74 61 74 75 73 20 52 65 67 69 73    dem Status Regis
018370:  74 65 72 0D 0A 09 69 6E 09 6C 73 72 09 09 3B 43    ter...in.lsr..;C
018380:  6C 65 61 72 20 4C 69 6E 65 20 53 74 61 74 75 73    lear Line Status
018390:  20 52 65 67 69 73 74 65 72 0D 0A 09 69 6E 09 72     Register...in.r
0183A0:  62 72 09 09 3B 43 6C 65 61 72 20 52 65 63 65 69    br..;Clear Recei
0183B0:  76 65 72 20 42 75 66 66 65 72 73 0D 0A 09 69 6E    ver Buffers...in
0183C0:  09 72 62 72 0D 0A 09 72 65 74 0D 0A 45 4E 44 49    .rbr...ret..ENDI
0183D0:  46 09 3B 6D 64 49 09 5B 54 6F 61 64 20 48 61 6C    F.;mdI.[Toad Hal
0183E0:  6C 5D 0D 0A 0D 0A 49 46 20 68 65 61 74 68 0D 0A    l]....IF heath..
0183F0:  3B 0D 0A 3B 09 53 65 74 20 73 70 65 65 64 20 66    ;..;.Set speed f
018400:  09 30 32 2C 27 35 30 24 27 2C 09 30 31 68 2C 30    .02,'50$',.01h,0
018410:  31 68 0D 0A 09 64 62 09 30 33 2C 27 36 30 30 24    1h...db.03,'600$
018420:  27 2C 09 30 37 68 2C 30 37 68 0D 0A 09 64 62 09    ',.07h,07h...db.
018430:  30 34 2C 27 37 32 30 30 24 27 2C 09 30 45 68 2C    04,'7200$',.0Eh,
018440:  30 45 68 0D 0A 09 64 62 09 30 32 2C 27 37 35 24    0Eh...db.02,'75$
018450:  27 2C 09 30 32 68 2C 30 32 68 0D 0A 09 64 62 09    ',.02h,02h...db.
018460:  30 33 2C 27 39 30 30 24 27 2C 09 30 38 68 2C 30    03,'900$',.08h,0
018470:  38 68 0D 0A 09 64 62 09 30 34 2C 27 39 36 30 30    8h...db.04,'9600
018480:  24 27 2C 09 30 46 68 2C 30 46 68 0D 0A 0D 0A 73    $',.0Fh,0Fh....s
018490:  70 68 74 62 6C 3A 20 64 62 09 63 72 2C 6C 66 2C    phtbl: db.cr,lf,
0184A0:  27 20 20 20 35 30 09 20 37 35 20 20 20 20 31 31    '   50. 75    11
0184B0:  30 20 20 20 20 31 33 34 2E 35 20 20 31 35 30 20    0    134.5  150 
0184C0:  20 20 20 33 30 30 20 20 20 20 36 30 30 20 20 20       300    600   
0184D0:  20 39 30 30 27 0D 0A 09 64 62 09 63 72 2C 6C 66     900'...db.cr,lf
0184E0:  2C 27 20 31 32 30 30 20 20 20 31 38 30 30 20 20    ,' 1200   1800  
0184F0:  20 32 34 30 30 20 20 20 33 36 30 30 20 20 20 34     2400   3600   4
018500:  38 30 30 20 20 20 37 32 30 30 20 20 20 39 36 30    800   7200   960
018510:  30 24 27 0D 0A 45 4E 44 49 46 3B 63 70 74 38 35    0$'..ENDIF;cpt85
018520:  78 78 0D 0A 0D 0A 49 46 20 6D 69 6B 6B 6F 0D 0A    xx....IF mikko..
018530:  73 70 64 74 62 6C 3A 09 64 62 09 39 68 09 09 09    spdtbl:.db.9h...
018540:  3B 39 20 65 6E 74 72 69 65 73 0D 0A 09 64 62 09    ;9 entries...db.
018550:  30 33 68 2C 27 31 31 30 24 27 0D 0A 09 64 77 09    03h,'110$'...dw.
018560:  30 33 36 39 68 0D 0A 09 64 62 09 30 34 68 2C 27    0369h...db.04h,'
018570:  31 32 30 30 24 27 0D 0A 09 64 77 09 30 30 35 30    1200$'...dw.0050
018580:  68 0D 0A 09 64 62 09 30 33 68 2C 27 31 35 30 24    h...db.03h,'150$
018590:  27 0D 0A 09 64 77 09 30 32 38 30 68 0D 0A 09 64    '...dw.0280h...d
0185A0:  62 09 30 34 68 2C 27 32 34 30 30 24 27 0D 0A 09    b.04h,'2400$'...
0185B0:  64 77 09 30 30 32 38 68 0D 0A 09 64 62 09 30 33    dw.0028h...db.03
0185C0:  68 2C 27 33 30 30 24 27 0D 0A 09 64 77 09 30 31    h,'300$'...dw.01
0185D0:  34 30 68 0D 0A 09 64 62 09 30 34 68 2C 27 34 38    40h...db.04h,'48
0185E0:  30 30 24 27 0D 0A 09 64 77 09 30 30 31 34 68 0D    00$'...dw.0014h.
0185F0:  0A 09 64 62 09 30 33 68 2C 27 36 30 30 24 27 0D    ..db.03h,'600$'.
018600:  6F 72 20 48 38 39 0D 0A 3B 0D 0A 09 63 61 6C 6C    or H89..;...call
018610:  09 6D 64 6D 6F 66 6C 09 09 3B 20 6B 65 65 70 20    .mdmofl..; keep 
018620:  74 68 65 20 6C 69 6E 65 20 73 61 66 65 20 66 72    the line safe fr
018630:  6F 6D 20 67 61 72 62 61 67 65 0D 0A 09 69 6E 09    om garbage...in.
018640:  6D 6E 70 6F 72 74 2B 61 63 65 6C 63 72 0D 0A 09    mnport+acelcr...
018650:  6F 72 69 09 61 63 65 64 6C 61 0D 0A 09 6F 75 74    ori.acedla...out
018660:  09 6D 6E 70 6F 72 74 2B 61 63 65 6C 63 72 09 3B    .mnport+acelcr.;
018670:  20 61 63 63 65 73 73 20 74 68 65 20 41 43 45 27     access the ACE'
018680:  73 20 64 69 76 69 73 6F 72 20 6C 61 74 63 68 0D    s divisor latch.
018690:  0A 09 6D 6F 76 09 61 2C 65 09 09 3B 20 6C 6F 77    ..mov.a,e..; low
0186A0:  20 62 79 74 65 20 6F 66 20 73 70 65 65 64 20 69     byte of speed i
0186B0:  73 20 69 6E 20 45 0D 0A 09 6F 75 74 09 6D 6E 70    s in E...out.mnp
0186C0:  6F 72 74 2B 61 63 65 64 6C 6C 09 3B 20 73 65 74    ort+acedll.; set
0186D0:  20 74 68 65 20 6C 6F 77 20 62 79 74 65 0D 0A 09     the low byte...
0186E0:  6D 6F 76 09 61 2C 64 09 09 3B 20 68 69 67 68 20    mov.a,d..; high 
0186F0:  62 79 74 65 20 6F 66 20 73 70 65 65 64 20 69 73    byte of speed is
018700:  20 69 6E 20 44 0D 0A 09 6F 75 74 09 6D 6E 70 6F     in D...out.mnpo
018710:  72 74 2B 61 63 65 64 6C 68 09 3B 20 73 65 74 20    rt+acedlh.; set 
018720:  74 68 65 20 68 69 67 68 20 62 79 74 65 0D 0A 09    the high byte...
018730:  69 6E 09 6D 6E 70 6F 72 74 2B 61 63 65 6C 63 72    in.mnport+acelcr
018740:  0D 0A 09 61 6E 69 09 30 46 46 48 2D 61 63 65 64    ...ani.0FFH-aced
018750:  6C 61 0D 0A 09 6F 75 74 09 6D 6E 70 6F 72 74 2B    la...out.mnport+
018760:  61 63 65 6C 63 72 09 3B 20 64 65 2D 61 63 63 65    acelcr.; de-acce
018770:  73 73 20 74 68 65 20 41 43 45 27 73 20 64 69 76    ss the ACE's div
018780:  69 73 6F 72 20 6C 61 74 63 68 0D 0A 09 63 61 6C    isor latch...cal
018790:  6C 09 6D 64 6D 6F 6E 6C 09 09 3B 20 61 6E 64 20    l.mdmonl..; and 
0187A0:  70 75 74 20 74 68 65 20 41 43 45 20 62 61 63 6B    put the ACE back
0187B0:  20 6F 6E 20 6C 69 6E 65 0D 0A 09 72 65 74 0D 0A     on line...ret..
0187C0:  45 4E 44 49 46 3B 68 65 61 74 68 0D 0A 0D 0A 3B    ENDIF;heath....;
0187D0:  0C 0D 0A 3B 09 53 70 65 65 64 20 74 61 62 6C 65    ...;.Speed table
0187E0:  73 0D 0A 3B 20 28 4E 6F 74 65 20 74 68 61 74 20    s..; (Note that 
0187F0:  73 70 65 65 64 20 74 61 62 6C 65 73 20 4D 55 53    speed tables MUS
018800:  0A 09 64 77 09 30 30 41 30 48 0D 0A 09 64 62 09    ..dw.00A0H...db.
018810:  30 32 68 2C 27 37 35 24 27 0D 0A 09 64 77 09 30    02h,'75$'...dw.0
018820:  35 30 30 68 0D 0A 09 64 62 09 30 34 68 2C 27 39    500h...db.04h,'9
018830:  36 30 30 24 27 0D 0A 09 64 77 09 30 30 30 61 68    600$'...dw.000ah
018840:  0D 0A 0D 0A 73 70 68 74 62 6C 3A 09 64 62 09 63    ....sphtbl:.db.c
018850:  72 2C 6C 66 2C 27 20 20 37 35 20 20 31 31 30 20    r,lf,'  75  110 
018860:  20 31 35 30 20 20 33 30 30 20 20 36 30 30 20 20     150  300  600  
018870:  31 32 30 30 20 20 32 34 30 30 20 20 34 38 30 30    1200  2400  4800
018880:  20 20 39 36 30 30 24 27 0D 0A 45 4E 44 49 46 3B      9600$'..ENDIF;
018890:  6D 69 6B 6B 6F 0D 0A 0D 0A 49 46 20 6F 73 62 72    mikko....IF osbr
0188A0:  6E 31 0D 0A 73 70 64 74 62 6C 3A 09 64 62 09 30    n1..spdtbl:.db.0
0188B0:  32 68 09 09 09 3B 32 20 65 6E 74 72 69 65 73 0D    2h...;2 entries.
0188C0:  0A 09 64 62 09 30 34 68 2C 27 31 32 30 30 24 27    ..db.04h,'1200$'
0188D0:  2C 09 4F 53 42 49 31 32 2C 4F 53 42 49 31 32 0D    ,.OSBI12,OSBI12.
0188E0:  0A 09 64 62 09 30 33 68 2C 27 33 30 30 24 27 2C    ..db.03h,'300$',
0188F0:  09 4F 53 42 49 30 33 2C 4F 53 42 49 30 33 0D 0A    .OSBI03,OSBI03..
018900:  0D 0A 73 70 68 74 62 6C 3A 09 64 62 09 63 72 2C    ..sphtbl:.db.cr,
018910:  6C 66 2C 27 20 20 33 30 30 27 2C 63 72 2C 6C 66    lf,'  300',cr,lf
018920:  2C 27 20 31 32 30 30 24 27 0D 0A 45 4E 44 49 46    ,' 1200$'..ENDIF
018930:  3B 6F 73 62 72 6E 31 0D 0A 0D 0A 49 46 20 61 70    ;osbrn1....IF ap
018940:  36 35 35 31 09 09 09 09 09 3B 6A 62 0D 0A 73 70    6551.....;jb..sp
018950:  64 74 62 6C 3A 09 64 62 09 30 44 48 09 09 09 09    dtbl:.db.0DH....
018960:  3B 6A 62 20 31 33 20 65 6E 74 72 69 65 73 0D 0A    ;jb 13 entries..
018970:  09 64 62 09 30 33 48 2C 27 31 31 30 24 27 2C 09    .db.03H,'110$',.
018980:  30 33 48 2C 30 33 48 09 3B 6A 62 0D 0A 09 64 62    03H,03H.;jb...db
018990:  09 30 34 48 2C 27 31 32 30 30 24 27 2C 09 30 38    .04H,'1200$',.08
0189A0:  48 2C 30 38 48 09 3B 6A 62 0D 0A 09 64 62 09 30    H,08H.;jb...db.0
0189B0:  35 48 2C 27 31 33 34 2E 35 24 27 2C 09 30 34 48    5H,'134.5$',.04H
0189C0:  2C 30 34 48 09 3B 6A 62 0D 0A 09 64 62 09 30 33    ,04H.;jb...db.03
0189D0:  48 2C 27 31 35 30 24 27 2C 09 30 35 48 2C 30 35    H,'150$',.05H,05
0189E0:  48 09 3B 6A 62 0D 0A 09 64 62 09 30 34 48 2C 27    H.;jb...db.04H,'
0189F0:  31 38 30 30 24 27 2C 09 30 39 48 2C 30 39 48 09    1800$',.09H,09H.
018A00:  54 20 62 65 20 69 6E 20 61 6C 70 68 61 62 65 74    T be in alphabet
018A10:  69 63 61 6C 20 6F 72 64 65 72 20 66 6F 72 20 6C    ical order for l
018A20:  61 74 65 72 0D 0A 3B 20 6C 6F 6F 6B 75 70 20 70    ater..; lookup p
018A30:  72 6F 63 65 64 75 72 65 73 2C 20 61 6E 64 20 6D    rocedures, and m
018A40:  75 73 74 20 62 65 67 69 6E 20 77 69 74 68 20 61    ust begin with a
018A50:  20 76 61 6C 75 65 20 73 68 6F 77 69 6E 67 20 74     value showing t
018A60:  68 65 20 74 6F 74 61 6C 0D 0A 3B 20 6E 75 6D 62    he total..; numb
018A70:  65 72 20 6F 66 20 65 6E 74 72 69 65 73 2E 20 20    er of entries.  
018A80:  54 68 65 20 73 70 65 65 64 20 68 65 6C 70 20 74    The speed help t
018A90:  61 62 6C 65 73 20 61 72 65 20 6A 75 73 74 20 66    ables are just f
018AA0:  6F 72 20 75 73 20 70 6F 6F 72 0D 0A 3B 20 68 75    or us poor..; hu
018AB0:  6D 61 6E 73 2E 0D 0A 0D 0A 3B 09 64 62 09 73 74    mans.....;.db.st
018AC0:  72 69 6E 67 20 6C 65 6E 67 74 68 2C 73 74 72 69    ring length,stri
018AD0:  6E 67 2C 64 69 76 69 73 6F 72 20 28 32 20 69 64    ng,divisor (2 id
018AE0:  65 6E 74 69 63 61 6C 20 62 79 74 65 73 20 6F 72    entical bytes or
018AF0:  20 31 20 77 6F 72 64 29 0D 0A 3B 20 5B 54 6F 61     1 word)..; [Toa
018B00:  64 20 48 61 6C 6C 5D 0D 0A 0D 0A 49 46 20 62 62    d Hall]....IF bb
018B10:  49 20 4F 52 20 62 72 61 69 6E 20 4F 52 20 64 65    I OR brain OR de
018B20:  6C 70 68 69 20 4F 52 20 6C 6F 62 6F 09 3B 5B 68    lphi OR lobo.;[h
018B30:  68 5D 0D 0A 73 70 64 74 62 6C 3A 09 64 62 09 31    h]..spdtbl:.db.1
018B40:  30 68 09 09 09 3B 31 36 20 65 6E 74 72 69 65 73    0h...;16 entries
018B50:  0D 0A 09 64 62 09 30 33 68 2C 27 31 31 30 24 27    ...db.03h,'110$'
018B60:  2C 09 30 32 68 2C 30 32 68 0D 0A 09 64 62 09 30    ,.02h,02h...db.0
018B70:  34 68 2C 27 31 32 30 30 24 27 2C 09 30 37 68 2C    4h,'1200$',.07h,
018B80:  30 37 68 0D 0A 09 64 62 09 30 35 68 2C 27 31 33    07h...db.05h,'13
018B90:  34 2E 35 24 27 2C 09 30 33 68 2C 30 33 68 0D 0A    4.5$',.03h,03h..
018BA0:  09 64 62 09 30 33 68 2C 27 31 35 30 24 27 2C 09    .db.03h,'150$',.
018BB0:  30 34 68 2C 30 34 68 0D 0A 09 64 62 09 30 34 68    04h,04h...db.04h
018BC0:  2C 27 31 38 30 30 24 27 2C 09 30 38 68 2C 30 38    ,'1800$',.08h,08
018BD0:  68 0D 0A 09 64 62 09 30 35 68 2C 27 31 39 32 30    h...db.05h,'1920
018BE0:  30 24 27 2C 09 30 66 68 2C 30 66 68 0D 0A 09 64    0$',.0fh,0fh...d
018BF0:  62 09 30 34 68 2C 27 32 30 30 30 24 27 2C 09 30    b.04h,'2000$',.0
018C00:  3B 6A 62 0D 0A 09 64 62 09 30 35 48 2C 27 31 39    ;jb...db.05H,'19
018C10:  32 30 30 24 27 2C 09 30 46 48 2C 30 46 48 09 3B    200$',.0FH,0FH.;
018C20:  6A 62 0D 0A 09 64 62 09 30 34 48 2C 27 32 34 30    jb...db.04H,'240
018C30:  30 24 27 2C 09 30 41 48 2C 30 41 48 09 3B 6A 62    0$',.0AH,0AH.;jb
018C40:  0D 0A 09 64 62 09 30 33 48 2C 27 33 30 30 24 27    ...db.03H,'300$'
018C50:  2C 09 30 36 48 2C 30 36 48 09 3B 6A 62 0D 0A 09    ,.06H,06H.;jb...
018C60:  64 62 09 30 34 48 2C 27 33 36 30 30 24 27 2C 09    db.04H,'3600$',.
018C70:  30 42 48 2C 30 42 48 09 3B 6A 62 0D 0A 09 64 62    0BH,0BH.;jb...db
018C80:  09 30 34 48 2C 27 34 38 30 30 24 27 2C 09 30 43    .04H,'4800$',.0C
018C90:  48 2C 30 43 48 09 3B 6A 62 0D 0A 09 64 62 09 30    H,0CH.;jb...db.0
018CA0:  33 48 2C 27 36 30 30 24 27 2C 09 30 37 48 2C 30    3H,'600$',.07H,0
018CB0:  37 48 09 3B 6A 62 0D 0A 09 64 62 09 30 34 48 2C    7H.;jb...db.04H,
018CC0:  27 37 32 30 30 24 27 2C 09 30 44 48 2C 30 44 48    '7200$',.0DH,0DH
018CD0:  09 3B 6A 62 0D 0A 09 64 62 09 30 34 48 2C 27 39    .;jb...db.04H,'9
018CE0:  36 30 30 24 27 2C 09 30 45 48 2C 30 45 48 09 3B    600$',.0EH,0EH.;
018CF0:  6A 62 0D 0A 0D 0A 73 70 68 74 62 6C 3A 09 64 62    jb....sphtbl:.db
018D00:  09 63 72 2C 6C 66 2C 27 20 20 31 31 30 20 20 20    .cr,lf,'  110   
018D10:  20 31 33 34 2E 35 20 20 31 35 30 20 20 20 20 33     134.5  150    3
018D20:  30 30 20 20 20 20 36 30 30 20 20 20 31 32 30 30    00    600   1200
018D30:  20 20 20 31 38 30 30 27 0D 0A 09 64 62 09 63 72       1800'...db.cr
018D40:  2C 6C 66 2C 27 20 32 34 30 30 20 20 20 33 36 30    ,lf,' 2400   360
018D50:  30 20 20 20 34 38 30 30 20 20 20 37 32 30 30 20    0   4800   7200 
018D60:  20 20 39 36 30 30 20 20 31 39 32 30 30 24 27 0D      9600  19200$'.
018D70:  0A 45 4E 44 49 46 3B 61 70 36 35 35 31 0D 0A 0D    .ENDIF;ap6551...
018D80:  0A 49 46 20 6D 64 49 0D 0A 73 70 64 74 62 6C 3A    .IF mdI..spdtbl:
018D90:  09 64 62 09 30 64 68 09 09 09 3B 20 31 33 20 65    .db.0dh...; 13 e
018DA0:  6E 74 72 69 65 73 0D 0A 09 64 62 09 30 33 68 2C    ntries...db.03h,
018DB0:  20 20 27 31 31 30 24 27 0D 0A 09 09 64 77 09 09      '110$'....dw..
018DC0:  31 30 34 37 0D 0A 09 64 62 09 30 34 68 2C 20 27    1047...db.04h, '
018DD0:  31 32 30 30 24 27 0D 0A 09 09 64 77 09 09 39 36    1200$'....dw..96
018DE0:  0D 0A 09 64 62 09 30 33 68 2C 20 20 27 31 35 30    ...db.03h,  '150
018DF0:  24 27 0D 0A 09 09 64 77 09 09 37 36 38 0D 0A 09    $'....dw..768...
018E00:  39 68 2C 30 39 68 0D 0A 09 64 62 09 30 34 68 2C    9h,09h...db.04h,
018E10:  27 32 34 30 30 24 27 2C 09 30 61 68 2C 30 61 68    '2400$',.0ah,0ah
018E20:  0D 0A 09 64 62 09 30 33 68 2C 27 33 30 30 24 27    ...db.03h,'300$'
018E30:  2C 09 30 35 68 2C 30 35 68 0D 0A 09 64 62 09 30    ,.05h,05h...db.0
018E40:  34 68 2C 27 33 36 30 30 24 27 2C 09 30 62 68 2C    4h,'3600$',.0bh,
018E50:  30 62 68 0D 0A 09 64 62 09 30 34 68 2C 27 34 38    0bh...db.04h,'48
018E60:  30 30 24 27 2C 09 30 63 68 2C 30 63 68 0D 0A 09    00$',.0ch,0ch...
018E70:  64 62 09 30 32 68 2C 27 35 30 24 27 2C 09 30 30    db.02h,'50$',.00
018E80:  68 2C 30 30 68 0D 0A 09 64 62 09 30 33 68 2C 27    h,00h...db.03h,'
018E90:  36 30 30 24 27 2C 09 30 36 68 2C 30 36 68 0D 0A    600$',.06h,06h..
018EA0:  09 64 62 09 30 34 68 2C 27 37 32 30 30 24 27 2C    .db.04h,'7200$',
018EB0:  09 30 64 68 2C 30 64 68 0D 0A 09 64 62 09 30 32    .0dh,0dh...db.02
018EC0:  68 2C 27 37 35 24 27 2C 09 30 31 68 2C 30 31 68    h,'75$',.01h,01h
018ED0:  0D 0A 09 64 62 09 30 34 68 2C 27 39 36 30 30 24    ...db.04h,'9600$
018EE0:  27 2C 09 30 65 68 2C 30 65 68 0D 0A 0D 0A 73 70    ',.0eh,0eh....sp
018EF0:  68 74 62 6C 3A 20 64 62 09 63 72 2C 6C 66 2C 27    htbl: db.cr,lf,'
018F00:  20 20 20 35 30 09 20 37 35 20 20 20 20 31 31 30       50. 75    110
018F10:  20 20 20 20 31 33 34 2E 35 20 20 31 35 30 20 20        134.5  150  
018F20:  20 20 33 30 30 20 20 20 20 36 30 30 20 20 20 31      300    600   1
018F30:  32 30 30 27 0D 0A 09 64 62 09 63 72 2C 6C 66 2C    200'...db.cr,lf,
018F40:  27 20 31 38 30 30 20 20 20 32 30 30 30 20 20 20    ' 1800   2000   
018F50:  32 34 30 30 20 20 20 33 36 30 30 20 20 20 34 38    2400   3600   48
018F60:  30 30 20 20 20 37 32 30 30 20 20 20 39 36 30 30    00   7200   9600
018F70:  20 20 31 39 32 30 30 24 27 0D 0A 45 4E 44 49 46      19200$'..ENDIF
018F80:  3B 62 62 49 20 4F 52 20 62 72 61 69 6E 20 4F 52    ;bbI OR brain OR
018F90:  20 64 65 6C 70 68 69 20 4F 52 20 6C 6F 62 6F 09     delphi OR lobo.
018FA0:  3B 5B 68 68 5D 0D 0A 0D 0A 49 46 20 62 62 49 49    ;[hh]....IF bbII
018FB0:  0D 0A 73 70 64 74 62 6C 3A 09 64 62 09 38 09 09    ..spdtbl:.db.8..
018FC0:  09 3B 20 38 20 65 6E 74 72 69 65 73 0D 0A 09 64    .; 8 entries...d
018FD0:  62 09 30 34 68 2C 27 31 32 30 30 24 27 2C 09 32    b.04h,'1200$',.2
018FE0:  30 68 2C 32 30 68 0D 0A 09 64 62 09 30 35 68 2C    0h,20h...db.05h,
018FF0:  27 31 39 32 30 30 24 27 2C 09 30 32 68 2C 30 32    '19200$',.02h,02
019000:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
019010:  15 00 00 00 02 09 4E E5 15 00 C1 02 00 00 00 02    ......N.........
019020:  15 00 C6 02 00 00 00 02 15 00 C2 02 00 00 00 02    ................
019030:  15 00 C7 02 00 00 00 02 15 00 C3 02 00 00 00 02    ................
019040:  15 00 C8 02 00 00 00 02 15 00 C4 02 00 00 00 02    ................
019050:  15 00 C9 02 00 00 00 02 15 00 C5 02 00 00 00 02    ................
019060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
019070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
019080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
019090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0190A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0190B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0190C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0190D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0190E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0190F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
019100:  64 62 09 30 35 68 2C 27 31 39 32 30 30 24 27 0D    db.05h,'19200$'.
019110:  0A 09 09 64 77 09 09 36 0D 0A 09 64 62 09 30 34    ...dw..6...db.04
019120:  68 2C 20 27 32 34 30 30 24 27 0D 0A 09 09 64 77    h, '2400$'....dw
019130:  09 09 34 38 0D 0A 09 64 62 09 30 33 68 2C 20 20    ..48...db.03h,  
019140:  27 33 30 30 24 27 0D 0A 09 09 64 77 09 09 33 38    '300$'....dw..38
019150:  34 0D 0A 09 64 62 09 30 35 68 2C 27 33 38 34 30    4...db.05h,'3840
019160:  30 24 27 0D 0A 09 09 64 77 09 09 33 0D 0A 09 64    0$'....dw..3...d
019170:  62 09 30 33 68 2C 20 20 27 34 35 30 24 27 0D 0A    b.03h,  '450$'..
019180:  09 09 64 77 09 09 32 38 38 0D 0A 09 64 62 09 30    ..dw..288...db.0
019190:  34 68 2C 20 27 34 38 30 30 24 27 0D 0A 09 09 64    4h, '4800$'....d
0191A0:  77 09 09 32 34 0D 0A 09 64 62 09 30 35 68 2C 27    w..24...db.05h,'
0191B0:  35 36 30 30 30 24 27 0D 0A 09 09 64 77 09 09 32    56000$'....dw..2
0191C0:  0D 0A 09 64 62 09 30 33 68 2C 20 20 27 36 30 30    ...db.03h,  '600
0191D0:  24 27 0D 0A 09 09 64 77 09 09 31 39 32 0D 0A 09    $'....dw..192...
0191E0:  64 62 09 30 32 68 2C 20 20 20 27 37 35 24 27 0D    db.02h,   '75$'.
0191F0:  0A 09 09 64 77 09 09 31 35 33 36 0D 0A 09 64 62    ...dw..1536...db
019200:  09 30 34 68 2C 20 27 39 36 30 30 24 27 0D 0A 09    .04h, '9600$'...
019210:  09 64 77 09 09 31 32 0D 0A 0D 0A 73 70 68 74 62    .dw..12....sphtb
019220:  6C 3A 09 64 62 09 63 72 2C 6C 66 2C 27 20 20 20    l:.db.cr,lf,'   
019230:  37 35 20 20 20 20 31 31 30 20 20 20 20 31 35 30    75    110    150
019240:  20 20 20 20 33 30 30 20 20 20 20 34 35 30 20 20        300    450  
019250:  20 20 36 30 30 20 20 20 31 32 30 30 27 0D 0A 09      600   1200'...
019260:  64 62 09 63 72 2C 6C 66 2C 27 20 32 34 30 30 20    db.cr,lf,' 2400 
019270:  20 20 34 38 30 30 20 20 20 39 36 30 30 20 20 31      4800   9600  1
019280:  39 32 30 30 20 20 33 38 34 30 30 20 20 35 36 30    9200  38400  560
019290:  30 30 24 27 0D 0A 0D 0A 3B 28 4C 6F 72 64 20 6B    00$'....;(Lord k
0192A0:  6E 6F 77 73 20 77 68 61 74 20 79 6F 75 27 6C 6C    nows what you'll
0192B0:  20 62 65 20 63 6F 6D 6D 75 6E 69 63 61 74 69 6E     be communicatin
0192C0:  67 20 77 69 74 68 20 61 74 20 35 36 30 30 30 20    g with at 56000 
0192D0:  62 61 75 64 2C 20 62 75 74 20 74 68 65 0D 0A 3B    baud, but the..;
0192E0:  4D 75 6C 74 69 2D 49 2F 4F 20 62 6F 61 72 64 20    Multi-I/O board 
0192F0:  6C 69 74 65 72 61 74 75 72 65 20 73 61 79 73 20    literature says 
019300:  74 77 6F 20 70 6C 61 63 65 73 20 77 65 20 75 73    two places we us
019310:  65 2E 2E 2E 0D 0A 09 73 74 61 09 69 6E 70 6D 64    e......sta.inpmd
019320:  32 2B 31 09 3B 5B 68 68 5D 20 4D 4E 50 4F 52 54    2+1.;[hh] MNPORT
019330:  20 69 6E 20 74 68 65 20 6F 76 65 72 6C 61 79 0D     in the overlay.
019340:  0A 09 73 74 61 09 70 6F 72 74 09 09 3B 5B 68 68    ..sta.port..;[hh
019350:  5D 20 69 6E 66 6F 72 6D 20 70 72 6F 67 72 61 6D    ] inform program
019360:  20 6F 66 20 74 68 65 20 63 68 61 6E 67 65 20 69     of the change i
019370:  6E 20 70 6F 72 74 73 0D 0A 09 69 6E 72 09 61 09    n ports...inr.a.
019380:  09 3B 5B 68 68 5D 20 73 74 61 74 75 73 20 70 6F    .;[hh] status po
019390:  72 74 20 3D 20 64 61 74 61 20 70 6F 72 74 20 2B    rt = data port +
0193A0:  20 31 20 69 6E 20 74 68 65 20 4C 6F 62 6F 0D 0A     1 in the Lobo..
0193B0:  09 73 74 61 09 6F 75 74 6D 64 31 2B 31 09 3B 5B    .sta.outmd1+1.;[
0193C0:  68 68 5D 20 73 74 6F 72 65 20 69 74 20 61 74 20    hh] store it at 
0193D0:  74 68 65 20 74 68 72 65 65 20 70 6C 61 63 65 73    the three places
0193E0:  2E 2E 2E 0D 0A 09 73 74 61 09 69 6E 70 6D 64 31    ......sta.inpmd1
0193F0:  2B 31 09 3B 5B 68 68 5D 20 77 65 20 75 73 65 20    +1.;[hh] we use 
019400:  4D 4E 50 52 54 53 2E 2E 2E 0D 0A 09 73 74 61 09    MNPRTS......sta.
019410:  6F 75 74 63 74 6C 2B 31 09 3B 5B 68 68 5D 20 69    outctl+1.;[hh] i
019420:  6E 20 74 68 65 20 6F 76 65 72 6C 61 79 0D 0A 09    n the overlay...
019430:  6D 6F 76 09 61 2C 64 09 09 3B 5B 68 68 5D 20 6E    mov.a,d..;[hh] n
019440:  6F 77 20 67 65 74 20 74 68 65 20 62 61 75 64 20    ow get the baud 
019450:  72 61 74 65 20 70 6F 72 74 20 76 61 6C 75 65 0D    rate port value.
019460:  0A 09 73 74 61 09 67 65 74 62 64 2B 31 09 09 3B    ..sta.getbd+1..;
019470:  5B 68 68 5D 20 73 74 6F 72 65 20 69 74 20 69 6E    [hh] store it in
019480:  20 74 68 65 20 74 77 6F 20 70 6C 61 63 65 73 20     the two places 
019490:  77 65 20 75 73 65 2E 2E 2E 0D 0A 09 73 74 61 09    we use......sta.
0194A0:  73 65 74 62 64 2B 31 09 09 3B 5B 68 68 5D 20 42    setbd+1..;[hh] B
0194B0:  41 55 44 52 54 20 69 6E 20 74 68 65 20 6F 76 65    AUDRT in the ove
0194C0:  72 6C 61 79 0D 0A 09 73 74 61 09 70 6F 72 74 2B    rlay...sta.port+
0194D0:  31 09 09 3B 5B 68 68 5D 20 64 6F 6E 27 74 20 6E    1..;[hh] don't n
0194E0:  65 65 64 20 74 6F 2C 20 62 75 74 20 6B 65 65 70    eed to, but keep
0194F0:  73 20 69 74 20 63 6F 6E 73 69 73 74 61 6E 74 0D    s it consistant.
019500:  69 74 27 6C 6C 20 64 6F 20 69 74 2C 20 73 6F 20    it'll do it, so 
019510:  77 68 61 74 20 74 68 65 20 68 65 63 6B 2E 2E 2E    what the heck...
019520:  2E 0D 0A 3B 6D 69 67 68 74 20 61 73 20 77 65 6C    ...;might as wel
019530:  6C 20 74 68 72 6F 77 20 69 74 20 69 6E 20 68 65    l throw it in he
019540:  72 65 20 6A 75 73 74 20 74 6F 20 73 68 6F 77 20    re just to show 
019550:  6F 66 66 2E 2E 2E 73 75 72 65 20 68 6F 70 65 20    off...sure hope 
019560:  74 68 65 0D 0A 3B 70 6F 72 74 20 64 6F 6E 27 74    the..;port don't
019570:  20 6D 65 6C 74 2E 2E 2E 29 0D 0A 0D 0A 45 4E 44     melt...)....END
019580:  49 46 09 3B 6D 64 49 09 5B 54 6F 61 64 20 48 61    IF.;mdI.[Toad Ha
019590:  6C 6C 5D 0D 0A 0D 0A 49 46 20 68 65 61 74 68 0D    ll]....IF heath.
0195A0:  0A 3B 0D 0A 3B 09 53 70 65 65 64 20 73 65 6C 65    .;..;.Speed sele
0195B0:  63 74 69 6F 6E 20 74 61 62 6C 65 20 66 6F 72 20    ction table for 
0195C0:  48 38 39 20 20 28 4F 4B 2C 20 73 6F 20 49 20 67    H89  (OK, so I g
0195D0:  6F 74 20 61 20 6C 69 74 74 6C 65 20 63 61 72 72    ot a little carr
0195E0:  69 65 64 20 61 77 61 79 2E 2E 2E 29 0D 0A 3B 0D    ied away...)..;.
0195F0:  0A 0D 0A 73 70 64 74 62 6C 3A 09 64 62 09 31 39    ...spdtbl:.db.19
019600:  09 09 3B 20 31 39 20 65 6E 74 72 69 65 73 0D 0A    ..; 19 entries..
019610:  09 64 62 09 33 2C 27 31 31 30 24 27 0D 0A 09 64    .db.3,'110$'...d
019620:  77 09 31 30 34 37 0D 0A 09 64 62 09 34 2C 27 31    w.1047...db.4,'1
019630:  32 30 30 24 27 0D 0A 09 64 77 09 39 36 0D 0A 09    200$'...dw.96...
019640:  64 62 09 35 2C 27 31 33 34 2E 35 24 27 0D 0A 09    db.5,'134.5$'...
019650:  64 77 09 38 35 37 0D 0A 09 64 62 09 34 2C 27 31    dw.857...db.4,'1
019660:  38 30 30 24 27 0D 0A 09 64 77 09 36 34 0D 0A 09    800$'...dw.64...
019670:  64 62 09 35 2C 27 31 39 32 30 30 24 27 0D 0A 09    db.5,'19200$'...
019680:  64 77 09 36 0D 0A 09 64 62 09 33 2C 27 32 30 30    dw.6...db.3,'200
019690:  24 27 0D 0A 09 64 77 09 35 37 36 0D 0A 09 64 62    $'...dw.576...db
0196A0:  09 34 2C 27 32 34 30 30 24 27 0D 0A 09 64 77 09    .4,'2400$'...dw.
0196B0:  34 38 0D 0A 09 64 62 09 33 2C 27 33 30 30 24 27    48...db.3,'300$'
0196C0:  0D 0A 09 64 77 09 33 38 34 0D 0A 09 64 62 09 34    ...dw.384...db.4
0196D0:  2C 27 33 36 30 30 24 27 0D 0A 09 64 77 09 33 32    ,'3600$'...dw.32
0196E0:  0D 0A 09 64 62 09 35 2C 27 33 38 34 30 30 24 27    ...db.5,'38400$'
0196F0:  0D 0A 09 64 77 09 33 0D 0A 09 64 62 09 33 2C 27    ...dw.3...db.3,'
019700:  0A 67 65 74 62 64 3A 09 6C 64 61 09 62 61 75 64    .getbd:.lda.baud
019710:  72 74 09 09 3B 5B 68 68 5D 20 67 65 74 20 62 61    rt..;[hh] get ba
019720:  75 64 20 72 61 74 65 20 76 61 6C 75 65 20 66 72    ud rate value fr
019730:  6F 6D 20 70 6F 72 74 0D 0A 09 73 74 61 09 73 70    om port...sta.sp
019740:  65 65 64 09 09 3B 5B 68 68 5D 20 74 65 6C 6C 20    eed..;[hh] tell 
019750:  53 54 41 54 2E 20 62 61 75 64 20 72 61 74 65 20    STAT. baud rate 
019760:  66 6F 72 20 65 61 63 68 20 70 6F 72 74 0D 0A 09    for each port...
019770:  09 09 09 3B 5B 68 68 5D 20 69 73 20 69 6E 64 65    ...;[hh] is inde
019780:  70 65 6E 64 61 6E 74 20 6F 66 20 74 68 65 20 6F    pendant of the o
019790:  74 68 65 72 0D 0A 45 4E 44 49 46 09 3B 6C 6F 62    ther..ENDIF.;lob
0197A0:  6F 0D 0A 0D 0A 49 46 20 69 6F 62 79 74 0D 0A 09    o....IF iobyt...
0197B0:  6D 6F 76 09 61 2C 6D 09 09 3B 47 65 74 20 74 68    mov.a,m..;Get th
0197C0:  65 20 49 2F 4F 20 62 79 74 65 0D 0A 09 73 74 61    e I/O byte...sta
0197D0:  09 70 72 74 69 6F 62 09 09 3B 53 61 76 65 20 74    .prtiob..;Save t
0197E0:  68 65 20 64 65 73 69 72 65 64 20 49 4F 20 62 79    he desired IO by
0197F0:  74 65 20 66 6F 72 20 74 68 69 73 20 70 6F 72 74    te for this port
019800:  0D 0A 09 69 6E 78 09 68 09 09 3B 50 6F 69 6E 74    ...inx.h..;Point
019810:  20 61 74 20 6E 65 78 74 20 65 6E 74 72 79 0D 0A     at next entry..
019820:  09 6D 6F 76 09 61 2C 6D 09 09 3B 47 65 74 20 74    .mov.a,m..;Get t
019830:  68 65 20 6F 75 74 70 75 74 20 66 75 6E 63 74 69    he output functi
019840:  6F 6E 0D 0A 09 73 74 61 09 70 72 74 66 75 6E 09    on...sta.prtfun.
019850:  09 3B 53 61 76 65 20 69 74 0D 0A 45 4E 44 49 46    .;Save it..ENDIF
019860:  3B 69 6F 62 79 74 0D 0A 0D 0A 49 46 20 69 6F 62    ;iobyt....IF iob
019870:  79 74 20 41 4E 44 20 72 6F 62 69 6E 0D 0A 09 69    yt AND robin...i
019880:  6E 78 09 68 09 09 3B 50 6F 69 6E 74 20 61 74 20    nx.h..;Point at 
019890:  6E 65 78 74 20 65 6E 74 72 79 0D 0A 09 6D 6F 76    next entry...mov
0198A0:  09 61 2C 6D 09 09 3B 47 65 74 20 74 68 65 20 68    .a,m..;Get the h
0198B0:  61 72 64 77 61 72 65 20 61 64 64 72 65 73 73 20    ardware address 
0198C0:  66 6F 72 20 74 68 65 20 70 6F 72 74 0D 0A 09 73    for the port...s
0198D0:  74 61 09 70 72 74 61 64 72 09 09 3B 53 74 6F 72    ta.prtadr..;Stor
0198E0:  65 20 69 74 0D 0A 45 4E 44 49 46 3B 69 6F 62 79    e it..ENDIF;ioby
0198F0:  74 20 41 4E 44 20 72 6F 62 69 6E 0D 0A 09 72 65    t AND robin...re
019900:  34 35 30 24 27 0D 0A 09 64 77 09 32 35 36 0D 0A    450$'...dw.256..
019910:  09 64 62 09 34 2C 27 34 38 30 30 24 27 0D 0A 09    .db.4,'4800$'...
019920:  64 77 09 32 34 0D 0A 09 64 62 09 32 2C 27 35 30    dw.24...db.2,'50
019930:  24 27 0D 0A 09 64 77 09 32 33 30 34 0D 0A 09 64    $'...dw.2304...d
019940:  62 09 35 2C 27 35 36 30 30 30 24 27 0D 0A 09 64    b.5,'56000$'...d
019950:  77 09 32 0D 0A 09 64 62 09 33 2C 27 36 30 30 24    w.2...db.3,'600$
019960:  27 0D 0A 09 64 77 09 31 39 32 0D 0A 09 64 62 09    '...dw.192...db.
019970:  34 2C 27 37 32 30 30 24 27 0D 0A 09 64 77 09 31    4,'7200$'...dw.1
019980:  36 0D 0A 09 64 62 09 32 2C 27 37 35 24 27 0D 0A    6...db.2,'75$'..
019990:  09 64 77 09 31 35 33 36 0D 0A 09 64 62 09 33 2C    .dw.1536...db.3,
0199A0:  27 39 30 30 24 27 0D 0A 09 64 77 09 31 32 38 0D    '900$'...dw.128.
0199B0:  0A 09 64 62 09 34 2C 27 39 36 30 30 24 27 0D 0A    ..db.4,'9600$'..
0199C0:  09 64 77 09 31 32 0D 0A 0D 0A 73 70 68 74 62 6C    .dw.12....sphtbl
0199D0:  3A 09 64 62 09 63 72 2C 6C 66 0D 0A 09 64 62 09    :.db.cr,lf...db.
0199E0:  27 20 20 20 20 35 30 20 20 20 20 37 35 20 20 20    '    50    75   
0199F0:  31 31 30 20 31 33 34 2E 35 20 20 20 32 30 30 20    110 134.5   200 
019A00:  20 20 33 30 30 20 20 20 34 35 30 20 20 20 36 30      300   450   60
019A10:  30 20 20 20 39 30 30 20 20 31 32 30 30 27 0D 0A    0   900  1200'..
019A20:  09 64 62 09 63 72 2C 6C 66 2C 27 20 20 31 38 30    .db.cr,lf,'  180
019A30:  30 20 20 32 34 30 30 20 20 33 36 30 30 20 20 34    0  2400  3600  4
019A40:  38 30 30 20 20 37 32 30 30 20 20 39 36 30 30 20    800  7200  9600 
019A50:  31 39 32 30 30 20 33 38 34 30 30 20 35 36 30 30    19200 38400 5600
019A60:  30 24 27 0D 0A 45 4E 44 49 46 3B 68 65 61 74 68    0$'..ENDIF;heath
019A70:  0D 0A 0D 0A 49 46 20 6E 6F 72 74 68 73 0D 0A 73    ....IF norths..s
019A80:  70 64 74 62 6C 3A 09 64 62 09 38 09 09 3B 20 38    pdtbl:.db.8..; 8
019A90:  20 65 6E 74 72 69 65 73 0D 0A 09 64 62 09 33 2C     entries...db.3,
019AA0:  27 31 31 30 24 27 2C 09 30 37 48 2C 30 37 48 0D    '110$',.07H,07H.
019AB0:  0A 09 64 62 09 34 2C 27 31 32 30 30 24 27 2C 09    ..db.4,'1200$',.
019AC0:  30 34 48 2C 30 34 48 0D 0A 09 64 62 09 35 2C 27    04H,04H...db.5,'
019AD0:  31 39 32 30 30 24 27 2C 09 30 30 48 2C 30 30 48    19200$',.00H,00H
019AE0:  0D 0A 09 64 62 09 34 2C 27 32 34 30 30 24 27 2C    ...db.4,'2400$',
019AF0:  09 30 33 48 2C 30 33 48 0D 0A 09 64 62 09 33 2C    .03H,03H...db.3,
019B00:  74 0D 0A 3B 0C 0D 0A 3B 0D 0A 3B 09 50 6F 72 74    t..;...;..;.Port
019B10:  20 74 61 62 6C 65 73 20 66 6F 72 20 4C 6F 62 6F     tables for Lobo
019B20:  20 4D 41 58 2D 38 30 0D 0A 49 46 20 6C 6F 62 6F     MAX-80..IF lobo
019B30:  09 3B 5B 68 68 5D 0D 0A 3B 20 68 65 6C 70 20 74    .;[hh]..; help t
019B40:  65 78 74 0D 0A 70 72 68 74 62 6C 3A 09 64 62 09    ext..prhtbl:.db.
019B50:  63 72 2C 6C 66 2C 27 52 53 2D 32 33 32 20 70 6F    cr,lf,'RS-232 po
019B60:  72 74 20 41 20 6F 72 20 42 24 27 0D 0A 3B 0D 0A    rt A or B$'..;..
019B70:  3B 20 63 6F 6D 6D 61 6E 64 20 74 61 62 6C 65 0D    ; command table.
019B80:  0A 70 72 74 74 62 6C 3A 09 64 62 09 30 32 48 09    .prttbl:.db.02H.
019B90:  09 09 3B 5B 68 68 5D 20 74 77 6F 20 65 6E 74 72    ..;[hh] two entr
019BA0:  69 65 73 0D 0A 09 64 62 09 30 31 48 2C 27 41 24    ies...db.01H,'A$
019BB0:  27 2C 30 45 34 48 2C 30 44 30 48 0D 0A 09 64 62    ',0E4H,0D0H...db
019BC0:  09 30 31 48 2C 27 42 24 27 2C 30 45 36 48 2C 30    .01H,'B$',0E6H,0
019BD0:  44 34 48 0D 0A 45 4E 44 49 46 09 3B 6C 6F 62 6F    D4H..ENDIF.;lobo
019BE0:  0D 0A 3B 0C 0D 0A 3B 0D 0A 3B 09 50 6F 72 74 20    ..;...;..;.Port 
019BF0:  74 61 62 6C 65 73 20 66 6F 72 20 47 45 4E 45 52    tables for GENER
019C00:  49 43 20 43 50 4D 20 32 2E 32 0D 0A 49 46 20 67    IC CPM 2.2..IF g
019C10:  65 6E 65 72 0D 0A 3B 20 68 65 6C 70 20 74 65 78    ener..; help tex
019C20:  74 0D 0A 70 72 68 74 62 6C 3A 09 64 62 09 63 72    t..prhtbl:.db.cr
019C30:  2C 6C 66 2C 27 43 52 54 20 64 65 76 69 63 65 27    ,lf,'CRT device'
019C40:  0D 0A 09 64 62 09 63 72 2C 6C 66 2C 27 50 54 52    ...db.cr,lf,'PTR
019C50:  20 64 65 76 69 63 65 27 0D 0A 09 64 62 09 63 72     device'...db.cr
019C60:  2C 6C 66 2C 27 54 54 59 20 64 65 76 69 63 65 27    ,lf,'TTY device'
019C70:  0D 0A 09 64 62 09 63 72 2C 6C 66 2C 27 55 43 31    ...db.cr,lf,'UC1
019C80:  20 64 65 76 69 63 65 27 0D 0A 09 64 62 09 63 72     device'...db.cr
019C90:  2C 6C 66 2C 27 55 52 31 20 64 65 76 69 63 65 27    ,lf,'UR1 device'
019CA0:  0D 0A 09 64 62 09 63 72 2C 6C 66 2C 27 55 52 32    ...db.cr,lf,'UR2
019CB0:  20 64 65 76 69 63 65 24 27 0D 0A 0D 0A 3B 20 63     device$'....; c
019CC0:  6F 6D 6D 61 6E 64 20 74 61 62 6C 65 0D 0A 70 72    ommand table..pr
019CD0:  74 74 62 6C 3A 09 64 62 09 30 36 48 09 09 3B 53    ttbl:.db.06H..;S
019CE0:  69 78 20 64 65 76 69 63 65 73 20 74 6F 20 63 68    ix devices to ch
019CF0:  6F 6F 73 65 20 66 72 6F 6D 0D 0A 09 64 62 09 30    oose from...db.0
019D00:  27 33 30 30 24 27 2C 09 30 36 48 2C 30 36 48 0D    '300$',.06H,06H.
019D10:  0A 09 64 62 09 34 2C 27 34 38 30 30 24 27 2C 09    ..db.4,'4800$',.
019D20:  30 32 48 2C 30 32 48 0D 0A 09 64 62 09 33 2C 27    02H,02H...db.3,'
019D30:  36 30 30 24 27 2C 09 30 35 48 2C 30 35 48 0D 0A    600$',.05H,05H..
019D40:  09 64 62 09 34 2C 27 39 36 30 30 24 27 2C 09 30    .db.4,'9600$',.0
019D50:  31 48 2C 30 31 48 0D 0A 0D 0A 73 70 68 74 62 6C    1H,01H....sphtbl
019D60:  3A 09 64 62 09 63 72 2C 6C 66 0D 0A 09 64 62 09    :.db.cr,lf...db.
019D70:  27 20 20 20 31 31 30 20 20 20 33 30 30 20 20 20    '   110   300   
019D80:  36 30 30 20 20 31 32 30 30 20 20 32 34 30 30 20    600  1200  2400 
019D90:  20 34 38 30 30 20 20 39 36 30 30 20 31 39 32 30     4800  9600 1920
019DA0:  30 24 27 0D 0A 45 4E 44 49 46 3B 6E 6F 72 74 68    0$'..ENDIF;north
019DB0:  73 0D 0A 0D 0A 3B 20 54 68 65 20 66 6F 6C 6C 6F    s....; The follo
019DC0:  77 69 6E 67 20 63 6F 6E 64 69 74 69 6F 6E 61 6C    wing conditional
019DD0:  73 20 77 65 72 65 20 6F 6E 63 65 20 61 20 68 75    s were once a hu
019DE0:  67 65 20 69 66 20 6E 6F 74 20 73 74 61 74 65 6D    ge if not statem
019DF0:  65 6E 74 2E 20 20 54 68 65 72 65 0D 0A 3B 20 77    ent.  There..; w
019E00:  61 73 6E 27 74 20 65 6E 6F 75 67 68 20 72 6F 6F    asn't enough roo
019E10:  6D 20 74 6F 20 61 64 64 20 74 68 65 20 6C 6F 62    m to add the lob
019E20:  6F 20 74 6F 20 74 68 65 20 6C 69 73 74 2C 20 73    o to the list, s
019E30:  6F 20 69 74 20 68 61 64 20 74 6F 20 62 65 20 62    o it had to be b
019E40:  72 6F 6B 65 6E 0D 0A 3B 20 69 6E 74 6F 20 32 2C    roken..; into 2,
019E50:  20 77 68 69 63 68 20 79 6F 75 20 63 61 6E 27 74     which you can't
019E60:  20 64 6F 20 77 69 74 68 20 61 6E 20 69 66 20 6E     do with an if n
019E70:  6F 74 2E 20 20 49 20 72 65 64 69 64 20 69 74 20    ot.  I redid it 
019E80:  61 73 20 74 77 6F 20 69 66 73 20 61 6E 64 0D 0A    as two ifs and..
019E90:  3B 20 61 70 70 6C 69 65 64 20 74 68 65 6D 20 74    ; applied them t
019EA0:  6F 20 74 68 6F 73 65 20 74 68 61 74 20 77 6F 75    o those that wou
019EB0:  6C 64 6E 27 74 20 73 65 74 20 62 61 75 64 2E 20    ldn't set baud. 
019EC0:  5B 48 61 6C 20 48 6F 73 74 65 74 6C 65 72 5D 0D    [Hal Hostetler].
019ED0:  0A 49 46 20 72 6F 62 69 6E 20 4F 52 20 67 65 6E    .IF robin OR gen
019EE0:  65 72 20 4F 52 20 64 6D 49 49 20 4F 52 20 76 65    er OR dmII OR ve
019EF0:  63 74 6F 72 20 4F 52 20 7A 31 30 30 20 4F 52 20    ctor OR z100 OR 
019F00:  33 48 2C 27 43 52 54 24 27 0D 0A 09 09 64 77 09    3H,'CRT$'....dw.
019F10:  63 72 74 70 74 62 0D 0A 09 64 62 09 30 33 48 2C    crtptb...db.03H,
019F20:  27 50 54 52 24 27 0D 0A 09 09 64 77 09 70 74 72    'PTR$'....dw.ptr
019F30:  70 74 62 0D 0A 09 64 62 09 30 33 48 2C 27 54 54    ptb...db.03H,'TT
019F40:  59 24 27 0D 0A 09 09 64 77 09 74 74 79 70 74 62    Y$'....dw.ttyptb
019F50:  0D 0A 09 64 62 09 30 33 48 2C 27 55 43 31 24 27    ...db.03H,'UC1$'
019F60:  0D 0A 09 09 64 77 09 75 63 31 70 74 62 0D 0A 09    ....dw.uc1ptb...
019F70:  64 62 09 30 33 48 2C 27 55 52 31 24 27 0D 0A 09    db.03H,'UR1$'...
019F80:  09 64 77 09 75 72 31 70 74 62 0D 0A 09 64 62 09    .dw.ur1ptb...db.
019F90:  30 33 48 2C 27 55 52 32 24 27 0D 0A 09 09 64 77    03H,'UR2$'....dw
019FA0:  09 75 72 32 70 74 62 0D 0A 0D 0A 3B 20 70 6F 72    .ur2ptb....; por
019FB0:  74 20 65 6E 74 72 79 20 74 61 62 6C 65 0D 0A 3B    t entry table..;
019FC0:  20 74 61 62 6C 65 20 65 6E 74 72 69 65 73 20 61     table entries a
019FD0:  72 65 3A 0D 0A 3B 09 64 62 09 69 6F 62 79 74 65    re:..;.db.iobyte
019FE0:  2D 76 61 6C 75 65 2C 20 42 44 4F 53 20 6F 75 74    -value, BDOS out
019FF0:  70 75 74 20 66 75 6E 63 74 69 6F 6E 2C 20 72 65    put function, re
01A000:  73 65 72 76 65 64 0D 0A 63 72 74 70 74 62 3A 09    served..crtptb:.
01A010:  64 62 09 63 72 74 69 6F 2C 63 6F 6E 6F 75 74 2C    db.crtio,conout,
01A020:  30 0D 0A 70 74 72 70 74 62 3A 09 64 62 09 70 74    0..ptrptb:.db.pt
01A030:  72 69 6F 2C 70 75 6E 6F 75 74 2C 30 0D 0A 74 74    rio,punout,0..tt
01A040:  79 70 74 62 3A 09 64 62 09 74 74 79 69 6F 2C 63    yptb:.db.ttyio,c
01A050:  6F 6E 6F 75 74 2C 30 0D 0A 75 63 31 70 74 62 3A    onout,0..uc1ptb:
01A060:  09 64 62 09 75 63 31 69 6F 2C 63 6F 6E 6F 75 74    .db.uc1io,conout
01A070:  2C 30 0D 0A 75 72 31 70 74 62 3A 09 64 62 09 75    ,0..ur1ptb:.db.u
01A080:  72 31 69 6F 2C 70 75 6E 6F 75 74 2C 30 0D 0A 75    r1io,punout,0..u
01A090:  72 32 70 74 62 3A 09 64 62 09 75 72 32 69 6F 2C    r2ptb:.db.ur2io,
01A0A0:  70 75 6E 6F 75 74 2C 30 0D 0A 45 4E 44 49 46 3B    punout,0..ENDIF;
01A0B0:  67 65 6E 65 72 0D 0A 3B 0C 0D 0A 3B 0D 0A 3B 09    gener..;...;..;.
01A0C0:  50 6F 72 74 20 74 61 62 6C 65 73 20 66 6F 72 20    Port tables for 
01A0D0:  44 45 43 6D 61 74 65 20 49 49 20 6F 72 20 4D 69    DECmate II or Mi
01A0E0:  63 72 6F 4D 69 6B 6B 6F 0D 0A 3B 0D 0A 49 46 20    croMikko..;..IF 
01A0F0:  64 6D 49 49 20 4F 52 20 6D 69 6B 6B 6F 0D 0A 3B    dmII OR mikko..;
01A100:  74 72 73 38 30 20 4F 52 20 74 65 6C 63 6F 6E 0D    trs80 OR telcon.
01A110:  0A 73 70 64 74 62 6C 09 65 71 75 09 30 09 09 3B    .spdtbl.equ.0..;
01A120:  20 53 45 54 20 42 41 55 44 20 6E 6F 74 20 73 75     SET BAUD not su
01A130:  70 70 6F 72 74 65 64 2E 0D 0A 73 70 68 74 62 6C    pported...sphtbl
01A140:  09 65 71 75 09 30 0D 0A 45 4E 44 49 46 3B 72 6F    .equ.0..ENDIF;ro
01A150:  62 69 6E 20 4F 52 20 67 65 6E 65 72 20 4F 52 20    bin OR gener OR 
01A160:  64 6D 49 49 20 4F 52 20 76 65 63 74 6F 72 20 4F    dmII OR vector O
01A170:  52 20 7A 31 30 30 20 4F 52 20 74 72 73 38 30 20    R z100 OR trs80 
01A180:  4F 52 20 74 65 6C 63 6F 6E 0D 0A 3B 0D 0A 49 46    OR telcon..;..IF
01A190:  20 6D 6D 64 49 20 4F 52 20 6F 73 69 20 4F 52 20     mmdI OR osi OR 
01A1A0:  63 70 6D 33 20 4F 52 20 61 70 6D 6D 64 6D 0D 0A    cpm3 OR apmmdm..
01A1B0:  73 70 64 74 62 6C 09 45 51 55 09 30 09 09 3B 5B    spdtbl.EQU.0..;[
01A1C0:  68 68 5D 20 53 45 54 20 42 41 55 44 20 6E 6F 74    hh] SET BAUD not
01A1D0:  20 73 75 70 70 6F 72 74 65 64 2E 0D 0A 73 70 68     supported...sph
01A1E0:  74 62 6C 09 45 51 55 09 30 09 09 3B 5B 68 68 5D    tbl.EQU.0..;[hh]
01A1F0:  20 72 61 6E 20 6F 75 74 20 6F 66 20 72 6F 6F 6D     ran out of room
01A200:  20 61 62 6F 76 65 2E 2E 2E 0D 0A 45 4E 44 49 46     above.....ENDIF
01A210:  3B 6D 6D 64 49 20 4F 52 20 6F 73 69 20 4F 52 20    ;mmdI OR osi OR 
01A220:  63 70 6D 33 20 4F 52 20 61 70 6D 6D 64 6D 0D 0A    cpm3 OR apmmdm..
01A230:  3B 0C 0D 0A 3B 09 54 68 69 73 20 69 73 20 74 68    ;...;.This is th
01A240:  65 20 73 79 73 74 65 6D 2D 64 65 70 65 6E 64 65    e system-depende
01A250:  6E 74 20 53 45 54 20 50 4F 52 54 20 63 6F 6D 6D    nt SET PORT comm
01A260:  61 6E 64 2E 0D 0A 3B 09 48 4C 20 63 6F 6E 74 61    and...;.HL conta
01A270:  69 6E 73 20 74 68 65 20 61 72 67 75 6D 65 6E 74    ins the argument
01A280:  20 66 72 6F 6D 20 74 68 65 20 63 6F 6D 6D 61 6E     from the comman
01A290:  64 20 74 61 62 6C 65 2E 0D 0A 73 79 73 70 72 74    d table...sysprt
01A2A0:  3A 0D 0A 49 46 20 6C 6F 62 6F 09 3B 5B 68 68 5D    :..IF lobo.;[hh]
01A2B0:  0D 0A 09 6D 6F 76 09 61 2C 65 09 09 3B 5B 68 68    ...mov.a,e..;[hh
01A2C0:  5D 20 67 65 74 20 74 68 65 20 64 61 74 61 20 70    ] get the data p
01A2D0:  6F 72 74 20 76 61 6C 75 65 20 61 6E 64 20 73 74    ort value and st
01A2E0:  6F 72 65 20 61 74 0D 0A 09 73 74 61 09 6F 75 74    ore at...sta.out
01A2F0:  6D 64 33 2B 31 09 3B 5B 68 68 5D 20 74 68 65 20    md3+1.;[hh] the 
01A300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01A310:  16 00 00 00 02 09 4E E5 16 00 C1 02 00 00 00 02    ......N.........
01A320:  16 00 C6 02 00 00 00 02 16 00 C2 02 00 00 00 02    ................
01A330:  16 00 C7 02 00 00 00 02 16 00 C3 02 00 00 00 02    ................
01A340:  16 00 C8 02 00 00 00 02 16 00 C4 02 00 00 00 02    ................
01A350:  16 00 C9 02 00 00 00 02 16 00 C5 02 00 00 00 02    ................
01A360:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A370:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A380:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A390:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A400:  20 68 65 6C 70 20 74 65 78 74 0D 0A 70 72 68 74     help text..prht
01A410:  62 6C 3A 09 64 62 09 63 72 2C 6C 66 2C 27 43 4F    bl:.db.cr,lf,'CO
01A420:  4D 4D 55 4E 49 43 41 54 49 4F 4E 53 20 70 6F 72    MMUNICATIONS por
01A430:  74 24 27 0D 0A 0D 0A 3B 20 63 6F 6D 6D 61 6E 64    t$'....; command
01A440:  20 74 61 62 6C 65 0D 0A 70 72 74 74 62 6C 3A 09     table..prttbl:.
01A450:  64 62 09 30 31 48 09 09 3B 4F 6E 6C 79 20 6F 6E    db.01H..;Only on
01A460:  65 20 70 6F 72 74 20 6B 6E 6F 77 6E 20 61 74 20    e port known at 
01A470:  74 68 69 73 20 70 6F 69 6E 74 0D 0A 09 64 62 09    this point...db.
01A480:  30 45 48 2C 27 43 4F 4D 4D 55 4E 49 43 41 54 49    0EH,'COMMUNICATI
01A490:  4F 4E 53 24 27 0D 0A 09 09 64 77 09 63 6F 6D 70    ONS$'....dw.comp
01A4A0:  74 62 09 3B 61 64 64 72 65 73 73 20 6F 66 20 69    tb.;address of i
01A4B0:  6E 66 6F 0D 0A 0D 0A 3B 20 70 6F 72 74 20 65 6E    nfo....; port en
01A4C0:  74 72 79 20 74 61 62 6C 65 0D 0A 3B 20 74 61 62    try table..; tab
01A4D0:  6C 65 20 65 6E 74 72 69 65 73 20 61 72 65 3A 0D    le entries are:.
01A4E0:  0A 3B 09 64 62 09 69 6F 62 79 74 65 2D 76 61 6C    .;.db.iobyte-val
01A4F0:  75 65 2C 20 42 44 4F 53 20 6F 75 74 70 75 74 20    ue, BDOS output 
01A500:  66 75 6E 63 74 69 6F 6E 2C 20 72 65 73 65 72 76    function, reserv
01A510:  65 64 0D 0A 63 6F 6D 70 74 62 3A 09 64 62 09 62    ed..comptb:.db.b
01A520:  61 74 69 6F 2C 70 75 6E 6F 75 74 2C 30 0D 0A 0D    atio,punout,0...
01A530:  0A 45 4E 44 49 46 3B 64 6D 49 49 20 4F 52 20 6D    .ENDIF;dmII OR m
01A540:  69 6B 6B 6F 0D 0A 3B 0C 0D 0A 3B 0D 0A 3B 09 50    ikko..;...;..;.P
01A550:  6F 72 74 20 74 61 62 6C 65 73 20 66 6F 72 20 52    ort tables for R
01A560:  6F 62 69 6E 0D 0A 3B 0D 0A 49 46 20 72 6F 62 69    obin..;..IF robi
01A570:  6E 0D 0A 3B 20 68 65 6C 70 20 74 65 78 74 0D 0A    n..; help text..
01A580:  70 72 68 74 62 6C 3A 09 64 62 09 63 72 2C 6C 66    prhtbl:.db.cr,lf
01A590:  2C 27 43 4F 4D 4D 55 4E 49 43 41 54 49 4F 4E 53    ,'COMMUNICATIONS
01A5A0:  20 70 6F 72 74 27 0D 0A 09 64 62 09 63 72 2C 6C     port'...db.cr,l
01A5B0:  66 2C 27 47 45 4E 45 52 41 4C 20 70 75 72 70 6F    f,'GENERAL purpo
01A5C0:  73 65 20 70 6F 72 74 27 0D 0A 09 64 62 09 63 72    se port'...db.cr
01A5D0:  2C 6C 66 2C 27 50 52 49 4E 54 45 52 20 70 6F 72    ,lf,'PRINTER por
01A5E0:  74 24 27 0D 0A 0D 0A 3B 20 63 6F 6D 6D 61 6E 64    t$'....; command
01A5F0:  20 74 61 62 6C 65 0D 0A 70 72 74 74 62 6C 3A 09     table..prttbl:.
01A600:  61 72 72 79 0D 0A 09 6D 76 69 09 63 2C 33 09 09    arry...mvi.c,3..
01A610:  3B 66 6F 72 20 33 20 62 79 74 65 73 0D 0A 09 6C    ;for 3 bytes...l
01A620:  78 69 09 68 2C 62 75 66 66 2B 33 09 3B 70 6F 69    xi.h,buff+3.;poi
01A630:  6E 74 20 74 6F 20 61 64 64 72 20 2B 20 31 0D 0A    nt to addr + 1..
01A640:  64 69 72 31 38 63 3A 09 64 63 78 09 68 09 09 3B    dir18c:.dcx.h..;
01A650:  70 6F 69 6E 74 20 74 6F 20 6C 65 73 73 20 73 69    point to less si
01A660:  67 2E 20 62 79 74 65 0D 0A 09 6D 6F 76 09 61 2C    g. byte...mov.a,
01A670:  6D 09 09 3B 67 65 74 20 62 79 74 65 0D 0A 09 72    m..;get byte...r
01A680:  61 72 09 09 09 3B 63 61 72 72 79 20 2D 3E 20 41    ar...;carry -> A
01A690:  20 2D 3E 20 63 61 72 72 79 0D 0A 09 6D 6F 76 09     -> carry...mov.
01A6A0:  6D 2C 61 09 09 3B 70 75 74 20 62 61 63 6B 20 62    m,a..;put back b
01A6B0:  79 74 65 0D 0A 09 64 63 72 09 63 09 09 3B 66 6F    yte...dcr.c..;fo
01A6C0:  72 20 61 6C 6C 20 62 79 74 65 73 20 28 63 61 72    r all bytes (car
01A6D0:  72 79 20 6E 6F 74 20 6D 6F 64 29 0D 0A 09 6A 6E    ry not mod)...jn
01A6E0:  7A 09 64 69 72 31 38 63 0D 0A 09 64 63 72 09 62    z.dir18c...dcr.b
01A6F0:  09 09 3B 73 68 69 66 74 20 31 20 62 69 74 20 33    ..;shift 1 bit 3
01A700:  20 74 69 6D 65 73 0D 0A 09 6A 6E 7A 09 64 69 72     times...jnz.dir
01A710:  31 38 62 0D 0A 09 6D 6F 76 09 65 2C 6D 09 09 3B    18b...mov.e,m..;
01A720:  67 65 74 20 6C 65 61 73 74 20 73 69 67 20 62 79    get least sig by
01A730:  74 65 0D 0A 09 69 6E 78 09 68 0D 0A 09 6D 6F 76    te...inx.h...mov
01A740:  09 64 2C 6D 09 09 3B 67 65 74 20 6D 6F 73 74 20    .d,m..;get most 
01A750:  73 69 67 20 62 79 74 65 0D 0A 09 78 63 68 67 09    sig byte...xchg.
01A760:  09 09 3B 67 65 74 20 4B 20 66 72 65 65 20 69 6E    ..;get K free in
01A770:  20 48 4C 0D 0A 09 72 65 74 0D 0A 0D 0A 3B 20 74     HL...ret....; t
01A780:  68 65 20 72 65 73 74 20 61 72 65 20 43 50 2F 4D    he rest are CP/M
01A790:  20 32 2E 32 20 73 79 73 74 65 6D 73 2C 20 73 6F     2.2 systems, so
01A7A0:  20 75 73 65 20 74 68 65 20 61 6C 6C 6F 63 20 76     use the alloc v
01A7B0:  65 63 74 6F 72 0D 0A 63 70 32 73 70 63 3A 09 6D    ector..cp2spc:.m
01A7C0:  76 69 09 63 2C 67 65 74 61 6C 76 20 09 3B 41 64    vi.c,getalv .;Ad
01A7D0:  64 72 65 73 73 20 6F 66 20 43 50 2F 4D 20 41 6C    dress of CP/M Al
01A7E0:  6C 6F 63 61 74 69 6F 6E 20 56 65 63 74 6F 72 0D    location Vector.
01A7F0:  0A 09 63 61 6C 6C 09 62 64 6F 73 0D 0A 09 78 63    ..call.bdos...xc
01A800:  64 62 09 30 33 48 09 09 3B 54 68 72 65 65 20 65    db.03H..;Three e
01A810:  6E 74 72 69 65 73 0D 0A 09 64 62 09 30 45 48 2C    ntries...db.0EH,
01A820:  27 43 4F 4D 4D 55 4E 49 43 41 54 49 4F 4E 53 24    'COMMUNICATIONS$
01A830:  27 0D 0A 09 09 64 77 09 63 6F 6D 70 74 62 0D 0A    '....dw.comptb..
01A840:  09 64 62 09 30 37 48 2C 27 47 45 4E 45 52 41 4C    .db.07H,'GENERAL
01A850:  24 27 0D 0A 09 09 64 77 09 67 70 70 70 74 62 0D    $'....dw.gppptb.
01A860:  0A 09 64 62 09 30 37 48 2C 27 50 52 49 4E 54 45    ..db.07H,'PRINTE
01A870:  52 24 27 0D 0A 09 09 64 77 09 70 72 6E 70 74 62    R$'....dw.prnptb
01A880:  0D 0A 0D 0A 3B 20 70 6F 72 74 20 65 6E 74 72 79    ....; port entry
01A890:  20 74 61 62 6C 65 0D 0A 3B 20 74 61 62 6C 65 20     table..; table 
01A8A0:  65 6E 74 72 69 65 73 20 61 72 65 3A 0D 0A 3B 09    entries are:..;.
01A8B0:  64 62 09 69 6F 62 79 74 65 2D 76 61 6C 75 65 2C    db.iobyte-value,
01A8C0:  20 42 44 4F 53 20 6F 75 74 70 75 74 20 66 75 6E     BDOS output fun
01A8D0:  63 74 69 6F 6E 2C 20 68 61 72 64 77 61 72 65 20    ction, hardware 
01A8E0:  70 6F 72 74 20 61 64 64 72 65 73 73 0D 0A 3B 09    port address..;.
01A8F0:  09 09 09 09 09 20 20 20 20 28 63 6F 6E 74 72 6F    .....    (contro
01A900:  6C 2F 73 74 61 74 75 73 29 0D 0A 3B 0D 0A 3B 41    l/status)..;..;A
01A910:  74 20 70 72 65 73 65 6E 74 2C 20 74 68 65 20 68    t present, the h
01A920:  61 72 64 77 61 72 65 20 70 6F 72 74 20 61 64 64    ardware port add
01A930:  72 65 73 73 20 69 73 20 6F 6E 6C 79 20 75 73 65    ress is only use
01A940:  64 20 66 6F 72 20 73 65 6E 64 69 6E 67 20 61 20    d for sending a 
01A950:  62 72 65 61 6B 2E 0D 0A 63 6F 6D 70 74 62 3A 09    break...comptb:.
01A960:  64 62 09 62 61 74 69 6F 2C 70 75 6E 6F 75 74 2C    db.batio,punout,
01A970:  63 6F 6D 74 73 74 0D 0A 67 70 70 70 74 62 3A 09    comtst..gppptb:.
01A980:  64 62 09 67 70 70 69 6F 2C 63 6F 6E 6F 75 74 2C    db.gppio,conout,
01A990:  67 65 6E 74 73 74 0D 0A 70 72 6E 70 74 62 3A 09    gentst..prnptb:.
01A9A0:  64 62 09 6C 70 74 69 6F 2C 63 6F 6E 6F 75 74 2C    db.lptio,conout,
01A9B0:  70 72 6E 74 73 74 0D 0A 0D 0A 70 72 74 61 64 72    prntst....prtadr
01A9C0:  3A 09 64 62 09 63 6F 6D 74 73 74 09 09 3B 73 70    :.db.comtst..;sp
01A9D0:  61 63 65 20 66 6F 72 20 63 75 72 72 65 6E 74 20    ace for current 
01A9E0:  68 61 72 64 77 61 72 65 20 70 6F 72 74 20 61 64    hardware port ad
01A9F0:  64 72 65 73 73 0D 0A 45 4E 44 49 46 3B 72 6F 62    dress..ENDIF;rob
01AA00:  68 67 09 09 09 3B 47 65 74 20 69 74 73 20 6C 65    hg...;Get its le
01AA10:  6E 67 74 68 0D 0A 09 6C 68 6C 64 09 62 6D 61 78    ngth...lhld.bmax
01AA20:  0D 0A 09 69 6E 78 09 68 0D 0A 09 6C 78 69 09 62    ...inx.h...lxi.b
01AA30:  2C 30 09 09 3B 49 6E 69 74 69 61 6C 69 7A 65 20    ,0..;Initialize 
01AA40:  42 6C 6F 63 6B 20 63 6F 75 6E 74 20 74 6F 20 7A    Block count to z
01AA50:  65 72 6F 0D 0A 64 69 72 31 39 3A 09 70 75 73 68    ero..dir19:.push
01AA60:  09 64 09 09 3B 53 61 76 65 20 61 6C 6C 6F 63 61    .d..;Save alloca
01AA70:  74 69 6F 6E 20 61 64 64 72 65 73 73 0D 0A 09 6C    tion address...l
01AA80:  64 61 78 09 64 0D 0A 09 6D 76 69 09 65 2C 38 09    dax.d...mvi.e,8.
01AA90:  09 3B 73 65 74 20 74 6F 20 70 72 6F 63 65 73 73    .;set to process
01AAA0:  20 38 20 62 6C 6F 63 6B 73 0D 0A 64 69 72 32 30     8 blocks..dir20
01AAB0:  3A 09 72 61 6C 09 09 09 3B 54 65 73 74 20 62 69    :.ral...;Test bi
01AAC0:  74 0D 0A 09 6A 63 09 64 69 72 32 30 61 0D 0A 09    t...jc.dir20a...
01AAD0:  69 6E 78 09 62 0D 0A 64 69 72 32 30 61 3A 09 6D    inx.b..dir20a:.m
01AAE0:  6F 76 09 64 2C 61 09 09 3B 53 61 76 65 20 62 69    ov.d,a..;Save bi
01AAF0:  74 73 0D 0A 09 64 63 78 09 68 0D 0A 09 6D 6F 76    ts...dcx.h...mov
01AB00:  09 61 2C 6C 0D 0A 09 6F 72 61 09 68 0D 0A 09 6A    .a,l...ora.h...j
01AB10:  7A 09 64 69 72 32 31 09 09 3B 51 75 69 74 20 69    z.dir21..;Quit i
01AB20:  66 20 6F 75 74 20 6F 66 20 62 6C 6F 63 6B 73 0D    f out of blocks.
01AB30:  0A 09 6D 6F 76 09 61 2C 64 09 09 3B 52 65 73 74    ..mov.a,d..;Rest
01AB40:  6F 72 65 20 62 69 74 73 0D 0A 09 64 63 72 09 65    ore bits...dcr.e
01AB50:  09 09 3B 63 6F 75 6E 74 20 64 6F 77 6E 20 38 20    ..;count down 8 
01AB60:  62 69 74 73 0D 0A 09 6A 6E 7A 09 64 69 72 32 30    bits...jnz.dir20
01AB70:  09 09 3B 64 6F 20 61 6E 6F 74 68 65 72 20 62 69    ..;do another bi
01AB80:  74 0D 0A 09 70 6F 70 09 64 09 09 3B 42 75 6D 70    t...pop.d..;Bump
01AB90:  20 74 6F 20 6E 65 78 74 20 63 6F 75 6E 74 20 6F     to next count o
01ABA0:  66 20 41 6C 6C 6F 63 61 74 69 6F 6E 20 56 65 63    f Allocation Vec
01ABB0:  74 6F 72 0D 0A 09 69 6E 78 09 64 0D 0A 09 6A 6D    tor...inx.d...jm
01ABC0:  70 09 64 69 72 31 39 09 09 3B 70 72 6F 63 65 73    p.dir19..;proces
01ABD0:  73 20 69 74 0D 0A 0D 0A 64 69 72 32 31 3A 09 70    s it....dir21:.p
01ABE0:  6F 70 09 64 09 09 3B 43 6C 65 61 72 20 41 6C 6C    op.d..;Clear All
01ABF0:  6F 63 61 74 69 6F 6E 20 76 65 63 74 6F 72 20 66    ocation vector f
01AC00:  69 6E 0D 0A 0D 0A 49 46 20 69 6F 62 79 74 0D 0A    in....IF iobyt..
01AC10:  70 72 74 66 75 6E 3A 09 64 62 09 70 75 6E 6F 75    prtfun:.db.punou
01AC20:  74 09 09 3B 46 75 6E 63 74 69 6F 6E 20 74 6F 20    t..;Function to 
01AC30:  75 73 65 20 66 6F 72 20 6F 75 74 70 75 74 20 74    use for output t
01AC40:  6F 20 63 6F 6D 6D 20 70 6F 72 74 0D 0A 70 72 74    o comm port..prt
01AC50:  69 6F 62 3A 09 64 62 09 62 61 74 69 6F 09 09 3B    iob:.db.batio..;
01AC60:  49 2F 4F 20 62 79 74 65 20 74 6F 20 75 73 65 20    I/O byte to use 
01AC70:  66 6F 72 20 63 6F 6D 6D 75 6E 69 63 61 74 69 6E    for communicatin
01AC80:  67 0D 0A 63 6F 6E 69 6F 62 3A 09 64 62 09 64 65    g..coniob:.db.de
01AC90:  66 69 6F 09 09 3B 49 2F 4F 20 62 79 74 65 20 74    fio..;I/O byte t
01ACA0:  6F 20 75 73 65 20 66 6F 72 20 63 6F 6E 73 6F 6C    o use for consol
01ACB0:  65 0D 0A 45 4E 44 49 46 3B 69 6F 62 79 74 0D 0A    e..ENDIF;iobyt..
01ACC0:  0D 0A 49 46 20 4E 4F 54 20 28 69 6F 62 79 74 20    ..IF NOT (iobyt 
01ACD0:  4F 52 20 6C 6F 62 6F 29 09 09 3B 5B 68 68 5D 0D    OR lobo)..;[hh].
01ACE0:  0A 70 72 74 74 62 6C 09 65 71 75 09 30 09 09 3B    .prttbl.equ.0..;
01ACF0:  20 53 45 54 20 50 4F 52 54 20 69 73 20 6E 6F 74     SET PORT is not
01AD00:  20 73 75 70 70 6F 72 74 65 64 0D 0A 70 72 68 74     supported..prht
01AD10:  62 6C 09 65 71 75 09 30 0D 0A 45 4E 44 49 46 3B    bl.equ.0..ENDIF;
01AD20:  4E 4F 54 20 69 6F 62 79 74 20 4F 52 20 6C 6F 62    NOT iobyt OR lob
01AD30:  6F 0D 0A 3B 0C 0D 0A 3B 0D 0A 3B 09 53 65 74 20    o..;...;..;.Set 
01AD40:  75 70 20 73 63 72 65 65 6E 20 64 69 73 70 6C 61    up screen displa
01AD50:  79 20 66 6F 72 20 66 69 6C 65 20 74 72 61 6E 73    y for file trans
01AD60:  66 65 72 0D 0A 3B 09 63 61 6C 6C 65 64 20 77 69    fer..;.called wi
01AD70:  74 68 20 6B 65 72 6D 69 74 20 76 65 72 73 69 6F    th kermit versio
01AD80:  6E 20 69 6E 20 44 45 0D 0A 3B 0D 0A 73 79 73 73    n in DE..;..syss
01AD90:  63 72 3A 09 70 75 73 68 09 64 09 09 3B 20 73 61    cr:.push.d..; sa
01ADA0:  76 65 20 76 65 72 73 69 6F 6E 20 66 6F 72 20 61    ve version for a
01ADB0:  20 62 69 74 0D 0A 09 6C 78 69 09 64 2C 6F 75 74     bit...lxi.d,out
01ADC0:  6C 69 6E 09 3B 20 63 6C 65 61 72 20 73 63 72 65    lin.; clear scre
01ADD0:  65 6E 2C 20 70 6F 73 69 74 69 6F 6E 20 63 75 72    en, position cur
01ADE0:  73 6F 72 0D 0A 09 63 61 6C 6C 09 70 72 74 73 74    sor...call.prtst
01ADF0:  72 09 09 3B 20 64 6F 20 69 74 0D 0A 09 70 6F 70    r..; do it...pop
01AE00:  72 6F 6D 20 73 74 61 63 6B 0D 0A 09 6D 6F 76 09    rom stack...mov.
01AE10:  6C 2C 63 09 09 3B 43 6F 70 79 20 62 6C 6F 63 6B    l,c..;Copy block
01AE20:  20 74 6F 20 27 48 4C 27 0D 0A 09 6D 6F 76 09 68     to 'HL'...mov.h
01AE30:  2C 62 0D 0A 09 6C 64 61 09 62 73 68 69 66 74 66    ,b...lda.bshiftf
01AE40:  09 09 3B 47 65 74 20 42 6C 6F 63 6B 20 53 68 69    ..;Get Block Shi
01AE50:  66 74 20 46 61 63 74 6F 72 0D 0A 09 73 75 69 09    ft Factor...sui.
01AE60:  33 09 09 3B 43 6F 6E 76 65 72 74 20 66 72 6F 6D    3..;Convert from
01AE70:  20 72 65 63 6F 72 64 73 20 74 6F 20 74 68 6F 75     records to thou
01AE80:  73 61 6E 64 73 0D 0A 09 72 7A 09 09 09 3B 53 6B    sands...rz...;Sk
01AE90:  69 70 20 73 68 69 66 74 73 20 69 66 20 31 4B 20    ip shifts if 1K 
01AEA0:  62 6C 6F 63 6B 73 0D 0A 64 69 72 32 32 3A 09 64    blocks..dir22:.d
01AEB0:  61 64 09 68 09 09 3B 4D 75 6C 74 69 70 6C 79 20    ad.h..;Multiply 
01AEC0:  62 6C 6F 63 6B 73 20 62 79 20 27 4B 20 70 65 72    blocks by 'K per
01AED0:  20 42 6C 6F 63 6B 27 0D 0A 09 64 63 72 09 61 0D     Block'...dcr.a.
01AEE0:  0A 09 6A 6E 7A 09 64 69 72 32 32 0D 0A 09 72 65    ..jnz.dir22...re
01AEF0:  74 0D 0A 0D 0A 3B 0C 0D 0A 3B 0D 0A 3B 09 73 65    t....;...;..;.se
01AF00:  6C 6D 64 6D 20 2D 20 73 65 6C 65 63 74 20 6D 6F    lmdm - select mo
01AF10:  64 65 6D 20 70 6F 72 74 0D 0A 3B 09 73 65 6C 63    dem port..;.selc
01AF20:  6F 6E 20 2D 20 73 65 6C 65 63 74 20 63 6F 6E 73    on - select cons
01AF30:  6F 6C 65 20 70 6F 72 74 0D 0A 3B 09 73 65 6C 6D    ole port..;.selm
01AF40:  64 6D 20 69 73 20 63 61 6C 6C 65 64 20 62 65 66    dm is called bef
01AF50:  6F 72 65 20 75 73 69 6E 67 20 69 6E 70 6D 64 6D    ore using inpmdm
01AF60:  20 6F 72 20 6F 75 74 6D 64 6D 3B 0D 0A 3B 09 73     or outmdm;..;.s
01AF70:  65 6C 63 6F 6E 20 69 73 20 63 61 6C 6C 65 64 20    elcon is called 
01AF80:  62 65 66 6F 72 65 20 75 73 69 6E 67 20 69 6E 70    before using inp
01AF90:  63 6F 6E 20 6F 72 20 6F 75 74 63 6F 6E 2E 0D 0A    con or outcon...
01AFA0:  3B 09 46 6F 72 20 69 6F 62 79 74 20 73 79 73 74    ;.For iobyt syst
01AFB0:  65 6D 73 2C 20 64 69 64 64 6C 65 20 74 68 65 20    ems, diddle the 
01AFC0:  49 2F 4F 20 62 79 74 65 20 74 6F 20 73 65 6C 65    I/O byte to sele
01AFD0:  63 74 20 63 6F 6E 73 6F 6C 65 20 6F 72 20 63 6F    ct console or co
01AFE0:  6D 6D 20 70 6F 72 74 3B 0D 0A 3B 09 46 6F 72 20    mm port;..;.For 
01AFF0:  44 65 63 69 73 69 6F 6E 20 49 2C 20 73 77 69 74    Decision I, swit
01B000:  09 64 09 09 3B 20 67 65 74 20 4B 65 72 6D 69 74    .d..; get Kermit
01B010:  27 73 20 76 65 72 73 69 6F 6E 0D 0A 49 46 20 4E    's version..IF N
01B020:  4F 54 20 28 6F 73 69 20 4F 52 20 63 72 74 29 09    OT (osi OR crt).
01B030:  09 3B 20 67 6F 74 20 63 75 72 73 6F 72 20 63 6F    .; got cursor co
01B040:  6E 74 72 6F 6C 3F 0D 0A 09 63 61 6C 6C 09 70 72    ntrol?...call.pr
01B050:  74 73 74 72 09 09 3B 20 70 72 69 6E 74 20 69 74    tstr..; print it
01B060:  0D 0A 09 6D 76 69 09 65 2C 27 5B 27 09 09 3B 20    ...mvi.e,'['..; 
01B070:  6F 70 65 6E 20 62 72 61 63 6B 65 74 0D 0A 09 63    open bracket...c
01B080:  61 6C 6C 09 6F 75 74 63 6F 6E 09 09 3B 20 70 72    all.outcon..; pr
01B090:  69 6E 74 20 69 74 20 28 63 6C 6F 73 65 20 62 72    int it (close br
01B0A0:  61 63 6B 65 74 20 69 73 20 69 6E 20 6F 75 74 6C    acket is in outl
01B0B0:  6E 32 29 0D 0A 09 6C 78 69 09 64 2C 73 79 73 76    n2)...lxi.d,sysv
01B0C0:  65 72 09 3B 20 67 65 74 20 6E 61 6D 65 20 61 6E    er.; get name an
01B0D0:  64 20 76 65 72 73 69 6F 6E 20 6F 66 20 73 79 73    d version of sys
01B0E0:  74 65 6D 20 6D 6F 64 75 6C 65 0D 0A 09 63 61 6C    tem module...cal
01B0F0:  6C 09 70 72 74 73 74 72 0D 0A 09 6C 78 69 09 64    l.prtstr...lxi.d
01B100:  2C 6F 75 74 6C 6E 32 09 3B 20 79 65 73 2C 20 70    ,outln2.; yes, p
01B110:  72 69 6E 74 20 66 69 65 6C 64 20 6E 61 6D 65 73    rint field names
01B120:  0D 0A 09 63 61 6C 6C 09 70 72 74 73 74 72 0D 0A    ...call.prtstr..
01B130:  09 6C 64 61 09 64 62 67 66 6C 67 09 09 3B 20 69    .lda.dbgflg..; i
01B140:  73 20 64 65 62 75 67 67 69 6E 67 20 65 6E 61 62    s debugging enab
01B150:  6C 65 64 3F 0D 0A 09 6F 72 61 09 61 0D 0A 09 72    led?...ora.a...r
01B160:  7A 09 09 09 3B 20 66 69 6E 69 73 68 65 64 20 69    z...; finished i
01B170:  66 20 6E 6F 20 64 65 62 75 67 67 69 6E 67 0D 0A    f no debugging..
01B180:  09 6C 78 69 09 64 2C 6F 75 74 6C 6E 33 09 3B 20    .lxi.d,outln3.; 
01B190:  73 65 74 20 75 70 20 64 65 62 75 67 67 69 6E 67    set up debugging
01B1A0:  20 66 69 65 6C 64 73 0D 0A 09 63 61 6C 6C 09 70     fields...call.p
01B1B0:  72 74 73 74 72 0D 0A 45 4E 44 49 46 3B 4E 4F 54    rtstr..ENDIF;NOT
01B1C0:  20 28 6F 73 69 20 4F 52 20 63 72 74 29 0D 0A 09     (osi OR crt)...
01B1D0:  72 65 74 0D 0A 3B 0C 0D 0A 3B 09 43 61 6C 63 75    ret..;...;.Calcu
01B1E0:  6C 61 74 65 20 66 72 65 65 20 73 70 61 63 65 20    late free space 
01B1F0:  66 6F 72 20 63 75 72 72 65 6E 74 20 64 72 69 76    for current driv
01B200:  63 68 65 73 20 4D 75 6C 74 69 20 49 2F 4F 20 62    ches Multi I/O b
01B210:  6F 61 72 64 20 74 6F 20 63 6F 6E 73 6F 6C 65 20    oard to console 
01B220:  6F 72 20 6D 6F 64 65 6D 20 73 65 72 69 61 6C 0D    or modem serial.
01B230:  0A 3B 09 70 6F 72 74 2E 20 20 5B 54 6F 61 64 20    .;.port.  [Toad 
01B240:  48 61 6C 6C 5D 0D 0A 3B 09 46 6F 72 20 74 68 65    Hall]..;.For the
01B250:  20 72 65 73 74 2C 20 64 6F 65 73 20 6E 6F 74 68     rest, does noth
01B260:  69 6E 67 2E 0D 0A 3B 09 70 72 65 73 65 72 76 65    ing...;.preserve
01B270:  73 20 62 63 2C 20 64 65 2C 20 68 6C 2E 0D 0A 73    s bc, de, hl...s
01B280:  65 6C 6D 64 6D 3A 0D 0A 49 46 20 69 6F 62 79 74    elmdm:..IF iobyt
01B290:  0D 0A 09 6C 64 61 09 70 72 74 69 6F 62 09 09 3B    ...lda.prtiob..;
01B2A0:  53 65 74 20 75 70 20 66 6F 72 20 6F 75 74 70 75    Set up for outpu
01B2B0:  74 20 74 6F 20 67 6F 20 74 6F 20 74 68 65 20 63    t to go to the c
01B2C0:  6F 6D 6D 20 70 6F 72 74 0D 0A 09 73 74 61 09 69    omm port...sta.i
01B2D0:  6F 62 79 74 65 09 09 3B 53 77 69 74 63 68 20 62    obyte..;Switch b
01B2E0:  79 74 65 20 64 69 72 65 63 74 6C 79 0D 0A 45 4E    yte directly..EN
01B2F0:  44 49 46 3B 69 6F 62 79 74 0D 0A 0D 0A 49 46 20    DIF;iobyt....IF 
01B300:  6D 64 49 0D 0A 09 6C 64 61 09 67 72 6F 75 70 0D    mdI...lda.group.
01B310:  0A 09 6F 72 69 09 6D 64 6D 67 72 70 09 09 3B 4D    ..ori.mdmgrp..;M
01B320:  61 73 6B 20 6D 6F 64 65 6D 20 73 65 72 69 61 6C    ask modem serial
01B330:  20 70 6F 72 74 0D 0A 09 6F 75 74 09 67 72 70 73     port...out.grps
01B340:  65 6C 0D 0A 45 4E 44 49 46 3B 6D 64 49 20 20 5B    el..ENDIF;mdI  [
01B350:  54 6F 61 64 20 48 61 6C 6C 5D 0D 0A 0D 0A 09 72    Toad Hall].....r
01B360:  65 74 0D 0A 0D 0A 73 65 6C 63 6F 6E 3A 0D 0A 49    et....selcon:..I
01B370:  46 20 69 6F 62 79 74 0D 0A 09 6C 64 61 09 63 6F    F iobyt...lda.co
01B380:  6E 69 6F 62 09 09 3B 53 65 74 20 75 70 20 66 6F    niob..;Set up fo
01B390:  72 20 6F 75 74 70 75 74 20 74 6F 20 67 6F 20 74    r output to go t
01B3A0:  6F 20 74 68 65 20 63 6F 6E 73 6F 6C 65 20 70 6F    o the console po
01B3B0:  72 74 0D 0A 09 73 74 61 09 69 6F 62 79 74 65 09    rt...sta.iobyte.
01B3C0:  09 3B 53 77 69 74 63 68 20 64 69 72 65 63 74 6C    .;Switch directl
01B3D0:  79 0D 0A 45 4E 44 49 46 3B 69 6F 62 79 74 0D 0A    y..ENDIF;iobyt..
01B3E0:  0D 0A 49 46 20 6D 64 49 0D 0A 09 6C 64 61 09 67    ..IF mdI...lda.g
01B3F0:  72 6F 75 70 0D 0A 09 6F 72 69 09 63 6F 6E 67 72    roup...ori.congr
01B400:  65 0D 0A 3B 09 72 65 74 75 72 6E 73 20 76 61 6C    e..;.returns val
01B410:  75 65 20 69 6E 20 48 4C 0D 0A 73 79 73 73 70 63    ue in HL..sysspc
01B420:  3A 0D 0A 09 6C 64 61 09 62 64 6F 73 76 72 09 09    :...lda.bdosvr..
01B430:  3B 63 70 6D 33 27 73 20 61 6C 6C 6F 63 20 76 65    ;cpm3's alloc ve
01B440:  63 74 20 6D 61 79 20 62 65 20 69 6E 20 61 6E 6F    ct may be in ano
01B450:  74 68 65 72 20 62 61 6E 6B 0D 0A 09 63 70 69 09    ther bank...cpi.
01B460:  33 30 48 09 09 3B 63 70 6D 33 20 6F 72 20 6C 61    30H..;cpm3 or la
01B470:  74 65 72 3F 0D 0A 09 6A 6D 09 63 70 32 73 70 63    ter?...jm.cp2spc
01B480:  09 09 3B 6E 6F 3A 20 75 73 65 20 63 70 2F 6D 20    ..;no: use cp/m 
01B490:  32 20 61 6C 67 6F 72 69 74 68 6D 0D 0A 09 6C 64    2 algorithm...ld
01B4A0:  61 09 66 63 62 09 09 3B 49 66 20 6E 6F 20 64 72    a.fcb..;If no dr
01B4B0:  69 76 65 2C 20 67 65 74 0D 0A 09 6F 72 61 09 61    ive, get...ora.a
01B4C0:  09 09 3B 20 6C 6F 67 67 65 64 20 69 6E 20 64 72    ..; logged in dr
01B4D0:  69 76 65 0D 0A 09 6A 7A 09 64 69 72 31 38 30 0D    ive...jz.dir180.
01B4E0:  0A 09 64 63 72 09 61 09 09 3B 46 43 42 20 64 72    ..dcr.a..;FCB dr
01B4F0:  69 76 65 20 41 3D 31 20 6E 6F 72 6D 61 6C 69 7A    ive A=1 normaliz
01B500:  65 20 74 6F 20 62 65 20 41 3D 30 0D 0A 09 6A 6D    e to be A=0...jm
01B510:  70 09 64 69 72 31 38 61 0D 0A 0D 0A 64 69 72 31    p.dir18a....dir1
01B520:  38 30 3A 09 6D 76 69 09 63 2C 72 64 64 72 76 0D    80:.mvi.c,rddrv.
01B530:  0A 09 63 61 6C 6C 09 62 64 6F 73 0D 0A 64 69 72    ..call.bdos..dir
01B540:  31 38 61 3A 09 6D 6F 76 09 65 2C 61 09 09 3B 64    18a:.mov.e,a..;d
01B550:  72 69 76 65 20 69 6E 20 65 0D 0A 09 6D 76 69 09    rive in e...mvi.
01B560:  63 2C 67 65 74 66 73 09 09 3B 67 65 74 20 66 72    c,getfs..;get fr
01B570:  65 65 20 73 70 61 63 65 20 42 44 4F 53 20 66 75    ee space BDOS fu
01B580:  6E 63 74 0D 0A 09 63 61 6C 6C 09 62 64 6F 73 09    nct...call.bdos.
01B590:  09 3B 72 65 74 75 72 6E 73 20 66 72 65 65 20 72    .;returns free r
01B5A0:  65 63 73 20 28 33 20 62 79 74 65 73 20 69 6E 20    ecs (3 bytes in 
01B5B0:  62 75 66 66 2E 2E 62 75 66 66 2B 32 29 0D 0A 09    buff..buff+2)...
01B5C0:  6D 76 69 09 62 2C 33 09 09 3B 63 6F 6E 76 20 72    mvi.b,3..;conv r
01B5D0:  65 63 73 20 74 6F 20 4B 20 62 79 20 33 20 62 69    ecs to K by 3 bi
01B5E0:  74 20 73 68 69 66 74 0D 0A 64 69 72 31 38 62 3A    t shift..dir18b:
01B5F0:  09 78 72 61 09 61 09 09 3B 63 6C 65 61 72 20 63    .xra.a..;clear c
01B600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01B610:  17 00 00 00 02 09 4E E5 17 00 C1 02 00 00 00 02    ......N.........
01B620:  17 00 C6 02 00 00 00 02 17 00 C2 02 00 00 00 02    ................
01B630:  17 00 C7 02 00 00 00 02 17 00 C3 02 00 00 00 02    ................
01B640:  17 00 C8 02 00 00 00 02 17 00 C4 02 00 00 00 02    ................
01B650:  17 00 C9 02 00 00 00 02 17 00 C5 02 00 00 00 02    ................
01B660:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B670:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B680:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B690:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B6A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B6B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B6C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B6D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B6E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B6F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B700:  70 09 09 3B 4D 61 73 6B 20 63 6F 6E 73 6F 6C 65    p..;Mask console
01B710:  20 73 65 72 69 61 6C 20 70 6F 72 74 20 28 31 29     serial port (1)
01B720:  0D 0A 09 6F 75 74 09 67 72 70 73 65 6C 0D 0A 45    ...out.grpsel..E
01B730:  4E 44 49 46 3B 6D 64 49 20 20 5B 54 6F 61 64 20    NDIF;mdI  [Toad 
01B740:  48 61 6C 6C 5D 0D 0A 0D 0A 09 72 65 74 0D 0A 3B    Hall].....ret..;
01B750:  0C 0D 0A 3B 09 47 65 74 20 63 68 61 72 61 63 74    ...;.Get charact
01B760:  65 72 20 66 72 6F 6D 20 63 6F 6E 73 6F 6C 65 2C    er from console,
01B770:  20 6F 72 20 72 65 74 75 72 6E 20 7A 65 72 6F 2E     or return zero.
01B780:  0D 0A 3B 09 72 65 73 75 6C 74 20 69 73 20 72 65    ..;.result is re
01B790:  74 75 72 6E 65 64 20 69 6E 20 41 2E 20 20 64 65    turned in A.  de
01B7A0:  73 74 72 6F 79 73 20 62 63 2C 20 64 65 2C 20 68    stroys bc, de, h
01B7B0:  6C 2E 0D 0A 3B 0D 0A 69 6E 70 63 6F 6E 3A 0D 0A    l...;..inpcon:..
01B7C0:  49 46 20 4E 4F 54 20 69 6F 62 79 74 0D 0A 09 6D    IF NOT iobyt...m
01B7D0:  76 69 09 63 2C 64 63 6F 6E 69 6F 09 3B 44 69 72    vi.c,dconio.;Dir
01B7E0:  65 63 74 20 63 6F 6E 73 6F 6C 65 20 49 2F 4F 20    ect console I/O 
01B7F0:  42 44 4F 53 20 63 61 6C 6C 2E 0D 0A 09 6D 76 69    BDOS call....mvi
01B800:  09 65 2C 30 46 46 48 09 09 3B 49 6E 70 75 74 2E    .e,0FFH..;Input.
01B810:  0D 0A 09 63 61 6C 6C 09 42 44 4F 53 0D 0A 45 4E    ...call.BDOS..EN
01B820:  44 49 46 3B 4E 4F 54 20 69 6F 62 79 74 0D 0A 0D    DIF;NOT iobyt...
01B830:  0A 49 46 20 69 6F 62 79 74 0D 0A 09 63 61 6C 6C    .IF iobyt...call
01B840:  09 62 63 6F 6E 73 74 09 09 3B 47 65 74 20 74 68    .bconst..;Get th
01B850:  65 20 73 74 61 74 75 73 0D 0A 09 6F 72 61 09 61    e status...ora.a
01B860:  09 09 3B 41 6E 79 74 68 69 6E 67 20 74 68 65 72    ..;Anything ther
01B870:  65 3F 0D 0A 09 72 7A 09 09 09 3B 4E 6F 2C 20 66    e?...rz...;No, f
01B880:  6F 72 67 65 74 20 69 74 0D 0A 09 63 61 6C 6C 09    orget it...call.
01B890:  62 63 6F 6E 69 6E 09 09 3B 59 65 73 2C 20 67 65    bconin..;Yes, ge
01B8A0:  74 20 74 68 65 20 63 68 61 72 61 63 74 65 72 0D    t the character.
01B8B0:  0A 45 4E 44 49 46 3B 69 6F 62 79 74 0D 0A 09 72    .ENDIF;iobyt...r
01B8C0:  65 74 0D 0A 3B 0C 0D 0A 3B 0D 0A 3B 09 4F 75 74    et..;...;..;.Out
01B8D0:  70 75 74 20 63 68 61 72 61 63 74 65 72 20 69 6E    put character in
01B8E0:  20 45 20 74 6F 20 74 68 65 20 63 6F 6E 73 6F 6C     E to the consol
01B8F0:  65 2E 0D 0A 3B 09 64 65 73 74 72 6F 79 73 20 62    e...;.destroys b
01B900:  72 6E 2E 0D 0A 69 6E 70 6D 64 32 3A 09 6C 64 61    rn...inpmd2:.lda
01B910:  09 6D 6E 70 6F 72 74 09 09 3B 49 66 20 73 6F 2C    .mnport..;If so,
01B920:  20 67 65 74 20 74 68 65 20 63 68 61 72 2E 0D 0A     get the char...
01B930:  45 4E 44 49 46 3B 6F 73 69 20 4F 52 20 61 70 70    ENDIF;osi OR app
01B940:  6C 65 0D 0A 0D 0A 49 46 20 6F 73 62 72 6E 31 0D    le....IF osbrn1.
01B950:  0A 09 63 61 6C 6C 09 6F 73 6C 64 73 74 09 09 3B    ..call.osldst..;
01B960:  52 65 61 64 20 74 68 65 20 73 74 61 74 75 73 20    Read the status 
01B970:  70 6F 72 74 0D 0A 09 61 6E 69 09 69 6E 70 75 74    port...ani.input
01B980:  09 09 3B 53 6F 6D 65 74 68 69 6E 67 20 74 68 65    ..;Something the
01B990:  72 65 3F 0D 0A 09 72 7A 09 09 09 3B 4E 6F 70 65    re?...rz...;Nope
01B9A0:  0D 0A 09 63 61 6C 6C 09 6F 73 6C 64 64 61 09 09    ...call.osldda..
01B9B0:  3B 52 65 61 64 20 74 68 65 20 64 61 74 61 20 70    ;Read the data p
01B9C0:  6F 72 74 0D 0A 45 4E 44 49 46 3B 6F 73 62 72 6E    ort..ENDIF;osbrn
01B9D0:  31 0D 0A 0D 0A 49 46 20 69 6E 6F 75 74 0D 0A 3B    1....IF inout..;
01B9E0:  4E 6F 74 65 3A 20 6D 6F 64 65 6D 20 70 6F 72 74    Note: modem port
01B9F0:  20 73 68 6F 75 6C 64 20 61 6C 72 65 61 64 79 20     should already 
01BA00:  62 65 20 73 65 6C 65 63 74 65 64 20 66 6F 72 20    be selected for 
01BA10:  6D 64 49 2E 20 20 5B 54 6F 61 64 20 48 61 6C 6C    mdI.  [Toad Hall
01BA20:  5D 0D 0A 09 69 6E 09 6D 6E 70 72 74 73 09 09 3B    ]...in.mnprts..;
01BA30:  47 65 74 20 74 68 65 20 70 6F 72 74 20 73 74 61    Get the port sta
01BA40:  74 75 73 20 69 6E 74 6F 20 41 2E 0D 0A 09 61 6E    tus into A....an
01BA50:  69 09 69 6E 70 75 74 09 09 3B 53 65 65 20 69 66    i.input..;See if
01BA60:  20 74 68 65 20 69 6E 70 75 74 20 72 65 61 64 79     the input ready
01BA70:  20 62 69 74 20 69 73 20 6F 6E 2E 0D 0A 09 72 7A     bit is on....rz
01BA80:  09 09 09 3B 49 66 20 6E 6F 74 20 74 68 65 6E 20    ...;If not then 
01BA90:  72 65 74 75 72 6E 2E 0D 0A 09 69 6E 09 6D 6E 70    return....in.mnp
01BAA0:  6F 72 74 09 09 3B 49 66 20 73 6F 2C 20 67 65 74    ort..;If so, get
01BAB0:  20 74 68 65 20 63 68 61 72 2E 0D 0A 45 4E 44 49     the char...ENDI
01BAC0:  46 3B 69 6E 6F 75 74 0D 0A 09 72 65 74 09 09 09    F;inout...ret...
01BAD0:  3B 20 72 65 74 75 72 6E 20 77 69 74 68 20 63 68    ; return with ch
01BAE0:  61 72 61 63 74 65 72 20 69 6E 20 41 0D 0A 0D 0A    aracter in A....
01BAF0:  3B 0D 0A 3B 09 66 6C 73 6D 64 6D 20 2D 20 66 6C    ;..;.flsmdm - fl
01BB00:  63 2C 20 64 65 2C 20 68 6C 0D 0A 3B 0D 0A 6F 75    c, de, hl..;..ou
01BB10:  74 63 6F 6E 3A 0D 0A 49 46 20 4E 4F 54 20 69 6F    tcon:..IF NOT io
01BB20:  62 79 74 0D 0A 09 6D 76 69 09 63 2C 64 63 6F 6E    byt...mvi.c,dcon
01BB30:  69 6F 09 3B 43 6F 6E 73 6F 6C 65 20 6F 75 74 70    io.;Console outp
01BB40:  75 74 20 62 64 6F 73 20 63 61 6C 6C 2E 0D 0A 09    ut bdos call....
01BB50:  63 61 6C 6C 09 62 64 6F 73 09 09 3B 4F 75 74 70    call.bdos..;Outp
01BB60:  75 74 20 74 68 65 20 63 68 61 72 20 74 6F 20 74    ut the char to t
01BB70:  68 65 20 63 6F 6E 73 6F 6C 65 2E 0D 0A 45 4E 44    he console...END
01BB80:  49 46 3B 4E 4F 54 20 69 6F 62 79 74 0D 0A 0D 0A    IF;NOT iobyt....
01BB90:  49 46 20 69 6F 62 79 74 0D 0A 09 6D 6F 76 09 63    IF iobyt...mov.c
01BBA0:  2C 65 09 09 3B 43 68 61 72 61 63 74 65 72 0D 0A    ,e..;Character..
01BBB0:  09 63 61 6C 6C 09 62 63 6E 6F 75 74 09 09 3B 74    .call.bcnout..;t
01BBC0:  6F 20 43 6F 6E 73 6F 6C 65 0D 0A 45 4E 44 49 46    o Console..ENDIF
01BBD0:  3B 69 6F 62 79 74 0D 0A 09 72 65 74 0D 0A 3B 0C    ;iobyt...ret..;.
01BBE0:  0D 0A 3B 0D 0A 3B 09 6F 75 74 6D 64 6D 20 2D 20    ..;..;.outmdm - 
01BBF0:  6F 75 74 70 75 74 20 61 20 63 68 61 72 20 66 72    output a char fr
01BC00:  6F 6D 20 45 20 74 6F 20 74 68 65 20 6D 6F 64 65    om E to the mode
01BC10:  6D 2E 0D 0A 3B 09 09 74 68 65 20 70 61 72 69 74    m...;..the parit
01BC20:  79 20 62 69 74 20 68 61 73 20 62 65 65 6E 20 73    y bit has been s
01BC30:  65 74 20 61 73 20 6E 65 63 65 73 73 61 72 79 2E    et as necessary.
01BC40:  0D 0A 3B 09 72 65 74 75 72 6E 73 20 6E 6F 6E 73    ..;.returns nons
01BC50:  6B 69 70 3B 20 62 63 2C 20 64 65 2C 20 68 6C 20    kip; bc, de, hl 
01BC60:  70 72 65 73 65 72 76 65 64 2E 0D 0A 6F 75 74 6D    preserved...outm
01BC70:  64 6D 3A 0D 0A 49 46 20 6F 73 69 20 4F 52 20 61    dm:..IF osi OR a
01BC80:  70 70 6C 65 20 4F 52 20 6C 6F 62 6F 09 09 3B 5B    pple OR lobo..;[
01BC90:  68 68 5D 0D 0A 09 70 75 73 68 09 68 0D 0A 6F 75    hh]...push.h..ou
01BCA0:  74 6D 64 31 3A 09 6C 78 69 09 68 2C 6D 6E 70 72    tmd1:.lxi.h,mnpr
01BCB0:  74 73 09 3B 61 64 64 72 65 73 73 20 6F 66 20 74    ts.;address of t
01BCC0:  68 65 20 70 6F 72 74 20 73 74 61 74 75 73 20 72    he port status r
01BCD0:  65 67 69 73 74 65 72 0D 0A 6F 75 74 6D 64 32 3A    egister..outmd2:
01BCE0:  09 6D 6F 76 09 61 2C 6D 09 09 3B 20 67 65 74 20    .mov.a,m..; get 
01BCF0:  70 6F 72 74 20 73 74 61 74 75 73 20 69 6E 20 41    port status in A
01BD00:  75 73 68 20 63 6F 6D 6D 20 6C 69 6E 65 2E 0D 0A    ush comm line...
01BD10:  3B 09 4D 6F 64 65 6D 20 69 73 20 73 65 6C 65 63    ;.Modem is selec
01BD20:  74 65 64 2E 0D 0A 3B 09 43 75 72 72 65 6E 74 6C    ted...;.Currentl
01BD30:  79 2C 20 6A 75 73 74 20 67 65 74 73 20 63 68 61    y, just gets cha
01BD40:  72 61 63 74 65 72 73 20 75 6E 74 69 6C 20 6E 6F    racters until no
01BD50:  6E 65 20 61 72 65 20 61 76 61 69 6C 61 62 6C 65    ne are available
01BD60:  2E 0D 0A 0D 0A 66 6C 73 6D 64 6D 3A 09 63 61 6C    .....flsmdm:.cal
01BD70:  6C 09 69 6E 70 6D 64 6D 09 09 3B 20 54 72 79 20    l.inpmdm..; Try 
01BD80:  74 6F 20 67 65 74 20 61 20 63 68 61 72 61 63 74    to get a charact
01BD90:  65 72 0D 0A 09 6F 72 61 09 61 09 09 3B 20 47 6F    er...ora.a..; Go
01BDA0:  74 20 6F 6E 65 3F 0D 0A 09 6A 6E 7A 09 66 6C 73    t one?...jnz.fls
01BDB0:  6D 64 6D 09 09 3B 20 49 66 20 73 6F 2C 20 74 72    mdm..; If so, tr
01BDC0:  79 20 66 6F 72 20 61 6E 6F 74 68 65 72 0D 0A 09    y for another...
01BDD0:  72 65 74 09 09 09 3B 20 52 65 63 65 69 76 65 72    ret...; Receiver
01BDE0:  20 69 73 20 64 72 61 69 6E 65 64 2E 20 20 52 65     is drained.  Re
01BDF0:  74 75 72 6E 2E 0D 0A 3B 0C 0D 0A 3B 0D 0A 3B 09    turn...;...;..;.
01BE00:  6F 75 74 6C 70 74 20 2D 20 6F 75 74 70 75 74 20    outlpt - output 
01BE10:  63 68 61 72 61 63 74 65 72 20 69 6E 20 45 20 74    character in E t
01BE20:  6F 20 70 72 69 6E 74 65 72 0D 0A 3B 09 63 6F 6E    o printer..;.con
01BE30:  73 6F 6C 65 20 69 73 20 73 65 6C 65 63 74 65 64    sole is selected
01BE40:  2E 0D 0A 3B 09 70 72 65 73 65 72 76 65 73 20 64    ...;.preserves d
01BE50:  65 2E 0D 0A 6F 75 74 6C 70 74 3A 0D 0A 09 70 75    e...outlpt:...pu
01BE60:  73 68 09 64 09 09 3B 20 73 61 76 65 20 44 45 20    sh.d..; save DE 
01BE70:  69 6E 20 65 69 74 68 65 72 20 63 61 73 65 0D 0A    in either case..
01BE80:  0D 0A 49 46 20 4E 4F 54 20 69 6F 62 79 74 0D 0A    ..IF NOT iobyt..
01BE90:  09 6D 76 69 09 63 2C 6C 73 74 6F 75 74 0D 0A 09    .mvi.c,lstout...
01BEA0:  63 61 6C 6C 09 62 64 6F 73 09 09 3B 43 68 61 72    call.bdos..;Char
01BEB0:  20 74 6F 20 70 72 69 6E 74 65 72 0D 0A 45 4E 44     to printer..END
01BEC0:  49 46 3B 4E 4F 54 20 69 6F 62 79 74 0D 0A 49 46    IF;NOT iobyt..IF
01BED0:  20 69 6F 62 79 74 0D 0A 09 6D 6F 76 09 63 2C 65     iobyt...mov.c,e
01BEE0:  0D 0A 09 63 61 6C 6C 09 62 6C 73 6F 75 74 0D 0A    ...call.blsout..
01BEF0:  45 4E 44 49 46 3B 69 6F 62 79 74 0D 0A 0D 0A 09    ENDIF;iobyt.....
01BF00:  0D 0A 09 61 6E 69 09 6F 75 74 70 75 74 09 09 3B    ...ani.output..;
01BF10:  4C 6F 6F 70 20 74 69 6C 6C 20 72 65 61 64 79 2E    Loop till ready.
01BF20:  0D 0A 09 6A 7A 09 6F 75 74 6D 64 32 0D 0A 6F 75    ...jz.outmd2..ou
01BF30:  74 6D 64 33 3A 09 6C 78 69 09 68 2C 6D 6E 70 6F    tmd3:.lxi.h,mnpo
01BF40:  72 74 09 3B 61 64 64 72 65 73 73 20 6F 66 20 70    rt.;address of p
01BF50:  6F 72 74 20 64 61 74 61 20 72 65 67 69 73 74 65    ort data registe
01BF60:  72 0D 0A 09 6D 6F 76 09 6D 2C 65 09 09 3B 20 77    r...mov.m,e..; w
01BF70:  72 69 74 65 20 74 68 65 20 63 68 61 72 61 63 74    rite the charact
01BF80:  65 72 0D 0A 09 70 6F 70 09 68 0D 0A 09 72 65 74    er...pop.h...ret
01BF90:  0D 0A 45 4E 44 49 46 3B 6F 73 69 20 4F 52 20 61    ..ENDIF;osi OR a
01BFA0:  70 70 6C 65 20 4F 52 20 6C 6F 62 6F 0D 0A 0D 0A    pple OR lobo....
01BFB0:  49 46 20 6F 73 62 72 6E 31 0D 0A 09 63 61 6C 6C    IF osbrn1...call
01BFC0:  09 6F 73 6C 64 73 74 09 09 3B 52 65 61 64 20 74    .osldst..;Read t
01BFD0:  68 65 20 73 74 61 74 75 73 20 70 6F 72 74 0D 0A    he status port..
01BFE0:  09 61 6E 69 09 6F 75 74 70 75 74 09 09 3B 4C 6F    .ani.output..;Lo
01BFF0:  6F 70 20 74 69 6C 6C 20 72 65 61 64 79 2E 0D 0A    op till ready...
01C000:  09 6A 7A 09 6F 75 74 6D 64 6D 0D 0A 09 6D 6F 76    .jz.outmdm...mov
01C010:  09 61 2C 65 0D 0A 09 6A 6D 70 09 6F 73 73 74 64    .a,e...jmp.osstd
01C020:  61 09 09 3B 57 72 69 74 65 20 74 6F 20 74 68 65    a..;Write to the
01C030:  20 64 61 74 61 20 70 6F 72 74 0D 0A 45 4E 44 49     data port..ENDI
01C040:  46 3B 6F 73 62 72 6E 31 0D 0A 0D 0A 49 46 20 69    F;osbrn1....IF i
01C050:  6E 6F 75 74 0D 0A 09 69 6E 09 6D 6E 70 72 74 73    nout...in.mnprts
01C060:  09 09 3B 47 65 74 20 74 68 65 20 6F 75 74 70 75    ..;Get the outpu
01C070:  74 20 64 6F 6E 65 20 66 6C 61 67 2E 0D 0A 09 61    t done flag....a
01C080:  6E 69 09 6F 75 74 70 75 74 09 09 3B 49 73 20 69    ni.output..;Is i
01C090:  74 20 73 65 74 3F 0D 0A 09 6A 7A 09 6F 75 74 6D    t set?...jz.outm
01C0A0:  64 6D 09 09 3B 49 66 20 6E 6F 74 2C 20 6C 6F 6F    dm..;If not, loo
01C0B0:  70 20 75 6E 74 69 6C 20 69 74 20 69 73 2E 0D 0A    p until it is...
01C0C0:  09 6D 6F 76 09 61 2C 65 0D 0A 09 6F 75 74 09 6D    .mov.a,e...out.m
01C0D0:  6E 70 6F 72 74 09 09 3B 4F 75 74 70 75 74 20 69    nport..;Output i
01C0E0:  74 2E 0D 0A 09 72 65 74 0D 0A 45 4E 44 49 46 3B    t....ret..ENDIF;
01C0F0:  69 6E 6F 75 74 0D 0A 0D 0A 49 46 20 69 6F 62 79    inout....IF ioby
01C100:  70 6F 70 09 64 09 09 3B 20 72 65 73 74 6F 72 65    pop.d..; restore
01C110:  20 73 61 76 65 64 20 72 65 67 69 73 74 65 72 20     saved register 
01C120:  70 61 69 72 0D 0A 09 72 65 74 0D 0A 3B 0C 0D 0A    pair...ret..;...
01C130:  3B 0D 0A 3B 09 53 63 72 65 65 6E 20 6D 61 6E 69    ;..;.Screen mani
01C140:  70 75 6C 61 74 69 6F 6E 20 72 6F 75 74 69 6E 65    pulation routine
01C150:  73 0D 0A 3B 09 63 73 72 70 6F 73 20 2D 20 6D 6F    s..;.csrpos - mo
01C160:  76 65 20 74 6F 20 72 6F 77 20 42 2C 20 63 6F 6C    ve to row B, col
01C170:  75 6D 6E 20 43 0D 0A 3B 0D 0A 3B 09 63 73 72 70    umn C..;..;.csrp
01C180:  6F 73 20 66 6F 72 20 74 65 72 6D 69 6E 61 6C 73    os for terminals
01C190:  20 74 68 61 74 20 75 73 65 20 61 20 6C 65 61 64     that use a lead
01C1A0:  69 6E 20 73 65 71 75 65 6E 63 65 20 66 6F 6C 6C    in sequence foll
01C1B0:  6F 77 65 64 0D 0A 3B 09 20 62 79 20 28 72 6F 77    owed..;. by (row
01C1C0:  20 2B 20 33 31 2E 29 20 61 6E 64 20 28 63 6F 6C     + 31.) and (col
01C1D0:  75 6D 6E 20 2B 20 33 31 2E 29 0D 0A 3B 0D 0A 49    umn + 31.)..;..I
01C1E0:  46 20 4E 4F 54 20 28 72 6F 62 69 6E 20 4F 52 20    F NOT (robin OR 
01C1F0:  64 6D 49 49 20 4F 52 20 76 74 31 30 30 20 4F 52    dmII OR vt100 OR
01C200:  20 6F 73 69 20 4F 52 20 63 72 74 20 4F 52 20 76     osi OR crt OR v
01C210:  65 63 74 6F 72 29 0D 0A 63 73 72 70 6F 73 3A 09    ector)..csrpos:.
01C220:  70 75 73 68 09 62 09 09 3B 20 73 61 76 65 20 63    push.b..; save c
01C230:  6F 6F 72 64 69 6E 61 74 65 73 0D 0A 09 6C 78 69    oordinates...lxi
01C240:  09 64 2C 63 75 72 6C 64 6E 09 3B 20 67 65 74 20    .d,curldn.; get 
01C250:  63 75 72 73 6F 72 20 6C 65 61 64 69 6E 20 73 65    cursor leadin se
01C260:  71 75 65 6E 63 65 0D 0A 09 63 61 6C 6C 09 70 72    quence...call.pr
01C270:  74 73 74 72 09 09 3B 20 70 72 69 6E 74 20 69 74    tstr..; print it
01C280:  0D 0A 09 70 6F 70 09 68 09 09 3B 20 72 65 73 74    ...pop.h..; rest
01C290:  6F 72 65 20 63 6F 6F 72 64 69 6E 61 74 65 73 0D    ore coordinates.
01C2A0:  0A 09 6D 6F 76 09 61 2C 68 09 09 3B 20 67 65 74    ..mov.a,h..; get
01C2B0:  20 72 6F 77 0D 0A 09 61 64 69 09 28 27 20 27 2D     row...adi.(' '-
01C2C0:  31 29 09 09 3B 20 73 70 61 63 65 20 69 73 20 72    1)..; space is r
01C2D0:  6F 77 20 6F 6E 65 0D 0A 09 6D 6F 76 09 65 2C 61    ow one...mov.e,a
01C2E0:  0D 0A 09 70 75 73 68 09 68 0D 0A 09 63 61 6C 6C    ...push.h...call
01C2F0:  09 6F 75 74 63 6F 6E 09 09 3B 20 6F 75 74 70 75    .outcon..; outpu
01C300:  74 0D 0A 3B 2A 2A 2A 2A 20 4E 6F 74 65 20 74 68    t..;**** Note th
01C310:  61 74 20 77 65 20 65 6E 74 65 72 20 66 72 6F 6D    at we enter from
01C320:  20 6F 75 74 70 6B 74 20 77 69 74 68 20 74 68 65     outpkt with the
01C330:  20 49 2F 4F 20 62 79 74 65 20 61 6C 72 65 61 64     I/O byte alread
01C340:  79 20 73 65 74 20 75 70 20 66 6F 72 0D 0A 3B 20    y set up for..; 
01C350:  20 6F 75 74 70 75 74 20 74 6F 20 67 6F 20 74 6F     output to go to
01C360:  20 74 68 65 20 63 6F 6D 6D 20 70 6F 72 74 0D 0A     the comm port..
01C370:  09 70 75 73 68 09 68 0D 0A 09 70 75 73 68 09 62    .push.h...push.b
01C380:  0D 0A 09 6C 64 61 09 70 72 74 66 75 6E 09 09 3B    ...lda.prtfun..;
01C390:  47 65 74 20 74 68 65 20 6F 75 74 70 75 74 20 66    Get the output f
01C3A0:  75 6E 63 74 69 6F 6E 0D 0A 09 6D 6F 76 09 63 2C    unction...mov.c,
01C3B0:  61 09 09 3B 49 6E 74 6F 20 43 0D 0A 09 63 61 6C    a..;Into C...cal
01C3C0:  6C 09 62 64 6F 73 09 09 3B 41 6E 64 20 6F 75 74    l.bdos..;And out
01C3D0:  70 75 74 20 74 68 65 20 63 68 61 72 61 63 74 65    put the characte
01C3E0:  72 0D 0A 09 70 6F 70 09 62 0D 0A 09 70 6F 70 09    r...pop.b...pop.
01C3F0:  68 0D 0A 09 72 65 74 0D 0A 45 4E 44 49 46 3B 69    h...ret..ENDIF;i
01C400:  6F 62 79 74 0D 0A 0D 0A 49 46 20 63 70 6D 33 0D    obyt....IF cpm3.
01C410:  0A 09 70 75 73 68 09 68 0D 0A 09 70 75 73 68 09    ..push.h...push.
01C420:  62 0D 0A 09 6D 76 69 09 63 2C 61 75 78 6F 75 74    b...mvi.c,auxout
01C430:  09 3B 4F 75 74 70 75 74 20 74 6F 20 74 68 65 20    .;Output to the 
01C440:  61 75 78 20 6F 75 74 70 75 74 20 64 65 76 69 63    aux output devic
01C450:  65 0D 0A 09 63 61 6C 6C 09 62 64 6F 73 0D 0A 09    e...call.bdos...
01C460:  70 6F 70 09 62 0D 0A 09 70 6F 70 09 68 0D 0A 09    pop.b...pop.h...
01C470:  72 65 74 0D 0A 45 4E 44 49 46 3B 63 70 6D 33 0D    ret..ENDIF;cpm3.
01C480:  0A 3B 0C 0D 0A 3B 0D 0A 3B 09 67 65 74 20 63 68    .;...;..;.get ch
01C490:  61 72 61 63 74 65 72 20 66 72 6F 6D 20 6D 6F 64    aracter from mod
01C4A0:  65 6D 3B 20 72 65 74 75 72 6E 20 7A 65 72 6F 20    em; return zero 
01C4B0:  69 66 20 6E 6F 6E 65 20 61 76 61 69 6C 61 62 6C    if none availabl
01C4C0:  65 2E 0D 0A 3B 09 66 6F 72 20 49 4F 42 59 54 20    e...;.for IOBYT 
01C4D0:  73 79 73 74 65 6D 73 2C 20 74 68 65 20 6D 6F 64    systems, the mod
01C4E0:  65 6D 20 70 6F 72 74 20 68 61 73 20 61 6C 72 65    em port has alre
01C4F0:  61 64 79 20 62 65 65 6E 20 73 65 6C 65 63 74 65    ady been selecte
01C500:  74 20 72 6F 77 0D 0A 09 70 6F 70 09 68 0D 0A 09    t row...pop.h...
01C510:  6D 6F 76 09 61 2C 6C 09 09 3B 20 67 65 74 20 63    mov.a,l..; get c
01C520:  6F 6C 75 6D 6E 0D 0A 09 61 64 69 09 28 27 20 27    olumn...adi.(' '
01C530:  2D 31 29 09 09 3B 20 73 70 61 63 65 20 69 73 20    -1)..; space is 
01C540:  63 6F 6C 75 6D 6E 20 6F 6E 65 0D 0A 09 6D 6F 76    column one...mov
01C550:  09 65 2C 61 0D 0A 09 6A 6D 70 09 6F 75 74 63 6F    .e,a...jmp.outco
01C560:  6E 09 09 3B 20 6F 75 74 70 75 74 20 69 74 20 61    n..; output it a
01C570:  6E 64 20 72 65 74 75 72 6E 0D 0A 45 4E 44 49 46    nd return..ENDIF
01C580:  3B 4E 4F 54 20 28 72 6F 62 69 6E 20 4F 52 20 64    ;NOT (robin OR d
01C590:  6D 49 49 20 4F 52 20 76 74 31 30 30 20 4F 52 20    mII OR vt100 OR 
01C5A0:  6F 73 69 20 4F 52 20 63 72 74 20 4F 52 20 76 65    osi OR crt OR ve
01C5B0:  63 74 6F 72 29 0D 0A 3B 0D 0A 3B 09 63 73 72 70    ctor)..;..;.csrp
01C5C0:  6F 73 20 66 6F 72 20 41 4E 53 49 20 74 65 72 6D    os for ANSI term
01C5D0:  69 6E 61 6C 73 0D 0A 3B 0D 0A 49 46 20 72 6F 62    inals..;..IF rob
01C5E0:  69 6E 20 4F 52 20 64 6D 49 49 20 4F 52 20 76 74    in OR dmII OR vt
01C5F0:  31 30 30 0D 0A 63 73 72 70 6F 73 3A 09 70 75 73    100..csrpos:.pus
01C600:  68 09 62 09 09 3B 20 73 61 76 65 20 63 6F 6F 72    h.b..; save coor
01C610:  64 69 6E 61 74 65 73 0D 0A 09 6C 78 69 09 64 2C    dinates...lxi.d,
01C620:  63 75 72 6C 64 6E 09 3B 20 67 65 74 20 63 75 72    curldn.; get cur
01C630:  73 6F 72 20 6C 65 61 64 69 6E 20 73 65 71 75 65    sor leadin seque
01C640:  6E 63 65 0D 0A 09 63 61 6C 6C 09 70 72 74 73 74    nce...call.prtst
01C650:  72 09 09 3B 20 70 72 69 6E 74 20 69 74 0D 0A 09    r..; print it...
01C660:  70 6F 70 09 68 09 09 3B 20 70 65 65 6B 20 61 74    pop.h..; peek at
01C670:  20 63 6F 6F 72 64 69 6E 61 74 65 73 0D 0A 09 70     coordinates...p
01C680:  75 73 68 09 68 09 09 3B 20 20 74 68 65 6E 20 73    ush.h..;  then s
01C690:  61 76 65 20 61 77 61 79 20 61 67 61 69 6E 0D 0A    ave away again..
01C6A0:  09 6D 6F 76 09 6C 2C 68 09 09 3B 20 6C 20 3D 20    .mov.l,h..; l = 
01C6B0:  72 6F 77 0D 0A 09 6D 76 69 09 68 2C 30 09 09 3B    row...mvi.h,0..;
01C6C0:  20 68 6C 20 3D 20 72 6F 77 0D 0A 09 63 61 6C 6C     hl = row...call
01C6D0:  09 6E 6F 75 74 09 09 3B 20 6F 75 74 70 75 74 20    .nout..; output 
01C6E0:  69 6E 20 64 65 63 69 6D 61 6C 0D 0A 09 6D 76 69    in decimal...mvi
01C6F0:  09 65 2C 27 3B 27 09 09 3B 20 66 6F 6C 6C 6F 77    .e,';'..; follow
01C700:  64 2E 0D 0A 3B 09 64 65 73 74 72 6F 79 73 20 62    d...;.destroys b
01C710:  63 2C 20 64 65 2C 20 68 6C 2E 0D 0A 69 6E 70 6D    c, de, hl...inpm
01C720:  64 6D 3A 0D 0A 49 46 20 69 6F 62 79 74 0D 0A 09    dm:..IF iobyt...
01C730:  63 61 6C 6C 09 62 63 6F 6E 73 74 09 09 3B 49 73    call.bconst..;Is
01C740:  20 43 68 61 72 20 61 74 20 43 4F 4D 4D 2D 50 6F     Char at COMM-Po
01C750:  72 74 3F 0D 0A 09 6F 72 61 09 61 09 09 3B 73 6F    rt?...ora.a..;so
01C760:  6D 65 74 68 69 6E 67 20 74 68 65 72 65 3F 0D 0A    mething there?..
01C770:  09 72 7A 09 09 09 3B 20 72 65 74 75 72 6E 20 69    .rz...; return i
01C780:  66 20 6E 6F 74 68 69 6E 67 20 74 68 65 72 65 0D    f nothing there.
01C790:  0A 09 63 61 6C 6C 09 62 63 6F 6E 69 6E 09 09 3B    ..call.bconin..;
01C7A0:  20 64 61 74 61 20 70 72 65 73 65 6E 74 2E 20 72     data present. r
01C7B0:  65 61 64 20 64 61 74 61 2E 0D 0A 45 4E 44 49 46    ead data...ENDIF
01C7C0:  3B 69 6F 62 79 74 0D 0A 0D 0A 49 46 20 63 70 6D    ;iobyt....IF cpm
01C7D0:  33 0D 0A 09 6D 76 69 09 63 2C 61 75 78 69 73 74    3...mvi.c,auxist
01C7E0:  0D 0A 09 63 61 6C 6C 09 62 64 6F 73 09 09 3B 69    ...call.bdos..;i
01C7F0:  73 20 63 68 61 72 20 61 74 20 61 75 78 69 6E 3F    s char at auxin?
01C800:  0D 0A 09 6F 72 61 09 61 09 09 3B 73 6F 6D 65 74    ...ora.a..;somet
01C810:  68 69 6E 67 20 74 68 65 72 65 3F 0D 0A 09 72 7A    hing there?...rz
01C820:  09 09 09 3B 6E 6F 0D 0A 09 6D 76 69 09 63 2C 61    ...;no...mvi.c,a
01C830:  75 78 69 6E 0D 0A 09 63 61 6C 6C 09 62 64 6F 73    uxin...call.bdos
01C840:  09 09 3B 72 65 61 64 20 63 68 61 72 20 66 72 6F    ..;read char fro
01C850:  6D 20 61 75 78 69 6E 0D 0A 45 4E 44 49 46 3B 63    m auxin..ENDIF;c
01C860:  70 6D 33 0D 0A 0D 0A 49 46 20 6F 73 69 20 4F 52    pm3....IF osi OR
01C870:  20 61 70 70 6C 65 20 4F 52 20 6C 6F 62 6F 09 09     apple OR lobo..
01C880:  3B 5B 68 68 5D 0D 0A 69 6E 70 6D 64 31 3A 09 6C    ;[hh]..inpmd1:.l
01C890:  64 61 09 6D 6E 70 72 74 73 09 09 3B 47 65 74 20    da.mnprts..;Get 
01C8A0:  74 68 65 20 70 6F 72 74 20 73 74 61 74 75 73 20    the port status 
01C8B0:  69 6E 74 6F 20 41 2E 0D 0A 09 61 6E 69 09 69 6E    into A....ani.in
01C8C0:  70 75 74 09 09 3B 53 65 65 20 69 66 20 74 68 65    put..;See if the
01C8D0:  20 69 6E 70 75 74 20 72 65 61 64 79 20 62 69 74     input ready bit
01C8E0:  20 69 73 20 6F 6E 2E 0D 0A 09 72 7A 09 09 09 3B     is on....rz...;
01C8F0:  49 66 20 6E 6F 74 20 74 68 65 6E 20 72 65 74 75    If not then retu
01C900:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01C910:  18 00 00 00 02 09 4E E5 18 00 C1 02 00 00 00 02    ......N.........
01C920:  18 00 C6 02 00 00 00 02 18 00 C2 02 00 00 00 02    ................
01C930:  18 00 C7 02 00 00 00 02 18 00 C3 02 00 00 00 02    ................
01C940:  18 00 C8 02 00 00 00 02 18 00 C4 02 00 00 00 02    ................
01C950:  18 00 C9 02 00 00 00 02 18 00 C5 02 00 00 00 02    ................
01C960:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C970:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C980:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C990:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C9A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C9B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C9C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C9D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C9E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C9F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01CA00:  20 77 69 74 68 20 73 65 6D 69 63 6F 6C 6F 6E 0D     with semicolon.
01CA10:  0A 09 63 61 6C 6C 09 6F 75 74 63 6F 6E 09 09 3B    ..call.outcon..;
01CA20:  20 70 72 69 6E 74 20 69 74 0D 0A 09 70 6F 70 09     print it...pop.
01CA30:  68 09 09 3B 20 72 65 73 74 6F 72 65 20 63 6F 6C    h..; restore col
01CA40:  75 6D 6E 0D 0A 09 6D 76 69 09 68 2C 30 09 09 3B    umn...mvi.h,0..;
01CA50:  20 68 6C 20 3D 20 63 6F 6C 75 6D 6E 0D 0A 09 63     hl = column...c
01CA60:  61 6C 6C 09 6E 6F 75 74 0D 0A 09 6D 76 69 09 65    all.nout...mvi.e
01CA70:  2C 27 48 27 09 09 3B 20 74 65 72 6D 69 6E 61 74    ,'H'..; terminat
01CA80:  65 20 77 69 74 68 20 27 6D 6F 76 65 20 63 75 72    e with 'move cur
01CA90:  73 6F 72 27 20 63 6F 6D 6D 61 6E 64 0D 0A 09 6A    sor' command...j
01CAA0:  6D 70 09 6F 75 74 63 6F 6E 09 09 3B 20 6F 75 74    mp.outcon..; out
01CAB0:  70 75 74 20 69 74 20 61 6E 64 20 72 65 74 75 72    put it and retur
01CAC0:  6E 0D 0A 45 4E 44 49 46 3B 72 6F 62 69 6E 20 4F    n..ENDIF;robin O
01CAD0:  52 20 64 6D 49 49 20 4F 52 20 76 74 31 30 30 0D    R dmII OR vt100.
01CAE0:  0A 3B 0D 0A 3B 09 63 73 72 70 6F 73 20 66 6F 72    .;..;.csrpos for
01CAF0:  20 74 68 65 20 56 65 63 74 6F 72 20 47 65 6E 65     the Vector Gene
01CB00:  72 61 6C 2E 20 20 49 74 27 73 20 77 65 69 72 64    ral.  It's weird
01CB10:  2E 0D 0A 3B 0D 0A 49 46 20 76 65 63 74 6F 72 0D    ...;..IF vector.
01CB20:  0A 63 73 72 70 6F 73 3A 20 64 63 72 09 62 09 09    .csrpos: dcr.b..
01CB30:  3B 20 76 65 63 74 6F 72 20 75 73 65 73 20 7A 65    ; vector uses ze
01CB40:  72 6F 2D 62 61 73 65 64 20 61 64 64 72 65 73 73    ro-based address
01CB50:  69 6E 67 3F 0D 0A 09 64 63 72 09 63 0D 0A 09 70    ing?...dcr.c...p
01CB60:  75 73 68 09 62 09 09 3B 20 73 61 76 65 20 63 6F    ush.b..; save co
01CB70:  6F 72 64 69 6E 61 74 65 73 0D 0A 09 6D 76 69 09    ordinates...mvi.
01CB80:  65 2C 65 73 63 09 09 3B 20 70 72 69 6E 74 20 61    e,esc..; print a
01CB90:  6E 20 65 73 63 61 70 65 0D 0A 09 63 61 6C 6C 09    n escape...call.
01CBA0:  6F 75 74 63 6F 6E 0D 0A 09 70 6F 70 09 64 09 09    outcon...pop.d..
01CBB0:  3B 20 70 65 65 6B 20 61 74 20 63 6F 6F 72 64 69    ; peek at coordi
01CBC0:  6E 61 74 65 73 0D 0A 09 70 75 73 68 09 64 0D 0A    nates...push.d..
01CBD0:  09 63 61 6C 6C 09 6F 75 74 63 6F 6E 09 09 3B 20    .call.outcon..; 
01CBE0:  6F 75 74 70 75 74 20 63 6F 6C 75 6D 6E 0D 0A 09    output column...
01CBF0:  70 6F 70 09 64 0D 0A 09 6D 6F 76 09 65 2C 64 09    pop.d...mov.e,d.
01CC00:  0D 0A 3B 20 65 72 61 73 65 20 74 68 65 20 63 68    ..; erase the ch
01CC10:  61 72 61 63 74 65 72 20 61 74 20 74 68 65 20 63    aracter at the c
01CC20:  75 72 72 65 6E 74 20 63 75 72 73 6F 72 20 70 6F    urrent cursor po
01CC30:  73 69 74 69 6F 6E 0D 0A 63 6C 72 73 70 63 3A 09    sition..clrspc:.
01CC40:  6D 76 69 09 65 2C 27 20 27 0D 0A 09 63 61 6C 6C    mvi.e,' '...call
01CC50:  09 6F 75 74 63 6F 6E 0D 0A 09 6D 76 69 09 65 2C    .outcon...mvi.e,
01CC60:  62 73 09 09 3B 67 65 74 20 61 20 62 61 63 6B 73    bs..;get a backs
01CC70:  70 61 63 65 0D 0A 09 6A 6D 70 09 6F 75 74 63 6F    pace...jmp.outco
01CC80:  6E 0D 0A 0D 0A 3B 20 65 72 61 73 65 20 74 68 65    n....; erase the
01CC90:  20 63 75 72 72 65 6E 74 20 6C 69 6E 65 0D 0A 63     current line..c
01CCA0:  6C 72 6C 69 6E 3A 09 6C 78 69 09 64 2C 65 72 61    lrlin:.lxi.d,era
01CCB0:  6C 69 6E 0D 0A 09 6A 6D 70 09 70 72 74 73 74 72    lin...jmp.prtstr
01CCC0:  0D 0A 0D 0A 3B 20 65 72 61 73 65 20 74 68 65 20    ....; erase the 
01CCD0:  77 68 6F 6C 65 20 73 63 72 65 65 6E 2C 20 61 6E    whole screen, an
01CCE0:  64 20 67 6F 20 68 6F 6D 65 2E 20 70 72 65 73 65    d go home. prese
01CCF0:  72 76 65 73 20 62 20 28 62 75 74 20 6E 6F 74 20    rves b (but not 
01CD00:  63 29 0D 0A 63 6C 72 74 6F 70 3A 09 6C 78 69 09    c)..clrtop:.lxi.
01CD10:  64 2C 65 72 61 73 63 72 0D 0A 09 6A 6D 70 09 70    d,erascr...jmp.p
01CD20:  72 74 73 74 72 0D 0A 0D 0A 3B 20 53 6F 6D 65 20    rtstr....; Some 
01CD30:  66 72 65 71 75 65 6E 74 6C 79 2D 75 73 65 64 20    frequently-used 
01CD40:  72 6F 75 74 69 6E 65 73 20 28 64 75 70 6C 69 63    routines (duplic
01CD50:  61 74 65 73 20 6F 66 20 74 68 6F 73 65 20 69 6E    ates of those in
01CD60:  20 43 50 34 4D 49 54 29 3A 0D 0A 3B 09 70 72 63     CP4MIT):..;.prc
01CD70:  72 6C 66 20 2D 20 6F 75 74 70 75 74 20 61 20 43    rlf - output a C
01CD80:  52 2F 4C 46 0D 0A 3B 09 70 72 74 73 74 72 20 2D    R/LF..;.prtstr -
01CD90:  20 6F 75 74 70 75 74 20 73 74 72 69 6E 67 20 69     output string i
01CDA0:  6E 20 44 45 0D 0A 3B 09 72 73 6B 70 20 2D 20 72    n DE..;.rskp - r
01CDB0:  65 74 75 72 6E 2C 20 73 6B 69 70 70 69 6E 67 20    eturn, skipping 
01CDC0:  6F 76 65 72 20 65 72 72 6F 72 20 72 65 74 75 72    over error retur
01CDD0:  6E 0D 0A 70 72 63 72 6C 66 3A 09 6C 78 69 09 64    n..prcrlf:.lxi.d
01CDE0:  2C 63 72 6C 66 0D 0A 70 72 74 73 74 72 3A 09 6D    ,crlf..prtstr:.m
01CDF0:  76 69 09 63 2C 70 72 73 74 72 0D 0A 09 6A 6D 70    vi.c,prstr...jmp
01CE00:  09 3B 20 67 65 74 20 72 6F 77 0D 0A 09 6A 6D 70    .; get row...jmp
01CE10:  09 6F 75 74 63 6F 6E 09 09 3B 20 6F 75 74 70 75    .outcon..; outpu
01CE20:  74 20 61 6E 64 20 72 65 74 75 72 6E 0D 0A 45 4E    t and return..EN
01CE30:  44 49 46 3B 76 65 63 74 6F 72 0D 0A 49 46 20 6F    DIF;vector..IF o
01CE40:  73 69 20 4F 52 20 63 72 74 09 09 09 3B 20 73 79    si OR crt...; sy
01CE50:  73 74 65 6D 73 20 77 69 74 68 6F 75 74 20 63 75    stems without cu
01CE60:  72 73 6F 72 20 70 6F 73 69 74 69 6F 6E 69 6E 67    rsor positioning
01CE70:  0D 0A 63 73 72 70 6F 73 3A 09 72 65 74 09 09 09    ..csrpos:.ret...
01CE80:  3B 20 64 75 6D 6D 79 20 72 6F 75 74 69 6E 65 20    ; dummy routine 
01CE90:  72 65 66 65 72 65 6E 63 65 64 20 62 79 20 6C 69    referenced by li
01CEA0:  6E 6B 61 67 65 20 73 65 63 74 69 6F 6E 0D 0A 45    nkage section..E
01CEB0:  4E 44 49 46 3B 6F 73 69 20 4F 52 20 63 72 74 0D    NDIF;osi OR crt.
01CEC0:  0A 0D 0A 3B 0D 0A 3B 20 70 6F 73 69 74 69 6F 6E    ...;..; position
01CED0:  20 74 6F 20 76 61 72 69 6F 75 73 20 66 69 65 6C     to various fiel
01CEE0:  64 73 3A 0D 0A 3B 20 66 6F 72 20 74 68 65 20 4B    ds:..; for the K
01CEF0:  65 72 6D 69 74 73 20 77 69 74 68 20 63 75 72 73    ermits with curs
01CF00:  6F 72 20 70 6F 73 69 74 69 6F 6E 69 6E 67 2C 20    or positioning, 
01CF10:  74 68 65 20 64 69 73 70 6C 61 79 20 6C 6F 6F 6B    the display look
01CF20:  73 20 6C 69 6B 65 20 74 68 69 73 3A 0D 0A 3B 09    s like this:..;.
01CF30:  20 20 20 20 35 20 20 20 31 30 20 20 20 31 35 20        5   10   15 
01CF40:  20 20 32 30 20 20 20 32 35 20 20 20 33 30 20 20      20   25   30  
01CF50:  20 33 35 0D 0A 3B 20 20 20 20 20 20 2B 2D 2D 2D     35..;      +---
01CF60:  2D 7C 2D 2D 2D 2D 7C 2D 2D 2D 2D 7C 2D 2D 2D 2D    -|----|----|----
01CF70:  7C 2D 2D 2D 2D 7C 2D 2D 2D 2D 7C 2D 2D 2D 2D 7C    |----|----|----|
01CF80:  2E 2E 2E 0D 0A 3B 20 20 20 20 31 20 7C 0D 0A 3B    .....;    1 |..;
01CF90:  20 20 20 20 32 20 7C 09 09 4B 65 72 6D 69 74 2D        2 |..Kermit-
01CFA0:  38 30 20 76 34 2E 30 20 5B 73 79 73 74 65 6D 5D    80 v4.0 [system]
01CFB0:  0D 0A 3B 20 20 20 20 33 20 7C 0D 0A 3B 20 20 20    ..;    3 |..;   
01CFC0:  20 34 20 7C 4E 75 6D 62 65 72 20 6F 66 20 70 61     4 |Number of pa
01CFD0:  63 6B 65 74 73 3A 20 5F 5F 5F 5F 0D 0A 3B 20 20    ckets: ____..;  
01CFE0:  20 20 35 20 7C 4E 75 6D 62 65 72 20 6F 66 20 72      5 |Number of r
01CFF0:  65 74 72 69 65 73 3A 20 5F 5F 5F 5F 0D 0A 3B 20    etries: ____..; 
01D000:  09 62 64 6F 73 0D 0A 0D 0A 72 73 6B 70 3A 09 70    .bdos....rskp:.p
01D010:  6F 70 09 68 09 09 3B 20 47 65 74 20 74 68 65 20    op.h..; Get the 
01D020:  72 65 74 75 72 6E 20 61 64 64 72 65 73 73 0D 0A    return address..
01D030:  09 69 6E 78 09 68 09 09 3B 20 49 6E 63 72 65 6D    .inx.h..; Increm
01D040:  65 6E 74 20 62 79 20 74 68 72 65 65 0D 0A 09 69    ent by three...i
01D050:  6E 78 09 68 0D 0A 09 69 6E 78 09 68 0D 0A 09 70    nx.h...inx.h...p
01D060:  63 68 6C 0D 0A 0D 0A 3B 09 43 6F 70 79 20 62 6C    chl....;.Copy bl
01D070:  6F 63 6B 20 6F 66 20 64 61 74 61 0D 0A 3B 09 73    ock of data..;.s
01D080:  6F 75 72 63 65 20 69 6E 20 48 4C 2C 20 64 65 73    ource in HL, des
01D090:  74 69 6E 61 74 69 6F 6E 20 69 6E 20 44 45 2C 20    tination in DE, 
01D0A0:  62 79 74 65 20 63 6F 75 6E 74 20 69 6E 20 42 43    byte count in BC
01D0B0:  0D 0A 3B 09 63 61 6C 6C 65 64 20 62 79 3A 20 63    ..;.called by: c
01D0C0:  70 34 73 79 73 2C 20 6D 66 6E 61 6D 65 0D 0A 3B    p4sys, mfname..;
01D0D0:  0D 0A 6D 6F 76 65 72 3A 0D 0A 49 46 20 4E 4F 54    ..mover:..IF NOT
01D0E0:  20 7A 38 30 09 09 3B 20 38 30 38 30 27 73 20 68     z80..; 8080's h
01D0F0:  61 76 65 20 74 6F 20 64 6F 20 69 74 20 74 68 65    ave to do it the
01D100:  20 68 61 72 64 20 77 61 79 0D 0A 09 6D 6F 76 09     hard way...mov.
01D110:  61 2C 6D 0D 0A 09 73 74 61 78 09 64 0D 0A 09 69    a,m...stax.d...i
01D120:  6E 78 09 68 0D 0A 09 69 6E 78 09 64 0D 0A 09 64    nx.h...inx.d...d
01D130:  63 78 09 62 0D 0A 09 6D 6F 76 09 61 2C 62 0D 0A    cx.b...mov.a,b..
01D140:  09 6F 72 61 09 63 0D 0A 09 6A 6E 7A 09 6D 6F 76    .ora.c...jnz.mov
01D150:  65 72 0D 0A 45 4E 44 49 46 3B 4E 4F 54 20 7A 38    er..ENDIF;NOT z8
01D160:  30 0D 0A 49 46 20 7A 38 30 0D 0A 09 64 62 09 30    0..IF z80...db.0
01D170:  45 44 68 2C 30 42 30 68 09 3B 20 5A 38 30 20 4C    EDh,0B0h.; Z80 L
01D180:  44 49 52 20 69 6E 73 74 72 75 63 74 69 6F 6E 0D    DIR instruction.
01D190:  0A 45 4E 44 49 46 3B 7A 38 30 0D 0A 09 72 65 74    .ENDIF;z80...ret
01D1A0:  0D 0A 3B 0C 0D 0A 3B 0D 0A 3B 09 4D 69 73 63 65    ..;...;..;.Misce
01D1B0:  6C 6C 61 6E 65 6F 75 73 20 6D 65 73 73 61 67 65    llaneous message
01D1C0:  73 0D 0A 3B 0D 0A 63 72 6C 66 3A 09 64 62 09 63    s..;..crlf:.db.c
01D1D0:  72 2C 6C 66 2C 27 24 27 0D 0A 0D 0A 63 66 67 6D    r,lf,'$'....cfgm
01D1E0:  73 67 3A 09 64 62 09 27 63 6F 6E 66 69 67 75 72    sg:.db.'configur
01D1F0:  65 64 20 66 6F 72 20 24 27 0D 0A 0D 0A 49 46 20    ed for $'....IF 
01D200:  20 20 20 36 20 7C 46 69 6C 65 20 6E 61 6D 65 3A       6 |File name:
01D210:  20 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 3B     ____________..;
01D220:  20 20 20 20 37 20 7C 3C 65 72 72 6F 72 3E 2E 2E        7 |<error>..
01D230:  2E 0D 0A 3B 20 20 20 20 38 20 7C 3C 73 74 61 74    ...;    8 |<stat
01D240:  75 73 3E 2E 2E 2E 0D 0A 3B 20 20 20 20 39 20 7C    us>.....;    9 |
01D250:  52 50 61 63 6B 3A 20 5F 5F 5F 28 69 66 20 64 65    RPack: ___(if de
01D260:  62 75 67 67 69 6E 67 29 2E 2E 2E 0D 0A 3B 20 20    bugging).....;  
01D270:  20 31 30 20 7C 0D 0A 3B 20 20 20 31 31 20 7C 53     10 |..;   11 |S
01D280:  50 61 63 6B 3A 20 5F 5F 5F 28 69 66 20 64 65 62    Pack: ___(if deb
01D290:  75 67 67 69 6E 67 29 2E 2E 2E 0D 0A 3B 20 20 20    ugging).....;   
01D2A0:  31 32 20 7C 0D 0A 3B 20 20 20 31 33 20 7C 4B 65    12 |..;   13 |Ke
01D2B0:  72 6D 69 74 2D 38 30 20 20 41 3A 3E 09 28 77 68    rmit-80  A:>.(wh
01D2C0:  65 6E 20 66 69 6E 69 73 68 65 64 29 0D 0A 3B 0D    en finished)..;.
01D2D0:  0A 0D 0A 49 46 20 4E 4F 54 20 28 6F 73 69 20 4F    ...IF NOT (osi O
01D2E0:  52 20 63 72 74 29 0D 0A 73 63 72 6E 70 3A 09 6C    R crt)..scrnp:.l
01D2F0:  78 69 09 62 2C 34 2A 31 30 30 48 2B 32 30 0D 0A    xi.b,4*100H+20..
01D300:  09 6A 6D 70 09 63 73 72 70 6F 73 0D 0A 0D 0A 73    .jmp.csrpos....s
01D310:  63 72 6E 72 74 3A 09 6C 78 69 09 62 2C 35 2A 31    crnrt:.lxi.b,5*1
01D320:  30 30 48 2B 32 30 0D 0A 09 6A 6D 70 09 63 73 72    00H+20...jmp.csr
01D330:  70 6F 73 0D 0A 0D 0A 73 63 72 66 6C 6E 3A 09 6C    pos....scrfln:.l
01D340:  78 69 09 62 2C 36 2A 31 30 30 48 2B 31 32 0D 0A    xi.b,6*100H+12..
01D350:  09 63 61 6C 6C 09 63 73 72 70 6F 73 0D 0A 63 6C    .call.csrpos..cl
01D360:  72 65 6F 6C 3A 09 6C 78 69 09 64 2C 74 6B 0D 0A    reol:.lxi.d,tk..
01D370:  09 6A 6D 70 09 70 72 74 73 74 72 0D 0A 0D 0A 73    .jmp.prtstr....s
01D380:  63 72 65 72 72 3A 09 6C 78 69 09 62 2C 37 2A 31    crerr:.lxi.b,7*1
01D390:  30 30 48 2B 31 0D 0A 09 63 61 6C 6C 09 63 73 72    00H+1...call.csr
01D3A0:  70 6F 73 0D 0A 09 6A 6D 70 09 63 6C 72 65 6F 6C    pos...jmp.clreol
01D3B0:  0D 0A 0D 0A 73 63 72 73 74 3A 09 6C 78 69 09 62    ....scrst:.lxi.b
01D3C0:  2C 38 2A 31 30 30 48 2B 31 0D 0A 09 63 61 6C 6C    ,8*100H+1...call
01D3D0:  09 63 73 72 70 6F 73 0D 0A 09 6A 6D 70 09 63 6C    .csrpos...jmp.cl
01D3E0:  72 65 6F 6C 0D 0A 0D 0A 72 70 70 6F 73 3A 09 6C    reol....rppos:.l
01D3F0:  78 69 09 62 2C 39 2A 31 30 30 48 2B 38 0D 0A 09    xi.b,9*100H+8...
01D400:  61 64 6D 33 61 20 4F 52 20 74 76 69 39 32 35 20    adm3a OR tvi925 
01D410:  4F 52 20 76 74 35 32 20 4F 52 20 76 74 31 30 30    OR vt52 OR vt100
01D420:  20 4F 52 20 73 6D 72 74 76 64 09 09 3B 20 5B 37     OR smrtvd..; [7
01D430:  5D 0D 0A 77 69 74 6D 73 67 3A 09 64 62 09 27 20    ]..witmsg:.db.' 
01D440:  77 69 74 68 20 24 27 0D 0A 45 4E 44 49 46 3B 61    with $'..ENDIF;a
01D450:  64 6D 33 61 20 4F 52 20 74 76 69 39 32 35 20 4F    dm3a OR tvi925 O
01D460:  52 20 76 74 35 32 20 4F 52 20 76 74 31 30 30 20    R vt52 OR vt100 
01D470:  4F 52 20 73 6D 72 74 76 64 09 3B 20 5B 37 5D 0D    OR smrtvd.; [7].
01D480:  0A 0D 0A 3B 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A    ...;************
01D490:  2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 54 65    **************Te
01D4A0:  72 6D 69 6E 61 6C 20 74 61 62 6C 65 73 2A 2A 2A    rminal tables***
01D4B0:  2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A    ****************
01D4C0:  2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 0A 49 46 20 4E 4F    *********..IF NO
01D4D0:  54 20 28 6F 73 69 20 4F 52 20 63 72 74 29 09 3B    T (osi OR crt).;
01D4E0:  20 67 6F 74 20 63 75 72 73 6F 72 20 63 6F 6E 74     got cursor cont
01D4F0:  72 6F 6C 3F 0D 0A 6F 75 74 6C 6E 32 3A 09 64 62    rol?..outln2:.db
01D500:  09 27 5D 27 2C 63 72 2C 6C 66 2C 63 72 2C 6C 66    .']',cr,lf,cr,lf
01D510:  2C 27 4E 75 6D 62 65 72 20 6F 66 20 70 61 63 6B    ,'Number of pack
01D520:  65 74 73 3A 27 0D 0A 09 64 62 09 63 72 2C 6C 66    ets:'...db.cr,lf
01D530:  2C 27 4E 75 6D 62 65 72 20 6F 66 20 72 65 74 72    ,'Number of retr
01D540:  69 65 73 3A 27 0D 0A 09 64 62 09 63 72 2C 6C 66    ies:'...db.cr,lf
01D550:  2C 27 46 69 6C 65 20 6E 61 6D 65 3A 24 27 0D 0A    ,'File name:$'..
01D560:  6F 75 74 6C 6E 33 3A 09 64 62 09 63 72 2C 6C 66    outln3:.db.cr,lf
01D570:  2C 63 72 2C 6C 66 09 09 3B 20 64 65 62 75 67 67    ,cr,lf..; debugg
01D580:  69 6E 67 20 6D 65 73 73 61 67 65 73 0D 0A 09 64    ing messages...d
01D590:  62 09 63 72 2C 6C 66 2C 27 52 50 61 63 6B 3A 27    b.cr,lf,'RPack:'
01D5A0:  0D 0A 09 64 62 09 63 72 2C 6C 66 09 09 09 3B 20    ...db.cr,lf...; 
01D5B0:  62 6C 61 6E 6B 20 6C 69 6E 65 20 69 6E 20 63 61    blank line in ca
01D5C0:  73 65 20 6F 66 20 6C 6F 6E 67 20 70 61 63 6B 65    se of long packe
01D5D0:  74 0D 0A 09 64 62 09 63 72 2C 6C 66 2C 27 53 50    t...db.cr,lf,'SP
01D5E0:  61 63 6B 3A 24 27 0D 0A 45 4E 44 49 46 3B 4E 4F    ack:$'..ENDIF;NO
01D5F0:  54 20 28 6F 73 69 20 4F 52 20 63 72 74 29 0D 0A    T (osi OR crt)..
01D600:  63 61 6C 6C 09 63 73 72 70 6F 73 0D 0A 09 6A 6D    call.csrpos...jm
01D610:  70 09 63 6C 72 65 6F 6C 0D 0A 0D 0A 73 70 70 6F    p.clreol....sppo
01D620:  73 3A 09 6C 78 69 09 62 2C 31 31 2A 31 30 30 48    s:.lxi.b,11*100H
01D630:  2B 38 0D 0A 09 63 61 6C 6C 09 63 73 72 70 6F 73    +8...call.csrpos
01D640:  0D 0A 09 6A 6D 70 09 63 6C 72 65 6F 6C 0D 0A 0D    ...jmp.clreol...
01D650:  0A 73 63 72 65 6E 64 3A 09 6C 78 69 09 62 2C 31    .scrend:.lxi.b,1
01D660:  33 2A 31 30 30 48 2B 31 0D 0A 09 63 61 6C 6C 09    3*100H+1...call.
01D670:  63 73 72 70 6F 73 0D 0A 63 6C 72 65 6F 73 3A 09    csrpos..clreos:.
01D680:  6C 78 69 09 64 2C 74 6A 0D 0A 09 6A 6D 70 09 70    lxi.d,tj...jmp.p
01D690:  72 74 73 74 72 0D 0A 45 4E 44 49 46 3B 4E 4F 54    rtstr..ENDIF;NOT
01D6A0:  20 28 6F 73 69 20 4F 52 20 63 72 74 29 0D 0A 0D     (osi OR crt)...
01D6B0:  0A 49 46 20 6F 73 69 20 4F 52 20 63 72 74 09 3B    .IF osi OR crt.;
01D6C0:  20 6E 6F 20 63 75 72 73 6F 72 20 63 6F 6E 74 72     no cursor contr
01D6D0:  6F 6C 0D 0A 73 63 72 6E 70 3A 09 6D 76 69 09 65    ol..scrnp:.mvi.e
01D6E0:  2C 27 20 27 0D 0A 09 6A 6D 70 09 6F 75 74 63 6F    ,' '...jmp.outco
01D6F0:  6E 0D 0A 0D 0A 73 63 72 6E 72 74 3A 09 6D 76 69    n....scrnrt:.mvi
01D700:  09 65 2C 27 20 27 0D 0A 09 63 61 6C 6C 09 6F 75    .e,' '...call.ou
01D710:  74 63 6F 6E 0D 0A 09 6D 76 69 09 65 2C 27 25 27    tcon...mvi.e,'%'
01D720:  0D 0A 09 6A 6D 70 09 6F 75 74 63 6F 6E 0D 0A 0D    ...jmp.outcon...
01D730:  0A 73 63 72 66 6C 6E 3A 0D 0A 73 63 72 65 72 72    .scrfln:..screrr
01D740:  3A 0D 0A 73 63 72 73 74 3A 0D 0A 73 63 72 65 6E    :..scrst:..scren
01D750:  64 3A 09 6A 6D 70 09 70 72 63 72 6C 66 09 09 3B    d:.jmp.prcrlf..;
01D760:  50 72 69 6E 74 20 43 52 2F 4C 46 09 5B 54 6F 61    Print CR/LF.[Toa
01D770:  64 20 48 61 6C 6C 5D 0D 0A 0D 0A 72 70 70 6F 73    d Hall]....rppos
01D780:  3A 09 6C 78 69 09 64 2C 70 72 70 61 63 6B 0D 0A    :.lxi.d,prpack..
01D790:  09 6A 6D 70 09 70 72 74 73 74 72 0D 0A 0D 0A 73    .jmp.prtstr....s
01D7A0:  70 70 6F 73 3A 09 6C 78 69 09 64 2C 70 73 70 61    ppos:.lxi.d,pspa
01D7B0:  63 6B 0D 0A 09 6A 6D 70 09 70 72 74 73 74 72 0D    ck...jmp.prtstr.
01D7C0:  0A 45 4E 44 49 46 3B 6F 73 69 20 4F 52 20 63 72    .ENDIF;osi OR cr
01D7D0:  74 0D 0A 0D 0A 3B 0D 0A 3B 20 64 65 6C 63 68 72    t....;..; delchr
01D7E0:  20 2D 20 6D 61 6B 65 20 64 65 6C 65 74 65 20 6C     - make delete l
01D7F0:  6F 6F 6B 20 6C 69 6B 65 20 61 20 62 61 63 6B 73    ook like a backs
01D800:  0D 0A 49 46 20 6C 6F 62 6F 09 3B 5B 68 68 5D 0D    ..IF lobo.;[hh].
01D810:  0A 73 79 73 76 65 72 3A 09 64 62 09 27 4C 6F 62    .sysver:.db.'Lob
01D820:  6F 20 4D 41 58 2D 38 30 24 27 0D 0A 6F 75 74 6C    o MAX-80$'..outl
01D830:  69 6E 3A 09 64 62 09 65 73 63 2C 27 2A 27 2C 63    in:.db.esc,'*',c
01D840:  72 2C 6C 66 2C 74 61 62 2C 74 61 62 2C 27 24 27    r,lf,tab,tab,'$'
01D850:  0D 0A 65 72 61 73 63 72 3A 09 64 62 09 65 73 63    ..erascr:.db.esc
01D860:  2C 27 2A 24 27 09 09 3B 5B 68 68 5D 20 63 6C 65    ,'*$'..;[hh] cle
01D870:  61 72 20 73 63 72 65 65 6E 20 61 6E 64 20 68 6F    ar screen and ho
01D880:  6D 65 20 63 75 72 73 6F 72 0D 0A 65 72 61 6C 69    me cursor..erali
01D890:  6E 3A 09 64 62 09 63 72 2C 65 73 63 2C 27 52 24    n:.db.cr,esc,'R$
01D8A0:  27 09 09 3B 5B 68 68 5D 20 63 6C 65 61 72 20 6C    '..;[hh] clear l
01D8B0:  69 6E 65 0D 0A 63 75 72 6C 64 6E 3A 09 64 62 09    ine..curldn:.db.
01D8C0:  65 73 63 2C 27 3D 24 27 09 09 3B 5B 68 68 5D 20    esc,'=$'..;[hh] 
01D8D0:  63 75 72 73 6F 72 20 6C 65 61 64 2D 69 6E 20 73    cursor lead-in s
01D8E0:  74 72 69 6E 67 0D 0A 64 65 6C 73 74 72 3A 09 64    tring..delstr:.d
01D8F0:  62 09 62 73 2C 27 20 27 2C 62 73 2C 62 73 2C 27    b.bs,' ',bs,bs,'
01D900:  24 27 09 3B 5B 68 68 5D 20 3F 3F 61 64 6A 75 73    $'.;[hh] ??adjus
01D910:  74 20 66 6F 72 20 65 63 68 6F 69 6E 67 20 64 65    t for echoing de
01D920:  6C 65 74 65 0D 0A 74 74 61 62 3A 09 09 09 09 09    lete..ttab:.....
01D930:  3B 5B 68 68 5D 20 74 61 62 6C 65 20 73 74 61 72    ;[hh] table star
01D940:  74 20 6C 6F 63 61 74 69 6F 6E 0D 0A 74 61 3A 09    t location..ta:.
01D950:  64 62 09 30 42 48 2C 27 24 27 2C 30 2C 30 09 09    db.0BH,'$',0,0..
01D960:  3B 5B 68 68 5D 20 63 75 72 73 6F 72 20 75 70 0D    ;[hh] cursor up.
01D970:  0A 74 62 3A 09 64 62 09 30 41 48 2C 27 24 27 2C    .tb:.db.0AH,'$',
01D980:  30 2C 30 09 09 3B 5B 68 68 5D 20 63 75 72 73 6F    0,0..;[hh] curso
01D990:  72 20 64 6F 77 6E 0D 0A 74 63 3A 09 64 62 09 30    r down..tc:.db.0
01D9A0:  43 48 2C 27 24 27 2C 30 2C 30 09 09 3B 5B 68 68    CH,'$',0,0..;[hh
01D9B0:  5D 20 63 75 72 73 6F 72 20 72 69 67 68 74 0D 0A    ] cursor right..
01D9C0:  74 64 3A 09 64 62 09 30 38 48 2C 27 24 27 2C 30    td:.db.08H,'$',0
01D9D0:  2C 30 09 09 3B 5B 68 68 5D 20 63 75 72 73 6F 72    ,0..;[hh] cursor
01D9E0:  20 6C 65 66 74 0D 0A 74 65 3A 09 64 62 09 65 73     left..te:.db.es
01D9F0:  63 2C 27 2A 24 27 2C 30 09 09 3B 5B 68 68 5D 20    c,'*$',0..;[hh] 
01DA00:  70 61 63 65 2E 20 20 55 6E 6C 65 73 73 20 64 65    pace.  Unless de
01DA10:  6C 65 74 65 20 69 73 20 61 20 70 72 69 6E 74 69    lete is a printi
01DA20:  6E 67 0D 0A 3B 09 63 68 61 72 61 63 74 65 72 2C    ng..;.character,
01DA30:  20 77 65 20 6A 75 73 74 20 6E 65 65 64 20 74 6F     we just need to
01DA40:  20 70 72 69 6E 74 20 61 20 62 61 63 6B 73 70 61     print a backspa
01DA50:  63 65 2E 20 28 77 65 27 6C 6C 20 6F 75 74 70 75    ce. (we'll outpu
01DA60:  74 20 63 6C 72 73 70 63 0D 0A 3B 09 61 66 74 65    t clrspc..;.afte
01DA70:  72 77 61 72 64 73 29 0D 0A 3B 09 46 6F 72 20 4B    rwards)..;.For K
01DA80:  61 79 70 72 6F 20 61 6E 64 20 56 65 63 74 6F 72    aypro and Vector
01DA90:  20 47 65 6E 65 72 61 6C 2C 20 64 65 6C 65 74 65     General, delete
01DAA0:  20 70 75 74 73 20 61 20 62 6C 6F 74 63 68 20 6F     puts a blotch o
01DAB0:  6E 20 74 68 65 20 73 63 72 65 65 6E 2E 0D 0A 3B    n the screen...;
01DAC0:  09 46 6F 72 20 41 70 70 6C 65 20 61 6E 64 20 4F    .For Apple and O
01DAD0:  73 62 6F 72 6E 65 20 31 2C 20 64 65 6C 65 74 65    sborne 1, delete
01DAE0:  20 6D 6F 76 65 73 20 62 75 74 20 64 6F 65 73 6E     moves but doesn
01DAF0:  27 74 20 70 72 69 6E 74 2E 0D 0A 64 65 6C 63 68    't print...delch
01DB00:  72 3A 0D 0A 49 46 20 62 62 49 20 4F 52 20 76 65    r:..IF bbI OR ve
01DB10:  63 74 6F 72 20 4F 52 20 61 70 70 6C 65 20 4F 52    ctor OR apple OR
01DB20:  20 6F 73 62 72 6E 31 20 4F 52 20 6C 6F 62 6F 0D     osbrn1 OR lobo.
01DB30:  0A 09 6C 78 69 09 64 2C 64 65 6C 73 74 72 0D 0A    ..lxi.d,delstr..
01DB40:  09 6A 6D 70 09 70 72 74 73 74 72 0D 0A 45 4E 44    .jmp.prtstr..END
01DB50:  49 46 3B 62 62 49 20 4F 52 20 76 65 63 74 6F 72    IF;bbI OR vector
01DB60:  20 4F 52 20 61 70 70 6C 65 20 4F 52 20 6F 73 62     OR apple OR osb
01DB70:  72 6E 31 20 4F 52 20 6C 6F 62 6F 0D 0A 49 46 20    rn1 OR lobo..IF 
01DB80:  4E 4F 54 20 28 62 62 49 20 4F 52 20 76 65 63 74    NOT (bbI OR vect
01DB90:  6F 72 20 4F 52 20 61 70 70 6C 65 20 4F 52 20 6F    or OR apple OR o
01DBA0:  73 62 72 6E 31 29 0D 0A 09 6D 76 69 09 65 2C 62    sbrn1)...mvi.e,b
01DBB0:  73 09 09 3B 67 65 74 20 61 20 62 61 63 6B 73 70    s..;get a backsp
01DBC0:  61 63 65 0D 0A 09 6A 6D 70 09 6F 75 74 63 6F 6E    ace...jmp.outcon
01DBD0:  0D 0A 45 4E 44 49 46 3B 4E 4F 54 20 28 62 62 49    ..ENDIF;NOT (bbI
01DBE0:  20 4F 52 20 76 65 63 74 6F 72 20 4F 52 20 61 70     OR vector OR ap
01DBF0:  70 6C 65 20 4F 52 20 6F 73 62 72 6E 31 29 0D 0A    ple OR osbrn1)..
01DC00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01DC10:  19 00 00 00 02 09 4E E5 19 00 C1 02 00 00 00 02    ......N.........
01DC20:  19 00 C6 02 00 00 00 02 19 00 C2 02 00 00 00 02    ................
01DC30:  19 00 C7 02 00 00 00 02 19 00 C3 02 00 00 00 02    ................
01DC40:  19 00 C8 02 00 00 00 02 19 00 C4 02 00 00 00 02    ................
01DC50:  19 00 C9 02 00 00 00 02 19 00 C5 02 00 00 00 02    ................
01DC60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DC70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DC80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DC90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DD00:  63 6C 65 61 72 20 64 69 73 70 6C 61 79 20 28 68    clear display (h
01DD10:  6F 6D 65 73 20 63 75 72 73 6F 72 29 0D 0A 74 66    omes cursor)..tf
01DD20:  3A 09 64 62 09 27 24 27 2C 30 2C 30 2C 30 09 09    :.db.'$',0,0,0..
01DD30:  3B 5B 68 68 5D 20 28 63 61 6E 27 74 29 20 65 6E    ;[hh] (can't) en
01DD40:  74 65 72 20 67 72 61 70 68 69 63 73 20 6D 6F 64    ter graphics mod
01DD50:  65 0D 0A 74 67 3A 09 64 62 09 27 24 27 2C 30 2C    e..tg:.db.'$',0,
01DD60:  30 2C 30 09 09 3B 5B 68 68 5D 20 28 63 61 6E 27    0,0..;[hh] (can'
01DD70:  74 29 20 65 78 69 74 20 67 72 61 70 68 69 63 73    t) exit graphics
01DD80:  20 6D 6F 64 65 0D 0A 74 68 3A 09 64 62 09 30 31     mode..th:.db.01
01DD90:  45 48 2C 27 24 27 2C 30 2C 30 09 09 3B 5B 68 68    EH,'$',0,0..;[hh
01DDA0:  5D 20 68 6F 6D 65 20 63 75 72 73 6F 72 0D 0A 74    ] home cursor..t
01DDB0:  69 3A 09 64 62 09 65 73 63 2C 27 45 24 27 2C 30    i:.db.esc,'E$',0
01DDC0:  09 09 3B 5B 68 68 5D 20 72 65 76 65 72 73 65 20    ..;[hh] reverse 
01DDD0:  6C 69 6E 65 66 65 65 64 20 28 69 6E 73 65 72 74    linefeed (insert
01DDE0:  20 6C 69 6E 65 29 0D 0A 74 6A 3A 09 64 62 09 65     line)..tj:.db.e
01DDF0:  73 63 2C 27 59 24 27 2C 30 09 09 3B 5B 68 68 5D    sc,'Y$',0..;[hh]
01DE00:  20 63 6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66     clear to end of
01DE10:  20 73 63 72 65 65 6E 0D 0A 74 6B 3A 09 64 62 09     screen..tk:.db.
01DE20:  65 73 63 2C 27 54 24 27 2C 30 09 09 3B 5B 68 68    esc,'T$',0..;[hh
01DE30:  5D 20 63 6C 65 61 72 20 74 6F 20 65 6E 64 20 6F    ] clear to end o
01DE40:  66 20 6C 69 6E 65 0D 0A 45 4E 44 49 46 09 3B 6C    f line..ENDIF.;l
01DE50:  6F 62 6F 0D 0A 0D 0A 3B 0C 0D 0A 49 46 20 62 72    obo....;...IF br
01DE60:  61 69 6E 0D 0A 73 79 73 76 65 72 3A 09 64 62 09    ain..sysver:.db.
01DE70:  27 49 6E 74 65 72 74 65 63 20 53 75 70 65 72 42    'Intertec SuperB
01DE80:  72 61 69 6E 24 27 0D 0A 6F 75 74 6C 69 6E 3A 09    rain$'..outlin:.
01DE90:  64 62 09 28 27 41 27 2D 31 30 30 4F 29 2C 65 73    db.('A'-100O),es
01DEA0:  63 2C 27 7E 6B 27 2C 63 72 2C 6C 66 2C 74 61 62    c,'~k',cr,lf,tab
01DEB0:  2C 74 61 62 2C 27 24 27 0D 0A 65 72 61 73 63 72    ,tab,'$'..erascr
01DEC0:  3A 09 64 62 09 28 27 41 27 2D 31 30 30 4F 29 2C    :.db.('A'-100O),
01DED0:  65 73 63 2C 27 7E 6B 24 27 20 09 3B 43 6C 65 61    esc,'~k$' .;Clea
01DEE0:  72 20 73 63 72 65 65 6E 20 61 6E 64 20 67 6F 20    r screen and go 
01DEF0:  68 6F 6D 65 2E 0D 0A 65 72 61 6C 69 6E 3A 09 64    home...eralin:.d
01DF00:  65 20 6C 69 6E 65 66 65 65 64 2E 0D 0A 74 6A 3A    e linefeed...tj:
01DF10:  09 64 62 09 65 73 63 2C 27 59 24 27 2C 30 09 09    .db.esc,'Y$',0..
01DF20:  3B 43 6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66    ;Clear to end of
01DF30:  20 73 63 72 65 65 6E 2E 0D 0A 74 6B 3A 09 64 62     screen...tk:.db
01DF40:  09 65 73 63 2C 27 54 24 27 2C 30 09 09 3B 43 6C    .esc,'T$',0..;Cl
01DF50:  65 61 72 20 74 6F 20 65 6E 64 20 6F 66 20 6C 69    ear to end of li
01DF60:  6E 65 2E 0D 0A 45 4E 44 49 46 3B 61 70 70 6C 65    ne...ENDIF;apple
01DF70:  0D 0A 3B 0C 0D 0A 49 46 20 76 65 63 74 6F 72 0D    ..;...IF vector.
01DF80:  0A 73 79 73 76 65 72 3A 09 64 62 09 27 56 65 63    .sysver:.db.'Vec
01DF90:  74 6F 72 20 47 72 61 70 68 69 63 73 24 27 0D 0A    tor Graphics$'..
01DFA0:  6F 75 74 6C 69 6E 3A 09 64 62 09 28 27 44 27 2D    outlin:.db.('D'-
01DFB0:  31 30 30 4F 29 2C 63 72 2C 6C 66 2C 74 61 62 2C    100O),cr,lf,tab,
01DFC0:  74 61 62 2C 27 24 27 0D 0A 65 72 61 73 63 72 3A    tab,'$'..erascr:
01DFD0:  09 64 62 09 28 27 44 27 2D 31 30 30 4F 29 2C 27    .db.('D'-100O),'
01DFE0:  24 27 09 20 09 3B 43 6C 65 61 72 20 73 63 72 65    $'. .;Clear scre
01DFF0:  65 6E 20 61 6E 64 20 67 6F 20 68 6F 6D 65 2E 0D    en and go home..
01E000:  0A 65 72 61 6C 69 6E 3A 09 64 62 09 63 72 2C 28    .eralin:.db.cr,(
01E010:  27 51 27 2D 31 30 30 4F 29 2C 27 24 27 09 3B 43    'Q'-100O),'$'.;C
01E020:  6C 65 61 72 20 6C 69 6E 65 2E 0D 0A 64 65 6C 73    lear line...dels
01E030:  74 72 3A 09 64 62 09 62 73 2C 27 20 27 2C 62 73    tr:.db.bs,' ',bs
01E040:  2C 62 73 2C 27 24 27 09 3B 20 61 64 6A 75 73 74    ,bs,'$'.; adjust
01E050:  20 66 6F 72 20 65 63 68 6F 69 6E 67 20 64 65 6C     for echoing del
01E060:  65 74 65 20 63 68 61 72 61 63 74 65 72 0D 0A 74    ete character..t
01E070:  74 61 62 3A 09 09 09 09 09 3B 54 61 62 6C 65 20    tab:.....;Table 
01E080:  73 74 61 72 74 20 6C 6F 63 61 74 69 6F 6E 2E 0D    start location..
01E090:  0A 74 61 3A 09 64 62 09 28 27 55 27 2D 31 30 30    .ta:.db.('U'-100
01E0A0:  4F 29 2C 27 24 27 2C 30 2C 30 09 3B 43 75 72 73    O),'$',0,0.;Curs
01E0B0:  6F 72 20 75 70 2E 0D 0A 74 62 3A 09 64 62 09 31    or up...tb:.db.1
01E0C0:  32 4F 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75 72    2O,'$',0,0..;Cur
01E0D0:  73 6F 72 20 64 6F 77 6E 2E 0D 0A 74 63 3A 09 64    sor down...tc:.d
01E0E0:  62 09 28 27 5A 27 2D 31 30 30 4F 29 2C 27 24 27    b.('Z'-100O),'$'
01E0F0:  2C 30 2C 30 09 3B 43 75 72 73 6F 72 20 72 69 67    ,0,0.;Cursor rig
01E100:  62 09 63 72 2C 65 73 63 2C 27 7E 4B 24 27 09 09    b.cr,esc,'~K$'..
01E110:  3B 43 6C 65 61 72 20 6C 69 6E 65 2E 0D 0A 63 75    ;Clear line...cu
01E120:  72 6C 64 6E 3A 09 64 62 09 65 73 63 2C 27 59 24    rldn:.db.esc,'Y$
01E130:  27 09 09 3B 20 6C 65 61 64 69 6E 20 66 6F 72 20    '..; leadin for 
01E140:  63 75 72 73 6F 72 20 70 6F 73 69 74 69 6F 6E 69    cursor positioni
01E150:  6E 67 0D 0A 74 74 61 62 3A 09 09 09 09 09 3B 54    ng..ttab:.....;T
01E160:  61 62 6C 65 20 73 74 61 72 74 20 6C 6F 63 61 74    able start locat
01E170:  69 6F 6E 2E 0D 0A 74 61 3A 09 64 62 09 28 27 4B    ion...ta:.db.('K
01E180:  27 2D 31 30 30 4F 29 2C 27 24 27 2C 30 2C 30 09    '-100O),'$',0,0.
01E190:  3B 43 75 72 73 6F 72 20 75 70 2E 0D 0A 74 62 3A    ;Cursor up...tb:
01E1A0:  09 64 62 09 31 32 4F 2C 27 24 27 2C 30 2C 30 09    .db.12O,'$',0,0.
01E1B0:  09 3B 43 75 72 73 6F 72 20 64 6F 77 6E 2E 0D 0A    .;Cursor down...
01E1C0:  74 63 3A 09 64 62 09 28 27 46 27 2D 31 30 30 4F    tc:.db.('F'-100O
01E1D0:  29 2C 27 24 27 2C 30 2C 30 09 3B 43 75 72 73 6F    ),'$',0,0.;Curso
01E1E0:  72 20 72 69 67 68 74 2E 0D 0A 74 64 3A 09 64 62    r right...td:.db
01E1F0:  09 27 24 27 2C 30 2C 30 2C 30 09 09 3B 28 63 61    .'$',0,0,0..;(ca
01E200:  6E 27 74 29 20 43 75 72 73 6F 72 20 6C 65 66 74    n't) Cursor left
01E210:  0D 0A 74 65 3A 09 64 62 09 27 24 27 2C 30 2C 30    ..te:.db.'$',0,0
01E220:  2C 30 09 09 3B 28 63 61 6E 27 74 29 20 43 6C 65    ,0..;(can't) Cle
01E230:  61 72 20 64 69 73 70 6C 61 79 0D 0A 74 66 3A 09    ar display..tf:.
01E240:  64 62 09 27 24 27 2C 30 2C 30 2C 30 09 09 3B 28    db.'$',0,0,0..;(
01E250:  63 61 6E 27 74 29 20 45 6E 74 65 72 20 67 72 61    can't) Enter gra
01E260:  70 68 69 63 73 20 6D 6F 64 65 0D 0A 74 67 3A 09    phics mode..tg:.
01E270:  64 62 09 27 24 27 2C 30 2C 30 2C 30 09 09 3B 28    db.'$',0,0,0..;(
01E280:  63 61 6E 27 74 29 20 45 78 69 74 20 67 72 61 70    can't) Exit grap
01E290:  68 69 63 73 20 6D 6F 64 65 0D 0A 74 68 3A 09 64    hics mode..th:.d
01E2A0:  62 09 28 27 41 27 2D 31 30 30 4F 29 2C 27 24 27    b.('A'-100O),'$'
01E2B0:  2C 30 2C 30 09 3B 43 75 72 73 6F 72 20 68 6F 6D    ,0,0.;Cursor hom
01E2C0:  65 2E 0D 0A 74 69 3A 09 64 62 09 28 27 4B 27 2D    e...ti:.db.('K'-
01E2D0:  31 30 30 4F 29 2C 27 24 27 2C 30 2C 30 09 3B 52    100O),'$',0,0.;R
01E2E0:  65 76 65 72 73 65 20 6C 69 6E 65 66 65 65 64 2E    everse linefeed.
01E2F0:  0D 0A 74 6A 3A 09 64 62 09 65 73 63 2C 27 7E 6B    ..tj:.db.esc,'~k
01E300:  68 74 2E 0D 0A 74 64 3A 09 64 62 09 27 24 27 2C    ht...td:.db.'$',
01E310:  30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74 29 20    0,0,0..;(can't) 
01E320:  43 75 72 73 6F 72 20 6C 65 66 74 0D 0A 74 65 3A    Cursor left..te:
01E330:  09 64 62 09 27 24 27 2C 30 2C 30 2C 30 09 09 3B    .db.'$',0,0,0..;
01E340:  28 63 61 6E 27 74 29 20 43 6C 65 61 72 20 64 69    (can't) Clear di
01E350:  73 70 6C 61 79 0D 0A 74 66 3A 09 64 62 09 27 24    splay..tf:.db.'$
01E360:  27 2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74    ',0,0,0..;(can't
01E370:  29 20 45 6E 74 65 72 20 67 72 61 70 68 69 63 73    ) Enter graphics
01E380:  20 6D 6F 64 65 0D 0A 74 67 3A 09 64 62 09 27 24     mode..tg:.db.'$
01E390:  27 2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74    ',0,0,0..;(can't
01E3A0:  29 20 45 78 69 74 20 67 72 61 70 68 69 63 73 20    ) Exit graphics 
01E3B0:  6D 6F 64 65 0D 0A 74 68 3A 09 64 62 09 28 27 42    mode..th:.db.('B
01E3C0:  27 2D 31 30 30 4F 29 2C 27 24 27 2C 30 2C 30 09    '-100O),'$',0,0.
01E3D0:  3B 43 75 72 73 6F 72 20 68 6F 6D 65 2E 0D 0A 74    ;Cursor home...t
01E3E0:  69 3A 09 64 62 09 28 27 55 27 2D 31 30 30 4F 29    i:.db.('U'-100O)
01E3F0:  2C 27 24 27 2C 30 2C 30 09 3B 52 65 76 65 72 73    ,'$',0,0.;Revers
01E400:  65 20 6C 69 6E 65 66 65 65 64 2E 0D 0A 74 6A 3A    e linefeed...tj:
01E410:  09 64 62 09 28 27 50 27 2D 31 30 30 4F 29 2C 27    .db.('P'-100O),'
01E420:  24 27 2C 30 2C 30 09 3B 43 6C 65 61 72 20 74 6F    $',0,0.;Clear to
01E430:  20 65 6E 64 20 6F 66 20 73 63 72 65 65 6E 2E 0D     end of screen..
01E440:  0A 74 6B 3A 09 64 62 09 28 27 51 27 2D 31 30 30    .tk:.db.('Q'-100
01E450:  4F 29 2C 27 24 27 2C 30 2C 30 09 3B 43 6C 65 61    O),'$',0,0.;Clea
01E460:  72 20 74 6F 20 65 6E 64 20 6F 66 20 6C 69 6E 65    r to end of line
01E470:  2E 0D 0A 45 4E 44 49 46 3B 76 65 63 74 6F 72 0D    ...ENDIF;vector.
01E480:  0A 3B 0C 0D 0A 49 46 20 74 65 6C 63 6F 6E 0D 0A    .;...IF telcon..
01E490:  73 79 73 76 65 72 3A 09 64 62 09 27 54 65 6C 63    sysver:.db.'Telc
01E4A0:  6F 6E 20 5A 6F 72 62 61 24 27 0D 0A 45 4E 44 49    on Zorba$'..ENDI
01E4B0:  46 3B 74 65 6C 63 6F 6E 0D 0A 0D 0A 49 46 20 68    F;telcon....IF h
01E4C0:  65 61 74 68 0D 0A 73 79 73 76 65 72 3A 09 64 62    eath..sysver:.db
01E4D0:  09 27 48 65 61 74 68 2F 5A 65 6E 69 74 68 20 38    .'Heath/Zenith 8
01E4E0:  39 24 27 0D 0A 45 4E 44 49 46 3B 68 65 61 74 68    9$'..ENDIF;heath
01E4F0:  0D 0A 0D 0A 49 46 20 7A 31 30 30 0D 0A 73 79 73    ....IF z100..sys
01E500:  24 27 2C 30 09 09 3B 43 6C 65 61 72 20 74 6F 20    $',0..;Clear to 
01E510:  65 6E 64 20 6F 66 20 73 63 72 65 65 6E 2E 0D 0A    end of screen...
01E520:  74 6B 3A 09 64 62 09 65 73 63 2C 27 7E 4B 24 27    tk:.db.esc,'~K$'
01E530:  2C 30 09 09 3B 43 6C 65 61 72 20 74 6F 20 65 6E    ,0..;Clear to en
01E540:  64 20 6F 66 20 6C 69 6E 65 2E 0D 0A 45 4E 44 49    d of line...ENDI
01E550:  46 3B 62 72 61 69 6E 0D 0A 0D 0A 3B 0C 0D 0A 49    F;brain....;...I
01E560:  46 20 6F 73 62 72 6E 31 0D 0A 73 79 73 76 65 72    F osbrn1..sysver
01E570:  3A 09 64 62 09 27 4F 73 62 6F 72 6E 65 20 31 24    :.db.'Osborne 1$
01E580:  27 0D 0A 6F 75 74 6C 69 6E 3A 09 64 62 09 31 41    '..outlin:.db.1A
01E590:  48 2C 63 72 2C 6C 66 2C 74 61 62 2C 27 24 27 09    H,cr,lf,tab,'$'.
01E5A0:  3B 28 43 6C 65 61 72 20 73 63 72 65 65 6E 2C 20    ;(Clear screen, 
01E5B0:  68 6F 6D 65 20 63 75 72 73 6F 72 29 0D 0A 65 72    home cursor)..er
01E5C0:  61 73 63 72 3A 09 64 62 09 31 41 48 2C 27 24 27    ascr:.db.1AH,'$'
01E5D0:  09 09 09 3B 43 6C 65 61 72 20 73 63 72 65 65 6E    ...;Clear screen
01E5E0:  20 61 6E 64 20 67 6F 20 68 6F 6D 65 2E 0D 0A 65     and go home...e
01E5F0:  72 61 6C 69 6E 3A 09 64 62 09 63 72 2C 65 73 63    ralin:.db.cr,esc
01E600:  2C 27 54 24 27 09 09 3B 43 6C 65 61 72 20 6C 69    ,'T$'..;Clear li
01E610:  6E 65 2E 0D 0A 64 65 6C 73 74 72 3A 09 64 62 09    ne...delstr:.db.
01E620:  62 73 2C 62 73 2C 27 24 27 09 09 3B 20 41 64 6A    bs,bs,'$'..; Adj
01E630:  75 73 74 20 66 6F 72 20 64 65 6C 65 74 65 0D 0A    ust for delete..
01E640:  63 75 72 6C 64 6E 3A 09 64 62 09 65 73 63 2C 27    curldn:.db.esc,'
01E650:  3D 24 27 09 09 3B 43 75 72 73 6F 72 20 6C 65 61    =$'..;Cursor lea
01E660:  64 2D 69 6E 0D 0A 74 74 61 62 3A 09 09 09 09 09    d-in..ttab:.....
01E670:  3B 54 61 62 6C 65 20 73 74 61 72 74 20 6C 6F 63    ;Table start loc
01E680:  61 74 69 6F 6E 2E 0D 0A 74 61 3A 09 64 62 09 28    ation...ta:.db.(
01E690:  27 4B 27 2D 31 30 30 4F 29 2C 27 24 27 2C 30 2C    'K'-100O),'$',0,
01E6A0:  30 09 3B 43 75 72 73 6F 72 20 75 70 2E 0D 0A 74    0.;Cursor up...t
01E6B0:  62 3A 09 64 62 09 31 32 4F 2C 27 24 27 2C 30 2C    b:.db.12O,'$',0,
01E6C0:  30 09 09 3B 43 75 72 73 6F 72 20 64 6F 77 6E 2E    0..;Cursor down.
01E6D0:  0D 0A 74 63 3A 09 64 62 09 28 27 4C 27 2D 31 30    ..tc:.db.('L'-10
01E6E0:  30 4F 29 2C 27 24 27 2C 30 2C 30 09 3B 43 75 72    0O),'$',0,0.;Cur
01E6F0:  73 6F 72 20 72 69 67 68 74 2E 0D 0A 74 64 3A 09    sor right...td:.
01E700:  76 65 72 3A 09 64 62 09 27 48 65 61 74 68 2F 5A    ver:.db.'Heath/Z
01E710:  65 6E 69 74 68 20 5A 2D 31 30 30 20 43 50 2F 4D    enith Z-100 CP/M
01E720:  24 27 0D 0A 45 4E 44 49 46 3B 7A 31 30 30 0D 0A    $'..ENDIF;z100..
01E730:  0D 0A 49 46 20 76 74 35 32 09 09 3B 20 44 45 43    ..IF vt52..; DEC
01E740:  20 56 54 35 32 0D 0A 74 74 79 74 79 70 3A 09 64     VT52..ttytyp:.d
01E750:  62 09 27 56 54 35 32 24 27 0D 0A 45 4E 44 49 46    b.'VT52$'..ENDIF
01E760:  3B 76 74 35 32 0D 0A 0D 0A 49 46 20 68 65 61 74    ;vt52....IF heat
01E770:  68 20 4F 52 20 7A 31 30 30 20 4F 52 20 74 65 6C    h OR z100 OR tel
01E780:  63 6F 6E 20 4F 52 20 76 74 35 32 0D 0A 6F 75 74    con OR vt52..out
01E790:  6C 69 6E 3A 09 64 62 09 65 73 63 2C 27 48 27 2C    lin:.db.esc,'H',
01E7A0:  65 73 63 2C 27 4A 27 2C 63 72 2C 6C 66 2C 74 61    esc,'J',cr,lf,ta
01E7B0:  62 2C 74 61 62 2C 27 24 27 0D 0A 65 72 61 73 63    b,tab,'$'..erasc
01E7C0:  72 3A 09 64 62 09 65 73 63 2C 27 48 27 2C 65 73    r:.db.esc,'H',es
01E7D0:  63 2C 27 4A 24 27 20 09 3B 43 6C 65 61 72 20 73    c,'J$' .;Clear s
01E7E0:  63 72 65 65 6E 20 61 6E 64 20 67 6F 20 68 6F 6D    creen and go hom
01E7F0:  65 2E 0D 0A 65 72 61 6C 69 6E 3A 09 64 62 09 63    e...eralin:.db.c
01E800:  72 2C 65 73 63 2C 27 4B 24 27 09 09 3B 43 6C 65    r,esc,'K$'..;Cle
01E810:  61 72 20 6C 69 6E 65 2E 0D 0A 63 75 72 6C 64 6E    ar line...curldn
01E820:  3A 09 64 62 09 65 73 63 2C 27 59 24 27 09 09 3B    :.db.esc,'Y$'..;
01E830:  63 75 72 73 6F 72 20 6C 65 61 64 69 6E 0D 0A 74    cursor leadin..t
01E840:  74 61 62 3A 09 09 09 09 09 3B 54 61 62 6C 65 20    tab:.....;Table 
01E850:  73 74 61 72 74 20 6C 6F 63 61 74 69 6F 6E 2E 0D    start location..
01E860:  0A 74 61 3A 09 64 62 09 65 73 63 2C 27 41 24 27    .ta:.db.esc,'A$'
01E870:  2C 30 09 09 3B 43 75 72 73 6F 72 20 75 70 2E 0D    ,0..;Cursor up..
01E880:  0A 74 62 3A 09 64 62 09 65 73 63 2C 27 42 24 27    .tb:.db.esc,'B$'
01E890:  2C 30 09 09 3B 43 75 72 73 6F 72 20 64 6F 77 6E    ,0..;Cursor down
01E8A0:  2E 0D 0A 74 63 3A 09 64 62 09 65 73 63 2C 27 43    ...tc:.db.esc,'C
01E8B0:  24 27 2C 30 09 09 3B 43 75 72 73 6F 72 20 72 69    $',0..;Cursor ri
01E8C0:  67 68 74 2E 0D 0A 74 64 3A 09 64 62 09 65 73 63    ght...td:.db.esc
01E8D0:  2C 27 44 24 27 2C 30 09 09 3B 43 75 72 73 6F 72    ,'D$',0..;Cursor
01E8E0:  20 6C 65 66 74 0D 0A 74 65 3A 09 64 62 09 65 73     left..te:.db.es
01E8F0:  63 2C 27 45 24 27 2C 30 09 09 3B 43 6C 65 61 72    c,'E$',0..;Clear
01E900:  64 62 09 62 73 2C 27 24 27 2C 30 2C 30 09 09 3B    db.bs,'$',0,0..;
01E910:  43 75 72 73 6F 72 20 6C 65 66 74 2E 0D 0A 74 65    Cursor left...te
01E920:  3A 09 64 62 09 73 75 62 74 2C 27 24 27 2C 30 2C    :.db.subt,'$',0,
01E930:  30 09 09 3B 43 6C 65 61 72 20 73 63 72 65 65 6E    0..;Clear screen
01E940:  2E 0D 0A 74 66 3A 09 64 62 09 27 24 27 2C 30 2C    ...tf:.db.'$',0,
01E950:  30 2C 30 09 09 3B 28 63 61 6E 27 74 29 20 45 6E    0,0..;(can't) En
01E960:  74 65 72 20 67 72 61 70 68 69 63 73 20 6D 6F 64    ter graphics mod
01E970:  65 0D 0A 74 67 3A 09 64 62 09 27 24 27 2C 30 2C    e..tg:.db.'$',0,
01E980:  30 2C 30 09 09 3B 28 63 61 6E 27 74 29 20 45 78    0,0..;(can't) Ex
01E990:  69 74 20 67 72 61 70 68 69 63 73 20 6D 6F 64 65    it graphics mode
01E9A0:  0D 0A 74 68 3A 09 64 62 09 28 27 5E 27 2D 31 30    ..th:.db.('^'-10
01E9B0:  30 4F 29 2C 27 24 27 2C 30 2C 30 09 3B 43 75 72    0O),'$',0,0.;Cur
01E9C0:  73 6F 72 20 68 6F 6D 65 2E 0D 0A 74 69 3A 09 64    sor home...ti:.d
01E9D0:  62 09 28 27 4B 27 2D 31 30 30 4F 29 2C 27 24 27    b.('K'-100O),'$'
01E9E0:  2C 30 2C 30 09 3B 52 65 76 65 72 73 65 20 6C 69    ,0,0.;Reverse li
01E9F0:  6E 65 66 65 65 64 2E 0D 0A 74 6A 3A 09 64 62 09    nefeed...tj:.db.
01EA00:  65 73 63 2C 27 54 24 27 2C 30 09 09 3B 28 63 61    esc,'T$',0..;(ca
01EA10:  6E 27 74 29 20 43 6C 65 61 72 20 74 6F 20 65 6E    n't) Clear to en
01EA20:  64 20 6F 66 20 73 63 72 65 65 6E 2E 0D 0A 74 6B    d of screen...tk
01EA30:  3A 09 64 62 09 65 73 63 2C 27 54 24 27 2C 30 09    :.db.esc,'T$',0.
01EA40:  09 3B 43 6C 65 61 72 20 74 6F 20 65 6E 64 20 6F    .;Clear to end o
01EA50:  66 20 6C 69 6E 65 2E 0D 0A 45 4E 44 49 46 3B 6F    f line...ENDIF;o
01EA60:  73 62 72 6E 31 0D 0A 3B 0C 0D 0A 49 46 20 61 70    sbrn1..;...IF ap
01EA70:  70 6C 65 0D 0A 73 79 73 76 65 72 3A 09 64 62 09    ple..sysver:.db.
01EA80:  27 41 70 70 6C 65 20 49 49 20 43 50 2F 4D 24 27    'Apple II CP/M$'
01EA90:  0D 0A 6F 75 74 6C 69 6E 3A 09 64 62 09 28 27 5E    ..outlin:.db.('^
01EAA0:  27 2D 31 30 30 4F 29 2C 65 73 63 2C 27 59 27 2C    '-100O),esc,'Y',
01EAB0:  63 72 2C 6C 66 2C 27 20 20 24 27 0D 0A 65 72 61    cr,lf,'  $'..era
01EAC0:  73 63 72 3A 09 64 62 09 28 27 5E 27 2D 31 30 30    scr:.db.('^'-100
01EAD0:  4F 29 2C 65 73 63 2C 27 59 24 27 09 3B 43 6C 65    O),esc,'Y$'.;Cle
01EAE0:  61 72 20 73 63 72 65 65 6E 20 61 6E 64 20 67 6F    ar screen and go
01EAF0:  20 68 6F 6D 65 2E 0D 0A 65 72 61 6C 69 6E 3A 09     home...eralin:.
01EB00:  20 64 69 73 70 6C 61 79 0D 0A 74 66 3A 09 64 62     display..tf:.db
01EB10:  09 65 73 63 2C 27 46 24 27 2C 30 09 09 3B 45 6E    .esc,'F$',0..;En
01EB20:  74 65 72 20 47 72 61 70 68 69 63 73 20 4D 6F 64    ter Graphics Mod
01EB30:  65 0D 0A 74 67 3A 09 64 62 09 65 73 63 2C 27 47    e..tg:.db.esc,'G
01EB40:  24 27 2C 30 09 09 3B 45 78 69 74 20 47 72 61 70    $',0..;Exit Grap
01EB50:  68 69 63 73 20 6D 6F 64 65 0D 0A 74 68 3A 09 64    hics mode..th:.d
01EB60:  62 09 65 73 63 2C 27 48 24 27 2C 30 09 09 3B 43    b.esc,'H$',0..;C
01EB70:  75 72 73 6F 72 20 68 6F 6D 65 2E 0D 0A 74 69 3A    ursor home...ti:
01EB80:  09 64 62 09 65 73 63 2C 27 49 24 27 2C 30 09 09    .db.esc,'I$',0..
01EB90:  3B 52 65 76 65 72 73 65 20 6C 69 6E 65 66 65 65    ;Reverse linefee
01EBA0:  64 2E 0D 0A 74 6A 3A 09 64 62 09 65 73 63 2C 27    d...tj:.db.esc,'
01EBB0:  4A 24 27 2C 30 09 09 3B 43 6C 65 61 72 20 74 6F    J$',0..;Clear to
01EBC0:  20 65 6E 64 20 6F 66 20 73 63 72 65 65 6E 2E 0D     end of screen..
01EBD0:  0A 74 6B 3A 09 64 62 09 65 73 63 2C 27 4B 24 27    .tk:.db.esc,'K$'
01EBE0:  2C 30 09 09 3B 43 6C 65 61 72 20 74 6F 20 65 6E    ,0..;Clear to en
01EBF0:  64 20 6F 66 20 6C 69 6E 65 2E 0D 0A 45 4E 44 49    d of line...ENDI
01EC00:  46 3B 68 65 61 74 68 20 4F 52 20 7A 31 30 30 20    F;heath OR z100 
01EC10:  4F 52 20 74 65 6C 63 6F 6E 20 4F 52 20 76 74 35    OR telcon OR vt5
01EC20:  32 0D 0A 3B 0C 0D 0A 49 46 20 74 72 73 38 30 6C    2..;...IF trs80l
01EC30:  62 0D 0A 73 79 73 76 65 72 3A 09 64 62 09 27 54    b..sysver:.db.'T
01EC40:  52 53 2D 38 30 20 49 49 20 4C 69 66 65 62 6F 61    RS-80 II Lifeboa
01EC50:  74 20 43 50 2F 4D 24 27 0D 0A 6F 75 74 6C 69 6E    t CP/M$'..outlin
01EC60:  3A 09 64 62 09 65 73 63 2C 27 3A 27 2C 63 72 2C    :.db.esc,':',cr,
01EC70:  6C 66 2C 74 61 62 2C 74 61 62 2C 27 24 27 0D 0A    lf,tab,tab,'$'..
01EC80:  65 72 61 73 63 72 3A 09 64 62 09 65 73 63 2C 27    erascr:.db.esc,'
01EC90:  3A 24 27 09 09 3B 43 6C 65 61 72 20 73 63 72 65    :$'..;Clear scre
01ECA0:  65 6E 20 61 6E 64 20 67 6F 20 68 6F 6D 65 2E 0D    en and go home..
01ECB0:  0A 65 72 61 6C 69 6E 3A 09 64 62 09 63 72 2C 65    .eralin:.db.cr,e
01ECC0:  73 63 2C 27 54 24 27 09 09 3B 43 6C 65 61 72 20    sc,'T$'..;Clear 
01ECD0:  6C 69 6E 65 2E 0D 0A 63 75 72 6C 64 6E 3A 09 64    line...curldn:.d
01ECE0:  62 09 65 73 63 2C 27 3D 24 27 09 09 3B 43 75 72    b.esc,'=$'..;Cur
01ECF0:  73 6F 72 20 6C 65 61 64 2D 69 6E 0D 0A 74 74 61    sor lead-in..tta
01ED00:  64 62 09 63 72 2C 65 73 63 2C 27 54 24 27 09 09    db.cr,esc,'T$'..
01ED10:  3B 43 6C 65 61 72 20 6C 69 6E 65 2E 0D 0A 64 65    ;Clear line...de
01ED20:  6C 73 74 72 3A 09 64 62 09 62 73 2C 62 73 2C 27    lstr:.db.bs,bs,'
01ED30:  24 27 09 09 3B 20 41 64 6A 75 73 74 20 66 6F 72    $'..; Adjust for
01ED40:  20 64 65 6C 65 74 65 0D 0A 63 75 72 6C 64 6E 3A     delete..curldn:
01ED50:  09 64 62 09 65 73 63 2C 27 3D 24 27 09 09 3B 43    .db.esc,'=$'..;C
01ED60:  75 72 73 6F 72 20 6C 65 61 64 2D 69 6E 0D 0A 74    ursor lead-in..t
01ED70:  74 61 62 3A 09 09 09 09 09 3B 54 61 62 6C 65 20    tab:.....;Table 
01ED80:  73 74 61 72 74 20 6C 6F 63 61 74 69 6F 6E 2E 0D    start location..
01ED90:  0A 74 61 3A 09 64 62 09 28 27 4B 27 2D 31 30 30    .ta:.db.('K'-100
01EDA0:  4F 29 2C 27 24 27 2C 30 2C 30 09 3B 43 75 72 73    O),'$',0,0.;Curs
01EDB0:  6F 72 20 75 70 2E 0D 0A 74 62 3A 09 64 62 09 31    or up...tb:.db.1
01EDC0:  32 4F 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75 72    2O,'$',0,0..;Cur
01EDD0:  73 6F 72 20 64 6F 77 6E 2E 0D 0A 74 63 3A 09 64    sor down...tc:.d
01EDE0:  62 09 28 27 46 27 2D 31 30 30 4F 29 2C 27 24 27    b.('F'-100O),'$'
01EDF0:  2C 30 2C 30 09 3B 43 75 72 73 6F 72 20 72 69 67    ,0,0.;Cursor rig
01EE00:  68 74 2E 0D 0A 74 64 3A 09 64 62 09 27 24 27 2C    ht...td:.db.'$',
01EE10:  30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74 29 20    0,0,0..;(can't) 
01EE20:  43 75 72 73 6F 72 20 6C 65 66 74 0D 0A 74 65 3A    Cursor left..te:
01EE30:  09 64 62 09 27 24 27 2C 30 2C 30 2C 30 09 09 3B    .db.'$',0,0,0..;
01EE40:  28 63 61 6E 27 74 29 20 43 6C 65 61 72 20 64 69    (can't) Clear di
01EE50:  73 70 6C 61 79 0D 0A 74 66 3A 09 64 62 09 27 24    splay..tf:.db.'$
01EE60:  27 2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74    ',0,0,0..;(can't
01EE70:  29 20 45 6E 74 65 72 20 67 72 61 70 68 69 63 73    ) Enter graphics
01EE80:  20 6D 6F 64 65 0D 0A 74 67 3A 09 64 62 09 27 24     mode..tg:.db.'$
01EE90:  27 2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74    ',0,0,0..;(can't
01EEA0:  29 20 45 78 69 74 20 67 72 61 70 68 69 63 73 20    ) Exit graphics 
01EEB0:  6D 6F 64 65 0D 0A 74 68 3A 09 64 62 09 28 27 5E    mode..th:.db.('^
01EEC0:  27 2D 31 30 30 4F 29 2C 27 24 27 2C 30 2C 30 09    '-100O),'$',0,0.
01EED0:  3B 43 75 72 73 6F 72 20 68 6F 6D 65 2E 0D 0A 74    ;Cursor home...t
01EEE0:  69 3A 09 64 62 09 28 27 4B 27 2D 31 30 30 4F 29    i:.db.('K'-100O)
01EEF0:  2C 27 24 27 2C 30 2C 30 09 3B 52 65 76 65 72 73    ,'$',0,0.;Revers
01EF00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01EF10:  1A 00 00 00 02 09 4E E5 1A 00 C1 02 00 00 00 02    ......N.........
01EF20:  1A 00 C6 02 00 00 00 02 1A 00 C2 02 00 00 00 02    ................
01EF30:  1A 00 C7 02 00 00 00 02 1A 00 C3 02 00 00 00 02    ................
01EF40:  1A 00 C8 02 00 00 00 02 1A 00 C4 02 00 00 00 02    ................
01EF50:  1A 00 C9 02 00 00 00 02 1A 00 C5 02 00 00 00 02    ................
01EF60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EF70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EF80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EF90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EFA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EFB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EFC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EFD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EFE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EFF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01F000:  62 3A 09 09 09 09 09 3B 54 61 62 6C 65 20 73 74    b:.....;Table st
01F010:  61 72 74 20 6C 6F 63 61 74 69 6F 6E 2E 0D 0A 74    art location...t
01F020:  61 3A 09 64 62 09 30 42 48 2C 27 24 27 2C 30 2C    a:.db.0BH,'$',0,
01F030:  30 09 09 3B 43 75 72 73 6F 72 20 75 70 2E 0D 0A    0..;Cursor up...
01F040:  74 62 3A 09 64 62 09 30 41 48 2C 27 24 27 2C 30    tb:.db.0AH,'$',0
01F050:  2C 30 09 09 3B 43 75 72 73 6F 72 20 64 6F 77 6E    ,0..;Cursor down
01F060:  2E 0D 0A 74 63 3A 09 64 62 09 30 43 48 2C 27 24    ...tc:.db.0CH,'$
01F070:  27 2C 30 2C 30 09 09 3B 43 75 72 73 6F 72 20 72    ',0,0..;Cursor r
01F080:  69 67 68 74 2E 0D 0A 74 64 3A 09 64 62 09 62 73    ight...td:.db.bs
01F090:  2C 27 24 27 2C 30 2C 30 09 09 3B 43 75 72 73 6F    ,'$',0,0..;Curso
01F0A0:  72 20 6C 65 66 74 0D 0A 74 65 3A 09 64 62 09 65    r left..te:.db.e
01F0B0:  73 63 2C 27 3A 24 27 2C 30 09 09 3B 43 6C 65 61    sc,':$',0..;Clea
01F0C0:  72 20 64 69 73 70 6C 61 79 0D 0A 74 66 3A 09 64    r display..tf:.d
01F0D0:  62 09 27 24 27 2C 30 2C 30 2C 30 09 09 3B 28 63    b.'$',0,0,0..;(c
01F0E0:  61 6E 27 74 29 20 45 6E 74 65 72 20 47 72 61 70    an't) Enter Grap
01F0F0:  68 69 63 73 20 4D 6F 64 65 0D 0A 74 67 3A 09 64    hics Mode..tg:.d
01F100:  62 09 27 24 27 2C 30 2C 30 2C 30 09 09 3B 28 63    b.'$',0,0,0..;(c
01F110:  61 6E 27 74 29 20 45 78 69 74 20 47 72 61 70 68    an't) Exit Graph
01F120:  69 63 73 20 6D 6F 64 65 0D 0A 74 68 3A 09 64 62    ics mode..th:.db
01F130:  09 31 45 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43    .1EH,'$',0,0..;C
01F140:  75 72 73 6F 72 20 68 6F 6D 65 2E 0D 0A 74 69 3A    ursor home...ti:
01F150:  09 64 62 09 30 42 48 2C 27 24 27 2C 30 2C 30 09    .db.0BH,'$',0,0.
01F160:  09 3B 52 65 76 65 72 73 65 20 6C 69 6E 65 66 65    .;Reverse linefe
01F170:  65 64 2E 0D 0A 74 6A 3A 09 64 62 09 65 73 63 2C    ed...tj:.db.esc,
01F180:  27 59 24 27 2C 30 09 09 3B 43 6C 65 61 72 20 74    'Y$',0..;Clear t
01F190:  6F 20 65 6E 64 20 6F 66 20 73 63 72 65 65 6E 2E    o end of screen.
01F1A0:  0D 0A 74 6B 3A 09 64 62 09 65 73 63 2C 27 54 24    ..tk:.db.esc,'T$
01F1B0:  27 2C 30 09 09 3B 43 6C 65 61 72 20 74 6F 20 65    ',0..;Clear to e
01F1C0:  6E 64 20 6F 66 20 6C 69 6E 65 2E 0D 0A 45 4E 44    nd of line...END
01F1D0:  49 46 3B 74 72 73 38 30 6C 62 0D 0A 3B 0C 0D 0A    IF;trs80lb..;...
01F1E0:  49 46 20 74 72 73 38 30 70 74 0D 0A 73 79 73 76    IF trs80pt..sysv
01F1F0:  65 72 3A 09 64 62 09 27 54 52 53 2D 38 30 20 49    er:.db.'TRS-80 I
01F200:  30 41 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75    0AH,'$',0,0..;Cu
01F210:  72 73 6F 72 20 64 6F 77 6E 2E 0D 0A 74 63 3A 09    rsor down...tc:.
01F220:  64 62 09 30 43 48 2C 27 24 27 2C 30 2C 30 09 09    db.0CH,'$',0,0..
01F230:  3B 43 75 72 73 6F 72 20 72 69 67 68 74 2E 0D 0A    ;Cursor right...
01F240:  74 64 3A 09 64 62 09 62 73 2C 27 24 27 2C 30 2C    td:.db.bs,'$',0,
01F250:  30 09 09 3B 43 75 72 73 6F 72 20 6C 65 66 74 0D    0..;Cursor left.
01F260:  0A 74 65 3A 09 64 62 09 73 75 62 74 2C 27 24 27    .te:.db.subt,'$'
01F270:  2C 30 2C 30 09 09 3B 43 6C 65 61 72 20 64 69 73    ,0,0..;Clear dis
01F280:  70 6C 61 79 0D 0A 74 66 3A 09 64 62 09 65 73 63    play..tf:.db.esc
01F290:  2C 27 47 24 27 2C 30 09 09 3B 20 45 6E 74 65 72    ,'G$',0..; Enter
01F2A0:  20 47 72 61 70 68 69 63 73 20 4D 6F 64 65 20 28     Graphics Mode (
01F2B0:  73 65 6C 65 63 74 20 47 72 65 65 6B 29 0D 0A 74    select Greek)..t
01F2C0:  67 3A 09 64 62 09 65 73 63 2C 27 41 24 27 2C 30    g:.db.esc,'A$',0
01F2D0:  09 09 3B 20 45 78 69 74 20 47 72 61 70 68 69 63    ..; Exit Graphic
01F2E0:  73 20 6D 6F 64 65 20 28 73 65 6C 65 63 74 20 41    s mode (select A
01F2F0:  53 43 49 49 29 0D 0A 74 68 3A 09 64 62 09 31 45    SCII)..th:.db.1E
01F300:  48 2C 27 24 27 2C 30 2C 30 09 09 3B 20 43 75 72    H,'$',0,0..; Cur
01F310:  73 6F 72 20 68 6F 6D 65 2E 09 09 5B 55 54 4B 30    sor home...[UTK0
01F320:  31 36 5D 0D 0A 74 69 3A 09 64 62 09 65 73 63 2C    16]..ti:.db.esc,
01F330:  27 45 27 2C 27 24 27 2C 30 09 09 3B 20 52 65 76    'E','$',0..; Rev
01F340:  65 72 73 65 20 6C 69 6E 65 66 65 65 64 2E 20 28    erse linefeed. (
01F350:  69 6E 73 65 72 74 20 6C 69 6E 65 29 0D 0A 74 6A    insert line)..tj
01F360:  3A 09 64 62 09 27 57 27 2D 31 30 30 4F 2C 27 24    :.db.'W'-100O,'$
01F370:  27 2C 30 2C 30 09 3B 20 43 6C 65 61 72 20 74 6F    ',0,0.; Clear to
01F380:  20 65 6E 64 20 6F 66 20 73 63 72 65 65 6E 2E 0D     end of screen..
01F390:  0A 74 6B 3A 09 64 62 09 27 58 27 2D 31 30 30 4F    .tk:.db.'X'-100O
01F3A0:  2C 27 24 27 2C 30 2C 30 09 3B 20 43 6C 65 61 72    ,'$',0,0.; Clear
01F3B0:  20 74 6F 20 65 6E 64 20 6F 66 20 6C 69 6E 65 2E     to end of line.
01F3C0:  0D 0A 45 4E 44 49 46 20 3B 20 6B 70 69 69 0D 0A    ..ENDIF ; kpii..
01F3D0:  3B 0C 0D 0A 49 46 20 78 65 72 38 32 30 0D 0A 73    ;...IF xer820..s
01F3E0:  79 73 76 65 72 3A 09 64 62 09 27 58 65 72 6F 78    ysver:.db.'Xerox
01F3F0:  20 38 32 30 24 27 0D 0A 6F 75 74 6C 69 6E 3A 09     820$'..outlin:.
01F400:  49 20 50 2B 54 20 43 50 2F 4D 24 27 0D 0A 6F 75    I P+T CP/M$'..ou
01F410:  74 6C 69 6E 3A 09 64 62 09 30 43 48 2C 63 72 2C    tlin:.db.0CH,cr,
01F420:  6C 66 2C 74 61 62 2C 74 61 62 2C 27 24 27 0D 0A    lf,tab,tab,'$'..
01F430:  65 72 61 73 63 72 3A 09 64 62 09 30 43 48 2C 27    erascr:.db.0CH,'
01F440:  24 27 09 09 09 3B 43 6C 65 61 72 20 73 63 72 65    $'...;Clear scre
01F450:  65 6E 20 61 6E 64 20 67 6F 20 68 6F 6D 65 2E 0D    en and go home..
01F460:  0A 65 72 61 6C 69 6E 3A 09 64 62 09 63 72 2C 30    .eralin:.db.cr,0
01F470:  31 48 2C 27 24 27 09 09 3B 43 6C 65 61 72 20 6C    1H,'$'..;Clear l
01F480:  69 6E 65 2E 0D 0A 63 75 72 6C 64 6E 3A 09 64 62    ine...curldn:.db
01F490:  09 65 73 63 2C 27 59 24 27 09 09 3B 43 75 72 73    .esc,'Y$'..;Curs
01F4A0:  6F 72 20 6C 65 61 64 2D 69 6E 0D 0A 74 74 61 62    or lead-in..ttab
01F4B0:  3A 09 3B 54 61 62 6C 65 20 73 74 61 72 74 20 6C    :.;Table start l
01F4C0:  6F 63 61 74 69 6F 6E 09 09 3B 4D 75 73 74 20 62    ocation..;Must b
01F4D0:  65 20 34 20 62 79 74 65 73 20 65 61 63 68 0D 0A    e 4 bytes each..
01F4E0:  74 61 3A 09 64 62 09 31 45 48 2C 27 24 27 2C 30    ta:.db.1EH,'$',0
01F4F0:  2C 30 09 09 3B 43 75 72 73 6F 72 20 75 70 2E 0D    ,0..;Cursor up..
01F500:  0A 74 62 3A 09 64 62 09 31 46 48 2C 27 24 27 2C    .tb:.db.1FH,'$',
01F510:  30 2C 30 09 09 3B 43 75 72 73 6F 72 20 64 6F 77    0,0..;Cursor dow
01F520:  6E 2E 0D 0A 74 63 3A 09 64 62 09 31 44 48 2C 27    n...tc:.db.1DH,'
01F530:  24 27 2C 30 2C 30 09 09 3B 43 75 72 73 6F 72 20    $',0,0..;Cursor 
01F540:  72 69 67 68 74 2E 0D 0A 74 64 3A 09 64 62 09 31    right...td:.db.1
01F550:  43 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75 72    CH,'$',0,0..;Cur
01F560:  73 6F 72 20 6C 65 66 74 0D 0A 74 65 3A 09 64 62    sor left..te:.db
01F570:  09 30 43 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43    .0CH,'$',0,0..;C
01F580:  6C 65 61 72 20 64 69 73 70 6C 61 79 0D 0A 74 66    lear display..tf
01F590:  3A 09 64 62 09 31 31 48 2C 27 24 27 2C 30 2C 30    :.db.11H,'$',0,0
01F5A0:  09 09 3B 45 6E 74 65 72 20 47 72 61 70 68 69 63    ..;Enter Graphic
01F5B0:  73 20 4D 6F 64 65 0D 0A 74 67 3A 09 64 62 09 31    s Mode..tg:.db.1
01F5C0:  34 48 2C 27 24 27 2C 30 2C 30 09 09 3B 45 78 69    4H,'$',0,0..;Exi
01F5D0:  74 20 47 72 61 70 68 69 63 73 20 6D 6F 64 65 0D    t Graphics mode.
01F5E0:  0A 74 68 3A 09 64 62 09 30 36 48 2C 27 24 27 2C    .th:.db.06H,'$',
01F5F0:  30 2C 30 09 09 3B 43 75 72 73 6F 72 20 68 6F 6D    0,0..;Cursor hom
01F600:  64 62 09 73 75 62 74 2C 63 72 2C 6C 66 2C 74 61    db.subt,cr,lf,ta
01F610:  62 2C 74 61 62 2C 27 24 27 0D 0A 65 72 61 73 63    b,tab,'$'..erasc
01F620:  72 3A 09 64 62 09 73 75 62 74 2C 27 24 27 09 09    r:.db.subt,'$'..
01F630:  3B 43 6C 65 61 72 20 73 63 72 65 65 6E 20 61 6E    ;Clear screen an
01F640:  64 20 68 6F 6D 65 2E 0D 0A 65 72 61 6C 69 6E 3A    d home...eralin:
01F650:  09 64 62 09 63 72 2C 31 38 48 2C 27 24 27 09 09    .db.cr,18H,'$'..
01F660:  3B 43 6C 65 61 72 20 6C 69 6E 65 2E 0D 0A 63 75    ;Clear line...cu
01F670:  72 6C 64 6E 3A 09 64 62 09 65 73 63 2C 27 3D 24    rldn:.db.esc,'=$
01F680:  27 09 09 3B 43 75 72 73 6F 72 20 6C 65 61 64 2D    '..;Cursor lead-
01F690:  69 6E 0D 0A 64 65 6C 73 74 72 3A 09 64 62 09 62    in..delstr:.db.b
01F6A0:  73 2C 27 20 27 2C 62 73 2C 62 73 2C 27 24 27 09    s,' ',bs,bs,'$'.
01F6B0:  3B 20 61 64 6A 75 73 74 20 66 6F 72 20 65 63 68    ; adjust for ech
01F6C0:  6F 69 6E 67 20 64 65 6C 65 74 65 20 63 68 61 72    oing delete char
01F6D0:  61 63 74 65 72 0D 0A 74 74 61 62 3A 09 09 09 09    acter..ttab:....
01F6E0:  09 3B 54 61 62 6C 65 20 73 74 61 72 74 20 6C 6F    .;Table start lo
01F6F0:  63 61 74 69 6F 6E 2E 0D 0A 74 61 3A 09 64 62 09    cation...ta:.db.
01F700:  30 42 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75    0BH,'$',0,0..;Cu
01F710:  72 73 6F 72 20 75 70 2E 0D 0A 74 62 3A 09 64 62    rsor up...tb:.db
01F720:  09 30 41 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43    .0AH,'$',0,0..;C
01F730:  75 72 73 6F 72 20 64 6F 77 6E 2E 0D 0A 74 63 3A    ursor down...tc:
01F740:  09 64 62 09 30 43 48 2C 27 24 27 2C 30 2C 30 09    .db.0CH,'$',0,0.
01F750:  09 3B 43 75 72 73 6F 72 20 72 69 67 68 74 2E 0D    .;Cursor right..
01F760:  0A 74 64 3A 09 64 62 09 62 73 2C 27 24 27 2C 30    .td:.db.bs,'$',0
01F770:  2C 30 09 09 3B 43 75 72 73 6F 72 20 6C 65 66 74    ,0..;Cursor left
01F780:  0D 0A 74 65 3A 09 64 62 09 73 75 62 74 2C 27 24    ..te:.db.subt,'$
01F790:  27 2C 30 2C 30 09 09 3B 43 6C 65 61 72 20 64 69    ',0,0..;Clear di
01F7A0:  73 70 6C 61 79 0D 0A 74 66 3A 09 64 62 09 27 24    splay..tf:.db.'$
01F7B0:  27 2C 30 2C 30 2C 30 09 09 3B 20 45 6E 74 65 72    ',0,0,0..; Enter
01F7C0:  20 47 72 61 70 68 69 63 73 20 4D 6F 64 65 20 28     Graphics Mode (
01F7D0:  63 61 6E 27 74 29 0D 0A 74 67 3A 09 64 62 09 27    can't)..tg:.db.'
01F7E0:  24 27 2C 30 2C 30 2C 30 09 09 3B 20 45 78 69 74    $',0,0,0..; Exit
01F7F0:  20 47 72 61 70 68 69 63 73 20 6D 6F 64 65 20 28     Graphics mode (
01F800:  65 2E 0D 0A 74 69 3A 09 64 62 09 31 45 48 2C 27    e...ti:.db.1EH,'
01F810:  24 27 2C 30 2C 30 09 09 3B 52 65 76 65 72 73 65    $',0,0..;Reverse
01F820:  20 6C 69 6E 65 66 65 65 64 2E 0D 0A 74 6A 3A 09     linefeed...tj:.
01F830:  64 62 09 30 32 48 2C 27 24 27 2C 30 2C 30 09 09    db.02H,'$',0,0..
01F840:  3B 43 6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66    ;Clear to end of
01F850:  20 73 63 72 65 65 6E 2E 0D 0A 74 6B 3A 09 64 62     screen...tk:.db
01F860:  09 30 31 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43    .01H,'$',0,0..;C
01F870:  6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66 20 6C    lear to end of l
01F880:  69 6E 65 2E 0D 0A 45 4E 44 49 46 3B 74 72 73 38    ine...ENDIF;trs8
01F890:  30 70 74 0D 0A 3B 0C 0D 0A 49 46 20 72 6F 62 69    0pt..;...IF robi
01F8A0:  6E 0D 0A 73 79 73 76 65 72 3A 09 64 62 09 27 56    n..sysver:.db.'V
01F8B0:  54 31 38 30 20 22 52 6F 62 69 6E 22 24 27 0D 0A    T180 "Robin"$'..
01F8C0:  45 4E 44 49 46 3B 72 6F 62 69 6E 0D 0A 0D 0A 49    ENDIF;robin....I
01F8D0:  46 20 64 6D 49 49 0D 0A 73 79 73 76 65 72 3A 09    F dmII..sysver:.
01F8E0:  64 62 09 27 44 45 43 6D 61 74 65 20 49 49 20 43    db.'DECmate II C
01F8F0:  50 2F 4D 2D 38 30 24 27 0D 0A 45 4E 44 49 46 3B    P/M-80$'..ENDIF;
01F900:  64 6D 49 49 0D 0A 0D 0A 49 46 20 76 74 31 30 30    dmII....IF vt100
01F910:  0D 0A 74 74 79 74 79 70 3A 09 64 62 09 27 56 54    ..ttytyp:.db.'VT
01F920:  31 30 30 24 27 0D 0A 45 4E 44 49 46 3B 76 74 31    100$'..ENDIF;vt1
01F930:  30 30 0D 0A 0D 0A 49 46 20 6E 6F 72 74 68 73 0D    00....IF norths.
01F940:  0A 73 79 73 76 65 72 3A 09 64 62 09 27 4E 6F 72    .sysver:.db.'Nor
01F950:  74 68 73 74 61 72 20 48 6F 72 69 7A 6F 6E 24 27    thstar Horizon$'
01F960:  0D 0A 45 4E 44 49 46 3B 6E 6F 72 74 68 73 0D 0A    ..ENDIF;norths..
01F970:  0D 0A 49 46 20 72 6F 62 69 6E 20 4F 52 20 64 6D    ..IF robin OR dm
01F980:  49 49 20 6F 72 20 76 74 31 30 30 0D 0A 3B 20 4E    II or vt100..; N
01F990:  6F 74 65 20 74 68 61 74 20 77 65 20 63 61 6E 6E    ote that we cann
01F9A0:  6F 74 20 73 75 70 70 6F 72 74 20 47 72 61 70 68    ot support Graph
01F9B0:  69 63 73 20 4D 6F 64 65 20 6F 72 20 74 68 65 20    ics Mode or the 
01F9C0:  48 31 39 20 65 72 61 73 65 2D 73 63 72 65 65 6E    H19 erase-screen
01F9D0:  20 63 6F 6D 6D 61 6E 64 0D 0A 3B 20 28 3C 65 73     command..; (<es
01F9E0:  63 3E 45 29 2C 20 62 65 63 61 75 73 65 20 74 68    c>E), because th
01F9F0:  65 20 73 65 71 75 65 6E 63 65 73 20 61 72 65 20    e sequences are 
01FA00:  63 61 6E 27 74 29 0D 0A 74 68 3A 09 64 62 09 31    can't)..th:.db.1
01FA10:  45 48 2C 27 24 27 2C 30 2C 30 09 09 3B 20 43 75    EH,'$',0,0..; Cu
01FA20:  72 73 6F 72 20 68 6F 6D 65 2E 09 09 5B 55 54 4B    rsor home...[UTK
01FA30:  30 31 36 5D 0D 0A 74 69 3A 09 64 62 09 30 42 48    016]..ti:.db.0BH
01FA40:  2C 27 24 27 2C 30 2C 30 09 09 3B 20 52 65 76 65    ,'$',0,0..; Reve
01FA50:  72 73 65 20 6C 69 6E 65 66 65 65 64 2E 20 28 63    rse linefeed. (c
01FA60:  75 72 73 6F 72 20 75 70 29 0D 0A 74 6A 3A 09 64    ursor up)..tj:.d
01FA70:  62 09 31 31 48 2C 27 24 27 2C 30 2C 30 09 09 3B    b.11H,'$',0,0..;
01FA80:  20 43 6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66     Clear to end of
01FA90:  20 73 63 72 65 65 6E 2E 0D 0A 74 6B 3A 09 64 62     screen...tk:.db
01FAA0:  09 31 38 48 2C 27 24 27 2C 30 2C 30 09 09 3B 20    .18H,'$',0,0..; 
01FAB0:  43 6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66 20    Clear to end of 
01FAC0:  6C 69 6E 65 2E 0D 0A 45 4E 44 49 46 20 3B 20 78    line...ENDIF ; x
01FAD0:  65 72 38 32 30 0D 0A 3B 0C 0D 0A 49 46 20 6D 69    er820..;...IF mi
01FAE0:  6B 6B 6F 0D 0A 73 79 73 76 65 72 3A 09 64 62 09    kko..sysver:.db.
01FAF0:  27 4D 69 6B 72 6F 4D 69 6B 6B 6F 24 27 0D 0A 6F    'MikroMikko$'..o
01FB00:  75 74 6C 69 6E 3A 09 64 62 09 73 75 62 74 2C 63    utlin:.db.subt,c
01FB10:  72 2C 6C 66 2C 74 61 62 2C 27 24 27 0D 0A 65 72    r,lf,tab,'$'..er
01FB20:  61 73 63 72 3A 09 64 62 09 73 75 62 74 2C 27 24    ascr:.db.subt,'$
01FB30:  27 09 09 3B 43 6C 65 61 72 20 73 63 72 65 65 6E    '..;Clear screen
01FB40:  20 61 6E 64 20 67 6F 20 68 6F 6D 65 2E 0D 0A 65     and go home...e
01FB50:  72 61 6C 69 6E 3A 09 64 62 09 63 72 2C 31 43 48    ralin:.db.cr,1CH
01FB60:  2C 27 24 27 09 09 3B 43 6C 65 61 72 20 6C 69 6E    ,'$'..;Clear lin
01FB70:  65 2E 0D 0A 63 75 72 6C 64 6E 3A 09 64 62 09 65    e...curldn:.db.e
01FB80:  73 63 2C 27 3D 24 27 09 09 3B 63 75 72 73 6F 72    sc,'=$'..;cursor
01FB90:  20 6C 65 61 64 69 6E 0D 0A 74 74 61 62 3A 09 09     leadin..ttab:..
01FBA0:  09 09 09 3B 54 61 62 6C 65 20 73 74 61 72 74 20    ...;Table start 
01FBB0:  6C 6F 63 61 74 69 6F 6E 2E 0D 0A 74 61 3A 09 64    location...ta:.d
01FBC0:  62 09 30 42 48 2C 27 24 27 2C 30 2C 30 09 09 3B    b.0BH,'$',0,0..;
01FBD0:  43 75 72 73 6F 72 20 75 70 2E 0D 0A 74 62 3A 09    Cursor up...tb:.
01FBE0:  64 62 09 30 41 48 2C 27 24 27 2C 30 2C 30 09 09    db.0AH,'$',0,0..
01FBF0:  3B 43 75 72 73 6F 72 20 64 6F 77 6E 2E 0D 0A 74    ;Cursor down...t
01FC00:  6D 6F 72 65 20 74 68 61 6E 20 74 68 72 65 65 20    more than three 
01FC10:  62 79 74 65 73 2E 0D 0A 6F 75 74 6C 69 6E 3A 09    bytes...outlin:.
01FC20:  64 62 09 65 73 63 2C 33 43 48 2C 65 73 63 2C 27    db.esc,3CH,esc,'
01FC30:  5B 48 27 2C 65 73 63 2C 27 5B 4A 27 2C 63 72 2C    [H',esc,'[J',cr,
01FC40:  6C 66 2C 74 61 62 2C 74 61 62 2C 27 24 27 0D 0A    lf,tab,tab,'$'..
01FC50:  65 72 61 73 63 72 3A 09 64 62 09 65 73 63 2C 27    erascr:.db.esc,'
01FC60:  5B 48 27 2C 65 73 63 2C 27 5B 4A 24 27 20 09 3B    [H',esc,'[J$' .;
01FC70:  43 6C 65 61 72 20 73 63 72 65 65 6E 20 61 6E 64    Clear screen and
01FC80:  20 67 6F 20 68 6F 6D 65 2E 0D 0A 65 72 61 6C 69     go home...erali
01FC90:  6E 3A 09 64 62 09 63 72 2C 65 73 63 2C 27 5B 4B    n:.db.cr,esc,'[K
01FCA0:  24 27 09 09 3B 43 6C 65 61 72 20 6C 69 6E 65 2E    $'..;Clear line.
01FCB0:  0D 0A 63 75 72 6C 64 6E 3A 09 64 62 09 65 73 63    ..curldn:.db.esc
01FCC0:  2C 27 5B 24 27 09 09 3B 20 43 75 72 73 6F 72 20    ,'[$'..; Cursor 
01FCD0:  6C 65 61 64 69 6E 0D 0A 74 74 61 62 3A 0D 0A 74    leadin..ttab:..t
01FCE0:  61 3A 09 64 62 09 65 73 63 2C 27 5B 41 24 27 09    a:.db.esc,'[A$'.
01FCF0:  09 3B 20 43 75 72 73 6F 72 20 75 70 2E 0D 0A 74    .; Cursor up...t
01FD00:  62 3A 09 64 62 09 65 73 63 2C 27 5B 42 24 27 09    b:.db.esc,'[B$'.
01FD10:  09 3B 20 43 75 72 73 6F 72 20 64 6F 77 6E 2E 0D    .; Cursor down..
01FD20:  0A 74 63 3A 09 64 62 09 65 73 63 2C 27 5B 43 24    .tc:.db.esc,'[C$
01FD30:  27 09 09 3B 20 43 75 72 73 6F 72 20 72 69 67 68    '..; Cursor righ
01FD40:  74 2E 0D 0A 74 64 3A 09 64 62 09 65 73 63 2C 27    t...td:.db.esc,'
01FD50:  5B 44 24 27 09 09 3B 20 43 75 72 73 6F 72 20 6C    [D$'..; Cursor l
01FD60:  65 66 74 0D 0A 74 65 3A 09 64 62 09 27 24 27 2C    eft..te:.db.'$',
01FD70:  30 2C 30 2C 30 09 09 3B 20 28 63 61 6E 27 74 29    0,0,0..; (can't)
01FD80:  20 43 6C 65 61 72 20 64 69 73 70 6C 61 79 0D 0A     Clear display..
01FD90:  74 66 3A 09 64 62 09 27 24 27 2C 30 2C 30 2C 30    tf:.db.'$',0,0,0
01FDA0:  09 09 3B 20 28 64 6F 6E 27 74 29 20 45 6E 74 65    ..; (don't) Ente
01FDB0:  72 20 47 72 61 70 68 69 63 73 20 4D 6F 64 65 0D    r Graphics Mode.
01FDC0:  0A 74 67 3A 09 64 62 09 27 24 27 2C 30 2C 30 2C    .tg:.db.'$',0,0,
01FDD0:  30 09 09 3B 20 28 64 6F 6E 27 74 29 20 45 78 69    0..; (don't) Exi
01FDE0:  74 20 47 72 61 70 68 69 63 73 20 6D 6F 64 65 0D    t Graphics mode.
01FDF0:  0A 74 68 3A 09 64 62 09 65 73 63 2C 27 5B 48 24    .th:.db.esc,'[H$
01FE00:  63 3A 09 64 62 09 30 43 48 2C 27 24 27 2C 30 2C    c:.db.0CH,'$',0,
01FE10:  30 09 09 3B 43 75 72 73 6F 72 20 72 69 67 68 74    0..;Cursor right
01FE20:  2E 0D 0A 74 64 3A 09 64 62 09 62 73 2C 27 24 27    ...td:.db.bs,'$'
01FE30:  2C 30 2C 30 09 09 3B 43 75 72 73 6F 72 20 6C 65    ,0,0..;Cursor le
01FE40:  66 74 0D 0A 74 65 3A 09 64 62 09 73 75 62 74 2C    ft..te:.db.subt,
01FE50:  27 24 27 2C 30 2C 30 09 09 3B 43 6C 65 61 72 20    '$',0,0..;Clear 
01FE60:  64 69 73 70 6C 61 79 0D 0A 74 66 3A 09 64 62 09    display..tf:.db.
01FE70:  27 24 27 2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E    '$',0,0,0..;(can
01FE80:  27 74 29 20 45 6E 74 65 72 20 47 72 61 70 68 69    't) Enter Graphi
01FE90:  63 73 20 4D 6F 64 65 0D 0A 74 67 3A 09 64 62 09    cs Mode..tg:.db.
01FEA0:  27 24 27 2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E    '$',0,0,0..;(can
01FEB0:  27 74 29 20 45 78 69 74 20 47 72 61 70 68 69 63    't) Exit Graphic
01FEC0:  73 20 6D 6F 64 65 0D 0A 74 68 3A 09 64 62 09 31    s mode..th:.db.1
01FED0:  45 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75 72    EH,'$',0,0..;Cur
01FEE0:  73 6F 72 20 68 6F 6D 65 2E 0D 0A 74 69 3A 09 64    sor home...ti:.d
01FEF0:  62 09 27 24 27 2C 30 2C 30 2C 30 09 09 3B 28 63    b.'$',0,0,0..;(c
01FF00:  61 6E 27 74 29 20 52 65 76 65 72 73 65 20 6C 69    an't) Reverse li
01FF10:  6E 65 66 65 65 64 2E 0D 0A 74 6A 3A 09 64 62 09    nefeed...tj:.db.
01FF20:  31 63 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43 6C    1cH,'$',0,0..;Cl
01FF30:  65 61 72 20 74 6F 20 65 6E 64 20 6F 66 20 73 63    ear to end of sc
01FF40:  72 65 65 6E 2E 0D 0A 74 6B 3A 09 64 62 09 31 63    reen...tk:.db.1c
01FF50:  48 2C 27 24 27 2C 30 2C 30 09 09 3B 43 6C 65 61    H,'$',0,0..;Clea
01FF60:  72 20 74 6F 20 65 6E 64 20 6F 66 20 6C 69 6E 65    r to end of line
01FF70:  2E 0D 0A 45 4E 44 49 46 3B 6D 69 6B 6B 6F 0D 0A    ...ENDIF;mikko..
01FF80:  3B 0C 0D 0A 49 46 20 67 65 6E 65 72 20 6F 72 20    ;...IF gener or 
01FF90:  63 70 6D 33 0D 0A 73 79 73 76 65 72 3A 09 64 62    cpm3..sysver:.db
01FFA0:  09 27 47 65 6E 65 72 69 63 20 43 50 2F 4D 2D 38    .'Generic CP/M-8
01FFB0:  30 24 27 0D 0A 45 4E 44 49 46 3B 67 65 6E 65 72    0$'..ENDIF;gener
01FFC0:  20 6F 72 20 63 70 6D 33 0D 0A 0D 0A 49 46 20 62     or cpm3....IF b
01FFD0:  62 49 49 0D 0A 73 79 73 76 65 72 3A 09 64 62 09    bII..sysver:.db.
01FFE0:  27 42 69 67 20 42 6F 61 72 64 20 49 49 24 27 0D    'Big Board II$'.
01FFF0:  0A 45 4E 44 49 46 3B 62 62 49 49 0D 0A 0D 0A 49    .ENDIF;bbII....I
020000:  27 09 09 3B 20 43 75 72 73 6F 72 20 68 6F 6D 65    '..; Cursor home
020010:  2E 0D 0A 74 69 3A 09 64 62 09 65 73 63 2C 27 4D    ...ti:.db.esc,'M
020020:  24 27 2C 30 09 09 3B 20 52 65 76 65 72 73 65 20    $',0..; Reverse 
020030:  6C 69 6E 65 66 65 65 64 2E 0D 0A 74 6A 3A 09 64    linefeed...tj:.d
020040:  62 09 65 73 63 2C 27 5B 4A 24 27 09 09 3B 20 43    b.esc,'[J$'..; C
020050:  6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66 20 73    lear to end of s
020060:  63 72 65 65 6E 2E 0D 0A 74 6B 3A 09 64 62 09 65    creen...tk:.db.e
020070:  73 63 2C 27 5B 4B 24 27 09 09 3B 20 43 6C 65 61    sc,'[K$'..; Clea
020080:  72 20 74 6F 20 65 6E 64 20 6F 66 20 6C 69 6E 65    r to end of line
020090:  2E 0D 0A 45 4E 44 49 46 3B 72 6F 62 69 6E 20 4F    ...ENDIF;robin O
0200A0:  52 20 64 6D 49 49 20 6F 72 20 76 74 31 30 30 0D    R dmII or vt100.
0200B0:  0A 3B 0C 0D 0A 49 46 20 6B 70 69 69 0D 0A 73 79    .;...IF kpii..sy
0200C0:  73 76 65 72 3A 09 64 62 09 27 4B 61 79 70 72 6F    sver:.db.'Kaypro
0200D0:  20 49 49 24 27 0D 0A 6F 75 74 6C 69 6E 3A 09 64     II$'..outlin:.d
0200E0:  62 09 73 75 62 74 2C 63 72 2C 6C 66 2C 74 61 62    b.subt,cr,lf,tab
0200F0:  2C 74 61 62 2C 27 24 27 0D 0A 65 72 61 73 63 72    ,tab,'$'..erascr
020100:  3A 09 64 62 09 73 75 62 74 2C 27 24 27 09 09 3B    :.db.subt,'$'..;
020110:  43 6C 65 61 72 20 73 63 72 65 65 6E 20 61 6E 64    Clear screen and
020120:  20 68 6F 6D 65 2E 0D 0A 65 72 61 6C 69 6E 3A 09     home...eralin:.
020130:  64 62 09 63 72 2C 31 38 48 2C 27 24 27 09 09 3B    db.cr,18H,'$'..;
020140:  43 6C 65 61 72 20 6C 69 6E 65 2E 0D 0A 63 75 72    Clear line...cur
020150:  6C 64 6E 3A 09 64 62 09 65 73 63 2C 27 3D 24 27    ldn:.db.esc,'=$'
020160:  09 09 3B 43 75 72 73 6F 72 20 6C 65 61 64 2D 69    ..;Cursor lead-i
020170:  6E 0D 0A 64 65 6C 73 74 72 3A 09 64 62 09 62 73    n..delstr:.db.bs
020180:  2C 27 20 27 2C 62 73 2C 62 73 2C 27 24 27 09 3B    ,' ',bs,bs,'$'.;
020190:  20 61 64 6A 75 73 74 20 66 6F 72 20 65 63 68 6F     adjust for echo
0201A0:  69 6E 67 20 64 65 6C 65 74 65 20 63 68 61 72 61    ing delete chara
0201B0:  63 74 65 72 0D 0A 74 74 61 62 3A 09 09 09 09 09    cter..ttab:.....
0201C0:  3B 54 61 62 6C 65 20 73 74 61 72 74 20 6C 6F 63    ;Table start loc
0201D0:  61 74 69 6F 6E 2E 0D 0A 74 61 3A 09 64 62 09 30    ation...ta:.db.0
0201E0:  42 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75 72    BH,'$',0,0..;Cur
0201F0:  73 6F 72 20 75 70 2E 0D 0A 74 62 3A 09 64 62 09    sor up...tb:.db.
020200:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
020210:  1B 00 00 00 02 09 4E E5 1B 00 C1 02 00 00 00 02    ......N.........
020220:  1B 00 C6 02 00 00 00 02 1B 00 C2 02 00 00 00 02    ................
020230:  1B 00 C7 02 00 00 00 02 1B 00 C3 02 00 00 00 02    ................
020240:  1B 00 C8 02 00 00 00 02 1B 00 C4 02 00 00 00 02    ................
020250:  1B 00 C9 02 00 00 00 02 1B 00 C5 02 00 00 00 02    ................
020260:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
020270:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
020280:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
020290:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0202A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0202B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0202C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0202D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0202E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0202F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
020300:  46 20 63 70 74 38 35 78 78 0D 0A 73 79 73 76 65    F cpt85xx..sysve
020310:  72 3A 09 64 62 09 27 43 50 54 2D 38 35 78 78 20    r:.db.'CPT-85xx 
020320:  75 6E 64 65 72 20 43 6F 6D 70 75 50 61 6B 20 43    under CompuPak C
020330:  50 2F 4D 24 27 0D 0A 45 4E 44 49 46 3B 63 70 74    P/M$'..ENDIF;cpt
020340:  38 35 78 78 0D 0A 0D 0A 49 46 20 6D 64 49 0D 0A    85xx....IF mdI..
020350:  73 79 73 76 65 72 3A 09 64 62 09 27 4D 6F 72 72    sysver:.db.'Morr
020360:  6F 77 20 44 65 63 69 73 69 6F 6E 20 49 24 27 0D    ow Decision I$'.
020370:  0A 45 4E 44 49 46 3B 6D 64 49 20 20 5B 54 6F 61    .ENDIF;mdI  [Toa
020380:  64 20 48 61 6C 6C 5D 0D 0A 0D 0A 49 46 20 6D 6D    d Hall]....IF mm
020390:  64 49 0D 0A 73 79 73 76 65 72 3A 09 64 62 09 27    dI..sysver:.db.'
0203A0:  4D 69 63 72 6F 44 65 63 69 73 69 6F 6E 20 49 24    MicroDecision I$
0203B0:  27 0D 0A 45 4E 44 49 46 3B 6D 6D 64 49 0D 0A 0D    '..ENDIF;mmdI...
0203C0:  0A 49 46 20 6F 73 69 0D 0A 73 79 73 76 65 72 3A    .IF osi..sysver:
0203D0:  09 64 62 09 27 4F 68 69 6F 20 53 63 69 65 6E 74    .db.'Ohio Scient
0203E0:  69 66 69 63 24 27 0D 0A 45 4E 44 49 46 3B 6F 73    ific$'..ENDIF;os
0203F0:  69 0D 0A 0D 0A 49 46 20 6F 73 69 20 4F 52 20 63    i....IF osi OR c
020400:  72 74 0D 0A 6F 75 74 6C 69 6E 3A 09 64 62 09 63    rt..outlin:.db.c
020410:  72 2C 6C 66 2C 27 53 74 61 72 74 69 6E 67 20 2E    r,lf,'Starting .
020420:  2E 2E 24 27 0D 0A 65 72 61 73 63 72 09 65 71 75    ..$'..erascr.equ
020430:  09 63 72 6C 66 09 09 09 3B 22 48 6F 6D 65 20 26    .crlf...;"Home &
020440:  20 63 6C 65 61 72 22 20 28 62 65 73 74 20 77 65     clear" (best we
020450:  20 63 61 6E 20 64 6F 29 2E 0D 0A 65 72 61 6C 69     can do)...erali
020460:  6E 3A 09 64 62 09 27 5E 55 27 2C 63 72 2C 6C 66    n:.db.'^U',cr,lf
020470:  2C 27 24 27 09 09 3B 43 6C 65 61 72 20 6C 69 6E    ,'$'..;Clear lin
020480:  65 2E 0D 0A 70 72 70 61 63 6B 3A 09 64 62 09 63    e...prpack:.db.c
020490:  72 2C 6C 66 2C 27 52 50 61 63 6B 3A 20 24 27 0D    r,lf,'RPack: $'.
0204A0:  0A 70 73 70 61 63 6B 3A 09 64 62 09 63 72 2C 6C    .pspack:.db.cr,l
0204B0:  66 2C 27 53 50 61 63 6B 3A 20 24 27 0D 0A 74 74    f,'SPack: $'..tt
0204C0:  61 62 09 65 71 75 09 30 09 09 09 3B 20 6E 6F 20    ab.equ.0...; no 
0204D0:  56 54 35 32 20 74 61 62 6C 65 0D 0A 45 4E 44 49    VT52 table..ENDI
0204E0:  46 3B 6F 73 69 20 4F 52 20 63 72 74 0D 0A 0D 0A    F;osi OR crt....
0204F0:  49 46 20 74 76 69 39 32 35 0D 0A 3B 28 69 6E 63    IF tvi925..;(inc
020500:  61 3A 09 64 62 09 28 27 4B 27 2D 31 30 30 4F 29    a:.db.('K'-100O)
020510:  2C 27 24 27 2C 30 2C 30 09 3B 43 75 72 73 6F 72    ,'$',0,0.;Cursor
020520:  20 75 70 2E 0D 0A 74 62 3A 09 64 62 09 31 32 4F     up...tb:.db.12O
020530:  2C 27 24 27 2C 30 2C 30 09 09 3B 43 75 72 73 6F    ,'$',0,0..;Curso
020540:  72 20 64 6F 77 6E 2E 0D 0A 74 63 3A 09 64 62 09    r down...tc:.db.
020550:  28 27 41 27 2D 31 30 30 4F 29 2C 27 24 27 2C 30    ('A'-100O),'$',0
020560:  2C 30 09 3B 43 75 72 73 6F 72 20 72 69 67 68 74    ,0.;Cursor right
020570:  2E 0D 0A 74 64 3A 09 64 62 09 28 27 48 27 2D 31    ...td:.db.('H'-1
020580:  30 30 4F 29 2C 27 24 27 2C 30 2C 30 09 3B 43 75    00O),'$',0,0.;Cu
020590:  72 73 6F 72 20 6C 65 66 74 2E 0D 0A 74 65 3A 09    rsor left...te:.
0205A0:  64 62 09 28 27 4C 27 2D 31 30 30 4F 29 2C 27 24    db.('L'-100O),'$
0205B0:  27 2C 30 2C 30 09 3B 43 6C 65 61 72 20 73 63 72    ',0,0.;Clear scr
0205C0:  65 65 6E 20 61 6E 64 20 68 6F 6D 65 20 63 75 72    een and home cur
0205D0:  73 6F 72 0D 0A 74 66 3A 09 64 62 09 27 24 27 2C    sor..tf:.db.'$',
0205E0:  30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74 29 20    0,0,0..;(can't) 
0205F0:  45 6E 74 65 72 20 47 72 61 70 68 69 63 73 20 6D    Enter Graphics m
020600:  6F 64 65 0D 0A 74 67 3A 09 64 62 09 27 24 27 2C    ode..tg:.db.'$',
020610:  30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74 29 20    0,0,0..;(can't) 
020620:  45 78 69 74 20 47 72 61 70 68 69 63 73 20 6D 6F    Exit Graphics mo
020630:  64 65 0D 0A 74 68 3A 09 64 62 09 28 27 5A 27 2D    de..th:.db.('Z'-
020640:  31 30 30 4F 29 2C 27 24 27 2C 30 2C 30 09 3B 43    100O),'$',0,0.;C
020650:  75 72 73 6F 72 20 68 6F 6D 65 2E 0D 0A 74 69 3A    ursor home...ti:
020660:  09 64 62 09 28 27 4B 27 2D 31 30 30 4F 29 2C 27    .db.('K'-100O),'
020670:  24 27 2C 30 2C 30 09 3B 52 65 76 65 72 73 65 20    $',0,0.;Reverse 
020680:  6C 69 6E 65 66 65 65 64 2E 0D 0A 74 6A 3A 09 64    linefeed...tj:.d
020690:  62 09 65 73 63 2C 27 59 24 27 2C 30 09 09 3B 43    b.esc,'Y$',0..;C
0206A0:  6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66 20 73    lear to end of s
0206B0:  63 72 65 65 6E 2E 0D 0A 74 6B 3A 09 64 62 09 65    creen...tk:.db.e
0206C0:  73 63 2C 27 54 24 27 2C 30 09 09 3B 43 6C 65 61    sc,'T$',0..;Clea
0206D0:  72 20 74 6F 20 65 6E 64 20 6F 66 20 6C 69 6E 65    r to end of line
0206E0:  2E 0D 0A 45 4E 44 49 46 3B 73 6D 72 74 76 64 0D    ...ENDIF;smrtvd.
0206F0:  0A 0D 0A 6F 76 6C 65 6E 64 09 65 71 75 09 24 09    ...ovlend.equ.$.
020700:  69 64 65 6E 74 61 6C 6C 79 2C 20 77 6F 72 6B 73    identally, works
020710:  20 66 69 6E 65 20 66 6F 72 20 46 72 65 65 64 6F     fine for Freedo
020720:  6D 20 31 30 30 20 61 6C 73 6F 20 20 5B 54 6F 61    m 100 also  [Toa
020730:  64 20 48 61 6C 6C 5D 29 0D 0A 3B 61 64 6D 33 61    d Hall])..;adm3a
020740:  20 65 6E 74 72 79 20 61 6E 64 20 74 76 69 39 32     entry and tvi92
020750:  35 20 65 6E 74 72 79 20 73 65 70 61 72 61 74 65    5 entry separate
020760:  64 20 74 6F 20 72 65 6D 6F 76 65 20 77 61 72 6E    d to remove warn
020770:  69 6E 67 20 6D 65 73 73 61 67 65 2E 0D 0A 74 74    ing message...tt
020780:  79 74 79 70 3A 09 64 62 09 27 54 56 49 39 32 35    ytyp:.db.'TVI925
020790:  24 27 0D 0A 6F 75 74 6C 69 6E 3A 09 64 62 09 27    $'..outlin:.db.'
0207A0:  5A 27 2D 36 34 2C 30 2C 30 2C 63 72 2C 6C 66 2C    Z'-64,0,0,cr,lf,
0207B0:  27 24 27 0D 0A 65 72 61 73 63 72 3A 09 64 62 09    '$'..erascr:.db.
0207C0:  27 5A 27 2D 36 34 2C 30 2C 30 2C 27 24 27 09 09    'Z'-64,0,0,'$'..
0207D0:  3B 43 6C 65 61 72 20 73 63 72 65 65 6E 20 61 6E    ;Clear screen an
0207E0:  64 20 68 6F 6D 65 0D 0A 65 72 61 6C 69 6E 3A 09    d home..eralin:.
0207F0:  64 62 09 65 73 63 2C 27 59 24 27 2C 30 09 09 3B    db.esc,'Y$',0..;
020800:  43 6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66 20    Clear to end of 
020810:  73 72 65 65 6E 0D 0A 63 75 72 6C 64 6E 3A 09 64    sreen..curldn:.d
020820:  62 09 63 72 2C 65 73 63 2C 27 3D 24 27 09 09 3B    b.cr,esc,'=$'..;
020830:  43 75 72 73 6F 72 20 6C 65 61 64 2D 69 6E 0D 0A    Cursor lead-in..
020840:  74 74 61 62 3A 09 3B 54 61 62 6C 65 20 73 74 61    ttab:.;Table sta
020850:  72 74 20 6C 6F 63 61 74 69 6F 6E 09 09 3B 28 4D    rt location..;(M
020860:  55 53 54 20 62 65 20 34 20 62 79 74 65 73 20 65    UST be 4 bytes e
020870:  61 63 68 29 0D 0A 74 61 3A 09 64 62 09 27 4B 27    ach)..ta:.db.'K'
020880:  2D 36 34 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75    -64,'$',0,0..;Cu
020890:  72 73 6F 72 20 75 70 2C 20 73 74 6F 70 20 61 74    rsor up, stop at
0208A0:  20 74 6F 70 0D 0A 74 62 3A 09 64 62 09 27 56 27     top..tb:.db.'V'
0208B0:  2D 36 34 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75    -64,'$',0,0..;Cu
0208C0:  72 73 6F 72 20 64 6F 77 6E 2C 20 73 74 6F 70 20    rsor down, stop 
0208D0:  61 74 20 62 6F 74 74 6F 6D 0D 0A 74 63 3A 09 64    at bottom..tc:.d
0208E0:  62 09 27 4C 27 2D 36 34 2C 27 24 27 2C 30 2C 30    b.'L'-64,'$',0,0
0208F0:  09 09 3B 43 75 72 73 6F 72 20 72 69 67 68 74 2C    ..;Cursor right,
020900:  3B 20 45 6E 64 20 6F 66 20 6F 76 65 72 6C 61 79    ; End of overlay
020910:  0D 0A 0D 0A 09 45 4E 44 0D 0A 20 67 65 74 20 63    .....END.. get c
020920:  6F 6C 75 6D 6E 0D 0A 09 61 64 69 09 28 27 20 27    olumn...adi.(' '
020930:  2D 31 29 09 09 3B 20 73 70 61 63 65 20 69 73 20    -1)..; space is 
020940:  63 6F 6C 75 6D 6E 20 6F 6E 65 0D 0A 09 6D 6F 76    column one...mov
020950:  09 65 2C 61 0D 0A 09 6A 6D 70 09 6F 75 74 63 6F    .e,a...jmp.outco
020960:  6E 09 09 3B 20 6F 75 74 70 75 74 20 69 74 20 61    n..; output it a
020970:  6E 64 20 72 65 74 75 72 6E 0D 0A 45 4E 44 49 46    nd return..ENDIF
020980:  3B 4E 4F 54 20 28 72 6F 62 69 6E 20 4F 52 20 64    ;NOT (robin OR d
020990:  6D 49 49 20 4F 52 20 76 74 31 30 30 20 4F 52 20    mII OR vt100 OR 
0209A0:  6F 73 69 20 4F 52 20 63 72 74 20 4F 52 20 76 65    osi OR crt OR ve
0209B0:  63 74 6F 72 29 0D 0A 3B 0D 0A 3B 09 63 73 72 70    ctor)..;..;.csrp
0209C0:  6F 73 20 66 6F 72 20 41 4E 53 49 20 74 65 72 6D    os for ANSI term
0209D0:  69 6E 61 6C 73 0D 0A 3B 0D 0A 49 46 20 72 6F 62    inals..;..IF rob
0209E0:  69 6E 20 4F 52 20 64 6D 49 49 20 4F 52 20 76 74    in OR dmII OR vt
0209F0:  31 30 30 0D 0A 63 73 72 70 6F 73 3A 09 70 75 73    100..csrpos:.pus
020A00:  68 09 62 09 09 3B 20 73 61 76 65 20 63 6F 6F 72    h.b..; save coor
020A10:  64 69 6E 61 74 65 73 0D 0A 09 6C 78 69 09 64 2C    dinates...lxi.d,
020A20:  63 75 72 6C 64 6E 09 3B 20 67 65 74 20 63 75 72    curldn.; get cur
020A30:  73 6F 72 20 6C 65 61 64 69 6E 20 73 65 71 75 65    sor leadin seque
020A40:  6E 63 65 0D 0A 09 63 61 6C 6C 09 70 72 74 73 74    nce...call.prtst
020A50:  72 09 09 3B 20 70 72 69 6E 74 20 69 74 0D 0A 09    r..; print it...
020A60:  70 6F 70 09 68 09 09 3B 20 70 65 65 6B 20 61 74    pop.h..; peek at
020A70:  20 63 6F 6F 72 64 69 6E 61 74 65 73 0D 0A 09 70     coordinates...p
020A80:  75 73 68 09 68 09 09 3B 20 20 74 68 65 6E 20 73    ush.h..;  then s
020A90:  61 76 65 20 61 77 61 79 20 61 67 61 69 6E 0D 0A    ave away again..
020AA0:  09 6D 6F 76 09 6C 2C 68 09 09 3B 20 6C 20 3D 20    .mov.l,h..; l = 
020AB0:  72 6F 77 0D 0A 09 6D 76 69 09 68 2C 30 09 09 3B    row...mvi.h,0..;
020AC0:  20 68 6C 20 3D 20 72 6F 77 0D 0A 09 63 61 6C 6C     hl = row...call
020AD0:  09 6E 6F 75 74 09 09 3B 20 6F 75 74 70 75 74 20    .nout..; output 
020AE0:  69 6E 20 64 65 63 69 6D 61 6C 0D 0A 09 6D 76 69    in decimal...mvi
020AF0:  09 65 2C 27 3B 27 09 09 3B 20 66 6F 6C 6C 6F 77    .e,';'..; follow
020B00:  20 73 74 6F 70 20 61 74 20 72 69 67 68 74 0D 0A     stop at right..
020B10:  74 64 3A 09 64 62 09 27 48 27 2D 36 34 2C 27 24    td:.db.'H'-64,'$
020B20:  27 2C 30 2C 30 09 09 3B 43 75 72 73 6F 72 20 6C    ',0,0..;Cursor l
020B30:  65 66 74 2C 20 73 74 6F 70 20 61 74 20 6C 65 66    eft, stop at lef
020B40:  74 0D 0A 74 65 3A 09 64 62 09 27 5A 27 2D 36 34    t..te:.db.'Z'-64
020B50:  2C 30 2C 30 2C 27 24 27 09 09 3B 43 6C 65 61 72    ,0,0,'$'..;Clear
020B60:  20 64 69 73 70 6C 61 79 20 28 32 20 70 61 64 20     display (2 pad 
020B70:  6E 75 6C 6C 73 29 0D 0A 74 66 3A 09 64 62 09 27    nulls)..tf:.db.'
020B80:  24 27 2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E 27    $',0,0,0..;(can'
020B90:  74 29 20 45 6E 74 65 72 20 47 72 61 70 68 69 63    t) Enter Graphic
020BA0:  73 20 6D 6F 64 65 0D 0A 74 67 3A 09 64 62 09 27    s mode..tg:.db.'
020BB0:  24 27 2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E 27    $',0,0,0..;(can'
020BC0:  74 29 20 45 78 69 74 20 47 72 61 70 68 69 63 73    t) Exit Graphics
020BD0:  20 6D 6F 64 65 0D 0A 74 68 3A 09 64 62 09 31 45     mode..th:.db.1E
020BE0:  48 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75 72 73    H,'$',0,0..;Curs
020BF0:  6F 72 20 68 6F 6D 65 0D 0A 74 69 3A 09 64 62 09    or home..ti:.db.
020C00:  65 73 63 2C 27 6A 24 27 2C 30 09 09 3B 52 65 76    esc,'j$',0..;Rev
020C10:  65 72 73 65 20 6C 69 6E 65 66 65 65 64 2C 20 73    erse linefeed, s
020C20:  63 72 6F 6C 6C 0D 0A 74 6A 3A 09 64 62 09 65 73    croll..tj:.db.es
020C30:  63 2C 27 59 24 27 2C 30 09 09 3B 43 6C 65 61 72    c,'Y$',0..;Clear
020C40:  20 74 6F 20 65 6E 64 20 6F 66 20 73 72 65 65 6E     to end of sreen
020C50:  0D 0A 74 6B 3A 09 64 62 09 65 73 63 2C 27 54 24    ..tk:.db.esc,'T$
020C60:  27 2C 30 09 09 3B 43 6C 65 61 72 20 74 6F 20 65    ',0..;Clear to e
020C70:  6E 64 20 6F 66 20 6C 69 6E 65 0D 0A 45 4E 44 49    nd of line..ENDI
020C80:  46 3B 74 76 69 39 32 35 0D 0A 0D 0A 49 46 20 61    F;tvi925....IF a
020C90:  64 6D 33 61 0D 0A 74 74 79 74 79 70 3A 09 64 62    dm3a..ttytyp:.db
020CA0:  09 27 41 44 4D 33 41 24 27 0D 0A 6F 75 74 6C 69    .'ADM3A$'..outli
020CB0:  6E 3A 09 64 62 09 27 5A 27 2D 36 34 2C 30 2C 30    n:.db.'Z'-64,0,0
020CC0:  2C 63 72 2C 6C 66 2C 27 24 27 0D 0A 65 72 61 73    ,cr,lf,'$'..eras
020CD0:  63 72 3A 09 64 62 09 27 5A 27 2D 36 34 2C 30 2C    cr:.db.'Z'-64,0,
020CE0:  30 2C 27 24 27 09 09 3B 43 6C 65 61 72 20 73 63    0,'$'..;Clear sc
020CF0:  72 65 65 6E 20 61 6E 64 20 68 6F 6D 65 0D 0A 65    reen and home..e
020D00:  20 77 69 74 68 20 73 65 6D 69 63 6F 6C 6F 6E 0D     with semicolon.
020D10:  0A 09 63 61 6C 6C 09 6F 75 74 63 6F 6E 09 09 3B    ..call.outcon..;
020D20:  20 70 72 69 6E 74 20 69 74 0D 0A 09 70 6F 70 09     print it...pop.
020D30:  68 09 09 3B 20 72 65 73 74 6F 72 65 20 63 6F 6C    h..; restore col
020D40:  75 6D 6E 0D 0A 09 6D 76 69 09 68 2C 30 09 09 3B    umn...mvi.h,0..;
020D50:  20 68 6C 20 3D 20 63 6F 6C 75 6D 6E 0D 0A 09 63     hl = column...c
020D60:  61 6C 6C 09 6E 6F 75 74 0D 0A 09 6D 76 69 09 65    all.nout...mvi.e
020D70:  2C 27 48 27 09 09 3B 20 74 65 72 6D 69 6E 61 74    ,'H'..; terminat
020D80:  65 20 77 69 74 68 20 27 6D 6F 76 65 20 63 75 72    e with 'move cur
020D90:  73 6F 72 27 20 63 6F 6D 6D 61 6E 64 0D 0A 09 6A    sor' command...j
020DA0:  6D 70 09 6F 75 74 63 6F 6E 09 09 3B 20 6F 75 74    mp.outcon..; out
020DB0:  70 75 74 20 69 74 20 61 6E 64 20 72 65 74 75 72    put it and retur
020DC0:  6E 0D 0A 45 4E 44 49 46 3B 72 6F 62 69 6E 20 4F    n..ENDIF;robin O
020DD0:  52 20 64 6D 49 49 20 4F 52 20 76 74 31 30 30 0D    R dmII OR vt100.
020DE0:  0A 3B 0D 0A 3B 09 63 73 72 70 6F 73 20 66 6F 72    .;..;.csrpos for
020DF0:  20 74 68 65 20 56 65 63 74 6F 72 20 47 65 6E 65     the Vector Gene
020E00:  72 61 6C 2E 20 20 49 74 27 73 20 77 65 69 72 64    ral.  It's weird
020E10:  2E 0D 0A 3B 0D 0A 49 46 20 76 65 63 74 6F 72 0D    ...;..IF vector.
020E20:  0A 63 73 72 70 6F 73 3A 20 64 63 72 09 62 09 09    .csrpos: dcr.b..
020E30:  3B 20 76 65 63 74 6F 72 20 75 73 65 73 20 7A 65    ; vector uses ze
020E40:  72 6F 2D 62 61 73 65 64 20 61 64 64 72 65 73 73    ro-based address
020E50:  69 6E 67 3F 0D 0A 09 64 63 72 09 63 0D 0A 09 70    ing?...dcr.c...p
020E60:  75 73 68 09 62 09 09 3B 20 73 61 76 65 20 63 6F    ush.b..; save co
020E70:  6F 72 64 69 6E 61 74 65 73 0D 0A 09 6D 76 69 09    ordinates...mvi.
020E80:  65 2C 65 73 63 09 09 3B 20 70 72 69 6E 74 20 61    e,esc..; print a
020E90:  6E 20 65 73 63 61 70 65 0D 0A 09 63 61 6C 6C 09    n escape...call.
020EA0:  6F 75 74 63 6F 6E 0D 0A 09 70 6F 70 09 64 09 09    outcon...pop.d..
020EB0:  3B 20 70 65 65 6B 20 61 74 20 63 6F 6F 72 64 69    ; peek at coordi
020EC0:  6E 61 74 65 73 0D 0A 09 70 75 73 68 09 64 0D 0A    nates...push.d..
020ED0:  09 63 61 6C 6C 09 6F 75 74 63 6F 6E 09 09 3B 20    .call.outcon..; 
020EE0:  6F 75 74 70 75 74 20 63 6F 6C 75 6D 6E 0D 0A 09    output column...
020EF0:  70 6F 70 09 64 0D 0A 09 6D 6F 76 09 65 2C 64 09    pop.d...mov.e,d.
020F00:  72 61 6C 69 6E 3A 09 64 62 09 65 73 63 2C 27 59    ralin:.db.esc,'Y
020F10:  24 27 2C 30 09 09 3B 43 6C 65 61 72 20 74 6F 20    $',0..;Clear to 
020F20:  65 6E 64 20 6F 66 20 73 72 65 65 6E 0D 0A 63 75    end of sreen..cu
020F30:  72 6C 64 6E 3A 09 64 62 09 63 72 2C 65 73 63 2C    rldn:.db.cr,esc,
020F40:  27 3D 24 27 09 09 3B 43 75 72 73 6F 72 20 6C 65    '=$'..;Cursor le
020F50:  61 64 2D 69 6E 0D 0A 74 74 61 62 3A 09 3B 54 61    ad-in..ttab:.;Ta
020F60:  62 6C 65 20 73 74 61 72 74 20 6C 6F 63 61 74 69    ble start locati
020F70:  6F 6E 09 09 3B 28 4D 55 53 54 20 62 65 20 34 20    on..;(MUST be 4 
020F80:  62 79 74 65 73 20 65 61 63 68 29 0D 0A 74 61 3A    bytes each)..ta:
020F90:  09 64 62 09 27 4B 27 2D 36 34 2C 27 24 27 2C 30    .db.'K'-64,'$',0
020FA0:  2C 30 09 09 3B 43 75 72 73 6F 72 20 75 70 2C 20    ,0..;Cursor up, 
020FB0:  73 74 6F 70 20 61 74 20 74 6F 70 0D 0A 74 62 3A    stop at top..tb:
020FC0:  09 64 62 09 27 4A 27 2D 36 34 2C 27 24 27 2C 30    .db.'J'-64,'$',0
020FD0:  2C 30 09 09 3B 43 75 72 73 6F 72 20 64 6F 77 6E    ,0..;Cursor down
020FE0:  20 43 54 52 4C 2D 4A 0D 0A 74 63 3A 09 64 62 09     CTRL-J..tc:.db.
020FF0:  27 4C 27 2D 36 34 2C 27 24 27 2C 30 2C 30 09 09    'L'-64,'$',0,0..
021000:  3B 43 75 72 73 6F 72 20 72 69 67 68 74 2C 20 73    ;Cursor right, s
021010:  74 6F 70 20 61 74 20 72 69 67 68 74 0D 0A 74 64    top at right..td
021020:  3A 09 64 62 09 27 48 27 2D 36 34 2C 27 24 27 2C    :.db.'H'-64,'$',
021030:  30 2C 30 09 09 3B 43 75 72 73 6F 72 20 6C 65 66    0,0..;Cursor lef
021040:  74 2C 20 73 74 6F 70 20 61 74 20 6C 65 66 74 0D    t, stop at left.
021050:  0A 74 65 3A 09 64 62 09 27 5A 27 2D 36 34 2C 30    .te:.db.'Z'-64,0
021060:  2C 30 2C 27 24 27 09 09 3B 43 6C 65 61 72 20 64    ,0,'$'..;Clear d
021070:  69 73 70 6C 61 79 20 28 32 20 70 61 64 20 6E 75    isplay (2 pad nu
021080:  6C 6C 73 29 0D 0A 74 66 3A 09 64 62 09 27 24 27    lls)..tf:.db.'$'
021090:  2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74 29    ,0,0,0..;(can't)
0210A0:  20 45 6E 74 65 72 20 47 72 61 70 68 69 63 73 20     Enter Graphics 
0210B0:  6D 6F 64 65 0D 0A 74 67 3A 09 64 62 09 27 24 27    mode..tg:.db.'$'
0210C0:  2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74 29    ,0,0,0..;(can't)
0210D0:  20 45 78 69 74 20 47 72 61 70 68 69 63 73 20 6D     Exit Graphics m
0210E0:  6F 64 65 0D 0A 74 68 3A 09 64 62 09 31 45 48 2C    ode..th:.db.1EH,
0210F0:  27 24 27 2C 30 2C 30 09 09 3B 43 75 72 73 6F 72    '$',0,0..;Cursor
021100:  09 3B 20 67 65 74 20 72 6F 77 0D 0A 09 6A 6D 70    .; get row...jmp
021110:  09 6F 75 74 63 6F 6E 09 09 3B 20 6F 75 74 70 75    .outcon..; outpu
021120:  74 20 61 6E 64 20 72 65 74 75 72 6E 0D 0A 45 4E    t and return..EN
021130:  44 49 46 3B 76 65 63 74 6F 72 0D 0A 49 46 20 6F    DIF;vector..IF o
021140:  73 69 20 4F 52 20 63 72 74 09 09 09 3B 20 73 79    si OR crt...; sy
021150:  73 74 65 6D 73 20 77 69 74 68 6F 75 74 20 63 75    stems without cu
021160:  72 73 6F 72 20 70 6F 73 69 74 69 6F 6E 69 6E 67    rsor positioning
021170:  0D 0A 63 73 72 70 6F 73 3A 09 72 65 74 09 09 09    ..csrpos:.ret...
021180:  3B 20 64 75 6D 6D 79 20 72 6F 75 74 69 6E 65 20    ; dummy routine 
021190:  72 65 66 65 72 65 6E 63 65 64 20 62 79 20 6C 69    referenced by li
0211A0:  6E 6B 61 67 65 20 73 65 63 74 69 6F 6E 0D 0A 45    nkage section..E
0211B0:  4E 44 49 46 3B 6F 73 69 20 4F 52 20 63 72 74 0D    NDIF;osi OR crt.
0211C0:  0A 0D 0A 3B 0D 0A 3B 20 70 6F 73 69 74 69 6F 6E    ...;..; position
0211D0:  20 74 6F 20 76 61 72 69 6F 75 73 20 66 69 65 6C     to various fiel
0211E0:  64 73 3A 0D 0A 3B 20 66 6F 72 20 74 68 65 20 4B    ds:..; for the K
0211F0:  65 72 6D 69 74 73 20 77 69 74 68 20 63 75 72 73    ermits with curs
021200:  6F 72 20 70 6F 73 69 74 69 6F 6E 69 6E 67 2C 20    or positioning, 
021210:  74 68 65 20 64 69 73 70 6C 61 79 20 6C 6F 6F 6B    the display look
021220:  73 20 6C 69 6B 65 20 74 68 69 73 3A 0D 0A 3B 09    s like this:..;.
021230:  20 20 20 20 35 20 20 20 31 30 20 20 20 31 35 20        5   10   15 
021240:  20 20 32 30 20 20 20 32 35 20 20 20 33 30 20 20      20   25   30  
021250:  20 33 35 0D 0A 3B 20 20 20 20 20 20 2B 2D 2D 2D     35..;      +---
021260:  2D 7C 2D 2D 2D 2D 7C 2D 2D 2D 2D 7C 2D 2D 2D 2D    -|----|----|----
021270:  7C 2D 2D 2D 2D 7C 2D 2D 2D 2D 7C 2D 2D 2D 2D 7C    |----|----|----|
021280:  2E 2E 2E 0D 0A 3B 20 20 20 20 31 20 7C 0D 0A 3B    .....;    1 |..;
021290:  20 20 20 20 32 20 7C 09 09 4B 65 72 6D 69 74 2D        2 |..Kermit-
0212A0:  38 30 20 76 34 2E 30 20 5B 73 79 73 74 65 6D 5D    80 v4.0 [system]
0212B0:  0D 0A 3B 20 20 20 20 33 20 7C 0D 0A 3B 20 20 20    ..;    3 |..;   
0212C0:  20 34 20 7C 4E 75 6D 62 65 72 20 6F 66 20 70 61     4 |Number of pa
0212D0:  63 6B 65 74 73 3A 20 5F 5F 5F 5F 0D 0A 3B 20 20    ckets: ____..;  
0212E0:  20 20 35 20 7C 4E 75 6D 62 65 72 20 6F 66 20 72      5 |Number of r
0212F0:  65 74 72 69 65 73 3A 20 5F 5F 5F 5F 0D 0A 3B 20    etries: ____..; 
021300:  20 68 6F 6D 65 0D 0A 74 69 3A 09 64 62 09 27 4B     home..ti:.db.'K
021310:  27 2D 36 34 2C 27 24 27 2C 30 2C 30 09 09 3B 52    '-64,'$',0,0..;R
021320:  65 76 65 72 73 65 20 6C 69 6E 65 66 65 65 64 0D    everse linefeed.
021330:  0A 74 6A 3A 09 64 62 09 27 24 27 2C 30 2C 30 2C    .tj:.db.'$',0,0,
021340:  30 09 09 3B 28 63 61 6E 27 74 29 20 43 6C 65 61    0..;(can't) Clea
021350:  72 20 74 6F 20 65 6E 64 20 6F 66 20 73 63 72 65    r to end of scre
021360:  65 6E 0D 0A 74 6B 3A 09 64 62 09 27 24 27 2C 30    en..tk:.db.'$',0
021370:  2C 30 2C 30 09 09 3B 28 63 61 6E 27 74 29 20 43    ,0,0..;(can't) C
021380:  6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66 20 6C    lear to end of l
021390:  69 6E 65 0D 0A 45 4E 44 49 46 3B 61 64 6D 33 61    ine..ENDIF;adm3a
0213A0:  0D 0A 0D 0A 49 46 20 64 65 6C 70 68 69 09 3B 20    ....IF delphi.; 
0213B0:  5B 37 5D 20 6E 65 77 20 73 79 73 74 65 6D 0D 0A    [7] new system..
0213C0:  73 79 73 76 65 72 3A 09 64 62 09 27 44 69 67 69    sysver:.db.'Digi
0213D0:  63 6F 6D 70 20 44 65 6C 70 68 69 20 31 30 30 24    comp Delphi 100$
0213E0:  27 0D 0A 65 6E 64 69 66 3B 64 65 6C 70 68 69 0D    '..endif;delphi.
0213F0:  0A 0D 0A 49 46 20 73 6D 72 74 76 64 09 3B 20 5B    ...IF smrtvd.; [
021400:  37 5D 20 6E 65 77 20 74 65 72 6D 69 6E 61 6C 0D    7] new terminal.
021410:  0A 74 74 79 74 79 70 3A 09 64 62 09 27 53 6D 61    .ttytyp:.db.'Sma
021420:  72 74 76 69 64 2D 38 30 24 27 0D 0A 6F 75 74 6C    rtvid-80$'..outl
021430:  69 6E 3A 09 64 62 09 65 73 63 2C 27 2B 27 2C 63    in:.db.esc,'+',c
021440:  72 2C 6C 66 2C 74 61 62 2C 74 61 62 2C 27 24 27    r,lf,tab,tab,'$'
021450:  0D 0A 65 72 61 6C 69 6E 3A 09 64 62 09 63 72 2C    ..eralin:.db.cr,
021460:  65 73 63 2C 27 54 24 27 09 09 09 3B 43 6C 65 61    esc,'T$'...;Clea
021470:  72 20 74 6F 20 65 6E 64 20 6F 66 20 6C 69 6E 65    r to end of line
021480:  2E 0D 0A 65 72 61 73 63 72 3A 09 64 62 09 65 73    ...erascr:.db.es
021490:  63 2C 27 2B 24 27 09 09 20 09 3B 43 6C 65 61 72    c,'+$'.. .;Clear
0214A0:  20 73 63 72 65 65 6E 20 61 6E 64 20 67 6F 20 68     screen and go h
0214B0:  6F 6D 65 2E 0D 0A 63 75 72 6C 64 6E 3A 09 64 62    ome...curldn:.db
0214C0:  09 65 73 63 2C 27 3D 24 27 09 09 09 3B 43 75 72    .esc,'=$'...;Cur
0214D0:  73 6F 72 20 6C 65 61 64 2D 69 6E 0D 0A 74 74 61    sor lead-in..tta
0214E0:  62 3A 09 09 09 09 09 3B 54 61 62 6C 65 20 73 74    b:.....;Table st
0214F0:  61 72 74 20 6C 6F 63 61 74 69 6F 6E 2E 0D 0A 74    art location...t
021500:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
021510:  1C 00 00 00 02 09 4E E5 1C 00 C1 02 00 00 00 02    ......N.........
021520:  1C 00 C6 02 00 00 00 02 1C 00 C2 02 00 00 00 02    ................
021530:  1C 00 C7 02 00 00 00 02 1C 00 C3 02 00 00 00 02    ................
021540:  1C 00 C8 02 00 00 00 02 1C 00 C4 02 00 00 00 02    ................
021550:  1C 00 C9 02 00 00 00 02 1C 00 C5 02 00 00 00 02    ................
021560:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021570:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021580:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021590:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021600:  20 20 20 36 20 7C 46 69 6C 65 20 6E 61 6D 65 3A       6 |File name:
021610:  20 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 3B     ____________..;
021620:  20 20 20 20 37 20 7C 3C 65 72 72 6F 72 3E 2E 2E        7 |<error>..
021630:  2E 0D 0A 3B 20 20 20 20 38 20 7C 3C 73 74 61 74    ...;    8 |<stat
021640:  75 73 3E 2E 2E 2E 0D 0A 3B 20 20 20 20 39 20 7C    us>.....;    9 |
021650:  52 50 61 63 6B 3A 20 5F 5F 5F 28 69 66 20 64 65    RPack: ___(if de
021660:  62 75 67 67 69 6E 67 29 2E 2E 2E 0D 0A 3B 20 20    bugging).....;  
021670:  20 31 30 20 7C 0D 0A 3B 20 20 20 31 31 20 7C 53     10 |..;   11 |S
021680:  50 61 63 6B 3A 20 5F 5F 5F 28 69 66 20 64 65 62    Pack: ___(if deb
021690:  75 67 67 69 6E 67 29 2E 2E 2E 0D 0A 3B 20 20 20    ugging).....;   
0216A0:  31 32 20 7C 0D 0A 3B 20 20 20 31 33 20 7C 4B 65    12 |..;   13 |Ke
0216B0:  72 6D 69 74 2D 38 30 20 20 41 3A 3E 09 28 77 68    rmit-80  A:>.(wh
0216C0:  65 6E 20 66 69 6E 69 73 68 65 64 29 0D 0A 3B 0D    en finished)..;.
0216D0:  0A 0D 0A 49 46 20 4E 4F 54 20 28 6F 73 69 20 4F    ...IF NOT (osi O
0216E0:  52 20 63 72 74 29 0D 0A 73 63 72 6E 70 3A 09 6C    R crt)..scrnp:.l
0216F0:  78 69 09 62 2C 34 2A 31 30 30 48 2B 32 30 0D 0A    xi.b,4*100H+20..
021700:  09 6A 6D 70 09 63 73 72 70 6F 73 0D 0A 0D 0A 73    .jmp.csrpos....s
021710:  63 72 6E 72 74 3A 09 6C 78 69 09 62 2C 35 2A 31    crnrt:.lxi.b,5*1
021720:  30 30 48 2B 32 30 0D 0A 09 6A 6D 70 09 63 73 72    00H+20...jmp.csr
021730:  70 6F 73 0D 0A 0D 0A 73 63 72 66 6C 6E 3A 09 6C    pos....scrfln:.l
021740:  78 69 09 62 2C 36 2A 31 30 30 48 2B 31 32 0D 0A    xi.b,6*100H+12..
021750:  09 63 61 6C 6C 09 63 73 72 70 6F 73 0D 0A 63 6C    .call.csrpos..cl
021760:  72 65 6F 6C 3A 09 6C 78 69 09 64 2C 74 6B 0D 0A    reol:.lxi.d,tk..
021770:  09 6A 6D 70 09 70 72 74 73 74 72 0D 0A 0D 0A 73    .jmp.prtstr....s
021780:  63 72 65 72 72 3A 09 6C 78 69 09 62 2C 37 2A 31    crerr:.lxi.b,7*1
021790:  30 30 48 2B 31 0D 0A 09 63 61 6C 6C 09 63 73 72    00H+1...call.csr
0217A0:  70 6F 73 0D 0A 09 6A 6D 70 09 63 6C 72 65 6F 6C    pos...jmp.clreol
0217B0:  0D 0A 0D 0A 73 63 72 73 74 3A 09 6C 78 69 09 62    ....scrst:.lxi.b
0217C0:  2C 38 2A 31 30 30 48 2B 31 0D 0A 09 63 61 6C 6C    ,8*100H+1...call
0217D0:  09 63 73 72 70 6F 73 0D 0A 09 6A 6D 70 09 63 6C    .csrpos...jmp.cl
0217E0:  72 65 6F 6C 0D 0A 0D 0A 72 70 70 6F 73 3A 09 6C    reol....rppos:.l
0217F0:  78 69 09 62 2C 39 2A 31 30 30 48 2B 38 0D 0A 09    xi.b,9*100H+8...
021800:  61 64 6D 33 61 20 4F 52 20 74 76 69 39 32 35 20    adm3a OR tvi925 
021810:  4F 52 20 76 74 35 32 20 4F 52 20 76 74 31 30 30    OR vt52 OR vt100
021820:  20 4F 52 20 73 6D 72 74 76 64 09 09 3B 20 5B 37     OR smrtvd..; [7
021830:  5D 0D 0A 77 69 74 6D 73 67 3A 09 64 62 09 27 20    ]..witmsg:.db.' 
021840:  77 69 74 68 20 24 27 0D 0A 45 4E 44 49 46 3B 61    with $'..ENDIF;a
021850:  64 6D 33 61 20 4F 52 20 74 76 69 39 32 35 20 4F    dm3a OR tvi925 O
021860:  52 20 76 74 35 32 20 4F 52 20 76 74 31 30 30 20    R vt52 OR vt100 
021870:  4F 52 20 73 6D 72 74 76 64 09 3B 20 5B 37 5D 0D    OR smrtvd.; [7].
021880:  0A 0D 0A 3B 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A    ...;************
021890:  2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 54 65    **************Te
0218A0:  72 6D 69 6E 61 6C 20 74 61 62 6C 65 73 2A 2A 2A    rminal tables***
0218B0:  2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A    ****************
0218C0:  2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 0A 49 46 20 4E 4F    *********..IF NO
0218D0:  54 20 28 6F 73 69 20 4F 52 20 63 72 74 29 09 3B    T (osi OR crt).;
0218E0:  20 67 6F 74 20 63 75 72 73 6F 72 20 63 6F 6E 74     got cursor cont
0218F0:  72 6F 6C 3F 0D 0A 6F 75 74 6C 6E 32 3A 09 64 62    rol?..outln2:.db
021900:  09 27 5D 27 2C 63 72 2C 6C 66 2C 63 72 2C 6C 66    .']',cr,lf,cr,lf
021910:  2C 27 4E 75 6D 62 65 72 20 6F 66 20 70 61 63 6B    ,'Number of pack
021920:  65 74 73 3A 27 0D 0A 09 64 62 09 63 72 2C 6C 66    ets:'...db.cr,lf
021930:  2C 27 4E 75 6D 62 65 72 20 6F 66 20 72 65 74 72    ,'Number of retr
021940:  69 65 73 3A 27 0D 0A 09 64 62 09 63 72 2C 6C 66    ies:'...db.cr,lf
021950:  2C 27 46 69 6C 65 20 6E 61 6D 65 3A 24 27 0D 0A    ,'File name:$'..
021960:  6F 75 74 6C 6E 33 3A 09 64 62 09 63 72 2C 6C 66    outln3:.db.cr,lf
021970:  2C 63 72 2C 6C 66 09 09 3B 20 64 65 62 75 67 67    ,cr,lf..; debugg
021980:  69 6E 67 20 6D 65 73 73 61 67 65 73 0D 0A 09 64    ing messages...d
021990:  62 09 63 72 2C 6C 66 2C 27 52 50 61 63 6B 3A 27    b.cr,lf,'RPack:'
0219A0:  0D 0A 09 64 62 09 63 72 2C 6C 66 09 09 09 3B 20    ...db.cr,lf...; 
0219B0:  62 6C 61 6E 6B 20 6C 69 6E 65 20 69 6E 20 63 61    blank line in ca
0219C0:  73 65 20 6F 66 20 6C 6F 6E 67 20 70 61 63 6B 65    se of long packe
0219D0:  74 0D 0A 09 64 62 09 63 72 2C 6C 66 2C 27 53 50    t...db.cr,lf,'SP
0219E0:  61 63 6B 3A 24 27 0D 0A 45 4E 44 49 46 3B 4E 4F    ack:$'..ENDIF;NO
0219F0:  54 20 28 6F 73 69 20 4F 52 20 63 72 74 29 0D 0A    T (osi OR crt)..
021A00:  63 61 6C 6C 09 63 73 72 70 6F 73 0D 0A 09 6A 6D    call.csrpos...jm
021A10:  70 09 63 6C 72 65 6F 6C 0D 0A 0D 0A 73 70 70 6F    p.clreol....sppo
021A20:  73 3A 09 6C 78 69 09 62 2C 31 31 2A 31 30 30 48    s:.lxi.b,11*100H
021A30:  2B 38 0D 0A 09 63 61 6C 6C 09 63 73 72 70 6F 73    +8...call.csrpos
021A40:  0D 0A 09 6A 6D 70 09 63 6C 72 65 6F 6C 0D 0A 0D    ...jmp.clreol...
021A50:  0A 73 63 72 65 6E 64 3A 09 6C 78 69 09 62 2C 31    .scrend:.lxi.b,1
021A60:  33 2A 31 30 30 48 2B 31 0D 0A 09 63 61 6C 6C 09    3*100H+1...call.
021A70:  63 73 72 70 6F 73 0D 0A 63 6C 72 65 6F 73 3A 09    csrpos..clreos:.
021A80:  6C 78 69 09 64 2C 74 6A 0D 0A 09 6A 6D 70 09 70    lxi.d,tj...jmp.p
021A90:  72 74 73 74 72 0D 0A 45 4E 44 49 46 3B 4E 4F 54    rtstr..ENDIF;NOT
021AA0:  20 28 6F 73 69 20 4F 52 20 63 72 74 29 0D 0A 0D     (osi OR crt)...
021AB0:  0A 49 46 20 6F 73 69 20 4F 52 20 63 72 74 09 3B    .IF osi OR crt.;
021AC0:  20 6E 6F 20 63 75 72 73 6F 72 20 63 6F 6E 74 72     no cursor contr
021AD0:  6F 6C 0D 0A 73 63 72 6E 70 3A 09 6D 76 69 09 65    ol..scrnp:.mvi.e
021AE0:  2C 27 20 27 0D 0A 09 6A 6D 70 09 6F 75 74 63 6F    ,' '...jmp.outco
021AF0:  6E 0D 0A 0D 0A 73 63 72 6E 72 74 3A 09 6D 76 69    n....scrnrt:.mvi
021B00:  09 65 2C 27 20 27 0D 0A 09 63 61 6C 6C 09 6F 75    .e,' '...call.ou
021B10:  74 63 6F 6E 0D 0A 09 6D 76 69 09 65 2C 27 25 27    tcon...mvi.e,'%'
021B20:  0D 0A 09 6A 6D 70 09 6F 75 74 63 6F 6E 0D 0A 0D    ...jmp.outcon...
021B30:  0A 73 63 72 66 6C 6E 3A 0D 0A 73 63 72 65 72 72    .scrfln:..screrr
021B40:  3A 0D 0A 73 63 72 73 74 3A 0D 0A 73 63 72 65 6E    :..scrst:..scren
021B50:  64 3A 09 6A 6D 70 09 70 72 63 72 6C 66 09 09 3B    d:.jmp.prcrlf..;
021B60:  50 72 69 6E 74 20 43 52 2F 4C 46 09 5B 54 6F 61    Print CR/LF.[Toa
021B70:  64 20 48 61 6C 6C 5D 0D 0A 0D 0A 72 70 70 6F 73    d Hall]....rppos
021B80:  3A 09 6C 78 69 09 64 2C 70 72 70 61 63 6B 0D 0A    :.lxi.d,prpack..
021B90:  09 6A 6D 70 09 70 72 74 73 74 72 0D 0A 0D 0A 73    .jmp.prtstr....s
021BA0:  70 70 6F 73 3A 09 6C 78 69 09 64 2C 70 73 70 61    ppos:.lxi.d,pspa
021BB0:  63 6B 0D 0A 09 6A 6D 70 09 70 72 74 73 74 72 0D    ck...jmp.prtstr.
021BC0:  0A 45 4E 44 49 46 3B 6F 73 69 20 4F 52 20 63 72    .ENDIF;osi OR cr
021BD0:  74 0D 0A 0D 0A 3B 0D 0A 3B 20 64 65 6C 63 68 72    t....;..; delchr
021BE0:  20 2D 20 6D 61 6B 65 20 64 65 6C 65 74 65 20 6C     - make delete l
021BF0:  6F 6F 6B 20 6C 69 6B 65 20 61 20 62 61 63 6B 73    ook like a backs
021C00:  0D 0A 49 46 20 6C 6F 62 6F 09 3B 5B 68 68 5D 0D    ..IF lobo.;[hh].
021C10:  0A 73 79 73 76 65 72 3A 09 64 62 09 27 4C 6F 62    .sysver:.db.'Lob
021C20:  6F 20 4D 41 58 2D 38 30 24 27 0D 0A 6F 75 74 6C    o MAX-80$'..outl
021C30:  69 6E 3A 09 64 62 09 65 73 63 2C 27 2A 27 2C 63    in:.db.esc,'*',c
021C40:  72 2C 6C 66 2C 74 61 62 2C 74 61 62 2C 27 24 27    r,lf,tab,tab,'$'
021C50:  0D 0A 65 72 61 73 63 72 3A 09 64 62 09 65 73 63    ..erascr:.db.esc
021C60:  2C 27 2A 24 27 09 09 3B 5B 68 68 5D 20 63 6C 65    ,'*$'..;[hh] cle
021C70:  61 72 20 73 63 72 65 65 6E 20 61 6E 64 20 68 6F    ar screen and ho
021C80:  6D 65 20 63 75 72 73 6F 72 0D 0A 65 72 61 6C 69    me cursor..erali
021C90:  6E 3A 09 64 62 09 63 72 2C 65 73 63 2C 27 52 24    n:.db.cr,esc,'R$
021CA0:  27 09 09 3B 5B 68 68 5D 20 63 6C 65 61 72 20 6C    '..;[hh] clear l
021CB0:  69 6E 65 0D 0A 63 75 72 6C 64 6E 3A 09 64 62 09    ine..curldn:.db.
021CC0:  65 73 63 2C 27 3D 24 27 09 09 3B 5B 68 68 5D 20    esc,'=$'..;[hh] 
021CD0:  63 75 72 73 6F 72 20 6C 65 61 64 2D 69 6E 20 73    cursor lead-in s
021CE0:  74 72 69 6E 67 0D 0A 64 65 6C 73 74 72 3A 09 64    tring..delstr:.d
021CF0:  62 09 62 73 2C 27 20 27 2C 62 73 2C 62 73 2C 27    b.bs,' ',bs,bs,'
021D00:  24 27 09 3B 5B 68 68 5D 20 3F 3F 61 64 6A 75 73    $'.;[hh] ??adjus
021D10:  74 20 66 6F 72 20 65 63 68 6F 69 6E 67 20 64 65    t for echoing de
021D20:  6C 65 74 65 0D 0A 74 74 61 62 3A 09 09 09 09 09    lete..ttab:.....
021D30:  3B 5B 68 68 5D 20 74 61 62 6C 65 20 73 74 61 72    ;[hh] table star
021D40:  74 20 6C 6F 63 61 74 69 6F 6E 0D 0A 74 61 3A 09    t location..ta:.
021D50:  64 62 09 30 42 48 2C 27 24 27 2C 30 2C 30 09 09    db.0BH,'$',0,0..
021D60:  3B 5B 68 68 5D 20 63 75 72 73 6F 72 20 75 70 0D    ;[hh] cursor up.
021D70:  0A 74 62 3A 09 64 62 09 30 41 48 2C 27 24 27 2C    .tb:.db.0AH,'$',
021D80:  30 2C 30 09 09 3B 5B 68 68 5D 20 63 75 72 73 6F    0,0..;[hh] curso
021D90:  72 20 64 6F 77 6E 0D 0A 74 63 3A 09 64 62 09 30    r down..tc:.db.0
021DA0:  43 48 2C 27 24 27 2C 30 2C 30 09 09 3B 5B 68 68    CH,'$',0,0..;[hh
021DB0:  5D 20 63 75 72 73 6F 72 20 72 69 67 68 74 0D 0A    ] cursor right..
021DC0:  74 64 3A 09 64 62 09 30 38 48 2C 27 24 27 2C 30    td:.db.08H,'$',0
021DD0:  2C 30 09 09 3B 5B 68 68 5D 20 63 75 72 73 6F 72    ,0..;[hh] cursor
021DE0:  20 6C 65 66 74 0D 0A 74 65 3A 09 64 62 09 65 73     left..te:.db.es
021DF0:  63 2C 27 2A 24 27 2C 30 09 09 3B 5B 68 68 5D 20    c,'*$',0..;[hh] 
021E00:  70 61 63 65 2E 20 20 55 6E 6C 65 73 73 20 64 65    pace.  Unless de
021E10:  6C 65 74 65 20 69 73 20 61 20 70 72 69 6E 74 69    lete is a printi
021E20:  6E 67 0D 0A 3B 09 63 68 61 72 61 63 74 65 72 2C    ng..;.character,
021E30:  20 77 65 20 6A 75 73 74 20 6E 65 65 64 20 74 6F     we just need to
021E40:  20 70 72 69 6E 74 20 61 20 62 61 63 6B 73 70 61     print a backspa
021E50:  63 65 2E 20 28 77 65 27 6C 6C 20 6F 75 74 70 75    ce. (we'll outpu
021E60:  74 20 63 6C 72 73 70 63 0D 0A 3B 09 61 66 74 65    t clrspc..;.afte
021E70:  72 77 61 72 64 73 29 0D 0A 3B 09 46 6F 72 20 4B    rwards)..;.For K
021E80:  61 79 70 72 6F 20 61 6E 64 20 56 65 63 74 6F 72    aypro and Vector
021E90:  20 47 65 6E 65 72 61 6C 2C 20 64 65 6C 65 74 65     General, delete
021EA0:  20 70 75 74 73 20 61 20 62 6C 6F 74 63 68 20 6F     puts a blotch o
021EB0:  6E 20 74 68 65 20 73 63 72 65 65 6E 2E 0D 0A 3B    n the screen...;
021EC0:  09 46 6F 72 20 41 70 70 6C 65 20 61 6E 64 20 4F    .For Apple and O
021ED0:  73 62 6F 72 6E 65 20 31 2C 20 64 65 6C 65 74 65    sborne 1, delete
021EE0:  20 6D 6F 76 65 73 20 62 75 74 20 64 6F 65 73 6E     moves but doesn
021EF0:  27 74 20 70 72 69 6E 74 2E 0D 0A 64 65 6C 63 68    't print...delch
021F00:  72 3A 0D 0A 49 46 20 62 62 49 20 4F 52 20 76 65    r:..IF bbI OR ve
021F10:  63 74 6F 72 20 4F 52 20 61 70 70 6C 65 20 4F 52    ctor OR apple OR
021F20:  20 6F 73 62 72 6E 31 20 4F 52 20 6C 6F 62 6F 0D     osbrn1 OR lobo.
021F30:  0A 09 6C 78 69 09 64 2C 64 65 6C 73 74 72 0D 0A    ..lxi.d,delstr..
021F40:  09 6A 6D 70 09 70 72 74 73 74 72 0D 0A 45 4E 44    .jmp.prtstr..END
021F50:  49 46 3B 62 62 49 20 4F 52 20 76 65 63 74 6F 72    IF;bbI OR vector
021F60:  20 4F 52 20 61 70 70 6C 65 20 4F 52 20 6F 73 62     OR apple OR osb
021F70:  72 6E 31 20 4F 52 20 6C 6F 62 6F 0D 0A 49 46 20    rn1 OR lobo..IF 
021F80:  4E 4F 54 20 28 62 62 49 20 4F 52 20 76 65 63 74    NOT (bbI OR vect
021F90:  6F 72 20 4F 52 20 61 70 70 6C 65 20 4F 52 20 6F    or OR apple OR o
021FA0:  73 62 72 6E 31 29 0D 0A 09 6D 76 69 09 65 2C 62    sbrn1)...mvi.e,b
021FB0:  73 09 09 3B 67 65 74 20 61 20 62 61 63 6B 73 70    s..;get a backsp
021FC0:  61 63 65 0D 0A 09 6A 6D 70 09 6F 75 74 63 6F 6E    ace...jmp.outcon
021FD0:  0D 0A 45 4E 44 49 46 3B 4E 4F 54 20 28 62 62 49    ..ENDIF;NOT (bbI
021FE0:  20 4F 52 20 76 65 63 74 6F 72 20 4F 52 20 61 70     OR vector OR ap
021FF0:  70 6C 65 20 4F 52 20 6F 73 62 72 6E 31 29 0D 0A    ple OR osbrn1)..
022000:  63 6C 65 61 72 20 64 69 73 70 6C 61 79 20 28 68    clear display (h
022010:  6F 6D 65 73 20 63 75 72 73 6F 72 29 0D 0A 74 66    omes cursor)..tf
022020:  3A 09 64 62 09 27 24 27 2C 30 2C 30 2C 30 09 09    :.db.'$',0,0,0..
022030:  3B 5B 68 68 5D 20 28 63 61 6E 27 74 29 20 65 6E    ;[hh] (can't) en
022040:  74 65 72 20 67 72 61 70 68 69 63 73 20 6D 6F 64    ter graphics mod
022050:  65 0D 0A 74 67 3A 09 64 62 09 27 24 27 2C 30 2C    e..tg:.db.'$',0,
022060:  30 2C 30 09 09 3B 5B 68 68 5D 20 28 63 61 6E 27    0,0..;[hh] (can'
022070:  74 29 20 65 78 69 74 20 67 72 61 70 68 69 63 73    t) exit graphics
022080:  20 6D 6F 64 65 0D 0A 74 68 3A 09 64 62 09 30 31     mode..th:.db.01
022090:  45 48 2C 27 24 27 2C 30 2C 30 09 09 3B 5B 68 68    EH,'$',0,0..;[hh
0220A0:  5D 20 68 6F 6D 65 20 63 75 72 73 6F 72 0D 0A 74    ] home cursor..t
0220B0:  69 3A 09 64 62 09 65 73 63 2C 27 45 24 27 2C 30    i:.db.esc,'E$',0
0220C0:  09 09 3B 5B 68 68 5D 20 72 65 76 65 72 73 65 20    ..;[hh] reverse 
0220D0:  6C 69 6E 65 66 65 65 64 20 28 69 6E 73 65 72 74    linefeed (insert
0220E0:  20 6C 69 6E 65 29 0D 0A 74 6A 3A 09 64 62 09 65     line)..tj:.db.e
0220F0:  73 63 2C 27 59 24 27 2C 30 09 09 3B 5B 68 68 5D    sc,'Y$',0..;[hh]
022100:  20 63 6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66     clear to end of
022110:  20 73 63 72 65 65 6E 0D 0A 74 6B 3A 09 64 62 09     screen..tk:.db.
022120:  65 73 63 2C 27 54 24 27 2C 30 09 09 3B 5B 68 68    esc,'T$',0..;[hh
022130:  5D 20 63 6C 65 61 72 20 74 6F 20 65 6E 64 20 6F    ] clear to end o
022140:  66 20 6C 69 6E 65 0D 0A 45 4E 44 49 46 09 3B 6C    f line..ENDIF.;l
022150:  6F 62 6F 0D 0A 0D 0A 3B 0C 0D 0A 49 46 20 62 72    obo....;...IF br
022160:  61 69 6E 0D 0A 73 79 73 76 65 72 3A 09 64 62 09    ain..sysver:.db.
022170:  27 49 6E 74 65 72 74 65 63 20 53 75 70 65 72 42    'Intertec SuperB
022180:  72 61 69 6E 24 27 0D 0A 6F 75 74 6C 69 6E 3A 09    rain$'..outlin:.
022190:  64 62 09 28 27 41 27 2D 31 30 30 4F 29 2C 65 73    db.('A'-100O),es
0221A0:  63 2C 27 7E 6B 27 2C 63 72 2C 6C 66 2C 74 61 62    c,'~k',cr,lf,tab
0221B0:  2C 74 61 62 2C 27 24 27 0D 0A 65 72 61 73 63 72    ,tab,'$'..erascr
0221C0:  3A 09 64 62 09 28 27 41 27 2D 31 30 30 4F 29 2C    :.db.('A'-100O),
0221D0:  65 73 63 2C 27 7E 6B 24 27 20 09 3B 43 6C 65 61    esc,'~k$' .;Clea
0221E0:  72 20 73 63 72 65 65 6E 20 61 6E 64 20 67 6F 20    r screen and go 
0221F0:  68 6F 6D 65 2E 0D 0A 65 72 61 6C 69 6E 3A 09 64    home...eralin:.d
022200:  0D 0A 3B 20 65 72 61 73 65 20 74 68 65 20 63 68    ..; erase the ch
022210:  61 72 61 63 74 65 72 20 61 74 20 74 68 65 20 63    aracter at the c
022220:  75 72 72 65 6E 74 20 63 75 72 73 6F 72 20 70 6F    urrent cursor po
022230:  73 69 74 69 6F 6E 0D 0A 63 6C 72 73 70 63 3A 09    sition..clrspc:.
022240:  6D 76 69 09 65 2C 27 20 27 0D 0A 09 63 61 6C 6C    mvi.e,' '...call
022250:  09 6F 75 74 63 6F 6E 0D 0A 09 6D 76 69 09 65 2C    .outcon...mvi.e,
022260:  62 73 09 09 3B 67 65 74 20 61 20 62 61 63 6B 73    bs..;get a backs
022270:  70 61 63 65 0D 0A 09 6A 6D 70 09 6F 75 74 63 6F    pace...jmp.outco
022280:  6E 0D 0A 0D 0A 3B 20 65 72 61 73 65 20 74 68 65    n....; erase the
022290:  20 63 75 72 72 65 6E 74 20 6C 69 6E 65 0D 0A 63     current line..c
0222A0:  6C 72 6C 69 6E 3A 09 6C 78 69 09 64 2C 65 72 61    lrlin:.lxi.d,era
0222B0:  6C 69 6E 0D 0A 09 6A 6D 70 09 70 72 74 73 74 72    lin...jmp.prtstr
0222C0:  0D 0A 0D 0A 3B 20 65 72 61 73 65 20 74 68 65 20    ....; erase the 
0222D0:  77 68 6F 6C 65 20 73 63 72 65 65 6E 2C 20 61 6E    whole screen, an
0222E0:  64 20 67 6F 20 68 6F 6D 65 2E 20 70 72 65 73 65    d go home. prese
0222F0:  72 76 65 73 20 62 20 28 62 75 74 20 6E 6F 74 20    rves b (but not 
022300:  63 29 0D 0A 63 6C 72 74 6F 70 3A 09 6C 78 69 09    c)..clrtop:.lxi.
022310:  64 2C 65 72 61 73 63 72 0D 0A 09 6A 6D 70 09 70    d,erascr...jmp.p
022320:  72 74 73 74 72 0D 0A 0D 0A 3B 20 53 6F 6D 65 20    rtstr....; Some 
022330:  66 72 65 71 75 65 6E 74 6C 79 2D 75 73 65 64 20    frequently-used 
022340:  72 6F 75 74 69 6E 65 73 20 28 64 75 70 6C 69 63    routines (duplic
022350:  61 74 65 73 20 6F 66 20 74 68 6F 73 65 20 69 6E    ates of those in
022360:  20 43 50 34 4D 49 54 29 3A 0D 0A 3B 09 70 72 63     CP4MIT):..;.prc
022370:  72 6C 66 20 2D 20 6F 75 74 70 75 74 20 61 20 43    rlf - output a C
022380:  52 2F 4C 46 0D 0A 3B 09 70 72 74 73 74 72 20 2D    R/LF..;.prtstr -
022390:  20 6F 75 74 70 75 74 20 73 74 72 69 6E 67 20 69     output string i
0223A0:  6E 20 44 45 0D 0A 3B 09 72 73 6B 70 20 2D 20 72    n DE..;.rskp - r
0223B0:  65 74 75 72 6E 2C 20 73 6B 69 70 70 69 6E 67 20    eturn, skipping 
0223C0:  6F 76 65 72 20 65 72 72 6F 72 20 72 65 74 75 72    over error retur
0223D0:  6E 0D 0A 70 72 63 72 6C 66 3A 09 6C 78 69 09 64    n..prcrlf:.lxi.d
0223E0:  2C 63 72 6C 66 0D 0A 70 72 74 73 74 72 3A 09 6D    ,crlf..prtstr:.m
0223F0:  76 69 09 63 2C 70 72 73 74 72 0D 0A 09 6A 6D 70    vi.c,prstr...jmp
022400:  62 09 63 72 2C 65 73 63 2C 27 7E 4B 24 27 09 09    b.cr,esc,'~K$'..
022410:  3B 43 6C 65 61 72 20 6C 69 6E 65 2E 0D 0A 63 75    ;Clear line...cu
022420:  72 6C 64 6E 3A 09 64 62 09 65 73 63 2C 27 59 24    rldn:.db.esc,'Y$
022430:  27 09 09 3B 20 6C 65 61 64 69 6E 20 66 6F 72 20    '..; leadin for 
022440:  63 75 72 73 6F 72 20 70 6F 73 69 74 69 6F 6E 69    cursor positioni
022450:  6E 67 0D 0A 74 74 61 62 3A 09 09 09 09 09 3B 54    ng..ttab:.....;T
022460:  61 62 6C 65 20 73 74 61 72 74 20 6C 6F 63 61 74    able start locat
022470:  69 6F 6E 2E 0D 0A 74 61 3A 09 64 62 09 28 27 4B    ion...ta:.db.('K
022480:  27 2D 31 30 30 4F 29 2C 27 24 27 2C 30 2C 30 09    '-100O),'$',0,0.
022490:  3B 43 75 72 73 6F 72 20 75 70 2E 0D 0A 74 62 3A    ;Cursor up...tb:
0224A0:  09 64 62 09 31 32 4F 2C 27 24 27 2C 30 2C 30 09    .db.12O,'$',0,0.
0224B0:  09 3B 43 75 72 73 6F 72 20 64 6F 77 6E 2E 0D 0A    .;Cursor down...
0224C0:  74 63 3A 09 64 62 09 28 27 46 27 2D 31 30 30 4F    tc:.db.('F'-100O
0224D0:  29 2C 27 24 27 2C 30 2C 30 09 3B 43 75 72 73 6F    ),'$',0,0.;Curso
0224E0:  72 20 72 69 67 68 74 2E 0D 0A 74 64 3A 09 64 62    r right...td:.db
0224F0:  09 27 24 27 2C 30 2C 30 2C 30 09 09 3B 28 63 61    .'$',0,0,0..;(ca
022500:  6E 27 74 29 20 43 75 72 73 6F 72 20 6C 65 66 74    n't) Cursor left
022510:  0D 0A 74 65 3A 09 64 62 09 27 24 27 2C 30 2C 30    ..te:.db.'$',0,0
022520:  2C 30 09 09 3B 28 63 61 6E 27 74 29 20 43 6C 65    ,0..;(can't) Cle
022530:  61 72 20 64 69 73 70 6C 61 79 0D 0A 74 66 3A 09    ar display..tf:.
022540:  64 62 09 27 24 27 2C 30 2C 30 2C 30 09 09 3B 28    db.'$',0,0,0..;(
022550:  63 61 6E 27 74 29 20 45 6E 74 65 72 20 67 72 61    can't) Enter gra
022560:  70 68 69 63 73 20 6D 6F 64 65 0D 0A 74 67 3A 09    phics mode..tg:.
022570:  64 62 09 27 24 27 2C 30 2C 30 2C 30 09 09 3B 28    db.'$',0,0,0..;(
022580:  63 61 6E 27 74 29 20 45 78 69 74 20 67 72 61 70    can't) Exit grap
022590:  68 69 63 73 20 6D 6F 64 65 0D 0A 74 68 3A 09 64    hics mode..th:.d
0225A0:  62 09 28 27 41 27 2D 31 30 30 4F 29 2C 27 24 27    b.('A'-100O),'$'
0225B0:  2C 30 2C 30 09 3B 43 75 72 73 6F 72 20 68 6F 6D    ,0,0.;Cursor hom
0225C0:  65 2E 0D 0A 74 69 3A 09 64 62 09 28 27 4B 27 2D    e...ti:.db.('K'-
0225D0:  31 30 30 4F 29 2C 27 24 27 2C 30 2C 30 09 3B 52    100O),'$',0,0.;R
0225E0:  65 76 65 72 73 65 20 6C 69 6E 65 66 65 65 64 2E    everse linefeed.
0225F0:  0D 0A 74 6A 3A 09 64 62 09 65 73 63 2C 27 7E 6B    ..tj:.db.esc,'~k
022600:  09 62 64 6F 73 0D 0A 0D 0A 72 73 6B 70 3A 09 70    .bdos....rskp:.p
022610:  6F 70 09 68 09 09 3B 20 47 65 74 20 74 68 65 20    op.h..; Get the 
022620:  72 65 74 75 72 6E 20 61 64 64 72 65 73 73 0D 0A    return address..
022630:  09 69 6E 78 09 68 09 09 3B 20 49 6E 63 72 65 6D    .inx.h..; Increm
022640:  65 6E 74 20 62 79 20 74 68 72 65 65 0D 0A 09 69    ent by three...i
022650:  6E 78 09 68 0D 0A 09 69 6E 78 09 68 0D 0A 09 70    nx.h...inx.h...p
022660:  63 68 6C 0D 0A 0D 0A 3B 09 43 6F 70 79 20 62 6C    chl....;.Copy bl
022670:  6F 63 6B 20 6F 66 20 64 61 74 61 0D 0A 3B 09 73    ock of data..;.s
022680:  6F 75 72 63 65 20 69 6E 20 48 4C 2C 20 64 65 73    ource in HL, des
022690:  74 69 6E 61 74 69 6F 6E 20 69 6E 20 44 45 2C 20    tination in DE, 
0226A0:  62 79 74 65 20 63 6F 75 6E 74 20 69 6E 20 42 43    byte count in BC
0226B0:  0D 0A 3B 09 63 61 6C 6C 65 64 20 62 79 3A 20 63    ..;.called by: c
0226C0:  70 34 73 79 73 2C 20 6D 66 6E 61 6D 65 0D 0A 3B    p4sys, mfname..;
0226D0:  0D 0A 6D 6F 76 65 72 3A 0D 0A 49 46 20 4E 4F 54    ..mover:..IF NOT
0226E0:  20 7A 38 30 09 09 3B 20 38 30 38 30 27 73 20 68     z80..; 8080's h
0226F0:  61 76 65 20 74 6F 20 64 6F 20 69 74 20 74 68 65    ave to do it the
022700:  20 68 61 72 64 20 77 61 79 0D 0A 09 6D 6F 76 09     hard way...mov.
022710:  61 2C 6D 0D 0A 09 73 74 61 78 09 64 0D 0A 09 69    a,m...stax.d...i
022720:  6E 78 09 68 0D 0A 09 69 6E 78 09 64 0D 0A 09 64    nx.h...inx.d...d
022730:  63 78 09 62 0D 0A 09 6D 6F 76 09 61 2C 62 0D 0A    cx.b...mov.a,b..
022740:  09 6F 72 61 09 63 0D 0A 09 6A 6E 7A 09 6D 6F 76    .ora.c...jnz.mov
022750:  65 72 0D 0A 45 4E 44 49 46 3B 4E 4F 54 20 7A 38    er..ENDIF;NOT z8
022760:  30 0D 0A 49 46 20 7A 38 30 0D 0A 09 64 62 09 30    0..IF z80...db.0
022770:  45 44 68 2C 30 42 30 68 09 3B 20 5A 38 30 20 4C    EDh,0B0h.; Z80 L
022780:  44 49 52 20 69 6E 73 74 72 75 63 74 69 6F 6E 0D    DIR instruction.
022790:  0A 45 4E 44 49 46 3B 7A 38 30 0D 0A 09 72 65 74    .ENDIF;z80...ret
0227A0:  0D 0A 3B 0C 0D 0A 3B 0D 0A 3B 09 4D 69 73 63 65    ..;...;..;.Misce
0227B0:  6C 6C 61 6E 65 6F 75 73 20 6D 65 73 73 61 67 65    llaneous message
0227C0:  73 0D 0A 3B 0D 0A 63 72 6C 66 3A 09 64 62 09 63    s..;..crlf:.db.c
0227D0:  72 2C 6C 66 2C 27 24 27 0D 0A 0D 0A 63 66 67 6D    r,lf,'$'....cfgm
0227E0:  73 67 3A 09 64 62 09 27 63 6F 6E 66 69 67 75 72    sg:.db.'configur
0227F0:  65 64 20 66 6F 72 20 24 27 0D 0A 0D 0A 49 46 20    ed for $'....IF 
022800:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
022810:  1D 00 00 00 02 09 4E E5 1D 00 C1 02 00 00 00 02    ......N.........
022820:  1D 00 C6 02 00 00 00 02 1D 00 C2 02 00 00 00 02    ................
022830:  1D 00 C7 02 00 00 00 02 1D 00 C3 02 00 00 00 02    ................
022840:  1D 00 C8 02 00 00 00 02 1D 00 C4 02 00 00 00 02    ................
022850:  1D 00 C9 02 00 00 00 02 1D 00 C5 02 00 00 00 02    ................
022860:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
022870:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
022880:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
022890:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0228A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0228B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0228C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0228D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0228E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0228F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
022900:  24 27 2C 30 09 09 3B 43 6C 65 61 72 20 74 6F 20    $',0..;Clear to 
022910:  65 6E 64 20 6F 66 20 73 63 72 65 65 6E 2E 0D 0A    end of screen...
022920:  74 6B 3A 09 64 62 09 65 73 63 2C 27 7E 4B 24 27    tk:.db.esc,'~K$'
022930:  2C 30 09 09 3B 43 6C 65 61 72 20 74 6F 20 65 6E    ,0..;Clear to en
022940:  64 20 6F 66 20 6C 69 6E 65 2E 0D 0A 45 4E 44 49    d of line...ENDI
022950:  46 3B 62 72 61 69 6E 0D 0A 0D 0A 3B 0C 0D 0A 49    F;brain....;...I
022960:  46 20 6F 73 62 72 6E 31 0D 0A 73 79 73 76 65 72    F osbrn1..sysver
022970:  3A 09 64 62 09 27 4F 73 62 6F 72 6E 65 20 31 24    :.db.'Osborne 1$
022980:  27 0D 0A 6F 75 74 6C 69 6E 3A 09 64 62 09 31 41    '..outlin:.db.1A
022990:  48 2C 63 72 2C 6C 66 2C 74 61 62 2C 27 24 27 09    H,cr,lf,tab,'$'.
0229A0:  3B 28 43 6C 65 61 72 20 73 63 72 65 65 6E 2C 20    ;(Clear screen, 
0229B0:  68 6F 6D 65 20 63 75 72 73 6F 72 29 0D 0A 65 72    home cursor)..er
0229C0:  61 73 63 72 3A 09 64 62 09 31 41 48 2C 27 24 27    ascr:.db.1AH,'$'
0229D0:  09 09 09 3B 43 6C 65 61 72 20 73 63 72 65 65 6E    ...;Clear screen
0229E0:  20 61 6E 64 20 67 6F 20 68 6F 6D 65 2E 0D 0A 65     and go home...e
0229F0:  72 61 6C 69 6E 3A 09 64 62 09 63 72 2C 65 73 63    ralin:.db.cr,esc
022A00:  2C 27 54 24 27 09 09 3B 43 6C 65 61 72 20 6C 69    ,'T$'..;Clear li
022A10:  6E 65 2E 0D 0A 64 65 6C 73 74 72 3A 09 64 62 09    ne...delstr:.db.
022A20:  62 73 2C 62 73 2C 27 24 27 09 09 3B 20 41 64 6A    bs,bs,'$'..; Adj
022A30:  75 73 74 20 66 6F 72 20 64 65 6C 65 74 65 0D 0A    ust for delete..
022A40:  63 75 72 6C 64 6E 3A 09 64 62 09 65 73 63 2C 27    curldn:.db.esc,'
022A50:  3D 24 27 09 09 3B 43 75 72 73 6F 72 20 6C 65 61    =$'..;Cursor lea
022A60:  64 2D 69 6E 0D 0A 74 74 61 62 3A 09 09 09 09 09    d-in..ttab:.....
022A70:  3B 54 61 62 6C 65 20 73 74 61 72 74 20 6C 6F 63    ;Table start loc
022A80:  61 74 69 6F 6E 2E 0D 0A 74 61 3A 09 64 62 09 28    ation...ta:.db.(
022A90:  27 4B 27 2D 31 30 30 4F 29 2C 27 24 27 2C 30 2C    'K'-100O),'$',0,
022AA0:  30 09 3B 43 75 72 73 6F 72 20 75 70 2E 0D 0A 74    0.;Cursor up...t
022AB0:  62 3A 09 64 62 09 31 32 4F 2C 27 24 27 2C 30 2C    b:.db.12O,'$',0,
022AC0:  30 09 09 3B 43 75 72 73 6F 72 20 64 6F 77 6E 2E    0..;Cursor down.
022AD0:  0D 0A 74 63 3A 09 64 62 09 28 27 4C 27 2D 31 30    ..tc:.db.('L'-10
022AE0:  30 4F 29 2C 27 24 27 2C 30 2C 30 09 3B 43 75 72    0O),'$',0,0.;Cur
022AF0:  73 6F 72 20 72 69 67 68 74 2E 0D 0A 74 64 3A 09    sor right...td:.
022B00:  76 65 72 3A 09 64 62 09 27 48 65 61 74 68 2F 5A    ver:.db.'Heath/Z
022B10:  65 6E 69 74 68 20 5A 2D 31 30 30 20 43 50 2F 4D    enith Z-100 CP/M
022B20:  24 27 0D 0A 45 4E 44 49 46 3B 7A 31 30 30 0D 0A    $'..ENDIF;z100..
022B30:  0D 0A 49 46 20 76 74 35 32 09 09 3B 20 44 45 43    ..IF vt52..; DEC
022B40:  20 56 54 35 32 0D 0A 74 74 79 74 79 70 3A 09 64     VT52..ttytyp:.d
022B50:  62 09 27 56 54 35 32 24 27 0D 0A 45 4E 44 49 46    b.'VT52$'..ENDIF
022B60:  3B 76 74 35 32 0D 0A 0D 0A 49 46 20 68 65 61 74    ;vt52....IF heat
022B70:  68 20 4F 52 20 7A 31 30 30 20 4F 52 20 74 65 6C    h OR z100 OR tel
022B80:  63 6F 6E 20 4F 52 20 76 74 35 32 0D 0A 6F 75 74    con OR vt52..out
022B90:  6C 69 6E 3A 09 64 62 09 65 73 63 2C 27 48 27 2C    lin:.db.esc,'H',
022BA0:  65 73 63 2C 27 4A 27 2C 63 72 2C 6C 66 2C 74 61    esc,'J',cr,lf,ta
022BB0:  62 2C 74 61 62 2C 27 24 27 0D 0A 65 72 61 73 63    b,tab,'$'..erasc
022BC0:  72 3A 09 64 62 09 65 73 63 2C 27 48 27 2C 65 73    r:.db.esc,'H',es
022BD0:  63 2C 27 4A 24 27 20 09 3B 43 6C 65 61 72 20 73    c,'J$' .;Clear s
022BE0:  63 72 65 65 6E 20 61 6E 64 20 67 6F 20 68 6F 6D    creen and go hom
022BF0:  65 2E 0D 0A 65 72 61 6C 69 6E 3A 09 64 62 09 63    e...eralin:.db.c
022C00:  72 2C 65 73 63 2C 27 4B 24 27 09 09 3B 43 6C 65    r,esc,'K$'..;Cle
022C10:  61 72 20 6C 69 6E 65 2E 0D 0A 63 75 72 6C 64 6E    ar line...curldn
022C20:  3A 09 64 62 09 65 73 63 2C 27 59 24 27 09 09 3B    :.db.esc,'Y$'..;
022C30:  63 75 72 73 6F 72 20 6C 65 61 64 69 6E 0D 0A 74    cursor leadin..t
022C40:  74 61 62 3A 09 09 09 09 09 3B 54 61 62 6C 65 20    tab:.....;Table 
022C50:  73 74 61 72 74 20 6C 6F 63 61 74 69 6F 6E 2E 0D    start location..
022C60:  0A 74 61 3A 09 64 62 09 65 73 63 2C 27 41 24 27    .ta:.db.esc,'A$'
022C70:  2C 30 09 09 3B 43 75 72 73 6F 72 20 75 70 2E 0D    ,0..;Cursor up..
022C80:  0A 74 62 3A 09 64 62 09 65 73 63 2C 27 42 24 27    .tb:.db.esc,'B$'
022C90:  2C 30 09 09 3B 43 75 72 73 6F 72 20 64 6F 77 6E    ,0..;Cursor down
022CA0:  2E 0D 0A 74 63 3A 09 64 62 09 65 73 63 2C 27 43    ...tc:.db.esc,'C
022CB0:  24 27 2C 30 09 09 3B 43 75 72 73 6F 72 20 72 69    $',0..;Cursor ri
022CC0:  67 68 74 2E 0D 0A 74 64 3A 09 64 62 09 65 73 63    ght...td:.db.esc
022CD0:  2C 27 44 24 27 2C 30 09 09 3B 43 75 72 73 6F 72    ,'D$',0..;Cursor
022CE0:  20 6C 65 66 74 0D 0A 74 65 3A 09 64 62 09 65 73     left..te:.db.es
022CF0:  63 2C 27 45 24 27 2C 30 09 09 3B 43 6C 65 61 72    c,'E$',0..;Clear
022D00:  64 62 09 62 73 2C 27 24 27 2C 30 2C 30 09 09 3B    db.bs,'$',0,0..;
022D10:  43 75 72 73 6F 72 20 6C 65 66 74 2E 0D 0A 74 65    Cursor left...te
022D20:  3A 09 64 62 09 73 75 62 74 2C 27 24 27 2C 30 2C    :.db.subt,'$',0,
022D30:  30 09 09 3B 43 6C 65 61 72 20 73 63 72 65 65 6E    0..;Clear screen
022D40:  2E 0D 0A 74 66 3A 09 64 62 09 27 24 27 2C 30 2C    ...tf:.db.'$',0,
022D50:  30 2C 30 09 09 3B 28 63 61 6E 27 74 29 20 45 6E    0,0..;(can't) En
022D60:  74 65 72 20 67 72 61 70 68 69 63 73 20 6D 6F 64    ter graphics mod
022D70:  65 0D 0A 74 67 3A 09 64 62 09 27 24 27 2C 30 2C    e..tg:.db.'$',0,
022D80:  30 2C 30 09 09 3B 28 63 61 6E 27 74 29 20 45 78    0,0..;(can't) Ex
022D90:  69 74 20 67 72 61 70 68 69 63 73 20 6D 6F 64 65    it graphics mode
022DA0:  0D 0A 74 68 3A 09 64 62 09 28 27 5E 27 2D 31 30    ..th:.db.('^'-10
022DB0:  30 4F 29 2C 27 24 27 2C 30 2C 30 09 3B 43 75 72    0O),'$',0,0.;Cur
022DC0:  73 6F 72 20 68 6F 6D 65 2E 0D 0A 74 69 3A 09 64    sor home...ti:.d
022DD0:  62 09 28 27 4B 27 2D 31 30 30 4F 29 2C 27 24 27    b.('K'-100O),'$'
022DE0:  2C 30 2C 30 09 3B 52 65 76 65 72 73 65 20 6C 69    ,0,0.;Reverse li
022DF0:  6E 65 66 65 65 64 2E 0D 0A 74 6A 3A 09 64 62 09    nefeed...tj:.db.
022E00:  65 73 63 2C 27 54 24 27 2C 30 09 09 3B 28 63 61    esc,'T$',0..;(ca
022E10:  6E 27 74 29 20 43 6C 65 61 72 20 74 6F 20 65 6E    n't) Clear to en
022E20:  64 20 6F 66 20 73 63 72 65 65 6E 2E 0D 0A 74 6B    d of screen...tk
022E30:  3A 09 64 62 09 65 73 63 2C 27 54 24 27 2C 30 09    :.db.esc,'T$',0.
022E40:  09 3B 43 6C 65 61 72 20 74 6F 20 65 6E 64 20 6F    .;Clear to end o
022E50:  66 20 6C 69 6E 65 2E 0D 0A 45 4E 44 49 46 3B 6F    f line...ENDIF;o
022E60:  73 62 72 6E 31 0D 0A 3B 0C 0D 0A 49 46 20 61 70    sbrn1..;...IF ap
022E70:  70 6C 65 0D 0A 73 79 73 76 65 72 3A 09 64 62 09    ple..sysver:.db.
022E80:  27 41 70 70 6C 65 20 49 49 20 43 50 2F 4D 24 27    'Apple II CP/M$'
022E90:  0D 0A 6F 75 74 6C 69 6E 3A 09 64 62 09 28 27 5E    ..outlin:.db.('^
022EA0:  27 2D 31 30 30 4F 29 2C 65 73 63 2C 27 59 27 2C    '-100O),esc,'Y',
022EB0:  63 72 2C 6C 66 2C 27 20 20 24 27 0D 0A 65 72 61    cr,lf,'  $'..era
022EC0:  73 63 72 3A 09 64 62 09 28 27 5E 27 2D 31 30 30    scr:.db.('^'-100
022ED0:  4F 29 2C 65 73 63 2C 27 59 24 27 09 3B 43 6C 65    O),esc,'Y$'.;Cle
022EE0:  61 72 20 73 63 72 65 65 6E 20 61 6E 64 20 67 6F    ar screen and go
022EF0:  20 68 6F 6D 65 2E 0D 0A 65 72 61 6C 69 6E 3A 09     home...eralin:.
022F00:  20 64 69 73 70 6C 61 79 0D 0A 74 66 3A 09 64 62     display..tf:.db
022F10:  09 65 73 63 2C 27 46 24 27 2C 30 09 09 3B 45 6E    .esc,'F$',0..;En
022F20:  74 65 72 20 47 72 61 70 68 69 63 73 20 4D 6F 64    ter Graphics Mod
022F30:  65 0D 0A 74 67 3A 09 64 62 09 65 73 63 2C 27 47    e..tg:.db.esc,'G
022F40:  24 27 2C 30 09 09 3B 45 78 69 74 20 47 72 61 70    $',0..;Exit Grap
022F50:  68 69 63 73 20 6D 6F 64 65 0D 0A 74 68 3A 09 64    hics mode..th:.d
022F60:  62 09 65 73 63 2C 27 48 24 27 2C 30 09 09 3B 43    b.esc,'H$',0..;C
022F70:  75 72 73 6F 72 20 68 6F 6D 65 2E 0D 0A 74 69 3A    ursor home...ti:
022F80:  09 64 62 09 65 73 63 2C 27 49 24 27 2C 30 09 09    .db.esc,'I$',0..
022F90:  3B 52 65 76 65 72 73 65 20 6C 69 6E 65 66 65 65    ;Reverse linefee
022FA0:  64 2E 0D 0A 74 6A 3A 09 64 62 09 65 73 63 2C 27    d...tj:.db.esc,'
022FB0:  4A 24 27 2C 30 09 09 3B 43 6C 65 61 72 20 74 6F    J$',0..;Clear to
022FC0:  20 65 6E 64 20 6F 66 20 73 63 72 65 65 6E 2E 0D     end of screen..
022FD0:  0A 74 6B 3A 09 64 62 09 65 73 63 2C 27 4B 24 27    .tk:.db.esc,'K$'
022FE0:  2C 30 09 09 3B 43 6C 65 61 72 20 74 6F 20 65 6E    ,0..;Clear to en
022FF0:  64 20 6F 66 20 6C 69 6E 65 2E 0D 0A 45 4E 44 49    d of line...ENDI
023000:  46 3B 68 65 61 74 68 20 4F 52 20 7A 31 30 30 20    F;heath OR z100 
023010:  4F 52 20 74 65 6C 63 6F 6E 20 4F 52 20 76 74 35    OR telcon OR vt5
023020:  32 0D 0A 3B 0C 0D 0A 49 46 20 74 72 73 38 30 6C    2..;...IF trs80l
023030:  62 0D 0A 73 79 73 76 65 72 3A 09 64 62 09 27 54    b..sysver:.db.'T
023040:  52 53 2D 38 30 20 49 49 20 4C 69 66 65 62 6F 61    RS-80 II Lifeboa
023050:  74 20 43 50 2F 4D 24 27 0D 0A 6F 75 74 6C 69 6E    t CP/M$'..outlin
023060:  3A 09 64 62 09 65 73 63 2C 27 3A 27 2C 63 72 2C    :.db.esc,':',cr,
023070:  6C 66 2C 74 61 62 2C 74 61 62 2C 27 24 27 0D 0A    lf,tab,tab,'$'..
023080:  65 72 61 73 63 72 3A 09 64 62 09 65 73 63 2C 27    erascr:.db.esc,'
023090:  3A 24 27 09 09 3B 43 6C 65 61 72 20 73 63 72 65    :$'..;Clear scre
0230A0:  65 6E 20 61 6E 64 20 67 6F 20 68 6F 6D 65 2E 0D    en and go home..
0230B0:  0A 65 72 61 6C 69 6E 3A 09 64 62 09 63 72 2C 65    .eralin:.db.cr,e
0230C0:  73 63 2C 27 54 24 27 09 09 3B 43 6C 65 61 72 20    sc,'T$'..;Clear 
0230D0:  6C 69 6E 65 2E 0D 0A 63 75 72 6C 64 6E 3A 09 64    line...curldn:.d
0230E0:  62 09 65 73 63 2C 27 3D 24 27 09 09 3B 43 75 72    b.esc,'=$'..;Cur
0230F0:  73 6F 72 20 6C 65 61 64 2D 69 6E 0D 0A 74 74 61    sor lead-in..tta
023100:  64 62 09 63 72 2C 65 73 63 2C 27 54 24 27 09 09    db.cr,esc,'T$'..
023110:  3B 43 6C 65 61 72 20 6C 69 6E 65 2E 0D 0A 64 65    ;Clear line...de
023120:  6C 73 74 72 3A 09 64 62 09 62 73 2C 62 73 2C 27    lstr:.db.bs,bs,'
023130:  24 27 09 09 3B 20 41 64 6A 75 73 74 20 66 6F 72    $'..; Adjust for
023140:  20 64 65 6C 65 74 65 0D 0A 63 75 72 6C 64 6E 3A     delete..curldn:
023150:  09 64 62 09 65 73 63 2C 27 3D 24 27 09 09 3B 43    .db.esc,'=$'..;C
023160:  75 72 73 6F 72 20 6C 65 61 64 2D 69 6E 0D 0A 74    ursor lead-in..t
023170:  74 61 62 3A 09 09 09 09 09 3B 54 61 62 6C 65 20    tab:.....;Table 
023180:  73 74 61 72 74 20 6C 6F 63 61 74 69 6F 6E 2E 0D    start location..
023190:  0A 74 61 3A 09 64 62 09 28 27 4B 27 2D 31 30 30    .ta:.db.('K'-100
0231A0:  4F 29 2C 27 24 27 2C 30 2C 30 09 3B 43 75 72 73    O),'$',0,0.;Curs
0231B0:  6F 72 20 75 70 2E 0D 0A 74 62 3A 09 64 62 09 31    or up...tb:.db.1
0231C0:  32 4F 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75 72    2O,'$',0,0..;Cur
0231D0:  73 6F 72 20 64 6F 77 6E 2E 0D 0A 74 63 3A 09 64    sor down...tc:.d
0231E0:  62 09 28 27 46 27 2D 31 30 30 4F 29 2C 27 24 27    b.('F'-100O),'$'
0231F0:  2C 30 2C 30 09 3B 43 75 72 73 6F 72 20 72 69 67    ,0,0.;Cursor rig
023200:  68 74 2E 0D 0A 74 64 3A 09 64 62 09 27 24 27 2C    ht...td:.db.'$',
023210:  30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74 29 20    0,0,0..;(can't) 
023220:  43 75 72 73 6F 72 20 6C 65 66 74 0D 0A 74 65 3A    Cursor left..te:
023230:  09 64 62 09 27 24 27 2C 30 2C 30 2C 30 09 09 3B    .db.'$',0,0,0..;
023240:  28 63 61 6E 27 74 29 20 43 6C 65 61 72 20 64 69    (can't) Clear di
023250:  73 70 6C 61 79 0D 0A 74 66 3A 09 64 62 09 27 24    splay..tf:.db.'$
023260:  27 2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74    ',0,0,0..;(can't
023270:  29 20 45 6E 74 65 72 20 67 72 61 70 68 69 63 73    ) Enter graphics
023280:  20 6D 6F 64 65 0D 0A 74 67 3A 09 64 62 09 27 24     mode..tg:.db.'$
023290:  27 2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74    ',0,0,0..;(can't
0232A0:  29 20 45 78 69 74 20 67 72 61 70 68 69 63 73 20    ) Exit graphics 
0232B0:  6D 6F 64 65 0D 0A 74 68 3A 09 64 62 09 28 27 5E    mode..th:.db.('^
0232C0:  27 2D 31 30 30 4F 29 2C 27 24 27 2C 30 2C 30 09    '-100O),'$',0,0.
0232D0:  3B 43 75 72 73 6F 72 20 68 6F 6D 65 2E 0D 0A 74    ;Cursor home...t
0232E0:  69 3A 09 64 62 09 28 27 4B 27 2D 31 30 30 4F 29    i:.db.('K'-100O)
0232F0:  2C 27 24 27 2C 30 2C 30 09 3B 52 65 76 65 72 73    ,'$',0,0.;Revers
023300:  62 3A 09 09 09 09 09 3B 54 61 62 6C 65 20 73 74    b:.....;Table st
023310:  61 72 74 20 6C 6F 63 61 74 69 6F 6E 2E 0D 0A 74    art location...t
023320:  61 3A 09 64 62 09 30 42 48 2C 27 24 27 2C 30 2C    a:.db.0BH,'$',0,
023330:  30 09 09 3B 43 75 72 73 6F 72 20 75 70 2E 0D 0A    0..;Cursor up...
023340:  74 62 3A 09 64 62 09 30 41 48 2C 27 24 27 2C 30    tb:.db.0AH,'$',0
023350:  2C 30 09 09 3B 43 75 72 73 6F 72 20 64 6F 77 6E    ,0..;Cursor down
023360:  2E 0D 0A 74 63 3A 09 64 62 09 30 43 48 2C 27 24    ...tc:.db.0CH,'$
023370:  27 2C 30 2C 30 09 09 3B 43 75 72 73 6F 72 20 72    ',0,0..;Cursor r
023380:  69 67 68 74 2E 0D 0A 74 64 3A 09 64 62 09 62 73    ight...td:.db.bs
023390:  2C 27 24 27 2C 30 2C 30 09 09 3B 43 75 72 73 6F    ,'$',0,0..;Curso
0233A0:  72 20 6C 65 66 74 0D 0A 74 65 3A 09 64 62 09 65    r left..te:.db.e
0233B0:  73 63 2C 27 3A 24 27 2C 30 09 09 3B 43 6C 65 61    sc,':$',0..;Clea
0233C0:  72 20 64 69 73 70 6C 61 79 0D 0A 74 66 3A 09 64    r display..tf:.d
0233D0:  62 09 27 24 27 2C 30 2C 30 2C 30 09 09 3B 28 63    b.'$',0,0,0..;(c
0233E0:  61 6E 27 74 29 20 45 6E 74 65 72 20 47 72 61 70    an't) Enter Grap
0233F0:  68 69 63 73 20 4D 6F 64 65 0D 0A 74 67 3A 09 64    hics Mode..tg:.d
023400:  62 09 27 24 27 2C 30 2C 30 2C 30 09 09 3B 28 63    b.'$',0,0,0..;(c
023410:  61 6E 27 74 29 20 45 78 69 74 20 47 72 61 70 68    an't) Exit Graph
023420:  69 63 73 20 6D 6F 64 65 0D 0A 74 68 3A 09 64 62    ics mode..th:.db
023430:  09 31 45 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43    .1EH,'$',0,0..;C
023440:  75 72 73 6F 72 20 68 6F 6D 65 2E 0D 0A 74 69 3A    ursor home...ti:
023450:  09 64 62 09 30 42 48 2C 27 24 27 2C 30 2C 30 09    .db.0BH,'$',0,0.
023460:  09 3B 52 65 76 65 72 73 65 20 6C 69 6E 65 66 65    .;Reverse linefe
023470:  65 64 2E 0D 0A 74 6A 3A 09 64 62 09 65 73 63 2C    ed...tj:.db.esc,
023480:  27 59 24 27 2C 30 09 09 3B 43 6C 65 61 72 20 74    'Y$',0..;Clear t
023490:  6F 20 65 6E 64 20 6F 66 20 73 63 72 65 65 6E 2E    o end of screen.
0234A0:  0D 0A 74 6B 3A 09 64 62 09 65 73 63 2C 27 54 24    ..tk:.db.esc,'T$
0234B0:  27 2C 30 09 09 3B 43 6C 65 61 72 20 74 6F 20 65    ',0..;Clear to e
0234C0:  6E 64 20 6F 66 20 6C 69 6E 65 2E 0D 0A 45 4E 44    nd of line...END
0234D0:  49 46 3B 74 72 73 38 30 6C 62 0D 0A 3B 0C 0D 0A    IF;trs80lb..;...
0234E0:  49 46 20 74 72 73 38 30 70 74 0D 0A 73 79 73 76    IF trs80pt..sysv
0234F0:  65 72 3A 09 64 62 09 27 54 52 53 2D 38 30 20 49    er:.db.'TRS-80 I
023500:  65 20 6C 69 6E 65 66 65 65 64 2E 0D 0A 74 6A 3A    e linefeed...tj:
023510:  09 64 62 09 65 73 63 2C 27 59 24 27 2C 30 09 09    .db.esc,'Y$',0..
023520:  3B 43 6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66    ;Clear to end of
023530:  20 73 63 72 65 65 6E 2E 0D 0A 74 6B 3A 09 64 62     screen...tk:.db
023540:  09 65 73 63 2C 27 54 24 27 2C 30 09 09 3B 43 6C    .esc,'T$',0..;Cl
023550:  65 61 72 20 74 6F 20 65 6E 64 20 6F 66 20 6C 69    ear to end of li
023560:  6E 65 2E 0D 0A 45 4E 44 49 46 3B 61 70 70 6C 65    ne...ENDIF;apple
023570:  0D 0A 3B 0C 0D 0A 49 46 20 76 65 63 74 6F 72 0D    ..;...IF vector.
023580:  0A 73 79 73 76 65 72 3A 09 64 62 09 27 56 65 63    .sysver:.db.'Vec
023590:  74 6F 72 20 47 72 61 70 68 69 63 73 24 27 0D 0A    tor Graphics$'..
0235A0:  6F 75 74 6C 69 6E 3A 09 64 62 09 28 27 44 27 2D    outlin:.db.('D'-
0235B0:  31 30 30 4F 29 2C 63 72 2C 6C 66 2C 74 61 62 2C    100O),cr,lf,tab,
0235C0:  74 61 62 2C 27 24 27 0D 0A 65 72 61 73 63 72 3A    tab,'$'..erascr:
0235D0:  09 64 62 09 28 27 44 27 2D 31 30 30 4F 29 2C 27    .db.('D'-100O),'
0235E0:  24 27 09 20 09 3B 43 6C 65 61 72 20 73 63 72 65    $'. .;Clear scre
0235F0:  65 6E 20 61 6E 64 20 67 6F 20 68 6F 6D 65 2E 0D    en and go home..
023600:  0A 65 72 61 6C 69 6E 3A 09 64 62 09 63 72 2C 28    .eralin:.db.cr,(
023610:  27 51 27 2D 31 30 30 4F 29 2C 27 24 27 09 3B 43    'Q'-100O),'$'.;C
023620:  6C 65 61 72 20 6C 69 6E 65 2E 0D 0A 64 65 6C 73    lear line...dels
023630:  74 72 3A 09 64 62 09 62 73 2C 27 20 27 2C 62 73    tr:.db.bs,' ',bs
023640:  2C 62 73 2C 27 24 27 09 3B 20 61 64 6A 75 73 74    ,bs,'$'.; adjust
023650:  20 66 6F 72 20 65 63 68 6F 69 6E 67 20 64 65 6C     for echoing del
023660:  65 74 65 20 63 68 61 72 61 63 74 65 72 0D 0A 74    ete character..t
023670:  74 61 62 3A 09 09 09 09 09 3B 54 61 62 6C 65 20    tab:.....;Table 
023680:  73 74 61 72 74 20 6C 6F 63 61 74 69 6F 6E 2E 0D    start location..
023690:  0A 74 61 3A 09 64 62 09 28 27 55 27 2D 31 30 30    .ta:.db.('U'-100
0236A0:  4F 29 2C 27 24 27 2C 30 2C 30 09 3B 43 75 72 73    O),'$',0,0.;Curs
0236B0:  6F 72 20 75 70 2E 0D 0A 74 62 3A 09 64 62 09 31    or up...tb:.db.1
0236C0:  32 4F 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75 72    2O,'$',0,0..;Cur
0236D0:  73 6F 72 20 64 6F 77 6E 2E 0D 0A 74 63 3A 09 64    sor down...tc:.d
0236E0:  62 09 28 27 5A 27 2D 31 30 30 4F 29 2C 27 24 27    b.('Z'-100O),'$'
0236F0:  2C 30 2C 30 09 3B 43 75 72 73 6F 72 20 72 69 67    ,0,0.;Cursor rig
023700:  49 20 50 2B 54 20 43 50 2F 4D 24 27 0D 0A 6F 75    I P+T CP/M$'..ou
023710:  74 6C 69 6E 3A 09 64 62 09 30 43 48 2C 63 72 2C    tlin:.db.0CH,cr,
023720:  6C 66 2C 74 61 62 2C 74 61 62 2C 27 24 27 0D 0A    lf,tab,tab,'$'..
023730:  65 72 61 73 63 72 3A 09 64 62 09 30 43 48 2C 27    erascr:.db.0CH,'
023740:  24 27 09 09 09 3B 43 6C 65 61 72 20 73 63 72 65    $'...;Clear scre
023750:  65 6E 20 61 6E 64 20 67 6F 20 68 6F 6D 65 2E 0D    en and go home..
023760:  0A 65 72 61 6C 69 6E 3A 09 64 62 09 63 72 2C 30    .eralin:.db.cr,0
023770:  31 48 2C 27 24 27 09 09 3B 43 6C 65 61 72 20 6C    1H,'$'..;Clear l
023780:  69 6E 65 2E 0D 0A 63 75 72 6C 64 6E 3A 09 64 62    ine...curldn:.db
023790:  09 65 73 63 2C 27 59 24 27 09 09 3B 43 75 72 73    .esc,'Y$'..;Curs
0237A0:  6F 72 20 6C 65 61 64 2D 69 6E 0D 0A 74 74 61 62    or lead-in..ttab
0237B0:  3A 09 3B 54 61 62 6C 65 20 73 74 61 72 74 20 6C    :.;Table start l
0237C0:  6F 63 61 74 69 6F 6E 09 09 3B 4D 75 73 74 20 62    ocation..;Must b
0237D0:  65 20 34 20 62 79 74 65 73 20 65 61 63 68 0D 0A    e 4 bytes each..
0237E0:  74 61 3A 09 64 62 09 31 45 48 2C 27 24 27 2C 30    ta:.db.1EH,'$',0
0237F0:  2C 30 09 09 3B 43 75 72 73 6F 72 20 75 70 2E 0D    ,0..;Cursor up..
023800:  0A 74 62 3A 09 64 62 09 31 46 48 2C 27 24 27 2C    .tb:.db.1FH,'$',
023810:  30 2C 30 09 09 3B 43 75 72 73 6F 72 20 64 6F 77    0,0..;Cursor dow
023820:  6E 2E 0D 0A 74 63 3A 09 64 62 09 31 44 48 2C 27    n...tc:.db.1DH,'
023830:  24 27 2C 30 2C 30 09 09 3B 43 75 72 73 6F 72 20    $',0,0..;Cursor 
023840:  72 69 67 68 74 2E 0D 0A 74 64 3A 09 64 62 09 31    right...td:.db.1
023850:  43 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75 72    CH,'$',0,0..;Cur
023860:  73 6F 72 20 6C 65 66 74 0D 0A 74 65 3A 09 64 62    sor left..te:.db
023870:  09 30 43 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43    .0CH,'$',0,0..;C
023880:  6C 65 61 72 20 64 69 73 70 6C 61 79 0D 0A 74 66    lear display..tf
023890:  3A 09 64 62 09 31 31 48 2C 27 24 27 2C 30 2C 30    :.db.11H,'$',0,0
0238A0:  09 09 3B 45 6E 74 65 72 20 47 72 61 70 68 69 63    ..;Enter Graphic
0238B0:  73 20 4D 6F 64 65 0D 0A 74 67 3A 09 64 62 09 31    s Mode..tg:.db.1
0238C0:  34 48 2C 27 24 27 2C 30 2C 30 09 09 3B 45 78 69    4H,'$',0,0..;Exi
0238D0:  74 20 47 72 61 70 68 69 63 73 20 6D 6F 64 65 0D    t Graphics mode.
0238E0:  0A 74 68 3A 09 64 62 09 30 36 48 2C 27 24 27 2C    .th:.db.06H,'$',
0238F0:  30 2C 30 09 09 3B 43 75 72 73 6F 72 20 68 6F 6D    0,0..;Cursor hom
023900:  68 74 2E 0D 0A 74 64 3A 09 64 62 09 27 24 27 2C    ht...td:.db.'$',
023910:  30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74 29 20    0,0,0..;(can't) 
023920:  43 75 72 73 6F 72 20 6C 65 66 74 0D 0A 74 65 3A    Cursor left..te:
023930:  09 64 62 09 27 24 27 2C 30 2C 30 2C 30 09 09 3B    .db.'$',0,0,0..;
023940:  28 63 61 6E 27 74 29 20 43 6C 65 61 72 20 64 69    (can't) Clear di
023950:  73 70 6C 61 79 0D 0A 74 66 3A 09 64 62 09 27 24    splay..tf:.db.'$
023960:  27 2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74    ',0,0,0..;(can't
023970:  29 20 45 6E 74 65 72 20 67 72 61 70 68 69 63 73    ) Enter graphics
023980:  20 6D 6F 64 65 0D 0A 74 67 3A 09 64 62 09 27 24     mode..tg:.db.'$
023990:  27 2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74    ',0,0,0..;(can't
0239A0:  29 20 45 78 69 74 20 67 72 61 70 68 69 63 73 20    ) Exit graphics 
0239B0:  6D 6F 64 65 0D 0A 74 68 3A 09 64 62 09 28 27 42    mode..th:.db.('B
0239C0:  27 2D 31 30 30 4F 29 2C 27 24 27 2C 30 2C 30 09    '-100O),'$',0,0.
0239D0:  3B 43 75 72 73 6F 72 20 68 6F 6D 65 2E 0D 0A 74    ;Cursor home...t
0239E0:  69 3A 09 64 62 09 28 27 55 27 2D 31 30 30 4F 29    i:.db.('U'-100O)
0239F0:  2C 27 24 27 2C 30 2C 30 09 3B 52 65 76 65 72 73    ,'$',0,0.;Revers
023A00:  65 20 6C 69 6E 65 66 65 65 64 2E 0D 0A 74 6A 3A    e linefeed...tj:
023A10:  09 64 62 09 28 27 50 27 2D 31 30 30 4F 29 2C 27    .db.('P'-100O),'
023A20:  24 27 2C 30 2C 30 09 3B 43 6C 65 61 72 20 74 6F    $',0,0.;Clear to
023A30:  20 65 6E 64 20 6F 66 20 73 63 72 65 65 6E 2E 0D     end of screen..
023A40:  0A 74 6B 3A 09 64 62 09 28 27 51 27 2D 31 30 30    .tk:.db.('Q'-100
023A50:  4F 29 2C 27 24 27 2C 30 2C 30 09 3B 43 6C 65 61    O),'$',0,0.;Clea
023A60:  72 20 74 6F 20 65 6E 64 20 6F 66 20 6C 69 6E 65    r to end of line
023A70:  2E 0D 0A 45 4E 44 49 46 3B 76 65 63 74 6F 72 0D    ...ENDIF;vector.
023A80:  0A 3B 0C 0D 0A 49 46 20 74 65 6C 63 6F 6E 0D 0A    .;...IF telcon..
023A90:  73 79 73 76 65 72 3A 09 64 62 09 27 54 65 6C 63    sysver:.db.'Telc
023AA0:  6F 6E 20 5A 6F 72 62 61 24 27 0D 0A 45 4E 44 49    on Zorba$'..ENDI
023AB0:  46 3B 74 65 6C 63 6F 6E 0D 0A 0D 0A 49 46 20 68    F;telcon....IF h
023AC0:  65 61 74 68 0D 0A 73 79 73 76 65 72 3A 09 64 62    eath..sysver:.db
023AD0:  09 27 48 65 61 74 68 2F 5A 65 6E 69 74 68 20 38    .'Heath/Zenith 8
023AE0:  39 24 27 0D 0A 45 4E 44 49 46 3B 68 65 61 74 68    9$'..ENDIF;heath
023AF0:  0D 0A 0D 0A 49 46 20 7A 31 30 30 0D 0A 73 79 73    ....IF z100..sys
023B00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
023B10:  1E 00 00 00 02 09 4E E5 1E 00 C1 02 00 00 00 02    ......N.........
023B20:  1E 00 C6 02 00 00 00 02 1E 00 C2 02 00 00 00 02    ................
023B30:  1E 00 C7 02 00 00 00 02 1E 00 C3 02 00 00 00 02    ................
023B40:  1E 00 C8 02 00 00 00 02 1E 00 C4 02 00 00 00 02    ................
023B50:  1E 00 C9 02 00 00 00 02 1E 00 C5 02 00 00 00 02    ................
023B60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023B70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023B80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023B90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023C00:  65 2E 0D 0A 74 69 3A 09 64 62 09 31 45 48 2C 27    e...ti:.db.1EH,'
023C10:  24 27 2C 30 2C 30 09 09 3B 52 65 76 65 72 73 65    $',0,0..;Reverse
023C20:  20 6C 69 6E 65 66 65 65 64 2E 0D 0A 74 6A 3A 09     linefeed...tj:.
023C30:  64 62 09 30 32 48 2C 27 24 27 2C 30 2C 30 09 09    db.02H,'$',0,0..
023C40:  3B 43 6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66    ;Clear to end of
023C50:  20 73 63 72 65 65 6E 2E 0D 0A 74 6B 3A 09 64 62     screen...tk:.db
023C60:  09 30 31 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43    .01H,'$',0,0..;C
023C70:  6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66 20 6C    lear to end of l
023C80:  69 6E 65 2E 0D 0A 45 4E 44 49 46 3B 74 72 73 38    ine...ENDIF;trs8
023C90:  30 70 74 0D 0A 3B 0C 0D 0A 49 46 20 72 6F 62 69    0pt..;...IF robi
023CA0:  6E 0D 0A 73 79 73 76 65 72 3A 09 64 62 09 27 56    n..sysver:.db.'V
023CB0:  54 31 38 30 20 22 52 6F 62 69 6E 22 24 27 0D 0A    T180 "Robin"$'..
023CC0:  45 4E 44 49 46 3B 72 6F 62 69 6E 0D 0A 0D 0A 49    ENDIF;robin....I
023CD0:  46 20 64 6D 49 49 0D 0A 73 79 73 76 65 72 3A 09    F dmII..sysver:.
023CE0:  64 62 09 27 44 45 43 6D 61 74 65 20 49 49 20 43    db.'DECmate II C
023CF0:  50 2F 4D 2D 38 30 24 27 0D 0A 45 4E 44 49 46 3B    P/M-80$'..ENDIF;
023D00:  64 6D 49 49 0D 0A 0D 0A 49 46 20 76 74 31 30 30    dmII....IF vt100
023D10:  0D 0A 74 74 79 74 79 70 3A 09 64 62 09 27 56 54    ..ttytyp:.db.'VT
023D20:  31 30 30 24 27 0D 0A 45 4E 44 49 46 3B 76 74 31    100$'..ENDIF;vt1
023D30:  30 30 0D 0A 0D 0A 49 46 20 6E 6F 72 74 68 73 0D    00....IF norths.
023D40:  0A 73 79 73 76 65 72 3A 09 64 62 09 27 4E 6F 72    .sysver:.db.'Nor
023D50:  74 68 73 74 61 72 20 48 6F 72 69 7A 6F 6E 24 27    thstar Horizon$'
023D60:  0D 0A 45 4E 44 49 46 3B 6E 6F 72 74 68 73 0D 0A    ..ENDIF;norths..
023D70:  0D 0A 49 46 20 72 6F 62 69 6E 20 4F 52 20 64 6D    ..IF robin OR dm
023D80:  49 49 20 6F 72 20 76 74 31 30 30 0D 0A 3B 20 4E    II or vt100..; N
023D90:  6F 74 65 20 74 68 61 74 20 77 65 20 63 61 6E 6E    ote that we cann
023DA0:  6F 74 20 73 75 70 70 6F 72 74 20 47 72 61 70 68    ot support Graph
023DB0:  69 63 73 20 4D 6F 64 65 20 6F 72 20 74 68 65 20    ics Mode or the 
023DC0:  48 31 39 20 65 72 61 73 65 2D 73 63 72 65 65 6E    H19 erase-screen
023DD0:  20 63 6F 6D 6D 61 6E 64 0D 0A 3B 20 28 3C 65 73     command..; (<es
023DE0:  63 3E 45 29 2C 20 62 65 63 61 75 73 65 20 74 68    c>E), because th
023DF0:  65 20 73 65 71 75 65 6E 63 65 73 20 61 72 65 20    e sequences are 
023E00:  63 61 6E 27 74 29 0D 0A 74 68 3A 09 64 62 09 31    can't)..th:.db.1
023E10:  45 48 2C 27 24 27 2C 30 2C 30 09 09 3B 20 43 75    EH,'$',0,0..; Cu
023E20:  72 73 6F 72 20 68 6F 6D 65 2E 09 09 5B 55 54 4B    rsor home...[UTK
023E30:  30 31 36 5D 0D 0A 74 69 3A 09 64 62 09 30 42 48    016]..ti:.db.0BH
023E40:  2C 27 24 27 2C 30 2C 30 09 09 3B 20 52 65 76 65    ,'$',0,0..; Reve
023E50:  72 73 65 20 6C 69 6E 65 66 65 65 64 2E 20 28 63    rse linefeed. (c
023E60:  75 72 73 6F 72 20 75 70 29 0D 0A 74 6A 3A 09 64    ursor up)..tj:.d
023E70:  62 09 31 31 48 2C 27 24 27 2C 30 2C 30 09 09 3B    b.11H,'$',0,0..;
023E80:  20 43 6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66     Clear to end of
023E90:  20 73 63 72 65 65 6E 2E 0D 0A 74 6B 3A 09 64 62     screen...tk:.db
023EA0:  09 31 38 48 2C 27 24 27 2C 30 2C 30 09 09 3B 20    .18H,'$',0,0..; 
023EB0:  43 6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66 20    Clear to end of 
023EC0:  6C 69 6E 65 2E 0D 0A 45 4E 44 49 46 20 3B 20 78    line...ENDIF ; x
023ED0:  65 72 38 32 30 0D 0A 3B 0C 0D 0A 49 46 20 6D 69    er820..;...IF mi
023EE0:  6B 6B 6F 0D 0A 73 79 73 76 65 72 3A 09 64 62 09    kko..sysver:.db.
023EF0:  27 4D 69 6B 72 6F 4D 69 6B 6B 6F 24 27 0D 0A 6F    'MikroMikko$'..o
023F00:  75 74 6C 69 6E 3A 09 64 62 09 73 75 62 74 2C 63    utlin:.db.subt,c
023F10:  72 2C 6C 66 2C 74 61 62 2C 27 24 27 0D 0A 65 72    r,lf,tab,'$'..er
023F20:  61 73 63 72 3A 09 64 62 09 73 75 62 74 2C 27 24    ascr:.db.subt,'$
023F30:  27 09 09 3B 43 6C 65 61 72 20 73 63 72 65 65 6E    '..;Clear screen
023F40:  20 61 6E 64 20 67 6F 20 68 6F 6D 65 2E 0D 0A 65     and go home...e
023F50:  72 61 6C 69 6E 3A 09 64 62 09 63 72 2C 31 43 48    ralin:.db.cr,1CH
023F60:  2C 27 24 27 09 09 3B 43 6C 65 61 72 20 6C 69 6E    ,'$'..;Clear lin
023F70:  65 2E 0D 0A 63 75 72 6C 64 6E 3A 09 64 62 09 65    e...curldn:.db.e
023F80:  73 63 2C 27 3D 24 27 09 09 3B 63 75 72 73 6F 72    sc,'=$'..;cursor
023F90:  20 6C 65 61 64 69 6E 0D 0A 74 74 61 62 3A 09 09     leadin..ttab:..
023FA0:  09 09 09 3B 54 61 62 6C 65 20 73 74 61 72 74 20    ...;Table start 
023FB0:  6C 6F 63 61 74 69 6F 6E 2E 0D 0A 74 61 3A 09 64    location...ta:.d
023FC0:  62 09 30 42 48 2C 27 24 27 2C 30 2C 30 09 09 3B    b.0BH,'$',0,0..;
023FD0:  43 75 72 73 6F 72 20 75 70 2E 0D 0A 74 62 3A 09    Cursor up...tb:.
023FE0:  64 62 09 30 41 48 2C 27 24 27 2C 30 2C 30 09 09    db.0AH,'$',0,0..
023FF0:  3B 43 75 72 73 6F 72 20 64 6F 77 6E 2E 0D 0A 74    ;Cursor down...t
024000:  6D 6F 72 65 20 74 68 61 6E 20 74 68 72 65 65 20    more than three 
024010:  62 79 74 65 73 2E 0D 0A 6F 75 74 6C 69 6E 3A 09    bytes...outlin:.
024020:  64 62 09 65 73 63 2C 33 43 48 2C 65 73 63 2C 27    db.esc,3CH,esc,'
024030:  5B 48 27 2C 65 73 63 2C 27 5B 4A 27 2C 63 72 2C    [H',esc,'[J',cr,
024040:  6C 66 2C 74 61 62 2C 74 61 62 2C 27 24 27 0D 0A    lf,tab,tab,'$'..
024050:  65 72 61 73 63 72 3A 09 64 62 09 65 73 63 2C 27    erascr:.db.esc,'
024060:  5B 48 27 2C 65 73 63 2C 27 5B 4A 24 27 20 09 3B    [H',esc,'[J$' .;
024070:  43 6C 65 61 72 20 73 63 72 65 65 6E 20 61 6E 64    Clear screen and
024080:  20 67 6F 20 68 6F 6D 65 2E 0D 0A 65 72 61 6C 69     go home...erali
024090:  6E 3A 09 64 62 09 63 72 2C 65 73 63 2C 27 5B 4B    n:.db.cr,esc,'[K
0240A0:  24 27 09 09 3B 43 6C 65 61 72 20 6C 69 6E 65 2E    $'..;Clear line.
0240B0:  0D 0A 63 75 72 6C 64 6E 3A 09 64 62 09 65 73 63    ..curldn:.db.esc
0240C0:  2C 27 5B 24 27 09 09 3B 20 43 75 72 73 6F 72 20    ,'[$'..; Cursor 
0240D0:  6C 65 61 64 69 6E 0D 0A 74 74 61 62 3A 0D 0A 74    leadin..ttab:..t
0240E0:  61 3A 09 64 62 09 65 73 63 2C 27 5B 41 24 27 09    a:.db.esc,'[A$'.
0240F0:  09 3B 20 43 75 72 73 6F 72 20 75 70 2E 0D 0A 74    .; Cursor up...t
024100:  62 3A 09 64 62 09 65 73 63 2C 27 5B 42 24 27 09    b:.db.esc,'[B$'.
024110:  09 3B 20 43 75 72 73 6F 72 20 64 6F 77 6E 2E 0D    .; Cursor down..
024120:  0A 74 63 3A 09 64 62 09 65 73 63 2C 27 5B 43 24    .tc:.db.esc,'[C$
024130:  27 09 09 3B 20 43 75 72 73 6F 72 20 72 69 67 68    '..; Cursor righ
024140:  74 2E 0D 0A 74 64 3A 09 64 62 09 65 73 63 2C 27    t...td:.db.esc,'
024150:  5B 44 24 27 09 09 3B 20 43 75 72 73 6F 72 20 6C    [D$'..; Cursor l
024160:  65 66 74 0D 0A 74 65 3A 09 64 62 09 27 24 27 2C    eft..te:.db.'$',
024170:  30 2C 30 2C 30 09 09 3B 20 28 63 61 6E 27 74 29    0,0,0..; (can't)
024180:  20 43 6C 65 61 72 20 64 69 73 70 6C 61 79 0D 0A     Clear display..
024190:  74 66 3A 09 64 62 09 27 24 27 2C 30 2C 30 2C 30    tf:.db.'$',0,0,0
0241A0:  09 09 3B 20 28 64 6F 6E 27 74 29 20 45 6E 74 65    ..; (don't) Ente
0241B0:  72 20 47 72 61 70 68 69 63 73 20 4D 6F 64 65 0D    r Graphics Mode.
0241C0:  0A 74 67 3A 09 64 62 09 27 24 27 2C 30 2C 30 2C    .tg:.db.'$',0,0,
0241D0:  30 09 09 3B 20 28 64 6F 6E 27 74 29 20 45 78 69    0..; (don't) Exi
0241E0:  74 20 47 72 61 70 68 69 63 73 20 6D 6F 64 65 0D    t Graphics mode.
0241F0:  0A 74 68 3A 09 64 62 09 65 73 63 2C 27 5B 48 24    .th:.db.esc,'[H$
024200:  63 3A 09 64 62 09 30 43 48 2C 27 24 27 2C 30 2C    c:.db.0CH,'$',0,
024210:  30 09 09 3B 43 75 72 73 6F 72 20 72 69 67 68 74    0..;Cursor right
024220:  2E 0D 0A 74 64 3A 09 64 62 09 62 73 2C 27 24 27    ...td:.db.bs,'$'
024230:  2C 30 2C 30 09 09 3B 43 75 72 73 6F 72 20 6C 65    ,0,0..;Cursor le
024240:  66 74 0D 0A 74 65 3A 09 64 62 09 73 75 62 74 2C    ft..te:.db.subt,
024250:  27 24 27 2C 30 2C 30 09 09 3B 43 6C 65 61 72 20    '$',0,0..;Clear 
024260:  64 69 73 70 6C 61 79 0D 0A 74 66 3A 09 64 62 09    display..tf:.db.
024270:  27 24 27 2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E    '$',0,0,0..;(can
024280:  27 74 29 20 45 6E 74 65 72 20 47 72 61 70 68 69    't) Enter Graphi
024290:  63 73 20 4D 6F 64 65 0D 0A 74 67 3A 09 64 62 09    cs Mode..tg:.db.
0242A0:  27 24 27 2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E    '$',0,0,0..;(can
0242B0:  27 74 29 20 45 78 69 74 20 47 72 61 70 68 69 63    't) Exit Graphic
0242C0:  73 20 6D 6F 64 65 0D 0A 74 68 3A 09 64 62 09 31    s mode..th:.db.1
0242D0:  45 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75 72    EH,'$',0,0..;Cur
0242E0:  73 6F 72 20 68 6F 6D 65 2E 0D 0A 74 69 3A 09 64    sor home...ti:.d
0242F0:  62 09 27 24 27 2C 30 2C 30 2C 30 09 09 3B 28 63    b.'$',0,0,0..;(c
024300:  61 6E 27 74 29 20 52 65 76 65 72 73 65 20 6C 69    an't) Reverse li
024310:  6E 65 66 65 65 64 2E 0D 0A 74 6A 3A 09 64 62 09    nefeed...tj:.db.
024320:  31 63 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43 6C    1cH,'$',0,0..;Cl
024330:  65 61 72 20 74 6F 20 65 6E 64 20 6F 66 20 73 63    ear to end of sc
024340:  72 65 65 6E 2E 0D 0A 74 6B 3A 09 64 62 09 31 63    reen...tk:.db.1c
024350:  48 2C 27 24 27 2C 30 2C 30 09 09 3B 43 6C 65 61    H,'$',0,0..;Clea
024360:  72 20 74 6F 20 65 6E 64 20 6F 66 20 6C 69 6E 65    r to end of line
024370:  2E 0D 0A 45 4E 44 49 46 3B 6D 69 6B 6B 6F 0D 0A    ...ENDIF;mikko..
024380:  3B 0C 0D 0A 49 46 20 67 65 6E 65 72 20 6F 72 20    ;...IF gener or 
024390:  63 70 6D 33 0D 0A 73 79 73 76 65 72 3A 09 64 62    cpm3..sysver:.db
0243A0:  09 27 47 65 6E 65 72 69 63 20 43 50 2F 4D 2D 38    .'Generic CP/M-8
0243B0:  30 24 27 0D 0A 45 4E 44 49 46 3B 67 65 6E 65 72    0$'..ENDIF;gener
0243C0:  20 6F 72 20 63 70 6D 33 0D 0A 0D 0A 49 46 20 62     or cpm3....IF b
0243D0:  62 49 49 0D 0A 73 79 73 76 65 72 3A 09 64 62 09    bII..sysver:.db.
0243E0:  27 42 69 67 20 42 6F 61 72 64 20 49 49 24 27 0D    'Big Board II$'.
0243F0:  0A 45 4E 44 49 46 3B 62 62 49 49 0D 0A 0D 0A 49    .ENDIF;bbII....I
024400:  27 09 09 3B 20 43 75 72 73 6F 72 20 68 6F 6D 65    '..; Cursor home
024410:  2E 0D 0A 74 69 3A 09 64 62 09 65 73 63 2C 27 4D    ...ti:.db.esc,'M
024420:  24 27 2C 30 09 09 3B 20 52 65 76 65 72 73 65 20    $',0..; Reverse 
024430:  6C 69 6E 65 66 65 65 64 2E 0D 0A 74 6A 3A 09 64    linefeed...tj:.d
024440:  62 09 65 73 63 2C 27 5B 4A 24 27 09 09 3B 20 43    b.esc,'[J$'..; C
024450:  6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66 20 73    lear to end of s
024460:  63 72 65 65 6E 2E 0D 0A 74 6B 3A 09 64 62 09 65    creen...tk:.db.e
024470:  73 63 2C 27 5B 4B 24 27 09 09 3B 20 43 6C 65 61    sc,'[K$'..; Clea
024480:  72 20 74 6F 20 65 6E 64 20 6F 66 20 6C 69 6E 65    r to end of line
024490:  2E 0D 0A 45 4E 44 49 46 3B 72 6F 62 69 6E 20 4F    ...ENDIF;robin O
0244A0:  52 20 64 6D 49 49 20 6F 72 20 76 74 31 30 30 0D    R dmII or vt100.
0244B0:  0A 3B 0C 0D 0A 49 46 20 6B 70 69 69 0D 0A 73 79    .;...IF kpii..sy
0244C0:  73 76 65 72 3A 09 64 62 09 27 4B 61 79 70 72 6F    sver:.db.'Kaypro
0244D0:  20 49 49 24 27 0D 0A 6F 75 74 6C 69 6E 3A 09 64     II$'..outlin:.d
0244E0:  62 09 73 75 62 74 2C 63 72 2C 6C 66 2C 74 61 62    b.subt,cr,lf,tab
0244F0:  2C 74 61 62 2C 27 24 27 0D 0A 65 72 61 73 63 72    ,tab,'$'..erascr
024500:  3A 09 64 62 09 73 75 62 74 2C 27 24 27 09 09 3B    :.db.subt,'$'..;
024510:  43 6C 65 61 72 20 73 63 72 65 65 6E 20 61 6E 64    Clear screen and
024520:  20 68 6F 6D 65 2E 0D 0A 65 72 61 6C 69 6E 3A 09     home...eralin:.
024530:  64 62 09 63 72 2C 31 38 48 2C 27 24 27 09 09 3B    db.cr,18H,'$'..;
024540:  43 6C 65 61 72 20 6C 69 6E 65 2E 0D 0A 63 75 72    Clear line...cur
024550:  6C 64 6E 3A 09 64 62 09 65 73 63 2C 27 3D 24 27    ldn:.db.esc,'=$'
024560:  09 09 3B 43 75 72 73 6F 72 20 6C 65 61 64 2D 69    ..;Cursor lead-i
024570:  6E 0D 0A 64 65 6C 73 74 72 3A 09 64 62 09 62 73    n..delstr:.db.bs
024580:  2C 27 20 27 2C 62 73 2C 62 73 2C 27 24 27 09 3B    ,' ',bs,bs,'$'.;
024590:  20 61 64 6A 75 73 74 20 66 6F 72 20 65 63 68 6F     adjust for echo
0245A0:  69 6E 67 20 64 65 6C 65 74 65 20 63 68 61 72 61    ing delete chara
0245B0:  63 74 65 72 0D 0A 74 74 61 62 3A 09 09 09 09 09    cter..ttab:.....
0245C0:  3B 54 61 62 6C 65 20 73 74 61 72 74 20 6C 6F 63    ;Table start loc
0245D0:  61 74 69 6F 6E 2E 0D 0A 74 61 3A 09 64 62 09 30    ation...ta:.db.0
0245E0:  42 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75 72    BH,'$',0,0..;Cur
0245F0:  73 6F 72 20 75 70 2E 0D 0A 74 62 3A 09 64 62 09    sor up...tb:.db.
024600:  46 20 63 70 74 38 35 78 78 0D 0A 73 79 73 76 65    F cpt85xx..sysve
024610:  72 3A 09 64 62 09 27 43 50 54 2D 38 35 78 78 20    r:.db.'CPT-85xx 
024620:  75 6E 64 65 72 20 43 6F 6D 70 75 50 61 6B 20 43    under CompuPak C
024630:  50 2F 4D 24 27 0D 0A 45 4E 44 49 46 3B 63 70 74    P/M$'..ENDIF;cpt
024640:  38 35 78 78 0D 0A 0D 0A 49 46 20 6D 64 49 0D 0A    85xx....IF mdI..
024650:  73 79 73 76 65 72 3A 09 64 62 09 27 4D 6F 72 72    sysver:.db.'Morr
024660:  6F 77 20 44 65 63 69 73 69 6F 6E 20 49 24 27 0D    ow Decision I$'.
024670:  0A 45 4E 44 49 46 3B 6D 64 49 20 20 5B 54 6F 61    .ENDIF;mdI  [Toa
024680:  64 20 48 61 6C 6C 5D 0D 0A 0D 0A 49 46 20 6D 6D    d Hall]....IF mm
024690:  64 49 0D 0A 73 79 73 76 65 72 3A 09 64 62 09 27    dI..sysver:.db.'
0246A0:  4D 69 63 72 6F 44 65 63 69 73 69 6F 6E 20 49 24    MicroDecision I$
0246B0:  27 0D 0A 45 4E 44 49 46 3B 6D 6D 64 49 0D 0A 0D    '..ENDIF;mmdI...
0246C0:  0A 49 46 20 6F 73 69 0D 0A 73 79 73 76 65 72 3A    .IF osi..sysver:
0246D0:  09 64 62 09 27 4F 68 69 6F 20 53 63 69 65 6E 74    .db.'Ohio Scient
0246E0:  69 66 69 63 24 27 0D 0A 45 4E 44 49 46 3B 6F 73    ific$'..ENDIF;os
0246F0:  69 0D 0A 0D 0A 49 46 20 6F 73 69 20 4F 52 20 63    i....IF osi OR c
024700:  72 74 0D 0A 6F 75 74 6C 69 6E 3A 09 64 62 09 63    rt..outlin:.db.c
024710:  72 2C 6C 66 2C 27 53 74 61 72 74 69 6E 67 20 2E    r,lf,'Starting .
024720:  2E 2E 24 27 0D 0A 65 72 61 73 63 72 09 65 71 75    ..$'..erascr.equ
024730:  09 63 72 6C 66 09 09 09 3B 22 48 6F 6D 65 20 26    .crlf...;"Home &
024740:  20 63 6C 65 61 72 22 20 28 62 65 73 74 20 77 65     clear" (best we
024750:  20 63 61 6E 20 64 6F 29 2E 0D 0A 65 72 61 6C 69     can do)...erali
024760:  6E 3A 09 64 62 09 27 5E 55 27 2C 63 72 2C 6C 66    n:.db.'^U',cr,lf
024770:  2C 27 24 27 09 09 3B 43 6C 65 61 72 20 6C 69 6E    ,'$'..;Clear lin
024780:  65 2E 0D 0A 70 72 70 61 63 6B 3A 09 64 62 09 63    e...prpack:.db.c
024790:  72 2C 6C 66 2C 27 52 50 61 63 6B 3A 20 24 27 0D    r,lf,'RPack: $'.
0247A0:  0A 70 73 70 61 63 6B 3A 09 64 62 09 63 72 2C 6C    .pspack:.db.cr,l
0247B0:  66 2C 27 53 50 61 63 6B 3A 20 24 27 0D 0A 74 74    f,'SPack: $'..tt
0247C0:  61 62 09 65 71 75 09 30 09 09 09 3B 20 6E 6F 20    ab.equ.0...; no 
0247D0:  56 54 35 32 20 74 61 62 6C 65 0D 0A 45 4E 44 49    VT52 table..ENDI
0247E0:  46 3B 6F 73 69 20 4F 52 20 63 72 74 0D 0A 0D 0A    F;osi OR crt....
0247F0:  49 46 20 74 76 69 39 32 35 0D 0A 3B 28 69 6E 63    IF tvi925..;(inc
024800:  30 41 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75    0AH,'$',0,0..;Cu
024810:  72 73 6F 72 20 64 6F 77 6E 2E 0D 0A 74 63 3A 09    rsor down...tc:.
024820:  64 62 09 30 43 48 2C 27 24 27 2C 30 2C 30 09 09    db.0CH,'$',0,0..
024830:  3B 43 75 72 73 6F 72 20 72 69 67 68 74 2E 0D 0A    ;Cursor right...
024840:  74 64 3A 09 64 62 09 62 73 2C 27 24 27 2C 30 2C    td:.db.bs,'$',0,
024850:  30 09 09 3B 43 75 72 73 6F 72 20 6C 65 66 74 0D    0..;Cursor left.
024860:  0A 74 65 3A 09 64 62 09 73 75 62 74 2C 27 24 27    .te:.db.subt,'$'
024870:  2C 30 2C 30 09 09 3B 43 6C 65 61 72 20 64 69 73    ,0,0..;Clear dis
024880:  70 6C 61 79 0D 0A 74 66 3A 09 64 62 09 65 73 63    play..tf:.db.esc
024890:  2C 27 47 24 27 2C 30 09 09 3B 20 45 6E 74 65 72    ,'G$',0..; Enter
0248A0:  20 47 72 61 70 68 69 63 73 20 4D 6F 64 65 20 28     Graphics Mode (
0248B0:  73 65 6C 65 63 74 20 47 72 65 65 6B 29 0D 0A 74    select Greek)..t
0248C0:  67 3A 09 64 62 09 65 73 63 2C 27 41 24 27 2C 30    g:.db.esc,'A$',0
0248D0:  09 09 3B 20 45 78 69 74 20 47 72 61 70 68 69 63    ..; Exit Graphic
0248E0:  73 20 6D 6F 64 65 20 28 73 65 6C 65 63 74 20 41    s mode (select A
0248F0:  53 43 49 49 29 0D 0A 74 68 3A 09 64 62 09 31 45    SCII)..th:.db.1E
024900:  48 2C 27 24 27 2C 30 2C 30 09 09 3B 20 43 75 72    H,'$',0,0..; Cur
024910:  73 6F 72 20 68 6F 6D 65 2E 09 09 5B 55 54 4B 30    sor home...[UTK0
024920:  31 36 5D 0D 0A 74 69 3A 09 64 62 09 65 73 63 2C    16]..ti:.db.esc,
024930:  27 45 27 2C 27 24 27 2C 30 09 09 3B 20 52 65 76    'E','$',0..; Rev
024940:  65 72 73 65 20 6C 69 6E 65 66 65 65 64 2E 20 28    erse linefeed. (
024950:  69 6E 73 65 72 74 20 6C 69 6E 65 29 0D 0A 74 6A    insert line)..tj
024960:  3A 09 64 62 09 27 57 27 2D 31 30 30 4F 2C 27 24    :.db.'W'-100O,'$
024970:  27 2C 30 2C 30 09 3B 20 43 6C 65 61 72 20 74 6F    ',0,0.; Clear to
024980:  20 65 6E 64 20 6F 66 20 73 63 72 65 65 6E 2E 0D     end of screen..
024990:  0A 74 6B 3A 09 64 62 09 27 58 27 2D 31 30 30 4F    .tk:.db.'X'-100O
0249A0:  2C 27 24 27 2C 30 2C 30 09 3B 20 43 6C 65 61 72    ,'$',0,0.; Clear
0249B0:  20 74 6F 20 65 6E 64 20 6F 66 20 6C 69 6E 65 2E     to end of line.
0249C0:  0D 0A 45 4E 44 49 46 20 3B 20 6B 70 69 69 0D 0A    ..ENDIF ; kpii..
0249D0:  3B 0C 0D 0A 49 46 20 78 65 72 38 32 30 0D 0A 73    ;...IF xer820..s
0249E0:  79 73 76 65 72 3A 09 64 62 09 27 58 65 72 6F 78    ysver:.db.'Xerox
0249F0:  20 38 32 30 24 27 0D 0A 6F 75 74 6C 69 6E 3A 09     820$'..outlin:.
024A00:  69 64 65 6E 74 61 6C 6C 79 2C 20 77 6F 72 6B 73    identally, works
024A10:  20 66 69 6E 65 20 66 6F 72 20 46 72 65 65 64 6F     fine for Freedo
024A20:  6D 20 31 30 30 20 61 6C 73 6F 20 20 5B 54 6F 61    m 100 also  [Toa
024A30:  64 20 48 61 6C 6C 5D 29 0D 0A 3B 61 64 6D 33 61    d Hall])..;adm3a
024A40:  20 65 6E 74 72 79 20 61 6E 64 20 74 76 69 39 32     entry and tvi92
024A50:  35 20 65 6E 74 72 79 20 73 65 70 61 72 61 74 65    5 entry separate
024A60:  64 20 74 6F 20 72 65 6D 6F 76 65 20 77 61 72 6E    d to remove warn
024A70:  69 6E 67 20 6D 65 73 73 61 67 65 2E 0D 0A 74 74    ing message...tt
024A80:  79 74 79 70 3A 09 64 62 09 27 54 56 49 39 32 35    ytyp:.db.'TVI925
024A90:  24 27 0D 0A 6F 75 74 6C 69 6E 3A 09 64 62 09 27    $'..outlin:.db.'
024AA0:  5A 27 2D 36 34 2C 30 2C 30 2C 63 72 2C 6C 66 2C    Z'-64,0,0,cr,lf,
024AB0:  27 24 27 0D 0A 65 72 61 73 63 72 3A 09 64 62 09    '$'..erascr:.db.
024AC0:  27 5A 27 2D 36 34 2C 30 2C 30 2C 27 24 27 09 09    'Z'-64,0,0,'$'..
024AD0:  3B 43 6C 65 61 72 20 73 63 72 65 65 6E 20 61 6E    ;Clear screen an
024AE0:  64 20 68 6F 6D 65 0D 0A 65 72 61 6C 69 6E 3A 09    d home..eralin:.
024AF0:  64 62 09 65 73 63 2C 27 59 24 27 2C 30 09 09 3B    db.esc,'Y$',0..;
024B00:  43 6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66 20    Clear to end of 
024B10:  73 72 65 65 6E 0D 0A 63 75 72 6C 64 6E 3A 09 64    sreen..curldn:.d
024B20:  62 09 63 72 2C 65 73 63 2C 27 3D 24 27 09 09 3B    b.cr,esc,'=$'..;
024B30:  43 75 72 73 6F 72 20 6C 65 61 64 2D 69 6E 0D 0A    Cursor lead-in..
024B40:  74 74 61 62 3A 09 3B 54 61 62 6C 65 20 73 74 61    ttab:.;Table sta
024B50:  72 74 20 6C 6F 63 61 74 69 6F 6E 09 09 3B 28 4D    rt location..;(M
024B60:  55 53 54 20 62 65 20 34 20 62 79 74 65 73 20 65    UST be 4 bytes e
024B70:  61 63 68 29 0D 0A 74 61 3A 09 64 62 09 27 4B 27    ach)..ta:.db.'K'
024B80:  2D 36 34 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75    -64,'$',0,0..;Cu
024B90:  72 73 6F 72 20 75 70 2C 20 73 74 6F 70 20 61 74    rsor up, stop at
024BA0:  20 74 6F 70 0D 0A 74 62 3A 09 64 62 09 27 56 27     top..tb:.db.'V'
024BB0:  2D 36 34 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75    -64,'$',0,0..;Cu
024BC0:  72 73 6F 72 20 64 6F 77 6E 2C 20 73 74 6F 70 20    rsor down, stop 
024BD0:  61 74 20 62 6F 74 74 6F 6D 0D 0A 74 63 3A 09 64    at bottom..tc:.d
024BE0:  62 09 27 4C 27 2D 36 34 2C 27 24 27 2C 30 2C 30    b.'L'-64,'$',0,0
024BF0:  09 09 3B 43 75 72 73 6F 72 20 72 69 67 68 74 2C    ..;Cursor right,
024C00:  64 62 09 73 75 62 74 2C 63 72 2C 6C 66 2C 74 61    db.subt,cr,lf,ta
024C10:  62 2C 74 61 62 2C 27 24 27 0D 0A 65 72 61 73 63    b,tab,'$'..erasc
024C20:  72 3A 09 64 62 09 73 75 62 74 2C 27 24 27 09 09    r:.db.subt,'$'..
024C30:  3B 43 6C 65 61 72 20 73 63 72 65 65 6E 20 61 6E    ;Clear screen an
024C40:  64 20 68 6F 6D 65 2E 0D 0A 65 72 61 6C 69 6E 3A    d home...eralin:
024C50:  09 64 62 09 63 72 2C 31 38 48 2C 27 24 27 09 09    .db.cr,18H,'$'..
024C60:  3B 43 6C 65 61 72 20 6C 69 6E 65 2E 0D 0A 63 75    ;Clear line...cu
024C70:  72 6C 64 6E 3A 09 64 62 09 65 73 63 2C 27 3D 24    rldn:.db.esc,'=$
024C80:  27 09 09 3B 43 75 72 73 6F 72 20 6C 65 61 64 2D    '..;Cursor lead-
024C90:  69 6E 0D 0A 64 65 6C 73 74 72 3A 09 64 62 09 62    in..delstr:.db.b
024CA0:  73 2C 27 20 27 2C 62 73 2C 62 73 2C 27 24 27 09    s,' ',bs,bs,'$'.
024CB0:  3B 20 61 64 6A 75 73 74 20 66 6F 72 20 65 63 68    ; adjust for ech
024CC0:  6F 69 6E 67 20 64 65 6C 65 74 65 20 63 68 61 72    oing delete char
024CD0:  61 63 74 65 72 0D 0A 74 74 61 62 3A 09 09 09 09    acter..ttab:....
024CE0:  09 3B 54 61 62 6C 65 20 73 74 61 72 74 20 6C 6F    .;Table start lo
024CF0:  63 61 74 69 6F 6E 2E 0D 0A 74 61 3A 09 64 62 09    cation...ta:.db.
024D00:  30 42 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43 75    0BH,'$',0,0..;Cu
024D10:  72 73 6F 72 20 75 70 2E 0D 0A 74 62 3A 09 64 62    rsor up...tb:.db
024D20:  09 30 41 48 2C 27 24 27 2C 30 2C 30 09 09 3B 43    .0AH,'$',0,0..;C
024D30:  75 72 73 6F 72 20 64 6F 77 6E 2E 0D 0A 74 63 3A    ursor down...tc:
024D40:  09 64 62 09 30 43 48 2C 27 24 27 2C 30 2C 30 09    .db.0CH,'$',0,0.
024D50:  09 3B 43 75 72 73 6F 72 20 72 69 67 68 74 2E 0D    .;Cursor right..
024D60:  0A 74 64 3A 09 64 62 09 62 73 2C 27 24 27 2C 30    .td:.db.bs,'$',0
024D70:  2C 30 09 09 3B 43 75 72 73 6F 72 20 6C 65 66 74    ,0..;Cursor left
024D80:  0D 0A 74 65 3A 09 64 62 09 73 75 62 74 2C 27 24    ..te:.db.subt,'$
024D90:  27 2C 30 2C 30 09 09 3B 43 6C 65 61 72 20 64 69    ',0,0..;Clear di
024DA0:  73 70 6C 61 79 0D 0A 74 66 3A 09 64 62 09 27 24    splay..tf:.db.'$
024DB0:  27 2C 30 2C 30 2C 30 09 09 3B 20 45 6E 74 65 72    ',0,0,0..; Enter
024DC0:  20 47 72 61 70 68 69 63 73 20 4D 6F 64 65 20 28     Graphics Mode (
024DD0:  63 61 6E 27 74 29 0D 0A 74 67 3A 09 64 62 09 27    can't)..tg:.db.'
024DE0:  24 27 2C 30 2C 30 2C 30 09 09 3B 20 45 78 69 74    $',0,0,0..; Exit
024DF0:  20 47 72 61 70 68 69 63 73 20 6D 6F 64 65 20 28     Graphics mode (
024E00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
024E10:  1F 00 00 00 02 09 4E E5 1F 00 C1 02 00 00 00 02    ......N.........
024E20:  1F 00 C6 02 00 00 00 02 1F 00 C2 02 00 00 00 02    ................
024E30:  1F 00 C7 02 00 00 00 02 1F 00 C3 02 00 00 00 02    ................
024E40:  1F 00 C8 02 00 00 00 02 1F 00 C4 02 00 00 00 02    ................
024E50:  1F 00 C9 02 00 00 00 02 1F 00 C5 02 00 00 00 02    ................
024E60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024E70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024E80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024E90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024ED0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024F00:  20 73 74 6F 70 20 61 74 20 72 69 67 68 74 0D 0A     stop at right..
024F10:  74 64 3A 09 64 62 09 27 48 27 2D 36 34 2C 27 24    td:.db.'H'-64,'$
024F20:  27 2C 30 2C 30 09 09 3B 43 75 72 73 6F 72 20 6C    ',0,0..;Cursor l
024F30:  65 66 74 2C 20 73 74 6F 70 20 61 74 20 6C 65 66    eft, stop at lef
024F40:  74 0D 0A 74 65 3A 09 64 62 09 27 5A 27 2D 36 34    t..te:.db.'Z'-64
024F50:  2C 30 2C 30 2C 27 24 27 09 09 3B 43 6C 65 61 72    ,0,0,'$'..;Clear
024F60:  20 64 69 73 70 6C 61 79 20 28 32 20 70 61 64 20     display (2 pad 
024F70:  6E 75 6C 6C 73 29 0D 0A 74 66 3A 09 64 62 09 27    nulls)..tf:.db.'
024F80:  24 27 2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E 27    $',0,0,0..;(can'
024F90:  74 29 20 45 6E 74 65 72 20 47 73 6F 72 20 6C 65    t) Enter Gsor le
024FA0:  66 74 2C 20 73 74 6F 70 20 61 74 20 6C 65 66 74    ft, stop at left
024FB0:  0D 0A 74 65 3A 09 64 62 09 27 5A 27 2D 36 34 2C    ..te:.db.'Z'-64,
024FC0:  30 2C 30 2C 27 24 27 09 09 3B 43 6C 65 61 72 20    0,0,'$'..;Clear 
024FD0:  64 69 73 70 6C 61 79 20 28 32 20 70 61 64 20 6E    display (2 pad n
024FE0:  75 6C 6C 73 29 0D 0A 74 66 3A 09 64 62 09 27 24    ulls)..tf:.db.'$
024FF0:  27 2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74    ',0,0,0..;(can't
025000:  29 20 45 6E 74 65 72 20 47 72 61 70 68 69 63 73    ) Enter Graphics
025010:  20 6D 6F 64 65 0D 0A 74 67 3A 09 64 62 09 27 24     mode..tg:.db.'$
025020:  27 2C 30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74    ',0,0,0..;(can't
025030:  29 20 45 78 69 74 20 47 72 61 70 68 69 63 73 20    ) Exit Graphics 
025040:  6D 6F 64 65 0D 0A 74 68 3A 09 64 62 09 31 45 48    mode..th:.db.1EH
025050:  2C 27 24 27 2C 30 2C 30 09 09 3B 43 75 72 73 6F    ,'$',0,0..;Curso
025060:  72 20 68 6F 6D 65 0D 0A 74 69 3A 09 64 62 09 65    r home..ti:.db.e
025070:  73 63 2C 27 6A 24 27 2C 30 09 09 3B 52 65 76 65    sc,'j$',0..;Reve
025080:  72 73 65 20 6C 69 6E 65 66 65 65 64 2C 20 73 63    rse linefeed, sc
025090:  72 6F 6C 6C 0D 0A 74 6A 3A 09 64 62 09 65 73 63    roll..tj:.db.esc
0250A0:  2C 27 59 24 27 2C 30 09 09 3B 43 6C 65 61 72 20    ,'Y$',0..;Clear 
0250B0:  74 6F 20 65 6E 64 20 6F 66 20 73 72 65 65 6E 0D    to end of sreen.
0250C0:  0A 74 6B 3A 09 64 62 09 65 73 63 2C 27 54 24 27    .tk:.db.esc,'T$'
0250D0:  2C 30 09 09 3B 43 6C 65 61 72 20 74 6F 20 65 6E    ,0..;Clear to en
0250E0:  64 20 6F 66 20 6C 69 6E 65 0D 0A 45 4E 44 49 46    d of line..ENDIF
0250F0:  3B 74 76 69 39 32 35 0D 0A 0D 0A 49 46 20 61 64    ;tvi925....IF ad
025100:  3B 20 43 50 34 54 54 2E 41 53 4D 0D 0A 3B 09 4B    ; CP4TT.ASM..;.K
025110:  45 52 4D 49 54 20 2D 20 28 43 65 6C 74 69 63 20    ERMIT - (Celtic 
025120:  66 6F 72 20 22 46 52 45 45 22 29 0D 0A 3B 0D 0A    for "FREE")..;..
025130:  3B 09 54 68 69 73 20 69 73 20 74 68 65 20 43 50    ;.This is the CP
025140:  2F 4D 2D 38 30 20 69 6D 70 6C 65 6D 65 6E 74 61    /M-80 implementa
025150:  74 69 6F 6E 20 6F 66 20 74 68 65 20 43 6F 6C 75    tion of the Colu
025160:  6D 62 69 61 20 55 6E 69 76 65 72 73 69 74 79 0D    mbia University.
025170:  0A 3B 09 4B 45 52 4D 49 54 20 66 69 6C 65 20 74    .;.KERMIT file t
025180:  72 61 6E 73 66 65 72 20 70 72 6F 74 6F 63 6F 6C    ransfer protocol
025190:  2E 0D 0A 3B 0D 0A 3B 09 56 65 72 73 69 6F 6E 20    ...;..;.Version 
0251A0:  34 2E 30 0D 0A 3B 0D 0A 3B 09 43 6F 70 79 72 69    4.0..;..;.Copyri
0251B0:  67 68 74 20 4A 75 6E 65 20 31 39 38 31 2C 31 39    ght June 1981,19
0251C0:  38 32 2C 31 39 38 33 2C 31 39 38 34 2C 31 39 38    82,1983,1984,198
0251D0:  35 0D 0A 3B 09 43 6F 6C 75 6D 62 69 61 20 55 6E    5..;.Columbia Un
0251E0:  69 76 65 72 73 69 74 79 0D 0A 3B 0D 0A 3B 20 4F    iversity..;..; O
0251F0:  72 69 67 69 6E 61 6C 6C 79 20 77 72 69 74 74 65    riginally writte
025200:  6E 20 62 79 20 42 69 6C 6C 20 43 61 74 63 68 69    n by Bill Catchi
025210:  6E 67 73 20 6F 66 20 74 68 65 20 43 6F 6C 75 6D    ngs of the Colum
025220:  62 69 61 20 55 6E 69 76 65 72 73 69 74 79 20 43    bia University C
025230:  65 6E 74 65 72 20 66 6F 72 0D 0A 3B 20 43 6F 6D    enter for..; Com
025240:  70 75 74 69 6E 67 20 41 63 74 69 76 69 74 69 65    puting Activitie
025250:  73 2C 20 36 31 32 20 57 2E 20 31 31 35 74 68 20    s, 612 W. 115th 
025260:  53 74 2E 2C 20 4E 65 77 20 59 6F 72 6B 2C 20 4E    St., New York, N
025270:  59 20 31 30 30 32 35 2E 0D 0A 3B 0D 0A 3B 20 43    Y 10025...;..; C
025280:  6F 6E 74 72 69 62 75 74 69 6F 6E 73 20 62 79 20    ontributions by 
025290:  46 72 61 6E 6B 20 64 61 20 43 72 75 7A 2C 20 44    Frank da Cruz, D
0252A0:  61 70 68 6E 65 20 54 7A 6F 61 72 2C 20 42 65 72    aphne Tzoar, Ber
0252B0:  6E 69 65 20 45 69 62 65 6E 2C 0D 0A 3B 20 42 72    nie Eiben,..; Br
0252C0:  75 63 65 20 54 61 6E 6E 65 72 2C 20 4E 69 63 6B    uce Tanner, Nick
0252D0:  20 42 75 73 68 2C 20 47 72 65 67 20 53 6D 61 6C     Bush, Greg Smal
0252E0:  6C 2C 20 4B 69 6D 6D 6F 20 4C 61 61 6B 73 6F 6E    l, Kimmo Laakson
0252F0:  65 6E 2C 20 4A 65 66 66 20 44 61 6D 65 6E 73 2C    en, Jeff Damens,
025300:  6D 33 61 0D 0A 74 74 79 74 79 70 3A 09 64 62 09    m3a..ttytyp:.db.
025310:  27 41 44 4D 33 41 24 27 0D 0A 6F 75 74 6C 69 6E    'ADM3A$'..outlin
025320:  3A 09 64 62 09 27 5A 27 2D 36 34 2C 30 2C 30 2C    :.db.'Z'-64,0,0,
025330:  63 72 2C 6C 66 2C 27 24 27 0D 0A 65 72 61 73 63    cr,lf,'$'..erasc
025340:  72 3A 09 64 62 09 27 5A 27 2D 36 34 2C 30 2C 30    r:.db.'Z'-64,0,0
025350:  2C 27 24 27 09 09 3B 43 6C 65 61 72 20 73 63 72    ,'$'..;Clear scr
025360:  65 65 6E 20 61 6E 64 20 68 6F 6D 65 0D 0A 65 72    een and home..er
025370:  61 6C 69 6E 3A 09 64 62 09 65 73 63 2C 27 59 24    alin:.db.esc,'Y$
025380:  27 2C 30 09 09 3B 43 6C 65 61 72 20 74 6F 20 65    ',0..;Clear to e
025390:  6E 64 20 6F 66 20 73 72 65 65 6E 0D 0A 63 75 72    nd of sreen..cur
0253A0:  6C 64 6E 3A 09 64 62 09 63 72 2C 65 73 63 2C 27    ldn:.db.cr,esc,'
0253B0:  3D 24 27 09 09 3B 43 75 72 73 6F 72 20 6C 65 61    =$'..;Cursor lea
0253C0:  64 2D 69 6E 0D 0A 74 74 61 62 3A 09 3B 54 61 62    d-in..ttab:.;Tab
0253D0:  6C 65 20 73 74 61 72 74 20 6C 6F 63 61 74 69 6F    le start locatio
0253E0:  6E 09 09 3B 28 4D 55 53 54 20 62 65 20 34 20 62    n..;(MUST be 4 b
0253F0:  79 74 65 73 20 65 61 63 68 29 0D 0A 74 61 3A 09    ytes each)..ta:.
025400:  64 62 09 27 4B 27 2D 36 34 2C 27 24 27 2C 30 2C    db.'K'-64,'$',0,
025410:  30 09 09 3B 43 75 72 73 6F 72 20 75 70 2C 20 73    0..;Cursor up, s
025420:  74 6F 70 20 61 74 20 74 6F 70 0D 0A 74 62 3A 09    top at top..tb:.
025430:  64 62 09 27 4A 27 2D 36 34 2C 27 24 27 2C 30 2C    db.'J'-64,'$',0,
025440:  30 09 09 3B 43 75 72 73 6F 72 20 64 6F 77 6E 20    0..;Cursor down 
025450:  43 54 52 4C 2D 4A 0D 0A 74 63 3A 09 64 62 09 27    CTRL-J..tc:.db.'
025460:  4C 27 2D 36 34 2C 27 24 27 2C 30 2C 30 09 09 3B    L'-64,'$',0,0..;
025470:  43 75 72 73 6F 72 20 72 69 67 68 74 2C 20 73 74    Cursor right, st
025480:  6F 70 20 61 74 20 72 69 67 68 74 0D 0A 74 64 3A    op at right..td:
025490:  09 64 62 09 27 48 27 2D 36 34 2C 27 24 27 2C 30    .db.'H'-64,'$',0
0254A0:  2C 30 09 09 3B 43 75 72 73 6F 72 20 6C 65 66 74    ,0..;Cursor left
0254B0:  2C 20 73 74 6F 70 20 61 74 20 6C 65 66 74 0D 0A    , stop at left..
0254C0:  74 65 3A 09 64 62 09 27 5A 27 2D 36 34 2C 30 2C    te:.db.'Z'-64,0,
0254D0:  30 2C 27 24 27 09 09 3B 43 6C 65 61 72 20 64 69    0,'$'..;Clear di
0254E0:  73 70 6C 61 79 20 28 32 20 70 61 64 20 6E 75 6C    splay (2 pad nul
0254F0:  6C 73 29 0D 0A 74 66 3A 09 64 62 09 27 24 27 2C    ls)..tf:.db.'$',
025500:  20 61 6E 64 20 6D 61 6E 79 0D 0A 3B 20 6F 74 68     and many..; oth
025510:  65 72 73 2E 0D 0A 3B 0D 0A 3B 09 54 68 69 73 20    ers...;..;.This 
025520:  66 69 6C 65 20 63 6F 6E 74 61 69 6E 73 20 74 68    file contains th
025530:  65 20 63 6F 64 65 20 66 6F 72 20 74 68 65 20 54    e code for the T
025540:  52 41 4E 53 4D 49 54 20 61 6E 64 20 43 4F 4E 4E    RANSMIT and CONN
025550:  45 43 54 20 63 6F 6D 6D 61 6E 64 73 2C 0D 0A 3B    ECT commands,..;
025560:  09 77 68 69 63 68 20 63 6F 6D 6D 75 6E 69 63 61    .which communica
025570:  74 65 20 77 69 74 68 20 61 20 68 6F 73 74 20 77    te with a host w
025580:  68 69 63 68 20 69 73 20 6E 6F 74 20 72 75 6E 6E    hich is not runn
025590:  69 6E 67 20 4B 45 52 4D 49 54 2E 0D 0A 3B 0D 0A    ing KERMIT...;..
0255A0:  3B 20 72 65 76 69 73 69 6F 6E 20 68 69 73 74 6F    ; revision histo
0255B0:  72 79 3A 0D 0A 3B 20 65 64 69 74 20 34 3A 20 31    ry:..; edit 4: 1
0255C0:  33 2D 4A 61 6E 2D 38 35 20 62 79 20 56 61 6E 79    3-Jan-85 by Vany
0255D0:  61 20 4A 2E 43 6F 6F 70 65 72 20 50 69 6D 61 20    a J.Cooper Pima 
0255E0:  43 6F 6D 6D 75 6E 2E 20 43 6F 6C 6C 65 67 65 20    Commun. College 
0255F0:  54 65 6C 3A 20 36 30 32 2D 38 38 34 2D 36 38 30    Tel: 602-884-680
025600:  39 0D 0A 3B 0D 0A 3B 70 63 63 30 30 32 09 32 38    9..;..;pcc002.28
025610:  2D 44 65 63 2D 38 34 09 6D 6F 64 75 6C 65 73 3A    -Dec-84.modules:
025620:  63 70 34 74 74 2C 63 70 34 75 74 6C 0D 0A 3B 09    cp4tt,cp4utl..;.
025630:  41 64 64 20 63 6F 6E 6E 65 63 74 20 6D 6F 64 65    Add connect mode
025640:  20 3C 65 73 63 3E 50 20 63 6F 6D 6D 61 6E 64 20     <esc>P command 
025650:  74 6F 20 74 6F 67 67 6C 65 20 70 72 69 6E 74 65    to toggle printe
025660:  72 20 6F 6E 0D 0A 3B 09 61 6E 64 20 6F 66 66 2E    r on..;.and off.
025670:  20 20 43 6F 6E 66 6C 69 63 74 73 20 77 69 74 68      Conflicts with
025680:  20 22 6F 66 66 69 63 69 61 6C 22 20 72 65 63 6F     "official" reco
025690:  6D 6D 65 6E 64 65 64 20 63 6F 6D 6D 61 6E 64 73    mmended commands
0256A0:  0D 0A 3B 09 69 6E 20 70 72 6F 74 6F 63 6F 6C 20    ..;.in protocol 
0256B0:  6D 61 6E 75 61 6C 2C 20 62 75 74 20 49 20 64 6F    manual, but I do
0256C0:  6E 27 74 20 74 68 69 6E 6B 20 43 50 2F 4D 20 77    n't think CP/M w
0256D0:  69 6C 6C 20 65 76 65 72 20 67 65 74 0D 0A 3B 09    ill ever get..;.
0256E0:  61 20 50 55 53 48 20 63 6F 6D 6D 61 6E 64 2E 0D    a PUSH command..
0256F0:  0A 3B 0D 0A 3B 70 63 63 30 30 33 2D 70 63 63 30    .;..;pcc003-pcc0
025700:  30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74 29 20    0,0,0..;(can't) 
025710:  45 6E 74 65 72 20 47 72 61 70 68 69 63 73 20 6D    Enter Graphics m
025720:  6F 64 65 0D 0A 74 67 3A 09 64 62 09 27 24 27 2C    ode..tg:.db.'$',
025730:  30 2C 30 2C 30 09 09 3B 28 63 61 6E 27 74 29 20    0,0,0..;(can't) 
025740:  45 78 69 74 20 47 72 61 70 68 69 63 73 20 6D 6F    Exit Graphics mo
025750:  64 65 0D 0A 74 68 3A 09 64 62 09 31 45 48 2C 27    de..th:.db.1EH,'
025760:  24 27 2C 30 2C 30 09 09 3B 43 75 72 73 6F 72 20    $',0,0..;Cursor 
025770:  68 6F 6D 65 0D 0A 74 69 3A 09 64 62 09 27 4B 27    home..ti:.db.'K'
025780:  2D 36 34 2C 27 24 27 2C 30 2C 30 09 09 3B 52 65    -64,'$',0,0..;Re
025790:  76 65 72 73 65 20 6C 69 6E 65 66 65 65 64 0D 0A    verse linefeed..
0257A0:  74 6A 3A 09 64 62 09 27 24 27 2C 30 2C 30 2C 30    tj:.db.'$',0,0,0
0257B0:  09 09 3B 28 63 61 6E 27 74 29 20 43 6C 65 61 72    ..;(can't) Clear
0257C0:  20 74 6F 20 65 6E 64 20 6F 66 20 73 63 72 65 65     to end of scree
0257D0:  6E 0D 0A 74 6B 3A 09 64 62 09 27 24 27 2C 30 2C    n..tk:.db.'$',0,
0257E0:  30 2C 30 09 09 3B 28 63 61 6E 27 74 29 20 43 6C    0,0..;(can't) Cl
0257F0:  65 61 72 20 74 6F 20 65 6E 64 20 6F 66 20 6C 69    ear to end of li
025800:  6E 65 0D 0A 45 4E 44 49 46 3B 61 64 6D 33 61 0D    ne..ENDIF;adm3a.
025810:  0A 0D 0A 49 46 20 64 65 6C 70 68 69 09 3B 20 5B    ...IF delphi.; [
025820:  37 5D 20 6E 65 77 20 73 79 73 74 65 6D 0D 0A 73    7] new system..s
025830:  79 73 76 65 72 3A 09 64 62 09 27 44 69 67 69 63    ysver:.db.'Digic
025840:  6F 6D 70 20 44 65 6C 70 68 69 20 31 30 30 24 27    omp Delphi 100$'
025850:  0D 0A 65 6E 64 69 66 3B 64 65 6C 70 68 69 0D 0A    ..endif;delphi..
025860:  0D 0A 49 46 20 73 6D 72 74 76 64 09 3B 20 5B 37    ..IF smrtvd.; [7
025870:  5D 20 6E 65 77 20 74 65 72 6D 69 6E 61 6C 0D 0A    ] new terminal..
025880:  74 74 79 74 79 70 3A 09 64 62 09 27 53 6D 61 72    ttytyp:.db.'Smar
025890:  74 76 69 64 2D 38 30 24 27 0D 0A 6F 75 74 6C 69    tvid-80$'..outli
0258A0:  6E 3A 09 64 62 09 65 73 63 2C 27 2B 27 2C 63 72    n:.db.esc,'+',cr
0258B0:  2C 6C 66 2C 74 61 62 2C 74 61 62 2C 27 24 27 0D    ,lf,tab,tab,'$'.
0258C0:  0A 65 72 61 6C 69 6E 3A 09 64 62 09 63 72 2C 65    .eralin:.db.cr,e
0258D0:  73 63 2C 27 54 24 27 09 09 09 3B 43 6C 65 61 72    sc,'T$'...;Clear
0258E0:  20 74 6F 20 65 6E 64 20 6F 66 20 6C 69 6E 65 2E     to end of line.
0258F0:  0D 0A 65 72 61 73 63 72 3A 09 64 62 09 65 73 63    ..erascr:.db.esc
025900:  30 35 09 32 2D 4A 61 6E 2D 38 35 09 76 6A 63 09    05.2-Jan-85.vjc.
025910:  6D 6F 64 75 6C 65 73 3A 63 70 34 6D 69 74 2C 63    modules:cp4mit,c
025920:  70 34 74 74 2C 63 70 34 75 74 6C 0D 0A 3B 09 54    p4tt,cp4utl..;.T
025930:  68 65 73 65 20 65 64 69 74 73 20 6D 75 73 74 20    hese edits must 
025940:  61 6C 6C 20 62 65 20 69 6E 73 74 61 6C 6C 65 64    all be installed
025950:  20 74 6F 67 65 74 68 65 72 20 61 6E 64 20 63 68     together and ch
025960:  61 6E 67 65 20 74 68 65 20 77 61 79 0D 0A 3B 09    ange the way..;.
025970:  6C 6F 67 67 69 6E 67 20 69 73 20 68 61 6E 64 6C    logging is handl
025980:  65 64 2E 20 20 54 68 65 20 6C 6F 67 20 66 69 6C    ed.  The log fil
025990:  65 20 73 70 65 63 20 69 73 20 6D 6F 76 65 64 20    e spec is moved 
0259A0:  74 6F 20 61 20 73 65 70 61 72 61 74 65 0D 0A 3B    to a separate..;
0259B0:  09 66 63 62 2C 20 61 6E 64 20 6E 6F 74 20 6F 70    .fcb, and not op
0259C0:  65 6E 65 64 20 75 6E 74 69 6C 20 61 6E 20 61 63    ened until an ac
0259D0:  74 75 61 6C 20 43 4F 4E 4E 45 43 54 20 63 6F 6D    tual CONNECT com
0259E0:  6D 61 6E 64 20 69 73 20 67 69 76 65 6E 2E 0D 0A    mand is given...
0259F0:  3B 09 54 68 69 73 20 74 61 6B 65 73 20 63 61 72    ;.This takes car
025A00:  65 20 6F 66 20 61 20 4E 41 53 54 59 20 62 75 67    e of a NASTY bug
025A10:  20 74 68 61 74 20 69 66 20 79 6F 75 20 75 73 65     that if you use
025A20:  64 20 61 6E 79 20 6F 74 68 65 72 20 66 69 6C 65    d any other file
025A30:  0D 0A 3B 09 63 6F 6D 6D 61 6E 64 20 62 65 74 77    ..;.command betw
025A40:  65 65 6E 20 74 68 65 20 4C 4F 47 20 61 6E 64 20    een the LOG and 
025A50:  43 4F 4E 4E 45 43 54 2C 20 74 68 65 20 6C 6F 67    CONNECT, the log
025A60:  20 66 69 6C 65 20 77 6F 75 6C 64 20 67 65 74 0D     file would get.
025A70:  0A 3B 09 77 72 69 74 74 65 6E 20 6F 76 65 72 20    .;.written over 
025A80:  74 68 65 20 6C 61 73 74 20 66 69 6C 65 20 75 73    the last file us
025A90:  65 64 2E 20 20 54 68 69 73 20 61 6C 73 6F 20 61    ed.  This also a
025AA0:  6C 6C 6F 77 73 20 6C 6F 67 67 69 6E 67 20 74 6F    llows logging to
025AB0:  0D 0A 3B 09 62 65 20 22 70 65 72 6D 61 6E 65 6E    ..;.be "permanen
025AC0:  74 6C 79 22 20 65 6E 61 62 6C 65 64 20 75 6E 74    tly" enabled unt
025AD0:  69 6C 20 61 6E 20 43 4C 4F 53 45 20 28 6E 65 77    il an CLOSE (new
025AE0:  20 63 6F 6D 6D 61 6E 64 29 20 66 6F 72 20 61 6C     command) for al
025AF0:  6C 0D 0A 3B 09 43 4F 4E 4E 45 43 54 20 73 65 73    l..;.CONNECT ses
025B00:  2C 27 2B 24 27 09 09 20 09 3B 43 6C 65 61 72 20    ,'+$'.. .;Clear 
025B10:  73 63 72 65 65 6E 20 61 6E 64 20 67 6F 20 68 6F    screen and go ho
025B20:  6D 65 2E 0D 0A 63 75 72 6C 64 6E 3A 09 64 62 09    me...curldn:.db.
025B30:  65 73 63 2C 27 3D 24 27 09 09 09 3B 43 75 72 73    esc,'=$'...;Curs
025B40:  6F 72 20 6C 65 61 64 2D 69 6E 0D 0A 74 74 61 62    or lead-in..ttab
025B50:  3A 09 09 09 09 09 3B 54 61 62 6C 65 20 73 74 61    :.....;Table sta
025B60:  72 74 20 6C 6F 63 61 74 69 6F 6E 2E 0D 0A 74 61    rt location...ta
025B70:  3A 09 64 62 09 28 27 4B 27 2D 31 30 30 4F 29 2C    :.db.('K'-100O),
025B80:  27 24 27 2C 30 2C 30 09 3B 43 75 72 73 6F 72 20    '$',0,0.;Cursor 
025B90:  75 70 2E 0D 0A 74 62 3A 09 64 62 09 31 32 4F 2C    up...tb:.db.12O,
025BA0:  27 24 27 2C 30 2C 30 09 09 3B 43 75 72 73 6F 72    '$',0,0..;Cursor
025BB0:  20 64 6F 77 6E 2E 0D 0A 74 63 3A 09 64 62 09 28     down...tc:.db.(
025BC0:  27 41 27 2D 31 30 30 4F 29 2C 27 24 27 2C 30 2C    'A'-100O),'$',0,
025BD0:  30 09 3B 43 75 72 73 6F 72 20 72 69 67 68 74 2E    0.;Cursor right.
025BE0:  0D 0A 74 64 3A 09 64 62 09 28 27 48 27 2D 31 30    ..td:.db.('H'-10
025BF0:  30 4F 29 2C 27 24 27 2C 30 2C 30 09 3B 43 75 72    0O),'$',0,0.;Cur
025C00:  73 6F 72 20 6C 65 66 74 2E 0D 0A 74 65 3A 09 64    sor left...te:.d
025C10:  62 09 28 27 4C 27 2D 31 30 30 4F 29 2C 27 24 27    b.('L'-100O),'$'
025C20:  2C 30 2C 30 09 3B 43 6C 65 61 72 20 73 63 72 65    ,0,0.;Clear scre
025C30:  65 6E 20 61 6E 64 20 68 6F 6D 65 20 63 75 72 73    en and home curs
025C40:  6F 72 0D 0A 74 66 3A 09 64 62 09 27 24 27 2C 30    or..tf:.db.'$',0
025C50:  2C 30 2C 30 09 09 3B 28 63 61 6E 27 74 29 20 45    ,0,0..;(can't) E
025C60:  6E 74 65 72 20 47 72 61 70 68 69 63 73 20 6D 6F    nter Graphics mo
025C70:  64 65 0D 0A 74 67 3A 09 64 62 09 27 24 27 2C 30    de..tg:.db.'$',0
025C80:  2C 30 2C 30 09 09 3B 28 63 61 6E 27 74 29 20 45    ,0,0..;(can't) E
025C90:  78 69 74 20 47 72 61 70 68 69 63 73 20 6D 6F 64    xit Graphics mod
025CA0:  65 0D 0A 74 68 3A 09 64 62 09 28 27 5A 27 2D 31    e..th:.db.('Z'-1
025CB0:  30 30 4F 29 2C 27 24 27 2C 30 2C 30 09 3B 43 75    00O),'$',0,0.;Cu
025CC0:  72 73 6F 72 20 68 6F 6D 65 2E 0D 0A 74 69 3A 09    rsor home...ti:.
025CD0:  64 62 09 28 27 4B 27 2D 31 30 30 4F 29 2C 27 24    db.('K'-100O),'$
025CE0:  27 2C 30 2C 30 09 3B 52 65 76 65 72 73 65 20 6C    ',0,0.;Reverse l
025CF0:  69 6E 65 66 65 65 64 2E 0D 0A 74 6A 3A 09 64 62    inefeed...tj:.db
025D00:  73 69 6F 6E 73 2C 20 6C 69 6B 65 20 6D 6F 73 74    sions, like most
025D10:  20 6F 74 68 65 72 20 6B 65 72 6D 69 74 73 20 64     other kermits d
025D20:  6F 2E 20 20 49 66 20 61 20 6C 6F 67 20 66 69 6C    o.  If a log fil
025D30:  65 0D 0A 3B 09 61 6C 72 65 61 64 79 20 65 78 69    e..;.already exi
025D40:  73 74 73 2C 20 69 74 20 77 69 6C 6C 20 62 65 20    sts, it will be 
025D50:  61 70 70 65 6E 64 65 64 20 74 6F 2E 20 20 41 6C    appended to.  Al
025D60:  73 6F 20 61 64 64 20 74 77 6F 20 6E 65 77 0D 0A    so add two new..
025D70:  3B 09 43 4F 4E 4E 45 43 54 20 6D 6F 64 65 20 63    ;.CONNECT mode c
025D80:  6F 6D 6D 61 6E 64 73 20 3C 65 73 63 3E 51 20 74    ommands <esc>Q t
025D90:  6F 20 73 75 73 70 65 6E 64 20 6C 6F 67 67 69 6E    o suspend loggin
025DA0:  67 20 61 6E 64 20 3C 65 73 63 3E 52 20 74 6F 0D    g and <esc>R to.
025DB0:  0A 3B 09 72 65 73 75 6D 65 2E 20 20 3C 65 73 63    .;.resume.  <esc
025DC0:  3E 52 20 6D 65 61 6E 73 20 73 6F 6D 65 74 68 69    >R means somethi
025DD0:  6E 67 20 65 6C 73 65 20 64 75 72 69 6E 67 20 54    ng else during T
025DE0:  52 41 4E 53 4D 49 54 2C 20 62 75 74 0D 0A 3B 09    RANSMIT, but..;.
025DF0:  6C 6F 67 67 69 6E 67 20 69 73 20 6E 65 76 65 72    logging is never
025E00:  20 6F 6E 20 74 68 65 6E 2C 20 73 6F 20 74 68 65     on then, so the
025E10:  72 65 20 73 68 6F 75 6C 64 6E 27 74 20 62 65 20    re shouldn't be 
025E20:  61 6E 79 20 63 6F 6E 66 6C 69 63 74 2E 0D 0A 3B    any conflict...;
025E30:  09 49 20 61 6C 73 6F 20 63 68 61 6E 67 65 64 20    .I also changed 
025E40:  74 68 65 20 77 72 69 74 65 20 63 6F 64 65 2C 20    the write code, 
025E50:  73 6F 20 74 68 61 74 20 69 74 20 63 61 6E 20 68    so that it can h
025E60:  61 6E 64 6C 65 20 6F 6E 65 20 6D 6F 72 65 0D 0A    andle one more..
025E70:  3B 09 63 68 61 72 61 63 74 65 72 20 61 66 74 65    ;.character afte
025E80:  72 20 74 68 65 20 58 4F 46 46 20 69 73 20 73 65    r the XOFF is se
025E90:  6E 64 20 74 6F 20 73 74 6F 70 20 74 68 65 20 68    nd to stop the h
025EA0:  6F 73 74 2E 20 20 54 68 69 73 20 61 6C 6C 6F 77    ost.  This allow
025EB0:  73 0D 0A 3B 09 61 20 6C 69 74 74 6C 65 20 22 73    s..;.a little "s
025EC0:  6C 6F 70 22 20 66 6F 72 20 73 79 73 74 65 6D 73    lop" for systems
025ED0:  20 74 68 61 74 20 64 6F 6E 27 74 20 73 74 6F 70     that don't stop
025EE0:  20 69 6D 6D 65 64 69 61 74 65 6C 79 20 28 73 75     immediately (su
025EF0:  63 68 0D 0A 3B 09 61 73 20 54 4F 50 53 31 30 29    ch..;.as TOPS10)
025F00:  09 65 73 63 2C 27 59 24 27 2C 30 09 09 3B 43 6C    .esc,'Y$',0..;Cl
025F10:  65 61 72 20 74 6F 20 65 6E 64 20 6F 66 20 73 63    ear to end of sc
025F20:  72 65 65 6E 0D 0A 74 6B 3A 20 20 20 20 20 64 62    reen..tk:     db
025F30:  20 20 20 20 20 20 65 73 63 2C 27 54 24 27 2C 30          esc,'T$',0
025F40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 43                  ;C
025F50:  6C 65 61 72 20 74 6F 20 65 6E 64 20 6F 66 20 6C    lear to end of l
025F60:  69 6E 65 0D 0A 45 4E 44 49 46 3B 73 6D 72 74 76    ine..ENDIF;smrtv
025F70:  64 0D 0A 6F 76 6C 65 6E 64 20 20 65 71 75 20 20    d..ovlend  equ  
025F80:  20 20 20 24 20 20 20 20 20 20 20 20 20 20 20 20       $            
025F90:  20 20 20 20 20 20 20 20 20 20 20 3B 45 6E 64 20               ;End 
025FA0:  6F 66 20 6F 76 65 72 6C 61 79 0D 0A 20 20 20 20    of overlay..    
025FB0:  20 20 20 20 0D 0A 20 20 20 20 20 20 20 20 45 4E        ..        EN
025FC0:  44 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1A    D              .
025FD0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
025FE0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
025FF0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
026000:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026010:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026020:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026030:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026040:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026050:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0260A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0260B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0260C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0260D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0260E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0260F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026100:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
026110:  20 00 00 00 02 09 4E E5 20 00 C1 02 00 00 00 02     .....N. .......
026120:  20 00 C6 02 00 00 00 02 20 00 C2 02 00 00 00 02     ....... .......
026130:  20 00 C7 02 00 00 00 02 20 00 C3 02 00 00 00 02     ....... .......
026140:  20 00 C8 02 00 00 00 02 20 00 C4 02 00 00 00 02     ....... .......
026150:  20 00 C9 02 00 00 00 02 20 00 C5 02 00 00 00 02     ....... .......
026160:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026170:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026180:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026190:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0261A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0261B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0261C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0261D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0261E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0261F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026200:  2C 20 62 75 74 20 69 74 20 64 69 64 6E 27 74 20    , but it didn't 
026210:  68 65 6C 70 20 6D 75 63 68 2E 0D 0A 3B 0D 0A 3B    help much...;..;
026220:  70 63 63 30 30 38 09 32 2D 4A 61 6E 2D 38 35 09    pcc008.2-Jan-85.
026230:  76 6A 63 09 6D 6F 64 75 6C 65 73 3A 63 70 34 64    vjc.modules:cp4d
026240:  65 66 2C 63 70 34 74 74 2C 63 70 34 75 74 6C 0D    ef,cp4tt,cp4utl.
026250:  0A 3B 09 4B 65 79 62 6F 61 72 64 20 69 6E 70 75    .;.Keyboard inpu
026260:  74 20 64 75 72 69 6E 67 20 43 4F 4E 4E 45 43 54    t during CONNECT
026270:  20 6D 6F 64 65 20 63 61 6E 20 67 65 74 20 6C 6F     mode can get lo
026280:  63 6B 65 64 20 6F 75 74 20 69 66 0D 0A 3B 09 74    cked out if..;.t
026290:  68 65 72 65 20 69 73 20 65 6E 6F 75 67 68 20 69    here is enough i
0262A0:  6E 70 75 74 20 66 72 6F 6D 20 74 68 65 20 6D 6F    nput from the mo
0262B0:  64 65 6D 20 70 6F 72 74 20 74 6F 20 6B 65 65 70    dem port to keep
0262C0:  20 70 72 74 63 68 72 0D 0A 3B 09 62 75 73 79 2E     prtchr..;.busy.
0262D0:  20 20 54 68 69 73 20 63 61 6E 20 68 61 70 70 65      This can happe
0262E0:  6E 20 66 6F 72 20 65 78 61 6D 70 6C 65 2C 20 69    n for example, i
0262F0:  66 20 74 68 65 20 70 72 69 6E 74 65 72 20 69 73    f the printer is
026300:  20 72 75 6E 6E 69 6E 67 0D 0A 3B 09 61 74 20 74     running..;.at t
026310:  68 65 20 73 61 6D 65 20 73 70 65 65 64 20 61 73    he same speed as
026320:  20 74 68 65 20 6D 6F 64 65 6D 20 6C 69 6E 65 2C     the modem line,
026330:  20 6C 65 61 76 69 6E 67 20 79 6F 75 20 68 65 6C     leaving you hel
026340:  70 6C 65 73 73 20 74 6F 0D 0A 3B 09 74 75 72 6E    pless to..;.turn
026350:  20 69 74 20 6F 66 66 20 6F 72 20 61 62 6F 72 74     it off or abort
026360:  20 74 68 65 20 68 6F 73 74 2E 20 20 41 64 64 20     the host.  Add 
026370:  61 20 66 61 69 72 6E 65 73 73 20 63 6F 75 6E 74    a fairness count
026380:  2C 20 73 6F 20 74 68 61 74 0D 0A 3B 09 61 74 20    , so that..;.at 
026390:  6C 65 61 73 74 20 65 76 65 72 79 20 70 72 66 61    least every prfa
0263A0:  69 72 20 63 68 61 72 61 63 74 65 72 73 20 77 65    ir characters we
0263B0:  20 6C 6F 6F 6B 20 61 74 20 63 6F 6E 73 6F 6C 65     look at console
0263C0:  20 69 6E 70 75 74 2E 0D 0A 3B 0D 0A 3B 70 63 63     input...;..;pcc
0263D0:  30 31 32 09 34 2D 4A 61 6E 2D 38 35 09 76 6A 63    012.4-Jan-85.vjc
0263E0:  09 6D 6F 64 75 6C 65 73 3A 63 70 34 6D 69 74 2C    .modules:cp4mit,
0263F0:  63 70 34 74 74 2C 63 70 34 75 74 6C 0D 0A 3B 09    cp4tt,cp4utl..;.
026400:  65 2E 0D 0A 09 63 70 69 09 30 46 46 48 09 09 3B    e....cpi.0FFH..;
026410:  53 75 63 63 65 65 64 3F 0D 0A 09 6A 6E 7A 09 78    Succeed?...jnz.x
026420:  6D 69 74 31 0D 0A 09 6C 78 69 09 64 2C 65 72 6D    mit1...lxi.d,erm
026430:  73 31 35 0D 0A 09 63 61 6C 6C 09 70 72 74 73 74    s15...call.prtst
026440:  72 09 09 3B 44 69 73 70 6C 61 79 20 65 72 72 6F    r..;Display erro
026450:  72 20 6D 73 67 2E 0D 0A 09 6A 6D 70 09 6B 65 72    r msg....jmp.ker
026460:  6D 69 74 0D 0A 0D 0A 78 6D 69 74 31 3A 09 6C 78    mit....xmit1:.lx
026470:  69 09 64 2C 69 6E 6D 73 31 39 09 3B 4F 75 74 70    i.d,inms19.;Outp
026480:  75 74 20 73 74 61 72 74 20 6D 65 73 73 61 67 65    ut start message
026490:  2E 0D 0A 09 63 61 6C 6C 09 70 72 74 73 74 72 0D    ....call.prtstr.
0264A0:  0A 09 63 61 6C 6C 09 65 73 63 70 72 09 09 3B 50    ..call.escpr..;P
0264B0:  72 69 6E 74 20 74 68 65 20 65 73 63 61 70 65 20    rint the escape 
0264C0:  63 68 61 72 61 63 74 65 72 2E 0D 0A 09 6C 78 69    character....lxi
0264D0:  09 64 2C 69 6E 6D 73 32 30 09 3B 4F 75 74 70 75    .d,inms20.;Outpu
0264E0:  74 20 32 6E 64 20 70 61 72 74 2E 0D 0A 09 63 61    t 2nd part....ca
0264F0:  6C 6C 09 70 72 74 73 74 72 0D 0A 09 63 61 6C 6C    ll.prtstr...call
026500:  09 65 73 63 70 72 09 09 3B 50 72 69 6E 74 20 74    .escpr..;Print t
026510:  68 65 20 65 73 63 61 70 65 20 63 68 61 72 61 63    he escape charac
026520:  74 65 72 2E 0D 0A 09 6C 78 69 09 64 2C 69 6E 6D    ter....lxi.d,inm
026530:  73 32 31 09 3B 50 72 69 6E 74 20 74 68 65 20 72    s21.;Print the r
026540:  65 73 74 2E 0D 0A 09 63 61 6C 6C 09 70 72 74 73    est....call.prts
026550:  74 72 0D 0A 09 6D 76 69 09 61 2C 31 09 09 3B 53    tr...mvi.a,1..;S
026560:  74 61 72 74 20 66 69 6C 65 20 49 2F 4F 2E 0D 0A    tart file I/O...
026570:  09 73 74 61 09 66 69 6C 65 69 6F 0D 0A 09 78 72    .sta.fileio...xr
026580:  61 09 61 09 09 3B 43 6C 65 61 72 20 58 4F 46 46    a.a..;Clear XOFF
026590:  20 66 6C 61 67 2E 0D 0A 09 73 74 61 09 78 6F 66     flag....sta.xof
0265A0:  66 6C 67 0D 0A 09 3B 20 66 61 6C 6C 20 74 68 72    flg...; fall thr
0265B0:  6F 75 67 68 20 69 6E 74 6F 20 78 6E 65 78 74 2E    ough into xnext.
0265C0:  2E 2E 0D 0A 3B 0C 0D 0A 3B 09 61 73 73 65 6D 62    ....;...;.assemb
0265D0:  6C 65 20 61 6E 6F 74 68 65 72 20 6C 69 6E 65 20    le another line 
0265E0:  66 72 6F 6D 20 74 68 65 20 64 69 73 6B 20 66 69    from the disk fi
0265F0:  6C 65 2E 0D 0A 3B 09 68 65 72 65 20 66 72 6F 6D    le...;.here from
026600:  55 73 65 20 74 68 65 20 62 69 67 20 62 75 66 66    Use the big buff
026610:  65 72 20 66 6F 72 20 74 68 65 20 6C 6F 67 20 66    er for the log f
026620:  69 6C 65 2E 20 20 4D 6F 76 65 20 74 68 65 20 6C    ile.  Move the l
026630:  6F 67 20 66 69 6C 65 20 62 61 63 6B 0D 0A 3B 09    og file back..;.
026640:  69 6E 74 6F 20 74 68 65 20 63 6F 6D 6D 6F 6E 20    into the common 
026650:  66 63 62 20 61 6E 64 20 6F 6E 6C 79 20 73 61 76    fcb and only sav
026660:  65 20 74 68 65 20 64 72 69 76 65 2C 20 6E 61 6D    e the drive, nam
026670:  65 2C 20 61 6E 64 0D 0A 3B 09 65 78 74 65 6E 73    e, and..;.extens
026680:  69 6F 6E 20 62 65 74 77 65 65 6E 20 63 6F 6E 6E    ion between conn
026690:  65 63 74 73 2E 20 20 41 64 64 20 6E 65 77 20 72    ects.  Add new r
0266A0:  6F 75 74 69 6E 65 73 20 74 6F 20 63 70 34 75 74    outines to cp4ut
0266B0:  6C 20 74 6F 0D 0A 3B 09 63 72 65 61 74 65 20 6F    l to..;.create o
0266C0:  72 20 61 70 70 65 6E 64 20 74 6F 20 61 6E 20 65    r append to an e
0266D0:  78 69 73 74 69 6E 67 20 66 69 6C 65 2C 20 61 6E    xisting file, an
0266E0:  64 20 74 6F 20 63 6F 6E 64 69 74 69 6F 6E 61 6C    d to conditional
0266F0:  6C 79 0D 0A 3B 09 61 64 76 61 6E 63 65 20 62 75    ly..;.advance bu
026700:  66 66 65 72 73 20 6F 6E 6C 79 20 69 66 20 69 6E    ffers only if in
026710:  20 6D 65 6D 6F 72 79 2E 20 20 52 65 6D 6F 76 65     memory.  Remove
026720:  20 65 64 69 74 20 70 63 63 30 30 33 20 74 68 61     edit pcc003 tha
026730:  74 0D 0A 3B 09 61 6C 6C 6F 77 73 20 6F 6E 65 20    t..;.allows one 
026740:  6D 6F 72 65 20 63 68 61 72 61 63 74 65 72 20 61    more character a
026750:  66 74 65 72 20 74 68 65 20 78 6F 66 66 2C 20 73    fter the xoff, s
026760:  69 6E 63 65 20 69 74 20 64 69 64 6E 27 74 0D 0A    ince it didn't..
026770:  3B 09 72 65 61 6C 6C 79 20 77 6F 72 6B 20 76 65    ;.really work ve
026780:  72 79 20 77 65 6C 6C 20 61 6E 64 20 64 6F 65 73    ry well and does
026790:  20 6E 6F 74 20 66 69 74 20 69 6E 20 77 65 6C 6C     not fit in well
0267A0:  20 77 69 74 68 20 74 68 65 20 77 61 79 0D 0A 3B     with the way..;
0267B0:  09 74 68 65 20 62 75 66 66 65 72 20 61 64 76 61    .the buffer adva
0267C0:  6E 63 69 6E 67 20 72 6F 75 74 69 6E 65 73 20 61    ncing routines a
0267D0:  72 65 20 73 65 74 20 75 70 2E 20 20 49 66 20 73    re set up.  If s
0267E0:  6F 6D 65 6F 6E 65 20 73 74 69 6C 6C 0D 0A 3B 09    omeone still..;.
0267F0:  74 68 69 6E 6B 73 20 74 68 69 73 20 77 6F 75 6C    thinks this woul
026800:  3A 20 70 72 65 76 69 6F 75 73 20 70 61 67 65 2C    : previous page,
026810:  20 72 65 78 6D 69 74 0D 0A 0D 0A 78 6E 65 78 74     rexmit....xnext
026820:  3A 09 63 61 6C 6C 09 70 72 74 63 68 72 09 09 3B    :.call.prtchr..;
026830:  20 43 6F 70 79 20 63 68 61 72 61 63 74 65 72 73     Copy characters
026840:  20 66 72 6F 6D 20 63 6F 6D 6D 20 6C 69 6E 65 20     from comm line 
026850:  74 6F 20 63 6F 6E 73 6F 6C 65 0D 0A 09 6D 76 69    to console...mvi
026860:  09 63 2C 63 6F 6E 73 74 61 09 3B 20 20 75 6E 74    .c,consta.;  unt
026870:  69 6C 20 75 73 65 72 20 74 79 70 65 73 20 61 6E    il user types an
026880:  79 74 68 69 6E 67 20 6F 6E 20 74 68 65 20 63 6F    ything on the co
026890:  6E 73 6F 6C 65 2E 0D 0A 09 63 61 6C 6C 09 62 64    nsole....call.bd
0268A0:  6F 73 0D 0A 09 6F 72 61 09 61 0D 0A 09 6A 7A 09    os...ora.a...jz.
0268B0:  78 6E 65 78 74 09 09 3B 20 6E 6F 74 68 69 6E 67    xnext..; nothing
0268C0:  20 61 74 20 63 6F 6E 73 6F 6C 65 20 79 65 74 2E     at console yet.
0268D0:  0D 0A 09 6C 64 61 09 65 6F 66 6C 61 67 09 09 3B    ...lda.eoflag..;
0268E0:  45 4F 46 20 65 6E 63 6F 75 6E 74 65 72 65 64 3F    EOF encountered?
0268F0:  0D 0A 09 6F 72 61 09 61 0D 0A 09 6A 6E 7A 09 78    ...ora.a...jnz.x
026900:  65 6E 64 09 09 3B 59 65 73 2C 20 66 69 6E 69 73    end..;Yes, finis
026910:  68 2E 0D 0A 09 78 72 61 09 61 09 09 3B 52 65 73    h....xra.a..;Res
026920:  65 74 20 6C 69 6E 65 20 62 75 66 66 65 72 20 63    et line buffer c
026930:  6F 75 6E 74 65 72 2E 0D 0A 09 6D 6F 76 09 63 2C    ounter....mov.c,
026940:  61 0D 0A 09 73 74 61 09 63 6D 61 66 6C 67 09 09    a...sta.cmaflg..
026950:  3B 52 65 73 65 74 20 63 61 72 72 69 61 67 65 20    ;Reset carriage 
026960:  72 65 74 75 72 6E 20 66 6C 61 67 2E 0D 0A 09 6C    return flag....l
026970:  78 69 09 64 2C 63 6D 64 62 75 66 09 3B 55 73 65    xi.d,cmdbuf.;Use
026980:  20 63 6F 6D 6E 64 20 62 75 66 66 65 72 20 61 73     comnd buffer as
026990:  20 6C 69 6E 65 20 62 75 66 66 65 72 2E 0D 0A 09     line buffer....
0269A0:  6C 68 6C 64 09 62 75 66 70 6E 74 09 09 3B 20 47    lhld.bufpnt..; G
0269B0:  65 74 20 63 75 72 72 65 6E 74 20 62 75 66 66 65    et current buffe
0269C0:  72 20 70 6F 69 6E 74 65 72 2E 0D 0A 09 6C 64 61    r pointer....lda
0269D0:  09 63 68 72 63 6E 74 09 09 3B 20 47 65 74 20 63    .chrcnt..; Get c
0269E0:  75 72 72 65 6E 74 20 62 79 74 65 20 63 6F 75 6E    urrent byte coun
0269F0:  74 0D 0A 09 6D 6F 76 09 62 2C 61 09 09 3B 20 20    t...mov.b,a..;  
026A00:  64 20 62 65 20 75 73 65 66 75 6C 2C 20 69 74 20    d be useful, it 
026A10:  63 6F 75 6C 64 20 62 65 20 70 75 74 20 62 61 63    could be put bac
026A20:  6B 20 69 6E 20 77 69 74 68 20 61 0D 0A 3B 09 6C    k in with a..;.l
026A30:  69 74 74 6C 65 20 6D 6F 72 65 20 77 6F 72 6B 2E    ittle more work.
026A40:  0D 0A 3B 09 0D 0A 3B 09 57 68 69 6C 65 20 74 65    ..;...;.While te
026A50:  73 74 69 6E 67 20 74 68 69 73 20 65 64 69 74 2C    sting this edit,
026A60:  20 49 20 61 6C 73 6F 20 6E 6F 74 69 63 65 64 20     I also noticed 
026A70:  61 6E 6F 74 68 65 72 20 62 75 67 20 74 68 61 74    another bug that
026A80:  0D 0A 3B 09 74 68 65 20 63 6F 6D 6D 61 6E 64 20    ..;.the command 
026A90:  70 61 72 73 69 6E 67 20 72 6F 75 74 69 6E 65 73    parsing routines
026AA0:  20 64 6F 20 6E 6F 74 20 6C 69 6D 69 74 20 6F 72     do not limit or
026AB0:  20 63 68 65 63 6B 20 74 68 65 0D 0A 3B 09 6C 65     check the..;.le
026AC0:  6E 67 74 68 20 6F 66 20 63 6F 6D 6D 61 6E 64 20    ngth of command 
026AD0:  6C 69 6E 65 73 20 6F 72 20 66 69 6C 65 20 73 70    lines or file sp
026AE0:  65 63 73 2C 20 74 72 61 73 68 69 6E 67 20 77 68    ecs, trashing wh
026AF0:  61 74 20 65 76 65 72 0D 0A 3B 09 63 6F 6D 65 73    at ever..;.comes
026B00:  20 61 66 74 65 72 20 74 68 65 6D 2E 20 20 43 75     after them.  Cu
026B10:  72 72 65 6E 74 6C 79 20 62 65 63 61 75 73 65 20    rrently because 
026B20:  6F 66 20 77 68 65 72 65 20 74 68 65 20 66 63 62    of where the fcb
026B30:  20 61 6E 64 0D 0A 3B 09 63 6F 6D 6D 61 6E 64 20     and..;.command 
026B40:  62 75 66 66 65 72 20 61 72 65 20 6C 6F 63 61 74    buffer are locat
026B50:  65 64 2C 20 74 68 69 73 20 64 6F 65 73 20 6E 6F    ed, this does no
026B60:  74 20 75 73 75 61 6C 6C 79 20 63 61 75 73 65 20    t usually cause 
026B70:  61 0D 0A 3B 09 70 72 6F 62 6C 65 6D 2C 20 62 75    a..;.problem, bu
026B80:  74 20 63 6F 75 6C 64 20 69 66 20 61 6E 20 65 78    t could if an ex
026B90:  74 72 65 6D 65 6C 79 20 6C 6F 6E 67 20 6C 69 6E    tremely long lin
026BA0:  65 20 77 61 73 20 74 79 70 65 64 20 69 6E 2C 0D    e was typed in,.
026BB0:  0A 3B 09 6F 72 20 69 6E 20 74 68 65 20 66 75 74    .;.or in the fut
026BC0:  75 72 65 20 6D 75 6C 74 69 70 6C 65 20 66 63 62    ure multiple fcb
026BD0:  73 20 64 65 66 69 6E 65 64 20 65 6C 73 65 77 68    s defined elsewh
026BE0:  65 72 65 20 69 6E 20 6D 65 6D 6F 72 79 0D 0A 3B    ere in memory..;
026BF0:  09 77 65 72 65 20 75 73 65 64 2E 20 20 4D 61 79    .were used.  May
026C00:  69 6E 20 42 0D 0A 78 6D 69 74 33 30 3A 09 64 63    in B..xmit30:.dc
026C10:  72 09 62 09 09 3B 20 41 73 73 75 6D 65 20 74 68    r.b..; Assume th
026C20:  65 72 65 27 73 20 61 20 63 68 61 72 61 63 74 65    ere's a characte
026C30:  72 20 74 68 65 72 65 0D 0A 09 6A 70 09 78 6D 69    r there...jp.xmi
026C40:  74 32 09 09 3B 20 49 66 20 74 68 65 72 65 20 77    t2..; If there w
026C50:  61 73 2C 20 70 72 6F 63 65 65 64 2E 0D 0A 09 63    as, proceed....c
026C60:  61 6C 6C 09 69 6E 62 75 66 09 09 3B 20 54 68 65    all.inbuf..; The
026C70:  72 65 20 77 61 73 6E 27 74 2E 20 20 54 72 79 20    re wasn't.  Try 
026C80:  66 6F 72 20 61 6E 6F 74 68 65 72 20 62 75 66 66    for another buff
026C90:  65 72 2E 0D 0A 09 20 6A 6D 70 09 78 6D 69 74 33    er.... jmp.xmit3
026CA0:  38 09 09 3B 20 45 6E 64 20 6F 66 20 66 69 6C 65    8..; End of file
026CB0:  2E 0D 0A 09 6C 68 6C 64 09 62 75 66 70 6E 74 09    ....lhld.bufpnt.
026CC0:  09 3B 20 47 6F 74 20 61 6E 6F 74 68 65 72 20 62    .; Got another b
026CD0:  75 66 66 65 72 2E 20 20 47 65 74 20 6E 65 77 20    uffer.  Get new 
026CE0:  70 6F 69 6E 74 65 72 20 69 6E 20 48 4C 0D 0A 09    pointer in HL...
026CF0:  6C 64 61 09 63 68 72 63 6E 74 09 09 3B 20 20 61    lda.chrcnt..;  a
026D00:  6E 64 20 6E 65 77 20 62 79 74 65 20 63 6F 75 6E    nd new byte coun
026D10:  74 0D 0A 09 6D 6F 76 09 62 2C 61 09 09 3B 20 20    t...mov.b,a..;  
026D20:  69 6E 20 42 0D 0A 78 6D 69 74 32 3A 09 6D 6F 76    in B..xmit2:.mov
026D30:  09 61 2C 6D 09 09 3B 47 65 74 20 61 20 63 68 61    .a,m..;Get a cha
026D40:  72 61 63 74 65 72 20 66 72 6F 6D 20 64 69 73 6B    racter from disk
026D50:  20 62 75 66 66 65 72 2E 0D 0A 09 69 6E 78 09 68     buffer....inx.h
026D60:  0D 0A 09 61 6E 69 09 37 46 48 09 09 3B 4D 61 73    ...ani.7FH..;Mas
026D70:  6B 20 37 20 62 69 74 73 2E 0D 0A 09 6A 7A 09 78    k 7 bits....jz.x
026D80:  6D 69 74 33 30 09 09 3B 53 6B 69 70 20 6E 75 6C    mit30..;Skip nul
026D90:  6C 73 2E 0D 0A 09 63 70 69 09 63 72 09 09 3B 43    ls....cpi.cr..;C
026DA0:  61 72 72 69 61 67 65 20 72 65 74 75 72 6E 3F 0D    arriage return?.
026DB0:  0A 09 6A 7A 09 78 6D 69 74 33 32 0D 0A 09 63 70    ..jz.xmit32...cp
026DC0:  69 09 73 75 62 74 09 09 3B 43 54 52 4C 2D 5A 20    i.subt..;CTRL-Z 
026DD0:  28 73 75 62 73 74 69 74 75 74 65 29 3F 0D 0A 09    (substitute)?...
026DE0:  6A 7A 09 78 6D 69 74 33 37 0D 0A 09 63 70 69 09    jz.xmit37...cpi.
026DF0:  6C 66 09 09 3B 4C 69 6E 65 20 66 65 65 64 3F 0D    lf..;Line feed?.
026E00:  62 65 20 74 68 69 73 20 73 68 6F 75 6C 64 20 62    be this should b
026E10:  65 20 70 75 74 20 6F 6E 20 74 68 65 20 62 75 67    e put on the bug
026E20:  20 6C 69 73 74 0D 0A 3B 09 73 6F 6D 65 77 68 65     list..;.somewhe
026E30:  72 65 2E 0D 0A 3B 0D 0A 3B 20 65 64 69 74 20 33    re...;..; edit 3
026E40:  3A 20 4A 75 6C 79 20 32 37 2C 20 31 39 38 34 0D    : July 27, 1984.
026E50:  0A 3B 09 41 6C 6C 6F 77 20 61 73 73 65 6D 62 6C    .;.Allow assembl
026E60:  79 20 77 69 74 68 20 4C 41 53 4D 3A 20 74 6F 20    y with LASM: to 
026E70:  43 50 34 54 54 20 69 73 20 6C 69 6E 6B 65 64 20    CP4TT is linked 
026E80:  62 79 20 43 50 34 50 4B 54 2C 20 61 6E 64 20 6C    by CP4PKT, and l
026E90:  69 6E 6B 73 0D 0A 3B 09 74 6F 20 43 50 34 43 50    inks..;.to CP4CP
026EA0:  4D 3B 20 72 65 6D 6F 76 65 20 65 78 63 6C 61 6D    M; remove exclam
026EB0:  61 74 69 6F 6E 20 70 6F 69 6E 74 73 20 73 6F 20    ation points so 
026EC0:  61 73 20 6E 6F 74 20 74 6F 20 63 6F 6E 66 75 73    as not to confus
026ED0:  65 20 4C 41 53 4D 2E 0D 0A 3B 09 41 64 64 20 54    e LASM...;.Add T
026EE0:  6F 61 64 20 48 61 6C 6C 20 54 41 43 74 72 61 70    oad Hall TACtrap
026EF0:  20 74 6F 20 54 52 41 4E 53 4D 49 54 20 63 6F 6D     to TRANSMIT com
026F00:  6D 61 6E 64 20 28 54 41 43 20 69 6E 74 65 72 63    mand (TAC interc
026F10:  65 70 74 20 63 68 61 72 61 63 74 65 72 0D 0A 3B    ept character..;
026F20:  09 69 73 20 6F 6E 6C 79 20 64 6F 75 62 6C 65 64    .is only doubled
026F30:  20 69 66 20 69 74 27 73 20 64 61 74 61 3B 20 77     if it's data; w
026F40:  68 65 6E 20 74 79 70 65 64 20 62 79 20 74 68 65    hen typed by the
026F50:  20 75 73 65 72 2C 20 74 68 65 79 27 72 65 20 6E     user, they're n
026F60:  6F 74 0D 0A 3B 09 61 75 74 6F 6D 61 74 69 63 61    ot..;.automatica
026F70:  6C 6C 79 20 64 6F 75 62 6C 65 64 29 0D 0A 3B 0D    lly doubled)..;.
026F80:  0A 3B 20 65 64 69 74 20 32 3A 20 4A 75 6E 65 20    .; edit 2: June 
026F90:  37 2C 20 31 39 38 34 0D 0A 3B 09 66 6F 72 6D 61    7, 1984..;.forma
026FA0:  74 74 69 6E 67 20 61 6E 64 20 64 6F 63 75 6D 65    tting and docume
026FB0:  6E 74 61 74 69 6F 6E 3B 20 61 64 64 20 6D 6F 64    ntation; add mod
026FC0:  75 6C 65 20 76 65 72 73 69 6F 6E 20 6E 75 6D 62    ule version numb
026FD0:  65 72 3B 20 6D 61 6B 65 20 73 75 72 65 0D 0A 3B    er; make sure..;
026FE0:  09 63 6F 6E 73 6F 6C 65 20 69 73 20 73 65 6C 65    .console is sele
026FF0:  63 74 65 64 20 77 68 65 6E 20 6C 65 61 76 69 6E    cted when leavin
027000:  0A 09 6A 7A 09 78 6D 69 74 33 39 0D 0A 09 73 74    ..jz.xmit39...st
027010:  61 78 09 64 09 09 3B 53 61 76 65 20 74 6F 20 62    ax.d..;Save to b
027020:  75 66 66 65 72 2E 0D 0A 09 69 6E 78 09 64 0D 0A    uffer....inx.d..
027030:  09 6C 64 61 09 63 6D 61 66 6C 67 09 09 3B 43 61    .lda.cmaflg..;Ca
027040:  72 72 69 61 67 65 20 72 65 74 75 72 6E 20 73 65    rriage return se
027050:  65 6E 3F 0D 0A 09 6F 72 61 09 61 0D 0A 09 6A 6E    en?...ora.a...jn
027060:  7A 09 78 6D 69 74 33 31 09 09 3B 59 65 73 2C 20    z.xmit31..;Yes, 
027070:  64 6F 6E 27 74 20 63 6F 75 6E 74 20 74 68 69 73    don't count this
027080:  20 63 68 61 72 61 63 74 65 72 2E 0D 0A 09 69 6E     character....in
027090:  72 09 63 09 09 3B 43 6F 75 6E 74 20 69 74 2E 0D    r.c..;Count it..
0270A0:  0A 78 6D 69 74 33 31 3A 09 6A 6D 70 09 78 6D 69    .xmit31:.jmp.xmi
0270B0:  74 33 30 09 09 3B 4C 6F 6F 70 20 66 6F 72 20 6E    t30..;Loop for n
0270C0:  65 78 74 20 69 6E 70 75 74 20 62 79 74 65 2E 0D    ext input byte..
0270D0:  0A 0D 0A 3B 20 43 61 72 72 69 61 67 65 20 72 65    ...; Carriage re
0270E0:  74 75 72 6E 20 73 65 65 6E 2E 20 20 53 74 61 72    turn seen.  Star
0270F0:  74 20 64 69 73 63 61 72 64 69 6E 67 20 63 68 61    t discarding cha
027100:  72 61 63 74 65 72 73 20 75 6E 74 69 6C 20 77 65    racters until we
027110:  20 73 65 65 20 61 20 6C 69 6E 65 2D 66 65 65 64     see a line-feed
027120:  2E 0D 0A 78 6D 69 74 33 32 3A 09 73 74 61 09 63    ...xmit32:.sta.c
027130:  6D 61 66 6C 67 09 09 3B 4D 61 72 6B 20 72 65 74    maflg..;Mark ret
027140:  75 72 6E 20 73 65 65 6E 2E 0D 0A 09 6A 6D 70 09    urn seen....jmp.
027150:  78 6D 69 74 33 30 09 09 3B 41 6E 64 20 63 6F 6E    xmit30..;And con
027160:  74 69 6E 75 65 2E 0D 0A 0D 0A 3B 20 43 6F 6E 74    tinue.....; Cont
027170:  72 6F 6C 2D 5A 20 73 65 65 6E 2E 20 46 6F 72 63    rol-Z seen. Forc
027180:  65 20 65 6E 64 20 6F 66 20 66 69 6C 65 2C 20 61    e end of file, a
027190:  6E 64 20 73 65 6E 64 20 74 68 65 20 63 75 72 72    nd send the curr
0271A0:  65 6E 74 20 6C 69 6E 65 2E 0D 0A 78 6D 69 74 33    ent line...xmit3
0271B0:  37 3A 09 73 74 61 09 65 6F 66 6C 61 67 09 09 3B    7:.sta.eoflag..;
0271C0:  4D 61 72 6B 20 45 4F 46 20 66 6F 72 20 6E 65 78    Mark EOF for nex
0271D0:  74 20 6C 69 6E 65 2E 0D 0A 09 3B 20 66 61 6C 6C    t line....; fall
0271E0:  20 74 68 72 6F 75 67 68 2E 2E 2E 0D 0A 3B 20 45     through.....; E
0271F0:  6E 64 20 6F 66 20 46 69 6C 65 20 65 6E 63 6F 75    nd of File encou
027200:  67 20 69 6E 74 63 68 72 2E 0D 0A 3B 0D 0A 3B 20    g intchr...;..; 
027210:  65 64 69 74 20 31 3A 20 4D 61 79 2C 20 31 39 38    edit 1: May, 198
027220:  34 0D 0A 3B 09 65 78 74 72 61 63 74 65 64 20 66    4..;.extracted f
027230:  72 6F 6D 20 43 50 4D 42 41 53 45 2E 4D 38 30 20    rom CPMBASE.M80 
027240:  76 65 72 73 69 6F 6E 20 33 2E 39 3B 20 6D 6F 64    version 3.9; mod
027250:  69 66 69 63 61 74 69 6F 6E 73 20 61 72 65 20 64    ifications are d
027260:  65 73 63 72 69 62 65 64 0D 0A 3B 09 69 6E 20 74    escribed..;.in t
027270:  68 65 20 61 63 63 6F 6D 70 61 6E 79 69 6E 67 20    he accompanying 
027280:  2E 55 50 44 20 66 69 6C 65 2E 0D 0A 0D 0A 74 74    .UPD file.....tt
027290:  76 65 72 3A 09 64 62 09 27 43 50 34 54 54 2E 41    ver:.db.'CP4TT.A
0272A0:  53 4D 20 20 28 34 29 20 20 31 33 2D 4A 61 6E 2D    SM  (4)  13-Jan-
0272B0:  38 35 24 27 0D 0A 0D 0A 3B 09 54 68 69 73 20 69    85$'....;.This i
0272C0:  73 20 74 68 65 20 54 52 41 4E 53 4D 49 54 20 63    s the TRANSMIT c
0272D0:  6F 6D 6D 61 6E 64 2E 20 20 49 74 20 61 74 74 65    ommand.  It atte
0272E0:  6D 70 74 73 20 74 6F 20 73 65 6E 64 20 61 20 66    mpts to send a f
0272F0:  69 6C 65 2C 20 65 76 65 6E 0D 0A 3B 09 74 68 6F    ile, even..;.tho
027300:  75 67 68 20 74 68 65 72 65 20 69 73 20 6E 6F 20    ugh there is no 
027310:  4B 45 52 4D 49 54 20 6F 6E 20 74 68 65 20 6F 74    KERMIT on the ot
027320:  68 65 72 20 73 69 64 65 2E 0D 0A 3B 09 68 65 72    her side...;.her
027330:  65 20 66 72 6F 6D 3A 20 6B 65 72 6D 69 74 0D 0A    e from: kermit..
027340:  0D 0A 78 6D 69 74 3A 09 6D 76 69 09 61 2C 63 6D    ..xmit:.mvi.a,cm
027350:  6F 66 69 09 09 3B 50 61 72 73 65 20 61 6E 20 69    ofi..;Parse an i
027360:  6E 70 75 74 20 66 69 6C 65 20 73 70 65 63 20 28    nput file spec (
027370:  6E 6F 6E 2D 77 69 6C 64 29 2E 0D 0A 09 6C 78 69    non-wild)....lxi
027380:  09 64 2C 66 63 62 09 09 3B 47 69 76 65 20 74 68    .d,fcb..;Give th
027390:  65 20 61 64 64 72 65 73 73 20 66 6F 72 20 74 68    e address for th
0273A0:  65 20 46 43 42 2E 0D 0A 09 63 61 6C 6C 09 63 6F    e FCB....call.co
0273B0:  6D 6E 64 0D 0A 09 20 6A 6D 70 09 6B 65 72 6D 69    mnd... jmp.kermi
0273C0:  74 09 09 3B 47 69 76 65 20 75 70 20 6F 6E 20 62    t..;Give up on b
0273D0:  61 64 20 70 61 72 73 65 2E 0D 0A 09 63 61 6C 6C    ad parse....call
0273E0:  09 63 66 6D 63 6D 64 0D 0A 09 63 61 6C 6C 09 67    .cfmcmd...call.g
0273F0:  65 74 66 69 6C 09 09 3B 4F 70 65 6E 20 66 69 6C    etfil..;Open fil
027400:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
027410:  21 00 00 00 02 09 4E E5 21 00 C1 02 00 00 00 02    !.....N.!.......
027420:  21 00 C6 02 00 00 00 02 21 00 C2 02 00 00 00 02    !.......!.......
027430:  21 00 C7 02 00 00 00 02 21 00 C3 02 00 00 00 02    !.......!.......
027440:  21 00 C8 02 00 00 00 02 21 00 C4 02 00 00 00 02    !.......!.......
027450:  21 00 C9 02 00 00 00 02 21 00 C5 02 00 00 00 02    !.......!.......
027460:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
027470:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
027480:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
027490:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0274A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0274B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0274C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0274D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0274E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0274F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
027500:  6E 74 65 72 65 64 2E 20 65 6F 66 6C 61 67 20 68    ntered. eoflag h
027510:  61 73 20 61 6C 72 65 61 64 79 20 62 65 65 6E 20    as already been 
027520:  73 65 74 3B 20 6A 75 73 74 20 73 65 6E 64 20 63    set; just send c
027530:  75 72 72 65 6E 74 20 6C 69 6E 65 2E 0D 0A 78 6D    urrent line...xm
027540:  69 74 33 38 3A 0D 0A 09 3B 20 66 61 6C 6C 20 74    it38:...; fall t
027550:  68 72 6F 75 67 68 2E 2E 2E 0D 0A 3B 20 4C 69 6E    hrough.....; Lin
027560:  65 66 65 65 64 20 73 65 65 6E 2E 20 73 65 6E 64    efeed seen. send
027570:  20 74 68 65 20 63 75 72 72 65 6E 74 20 6C 69 6E     the current lin
027580:  65 2E 0D 0A 78 6D 69 74 33 39 3A 09 73 68 6C 64    e...xmit39:.shld
027590:  09 62 75 66 70 6E 74 09 09 3B 53 61 76 65 20 6E    .bufpnt..;Save n
0275A0:  65 78 74 20 62 75 66 66 65 72 20 70 6F 69 6E 74    ext buffer point
0275B0:  65 72 2E 0D 0A 09 6D 6F 76 09 61 2C 62 09 09 3B    er....mov.a,b..;
0275C0:  53 61 76 65 20 63 6F 75 6E 74 20 6F 66 20 72 65    Save count of re
0275D0:  6D 61 69 6E 69 6E 67 20 63 68 61 72 61 63 74 65    maining characte
0275E0:  72 73 2E 0D 0A 09 73 74 61 09 63 68 72 63 6E 74    rs....sta.chrcnt
0275F0:  0D 0A 09 6D 6F 76 09 61 2C 63 09 09 3B 53 61 76    ...mov.a,c..;Sav
027600:  65 20 6C 69 6E 65 20 6C 65 6E 67 74 68 2E 0D 0A    e line length...
027610:  09 73 74 61 09 66 69 6C 63 6E 74 0D 0A 09 3B 20    .sta.filcnt...; 
027620:  66 61 6C 6C 20 74 68 72 6F 75 67 68 20 69 6E 74    fall through int
027630:  6F 20 72 65 78 6D 69 74 2E 2E 2E 0D 0A 3B 0C 0D    o rexmit.....;..
027640:  0A 0D 0A 3B 09 74 72 61 6E 73 6D 69 74 20 74 68    ...;.transmit th
027650:  65 20 62 75 66 66 65 72 65 64 20 6C 69 6E 65 2E    e buffered line.
027660:  0D 0A 3B 09 68 65 72 65 20 66 72 6F 6D 3A 20 70    ..;.here from: p
027670:  72 65 76 69 6F 75 73 20 70 61 67 65 2C 20 69 6E    revious page, in
027680:  74 63 68 72 0D 0A 0D 0A 72 65 78 6D 69 74 3A 09    tchr....rexmit:.
027690:  6C 64 61 09 66 69 6C 63 6E 74 09 09 3B 53 65 74    lda.filcnt..;Set
0276A0:  20 75 70 20 6C 69 6E 65 20 6C 65 6E 67 74 68 2E     up line length.
0276B0:  0D 0A 09 73 74 61 09 63 6D 63 63 6E 74 0D 0A 09    ...sta.cmccnt...
0276C0:  6C 78 69 09 68 2C 63 6D 64 62 75 66 09 3B 53 65    lxi.h,cmdbuf.;Se
0276D0:  74 20 75 70 20 6C 69 6E 65 20 62 75 66 66 65 72    t up line buffer
0276E0:  20 70 6F 69 6E 74 65 72 2E 0D 0A 09 73 68 6C 64     pointer....shld
0276F0:  09 63 6D 63 70 74 72 0D 0A 78 6D 69 74 34 30 3A    .cmcptr..xmit40:
027700:  3B 43 6C 6F 73 65 20 66 69 6C 65 2E 0D 0A 09 6C    ;Close file....l
027710:  78 69 09 64 2C 66 63 62 0D 0A 09 63 61 6C 6C 09    xi.d,fcb...call.
027720:  62 64 6F 73 0D 0A 09 78 72 61 09 61 09 09 3B 54    bdos...xra.a..;T
027730:  65 72 6D 69 6E 61 74 65 20 66 69 6C 65 20 49 2F    erminate file I/
027740:  4F 2E 0D 0A 09 73 74 61 09 66 69 6C 65 69 6F 0D    O....sta.fileio.
027750:  0A 09 72 65 74 0D 0A 3B 0C 0D 0A 3B 20 20 20 74    ..ret..;...;   t
027760:  65 6C 6E 65 74 20 2D 20 74 68 65 20 43 4F 4E 4E    elnet - the CONN
027770:  45 43 54 20 63 6F 6D 6D 61 6E 64 2E 0D 0A 3B 09    ECT command...;.
027780:  68 65 72 65 20 66 72 6F 6D 3A 20 6B 65 72 6D 69    here from: kermi
027790:  74 0D 0A 3B 20 20 20 74 65 6C 6E 74 31 20 2D 20    t..;   telnt1 - 
0277A0:  65 6E 74 72 79 20 74 6F 20 63 6F 6E 6E 65 63 74    entry to connect
0277B0:  20 6D 6F 64 65 20 66 72 6F 6D 20 54 52 41 4E 53     mode from TRANS
0277C0:  4D 49 54 20 63 6F 6D 6D 61 6E 64 0D 0A 3B 09 68    MIT command..;.h
0277D0:  65 72 65 20 66 72 6F 6D 3A 20 78 65 6E 64 0D 0A    ere from: xend..
0277E0:  0D 0A 74 65 6C 6E 65 74 3A 09 63 61 6C 6C 09 63    ..telnet:.call.c
0277F0:  66 6D 63 6D 64 0D 0A 09 6C 78 69 09 64 2C 69 6E    fmcmd...lxi.d,in
027800:  66 6D 73 37 09 3B 4F 75 74 70 75 74 20 73 74 61    fms7.;Output sta
027810:  72 74 20 6F 66 20 6D 65 73 73 61 67 65 0D 0A 3B    rt of message..;
027820:  20 65 6E 74 65 72 20 68 65 72 65 20 66 72 6F 6D     enter here from
027830:  20 54 52 41 4E 53 4D 49 54 20 63 6F 6D 6D 61 6E     TRANSMIT comman
027840:  64 2E 0D 0A 74 65 6C 6E 74 31 3A 09 63 61 6C 6C    d...telnt1:.call
027850:  09 70 72 74 73 74 72 0D 0A 09 63 61 6C 6C 09 65    .prtstr...call.e
027860:  73 63 70 72 09 09 3B 50 72 69 6E 74 20 74 68 65    scpr..;Print the
027870:  20 65 73 63 61 70 65 20 63 68 61 72 2E 0D 0A 09     escape char....
027880:  6C 78 69 09 64 2C 69 6E 66 6D 73 38 09 3B 4F 75    lxi.d,infms8.;Ou
027890:  74 70 75 74 20 73 6F 6D 65 20 6D 6F 72 65 20 6F    tput some more o
0278A0:  66 20 74 68 65 20 6D 65 73 73 61 67 65 0D 0A 09    f the message...
0278B0:  63 61 6C 6C 09 70 72 74 73 74 72 0D 0A 09 63 61    call.prtstr...ca
0278C0:  6C 6C 09 65 73 63 70 72 09 09 3B 50 72 69 6E 74    ll.escpr..;Print
0278D0:  20 74 68 65 20 65 73 63 61 70 65 20 63 68 61 72     the escape char
0278E0:  20 61 67 61 69 6E 2E 0D 0A 09 6C 78 69 09 64 2C     again....lxi.d,
0278F0:  69 6E 6D 73 38 61 09 3B 50 72 69 6E 74 20 74 68    inms8a.;Print th
027900:  09 63 61 6C 6C 09 70 72 74 63 68 72 09 09 3B 52    .call.prtchr..;R
027910:  65 63 65 69 76 65 20 63 6F 6D 6D 2E 20 6C 69 6E    eceive comm. lin
027920:  65 20 26 20 64 69 73 70 6C 61 79 2E 0D 0A 09 6C    e & display....l
027930:  64 61 09 78 6F 66 66 6C 67 09 09 3B 58 4F 46 46    da.xofflg..;XOFF
027940:  20 72 65 63 65 69 76 65 64 3F 0D 0A 09 6F 72 61     received?...ora
027950:  09 61 0D 0A 09 6A 6E 7A 09 78 6D 69 74 34 30 09    .a...jnz.xmit40.
027960:  09 3B 59 65 73 2C 20 77 61 69 74 20 66 6F 72 20    .;Yes, wait for 
027970:  58 4F 4E 0D 0A 09 6C 64 61 09 63 6D 63 63 6E 74    XON...lda.cmccnt
027980:  09 09 3B 41 6E 79 20 63 68 61 72 61 63 74 65 72    ..;Any character
027990:  73 20 6C 65 66 74 3F 0D 0A 09 64 63 72 09 61 0D    s left?...dcr.a.
0279A0:  0A 09 6A 6D 09 78 6D 69 74 34 39 09 09 3B 4E 6F    ..jm.xmit49..;No
0279B0:  2C 20 6E 65 78 74 20 73 74 61 74 65 2E 0D 0A 09    , next state....
0279C0:  73 74 61 09 63 6D 63 63 6E 74 0D 0A 09 63 61 6C    sta.cmccnt...cal
0279D0:  6C 09 73 65 6C 6D 64 6D 09 09 3B 20 73 65 6C 65    l.selmdm..; sele
0279E0:  63 74 20 6D 6F 64 65 6D 20 66 6F 72 20 6F 75 74    ct modem for out
0279F0:  6D 64 6D 0D 0A 09 6C 68 6C 64 09 63 6D 63 70 74    mdm...lhld.cmcpt
027A00:  72 09 09 3B 47 65 74 20 74 68 65 20 63 68 61 72    r..;Get the char
027A10:  61 63 74 65 72 20 74 6F 20 62 65 20 73 65 6E 74    acter to be sent
027A20:  0D 0A 09 6D 6F 76 09 61 2C 6D 0D 0A 09 69 6E 78    ...mov.a,m...inx
027A30:  09 68 09 09 3B 42 75 6D 70 20 74 6F 20 6E 65 78    .h..;Bump to nex
027A40:  74 20 63 68 61 72 61 63 74 65 72 2E 0D 0A 09 73    t character....s
027A50:  68 6C 64 09 63 6D 63 70 74 72 0D 0A 09 63 61 6C    hld.cmcptr...cal
027A60:  6C 09 73 65 74 70 61 72 09 09 3B 53 65 74 20 70    l.setpar..;Set p
027A70:  61 72 69 74 79 20 28 69 66 20 61 6E 79 29 2E 0D    arity (if any)..
027A80:  0A 09 6D 6F 76 09 65 2C 61 09 09 3B 53 61 76 65    ..mov.e,a..;Save
027A90:  20 63 68 61 72 61 63 74 65 72 20 28 77 69 74 68     character (with
027AA0:  20 70 61 72 69 74 79 29 0D 0A 09 63 61 6C 6C 09     parity)...call.
027AB0:  6F 75 74 6D 64 6D 09 09 3B 4F 75 74 70 75 74 20    outmdm..;Output 
027AC0:  69 74 20 74 6F 20 74 68 65 20 63 6F 6D 6D 2E 20    it to the comm. 
027AD0:  6C 69 6E 65 2E 0D 0A 3B 20 54 41 43 20 74 72 61    line...; TAC tra
027AE0:  70 3A 20 49 66 20 74 68 69 73 20 63 68 61 72 61    p: If this chara
027AF0:  63 74 65 72 20 69 73 20 74 68 65 20 54 41 43 20    cter is the TAC 
027B00:  65 20 72 65 6D 61 69 6E 64 65 72 20 6F 66 20 74    e remainder of t
027B10:  68 65 20 6D 65 73 73 61 67 65 0D 0A 09 63 61 6C    he message...cal
027B20:  6C 09 70 72 74 73 74 72 0D 0A 09 63 61 6C 6C 09    l.prtstr...call.
027B30:  73 79 73 63 6F 6E 09 09 3B 64 6F 20 73 79 73 74    syscon..;do syst
027B40:  65 6D 2D 64 65 70 65 6E 64 65 6E 74 20 73 74 75    em-dependent stu
027B50:  66 66 0D 0A 09 6C 64 61 09 6C 6F 67 66 6C 67 09    ff...lda.logflg.
027B60:  09 3B 5B 70 63 63 30 30 35 5D 20 57 61 6E 74 20    .;[pcc005] Want 
027B70:  61 20 6C 6F 67 3F 0D 0A 09 6F 72 61 09 61 09 09    a log?...ora.a..
027B80:  3B 5B 70 63 63 30 30 35 5D 0D 0A 09 63 6E 7A 09    ;[pcc005]...cnz.
027B90:  6C 6F 67 6F 70 6E 09 09 3B 5B 70 63 63 30 30 35    logopn..;[pcc005
027BA0:  5D 20 4F 70 65 6E 20 69 66 20 73 6F 0D 0A 0D 0A    ] Open if so....
027BB0:  63 68 72 6C 75 70 3A 09 63 61 6C 6C 09 70 72 74    chrlup:.call.prt
027BC0:  63 68 72 09 09 3B 53 65 65 20 69 66 20 63 68 61    chr..;See if cha
027BD0:  72 20 61 74 20 70 6F 72 74 20 28 73 65 6E 64 20    r at port (send 
027BE0:  74 6F 20 63 6F 6E 73 6F 6C 65 29 2E 0D 0A 09 63    to console)....c
027BF0:  61 6C 6C 09 63 6F 6E 63 68 72 09 09 3B 53 65 65    all.conchr..;See
027C00:  20 69 66 20 63 68 61 72 20 61 74 20 63 6F 6E 73     if char at cons
027C10:  6F 6C 65 20 28 73 65 6E 64 20 74 6F 20 70 6F 72    ole (send to por
027C20:  74 29 2E 0D 0A 09 20 6A 6D 70 09 6B 65 72 6D 69    t).... jmp.kermi
027C30:  74 09 09 3B 72 65 71 75 65 73 74 65 64 20 74 6F    t..;requested to
027C40:  20 65 6E 64 20 73 65 73 73 69 6F 6E 20 2D 20 67     end session - g
027C50:  6F 20 74 6F 20 63 6F 6D 6D 61 6E 64 20 6C 6F 6F    o to command loo
027C60:  70 2E 0D 0A 09 6A 6D 70 09 63 68 72 6C 75 70 09    p....jmp.chrlup.
027C70:  09 3B 47 6F 20 64 6F 20 69 74 20 61 67 61 69 6E    .;Go do it again
027C80:  2E 0D 0A 3B 0C 0D 0A 3B 0D 0A 3B 09 70 72 74 63    ...;...;..;.prtc
027C90:  68 72 20 2D 20 63 6F 70 79 20 63 68 61 72 61 63    hr - copy charac
027CA0:  74 65 72 73 20 66 72 6F 6D 20 63 6F 6D 6D 20 6C    ters from comm l
027CB0:  69 6E 65 20 74 6F 20 63 6F 6E 73 6F 6C 65 0D 0A    ine to console..
027CC0:  3B 09 72 65 74 75 72 6E 73 3A 20 6E 6F 6E 73 6B    ;.returns: nonsk
027CD0:  69 70 2C 20 63 6F 6E 73 6F 6C 65 20 73 65 6C 65    ip, console sele
027CE0:  63 74 65 64 2E 0D 0A 3B 09 63 61 6C 6C 65 64 20    cted...;.called 
027CF0:  62 79 3A 20 78 6E 65 78 74 2C 20 72 65 78 6D 69    by: xnext, rexmi
027D00:  69 6E 74 65 72 63 65 70 74 20 63 68 61 72 61 63    intercept charac
027D10:  74 65 72 2C 20 61 6E 64 20 74 68 65 20 54 41 43    ter, and the TAC
027D20:  0D 0A 3B 20 74 72 61 70 20 69 73 20 65 6E 61 62    ..; trap is enab
027D30:  6C 65 64 2C 20 77 65 20 68 61 76 65 20 74 6F 20    led, we have to 
027D40:  6F 75 74 70 75 74 20 69 74 20 74 77 69 63 65 2E    output it twice.
027D50:  20 20 49 66 20 74 68 65 20 54 41 43 20 74 72 61      If the TAC tra
027D60:  70 20 69 73 20 65 6E 61 62 6C 65 64 2C 0D 0A 3B    p is enabled,..;
027D70:  20 74 61 63 66 6C 67 20 63 6F 6E 74 61 69 6E 73     tacflg contains
027D80:  20 74 68 65 20 69 6E 74 65 72 63 65 70 74 20 63     the intercept c
027D90:  68 61 72 61 63 74 65 72 2E 20 20 28 54 68 65 20    haracter.  (The 
027DA0:  63 75 72 72 65 6E 74 20 63 68 61 72 61 63 74 65    current characte
027DB0:  72 20 63 61 6E 6E 6F 74 0D 0A 3B 20 62 65 20 4E    r cannot..; be N
027DC0:  55 4C 2C 20 73 6F 20 77 65 20 64 6F 6E 27 74 20    UL, so we don't 
027DD0:  68 61 76 65 20 74 6F 20 77 6F 72 72 79 20 61 62    have to worry ab
027DE0:  6F 75 74 20 64 6F 75 62 6C 69 6E 67 20 6E 75 6C    out doubling nul
027DF0:  6C 73 20 69 6E 20 74 68 65 20 6D 65 73 73 61 67    ls in the messag
027E00:  65 29 0D 0A 09 6C 64 61 09 74 61 63 66 6C 67 09    e)...lda.tacflg.
027E10:  09 3B 20 67 65 74 20 63 75 72 72 65 6E 74 20 69    .; get current i
027E20:  6E 74 65 72 63 65 70 74 20 63 68 61 72 61 63 74    ntercept charact
027E30:  65 72 2C 20 6F 72 20 7A 65 72 6F 2E 0D 0A 09 63    er, or zero....c
027E40:  6D 70 09 6D 09 09 3B 20 63 6F 6D 70 61 72 65 20    mp.m..; compare 
027E50:  61 67 61 69 6E 73 74 20 63 75 72 72 65 6E 74 20    against current 
027E60:  64 61 74 61 20 63 68 61 72 61 63 74 65 72 2E 0D    data character..
027E70:  0A 09 6A 6E 7A 09 78 6D 69 74 34 31 09 09 3B 20    ..jnz.xmit41..; 
027E80:  69 66 20 64 69 66 66 65 72 65 6E 74 2C 20 64 6F    if different, do
027E90:  20 6E 6F 74 68 69 6E 67 2E 0D 0A 09 63 61 6C 6C     nothing....call
027EA0:  09 73 65 74 70 61 72 09 09 3B 20 6D 61 74 63 68    .setpar..; match
027EB0:  2E 20 73 65 74 20 61 70 70 72 6F 70 72 69 61 74    . set appropriat
027EC0:  65 20 70 61 72 69 74 79 2C 0D 0A 09 6D 6F 76 09    e parity,...mov.
027ED0:  65 2C 61 09 09 3B 20 20 70 75 74 20 69 74 20 69    e,a..;  put it i
027EE0:  6E 20 74 68 65 20 72 69 67 68 74 20 72 65 67 69    n the right regi
027EF0:  73 74 65 72 2C 0D 0A 09 63 61 6C 6C 09 6F 75 74    ster,...call.out
027F00:  74 2C 20 74 65 6C 6E 65 74 0D 0A 3B 0D 0A 0D 0A    t, telnet..;....
027F10:  70 72 74 63 68 72 3A 09 63 61 6C 6C 09 73 65 6C    prtchr:.call.sel
027F20:  6D 64 6D 09 09 3B 20 73 65 6C 65 63 74 20 6D 6F    mdm..; select mo
027F30:  64 65 6D 20 70 6F 72 74 0D 0A 09 63 61 6C 6C 09    dem port...call.
027F40:  69 6E 70 6D 64 6D 09 09 3B 20 74 72 79 20 74 6F    inpmdm..; try to
027F50:  20 67 65 74 20 61 20 63 68 61 72 61 63 74 65 72     get a character
027F60:  20 66 72 6F 6D 20 69 74 0D 0A 09 6F 72 61 09 61     from it...ora.a
027F70:  09 09 3B 20 74 65 73 74 20 63 68 61 72 61 63 74    ..; test charact
027F80:  65 72 0D 0A 09 6A 6E 7A 09 70 72 74 63 68 30 09    er...jnz.prtch0.
027F90:  09 3B 20 69 66 20 6E 6F 6E 2D 7A 65 72 6F 2C 20    .; if non-zero, 
027FA0:  70 72 6F 63 65 73 73 20 69 74 2E 0D 0A 09 73 74    process it....st
027FB0:  61 09 70 72 74 63 6E 74 09 09 3B 5B 70 63 63 30    a.prtcnt..;[pcc0
027FC0:  30 38 5D 20 7A 65 72 6F 20 6F 75 74 20 70 72 74    08] zero out prt
027FD0:  20 66 61 69 72 6E 65 73 73 20 63 6F 75 6E 74 0D     fairness count.
027FE0:  0A 09 63 61 6C 6C 09 73 65 6C 63 6F 6E 09 09 3B    ..call.selcon..;
027FF0:  20 73 65 6C 65 63 74 20 63 6F 6E 73 6F 6C 65 0D     select console.
028000:  0A 09 72 65 74 09 09 09 3B 20 72 65 74 75 72 6E    ..ret...; return
028010:  2E 0D 0A 0D 0A 70 72 74 63 68 30 3A 20 61 6E 69    .....prtch0: ani
028020:  09 37 46 48 09 09 3B 20 64 72 6F 70 20 70 61 72    .7FH..; drop par
028030:  69 74 79 20 62 69 74 2E 0D 0A 09 6A 7A 09 70 72    ity bit....jz.pr
028040:  74 63 68 72 09 09 3B 20 69 67 6E 6F 72 65 20 6E    tchr..; ignore n
028050:  75 6C 6C 20 28 66 69 6C 6C 65 72 29 0D 0A 09 63    ull (filler)...c
028060:  70 69 09 64 65 6C 09 09 3B 20 69 67 6E 6F 72 65    pi.del..; ignore
028070:  20 64 65 6C 65 74 65 2C 20 74 6F 6F 0D 0A 09 6A     delete, too...j
028080:  7A 09 70 72 74 63 68 72 0D 0A 09 63 70 69 09 78    z.prtchr...cpi.x
028090:  6F 6E 09 09 3B 49 73 20 69 74 20 61 6E 20 58 4F    on..;Is it an XO
0280A0:  4E 3F 0D 0A 09 6A 7A 09 70 72 74 78 6F 6E 09 09    N?...jz.prtxon..
0280B0:  3B 79 65 73 0D 0A 09 63 70 69 09 78 6F 66 66 09    ;yes...cpi.xoff.
0280C0:  09 3B 49 73 20 69 74 20 61 6E 20 58 4F 46 46 3F    .;Is it an XOFF?
0280D0:  0D 0A 09 6A 7A 09 70 72 74 78 6F 66 09 09 3B 79    ...jz.prtxof..;y
0280E0:  65 73 0D 0A 09 6D 6F 76 09 65 2C 61 09 09 3B 53    es...mov.e,a..;S
0280F0:  65 74 20 74 68 65 20 63 68 61 72 20 61 73 69 64    et the char asid
028100:  6D 64 6D 09 09 3B 20 20 61 6E 64 20 6F 75 74 70    mdm..;  and outp
028110:  75 74 20 69 74 20 61 20 73 65 63 6F 6E 64 20 74    ut it a second t
028120:  69 6D 65 2E 0D 0A 78 6D 69 74 34 31 3A 0D 0A 09    ime...xmit41:...
028130:  6C 64 61 09 65 63 6F 66 6C 67 09 09 3B 4C 6F 63    lda.ecoflg..;Loc
028140:  61 6C 20 65 63 68 6F 3F 0D 0A 09 6F 72 61 09 61    al echo?...ora.a
028150:  0D 0A 09 6A 7A 09 78 6D 69 74 34 30 09 09 3B 4E    ...jz.xmit40..;N
028160:  6F 2C 20 63 6F 6E 74 69 6E 75 65 2E 0D 0A 09 6D    o, continue....m
028170:  6F 76 09 61 2C 65 09 09 3B 47 65 74 20 74 68 65    ov.a,e..;Get the
028180:  20 63 68 61 72 61 63 74 65 72 2E 0D 0A 09 61 6E     character....an
028190:  69 09 37 46 48 09 09 3B 4D 61 73 6B 20 6F 75 74    i.7FH..;Mask out
0281A0:  20 70 61 72 69 74 79 2E 0D 0A 09 6D 6F 76 09 65     parity....mov.e
0281B0:  2C 61 09 09 3B 44 69 73 70 6C 61 79 20 6F 6E 20    ,a..;Display on 
0281C0:  63 6F 6E 73 6F 6C 65 2E 0D 0A 09 63 61 6C 6C 09    console....call.
0281D0:  73 65 6C 63 6F 6E 0D 0A 09 63 61 6C 6C 09 6F 75    selcon...call.ou
0281E0:  74 63 6F 6E 0D 0A 09 6A 6D 70 09 78 6D 69 74 34    tcon...jmp.xmit4
0281F0:  30 09 09 3B 43 6F 6E 74 69 6E 75 65 2E 0D 0A 0D    0..;Continue....
028200:  0A 78 6D 69 74 34 39 3A 09 78 72 61 09 61 09 09    .xmit49:.xra.a..
028210:  3B 52 65 73 65 74 20 6C 61 73 74 20 63 68 61 72    ;Reset last char
028220:  61 63 74 65 72 20 73 65 65 6E 2E 0D 0A 09 73 74    acter seen....st
028230:  61 09 6C 73 74 63 68 72 0D 0A 78 6D 69 74 35 30    a.lstchr..xmit50
028240:  3A 09 63 61 6C 6C 09 70 72 74 63 68 72 09 09 3B    :.call.prtchr..;
028250:  52 65 63 65 69 76 65 20 63 6F 6D 6D 2E 20 6C 69    Receive comm. li
028260:  6E 65 20 26 20 64 69 73 70 6C 61 79 2E 0D 0A 09    ne & display....
028270:  63 61 6C 6C 09 63 6F 6E 63 68 72 09 09 3B 52 65    call.conchr..;Re
028280:  61 64 20 6B 65 79 62 6F 61 72 64 20 26 20 73 65    ad keyboard & se
028290:  6E 64 2E 0D 0A 09 20 6A 6D 70 09 78 65 6E 64 63    nd.... jmp.xendc
0282A0:  09 09 3B 43 4C 4F 53 45 20 63 6F 6E 6E 65 63 74    ..;CLOSE connect
0282B0:  69 6F 6E 2E 0D 0A 09 6C 64 61 09 6C 73 74 63 68    ion....lda.lstch
0282C0:  72 09 09 3B 43 68 65 63 6B 20 6C 61 73 74 20 6B    r..;Check last k
0282D0:  65 79 62 6F 61 72 64 20 63 68 61 72 61 63 74 65    eyboard characte
0282E0:  72 2E 0D 0A 09 63 70 69 09 63 72 09 09 3B 43 61    r....cpi.cr..;Ca
0282F0:  72 72 69 61 67 65 20 72 65 74 75 72 6E 3F 0D 0A    rriage return?..
028300:  65 2E 0D 0A 09 6C 64 61 09 76 74 66 6C 67 09 09    e....lda.vtflg..
028310:  3B 47 65 74 20 74 68 65 20 56 54 35 32 20 65 6D    ;Get the VT52 em
028320:  75 6C 61 74 69 6F 6E 20 66 6C 61 67 2E 0D 0A 09    ulation flag....
028330:  63 70 69 09 31 09 09 3B 49 73 20 74 68 65 20 66    cpi.1..;Is the f
028340:  6C 61 67 20 73 65 74 3F 0D 0A 09 6A 6E 7A 09 70    lag set?...jnz.p
028350:  72 74 63 68 31 09 09 3B 49 66 20 6E 6F 74 2C 20    rtch1..;If not, 
028360:  64 6F 6E 27 74 20 64 6F 20 74 68 69 73 20 73 74    don't do this st
028370:  75 66 66 2E 0D 0A 09 6C 64 61 09 65 73 63 66 6C    uff....lda.escfl
028380:  67 09 09 3B 47 65 74 20 74 68 65 20 65 73 63 61    g..;Get the esca
028390:  70 65 20 66 6C 61 67 2E 0D 0A 09 6F 72 61 09 61    pe flag....ora.a
0283A0:  09 09 3B 41 72 65 20 77 65 20 77 6F 72 6B 69 6E    ..;Are we workin
0283B0:  67 20 6F 6E 20 61 6E 20 65 73 63 61 70 65 20 73    g on an escape s
0283C0:  65 71 75 65 6E 63 65 3F 0D 0A 09 6A 7A 09 70 72    equence?...jz.pr
0283D0:  74 63 68 32 09 09 3B 49 66 20 6E 6F 74 2C 20 63    tch2..;If not, c
0283E0:  6F 6E 74 69 6E 75 65 2E 0D 0A 09 63 61 6C 6C 09    ontinue....call.
0283F0:  76 74 35 32 09 09 3B 49 66 20 73 6F 2C 20 77 6F    vt52..;If so, wo
028400:  72 6B 20 6F 6E 20 69 74 20 73 6F 6D 65 20 6D 6F    rk on it some mo
028410:  72 65 0D 0A 09 6A 6D 70 09 70 72 74 63 68 72 09    re...jmp.prtchr.
028420:  09 3B 74 72 79 20 66 6F 72 20 6D 6F 72 65 20 63    .;try for more c
028430:  68 61 72 61 63 74 65 72 73 2E 0D 0A 0D 0A 70 72    haracters.....pr
028440:  74 63 68 32 3A 09 6D 6F 76 09 61 2C 65 09 09 3B    tch2:.mov.a,e..;
028450:  6E 6F 72 6D 61 6C 20 74 65 78 74 2E 0D 0A 09 63    normal text....c
028460:  70 69 09 65 73 63 09 09 3B 49 73 20 74 68 65 20    pi.esc..;Is the 
028470:  63 68 61 72 20 61 6E 20 65 73 63 61 70 65 3F 0D    char an escape?.
028480:  0A 09 6A 6E 7A 09 70 72 74 63 68 31 09 09 3B 49    ..jnz.prtch1..;I
028490:  66 20 6E 6F 74 20 73 6B 69 70 20 6F 6E 2E 0D 0A    f not skip on...
0284A0:  09 6D 76 69 09 61 2C 31 0D 0A 09 73 74 61 09 65    .mvi.a,1...sta.e
0284B0:  73 63 66 6C 67 09 09 3B 53 65 74 20 74 68 65 20    scflg..;Set the 
0284C0:  65 73 63 61 70 65 20 66 6C 61 67 3A 20 65 73 63    escape flag: esc
0284D0:  61 70 65 20 73 65 65 6E 2E 0D 0A 09 6A 6D 70 09    ape seen....jmp.
0284E0:  70 72 74 63 68 72 09 09 3B 47 65 74 20 61 6E 6F    prtchr..;Get ano
0284F0:  74 68 65 72 20 63 68 61 72 2E 2E 2E 0D 0A 0D 0A    ther char.......
028500:  09 6A 7A 09 78 6E 65 78 74 09 09 3B 59 65 73 2C    .jz.xnext..;Yes,
028510:  20 70 72 65 70 61 72 65 20 74 6F 20 73 65 6E 64     prepare to send
028520:  20 6E 65 78 74 20 6C 69 6E 65 2E 0D 0A 09 6A 6D     next line....jm
028530:  70 09 78 6D 69 74 35 30 09 09 3B 43 6F 6E 74 69    p.xmit50..;Conti
028540:  6E 75 65 2C 20 75 6E 74 69 6C 20 63 61 72 72 69    nue, until carri
028550:  61 67 65 20 72 65 74 75 72 6E 2E 0D 0A 3B 0C 0D    age return...;..
028560:  0A 3B 09 63 6C 65 61 6E 20 75 70 2E 0D 0A 3B 20    .;.clean up...; 
028570:  20 20 78 65 6E 64 20 2D 20 65 6E 64 20 6F 66 20      xend - end of 
028580:  66 69 6C 65 20 72 65 61 63 68 65 64 2E 20 63 6C    file reached. cl
028590:  6F 73 65 20 66 69 6C 65 2C 20 67 6F 20 74 6F 20    ose file, go to 
0285A0:  63 6F 6E 6E 65 63 74 20 6D 6F 64 65 2E 0D 0A 3B    connect mode...;
0285B0:  09 68 65 72 65 20 66 72 6F 6D 3A 20 78 6E 65 78    .here from: xnex
0285C0:  74 2E 0D 0A 3B 20 20 20 78 65 6E 64 63 20 2D 20    t...;   xendc - 
0285D0:  75 73 65 72 20 77 61 6E 74 73 20 6F 75 74 2E 20    user wants out. 
0285E0:  63 6C 6F 73 65 20 66 69 6C 65 2C 20 67 6F 20 74    close file, go t
0285F0:  6F 20 63 6F 6D 6D 61 6E 64 20 6D 6F 64 65 2E 0D    o command mode..
028600:  0A 3B 09 68 65 72 65 20 66 72 6F 6D 3A 20 72 65    .;.here from: re
028610:  78 6D 69 74 2E 0D 0A 0D 0A 78 65 6E 64 3A 09 63    xmit.....xend:.c
028620:  61 6C 6C 09 78 6D 74 6F 66 66 09 09 3B 43 6C 6F    all.xmtoff..;Clo
028630:  73 65 20 66 69 6C 65 2C 20 65 74 63 2E 0D 0A 09    se file, etc....
028640:  6C 78 69 09 64 2C 69 6E 6D 73 32 32 09 3B 54 65    lxi.d,inms22.;Te
028650:  6C 6C 20 77 65 27 72 65 20 64 6F 6E 65 20 77 69    ll we're done wi
028660:  74 68 20 74 72 61 6E 73 6D 69 73 73 69 6F 6E 0D    th transmission.
028670:  0A 09 6A 6D 70 09 74 65 6C 6E 74 31 09 09 3B 42    ..jmp.telnt1..;B
028680:  72 61 6E 63 68 20 74 6F 20 43 4F 4E 4E 45 43 54    ranch to CONNECT
028690:  20 63 6F 6D 6D 61 6E 64 2E 0D 0A 0D 0A 78 65 6E     command.....xen
0286A0:  64 63 3A 09 63 61 6C 6C 09 78 6D 74 6F 66 66 09    dc:.call.xmtoff.
0286B0:  09 3B 43 6C 6F 73 65 20 66 69 6C 65 2C 20 65 74    .;Close file, et
0286C0:  63 2E 0D 0A 09 6A 6D 70 09 6B 65 72 6D 69 74 09    c....jmp.kermit.
0286D0:  09 3B 42 61 63 6B 20 74 6F 20 63 6F 6D 6D 61 6E    .;Back to comman
0286E0:  64 20 6C 6F 6F 70 2E 0D 0A 0D 0A 78 6D 74 6F 66    d loop.....xmtof
0286F0:  66 3A 09 6D 76 69 09 63 2C 63 6C 6F 73 66 09 09    f:.mvi.c,closf..
028700:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
028710:  22 00 00 00 02 09 4E E5 22 00 C1 02 00 00 00 02    ".....N.".......
028720:  22 00 C6 02 00 00 00 02 22 00 C2 02 00 00 00 02    ".......".......
028730:  22 00 C7 02 00 00 00 02 22 00 C3 02 00 00 00 02    ".......".......
028740:  22 00 C8 02 00 00 00 02 22 00 C4 02 00 00 00 02    ".......".......
028750:  22 00 C9 02 00 00 00 02 22 00 C5 02 00 00 00 02    ".......".......
028760:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
028770:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
028780:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
028790:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
028800:  70 72 74 63 68 31 3A 09 63 61 6C 6C 09 73 79 73    prtch1:.call.sys
028810:  66 6C 74 09 09 3B 20 6F 6B 20 74 6F 20 70 72 69    flt..; ok to pri
028820:  6E 74 20 74 68 69 73 20 63 68 61 72 61 63 74 65    nt this characte
028830:  72 20 28 69 6E 20 45 29 3F 0D 0A 09 6F 72 61 09    r (in E)?...ora.
028840:  61 0D 0A 09 6A 7A 09 70 72 74 63 68 72 09 09 3B    a...jz.prtchr..;
028850:  20 6E 6F 2C 20 73 6B 69 70 20 69 74 2E 0D 0A 09     no, skip it....
028860:  6C 64 61 09 6C 6F 67 66 6C 67 09 09 3B 47 65 74    lda.logflg..;Get
028870:  20 74 68 65 20 6C 6F 67 20 66 6C 61 67 2E 0D 0A     the log flag...
028880:  09 63 70 69 09 38 31 48 09 09 3B 5B 70 63 63 30    .cpi.81H..;[pcc0
028890:  30 33 5D 20 41 72 65 20 77 65 20 6C 6F 67 67 69    03] Are we loggi
0288A0:  6E 67 0D 0A 09 63 7A 09 6C 6F 67 69 74 09 09 3B    ng...cz.logit..;
0288B0:  5B 70 63 63 30 30 33 5D 20 44 6F 20 73 6F 20 69    [pcc003] Do so i
0288C0:  66 20 6E 65 65 64 65 64 0D 0A 09 63 61 6C 6C 09    f needed...call.
0288D0:  73 65 6C 63 6F 6E 09 09 3B 20 73 65 6C 65 63 74    selcon..; select
0288E0:  20 63 6F 6E 73 6F 6C 65 0D 0A 09 6C 64 61 09 70     console...lda.p
0288F0:  72 6E 66 6C 67 09 09 3B 47 65 74 20 50 72 69 6E    rnflg..;Get Prin
028900:  74 20 70 61 72 61 6C 6C 65 6C 20 66 6C 61 67 0D    t parallel flag.
028910:  0A 09 6F 72 61 09 61 0D 0A 09 63 6E 7A 09 6F 75    ..ora.a...cnz.ou
028920:  74 6C 70 74 09 09 3B 20 6F 75 74 70 75 74 20 74    tlpt..; output t
028930:  6F 20 70 72 69 6E 74 65 72 20 69 66 20 66 6C 61    o printer if fla
028940:  67 20 73 65 74 0D 0A 09 63 61 6C 6C 09 6F 75 74    g set...call.out
028950:  63 6F 6E 09 09 3B 20 6F 75 74 70 75 74 20 74 6F    con..; output to
028960:  20 63 6F 6E 73 6F 6C 65 2E 0D 0A 09 6C 78 69 09     console....lxi.
028970:  68 2C 70 72 74 63 6E 74 09 3B 5B 70 63 63 30 30    h,prtcnt.;[pcc00
028980:  38 5D 20 70 6F 69 6E 74 20 74 6F 20 70 72 74 20    8] point to prt 
028990:  66 61 69 72 6E 65 73 73 20 63 6F 75 6E 74 0D 0A    fairness count..
0289A0:  09 69 6E 72 09 6D 09 09 3B 5B 70 63 63 30 30 38    .inr.m..;[pcc008
0289B0:  5D 20 62 75 6D 70 0D 0A 09 6D 6F 76 09 61 2C 6D    ] bump...mov.a,m
0289C0:  09 09 3B 5B 70 63 63 30 30 38 5D 20 67 65 74 20    ..;[pcc008] get 
0289D0:  69 74 20 69 6E 20 61 0D 0A 09 63 70 69 09 70 72    it in a...cpi.pr
0289E0:  66 61 69 72 2B 31 09 3B 5B 70 63 63 30 30 38 5D    fair+1.;[pcc008]
0289F0:  20 74 69 6D 65 20 74 6F 20 62 65 20 66 61 69 72     time to be fair
028A00:  20 74 68 65 20 68 6F 73 74 20 77 68 69 6C 65 20     the host while 
028A10:  77 65 20 77 72 69 74 65 20 74 68 65 20 62 75 66    we write the buf
028A20:  66 65 72 2E 0D 0A 09 63 61 6C 6C 09 73 65 74 70    fer....call.setp
028A30:  61 72 09 09 3B 20 73 65 74 20 63 6F 72 72 65 63    ar..; set correc
028A40:  74 20 70 61 72 69 74 79 2E 2E 2E 0D 0A 09 6D 6F    t parity......mo
028A50:  76 09 65 2C 61 0D 0A 09 63 61 6C 6C 09 6F 75 74    v.e,a...call.out
028A60:  6D 64 6D 09 09 3B 20 6F 75 74 70 75 74 20 69 74    mdm..; output it
028A70:  2E 0D 0A 09 63 61 6C 6C 09 6F 75 74 62 75 66 09    ....call.outbuf.
028A80:  09 3B 5B 70 63 63 30 31 32 5D 20 6F 75 74 70 75    .;[pcc012] outpu
028A90:  74 20 74 68 65 20 62 75 66 66 65 72 20 61 6E 64    t the buffer and
028AA0:  20 61 64 76 61 6E 63 65 0D 0A 09 63 61 6C 6C 09     advance...call.
028AB0:  6C 6F 67 65 72 72 09 09 3B 5B 70 63 63 30 30 35    logerr..;[pcc005
028AC0:  5D 20 71 75 69 74 20 69 66 20 65 72 72 6F 72 0D    ] quit if error.
028AD0:  0A 09 6D 76 69 09 61 2C 78 6F 6E 09 09 3B 5E 51    ..mvi.a,xon..;^Q
028AE0:  20 74 6F 20 72 65 73 74 61 72 74 20 74 68 65 20     to restart the 
028AF0:  68 6F 73 74 0D 0A 09 63 61 6C 6C 09 73 65 74 70    host...call.setp
028B00:  61 72 09 09 3B 20 73 65 74 20 61 70 70 72 6F 70    ar..; set approp
028B10:  72 69 61 74 65 20 70 61 72 69 74 79 0D 0A 09 6D    riate parity...m
028B20:  6F 76 09 65 2C 61 0D 0A 09 63 61 6C 6C 09 6F 75    ov.e,a...call.ou
028B30:  74 6D 64 6D 09 09 3B 20 73 65 6E 64 20 69 74 2E    tmdm..; send it.
028B40:  0D 0A 09 72 65 74 09 09 09 3B 5B 70 63 63 30 31    ...ret...;[pcc01
028B50:  32 5D 0D 0A 0D 0A 3B 5B 70 63 63 30 30 35 5D 0D    2]....;[pcc005].
028B60:  0A 3B 09 6C 6F 67 63 6C 73 20 2D 20 43 6C 6F 73    .;.logcls - Clos
028B70:  65 20 74 68 65 20 6C 6F 67 20 66 69 6C 65 20 61    e the log file a
028B80:  6E 64 20 72 65 73 65 74 20 74 68 65 20 66 6C 61    nd reset the fla
028B90:  67 0D 0A 0D 0A 6C 6F 67 63 6C 73 3A 09 6C 78 69    g....logcls:.lxi
028BA0:  09 64 2C 69 6E 66 6D 73 36 09 3B 5B 70 63 63 30    .d,infms6.;[pcc0
028BB0:  30 35 5D 20 54 65 6C 6C 20 75 73 65 72 20 77 65    05] Tell user we
028BC0:  20 61 72 65 20 63 6C 6F 73 69 6E 67 20 66 69 6C     are closing fil
028BD0:  65 2E 0D 0A 09 63 61 6C 6C 09 70 72 74 73 74 72    e....call.prtstr
028BE0:  09 09 3B 5B 70 63 63 30 30 35 5D 0D 0A 09 63 61    ..;[pcc005]...ca
028BF0:  6C 6C 09 63 6C 6F 66 69 6C 09 09 3B 5B 70 63 63    ll.clofil..;[pcc
028C00:  3F 0D 0A 09 6A 6D 09 70 72 74 63 68 72 09 09 3B    ?...jm.prtchr..;
028C10:  5B 70 63 63 30 30 38 5D 20 6E 6F 2C 20 67 6F 20    [pcc008] no, go 
028C20:  61 72 6F 75 6E 64 20 61 67 61 69 6E 2E 0D 0A 09    around again....
028C30:  6D 76 69 09 6D 2C 30 09 09 3B 5B 70 63 63 30 30    mvi.m,0..;[pcc00
028C40:  38 5D 20 72 65 73 65 74 20 63 6F 75 6E 74 0D 0A    8] reset count..
028C50:  09 72 65 74 09 09 09 3B 5B 70 63 63 30 30 38 5D    .ret...;[pcc008]
028C60:  20 61 6E 64 20 72 65 74 75 72 6E 0D 0A 0D 0A 3B     and return....;
028C70:  20 49 20 64 6F 6E 27 74 20 74 68 69 6E 6B 20 77     I don't think w
028C80:  65 20 77 61 6E 74 20 74 6F 20 70 72 69 6E 74 20    e want to print 
028C90:  78 6F 6E 2F 78 6F 66 66 20 2D 20 74 68 69 73 20    xon/xoff - this 
028CA0:  73 68 6F 75 6C 64 20 62 65 0D 0A 3B 20 66 6C 6F    should be..; flo
028CB0:  77 20 63 6F 6E 74 72 6F 6C 20 6F 6E 6C 79 20 61    w control only a
028CC0:  63 72 6F 73 73 20 74 68 65 20 6C 69 6E 6B 20 62    cross the link b
028CD0:  65 74 77 65 65 6E 20 75 73 20 61 6E 64 20 74 68    etween us and th
028CE0:  65 20 68 6F 73 74 2E 0D 0A 3B 20 28 62 65 73 69    e host...; (besi
028CF0:  64 65 73 2C 20 49 42 4D 20 68 6F 73 74 20 78 6F    des, IBM host xo
028D00:  6E 27 73 20 64 6F 6E 27 74 20 6D 61 6B 65 20 73    n's don't make s
028D10:  65 6E 73 65 20 74 6F 20 6D 6F 73 74 20 6D 69 63    ense to most mic
028D20:  72 6F 73 29 0D 0A 3B 20 72 65 6D 65 6D 62 65 72    ros)..; remember
028D30:  20 78 6F 6E 2F 78 6F 66 66 20 73 74 61 74 65 20     xon/xoff state 
028D40:  69 6E 20 78 6F 66 66 6C 67 20 28 7A 65 72 6F 20    in xofflg (zero 
028D50:  3D 20 78 6F 6E 2C 20 6E 6F 6E 2D 7A 65 72 6F 20    = xon, non-zero 
028D60:  3D 20 78 6F 66 66 29 0D 0A 70 72 74 78 6F 6E 3A    = xoff)..prtxon:
028D70:  09 78 72 61 09 61 09 09 3B 59 65 73 2C 20 72 65    .xra.a..;Yes, re
028D80:  73 65 74 20 58 4F 46 46 20 66 6C 61 67 0D 0A 70    set XOFF flag..p
028D90:  72 74 78 6F 66 3A 09 73 74 61 09 78 6F 66 66 6C    rtxof:.sta.xoffl
028DA0:  67 0D 0A 09 6A 6D 70 09 70 72 74 63 68 72 09 09    g...jmp.prtchr..
028DB0:  3B 20 6C 6F 6F 6B 20 66 6F 72 20 61 6E 6F 74 68    ; look for anoth
028DC0:  65 72 20 63 68 61 72 61 63 74 65 72 0D 0A 3B 0C    er character..;.
028DD0:  3B 5B 70 63 63 30 30 35 5D 20 4C 6F 67 20 66 69    ;[pcc005] Log fi
028DE0:  6C 65 20 72 6F 75 74 69 6E 65 73 0D 0A 0D 0A 3B    le routines....;
028DF0:  5B 70 63 63 30 30 35 5D 0D 0A 3B 20 20 20 20 6C    [pcc005]..;    l
028E00:  30 31 32 5D 20 61 6E 64 20 64 6F 20 69 74 0D 0A    012] and do it..
028E10:  09 6A 6D 70 09 6C 6F 67 65 72 72 09 09 3B 5B 70    .jmp.logerr..;[p
028E20:  63 63 30 30 35 5D 20 6A 75 6D 70 20 69 66 20 65    cc005] jump if e
028E30:  72 72 6F 72 0D 0A 09 6C 78 69 09 68 2C 6C 6F 67    rror...lxi.h,log
028E40:  66 6C 67 09 3B 5B 70 63 63 30 30 35 5D 20 70 6F    flg.;[pcc005] po
028E50:  69 6E 74 20 74 6F 20 66 6C 61 67 0D 0A 09 6D 6F    int to flag...mo
028E60:  76 09 61 2C 6D 09 09 3B 5B 70 63 63 30 30 35 5D    v.a,m..;[pcc005]
028E70:  20 67 65 74 20 69 74 0D 0A 09 61 6E 69 09 37 46     get it...ani.7F
028E80:  48 09 09 3B 5B 70 63 63 30 30 35 5D 20 63 6C 65    H..;[pcc005] cle
028E90:  61 72 20 74 68 65 20 6F 70 65 6E 20 62 69 74 0D    ar the open bit.
028EA0:  0A 09 6D 6F 76 09 6D 2C 61 09 09 3B 5B 70 63 63    ..mov.m,a..;[pcc
028EB0:  30 30 35 5D 20 61 6E 64 20 73 74 6F 72 65 20 62    005] and store b
028EC0:  61 63 6B 0D 0A 09 72 65 74 09 09 09 3B 5B 70 63    ack...ret...;[pc
028ED0:  63 30 30 35 5D 0D 0A 0D 0A 3B 5B 70 63 63 30 30    c005]....;[pcc00
028EE0:  35 5D 0D 0A 3B 20 20 20 20 6C 6F 67 65 72 72 20    5]..;    logerr 
028EF0:  2D 20 68 65 72 65 20 6F 6E 20 61 20 76 61 72 69    - here on a vari
028F00:  65 74 79 20 6F 66 20 6C 6F 67 67 69 6E 67 20 65    ety of logging e
028F10:  72 72 6F 72 73 0D 0A 3B 09 6A 75 73 74 20 63 6C    rrors..;.just cl
028F20:  6F 73 65 20 74 68 65 20 66 69 6C 65 20 61 6E 64    ose the file and
028F30:  20 64 69 73 61 62 6C 65 20 6C 6F 67 67 69 6E 67     disable logging
028F40:  0D 0A 3B 09 63 61 6C 6C 65 64 20 66 72 6F 6D 20    ..;.called from 
028F50:  6C 6F 67 6F 70 6E 2C 6C 6F 67 70 74 72 2C 6C 6F    logopn,logptr,lo
028F60:  67 63 6C 73 0D 0A 0D 0A 6C 6F 67 65 72 72 3A 09    gcls....logerr:.
028F70:  6C 78 69 09 64 2C 65 72 6D 73 32 32 09 3B 5B 70    lxi.d,erms22.;[p
028F80:  63 63 30 30 35 5D 20 45 72 72 6F 72 20 6D 65 73    cc005] Error mes
028F90:  73 61 67 65 0D 0A 09 63 61 6C 6C 09 70 72 74 73    sage...call.prts
028FA0:  74 72 09 09 3B 5B 70 63 63 30 30 35 5D 20 70 72    tr..;[pcc005] pr
028FB0:  69 6E 74 20 69 74 0D 0A 09 6D 76 69 09 63 2C 63    int it...mvi.c,c
028FC0:  6C 6F 73 66 09 09 3B 5B 70 63 63 30 30 35 5D 20    losf..;[pcc005] 
028FD0:  43 6C 6F 73 65 20 74 68 65 20 66 69 6C 65 2E 0D    Close the file..
028FE0:  0A 09 6C 78 69 09 64 2C 66 63 62 09 09 3B 5B 70    ..lxi.d,fcb..;[p
028FF0:  63 63 30 31 32 5D 0D 0A 09 63 61 6C 6C 09 62 64    cc012]...call.bd
029000:  6F 67 6F 70 6E 20 2D 20 6F 70 65 6E 20 74 68 65    ogopn - open the
029010:  20 6C 6F 67 20 66 69 6C 65 0D 0A 3B 09 4F 70 65     log file..;.Ope
029020:  6E 20 74 68 65 20 6C 6F 67 20 66 69 6C 65 20 61    n the log file a
029030:  6E 64 20 61 70 70 65 6E 64 20 74 6F 20 69 74 20    nd append to it 
029040:  69 66 20 69 74 20 61 6C 72 65 61 64 79 20 65 78    if it already ex
029050:  69 73 74 73 0D 0A 3B 09 6F 72 20 63 72 65 61 74    ists..;.or creat
029060:  65 20 6F 6E 65 20 69 66 20 6E 6F 74 2E 0D 0A 0D    e one if not....
029070:  0A 6C 6F 67 6F 70 6E 3A 09 6C 78 69 09 68 2C 6C    .logopn:.lxi.h,l
029080:  6F 67 6E 61 6D 09 3B 5B 70 63 63 30 31 32 5D 20    ognam.;[pcc012] 
029090:  63 6F 70 79 20 6E 61 6D 65 0D 0A 09 6C 78 69 09    copy name...lxi.
0290A0:  64 2C 66 63 62 09 09 3B 5B 70 63 63 30 31 32 5D    d,fcb..;[pcc012]
0290B0:  20 74 6F 20 66 63 62 0D 0A 09 6C 78 69 09 62 2C     to fcb...lxi.b,
0290C0:  31 32 09 09 3B 5B 70 63 63 30 31 32 5D 20 31 32    12..;[pcc012] 12
0290D0:  20 62 79 74 65 73 0D 0A 09 63 61 6C 6C 09 6D 6F     bytes...call.mo
0290E0:  76 65 72 09 09 3B 5B 70 63 63 30 31 32 5D 20 63    ver..;[pcc012] c
0290F0:  6F 70 79 20 69 74 0D 0A 09 63 61 6C 6C 09 61 70    opy it...call.ap
029100:  70 66 69 6C 09 09 3B 5B 70 63 63 30 31 32 5D 20    pfil..;[pcc012] 
029110:  6F 70 65 6E 20 66 69 6C 65 20 66 6F 72 20 61 70    open file for ap
029120:  70 65 6E 64 69 6E 67 0D 0A 09 6A 6D 70 09 6C 6F    pending...jmp.lo
029130:  67 65 72 72 09 09 3B 5B 70 63 63 30 31 32 5D 20    gerr..;[pcc012] 
029140:  65 72 72 6F 72 0D 0A 09 6C 78 69 09 68 2C 6C 6F    error...lxi.h,lo
029150:  67 66 6C 67 09 3B 5B 70 63 63 30 30 35 5D 20 70    gflg.;[pcc005] p
029160:  6F 69 6E 74 20 74 6F 20 6C 6F 67 20 66 6C 61 67    oint to log flag
029170:  0D 0A 09 6D 76 69 09 61 2C 38 30 48 09 09 3B 5B    ...mvi.a,80H..;[
029180:  70 63 63 30 30 35 5D 20 66 69 6C 65 20 6F 70 65    pcc005] file ope
029190:  6E 20 66 6C 61 67 0D 0A 09 6F 72 61 09 6D 09 09    n flag...ora.m..
0291A0:  3B 5B 70 63 63 30 30 35 5D 20 6F 72 20 69 6E 20    ;[pcc005] or in 
0291B0:  63 6F 6E 74 65 6E 74 73 20 6F 66 20 6C 6F 67 66    contents of logf
0291C0:  6C 67 0D 0A 09 6D 6F 76 09 6D 2C 61 09 09 3B 5B    lg...mov.m,a..;[
0291D0:  70 63 63 30 30 35 5D 20 61 6E 64 20 73 74 6F 72    pcc005] and stor
0291E0:  65 20 62 61 63 6B 0D 0A 09 6C 78 69 09 64 2C 69    e back...lxi.d,i
0291F0:  6E 6D 73 32 38 09 3B 5B 70 63 63 30 30 35 5D 20    nms28.;[pcc005] 
029200:  6F 73 09 09 3B 5B 70 63 63 30 30 35 5D 0D 0A 09    os..;[pcc005]...
029210:  78 72 61 09 61 09 09 3B 5B 70 63 63 30 30 35 5D    xra.a..;[pcc005]
029220:  20 63 6C 65 61 72 20 6C 6F 67 66 6C 67 0D 0A 09     clear logflg...
029230:  73 74 61 09 6C 6F 67 66 6C 67 09 09 3B 5B 70 63    sta.logflg..;[pc
029240:  63 30 30 35 5D 20 73 6F 20 64 6F 6E 27 74 20 74    c005] so don't t
029250:  72 79 20 61 67 61 69 6E 0D 0A 09 72 65 74 09 09    ry again...ret..
029260:  09 3B 5B 70 63 63 30 30 35 5D 0D 0A 3B 0C 0D 0A    .;[pcc005]..;...
029270:  3B 0D 0A 3B 09 56 54 35 32 20 65 6D 75 6C 61 74    ;..;.VT52 emulat
029280:  69 6F 6E 2E 0D 0A 3B 09 63 61 6C 6C 65 64 20 62    ion...;.called b
029290:  79 3A 20 70 72 74 63 68 72 0D 0A 3B 09 41 2F 20    y: prtchr..;.A/ 
0292A0:  63 6F 6E 74 65 6E 74 73 20 6F 66 20 65 73 63 66    contents of escf
0292B0:  6C 67 20 28 67 75 61 72 61 6E 74 65 65 64 20 6E    lg (guaranteed n
0292C0:  6F 6E 2D 7A 65 72 6F 29 0D 0A 3B 09 45 2F 20 63    on-zero)..;.E/ c
0292D0:  75 72 72 65 6E 74 20 63 68 61 72 61 63 74 65 72    urrent character
0292E0:  0D 0A 3B 09 6D 6F 64 65 6D 20 69 73 20 73 65 6C    ..;.modem is sel
0292F0:  65 63 74 65 64 2E 0D 0A 3B 0D 0A 76 74 35 32 3A    ected...;..vt52:
029300:  09 63 70 69 09 31 09 09 3B 20 66 69 72 73 74 20    .cpi.1..; first 
029310:  63 68 61 72 61 63 74 65 72 20 61 66 74 65 72 20    character after 
029320:  65 73 63 61 70 65 3F 0D 0A 09 6A 6E 7A 09 76 74    escape?...jnz.vt
029330:  35 32 79 09 09 3B 20 6E 6F 2C 20 6D 75 73 74 20    52y..; no, must 
029340:  62 65 20 64 6F 69 6E 67 20 63 75 72 73 6F 72 20    be doing cursor 
029350:  70 6F 73 69 74 69 6F 6E 69 6E 67 2E 0D 0A 3B 0D    positioning...;.
029360:  0A 3B 09 45 20 63 6F 6E 74 61 69 6E 73 20 74 68    .;.E contains th
029370:  65 20 63 68 61 72 61 63 74 65 72 20 74 68 61 74    e character that
029380:  20 66 6F 6C 6C 6F 77 65 64 20 74 68 65 20 65 73     followed the es
029390:  63 61 70 65 2E 0D 0A 3B 09 76 61 6C 69 64 20 63    cape...;.valid c
0293A0:  68 61 72 61 63 74 65 72 73 20 61 72 65 3A 0D 0A    haracters are:..
0293B0:  3B 09 41 20 2D 20 63 75 72 73 6F 72 20 75 70 0D    ;.A - cursor up.
0293C0:  0A 3B 09 42 20 2D 20 63 75 72 73 6F 72 20 64 6F    .;.B - cursor do
0293D0:  77 6E 0D 0A 3B 09 43 20 2D 20 63 75 72 73 6F 72    wn..;.C - cursor
0293E0:  20 72 69 67 68 74 0D 0A 3B 09 44 20 2D 20 63 75     right..;.D - cu
0293F0:  72 73 6F 72 20 6C 65 66 74 0D 0A 3B 09 46 20 2D    rsor left..;.F -
029400:  61 73 73 75 6D 65 20 6C 6F 67 67 69 6E 67 20 69    assume logging i
029410:  73 20 6F 6E 0D 0A 09 63 70 69 09 38 31 48 09 09    s on...cpi.81H..
029420:  3B 5B 70 63 63 30 30 35 5D 20 63 68 65 63 6B 0D    ;[pcc005] check.
029430:  0A 09 6A 7A 09 70 72 74 73 74 72 09 09 3B 5B 70    ..jz.prtstr..;[p
029440:  63 63 30 30 35 5D 20 70 72 69 6E 74 20 6D 73 67    cc005] print msg
029450:  20 69 66 20 74 72 75 65 0D 0A 09 6C 78 69 09 64     if true...lxi.d
029460:  2C 69 6E 6D 73 32 37 09 3B 5B 70 63 63 30 30 35    ,inms27.;[pcc005
029470:  5D 20 6E 6F 2C 20 6D 75 73 74 20 62 65 20 73 75    ] no, must be su
029480:  73 70 65 6E 64 65 64 0D 0A 09 6A 6D 70 09 70 72    spended...jmp.pr
029490:  74 73 74 72 09 09 3B 5B 70 63 63 30 30 35 5D 20    tstr..;[pcc005] 
0294A0:  70 72 69 6E 74 20 61 6E 64 20 72 65 74 75 72 6E    print and return
0294B0:  0D 0A 0D 0A 3B 0D 0A 3B 09 6C 6F 67 69 74 20 2D    ....;..;.logit -
0294C0:  20 6F 75 74 70 75 74 20 63 68 61 72 61 63 74 65     output characte
0294D0:  72 20 69 6E 20 45 20 74 6F 20 6C 6F 67 20 66 69    r in E to log fi
0294E0:  6C 65 2E 0D 0A 3B 09 77 65 20 61 73 73 75 6D 65    le...;.we assume
0294F0:  20 74 68 65 20 68 6F 73 74 20 72 65 63 6F 67 6E     the host recogn
029500:  69 7A 65 73 20 78 6F 6E 2F 78 6F 66 66 2E 20 28    izes xon/xoff. (
029510:  77 65 20 70 72 6F 62 61 62 6C 79 20 73 68 6F 75    we probably shou
029520:  6C 64 6E 27 74 29 0D 0A 3B 09 6D 6F 64 65 6D 20    ldn't)..;.modem 
029530:  70 6F 72 74 20 69 73 20 73 65 6C 65 63 74 65 64    port is selected
029540:  2E 0D 0A 3B 09 70 72 65 73 65 72 76 65 73 20 64    ...;.preserves d
029550:  65 0D 0A 3B 09 63 61 6C 6C 65 64 20 62 79 3A 20    e..;.called by: 
029560:  70 72 74 63 68 72 0D 0A 0D 0A 6C 6F 67 69 74 3A    prtchr....logit:
029570:  09 6C 78 69 09 68 2C 63 68 72 63 6E 74 09 3B 5B    .lxi.h,chrcnt.;[
029580:  70 63 63 30 31 32 5D 20 70 6F 69 6E 74 20 74 6F    pcc012] point to
029590:  20 62 75 66 66 65 72 20 63 6F 75 6E 74 0D 0A 09     buffer count...
0295A0:  64 63 72 09 6D 09 09 3B 5B 70 63 63 30 31 32 5D    dcr.m..;[pcc012]
0295B0:  20 61 6E 64 20 64 65 63 72 65 6D 65 6E 74 0D 0A     and decrement..
0295C0:  09 6A 70 09 6C 6F 67 69 74 31 09 09 3B 5B 70 63    .jp.logit1..;[pc
0295D0:  63 30 31 32 5D 20 63 6F 6E 74 69 6E 75 65 20 69    c012] continue i
0295E0:  66 20 6F 6B 0D 0A 09 70 75 73 68 09 64 09 09 3B    f ok...push.d..;
0295F0:  5B 70 63 63 30 31 32 5D 20 73 61 76 65 20 64 65    [pcc012] save de
029600:  20 65 6E 74 65 72 20 67 72 61 70 68 69 63 73 20     enter graphics 
029610:  6D 6F 64 65 20 28 68 61 72 64 20 74 6F 20 64 6F    mode (hard to do
029620:  20 6F 6E 20 61 20 6E 6F 6E 2D 76 74 35 32 29 0D     on a non-vt52).
029630:  0A 3B 09 47 20 2D 20 65 78 69 74 20 67 72 61 70    .;.G - exit grap
029640:  68 69 63 73 20 6D 6F 64 65 0D 0A 3B 09 48 20 2D    hics mode..;.H -
029650:  20 68 6F 6D 65 0D 0A 3B 09 49 20 2D 20 72 65 76     home..;.I - rev
029660:  65 72 73 65 20 6C 69 6E 65 66 65 65 64 0D 0A 3B    erse linefeed..;
029670:  09 4A 20 2D 20 65 72 61 73 65 20 74 6F 20 65 6E    .J - erase to en
029680:  64 20 6F 66 20 73 63 72 65 65 6E 0D 0A 3B 09 4B    d of screen..;.K
029690:  20 2D 20 65 72 61 73 65 20 74 6F 20 65 6E 64 20     - erase to end 
0296A0:  6F 66 20 6C 69 6E 65 0D 0A 3B 09 59 20 2D 20 63    of line..;.Y - c
0296B0:  75 72 73 6F 72 20 70 6F 73 69 74 69 6F 6E 69 6E    ursor positionin
0296C0:  67 20 6C 65 61 64 69 6E 0D 0A 3B 09 5A 20 2D 20    g leadin..;.Z - 
0296D0:  69 64 65 6E 74 69 66 79 20 74 65 72 6D 69 6E 61    identify termina
0296E0:  6C 20 61 73 20 56 54 35 32 0D 0A 3B 09 5B 20 2D    l as VT52..;.[ -
0296F0:  20 65 6E 74 65 72 20 68 6F 6C 64 2D 73 63 72 65     enter hold-scre
029700:  65 6E 20 6D 6F 64 65 20 28 6E 6F 74 20 73 75 70    en mode (not sup
029710:  70 6F 72 74 65 64 29 0D 0A 3B 09 5C 20 2D 20 65    ported)..;.\ - e
029720:  78 69 74 20 68 6F 6C 64 2D 73 63 72 65 65 6E 20    xit hold-screen 
029730:  6D 6F 64 65 20 28 6E 6F 74 20 73 75 70 70 6F 72    mode (not suppor
029740:  74 65 64 29 0D 0A 3B 09 3E 20 2D 20 65 6E 74 65    ted)..;.> - ente
029750:  72 20 61 6C 74 65 72 6E 61 74 65 2D 6B 65 79 70    r alternate-keyp
029760:  61 64 20 6D 6F 64 65 3F 20 28 6E 6F 74 20 73 75    ad mode? (not su
029770:  70 70 6F 72 74 65 64 29 0D 0A 3B 09 3D 20 2D 20    pported)..;.= - 
029780:  65 78 69 74 20 61 6C 74 65 72 6E 61 74 65 2D 6B    exit alternate-k
029790:  65 79 70 61 64 20 6D 6F 64 65 3F 20 28 6E 6F 74    eypad mode? (not
0297A0:  20 73 75 70 70 6F 72 74 65 64 29 0D 0A 3B 0D 0A     supported)..;..
0297B0:  3B 09 49 6E 76 61 6C 69 64 20 73 65 71 75 65 6E    ;.Invalid sequen
0297C0:  63 65 73 20 61 72 65 20 68 61 6E 64 6C 65 64 20    ces are handled 
0297D0:  61 73 20 74 68 65 20 56 54 35 32 20 64 6F 65 73    as the VT52 does
0297E0:  20 2D 20 74 68 65 20 65 73 63 61 70 65 20 61 6E     - the escape an
0297F0:  64 0D 0A 3B 09 74 68 65 20 66 6F 6C 6C 6F 77 69    d..;.the followi
029800:  0D 0A 09 63 61 6C 6C 09 6F 75 74 61 64 76 09 09    ...call.outadv..
029810:  3B 5B 70 63 63 30 31 32 5D 20 61 64 76 61 6E 63    ;[pcc012] advanc
029820:  65 20 62 75 66 66 65 72 20 69 66 20 69 6E 20 6D    e buffer if in m
029830:  65 6D 6F 72 79 0D 0A 09 63 61 6C 6C 09 6C 6F 67    emory...call.log
029840:  77 72 74 09 09 3B 5B 70 63 63 30 31 32 5D 20 73    wrt..;[pcc012] s
029850:  69 67 68 2C 20 74 69 6D 65 20 74 6F 20 77 72 69    igh, time to wri
029860:  74 65 20 74 6F 20 64 69 73 6B 0D 0A 09 70 6F 70    te to disk...pop
029870:  09 64 09 09 3B 5B 70 63 63 30 31 32 5D 20 72 65    .d..;[pcc012] re
029880:  73 74 6F 72 65 20 64 65 0D 0A 09 6C 64 61 09 6C    store de...lda.l
029890:  6F 67 66 6C 67 09 09 3B 5B 70 63 63 30 31 32 5D    ogflg..;[pcc012]
0298A0:  20 67 65 74 20 6C 6F 67 67 69 6E 67 20 66 6C 61     get logging fla
0298B0:  67 0D 0A 09 6F 72 61 09 61 09 09 3B 5B 70 63 63    g...ora.a..;[pcc
0298C0:  30 31 32 5D 20 44 69 64 20 77 65 20 71 75 69 74    012] Did we quit
0298D0:  20 62 65 63 61 75 73 65 20 6F 66 20 61 6E 20 65     because of an e
0298E0:  72 72 6F 72 0D 0A 09 72 7A 09 09 09 3B 5B 70 63    rror...rz...;[pc
0298F0:  63 30 31 32 5D 20 72 65 74 75 72 6E 20 6E 6F 77    c012] return now
029900:  20 69 66 20 73 6F 0D 0A 6C 6F 67 69 74 31 3A 09     if so..logit1:.
029910:  6C 68 6C 64 09 62 75 66 70 6E 74 09 09 3B 5B 70    lhld.bufpnt..;[p
029920:  63 63 30 31 32 5D 20 67 65 74 20 62 75 66 66 65    cc012] get buffe
029930:  72 20 70 6F 69 6E 74 65 72 0D 0A 09 6D 6F 76 09    r pointer...mov.
029940:  6D 2C 65 09 09 3B 53 74 6F 72 65 20 74 68 65 20    m,e..;Store the 
029950:  63 68 61 72 2E 0D 0A 09 69 6E 78 09 68 0D 0A 09    char....inx.h...
029960:  73 68 6C 64 09 62 75 66 70 6E 74 0D 0A 09 72 65    shld.bufpnt...re
029970:  74 09 09 09 3B 5B 70 63 63 30 31 32 5D 20 61 6E    t...;[pcc012] an
029980:  64 20 72 65 74 75 72 6E 0D 0A 0D 0A 3B 5B 70 63    d return....;[pc
029990:  63 30 31 32 5D 0D 0A 3B 20 20 6C 6F 67 77 72 74    c012]..;  logwrt
0299A0:  20 2D 20 77 72 69 74 65 20 74 6F 20 6C 6F 67 20     - write to log 
0299B0:  66 69 6C 65 20 77 69 74 68 20 58 4F 4E 2F 58 4F    file with XON/XO
0299C0:  46 46 20 73 69 6E 63 65 20 69 74 20 6D 61 79 20    FF since it may 
0299D0:  74 61 6B 65 20 61 20 77 68 69 6C 65 2E 0D 0A 0D    take a while....
0299E0:  0A 6C 6F 67 77 72 74 3A 09 6D 76 69 09 61 2C 78    .logwrt:.mvi.a,x
0299F0:  6F 66 66 09 09 3B 5E 53 20 74 6F 20 73 74 6F 70    off..;^S to stop
029A00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
029A10:  23 00 00 00 02 09 4E E5 23 00 C1 02 00 00 00 02    #.....N.#.......
029A20:  23 00 C6 02 00 00 00 02 23 00 C2 02 00 00 00 02    #.......#.......
029A30:  23 00 C7 02 00 00 00 02 23 00 C3 02 00 00 00 02    #.......#.......
029A40:  23 00 C8 02 00 00 00 02 23 00 C4 02 00 00 00 02    #.......#.......
029A50:  23 00 C9 02 00 00 00 02 23 00 C5 02 00 00 00 02    #.......#.......
029A60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029A70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029A80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029A90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029AA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029AB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029AC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029AD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029AE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029AF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029B00:  6E 67 20 63 68 61 72 61 63 74 65 72 20 61 72 65    ng character are
029B10:  20 73 77 61 6C 6C 6F 77 65 64 2C 20 6E 65 76 65     swallowed, neve
029B20:  72 20 74 6F 20 62 65 20 73 65 65 6E 20 61 67 61    r to be seen aga
029B30:  69 6E 2E 0D 0A 3B 09 46 6F 72 20 3C 65 73 63 3E    in...;.For <esc>
029B40:  45 2C 20 74 68 65 20 74 72 61 6E 73 6C 61 74 69    E, the translati
029B50:  6F 6E 20 74 61 62 6C 65 20 6D 61 79 20 63 6F 6E    on table may con
029B60:  74 61 69 6E 20 6A 75 73 74 20 27 24 27 20 28 6E    tain just '$' (n
029B70:  6F 20 61 63 74 69 6F 6E 29 2C 0D 0A 3B 09 6F 72    o action),..;.or
029B80:  20 6D 61 79 20 62 65 20 75 73 65 64 20 61 73 20     may be used as 
029B90:  63 6C 65 61 72 2D 61 6E 64 2D 68 6F 6D 65 2C 20    clear-and-home, 
029BA0:  61 73 20 69 6E 20 74 68 65 20 48 65 61 74 68 2F    as in the Heath/
029BB0:  5A 65 6E 69 74 68 20 48 31 39 2E 0D 0A 3B 0D 0A    Zenith H19...;..
029BC0:  09 6D 6F 76 09 61 2C 65 09 09 3B 20 67 65 74 20    .mov.a,e..; get 
029BD0:  74 68 65 20 73 65 63 6F 6E 64 20 63 68 61 72 61    the second chara
029BE0:  63 74 65 72 20 6F 66 20 74 68 65 20 73 65 71 75    cter of the sequ
029BF0:  65 6E 63 65 2E 0D 0A 09 63 70 69 09 27 59 27 09    ence....cpi.'Y'.
029C00:  09 3B 20 69 66 20 63 75 72 73 6F 72 20 6C 65 61    .; if cursor lea
029C10:  64 2D 69 6E 20 68 61 6E 64 6C 65 20 69 74 2E 0D    d-in handle it..
029C20:  0A 09 6A 6E 7A 09 76 74 35 32 61 09 09 3B 20 69    ..jnz.vt52a..; i
029C30:  66 20 6E 6F 74 2C 20 67 6F 20 6F 6E 2E 0D 0A 09    f not, go on....
029C40:  6D 76 69 09 61 2C 32 09 09 3B 20 73 74 61 74 65    mvi.a,2..; state
029C50:  20 3D 20 32 3A 20 72 6F 77 20 66 6F 6C 6C 6F 77     = 2: row follow
029C60:  73 2E 0D 0A 09 73 74 61 09 65 73 63 66 6C 67 09    s....sta.escflg.
029C70:  09 3B 20 75 70 64 61 74 65 20 74 68 65 20 66 6C    .; update the fl
029C80:  61 67 2E 0D 0A 09 72 65 74 09 09 09 3B 20 62 61    ag....ret...; ba
029C90:  63 6B 20 66 6F 72 20 61 6E 6F 74 68 65 72 20 63    ck for another c
029CA0:  68 61 72 61 63 74 65 72 0D 0A 0D 0A 76 74 35 32    haracter....vt52
029CB0:  61 3A 09 63 70 69 09 27 5A 27 09 09 3B 20 56 54    a:.cpi.'Z'..; VT
029CC0:  35 32 20 49 44 20 71 75 65 72 79 3F 0D 0A 09 6A    52 ID query?...j
029CD0:  7A 09 76 74 35 32 69 64 09 09 3B 20 79 65 73 2E    z.vt52id..; yes.
029CE0:  20 63 6C 61 69 6D 20 74 6F 20 62 65 20 6F 6E 65     claim to be one
029CF0:  2E 0D 0A 09 63 70 69 09 27 41 27 09 09 3B 4C 65    ....cpi.'A'..;Le
029D00:  74 2C 20 74 65 6C 6E 65 74 0D 0A 0D 0A 63 6F 6E    t, telnet....con
029D10:  63 68 72 3A 09 63 61 6C 6C 09 69 6E 70 63 6F 6E    chr:.call.inpcon
029D20:  09 09 3B 54 72 79 20 74 6F 20 67 65 74 20 61 20    ..;Try to get a 
029D30:  63 68 61 72 61 63 74 65 72 20 66 72 6F 6D 20 74    character from t
029D40:  68 65 20 63 6F 6E 73 6F 6C 65 0D 0A 09 61 6E 69    he console...ani
029D50:  09 30 37 46 48 09 09 3B 4B 65 65 70 20 6F 6E 6C    .07FH..;Keep onl
029D60:  79 20 37 20 62 69 74 73 0D 0A 09 6A 7A 09 72 73    y 7 bits...jz.rs
029D70:  6B 70 09 09 3B 4E 75 6C 6C 20 6D 65 61 6E 73 20    kp..;Null means 
029D80:  6E 6F 74 68 69 6E 67 20 74 68 65 72 65 2E 0D 0A    nothing there...
029D90:  09 6D 6F 76 09 65 2C 61 09 09 3B 4D 6F 76 65 20    .mov.e,a..;Move 
029DA0:  74 68 65 20 63 68 61 72 20 66 6F 72 20 63 6F 6D    the char for com
029DB0:  70 61 72 69 73 6F 6E 2E 0D 0A 09 73 74 61 09 6C    parison....sta.l
029DC0:  73 74 63 68 72 09 09 3B 53 61 76 65 20 69 74 0D    stchr..;Save it.
029DD0:  0A 09 6C 64 61 09 65 73 63 63 68 72 09 09 3B 47    ..lda.escchr..;G
029DE0:  65 74 20 74 68 65 20 65 73 63 61 70 65 20 63 68    et the escape ch
029DF0:  61 72 2E 0D 0A 09 63 6D 70 09 65 09 09 3B 49 73    ar....cmp.e..;Is
029E00:  20 69 74 20 61 6E 20 65 73 63 61 70 65 20 63 68     it an escape ch
029E10:  61 72 3F 0D 0A 09 6A 7A 09 69 6E 74 63 68 72 09    ar?...jz.intchr.
029E20:  09 3B 49 66 20 73 6F 20 67 6F 20 70 72 6F 63 65    .;If so go proce
029E30:  73 73 20 69 74 2E 0D 0A 09 63 61 6C 6C 09 73 65    ss it....call.se
029E40:  6C 6D 64 6D 09 09 3B 20 73 65 6C 65 63 74 20 74    lmdm..; select t
029E50:  68 65 20 6D 6F 64 65 6D 0D 0A 09 6D 6F 76 09 61    he modem...mov.a
029E60:  2C 65 09 09 3B 47 65 74 20 74 68 65 20 63 68 61    ,e..;Get the cha
029E70:  72 2E 0D 0A 09 63 61 6C 6C 09 73 65 74 70 61 72    r....call.setpar
029E80:  09 09 3B 53 65 74 20 70 61 72 69 74 79 20 28 69    ..;Set parity (i
029E90:  66 20 61 6E 79 29 2E 0D 0A 09 6D 6F 76 09 65 2C    f any)....mov.e,
029EA0:  61 09 09 3B 52 65 73 74 6F 72 65 20 69 74 2E 0D    a..;Restore it..
029EB0:  0A 09 63 61 6C 6C 09 6F 75 74 6D 64 6D 09 09 3B    ..call.outmdm..;
029EC0:  4F 75 74 70 75 74 20 74 68 65 20 63 68 61 72 20    Output the char 
029ED0:  74 6F 20 74 68 65 20 70 6F 72 74 2E 0D 0A 09 63    to the port....c
029EE0:  61 6C 6C 09 73 65 6C 63 6F 6E 09 09 3B 20 72 65    all.selcon..; re
029EF0:  73 65 6C 65 63 74 20 63 6F 6E 73 6F 6C 65 0D 0A    select console..
029F00:  73 73 20 74 68 61 6E 20 61 6E 20 27 41 27 3F 0D    ss than an 'A'?.
029F10:  0A 09 6A 6D 09 76 74 69 67 09 09 3B 59 65 73 20    ..jm.vtig..;Yes 
029F20:  2D 20 69 67 6E 6F 72 65 2E 0D 0A 09 63 70 69 09    - ignore....cpi.
029F30:  27 4B 27 2B 31 09 09 3B 47 72 65 61 74 65 72 20    'K'+1..;Greater 
029F40:  74 68 61 6E 20 27 4B 27 3F 0D 0A 09 6A 70 09 76    than 'K'?...jp.v
029F50:  74 69 67 09 09 3B 59 65 73 20 2D 20 69 67 6E 6F    tig..;Yes - igno
029F60:  72 65 2E 0D 0A 09 73 75 69 09 27 41 27 09 09 3B    re....sui.'A'..;
029F70:  45 6C 73 65 20 6D 61 6B 65 20 69 6E 74 6F 20 69    Else make into i
029F80:  6E 64 65 78 2E 0D 0A 09 72 6C 63 09 09 09 3B 4D    ndex....rlc...;M
029F90:  75 6C 74 69 70 6C 79 20 62 79 20 66 6F 75 72 2E    ultiply by four.
029FA0:  0D 0A 09 72 6C 63 09 09 09 3B 28 53 68 69 66 74    ...rlc...;(Shift
029FB0:  20 6C 65 66 74 20 74 77 69 63 65 2E 29 0D 0A 09     left twice.)...
029FC0:  6C 68 6C 64 09 70 74 74 61 62 09 09 3B 4C 6F 61    lhld.pttab..;Loa
029FD0:  64 20 62 61 73 65 20 61 64 64 72 20 6F 66 20 74    d base addr of t
029FE0:  61 62 6C 65 2E 0D 0A 09 6D 6F 76 09 65 2C 61 09    able....mov.e,a.
029FF0:  09 3B 4D 6F 76 65 20 61 20 69 6E 74 6F 20 64 65    .;Move a into de
02A000:  20 70 61 69 72 2E 0D 0A 09 6D 76 69 09 64 2C 30     pair....mvi.d,0
02A010:  30 48 09 09 3B 5A 65 72 6F 20 6F 75 74 20 68 69    0H..;Zero out hi
02A020:  67 68 20 62 79 74 65 2E 0D 0A 09 64 61 64 09 64    gh byte....dad.d
02A030:  09 09 3B 44 6F 75 62 6C 65 20 61 64 64 20 69 6E    ..;Double add in
02A040:  64 65 78 2B 6F 66 66 73 65 74 2E 0D 0A 09 78 63    dex+offset....xc
02A050:  68 67 09 09 09 3B 45 78 63 68 61 6E 67 65 20 64    hg...;Exchange d
02A060:  65 20 77 69 74 68 20 68 6C 2E 0D 0A 09 63 61 6C    e with hl....cal
02A070:  6C 09 73 65 6C 63 6F 6E 09 09 3B 20 73 65 6C 65    l.selcon..; sele
02A080:  63 74 20 63 6F 6E 73 6F 6C 65 0D 0A 09 63 61 6C    ct console...cal
02A090:  6C 09 70 72 74 73 74 72 09 09 3B 61 6E 64 20 73    l.prtstr..;and s
02A0A0:  79 73 63 61 6C 6C 2E 0D 0A 76 74 69 67 3A 09 09    yscall...vtig:..
02A0B0:  09 09 3B 49 67 6E 6F 72 65 20 65 73 63 61 70 65    ..;Ignore escape
02A0C0:  20 73 65 71 75 65 6E 63 65 2E 0D 0A 09 78 72 61     sequence....xra
02A0D0:  09 61 09 09 3B 52 65 73 65 74 20 74 68 65 20 6F    .a..;Reset the o
02A0E0:  6C 27 20 65 73 63 61 70 65 20 66 6C 61 67 2E 0D    l' escape flag..
02A0F0:  0A 09 73 74 61 09 65 73 63 66 6C 67 0D 0A 09 72    ..sta.escflg...r
02A100:  09 6C 64 61 09 65 63 6F 66 6C 67 09 09 3B 47 65    .lda.ecoflg..;Ge
02A110:  74 20 74 68 65 20 65 63 68 6F 20 66 6C 61 67 2E    t the echo flag.
02A120:  0D 0A 09 6F 72 61 09 61 09 09 3B 49 73 20 69 74    ...ora.a..;Is it
02A130:  20 74 75 72 6E 65 64 20 6F 6E 3F 0D 0A 09 6A 7A     turned on?...jz
02A140:  09 72 73 6B 70 09 09 3B 49 66 20 6E 6F 74 20 77    .rskp..;If not w
02A150:  65 27 72 65 20 64 6F 6E 65 20 68 65 72 65 2E 0D    e're done here..
02A160:  0A 09 6D 6F 76 09 61 2C 65 09 09 3B 47 65 74 20    ..mov.a,e..;Get 
02A170:  74 68 65 20 63 68 61 72 2E 0D 0A 09 61 6E 69 09    the char....ani.
02A180:  37 46 48 09 09 3B 54 75 72 6E 20 6F 66 66 20 74    7FH..;Turn off t
02A190:  68 65 20 70 61 72 69 74 79 20 62 69 74 2E 0D 0A    he parity bit...
02A1A0:  09 6D 6F 76 09 65 2C 61 0D 0A 09 63 61 6C 6C 09    .mov.e,a...call.
02A1B0:  6F 75 74 63 6F 6E 09 09 3B 20 65 63 68 6F 20 74    outcon..; echo t
02A1C0:  68 65 20 63 68 61 72 61 63 74 65 72 2E 0D 0A 09    he character....
02A1D0:  6A 6D 70 09 72 73 6B 70 09 09 3B 20 75 73 65 20    jmp.rskp..; use 
02A1E0:  73 6B 69 70 20 72 65 74 75 72 6E 0D 0A 3B 0C 0D    skip return..;..
02A1F0:  0A 3B 09 74 72 61 6E 73 70 61 72 65 6E 74 20 65    .;.transparent e
02A200:  73 63 61 70 65 20 63 68 61 72 61 63 74 65 72 20    scape character 
02A210:  68 61 73 20 62 65 65 6E 20 74 79 70 65 64 2E 20    has been typed. 
02A220:  64 69 73 70 61 74 63 68 20 6F 6E 20 73 65 63 6F    dispatch on seco
02A230:  6E 64 0D 0A 3B 09 63 68 61 72 61 63 74 65 72 2E    nd..;.character.
02A240:  20 28 63 6F 6E 73 6F 6C 65 20 69 73 20 73 74 69     (console is sti
02A250:  6C 6C 20 73 65 6C 65 63 74 65 64 29 0D 0A 3B 09    ll selected)..;.
02A260:  68 65 72 65 20 66 72 6F 6D 3A 20 63 6F 6E 63 68    here from: conch
02A270:  72 0D 0A 0D 0A 69 6E 74 63 68 72 3A 20 63 61 6C    r....intchr: cal
02A280:  6C 09 69 6E 70 63 6F 6E 09 09 3B 20 67 65 74 20    l.inpcon..; get 
02A290:  61 6E 6F 74 68 65 72 20 63 68 61 72 61 63 74 65    another characte
02A2A0:  72 20 66 72 6F 6D 20 74 68 65 20 63 6F 6E 73 6F    r from the conso
02A2B0:  6C 65 0D 0A 09 6F 72 61 09 61 09 09 3B 20 7A 65    le...ora.a..; ze
02A2C0:  72 6F 20 6D 65 61 6E 73 20 6E 6F 20 63 68 61 72    ro means no char
02A2D0:  61 63 74 65 72 20 61 76 61 69 6C 61 62 6C 65 20    acter available 
02A2E0:  79 65 74 2E 0D 0A 09 6A 7A 09 69 6E 74 63 68 72    yet....jz.intchr
02A2F0:  09 09 3B 20 49 66 20 73 6F 2C 20 6C 6F 6F 70 20    ..; If so, loop 
02A300:  65 74 09 09 09 3B 52 65 74 75 72 6E 20 68 6F 6D    et...;Return hom
02A310:  65 2E 0D 0A 0D 0A 3B 20 68 65 72 65 20 66 6F 72    e.....; here for
02A320:  20 3C 65 73 63 3E 5A 2E 20 20 54 65 6C 6C 20 74     <esc>Z.  Tell t
02A330:  68 65 20 68 6F 73 74 20 77 65 27 72 65 20 61 20    he host we're a 
02A340:  56 54 35 32 2E 20 28 53 75 72 65 20 77 65 20 61    VT52. (Sure we a
02A350:  72 65 2E 2E 2E 29 0D 0A 76 74 35 32 69 64 3A 09    re...)..vt52id:.
02A360:  6D 76 69 09 61 2C 65 73 63 09 09 3B 20 72 65 73    mvi.a,esc..; res
02A370:  70 6F 6E 73 65 20 69 73 20 65 73 63 61 70 65 2E    ponse is escape.
02A380:  2E 2E 0D 0A 09 63 61 6C 6C 09 73 65 74 70 61 72    .....call.setpar
02A390:  09 09 3B 20 28 6E 65 65 64 20 63 6F 72 72 65 63    ..; (need correc
02A3A0:  74 20 70 61 72 69 74 79 29 0D 0A 09 6D 6F 76 09    t parity)...mov.
02A3B0:  65 2C 61 0D 0A 09 63 61 6C 6C 09 6F 75 74 6D 64    e,a...call.outmd
02A3C0:  6D 09 09 3B 20 28 63 6F 6E 73 6F 6C 65 20 61 6C    m..; (console al
02A3D0:  72 65 61 64 79 20 73 65 6C 65 63 74 65 64 29 0D    ready selected).
02A3E0:  0A 09 6D 76 69 09 61 2C 27 2F 27 09 09 3B 20 2E    ..mvi.a,'/'..; .
02A3F0:  2E 2E 20 73 6C 61 73 68 20 2E 2E 2E 0D 0A 09 63    .. slash ......c
02A400:  61 6C 6C 09 73 65 74 70 61 72 09 09 3B 20 28 77    all.setpar..; (w
02A410:  69 74 68 20 70 61 72 69 74 79 29 0D 0A 09 6D 6F    ith parity)...mo
02A420:  76 09 65 2C 61 0D 0A 09 63 61 6C 6C 09 6F 75 74    v.e,a...call.out
02A430:  6D 64 6D 0D 0A 09 6D 76 69 09 61 2C 27 4B 27 09    mdm...mvi.a,'K'.
02A440:  09 3B 20 2E 2E 2E 20 4B 2E 0D 0A 09 63 61 6C 6C    .; ... K....call
02A450:  09 73 65 74 70 61 72 0D 0A 09 6D 6F 76 09 65 2C    .setpar...mov.e,
02A460:  61 0D 0A 09 63 61 6C 6C 09 6F 75 74 6D 64 6D 0D    a...call.outmdm.
02A470:  0A 09 6A 6D 70 09 76 74 69 67 09 09 3B 20 63 6C    ..jmp.vtig..; cl
02A480:  65 61 72 20 65 73 63 61 70 65 2D 73 65 71 75 65    ear escape-seque
02A490:  6E 63 65 20 66 6C 61 67 20 61 6E 64 20 72 65 74    nce flag and ret
02A4A0:  75 72 6E 2E 0D 0A 0D 0A 3B 20 68 65 72 65 20 77    urn.....; here w
02A4B0:  68 65 6E 20 65 73 63 66 6C 67 20 69 73 6E 27 74    hen escflg isn't
02A4C0:  20 30 20 6F 72 20 31 20 2D 20 70 72 6F 63 65 73     0 or 1 - proces
02A4D0:  73 69 6E 67 20 63 75 72 73 6F 72 20 70 6F 73 69    sing cursor posi
02A4E0:  74 69 6F 6E 69 6E 67 20 73 65 71 75 65 6E 63 65    tioning sequence
02A4F0:  2E 0D 0A 76 74 35 32 79 3A 09 63 70 69 09 32 09    ...vt52y:.cpi.2.
02A500:  75 6E 74 69 6C 20 77 65 20 67 65 74 20 61 20 63    until we get a c
02A510:  68 61 72 2E 0D 0A 09 6D 6F 76 09 62 2C 61 09 09    har....mov.b,a..
02A520:  3B 53 61 76 65 20 74 68 65 20 61 63 74 75 61 6C    ;Save the actual
02A530:  20 63 68 61 72 2E 0D 0A 09 63 70 69 09 63 74 72     char....cpi.ctr
02A540:  6C 63 09 09 3B 69 73 20 69 74 20 43 6F 6E 74 72    lc..;is it Contr
02A550:  6F 6C 2D 43 3F 0D 0A 09 6A 7A 09 63 6F 6E 74 63    ol-C?...jz.contc
02A560:  09 09 3B 79 65 73 0D 0A 09 61 6E 69 09 31 33 37    ..;yes...ani.137
02A570:  4F 09 09 3B 43 6F 6E 76 65 72 74 20 74 6F 20 75    O..;Convert to u
02A580:  70 70 65 72 20 63 61 73 65 2E 0D 0A 09 63 70 69    pper case....cpi
02A590:  09 27 43 27 09 09 3B 49 73 20 69 74 20 63 6C 6F    .'C'..;Is it clo
02A5A0:  73 65 3F 0D 0A 09 6A 6E 7A 09 69 6E 74 63 68 30    se?...jnz.intch0
02A5B0:  09 09 3B 49 66 20 6E 6F 74 20 70 72 6F 63 65 65    ..;If not procee
02A5C0:  64 2E 0D 0A 63 6F 6E 74 63 3A 09 6C 78 69 09 64    d...contc:.lxi.d
02A5D0:  2C 69 6E 66 6D 73 39 09 3B 53 61 79 20 77 65 20    ,infms9.;Say we 
02A5E0:  61 72 65 20 62 61 63 6B 2E 0D 0A 09 63 61 6C 6C    are back....call
02A5F0:  09 70 72 74 73 74 72 0D 0A 09 63 61 6C 6C 09 73    .prtstr...call.s
02A600:  79 73 63 6C 73 09 09 3B 20 63 61 6C 6C 20 73 79    yscls..; call sy
02A610:  73 74 65 6D 2D 64 65 70 65 6E 64 65 6E 74 20 63    stem-dependent c
02A620:  6C 6F 73 65 20 72 6F 75 74 69 6E 65 0D 0A 09 6C    lose routine...l
02A630:  64 61 09 6C 6F 67 66 6C 67 09 09 3B 47 65 74 20    da.logflg..;Get 
02A640:  74 68 65 20 6C 6F 67 20 66 6C 61 67 2E 0D 0A 09    the log flag....
02A650:  6F 72 61 09 61 09 09 3B 5B 70 63 63 30 30 35 5D    ora.a..;[pcc005]
02A660:  20 43 68 65 63 6B 20 69 66 20 6F 70 65 6E 0D 0A     Check if open..
02A670:  09 63 6D 09 6C 6F 67 63 6C 73 09 09 3B 5B 70 63    .cm.logcls..;[pc
02A680:  63 30 30 35 5D 20 43 6C 6F 73 65 20 69 66 20 6E    c005] Close if n
02A690:  65 65 64 65 64 0D 0A 09 72 65 74 0D 0A 0D 0A 3B    eeded...ret....;
02A6A0:  48 65 72 65 20 69 66 20 6E 6F 74 20 61 20 27 43    Here if not a 'C
02A6B0:  27 20 6F 72 20 27 5E 43 27 0D 0A 0D 0A 69 6E 74    ' or '^C'....int
02A6C0:  63 68 30 3A 20 63 70 69 09 27 53 27 09 09 3B 49    ch0: cpi.'S'..;I
02A6D0:  73 20 69 74 20 73 74 61 74 75 73 3F 0D 0A 09 6A    s it status?...j
02A6E0:  6E 7A 09 69 6E 63 68 30 31 09 09 3B 49 66 20 6E    nz.inch01..;If n
02A6F0:  6F 74 2C 20 70 72 6F 63 65 65 64 2E 0D 0A 09 63    ot, proceed....c
02A700:  09 3B 20 6C 6F 6F 6B 69 6E 67 20 66 6F 72 20 72    .; looking for r
02A710:  6F 77 3F 20 28 79 2D 63 6F 6F 72 64 69 6E 61 74    ow? (y-coordinat
02A720:  65 29 0D 0A 09 6A 6E 7A 09 76 74 35 32 78 09 09    e)...jnz.vt52x..
02A730:  3B 20 6E 6F 2C 20 6D 75 73 74 20 62 65 20 63 6F    ; no, must be co
02A740:  6C 75 6D 6E 2E 0D 0A 09 6D 6F 76 09 61 2C 65 09    lumn....mov.a,e.
02A750:  09 3B 20 79 65 73 2E 20 67 65 74 20 63 6F 6F 72    .; yes. get coor
02A760:  64 69 6E 61 74 65 0D 0A 09 73 75 69 09 28 27 20    dinate...sui.(' 
02A770:  27 2D 31 29 09 09 3B 20 63 6F 6E 76 65 72 74 20    '-1)..; convert 
02A780:  66 72 6F 6D 20 61 73 63 69 69 20 28 31 20 3D 20    from ascii (1 = 
02A790:  74 6F 70 20 6C 69 6E 65 29 0D 0A 09 73 74 61 09    top line)...sta.
02A7A0:  76 74 79 76 61 6C 09 09 3B 20 73 74 6F 72 65 20    vtyval..; store 
02A7B0:  66 6F 72 20 6C 61 74 65 72 0D 0A 09 6D 76 69 09    for later...mvi.
02A7C0:  61 2C 33 09 09 3B 20 61 64 76 61 6E 63 65 20 74    a,3..; advance t
02A7D0:  6F 20 6E 65 78 74 20 73 74 61 74 65 20 28 78 20    o next state (x 
02A7E0:  63 6F 6F 72 64 29 0D 0A 09 73 74 61 09 65 73 63    coord)...sta.esc
02A7F0:  66 6C 67 09 09 3B 20 73 74 6F 72 65 20 69 74 0D    flg..; store it.
02A800:  0A 09 72 65 74 09 09 09 3B 20 74 72 79 20 66 6F    ..ret...; try fo
02A810:  72 20 61 6E 6F 74 68 65 72 20 63 68 61 72 61 63    r another charac
02A820:  74 65 72 0D 0A 0D 0A 3B 20 68 65 72 65 20 77 68    ter....; here wh
02A830:  65 6E 20 65 73 63 66 6C 61 67 20 69 73 6E 27 74    en escflag isn't
02A840:  20 30 2C 20 31 2C 20 6F 72 20 32 20 2D 20 69 74     0, 1, or 2 - it
02A850:  20 6D 75 73 74 20 62 65 20 33 2E 20 28 72 69 67     must be 3. (rig
02A860:  68 74 3F 29 0D 0A 3B 20 45 20 68 6F 6C 64 73 20    ht?)..; E holds 
02A870:  74 68 65 20 6C 61 73 74 20 63 68 61 72 61 63 74    the last charact
02A880:  65 72 20 6F 66 20 74 68 65 20 63 75 72 73 6F 72    er of the cursor
02A890:  20 70 6F 73 69 74 69 6F 6E 69 6E 67 20 73 65 71     positioning seq
02A8A0:  75 65 6E 63 65 2E 0D 0A 76 74 35 32 78 3A 09 78    uence...vt52x:.x
02A8B0:  72 61 09 61 09 09 3B 20 65 6E 64 20 6F 66 20 65    ra.a..; end of e
02A8C0:  73 63 61 70 65 20 73 65 71 75 65 6E 63 65 2C 20    scape sequence, 
02A8D0:  72 65 73 65 74 20 73 74 61 74 65 2E 0D 0A 09 73    reset state....s
02A8E0:  74 61 09 65 73 63 66 6C 67 0D 0A 09 6D 6F 76 09    ta.escflg...mov.
02A8F0:  61 2C 65 09 09 3B 20 67 65 74 20 63 6F 6C 75 6D    a,e..; get colum
02A900:  61 6C 6C 09 73 74 61 74 30 31 09 09 3B 50 72 69    all.stat01..;Pri
02A910:  6E 74 20 6F 75 74 20 74 68 65 20 73 74 61 74 75    nt out the statu
02A920:  73 20 73 74 75 66 66 2E 0D 0A 09 63 61 6C 6C 09    s stuff....call.
02A930:  70 72 63 72 6C 66 09 09 3B 5B 70 63 63 30 31 31    prcrlf..;[pcc011
02A940:  5D 20 61 64 64 20 61 20 63 72 6C 66 0D 0A 09 6A    ] add a crlf...j
02A950:  6D 70 09 72 73 6B 70 09 09 3B 72 65 74 75 72 6E    mp.rskp..;return
02A960:  20 66 72 6F 6D 20 63 6F 6E 63 68 72 0D 0A 0D 0A     from conchr....
02A970:  69 6E 63 68 30 31 3A 09 63 70 69 09 27 52 27 2D    inch01:.cpi.'R'-
02A980:  31 30 30 4F 09 3B 43 6F 6E 74 72 6F 6C 2D 52 3F    100O.;Control-R?
02A990:  0D 0A 09 6A 7A 09 69 6E 63 68 30 32 09 09 3B 59    ...jz.inch02..;Y
02A9A0:  65 73 0D 0A 09 63 70 69 09 27 52 27 09 09 3B 28    es...cpi.'R'..;(
02A9B0:  70 6C 61 69 6E 29 20 52 3F 0D 0A 09 6A 6E 7A 09    plain) R?...jnz.
02A9C0:  69 6E 63 68 30 33 09 09 3B 4E 6F 0D 0A 69 6E 63    inch03..;No..inc
02A9D0:  68 30 32 3A 09 6C 64 61 09 66 69 6C 65 69 6F 09    h02:.lda.fileio.
02A9E0:  09 3B 54 52 41 4E 53 4D 49 54 20 69 6E 20 70 72    .;TRANSMIT in pr
02A9F0:  6F 67 72 65 73 73 3F 0D 0A 09 6F 72 61 09 61 0D    ogress?...ora.a.
02AA00:  0A 09 6A 7A 09 69 6E 63 68 30 33 09 09 3B 4E 6F    ..jz.inch03..;No
02AA10:  2C 69 67 6E 6F 72 65 0D 0A 09 70 6F 70 09 62 09    ,ignore...pop.b.
02AA20:  09 3B 52 65 6D 6F 76 65 20 72 65 74 75 72 6E 20    .;Remove return 
02AA30:  61 64 64 72 65 73 73 20 28 6E 6F 6E 2D 6C 6F 63    address (non-loc
02AA40:  61 6C 20 67 6F 74 6F 29 0D 0A 09 6A 6D 70 09 72    al goto)...jmp.r
02AA50:  65 78 6D 69 74 09 09 3B 52 65 74 72 61 6E 73 6D    exmit..;Retransm
02AA60:  69 74 20 6C 69 6E 65 0D 0A 0D 0A 69 6E 63 68 30    it line....inch0
02AA70:  33 3A 09 6D 6F 76 09 61 2C 62 09 09 3B 47 65 74    3:.mov.a,b..;Get
02AA80:  20 74 68 65 20 63 68 61 72 2E 0D 0A 09 63 70 69     the char....cpi
02AA90:  09 27 3F 27 09 09 3B 49 73 20 69 74 20 61 20 68    .'?'..;Is it a h
02AAA0:  65 6C 70 20 72 65 71 75 65 73 74 3F 0D 0A 09 6A    elp request?...j
02AAB0:  6E 7A 09 69 6E 74 63 68 31 09 09 3B 49 66 20 6E    nz.intch1..;If n
02AAC0:  6F 74 2C 20 67 6F 20 74 6F 20 74 68 65 20 6E 65    ot, go to the ne
02AAD0:  78 74 20 63 68 65 63 6B 2E 0D 0A 09 6C 64 61 09    xt check....lda.
02AAE0:  66 69 6C 65 69 6F 09 09 3B 54 52 41 4E 53 4D 49    fileio..;TRANSMI
02AAF0:  54 20 69 6E 20 70 72 6F 67 72 65 73 73 3F 0D 0A    T in progress?..
02AB00:  6E 20 28 27 20 27 20 69 73 20 6C 65 66 74 20 6D    n (' ' is left m
02AB10:  61 72 67 69 6E 29 0D 0A 09 73 75 69 09 28 27 20    argin)...sui.(' 
02AB20:  27 2D 31 29 09 09 3B 20 6D 61 6B 65 20 6C 65 66    '-1)..; make lef
02AB30:  74 20 6D 61 72 67 69 6E 20 62 65 20 6F 6E 65 0D    t margin be one.
02AB40:  0A 09 6D 6F 76 09 63 2C 61 09 09 3B 20 73 74 61    ..mov.c,a..; sta
02AB50:  73 68 20 63 6F 6C 75 6D 6E 20 69 6E 20 63 0D 0A    sh column in c..
02AB60:  09 6C 64 61 09 76 74 79 76 61 6C 09 09 3B 20 67    .lda.vtyval..; g
02AB70:  65 74 20 72 6F 77 20 6E 75 6D 62 65 72 0D 0A 09    et row number...
02AB80:  6D 6F 76 09 62 2C 61 09 09 3B 20 20 69 6E 20 62    mov.b,a..;  in b
02AB90:  0D 0A 09 63 61 6C 6C 09 73 65 6C 63 6F 6E 09 09    ...call.selcon..
02ABA0:  3B 20 73 65 6C 65 63 74 20 63 6F 6E 73 6F 6C 65    ; select console
02ABB0:  0D 0A 09 63 61 6C 6C 09 63 73 72 70 6F 73 09 09    ...call.csrpos..
02ABC0:  3B 20 63 61 6C 6C 20 73 79 73 74 65 6D 2D 64 65    ; call system-de
02ABD0:  70 65 6E 64 65 6E 74 20 63 75 72 73 6F 72 20 70    pendent cursor p
02ABE0:  6F 73 69 74 69 6F 6E 65 72 0D 0A 09 72 65 74 09    ositioner...ret.
02ABF0:  09 09 3B 20 61 6C 6C 20 74 68 72 6F 75 67 68 2E    ..; all through.
02AC00:  0D 0A 3B 0C 0D 0A 3B 0D 0A 3B 09 63 6F 6E 63 68    ..;...;..;.conch
02AC10:  72 20 2D 20 63 6F 70 79 20 63 68 61 72 61 63 74    r - copy charact
02AC20:  65 72 20 66 72 6F 6D 20 63 6F 6E 73 6F 6C 65 20    er from console 
02AC30:  74 6F 20 63 6F 6D 6D 20 6C 69 6E 65 2C 20 70 72    to comm line, pr
02AC40:  6F 63 65 73 73 69 6E 67 0D 0A 3B 09 28 6B 65 72    ocessing..;.(ker
02AC50:  6D 69 74 27 73 29 20 65 73 63 61 70 65 20 73 65    mit's) escape se
02AC60:  71 75 65 6E 63 65 73 2E 0D 0A 3B 09 45 6E 74 65    quences...;.Ente
02AC70:  72 20 61 6E 64 20 65 78 69 74 20 77 69 74 68 20    r and exit with 
02AC80:  63 6F 6E 73 6F 6C 65 20 73 65 6C 65 63 74 65 64    console selected
02AC90:  2E 0D 0A 3B 09 6E 6F 6E 73 6B 69 70 20 72 65 74    ...;.nonskip ret
02ACA0:  75 72 6E 3A 20 74 72 61 6E 73 70 61 72 65 6E 74    urn: transparent
02ACB0:  20 6D 6F 64 65 20 74 65 72 6D 69 6E 61 74 65 64     mode terminated
02ACC0:  2E 0D 0A 3B 09 73 6B 69 70 20 72 65 74 75 72 6E    ...;.skip return
02ACD0:  3A 09 73 74 69 6C 6C 20 69 6E 20 74 72 61 6E 73    :.still in trans
02ACE0:  70 61 72 65 6E 74 20 6D 6F 64 65 2E 0D 0A 3B 09    parent mode...;.
02ACF0:  63 61 6C 6C 65 64 20 62 79 3A 20 72 65 78 6D 69    called by: rexmi
02AD00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
02AD10:  24 00 00 00 02 09 4E E5 24 00 C1 02 00 00 00 02    $.....N.$.......
02AD20:  24 00 C6 02 00 00 00 02 24 00 C2 02 00 00 00 02    $.......$.......
02AD30:  24 00 C7 02 00 00 00 02 24 00 C3 02 00 00 00 02    $.......$.......
02AD40:  24 00 C8 02 00 00 00 02 24 00 C4 02 00 00 00 02    $.......$.......
02AD50:  24 00 C9 02 00 00 00 02 24 00 C5 02 00 00 00 02    $.......$.......
02AD60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AD70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AD80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AD90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AE00:  09 6F 72 61 09 61 0D 0A 09 6A 7A 09 69 6E 63 68    .ora.a...jz.inch
02AE10:  33 61 09 09 3B 5B 70 63 63 30 30 33 5D 20 4E 6F    3a..;[pcc003] No
02AE20:  0D 0A 09 6C 78 69 09 64 2C 78 6D 74 68 6C 70 09    ...lxi.d,xmthlp.
02AE30:  3B 54 65 6C 6C 20 61 62 6F 75 74 20 52 20 74 6F    ;Tell about R to
02AE40:  6F 0D 0A 09 63 61 6C 6C 09 70 72 74 73 74 72 0D    o...call.prtstr.
02AE50:  0A 69 6E 63 68 33 61 3A 09 6C 64 61 09 6C 6F 67    .inch3a:.lda.log
02AE60:  66 6C 67 09 09 3B 5B 70 63 63 30 30 33 5D 20 4C    flg..;[pcc003] L
02AE70:  6F 67 67 69 6E 67 20 66 6C 61 67 0D 0A 09 6F 72    ogging flag...or
02AE80:  61 09 61 09 09 3B 5B 70 63 63 30 30 33 5D 20 73    a.a..;[pcc003] s
02AE90:  65 65 20 69 66 20 61 63 74 69 76 65 0D 0A 09 6A    ee if active...j
02AEA0:  70 09 69 6E 63 68 30 34 09 09 3B 5B 70 63 63 30    p.inch04..;[pcc0
02AEB0:  30 35 5D 20 6A 75 6D 70 20 69 66 20 6E 6F 20 66    05] jump if no f
02AEC0:  69 6C 65 20 6F 70 65 6E 0D 0A 09 6C 78 69 09 64    ile open...lxi.d
02AED0:  2C 6C 6F 67 68 6C 70 09 3B 5B 70 63 63 30 30 33    ,loghlp.;[pcc003
02AEE0:  5D 20 79 65 73 2C 20 74 65 6C 6C 20 61 62 6F 75    ] yes, tell abou
02AEF0:  74 20 52 20 41 4E 44 20 51 0D 0A 09 63 61 6C 6C    t R AND Q...call
02AF00:  09 70 72 74 73 74 72 09 09 3B 5B 70 63 63 30 30    .prtstr..;[pcc00
02AF10:  33 5D 0D 0A 69 6E 63 68 30 34 3A 09 6C 78 69 09    3]..inch04:.lxi.
02AF20:  64 2C 69 6E 74 68 6C 70 09 3B 49 66 20 73 6F 2C    d,inthlp.;If so,
02AF30:  20 67 65 74 20 74 68 65 20 61 64 64 72 65 73 73     get the address
02AF40:  20 6F 66 20 74 68 65 20 68 65 6C 70 20 6D 65 73     of the help mes
02AF50:  73 61 67 65 2E 0D 0A 09 63 61 6C 6C 09 70 72 74    sage....call.prt
02AF60:  73 74 72 0D 0A 09 63 61 6C 6C 09 73 79 73 69 6E    str...call.sysin
02AF70:  68 09 09 3B 20 70 72 69 6E 74 20 73 79 73 74 65    h..; print syste
02AF80:  6D 2D 64 65 70 65 6E 64 65 6E 74 20 68 65 6C 70    m-dependent help
02AF90:  20 6D 65 73 73 61 67 65 0D 0A 09 6C 78 69 09 64     message...lxi.d
02AFA0:  2C 69 6E 68 6C 70 31 09 3B 20 54 65 6C 6C 20 61    ,inhlp1.; Tell a
02AFB0:  62 6F 75 74 20 64 6F 75 62 6C 69 6E 67 20 74 68    bout doubling th
02AFC0:  65 20 65 73 63 61 70 65 20 63 68 61 72 61 63 74    e escape charact
02AFD0:  65 72 0D 0A 09 63 61 6C 6C 09 70 72 74 73 74 72    er...call.prtstr
02AFE0:  0D 0A 09 63 61 6C 6C 09 65 73 63 70 72 09 09 3B    ...call.escpr..;
02AFF0:  50 72 69 6E 74 20 65 73 63 61 70 65 20 63 68 61    Print escape cha
02B000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B0A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B0B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B0C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B0D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B0E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B0F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B1A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B1B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B1C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B1D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B1E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B1F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B200:  72 61 63 74 65 72 0D 0A 09 6C 78 69 09 64 2C 69    racter...lxi.d,i
02B210:  6E 68 6C 70 32 09 3B 50 72 69 6E 74 20 74 68 65    nhlp2.;Print the
02B220:  20 72 65 73 74 0D 0A 09 63 61 6C 6C 09 70 72 74     rest...call.prt
02B230:  73 74 72 0D 0A 09 6A 6D 70 09 69 6E 74 63 68 72    str...jmp.intchr
02B240:  09 09 3B 47 65 74 20 61 6E 6F 74 68 65 72 20 63    ..;Get another c
02B250:  68 61 72 2E 0D 0A 0D 0A 69 6E 74 63 68 31 3A 20    har.....intch1: 
02B260:  6D 6F 76 09 61 2C 62 09 09 3B 47 65 74 20 74 68    mov.a,b..;Get th
02B270:  65 20 63 68 61 72 61 63 74 65 72 2E 0D 0A 09 63    e character....c
02B280:  70 69 09 27 30 27 09 09 3B 49 73 20 69 74 20 27    pi.'0'..;Is it '
02B290:  30 27 2C 20 74 6F 20 73 65 6E 64 20 61 20 6E 75    0', to send a nu
02B2A0:  6C 6C 3F 0D 0A 09 6A 6E 7A 09 69 6E 74 63 68 33    ll?...jnz.intch3
02B2B0:  09 09 3B 4E 6F 2E 0D 0A 09 78 72 61 09 61 09 09    ..;No....xra.a..
02B2C0:  3B 59 65 73 2C 20 73 65 6E 64 20 61 6E 20 41 53    ;Yes, send an AS
02B2D0:  43 49 49 20 7A 65 72 6F 2E 0D 0A 09 63 61 6C 6C    CII zero....call
02B2E0:  09 73 65 74 70 61 72 09 09 3B 20 77 69 74 68 20    .setpar..; with 
02B2F0:  74 68 65 20 63 6F 72 72 65 63 74 20 70 61 72 69    the correct pari
02B300:  74 79 0D 0A 09 6D 6F 76 09 65 2C 61 0D 0A 09 63    ty...mov.e,a...c
02B310:  61 6C 6C 09 73 65 6C 6D 64 6D 09 09 3B 20 28 74    all.selmdm..; (t
02B320:  6F 20 74 68 65 20 6D 6F 64 65 6D 2E 2E 2E 29 0D    o the modem...).
02B330:  0A 09 63 61 6C 6C 09 6F 75 74 6D 64 6D 0D 0A 09    ..call.outmdm...
02B340:  63 61 6C 6C 09 73 65 6C 63 6F 6E 09 09 3B 20 72    call.selcon..; r
02B350:  65 74 75 72 6E 20 77 69 74 68 20 63 6F 6E 73 6F    eturn with conso
02B360:  6C 65 20 73 65 6C 65 63 74 65 64 0D 0A 09 6A 6D    le selected...jm
02B370:  70 09 72 73 6B 70 0D 0A 0D 0A 69 6E 74 63 68 33    p.rskp....intch3
02B380:  3A 09 6C 64 61 09 65 73 63 63 68 72 09 09 3B 47    :.lda.escchr..;G
02B390:  65 74 20 74 68 65 20 65 73 63 61 70 65 20 63 68    et the escape ch
02B3A0:  61 72 2E 0D 0A 09 63 6D 70 09 62 09 09 3B 49 73    ar....cmp.b..;Is
02B3B0:  20 69 74 20 74 68 65 20 65 73 63 61 70 65 20 63     it the escape c
02B3C0:  68 61 72 3F 0D 0A 09 6A 6E 7A 09 69 6E 74 63 68    har?...jnz.intch
02B3D0:  34 09 09 3B 5B 70 63 63 30 30 32 5D 20 6A 75 6D    4..;[pcc002] jum
02B3E0:  70 20 69 66 20 6E 6F 74 0D 0A 09 6D 6F 76 09 61    p if not...mov.a
02B3F0:  2C 62 09 09 3B 47 65 74 20 74 68 65 20 63 68 61    ,b..;Get the cha
02B400:  3B 20 43 50 34 54 59 50 2E 41 53 4D 0D 0A 3B 09    ; CP4TYP.ASM..;.
02B410:  4B 45 52 4D 49 54 20 2D 20 28 43 65 6C 74 69 63    KERMIT - (Celtic
02B420:  20 66 6F 72 20 22 46 52 45 45 22 29 0D 0A 3B 0D     for "FREE")..;.
02B430:  0A 3B 09 54 68 69 73 20 69 73 20 74 68 65 20 43    .;.This is the C
02B440:  50 2F 4D 2D 38 30 20 69 6D 70 6C 65 6D 65 6E 74    P/M-80 implement
02B450:  61 74 69 6F 6E 20 6F 66 20 74 68 65 20 43 6F 6C    ation of the Col
02B460:  75 6D 62 69 61 20 55 6E 69 76 65 72 73 69 74 79    umbia University
02B470:  0D 0A 3B 09 4B 45 52 4D 49 54 20 66 69 6C 65 20    ..;.KERMIT file 
02B480:  74 72 61 6E 73 66 65 72 20 70 72 6F 74 6F 63 6F    transfer protoco
02B490:  6C 2E 0D 0A 3B 0D 0A 3B 09 56 65 72 73 69 6F 6E    l...;..;.Version
02B4A0:  20 34 2E 30 0D 0A 3B 0D 0A 3B 09 43 6F 70 79 72     4.0..;..;.Copyr
02B4B0:  69 67 68 74 20 4A 75 6E 65 20 31 39 38 31 2C 31    ight June 1981,1
02B4C0:  39 38 32 2C 31 39 38 33 2C 31 39 38 34 2C 31 39    982,1983,1984,19
02B4D0:  38 35 0D 0A 3B 09 43 6F 6C 75 6D 62 69 61 20 55    85..;.Columbia U
02B4E0:  6E 69 76 65 72 73 69 74 79 0D 0A 3B 0D 0A 3B 20    niversity..;..; 
02B4F0:  4F 72 69 67 69 6E 61 6C 6C 79 20 77 72 69 74 74    Originally writt
02B500:  65 6E 20 62 79 20 42 69 6C 6C 20 43 61 74 63 68    en by Bill Catch
02B510:  69 6E 67 73 20 6F 66 20 74 68 65 20 43 6F 6C 75    ings of the Colu
02B520:  6D 62 69 61 20 55 6E 69 76 65 72 73 69 74 79 20    mbia University 
02B530:  43 65 6E 74 65 72 20 66 6F 72 0D 0A 3B 20 43 6F    Center for..; Co
02B540:  6D 70 75 74 69 6E 67 20 41 63 74 69 76 69 74 69    mputing Activiti
02B550:  65 73 2C 20 36 31 32 20 57 2E 20 31 31 35 74 68    es, 612 W. 115th
02B560:  20 53 74 2E 2C 20 4E 65 77 20 59 6F 72 6B 2C 20     St., New York, 
02B570:  4E 59 20 31 30 30 32 35 2E 0D 0A 3B 0D 0A 3B 20    NY 10025...;..; 
02B580:  43 6F 6E 74 72 69 62 75 74 69 6F 6E 73 20 62 79    Contributions by
02B590:  20 46 72 61 6E 6B 20 64 61 20 43 72 75 7A 2C 20     Frank da Cruz, 
02B5A0:  44 61 70 68 6E 65 20 54 7A 6F 61 72 2C 20 42 65    Daphne Tzoar, Be
02B5B0:  72 6E 69 65 20 45 69 62 65 6E 2C 0D 0A 3B 20 42    rnie Eiben,..; B
02B5C0:  72 75 63 65 20 54 61 6E 6E 65 72 2C 20 4E 69 63    ruce Tanner, Nic
02B5D0:  6B 20 42 75 73 68 2C 20 47 72 65 67 20 53 6D 61    k Bush, Greg Sma
02B5E0:  6C 6C 2C 20 4B 69 6D 6D 6F 20 4C 61 61 6B 73 6F    ll, Kimmo Laakso
02B5F0:  6E 65 6E 2C 20 4A 65 66 66 20 44 61 6D 65 6E 73    nen, Jeff Damens
02B600:  72 2E 0D 0A 09 63 61 6C 6C 09 73 65 74 70 61 72    r....call.setpar
02B610:  0D 0A 09 6D 6F 76 09 65 2C 61 09 09 3B 52 65 73    ...mov.e,a..;Res
02B620:  74 6F 72 65 20 69 74 2E 0D 0A 09 63 61 6C 6C 09    tore it....call.
02B630:  73 65 6C 6D 64 6D 0D 0A 09 63 61 6C 6C 09 6F 75    selmdm...call.ou
02B640:  74 6D 64 6D 09 09 3B 4F 75 74 70 75 74 20 69 74    tmdm..;Output it
02B650:  2E 0D 0A 09 63 61 6C 6C 09 73 65 6C 63 6F 6E 09    ....call.selcon.
02B660:  09 3B 57 65 20 70 72 6F 6D 69 73 65 64 20 63 6F    .;We promised co
02B670:  6E 73 6F 6C 65 20 77 6F 75 6C 64 20 62 65 20 73    nsole would be s
02B680:  65 6C 65 63 74 65 64 2E 2E 2E 0D 0A 09 6A 6D 70    elected......jmp
02B690:  09 72 73 6B 70 09 09 3B 52 65 74 75 72 6E 2C 20    .rskp..;Return, 
02B6A0:  77 65 20 61 72 65 20 64 6F 6E 65 20 68 65 72 65    we are done here
02B6B0:  2E 0D 0A 69 6E 74 63 68 34 3A 09 6D 6F 76 09 61    ...intch4:.mov.a
02B6C0:  2C 62 09 09 3B 5B 70 63 63 30 30 32 5D 20 67 65    ,b..;[pcc002] ge
02B6D0:  74 20 69 74 20 61 67 61 69 6E 0D 0A 09 61 6E 69    t it again...ani
02B6E0:  09 31 33 37 6F 09 09 3B 5B 70 63 63 30 30 32 5D    .137o..;[pcc002]
02B6F0:  20 69 6E 20 75 70 70 65 72 20 63 61 73 65 0D 0A     in upper case..
02B700:  09 63 70 69 09 27 50 27 09 09 3B 5B 70 63 63 30    .cpi.'P'..;[pcc0
02B710:  30 32 5D 20 74 6F 67 67 6C 65 20 70 72 69 6E 74    02] toggle print
02B720:  65 72 3F 0D 0A 09 6A 6E 7A 09 69 6E 74 63 68 35    er?...jnz.intch5
02B730:  09 09 3B 5B 70 63 63 30 30 33 5D 20 6E 6F 70 65    ..;[pcc003] nope
02B740:  0D 0A 09 6C 64 61 09 70 72 6E 66 6C 67 09 09 3B    ...lda.prnflg..;
02B750:  5B 70 63 63 30 30 32 5D 20 67 65 74 20 70 72 69    [pcc002] get pri
02B760:  6E 74 65 72 20 66 6C 61 67 0D 0A 09 78 72 69 09    nter flag...xri.
02B770:  30 31 68 09 09 3B 5B 70 63 63 30 30 32 5D 20 63    01h..;[pcc002] c
02B780:  6F 6D 70 6C 65 6D 65 6E 74 20 69 74 0D 0A 09 73    omplement it...s
02B790:  74 61 09 70 72 6E 66 6C 67 09 09 3B 5B 70 63 63    ta.prnflg..;[pcc
02B7A0:  30 30 32 5D 20 61 6E 64 20 70 75 74 20 62 61 63    002] and put bac
02B7B0:  6B 0D 0A 09 6A 6D 70 09 72 73 6B 70 09 09 3B 5B    k...jmp.rskp..;[
02B7C0:  70 63 63 30 30 32 5D 0D 0A 69 6E 74 63 68 35 3A    pcc002]..intch5:
02B7D0:  09 6C 64 61 09 6C 6F 67 66 6C 67 09 09 3B 5B 70    .lda.logflg..;[p
02B7E0:  63 63 30 30 33 5D 20 67 65 74 20 6C 6F 67 20 66    cc003] get log f
02B7F0:  6C 61 67 0D 0A 09 6F 72 61 09 61 09 09 3B 5B 70    lag...ora.a..;[p
02B800:  2C 20 61 6E 64 20 6D 61 6E 79 0D 0A 3B 20 6F 74    , and many..; ot
02B810:  68 65 72 73 2E 0D 0A 3B 0D 0A 3B 09 54 68 69 73    hers...;..;.This
02B820:  20 69 73 20 74 68 65 20 68 65 61 64 65 72 20 66     is the header f
02B830:  69 6C 65 20 66 6F 72 20 62 75 69 6C 64 69 6E 67    ile for building
02B840:  20 74 68 65 20 73 79 73 74 65 6D 2D 64 65 70 65     the system-depe
02B850:  6E 64 65 6E 74 20 6F 76 65 72 6C 61 79 0D 0A 3B    ndent overlay..;
02B860:  09 66 6F 72 20 4B 45 52 4D 49 54 2E 20 20 49 74    .for KERMIT.  It
02B870:  20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 64 65     contains the de
02B880:  66 69 6E 69 74 69 6F 6E 73 20 75 73 65 64 20 74    finitions used t
02B890:  6F 20 73 65 6C 65 63 74 20 74 68 65 20 74 61 72    o select the tar
02B8A0:  67 65 74 0D 0A 3B 09 73 79 73 74 65 6D 2C 20 61    get..;.system, a
02B8B0:  6E 64 20 63 6F 6C 6C 65 63 74 73 20 28 76 69 61    nd collects (via
02B8C0:  20 49 4E 43 4C 55 44 45 20 6F 72 20 4C 49 4E 4B     INCLUDE or LINK
02B8D0:  20 64 69 72 65 63 74 69 76 65 73 29 20 74 68 65     directives) the
02B8E0:  20 72 65 6D 61 69 6E 69 6E 67 0D 0A 3B 09 63 6F     remaining..;.co
02B8F0:  64 65 2E 20 20 49 66 20 74 68 65 20 74 61 72 67    de.  If the targ
02B900:  65 74 20 73 79 73 74 65 6D 20 69 73 20 6F 6E 65    et system is one
02B910:  20 6F 66 20 74 68 65 20 73 75 70 70 6F 72 74 65     of the supporte
02B920:  64 20 73 79 73 74 65 6D 73 0D 0A 3B 09 64 65 73    d systems..;.des
02B930:  63 72 69 62 65 64 20 62 65 6C 6F 77 2C 20 74 68    cribed below, th
02B940:  65 6E 20 74 68 69 73 20 69 73 20 74 68 65 20 6F    en this is the o
02B950:  6E 6C 79 20 66 69 6C 65 20 74 68 61 74 20 6E 65    nly file that ne
02B960:  65 64 73 20 74 6F 20 62 65 0D 0A 3B 09 65 64 69    eds to be..;.edi
02B970:  74 65 64 2E 0D 0A 3B 0D 0A 3B 20 72 65 76 69 73    ted...;..; revis
02B980:  69 6F 6E 20 68 69 73 74 6F 72 79 3A 0D 0A 3B 0D    ion history:..;.
02B990:  0A 3B 20 65 64 69 74 20 36 3A 20 39 2D 46 65 62    .; edit 6: 9-Feb
02B9A0:  2D 38 35 20 62 79 20 43 4A 43 0D 0A 3B 09 4D 65    -85 by CJC..;.Me
02B9B0:  72 67 65 20 4E 6F 72 74 68 73 74 61 72 20 48 6F    rge Northstar Ho
02B9C0:  72 69 7A 6F 6E 2C 20 4C 6F 62 6F 20 4D 41 58 2C    rizon, Lobo MAX,
02B9D0:  20 61 6E 64 20 58 65 72 6F 78 20 38 32 30 20 63     and Xerox 820 c
02B9E0:  68 61 6E 67 65 73 3A 0D 0A 3B 09 31 33 2D 44 65    hanges:..;.13-De
02B9F0:  63 2D 38 34 20 41 64 64 20 4E 6F 72 74 68 73 74    c-84 Add Northst
02BA00:  63 63 30 30 33 5D 20 53 65 65 20 69 66 20 6F 70    cc003] See if op
02BA10:  65 6E 0D 0A 09 6A 70 09 69 6E 74 63 68 37 09 09    en...jp.intch7..
02BA20:  3B 5B 70 63 63 30 30 33 5D 20 6E 6F 2C 20 73 6B    ;[pcc003] no, sk
02BA30:  69 70 20 52 20 61 6E 64 20 51 0D 0A 09 6D 6F 76    ip R and Q...mov
02BA40:  09 61 2C 62 09 09 3B 5B 70 63 63 30 30 33 5D 20    .a,b..;[pcc003] 
02BA50:  67 65 74 20 62 61 63 6B 20 63 68 72 0D 0A 09 61    get back chr...a
02BA60:  6E 69 09 31 33 37 6F 09 09 3B 5B 70 63 63 30 30    ni.137o..;[pcc00
02BA70:  33 5D 20 6D 61 6B 65 20 75 70 70 65 72 20 63 61    3] make upper ca
02BA80:  73 65 0D 0A 09 63 70 69 09 27 52 27 09 09 3B 5B    se...cpi.'R'..;[
02BA90:  70 63 63 30 30 33 5D 20 49 73 20 69 74 20 52 0D    pcc003] Is it R.
02BAA0:  0A 09 6A 6E 7A 09 69 6E 74 63 68 36 09 09 3B 5B    ..jnz.intch6..;[
02BAB0:  70 63 63 30 30 33 5D 20 4A 75 6D 70 20 69 66 20    pcc003] Jump if 
02BAC0:  6E 6F 74 0D 0A 09 6D 76 69 09 61 2C 38 31 48 09    not...mvi.a,81H.
02BAD0:  09 3B 5B 70 63 63 30 30 33 5D 20 73 65 74 20 66    .;[pcc003] set f
02BAE0:  6C 61 67 20 66 6F 72 20 6C 6F 67 67 69 6E 67 0D    lag for logging.
02BAF0:  0A 09 73 74 61 09 6C 6F 67 66 6C 67 09 09 3B 5B    ..sta.logflg..;[
02BB00:  70 63 63 30 30 33 5D 20 70 75 74 20 69 74 20 62    pcc003] put it b
02BB10:  61 63 6B 0D 0A 09 6C 78 69 09 64 2C 69 6E 6D 73    ack...lxi.d,inms
02BB20:  32 38 09 3B 5B 70 63 63 30 30 33 5D 20 6D 65 73    28.;[pcc003] mes
02BB30:  73 61 67 65 0D 0A 09 63 61 6C 6C 09 70 72 74 73    sage...call.prts
02BB40:  74 72 09 09 3B 5B 70 63 63 30 30 33 5D 0D 0A 09    tr..;[pcc003]...
02BB50:  6A 6D 70 09 72 73 6B 70 09 09 3B 5B 70 63 63 30    jmp.rskp..;[pcc0
02BB60:  30 33 5D 20 64 6F 6E 65 0D 0A 69 6E 74 63 68 36    03] done..intch6
02BB70:  3A 09 63 70 69 09 27 51 27 09 09 3B 5B 70 63 63    :.cpi.'Q'..;[pcc
02BB80:  30 30 33 5D 20 51 75 69 74 20 6C 6F 67 67 69 6E    003] Quit loggin
02BB90:  67 3F 0D 0A 09 6A 6E 7A 09 69 6E 74 63 68 37 09    g?...jnz.intch7.
02BBA0:  09 3B 5B 70 63 63 30 30 33 5D 20 6E 6F 0D 0A 09    .;[pcc003] no...
02BBB0:  6D 76 69 09 61 2C 38 32 48 09 09 3B 5B 70 63 63    mvi.a,82H..;[pcc
02BBC0:  30 30 33 5D 20 66 6C 61 67 20 66 6F 72 20 6F 70    003] flag for op
02BBD0:  65 6E 2C 20 62 75 74 20 73 75 73 70 65 6E 64 65    en, but suspende
02BBE0:  64 0D 0A 09 73 74 61 09 6C 6F 67 66 6C 67 09 09    d...sta.logflg..
02BBF0:  3B 5B 70 63 63 30 30 33 5D 20 73 74 6F 72 65 20    ;[pcc003] store 
02BC00:  61 72 20 48 6F 72 69 7A 6F 6E 20 77 69 74 68 20    ar Horizon with 
02BC10:  53 49 4F 2D 34 20 62 6F 61 72 64 2C 20 70 6F 72    SIO-4 board, por
02BC20:  74 20 35 20 61 74 20 31 32 30 30 20 5B 43 53 4D    t 5 at 1200 [CSM
02BC30:  5D 0D 0A 3B 09 31 33 2D 4A 61 6E 2D 38 35 20 62    ]..;.13-Jan-85 b
02BC40:  79 20 56 61 6E 79 61 20 4A 2E 43 6F 6F 70 65 72    y Vanya J.Cooper
02BC50:  20 50 69 6D 61 20 43 6F 6D 6D 75 6E 2E 20 43 6F     Pima Commun. Co
02BC60:  6C 6C 65 67 65 20 54 65 6C 3A 20 36 30 32 2D 38    llege Tel: 602-8
02BC70:  38 34 2D 36 38 30 39 0D 0A 3B 0D 0A 3B 70 63 63    84-6809..;..;pcc
02BC80:  30 30 31 09 32 37 2D 44 65 63 2D 38 34 09 76 6A    001.27-Dec-84.vj
02BC90:  63 09 6D 6F 64 75 6C 65 73 3A 20 63 70 34 73 79    c.modules: cp4sy
02BCA0:  73 2C 63 70 34 74 79 70 0D 0A 3B 09 41 64 64 20    s,cp4typ..;.Add 
02BCB0:  63 6F 6E 64 69 74 69 6F 6E 61 6C 20 66 6F 72 20    conditional for 
02BCC0:  58 65 72 6F 78 20 38 32 30 2E 20 20 49 20 74 68    Xerox 820.  I th
02BCD0:  6F 75 67 68 74 20 61 74 20 66 69 72 73 74 20 49    ought at first I
02BCE0:  20 63 6F 75 6C 64 0D 0A 3B 09 6C 69 76 65 20 77     could..;.live w
02BCF0:  69 74 68 20 74 68 65 20 6B 61 79 70 72 6F 20 63    ith the kaypro c
02BD00:  6F 6E 64 69 74 69 6F 6E 61 6C 2C 20 62 75 74 20    onditional, but 
02BD10:  69 74 27 73 20 65 6E 6F 75 67 68 20 6F 66 20 61    it's enough of a
02BD20:  20 70 61 69 6E 0D 0A 3B 09 74 68 61 74 20 49 20     pain..;.that I 
02BD30:  61 64 64 65 64 20 69 74 20 62 61 63 6B 20 69 6E    added it back in
02BD40:  2E 20 20 54 68 65 20 63 6C 65 61 72 2D 74 6F 2D    .  The clear-to-
02BD50:  65 6E 64 2D 6F 66 2D 73 63 72 65 65 6E 20 63 68    end-of-screen ch
02BD60:  61 72 0D 0A 3B 09 69 73 20 64 69 66 66 65 72 65    ar..;.is differe
02BD70:  6E 74 2C 20 20 62 72 65 61 6B 69 6E 67 20 6D 61    nt,  breaking ma
02BD80:  6E 79 20 70 72 6F 67 72 61 6D 73 20 69 6E 20 56    ny programs in V
02BD90:  54 35 32 20 6D 6F 64 65 2C 20 61 6E 64 20 74 68    T52 mode, and th
02BDA0:  65 0D 0A 3B 09 64 65 66 61 75 6C 74 20 65 73 63    e..;.default esc
02BDB0:  61 70 65 20 63 68 61 72 20 63 6F 6E 74 72 6F 6C    ape char control
02BDC0:  2D 5C 2C 20 69 73 20 6E 6F 74 20 61 74 20 61 6C    -\, is not at al
02BDD0:  6C 20 6F 62 76 69 6F 75 73 20 68 6F 77 0D 0A 3B    l obvious how..;
02BDE0:  09 74 6F 20 74 79 70 65 20 6F 6E 20 74 68 65 20    .to type on the 
02BDF0:  38 32 30 20 6B 65 79 62 6F 61 72 64 2E 20 20 49    820 keyboard.  I
02BE00:  61 77 61 79 0D 0A 09 6C 78 69 09 64 2C 69 6E 6D    away...lxi.d,inm
02BE10:  73 32 37 09 3B 5B 70 63 63 30 30 33 5D 20 6B 65    s27.;[pcc003] ke
02BE20:  65 70 20 74 68 65 6D 20 69 6E 66 6F 72 6D 65 64    ep them informed
02BE30:  0D 0A 09 63 61 6C 6C 09 70 72 74 73 74 72 09 09    ...call.prtstr..
02BE40:  3B 5B 70 63 63 30 30 33 5D 0D 0A 09 6A 6D 70 09    ;[pcc003]...jmp.
02BE50:  72 73 6B 70 09 09 3B 5B 70 63 63 30 30 33 5D 0D    rskp..;[pcc003].
02BE60:  0A 69 6E 74 63 68 37 3A 09 09 09 09 3B 5B 70 63    .intch7:....;[pc
02BE70:  63 30 30 33 5D 0D 0A 0D 0A 69 6E 74 63 68 7A 3A    c003]....intchz:
02BE80:  09 6D 6F 76 09 61 2C 62 09 09 3B 20 6E 6F 74 20    .mov.a,b..; not 
02BE90:  72 65 63 6F 67 6E 69 7A 65 64 2E 20 67 65 74 20    recognized. get 
02BEA0:  73 61 76 65 64 20 63 6F 70 79 20 62 61 63 6B 2E    saved copy back.
02BEB0:  0D 0A 09 63 61 6C 6C 09 73 79 73 69 6E 74 09 09    ...call.sysint..
02BEC0:  3B 20 69 6E 74 65 72 70 72 65 74 20 73 79 73 74    ; interpret syst
02BED0:  65 6D 2D 64 65 70 65 6E 64 65 6E 74 20 73 65 71    em-dependent seq
02BEE0:  75 65 6E 63 65 73 0D 0A 09 20 6A 6D 70 09 72 73    uences... jmp.rs
02BEF0:  6B 70 09 09 3B 20 20 64 6F 6E 65 2E 20 72 65 74    kp..;  done. ret
02BF00:  75 72 6E 20 28 66 72 6F 6D 20 63 6F 6E 63 68 72    urn (from conchr
02BF10:  29 2E 0D 0A 09 6D 76 69 09 65 2C 27 47 27 2D 31    )....mvi.e,'G'-1
02BF20:  30 30 4F 09 3B 4F 74 68 65 72 77 69 73 65 20 73    00O.;Otherwise s
02BF30:  65 6E 64 20 61 20 62 65 65 70 2E 0D 0A 09 63 61    end a beep....ca
02BF40:  6C 6C 09 6F 75 74 63 6F 6E 09 09 3B 20 74 6F 20    ll.outcon..; to 
02BF50:  74 68 65 20 63 6F 6E 73 6F 6C 65 2E 0D 0A 09 6A    the console....j
02BF60:  6D 70 09 72 73 6B 70 0D 0A 3B 0C 0D 0A 49 46 20    mp.rskp..;...IF 
02BF70:  6C 61 73 6D 0D 0A 09 4C 49 4E 4B 09 43 50 34 43    lasm...LINK.CP4C
02BF80:  50 4D 0D 0A 45 4E 44 49 46 3B 6C 61 73 6D 0D 0A    PM..ENDIF;lasm..
02BF90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02BFA0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02BFB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02BFC0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02BFD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02BFE0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02BFF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C000:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
02C010:  25 00 00 00 02 09 4E E5 25 00 C1 02 00 00 00 02    %.....N.%.......
02C020:  25 00 C6 02 00 00 00 02 25 00 C2 02 00 00 00 02    %.......%.......
02C030:  25 00 C7 02 00 00 00 02 25 00 C3 02 00 00 00 02    %.......%.......
02C040:  25 00 C8 02 00 00 00 02 25 00 C4 02 00 00 00 02    %.......%.......
02C050:  25 00 C9 02 00 00 00 02 25 00 C5 02 00 00 00 02    %.......%.......
02C060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C100:  66 20 79 6F 75 20 6D 75 64 64 6C 65 20 74 68 72    f you muddle thr
02C110:  6F 75 67 68 20 74 68 65 0D 0A 3B 09 6B 65 79 20    ough the..;.key 
02C120:  74 72 61 6E 73 6C 61 74 69 6F 6E 20 74 61 62 6C    translation tabl
02C130:  65 2C 20 69 74 20 74 75 72 6E 73 20 6F 75 74 20    e, it turns out 
02C140:  74 6F 20 62 65 20 63 6F 6E 74 72 6F 6C 2D 63 6F    to be control-co
02C150:  6D 6D 61 2E 0D 0A 3B 09 52 61 74 68 65 72 20 74    mma...;.Rather t
02C160:  68 61 6E 20 4F 52 20 78 65 72 38 32 30 20 61 6C    han OR xer820 al
02C170:  6C 20 74 68 65 20 6F 63 63 75 72 61 6E 63 65 73    l the occurances
02C180:  20 6F 66 20 6B 70 49 49 20 63 6F 6E 64 69 74 69     of kpII conditi
02C190:  6F 6E 61 6C 73 0D 0A 3B 09 49 20 61 64 64 65 64    onals..;.I added
02C1A0:  20 61 20 62 62 49 20 63 6F 6E 64 69 74 69 6F 6E     a bbI condition
02C1B0:  61 6C 20 66 6F 72 20 61 6C 6C 20 63 6F 6D 6D 6F    al for all commo
02C1C0:  6E 20 63 6F 64 65 20 66 6F 72 20 74 68 65 20 62    n code for the b
02C1D0:  69 67 0D 0A 3B 09 62 6F 61 72 64 20 49 20 62 61    ig..;.board I ba
02C1E0:  73 65 64 20 6D 61 63 68 69 6E 65 73 20 74 68 61    sed machines tha
02C1F0:  74 20 69 73 20 61 75 74 6F 6D 61 74 69 63 61 6C    t is automatical
02C200:  6C 79 20 74 75 72 6E 65 64 20 6F 6E 20 62 79 0D    ly turned on by.
02C210:  0A 3B 09 65 69 74 68 65 72 20 6B 70 49 49 20 6F    .;.either kpII o
02C220:  72 20 78 65 72 38 32 30 2E 20 20 54 68 69 73 20    r xer820.  This 
02C230:  77 69 6C 6C 20 61 6C 73 6F 20 6D 61 6B 65 20 69    will also make i
02C240:  74 20 65 61 73 69 65 72 20 69 6E 0D 0A 3B 09 74    t easier in..;.t
02C250:  68 65 20 66 75 74 75 72 65 20 69 66 20 61 6E 6F    he future if ano
02C260:  74 68 65 72 20 66 6C 61 76 6F 72 20 6F 66 20 62    ther flavor of b
02C270:  69 67 62 6F 61 72 64 20 69 73 20 61 64 64 65 64    igboard is added
02C280:  2E 0D 0A 3B 0D 0A 3B 70 63 63 30 31 30 09 32 2D    ...;..;pcc010.2-
02C290:  4A 61 6E 2D 38 35 09 76 6A 63 09 6D 6F 64 75 6C    Jan-85.vjc.modul
02C2A0:  65 73 3A 63 70 34 70 6B 74 2C 63 70 34 74 79 70    es:cp4pkt,cp4typ
02C2B0:  0D 0A 3B 09 43 6F 6E 74 72 6F 6C 2D 43 20 64 75    ..;.Control-C du
02C2C0:  72 69 6E 67 20 73 65 6E 64 20 6F 72 20 72 65 63    ring send or rec
02C2D0:  69 65 76 65 20 63 6C 6F 62 62 65 72 73 20 73 6F    ieve clobbers so
02C2E0:  6D 65 20 6F 66 20 74 68 65 20 73 63 72 65 65 6E    me of the screen
02C2F0:  0D 0A 3B 09 61 6E 64 20 64 6F 65 73 6E 27 74 20    ..;.and doesn't 
02C300:  0A 67 65 6E 65 72 09 45 51 55 09 46 41 4C 53 45    .gener.EQU.FALSE
02C310:  09 09 3B 22 47 65 6E 65 72 69 63 22 20 4B 65 72    ..;"Generic" Ker
02C320:  6D 69 74 2D 38 30 2C 20 43 50 2F 4D 20 63 61 6C    mit-80, CP/M cal
02C330:  6C 73 20 6F 6E 6C 79 2E 0D 0A 09 09 09 09 3B 20    ls only.......; 
02C340:  28 74 65 72 6D 69 6E 61 6C 20 72 65 71 75 69 72    (terminal requir
02C350:  65 64 29 0D 0A 64 6D 49 49 09 45 51 55 09 46 41    ed)..dmII.EQU.FA
02C360:  4C 53 45 09 09 3B 22 47 65 6E 65 72 69 63 22 20    LSE..;"Generic" 
02C370:  4B 45 52 4D 49 54 2D 38 30 20 66 6F 72 20 44 45    KERMIT-80 for DE
02C380:  43 4D 41 54 45 20 49 49 2E 0D 0A 6D 69 6B 6B 6F    CMATE II...mikko
02C390:  09 45 51 55 09 46 41 4C 53 45 09 09 3B 22 47 65    .EQU.FALSE..;"Ge
02C3A0:  6E 65 72 69 63 22 20 4B 45 52 4D 49 54 2D 38 30    neric" KERMIT-80
02C3B0:  20 66 6F 72 20 4D 69 6B 72 6F 4D 69 6B 6B 6F 0D     for MikroMikko.
02C3C0:  0A 0D 0A 49 46 20 72 6F 62 69 6E 20 4F 52 20 64    ...IF robin OR d
02C3D0:  6D 49 49 20 4F 52 20 67 65 6E 65 72 20 4F 52 20    mII OR gener OR 
02C3E0:  6D 69 6B 6B 6F 0D 0A 69 6F 62 79 74 09 45 51 55    mikko..iobyt.EQU
02C3F0:  09 54 52 55 45 09 09 3B 53 68 6F 72 74 20 63 6F    .TRUE..;Short co
02C400:  6E 64 69 74 69 6F 6E 61 6C 20 66 6F 72 20 61 62    nditional for ab
02C410:  6F 76 65 0D 0A 69 6E 6F 75 74 09 45 51 55 09 46    ove..inout.EQU.F
02C420:  41 4C 53 45 0D 0A 45 4E 44 49 46 3B 72 6F 62 69    ALSE..ENDIF;robi
02C430:  6E 20 4F 52 20 64 6D 49 49 20 4F 52 20 67 65 6E    n OR dmII OR gen
02C440:  65 72 0D 0A 0D 0A 3B 2E 2E 20 61 6E 64 20 53 79    er....;.. and Sy
02C450:  73 74 65 6D 73 20 73 75 70 70 6F 72 74 69 6E 67    stems supporting
02C460:  20 64 69 72 65 63 74 20 49 4E 20 2F 20 4F 55 54     direct IN / OUT
02C470:  20 68 61 6E 64 6C 69 6E 67 20 6F 66 20 70 6F 72     handling of por
02C480:  74 73 0D 0A 62 72 61 69 6E 09 45 51 55 09 46 41    ts..brain.EQU.FA
02C490:  4C 53 45 09 09 3B 46 6F 72 20 49 6E 74 65 72 74    LSE..;For Intert
02C4A0:  65 63 20 53 75 70 65 72 42 72 61 69 6E 2E 0D 0A    ec SuperBrain...
02C4B0:  76 65 63 74 6F 72 09 45 51 55 09 46 41 4C 53 45    vector.EQU.FALSE
02C4C0:  09 09 3B 46 6F 72 20 56 65 63 74 6F 72 20 47 72    ..;For Vector Gr
02C4D0:  61 70 68 69 63 73 2E 0D 0A 68 65 61 74 68 09 45    aphics...heath.E
02C4E0:  51 55 09 46 41 4C 53 45 09 09 3B 46 6F 72 20 48    QU.FALSE..;For H
02C4F0:  65 61 74 68 2F 5A 65 6E 69 74 68 20 48 38 39 2E    eath/Zenith H89.
02C500:  6C 6F 6F 6B 20 6E 69 63 65 2E 20 20 50 6F 73 69    look nice.  Posi
02C510:  74 69 6F 6E 20 74 68 65 20 63 75 72 73 6F 72 20    tion the cursor 
02C520:  74 6F 20 65 6E 64 20 6F 66 20 73 63 72 65 65 6E    to end of screen
02C530:  0D 0A 3B 09 62 65 66 6F 72 65 20 72 65 74 75 72    ..;.before retur
02C540:  6E 69 6E 67 20 74 6F 20 6D 61 69 6E 20 6C 6F 6F    ning to main loo
02C550:  70 2E 0D 0A 3B 0D 0A 3B 70 63 63 30 31 33 09 38    p...;..;pcc013.8
02C560:  2D 4A 61 6E 2D 38 35 09 76 6A 63 09 6D 6F 64 75    -Jan-85.vjc.modu
02C570:  6C 65 73 3A 63 70 34 6D 69 74 2C 63 70 34 75 74    les:cp4mit,cp4ut
02C580:  6C 2C 63 70 34 74 79 70 0D 0A 3B 09 52 65 70 6C    l,cp4typ..;.Repl
02C590:  61 63 65 20 43 4C 4F 53 45 20 63 6F 6D 6D 61 6E    ace CLOSE comman
02C5A0:  64 20 74 6F 20 63 61 6E 63 65 6C 20 73 65 73 73    d to cancel sess
02C5B0:  69 6F 6E 20 6C 6F 67 67 69 6E 67 20 74 6F 20 53    ion logging to S
02C5C0:  45 54 0D 0A 3B 09 4C 4F 47 47 49 4E 47 20 4F 4E    ET..;.LOGGING ON
02C5D0:  2F 4F 46 46 2E 20 20 54 68 69 73 20 73 65 65 6D    /OFF.  This seem
02C5E0:  73 20 74 6F 20 66 69 74 20 69 6E 20 77 69 74 68    s to fit in with
02C5F0:  20 74 68 65 20 63 6F 6D 6D 61 6E 64 0D 0A 3B 09     the command..;.
02C600:  73 74 72 75 63 74 75 72 65 20 62 65 74 74 65 72    structure better
02C610:  2E 20 20 44 65 66 61 75 6C 74 20 74 68 65 20 6C    .  Default the l
02C620:  6F 67 20 66 69 6C 65 20 74 6F 20 4B 45 52 4D 49    og file to KERMI
02C630:  54 2E 4C 4F 47 0D 0A 3B 09 69 6E 63 61 73 65 20    T.LOG..;.incase 
02C640:  6E 6F 20 70 72 65 76 69 6F 75 73 20 4C 4F 47 20    no previous LOG 
02C650:  63 6F 6D 6D 61 6E 64 2E 20 20 4C 6F 67 67 69 6E    command.  Loggin
02C660:  67 20 69 73 20 61 6C 73 6F 20 65 6E 61 62 6C 65    g is also enable
02C670:  64 0D 0A 3B 09 62 79 20 4C 4F 47 20 63 6F 6D 6D    d..;.by LOG comm
02C680:  61 6E 64 2C 20 61 73 20 62 65 66 6F 72 65 2E 0D    and, as before..
02C690:  0A 3B 0D 0A 3B 20 65 64 69 74 20 35 3A 20 4F 63    .;..; edit 5: Oc
02C6A0:  74 6F 62 65 72 20 31 33 2C 20 31 39 38 34 20 62    tober 13, 1984 b
02C6B0:  79 20 4C 20 4D 20 4A 6F 6E 65 73 2C 20 4A 43 43    y L M Jones, JCC
02C6C0:  2C 20 66 6F 72 20 4E 65 77 20 59 6F 72 6B 20 42    , for New York B
02C6D0:  6F 74 61 6E 69 63 61 6C 20 47 61 72 64 65 6E 0D    otanical Garden.
02C6E0:  0A 3B 09 41 64 64 20 73 75 70 70 6F 72 74 20 66    .;.Add support f
02C6F0:  6F 72 20 43 50 54 2D 38 35 78 78 20 73 65 72 69    or CPT-85xx seri
02C700:  0D 0A 7A 31 30 30 09 45 51 55 09 46 41 4C 53 45    ..z100.EQU.FALSE
02C710:  09 09 3B 46 6F 72 20 5A 2D 31 30 30 20 75 6E 64    ..;For Z-100 und
02C720:  65 72 20 43 50 2F 4D 2D 38 35 2E 0D 0A 74 72 73    er CP/M-85...trs
02C730:  38 30 6C 62 09 45 51 55 09 46 41 4C 53 45 09 09    80lb.EQU.FALSE..
02C740:  3B 46 6F 72 20 4C 69 66 65 62 6F 61 74 20 32 2E    ;For Lifeboat 2.
02C750:  32 35 43 20 43 50 2F 4D 20 44 69 73 70 6C 61 79    25C CP/M Display
02C760:  0D 0A 74 72 73 38 30 70 74 09 45 51 55 09 46 41    ..trs80pt.EQU.FA
02C770:  4C 53 45 09 09 3B 46 6F 72 20 50 69 63 6B 6C 65    LSE..;For Pickle
02C780:  73 20 2B 20 54 72 6F 75 74 20 43 50 2F 4D 20 44    s + Trout CP/M D
02C790:  69 73 70 6C 61 79 0D 0A 74 65 6C 63 6F 6E 09 45    isplay..telcon.E
02C7A0:  51 55 09 46 41 4C 53 45 09 09 3B 46 6F 72 20 54    QU.FALSE..;For T
02C7B0:  45 4C 43 4F 4E 20 5A 6F 72 62 61 20 70 6F 72 74    ELCON Zorba port
02C7C0:  61 62 6C 65 0D 0A 6B 70 49 49 09 45 51 55 09 46    able..kpII.EQU.F
02C7D0:  41 4C 53 45 09 09 3B 4B 61 79 70 72 6F 2D 49 49    ALSE..;Kaypro-II
02C7E0:  0D 0A 78 65 72 38 32 30 09 45 51 55 09 46 41 4C    ..xer820.EQU.FAL
02C7F0:  53 45 09 09 3B 5B 70 63 63 30 30 31 5D 20 58 65    SE..;[pcc001] Xe
02C800:  72 6F 78 20 38 32 30 0D 0A 62 62 49 49 09 45 51    rox 820..bbII.EQ
02C810:  55 09 54 52 55 45 09 09 3B 42 69 67 42 6F 61 72    U.TRUE..;BigBoar
02C820:  64 20 49 49 20 28 74 65 72 6D 69 6E 61 6C 20 72    d II (terminal r
02C830:  65 71 75 69 72 65 64 29 0D 0A 6D 6D 64 49 09 45    equired)..mmdI.E
02C840:  51 55 09 46 41 4C 53 45 09 09 3B 4D 6F 72 72 6F    QU.FALSE..;Morro
02C850:  77 20 4D 69 63 72 6F 20 44 65 63 69 73 69 6F 6E    w Micro Decision
02C860:  20 49 20 28 74 65 72 6D 69 6E 61 6C 20 72 65 71     I (terminal req
02C870:  75 69 72 65 64 29 0D 0A 6D 64 49 09 45 51 55 09    uired)..mdI.EQU.
02C880:  46 41 4C 53 45 09 09 3B 4D 6F 72 72 6F 77 20 44    FALSE..;Morrow D
02C890:  65 63 69 73 69 6F 6E 20 49 20 28 74 68 65 20 62    ecision I (the b
02C8A0:  69 67 20 73 75 63 6B 65 72 29 0D 0A 09 09 09 09    ig sucker)......
02C8B0:  3B 20 28 74 65 72 6D 69 6E 61 6C 20 72 65 71 75    ; (terminal requ
02C8C0:  69 72 65 64 29 20 5B 54 6F 61 64 20 48 61 6C 6C    ired) [Toad Hall
02C8D0:  5D 0D 0A 64 65 6C 70 68 69 09 45 51 55 09 46 41    ]..delphi.EQU.FA
02C8E0:  4C 53 45 09 09 3B 44 69 67 69 63 6F 6D 70 20 44    LSE..;Digicomp D
02C8F0:  65 6C 70 68 69 20 31 30 30 20 28 74 65 72 6D 69    elphi 100 (termi
02C900:  65 73 20 6F 66 20 77 6F 72 64 20 70 72 6F 63 65    es of word proce
02C910:  73 73 6F 72 73 20 77 68 65 6E 20 72 75 6E 6E 69    ssors when runni
02C920:  6E 67 20 43 50 2F 4D 2E 0D 0A 3B 0D 0A 3B 20 65    ng CP/M...;..; e
02C930:  64 69 74 20 34 3A 20 41 75 67 75 73 74 20 32 39    dit 4: August 29
02C940:  2C 20 31 39 38 34 20 62 79 20 42 64 61 6C 65 20    , 1984 by Bdale 
02C950:  47 61 72 62 65 65 20 40 20 43 4D 55 0D 0A 3B 09    Garbee @ CMU..;.
02C960:  41 64 64 20 73 75 70 70 6F 72 74 20 66 6F 72 20    Add support for 
02C970:  44 69 67 69 63 6F 6D 70 20 44 65 6C 70 68 69 20    Digicomp Delphi 
02C980:  31 30 30 20 61 6E 64 20 4E 65 74 72 6F 6E 69 63    100 and Netronic
02C990:  73 20 53 6D 61 72 74 76 69 64 20 74 65 72 6D 69    s Smartvid termi
02C9A0:  6E 61 6C 2E 0D 0A 3B 0D 0A 3B 20 65 64 69 74 20    nal...;..; edit 
02C9B0:  33 3A 20 4A 75 6C 79 20 32 37 2C 20 31 39 38 34    3: July 27, 1984
02C9C0:  20 28 43 4A 43 29 0D 0A 3B 09 53 68 75 66 66 6C     (CJC)..;.Shuffl
02C9D0:  65 20 66 69 6C 65 73 20 61 72 6F 75 6E 64 20 66    e files around f
02C9E0:  6F 72 20 65 61 73 69 65 72 20 61 73 73 65 6D 62    or easier assemb
02C9F0:  6C 79 20 62 79 20 62 6F 74 68 20 4D 38 30 20 61    ly by both M80 a
02CA00:  6E 64 20 4C 41 53 4D 2E 0D 0A 3B 0D 0A 3B 20 65    nd LASM...;..; e
02CA10:  64 69 74 20 32 3A 20 4A 75 6E 65 20 34 2C 20 31    dit 2: June 4, 1
02CA20:  39 38 34 20 5B 54 6F 61 64 20 48 61 6C 6C 5D 0D    984 [Toad Hall].
02CA30:  0A 3B 09 41 64 64 65 64 20 4D 6F 72 72 6F 77 20    .;.Added Morrow 
02CA40:  44 65 63 69 73 69 6F 6E 20 49 20 28 74 68 65 20    Decision I (the 
02CA50:  62 69 67 20 53 31 30 30 20 62 75 73 20 73 75 63    big S100 bus suc
02CA60:  6B 65 72 2C 20 6E 6F 74 20 74 68 65 0D 0A 3B 09    ker, not the..;.
02CA70:  6C 69 74 74 6C 65 20 73 69 6E 67 6C 65 20 6D 6F    little single mo
02CA80:  74 68 65 72 62 6F 61 72 64 20 6F 6E 65 29 3B 20    therboard one); 
02CA90:  61 64 64 65 64 20 54 6F 61 64 20 48 61 6C 6C 20    added Toad Hall 
02CAA0:  54 41 43 54 72 61 70 20 74 6F 20 64 65 61 6C 0D    TACTrap to deal.
02CAB0:  0A 3B 09 77 69 74 68 20 74 68 6F 73 65 20 77 6F    .;.with those wo
02CAC0:  72 6B 69 6E 67 20 74 68 72 6F 75 67 68 20 61 20    rking through a 
02CAD0:  54 41 43 20 61 6E 64 20 69 74 73 20 69 6E 74 65    TAC and its inte
02CAE0:  72 63 65 70 74 20 63 68 61 72 61 63 74 65 72 2E    rcept character.
02CAF0:  0D 0A 3B 0D 0A 3B 20 65 64 69 74 20 31 3A 20 4D    ..;..; edit 1: M
02CB00:  6E 61 6C 20 72 65 71 75 69 72 65 64 29 0D 0A 63    nal required)..c
02CB10:  70 74 38 35 78 78 09 45 51 55 09 46 41 4C 53 45    pt85xx.EQU.FALSE
02CB20:  09 09 3B 43 50 54 2D 38 35 78 78 20 77 6F 72 64    ..;CPT-85xx word
02CB30:  20 70 72 6F 63 65 73 73 6F 72 20 77 2F 43 50 4D     processor w/CPM
02CB40:  20 28 73 65 74 20 41 44 4D 33 41 20 74 72 75 65     (set ADM3A true
02CB50:  29 0D 0A 6E 6F 72 74 68 73 09 45 51 55 09 46 41    )..norths.EQU.FA
02CB60:  4C 53 45 09 09 3B 5B 43 53 4D 5D 20 4E 6F 72 74    LSE..;[CSM] Nort
02CB70:  68 53 74 61 72 20 48 6F 72 69 7A 6F 6E 20 77 69    hStar Horizon wi
02CB80:  74 68 20 48 53 49 4F 2D 34 20 62 6F 61 72 64 0D    th HSIO-4 board.
02CB90:  0A 09 09 09 09 3B 20 28 74 65 72 6D 69 6E 61 6C    .....; (terminal
02CBA0:  20 72 65 71 75 69 72 65 64 29 0D 0A 0D 0A 74 72     required)....tr
02CBB0:  73 38 30 09 45 51 55 09 74 72 73 38 30 6C 62 20    s80.EQU.trs80lb 
02CBC0:  4F 52 20 74 72 73 38 30 70 74 20 3B 20 69 66 20    OR trs80pt ; if 
02CBD0:  65 69 74 68 65 72 2C 20 66 6C 61 67 20 54 52 53    either, flag TRS
02CBE0:  2D 38 30 20 73 79 73 74 65 6D 2E 0D 0A 62 62 49    -80 system...bbI
02CBF0:  09 45 51 55 09 6B 70 49 49 20 4F 52 20 78 65 72    .EQU.kpII OR xer
02CC00:  38 32 30 09 3B 5B 70 63 63 30 30 31 5D 20 66 6C    820.;[pcc001] fl
02CC10:  61 67 20 66 6F 72 20 62 69 67 62 6F 61 72 64 20    ag for bigboard 
02CC20:  49 0D 0A 0D 0A 49 46 20 62 72 61 69 6E 20 4F 52    I....IF brain OR
02CC30:  20 76 65 63 74 6F 72 20 4F 52 20 68 65 61 74 68     vector OR heath
02CC40:  20 4F 52 20 7A 31 30 30 20 4F 52 20 74 72 73 38     OR z100 OR trs8
02CC50:  30 20 4F 52 20 74 65 6C 63 6F 6E 20 4F 52 20 62    0 OR telcon OR b
02CC60:  62 49 0D 0A 69 6E 6F 75 74 09 45 51 55 09 54 52    bI..inout.EQU.TR
02CC70:  55 45 09 09 3B 53 68 6F 72 74 20 63 6F 6E 64 69    UE..;Short condi
02CC80:  74 69 6F 6E 61 6C 20 66 6F 72 20 61 62 6F 76 65    tional for above
02CC90:  0D 0A 69 6F 62 79 74 09 45 51 55 09 46 41 4C 53    ..iobyt.EQU.FALS
02CCA0:  45 0D 0A 45 4E 44 49 46 3B 62 72 61 69 6E 20 4F    E..ENDIF;brain O
02CCB0:  52 20 76 65 63 74 6F 72 20 4F 52 20 68 65 61 74    R vector OR heat
02CCC0:  68 20 4F 52 20 7A 31 30 30 20 4F 52 20 74 72 73    h OR z100 OR trs
02CCD0:  38 30 20 4F 52 20 74 65 6C 63 6F 6E 20 4F 52 20    80 OR telcon OR 
02CCE0:  6B 70 49 49 0D 0A 0D 0A 49 46 20 62 62 49 49 20    kpII....IF bbII 
02CCF0:  4F 52 20 6D 6D 64 49 20 4F 52 20 6D 64 49 20 4F    OR mmdI OR mdI O
02CD00:  61 79 2C 20 31 39 38 34 20 28 43 4A 43 29 0D 0A    ay, 1984 (CJC)..
02CD10:  3B 09 65 78 74 72 61 63 74 65 64 20 66 72 6F 6D    ;.extracted from
02CD20:  20 43 50 4D 42 41 53 45 2E 4D 38 30 20 76 65 72     CPMBASE.M80 ver
02CD30:  73 69 6F 6E 20 33 2E 39 3B 20 6D 6F 64 69 66 69    sion 3.9; modifi
02CD40:  63 61 74 69 6F 6E 73 20 61 72 65 20 64 65 73 63    cations are desc
02CD50:  72 69 62 65 64 0D 0A 3B 09 69 6E 20 74 68 65 20    ribed..;.in the 
02CD60:  61 63 63 6F 6D 70 61 6E 79 69 6E 67 20 2E 55 50    accompanying .UP
02CD70:  44 20 66 69 6C 65 2E 0D 0A 3B 0D 0A 0D 0A 46 41    D file...;....FA
02CD80:  4C 53 45 09 45 51 55 09 30 0D 0A 54 52 55 45 09    LSE.EQU.0..TRUE.
02CD90:  45 51 55 09 4E 4F 54 20 46 41 4C 53 45 0D 0A 0D    EQU.NOT FALSE...
02CDA0:  0A 3B 0D 0A 3B 20 41 73 73 65 6D 62 6C 65 72 20    .;..; Assembler 
02CDB0:  74 79 70 65 2E 20 20 44 65 66 69 6E 65 20 74 68    type.  Define th
02CDC0:  65 20 61 70 70 72 6F 70 72 69 61 74 65 20 6F 6E    e appropriate on
02CDD0:  65 20 54 52 55 45 2C 20 74 68 65 20 72 65 73 74    e TRUE, the rest
02CDE0:  20 46 41 4C 53 45 2E 20 20 28 57 65 20 63 61 6E     FALSE.  (We can
02CDF0:  27 74 0D 0A 3B 20 75 73 65 20 41 53 4D 2C 20 62    't..; use ASM, b
02CE00:  65 63 61 75 73 65 20 69 74 20 63 61 6E 6E 6F 74    ecause it cannot
02CE10:  20 68 61 6E 64 6C 65 20 6D 75 6C 74 69 70 6C 65     handle multiple
02CE20:  20 69 6E 70 75 74 20 66 69 6C 65 73 29 0D 0A 6D     input files)..m
02CE30:  61 63 38 30 09 45 51 55 09 46 41 4C 53 45 09 09    ac80.EQU.FALSE..
02CE40:  3B 20 46 6F 72 20 61 73 73 65 6D 62 6C 79 20 76    ; For assembly v
02CE50:  69 61 20 4D 41 43 38 30 20 63 72 6F 73 73 2D 61    ia MAC80 cross-a
02CE60:  73 73 65 6D 62 6C 65 72 2E 0D 0A 6D 38 30 09 45    ssembler...m80.E
02CE70:  51 55 09 46 41 4C 53 45 09 09 3B 20 46 6F 72 20    QU.FALSE..; For 
02CE80:  61 73 73 65 6D 62 6C 79 20 76 69 61 20 4D 69 63    assembly via Mic
02CE90:  72 6F 73 6F 66 74 27 73 20 4D 38 30 2E 0D 0A 6C    rosoft's M80...l
02CEA0:  61 73 6D 09 45 51 55 09 54 52 55 45 09 09 3B 20    asm.EQU.TRUE..; 
02CEB0:  46 6F 72 20 61 73 73 65 6D 62 6C 79 20 76 69 61    For assembly via
02CEC0:  20 4C 41 53 4D 2C 20 61 20 70 75 62 6C 69 63 2D     LASM, a public-
02CED0:  64 6F 6D 61 69 6E 0D 0A 09 09 09 09 3B 20 61 73    domain......; as
02CEE0:  73 65 6D 62 6C 65 72 2E 0D 0A 0D 0A 3B 0D 0A 3B    sembler.....;..;
02CEF0:  09 41 64 64 72 65 73 73 20 61 74 20 77 68 69 63    .Address at whic
02CF00:  52 20 64 65 6C 70 68 69 20 4F 52 20 63 70 74 38    R delphi OR cpt8
02CF10:  35 78 78 20 4F 52 20 6E 6F 72 74 68 73 09 3B 72    5xx OR norths.;r
02CF20:  75 6E 6E 69 6E 67 20 6F 75 74 20 6F 66 20 72 6F    unning out of ro
02CF30:  6F 6D 0D 0A 69 6E 6F 75 74 09 45 51 55 09 54 52    om..inout.EQU.TR
02CF40:  55 45 09 09 3B 53 68 6F 72 74 20 63 6F 6E 64 69    UE..;Short condi
02CF50:  74 69 6F 6E 61 6C 20 66 6F 72 20 61 62 6F 76 65    tional for above
02CF60:  0D 0A 69 6F 62 79 74 09 45 51 55 09 46 41 4C 53    ..iobyt.EQU.FALS
02CF70:  45 0D 0A 45 4E 44 49 46 3B 62 62 49 49 20 4F 52    E..ENDIF;bbII OR
02CF80:  20 6D 6D 64 49 20 4F 52 20 6D 64 49 20 4F 52 20     mmdI OR mdI OR 
02CF90:  64 65 6C 70 68 69 20 4F 52 20 63 70 74 38 35 78    delphi OR cpt85x
02CFA0:  78 20 4F 52 20 6E 6F 72 74 68 73 0D 0A 0D 0A 3B    x OR norths....;
02CFB0:  2E 2E 20 61 6E 64 20 53 79 73 74 65 6D 73 20 64    .. and Systems d
02CFC0:  6F 69 6E 67 20 6E 65 69 74 68 65 72 2E 2E 2E 0D    oing neither....
02CFD0:  0A 6F 73 69 09 45 51 55 09 46 41 4C 53 45 09 09    .osi.EQU.FALSE..
02CFE0:  3B 46 6F 72 20 4F 68 69 6F 20 53 63 69 65 6E 74    ;For Ohio Scient
02CFF0:  69 66 69 63 2E 0D 0A 6F 73 62 72 6E 31 09 45 51    ific...osbrn1.EQ
02D000:  55 09 46 41 4C 53 45 09 09 3B 46 6F 72 20 4F 73    U.FALSE..;For Os
02D010:  62 6F 72 6E 65 20 31 0D 0A 63 70 6D 33 09 45 51    borne 1..cpm3.EQ
02D020:  55 09 46 41 4C 53 45 09 09 3B 22 47 65 6E 65 72    U.FALSE..;"Gener
02D030:  69 63 22 20 4B 65 72 6D 69 74 2D 38 30 20 66 6F    ic" Kermit-80 fo
02D040:  72 20 43 50 2F 4D 20 33 2E 30 20 28 43 50 2F 4D    r CP/M 3.0 (CP/M
02D050:  20 50 6C 75 73 29 0D 0A 09 09 09 09 3B 20 28 74     Plus)......; (t
02D060:  65 72 6D 69 6E 61 6C 20 72 65 71 75 69 72 65 64    erminal required
02D070:  29 0D 0A 6C 6F 62 6F 09 45 51 55 09 46 41 4C 53    )..lobo.EQU.FALS
02D080:  45 09 09 3B 4C 6F 62 6F 20 4D 61 78 2D 38 30 0D    E..;Lobo Max-80.
02D090:  0A 61 70 6D 6D 64 6D 09 45 51 55 09 46 41 4C 53    .apmmdm.EQU.FALS
02D0A0:  45 09 09 3B 6A 62 20 4D 69 63 72 6F 6D 6F 64 65    E..;jb Micromode
02D0B0:  6D 20 49 49 20 69 6E 20 73 6C 6F 74 20 32 0D 0A    m II in slot 2..
02D0C0:  61 70 36 35 35 31 09 45 51 55 09 46 41 4C 53 45    ap6551.EQU.FALSE
02D0D0:  09 09 3B 6A 62 20 61 70 70 6C 65 20 77 69 74 68    ..;jb apple with
02D0E0:  20 36 35 35 31 20 41 43 49 41 20 69 6E 20 73 65     6551 ACIA in se
02D0F0:  72 69 61 6C 20 69 6E 74 65 72 66 61 63 65 0D 0A    rial interface..
02D100:  68 20 74 68 65 20 6F 76 65 72 6C 61 79 20 73 68    h the overlay sh
02D110:  6F 75 6C 64 20 62 65 20 6C 6F 61 64 65 64 2E 20    ould be loaded. 
02D120:  20 54 68 69 73 20 77 69 6C 6C 20 6E 6F 74 0D 0A     This will not..
02D130:  3B 09 63 68 61 6E 67 65 20 6F 66 74 65 6E 20 28    ;.change often (
02D140:  6E 6F 20 6D 6F 72 65 20 74 68 61 6E 20 6F 6E 63    no more than onc
02D150:  65 20 70 65 72 20 76 65 72 73 69 6F 6E 20 6F 66    e per version of
02D160:  20 4B 45 52 4D 49 54 29 3B 20 69 74 20 73 68 6F     KERMIT); it sho
02D170:  75 6C 64 0D 0A 3B 09 62 65 20 75 70 64 61 74 65    uld..;.be update
02D180:  64 20 77 68 65 6E 20 61 20 6E 65 77 20 76 65 72    d when a new ver
02D190:  73 69 6F 6E 20 6F 66 20 4B 45 52 4D 49 54 20 69    sion of KERMIT i
02D1A0:  73 20 72 65 6C 65 61 73 65 64 2E 0D 0A 6F 76 6C    s released...ovl
02D1B0:  61 64 72 09 45 51 55 09 33 37 30 30 48 09 09 3B    adr.EQU.3700H..;
02D1C0:  20 5B 70 63 63 30 31 33 5D 20 76 61 6C 75 65 20     [pcc013] value 
02D1D0:  66 6F 72 20 4B 45 52 4D 49 54 20 76 34 2E 30 34    for KERMIT v4.04
02D1E0:  0D 0A 0D 0A 3B 57 68 69 63 68 20 43 50 2F 4D 20    ....;Which CP/M 
02D1F0:  73 79 73 74 65 6D 20 68 61 72 64 77 61 72 65 20    system hardware 
02D200:  61 72 65 20 77 65 20 62 75 69 6C 64 69 6E 67 20    are we building 
02D210:  4B 45 52 4D 49 54 2D 38 30 20 66 6F 72 3F 0D 0A    KERMIT-80 for?..
02D220:  3B 4F 6E 65 20 6F 66 20 74 68 65 20 66 6F 6C 6C    ;One of the foll
02D230:  6F 77 69 6E 67 20 73 68 6F 75 6C 64 20 62 65 20    owing should be 
02D240:  54 52 55 45 2C 20 74 68 65 20 72 65 73 74 20 46    TRUE, the rest F
02D250:  41 4C 53 45 3A 0D 0A 3B 0D 0A 3B 57 65 20 68 61    ALSE:..;..;We ha
02D260:  76 65 20 62 61 73 69 63 61 6C 6C 79 20 74 68 72    ve basically thr
02D270:  65 65 20 22 63 6C 61 73 73 65 73 22 20 6F 66 20    ee "classes" of 
02D280:  73 79 73 74 65 6D 73 3A 0D 0A 0D 0A 3B 53 79 73    systems:....;Sys
02D290:  74 65 6D 73 20 73 75 70 70 6F 72 74 69 6E 67 20    tems supporting 
02D2A0:  74 68 65 20 49 4F 2D 72 65 64 69 72 65 63 74 69    the IO-redirecti
02D2B0:  6F 6E 20 76 69 61 20 49 2F 4F 2D 42 79 74 65 0D    on via I/O-Byte.
02D2C0:  0A 0D 0A 72 6F 62 69 6E 09 45 51 55 09 46 41 4C    ...robin.EQU.FAL
02D2D0:  53 45 09 09 3B 44 45 43 20 56 54 31 38 30 20 3D    SE..;DEC VT180 =
02D2E0:  20 47 65 6E 65 72 69 63 20 2B 20 56 54 31 30 30     Generic + VT100
02D2F0:  20 73 63 72 65 65 6E 20 63 6F 6E 74 72 6F 6C 0D     screen control.
02D300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
02D310:  26 00 00 00 02 09 4E E5 26 00 C1 02 00 00 00 02    &.....N.&.......
02D320:  26 00 C6 02 00 00 00 02 26 00 C2 02 00 00 00 02    &.......&.......
02D330:  26 00 C7 02 00 00 00 02 26 00 C3 02 00 00 00 02    &.......&.......
02D340:  26 00 C8 02 00 00 00 02 26 00 C4 02 00 00 00 02    &.......&.......
02D350:  26 00 C9 02 00 00 00 02 26 00 C5 02 00 00 00 02    &.......&.......
02D360:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D370:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D380:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D390:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D3A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D3B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D3C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D3D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D3E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D3F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D400:  49 46 20 61 70 36 35 35 31 09 09 09 3B 6A 62 20    IF ap6551...;jb 
02D410:  65 67 2E 20 41 70 70 6C 65 20 53 53 43 2C 20 56    eg. Apple SSC, V
02D420:  69 64 65 78 20 50 53 49 4F 2C 20 42 61 73 69 73    idex PSIO, Basis
02D430:  20 31 30 38 0D 0A 61 70 73 6C 6F 74 09 45 51 55     108..apslot.EQU
02D440:  09 32 09 09 3B 6A 62 20 73 65 74 20 65 71 75 61    .2..;jb set equa
02D450:  6C 20 74 6F 20 73 6C 6F 74 20 63 6F 6E 74 61 69    l to slot contai
02D460:  6E 69 6E 67 20 73 65 72 69 61 6C 20 63 61 72 64    ning serial card
02D470:  0D 0A 09 09 09 09 3B 6A 62 20 20 73 65 74 20 74    ......;jb  set t
02D480:  6F 20 31 20 66 6F 72 20 42 61 73 69 73 20 62 75    o 1 for Basis bu
02D490:  69 6C 74 2D 69 6E 20 70 6F 72 74 0D 0A 45 4E 44    ilt-in port..END
02D4A0:  49 46 3B 6A 62 20 61 70 36 35 35 31 0D 0A 0D 0A    IF;jb ap6551....
02D4B0:  61 70 70 6C 65 09 45 51 55 09 61 70 6D 6D 64 6D    apple.EQU.apmmdm
02D4C0:  20 4F 52 20 61 70 36 35 35 31 20 3B 20 66 6C 61     OR ap6551 ; fla
02D4D0:  67 20 61 70 70 6C 65 20 73 79 73 74 65 6D 20 69    g apple system i
02D4E0:  66 20 65 69 74 68 65 72 20 73 65 6C 65 63 74 65    f either selecte
02D4F0:  64 0D 0A 49 46 20 6F 73 69 20 4F 52 20 61 70 70    d..IF osi OR app
02D500:  6C 65 20 4F 52 20 6F 73 62 72 6E 31 20 4F 52 20    le OR osbrn1 OR 
02D510:  63 70 6D 33 20 4F 52 20 6C 6F 62 6F 0D 0A 69 6F    cpm3 OR lobo..io
02D520:  62 79 74 09 45 51 55 09 46 41 4C 53 45 0D 0A 69    byt.EQU.FALSE..i
02D530:  6E 6F 75 74 09 45 51 55 09 46 41 4C 53 45 0D 0A    nout.EQU.FALSE..
02D540:  45 4E 44 49 46 3B 6F 73 69 20 4F 52 20 61 70 70    ENDIF;osi OR app
02D550:  6C 65 20 4F 52 20 6F 73 62 72 6E 31 20 4F 52 20    le OR osbrn1 OR 
02D560:  63 70 6D 33 20 4F 52 20 6C 6F 62 6F 0D 0A 0D 0A    cpm3 OR lobo....
02D570:  3B 2E 2E 20 61 6E 64 20 66 6F 72 20 4D 69 63 72    ;.. and for Micr
02D580:  6F 73 2C 20 6C 69 6B 65 20 74 68 65 20 4D 44 49    os, like the MDI
02D590:  2C 20 77 68 69 63 68 20 68 61 76 65 20 22 74 65    , which have "te
02D5A0:  72 6D 69 6E 61 6C 73 20 6F 66 20 63 68 6F 69 63    rminals of choic
02D5B0:  65 22 2C 20 79 6F 75 20 6D 75 73 74 0D 0A 3B 73    e", you must..;s
02D5C0:  65 6C 65 63 74 20 6F 6E 65 20 6F 66 20 74 68 65    elect one of the
02D5D0:  73 65 20 69 6E 20 61 64 64 69 74 69 6F 6E 20 74    se in addition t
02D5E0:  6F 20 73 65 6C 65 63 74 69 6E 67 20 74 68 65 20    o selecting the 
02D5F0:  6D 69 63 72 6F 20 69 74 73 65 6C 66 2E 0D 0A 3B    micro itself...;
02D600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D6A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D6B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D6C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D6D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D6E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D6F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D7A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D7B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D7C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D7D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D7E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D7F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D800:  41 6C 73 6F 20 73 65 6C 65 63 74 20 61 20 74 65    Also select a te
02D810:  72 6D 69 6E 61 6C 20 66 6F 72 20 22 67 65 6E 65    rminal for "gene
02D820:  72 22 20 61 6E 64 20 22 63 70 6D 33 22 3A 20 75    r" and "cpm3": u
02D830:  73 65 20 22 63 72 74 22 20 66 6F 72 20 74 68 65    se "crt" for the
02D840:  20 74 72 75 65 20 67 65 6E 65 72 69 63 2E 0D 0A     true generic...
02D850:  63 72 74 09 45 51 55 09 46 41 4C 53 45 09 09 3B    crt.EQU.FALSE..;
02D860:  42 61 73 69 63 20 43 52 54 2C 20 6E 6F 20 63 75    Basic CRT, no cu
02D870:  72 73 6F 72 20 70 6F 73 69 74 69 6F 6E 69 6E 67    rsor positioning
02D880:  0D 0A 61 64 6D 33 61 09 45 51 55 09 46 41 4C 53    ..adm3a.EQU.FALS
02D890:  45 09 09 3B 41 64 6D 33 61 20 44 69 73 70 6C 61    E..;Adm3a Displa
02D8A0:  79 20 28 6F 72 20 43 50 54 20 62 75 69 6C 74 2D    y (or CPT built-
02D8B0:  69 6E 20 64 69 73 70 6C 61 79 29 0D 0A 73 6D 72    in display)..smr
02D8C0:  74 76 64 09 45 51 55 09 46 41 4C 53 45 09 09 3B    tvd.EQU.FALSE..;
02D8D0:  4E 65 74 72 6F 6E 69 63 73 20 53 6D 61 72 74 76    Netronics Smartv
02D8E0:  69 64 20 74 65 72 6D 69 6E 61 6C 2E 0D 0A 74 76    id terminal...tv
02D8F0:  69 39 32 35 09 45 51 55 09 46 41 4C 53 45 09 09    i925.EQU.FALSE..
02D900:  3B 54 56 49 39 32 35 20 44 69 73 70 6C 61 79 0D    ;TVI925 Display.
02D910:  0A 09 09 09 09 3B 20 28 77 6F 72 6B 73 20 66 6F    .....; (works fo
02D920:  72 20 46 72 65 65 64 6F 6D 20 31 30 30 20 61 6C    r Freedom 100 al
02D930:  73 6F 29 20 20 5B 54 6F 61 64 20 48 61 6C 6C 5D    so)  [Toad Hall]
02D940:  0D 0A 76 74 35 32 09 45 51 55 09 54 52 55 45 09    ..vt52.EQU.TRUE.
02D950:  09 3B 56 54 35 32 20 6F 72 20 65 71 75 69 76 61    .;VT52 or equiva
02D960:  6C 65 6E 74 20 28 6F 72 20 48 31 39 29 0D 0A 76    lent (or H19)..v
02D970:  74 31 30 30 09 45 51 55 09 46 41 4C 53 45 09 09    t100.EQU.FALSE..
02D980:  3B 56 54 31 30 30 20 6F 72 20 65 71 75 69 76 61    ;VT100 or equiva
02D990:  6C 65 6E 74 0D 0A 0D 0A 3B 20 54 6F 61 64 20 48    lent....; Toad H
02D9A0:  61 6C 6C 20 54 41 43 20 54 72 61 70 3A 20 20 49    all TAC Trap:  I
02D9B0:  66 20 79 6F 75 27 72 65 20 67 6F 69 6E 67 20 74    f you're going t
02D9C0:  68 72 6F 75 67 68 20 61 20 54 41 43 2C 20 69 74    hrough a TAC, it
02D9D0:  20 77 69 6C 6C 0D 0A 3B 20 63 6F 75 67 68 20 6F     will..; cough o
02D9E0:  6E 20 69 74 73 20 49 6E 74 65 72 63 65 70 74 20    n its Intercept 
02D9F0:  43 68 61 72 61 63 74 65 72 20 28 75 73 75 61 6C    Character (usual
02DA00:  3B 20 43 50 34 57 4C 44 2E 41 53 4D 0D 0A 3B 09    ; CP4WLD.ASM..;.
02DA10:  4B 45 52 4D 49 54 20 2D 20 28 43 65 6C 74 69 63    KERMIT - (Celtic
02DA20:  20 66 6F 72 20 22 46 52 45 45 22 29 0D 0A 3B 0D     for "FREE")..;.
02DA30:  0A 3B 09 54 68 69 73 20 69 73 20 74 68 65 20 43    .;.This is the C
02DA40:  50 2F 4D 2D 38 30 20 69 6D 70 6C 65 6D 65 6E 74    P/M-80 implement
02DA50:  61 74 69 6F 6E 20 6F 66 20 74 68 65 20 43 6F 6C    ation of the Col
02DA60:  75 6D 62 69 61 20 55 6E 69 76 65 72 73 69 74 79    umbia University
02DA70:  0D 0A 3B 09 4B 45 52 4D 49 54 20 66 69 6C 65 20    ..;.KERMIT file 
02DA80:  74 72 61 6E 73 66 65 72 20 70 72 6F 74 6F 63 6F    transfer protoco
02DA90:  6C 2E 0D 0A 3B 0D 0A 3B 09 56 65 72 73 69 6F 6E    l...;..;.Version
02DAA0:  20 34 2E 30 0D 0A 3B 0D 0A 3B 09 43 6F 70 79 72     4.0..;..;.Copyr
02DAB0:  69 67 68 74 20 4A 75 6E 65 20 31 39 38 31 2C 31    ight June 1981,1
02DAC0:  39 38 32 2C 31 39 38 33 2C 31 39 38 34 0D 0A 3B    982,1983,1984..;
02DAD0:  09 43 6F 6C 75 6D 62 69 61 20 55 6E 69 76 65 72    .Columbia Univer
02DAE0:  73 69 74 79 0D 0A 3B 0D 0A 3B 20 4F 72 69 67 69    sity..;..; Origi
02DAF0:  6E 61 6C 6C 79 20 77 72 69 74 74 65 6E 20 62 79    nally written by
02DB00:  20 42 69 6C 6C 20 43 61 74 63 68 69 6E 67 73 20     Bill Catchings 
02DB10:  6F 66 20 74 68 65 20 43 6F 6C 75 6D 62 69 61 20    of the Columbia 
02DB20:  55 6E 69 76 65 72 73 69 74 79 20 43 65 6E 74 65    University Cente
02DB30:  72 20 66 6F 72 0D 0A 3B 20 43 6F 6D 70 75 74 69    r for..; Computi
02DB40:  6E 67 20 41 63 74 69 76 69 74 69 65 73 2C 20 36    ng Activities, 6
02DB50:  31 32 20 57 2E 20 31 31 35 74 68 20 53 74 2E 2C    12 W. 115th St.,
02DB60:  20 4E 65 77 20 59 6F 72 6B 2C 20 4E 59 20 31 30     New York, NY 10
02DB70:  30 32 35 2E 0D 0A 3B 0D 0A 3B 20 43 6F 6E 74 72    025...;..; Contr
02DB80:  69 62 75 74 69 6F 6E 73 20 62 79 20 46 72 61 6E    ibutions by Fran
02DB90:  6B 20 64 61 20 43 72 75 7A 2C 20 44 61 70 68 6E    k da Cruz, Daphn
02DBA0:  65 20 54 7A 6F 61 72 2C 20 42 65 72 6E 69 65 20    e Tzoar, Bernie 
02DBB0:  45 69 62 65 6E 2C 0D 0A 3B 20 42 72 75 63 65 20    Eiben,..; Bruce 
02DBC0:  54 61 6E 6E 65 72 2C 20 4E 69 63 6B 20 42 75 73    Tanner, Nick Bus
02DBD0:  68 2C 20 47 72 65 67 20 53 6D 61 6C 6C 2C 20 4B    h, Greg Small, K
02DBE0:  69 6D 6D 6F 20 4C 61 61 6B 73 6F 6E 65 6E 2C 20    immo Laaksonen, 
02DBF0:  4A 65 66 66 20 44 61 6D 65 6E 73 2C 20 61 6E 64    Jeff Damens, and
02DC00:  6C 79 20 61 20 40 20 28 2A 20 2D 20 34 30 48 29    ly a @ (* - 40H)
02DC10:  29 2E 20 20 53 65 6E 64 69 6E 67 20 69 74 0D 0A    ).  Sending it..
02DC20:  3B 20 74 77 69 63 65 20 66 6F 72 63 65 73 20 74    ; twice forces t
02DC30:  68 65 20 54 41 43 20 74 6F 20 72 65 63 6F 67 6E    he TAC to recogn
02DC40:  69 7A 65 20 69 74 20 61 73 20 61 20 76 61 6C 69    ize it as a vali
02DC50:  64 20 41 53 43 49 49 20 63 68 61 72 61 63 74 65    d ASCII characte
02DC60:  72 2C 0D 0A 3B 20 61 6E 64 20 69 74 27 6C 6C 20    r,..; and it'll 
02DC70:  73 65 6E 64 20 6F 6E 6C 79 20 6F 6E 65 20 6F 6E    send only one on
02DC80:  20 74 6F 20 74 68 65 20 68 6F 73 74 2E 20 20 49     to the host.  I
02DC90:  66 20 79 6F 75 27 76 65 20 53 45 54 20 74 68 65    f you've SET the
02DCA0:  20 54 41 43 54 72 61 70 0D 0A 3B 20 74 6F 20 4F     TACTrap..; to O
02DCB0:  46 46 2C 20 69 74 20 77 69 6C 6C 20 62 65 20 61    FF, it will be a
02DCC0:  20 6E 75 6C 6C 20 63 68 61 72 61 63 74 65 72 2C     null character,
02DCD0:  20 61 6E 64 20 6E 6F 74 68 69 6E 67 20 77 69 6C     and nothing wil
02DCE0:  6C 20 68 61 70 70 65 6E 2E 20 20 49 66 20 79 6F    l happen.  If yo
02DCF0:  75 0D 0A 3B 20 73 65 74 20 69 74 20 6F 6E 2C 20    u..; set it on, 
02DD00:  69 74 20 77 69 6C 6C 20 62 65 20 79 6F 75 72 20    it will be your 
02DD10:  73 65 6C 65 63 74 65 64 20 54 41 43 20 69 6E 74    selected TAC int
02DD20:  65 72 63 65 70 74 20 63 68 61 72 61 63 74 65 72    ercept character
02DD30:  20 28 6F 72 20 77 69 6C 6C 0D 0A 3B 20 64 65 66     (or will..; def
02DD40:  61 75 6C 74 20 74 6F 20 74 68 65 20 63 6F 6D 6D    ault to the comm
02DD50:  6F 6E 20 69 6E 74 65 72 63 65 70 74 20 63 68 61    on intercept cha
02DD60:  72 2C 20 27 40 27 2E 0D 0A 3B 20 49 66 20 79 6F    r, '@'...; If yo
02DD70:  75 20 6E 65 76 65 72 20 65 78 70 65 63 74 20 74    u never expect t
02DD80:  6F 20 68 61 76 65 20 74 6F 20 77 6F 72 6B 20 74    o have to work t
02DD90:  68 72 6F 75 67 68 20 73 75 63 68 20 61 20 62 65    hrough such a be
02DDA0:  61 73 74 69 65 2C 20 6A 75 73 74 20 73 65 74 0D    astie, just set.
02DDB0:  0A 3B 20 54 41 43 20 74 6F 20 66 61 6C 73 65 20    .; TAC to false 
02DDC0:  61 6E 64 20 66 6F 72 67 65 74 20 61 6C 6C 20 74    and forget all t
02DDD0:  68 69 73 20 6D 65 73 73 2E 20 20 5B 54 6F 61 64    his mess.  [Toad
02DDE0:  20 48 61 6C 6C 5D 0D 0A 0D 0A 74 61 63 09 45 51     Hall]....tac.EQ
02DDF0:  55 09 46 41 4C 53 45 09 09 3B 20 67 6F 6E 6E 61    U.FALSE..; gonna
02DE00:  20 6D 61 6E 79 0D 0A 3B 20 6F 74 68 65 72 73 2E     many..; others.
02DE10:  0D 0A 3B 0D 0A 3B 09 4D 75 6C 74 69 2D 66 69 6C    ..;..;.Multi-fil
02DE20:  65 20 61 63 63 65 73 73 20 73 75 62 72 6F 75 74    e access subrout
02DE30:  69 6E 65 2E 20 20 41 6C 6C 6F 77 73 20 70 72 6F    ine.  Allows pro
02DE40:  63 65 73 73 69 6E 67 20 6F 66 20 6D 75 6C 74 69    cessing of multi
02DE50:  70 6C 65 20 66 69 6C 65 73 0D 0A 3B 09 28 69 2E    ple files..;.(i.
02DE60:  65 2E 2C 20 2A 2E 41 53 4D 29 20 66 72 6F 6D 20    e., *.ASM) from 
02DE70:  64 69 73 6B 2E 20 20 54 68 69 73 20 72 6F 75 74    disk.  This rout
02DE80:  69 6E 65 20 62 75 69 6C 64 73 20 74 68 65 20 70    ine builds the p
02DE90:  72 6F 70 65 72 20 6E 61 6D 65 20 69 6E 20 74 68    roper name in th
02DEA0:  65 0D 0A 3B 09 46 43 42 20 65 61 63 68 20 74 69    e..;.FCB each ti
02DEB0:  6D 65 20 69 74 20 69 73 20 63 61 6C 6C 65 64 2E    me it is called.
02DEC0:  20 20 54 68 69 73 20 63 6F 6D 6D 61 6E 64 20 77      This command w
02DED0:  6F 75 6C 64 20 62 65 20 75 73 65 64 20 69 6E 20    ould be used in 
02DEE0:  73 75 63 68 20 70 72 6F 2D 0D 0A 3B 09 67 72 61    such pro-..;.gra
02DEF0:  6D 73 20 73 75 63 68 20 61 73 20 6D 6F 64 65 6D    ms such as modem
02DF00:  20 74 72 61 6E 73 66 65 72 2C 20 74 61 70 65 20     transfer, tape 
02DF10:  73 61 76 65 2C 20 65 74 63 2E 20 69 6E 20 77 68    save, etc. in wh
02DF20:  69 63 68 20 79 6F 75 20 77 61 6E 74 20 74 6F 0D    ich you want to.
02DF30:  0A 3B 09 70 72 6F 63 65 73 73 20 73 69 6E 67 6C    .;.process singl
02DF40:  65 20 6F 72 20 6D 75 6C 74 69 70 6C 65 20 66 69    e or multiple fi
02DF50:  6C 65 73 2E 0D 0A 3B 09 4E 6F 74 65 20 74 68 61    les...;.Note tha
02DF60:  74 20 69 74 20 77 69 6C 6C 20 66 61 69 6C 20 69    t it will fail i
02DF70:  66 20 6D 6F 72 65 20 74 68 61 6E 20 32 35 36 20    f more than 256 
02DF80:  65 6E 74 72 69 65 73 20 6D 61 74 63 68 20 74 68    entries match th
02DF90:  65 20 77 69 6C 64 63 61 72 64 2E 0D 0A 3B 0D 0A    e wildcard...;..
02DFA0:  3B 20 72 65 76 69 73 69 6F 6E 20 68 69 73 74 6F    ; revision histo
02DFB0:  72 79 3A 0D 0A 3B 20 65 64 69 74 20 33 3A 20 4A    ry:..; edit 3: J
02DFC0:  75 6C 79 20 32 37 2C 20 31 39 38 34 0D 0A 3B 09    uly 27, 1984..;.
02DFD0:  73 75 70 70 6F 72 74 20 4C 41 53 4D 3A 20 72 65    support LASM: re
02DFE0:  6D 6F 76 65 20 65 78 63 6C 61 6D 61 74 69 6F 6E    move exclamation
02DFF0:  20 70 6F 69 6E 74 73 2C 20 6C 69 6E 6B 20 74 6F     points, link to
02E000:  20 77 6F 72 6B 20 74 68 72 6F 75 67 68 20 61 20     work through a 
02E010:  54 41 43 3F 0D 0A 74 61 63 76 61 6C 09 45 51 55    TAC?..tacval.EQU
02E020:  09 27 40 27 09 09 3B 54 79 70 69 63 61 6C 20 54    .'@'..;Typical T
02E030:  41 43 20 69 6E 74 65 72 63 65 70 74 20 63 68 61    AC intercept cha
02E040:  72 61 63 74 65 72 0D 0A 0D 0A 3B 20 50 72 6F 63    racter....; Proc
02E050:  65 73 73 6F 72 20 73 70 65 65 64 20 69 6E 20 75    essor speed in u
02E060:  6E 69 74 73 20 6F 66 20 31 30 30 4B 48 7A 20 28    nits of 100KHz (
02E070:  66 6F 72 20 62 62 49 49 2C 20 6B 70 49 49 2C 20    for bbII, kpII, 
02E080:  26 20 63 70 74 38 35 78 78 20 74 69 6D 69 6E 67    & cpt85xx timing
02E090:  20 6C 6F 6F 70 29 0D 0A 3B 63 70 75 73 70 64 09     loop)..;cpuspd.
02E0A0:  45 51 55 09 32 30 09 09 3B 20 43 50 54 2D 38 35    EQU.20..; CPT-85
02E0B0:  78 78 3A 20 32 2E 30 20 4D 48 7A 20 28 27 63 61    xx: 2.0 MHz ('ca
02E0C0:  75 73 65 20 6F 66 20 69 6E 74 65 67 72 61 6C 20    use of integral 
02E0D0:  76 69 64 65 6F 3F 29 0D 0A 3B 63 70 75 73 70 64    video?)..;cpuspd
02E0E0:  09 45 51 55 09 32 35 09 09 3B 20 6F 72 69 67 69    .EQU.25..; origi
02E0F0:  6E 61 6C 20 4B 61 79 70 72 6F 20 49 49 2C 58 65    nal Kaypro II,Xe
02E100:  72 6F 78 20 38 32 30 3A 20 32 2E 35 20 4D 48 7A    rox 820: 2.5 MHz
02E110:  0D 0A 63 70 75 73 70 64 09 45 51 55 09 34 30 09    ..cpuspd.EQU.40.
02E120:  09 3B 20 62 62 49 49 3A 20 34 2E 30 20 4D 48 7A    .; bbII: 4.0 MHz
02E130:  20 20 5B 61 6C 73 6F 20 4B 61 79 70 72 6F 20 31      [also Kaypro 1
02E140:  30 5D 0D 0A 0D 0A 63 70 34 6B 65 72 09 45 51 55    0]....cp4ker.EQU
02E150:  09 46 41 4C 53 45 09 09 3B 20 62 75 69 6C 64 69    .FALSE..; buildi
02E160:  6E 67 20 74 68 65 20 73 79 73 74 65 6D 2D 64 65    ng the system-de
02E170:  70 65 6E 64 65 6E 74 20 70 61 72 74 2E 2E 2E 0D    pendent part....
02E180:  0A 0D 0A 49 46 20 6C 61 73 6D 0D 0A 09 4C 49 4E    ...IF lasm...LIN
02E190:  4B 09 43 50 34 44 45 46 0D 0A 45 4E 44 49 46 3B    K.CP4DEF..ENDIF;
02E1A0:  6C 61 73 6D 20 20 5B 54 6F 61 64 20 48 61 6C 6C    lasm  [Toad Hall
02E1B0:  5D 0D 0A 0D 0A 3B 20 49 66 20 77 65 27 72 65 20    ]....; If we're 
02E1C0:  73 74 69 6C 6C 20 68 65 72 65 2C 20 6D 75 73 74    still here, must
02E1D0:  20 62 65 20 4D 38 30 20 6F 72 20 4D 41 43 38 30     be M80 or MAC80
02E1E0:  2E 20 20 43 6F 6C 6C 65 63 74 20 74 68 65 20 72    .  Collect the r
02E1F0:  65 73 74 20 6F 66 0D 0A 3B 20 74 68 65 20 73 6F    est of..; the so
02E200:  20 43 50 34 43 4D 44 2E 0D 0A 3B 0D 0A 3B 20 65     CP4CMD...;..; e
02E210:  64 69 74 20 32 3A 20 4A 75 6E 65 20 37 2C 20 31    dit 2: June 7, 1
02E220:  39 38 34 20 28 43 4A 43 29 0D 0A 3B 09 66 6F 72    984 (CJC)..;.for
02E230:  6D 61 74 74 69 6E 67 20 61 6E 64 20 64 6F 63 75    matting and docu
02E240:  6D 65 6E 74 61 74 69 6F 6E 3B 20 61 64 64 20 6D    mentation; add m
02E250:  6F 64 75 6C 65 20 76 65 72 73 69 6F 6E 20 73 74    odule version st
02E260:  72 69 6E 67 3B 20 72 65 64 6F 20 6D 6F 76 66 63    ring; redo movfc
02E270:  62 2C 0D 0A 3B 09 69 6E 20 70 72 65 70 61 72 61    b,..;.in prepara
02E280:  74 69 6F 6E 20 66 6F 72 20 6D 6F 76 69 6E 67 20    tion for moving 
02E290:  44 4D 41 20 62 75 66 66 65 72 20 28 6C 61 74 65    DMA buffer (late
02E2A0:  72 2E 2E 2E 29 2E 0D 0A 3B 0D 0A 3B 20 65 64 69    r...)...;..; edi
02E2B0:  74 20 31 3A 20 4D 61 79 2C 20 31 39 38 34 20 28    t 1: May, 1984 (
02E2C0:  43 4A 43 29 0D 0A 3B 09 65 78 74 72 61 63 74 65    CJC)..;.extracte
02E2D0:  64 20 66 72 6F 6D 20 43 50 4D 42 41 53 45 2E 4D    d from CPMBASE.M
02E2E0:  38 30 20 76 65 72 73 69 6F 6E 20 33 2E 39 3B 20    80 version 3.9; 
02E2F0:  6D 6F 64 69 66 69 63 61 74 69 6F 6E 73 20 61 72    modifications ar
02E300:  65 20 64 65 73 63 72 69 62 65 64 0D 0A 3B 09 69    e described..;.i
02E310:  6E 20 74 68 65 20 61 63 63 6F 6D 70 61 6E 79 69    n the accompanyi
02E320:  6E 67 20 2E 55 50 44 20 66 69 6C 65 2E 0D 0A 3B    ng .UPD file...;
02E330:  0D 0A 77 6C 64 76 65 72 3A 09 64 62 09 27 43 50    ..wldver:.db.'CP
02E340:  34 57 4C 44 2E 41 53 4D 20 28 33 29 20 32 37 2D    4WLD.ASM (3) 27-
02E350:  4A 75 6C 2D 38 34 24 27 0D 0A 0D 0A 3B 09 54 68    Jul-84$'....;.Th
02E360:  65 20 46 43 42 20 77 69 6C 6C 20 62 65 20 73 65    e FCB will be se
02E370:  74 20 75 70 20 77 69 74 68 20 74 68 65 20 6E 65    t up with the ne
02E380:  78 74 20 6E 61 6D 65 2C 20 72 65 61 64 79 20 74    xt name, ready t
02E390:  6F 20 64 6F 20 6E 6F 72 6D 61 6C 0D 0A 3B 09 70    o do normal..;.p
02E3A0:  72 6F 63 65 73 73 69 6E 67 20 28 4F 50 45 4E 2C    rocessing (OPEN,
02E3B0:  20 52 45 41 44 2C 20 65 74 63 2E 29 20 77 68 65     READ, etc.) whe
02E3C0:  6E 20 72 6F 75 74 69 6E 65 20 69 73 20 63 61 6C    n routine is cal
02E3D0:  6C 65 64 2E 0D 0A 3B 0D 0A 3B 09 43 61 72 72 79    led...;..;.Carry
02E3E0:  20 69 73 20 73 65 74 20 69 66 20 6E 6F 20 6D 6F     is set if no mo
02E3F0:  72 65 20 6E 61 6D 65 73 20 63 61 6E 20 62 65 20    re names can be 
02E400:  75 72 63 65 73 2E 0D 0A 09 49 4E 43 4C 55 44 45    urces....INCLUDE
02E410:  09 43 50 34 44 45 46 2E 41 53 4D 09 3B 20 63 6F    .CP4DEF.ASM.; co
02E420:  6D 6D 6F 6E 20 64 65 66 69 6E 69 74 69 6F 6E 73    mmon definitions
02E430:  0D 0A 09 49 4E 43 4C 55 44 45 20 43 50 34 4C 4E    ...INCLUDE CP4LN
02E440:  4B 2E 41 53 4D 09 3B 20 6C 69 6E 6B 61 67 65 20    K.ASM.; linkage 
02E450:  61 72 65 61 20 64 65 73 63 72 69 70 74 69 6F 6E    area description
02E460:  0D 0A 09 49 4E 43 4C 55 44 45 20 43 50 34 53 59    ...INCLUDE CP4SY
02E470:  53 2E 41 53 4D 09 3B 20 73 79 73 74 65 6D 2D 64    S.ASM.; system-d
02E480:  65 70 65 6E 64 65 6E 74 20 63 6F 64 65 20 61 6E    ependent code an
02E490:  64 20 74 61 62 6C 65 73 0D 0A 09 45 4E 44 0D 0A    d tables...END..
02E4A0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E4B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E4C0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E4D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E4E0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E4F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E500:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E510:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E520:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E530:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E540:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E550:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E560:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E570:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E580:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E590:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E5A0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E5B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E5C0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E5D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E5E0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E5F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
02E610:  27 00 00 00 02 09 4E E5 27 00 C1 02 00 00 00 02    '.....N.'.......
02E620:  27 00 C6 02 00 00 00 02 27 00 C2 02 00 00 00 02    '.......'.......
02E630:  27 00 C7 02 00 00 00 02 27 00 C3 02 00 00 00 02    '.......'.......
02E640:  27 00 C8 02 00 00 00 02 27 00 C4 02 00 00 00 02    '.......'.......
02E650:  27 00 C9 02 00 00 00 02 27 00 C5 02 00 00 00 02    '.......'.......
02E660:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E670:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E680:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E690:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E700:  66 6F 75 6E 64 0D 0A 3B 0D 0A 3B 09 4D 46 46 4C    found..;..;.MFFL
02E710:  47 31 20 69 73 20 63 6F 75 6E 74 2F 73 77 69 74    G1 is count/swit
02E720:  63 68 20 5B 30 20 66 6F 72 20 66 69 72 73 74 20    ch [0 for first 
02E730:  74 69 6D 65 20 74 68 72 75 2C 20 70 6F 73 20 66    time thru, pos f
02E740:  6F 72 20 61 6C 6C 20 6F 74 68 65 72 73 5D 0D 0A    or all others]..
02E750:  3B 09 4D 46 46 4C 47 32 20 69 73 20 63 6F 75 6E    ;.MFFLG2 is coun
02E760:  74 65 64 20 64 6F 77 6E 20 66 6F 72 20 65 61 63    ted down for eac
02E770:  68 20 73 75 63 63 65 73 73 69 76 65 20 47 45 54    h successive GET
02E780:  4E 45 58 54 20 66 69 6C 65 20 63 61 6C 6C 0D 0A    NEXT file call..
02E790:  3B 0D 0A 3B 09 54 65 63 68 6E 69 71 75 65 20 75    ;..;.Technique u
02E7A0:  73 65 64 20 69 73 20 74 6F 20 72 65 70 65 61 74    sed is to repeat
02E7B0:  20 53 46 49 52 53 54 2F 53 4E 45 58 54 20 73 65     SFIRST/SNEXT se
02E7C0:  71 75 65 6E 63 65 20 4E 2B 31 20 74 69 6D 65 73    quence N+1 times
02E7D0:  20 66 6F 72 20 65 61 63 68 0D 0A 3B 09 73 75 63     for each..;.suc
02E7E0:  63 65 73 73 69 76 65 20 63 61 6C 6C 2C 20 74 69    cessive call, ti
02E7F0:  6C 6C 20 73 65 71 75 65 6E 63 65 20 66 61 69 6C    ll sequence fail
02E800:  73 2E 20 43 50 2F 4D 20 64 6F 65 73 20 4E 4F 54    s. CP/M does NOT
02E810:  20 61 6C 6C 6F 77 20 64 69 73 6B 2D 68 61 6E 64     allow disk-hand
02E820:  6C 69 6E 67 0D 0A 3B 09 62 65 74 77 65 65 6E 20    ling..;.between 
02E830:  53 46 49 52 53 54 20 61 6E 64 20 53 4E 45 58 54    SFIRST and SNEXT
02E840:  2E 0D 0A 3B 09 63 61 6C 6C 65 64 20 62 79 3A 20    ...;.called by: 
02E850:  73 65 6E 64 2C 20 73 65 6F 66 2C 20 64 69 72 0D    send, seof, dir.
02E860:  0A 0D 0A 6D 66 6E 61 6D 65 3A 09 6F 72 61 09 61    ...mfname:.ora.a
02E870:  09 09 3B 20 63 6C 65 61 72 20 63 61 72 72 79 0D    ..; clear carry.
02E880:  0A 09 70 75 73 68 09 62 09 09 3B 53 61 76 65 20    ..push.b..;Save 
02E890:  72 65 67 69 73 74 65 72 73 0D 0A 09 70 75 73 68    registers...push
02E8A0:  09 64 0D 0A 09 70 75 73 68 09 68 0D 0A 09 6D 76    .d...push.h...mv
02E8B0:  69 09 63 2C 73 65 74 64 6D 61 09 3B 49 6E 69 74    i.c,setdma.;Init
02E8C0:  20 44 4D 41 20 61 64 64 72 2C 20 46 43 42 0D 0A     DMA addr, FCB..
02E8D0:  09 6C 78 69 09 64 2C 38 30 48 0D 0A 09 63 61 6C    .lxi.d,80H...cal
02E8E0:  6C 09 62 64 6F 73 0D 0A 09 78 72 61 09 61 09 09    l.bdos...xra.a..
02E8F0:  3B 41 20 3D 20 30 0D 0A 09 73 74 61 09 66 63 62    ;A = 0...sta.fcb
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:  65 78 74 09 09 3B 63 6C 65 61 72 20 65 78 74 65    ext..;clear exte
02EB10:  6E 73 69 6F 6E 0D 0A 09 6C 64 61 09 6D 66 66 6C    nsion...lda.mffl
02EB20:  67 31 09 09 3B 66 69 6E 64 20 6F 75 74 20 69 66    g1..;find out if
02EB30:  20 22 73 65 63 6F 6E 64 22 20 63 61 6C 6C 20 69     "second" call i
02EB40:  6E 20 72 6F 77 0D 0A 09 6F 72 61 09 61 0D 0A 09    n row...ora.a...
02EB50:  6A 6E 7A 09 6D 66 6E 30 31 09 09 3B 57 65 72 65    jnz.mfn01..;Were
02EB60:  20 68 65 72 65 20 62 65 66 6F 72 65 0D 0A 09 73     here before...s
02EB70:  74 61 09 6D 66 66 6C 67 32 0D 0A 09 6C 78 69 09    ta.mfflg2...lxi.
02EB80:  68 2C 66 63 62 0D 0A 09 6C 78 69 09 64 2C 6D 66    h,fcb...lxi.d,mf
02EB90:  72 65 71 0D 0A 09 6C 78 69 09 62 2C 31 32 0D 0A    req...lxi.b,12..
02EBA0:  09 63 61 6C 6C 09 6D 6F 76 65 72 09 09 3B 2E 66    .call.mover..;.f
02EBB0:  72 6F 6D 20 46 43 42 20 74 6F 20 4D 46 52 45 51    rom FCB to MFREQ
02EBC0:  0D 0A 09 6D 76 69 09 63 2C 53 46 49 52 53 54 09    ...mvi.c,SFIRST.
02EBD0:  3B 53 65 61 72 63 68 20 66 69 72 73 74 0D 0A 09    ;Search first...
02EBE0:  6C 78 69 09 64 2C 66 63 62 0D 0A 09 63 61 6C 6C    lxi.d,fcb...call
02EBF0:  09 62 64 6F 73 0D 0A 09 6A 6D 70 09 6D 66 6E 30    .bdos...jmp.mfn0
02EC00:  32 09 09 3B 61 6E 64 20 63 68 65 63 6B 20 72 65    2..;and check re
02EC10:  73 75 6C 74 73 0D 0A 0D 0A 6D 66 6E 30 31 3A 09    sults....mfn01:.
02EC20:  64 63 72 09 61 0D 0A 09 73 74 61 20 09 6D 66 66    dcr.a...sta .mff
02EC30:  6C 67 32 09 09 3B 73 74 6F 72 65 20 64 6F 77 6E    lg2..;store down
02EC40:  2D 63 6F 75 6E 74 65 72 0D 0A 09 6C 78 69 09 68    -counter...lxi.h
02EC50:  2C 6D 66 72 65 71 09 09 3B 53 46 49 52 53 54 20    ,mfreq..;SFIRST 
02EC60:  52 45 51 20 6E 61 6D 65 0D 0A 09 6C 78 69 09 64    REQ name...lxi.d
02EC70:  2C 66 63 62 0D 0A 09 6C 78 69 09 62 2C 31 32 0D    ,fcb...lxi.b,12.
02EC80:  0A 09 63 61 6C 6C 09 6D 6F 76 65 72 09 09 3B 2E    ..call.mover..;.
02EC90:  66 72 6F 6D 20 4D 46 52 45 51 20 74 6F 20 46 43    from MFREQ to FC
02ECA0:  42 0D 0A 09 6D 76 69 09 63 2C 73 66 69 72 73 74    B...mvi.c,sfirst
02ECB0:  09 3B 53 65 61 72 63 68 20 66 69 72 73 74 20 6F    .;Search first o
02ECC0:  6C 64 20 6F 6E 65 2C 77 65 20 67 6F 74 20 69 74    ld one,we got it
02ECD0:  20 62 65 66 6F 72 65 0D 0A 09 6C 78 69 09 64 2C     before...lxi.d,
02ECE0:  66 63 62 0D 0A 09 63 61 6C 6C 09 62 64 6F 73 09    fcb...call.bdos.
02ECF0:  09 3B 6E 6F 20 65 72 72 6F 72 27 73 20 65 78 70    .;no error's exp
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:  65 63 74 65 64 20 2D 77 65 20 67 6F 74 20 74 68    ected -we got th
02EF10:  61 74 20 62 65 66 6F 72 65 0D 0A 6D 66 6E 30 31    at before..mfn01
02EF20:  61 3A 0D 0A 09 6D 76 69 09 63 2C 73 6E 65 78 74    a:...mvi.c,snext
02EF30:  09 09 3B 53 65 61 72 63 68 20 6E 65 78 74 0D 0A    ..;Search next..
02EF40:  09 63 61 6C 6C 09 62 64 6F 73 0D 0A 6D 66 6E 30    .call.bdos..mfn0
02EF50:  32 3A 09 70 75 73 68 09 70 73 77 0D 0A 09 6C 64    2:.push.psw...ld
02EF60:  61 09 6D 66 66 6C 67 32 09 09 3B 67 65 74 20 22    a.mfflg2..;get "
02EF70:  72 65 70 65 61 74 20 66 69 6C 65 20 63 6F 75 6E    repeat file coun
02EF80:  74 65 72 22 0D 0A 09 6F 72 61 20 09 61 0D 0A 09    ter"...ora .a...
02EF90:  6A 7A 09 6D 66 6E 30 32 61 09 09 3B 69 66 20 7A    jz.mfn02a..;if z
02EFA0:  65 72 6F 2C 20 63 68 65 63 6B 20 69 66 20 53 4E    ero, check if SN
02EFB0:  45 58 54 20 68 61 64 20 45 52 52 4F 52 0D 0A 09    EXT had ERROR...
02EFC0:  64 63 72 09 61 09 09 3B 63 6F 75 6E 74 20 64 6F    dcr.a..;count do
02EFD0:  77 6E 0D 0A 09 73 74 61 09 6D 66 66 6C 67 32 09    wn...sta.mfflg2.
02EFE0:  09 3B 73 74 6F 72 65 20 62 61 63 6B 0D 0A 09 70    .;store back...p
02EFF0:  6F 70 09 70 73 77 09 09 3B 6E 6F 20 65 72 72 6F    op.psw..;no erro
02F000:  72 2D 63 68 65 63 6B 2C 20 77 65 20 67 6F 74 20    r-check, we got 
02F010:  69 74 20 62 65 66 6F 72 65 0D 0A 09 6A 6D 70 09    it before...jmp.
02F020:  6D 66 6E 30 31 61 09 09 3B 6E 65 78 74 20 53 4E    mfn01a..;next SN
02F030:  45 58 54 0D 0A 0D 0A 6D 66 6E 30 32 61 3A 09 70    EXT....mfn02a:.p
02F040:  6F 70 09 70 73 77 0D 0A 09 6F 72 61 09 61 0D 0A    op.psw...ora.a..
02F050:  09 6A 6D 09 6D 66 66 69 78 32 09 09 3B 4E 6F 20    .jm.mffix2..;No 
02F060:  28 6D 6F 72 65 29 20 66 6F 75 6E 64 0D 0A 09 63    (more) found...c
02F070:  61 6C 6C 09 6D 6F 76 66 63 62 09 09 3B 6D 6F 76    all.movfcb..;mov
02F080:  65 20 64 61 74 61 20 74 6F 20 66 63 62 0D 0A 09    e data to fcb...
02F090:  6C 64 61 09 6D 66 72 65 71 09 09 3B 74 68 65 20    lda.mfreq..;the 
02F0A0:  6F 72 69 67 69 6E 61 6C 20 64 69 73 6B 2D 64 65    original disk-de
02F0B0:  73 69 67 6E 61 74 6F 72 0D 0A 09 73 74 61 09 66    signator...sta.f
02F0C0:  63 62 09 09 3B 62 61 63 6B 20 69 6E 74 6F 20 66    cb..;back into f
02F0D0:  63 62 0D 0A 09 6C 64 61 09 6D 66 66 6C 67 31 09    cb...lda.mfflg1.
02F0E0:  09 3B 67 65 74 20 66 69 6C 65 2D 66 6C 61 67 0D    .;get file-flag.
02F0F0:  0A 09 69 6E 72 09 61 09 09 3B 69 6E 63 72 65 6D    ..inr.a..;increm
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:  65 6E 74 0D 0A 09 73 74 61 09 6D 66 66 6C 67 31    ent...sta.mfflg1
02F310:  09 09 3B 61 6E 64 20 73 74 6F 72 65 20 66 6F 72    ..;and store for
02F320:  20 6E 65 78 74 20 67 6F 2D 61 72 6F 75 6E 64 0D     next go-around.
02F330:  0A 09 6D 76 69 09 61 2C 30 09 09 3B 53 65 74 75    ..mvi.a,0..;Setu
02F340:  70 20 46 43 42 0D 0A 09 73 74 61 09 66 63 62 65    p FCB...sta.fcbe
02F350:  78 74 09 09 3B 63 6C 65 61 6E 20 75 70 20 46 43    xt..;clean up FC
02F360:  42 20 66 6F 72 20 4F 50 45 4E 20 65 74 63 0D 0A    B for OPEN etc..
02F370:  09 73 74 61 09 66 63 62 72 6E 6F 0D 0A 6D 66 66    .sta.fcbrno..mff
02F380:  69 78 31 3A 09 70 6F 70 09 68 09 09 3B 72 65 73    ix1:.pop.h..;res
02F390:  74 6F 72 65 20 72 65 67 69 73 74 65 72 73 0D 0A    tore registers..
02F3A0:  09 70 6F 70 09 64 0D 0A 09 70 6F 70 09 62 0D 0A    .pop.d...pop.b..
02F3B0:  09 72 65 74 09 09 09 3B 61 6E 64 20 72 65 74 75    .ret...;and retu
02F3C0:  72 6E 0D 0A 0D 0A 6D 66 66 69 78 32 3A 09 73 74    rn....mffix2:.st
02F3D0:  63 09 09 09 3B 73 65 74 20 63 61 72 72 79 0D 0A    c...;set carry..
02F3E0:  09 6A 6D 70 09 6D 66 66 69 78 31 09 09 3B 72 65    .jmp.mffix1..;re
02F3F0:  74 75 72 6E 20 77 69 74 68 20 43 41 52 52 59 20    turn with CARRY 
02F400:  73 65 74 0D 0A 0D 0A 3B 09 63 6F 70 79 20 64 69    set....;.copy di
02F410:  72 65 63 74 6F 72 79 20 65 6E 74 72 79 20 74 6F    rectory entry to
02F420:  20 46 43 42 0D 0A 3B 09 63 61 6C 6C 65 64 20 77     FCB..;.called w
02F430:  69 74 68 20 41 2F 20 65 6E 74 72 79 20 6E 75 6D    ith A/ entry num
02F440:  62 65 72 20 69 6E 20 64 69 72 65 63 74 6F 72 79    ber in directory
02F450:  20 28 30 2D 33 29 0D 0A 3B 09 09 20 20 20 20 64     (0-3)..;..    d
02F460:  69 72 65 63 74 6F 72 79 20 62 6C 6F 63 6B 20 69    irectory block i
02F470:  6E 20 44 4D 41 20 62 75 66 66 65 72 20 28 62 75    n DMA buffer (bu
02F480:  66 66 29 0D 0A 0D 0A 6D 6F 76 66 63 62 3A 09 61    ff)....movfcb:.a
02F490:  64 64 20 09 61 0D 0A 09 61 64 64 09 61 0D 0A 09    dd .a...add.a...
02F4A0:  61 64 64 20 09 61 0D 0A 09 61 64 64 09 61 0D 0A    add .a...add.a..
02F4B0:  09 61 64 64 09 61 09 09 3B 2A 20 33 32 0D 0A 09    .add.a..;* 32...
02F4C0:  6D 6F 76 09 63 2C 61 09 09 3B 20 63 6F 70 79 20    mov.c,a..; copy 
02F4D0:  6F 66 66 73 65 74 20 74 6F 20 62 63 0D 0A 09 6D    offset to bc...m
02F4E0:  76 69 09 62 2C 30 09 09 3B 20 28 68 69 67 68 20    vi.b,0..; (high 
02F4F0:  62 79 74 65 20 69 73 20 7A 65 72 6F 29 0D 0A 09    byte is zero)...
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:  6C 78 69 09 68 2C 62 75 66 66 09 09 3B 20 67 65    lxi.h,buff..; ge
02F710:  74 20 73 74 61 72 74 20 6F 66 20 64 69 73 6B 20    t start of disk 
02F720:  62 75 66 66 65 72 0D 0A 09 64 61 64 09 62 09 09    buffer...dad.b..
02F730:  3B 20 63 61 6C 63 75 6C 61 74 65 20 73 74 61 72    ; calculate star
02F740:  74 20 6F 66 20 64 69 72 65 63 74 6F 72 79 20 65    t of directory e
02F750:  6E 74 72 79 0D 0A 09 6C 78 69 09 64 2C 66 63 62    ntry...lxi.d,fcb
02F760:  0D 0A 09 6C 78 69 09 62 2C 31 32 0D 0A 09 63 61    ...lxi.b,12...ca
02F770:  6C 6C 09 6D 6F 76 65 72 0D 0A 09 72 65 74 0D 0A    ll.mover...ret..
02F780:  0D 0A 3B 09 44 61 74 61 20 73 74 6F 72 61 67 65    ..;.Data storage
02F790:  20 66 6F 72 20 4D 46 4E 41 4D 45 20 28 6D 75 6C     for MFNAME (mul
02F7A0:  74 69 2D 66 69 6C 65 20 61 63 63 65 73 73 29 0D    ti-file access).
02F7B0:  0A 6D 66 72 65 71 3A 09 44 53 09 31 32 09 09 3B    .mfreq:.DS.12..;
02F7C0:  52 65 71 75 65 73 74 65 64 20 6E 61 6D 65 0D 0A    Requested name..
02F7D0:  6D 66 66 6C 67 31 3A 09 44 42 09 30 09 09 3B 46    mfflg1:.DB.0..;F
02F7E0:  69 72 73 74 20 74 69 6D 65 20 74 68 72 75 20 66    irst time thru f
02F7F0:  6C 61 67 20 66 6F 72 20 4D 46 4E 41 4D 45 0D 0A    lag for MFNAME..
02F800:  6D 66 66 6C 67 32 3A 09 44 42 09 30 09 09 3B 44    mfflg2:.DB.0..;D
02F810:  6F 77 6E 20 63 6F 75 6E 74 65 72 20 66 6F 72 20    own counter for 
02F820:  4D 46 4E 41 4D 45 0D 0A 3B 0C 0D 0A 49 46 20 6C    MFNAME..;...IF l
02F830:  61 73 6D 0D 0A 09 4C 49 4E 4B 09 43 50 34 43 4D    asm...LINK.CP4CM
02F840:  44 0D 0A 45 4E 44 49 46 3B 6C 61 73 6D 0D 0A 00    D..ENDIF;lasm...
02F850:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F860:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F870:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F880:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F890:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F8A0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F8B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F8C0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F8D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F8E0:  E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F8F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F900:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
02F910:  28 00 00 00 02 09 4E E5 28 00 C1 02 00 00 00 02    (.....N.(.......
02F920:  28 00 C6 02 00 00 00 02 28 00 C2 02 00 00 00 02    (.......(.......
02F930:  28 00 C7 02 00 00 00 02 28 00 C3 02 00 00 00 02    (.......(.......
02F940:  28 00 C8 02 00 00 00 02 28 00 C4 02 00 00 00 02    (.......(.......
02F950:  28 00 C9 02 00 00 00 02 28 00 C5 02 00 00 00 02    (.......(.......
02F960:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F970:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F980:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F990:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F9A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F9B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F9C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F9D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F9E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F9F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02FA00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FA10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FA20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FA30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FA40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FA50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FA60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FA70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FA80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FA90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FAA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FAB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FAC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FAD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FAE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FAF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FB00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FB10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FB20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FB30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FB40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FB50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FB60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FB70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FB80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FB90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FBA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FBB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FBC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FBD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FBE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FBF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FC00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FC10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FC20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FC30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FC40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FC50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FC60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FC70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FC80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FC90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FCA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FCB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FCC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FCD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FCE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FCF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FD00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FD10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FD20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FD30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FD40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FD50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FD60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FD70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FD80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FD90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FDA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FDB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FDC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FDD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FDE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FDF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FE00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FE10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FE20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FE30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FE40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FE50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FE60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FE70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FE80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FE90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FEA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FEB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FEC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FEE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FEF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FF00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FF10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FF20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FF30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FF40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FF50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FF60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FF70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FF80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FF90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FFA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FFB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FFC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FFD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FFE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02FFF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0300A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0300B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0300C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0300D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0300E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0300F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0301A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0301B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0301C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0301D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0301E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0301F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0302A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0302B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0302C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0302D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0302E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0302F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0303A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0303B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0303C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0303D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0303E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0303F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0304A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0304B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0304C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0304D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0304E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0304F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0305A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0305B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0305C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0305D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0305E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0305F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0306A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0306B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0306C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0306D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0306E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0306F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0307A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0307B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0307C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0307D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0307E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0307F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0308A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0308B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0308C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0308D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0308E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0308F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0309A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0309B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0309C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0309D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0309E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0309F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030A00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030A10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030A20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030A30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030A40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030A50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030A60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030A70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030A80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030A90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030AA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030AB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030AC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030AD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030AE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030AF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030B00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030B10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030B20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030B30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030B40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030B50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030B60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030B70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030B80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030B90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030BA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030BB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030BC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030BD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030BE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030BF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030C00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
030C10:  29 00 00 00 02 09 4E E5 29 00 C1 02 00 00 00 02    ).....N.).......
030C20:  29 00 C6 02 00 00 00 02 29 00 C2 02 00 00 00 02    ).......).......
030C30:  29 00 C7 02 00 00 00 02 29 00 C3 02 00 00 00 02    ).......).......
030C40:  29 00 C8 02 00 00 00 02 29 00 C4 02 00 00 00 02    ).......).......
030C50:  29 00 C9 02 00 00 00 02 29 00 C5 02 00 00 00 02    ).......).......
030C60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
030C70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
030C80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
030C90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
030CA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
030CB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
030CC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
030CD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
030CE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
030CF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
030D00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030D10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030D20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030D30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030D40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030D50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030D60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030D70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030D80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030D90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030DA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030DB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030DC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030DD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030DE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030DF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030E00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030E10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030E20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030E30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030E40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030E50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030E60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030E70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030E80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030E90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030EA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030EB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030EC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030ED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030EE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030EF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030F00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030F10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030F20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030F30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030F40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030F50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030F60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030F70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030F80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030F90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030FA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030FB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030FC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030FD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030FE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
030FF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0310A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0310B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0310C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0310D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0310E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0310F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0311A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0311B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0311C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0311D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0311E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0311F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0312A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0312B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0312C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0312D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0312E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0312F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0313A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0313B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0313C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0313D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0313E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0313F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0314A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0314B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0314C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0314D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0314E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0314F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0315A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0315B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0315C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0315D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0315E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0315F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0316A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0316B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0316C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0316D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0316E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0316F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0317A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0317B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0317C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0317D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0317E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0317F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0318A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0318B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0318C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0318D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0318E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0318F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0319A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0319B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0319C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0319D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0319E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0319F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031A00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031A10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031A20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031A30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031A40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031A50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031A60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031A70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031A80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031A90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031AA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031AB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031AC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031AD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031AE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031AF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031B00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031B10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031B20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031B30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031B40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031B50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031B60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031B70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031B80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031B90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031BA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031BB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031BC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031BD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031BE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031BF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031C00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031C10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031C20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031C30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031C40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031C50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031C60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031C70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031C80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031C90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031CA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031CB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031CC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031CD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031CE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031CF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031D00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031D10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031D20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031D30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031D40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031D50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031D60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031D70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031D80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031D90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031DA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031DB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031DC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031DD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031DE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031DF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031E00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031E10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031E20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031E30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031E40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031E50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031E60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031E70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031E80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031E90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031EA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031EB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031EC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031ED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031EE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
031EF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
RESULT OF SEARCH :
PRO=97   CHEA=0   COD=33   MUSI=0   COP=29   GRA=79   WRIT=44   198=71   199=0   STARTER=1   KBI=0   CAAV=0   L.TOURNIER=0  
EXTENDED CPC DSK File    CPC EDSK EDITR*  NCP4CMD  ASM  CP4CMD  ASM8CP4CPM  ASM4
CP4DEF  ASM !"#$%&'CP4KER  ASM ()*+CP4SYS  ASM,-./0123456789CP4SYS  ASMABCDEFGHI
JKCP4SYS  ASMLMNOPQRSTUVWXYZCP4SYS  ASMabcdefghijkCP4SYS  ASMlmnopqrstuvwxyzCP4S
YS  ASMCP4SYS  ASMCP4TT   ASMCP4TT   ASM4£CP4TYP  ASMDCP4WLD  ASM , and many   o
thers.      This file provides a user oriented way of parsing commands.  It is s
imilar to that of the COMND JSYS in TOPS-20.     revision history (latest first)
   edit 5 6-Feb-85 by Charles Carvalho  Make ffussy a runtime (rather than assem
bly-time) switch, to  eliminate conditional assembly in system-independent modul
e.  Don't allow %()/ in filenames if ffussy set my CP/M manual  disallows those,
 too.     edit 4 13-Jan-85 by Vanya J.Cooper Pima Commun. College Tel 602-884-68
09    pcc0062-jan-85VJCmodulescp4cmd,cp4utl  Problems with "" in filespecs.  On 
reparse, may cause action  flag to be reset at wrong point, requiring multiple C
R's  to terminate the line or other weird stuff.  Also need to  check flag and c
omplain if wild-cards illegal.    pcc0072-Jan-85vjcmodulescp4def,cp4cmd  Cmifil 
is too fussy about what characters to accept in a  filespec.  My CP/M manual say
s any printable character is ok  except .,*, and lower case.  In practice, even 
those work  sometimes.  Kermit itself uses '&' if file warning is on,  and then 
won't let you reference the file.  Allow all  printable characters except those 
above.  Add conditional  ffussy, so that if not ffussy, all special characters w
ill be  allowed, just convert lower to upper-case.     edit 3 July 8, 1984 (CJC)
  integrate Toad Hall changes for LASM compatibility CP4CPM is linked  by CP4WLD
, and links CP4UTL.     edit 2 June 5, 1984 (CJC)  formatting and documentation 
delete unnecessary code at cminb7 add  module version string.     edit 1 May, 19
84 (CJC)  extracted from CPMBASE.M80 version 3.9 modifications are described in 
 the accompanying .UPD file.    cmdverdb'CP4CMD.ASM (5)  6-Feb-85$' name, edit n
umber, date    This routine prints the prompt in DE and specifies the reparse  a
ddress.  called by  kermit    promptpophGet the return address.  pushhPut it on 
the stack again.  shldcmrprsSave it as the address to go to on repars CP4CMD.ASM
  KERMIT - (Celtic for "FREE")    This is the CP/M-80 implementation of the Colu
mbia University  KERMIT file transfer protocol.    Version 4.0    Copyright June
 1981,1982,1983,1984,1985  Columbia University     Originally written by Bill Ca
tchings of the Columbia University Center for   Computing Activities, 612 W. 115
th St., New York, NY 10025.     Contributions by Frank da Cruz, Daphne Tzoar, Be
rnie Eiben,   Bruce Tanner, Nick Bush, Greg Small, Kimmo Laaksonen, Jeff Damens 
 Ne.  lxih,0Clear out hl pair.  dadspGet the present stack pointer.  shldcmostpS
ave for later restoral.  xchgSave the pointer to the prompt.  shldcmprmp  xchg  
lxih,cmdbuf  shldcmcptrInitialize the command pointer.  shldcmdptr  xraa  stacma
flgZero the flags.  stacmccnt  mvia,0FFHTry it this way (Daphne.)  stacmsflg  ca
llprcrlfPrint a CR/LF Toad Hall  jmpprprmpPrint the prompt.  Toad Hall    This a
ddress is jumped to on reparse.  here from  co.  mvic,conout  mvie,bellGet a bel
l.  callbdos  xraa  stacmaflgTurn off the action flag.  lhldcmcptrMove the point
er to before the escape.  dcxh  shldcmcptr  shldcmdptr  lxih,cmccntGet the char 
count.  dcrmDecrement it by one.  jmpcmtxt1Try again.    cmtxt2cpi''Is it a ques
tion mark  jzcmtxt3If so put it in the text.  cpiffIs it a formfeed  czclrtopIf 
so blank the screen.  mova,bReturn the count.  lhldcmptabReturn updated pointer 
inmcfrm, cmkeyw, cmifil, cminbf    reparslhldcmostpGet the old stack pointer.  s
phlMake it the present one.  lxih,cmdbuf  shldcmdptr  mvia,0FFHTry it this way (
Daphne.)  stacmsflg  lhldcmrprsGet the reparse address.  pchlGo there.    This a
ddress can be jumped to on a parsing error.  here from  cmkeyw, cminbf    prserr
lhldcmostpGet the old stack pointer.  sphlMake it the present one.  lxih,cmdbuf 
 shldcmcptrInitialize the command pointer.  shldcmdptr   HL.  xchg  jmprskpRetur
n success.    cmtxt3lxih,cmaflgPoint to the action flag.  mvim,0Set it to zero. 
 cmtxt5inrbIncrement the count.  lhldcmptabGet the pointer.  movm,aPut the char 
in the array.  inxh  shldcmptabSave the updated pointer.  jmpcmtxt1Get another c
har.      This routine gets a confirm.  called by comnd    cmcfrmcallcmgtchGet a
 char.  oraaIs it negative (a terminatora space or  a tab will not be returned h
ere as they  wixraa  stacmaflgZero the flags.  stacmccnt  mvia,0FFHTry it this w
ay (Daphne.)  stacmsflg  callprcrlfPrint a CR/LF  Toad Hall  callprprmpPrint the
 prompt  Toad Hall  * Instead return to before the prompt call.  lhldcmrprs  pch
l    This routine parses the specified function in A.  Any additional  informati
on is in DE and HL.  Returns +1 on success  +4 on failure (assumes a JMP follows
 the call)  called by  log, setcom, read, send, xmit, dir, era, keycmd, cfmcmd  
ll be seen as leading white space.)  rpIf not, return failure.  ani7FHTurn off t
he minus bit.  cpiescIs it an escape  jnzcmcfr2  mvic,conout  mvie,bellGet a bel
l.  callbdos  xraa  stacmaflgTurn off the action flag.  lhldcmcptrMove the point
er to before the escape.  dcxh  shldcmcptr  shldcmdptr  lxih,cmccntGet the char 
count.  dcrmDecrement it by one.  jmpcmcfrmTry again.    cmcfr2cpi''Curious  jnz
cmcfr3  lxid,cmin00Print something usef  comndstacmstatSave what we are presentl
y parsing.  callcminbfGet chars until an action or a erase char.  cpicmcfmParse 
a confirm  jzcmcfrmGo get one.  cpicmkeyParse a keyword  jzcmkeywTry and get one
.  cpicmifiParse an input file spec  jzcmifilGo get one.  cpicmifinInput file-sp
ec silent  jzcmifildo as he wishes  cpicmofiOutput file spec  jzcmofilGo get one
.  cpicmtxtParse arbitrary text  jzcmtextGo do it.  lxid,cmer00"Unrecul.  callpr
tstr  callprcrlfPrint a crlf.  Toad Hall   callprprmpReprint the prompt  Toad Ha
ll  lhldcmdptrGet the pointer into the buffer.  mvia,'$'Put a $ there for printi
ng.  movm,a  lhldcmcptr  dcxhDecrement and save the buffer pointer.  shldcmcptr 
 lxid,cmdbuf  callprtstr  xraaTurn off the action flag.  stacmaflg  jmpreparsRep
arse everything.    cmcfr3cpiffIs it a form feed  czclrtopIf so blank the screen
.  jmprskp    This routine parognized COMND call"  callprtstr  ret    This routi
ne parses arbitrary text up to a CR.  Accepts DEaddress to put text  Returns in 
Anumber of chars in text (may be 0)    DEupdated pointer  called by comnd    cmt
extxchgPut the pointer to the dest in HL.  shldcmptabSave the pointer.  mvib,0In
it the char count  cmtxt1callcmgtchGet a char.  oraaTerminator  jpcmtxt5No, put 
in user space.  ani7FHTurn off minus bit.  cpiescAn escape  jnzcmtxt2N  Nses a k
eyword from the table pointed  to in DE.  The format of the table is as follows 
   addrdbnWhere n is the # of entries in the table.  dbmM is the size of the key
word.  db'string$' Where string is the keyword.  dba,bWhere a & b are pieces of 
data  to be returned.  (Must be two of them.)    The keywords must be in alphabe
tical order.  **** Note  The data value a is returned in registers A and E.  The
  ****data value b is returned in register D.  This allows the t jzcmky34  inxh 
 xchg  movm,aMove it into the buffer.  inxh  xchg  ldacmccntIncrement the char c
ount.  inra  stacmccnt  jmpcmky33    cmky34ldacmccntGet the character count.  in
raIncrement and save it.  stacmccnt  xchgPut the command buffer pointer in HL.  
mvia,' 'Get a blank.  movm,aPut it in the command buffer.  inxhIncrement the poi
nter  shldcmcptrSave the updated pointer.  shldcmdptr  poph  pushh  xchg  callpr
tstrPrint the rest of wo data  bytes to be stored as  dwxxx  and result in a cor
rectly formatted 16-bit value in register pair  DE.  called by comnd    cmkeywsh
ldcmhlpSave the help.  xchgGet the address of the table.  shldcmptabSave the beg
inning of keyword tab for ''.  movb,mGet the number of entries in the table.  in
xh  shldcmkptr  lhldcmdptrSave the command pointer.  shldcmsptr  cmkey2 mova,bGe
t the number of entries left.  oraaAny left  rzIf not we failed.  lhldthe keywor
d.  mvic,conout  mvie,' '  callbdosPrint a blank.  poph  popb  popd  jmpcmky37  
  cmky35pushh  pushd  callcmambg   jmpcmky36  lxid,cmer01  callprtstrSay its amb
iguous.  jmpprserrGive up.    cmky36popd  poph  cmky37inreAdd one incase it is n
egative.  mvid,0  daddIncrement past the keyword.  inxhPast the $.  move,mGet th
e data.  inxh  movd,m  mova,e  jmprskp    cmkey4cpi'a'Is it less than a  jmcmky4
1If so don't capcmkptr  move,mGet the length of the keyword.  inxh  cmkey3dcreDe
crement the number of chars left.  mova,e  cpi0FFHHave we passed the end  jmcmke
y5If so go to the next.  callcmgtchGet a char.  oraaIs it a terminator  jpcmkey4
If positive, it is not.  ani7FHTurn off the minus bit.  cpi''  jnzcmky31  xraa  
stacmaflgTurn off the action flag.  lxih,cmccntDecrement the char count.  dcrm  
* Must go through the keyword table and print them.  lhldcmitalize it.  cpi'z'+1
Is it more than z  jpcmky41If so don't capitalize it.  ani137OCapitalize it.  cm
ky41movd,mGet the next char of the keyword.  inxh  cmpdMatch  jzcmkey3If so get 
the next letter.    cmkey5mvid,0  mova,eGet the number of chars left.  oraaIs it
 negative  jpcmky51  mvid,0FFHIf so, sign extend.  cmky51daddIncrement past the 
keyword.  lxid,0003HPlus the $ and data.  dadd  shldcmkptr  dcrbDecrement the nu
mber of entrieshlpFor now print the help text.  xchg  callprtstr  callprcrlfPrin
t a crlf  Toad Hall  callprprmpReprint the prompt  Toad Hall  lhldcmdptrGet the 
pointer into the buffer.  mvia,'$'Put a $ there for printing.  movm,a  lhldcmcpt
r  dcxhDecrement and save the buffer pointer.  shldcmcptr  lxid,cmdbuf  callprts
tr  jmpreparsReparse everything.    cmky31cpiescIs it an escape  jnzcmky35  xraa
  stacmaflgTurn off the action flag.  pushd  pushb  push left.  lhldcmsptrGet th
e old cmdptr.  shldcmdptrRestore it.  * check so we don't pass it.  jmpcmkey2Go 
check the next keyword.    Test keyword for ambiguity.  returns nonskip if ambig
uous, skip if OK.  called by cmkeyw    cmambgdcrbDecrement the number of entries
 left.  rmIf none left then it is not ambiguous.  inreThis is off by oneadjust. 
 movc,eSave the char count.  mova,e  oraaAny chars left  rzNo, it can't be ambig
uous.  mvid,0  daddIh  callcmambg   jmpcmky32Not ambiguous.  mvic,conout  mvie,b
ell  callbdosRing the bell.  lhldcmcptrMove the pointer to before the escape.  d
cxh  shldcmcptr  shldcmdptr  lxih,cmccntGet the char count.  dcrmDecrement it by
 one.  poph  popb  popd  inreIncrement the left to parse char count.  jmpcmkey3 
   cmky32lhldcmcptrPointer into buffer.  dcxhBackup to the escape.  xchg  poph  
pushh  cmky33mova,mGet the next char.  cpi'$'Finished   Nncrement past the keywo
rd.  mvie,3Plus the $ and data.  dadd  movb,mGet the length of the keyword.  inx
h  xchg  lhldcmkptrGet pointer to keyword entry.  mova,mGet the length of the ke
yword.  subcSubtract how many left.  movc,aSave the count.  cmpb  jzcmamb0  rpIf
 larger than the new word then not amb.  cmamb0lhldcmsptrGet the pointer to what
 parsed.  cmamb1dcrcDecrement the count.  jmrskpIf we are done then it is ambigu
ous.  xchgExchange the clhldcmfcb2Fill the rest with CP/M wildcards.  cmfrc1cpi1
1Done  jpcmfrc2Yes.  mvim,''  inxh  inra  jmpcmfrc1    cmfrc2mvic,sfirstFind fir
st matching file  lhldcmfcb  xchg  callbdos  cpi0FFH  jzcmfrc9No, lose.  lxih,fc
bblkCopy first file spec.  callfspcop  lxih,fcbblk+10HGet another copy (in case 
not ambiguous).  callfspcop  mvic,snextMore matching specs  lhldcmfcb  xchg  cal
lbdos  cpi0FFH  jzcmfrc3Only one.  lxih,fcbblk+10HCopy spointers.  movb,mGet the
 next char of the keyword  inxh  xchgExchange the pointers.  mova,mGet the next 
parsed char.  inxh  cpi'a'Is it less than a  jmcmamb2If so don't capitalize it. 
 cpi'z'+1Is it more than z  jpcmamb2If so don't capitalize it.  ani137O  cmamb2c
mpbAre they equal  rnzIf not then its not ambiguous.  jmpcmamb1Check the next ch
ar.    cmofil - parse output filespec  cmifil - parse input filespec  here from 
comnd    cmofilmvecond file spec.  callfspcop  cmfrc3lxid,fcbblkStart comparing 
file names.  lxih,fcbblk+10H  ldatemp1Bypass characters typed.  cpi9Past '.'  jm
cmfrc4No.  dcraYes, don't count point.  cmfrc4mvic,0  cmfrl1cmpcBypassed  jzcmfr
l2Yes.  inxd  inxh  inrc  jmpcmfrl1Repeat.    cmfrl2mova,cGet file name characte
rs processed.  cpi11All done  jzcmfrc5Yes.  cpi8End of file name  jnzcmfrl3No.  
ldatemp1Exactly at point  cpi9  jzcia,0Don't allow wildcards.  jmpcmifilFor now,
 the same as CMIFI.  cmifilstacmfwldSet wildcard flag  xchgGet the fcb address. 
 shldcmfcbSave it.  mvie,0Initialize char count.  mvim,0Set the drive to default
 to current.  inxh  shldcmfcb2  xraaInitialize counter.  cmifi0mvim,' 'Blank the
 FCB.  inxh  inra  cpi0CHTwelve  jmcmifi0  cmifi1callcmgtchGet another char.  or
aaIs it an action character  jpcmifi2  ani7FHTurn off the action mfrl3Yes, don't
 output a second point.  mvia,'.'Output separator.  callcmfput  cmfrl3ldaxdGet a
 character from first file spec.  inxd  movb,mGet from second file spec.  inxh  
cmpbCompare.  jnzcmfrc5Ambiguous.  inrcSame, count.  cpi' 'Blank  jzcmfrl2Yes, d
on't output.  callcmfputPut character into buffer.  jmpcmfrl2Repeat.    cmfrc5mo
va,cGet count of characters processed.  statemp1Save it.  mvia,'$'Get terminator
.  callcmfputPubit.  cpi''A question mark  jnzcmif12  ldacmfwldpcc006 Wildcards 
allowed  oraapcc006  jzcmif11pcc006 complain if not  lhldcmdptrjd Increment buff
er pointer  inxhjd that was decremented in cmgtch  shldcmdptrjd since we want th
is chr  ldacmcptrpcc006 get lsb of real input pointer  cmplpcc006 is this the la
st chr input  jnzcmif1apcc006 no, don't reset action flag  xraapcc006 yes, reset
 action flag  stacmaflgpcc006  cmif1at it into buffer.  lhldcmdptrOutput recogni
zed characters.  xchg  mvic,prstr  callbdos  lhldcmcptrRemove terminator from bu
ffer.  dcxh  shldcmcptr  lxih,cmccnt  dcrm  ldatemp1Characters processed.  cpi11
Complete file name.  jzreparsYes, don't beep.    cmfrc9mvic,conout  mvie,bell  c
allbdosRing the bell.  jmprepars    Continue file spec parsing.    cmif13mova,eI
t must be a terminator.  oraaTest the length of the file name.  jzcmifi9If zerom
via,''pcc006 get it back in A  jmpcmifi8Treat like any other character    cmif12
cpiescAn escape  jnzcmif13  Try to recognize file-spec a'la TOPS-20  xraa  stacm
aflgTurn off the action flag.  lhldcmcptrMove the pointer to before the escape. 
 dcxh  shldcmcptr  shldcmdptr  lxih,cmccntGet the char count.  dcrmDecrement it 
by one.  mova,eSave character count up to now.  statemp1  cpi9Past '.'  jmcmfrec
No.  dcraYes, don't count point.  cmfre  N complain.  cpi0DH  jpcmifi9If too lon
g complain.  jmprskpOtherwise we have succeeded.    cmifi2cpi'.'  jnzcmifi3  inr
e  mova,e  cpi1HAny chars yet  jzcmifi9No, give error.  cpi0AHTenth char  jpcmif
i9Past it, give an error.  mvic,9H  mvib,0  lhldcmfcb  dadbPoint to file type fi
eld.  shldcmfcb2  mvie,9HSay we've gotten nine.  jmpcmifi1Get the next char.    
cmifi3cpi''  jnzcmifi4  inre  mova,e  cpi2HIs it in the right place for a case i
ts ok  jmcmifi8pcc007 (DEL never gets here)  cpi'z'+1pcc007 only convert letters
  jpcmifi8pcc007  ani137OCapitalize.  cmifi8lhldcmfcb2Get the pointer into the F
CB.  movm,aPut the char there.  inxh  shldcmfcb2  inre  jmpcmifi1    cmifi9ldacm
stat  cpicmifin"silent"  jzrYes,let him go w/o check  lxid,cmer02  cmif10mvic,pr
str  callbdos  ret    cmif11lxid,cmer03Complain about wildcards.  jmpcmif10     
   copy filename from buffe drive  jnzcmifi9If not, complain.  lhldcmfcb2  dcxhP
oint to previous character.  mova,mGet the drive name.  sui''Get the drive numbe
r.  shldcmfcb2Save pointer to beginning of name field.  dcxhPoint to drive numbe
r.  movm,aPut it in the fcb.  mvie,0Start character count over.  jmpcmifi1    cm
ifi4cpi'*'  jnzcmifi7  ldacmfwldWildcards allowed  cpi0  jzcmif11No,complain  mo
va,e  cpi8HIs this in the name or type field  jzcmifi9If its wr  called with HL 
 destination, A  position (0-3) in buffer  called by cmifil    fspcoppushpswSave
 A.  lxid,buffGet the right offset in the buffer.  rlc  rlc  rlc  rlc  rlc  add 
e  inraBypass drive spec.  move,a  mvib,11Copy file name.  fspcp1ldaxd  inxd  mo
vm,a  inxh  dcrb  jnzfspcp1  poppswRestore A.  ret    append character in A to c
ommand buffer  called by cmifil    cmfputpushhSave H.  lhldcmcptrGet buffer poin
ter.  movm,aStorehere the dot should be give up.  jpcmifi5Type.  mvib,8HEight ch
ars.  jmpcmifi6    cmifi5mvib,0CHThree chars.  cmifi6lhldcmfcb2Get a pointer int
o the FCB.  mvia,''  movm,aPut a question mark in.  inxh  shldcmfcb2  inre  mova
,e  cmpb  jmcmifi6Go fill in another.  jmpcmifi1Get the next char.    cmifi7cpi'
!'pcc007 control chr or space  jmcmifi9pcc007 yes, illegal  movh,a5 stash input 
char for a bit  ldaffussy5  while we check the  in buffer.  inxh  shldcmcptr  lx
ih,cmccntCount it.  inrm  pophRestore H.  ret    Read characters from the comman
d buffer.  called by  cmtext, cmcfrm, cmkeyw, cmifil    cmgtchpushh  pushb  cmgt
c1ldacmaflg  oraaIs it set.  czcminbfIf the action char flag is not set get more
.  lhldcmdptrGet a pointer into the buffer.  mova,mGet the next char.  inxh  shl
dcmdptr  cpi' 'Is it a space  jzcmgtc2  cpitabOr a tab  jnzcmgtc3  cmgtc2ldacmsf
lgfussy flag  oraa5 set the flags accordingly  mova,h5 restore the input charact
er  jzcmif7a5 if ffussy0, allow .,*  5 So far, we've eliminated "action characte
rs" (including question),  5 period, colon, asterisk, control characters, and sp
ace.  5 That leaves us %(),/ to check for.  cpi'%'5  jzcmifi95  cpi'('5  jzcmifi
95  cpi')'5  jzcmifi95  cpi','pcc007 weed out comma  jzcmifi9pcc007  cpi'/'5  jz
cmGet the space flag.  oraaWas the last char a space  jnzcmgtc1Yes, get another 
char.  mvia,0FFHSet the space flag.  stacmsflg  mvia,' '  popb  poph  jmpcmgtc5 
   cmgtc3pushpsw  xraa  stacmsflgZero the space flag.  poppsw  popb  poph  cpies
c  jzcmgtc5  cpi''Is the user curious  jzcmgtc4  cpicr  jzcmgtc4  cpilf  jzcmgtc
4  cpiff  rnzNot an action char, just return.  cmgtc4pushh  lhldcmdptr  dcxh  sh
ldcmdptr  poph  cmgtc5ori80Hifi95  cpi'9'+1pcc007 anything else 21H-39H is ok  j
mcmifi8pcc007 except '*' never gets here  cpi''pcc007 all of 3AH-3FH is illegal 
 jmcmifi9pcc007  cpi''pcc007  also illegal  jmcmifi8pcc007  cpi''+1pcc007  jmcmi
fi9pcc007  cpi''5  jzcmifi95 (If I was doing CP/M, I would have  cpi''5  just el
iminated all them funny chars  jzcmifi95  instead of a random selection)  cmif7a
5  cpi'a'pcc007 if not lower  NMake the char negative to indicate it is  reta te
rminator.    Read characters from console into command buffer, processing  editi
ng characters (H, M, J, L, U, X, , del).  called by comnd, cmgtch    cminbfpushp
sw  pushd  pushh  ldacmaflgIs the action char flag set  oraa  jnzcminb9If so get
 no more chars.  cminb1lxih,cmccntIncrement the char count.  inrm  mvic,coninGet
 a char.  callbdos  lhldcmcptrGet the pointer into the buffer.  movm,aPut it  CP
4CPM.ASM  KERMIT - (Celtic for "FREE")    This is the CP/M-80 implementation of 
the Columbia University  KERMIT file transfer protocol.    Version 4.0    Copyri
ght June 1981,1982,1983,1984  Columbia University     Originally written by Bill
 Catchings of the Columbia University Center for   Computing Activities, 612 W. 
115th St., New York, NY 10025.     Contributions by Frank da Cruz, Daphne Tzoar,
 Bernie Eiben,   Bruce Tanner, Nick Bush, Greg Small, Kimmo Laaksonen, Jeff Dame
ns, andin the buffer.  inxh  shldcmcptr  cpi25OIs it a U  jzcmnb12Yes.  cpi30OIs
 it a X  jnzcminb2  cmnb12callclrlinClear the line.  callprprmpPrint the prompt 
 Toad Hall  lxih,cmdbuf  shldcmcptrReset the point to the start.  lxih,cmccntZer
o the count.  mvim,0  jmpreparsGo start over.    cminb2cpi10OBackspace  jzcminb3
  cpidelor Delete  jnzcminb4  calldelchrPrint the delete string.  cminb3ldacmccn
tDecrement the char count by two.   many   others.    This file duplicates the C
P/M DIR and ERA functions so we don't have  to exit.     revision history   edit
 3 July 8, 1984 (CJC)  Merge modifications from Toad Hall support LASM (linked b
y CP4TT,  links to CP4WLD), use prcrlf where appropriate.     edit 2 June 5, 198
4 (CJC)  documentation and formatting delete unused code (dir13) add module  ver
sion string.     edit 1 May, 1984 (CJC)  extracted from CPMBASE.M80 version 3.9 
modifications are described in  thdcra  dcra  oraaHave we gone too far  jpcmnb32
If not proceed.  mvic,conoutRing the bell.  mvie,bell  callbdos  jmpcmnb12Go rep
rint prompt and reparse.    cmnb32stacmccntSave the new char count.  callclrspcE
rase the character.  lhldcmcptrGet the pointer into the buffer.  dcxhBack up in 
the buffer.  dcxh  shldcmcptr  jmpreparsGo reparse everything.    cminb4cpi''Is 
it a question mark.  jzcminb6  cpiescIs it an escape  jzcminb6  cpicre accompany
ing .UPD file.    cpmverdb'CP4CPM.ASM (3)  8-Jul-84$' name, edit number, date   
 nplEQU04HNumber of names per line for dir command.    This is the DIR command. 
 Display the name and size of all files  matching the filespec.  here from kermi
t    Note This is abstracted from Keith Peterson's DIRF.ASM  directory print fun
ction.  Thanks again Keith.      dirlxid,fcbWhere to put the data, if any.  mvia
,cmifin  callcomndParse a full or piece of file-spec   jmpdiIs it a carriage ret
urn  jzcminb5  cpilfIs it a line feed  jzcminb5  cpiffIs it a formfeed  jnzcminb
1no - just store it and get another character.  callclrtop  cminb5ldacmccntHave 
we parsed any chars yet  cpi1  jzprserrIf not, just start over.  cminb6mvia,0FFH
Set the action flag.  stacmaflg  jmpcminb9    cminb9poph  popd  poppsw  ret    L
ittle utility to print the prompt.  (We do a LOT of these.)  Toad Hall  Enters w
ith nothing.  Destroys HL r2Didn't get a FULL file-spec  jmpdir4lets do it      
Make FCB all '' to match any file  dir2ldafcb  cpi' 'CMIFIN leaves that as ' '  
jnzdir2ahe typed at least x  xraa  stafcbdefault drive  dir2alxih,fcb+1  mvib,11
FN+FT count.    dir3mvim,''Store ''s in FCB.  inxh  dcrb  jnzdir3  Print signon 
message and drive name  dir4ldafcb  oraaif not zero, get default  jnzdir4a  ldac
urdskget default  dir4aadi'A'-1Asciize it  stadnam14Save(and I suppose B and DE 
and A).    prprmplhldcmprmpGet the prompt.  xchg  callprtstr  ret    IFlasm  LIN
KCP4UTL  ENDIFlasm  Toad Hall    N it in message.  callprcrlf  lxid,inms14Point 
to message  callprtstr    Initialize number of names per line counter  mvia,nplN
r. names per line.  stannamsInit counter.    calldir26Get disk parameters  dir5c
allmfnameget some names  jncdir6got one  jmpdir17got none - do summary    dir6Ch
eck for console break  mvic,constaCk status of kbd.  callbdos  oraaAny key press
ed  jzdir6anope, keep going  mvic,conin  callbdosgobble key  jmpdir17allprtstr  
jmpdir16all done    Compute the size of the file    dir25mvic,cflszget file-size
  lxid,fcb  callbdos  ldafcbrnoshift least sign. part  lxib,0init bc  movl,a  an
i7  jzdir250even K  lxib,1save for later  dir250pushbsave 0 or 1 to add to size 
 mvib,3shift 3 bits  dir25axraaclear sign  ldafcbrno+1get most sig byte  rarshif
t right  stafcbrno+1put back  ldafcbrnoget least sig part  rar  stafcbrno  dcrbl
oop 3 times  jnzand print summary only    Print an entry  dir6alxih,fcb+1point t
o Filename  mvib,8File name length.  calldir11Type filename.  mvia,'.'Period aft
er FN.  calldir10  mvib,3 Get the filetype.  calldir11  calldir25print size  lxi
h,nnams Point to names counter.  dcrm One less on this line.  pushpsw  cnzdir7 N
o cr-lf needed, do fence.  poppsw  czdir12 Cr-lf needed.  jmpdir5    Print space
, fence character, then space  dir7calldir9  mvia,'' Fendir25a  movl,asize in HL
  ldafcbrno+1  movh,a  popbget 0 or 1  dadbround up to KB used  ldabmaskget (sec
tors/block)-1  rrc  rrcget (K/block)-1  rrc  ani1FH  movc,a  dadbadd (K/block)-1
 to size to round up  cmamake a mask  analtruncate after rounding up  movl,a  pu
shh  lxib,-10subtract 10  dadb  jcdir25d 10  calldir8 print a leading space  jmp
dir25e    dir25dpophget size again  pushh  lxib,-100subtract 100  dadb  jcdce ch
aracter.  calldir10  jmpdir9     dir8 - Print two spaces   dir9 - Print one spac
e   dir10 - Type char in A register  dir8calldir9  dir9mvia,' '  dir10pushb  pus
hd  pushh  move,a Char to E for CP/M.  mvic,conoutWrite char to console function
.  callbdos  poph  pop d  popb  ret    Type (B) characters from memory (HL)  dir
11mova,m  ani7FH Remove CP/M 2.x attributes.  calldir10  inxh  dcrb  jnzdir11  r
et    CR-LF routine. HLNNAMS upon entry  dir12pir25e 100  calldir9 print another
 leading space  dir25ecalldir9a space  pophget size back  callnout..go print it 
 mvia,'k'..and follow with K size  calldir10  ret    dir26mvic,gtdpar current DI
SK PARAMETER BLOCK  callbdos  inxh  inxh  mova,mGet Block Shift Factor  stabshif
tf  inxhBump to Block Mask  mova,mget it  stabmask  inxh  inxh  move,mGet Max Bl
ock number  inxh  movd,m  xchg  shldbmaxPut it away  ret    ERA commandushb  pus
hd  pushh  callprcrlfPrint CR/LF Toad Hall  poph(did use call to dir10, but sloo
ow)  popd  popb  mvim,npl Number of names per line.  ret    Exit - All done, ret
urn via jmp (as for all main commands)  dir16callprcrlf  ldacurdsk  dcrarelative
 to 0  move,a  mvic,logdsk  callbdosback to "logged in" disk  jmpkermit ...and r
eturn to kermit.      Determines free space remaining    dir17xraa  stamfflg1cle
an up MFNAME  stamfflg2  ldafcb g - erase a CP/M file  here from kermit    eramv
ia,cmifiParse a file-spec  lxid,fcbinto FCB  callcomnd   jmpkermitbad parse  lxi
d,fcb  mvic,sfirstcheck if valid  callbdos  inra0 if FILE not found  jnzera1foun
d at least one  lxid,erms15"unable to find file"  callprtstr  jmpkermit    era1l
xid,fcb  mvic,delf  callbdos  lxid,inms18" File(s) erased"  callprtstr  jmpkermi
t    IF lasm  LINKCP4WLD  ENDIFlasm  Toad Hall  et drive number from FCB  oraa  
jzdir18 default  dcra no, make requested drive current drive.  move,a  mvic,logd
sk  callbdos  dir18callsysspc get space available for current drive  pushh  lxid
,inms15"Drive "  callprtstr  ldafcbIf no drive, get  oraalogged in drive  jnzdir
24  mvic,rddrv  callbdos  inra  dir24adi'A'-1  stainms16  lxi d,inms16"x has "  
call prtstr  pophGet number of bytes available  callnout  lxid,inms17"K bytes fr
ee"  c  Nomments around  a little.     edit 1 May, 1984 (CJC)  extracted from CP
MBASE.M80 version 3.9 modifications are described  in the accompanying .UPD file
.      Symbolic Definitions for some ASCII characters    sohEQU01OASCII SOH (Con
trol-A)  ctrlcEQU03OASCII ETX (Control-C)  bellEQU07OASCII BEL (Control-G)  bsEQ
U10OASCII backspace (Control-H)  tabEQU11OASCII Tab (Control-I)  lfEQU12OASCII L
ine Feed (CTRL-J)  ffEQU14OASCII Form Feed (CTRL-L)  crEQU15OASCII Carriage  CP4
DEF.ASM  KERMIT - (Celtic for "FREE")    This is the CP/M-80 implementation of t
he Columbia University  KERMIT file transfer protocol.    Version 4.0    Copyrig
ht June 1981,1982,1983,1984,1985  Columbia University     Originally written by 
Bill Catchings of the Columbia University Center for   Computing Activities, 612
 W. 115th St., New York, NY 10025.     Contributions by Frank da Cruz, Daphne Tz
oar, Bernie Eiben,   Bruce Tanner, Nick Bush, Greg Small, Kimmo Laaksonen, Jeff 
DamensReturn (CTRL-M)  xonEQU21OASCII XON (Control-Q)  xoffEQU23OASCII XOFF (Con
trol-S)  escEQU33OASCII ESCape  subtEQU32OASCII SUB (CTRL-Z)  delEQU177OASCII DE
Lete (rubout)    BDOS calls  bdosEQU0005HBDOS entry point, for the following fun
ctions    Function NameFunctionInput Parameters Output Parameter     (ALL Functi
on Numbers are passed in Register C)  coninEQU01HRead ConsoleNONE ASCII Char in 
A  conoutEQU02H, and many   others.    This file contains definitions used by bo
th modules of Kermit.     revision history   edit 4 6-Feb-85 by Charles Carvalho
  modify pcc007 replace ffussy assembly switch with runtime test.  add "getvnm" 
- get CP/M version number.     edit 3 13-Jan-85 by Vanya J.Cooper Pima Commun. C
ollege Tel 602-884-6809    pcc0072-Jan-85vjcmodulescp4def,cp4cmd  Cmifil is too 
fussy about what characters to accept in a  filespec.  My CP/M manual says any p
rintable character Write ConsoleASCII Char in E NONE  auxinEQU03HAuxiliary input
  rdrinEQU03HRead ReaderNONE ASCII Char in A  lstoutEQU05HWrite ListASCII Char i
n E NONE  dconioEQU06HDirect Con I/O ASCII Char in E I/O Status in A   if E0FEH,
    Input if E0FFH  prstrEQU09HPrint StringString-Address NONE  in DE (term$)  r
dstrEQU0AHRead BufferBuffer-AddressRead Buffer filled  in DE  Read BufferByteFun
ction    1Maximum Buffer Length    2Current Bufferis ok  except .,*, and lower c
ase.  In practice, even those work  sometimes.  Kermit itself uses '&' if file w
arning is on,  and then won't let you reference the file.  Allow all  printable 
characters except those above.  Add conditional  ffussy, so that if not ffussy, 
all special characters will be  allowed, just convert lower to upper-case.    pc
c0082-Jan-85vjcmodulescp4def,cp4tt,cp4utl  Keyboard input during CONNECT mode ca
n get locked out if  there is enough input from the m Length (returned value)  3
-nData (returned values)    constaEQU0BHConsole StatNONELSB(A)1 if char ready  g
etvnmEQU0CHVersion NumberNONEH0 (CP/M), LBDOS ver  inbdosEQU0DHInit BDOSNONENONE
  logdskEQU0EHLOG-In diskValue in ENONE  A0,B1,...  openfEQU0FHOpen FileFCB-Addr
 in DEByte Addr.of FCB,   or 0FFH if not  closfEQU10HClose FileFCB-Addr in DEByt
e Addr.of FCB,   or 0FFH if not  sfirstEQU11HSearch FileFCB-Addr in DEByte Addr.
of FCB(odem port to keep prtchr  busy.  This can happen for example, if the prin
ter is running  at the same speed as the modem line, leaving you helpless to  tu
rn it off or abort the host.  Add a fairness count, so that  at least every prfa
ir characters we look at console input.     edit 2 July 10, 1984 (CJC)  Remove d
efines for TRUE and FALSE, during reorganization for LASM  compatibility.  If we
're using LASM, this file is linked by CP4KER  or CP4TYP, and links to CP4MIT or
 CP4LNK.  Also, push c  N0-3),   or 0FFH if not  snextEQU12HSearch nextFCB-Addr 
in DEByte Addr.of next FCB,   or 0FFH if not  delfEQU13HDelete FileFCB-Addr in D
EByte Addr.of FCB(0-3),   or 0FFH if not  readfEQU14HRead RecordFCB-Addr in DE0s
uccessful read  1read past EOF  2reading random data  writefEQU15HWrite RecordFC
B-Addr in DE0successful write  1ERROR extending  2End of disk data  255No more D
IR space  makefEQU16HMake FileFCB-AddOMaximum size of a packet.  maxtryEQU05O Nu
mber of retries on a packet.  imxtryEQU20O Number of retries send initiate.  prf
airEQU100pcc008 Prtchr fairness count     opcodes for command parser  cmkeyEQU01
HParse a keyword.  cmifiEQU02HParse an input file spec (can be wild).  cmofiEQU0
3HParse an output file spec.  cmcfmEQU04HParse a confirm.  cmtxtEQU05HParse text
.  cmifinEQU10HParse an input file spec (but no  Error output       If this is b
eing assembled by LASMr in DE0-3 success,  255 no more dir space  renamEQU17HRen
ame FileFCB-Addr in DE0-3 success,  255 file not found  rdlogEQU18HRet. Log Code
NONELogin Vector in HL  rddrvEQU19HRead Drive #NONE# of logged in drive in  (A0,
B1,C2....)  setdmaEQU1AHSet DMA Addr.Addr. of 128NONE  byte buffer in DE  wrtprt
EQU1CHWrite prot dskNONENONE  getrovEQU1DHGet R/O Vect.NONEHL R/O Vect. value  s
etfatEQU1EHSet File Attr.FCB-Addr.in DEDir. code , we need to LINK to one of two
 modules   if we're not using LASM, no problem.   CP4KER.ASM defines "cp4ker" TR
UE, and CP4TYP.ASM defines it FALSE, so we can   determine what's going on.  IF 
lasm AND cp4ker building CP4KER with LASM  LINKCP4MIT yes, chain to next piece. 
 ENDIFlasm AND cp4ker  IF lasm AND NOT cp4ker LASM, but not building CP4KER  LIN
KCP4LNK yes, chain to different piece.  ENDIFlasm AND NOT cp4ker  in A  gtdparEQ
U1FHGet DSK par.NONEHLDPB Address  usrcodEQU20HGet/Set Usr.CdE0FFH (get)Acurrent
 code (get)  E-code (set)Ano value (set)  rrandEQU21HRead  RandomFCB-Addr in DEA
Return code  wrandEQU22HWrite RandomFCB-Addr in DE1read'g unwritten data  2(not 
used)  3can't close curr. ext  4seek to unwr. ext.  5dir overflow(write)  6seek 
past End of DSK  cflszEQU23HComp File Sz.FCB Addr.in DERand.Rec.field set to   F
ile size  setrarEQU24HSet Rand. Rec.FCB-Addr.in DERand.Rec.field set     CPM 2 o
nly  punoutEQU04HWrite PunchASCII Char in E NONE  gtiobEQU07HGet I/O status NONE
 I/O Status in A  ptiobEQU08HPut I/O statusI/O Status in E NONE  getalvEQU1BHGet
 All.Vect.NONEAll.Vect in HL     CPM 3 only  auxoutEQU04HAuxiliary output  auxis
tEQU07HGet AUXIN status AFF if character   ready, A0 if none  auxostEQU08HGet AU
XOUT status AFF if ready, A0   if not re CP4KER.ASM  KERMIT - (Celtic for "FREE"
)    This is the CP/M-80 implementation of the Columbia University  KERMIT file 
transfer protocol.    Version 4.0    Copyright June 1981,1982,1983,1984  Columbi
a University     Originally written by Bill Catchings of the Columbia University
 Center for   Computing Activities, 612 W. 115th St., New York, NY 10025.     Co
ntributions by Frank da Cruz, Daphne Tzoar, Bernie Eiben,   Bruce Tanner, Nick B
ush, Greg Small, Kimmo Laaksonen, Jeff Damens, andady  getfsEQU2EHGet free space
Edrive# rec free in dma addr    parevnEQU00HEven parity.  parmrkEQU03HMark parit
y.  parnonEQU06HNo parity (eighth bit is data).  paroddEQU09HOdd parity.  parspc
EQU0CHSpace parity.    defparEQUparnonDefault parity.  ibmparEQUparmrkIBM COMTEN
's parity.    fcbEQU5CHLocation of File Control Block.  fcbextequfcb+12  fcbrnoe
qufcb+33  buffEQU80HLocation of file output buffer (DMA).  bufsizEQU80HSize of D
MA.    maxpkt  EQU''-' '+2  N many   others.       This is the header for the sy
stem-independent portion of KERMIT, which   consists of the following files (in 
this order)  CP4KER.ASM - this file  CP4DEF.ASM - definitions for both KERMIT an
d KERSYS  CP4MIT.ASM - initialization, main loop, miscellaneous commands       (
BYE, EXIT, LOG, SET, SHOW, and STATUS)  CP4PKT.ASM - the KERMIT protocol handler
 (SEND, RECEIVE, LOGOUT,       and FINISH commands)  CP4TT.ASM  - the transparen
t commands (TRANSMIT, CONNECT)  CP4CPMthe END statement has to be   in CP4UTL fo
r LASM (otherwise, we'd need a file containing just an   END statement).  So, we
 leave off the IF m80 OR mac80 conditional   that ought to be around these INCLU
DEs.  No problem until the next   incompatible assembler comes along...  INCLUDE
 CP4DEF.ASM definitions  INCLUDE CP4MIT.ASM initialization, main loop, some comm
ands  INCLUDECP4PKT.ASM KERMIT protocol handler  INCLUDE CP4TT.ASM transparent c
ommunication handler  INCLUDECP4CPM.ASM CP/M comm.ASM - CP/M commands (DIR, ERA)
  CP4WLD.ASM - the wildcard handler  CP4CMD.ASM - the command parser  CP4UTL.ASM
 - utility routines and data     When building the system-independent part with 
M80 or MAC80, CP4KER   INCLUDEs the other files when building with LASM, each fi
le LINKs to   the next file.     For now, the system-dependent routines are all 
in CP4SYS.ASM, with   the actual configuration defined in CP4TYP.ASM.     revisi
on history (latest first)   edit 3 February 10, 1985 (CJC)  and support (DIR, ER
A)  INCLUDECP4WLD.ASM wildcard handler  INCLUDECP4CMD.ASM command parser  INCLUD
E CP4UTL.ASM Various utilities and data, and END ToadHall  END MAC80 ignores END
's in included files...  Update for v4.05 add "verno" so CP4UTL doesn't have to 
change  just because some other module did.     edit 2 September 10, 1984 (CJC) 
 Update for v4.03.     edit 1 July 27, 1984 (CJC)  Created to allow assembly of 
Kermit by LASM as well as MAC80 and M80.    vernoEQU05 minor version number     
Version 4.05 of Kermit consists of the following edit levels  cp4ker.asm edit 3 
 cp4def.asm edit 4  cp4mit.asm edit 8  cp4pkt.asm edit 6  cp4tt.asm edit 4  cp4c
pm.asm edit 3  cp4wld.transfer protocol.    Version 4.0    Copyright June 1981,1
982,1983,1984,1985  Columbia University     Originally written by Bill Catchings
 of the Columbia University Center for   Computing Activities, 612 W. 115th St.,
 New York, NY 10025.     Contributions by Frank da Cruz, Daphne Tzoar, Bernie Ei
ben,   Bruce Tanner, Nick Bush, Greg Small, Kimmo Laaksonen, Jeff Damens, and ma
ny   others.    This file contains the system-dependent code and data for KERMIT
.  It will be probably be broken iasm edit 3  cp4cmd.asm edit 5  cp4utl.asm edit
 6  cp4lnk.asm edit 5 (cp4lnk.asm is not assembled with cp4ker, but it  defines 
the linkage area expected by cp4ker, and so must  match the description in cp4ut
l.asm)     Version 4.05 of Kermit has been tested with the following edit levels
 of   the system-dependent files  cp4typ.asm edit 6  cp4sys.asm edit 12      FAL
SEequ0  TRUEequNOT FALSE    cp4kerequTRUE building system-independent part      
 Assembler type.  Define the appropnto independent files to generate  overlays f
or the various systems, one or more overlay possible  from each file.  For now, 
we will leave it in one piece.     revision history     edit 13 July 23, 1985   
      change Default Escape Character to Control O for Osborne 1's.             
   German Osbornes use the  as special German character                so it can
't be pushed together with the control button.                Easily changed bac
k . ( Eberhard W. Lisse )     edit 12 February 6,riate one TRUE, the rest FALSE.
  (We can't   use ASM, because it cannot handle multiple input files)  mac80EQUF
ALSE For assembly via MAC80 cross-assembler.  m80EQUFALSE For assembly via Micro
soft's M80.  lasmEQUTRUE For assembly via LASM, a public-domain   assembler.    
Get the other modules...    IF lasm If we're linking, go on to the next file.  L
INKCP4DEF  ENDIFlasm     If we're still here, we must be using M80 or MAC80.  M8
0 doesn't   like ENDs inside conditionals, but    N          1985  Add extended 
H89 support (by Paul Milazzo, Rice University),  support for Northstar Horizon w
ith Northstar CP/M and SIO-4 board  (by Joe Smith, Colorodo School of Mines), an
d support for Lobo  MAX-80 computer (from Hal Hostetler)     edit 11 13-Jan-85 b
y Vanya J.Cooper Pima Commun. College Tel 602-884-6809    pcc00127-Dec-84vjcmodu
les cp4sys,cp4typ  Add conditional for Xerox 820.  I thought at first I could  l
ive with the kaypro conditional, but it's enough of a pain  that I aToad Hall ch
anges  Allow assembly with LASM, add support for  Morrow Decision I.     edit 1 
May, 1984  extracted from CPMBASE.M80 version 3.9 modifications are described  i
n the accompanying .UPD file.     Keep module name, edit number, and last revisi
on date in memory.  sysedtdb'CP4SYS.ASM (12)  6-Feb-85$'     Assembly time messa
ge to let me know I'm building the right version.   LASM generates an 'S' error 
along with the message, which is messy, but   better than trying to put everythd
ded it back in.  The clear-to-end-of-screen char  is different,  breaking many p
rograms in VT52 mode, and the  default escape char control-, is not at all obvio
us how  to type on the 820 keyboard.  If you muddle through the  key translation
 table, it turns out to be control-comma.  Rather than OR xer820 all the occuran
ces of kpII conditionals  I added a bbI conditional for all common code for the 
big  board I based machines that is automatically turned on by  either kpII or x
er820.  This wing inside a IF m80 OR mac80 conditional,   because LASM doesn't l
ike nested IF's, either.    IF robin  .printx * Assembling KERMIT-80 for the DEC
 VT180 *  ENDIF    IF brain  .printx * Assembling KERMIT-80 for the Intertec Sup
erbrain *  ENDIF    IF vector  .printx * Assembling KERMIT-80 for the Vector Gra
phics *  ENDIF    IF osi  .printx * Assembling KERMIT-80 for the Ohio Scientific
 *  ENDIF    IF heath  .printx * Assembling KERMIT-80 for the Heath/Zenith 89 * 
 ENDIF    IF z100  .printx * Assembling KERMIill also make it easier in  the fut
ure if another flavor of bigboard is added.     edit 10 5 December 1984 by CJC  
Add missing ENDIF (tsk, tsk)     edit 9 4 December 1984 by CJC  Add two osborne 
fixes missing crlf in outlin, incorrect opcode in  initialization.     edit 8 13
 October 1984 by L M Jones, JCC, for New York Botanical Garden  Add support for 
CPT-85xx series word processors when running CP/M-80.     edit 7 29 August 1984 
by Bdale Garbee  CMU  Add support for Digicomp DelT-80 for the Heath/Zenith Z100
 *  ENDIF    IF apple  .printx * Assembling KERMIT-80 for the Apple  *  ENDIFapp
le  IF apmmdm  .printx *   with Z80 Softcard & Micromodem II   *  ENDIFapmmdm  I
F ap6551  .printx *     with Z80 Softcard & 6551 ACIA     *  ENDIFap6551    IF t
rs80  .printx * Assembling KERMIT-80 for the TRS-80 II *  ENDIF    IF osbrn1  .p
rintx * Assembling KERMIT-80 for the Osborne 1 *  ENDIF    IF telcon  .printx * 
Assembling KERMIT-80 for the Telcon Zorba *  ENDIF    IF dmII  .printx * Assephi
 100 and Netronics Smartvid terminal.     edit 6 August 21, 1984  Add flsmdm, to
 flush comm line on startup.  Support multiple-sector buffering (except for osbo
rne 1).     edit 5 August 19, 1984  Add missing RET in outlpt (*sigh*).  Also pr
eserve DE in case  the BIOS destroys it.  Add version string (sysedt, since sysv
er  was already taken).     edit 4 August 8, 1984  Running terminal output throu
gh the BDOS didn't work so well for  the Kaypro.  Remove the special check at ou
tconmbling KERMIT-80 for the DECmate II *  ENDIF    IF gener  .printx * Assembli
ng Generic KERMIT-80 *  ENDIF    IF cpm3  .printx * Assembling Generic KERMIT-80
 for CP/M 3.0 *  ENDIF    IF kpii  .printx * Assembling Kaypro II KERMIT-80 *  E
NDIF  IF xer820pcc001  .printx * Assembling Xerox 820 KERMIT-80 *  ENDIFpcc001  
  IF bbII  .printx * Assembling BigBoard II KERMIT-80 *  ENDIF    IF mdI  .print
x * Assembling for Morrow Decision I *  ENDIFmdI  Toad Hall    IF mmdI  .printx 
* Assembling for Mo.     edit 3 August 3, 1984  move "mover" to CP4SYS from CP4U
TL, so we can use Z80 block move.  define Z80 true or false when setting up the 
rest of the parameters.  (I'm only defining as Z80's the ones I KNOW are Z80's, 
because I  don't want to break anything by guessing wrong).  Make the values  st
ored by sysinit in "speed" match the 16-bit values found in the  speed table, so
 we can find them later.     edit 2 July 27, 1984 (CJC)  Add break capability fo
r Kaypro II and bbII.  Merge   Nrrow Micro Decision I *  ENDIFmmdI    IF mikko  
.printx * Assembling MikroMikko Kermit-80 *  ENDIF    IF delphi7  .printx * Asse
mbling Digicomp Delphi 100 Kermit-80 *  ENDIF7    IF cpt85xx  .printx * Assembli
ng CPT-85xx (under CompuPak CP/M) Kermit-80 *  ENDIF    IF norths  .printx * Ass
embling for NorthStar Horizon with HSIO-4 board *  ENDIFnorths    IF lobohh  .pr
intx * Assembling Kermit-80 for the Lobo MAX-80 *  ENDIFlobo hh     Also tell wh
at kind of terminal, if any, is selected  IF mikko  batioEQU10110010B  I/O byte 
console  serial line  defioEQU10000001B  I/O byte console  CRT and Keyboard  END
IFmikko      Protocol parameters.  Some of these can be changed with commands.  
    drpsizEQU5EHDefault receive packet size. (maximum is 5EH)  dspsizEQU20HDefau
lt send packet size. (maximum is 5EH)  dstimeEQU08HDefault send time out interva
l.    IF NOT (apple OR osbrn1)  drtimeEQU05HDefault receive time out interval.  
ENDIFNOT (apple OR osbrn1)  IF apple OR oF crt  .printx * generic CRT selected *
  ENDIF    IF adm3a  .printx * ADM3A selected *  ENDIF    IF smrtvd7  .printx * 
Netronics Smartvid-80 selected *  ENDIF7    IF tvi925  .printx * TVI925 selected
 *  ENDIF    IF vt52  .printx * VT52 selected *  ENDIF    IF vt100  .printx * VT
100 selected *  ENDIF      I/O Byte assignments (2-bit fields for 4 devices at l
oc 3)    bits 6+7LIST field  0LIST is Teletype device (TTYsbrn1  drtimeEQU0AH Us
e longer receive timeout on apple and osborne.  ENDIFapple OR osbrn1    dspadEQU
00HDefault send padding.  drpadEQU00HDefault receive padding.  dspadcEQU00HDefau
lt send padding char.  drpadcEQU00HDefault receive padding char.  dseolEQUCRDefa
ult send EOL char.  dreolEQUCRDefault receive EOL char.  dsquotEQU'#'Default sen
d quote char.  drquotEQU'#'Default receive quote char.  dschktEQU'1'Default chec
ksum type    IF lobohh  mnportEQU0F7E4H)  1LIST is CRT device (CRT)  2LIST is Li
neprinter (LPT)  3LIST is user defined (UL1)    bits 4+5PUNCH field  0PUNCH is T
eletype device (TTY)  1PUNCH is high speed punch (PUN)  2PUNCH is user defined #
1 (UP1)  3PUNCH is user defined #2 (UP2)    bits 2+3READER field  0READER is Tel
etype device (TTY)  1READER is high speed reader (RDR)  2READER is user defined 
#1 (UR1)  3READER is user defined #2 (UR2)    bits 0+1CONSOLE field  0CONSOLE iM
odem data port A  mnprtsEQU0F7E5HModem status/conrtol port A  baudrtEQU0F7D0HBau
d rate port A  outputEQU04HTransmit buffer empty  inputEQU01HReceive data availa
ble  z80EQUTRUEa good z80, here  ENDIFlobo    IF brain  baudstEQU60H  baudrtEQU0
EF00HMemory location where baud rates are stored.  mnportEQU58HModem data port  
mnprts  EQU59HModem status port  outputEQU01HTransmitter empty  inputEQU02HInput
 data available  z80EQUFALSEI don't know...  ENDIFbrain    IF s console printer 
(TTY)  1CONSOLE is CRT device (CRT)  2CONSOLE is in Batch-mode (BAT)READER  Inpu
t,  LIST  Output  3CONSOLE is user defined (UC1)        iobyteEQU03HLocation of 
I/O byte     the basics...  IF robin OR gener  batioEQU056HI/O byte CONBAT,LISTC
RT,READERRDR,PUNCHPTP  defioEQU095HI/O byte CONCRT,LISTLPT,READERRDR,PUNCHPTP  E
NDIFrobin OR gener    IF gener  crtioequ01010101B osi  mnportEQU0CF01HModem data
 port  mnprts  EQU0CF00HModem status port  outputEQU02HTransmitter empty  inputE
QU01HInput data available  z80EQUFALSEI don't know...  ENDIFosi    IF vector  mn
portEQU04HModem data port  mnprtsEQU05HModem status port  outputEQU01HTransmitte
r empty  inputEQU02HInput data available  z80EQUFALSEI don't know...  ENDIFvecto
r    IF delphi7  mnportEQU22H7 Modem data port  mnprtsEQU23H7 Modem status port 
 outputEQU01H7 Trause CRT device  ptrioequ01010110B use PTR device  ttyioequ0000
0000B use TTY device  uc1ioequ01010111B use UC1 device  ur1ioequ01101010B use UR
1 device  ur2ioequ01111110B use UR2 device  ENDIFgener    IF robin  lptioEQU054H
I/O byte CONTTY,LISTCRT,READERPTR,PUNCHPTP  gppioEQU057HI/O byte CONUC1,LISTCRT,
READERRDR,PUNCHPTP  ENDIFrobin    IF dmII  batioEQU042HI/O byte CONBAT,LISTCRT,R
EADERRDR  defioEQU081HI/O byte CONCRT,LISTLPT,READERRDR  ENDIFdmII    I  Nnsmitt
er empty  inputEQU02H7 Input data available  baudrtequ29h7 Baud rate port for ch
annel 2 (default)  z80EQUtrue7 We're using the z80 side of the dual processor  E
NDIF7 delphi    IF heath    Definitions for the 8250 ACE    acerbrEQU0 ACE Recei
ver Buffer Register offset (R/O) (DLAB  0)  acethrEQU0 ACE Transmitter Holding R
egister offset (W/O)  acedllEQU0 ACE Divisor Latch (Low)(DLAB  1)  acedlhEQU1 AC
E Divisor Latch (High)(DLAB  1)  aceierEQU1 ACE Interrupt jb Output Buffer Empty
.  inputEQU08Hjb Input Register Full.  mncinbEQU18Hjb Control Port Initializatio
n Byte  jb  (8-bit, no parity, 1-stop, 1200 baud)  mnminbEQU0BHjb Master Port In
itialization Byte  jb  (DTR, RTS, no interrupts)  z80EQUTRUEZ80 Softcard  ENDIFa
p6551    IF osbrn1  Osborne 1 uses 6850 ACIA, but memory mapped.  Derived from A
pple.  BAUDRTEQU0EFC1HMemory location where baud rates are stored.  OSTOPEQU4000
HWhere we move OSMOVE to at startup  OSPORTEQUEnable Register (DLAB  0)  aceiirE
QU2 ACE Interrupt Identification Register  acelcrEQU3 ACE Line Control Register 
 acemcrEQU4 ACE Modem Control Register  acelsrEQU5 ACE Line Status Register offs
et  acemsrEQU6 ACE Modem Status Register    ace8bwEQU00000011b  8 bit words  ace
sbEQU01000000b  set break  acedlaEQU10000000b  divisor latch access  acedtrEQU00
000001b  data terminal ready  acelooEQU00010000b  loopback mode  acedrEQU0000000
1b  data ready  acetheEQU00100000b  2A01HCommunications Port.  OSPRTSEQU2A00HCom
munications Port Status.  OUTPUTEQU02HOutput Buffer Empty.  INPUTEQU01HInput Reg
ister Full.  OSBIN1EQU57HFirst Init Character for 6850 ACIA (Reset)  (I would ha
ve thought 03, but prom code writes 57 there)  OSBI12EQU55HSecond Init Character
 for ACIA (8-bits, 1200)  OSBI03EQU56HSecond init char. for ACIA (8 bits, 300)  
(don't ask.. I don't know why SETUP writes 55 and 56 either)  z80EQUTRUEhh a z80
 here, also  ENDIFosbrn1    IF ttransmitter holding register empty    mnportEQU3
30OModem data port  mnprtsEQUmnport+acelsrModem status port  outputEQUacetheTran
smitter empty  inputEQUacedrInput data available  z80EQUTRUEH89 uses the Z80  EN
DIFheath    IF z100  mnportEQU0ECHModem data port  mnprtsEQU0EDHModem status por
t  outputEQU01HTransmitter empty  inputEQU02HInput data available  z80EQUFALSEhh
 this one's an 8085.  ENDIFz100    IF trs80  NEEDS display definition (e.g. trs8
0lb or trs80pt)  mnelcon  MNPORTEQU20HModem data port  MNPRTSEQU21HModem status 
port  OUTPUTEQU01HTransmitter empty  INPUTEQU02HInput data available  z80EQUFALS
EI don't know...  ENDIFtelcon    IF robin  Those definitions below that are comm
ented out are just for information  ***** NOT generally found in distributed doc
umentation ****    pbausl EQU90HThe Baud-Rate register.  prntstEQU49HPrinter  pr
ndatEQU48H  contstEQU41HConsole  condatEQU40H  gentstEQU51HGeneral port.  gendat
EQUportEQU0F4HModem data port (0F5H for port B)  mnprtsEQU0F6HModem status port 
(0F7H for port B)  outputEQU04HTransmitter empty  inputEQU01HInput data availabl
e  z80EQUTRUEhh All TRS-80's but the CoCo  ENDIFtrs80    IF apmmdm  APPLE Slot 2
 contains Micromodem II.  MNPORTEQU0E0A7HCommunications Port.  mnprtsEQU0E0A6HCo
mmunications Port Status.  mnmodmEQU0E0A5HModem Control Port.  orgmodEQU8EHModem
 Originate Mode.  OUTPUTEQU02HOutput Buffer Empty.  INPUTEQU01HInpu50H  comtstEQ
U59HCOMM-Port  comdatEQU58H  outputEQU01HOutput ready bit.  inputEQU02HInput rea
dy bit.  z80EQUTRUE This one's a Z80.  ENDIFrobin    IF bbI  mnportequ04h Modem 
data port  mnprtsequ06h Modem status port  outputequ04h Transmit buffer empty  i
nputequ01h Receive data available  baudrtequ00h Baud rate port for channel A  z8
0EQUTRUE This one's a Z80.  ENDIFbbI    IF norths The basic Northstar Horizon BI
OS does not access ports 2-5  port0d  equ    t Register Full.  apinc1EQU03HFirst
 Init Character for 6850 ACIA (Reset)  apinc2EQU11HSecond Init Character for ACI
A (8-bits)  apoffhEQU80HSet if OFFHOOK  AP300EQU1300 Baud  z80EQUTRUEZ80 Softcar
d  ENDIFapmmdm    IF ap6551jb  mnportEQU0E088H+(10H*apslot)jb Communications Por
t.  mnprtsEQU0E089H+(10H*apslot)jb Communications Port Status.  mnprtcEQU0E08BH+
(10H*apslot)jb Communications Control  mnprtmEQU0E08AH+(10H*apslot)jb Communicat
ions Master (command)  outputEQU10H   N          02h             Port 0 data (co
nsole)  port0s  equ     03h             Port 0 status  port1d  equ     04h      
       Port 1 data (printer)  port1s  equ     05h             Port 1 status    p
ort2b  equ     10h             Port 2 baud  port2i  equ     11h             Port
 2 interrupt mask  port2d  equ     12h             Port 2 data  port2s  equ     
13h             Port 2 status    port3b  equ     14h             Port 3 baud  po
rt3i  equ     15h             Port 3 interrupt mask  port3d  equ     1mmdI    IF
 mdIMorrow Decision I - the big sucker  mnportequ48H Modem data port.  mnprtsequ
4DH Modem status port.  outputequ20H Transmitter empty.  inputequ1 Input data av
ailable.  mbaseequ48H Base address of Multi I/O port     selector area.  grpsele
qu4FH Group select port.  rbrequ48H Read Data Buffer.  groupequ1 Multi I/O Group
 byte for serial ports.  congrpequ1 Serial Port 1 for console  mdmgrpequ3 Serial
 Port 3 for modem.     Following are needed6h             Port 3 data  port3s  e
qu     17h             Port 3 status    port4b  equ     18h             Port 4 b
aud  port4i  equ     19h             Port 4 interrupt mask  port4d  equ     1Ah 
            Port 4 data  port4s  equ     1Bh             Port 4 status    port5b
  equ     1Ch             Port 5 baud  port5i  equ     1Dh             Port 5 in
terrupt mask  port5d  equ     1Eh             Port 5 data  port5s  equ     1Fh  
           Port 5 status    NS19K2EQU00H19.2 kilobaud  NS960 for baud rate chang
es...Toad Hall    dlmequ49H Baud Rate Divisor (Most Sig Bit)  dllequ48H Baud Rat
e Divisor (Least Sig Bit)  ierequ49H Interrupt Enable Register  lcrequ4BH Line C
ontrol Register  lsrequ4DH Line Status Register  msrequ4EH Modem Status Register
  dlabequ80H Divisor Latch Access Bit  wls0equ1 Word Length Select Bit 0  wls1eq
u2 Word Length Select Bit 1 for 8 bit word  stbequ4 Stop bit count - 2 stop bits
  imaskequ0 Interrupt mask (all dis0EQU01H9600 baud  NS4800EQU02H4800 baud  NS24
00EQU03H2400 baud  NS1200EQU04H1200 baud  NS0600EQU05H 600 baud  NS0300EQU06H 30
0 baud  NS0110EQU07H 110 baud   Set to use port 5 at 1200 baud             *****
  mnport  equ     port5dData port  mnprtsequport5sStatus port  baudrtequport5bBa
ud rate port  baudiniequns1200Initial baud rate  outputEQU1Bit of UART status fo
r transmitter ready  inputEQU2Bit of UART status for receiver ready  z80equFALSE
abled)  z80EQUTRUE This one's a Z80.  ENDIFmdI   NOTE needs terminal definition.
 Toad Hall    IF mikko  sioacEQU0FF12HSIO channel A register(s) address  sioo3EQ
U01000001B SIO Write Reg. 3 original setup ()  RX 7 bits,synch mode bits 0,RX en
able  sion3EQU11001111BSIO Write Reg. 3 KERMIT setup  RX 8 bits,synch mode bits 
0,RX enable  sioo4EQU01001111BSIO Write Reg. 4 original setup ()  X16 clock,8 bi
t synch(ignored),  2stop bits,par even(on)  sion4EQU01000100B  ENDIFnorths    IF
 bbII  mnportequ80h Modem data port (SIO channel A)  mnprtsequ81h Modem status p
ort  outputequ04h Transmit buffer empty  inputequ01h Receive data available  bau
drtequ89h Baud rate port for channel A  z80EQUTRUE This one's a Z80.  ENDIFbbII 
   IF cpt85xx  baudrtEQU4Ch Baud rate generater (National MM5307)  mnportEQU4Bh 
Comm port data register (Intel 8251)  mnprtsEQU4Ah Comm port command/status regi
ster  outputEQU01h Transmitter buffer empSIO Write Reg. 4 KERMIT setup  X16 cloc
k,8 bit synch(ignored),  1stop bit,par off  sioo5EQU10101010BSIO Write Reg. 5 or
iginal setup ()  DTR,TX 7 bits,TX enable,RTS  sion5EQU11101010BSIO Write Reg. 5 
KERMIT setup  DTR,TX 8 bits,TX enable,RTS  txclkEQU0FF30HBaud rate generator (CT
C) for transmitter  rxclkEQU0FF31HBaud rate generator (CTC) for receiver  chmask
EQU0F1F2HMask byte address for SIO ch. A reception  z80EQUTRUEIt's got a SIO and
 a CTC, it must be a Z80  ty flag  inputEQU02h Reciver buffer full flag  TxEmpty
EQU04h Transmitter empty flag  z80EQUFALSE It's really an 8080 or 8085 ... same 
thing  ENDIFcpt85xx    IF mmdIMorrow MicroDecision - the single-board one  mnpor
tEQU0FEHMorrow Printer UART data port  mnprtsEQU0FFHMorrow Printer UART command/
status  outputEQU01HOutput ready bit.  inputEQU02HInput  ready bit.  NoteNeeds t
erminal definition (vt100, vt52, tvi925, adm3a or crt above)  z80EQUFALSEI don't
 know...  ENDIF  NENDIFmikko    IF robin OR dmII  z80EQUTRUE This one's a Z80  E
NDIFrobin OR dmII    IF gener OR cpm3 To be truly generic, we must assume 8080. 
 z80EQUFALSE  ENDIFgener OR cpm3    IF brain OR osi OR apple OR telcon OR xer820
  defescEQU''-100OThe default escape character.  ENDIFbrain OR osi OR apple OR t
elcon OR xer820    IF vector  defescEQU''Vector can't type ''.  ENDIFvector    I
F robin OR dmII OR mikko OR heath OR z100 OR kpII OR lobo  defescEQU''-100OThe d
efault is Control "  callprtstr  lxid,ttytyp terminal type  callprtstr  ENDIFadm
3a OR tvi925 OR vt52 OR vt100 OR smrtvd7  callprcrlf print CR/LF     now, to wor
k...    IF NOT osbrn1 locate large buffer for multi-sector I/O   What we want to
 do here is find the ccp.  Space between ovlend and the ccp   is available for b
uffering, except we don't want to use more than maxsec   buffers (if we use too 
many, the remote end could time out while we're   writing to disk).  maxsec is s
ystem-dependent, but  -- it's easier B.E.  ENDIFrobin OR dmII OR mikko OR heath 
OR z100 OR kpII OR lobo    IF crt OR vt100 OR vt52 OR tvi925 OR adm3a OR smrtvd 
OR cpt85xx  defescEQU''-100OStill Control- (just ran out of room...)  ENDIFcrt O
R vt100 OR vt52 OR tvi925 OR adm3a OR smrtvd OR cpt85xx    if osbrn1  defesc  eq
u     'O'-100O         German Osbornes can't do Control   endif osbrn1          
           Control O is close enough.    IF trs80  defescEQU''-100OCTRL- (Down-a
rrow on TRS-80 keyboard)  ENDIFtrsfor now we'll just   use 8Kbytes.  If you get 
retransmissions and other protocol errors after   transferring the first maxsec 
sectors, lower maxsec.     I'm excluding the Osborne 1 for now because it needs 
code up at 4000H,   so we'd have to start the buffer after that.    maxsecEQU(8*
1024)/bufsiz 8K / number of bytes per sector    lxih,ovlend get start of buffer 
 shldbufadr store in linkage section  mvia,maxsec get size of buffer, in sectors
  stabufsec store that, too.  ENDIFNOT 80     Select initial setting for VT-52 e
mulation flag.  IF crt If dumb or unknown console,  vtvalEQU0FFH  we can't suppo
rt VT52 emulation  ENDIFcrt    IF heath OR z100 OR telcon OR vt52  If console lo
oks like (or is) VT52  vtvalEQU0  we don't need VT52 emulation  ENDIFheath OR z1
00 OR telcon OR vt52    IF robin OR dmII OR vt100 If console looks like VT100  v
tvalEQU0 we probably don't want VT52 emulation  ENDIFrobin OR dmII OR vt100     
If none of the above, default to VT52-EMULAosbrn1    IF iobyt (actually, we ough
t to do this for everybody)  calliniadrInitialize the BIOS addresses  mvic,gtiob
Get current I/O byte  callbdosFrom CP/M  staconiobRemember where console is  END
IFiobyt    IF osbrn1  lxid,ostopwhere we're moving it to  lxih,osmovewhat we're 
moving  mvib,osmctHow many bytes we're moving  callmover  ldabaudrt Find out wha
t speed is current  ani1  mvia,osbi03 assume 300 baud  jzosstr1  mvia,osbi12 nop
e, it's 1200.  osstr1TION ON.  IF NOT (crt OR heath OR z100 OR telcon OR vt52 OR
 robin OR dmII OR vt100)  vtvalEQU1  ENDIFNOT (crt OR heath OR z100 OR telcon OR
 vt52 OR robin OR dmII OR vt100)     Set the fuzzy timeout value.  Range is 1 (V
ERY short) through 0ffffH to zero   (maximum).  The actual duration is a functio
n of the loop length and the   processor speed.  For now, we'll make it zero for
 everybody, but feel free   to change it for your system.  fuzvalEQU0        Sys
tem-dependent initialization  Called staspeed save initial speed  staspeed+1  as
 16 bits, to match speed table entries  movd,a  move,a get initial speed in DE  
callsysspdset up parity etc.  ENDIFosbrn1    IF bbI OR bbII  lxid,siotbl Load th
e address of the status able  mvic,siolen Length of status table  siolupLoop bac
k here for each command byte  ldaxd Load the first byte into A  inxd Index the p
ointer  outmnprts Send it to the status port  dcrc Decrement the byte counter  j
nzsiolup once at program start.  sysinit  mvic,getvnm get the BDOS version numbe
r (e.g. 22H, 31H)  callbdos  mova,l  stabdosvr and store it away for future refe
rence    lxid,cfgmsg "configured for "  callprtstr  lxid,sysver get configuratio
n we're configured for  callprtstr print it.    If we're set up to do special te
rminal handling, say what kind  of terminal we expect... (unless it's the generi
c 'crt')  IF adm3a OR tvi925 OR vt52 OR vt100 OR smrtvd7  lxid,witmsg " with   N
Jump back for more commands  ENDIFbbI or bbII    IF cpt85xx  mvia,80h Send UART 
reset force idle by setting  outbaudrt    bit 7 of baud rate I/O port  mvia,0Fh 
Clear reset bit and default to 9600 baud  outbaudrt  mvia,4Eh Set UART mode to a
sync 16x clock, 8 data  outmnprts    bits, no parity, and 1 stop bit  mvia,37h S
et command to Tx enable, DTR on, Rx enable,  outmnprts    break off, error reset
, and RTS on  ENDIFcpt85xx    IF lobohh  lxid,siotblhh addresso we can tell what
 speed is selected.    mvia,07h7 get value for 1200 baud  outbaudrt7 set it for 
port 2  staspeed7 save for status display  staspeed+1  ENDIF7 delphi    IF heath
    System dependent startup for H89      callmdmofl keep the line safe from gar
bage    First, tell Kermit the modem port's current speed  inmnport+acelcr  oria
cedla  outmnport+acelcr access the ACE's divisor latch  inmnport+acedll get the 
low byte  staspeed  inmnport+acedlhs of status table  mvic,siolenhh length of th
e table  sioluphh loop here for each command byte  ldaxdhh load first byte into 
A  inxdhh index pointer to next bute  stamnprtshh send it to status port A  stam
nprts+2hh and to status port B  dcrchh decrement the counter  jnzsioluphh loop b
ack for more commands  mvia,05Hhh value for 300 baud  stabaudrthh starting defau
lt for port A  stabaudrt+4hh and for port B  staspeedhh tell program and the hig
h byte  staspeed+1    Now set up the port for Kermit  mvia,ace8bw 8 data bits, 1
 stop bit, no parity  outmnport+acelcr  inmnport+acemcr  oriacedtr raise DTR (ju
st in case)  outmnport+acemcr  callmdmonl and put the ACE back on line  ret    T
ake the ACE off line before modifying its state  mdmofl  inmnport+aceier save th
e ACE's interrupt state  staiersav  xraa  outmnport+aceier and disable ACE inter
rupts  inmnport+acemcr now put the ACE in loopback mode  they're set  mvia,0E4Hh
h value for port A  staporthh tell program we've set this, too  mvia,0D0Hhh port
 A baud rate value  staport+1hh save this as well, for consistancy  ENDIFlobo   
 IF mikko  lxid,mintblAddress of KERMIT Reg values (what)  mvic,minlenLength of 
table (how many)  lxih,sioacSend data to ch. A SIO registers (to where)  callmov
mik  mvia,0FFHSet ch. A mask to use all bits  stachmask  ENDIFmikko    IF brain 
 ldabaudrt fetch current baud  oriaceloo  outmnport+acemcr  ret    Put the ACE b
ack on line  mdmonl  inmnport flush left-over garbage in the receive buffer  mvi
a,7 wait about 2 300-baud character times  calldelay  inmnport and flush more ga
rbage  inmnport+acemcr take the ACE out of loopback mode  ani0FFH-aceloo  outmnp
ort+acemcr  ldaiersav  outmnport+aceier and restore the ACE's interrupt state  r
et    iersavds1  ENDIFheath    ret return from system-dependent routine    bdosv
rds1 sprate  ani0F0H extract left nibble  rrc shift right 4 places  rrc  rrc  rr
c  staspeed store as comm port speed  staspeed+1  (16 bits, to match speed table
 entries)  ENDIFbrain    IF mdI  lxih,96Default 1200 baud modem port speed  shld
speedStore as modem port speed  callsysspdInitialize the port  ENDIFmdI  Toad Ha
ll    IF ap6551  ldamnprtc read control port  ani0fH extract low order nybble  s
taspeed store as comm line speed  staspeed+1  (16 bits, tace to save the BDOS ve
rsion number      IF iobyt  This one is hopefully the last "improvement" in view
 of GENERIC  Kermit. It uses for Character-I/O the BIOS-routines ( instead of th
e  "normal" BDOS routines. What does it give us (hopefully)  More speed,  higher
 chance of success ( I/O byte implemented in BIOS if at all),  but no "extra" de
vice handling - that's done by BDOS.    How do we "get" the call-adresses  Locat
ion 0 has a JMP Warm-Boot  in CP/M which points into the second location o match
 speed table entries)  mvia,mnminbjb initialization routine  stamnprtsjb  stamnp
rtmjb initialize master (command) port  mvia,mncinbjb  stamnprtcjb initialize co
ntrol port  ENDIFap6551    IF norths  mvia,baudiniGet initial speed  outbaudrt  
staspeedsave for status display  staspeed+1  ENDIFnorths    IF delphi7    shove 
the default baud rate (1200) in to the Delphi port address  for the baud rate ge
nerator on port 2, the default port save this  value   Nof the BIOS JMP-Vector. 
 The  next three locations of the JMP-Vector point to the CONSTAT,CONIN,CONOUT  
BIOS-routines.  CONOUT wants the character in C.    - Bernie Eiben    iniadrlhld
1get BIOS Warmstart-address  lxid,3next adress is CONSTAT in BIOS  dadd  shldbco
nst+1stuff it into the call-instruction  lxid,3next adress is CONIN in BIOS  dad
d  shldbconin+1  lxid,3next adress is CONOUT in BIOS  dadd  shldbcnout+1  lxid,3
next address is LIST in BIOS  dadd  shl0  miolenequ$-miotblMikroMikko SIO table 
length (original values)     command list to set up SIO chip for operation with 
Kermit  mintbldb3reg. 3  dbsion3  db5reg. 5  dbsion5  db4reg. 4  dbsion4  db0res
elect reg. 0  minlenequ$-mintblMikroMikko SIO table length (KERMIT values)  ENDI
Fmikko      system-dependent termination processing  If we've changed anything, 
this is our last chance to put it back.  sysexit  IF mikko  lxid,miotblLoad the 
adress of original regdblsout+1  retAnd return    bconstjmp$-$Call BIOS directly
 (filled in by iniadr)    bconinjmp$-$Call BIOS directly (filled in by iniadr)  
  bcnoutjmp$-$Call BIOS directly (filled in by iniadr)    blsoutjmp$-$ ....  END
IFiobyt    IF mikkocurrently for MIKROMIKKO only   copy command block into memor
y-mapped SIO.  movmikdidisable interrupts  movmk1ldaxdGet a register value  movm
,aOutput it  inxdNext value  dcrcDecrement counter  jnzmovmk1Repea values  mvic,
miolenLength of table  lxih,sioacSend data to ch A SIO registers  callmovmik  mv
ia,07FHSet ch A mask to use just 7 bits  stachmask  ENDIFmikko    IF cpt85xx  mv
ia,80h Reset (force idle) the 8251 UART via bit 7  outbaudrt    of the baud rate
 generater port  mvia,00h and turn off the baud rate generater  outbaudrt  ENDIF
cpt85xx  ret      system-dependent processing for start of CONNECT command    sy
scon  IF apmmdm  callckdialSee if dialing is requit until done  ei  ret  ENDIFmi
kko    IF osbrn1  osmove  osflagequ0EF08HOsborne 1 Bank-2 flag     return modem 
statu"C2!"E9"1A22!ty)K!G#V*CE ,s in A    OSLDSTEQUostop-osmove+$  DI  OUT0  LDAo
sprtsRead the status port  OUT1  EI  ret     set modem status from A    OSSTSTeq
uostop-osmove+$  DI  OUT0  STAosprtsWrite the control port  jmposstex     read c
haracter from mored.   jmpkermitGo to command loop if aborted.  ENDIFapmmdm    I
F robin OR trs80 OR cpt85xxFor Robin/TRS80/CPT-85xx, add some more info  lxid,co
nmsg about obscure key combinations  callprtstr  ENDIFrobin OR trs80 OR cpt85xx 
   IF osbrn1*** This is Software dependent ***  lhld1Modify back-arrow code to D
ELETE  mvil,0Get BIOS-start address  lxid,85HAdress for key-code  XX85H  dadd  m
ove,mGet it in DE  inxh  movd,m  xchgMemory pointer to HL  mvim,delmodifdem into
 A    OSLDDAequostop-osmove+$  DI  OUT0  LDAosport  OUT1  EI  ret    output char
acter in A to modem    OSSTDAequostop-osmove+$  DI  OUT0  STAosport  osstexequos
top-osmove+$  OUT1  mvia,1  staosflag  EI  ret  osmctequ$-osmove  ENDIFosbrn1   
 IF bbI OR bbII OR lobo   List of commands to set up SIO channel A for asynchron
ous operation.  siotblDB18H Channel reset  DB18H another, in case register 0 was
n't selected  DB04H Select register 4  DB44H 1y the code  ENDIFosbrn1  ret    co
nmsg Messages printed when entering transparent (CONNECT) mode  IF robin  for Ro
bin, control-S key is hidden  db' (Type Left Arrow to send CTRL-S)',cr,lf,'$'  E
NDIFrobin  IF trs80  for TRS-80, the preferred escape key is hidden  db' (Contro
l- is the Down-Arrow key on the TRS-80 keyboard)'  dbcr,lf,'$'  ENDIFtrs80  IF c
pt85xx  for CPT-85xx, some graphics map "funny" to keyboard in CP/M  db' (Use  C
ODE + SHIFT + 1/2  key to generate a Control-)'  db stop bit, clock*16   DB01H S
elect register 1  DB00H No interrupts enabled   DB03H Select register 3   DB0C1H
 Rx enable, 8 bit Rx character   DB05H Select register 5   DB0EAH Tx enable, 8 b
it Tx character,     raise DTR and RTS  siolenequ$-siotbl length of command list
  ENDIFbbI or bbII OR lobo    IF mikko   command list to set SIO chip back to no
rmal state  miotbldb3reg. 3  dbsioo3  db5reg. 5  dbsioo5  db4reg. 4  dbsioo4  db
0reselect reg.   Ncr,lf,'$'  ENDIFcpt85xx    IF apmmdm  This code was mostly tak
en from  APMODEM.ASM V2.1  Based on MODEM.ASM by Ward Christensen  Modified for 
the Apple  by Gordon Banks 1-Jan-81  Micromodem  dialer option by Dav Holle  2-F
eb-81  Code modified for KERMIT by Scott Robinson 14-Oct-82    Come here to see 
if we need to dial a number.    ckdialldamnportaccess the data port  ldamnprtsch
eck status  ani4do we already have carrier  jzrskpYes, just continue  xra aHangu
p ple Z80  clock2.041MHz)    delay2dcrecount  jnzdelay2down    dcrcmore millisec
s  jnzdelay1yes  dcrbno - more in hi byte  jnzdelay1yes  popdno,restore D,E  pop
brestore B,C  ret  ENDIFapmmdm      syscls - system-dependent close routine  cal
led when exiting transparent session.    syscls  IF osbrn1  lhld1Modify back-arr
ow code to BACKSPACE  mvil,0Get BIOS address  lxid,85HAddress for key-code XX85H
  dadd  move,mGet it in DE Phone for starters  stamnmodm  lxib,1000Delay for a s
econd  calldelay  mvia,8FHorgmod+ap300+apoffh  staholddstoring mode for after di
aling  mviA,8DHGo Offhook to start dialing sequence  stamnmodm  mvia,apinc1Init 
ACIA  stamnport  mvia,apinc2Set ACIA bits per character  stamnport    lxib,2500w
ait 2.5 seconds for dial tone  calldelay  lxid,dialmsAsk the user for the number
  callprtstr    gtdial mvic,coninGet a character  callbdos  pushpswsave it  inxh
  movd,m  xchgAddress to HL  mvim,bsModify code  ENDIFosbrn1  ret      sysinh - 
help for system-dependent special functions.  called in response to escape, afte
r listing all the  system-independent escape sequences.    sysinh  IF apmmdm OR 
robin OR dmII OR bbII OR bbI OR cpt85xx OR heath OR lobo  lxid,inhlps we got opt
ions...  callprtstr print them.  ENDIFapmmdm OR robin OR dmII OR bbII OR bbI OR 
cpt85xx OR heath OR lobo  ret    additional, system-dependent he cpi30His it big
 enough to dial  jcdialedno  cpi3AHis it too big to dial  jncdialedyes  ani0FHok
, it's a digit, get its value  jnzdialnzdial nonzero digits as-is  mviA,10dial z
ero as ten    dialnzmove,acount pulses in E-reg  dopuls mvia,0DHput it on-hook  
stamnmodm  lxib,6161-millisec pulse  calldelay  mvia,8DHtake it off-hook again..
.  stamnmodm  lxib,3939-millisec delay between pulses  calldelay  dcreany more p
ulses to do  jnzlp for transparent mode   (two-character escape sequences)  inhl
ps    IF robin OR dmII OR bbII OR bbI OR cpt85xx OR heath OR lobo  dbcr,lf,'B  T
ransmit a BREAK'  ENDIFrobin OR dmII OR bbII OR bbI OR cpt85xx OR heath OR lobo 
   IF apmmdm OR heath OR lobo  dbcr,lf,'D  Drop the line'  ENDIFapmmdm OR heath 
OR lobo    db'$'hh table terminator      sysint - system dependent special funct
ions  called when transparent escape character has been typed  the second charac
ter of the sequence is idopulsyep, do 'em  lxib,600delay 600 msecs between digit
s  calldelay    dialedpoppswget back the char  cpicrdo we have a CR (done dialin
g)  jnzgtdialno, keep on dialin'  lxid,dialm2  callprtstr    tictoc mvic,dconioD
irect console input.  mvie,0FFH  callbdos  oraaHave a charcter  jnz nodialIf so 
we abort  ldamnport access the data port  ldamnprtsget modem status  ani4carrier
  jnztictocNo    ldaholddget the old modem control byte  n A (and in B).  return
s  non-skip sequence has been processed  skipsequence was not recognized  sysint
ani137O convert lower case to upper, for testing...  IF apmmdm  cpi'D'Disconnect
 Modem  jnzintc00No.  xraaYes, hangup the modem  stamnmodm  ret command has been
 executed  intc00  ENDIFapmmdm    IF heath  cpi'D' drop line  jnzintc00 no  try 
next function character    mdmdrpinmnport+acemcr (we also get here from sysbye) 
 ani0FFH-acedtr  outmnport+stamnmodmturn our carrier on    lxid,dialm3  callprts
tr  jmprskp  nodial xraaHangup the modem.  stamnmodm  retReturn to abort the com
mand.    holdddb0Modem setup code  dialmsDB'Number to Dial $'  dialm2DBCR,LF,'Aw
aiting Carrier....(any key aborts)$'  dialm3DBcr,lf,'Connected.',CR,LF,'$'    DE
LAY wait for the number of millisecs in B,C    delaypushbsave B,C  pushdsave D,E
  inrbbump B for later DCR    delay1mvie,126delay count for 1 millisec (Ap  Nace
mcr yes drop DTR  mvia,50      for half a second  calldelay  inmnport+acemcr  or
iacedtr  outmnport+acemcr      and then restore it  ret  intc00  ENDIFheath    I
F robin OR dmII OR bbI OR bbII OR cpt85xx OR heath OR lobo  cpi'B' send break  j
zsendbr yes, go do it.  return nonskip when through.  ENDIFrobin OR dmII OR bbI 
OR bbII OR cpt85xx OR heath OR lobo  IF lobohh  cpi'D'hh disconnect  jzdisconhh 
yes, go do it. nonskip return when done.  ENDIFlobo    t another character  the 
previous character is still being shifted onto the line.  Another status bit, "a
ll done", is set to indicate that the  transmitter is really idle.  sndbr1mvia,1
 select Read Register 1  outmnprts  inmnprts read the contents  ani1 test "all d
one" flag  jzsndbr1 loop until it's nonzero.    Next, set the "send break" bit t
o start the transmitter spacing.  mvia,5 select Write Register 5  outmnprts  mvi
a,0FAH Tx enable, 8 bit Tx character, Sendjmprskp take skip return - command not
 recognized.      IF robin Definitions & code to send a BREAK (ungenerically, no
 other way).    comctlequ59hVT180 communications port  crtctlequ41hVT180 crt por
t    VT180 serial port command bits    txeequ1transmit enable  dtrequ2dtr on  rx
eequ4rx enable  sndbrkequ8  rerrequ10hreset error  rtsequ20hRTS on  resetequ40hp
ort reset    Send a break to the communications port.      sendbrlxih,38500250 m
s()  ldaprta Break,  outmnprts  DTR and RTS on.    Now, delay for 30 hundredths 
of a second  mvia,30 delay count  calldelay    Time's up. Put transmitter back i
n normal state (data byte is the  same as the one in siotbl for Write Register 5
) and return.  mvia,5 select Write Register 5  outmnprts  mvia,0EAH Tx enable, 8
 bit Tx character,  outmnprts  DTR and RTS on.  ret done.  ENDIFbbI OR bbII    I
F lobohh This routine sends a break tone or disconnects a modem  (those drGet ad
dress of selected port  movc,aInto C  mvia,sndbrk+dtr  OUTC,AWant to send to por
t addressed by C  db0EDH,079HOp code for above instruction  sndbr1dcxhtiming loo
p...  mova,l  orah  jnzsndbr1...until over  ldaprtadrGet the address for the por
t  movc,aInto C  mvia,txe+dtr+rxe+rerr+rtsenable tr/rc, dtr, reset error  outc,a
Z-80 only instruction  db0EDH,079HOp code for above instruction  outcontstreset 
ports  ret  ENDIFrobin    IF dmIIthat respond to it) by setting the DTR line low
  for 300 ms.    sendbrmvia,05Hhh write register 5  calloutctlhh send it to cont
rol port  mvia,0FAHhh value to send break tone  jmpsndbr1hh    disconmvia,05Hhh 
write register 5  calloutctlhh send it to the control port  mvia,06AHhh DTR off 
and break tone on  sndbr1calloutctlhh send to control port  mvia,30hh delay coun
t for 300 ms.  calldelayhh wait a while...  mvia,05Hhh writejd this added to sen
d break on DECmate     DECmate command codes for 6120 I/O processor  oboffequ3fh
 offset of outbyt routine for 6120  prtctlequ02h port control  brdatequ06h data 
to tell 6120 to send a break  brdurequ30 duration, 30  300 ms.    sendbrlxib,(br
dat * 100h) + prtctl  c/prtctl, b/brdat  calloutbyt  lxib,brdur*100h b/duration,
 c/0  fall through into outbyt    outbytlhld1 get warm boot address  lxid,oboff 
offset of outbyt routine  dadd comput register 5  calloutctlhh get it's attentio
n  mvia,0EAHhh normal 8 bits, DTR on, RTS on, etc.  calloutctlhh restore SIO  re
t    outctlstamnprtshh  ret  ENDIFlobo      IF cpt85xxlmj send break on cpt85xx 
 sendbr    Ensure that the transmitter has finished sending buffered chars  sndb
r1inmnprts get UART status  aniTxEmpty everything sent  jzsndbr1 no, wait a bit 
more    Begin sending a break by setting bit in UART command register  mvia,3Fhe
 address  pchl branch there (a callret)    ENDIFdmII    IF bbI OR bbIIcjc send b
reak on Kaypro and bbII   Officially, a "break" is 300 milliseconds of "space" (
idle line is   "mark").  (or maybe 200 milliseconds I forget.)  The timing isn't
   usually that critical, but we'll make an attempt, at least.  Sending   too lo
ng a break can cause some modems to hang up.    sendbr  First, make sure the tra
nsmitter is really empty.  (The SIO sets  "transmitter buffer empty" when it can
 accep  N Set TxEna, DTR, RxEna, SBreak, ErrRst, RTS  outmnprts    Wait for 250 
milliseconds (using hundredths second dealy routine)  mvia,25  calldelay    Resu
me normal operation by clearing the SendBreak command bit  mvia,37hSet TxEna, DT
R, RxEna, ErrRst, RTS  outmnprts    retdone  ENDIFcpt85xx      IF heath    Send 
BREAK on H89    sendbrinmnport+acelcr  oriacesb  outmnport+acelcr set ACE break 
condition  mvia,30  calldelay wait 300 milliseconds  inmnport+acelcr  h  calldis
conhh force modem to hang up  ENDIFlobo  ret    This is the system-dependent com
mand to change the baud rate.  DE contains the two-byte value from the baud rate
 table this  value is also stored in 'speed'.  sysspd     Set the speed for the 
Brain  IF brain  ldabaudrtGet the present baud rates.  ani0fHturn off the left  
movd,aSet it aside.  mova,eGet the new baud rate.  rlcShift left 4 places.  rlc 
 rlc  rlc  orad combine with the old baud rate  ani0FFH-acesb  outmnport+acelcr 
and clear ACE break condition  ret    ENDIFheath    IF bbI OR bbII OR cpt85xx OR
 heath OR lobo    cjcDelay routine.  Called with time (hundredths of seconds) in
 A.  The inner loop delays 1001 T-states, assuming no wait states are  inserted 
this is repeated CPUSPD times, for a total delay of just  over 0.01 second. (CPU
SPD should be set to the system clock rate,  in units of 100KHz for an unmodifie
d Kaypro II, that's 25 for  2.5 MHz.  Some enterprisingstabaudrtStore the new ba
ud rates.  outbaudstSet the baud rates.  ret  ENDIFbrain     Set the speed for t
he Osborne I  IF osbrn1  mvia,osbin1Reset the ACIA  callosststWrite the control 
port  osbs1inrcWaiting loop  jnzosbs1  mova,e get the specified speed  jmposstst
Write the control reg.  ENDIFosbrn1     Set the speed for bigboard II  IF bbII  
di don't let anything between the data bytes  mvia,01000111b get the command byt
e (load time constant)  outbaudrt soul could determine whether or not the  Kaypr
o actually inserts a wait state on instruction fetch (a common  practice) if so,
 the magic number at delay2 needs to be decreased.  (We also neglect to consider
 time spent at interrupt level).    called by sendbr  destroys BC    delaymvic,c
puspd Number of times to wait 1000 T-states to    make .01 second delay  delay2m
vib,70 Number of times to execute inner loop to    make 1000 T-state delay  dela
y3dcrb 4 T-states (* 70 * output it to CTC  mova,e Get the parsed value.  outbau
drt Tell the baud rate generator.  ei end of critical section  ret  ENDIFbbII   
 hh set the speed for a lobo MAX-80  IF lobo  mova,ehh get the parsed value  set
bdstabaudrthh and send it to the baud rate port  rethh  ENDIFlobo     Set the sp
eed for bigboard I or the delphi or the CPT-85xx or Northstar  IF bbI OR delphi 
OR cpt85xx  mova,e get the parsed value  outbaudrt Tell the baud rate generator.
  cpuspd)  jnzdelay3 10 T-states (* 70 * cpuspd)  dcrc 4 T-states (* cpuspd)  jn
zdelay2 10 T-states (* cpuspd)   total delay ((14 * 70) + 14) * cpuspd     1001 
* cpuspd  dcra 4 T-states  jnzdelay 10 T-states  ret grand total ((1001 * cpuspd
) + 14) * a  ENDIFbbI OR bbII OR cpt85xx OR heath OR lobo      sysflt - system-d
ependent filter  called with character in E.  if this character should not be pr
inted, return with A  zero.  preserves bc, de, hl.  not ret  ENDIFbbI OR delphi 
OR cpt85xx OR norths     Set the speed for MicroMikko.  DE is baud rate multipli
er  IF mikko  di  lxih,txclk  movm,dLSB first (swapped in memory)  movm,eMSB las
t  lxih,rxclk  movm,d  movm,e  mvib,0"modifier" for 1 stop bit  mvia,2Test MSB o
f speed 2 (110 bps or less)  cmpe  jpmiksp1  mvib,00001000B"modifier" for 2 stop
 bits  miksp1mvia,4Select SIO Reg 4  lxih,sioac  movm,a  mvia,sion4Get values  o
rabAdd modifier  movm,ae xon,xoff,del, and nul are always discarded.  sysflt  mo
va,e get character for testing  IF mikko  cpi'O'-100OControl-O's lock keyboard  
rnz if not control-O, it's ok.  xraa don't allow control-O out.  ENDIFmikko  ret
       system-dependent processing for BYE command.    for apmmdm, heath, and lo
bo, hang up the phone.  sysbye  IF apmmdm  xraaHangup our end, too.  stamnmodm  
ENDIFapmmdm    IF heath  callmdmdrp  Sleazy but effective  ENDIFheath    IF lobo
h  NSet value (stop bits)  ei  ret  ENDIFmikko     Set the speed for Apple with 
6551 ACIA  IF ap6551  ldamnprtcjb read control port  ani0F0Hjb zap low order nyb
ble  oraejb put rate in low order nybble  stamnprtcjb send to control port  ret 
 ENDIFap6551     Set the speed for the Decision I  IF mdI  callselmdmLet's be ab
solutely sure, huh  mvia,dlab+wls1+wls0+stb Set data latch access bit  outlcrOut
 to Line Control Register  lhldspeedLoad baudrate multiplier  xchg h  db04h,'240
0$',10h,10h  db03h,'300$',80h,80h  db05h,'38400$',01h,01h  db04h,'4800$',08h,08h
  db03h,'600$',40h,40h  db04h,'9600$',04h,04h    sphtbl dbcr,lf,'   300   600  1
200  2400  4800  9600 19200 38400$'  ENDIFbbII    IF cpt85xx  spdtbldb15 15 entr
ies  db03,'110$',03h,03h  db04,'1200$',09h,09h  db05,'134.5$',04h,04h  db03,'150
$',05h,05h  db04,'1800$',0Ah,0Ah  db04,'2400$',0Bh,0Bh  db03,'300$',06h,06h  db0
4,'3600$',0Ch,0Ch  db04,'4800$',0Dh,0Dh  db mova,dGet low order byte for baud ra
te  outdlmOut to the MSB divisor port  mova,e...and the high order byte  outdllO
ut to the LSB divisor port  mvia,wls1+wls0+stbEnable Divisor Access Latch  outlc
rOut to ACE Line Control Register  xraaClear A  outierSet no interrupts  outlsrC
lear status  inmsrClear Modem Status Register  inlsrClear Line Status Register  
inrbrClear Receiver Buffers  inrbr  ret  ENDIFmdIToad Hall    IF heath    Set sp
eed f02,'50$',01h,01h  db03,'600$',07h,07h  db04,'7200$',0Eh,0Eh  db02,'75$',02h
,02h  db03,'900$',08h,08h  db04,'9600$',0Fh,0Fh    sphtbl dbcr,lf,'   50 75    1
10    134.5  150    300    600    900'  dbcr,lf,' 1200   1800   2400   3600   48
00   7200   9600$'  ENDIFcpt85xx    IF mikko  spdtbldb9h9 entries  db03h,'110$' 
 dw0369h  db04h,'1200$'  dw0050h  db03h,'150$'  dw0280h  db04h,'2400$'  dw0028h 
 db03h,'300$'  dw0140h  db04h,'4800$'  dw0014h  db03h,'600$' or H89    callmdmof
l keep the line safe from garbage  inmnport+acelcr  oriacedla  outmnport+acelcr 
access the ACE's divisor latch  mova,e low byte of speed is in E  outmnport+aced
ll set the low byte  mova,d high byte of speed is in D  outmnport+acedlh set the
 high byte  inmnport+acelcr  ani0FFH-acedla  outmnport+acelcr de-access the ACE'
s divisor latch  callmdmonl and put the ACE back on line  ret  ENDIFheath      S
peed tables   (Note that speed tables MUS dw00A0H  db02h,'75$'  dw0500h  db04h,'
9600$'  dw000ah    sphtbldbcr,lf,'  75  110  150  300  600  1200  2400  4800  96
00$'  ENDIFmikko    IF osbrn1  spdtbldb02h2 entries  db04h,'1200$',OSBI12,OSBI12
  db03h,'300$',OSBI03,OSBI03    sphtbldbcr,lf,'  300',cr,lf,' 1200$'  ENDIFosbrn
1    IF ap6551jb  spdtbldb0DHjb 13 entries  db03H,'110$',03H,03Hjb  db04H,'1200$
',08H,08Hjb  db05H,'134.5$',04H,04Hjb  db03H,'150$',05H,05Hjb  db04H,'1800$',09H
,09HT be in alphabetical order for later   lookup procedures, and must begin wit
h a value showing the total   number of entries.  The speed help tables are just
 for us poor   humans.    dbstring length,string,divisor (2 identical bytes or 1
 word)   Toad Hall    IF bbI OR brain OR delphi OR lobohh  spdtbldb10h16 entries
  db03h,'110$',02h,02h  db04h,'1200$',07h,07h  db05h,'134.5$',03h,03h  db03h,'15
0$',04h,04h  db04h,'1800$',08h,08h  db05h,'19200$',0fh,0fh  db04h,'2000$',0jb  d
b05H,'19200$',0FH,0FHjb  db04H,'2400$',0AH,0AHjb  db03H,'300$',06H,06Hjb  db04H,
'3600$',0BH,0BHjb  db04H,'4800$',0CH,0CHjb  db03H,'600$',07H,07Hjb  db04H,'7200$
',0DH,0DHjb  db04H,'9600$',0EH,0EHjb    sphtbldbcr,lf,'  110    134.5  150    30
0    600   1200   1800'  dbcr,lf,' 2400   3600   4800   7200   9600  19200$'  EN
DIFap6551    IF mdI  spdtbldb0dh 13 entries  db03h,  '110$'  dw1047  db04h, '120
0$'  dw96  db03h,  '150$'  dw768  9h,09h  db04h,'2400$',0ah,0ah  db03h,'300$',05
h,05h  db04h,'3600$',0bh,0bh  db04h,'4800$',0ch,0ch  db02h,'50$',00h,00h  db03h,
'600$',06h,06h  db04h,'7200$',0dh,0dh  db02h,'75$',01h,01h  db04h,'9600$',0eh,0e
h    sphtbl dbcr,lf,'   50 75    110    134.5  150    300    600   1200'  dbcr,l
f,' 1800   2000   2400   3600   4800   7200   9600  19200$'  ENDIFbbI OR brain O
R delphi OR lobohh    IF bbII  spdtbldb8 8 entries  db04h,'1200$',20h,20h  db05h
,'19200$',02h,02  Ndb05h,'19200$'  dw6  db04h, '2400$'  dw48  db03h,  '300$'  dw
384  db05h,'38400$'  dw3  db03h,  '450$'  dw288  db04h, '4800$'  dw24  db05h,'56
000$'  dw2  db03h,  '600$'  dw192  db02h,   '75$'  dw1536  db04h, '9600$'  dw12 
   sphtbldbcr,lf,'   75    110    150    300    450    600   1200'  dbcr,lf,' 24
00   4800   9600  19200  38400  56000$'    (Lord knows what you'll be communicat
ing with at 56000 baud, but the  Multi-I/O board literature says two places we u
se...  stainpmd2+1hh MNPORT in the overlay  staporthh inform program of the chan
ge in ports  inrahh status port  data port + 1 in the Lobo  staoutmd1+1hh store 
it at the three places...  stainpmd1+1hh we use MNPRTS...  staoutctl+1hh in the 
overlay  mova,dhh now get the baud rate port value  stagetbd+1hh store it in the
 two places we use...  stasetbd+1hh BAUDRT in the overlay  staport+1hh don't nee
d to, but keeps it consistant it'll do it, so what the heck....  might as well t
hrow it in here just to show off...sure hope the  port don't melt...)    ENDIFmd
IToad Hall    IF heath    Speed selection table for H89  (OK, so I got a little 
carried away...)      spdtbldb19 19 entries  db3,'110$'  dw1047  db4,'1200$'  dw
96  db5,'134.5$'  dw857  db4,'1800$'  dw64  db5,'19200$'  dw6  db3,'200$'  dw576
  db4,'2400$'  dw48  db3,'300$'  dw384  db4,'3600$'  dw32  db5,'38400$'  dw3  db
3,' getbdldabaudrthh get baud rate value from port  staspeedhh tell STAT. baud r
ate for each port  hh is independant of the other  ENDIFlobo    IF iobyt  mova,m
Get the I/O byte  staprtiobSave the desired IO byte for this port  inxhPoint at 
next entry  mova,mGet the output function  staprtfunSave it  ENDIFiobyt    IF io
byt AND robin  inxhPoint at next entry  mova,mGet the hardware address for the p
ort  staprtadrStore it  ENDIFiobyt AND robin  re450$'  dw256  db4,'4800$'  dw24 
 db2,'50$'  dw2304  db5,'56000$'  dw2  db3,'600$'  dw192  db4,'7200$'  dw16  db2
,'75$'  dw1536  db3,'900$'  dw128  db4,'9600$'  dw12    sphtbldbcr,lf  db'    50
    75   110 134.5   200   300   450   600   900  1200'  dbcr,lf,'  1800  2400  
3600  4800  7200  9600 19200 38400 56000$'  ENDIFheath    IF norths  spdtbldb8 8
 entries  db3,'110$',07H,07H  db4,'1200$',04H,04H  db5,'19200$',00H,00H  db4,'24
00$',03H,03H  db3,t      Port tables for Lobo MAX-80  IF lobohh   help text  prh
tbldbcr,lf,'RS-232 port A or B$'     command table  prttbldb02Hhh two entries  d
b01H,'A$',0E4H,0D0H  db01H,'B$',0E6H,0D4H  ENDIFlobo      Port tables for GENERI
C CPM 2.2  IF gener   help text  prhtbldbcr,lf,'CRT device'  dbcr,lf,'PTR device
'  dbcr,lf,'TTY device'  dbcr,lf,'UC1 device'  dbcr,lf,'UR1 device'  dbcr,lf,'UR
2 device$'     command table  prttbldb06HSix devices to choose from  db0'300$',0
6H,06H  db4,'4800$',02H,02H  db3,'600$',05H,05H  db4,'9600$',01H,01H    sphtbldb
cr,lf  db'   110   300   600  1200  2400  4800  9600 19200$'  ENDIFnorths     Th
e following conditionals were once a huge if not statement.  There   wasn't enou
gh room to add the lobo to the list, so it had to be broken   into 2, which you 
can't do with an if not.  I redid it as two ifs and   applied them to those that
 wouldn't set baud. Hal Hostetler  IF robin OR gener OR dmII OR vector OR z100 O
R 3H,'CRT$'  dwcrtptb  db03H,'PTR$'  dwptrptb  db03H,'TTY$'  dwttyptb  db03H,'UC
1$'  dwuc1ptb  db03H,'UR1$'  dwur1ptb  db03H,'UR2$'  dwur2ptb     port entry tab
le   table entries are  dbiobyte-value, BDOS output function, reserved  crtptbdb
crtio,conout,0  ptrptbdbptrio,punout,0  ttyptbdbttyio,conout,0  uc1ptbdbuc1io,co
nout,0  ur1ptbdbur1io,punout,0  ur2ptbdbur2io,punout,0  ENDIFgener      Port tab
les for DECmate II or MicroMikko    IF dmII OR mikko  trs80 OR telcon  spdtblequ
0 SET BAUD not supported.  sphtblequ0  ENDIFrobin OR gener OR dmII OR vector OR 
z100 OR trs80 OR telcon    IF mmdI OR osi OR cpm3 OR apmmdm  spdtblEQU0hh SET BA
UD not supported.  sphtblEQU0hh ran out of room above...  ENDIFmmdI OR osi OR cp
m3 OR apmmdm    This is the system-dependent SET PORT command.  HL contains the 
argument from the command table.  sysprt  IF lobohh  mova,ehh get the data port 
value and store at  staoutmd3+1hh the   N help text  prhtbldbcr,lf,'COMMUNICATIO
NS port$'     command table  prttbldb01HOnly one port known at this point  db0EH
,'COMMUNICATIONS$'  dwcomptbaddress of info     port entry table   table entries
 are  dbiobyte-value, BDOS output function, reserved  comptbdbbatio,punout,0    
ENDIFdmII OR mikko      Port tables for Robin    IF robin   help text  prhtbldbc
r,lf,'COMMUNICATIONS port'  dbcr,lf,'GENERAL purpose port'  dbcr,lf,'PRINTER por
t$'     command table  prttblarry  mvic,3for 3 bytes  lxih,buff+3point to addr +
 1  dir18cdcxhpoint to less sig. byte  mova,mget byte  rarcarry - A - carry  mov
m,aput back byte  dcrcfor all bytes (carry not mod)  jnzdir18c  dcrbshift 1 bit 
3 times  jnzdir18b  move,mget least sig byte  inxh  movd,mget most sig byte  xch
gget K free in HL  ret     the rest are CP/M 2.2 systems, so use the alloc vecto
r  cp2spcmvic,getalv Address of CP/M Allocation Vector  callbdos  xcdb03HThree e
ntries  db0EH,'COMMUNICATIONS$'  dwcomptb  db07H,'GENERAL$'  dwgppptb  db07H,'PR
INTER$'  dwprnptb     port entry table   table entries are  dbiobyte-value, BDOS
 output function, hardware port address      (control/status)    At present, the
 hardware port address is only used for sending a break.  comptbdbbatio,punout,c
omtst  gppptbdbgppio,conout,gentst  prnptbdblptio,conout,prntst    prtadrdbcomts
tspace for current hardware port address  ENDIFrobhgGet its length  lhldbmax  in
xh  lxib,0Initialize Block count to zero  dir19pushdSave allocation address  lda
xd  mvie,8set to process 8 blocks  dir20ralTest bit  jcdir20a  inxb  dir20amovd,
aSave bits  dcxh  mova,l  orah  jzdir21Quit if out of blocks  mova,dRestore bits
  dcrecount down 8 bits  jnzdir20do another bit  popdBump to next count of Alloc
ation Vector  inxd  jmpdir19process it    dir21popdClear Allocation vector fin  
  IF iobyt  prtfundbpunoutFunction to use for output to comm port  prtiobdbbatio
I/O byte to use for communicating  coniobdbdefioI/O byte to use for console  END
IFiobyt    IF NOT (iobyt OR lobo)hh  prttblequ0 SET PORT is not supported  prhtb
lequ0  ENDIFNOT iobyt OR lobo      Set up screen display for file transfer  call
ed with kermit version in DE    sysscrpushd save version for a bit  lxid,outlin 
clear screen, position cursor  callprtstr do it  poprom stack  movl,cCopy block 
to 'HL'  movh,b  ldabshiftfGet Block Shift Factor  sui3Convert from records to t
housands  rzSkip shifts if 1K blocks  dir22dadhMultiply blocks by 'K per Block' 
 dcra  jnzdir22  ret        selmdm - select modem port  selcon - select console 
port  selmdm is called before using inpmdm or outmdm  selcon is called before us
ing inpcon or outcon.  For iobyt systems, diddle the I/O byte to select console 
or comm port  For Decision I, switd get Kermit's version  IF NOT (osi OR crt) go
t cursor control  callprtstr print it  mvie,'' open bracket  calloutcon print it
 (close bracket is in outln2)  lxid,sysver get name and version of system module
  callprtstr  lxid,outln2 yes, print field names  callprtstr  ldadbgflg is debug
ging enabled  oraa  rz finished if no debugging  lxid,outln3 set up debugging fi
elds  callprtstr  ENDIFNOT (osi OR crt)  ret    Calculate free space for current
 drivches Multi I/O board to console or modem serial  port.  Toad Hall  For the 
rest, does nothing.  preserves bc, de, hl.  selmdm  IF iobyt  ldaprtiobSet up fo
r output to go to the comm port  staiobyteSwitch byte directly  ENDIFiobyt    IF
 mdI  ldagroup  orimdmgrpMask modem serial port  outgrpsel  ENDIFmdI  Toad Hall 
   ret    selcon  IF iobyt  ldaconiobSet up for output to go to the console port
  staiobyteSwitch directly  ENDIFiobyt    IF mdI  ldagroup  oricongre  returns v
alue in HL  sysspc  ldabdosvrcpm3's alloc vect may be in another bank  cpi30Hcpm
3 or later  jmcp2spcno use cp/m 2 algorithm  ldafcbIf no drive, get  oraa logged
 in drive  jzdir180  dcraFCB drive A1 normalize to be A0  jmpdir18a    dir180mvi
c,rddrv  callbdos  dir18amove,adrive in e  mvic,getfsget free space BDOS funct  
callbdosreturns free recs (3 bytes in buff..buff+2)  mvib,3conv recs to K by 3 b
it shift  dir18bxraaclear c  NpMask console serial port (1)  outgrpsel  ENDIFmdI
  Toad Hall    ret    Get character from console, or return zero.  result is ret
urned in A.  destroys bc, de, hl.    inpcon  IF NOT iobyt  mvic,dconioDirect con
sole I/O BDOS call.  mvie,0FFHInput.  callBDOS  ENDIFNOT iobyt    IF iobyt  call
bconstGet the status  oraaAnything there  rzNo, forget it  callbconinYes, get th
e character  ENDIFiobyt  ret      Output character in E to the console.  destroy
s brn.  inpmd2ldamnportIf so, get the char.  ENDIFosi OR apple    IF osbrn1  cal
losldstRead the status port  aniinputSomething there  rzNope  calloslddaRead the
 data port  ENDIFosbrn1    IF inout  Note modem port should already be selected 
for mdI.  Toad Hall  inmnprtsGet the port status into A.  aniinputSee if the inp
ut ready bit is on.  rzIf not then return.  inmnportIf so, get the char.  ENDIFi
nout  ret return with character in A      flsmdm - flc, de, hl    outcon  IF NOT
 iobyt  mvic,dconioConsole output bdos call.  callbdosOutput the char to the con
sole.  ENDIFNOT iobyt    IF iobyt  movc,eCharacter  callbcnoutto Console  ENDIFi
obyt  ret      outmdm - output a char from E to the modem.  the parity bit has b
een set as necessary.  returns nonskip bc, de, hl preserved.  outmdm  IF osi OR 
apple OR lobohh  pushh  outmd1lxih,mnprtsaddress of the port status register  ou
tmd2mova,m get port status in Aush comm line.  Modem is selected.  Currently, ju
st gets characters until none are available.    flsmdmcallinpmdm Try to get a ch
aracter  oraa Got one  jnzflsmdm If so, try for another  ret Receiver is drained
.  Return.      outlpt - output character in E to printer  console is selected. 
 preserves de.  outlpt  pushd save DE in either case    IF NOT iobyt  mvic,lstou
t  callbdosChar to printer  ENDIFNOT iobyt  IF iobyt  movc,e  callblsout  ENDIFi
obyt      anioutputLoop till ready.  jzoutmd2  outmd3lxih,mnportaddress of port 
data register  movm,e write the character  poph  ret  ENDIFosi OR apple OR lobo 
   IF osbrn1  callosldstRead the status port  anioutputLoop till ready.  jzoutmd
m  mova,e  jmposstdaWrite to the data port  ENDIFosbrn1    IF inout  inmnprtsGet
 the output done flag.  anioutputIs it set  jzoutmdmIf not, loop until it is.  m
ova,e  outmnportOutput it.  ret  ENDIFinout    IF iobypopd restore saved registe
r pair  ret      Screen manipulation routines  csrpos - move to row B, column C 
   csrpos for terminals that use a leadin sequence followed   by (row + 31.) and
 (column + 31.)    IF NOT (robin OR dmII OR vt100 OR osi OR crt OR vector)  csrp
ospushb save coordinates  lxid,curldn get cursor leadin sequence  callprtstr pri
nt it  poph restore coordinates  mova,h get row  adi(' '-1) space is row one  mo
ve,a  pushh  calloutcon output  **** Note that we enter from outpkt with the I/O
 byte already set up for    output to go to the comm port  pushh  pushb  ldaprtf
unGet the output function  movc,aInto C  callbdosAnd output the character  popb 
 poph  ret  ENDIFiobyt    IF cpm3  pushh  pushb  mvic,auxoutOutput to the aux ou
tput device  callbdos  popb  poph  ret  ENDIFcpm3      get character from modem 
return zero if none available.  for IOBYT systems, the modem port has already be
en selectet row  poph  mova,l get column  adi(' '-1) space is column one  move,a
  jmpoutcon output it and return  ENDIFNOT (robin OR dmII OR vt100 OR osi OR crt
 OR vector)    csrpos for ANSI terminals    IF robin OR dmII OR vt100  csrpospus
hb save coordinates  lxid,curldn get cursor leadin sequence  callprtstr print it
  poph peek at coordinates  pushh  then save away again  movl,h l  row  mvih,0 h
l  row  callnout output in decimal  mvie,'' followd.  destroys bc, de, hl.  inpm
dm  IF iobyt  callbconstIs Char at COMM-Port  oraasomething there  rz return if 
nothing there  callbconin data present. read data.  ENDIFiobyt    IF cpm3  mvic,
auxist  callbdosis char at auxin  oraasomething there  rzno  mvic,auxin  callbdo
sread char from auxin  ENDIFcpm3    IF osi OR apple OR lobohh  inpmd1ldamnprtsGe
t the port status into A.  aniinputSee if the input ready bit is on.  rzIf not t
hen retu  N with semicolon  calloutcon print it  poph restore column  mvih,0 hl 
 column  callnout  mvie,'H' terminate with 'move cursor' command  jmpoutcon outp
ut it and return  ENDIFrobin OR dmII OR vt100    csrpos for the Vector General. 
 It's weird.    IF vector  csrpos dcrb vector uses zero-based addressing  dcrc  
pushb save coordinates  mvie,esc print an escape  calloutcon  popd peek at coord
inates  pushd  calloutcon output column  popd  move,d   erase the character at t
he current cursor position  clrspcmvie,' '  calloutcon  mvie,bsget a backspace  
jmpoutcon     erase the current line  clrlinlxid,eralin  jmpprtstr     erase the
 whole screen, and go home. preserves b (but not c)  clrtoplxid,erascr  jmpprtst
r     Some frequently-used routines (duplicates of those in CP4MIT)  prcrlf - ou
tput a CR/LF  prtstr - output string in DE  rskp - return, skipping over error r
eturn  prcrlflxid,crlf  prtstrmvic,prstr  jmp get row  jmpoutcon output and retu
rn  ENDIFvector  IF osi OR crt systems without cursor positioning  csrposret dum
my routine referenced by linkage section  ENDIFosi OR crt       position to vari
ous fields   for the Kermits with cursor positioning, the display looks like thi
s      5   10   15   20   25   30   35        +----------------------------...  
    1       2 Kermit-80 v4.0 system      3       4 Number of packets       5 Num
ber of retries    bdos    rskppoph Get the return address  inxh Increment by thr
ee  inxh  inxh  pchl    Copy block of data  source in HL, destination in DE, byt
e count in BC  called by cp4sys, mfname    mover  IF NOT z80 8080's have to do i
t the hard way  mova,m  staxd  inxh  inxd  dcxb  mova,b  orac  jnzmover  ENDIFNO
T z80  IF z80  db0EDh,0B0h Z80 LDIR instruction  ENDIFz80  ret      Miscellaneou
s messages    crlfdbcr,lf,'$'    cfgmsgdb'configured for $'    IF    6 File name
       7 error...      8 status...      9 RPack (if debugging)...     10      11
 SPack (if debugging)...     12      13 Kermit-80  A(when finished)      IF NOT 
(osi OR crt)  scrnplxib,4*100H+20  jmpcsrpos    scrnrtlxib,5*100H+20  jmpcsrpos 
   scrflnlxib,6*100H+12  callcsrpos  clreollxid,tk  jmpprtstr    screrrlxib,7*10
0H+1  callcsrpos  jmpclreol    scrstlxib,8*100H+1  callcsrpos  jmpclreol    rppo
slxib,9*100H+8  adm3a OR tvi925 OR vt52 OR vt100 OR smrtvd 7  witmsgdb' with $' 
 ENDIFadm3a OR tvi925 OR vt52 OR vt100 OR smrtvd 7    **************************
Terminal tables****************************  IF NOT (osi OR crt) got cursor cont
rol  outln2db'',cr,lf,cr,lf,'Number of packets'  dbcr,lf,'Number of retries'  db
cr,lf,'File name$'  outln3dbcr,lf,cr,lf debugging messages  dbcr,lf,'RPack'  dbc
r,lf blank line in case of long packet  dbcr,lf,'SPack$'  ENDIFNOT (osi OR crt) 
 callcsrpos  jmpclreol    spposlxib,11*100H+8  callcsrpos  jmpclreol    screndlx
ib,13*100H+1  callcsrpos  clreoslxid,tj  jmpprtstr  ENDIFNOT (osi OR crt)    IF 
osi OR crt no cursor control  scrnpmvie,' '  jmpoutcon    scrnrtmvie,' '  callou
tcon  mvie,'%'  jmpoutcon    scrfln  screrr  scrst  screndjmpprcrlfPrint CR/LFTo
ad Hall    rpposlxid,prpack  jmpprtstr    spposlxid,pspack  jmpprtstr  ENDIFosi 
OR crt       delchr - make delete look like a backs  IF lobohh  sysverdb'Lobo MA
X-80$'  outlindbesc,'*',cr,lf,tab,tab,'$'  erascrdbesc,'*$'hh clear screen and h
ome cursor  eralindbcr,esc,'R$'hh clear line  curldndbesc,'$'hh cursor lead-in s
tring  delstrdbbs,' ',bs,bs,'$'hh adjust for echoing delete  ttabhh table start 
location  tadb0BH,'$',0,0hh cursor up  tbdb0AH,'$',0,0hh cursor down  tcdb0CH,'$
',0,0hh cursor right  tddb08H,'$',0,0hh cursor left  tedbesc,'*$',0hh pace.  Unl
ess delete is a printing  character, we just need to print a backspace. (we'll o
utput clrspc  afterwards)  For Kaypro and Vector General, delete puts a blotch o
n the screen.  For Apple and Osborne 1, delete moves but doesn't print.  delchr 
 IF bbI OR vector OR apple OR osbrn1 OR lobo  lxid,delstr  jmpprtstr  ENDIFbbI O
R vector OR apple OR osbrn1 OR lobo  IF NOT (bbI OR vector OR apple OR osbrn1)  
mvie,bsget a backspace  jmpoutcon  ENDIFNOT (bbI OR vector OR apple OR osbrn1)  
  Nclear display (homes cursor)  tfdb'$',0,0,0hh (can't) enter graphics mode  tg
db'$',0,0,0hh (can't) exit graphics mode  thdb01EH,'$',0,0hh home cursor  tidbes
c,'E$',0hh reverse linefeed (insert line)  tjdbesc,'Y$',0hh clear to end of scre
en  tkdbesc,'T$',0hh clear to end of line  ENDIFlobo      IF brain  sysverdb'Int
ertec SuperBrain$'  outlindb('A'-100O),esc,'k',cr,lf,tab,tab,'$'  erascrdb('A'-1
00O),esc,'k$' Clear screen and go home.  eralinde linefeed.  tjdbesc,'Y$',0Clear
 to end of screen.  tkdbesc,'T$',0Clear to end of line.  ENDIFapple    IF vector
  sysverdb'Vector Graphics$'  outlindb('D'-100O),cr,lf,tab,tab,'$'  erascrdb('D'
-100O),'$' Clear screen and go home.  eralindbcr,('Q'-100O),'$'Clear line.  dels
trdbbs,' ',bs,bs,'$' adjust for echoing delete character  ttabTable start locati
on.  tadb('U'-100O),'$',0,0Cursor up.  tbdb12O,'$',0,0Cursor down.  tcdb('Z'-100
O),'$',0,0Cursor rigbcr,esc,'K$'Clear line.  curldndbesc,'Y$' leadin for cursor 
positioning  ttabTable start location.  tadb('K'-100O),'$',0,0Cursor up.  tbdb12
O,'$',0,0Cursor down.  tcdb('F'-100O),'$',0,0Cursor right.  tddb'$',0,0,0(can't)
 Cursor left  tedb'$',0,0,0(can't) Clear display  tfdb'$',0,0,0(can't) Enter gra
phics mode  tgdb'$',0,0,0(can't) Exit graphics mode  thdb('A'-100O),'$',0,0Curso
r home.  tidb('K'-100O),'$',0,0Reverse linefeed.  tjdbesc,'kht.  tddb'$',0,0,0(c
an't) Cursor left  tedb'$',0,0,0(can't) Clear display  tfdb'$',0,0,0(can't) Ente
r graphics mode  tgdb'$',0,0,0(can't) Exit graphics mode  thdb('B'-100O),'$',0,0
Cursor home.  tidb('U'-100O),'$',0,0Reverse linefeed.  tjdb('P'-100O),'$',0,0Cle
ar to end of screen.  tkdb('Q'-100O),'$',0,0Clear to end of line.  ENDIFvector  
  IF telcon  sysverdb'Telcon Zorba$'  ENDIFtelcon    IF heath  sysverdb'Heath/Ze
nith 89$'  ENDIFheath    IF z100  sys$',0Clear to end of screen.  tkdbesc,'K$',0
Clear to end of line.  ENDIFbrain      IF osbrn1  sysverdb'Osborne 1$'  outlindb
1AH,cr,lf,tab,'$'(Clear screen, home cursor)  erascrdb1AH,'$'Clear screen and go
 home.  eralindbcr,esc,'T$'Clear line.  delstrdbbs,bs,'$' Adjust for delete  cur
ldndbesc,'$'Cursor lead-in  ttabTable start location.  tadb('K'-100O),'$',0,0Cur
sor up.  tbdb12O,'$',0,0Cursor down.  tcdb('L'-100O),'$',0,0Cursor right.  tdver
db'Heath/Zenith Z-100 CP/M$'  ENDIFz100    IF vt52 DEC VT52  ttytypdb'VT52$'  EN
DIFvt52    IF heath OR z100 OR telcon OR vt52  outlindbesc,'H',esc,'J',cr,lf,tab
,tab,'$'  erascrdbesc,'H',esc,'J$' Clear screen and go home.  eralindbcr,esc,'K$
'Clear line.  curldndbesc,'Y$'cursor leadin  ttabTable start location.  tadbesc,
'A$',0Cursor up.  tbdbesc,'B$',0Cursor down.  tcdbesc,'C$',0Cursor right.  tddbe
sc,'D$',0Cursor left  tedbesc,'E$',0Cleardbbs,'$',0,0Cursor left.  tedbsubt,'$',
0,0Clear screen.  tfdb'$',0,0,0(can't) Enter graphics mode  tgdb'$',0,0,0(can't)
 Exit graphics mode  thdb(''-100O),'$',0,0Cursor home.  tidb('K'-100O),'$',0,0Re
verse linefeed.  tjdbesc,'T$',0(can't) Clear to end of screen.  tkdbesc,'T$',0Cl
ear to end of line.  ENDIFosbrn1    IF apple  sysverdb'Apple II CP/M$'  outlindb
(''-100O),esc,'Y',cr,lf,'  $'  erascrdb(''-100O),esc,'Y$'Clear screen and go hom
e.  eralin display  tfdbesc,'F$',0Enter Graphics Mode  tgdbesc,'G$',0Exit Graphi
cs mode  thdbesc,'H$',0Cursor home.  tidbesc,'I$',0Reverse linefeed.  tjdbesc,'J
$',0Clear to end of screen.  tkdbesc,'K$',0Clear to end of line.  ENDIFheath OR 
z100 OR telcon OR vt52    IF trs80lb  sysverdb'TRS-80 II Lifeboat CP/M$'  outlin
dbesc,'',cr,lf,tab,tab,'$'  erascrdbesc,'$'Clear screen and go home.  eralindbcr
,esc,'T$'Clear line.  curldndbesc,'$'Cursor lead-in  ttadbcr,esc,'T$'Clear line.
  delstrdbbs,bs,'$' Adjust for delete  curldndbesc,'$'Cursor lead-in  ttabTable 
start location.  tadb('K'-100O),'$',0,0Cursor up.  tbdb12O,'$',0,0Cursor down.  
tcdb('F'-100O),'$',0,0Cursor right.  tddb'$',0,0,0(can't) Cursor left  tedb'$',0
,0,0(can't) Clear display  tfdb'$',0,0,0(can't) Enter graphics mode  tgdb'$',0,0
,0(can't) Exit graphics mode  thdb(''-100O),'$',0,0Cursor home.  tidb('K'-100O),
'$',0,0Revers  NbTable start location.  tadb0BH,'$',0,0Cursor up.  tbdb0AH,'$',0
,0Cursor down.  tcdb0CH,'$',0,0Cursor right.  tddbbs,'$',0,0Cursor left  tedbesc
,'$',0Clear display  tfdb'$',0,0,0(can't) Enter Graphics Mode  tgdb'$',0,0,0(can
't) Exit Graphics mode  thdb1EH,'$',0,0Cursor home.  tidb0BH,'$',0,0Reverse line
feed.  tjdbesc,'Y$',0Clear to end of screen.  tkdbesc,'T$',0Clear to end of line
.  ENDIFtrs80lb    IF trs80pt  sysverdb'TRS-80 I0AH,'$',0,0Cursor down.  tcdb0CH
,'$',0,0Cursor right.  tddbbs,'$',0,0Cursor left  tedbsubt,'$',0,0Clear display 
 tfdbesc,'G$',0 Enter Graphics Mode (select Greek)  tgdbesc,'A$',0 Exit Graphics
 mode (select ASCII)  thdb1EH,'$',0,0 Cursor home.UTK016  tidbesc,'E','$',0 Reve
rse linefeed. (insert line)  tjdb'W'-100O,'$',0,0 Clear to end of screen.  tkdb'
X'-100O,'$',0,0 Clear to end of line.  ENDIF  kpii    IF xer820  sysverdb'Xerox 
820$'  outlinI P+T CP/M$'  outlindb0CH,cr,lf,tab,tab,'$'  erascrdb0CH,'$'Clear s
creen and go home.  eralindbcr,01H,'$'Clear line.  curldndbesc,'Y$'Cursor lead-i
n  ttabTable start locationMust be 4 bytes each  tadb1EH,'$',0,0Cursor up.  tbdb
1FH,'$',0,0Cursor down.  tcdb1DH,'$',0,0Cursor right.  tddb1CH,'$',0,0Cursor lef
t  tedb0CH,'$',0,0Clear display  tfdb11H,'$',0,0Enter Graphics Mode  tgdb14H,'$'
,0,0Exit Graphics mode  thdb06H,'$',0,0Cursor homdbsubt,cr,lf,tab,tab,'$'  erasc
rdbsubt,'$'Clear screen and home.  eralindbcr,18H,'$'Clear line.  curldndbesc,'$
'Cursor lead-in  delstrdbbs,' ',bs,bs,'$' adjust for echoing delete character  t
tabTable start location.  tadb0BH,'$',0,0Cursor up.  tbdb0AH,'$',0,0Cursor down.
  tcdb0CH,'$',0,0Cursor right.  tddbbs,'$',0,0Cursor left  tedbsubt,'$',0,0Clear
 display  tfdb'$',0,0,0 Enter Graphics Mode (can't)  tgdb'$',0,0,0 Exit Graphics
 mode (e.  tidb1EH,'$',0,0Reverse linefeed.  tjdb02H,'$',0,0Clear to end of scre
en.  tkdb01H,'$',0,0Clear to end of line.  ENDIFtrs80pt    IF robin  sysverdb'VT
180 "Robin"$'  ENDIFrobin    IF dmII  sysverdb'DECmate II CP/M-80$'  ENDIFdmII  
  IF vt100  ttytypdb'VT100$'  ENDIFvt100    IF norths  sysverdb'Northstar Horizo
n$'  ENDIFnorths    IF robin OR dmII or vt100   Note that we cannot support Grap
hics Mode or the H19 erase-screen command   (escE), because the sequences are ca
n't)  thdb1EH,'$',0,0 Cursor home.UTK016  tidb0BH,'$',0,0 Reverse linefeed. (cur
sor up)  tjdb11H,'$',0,0 Clear to end of screen.  tkdb18H,'$',0,0 Clear to end o
f line.  ENDIF  xer820    IF mikko  sysverdb'MikroMikko$'  outlindbsubt,cr,lf,ta
b,'$'  erascrdbsubt,'$'Clear screen and go home.  eralindbcr,1CH,'$'Clear line. 
 curldndbesc,'$'cursor leadin  ttabTable start location.  tadb0BH,'$',0,0Cursor 
up.  tbdb0AH,'$',0,0Cursor down.  tmore than three bytes.  outlindbesc,3CH,esc,'
H',esc,'J',cr,lf,tab,tab,'$'  erascrdbesc,'H',esc,'J$' Clear screen and go home.
  eralindbcr,esc,'K$'Clear line.  curldndbesc,'$' Cursor leadin  ttab  tadbesc,'
A$' Cursor up.  tbdbesc,'B$' Cursor down.  tcdbesc,'C$' Cursor right.  tddbesc,'
D$' Cursor left  tedb'$',0,0,0 (can't) Clear display  tfdb'$',0,0,0 (don't) Ente
r Graphics Mode  tgdb'$',0,0,0 (don't) Exit Graphics mode  thdbesc,'H$cdb0CH,'$'
,0,0Cursor right.  tddbbs,'$',0,0Cursor left  tedbsubt,'$',0,0Clear display  tfd
b'$',0,0,0(can't) Enter Graphics Mode  tgdb'$',0,0,0(can't) Exit Graphics mode  
thdb1EH,'$',0,0Cursor home.  tidb'$',0,0,0(can't) Reverse linefeed.  tjdb1cH,'$'
,0,0Clear to end of screen.  tkdb1cH,'$',0,0Clear to end of line.  ENDIFmikko   
 IF gener or cpm3  sysverdb'Generic CP/M-80$'  ENDIFgener or cpm3    IF bbII  sy
sverdb'Big Board II$'  ENDIFbbII    I' Cursor home.  tidbesc,'M$',0 Reverse line
feed.  tjdbesc,'J$' Clear to end of screen.  tkdbesc,'K$' Clear to end of line. 
 ENDIFrobin OR dmII or vt100    IF kpii  sysverdb'Kaypro II$'  outlindbsubt,cr,l
f,tab,tab,'$'  erascrdbsubt,'$'Clear screen and home.  eralindbcr,18H,'$'Clear l
ine.  curldndbesc,'$'Cursor lead-in  delstrdbbs,' ',bs,bs,'$' adjust for echoing
 delete character  ttabTable start location.  tadb0BH,'$',0,0Cursor up.  tbdb  N
F cpt85xx  sysverdb'CPT-85xx under CompuPak CP/M$'  ENDIFcpt85xx    IF mdI  sysv
erdb'Morrow Decision I$'  ENDIFmdI  Toad Hall    IF mmdI  sysverdb'MicroDecision
 I$'  ENDIFmmdI    IF osi  sysverdb'Ohio Scientific$'  ENDIFosi    IF osi OR crt
  outlindbcr,lf,'Starting ...$'  erascrequcrlf"Home & clear" (best we can do).  
eralindb'U',cr,lf,'$'Clear line.  prpackdbcr,lf,'RPack $'  pspackdbcr,lf,'SPack 
$'  ttabequ0 no VT52 table  ENDIFosi OR crt    IF tvi925  (incadb('K'-100O),'$',
0,0Cursor up.  tbdb12O,'$',0,0Cursor down.  tcdb('A'-100O),'$',0,0Cursor right. 
 tddb('H'-100O),'$',0,0Cursor left.  tedb('L'-100O),'$',0,0Clear screen and home
 cursor  tfdb'$',0,0,0(can't) Enter Graphics mode  tgdb'$',0,0,0(can't) Exit Gra
phics mode  thdb('Z'-100O),'$',0,0Cursor home.  tidb('K'-100O),'$',0,0Reverse li
nefeed.  tjdbesc,'Y$',0Clear to end of screen.  tkdbesc,'T$',0Clear to end of li
ne.  ENDIFsmrtvd    ovlendequ$identally, works fine for Freedom 100 also  Toad H
all)  adm3a entry and tvi925 entry separated to remove warning message.  ttytypd
b'TVI925$'  outlindb'Z'-64,0,0,cr,lf,'$'  erascrdb'Z'-64,0,0,'$'Clear screen and
 home  eralindbesc,'Y$',0Clear to end of sreen  curldndbcr,esc,'$'Cursor lead-in
  ttabTable start location(MUST be 4 bytes each)  tadb'K'-64,'$',0,0Cursor up, s
top at top  tbdb'V'-64,'$',0,0Cursor down, stop at bottom  tcdb'L'-64,'$',0,0Cur
sor right, End of overlay    END   get column  adi(' '-1) space is column one  m
ove,a  jmpoutcon output it and return  ENDIFNOT (robin OR dmII OR vt100 OR osi O
R crt OR vector)    csrpos for ANSI terminals    IF robin OR dmII OR vt100  csrp
ospushb save coordinates  lxid,curldn get cursor leadin sequence  callprtstr pri
nt it  poph peek at coordinates  pushh  then save away again  movl,h l  row  mvi
h,0 hl  row  callnout output in decimal  mvie,'' follow stop at right  tddb'H'-6
4,'$',0,0Cursor left, stop at left  tedb'Z'-64,0,0,'$'Clear display (2 pad nulls
)  tfdb'$',0,0,0(can't) Enter Graphics mode  tgdb'$',0,0,0(can't) Exit Graphics 
mode  thdb1EH,'$',0,0Cursor home  tidbesc,'j$',0Reverse linefeed, scroll  tjdbes
c,'Y$',0Clear to end of sreen  tkdbesc,'T$',0Clear to end of line  ENDIFtvi925  
  IF adm3a  ttytypdb'ADM3A$'  outlindb'Z'-64,0,0,cr,lf,'$'  erascrdb'Z'-64,0,0,'
$'Clear screen and home  e with semicolon  calloutcon print it  poph restore col
umn  mvih,0 hl  column  callnout  mvie,'H' terminate with 'move cursor' command 
 jmpoutcon output it and return  ENDIFrobin OR dmII OR vt100    csrpos for the V
ector General.  It's weird.    IF vector  csrpos dcrb vector uses zero-based add
ressing  dcrc  pushb save coordinates  mvie,esc print an escape  calloutcon  pop
d peek at coordinates  pushd  calloutcon output column  popd  move,dralindbesc,'
Y$',0Clear to end of sreen  curldndbcr,esc,'$'Cursor lead-in  ttabTable start lo
cation(MUST be 4 bytes each)  tadb'K'-64,'$',0,0Cursor up, stop at top  tbdb'J'-
64,'$',0,0Cursor down CTRL-J  tcdb'L'-64,'$',0,0Cursor right, stop at right  tdd
b'H'-64,'$',0,0Cursor left, stop at left  tedb'Z'-64,0,0,'$'Clear display (2 pad
 nulls)  tfdb'$',0,0,0(can't) Enter Graphics mode  tgdb'$',0,0,0(can't) Exit Gra
phics mode  thdb1EH,'$',0,0Cursor get row  jmpoutcon output and return  ENDIFvec
tor  IF osi OR crt systems without cursor positioning  csrposret dummy routine r
eferenced by linkage section  ENDIFosi OR crt       position to various fields  
 for the Kermits with cursor positioning, the display looks like this      5   1
0   15   20   25   30   35        +----------------------------...      1       
2 Kermit-80 v4.0 system      3       4 Number of packets       5 Number of retri
es     home  tidb'K'-64,'$',0,0Reverse linefeed  tjdb'$',0,0,0(can't) Clear to e
nd of screen  tkdb'$',0,0,0(can't) Clear to end of line  ENDIFadm3a    IF delphi
 7 new system  sysverdb'Digicomp Delphi 100$'  endifdelphi    IF smrtvd 7 new te
rminal  ttytypdb'Smartvid-80$'  outlindbesc,'+',cr,lf,tab,tab,'$'  eralindbcr,es
c,'T$'Clear to end of line.  erascrdbesc,'+$' Clear screen and go home.  curldnd
besc,'$'Cursor lead-in  ttabTable start location.  t  N   6 File name       7 er
ror...      8 status...      9 RPack (if debugging)...     10      11 SPack (if 
debugging)...     12      13 Kermit-80  A(when finished)      IF NOT (osi OR crt
)  scrnplxib,4*100H+20  jmpcsrpos    scrnrtlxib,5*100H+20  jmpcsrpos    scrflnlx
ib,6*100H+12  callcsrpos  clreollxid,tk  jmpprtstr    screrrlxib,7*100H+1  callc
srpos  jmpclreol    scrstlxib,8*100H+1  callcsrpos  jmpclreol    rpposlxib,9*100
H+8  adm3a OR tvi925 OR vt52 OR vt100 OR smrtvd 7  witmsgdb' with $'  ENDIFadm3a
 OR tvi925 OR vt52 OR vt100 OR smrtvd 7    **************************Terminal ta
bles****************************  IF NOT (osi OR crt) got cursor control  outln2
db'',cr,lf,cr,lf,'Number of packets'  dbcr,lf,'Number of retries'  dbcr,lf,'File
 name$'  outln3dbcr,lf,cr,lf debugging messages  dbcr,lf,'RPack'  dbcr,lf blank 
line in case of long packet  dbcr,lf,'SPack$'  ENDIFNOT (osi OR crt)  callcsrpos
  jmpclreol    spposlxib,11*100H+8  callcsrpos  jmpclreol    screndlxib,13*100H+
1  callcsrpos  clreoslxid,tj  jmpprtstr  ENDIFNOT (osi OR crt)    IF osi OR crt 
no cursor control  scrnpmvie,' '  jmpoutcon    scrnrtmvie,' '  calloutcon  mvie,
'%'  jmpoutcon    scrfln  screrr  scrst  screndjmpprcrlfPrint CR/LFToad Hall    
rpposlxid,prpack  jmpprtstr    spposlxid,pspack  jmpprtstr  ENDIFosi OR crt     
  delchr - make delete look like a backs  IF lobohh  sysverdb'Lobo MAX-80$'  out
lindbesc,'*',cr,lf,tab,tab,'$'  erascrdbesc,'*$'hh clear screen and home cursor 
 eralindbcr,esc,'R$'hh clear line  curldndbesc,'$'hh cursor lead-in string  dels
trdbbs,' ',bs,bs,'$'hh adjust for echoing delete  ttabhh table start location  t
adb0BH,'$',0,0hh cursor up  tbdb0AH,'$',0,0hh cursor down  tcdb0CH,'$',0,0hh cur
sor right  tddb08H,'$',0,0hh cursor left  tedbesc,'*$',0hh pace.  Unless delete 
is a printing  character, we just need to print a backspace. (we'll output clrsp
c  afterwards)  For Kaypro and Vector General, delete puts a blotch on the scree
n.  For Apple and Osborne 1, delete moves but doesn't print.  delchr  IF bbI OR 
vector OR apple OR osbrn1 OR lobo  lxid,delstr  jmpprtstr  ENDIFbbI OR vector OR
 apple OR osbrn1 OR lobo  IF NOT (bbI OR vector OR apple OR osbrn1)  mvie,bsget 
a backspace  jmpoutcon  ENDIFNOT (bbI OR vector OR apple OR osbrn1)  clear displ
ay (homes cursor)  tfdb'$',0,0,0hh (can't) enter graphics mode  tgdb'$',0,0,0hh 
(can't) exit graphics mode  thdb01EH,'$',0,0hh home cursor  tidbesc,'E$',0hh rev
erse linefeed (insert line)  tjdbesc,'Y$',0hh clear to end of screen  tkdbesc,'T
$',0hh clear to end of line  ENDIFlobo      IF brain  sysverdb'Intertec SuperBra
in$'  outlindb('A'-100O),esc,'k',cr,lf,tab,tab,'$'  erascrdb('A'-100O),esc,'k$' 
Clear screen and go home.  eralind   erase the character at the current cursor p
osition  clrspcmvie,' '  calloutcon  mvie,bsget a backspace  jmpoutcon     erase
 the current line  clrlinlxid,eralin  jmpprtstr     erase the whole screen, and 
go home. preserves b (but not c)  clrtoplxid,erascr  jmpprtstr     Some frequent
ly-used routines (duplicates of those in CP4MIT)  prcrlf - output a CR/LF  prtst
r - output string in DE  rskp - return, skipping over error return  prcrlflxid,c
rlf  prtstrmvic,prstr  jmpbcr,esc,'K$'Clear line.  curldndbesc,'Y$' leadin for c
ursor positioning  ttabTable start location.  tadb('K'-100O),'$',0,0Cursor up.  
tbdb12O,'$',0,0Cursor down.  tcdb('F'-100O),'$',0,0Cursor right.  tddb'$',0,0,0(
can't) Cursor left  tedb'$',0,0,0(can't) Clear display  tfdb'$',0,0,0(can't) Ent
er graphics mode  tgdb'$',0,0,0(can't) Exit graphics mode  thdb('A'-100O),'$',0,
0Cursor home.  tidb('K'-100O),'$',0,0Reverse linefeed.  tjdbesc,'kbdos    rskppo
ph Get the return address  inxh Increment by three  inxh  inxh  pchl    Copy blo
ck of data  source in HL, destination in DE, byte count in BC  called by cp4sys,
 mfname    mover  IF NOT z80 8080's have to do it the hard way  mova,m  staxd  i
nxh  inxd  dcxb  mova,b  orac  jnzmover  ENDIFNOT z80  IF z80  db0EDh,0B0h Z80 L
DIR instruction  ENDIFz80  ret      Miscellaneous messages    crlfdbcr,lf,'$'   
 cfgmsgdb'configured for $'    IF   N$',0Clear to end of screen.  tkdbesc,'K$',0
Clear to end of line.  ENDIFbrain      IF osbrn1  sysverdb'Osborne 1$'  outlindb
1AH,cr,lf,tab,'$'(Clear screen, home cursor)  erascrdb1AH,'$'Clear screen and go
 home.  eralindbcr,esc,'T$'Clear line.  delstrdbbs,bs,'$' Adjust for delete  cur
ldndbesc,'$'Cursor lead-in  ttabTable start location.  tadb('K'-100O),'$',0,0Cur
sor up.  tbdb12O,'$',0,0Cursor down.  tcdb('L'-100O),'$',0,0Cursor right.  tdver
db'Heath/Zenith Z-100 CP/M$'  ENDIFz100    IF vt52 DEC VT52  ttytypdb'VT52$'  EN
DIFvt52    IF heath OR z100 OR telcon OR vt52  outlindbesc,'H',esc,'J',cr,lf,tab
,tab,'$'  erascrdbesc,'H',esc,'J$' Clear screen and go home.  eralindbcr,esc,'K$
'Clear line.  curldndbesc,'Y$'cursor leadin  ttabTable start location.  tadbesc,
'A$',0Cursor up.  tbdbesc,'B$',0Cursor down.  tcdbesc,'C$',0Cursor right.  tddbe
sc,'D$',0Cursor left  tedbesc,'E$',0Cleardbbs,'$',0,0Cursor left.  tedbsubt,'$',
0,0Clear screen.  tfdb'$',0,0,0(can't) Enter graphics mode  tgdb'$',0,0,0(can't)
 Exit graphics mode  thdb(''-100O),'$',0,0Cursor home.  tidb('K'-100O),'$',0,0Re
verse linefeed.  tjdbesc,'T$',0(can't) Clear to end of screen.  tkdbesc,'T$',0Cl
ear to end of line.  ENDIFosbrn1    IF apple  sysverdb'Apple II CP/M$'  outlindb
(''-100O),esc,'Y',cr,lf,'  $'  erascrdb(''-100O),esc,'Y$'Clear screen and go hom
e.  eralin display  tfdbesc,'F$',0Enter Graphics Mode  tgdbesc,'G$',0Exit Graphi
cs mode  thdbesc,'H$',0Cursor home.  tidbesc,'I$',0Reverse linefeed.  tjdbesc,'J
$',0Clear to end of screen.  tkdbesc,'K$',0Clear to end of line.  ENDIFheath OR 
z100 OR telcon OR vt52    IF trs80lb  sysverdb'TRS-80 II Lifeboat CP/M$'  outlin
dbesc,'',cr,lf,tab,tab,'$'  erascrdbesc,'$'Clear screen and go home.  eralindbcr
,esc,'T$'Clear line.  curldndbesc,'$'Cursor lead-in  ttadbcr,esc,'T$'Clear line.
  delstrdbbs,bs,'$' Adjust for delete  curldndbesc,'$'Cursor lead-in  ttabTable 
start location.  tadb('K'-100O),'$',0,0Cursor up.  tbdb12O,'$',0,0Cursor down.  
tcdb('F'-100O),'$',0,0Cursor right.  tddb'$',0,0,0(can't) Cursor left  tedb'$',0
,0,0(can't) Clear display  tfdb'$',0,0,0(can't) Enter graphics mode  tgdb'$',0,0
,0(can't) Exit graphics mode  thdb(''-100O),'$',0,0Cursor home.  tidb('K'-100O),
'$',0,0ReversbTable start location.  tadb0BH,'$',0,0Cursor up.  tbdb0AH,'$',0,0C
ursor down.  tcdb0CH,'$',0,0Cursor right.  tddbbs,'$',0,0Cursor left  tedbesc,'$
',0Clear display  tfdb'$',0,0,0(can't) Enter Graphics Mode  tgdb'$',0,0,0(can't)
 Exit Graphics mode  thdb1EH,'$',0,0Cursor home.  tidb0BH,'$',0,0Reverse linefee
d.  tjdbesc,'Y$',0Clear to end of screen.  tkdbesc,'T$',0Clear to end of line.  
ENDIFtrs80lb    IF trs80pt  sysverdb'TRS-80 Ie linefeed.  tjdbesc,'Y$',0Clear to
 end of screen.  tkdbesc,'T$',0Clear to end of line.  ENDIFapple    IF vector  s
ysverdb'Vector Graphics$'  outlindb('D'-100O),cr,lf,tab,tab,'$'  erascrdb('D'-10
0O),'$' Clear screen and go home.  eralindbcr,('Q'-100O),'$'Clear line.  delstrd
bbs,' ',bs,bs,'$' adjust for echoing delete character  ttabTable start location.
  tadb('U'-100O),'$',0,0Cursor up.  tbdb12O,'$',0,0Cursor down.  tcdb('Z'-100O),
'$',0,0Cursor rigI P+T CP/M$'  outlindb0CH,cr,lf,tab,tab,'$'  erascrdb0CH,'$'Cle
ar screen and go home.  eralindbcr,01H,'$'Clear line.  curldndbesc,'Y$'Cursor le
ad-in  ttabTable start locationMust be 4 bytes each  tadb1EH,'$',0,0Cursor up.  
tbdb1FH,'$',0,0Cursor down.  tcdb1DH,'$',0,0Cursor right.  tddb1CH,'$',0,0Cursor
 left  tedb0CH,'$',0,0Clear display  tfdb11H,'$',0,0Enter Graphics Mode  tgdb14H
,'$',0,0Exit Graphics mode  thdb06H,'$',0,0Cursor homht.  tddb'$',0,0,0(can't) C
ursor left  tedb'$',0,0,0(can't) Clear display  tfdb'$',0,0,0(can't) Enter graph
ics mode  tgdb'$',0,0,0(can't) Exit graphics mode  thdb('B'-100O),'$',0,0Cursor 
home.  tidb('U'-100O),'$',0,0Reverse linefeed.  tjdb('P'-100O),'$',0,0Clear to e
nd of screen.  tkdb('Q'-100O),'$',0,0Clear to end of line.  ENDIFvector    IF te
lcon  sysverdb'Telcon Zorba$'  ENDIFtelcon    IF heath  sysverdb'Heath/Zenith 89
$'  ENDIFheath    IF z100  sys  Ne.  tidb1EH,'$',0,0Reverse linefeed.  tjdb02H,'
$',0,0Clear to end of screen.  tkdb01H,'$',0,0Clear to end of line.  ENDIFtrs80p
t    IF robin  sysverdb'VT180 "Robin"$'  ENDIFrobin    IF dmII  sysverdb'DECmate
 II CP/M-80$'  ENDIFdmII    IF vt100  ttytypdb'VT100$'  ENDIFvt100    IF norths 
 sysverdb'Northstar Horizon$'  ENDIFnorths    IF robin OR dmII or vt100   Note t
hat we cannot support Graphics Mode or the H19 erase-screen command   (escE), be
cause the sequences are can't)  thdb1EH,'$',0,0 Cursor home.UTK016  tidb0BH,'$',
0,0 Reverse linefeed. (cursor up)  tjdb11H,'$',0,0 Clear to end of screen.  tkdb
18H,'$',0,0 Clear to end of line.  ENDIF  xer820    IF mikko  sysverdb'MikroMikk
o$'  outlindbsubt,cr,lf,tab,'$'  erascrdbsubt,'$'Clear screen and go home.  eral
indbcr,1CH,'$'Clear line.  curldndbesc,'$'cursor leadin  ttabTable start locatio
n.  tadb0BH,'$',0,0Cursor up.  tbdb0AH,'$',0,0Cursor down.  tmore than three byt
es.  outlindbesc,3CH,esc,'H',esc,'J',cr,lf,tab,tab,'$'  erascrdbesc,'H',esc,'J$'
 Clear screen and go home.  eralindbcr,esc,'K$'Clear line.  curldndbesc,'$' Curs
or leadin  ttab  tadbesc,'A$' Cursor up.  tbdbesc,'B$' Cursor down.  tcdbesc,'C$
' Cursor right.  tddbesc,'D$' Cursor left  tedb'$',0,0,0 (can't) Clear display  
tfdb'$',0,0,0 (don't) Enter Graphics Mode  tgdb'$',0,0,0 (don't) Exit Graphics m
ode  thdbesc,'H$cdb0CH,'$',0,0Cursor right.  tddbbs,'$',0,0Cursor left  tedbsubt
,'$',0,0Clear display  tfdb'$',0,0,0(can't) Enter Graphics Mode  tgdb'$',0,0,0(c
an't) Exit Graphics mode  thdb1EH,'$',0,0Cursor home.  tidb'$',0,0,0(can't) Reve
rse linefeed.  tjdb1cH,'$',0,0Clear to end of screen.  tkdb1cH,'$',0,0Clear to e
nd of line.  ENDIFmikko    IF gener or cpm3  sysverdb'Generic CP/M-80$'  ENDIFge
ner or cpm3    IF bbII  sysverdb'Big Board II$'  ENDIFbbII    I' Cursor home.  t
idbesc,'M$',0 Reverse linefeed.  tjdbesc,'J$' Clear to end of screen.  tkdbesc,'
K$' Clear to end of line.  ENDIFrobin OR dmII or vt100    IF kpii  sysverdb'Kayp
ro II$'  outlindbsubt,cr,lf,tab,tab,'$'  erascrdbsubt,'$'Clear screen and home. 
 eralindbcr,18H,'$'Clear line.  curldndbesc,'$'Cursor lead-in  delstrdbbs,' ',bs
,bs,'$' adjust for echoing delete character  ttabTable start location.  tadb0BH,
'$',0,0Cursor up.  tbdbF cpt85xx  sysverdb'CPT-85xx under CompuPak CP/M$'  ENDIF
cpt85xx    IF mdI  sysverdb'Morrow Decision I$'  ENDIFmdI  Toad Hall    IF mmdI 
 sysverdb'MicroDecision I$'  ENDIFmmdI    IF osi  sysverdb'Ohio Scientific$'  EN
DIFosi    IF osi OR crt  outlindbcr,lf,'Starting ...$'  erascrequcrlf"Home & cle
ar" (best we can do).  eralindb'U',cr,lf,'$'Clear line.  prpackdbcr,lf,'RPack $'
  pspackdbcr,lf,'SPack $'  ttabequ0 no VT52 table  ENDIFosi OR crt    IF tvi925 
 (inc0AH,'$',0,0Cursor down.  tcdb0CH,'$',0,0Cursor right.  tddbbs,'$',0,0Cursor
 left  tedbsubt,'$',0,0Clear display  tfdbesc,'G$',0 Enter Graphics Mode (select
 Greek)  tgdbesc,'A$',0 Exit Graphics mode (select ASCII)  thdb1EH,'$',0,0 Curso
r home.UTK016  tidbesc,'E','$',0 Reverse linefeed. (insert line)  tjdb'W'-100O,'
$',0,0 Clear to end of screen.  tkdb'X'-100O,'$',0,0 Clear to end of line.  ENDI
F  kpii    IF xer820  sysverdb'Xerox 820$'  outlinidentally, works fine for Free
dom 100 also  Toad Hall)  adm3a entry and tvi925 entry separated to remove warni
ng message.  ttytypdb'TVI925$'  outlindb'Z'-64,0,0,cr,lf,'$'  erascrdb'Z'-64,0,0
,'$'Clear screen and home  eralindbesc,'Y$',0Clear to end of sreen  curldndbcr,e
sc,'$'Cursor lead-in  ttabTable start location(MUST be 4 bytes each)  tadb'K'-64
,'$',0,0Cursor up, stop at top  tbdb'V'-64,'$',0,0Cursor down, stop at bottom  t
cdb'L'-64,'$',0,0Cursor right,dbsubt,cr,lf,tab,tab,'$'  erascrdbsubt,'$'Clear sc
reen and home.  eralindbcr,18H,'$'Clear line.  curldndbesc,'$'Cursor lead-in  de
lstrdbbs,' ',bs,bs,'$' adjust for echoing delete character  ttabTable start loca
tion.  tadb0BH,'$',0,0Cursor up.  tbdb0AH,'$',0,0Cursor down.  tcdb0CH,'$',0,0Cu
rsor right.  tddbbs,'$',0,0Cursor left  tedbsubt,'$',0,0Clear display  tfdb'$',0
,0,0 Enter Graphics Mode (can't)  tgdb'$',0,0,0 Exit Graphics mode (  N stop at 
right  tddb'H'-64,'$',0,0Cursor left, stop at left  tedb'Z'-64,0,0,'$'Clear disp
lay (2 pad nulls)  tfdb'$',0,0,0(can't) Enter Gsor left, stop at left  tedb'Z'-6
4,0,0,'$'Clear display (2 pad nulls)  tfdb'$',0,0,0(can't) Enter Graphics mode  
tgdb'$',0,0,0(can't) Exit Graphics mode  thdb1EH,'$',0,0Cursor home  tidbesc,'j$
',0Reverse linefeed, scroll  tjdbesc,'Y$',0Clear to end of sreen  tkdbesc,'T$',0
Clear to end of line  ENDIFtvi925    IF ad CP4TT.ASM  KERMIT - (Celtic for "FREE
")    This is the CP/M-80 implementation of the Columbia University  KERMIT file
 transfer protocol.    Version 4.0    Copyright June 1981,1982,1983,1984,1985  C
olumbia University     Originally written by Bill Catchings of the Columbia Univ
ersity Center for   Computing Activities, 612 W. 115th St., New York, NY 10025. 
    Contributions by Frank da Cruz, Daphne Tzoar, Bernie Eiben,   Bruce Tanner, 
Nick Bush, Greg Small, Kimmo Laaksonen, Jeff Damens,m3a  ttytypdb'ADM3A$'  outli
ndb'Z'-64,0,0,cr,lf,'$'  erascrdb'Z'-64,0,0,'$'Clear screen and home  eralindbes
c,'Y$',0Clear to end of sreen  curldndbcr,esc,'$'Cursor lead-in  ttabTable start
 location(MUST be 4 bytes each)  tadb'K'-64,'$',0,0Cursor up, stop at top  tbdb'
J'-64,'$',0,0Cursor down CTRL-J  tcdb'L'-64,'$',0,0Cursor right, stop at right  
tddb'H'-64,'$',0,0Cursor left, stop at left  tedb'Z'-64,0,0,'$'Clear display (2 
pad nulls)  tfdb'$', and many   others.    This file contains the code for the T
RANSMIT and CONNECT commands,  which communicate with a host which is not runnin
g KERMIT.     revision history   edit 4 13-Jan-85 by Vanya J.Cooper Pima Commun.
 College Tel 602-884-6809    pcc00228-Dec-84modulescp4tt,cp4utl  Add connect mod
e escP command to toggle printer on  and off.  Conflicts with "official" recomme
nded commands  in protocol manual, but I don't think CP/M will ever get  a PUSH 
command.    pcc003-pcc00,0,0(can't) Enter Graphics mode  tgdb'$',0,0,0(can't) Ex
it Graphics mode  thdb1EH,'$',0,0Cursor home  tidb'K'-64,'$',0,0Reverse linefeed
  tjdb'$',0,0,0(can't) Clear to end of screen  tkdb'$',0,0,0(can't) Clear to end
 of line  ENDIFadm3a    IF delphi 7 new system  sysverdb'Digicomp Delphi 100$'  
endifdelphi    IF smrtvd 7 new terminal  ttytypdb'Smartvid-80$'  outlindbesc,'+'
,cr,lf,tab,tab,'$'  eralindbcr,esc,'T$'Clear to end of line.  erascrdbesc052-Jan
-85vjcmodulescp4mit,cp4tt,cp4utl  These edits must all be installed together and
 change the way  logging is handled.  The log file spec is moved to a separate  
fcb, and not opened until an actual CONNECT command is given.  This takes care o
f a NASTY bug that if you used any other file  command between the LOG and CONNE
CT, the log file would get  written over the last file used.  This also allows l
ogging to  be "permanently" enabled until an CLOSE (new command) for all  CONNEC
T ses,'+$' Clear screen and go home.  curldndbesc,'$'Cursor lead-in  ttabTable s
tart location.  tadb('K'-100O),'$',0,0Cursor up.  tbdb12O,'$',0,0Cursor down.  t
cdb('A'-100O),'$',0,0Cursor right.  tddb('H'-100O),'$',0,0Cursor left.  tedb('L'
-100O),'$',0,0Clear screen and home cursor  tfdb'$',0,0,0(can't) Enter Graphics 
mode  tgdb'$',0,0,0(can't) Exit Graphics mode  thdb('Z'-100O),'$',0,0Cursor home
.  tidb('K'-100O),'$',0,0Reverse linefeed.  tjdbsions, like most other kermits d
o.  If a log file  already exists, it will be appended to.  Also add two new  CO
NNECT mode commands escQ to suspend logging and escR to  resume.  escR means som
ething else during TRANSMIT, but  logging is never on then, so there shouldn't b
e any conflict.  I also changed the write code, so that it can handle one more  
character after the XOFF is send to stop the host.  This allows  a little "slop"
 for systems that don't stop immediately (such  as TOPS10)esc,'Y$',0Clear to end
 of screen  tk     db      esc,'T$',0              Clear to end of line  ENDIFsm
rtvd  ovlend  equ     $                       End of overlay                    
END                 N         , but it didn't help much.    pcc0082-Jan-85vjcmod
ulescp4def,cp4tt,cp4utl  Keyboard input during CONNECT mode can get locked out i
f  there is enough input from the modem port to keep prtchr  busy.  This can hap
pen for example, if the printer is running  at the same speed as the modem line,
 leaving you helpless to  turn it off or abort the host.  Add a fairness count, 
so that  at least every prfair characters we look at console input.    pcc0124-J
an-85vjcmodulescp4mit,cp4tt,cp4utl  e.  cpi0FFHSucceed  jnzxmit1  lxid,erms15  c
allprtstrDisplay error msg.  jmpkermit    xmit1lxid,inms19Output start message. 
 callprtstr  callescprPrint the escape character.  lxid,inms20Output 2nd part.  
callprtstr  callescprPrint the escape character.  lxid,inms21Print the rest.  ca
llprtstr  mvia,1Start file I/O.  stafileio  xraaClear XOFF flag.  staxofflg   fa
ll through into xnext...    assemble another line from the disk file.  here from
Use the big buffer for the log file.  Move the log file back  into the common fc
b and only save the drive, name, and  extension between connects.  Add new routi
nes to cp4utl to  create or append to an existing file, and to conditionally  ad
vance buffers only if in memory.  Remove edit pcc003 that  allows one more chara
cter after the xoff, since it didn't  really work very well and does not fit in 
well with the way  the buffer advancing routines are set up.  If someone still  
thinks this woul previous page, rexmit    xnextcallprtchr Copy characters from c
omm line to console  mvic,consta  until user types anything on the console.  cal
lbdos  oraa  jzxnext nothing at console yet.  ldaeoflagEOF encountered  oraa  jn
zxendYes, finish.  xraaReset line buffer counter.  movc,a  stacmaflgReset carria
ge return flag.  lxid,cmdbufUse comnd buffer as line buffer.  lhldbufpnt Get cur
rent buffer pointer.  ldachrcnt Get current byte count  movb,a  d be useful, it 
could be put back in with a  little more work.    While testing this edit, I als
o noticed another bug that  the command parsing routines do not limit or check t
he  length of command lines or file specs, trashing what ever  comes after them.
  Currently because of where the fcb and  command buffer are located, this does 
not usually cause a  problem, but could if an extremely long line was typed in, 
 or in the future multiple fcbs defined elsewhere in memory  were used.  Mayin B
  xmit30dcrb Assume there's a character there  jpxmit2 If there was, proceed.  c
allinbuf There wasn't.  Try for another buffer.   jmpxmit38 End of file.  lhldbu
fpnt Got another buffer.  Get new pointer in HL  ldachrcnt  and new byte count  
movb,a  in B  xmit2mova,mGet a character from disk buffer.  inxh  ani7FHMask 7 b
its.  jzxmit30Skip nulls.  cpicrCarriage return  jzxmit32  cpisubtCTRL-Z (substi
tute)  jzxmit37  cpilfLine feed be this should be put on the bug list  somewhere
.     edit 3 July 27, 1984  Allow assembly with LASM to CP4TT is linked by CP4PK
T, and links  to CP4CPM remove exclamation points so as not to confuse LASM.  Ad
d Toad Hall TACtrap to TRANSMIT command (TAC intercept character  is only double
d if it's data when typed by the user, they're not  automatically doubled)     e
dit 2 June 7, 1984  formatting and documentation add module version number make 
sure  console is selected when leavin jzxmit39  staxdSave to buffer.  inxd  ldac
maflgCarriage return seen  oraa  jnzxmit31Yes, don't count this character.  inrc
Count it.  xmit31jmpxmit30Loop for next input byte.     Carriage return seen.  S
tart discarding characters until we see a line-feed.  xmit32stacmaflgMark return
 seen.  jmpxmit30And continue.     Control-Z seen. Force end of file, and send t
he current line.  xmit37staeoflagMark EOF for next line.   fall through...   End
 of File encoug intchr.     edit 1 May, 1984  extracted from CPMBASE.M80 version
 3.9 modifications are described  in the accompanying .UPD file.    ttverdb'CP4T
T.ASM  (4)  13-Jan-85$'    This is the TRANSMIT command.  It attempts to send a 
file, even  though there is no KERMIT on the other side.  here from kermit    xm
itmvia,cmofiParse an input file spec (non-wild).  lxid,fcbGive the address for t
he FCB.  callcomnd   jmpkermitGive up on bad parse.  callcfmcmd  callgetfilOpen 
fil  !N!!!!!!!!!ntered. eoflag has already been set just send current line.  xmi
t38   fall through...   Linefeed seen. send the current line.  xmit39shldbufpntS
ave next buffer pointer.  mova,bSave count of remaining characters.  stachrcnt  
mova,cSave line length.  stafilcnt   fall through into rexmit...      transmit t
he buffered line.  here from previous page, intchr    rexmitldafilcntSet up line
 length.  stacmccnt  lxih,cmdbufSet up line buffer pointer.  shldcmcptr  xmit40C
lose file.  lxid,fcb  callbdos  xraaTerminate file I/O.  stafileio  ret       te
lnet - the CONNECT command.  here from kermit     telnt1 - entry to connect mode
 from TRANSMIT command  here from xend    telnetcallcfmcmd  lxid,infms7Output st
art of message   enter here from TRANSMIT command.  telnt1callprtstr  callescprP
rint the escape char.  lxid,infms8Output some more of the message  callprtstr  c
allescprPrint the escape char again.  lxid,inms8aPrint thcallprtchrReceive comm.
 line & display.  ldaxofflgXOFF received  oraa  jnzxmit40Yes, wait for XON  ldac
mccntAny characters left  dcra  jmxmit49No, next state.  stacmccnt  callselmdm s
elect modem for outmdm  lhldcmcptrGet the character to be sent  mova,m  inxhBump
 to next character.  shldcmcptr  callsetparSet parity (if any).  move,aSave char
acter (with parity)  calloutmdmOutput it to the comm. line.   TAC trap If this c
haracter is the TAC e remainder of the message  callprtstr  callsyscondo system-
dependent stuff  ldalogflgpcc005 Want a log  oraapcc005  cnzlogopnpcc005 Open if
 so    chrlupcallprtchrSee if char at port (send to console).  callconchrSee if 
char at console (send to port).   jmpkermitrequested to end session - go to comm
and loop.  jmpchrlupGo do it again.      prtchr - copy characters from comm line
 to console  returns nonskip, console selected.  called by xnext, rexmiintercept
 character, and the TAC   trap is enabled, we have to output it twice.  If the T
AC trap is enabled,   tacflg contains the intercept character.  (The current cha
racter cannot   be NUL, so we don't have to worry about doubling nulls in the me
ssage)  ldatacflg get current intercept character, or zero.  cmpm compare agains
t current data character.  jnzxmit41 if different, do nothing.  callsetpar match
. set appropriate parity,  move,a  put it in the right register,  calloutt, teln
et      prtchrcallselmdm select modem port  callinpmdm try to get a character fr
om it  oraa test character  jnzprtch0 if non-zero, process it.  staprtcntpcc008 
zero out prt fairness count  callselcon select console  ret return.    prtch0 an
i7FH drop parity bit.  jzprtchr ignore null (filler)  cpidel ignore delete, too 
 jzprtchr  cpixonIs it an XON  jzprtxonyes  cpixoffIs it an XOFF  jzprtxofyes  m
ove,aSet the char asidmdm  and output it a second time.  xmit41  ldaecoflgLocal 
echo  oraa  jzxmit40No, continue.  mova,eGet the character.  ani7FHMask out pari
ty.  move,aDisplay on console.  callselcon  calloutcon  jmpxmit40Continue.    xm
it49xraaReset last character seen.  stalstchr  xmit50callprtchrReceive comm. lin
e & display.  callconchrRead keyboard & send.   jmpxendcCLOSE connection.  ldals
tchrCheck last keyboard character.  cpicrCarriage return  e.  ldavtflgGet the VT
52 emulation flag.  cpi1Is the flag set  jnzprtch1If not, don't do this stuff.  
ldaescflgGet the escape flag.  oraaAre we working on an escape sequence  jzprtch
2If not, continue.  callvt52If so, work on it some more  jmpprtchrtry for more c
haracters.    prtch2mova,enormal text.  cpiescIs the char an escape  jnzprtch1If
 not skip on.  mvia,1  staescflgSet the escape flag escape seen.  jmpprtchrGet a
nother char...    jzxnextYes, prepare to send next line.  jmpxmit50Continue, unt
il carriage return.    clean up.     xend - end of file reached. close file, go 
to connect mode.  here from xnext.     xendc - user wants out. close file, go to
 command mode.  here from rexmit.    xendcallxmtoffClose file, etc.  lxid,inms22
Tell we're done with transmission  jmptelnt1Branch to CONNECT command.    xendcc
allxmtoffClose file, etc.  jmpkermitBack to command loop.    xmtoffmvic,closf  "
N"""""""""prtch1callsysflt ok to print this character (in E)  oraa  jzprtchr no,
 skip it.  ldalogflgGet the log flag.  cpi81Hpcc003 Are we logging  czlogitpcc00
3 Do so if needed  callselcon select console  ldaprnflgGet Print parallel flag  
oraa  cnzoutlpt output to printer if flag set  calloutcon output to console.  lx
ih,prtcntpcc008 point to prt fairness count  inrmpcc008 bump  mova,mpcc008 get i
t in a  cpiprfair+1pcc008 time to be fair the host while we write the buffer.  c
allsetpar set correct parity...  move,a  calloutmdm output it.  calloutbufpcc012
 output the buffer and advance  calllogerrpcc005 quit if error  mvia,xonQ to res
tart the host  callsetpar set appropriate parity  move,a  calloutmdm send it.  r
etpcc012    pcc005  logcls - Close the log file and reset the flag    logclslxid
,infms6pcc005 Tell user we are closing file.  callprtstrpcc005  callclofilpcc  j
mprtchrpcc008 no, go around again.  mvim,0pcc008 reset count  retpcc008 and retu
rn     I don't think we want to print xon/xoff - this should be   flow control o
nly across the link between us and the host.   (besides, IBM host xon's don't ma
ke sense to most micros)   remember xon/xoff state in xofflg (zero  xon, non-zer
o  xoff)  prtxonxraaYes, reset XOFF flag  prtxofstaxofflg  jmpprtchr look for an
other character  pcc005 Log file routines    pcc005      l012 and do it  jmploge
rrpcc005 jump if error  lxih,logflgpcc005 point to flag  mova,mpcc005 get it  an
i7FHpcc005 clear the open bit  movm,apcc005 and store back  retpcc005    pcc005 
     logerr - here on a variety of logging errors  just close the file and disab
le logging  called from logopn,logptr,logcls    logerrlxid,erms22pcc005 Error me
ssage  callprtstrpcc005 print it  mvic,closfpcc005 Close the file.  lxid,fcbpcc0
12  callbdogopn - open the log file  Open the log file and append to it if it al
ready exists  or create one if not.    logopnlxih,lognampcc012 copy name  lxid,f
cbpcc012 to fcb  lxib,12pcc012 12 bytes  callmoverpcc012 copy it  callappfilpcc0
12 open file for appending  jmplogerrpcc012 error  lxih,logflgpcc005 point to lo
g flag  mvia,80Hpcc005 file open flag  orampcc005 or in contents of logflg  movm
,apcc005 and store back  lxid,inms28pcc005 ospcc005  xraapcc005 clear logflg  st
alogflgpcc005 so don't try again  retpcc005      VT52 emulation.  called by prtc
hr  A/ contents of escflg (guaranteed non-zero)  E/ current character  modem is 
selected.    vt52cpi1 first character after escape  jnzvt52y no, must be doing c
ursor positioning.    E contains the character that followed the escape.  valid 
characters are  A - cursor up  B - cursor down  C - cursor right  D - cursor lef
t  F -assume logging is on  cpi81Hpcc005 check  jzprtstrpcc005 print msg if true
  lxid,inms27pcc005 no, must be suspended  jmpprtstrpcc005 print and return     
 logit - output character in E to log file.  we assume the host recognizes xon/x
off. (we probably shouldn't)  modem port is selected.  preserves de  called by p
rtchr    logitlxih,chrcntpcc012 point to buffer count  dcrmpcc012 and decrement 
 jplogit1pcc012 continue if ok  pushdpcc012 save de enter graphics mode (hard to
 do on a non-vt52)  G - exit graphics mode  H - home  I - reverse linefeed  J - 
erase to end of screen  K - erase to end of line  Y - cursor positioning leadin 
 Z - identify terminal as VT52   - enter hold-screen mode (not supported)   - ex
it hold-screen mode (not supported)   - enter alternate-keypad mode (not support
ed)   - exit alternate-keypad mode (not supported)    Invalid sequences are hand
led as the VT52 does - the escape and  the followi  calloutadvpcc012 advance buf
fer if in memory  calllogwrtpcc012 sigh, time to write to disk  popdpcc012 resto
re de  ldalogflgpcc012 get logging flag  oraapcc012 Did we quit because of an er
ror  rzpcc012 return now if so  logit1lhldbufpntpcc012 get buffer pointer  movm,
eStore the char.  inxh  shldbufpnt  retpcc012 and return    pcc012    logwrt - w
rite to log file with XON/XOFF since it may take a while.    logwrtmvia,xoffS to
 stop  #N#########ng character are swallowed, never to be seen again.  For escE,
 the translation table may contain just '$' (no action),  or may be used as clea
r-and-home, as in the Heath/Zenith H19.    mova,e get the second character of th
e sequence.  cpi'Y' if cursor lead-in handle it.  jnzvt52a if not, go on.  mvia,
2 state  2 row follows.  staescflg update the flag.  ret back for another charac
ter    vt52acpi'Z' VT52 ID query  jzvt52id yes. claim to be one.  cpi'A'Let, tel
net    conchrcallinpconTry to get a character from the console  ani07FHKeep only
 7 bits  jzrskpNull means nothing there.  move,aMove the char for comparison.  s
talstchrSave it  ldaescchrGet the escape char.  cmpeIs it an escape char  jzintc
hrIf so go process it.  callselmdm select the modem  mova,eGet the char.  callse
tparSet parity (if any).  move,aRestore it.  calloutmdmOutput the char to the po
rt.  callselcon reselect console  ss than an 'A'  jmvtigYes - ignore.  cpi'K'+1G
reater than 'K'  jpvtigYes - ignore.  sui'A'Else make into index.  rlcMultiply b
y four.  rlc(Shift left twice.)  lhldpttabLoad base addr of table.  move,aMove a
 into de pair.  mvid,00HZero out high byte.  daddDouble add index+offset.  xchgE
xchange de with hl.  callselcon select console  callprtstrand syscall.  vtigIgno
re escape sequence.  xraaReset the ol' escape flag.  staescflg  rldaecoflgGet th
e echo flag.  oraaIs it turned on  jzrskpIf not we're done here.  mova,eGet the 
char.  ani7FHTurn off the parity bit.  move,a  calloutcon echo the character.  j
mprskp use skip return    transparent escape character has been typed. dispatch 
on second  character. (console is still selected)  here from conchr    intchr ca
llinpcon get another character from the console  oraa zero means no character av
ailable yet.  jzintchr If so, loop etReturn home.     here for escZ.  Tell the h
ost we're a VT52. (Sure we are...)  vt52idmvia,esc response is escape...  callse
tpar (need correct parity)  move,a  calloutmdm (console already selected)  mvia,
'/' ... slash ...  callsetpar (with parity)  move,a  calloutmdm  mvia,'K' ... K.
  callsetpar  move,a  calloutmdm  jmpvtig clear escape-sequence flag and return.
     here when escflg isn't 0 or 1 - processing cursor positioning sequence.  vt
52ycpi2until we get a char.  movb,aSave the actual char.  cpictrlcis it Control-
C  jzcontcyes  ani137OConvert to upper case.  cpi'C'Is it close  jnzintch0If not
 proceed.  contclxid,infms9Say we are back.  callprtstr  callsyscls call system-
dependent close routine  ldalogflgGet the log flag.  oraapcc005 Check if open  c
mlogclspcc005 Close if needed  ret    Here if not a 'C' or 'C'    intch0 cpi'S'I
s it status  jnzinch01If not, proceed.  c looking for row (y-coordinate)  jnzvt5
2x no, must be column.  mova,e yes. get coordinate  sui(' '-1) convert from asci
i (1  top line)  stavtyval store for later  mvia,3 advance to next state (x coor
d)  staescflg store it  ret try for another character     here when escflag isn'
t 0, 1, or 2 - it must be 3. (right)   E holds the last character of the cursor 
positioning sequence.  vt52xxraa end of escape sequence, reset state.  staescflg
  mova,e get columallstat01Print out the status stuff.  callprcrlfpcc011 add a c
rlf  jmprskpreturn from conchr    inch01cpi'R'-100OControl-R  jzinch02Yes  cpi'R
'(plain) R  jnzinch03No  inch02ldafileioTRANSMIT in progress  oraa  jzinch03No,i
gnore  popbRemove return address (non-local goto)  jmprexmitRetransmit line    i
nch03mova,bGet the char.  cpi''Is it a help request  jnzintch1If not, go to the 
next check.  ldafileioTRANSMIT in progress  n (' ' is left margin)  sui(' '-1) m
ake left margin be one  movc,a stash column in c  ldavtyval get row number  movb
,a  in b  callselcon select console  callcsrpos call system-dependent cursor pos
itioner  ret all through.      conchr - copy character from console to comm line
, processing  (kermit's) escape sequences.  Enter and exit with console selected
.  nonskip return transparent mode terminated.  skip returnstill in transparent 
mode.  called by rexmi  $N$$$$$$$$$oraa  jzinch3apcc003 No  lxid,xmthlpTell abou
t R too  callprtstr  inch3aldalogflgpcc003 Logging flag  oraapcc003 see if activ
e  jpinch04pcc005 jump if no file open  lxid,loghlppcc003 yes, tell about R AND 
Q  callprtstrpcc003  inch04lxid,inthlpIf so, get the address of the help message
.  callprtstr  callsysinh print system-dependent help message  lxid,inhlp1 Tell 
about doubling the escape character  callprtstr  callescprPrint escape character
  lxid,inhlp2Print the rest  callprtstr  jmpintchrGet another char.    intch1 mo
va,bGet the character.  cpi'0'Is it '0', to send a null  jnzintch3No.  xraaYes, 
send an ASCII zero.  callsetpar with the correct parity  move,a  callselmdm (to 
the modem...)  calloutmdm  callselcon return with console selected  jmprskp    i
ntch3ldaescchrGet the escape char.  cmpbIs it the escape char  jnzintch4pcc002 j
ump if not  mova,bGet the cha CP4TYP.ASM  KERMIT - (Celtic for "FREE")    This i
s the CP/M-80 implementation of the Columbia University  KERMIT file transfer pr
otocol.    Version 4.0    Copyright June 1981,1982,1983,1984,1985  Columbia Univ
ersity     Originally written by Bill Catchings of the Columbia University Cente
r for   Computing Activities, 612 W. 115th St., New York, NY 10025.     Contribu
tions by Frank da Cruz, Daphne Tzoar, Bernie Eiben,   Bruce Tanner, Nick Bush, G
reg Small, Kimmo Laaksonen, Jeff Damensr.  callsetpar  move,aRestore it.  callse
lmdm  calloutmdmOutput it.  callselconWe promised console would be selected...  
jmprskpReturn, we are done here.  intch4mova,bpcc002 get it again  ani137opcc002
 in upper case  cpi'P'pcc002 toggle printer  jnzintch5pcc003 nope  ldaprnflgpcc0
02 get printer flag  xri01hpcc002 complement it  staprnflgpcc002 and put back  j
mprskppcc002  intch5ldalogflgpcc003 get log flag  oraap, and many   others.    T
his is the header file for building the system-dependent overlay  for KERMIT.  I
t contains the definitions used to select the target  system, and collects (via 
INCLUDE or LINK directives) the remaining  code.  If the target system is one of
 the supported systems  described below, then this is the only file that needs t
o be  edited.     revision history     edit 6 9-Feb-85 by CJC  Merge Northstar H
orizon, Lobo MAX, and Xerox 820 changes  13-Dec-84 Add Northstcc003 See if open 
 jpintch7pcc003 no, skip R and Q  mova,bpcc003 get back chr  ani137opcc003 make 
upper case  cpi'R'pcc003 Is it R  jnzintch6pcc003 Jump if not  mvia,81Hpcc003 se
t flag for logging  stalogflgpcc003 put it back  lxid,inms28pcc003 message  call
prtstrpcc003  jmprskppcc003 done  intch6cpi'Q'pcc003 Quit logging  jnzintch7pcc0
03 no  mvia,82Hpcc003 flag for open, but suspended  stalogflgpcc003 store ar Hor
izon with SIO-4 board, port 5 at 1200 CSM  13-Jan-85 by Vanya J.Cooper Pima Comm
un. College Tel 602-884-6809    pcc00127-Dec-84vjcmodules cp4sys,cp4typ  Add con
ditional for Xerox 820.  I thought at first I could  live with the kaypro condit
ional, but it's enough of a pain  that I added it back in.  The clear-to-end-of-
screen char  is different,  breaking many programs in VT52 mode, and the  defaul
t escape char control-, is not at all obvious how  to type on the 820 keyboard. 
 Iaway  lxid,inms27pcc003 keep them informed  callprtstrpcc003  jmprskppcc003  i
ntch7pcc003    intchzmova,b not recognized. get saved copy back.  callsysint int
erpret system-dependent sequences   jmprskp  done. return (from conchr).  mvie,'
G'-100OOtherwise send a beep.  calloutcon to the console.  jmprskp    IF lasm  L
INKCP4CPM  ENDIFlasm    %N%%%%%%%%%f you muddle through the  key translation tab
le, it turns out to be control-comma.  Rather than OR xer820 all the occurances 
of kpII conditionals  I added a bbI conditional for all common code for the big 
 board I based machines that is automatically turned on by  either kpII or xer82
0.  This will also make it easier in  the future if another flavor of bigboard i
s added.    pcc0102-Jan-85vjcmodulescp4pkt,cp4typ  Control-C during send or reci
eve clobbers some of the screen  and doesn't  generEQUFALSE"Generic" Kermit-80, 
CP/M calls only.   (terminal required)  dmIIEQUFALSE"Generic" KERMIT-80 for DECM
ATE II.  mikkoEQUFALSE"Generic" KERMIT-80 for MikroMikko    IF robin OR dmII OR 
gener OR mikko  iobytEQUTRUEShort conditional for above  inoutEQUFALSE  ENDIFrob
in OR dmII OR gener    .. and Systems supporting direct IN / OUT handling of por
ts  brainEQUFALSEFor Intertec SuperBrain.  vectorEQUFALSEFor Vector Graphics.  h
eathEQUFALSEFor Heath/Zenith H89.look nice.  Position the cursor to end of scree
n  before returning to main loop.    pcc0138-Jan-85vjcmodulescp4mit,cp4utl,cp4ty
p  Replace CLOSE command to cancel session logging to SET  LOGGING ON/OFF.  This
 seems to fit in with the command  structure better.  Default the log file to KE
RMIT.LOG  incase no previous LOG command.  Logging is also enabled  by LOG comma
nd, as before.     edit 5 October 13, 1984 by L M Jones, JCC, for New York Botan
ical Garden  Add support for CPT-85xx seri  z100EQUFALSEFor Z-100 under CP/M-85.
  trs80lbEQUFALSEFor Lifeboat 2.25C CP/M Display  trs80ptEQUFALSEFor Pickles + T
rout CP/M Display  telconEQUFALSEFor TELCON Zorba portable  kpIIEQUFALSEKaypro-I
I  xer820EQUFALSEpcc001 Xerox 820  bbIIEQUTRUEBigBoard II (terminal required)  m
mdIEQUFALSEMorrow Micro Decision I (terminal required)  mdIEQUFALSEMorrow Decisi
on I (the big sucker)   (terminal required) Toad Hall  delphiEQUFALSEDigicomp De
lphi 100 (termies of word processors when running CP/M.     edit 4 August 29, 19
84 by Bdale Garbee  CMU  Add support for Digicomp Delphi 100 and Netronics Smart
vid terminal.     edit 3 July 27, 1984 (CJC)  Shuffle files around for easier as
sembly by both M80 and LASM.     edit 2 June 4, 1984 Toad Hall  Added Morrow Dec
ision I (the big S100 bus sucker, not the  little single motherboard one) added 
Toad Hall TACTrap to deal  with those working through a TAC and its intercept ch
aracter.     edit 1 Mnal required)  cpt85xxEQUFALSECPT-85xx word processor w/CPM
 (set ADM3A true)  northsEQUFALSECSM NorthStar Horizon with HSIO-4 board   (term
inal required)    trs80EQUtrs80lb OR trs80pt  if either, flag TRS-80 system.  bb
IEQUkpII OR xer820pcc001 flag for bigboard I    IF brain OR vector OR heath OR z
100 OR trs80 OR telcon OR bbI  inoutEQUTRUEShort conditional for above  iobytEQU
FALSE  ENDIFbrain OR vector OR heath OR z100 OR trs80 OR telcon OR kpII    IF bb
II OR mmdI OR mdI Oay, 1984 (CJC)  extracted from CPMBASE.M80 version 3.9 modifi
cations are described  in the accompanying .UPD file.      FALSEEQU0  TRUEEQUNOT
 FALSE       Assembler type.  Define the appropriate one TRUE, the rest FALSE.  
(We can't   use ASM, because it cannot handle multiple input files)  mac80EQUFAL
SE For assembly via MAC80 cross-assembler.  m80EQUFALSE For assembly via Microso
ft's M80.  lasmEQUTRUE For assembly via LASM, a public-domain   assembler.      
Address at whicR delphi OR cpt85xx OR northsrunning out of room  inoutEQUTRUESho
rt conditional for above  iobytEQUFALSE  ENDIFbbII OR mmdI OR mdI OR delphi OR c
pt85xx OR norths    .. and Systems doing neither...  osiEQUFALSEFor Ohio Scienti
fic.  osbrn1EQUFALSEFor Osborne 1  cpm3EQUFALSE"Generic" Kermit-80 for CP/M 3.0 
(CP/M Plus)   (terminal required)  loboEQUFALSELobo Max-80  apmmdmEQUFALSEjb Mic
romodem II in slot 2  ap6551EQUFALSEjb apple with 6551 ACIA in serial interface 
 h the overlay should be loaded.  This will not  change often (no more than once
 per version of KERMIT) it should  be updated when a new version of KERMIT is re
leased.  ovladrEQU3700H pcc013 value for KERMIT v4.04    Which CP/M system hardw
are are we building KERMIT-80 for  One of the following should be TRUE, the rest
 FALSE    We have basically three "classes" of systems    Systems supporting the
 IO-redirection via I/O-Byte    robinEQUFALSEDEC VT180  Generic + VT100 screen c
ontrol   &N&&&&&&&&&IF ap6551jb eg. Apple SSC, Videx PSIO, Basis 108  apslotEQU2
jb set equal to slot containing serial card  jb  set to 1 for Basis built-in por
t  ENDIFjb ap6551    appleEQUapmmdm OR ap6551  flag apple system if either selec
ted  IF osi OR apple OR osbrn1 OR cpm3 OR lobo  iobytEQUFALSE  inoutEQUFALSE  EN
DIFosi OR apple OR osbrn1 OR cpm3 OR lobo    .. and for Micros, like the MDI, wh
ich have "terminals of choice", you must  select one of these in addition to sel
ecting the micro itself.  Also select a terminal for "gener" and "cpm3" use "crt
" for the true generic.  crtEQUFALSEBasic CRT, no cursor positioning  adm3aEQUFA
LSEAdm3a Display (or CPT built-in display)  smrtvdEQUFALSENetronics Smartvid ter
minal.  tvi925EQUFALSETVI925 Display   (works for Freedom 100 also)  Toad Hall  
vt52EQUTRUEVT52 or equivalent (or H19)  vt100EQUFALSEVT100 or equivalent     Toa
d Hall TAC Trap  If you're going through a TAC, it will   cough on its Intercept
 Character (usual CP4WLD.ASM  KERMIT - (Celtic for "FREE")    This is the CP/M-8
0 implementation of the Columbia University  KERMIT file transfer protocol.    V
ersion 4.0    Copyright June 1981,1982,1983,1984  Columbia University     Origin
ally written by Bill Catchings of the Columbia University Center for   Computing
 Activities, 612 W. 115th St., New York, NY 10025.     Contributions by Frank da
 Cruz, Daphne Tzoar, Bernie Eiben,   Bruce Tanner, Nick Bush, Greg Small, Kimmo 
Laaksonen, Jeff Damens, andly a  (* - 40H)).  Sending it   twice forces the TAC 
to recognize it as a valid ASCII character,   and it'll send only one on to the 
host.  If you've SET the TACTrap   to OFF, it will be a null character, and noth
ing will happen.  If you   set it on, it will be your selected TAC intercept cha
racter (or will   default to the common intercept char, ''.   If you never expec
t to have to work through such a beastie, just set   TAC to false and forget all
 this mess.  Toad Hall    tacEQUFALSE gonna many   others.    Multi-file access 
subroutine.  Allows processing of multiple files  (i.e., *.ASM) from disk.  This
 routine builds the proper name in the  FCB each time it is called.  This comman
d would be used in such pro-  grams such as modem transfer, tape save, etc. in w
hich you want to  process single or multiple files.  Note that it will fail if m
ore than 256 entries match the wildcard.     revision history   edit 3 July 27, 
1984  support LASM remove exclamation points, link to work through a TAC  tacval
EQU''Typical TAC intercept character     Processor speed in units of 100KHz (for
 bbII, kpII, & cpt85xx timing loop)  cpuspdEQU20 CPT-85xx 2.0 MHz ('cause of int
egral video)  cpuspdEQU25 original Kaypro II,Xerox 820 2.5 MHz  cpuspdEQU40 bbII
 4.0 MHz  also Kaypro 10    cp4kerEQUFALSE building the system-dependent part...
    IF lasm  LINKCP4DEF  ENDIFlasm  Toad Hall     If we're still here, must be M
80 or MAC80.  Collect the rest of   the so CP4CMD.     edit 2 June 7, 1984 (CJC)
  formatting and documentation add module version string redo movfcb,  in prepar
ation for moving DMA buffer (later...).     edit 1 May, 1984 (CJC)  extracted fr
om CPMBASE.M80 version 3.9 modifications are described  in the accompanying .UPD
 file.    wldverdb'CP4WLD.ASM (3) 27-Jul-84$'    The FCB will be set up with the
 next name, ready to do normal  processing (OPEN, READ, etc.) when routine is ca
lled.    Carry is set if no more names can be urces.  INCLUDECP4DEF.ASM common d
efinitions  INCLUDE CP4LNK.ASM linkage area description  INCLUDE CP4SYS.ASM syst
em-dependent code and tables  END    'N'''''''''found    MFFLG1 is count/switch 
0 for first time thru, pos for all others  MFFLG2 is counted down for each succe
ssive GETNEXT file call    Technique used is to repeat SFIRST/SNEXT sequence N+1
 times for each  successive call, till sequence fails. CP/M does NOT allow disk-
handling  between SFIRST and SNEXT.  called by send, seof, dir    mfnameoraa cle
ar carry  pushbSave registers  pushd  pushh  mvic,setdmaInit DMA addr, FCB  lxid
,80H  callbdos  xraaA  0  stafcbextclear extension  ldamfflg1find out if "second
" call in row  oraa  jnzmfn01Were here before  stamfflg2  lxih,fcb  lxid,mfreq  
lxib,12  callmover.from FCB to MFREQ  mvic,SFIRSTSearch first  lxid,fcb  callbdo
s  jmpmfn02and check results    mfn01dcra  sta mfflg2store down-counter  lxih,mf
reqSFIRST REQ name  lxid,fcb  lxib,12  callmover.from MFREQ to FCB  mvic,sfirstS
earch first old one,we got it before  lxid,fcb  callbdosno error's expected -we 
got that before  mfn01a  mvic,snextSearch next  callbdos  mfn02pushpsw  ldamfflg
2get "repeat file counter"  ora a  jzmfn02aif zero, check if SNEXT had ERROR  dc
racount down  stamfflg2store back  poppswno error-check, we got it before  jmpmf
n01anext SNEXT    mfn02apoppsw  oraa  jmmffix2No (more) found  callmovfcbmove da
ta to fcb  ldamfreqthe original disk-designator  stafcbback into fcb  ldamfflg1g
et file-flag  inraincrement  stamfflg1and store for next go-around  mvia,0Setup 
FCB  stafcbextclean up FCB for OPEN etc  stafcbrno  mffix1pophrestore registers 
 popd  popb  retand return    mffix2stcset carry  jmpmffix1return with CARRY set
    copy directory entry to FCB  called with A/ entry number in directory (0-3) 
     directory block in DMA buffer (buff)    movfcbadd a  adda  add a  adda  add
a* 32  movc,a copy offset to bc  mvib,0 (high byte is zero)  lxih,buff get start
 of disk buffer  dadb calculate start of directory entry  lxid,fcb  lxib,12  cal
lmover  ret    Data storage for MFNAME (multi-file access)  mfreqDS12Requested n
ame  mfflg1DB0First time thru flag for MFNAME  mfflg2DB0Down counter for MFNAME 
   IF lasm  LINKCP4CMD  ENDIFlasm    (N(((((((((  )N)))))))))
Tous droits réservés. Reproduction sans autorisation interdite. © Kukulcan