100 ! ASM_BAS.PGM - Creates a *.B74 file from *.LST 21 May 95 110 ! 120 ! 130 INPUT "Enter path/filename: ";FILE$ 140 ! 150 OPEN #1,FILE$,INPUT 160 OUTFILE$=SEG$(FILE$,1,LEN(FILE$)-3)&"B74" 170 OPEN #2,OUTFILE$,OUTPUT 180 ADR$="ADR":N=0:LINE=100 190 ! 200 PRINT #2,LINE;" ! ";OUTFILE$:LINE=LINE+10 210 PRINT #2,LINE;" !":LINE=LINE+10 220 PRINT #2,LINE;"CALL GETMEM(BYTES,ADR)":LINE=LINE+10 230 ! 240 LINPUT #1,IN$ 250 ! 260 IF SEG$(IN$,1,17)="Assembly complete"THEN CLOSE #1:CLOSE #2:BREAK 270 IF IN$=""THEN 240 280 IF SEG$(IN$,19,1)="*"THEN 240 290 IF ASC(SEG$(IN$,1,1))<>32 THEN 240 300 IF ASC(SEG$(IN$,2,1))=32 THEN 240 310 IF ASC(SEG$(IN$,7,1))=32 THEN 240 320 ! 330 Z$=SEG$(IN$,2,4):PRINT "Loading >"&SEG$(IN$,2,4) 340 CALL HEX((Z$),ADDRESS) 350 Z$=SEG$(IN$,7,2):CALL HEX((Z$),B0) 360 ! 370 Z$=SEG$(IN$,10,2) 380 IF Z$=" "THEN 480 390 CALL HEX((Z$),B1) 400 Z$=SEG$(IN$,13,2) 410 IF Z$=" "THEN 530 420 CALL HEX((Z$),B2) 430 Z$=SEG$(IN$,16,2) 440 IF Z$=" "THEN 580 450 CALL HEX((Z$),B3) 460 GOTO 630 470 ! 480 IF N=0 THEN PRINT #2,LINE;"CALL POKE(";ADR$;",";B0;")" 490 IF N=0 THEN 510 500 PRINT #2,LINE;"CALL POKE(";ADR$;N;",";B0;")" 510 ADR$="ADR+":N=N+1:LINE=LINE+10:GOTO 240 520 ! 530 IF N=0 THEN PRINT #2,LINE;"CALL POKE(";ADR$;",";B0;",";B1;")" 540 IF N=0 THEN 560 550 PRINT #2,LINE;"CALL POKE(";ADR$;N;",";B0;",";B1;")" 560 ADR$="ADR+":N=N+2:LINE=LINE+10:GOTO 240 570 ! 580 IF N=0 THEN PRINT #2,LINE;"CALL POKE(";ADR$;",";B0;",";B1;",";B2;")" 590 IF N=0 THEN 610 600 PRINT #2,LINE;"CALL POKE(";ADR$;N;",";B0;",";B1;",";B2;")" 610 ADR$="ADR+":N=N+3:LINE=LINE+10:GOTO 240 620 ! 630 IF N=0 THEN PRINT #2,LINE;"CALL POKE(";ADR$;",";B0;",";B1;",";B2;",";B3;")" 640 IF N=0 THEN 660 650 PRINT #2,LINE;"CALL POKE(";ADR$;N;",";B0;",";B1;",";B2;",";B3;")" 660 ADR$="ADR+4":LINE=LINE+10:GOTO 240 670 ! 680 SUB HEX(Z$,N) 690 DATA A,B,C,D,E,F 700 Y=LEN(Z$):N=0 710 FOR X=1 TO Y 720 X$(X)=SEG$(Z$,X,1) 730 NEXT X 740 FOR X=1 TO Y 750 IF NOT NUMERIC(X$(X))THEN W(X)=ASC(X$(X))-55 ELSE W(X)=VAL(X$(X)) 760 N=N+(W(X)*(16^(Y-X))) 770 NEXT X 780 SUBEND 100 ! ASMLOAD.PGM - Enters "101.*.LST" file in RAM 16 May 95 110 ! This version requires *.LST to be absolute (not relocatable). 120 ! Requires POKE.SUB, PCIF 130 ! 140 INPUT "Enter path/filename: ";FILE$ 150 OPEN #1,FILE$,INPUT 160 LINPUT #1,IN$ 170 ! 180 IF SEG$(IN$,1,17)="Assembly complete"THEN CLOSE #1:OPEN #1,"253.",OUTPUT 190 IF IN$=""THEN 160 200 IF SEG$(IN$,19,1)="*"THEN 160 210 IF ASC(SEG$(IN$,1,1))<>32 THEN 160 220 IF ASC(SEG$(IN$,2,1))=32 THEN 160 230 IF ASC(SEG$(IN$,7,1))=32 THEN 160 240 ! 250 Z$=SEG$(IN$,2,4):PRINT "Loading >"&SEG$(IN$,2,4) 260 CALL HEX((Z$),ADDRESS) 270 Z$=SEG$(IN$,7,2):CALL HEX((Z$),BYTE0) 280 ! 290 Z$=SEG$(IN$,10,2) 300 IF Z$=" "THEN CALL POKE(ADDRESS,BYTE0):GOTO 160 310 CALL HEX((Z$),BYTE1) 320 Z$=SEG$(IN$,13,2) 330 IF Z$=" "THEN CALL POKE(ADDRESS,BYTE0,BYTE1):GOTO 160 340 CALL HEX((Z$),BYTE2) 350 Z$=SEG$(IN$,16,2) 360 IF Z$=" "THEN CALL POKE(ADDRESS,BYTE0,BYTE1,BYTE2):GOTO 160 370 CALL HEX((Z$),BYTE3) 380 CALL POKE(ADDRESS,BYTE0,BYTE1,BYTE2,BYTE3):GOTO 160 390 ! 400 SUB HEX(Z$,N) 410 DATA A,B,C,D,E,F 420 Y=LEN(Z$):N=0 430 FOR X=1 TO Y 440 X$(X)=SEG$(Z$,X,1) 450 NEXT X 460 FOR X=1 TO Y 470 IF NOT NUMERIC(X$(X))THEN W(X)=ASC(X$(X))-55 ELSE W(X)=VAL(X$(X)) 480 N=N+(W(X)*(16^(Y-X))) 490 NEXT X 500 SUBEND 100 DIM P$(255)!PG-DSM.PGM Hex entries require ">" prefix 110 P$(0)="; I/O Cntl Register" 120 P$(2)="; Timer Jam Latch" 140 P$(3)="; Timer Control" 150 P$(4)="; Keybrd Read Latch" 160 P$(6)="; Pg Ctl Reg(bit 0,1)" 170 P$(12)="; Keybrd write latch" 180 P$(13)="; E-Port DDR" 190 P$(14)="; I/O Bus Data Latch" 200 P$(15)="; BAV bit 0,HSK bit 1" 210 P$(16)="; Address Ctl" 220 P$(24)="; Clock Ctl Reg" 230 P$(255)="; Peripheral file Op" 240 DIM A$(255) 250 A$(0)="1NOP":A$(105)="1ADC B,A":A$(25)="2ADC Rn,A" 260 A$(57)="2ADC Rn,B":A$(73)="3ADC Rn,Rn":A$(41)="2ADC %n,A" 270 A$(89)="2ADC %n,B":A$(121)="3ADC %n,Rn":A$(104)="1ADD B,A" 280 A$(24)="2ADD Rn,A":A$(56)="2ADD Rn,B":A$(72)="3ADD Rn,Rn" 290 A$(40)="2ADD %n,A":A$(88)="2ADD %n,B":A$(120)="3ADD %n,Rn" 300 A$(99)="1AND B,A":A$(19)="2AND Rn,A":A$(51)="2AND Rn,B" 310 A$(67)="3AND Rn,Rn":A$(35)="2AND %n,A":A$(83)="2AND %n,B" 320 A$(115)="3AND %n,Rn":A$(131)="2ANDP A,Pn":A$(147)="2ANDP B,Rn" 330 A$(163)="3ANDP %n,Pn":A$(140)="3BR @n":A$(172)="3BR @n(B)" 340 A$(156)="2BR *Rn":A$(102)="2BTJO B,A,OFST":A$(22)="3BTJO Rn,A,OFST" 350 A$(54)="3BTJO Rn,B,OFST":A$(70)="4BTJO Rn,Rn,OFST":A$(38)="3BTJO %n,A,OFST" 360 A$(86)="3BTJO %n,B,OFST":A$(118)="4BTJO %n,Rn,OFST" 370 A$(134)="3BTJOP A,Pn,OFST":A$(150)="3BTJOP B,Pn,OFST" 380 A$(166)="4BTJOP %>n,Pn,OFST":A$(103)="2BTJZ B,A,OFST" 390 A$(23)="3BTJZ Rn,A,OFST":A$(55)="3BTJZ Rn,B,OFST":A$(71)="4BTJZ Rn,Rn,OFST" 400 A$(39)="3BTJZ %>n,A,OFST":A$(87)="3BTJZ %>n,B,OFST" 410 A$(119)="4BTJZ %>n,Rn,OFST":A$(135)="3BTJZP A,Pn,OFST" 420 A$(151)="3BTJZP B,Pn,OFST":A$(167)="4BTJZP %>n,Pn,OFST" 430 A$(142)="3CALL @n":A$(174)="3CALL @n(B)":A$(158)="2CALL *Rn" 440 A$(181)="1CLR A":A$(197)="1 CLR B":A$(213)="2CLR Rn" 450 A$(176)="1CLRC":A$(109)="1CMP B,A":A$(29)="2CMP Rn,A" 460 A$(61)="2CMP Rn,B":A$(77)="3CMP Rn,Rn":A$(45)="2CMP %n,A" 470 A$(93)="2CMP %n,B":A$(125)="3CMP %n,Rn":A$(141)="3CMPA @n" 480 A$(173)="3CMPA @n(B)":A$(157)="2CMPA *Rn":A$(110)="1DAC B,A" 490 A$(30)="2DAC Rn,A":A$(62)="2DAC Rn,B":A$(78)="3DAC Rn,Rn" 500 A$(46)="2DAC %>n,A":A$(94)="2DAC %>n,B":A$(126)="3DAC %>n,Rn" 510 A$(178)="1DEC A":A$(194)="1DEC B":A$(210)="2DEC Rn" 520 A$(187)="1DECD A":A$(203)="1DECD B":A$(219)="2DECD Rn" 530 A$(6)="1DINT":A$(186)="2DJNZ A,OFST":A$(202)="2DJNZ B,OFST" 540 A$(218)="3DJNZ Rn,OFST":A$(111)="1DSB B,A":A$(31)="2DSB Rn,A" 550 A$(63)="2DSB Rn,B":A$(79)="3DSB Rn,Rn":A$(47)="2DSB %>n,A" 560 A$(95)="2DSB %>n,B":A$(127)="3DSB %>n,Rn":A$(5)="1EINT" 570 A$(1)="1IDLE":A$(179)="1INC A":A$(195)="1INC B":A$(211)="2INC Rn" 580 A$(180)="1INV A":A$(196)="1INV B":A$(212)="2INV Rn" 590 A$(224)="2JMP OFST":A$(227)="2JC/JHS,OFST":A$(226)="2JZ/JEQ,OFST" 600 A$(231)="2JL/JNC OFST":A$(225)="2JN,OFST":A$(230)="2JNE/JNZ,OFST" 610 A$(228)="2JP,OFST":A$(229)="2JPZ,OFST":A$(138)="3LDA @n" 620 A$(170)="3LDA @n(B)":A$(154)="2LDA *Rn":A$(13)="1LDSP" 630 A$(192)="1MOV A,B":A$(208)="2MOV A,Rd":A$(98)="1MOV B,A" 640 A$(209)="2MOV B,Rd":A$(18)="2MOV Rn,A":A$(50)="2MOV Rn,B" 650 A$(66)="3MOV Rn,Rn":A$(34)="2MOV %>n,A":A$(82)="2MOV %>n,B" 660 A$(114)="3MOV %>n,Rn":A$(136)="4MOVD %>n,Rp":A$(168)="4MOVD %>n(B),Rp" 670 A$(152)="3MOVD Rp,Rp":A$(130)="2MOVP A,Pd":A$(146)="2MOVP B,Pd" 680 A$(162)="3MOVP %>n,Pd":A$(128)="2MOVP Pn,A":A$(145)="2MOVP Pn,B" 690 A$(108)="1MPY B,A":A$(28)="2MPY Rn,A":A$(60)="2MPY Rn,B" 700 A$(76)="3MPY Rn,Rn":A$(44)="2MPY %>n,A":A$(92)="2MPY %>n,B" 710 A$(124)="3MPY %>n,Rn":A$(0)="1NOP":A$(100)="1OR B,A" 720 A$(100)="1OR B,A":A$(20)="2OR Rn,A":A$(52)="2OR Rn,B" 730 A$(68)="3OR Rn,Rn":A$(36)="2OR %>n,A":A$(84)="2OR %>n,B" 740 A$(116)="3OR %>n,Rn":A$(132)="2ORP A,Pd":A$(148)="2ORP B,Pd" 750 A$(164)="3ORP %>n,Pd":A$(185)="1POP A":A$(201)="1POP B" 760 A$(217)="2POP Rd":A$(8)="1POP ST":A$(184)="1PUSH A" 770 A$(200)="1PUSH B":A$(216)="2PUSH Rn":A$(14)="1PUSH ST" 780 A$(11)="1RETI":A$(10)="1RETS":A$(190)="1RL A" 790 A$(206)="1RL B":A$(222)="2RL Rd":A$(191)="1RLC A" 800 A$(207)="1RLC B":A$(223)="2RLC Rn":A$(188)="1RR A" 810 A$(204)="1RR B":A$(220)="2RR Rd":A$(189)="1RRC A" 820 A$(205)="1RRC B":A$(221)="2RRC Rd":A$(107)="1SBB B,A" 830 A$(27)="2SBB Rn,A":A$(59)="2SBB Rn,B":A$(75)="3SBB Rn,Rn" 840 A$(43)="2SBB %>n,A":A$(91)="2SBB %>n,B":A$(123)="3SBB %>n,Rn" 850 A$(7)="1SETC":A$(139)="3STA @n":A$(171)="3STA @n(B)" 860 A$(155)="2STA *Rn":A$(9)="1STSP":A$(106)="1SUB B,A" 870 A$(26)="2SUB Rn,A":A$(58)="2SUB Rn,B":A$(74)="3SUB Rn,Rn" 880 A$(42)="2SUB %>n,A":A$(90)="2SUB %>n,B":A$(122)="3SUB %>n,Rn" 890 A$(183)="1SWAP A":A$(199)="1SWAP B":A$(215)="2SWAP Rn" 900 A$(232)="1TRAP 23":A$(233)="1TRAP 22":A$(234)="2TRAP 21" 910 A$(235)="2TRAP 20":A$(236)="1TRAP 19":A$(237)="1TRAP 18" 920 A$(238)="1TRAP 17":A$(239)="1TRAP 16":A$(240)="1TRAP 15" 930 A$(241)="1TRAP 14":A$(242)="1TRAP 13":A$(243)="1TRAP 12" 940 A$(244)="1TRAP 11":A$(245)="1TRAP 10":A$(246)="1TRAP 9" 950 A$(247)="2TRAP 8":A$(248)="1TRAP 7":A$(249)="1TRAP 6" 960 A$(250)="1TRAP 5":A$(251)="1TRAP 4":A$(252)="1TRAP 3" 970 A$(253)="1TRAP 2":A$(254)="1TRAP 1":A$(255)="1TRAP 0" 980 A$(176)="1TSTA":A$(193)="1TSTB":A$(182)="1XCHB A":A$(198)="1XCHB" 990 A$(214)="2XCHB Rn":A$(101)="1XOR B,A":A$(21)="2XOR Rn,A" 1000 A$(53)="2XOR Rn,B":A$(69)="3XOR Rn,Rn":A$(37)="2XOR %>n,A" 1010 A$(85)="2XOR %>n,B":A$(117)="3XOR %>n,Rn":A$(133)="2XORP A,Pn" 1020 A$(149)="2XORP B,Pn":A$(165)="3XORP %>n,Pn" 1030 !-------------------------------------------------------------------------- 1031 CALL GETMEM(50,ADR):PRINT ADR:PAUSE! Subpgm space 1032 !CALL GETMEM(8194,BDR)! ROM block 1033 CALL HEXADDR(ADR,HIADR,LOADR) 1034 CALL HEXADDR(BDR,HIBDR,LOBDR) 1035 CALL POKE(8211,231)! Disable APD 1036 ! 1037 INPUT "Start Address: ";SA:CALL HEXADDR(SA,HISTART,LOSTART) 1038 ! 1039 INPUT "Page Number: ";PG 1040 ! 1041 INPUT "END Address: ";EA 1042 ! 1043 CALL POKE(ADR,0)! Clear ADR 1044 CALL POKE(ADR+1,128,6,35,3,184)! Save P6 on stack 1045 CALL POKE(ADR+6,34,PG,163,252,6,132,6)! Selects new Pg. 1046 CALL POKE(ADR+13,138,HISTART,LOSTART)! LDA @Label (ROM) 1047 CALL POKE(ADR+16,139,HIADR,LOADR)! STA @Label (ADR) 1048 CALL POKE(ADR+19,208,2,185,163,252,6,132,6,18,2,10)! Restores page 1049 ! 1050 OPEN #1,"101.PAGE2.ROM",OUTPUT 1051 FOR X=SA TO EA 1052 ! 1053 CALL EXEC(ADR+1) 1054 CALL PEEK(ADR,BYTE) 1055 PRINT #1,BYTE 1056 PRINT X 1057 ! 1058 SA=SA+1:CALL HEXADDR(SA,HINXT,LONXT) 1059 CALL POKE(ADR+14,HINXT,LONXT)! nc ROM address 1060 ! 1061 NEXT X 1062 ! 1063 SUB HEXADDR(N,HIB,LOB) 1064 HIB=INT(N/256):LOB=N-(HIB*256) 1065 SUBEND 1129 IMAGE #### >#### >## #################### ########################## 1130 N=1 1140 FOR X=LO TO HI 1150 COM$="":JMP$="" 1160 CALL PEEK(X,B1,B2,B3,B4) 1170 ! 1180 CALL HEX((X),XADR$) 1190 CALL HEX((B1),OP$) 1200 ! 1210 IF A$(B1)=""THEN PRINT #1,USING 1060,N,XADR$,OP$,"INVALID OPCODE":GOTO 1650 1220 ! 1230 BYTES=VAL(SEG$(A$(B1),1,1)) 1240 ! 1250 IF OP$="83"OR OP$="93"OR OP$="A3"OR OP$="86"OR OP$="96"OR OP$="A6"THEN 1290 1260 IF OP$="87"OR OP$="97"OR OP$="A7"OR OP$="82"OR OP$="92"OR OP$="A2"THEN 1290 1270 IF OP$="80"OR OP$="91"OR OP$="84"OR OP$="94"OR OP$="A4"OR OP$="85"THEN 1290 1280 IF OP$="95"OR OP$="A5"THEN 1290 ELSE 1310 1290 CALL PFILE(P$(),(OP$),(BYTES),(B2),(B3),(B4),COM$) 1300 ! 1310 IF OP$="66"OR OP$="16"OR OP$="36"OR OP$="46"OR OP$="26"THEN 1380 1320 IF OP$="56"OR OP$="76"OR OP$="86"OR OP$="96"OR OP$="A6"THEN 1380 1330 IF OP$="67"OR OP$="17"OR OP$="37"OR OP$="47"OR OP$="27"THEN 1380 1340 IF OP$="57"OR OP$="77"OR OP$="87"OR OP$="97"OR OP$="A7"THEN 1380 1350 IF OP$="E0"OR OP$="E1"OR OP$="E2"OR OP$="E3"OR OP$="E4"THEN 1380 1360 IF OP$="E5"OR OP$="E6"OR OP$="E7"THEN 1380 ELSE 1410 1370 ! 1380 CALL JUMP((N),(BYTES),(B2),(B3),(B4),JMP$) 1390 IF COM$=""THEN COM$=JMP$:JMP$="" 1400 ! 1410 IF OP$="8E"THEN CALL SBR((B2),(B3),COM$) 1420 IF B1>231 AND B1<256 THEN CALL TRAP((B1),(B2),COM$) 1430 ! 1440 PRINT #1,USING 1060,N,XADR$,OP$,SEG$(A$(B1),2,LEN(A$(B1))-1),COM$ 1450 PRINT #2,USING 1060,N,XADR$,OP$,SEG$(A$(B1),2,LEN(A$(B1))-1),COM$:N=N+1 1460 IF BYTES=1 THEN 1650 ELSE X=X+1 1470 ! 1480 CALL HEX((X),XADR$) 1490 CALL HEX((B2),OP$) 1500 PRINT #1,USING 1060,N,XADR$,OP$,"",JMP$ 1510 PRINT #2,USING 1060,N,XADR$,OP$,"",JMP$:N=N+1 1520 IF BYTES=2 THEN 1650 ELSE X=X+1 1530 ! 1540 CALL HEX((X),XADR$) 1550 CALL HEX((B3),OP$) 1560 PRINT #1,USING 1060,N,XADR$,OP$ 1570 PRINT #2,USING 1060,N,XADR$,OP$:N=N+1 1580 IF BYTES=3 THEN 1650 ELSE X=X+1 1590 ! 1600 CALL HEX((X),XADR$) 1610 CALL HEX((B4),OP$) 1620 PRINT #1,USING 1060,N,XADR$,OP$ 1630 PRINT #2,USING 1060,N,XADR$,OP$:N=N+1 1640 ! 1650 IF EOF(1)THEN BREAK 1660 PRINT #1,"":PRINT #2,"" 1670 NEXT X 1680 !------------------------------------------------------------------------- 1690 SUB DEC(HX$,DEC) 1700 DATA A,B,C,D,E,F 1710 Y=LEN(HX$):G=0 1720 FOR X=1 TO Y 1730 X$(X)=SEG$(HX$,X,1) 1740 NEXT X 1750 FOR X=1 TO Y 1760 IF NOT NUMERIC(X$(X))THEN W(X)=ASC(X$(X))-55 ELSE W(X)=VAL(X$(X)) 1770 DEC=DEC+(W(X)*(16^(Y-X))) 1780 NEXT X 1790 SUBEND 1800 !------------------------------------------------------------------------- 1810 SUB HEX(Z,HX$)!Converts decimal entry to hex-Decimal entry passed by value 1820 DATA A,B,C,D,E,F 1830 HX$="" 1840 Z$=STR$(((Z/16)-INT(Z/16))*16):GOSUB 1900 1850 HX$=Z$&HX$ 1860 Z=INT(Z/16) 1870 IF Z>15 THEN 1840 ELSE Z$=STR$(Z):GOSUB 1900 1880 HX$=Z$&HX$ 1890 SUBEXIT 1900 RESTORE:FOR X=10 TO 15 1910 READ B$:IF X=VAL(Z$)THEN Z$=B$:RETURN 1920 NEXT X:RETURN 1930 SUBEND 1940 !------------------------------------------------------------------------- 1950 SUB PFILE(P$(),OP$,BYTES,B2,B3,B4,COM$) 1960 COM$="" 1970 ! 1980 IF BYTES=2 THEN COM$=P$(B2) 1990 IF BYTES=3 THEN COM$=P$(B3) 2000 IF BYTES=4 THEN COM$=P$(B3) 2010 IF COM$=""THEN COM$=P$(255):SUBEXIT 2020 SUBEND 2030 !------------------------------------------------------------------------- 2040 SUB JUMP(N,BYTES,B2,B3,B4,JMP$) 2050 IF BYTES=0 OR BYTES>4 THEN SUBEXIT 2060 IF BYTES=2 THEN JUMP=B2 2070 IF BYTES=3 THEN JUMP=B3 2080 IF BYTES=4 THEN JUMP=B4 2090 ! 2100 IF JUMP>128 THEN 2140 2110 N$=STR$(N+BYTES+JUMP) 2120 JMP$="; Ofst line # "&N$:SUBEXIT 2130 ! 2140 N$=STR$(N+BYTES-(256-JUMP)) 2150 JMP$="; Ofst line # "&N$ 2160 ! 2170 SUBEND 2180 !------------------------------------------------------------------------- 2190 SUB SBR(B2,B3,COM$) 2200 IF B2=240 AND B3=126 THEN COM$="CALL BATCHK":SUBEXIT 2210 IF B2=240 AND B3=132 THEN COM$="CALL CFI":SUBEXIT 2220 IF B2=240 AND B3=57 THEN COM$="CALL CLRARG":SUBEXIT 2230 IF B2=240 AND B3=42 THEN COM$="CALL CLRRES":SUBEXIT 2240 IF B2=240 AND B3=9 THEN COM$="CALL COPYFA":SUBEXIT 2250 IF B2=240 AND B3=102 THEN COM$="CALL COPYFM":SUBEXIT 2260 IF B2=240 AND B3=108 THEN COM$="CALL COPYFS":SUBEXIT 2270 IF B2=240 AND B3=105 THEN COM$="CALL COPYMF":SUBEXIT 2280 IF B2=240 AND B3=48 THEN COM$="CALL DIVZER":SUBEXIT 2290 IF B2=240 AND B3=24 THEN COM$="CALL FADD":SUBEXIT 2300 IF B2=240 AND B3=33 THEN COM$="CALL FDIV":SUBEXIT 2310 IF B2=240 AND B3=72 THEN COM$="CALL FINDLN":SUBEXIT 2320 IF B2=240 AND B3=21 THEN COM$="CALL FLTCMP":SUBEXIT 2330 IF B2=240 AND B3=30 THEN COM$="CALL FMUL":SUBEXIT 2340 IF B2=240 AND B3=27 THEN COM$="CALL FSUB":SUBEXIT 2350 IF B2=248 AND B3=75 THEN COM$="CALL IOS":SUBEXIT 2360 IF B2=240 AND B3=16 THEN COM$="CALL MOVDWN":SUBEXIT 2370 IF B2=240 AND B3=12 THEN COM$="CALL MOVUP":SUBEXIT 2380 IF B2=240 AND B3=39 THEN COM$="CALL NORMAL":SUBEXIT 2390 IF B2=240 AND B3=37 THEN COM$="CALL OFFCRS":SUBEXIT 2400 IF B2=240 AND B3=36 THEN COM$="CALL ONCRS":SUBEXIT 2410 IF B2=240 AND B3=51 THEN COM$="CALL OVFLOW":SUBEXIT 2420 IF B2=240 AND B3=54 THEN COM$="CALL POPARG":SUBEXIT 2430 IF B2=240 AND B3=120 THEN COM$="CALL PSHARG":SUBEXIT 2440 IF B2=240 AND B3=36 THEN COM$="CALL ROUND":SUBEXIT 2450 IF B2=240 AND B3=75 THEN COM$="CALL ROUND2":SUBEXIT 2460 IF B2=240 AND B3=60 THEN COM$="CALL STRCMP":SUBEXIT 2470 IF B2=240 AND B3=45 THEN COM$="CALL SWAPFA":SUBEXIT 2471 IF B2=240 AND B3=117 THEN COM$="CALL SWAPFM":SUBEXIT 2472 IF B2=240 AND B3=111 THEN COM$="CALL SWAPFS":SUBEXIT 2473 IF B2=240 AND B3=114 THEN COM$="CALL SWAPMM":SUBEXIT 2474 IF B2=240 AND B3=18 THEN COM$="CALL SYM":SUBEXIT 2475 IF B2=240 AND B3=18 THEN COM$="CALL SYM":SUBEXIT 2520 ! 2530 SUBEND 2540 !------------------------------------------------------------------------- 2550 SUB TRAP(B1,B2,COM$) 2560 IF B1=255 THEN COM$="Power up,Reset":SUBEXIT! TRAP 0 2570 IF B1=254 THEN COM$="INT1,Lo Battery":SUBEXIT! TRAP 1 2580 IF B1=253 THEN COM$="Cntr/Timer INT (soft trap)":SUBEXIT! TRAP 2 2590 IF B1=252 THEN COM$="INT3 (Keyboard)":SUBEXIT! TRAP 3 2600 IF B1=251 THEN COM$="BASIC pg trap (>DFFB)":SUBEXIT! TRAP 4 2610 IF B1=250 THEN COM$="BASIC pg(>DFF8)":SUBEXIT! TRAP 5 2620 IF B1=249 THEN COM$="BASIC pg(>DFF5)":SUBEXIT! TRAP 6 2630 IF B1=248 THEN COM$="BASIC pg(>DFF2)":SUBEXIT! TRAP 7 2640 IF B1=247 THEN COM$="ERROR Handler":SUBEXIT! TRAP 8 2650 IF B1=246 THEN COM$="BASIC pg(>DFEF)":SUBEXIT! TRAP 9 2660 IF B1=245 THEN COM$="BASIC pg(>DFEC)":SUBEXIT! TRAP 10 2670 IF B1=244 THEN COM$="A.L. bkpts":SUBEXIT! TRAP 11 2680 IF B1=243 THEN COM$="FP add":SUBEXIT! TRAP 12 2690 IF B1=242 THEN COM$="Not Used by TI74":SUBEXIT! TRAP 13 2700 IF B1=241 THEN COM$="BASIC pg (>DFE9)":SUBEXIT! TRAP 14 2710 IF B1=240 THEN COM$="Load FP arg":SUBEXIT! TRAP 15 2720 IF B1=239 THEN COM$="Clear FP Stack":SUBEXIT! TRAP 16 2730 IF B1=238 THEN COM$="BASIC pg (>DFE6)":SUBEXIT! TRAP 17 2740 IF B1=237 THEN COM$="Next BASIC pgm byte":SUBEXIT! TRAP 18 2750 IF B1=236 THEN COM$="BASIC pg1 (DFE3)":SUBEXIT! TRAP 19 2760 IF B1=235 THEN 2810! CALPAG TRAP 20 2770 IF B1=234 THEN COM$="BRPAG":SUBEXIT! TRAP 21 2780 IF B1=233 THEN COM$="FPPUSH":SUBEXIT! TRAP 22 2790 IF B1=232 THEN COM$="FPPOP":SUBEXIT! TRAP 23 2791 ! 2800 ! 2810 IF B2=0 THEN COM$="CALL WRTIND":SUBEXIT! TRAP 20 2820 IF B2=2 THEN COM$="CALL LINEIN":SUBEXIT 2830 IF B2=4 THEN COM$="CALL KEYIN":SUBEXIT 2840 IF B2=7 THEN COM$="CALL CRUNCH":SUBEXIT 2850 IF B2=8 THEN COM$="CALL CSN":SUBEXIT 2860 IF B2=9 THEN COM$="CALL PGEDIT":SUBEXIT 2870 IF B2=10 THEN COM$="CALL DSPBUF":SUBEXIT 2880 IF B2=11 THEN COM$="CALL CLRINP":SUBEXIT 2890 IF B2=14 THEN COM$="CALL UNCRS":SUBEXIT 2900 IF B2=16 THEN COM$="CALL NEWPRO":SUBEXIT 2910 IF B2=19 THEN COM$="CALL KSTAT":SUBEXIT 2920 IF B2=20 THEN COM$="CALL CSI":SUBEXIT 2930 IF B2=21 THEN COM$="CALL UNCRUNCH":SUBEXIT 2940 IF B2=23 THEN COM$="CALL CLRDSP":SUBEXIT 2950 IF B2=24 THEN COM$="CALL ONCRS":SUBEXIT 2960 IF B2=25 THEN COM$="CALL OFFCRS":SUBEXIT 2970 IF B2=26 THEN COM$="CALL SETCRS":SUBEXIT 2980 IF B2=27 THEN COM$="CALL TYPE":SUBEXIT 2990 IF B2=28 THEN COM$="CALL BUFIN":SUBEXIT 3000 IF B2=31 THEN COM$="CALL CHKBRK":SUBEXIT 3010 IF B2=32 THEN COM$="CALL DSPINT":SUBEXIT 3020 IF B2=64 THEN COM$="CALL MDISP":SUBEXIT 3030 IF B2=65 THEN COM$="CALL MNEW":SUBEXIT 3040 IF B2=70 THEN COM$="CALL SKIPF":SUBEXIT 3050 IF B2=74 THEN COM$="CALL STGNEW":SUBEXIT 3060 IF B2=75 THEN COM$="CALL STGDSP":SUBEXIT 3070 IF B2=76 THEN COM$="CALL STGCLR":SUBEXIT 3080 IF B2=77 THEN COM$="CALL CIF":SUBEXIT 3090 IF B2=78 THEN COM$="CALL CIS":SUBEXIT 3100 IF B2=79 THEN COM$="CALL STGCL2":SUBEXIT 3110 IF B2=80 THEN COM$="CALL BRKPT":SUBEXIT 3120 IF B2=81 THEN COM$="CALL PARSE":SUBEXIT 3130 IF B2=82 THEN COM$="CALL GETNMBR":SUBEXIT 3140 IF B2=85 THEN COM$="CALL GETSTGR":SUBEXIT 3150 IF B2=86 THEN COM$="CALL SMB":SUBEXIT 3160 IF B2=87 THEN COM$="CALL ASSIGN":SUBEXIT 3170 IF B2=88 THEN COM$="CALL GETADR":SUBEXIT 3180 IF B2=89 THEN COM$="CALL GRINT":SUBEXIT 3190 IF B2=90 THEN COM$="CALL CRTLST":SUBEXIT 3200 IF B2=95 THEN COM$="CALL SIN":SUBEXIT 3210 IF B2=96 THEN COM$="CALL COS":SUBEXIT 3220 IF B2=97 THEN COM$="CALL TAN":SUBEXIT 3230 IF B2=98 THEN COM$="CALL ATAN":SUBEXIT 3240 IF B2=99 THEN COM$="CALL ASIN":SUBEXIT 3250 IF B2=100 THEN COM$="CALL ACOS":SUBEXIT 3260 IF B2=101 THEN COM$="CALL SQR":SUBEXIT 3270 IF B2=102 THEN COM$="CALL EXP":SUBEXIT 3280 IF B2=103 THEN COM$="CALL LN":SUBEXIT 3290 IF B2=104 THEN COM$="CALL LOG":SUBEXIT 3300 IF B2=106 THEN COM$="CALL CFILNG":SUBEXIT 3310 IF B2=108 THEN COM$="CALL ASINH":SUBEXIT 3320 IF B2=108 THEN COM$="CALL ASINH":SUBEXIT 3330 IF B2=109 THEN COM$="CALL ACOSH":SUBEXIT 3340 IF B2=110 THEN COM$="CALL ATANH":SUBEXIT 3350 IF B2=111 THEN COM$="CALL SINH":SUBEXIT 3360 IF B2=112 THEN COM$="CALL COSH":SUBEXIT 3370 IF B2=113 THEN COM$="CALL TANH":SUBEXIT 3380 IF B2=138 THEN COM$="CALL CLSALL":SUBEXIT 3390 IF B2=141 THEN COM$="CALL FRE":SUBEXIT 3400 IF B2=143 THEN COM$="CALL OPEN":SUBEXIT 3410 IF B2=147 THEN COM$="CALL CLSTMP":SUBEXIT 3420 IF B2=150 THEN COM$="CALL CNS":SUBEXIT 3430 IF B2=151 THEN COM$="CALL STKCLS":SUBEXIT 3440 IF B2=198 THEN COM$="CALL RSTRND":SUBEXIT 3450 IF B2=200 THEN COM$="CALL RND":SUBEXIT 3460 IF B2=201 THEN COM$="CALL RNDBYT":SUBEXIT 3470 ! TRAP 21 3480 SUBEND