1 LST 2 !**************************** 3 !* SOFTKEY BINARY * 4 !* (C) Hewlett-Packard Co. * 5 !* 1980 * 6 !**************************** 9 ! REMEMBER TO TYPE TREM TO TOGGLE END OF LINE COMMENTS! 10 ! FORMAT OF COMMAND IS: 20 ! SOFTKEY (NUMEX(),, 40 ! THE FIRST NUMEXP SELECTS 50 !THE KEY, AND THE SECOND 60 ! SELECTS WHETHER THE TEXT IS 70 ! FOLLOWED BY AN ENDLINE (0) 80 ! OR NOT (NOT=0). THE STRING 90 ! IS THE TEXT ON THE KEY 100 NAM SOFTKY 110 DEF RUNTIM 120 DEF ASCIIS 130 DEF PARSE 140 DEF ERMSG 150 DEF INIT 160 PARSE BYT 0,0 170 DEF SOFTK, 180 RUNTIM BYT 0,0 190 DEF SOFTK. 200 BYT 377,377 210 SOFTK, PUBD R43,+R6 220 JSB =NUMVA+ 230 JSB =GETCMA 240 JSB =NUMVAL 250 JSB =GETCMA 260 JSB =STREXP 270 POBD R47,-R6 280 LDB R45,=371 290 PUMD R45,+R12 300 RTN 310 ASCIIS ASP "SOFTKEY" 320 BYT 377 330 ERMSG BYT 200,200,200,200,200,200,200,200,200 340 ASP "SOFTKEY NUMBER OUT OF RANGE" 350 ASP "SOFTKEY STRING TOO LONG" 360 BYT 377 370 INIT LDBD R0,=ROMFL 380 CMB R0,=1 390 JZR INITAL 400 CMB R0,=5 410 JZR RTNRTN 420 CMB R0,=2 430 JZR RTNRTN 440 CMB R0,=3 450 JZR INITAL 460 RTN 470 INITAL LDM R34,=KEYHAT 480 ADMD R34,=BINTAB 490 LDB R74,=316 500 STM R34,R75 510 LDB R77,=236 520 STMD R74,=CHIDLE 530 RTN 540 RTNRTN LDB R34,=236 550 STBD R34,=CHIDLE 560 RTN 570 ! GET BINARY KEY# OFF STACK 580 ! CHECK FOR CORRECT RANGE, RETURN ABSOLUTE ADDRESS OF KEY STORAGE IN R46,R47 590 KEY# JSB =ONEB 600 CMM R46,=1,0 610 JNC ERROR1 620 CMM R46,=11,0 630 JCY ERROR1 640 LLM R46 650 ADMD R46,=BINTAB 660 LDMD R46,X46,KEYTBL 670 ADMD R46,=BINTAB 680 RTN 690 ERROR1 JSB =ERROR+ 700 BYT 366 710 ERROR2 JSB =ERROR+ 720 BYT 365 730 BYT 241 740 SOFTK. BIN 750 POMD R32,-R12 760 POMD R30,-R12 770 CMM R30,=1,0 780 JCY CHNGKY 790 POMD R40,-R12 800 LDM R36,=KEY# 810 ADMD R36,=BINTAB 820 JSB X36,ZERO 830 CLB R45 840 STBD R45,R46 850 RTN 860 CHNGKY CMM R30,=140,0 870 JCY ERROR2 880 JSB =ONEB 890 LDM R26,R46 900 LDM R36,=KEY# 910 ADMD R36,=BINTAB 920 JSB X36,ZERO 930 CMM R26,=0,0 940 JNZ AROUND 950 LDB R31,=200 960 ORB R30,R31 970 AROUND PUBD R30,+R46 980 ANM R30,=177,0 990 LOOP POBD R26,+R32 1000 PUBD R26,+R46 1010 DCB R30 1020 JNZ LOOP 1030 KEYRTN RTN 1040 KEYHAT BIN 1050 CLM R26 1060 LDBD R26,=KEYHIT 1070 CMB R26,=200 1080 JNC KEYRTN 1090 CMB R26,=210 1100 JCY KEYRTN 1110 SBM R26,=177,0 1120 LLM R26 1130 ADMD R26,=BINTAB 1140 LDMD R26,X26,KEYTBL 1150 ADMD R26,=BINTAB 1160 POBD R36,+R26 1170 CMB R36,=0 1180 JNZ NEXT 1190 RTN 1200 NEXT STB R36,R77 1210 ANM R36,=177,0 1220 JSB =HLFLIN 1230 JSB =CURS 1240 TSB R77 1250 JNG OUTCR 1260 CLE 1270 JSB =EOJ2 1280 POMD R74,-R6 1290 RTN 1300 OUTCR LDB R26,=232 1310 STBD R26,=KEYHIT 1320 RTN 1330 KEYTBL BYT 0,0 1340 DEF K1 1350 DEF K2 1360 DEF K3 1370 DEF K4 1380 DEF K5 1390 DEF K6 1400 DEF K7 1410 DEF K8 1420 K1 BYT 2 1430 ASC "K1" 1440 BSZ 140 1450 K2 BYT 2 1460 ASC "K2" 1470 BSZ 140 1480 K3 BYT 2 1490 ASC "K3" 1500 BSZ 140 1510 K4 BYT 2 1520 ASC "K4" 1530 BSZ 140 1540 K5 BYT 2 1550 ASC "K5" 1560 BSZ 140 1570 K6 BYT 2 1580 ASC "K6" 1590 BSZ 140 1600 K7 BYT 2 1610 ASC "K7" 1620 BSZ 140 1630 K8 BYT 2 1640 ASC "K8" 1650 BSZ 140 1660 CURS DAD 35055 1670 CHIDLE DAD 102416 1680 KEYHIT DAD 100671 1690 BINTAB DAD 101233 1700 HLFLIN DAD 35121 1710 EOJ2 DAD 34772 1720 ROMFL DAD 101231 1730 OUTCHR DAD 35114 1740 NUMVA+ DAD 12407 1750 GETCMA DAD 13414 1760 NUMVAL DAD 12412 1770 STREXP DAD 13626 1780 ONEB DAD 56113 1790 ERROR+ DAD 6611 1800 ZERO EQU 0 1810 FIN