[comp.sys.handhelds] NRTS v.5, an HP48 terminal emulator.

bgribble@jarthur.claremont.edu (Bill Gribble) (02/10/91)

NRTS ver. 0.5
HP48sx dumb terminal program
Bill Gribble


I. Introduction

This is the first release version of NRTS, a dumb terminal program.  After   
  fairly extensive betatesting I feel it's ready for general distribution.
  NRTS has about the functionality of other currently available terminal
  programs; that is, it doesn't process escape sequences and processes
  only a few control characters.  Its fundamental advantage is speed.  The
  bulk of the program is written in machine code, interspersed with RPL
  threads where I needed them, and is quite quick.  Also, NRTS has at least
  one feature that's different and, I think, sort of neat: the function
  keys, which I'll talk about later.

You may notice that the version number of this release is 0.5; I am still
  working on an ANSI code parser that will make NRTS a "real" terminal
  emulator, and hopefully allow anyone who feels the need to run an 8x22
  EMACS session :-)  That version will be 1.0, since I don't think the 
  program's finished until it has escape code processing.

NRTS is enclosed as an ASC'ed directory containing the program and the 
  FKEYS function key list with some sample function keys.  I don't have
  real documentation produced, but I will try to make this text thorough
  enough to make do.

II.  General information.

As mentioned before, NRTS uses an 8x22 text display screen.  It uses a 
  subset of the HP48's medium font including only the characters from
  ASCII 32 thru 127.  Control characters are all processed, meaning they
  aren't displayed as those irritating little squares.  Escape sequences
  appear as text.  
  
Each key on the keyboard has up to four assignments: unshifted, blue-shifted,
  orange-shifted, and alpha-shifted.  As a rule, unshifted = lowercase
  alpha, blue-shifted = uppercase alpha, orange-shifted = control, and 
  alpha-shifted are program control and function keys.  Complete keymaps
  follow in their own section.  Unfortunately, in the interests of speed 
  the key assignments are built in the program in a lookup table.  They 
  are easy to change in the source, but difficult once the program is 
  compiled.  This may change in a later version, but for now send me your
  key suggestions and I'll try to improve the keyboard as versions go by.
  The shift- alpha-keys work a little differently.  Hitting alpha or
  orange-shift causes the appropriate annunciator to be displayed and 
  the NEXT keystroke is shifted that way, unless the same (shift or alpha)
  key is hit again, in which case the annunciator goes off and the keyboard
  is returned to itsw unshifted state.  Blue shift, if hit once,
  causes the blue-shifted keyboard to appear for one keystroke, but hitting 
  it again causes the annunciator to stay on and shift to be locked until 
  the next time blue-shift is hit.  Make sense?  Fool around with it and
  you'll see.

Kermit file transfer is implemented in a limited way.  Alpha-R starts 
  kermit receive, but send is not well-implemented since I couldn't include
  an effective file selector.  Alpha-S starts kermit send but is bound to
  cause an error unless you've used a function key or something else 
  clever to put a file name on the stack.  This will be improved in
  later versions.

The function keys are the alpha-shifted "big keys" 789/456*123-0 .+.  
  Pressing one of them evaluates the corresponding element in the list
  FKEYS, going upper-right to lower-left - '7' corresponds to list element
  1, '8' to element 2 ... '-' to element 12, and so on down to '+' evaluating
  element 16.  I think the example function keys give a crude idea of what
  is possible.  Any sort of program that doesn't require arguments from the 
  stack and doesn't leave any behind is o.k. to put in FKEYS.  Since I use 
  the stack/menu grobs for graphics, don't expect anything with PICT to
  perform as expected, although it might.  Use DISP if you want to write to 
  the screen.  Future releases may include phonebooks, file browsers, etc. 
  in fkeys.

Alpha keys summary:

  B:  sends serial break
  C:  toggles between cr and cr/lf for received CR (just cr is default)
  Q:  quit NRTS
  R:  start Kermit receive
  S:  start Kermit send (see note above)

III.  Keyboard layout

Unshifted keyboard:
                 (screen)
     | |_____________________________| |
     |   a    b    c    d    e    f    |
     |   g    h    i    j    k    l    |
     |   m    n    o    p    q    r    |
     |   s    t    u    v    w    x    |
     |   < cr >    y    z   del   bs   |
     |  alf    7     8     9     /     |
     |  ctl    4     5     6     *     |
     |  shf    1     2     3     -     |
     |  on     0     .    spc    +     |
     +---------------------------------+

