|
|
DataMuseum.dkPresents historical artifacts from the history of: Philips Data Systems |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Philips Data Systems Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 4556 (0x11cc)
Notes: pts_type(SC)
Names: »STRINP.SC«
└─⟦173d42e04⟧ Bits:30009663 Philips computer tape "600105"
└─⟦this⟧ »SCREEN/STRINP.SC«
IDENT STRINP REL=10.0,800314,870138041000 ******************************************************************** * * DISPLAY MANAGEMENT IN CREDIT * * RUNNING UNDER CREDIT 10.0 * TOSS 10.0 * ******************************************************************** * * STANDARD ROUTINE 'S T R I N P' * * INPUT FROM A STRING TO THE VARIABLE FIELDS OF A COMPLETE OR * A PART OF A DISPLAY FORMAT * * PARAMETERS: * <TYPE> BINARY ITEM HOLDING FIELD TYPE 0=FKI 1=FINP 2=F * <INPUT STRING> THE INPUT STRING * <INPUT START> BINARY ITEM HOLDING START POSITION IN INPUT STR * FIRST POSITION COUNT 0 * AT RETURN INPUT START POINTS WHERE MOVE WAS END * <UNIT SEPARATOR> STRING THAT HOLDS A CHARACTER WHICH SEPARATES E * FIELD IN THE INPUT STRING * <INDEX1> BINARY ITEM HOLDING THE FIRST VARIABLE FIELD IN * MUST NOT BE 0 * AT RETURN <INDEX1> HOLDS THE FIELD INDEX TO * THE LAST MOVED FIELD * <INDEX2> BINARY ITEM HOLDING THE LAST VARIABLE FIELD IND * MUST NOT BE 0 * <RETURN CODE> BINARY ITEM HOLDING RETURN CODE FROM STRINP * 0=OK 3=ERROR ************************************************************************ DDUM SPDDIV PDIV ENTRY STRINP INPUT FROM STRING TO FORMAT * EXT STRIN1 MOVE TO FORMAT * * DESCRIPTION OF ROUTINE STRIN1: ************************************************************ * * ROUTINE FOR TRANSFER OF DATA TO A STRING * TO THE CURRENT FIELD INDICATED IN FCB * * CALLED FROM CREDIT STANDARD MODULE 'S T R I N P' * * THE UNIT SEPARATOR IS FIRST SEARCHED. * SEARCH STARTS AT GIVEN STARTPOSITION WITHIN THE STRING. * WHEN THE UNIT SEPARATOR IS FOUND THE SUBSTRING TO BE * MOVED IS IDENTIFIED. * STANDARD MOVE ROUTINE (I:MOV) IS USED * EXCEPTION: WHEN RECIEVING ITEM IS STRING AND SENDING * ITEM IS SHORTER THE REST WILL BE FILLED WITH X'00' * * CALL STRIN1,<INPUT STRING>,<INPUT START>,<UNIT SEPARATOR> * WHERE * <INPUT STRING> STRING TO HOLD INPUT * <INPUT START> BINARY ITEM WITH START POSITION WITHIN * <INPUT STRING> FIRST POSITION COUNT 0 * AT RETURN INPUT START POINTS WHERE MOVE ENDED * <UNIT SEPARATOR> STRING TO HOLD A CHARACTER THAT SEPARATES * THE FIELDS IN <INPUT STRING> * ************************************************************ EJECT * STRINP PROC TYPE,INPSTR,INPSTA,INPUS,INDEX1,INDEX2,RETCOD PBIN TYPE,INPSTA,INDEX1,INDEX2,RETCOD PSTRG INPSTR,INPUS * CBL INDEX2,INDEX1,SINERR SIN010 IB TYPE,SIN100,SIN200 GETFLD 0,INDEX1,RETCOD ONLY FKI FIELDS B SIN300 SIN100 GETFLD 1,INDEX1,RETCOD ONLY FINP FIELDS B SIN300 SIN200 GETFLD 2,INDEX1,RETCOD BOTH FKI AND FINP FIELDS SIN300 BZ SIN350 FIELD FOUND BOFL SIN350 FIELD FOUND BUT EMPTY COMP. FIELD EARILIER FOUND SINERR MOVE RETCOD,=W'3' RETURN ERROR CODE 3 B SINRET EJECT * * PERFORM MOVE FROM INPUT STRING TO CURRENT VARIABLE FIELD * SIN350 CALL STRIN1,INPSTR,INPSTA,INPUS * BNZ SINERR UNSUCESSFUL MOVE FROM STRING CBNL INDEX1,INDEX2,SIN400 JUMP IF ALL FIELDS MOVED ADD INDEX1,=W'1' SWITCH B SIN010 SIN400 MOVE RETCOD,=W'0' SINRET RET PEND * * END
0x0000…0032 (0, 0, 400) Head {h00=0x002e, h01=0x0050, text=» IDENT STRINP REL=10.0,800314,870138041000«, t00=0x0000, t01=0x0004}
0x0032…007e Head {h00=0x0048, h01=0x0050, text=»********************************************************************«, t00=0x0000, t01=0x0036}
0x007e…0088 Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0000, t01=0x0082}
0x0088…00b2 Head {h00=0x0026, h01=0x0050, text=»* DISPLAY MANAGEMENT IN CREDIT «, t00=0x0000, t01=0x008c}
0x00b2…00bc Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0000, t01=0x00b6}
0x00bc…00e2 Head {h00=0x0022, h01=0x0050, text=»* RUNNING UNDER CREDIT 10.0«, t00=0x0000, t01=0x00c0}
0x00e2…0106 Head {h00=0x0020, h01=0x0050, text=»* TOSS 10.0«, t00=0x0000, t01=0x00e6}
0x0106…0110 Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0000, t01=0x010a}
0x0110…015c Head {h00=0x0048, h01=0x0050, text=»********************************************************************«, t00=0x0000, t01=0x0114}
0x015c…0166 Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0000, t01=0x0160}
0x0166…0190 Head {h00=0x0026, h01=0x0050, text=»* STANDARD ROUTINE 'S T R I N P'«, t00=0x0000, t01=0x016a}
0x0190…019a (1, 0, 400) Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0001, t01=0x0004}
0x019a…01e2 Head {h00=0x0044, h01=0x0050, text=»* INPUT FROM A STRING TO THE VARIABLE FIELDS OF A COMPLETE OR «, t00=0x0001, t01=0x000e}
0x01e2…0208 Head {h00=0x0022, h01=0x0050, text=»* A PART OF A DISPLAY FORMAT«, t00=0x0001, t01=0x0056}
0x0208…0212 Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0001, t01=0x007c}
0x0212…022a Head {h00=0x0014, h01=0x0050, text=»* PARAMETERS: «, t00=0x0001, t01=0x0086}
0x022a…027a Head {h00=0x004c, h01=0x0050, text=»* <TYPE> BINARY ITEM HOLDING FIELD TYPE 0=FKI 1=FINP 2=F«, t00=0x0001, t01=0x009e}
0x027a…02ac Head {h00=0x002e, h01=0x0050, text=»* <INPUT STRING> THE INPUT STRING «, t00=0x0001, t01=0x00ee}
0x02ac…02fc Head {h00=0x004c, h01=0x0050, text=»* <INPUT START> BINARY ITEM HOLDING START POSITION IN INPUT STR«, t00=0x0001, t01=0x0120}
0x02fc…0334 Head {h00=0x0034, h01=0x0050, text=»* FIRST POSITION COUNT 0 «, t00=0x0001, t01=0x0170}
0x0334…0384 Head {h00=0x004c, h01=0x0050, text=»* AT RETURN INPUT START POINTS WHERE MOVE WAS END«, t00=0x0002, t01=0x0018}
0x0384…03d4 Head {h00=0x004c, h01=0x0050, text=»* <UNIT SEPARATOR> STRING THAT HOLDS A CHARACTER WHICH SEPARATES E«, t00=0x0002, t01=0x0068}
0x03d4…040e Head {h00=0x0036, h01=0x0050, text=»* FIELD IN THE INPUT STRING«, t00=0x0002, t01=0x00b8}
0x040e…045e Head {h00=0x004c, h01=0x0050, text=»* <INDEX1> BINARY ITEM HOLDING THE FIRST VARIABLE FIELD IN«, t00=0x0002, t01=0x00f2}
0x045e…048c Head {h00=0x002a, h01=0x0050, text=»* MUST NOT BE 0«, t00=0x0002, t01=0x0142}
0x048c…04d8 Head {h00=0x0048, h01=0x0050, text=»* AT RETURN <INDEX1> HOLDS THE FIELD INDEX TO«, t00=0x0002, t01=0x0170}
0x04d8…050e Head {h00=0x0032, h01=0x0050, text=»* THE LAST MOVED FIELD «, t00=0x0003, t01=0x002c}
0x050e…055e Head {h00=0x004c, h01=0x0050, text=»* <INDEX2> BINARY ITEM HOLDING THE LAST VARIABLE FIELD IND«, t00=0x0003, t01=0x0062}
0x055e…058c Head {h00=0x002a, h01=0x0050, text=»* MUST NOT BE 0«, t00=0x0003, t01=0x00b2}
0x058c…05d8 Head {h00=0x0048, h01=0x0050, text=»* <RETURN CODE> BINARY ITEM HOLDING RETURN CODE FROM STRINP«, t00=0x0003, t01=0x00e0}
0x05d8…0606 Head {h00=0x002a, h01=0x0050, text=»* 0=OK 3=ERROR «, t00=0x0003, t01=0x012c}
0x0606…0656 Head {h00=0x004c, h01=0x0050, text=»************************************************************************«, t00=0x0003, t01=0x015a}
0x0656…066a Head {h00=0x0010, h01=0x0050, text=» DDUM SPDDIV«, t00=0x0004, t01=0x001a}
0x066a…0678 Head {h00=0x000a, h01=0x0050, text=» PDIV «, t00=0x0004, t01=0x002e}
0x0678…06aa Head {h00=0x002e, h01=0x0050, text=» ENTRY STRINP INPUT FROM STRING TO FORMAT«, t00=0x0004, t01=0x003c}
0x06aa…06b4 Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0004, t01=0x006e}
0x06b4…06d6 Head {h00=0x001e, h01=0x0050, text=» EXT STRIN1 MOVE TO FORMAT«, t00=0x0004, t01=0x0078}
0x06d6…06e0 Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0004, t01=0x009a}
0x06e0…070a Head {h00=0x0026, h01=0x0050, text=»* DESCRIPTION OF ROUTINE STRIN1:«, t00=0x0004, t01=0x00a4}
0x070a…074e Head {h00=0x0040, h01=0x0050, text=»************************************************************«, t00=0x0004, t01=0x00ce}
0x074e…0758 Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0004, t01=0x0112}
0x0758…078c Head {h00=0x0030, h01=0x0050, text=»* ROUTINE FOR TRANSFER OF DATA TO A STRING«, t00=0x0004, t01=0x011c}
0x078c…07be Head {h00=0x002e, h01=0x0050, text=»* TO THE CURRENT FIELD INDICATED IN FCB «, t00=0x0004, t01=0x0150}
0x07be…07c8 Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0004, t01=0x0182}
0x07c8…0804 Head {h00=0x0038, h01=0x0050, text=»* CALLED FROM CREDIT STANDARD MODULE 'S T R I N P'«, t00=0x0004, t01=0x018c}
0x0804…080e Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0005, t01=0x0038}
0x080e…0840 Head {h00=0x002e, h01=0x0050, text=»* THE UNIT SEPARATOR IS FIRST SEARCHED. «, t00=0x0005, t01=0x0042}
0x0840…0884 Head {h00=0x0040, h01=0x0050, text=»* SEARCH STARTS AT GIVEN STARTPOSITION WITHIN THE STRING. «, t00=0x0005, t01=0x0074}
0x0884…08c4 Head {h00=0x003c, h01=0x0050, text=»* WHEN THE UNIT SEPARATOR IS FOUND THE SUBSTRING TO BE«, t00=0x0005, t01=0x00b8}
0x08c4…08e4 Head {h00=0x001c, h01=0x0050, text=»* MOVED IS IDENTIFIED.«, t00=0x0005, t01=0x00f8}
0x08e4…0916 Head {h00=0x002e, h01=0x0050, text=»* STANDARD MOVE ROUTINE (I:MOV) IS USED «, t00=0x0005, t01=0x0118}
0x0916…0956 Head {h00=0x003c, h01=0x0050, text=»* EXCEPTION: WHEN RECIEVING ITEM IS STRING AND SENDING«, t00=0x0005, t01=0x014a}
0x0956…09a0 Head {h00=0x0046, h01=0x0050, text=»* ITEM IS SHORTER THE REST WILL BE FILLED WITH X'00' «, t00=0x0005, t01=0x018a}
0x09a0…09aa Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0006, t01=0x0044}
0x09aa…09f0 Head {h00=0x0042, h01=0x0050, text=»* CALL STRIN1,<INPUT STRING>,<INPUT START>,<UNIT SEPARATOR> «, t00=0x0006, t01=0x004e}
0x09f0…0a02 Head {h00=0x000e, h01=0x0050, text=»* WHERE «, t00=0x0006, t01=0x0094}
0x0a02…0a34 Head {h00=0x002e, h01=0x0050, text=»* <INPUT STRING> STRING TO HOLD INPUT«, t00=0x0006, t01=0x00a6}
0x0a34…0a78 Head {h00=0x0040, h01=0x0050, text=»* <INPUT START> BINARY ITEM WITH START POSITION WITHIN«, t00=0x0006, t01=0x00d8}
0x0a78…0abc Head {h00=0x0040, h01=0x0050, text=»* <INPUT STRING> FIRST POSITION COUNT 0 «, t00=0x0006, t01=0x011c}
0x0abc…0b08 Head {h00=0x0048, h01=0x0050, text=»* AT RETURN INPUT START POINTS WHERE MOVE ENDED «, t00=0x0006, t01=0x0160}
0x0b08…0b50 Head {h00=0x0044, h01=0x0050, text=»* <UNIT SEPARATOR> STRING TO HOLD A CHARACTER THAT SEPARATES «, t00=0x0007, t01=0x001c}
0x0b50…0b8a Head {h00=0x0036, h01=0x0050, text=»* THE FIELDS IN <INPUT STRING>«, t00=0x0007, t01=0x0064}
0x0b8a…0b94 Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0007, t01=0x009e}
0x0b94…0bd8 Head {h00=0x0040, h01=0x0050, text=»************************************************************«, t00=0x0007, t01=0x00a8}
0x0bd8…0be6 Head {h00=0x000a, h01=0x0050, text=» EJECT«, t00=0x0007, t01=0x00ec}
0x0be6…0bf0 Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0007, t01=0x00fa}
0x0bf0…0c32 Head {h00=0x003e, h01=0x0050, text=»STRINP PROC TYPE,INPSTR,INPSTA,INPUS,INDEX1,INDEX2,RETCOD «, t00=0x0007, t01=0x0104}
0x0c32…0c60 Head {h00=0x002a, h01=0x0050, text=» PBIN TYPE,INPSTA,INDEX1,INDEX2,RETCOD«, t00=0x0007, t01=0x0146}
0x0c60…0c7c Head {h00=0x0018, h01=0x0050, text=» PSTRG INPSTR,INPUS «, t00=0x0007, t01=0x0174}
0x0c7c…0c86 Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0007, t01=0x0190}
0x0c86…0ca8 Head {h00=0x001e, h01=0x0050, text=» CBL INDEX2,INDEX1,SINERR «, t00=0x0008, t01=0x000a}
0x0ca8…0cb6 Head {h00=0x000a, h01=0x0050, text=»SIN010«, t00=0x0008, t01=0x002c}
0x0cb6…0cd4 Head {h00=0x001a, h01=0x0050, text=» IB TYPE,SIN100,SIN200«, t00=0x0008, t01=0x003a}
0x0cd4…0d04 Head {h00=0x002c, h01=0x0050, text=» GETFLD 0,INDEX1,RETCOD ONLY FKI FIELDS «, t00=0x0008, t01=0x0058}
0x0d04…0d16 Head {h00=0x000e, h01=0x0050, text=» B SIN300 «, t00=0x0008, t01=0x0088}
0x0d16…0d24 Head {h00=0x000a, h01=0x0050, text=»SIN100«, t00=0x0008, t01=0x009a}
0x0d24…0d54 Head {h00=0x002c, h01=0x0050, text=» GETFLD 1,INDEX1,RETCOD ONLY FINP FIELDS«, t00=0x0008, t01=0x00a8}
0x0d54…0d66 Head {h00=0x000e, h01=0x0050, text=» B SIN300 «, t00=0x0008, t01=0x00d8}
0x0d66…0d74 Head {h00=0x000a, h01=0x0050, text=»SIN200«, t00=0x0008, t01=0x00ea}
0x0d74…0dac Head {h00=0x0034, h01=0x0050, text=» GETFLD 2,INDEX1,RETCOD BOTH FKI AND FINP FIELDS«, t00=0x0008, t01=0x00f8}
0x0dac…0dba Head {h00=0x000a, h01=0x0050, text=»SIN300«, t00=0x0008, t01=0x0130}
0x0dba…0dd8 Head {h00=0x001a, h01=0x0050, text=» BZ SIN350 FIELD FOUND«, t00=0x0008, t01=0x013e}
0x0dd8…0e08 Head {h00=0x002c, h01=0x0050, text=» BOFL SIN350 FIELD FOUND BUT EMPTY COMP.«, t00=0x0008, t01=0x015c}
0x0e08…0e28 Head {h00=0x001c, h01=0x0050, text=» FIELD EARILIER FOUND «, t00=0x0008, t01=0x018c}
0x0e28…0e36 Head {h00=0x000a, h01=0x0050, text=»SINERR«, t00=0x0009, t01=0x001c}
0x0e36…0e64 Head {h00=0x002a, h01=0x0050, text=» MOVE RETCOD,=W'3' RETURN ERROR CODE 3«, t00=0x0009, t01=0x002a}
0x0e64…0e76 Head {h00=0x000e, h01=0x0050, text=» B SINRET «, t00=0x0009, t01=0x0058}
0x0e76…0e84 Head {h00=0x000a, h01=0x0050, text=» EJECT«, t00=0x0009, t01=0x006a}
0x0e84…0e8e Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0009, t01=0x0078}
0x0e8e…0ed2 Head {h00=0x0040, h01=0x0050, text=»* PERFORM MOVE FROM INPUT STRING TO CURRENT VARIABLE FIELD«, t00=0x0009, t01=0x0082}
0x0ed2…0edc Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0009, t01=0x00c6}
0x0edc…0eea Head {h00=0x000a, h01=0x0050, text=»SIN350«, t00=0x0009, t01=0x00d0}
0x0eea…0f12 Head {h00=0x0024, h01=0x0050, text=» CALL STRIN1,INPSTR,INPSTA,INPUS«, t00=0x0009, t01=0x00de}
0x0f12…0f1c Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x0009, t01=0x0106}
0x0f1c…0f4c Head {h00=0x002c, h01=0x0050, text=» BNZ SINERR UNSUCESSFUL MOVE FROM STRING«, t00=0x0009, t01=0x0110}
0x0f4c…0f88 Head {h00=0x0038, h01=0x0050, text=» CBNL INDEX1,INDEX2,SIN400 JUMP IF ALL FIELDS MOVED «, t00=0x0009, t01=0x0140}
0x0f88…0fa2 Head {h00=0x0016, h01=0x0050, text=» ADD INDEX1,=W'1' «, t00=0x0009, t01=0x017c}
0x0fa2…0fb2 Head {h00=0x000c, h01=0x0050, text=» SWITCH «, t00=0x000a, t01=0x0008}
0x0fb2…0fc4 Head {h00=0x000e, h01=0x0050, text=» B SIN010 «, t00=0x000a, t01=0x0018}
0x0fc4…0fd2 Head {h00=0x000a, h01=0x0050, text=»SIN400«, t00=0x000a, t01=0x002a}
0x0fd2…0fec Head {h00=0x0016, h01=0x0050, text=» MOVE RETCOD,=W'0'«, t00=0x000a, t01=0x0038}
0x0fec…0ffe Head {h00=0x000e, h01=0x0050, text=»SINRET RET«, t00=0x000a, t01=0x0052}
0x0ffe…100c Head {h00=0x000a, h01=0x0050, text=» PEND «, t00=0x000a, t01=0x0064}
0x100c…1016 Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x000a, t01=0x0072}
0x1016…1020 Head {h00=0x0006, h01=0x0050, text=»* «, t00=0x000a, t01=0x007c}
0x1020…102c Head {h00=0x0008, h01=0x0050, text=» END«, t00=0x000a, t01=0x0086}
0x102c…1030 Head {h00=0x4004, h01=0x0000}
0x1030…1034 00 0a 00 92 ┆ ┆
0x1034…103c (11, 1, 8) 20 04 00 00 00 0b 00 04 ┆ ┆
0x103c…108c (12, 0, 400) 4c 45 4e 47 54 48 00 0b 01 70 00 1a 00 50 20 53 55 20 50 50 2c 43 53 42 2c 54 43 41 20 52 45 4c 20 50 50 20 00 0c 00 0e 00 08 00 50 5c 4c 4b 4d 00 0c 00 2c 00 0c 00 50 5c 44 41 54 41 5c 31 20 00 0c 00 38 00 1a 00 50 20 41 44 20 50 50 2c 43 ┆LENGTH p P SU PP,CSB,TCA REL PP P LKM , P DATA 1 8 P AD PP,C┆
0x108c…10dc 53 42 2c 54 43 41 20 4c 4f 47 20 50 50 20 00 0c 00 48 00 3c 00 50 5c 45 4a 45 43 54 5c 5c 5c 54 3a 45 44 46 4c 20 5c 5c 5c 54 3a 45 44 46 4c 20 5c 5c 5c 54 3a 45 44 46 4c 20 5c 5c 5c 54 3a 45 44 46 4c 20 5c 5c 5c 54 3a 45 44 46 4c 20 00 0c ┆SB,TCA LOG PP H < P EJECT T:EDFL T:EDFL T:EDFL T:EDFL T:EDFL ┆
0x10dc…112c 00 66 00 06 00 50 2a 20 00 0c 00 a6 00 26 00 50 5c 4c 44 5c 41 38 2c 46 43 42 4b 42 2c 42 46 43 42 5c 47 45 54 20 45 43 42 20 41 44 44 52 45 53 53 20 00 0c 00 b0 00 24 00 50 5c 4c 44 5c 41 31 2c 45 43 42 52 43 2c 41 38 5c 47 45 54 20 52 45 ┆ f P* & P LD A8,FCBKB,BFCB GET ECB ADDRESS $ P LD A1,ECBRC,A8 GET RE┆
0x112c…117c 54 55 52 4e 20 43 4f 44 45 20 00 0c 00 da 00 1c 00 50 5c 52 46 28 5a 29 5c 4f 4b 31 30 30 5c 4a 55 4d 50 20 49 46 20 4f 4b 20 00 0c 01 02 00 0e 00 50 5c 53 52 43 5c 41 31 2c 33 20 00 0c 01 22 00 26 00 50 5c 52 46 28 4e 29 5c 55 4e 44 45 46 ┆TURN CODE P RF(Z) OK100 JUMP IF OK P SRC A1,3 " & P RF(N) UNDEF┆
0x117c…11cc 5c 4a 55 4d 50 20 49 46 20 55 4e 44 45 46 49 4e 45 44 20 4b 45 59 00 0c 01 34 00 0e 00 50 5c 53 52 43 5c 41 31 2c 31 20 00 0c 01 5e 00 24 00 50 5c 41 42 4c 28 4e 4e 29 5c 54 3a 49 4f 45 52 5c 4a 55 4d 50 20 49 46 20 54 3a 49 4f 45 52 30 52 ┆ JUMP IF UNDEFINED KEY 4 P SRC A1,1 ^ $ P ABL(NN) T:IOER JUMP IF T:IOER0R┆