-- Em3270UserInputDefs:  3270 Emulation User Input Handler


--  Revised for Star 3.0adrTI  by Lui:		        30-Jun-83 14:07:39
--  Owner:  Kernaghan

--  Overview:
--  This module will handle all user inputs to the emulator coming from the Star world, that is, from the Notifier.  These inputs come from either keystrokes or mouse actions.
--  It is responsible for determining what action has taken place (keystrokes or mouse) and then executing the function of that action, for example, processing AID keys, reseting the cursor at the mouse position, inputing characters fron the virtual keyboards, inhibiting the keyboard,etc.



DIRECTORY
  Em3270PrivDefs,
  NtDefs USING [Fun, Funrepeat, Special3270Key],
  SchemaDefs USING [Lschema, Pvprocessbut],
  StandardDefs USING [Ch, Cv, String];


Em3270UserInputDefs: DEFINITIONS =
  BEGIN OPEN Em3270PrivDefs, StandardDefs;

  --===================
  --  Public Types
  --===================
  KeyProc: TYPE = PROCEDURE [
    lschema: SchemaDefs.Lschema, key: NtDefs.Special3270Key ← special3270Alpha];
  KeyProcessor: TYPE = ARRAY NtDefs.Special3270Key OF KeyProc;

  AIDType: TYPE = {ReadModify, ShortRead, TstReqRead};
  AIDVal: TYPE = {
    clear, cursorSel, enter, noAID, PA1, PA2, PF1, PF2, PF3, PF4, PF5, PF6, PF7,
    PF8, PF9, PF10, PF11, PF12, sysReq, testReq};

  --===================
  --  Constants
  --===================
  AIDCodes: ARRAY AIDVal OF CHARACTER = [  -- see Attention ID Configurations figure, IBM COM. Des.
    clear: 155C,  -- 6D Hex
    cursorSel: 176C,  -- 7E Hex
    enter: 175C,  -- 7D Hex
    noAID: 140C,  -- 60 Hex
    PA1: 154C,  -- 6C Hex
    PA2: 156C,  -- 6E Hex
    PF1: 361C,  -- F1 Hex
    PF2: 362C,  -- F2 Hex
    PF3: 363C,  -- F3 Hex
    PF4: 364C,  -- F4 Hex
    PF5: 365C,  -- F5 Hex
    PF6: 366C,  -- F6 Hex
    PF7: 367C,  -- F7 Hex
    PF8: 370C,  -- F8 Hex
    PF9: 371C,  -- F9 Hex
    PF10: 172C,  -- 7A Hex
    PF11: 173C,  -- 7B Hex
    PF12: 174C,  -- 7C Hex
    sysReq: 360C,  -- F0 Hex
    testReq: 360C];  -- F0 Hex 



  --===================
  --  Public Procedures
  --===================
  DoProcessBut: SchemaDefs.Pvprocessbut;  --Handle legal button selections

  Reset: KeyProc;
  -- Clear the status area of all symbols, rebuilds the online ones, and sets Emulator global status to system available.


  ProcessInputChar: PROCEDURE [lschema: SchemaDefs.Lschema, string: String];
  -- Process a normal alphanumeric character from the main keyboard array

  Process3270Keyes: PROCEDURE [
    lschema: SchemaDefs.Lschema, key: NtDefs.Special3270Key];
  -- Process a 3270-unique character fron the virtual keyboard

  ProcessFuntion: PROCEDURE [lschema: SchemaDefs.Lschema, fun: NtDefs.Fun];
  -- Process Star function keyes

  ProcessFunRepeat: PROCEDURE [
    lschema: SchemaDefs.Lschema, cvFunrepeat: Cv, funrepeat: NtDefs.Funrepeat];
  -- Process Function keyes which can repeat

  Create: PROCEDURE [lschema: SchemaDefs.Lschema];
  -- About to start a new 3270 session. Do whatever initialization necessary. 
  
  Destroy: PROCEDURE [lschema: SchemaDefs.Lschema];
  -- The current is about to end. Cleanup yourself.
  
  ResetAIDStatus: PROCEDURE [lschema: SchemaDefs.Lschema];
  -- Reset the AID because a WCC byte whose reset bit was on was recieved. 
  
  DoReadMod: PROCEDURE [ 
    lschema: SchemaDefs.Lschema, buffer: LptBufferData, lptPutBuf: LptBufOfChar,
    aidCode: Ch, accessMode: AccessMode ← keyMode];
    
  --===================
  --  Modules
  --===================

  Em3270UserInputPack: PRIVATE PROGRAM;

  END.	-- of Em3270UserInputDefs


LOG
March 7, 1982 - Kernaghan - Created Em3270UserInput
30-Jun-83 14:07:44    - Lui   -- support for Read Modified.