Blue-shifted keyboard: 
                  (screen)
     |  |____________________________| |
     |   A    B    C    D    E    F    |
     |   G    H    I    J    K    L    |
     |   M    N    O    P    Q    R    |
     |   S    T    U    V    W    X    |
     |   < cr >    Y    Z   del   bs   |
     |  alf    &     *     (     ~     |
     |  ctl    $     %     ^     _     |
     |  shf    !     @     #     "     |
     |  on     )     ,     ?     =     |
     +---------------------------------+

Orange-shifted keyboard:
                  (screen)
     | |_____________________________| |
     |  ^a   ^b   ^c   ^d   ^e   ^f    |
     |  ^g   ^h   ^i   ^j   ^k   ^l    |
     |  ^m   ^n   ^o   ^p   ^q   ^r    |
     |  ^s   ^t   ^u   ^v   ^w   ^x    |
     |  < cr >    ^y   ^z   del  bs    |
     |  alf    [     ]     {     }     |
     |  ctl    <     >     ;     :     |
     |  shf    \     |     '     `     |
     |  on                      tab    |
     +---------------------------------+ 

IV. Source code availability

I'm pretty embarassed about the condition of the source code, but I'll
  post it to wuarchive soon.  I guess I have to pay for sloppy code 
  by having everybody see it.  Hopefully it will be cleaned up by 
  version 1.0.  

V.  Random blathering

I think the idea of 'shareware' for calculator software of this scope is
  ridiculous.  If you like NRTS, please send me mail saying so.  That will
  certainly boost my ego and probably speed the release of version 1.0 :-)

I want to thank all of my betatesters, who kept me from making a total
  fool out of myself by releasing extremely buggy software to the world.

If this documentation is unclear or appears to be in error, or (heaven 
  forbid!) my code is not totally bug-free, please let me know by posting 
  or through email.  One small thing we do know about: if you hit the ON
  key while in the program, the next keystroke will exit the program and 
  leave two system binaries <70h> on the stack.  No big deal, but it
  is inconsistent and I'm sorry I can't figure out how to fix it, since
  the bug is rooted in the behaviour of the lastkey syseval which I don't
  fully understand. 

VI.  Disclaimer and Copyright Notice

      NRTS is (C) Copyright 1990 Bill Gribble

      Noncommercial distribution allowed, provided that this
      copyright message is preserved, and any modified versions
      are clearly marked as such.  

      NRTS makes use of undocumented low-level features of
      the HP48SX calculator, and may or may not cause loss of data,
      excessive battery drainage, and/or damage to the calculator
      hardware.  The Author takes no responsibility whatsoever for 
      any damage caused by the use of this program.

      THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
      IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
      WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
      PURPOSE.

*****************************************************************************
**   Bill Gribble                     Harvey Mudd College, Claremont, CA   **
**   bgribble@jarthur.claremont.edu   Never heard of it?  You're stupid.   **
*****************************************************************************

O   /
 \ /
  X  cut here ---------------------------------------------------------------
 / \ 
O   \ 

%%HP: T(3)A(D)F(.);
"69A20FF73D200000005064B45495355047A20D9D20E1632C2A20910001647464
70283233333A057E128DBF1C2A20520003416C6C696E67602375627675627E2E
29C2A2485A193632B2130D9D20E1632C2A2011000C702D6F6275657E128DBF19
3632B2130D9D20E163293632B2130D9D20E163293632B2130D9D20E163233920
3000000000000210C0022C2A20720003507565646023756470247F6021323030
39C2A2485A193632B2130D9D20E1632339203000000000000420C0022C2A2072
0003507565646023756470247F602234303039C2A2485A193632B2130D9D20E1
632339203000000000000690C0022C2A20720003507565646023756470247F60
2936303039C2A2485A193632B2130D9D20E163293632B2130D9D20E163293632
B2130D9D20E163293632B2130D9D20E163293632B2130D9D20E163293632B213
0D9D20E163293632B2130D9D20E163293632B2130D9D20E163293632B2130D9D
20E163293632B2130B21304C20040E425453540D9D20ACC4626BE2CCD2045000
8FB97608ECCF0AF0101AF03465507135143818F09818F09102AF01038F2D7608
ECFF0142164808C2A170CCD207200014334ACC468A2B0174E76BEF142164808C
417408DA16D9D2044EF30DB461BE309FF3029D1406FA2AEC81CCD20F32008E7C
F014313317414706133174E78FB976007D511980824150008A4808CE60080824
740008A4808C7D0080824D30008A4808C7E00808A2808C1510808A3808C2F008
08A0808CBF00808A1808CC0108082088C0610808A36180883808808082086920
808A061808808089380820A6E008089080820A109344C6071342015008082410
00081AF008F735608F2D7608E46E08CB0F0808A1118088180820860BF8089180
820961AF808A211808828082086B8F8089280820C6C7F8082446000C880820A6
1808082446000C8808801098082086360808248C000C88088180820810965401
198088220808244C6071308082081500109AF2D981AF088F735608E68D08CD2E
0AF2D981AF0820344C60713415008F2D7608F735608E15D08CCDD08DA16D9D20
CCD20060008FB97601431331741470634200008FD7B5007DA3461E00C4C281B4
CA13114F14C8F2D76081AF10141142164808CF6EE244230B2130D9D2088130D8
732D9D2088130D4140167E18A732D9D204423044230CCD20620008EECC011980
8941098E57C0142164808C5DE12B21305DF228813017040167E18A732D9D2044
23044230CCD20630008E17C011180877B0808576800808471018E80C01421648
08CB21305DF228813075140167E18A732D9D20442304423069F12B21305DF228
813076040167E18A732D9D2044230442302C022B21305DF22881308813098140
167E18A732D9D2044230442300FE12B21305DF226CB46167E18A732D9D204423
0442304563284E205064B4549535976329C2A26C7D1EB3A1B21305DF2288130A
9CC1167E18A732D9D2044230442304563284E205064B454953597632ED2A26C7
D1EB3A1B21305DF2288130ADB46167E18A732D9D2044230442304563284E2050
64B4549535976323F2A26C7D1EB3A1B21305DF22881304EB46167E18A732D9D2
044230442304563284E205064B454953597632803A26C7D1EB3A1B21305DF228
81301192084000167E18A732D9D20442304563284E205064B454953597632D13
A26C7D1EB3A1B21305DF22881301192094000167E18A732D9D20442304423045
63284E205064B4549535233A26C7D1EB3A1B21305DF228813011920A4000167E
18A732D9D2044230442304563284E205064B4549535743A26C7D1EB3A1B21305
DF228813011920B4000167E18A732D9D2044230442304563284E205064B45495
35C53A26C7D1EB3A1B21305DF22881301192025000167E18A732D9D204423044
2304563284E205064B4549535173A26C7D1EB3A1B21305DF2288130119203500
0167E18A732D9D2044230442304563284E205064B45495357E0566C7D1EB3A1B
21305DF22881301192045000167E18A732D9D2044230442304563284E205064B
454953530CC16C7D1EB3A1B21305DF22881301192055000167E18A732D9D2044
230442304563284E205064B4549535D1CC16C7D1EB3A1B21305DF22881301192
0C5000167E18A732D9D2044230442304563284E205064B454953573CC16C7D1E
B3A1B21305DF228813011920D5000167E18A732D9D2044230442304563284E20
5064B454953515CC16C7D1EB3A1B21305DF228813011920E5000167E18A732D9
D2044230442304563284E205064B454953558CC16C7D1EB3A1B21305DF228813
011920F5000167E18A732D9D2044230442304563284E205064B4549535A3DC16
C7D1EB3A1B21305DF2244230B21305DF22B2130B2130D9D20B3313CCD20F3000
174E78FB9760143818F0413114796AF08F2D7608C52608F2D7608C43608DA16D
9D205E413D9D2044230CCD20684008E6A50143133174147818FA481E17413313
0BF0BF0AEA103AF014A8084731029EE72D2D6C6C6CA3406E00CA81B5CA131143
CA81B28EB7008ECC104606C108E48108EF62046069008E4330113AE6BF4BF4A6
EAFC96A12AFC818F01130BF0BF0AEA103AF06B6FAFC8F2D7608E9840174E7142
164808C3102B6ABF034AC700CA81B5CA13115778082FC0C0C0C0C0C0C0C0AF81
1180866C28082F0303030303030303AF88E7C0081E81E8EBB00AF781AF121302
F15600D16015600E750E7F15400C180154016E16E1638926189111890C00D0D8
C0CFF20018E45008EF31046069DE8E40208CECEF8E530011180867518E611046
060BE8EBD108C5AEF8E6A008C99EF8C39EF8E490059F0320D0818F02CC8A821A
0655F8180206CEF89F800C69DF200111AD5BF6BF6BF6BF6BF6808225109E6400
2B66BF2BF2BF2BF2BF2D911180876D0E6808566E00818F218084610110A0311A
D5BF6BF6BF6BF6BF696E4002A6EBF2BF2BF2BF2BF2D911180866D0CE808466E0
0818FA18085610110A032011AD5BF6BF6BF6BF6BF6BF1BF1AE5BF6BF68082069
86909027302B06BF2BF2AE9BF5BF5BF2BF2BF2BF2BF2D98082401100C26660B0
6BF2BF2AE9BF5BF5BF2BF2BF2BF2BF2D98082465507131143D88082447600C8E
D8082415507131143818F09818F09C0D610A038082465507131143D83442100C
A131D413016916934C60001537150717E16ECE8AEDE15BB158B16B8082415507
13114313117917934210001537150716E17ECE8AEDE808241550713114313117
91793421000AF01517CE17E8AE4F01B2130B2130D9D2044230B2130B2130CCD2
0720008EDF008EFA0011180874808CC4108CA2108C170CCD204AA0014334ACC4
6174E78A2606BEF142164808C808246550713114313117917934E7000AF01517
CE17E8AE4F159A80824155071311431311791793421000AF01517CE17E8AE4F0
18FB9760808240B00081B5CA131111151717F112151717F113151717F1141517
8F2D760018FB976034B600081B4CA131153710117F153710217F153710317F15
371048F2D760011C4CF8082418A30141142164808C1C4CF808240CA301411421
64808C05000000000000005680790700000000104BBC7DC2470510B0347DC247
0510000000000000000000020202020202020202020216263646566602020202
768696A6B6C602020202D6E6F60717270202020237475767778702020202D097
A7F780020202020202738393F2020202020202435363A2020202020202132333
D202020202020203E202B2020202020202020202020202020202142434445464
02020202748494A4B4C402020202D4E4F4051525020202023545556575850202
0202D095A5F78002020202020262A282E70202020202024252E5F50202020202
021204322202020202020292C2F3D30202020202020202020202020202021020
3040506000000000708090A0B0C000000000D0E0F00111210000000031415161
718100000000D091A1F780000000000000B5D5B7D7000000000000C3E3B3A300
0000000000C5C772060000000000000000009000000000000000000000040004
0404040400000000000A0A0A000A0A1F0A1F0A0A00040F140E051E0400181902
0408130300160915020505020000000000040404000804020202040800020408
0808040200000A041F040A00000004041F040400020406060000000000000000
1F00000000060600000000000000010204081000000E11131519110E000E0404
04040604001F01020C10110E000E11100E10110E0008081F090A0C08000E1110
100F011F000E11110F01020C000202020408101F000E11110E11110E00060810
1E11110E0000060600060600020406060006060000080402010204080000001F
001F00000001020408040201000400040810110E001E01051D15110E00111111
1F11110E000F11110F11110F000E11010101110E0007091111110907001F0101
0F01011F000101010F01011F001E11190101110E001111111F111111000E0404
0404040E000E1111101010100011090503050911001F01010101010100111111
15151B110011111915131111000E11111111110E000101010F11110F00160915
1111110E001109050F11110F000E11100E01110E000404040404041F000E1111
111111110004040A0A11111100111B15151111110011110A040A111100040404
040A1111001F01020408101F000E02020202020E0000100804020100000E0808
0808080E0000000000110A04001F0000000000000000000000040202001E111E
100E0000000F1111110F0101001E0101011E0000001E1111111E1010000E011F
110E00000002020207020A040E101E11110E000000111111110F0101000E0404
0406000406090808080C00080009050305090101000E04040404040600111515
150B000000111111110F0000000E1111110E000001010F11110F000010101E11
111E000000010101031D0000000F100E011E000000040A0202070202001E1111
1111000000040A1111110000000A15151111000000110A040A1100000E101E11
11110000001F0204081F0000000C02020102020C000404040404040400060808
1008080600000008150200005A1005A1005A1005A1005A1005A1005A1005A100
991005A100151001510015100071005A1005A1005A1005A1005A1005A1005A10
05A1005A1005A1005A1005A1005A1005A1005A1005A1005A1005A1005A1005A1
005A1005A1005A1005A100B21306F93"