**** Motorola 6800 Cross Assembler, Release 1.1 **** TENET BASIC Version, Release 1.0 **** Copyright 1974 by Motorola, Inc. **** **** Recovered from paper tape by Ben Zotto, January 2023. **** The tape contained a series of files separated by NUL runs. **** This file reconstructs these, cleaned up to be more easily **** readable. The first file is the cross assembler. This is **** followed by 6800 object code for an M6800 assembler, then **** other short BASIC programs of a related nature. **** The full raw binary of the paper tape accompanies this **** in a .bin file. 2 REM PROGRAM: M68SHORT 919 07/22/76 5 REM PROGRAM: BASM6800 JUL. 22, 1976 10 INTEGER AA,AMOD,BB,BRSW,CC,CPUT,DD,DOSW(10),EE,FACT(0:7),FCHR,FZF,HDIG,HOVF,I,IANS 20 INTEGER IC,ICOL,ICSW,ICTM,ID(6),IE,II,III,IIII,IMLN,INX,IPAS,IPCT,ITER,IXBS,IXOP,J 30 INTEGER JAD,JAD1,JAD2,JADR,JBAS,JDSW,JERR,JJJ,JLDF(6),JLEN,JLF 40 INTEGER JLSW,JM,JNB(4),JNL,JNSB,JNUM 50 INTEGER JOVF,JP1,JP2,JRS,JRSW,JS,JSB,JSDF(6),JSIC,JSW,JSYM,JTER,JTMP,JV 60 INTEGER L,LA,LBSW,LDRA,LEVL,LEVS,LL,LNBF,LNSW,LSYM(15),LULP,NCSW,NEG,NL 70 INTEGER NMSW,NN,NOPT(2),NPBS,NPCL,NPLI,NS,NSYM,OPB2(51),OPB3(16),OPB4(116),OPB5(22) 80 INTEGER OPSW,OTCK,OTSW,PAN1,PBIN,PCLS,PGLL,PGLN,PGNO 90 INTEGER PIXB,PLCT,RDNO,RTSW,SCOL,SILN,SSCH,SSDF(3),TADR 100 INTEGER TIME,TINX,ULSW 150 DOUBLE JN,SEED 200 STRING CHR1,HEX(0:15),IBF3,ISYM(15),JB,JBYT,JC,JER,JJ 210 STRING JNAM,JNM,JW,LABL 220 STRING N,NB(81),NC,NOPC(2),NPCD(127),OBUF(81) 230 STRING OPCD,OTAP,PFCC,PNAM,SCCH,SMBF 231 CPUT = TIMER 232 JBAS = 16 235 PNAM = 'TSTPRG' 240 JJ = ' ' 241 PFCC = '1 ' 246 LULP = 1 248 FOR I = 4 TO 15 250 ISYM(I) = ' ' 252 NEXT I 260 ISYM(1)='A ' 262 ISYM(2)='B ' 264 ISYM(3)='X ' 266 LSYM(1)=32767 268 LSYM(2)=32767 270 LSYM(3)=32767 275 PGLN = 44 277 NSYM =3 278 JDSW = 1 300 OPEN 'DATAFILE',1,INPUT,OLD 310 FOR A = 1 TO 126 320 INPUT FROM 1:A$ 330 NPCD(A) = A$ 340 NEXT A 350 MAT INPUT FROM 1:OPB2 360 MAT INPUT FROM 1:OPB3 370 MAT INPUT FROM 1:OPB4 380 MAT INPUT FROM 1:OPB5 390 CLOSE 1 400 NPCD(127) = ' ' 440 IXBS = 3 450 NPLI = 2 460 JV,PAN1 = 0 470 PGLL = 81 480 RTSW = 1 490 LDRA = 0 500 PIXB = 1 510 NPBS = 16 620 FOR I =1 TO 81 630 OBUF(I),NB(I) = '' 640 NEXT I 645 PRINT "INPUT THE FILE NAME FOR THE OUTPUT TAPE"; 650 INPUT OTAP 651 OPEN OTAP,2,OUTPUT,NEW 652 CLOSE 2 700 NOPT(1) = 0 710 NOPT(2) = 0 720 NOPC(1) = 'DBAS' 730 NOPC(2) = 'LIST' 740 NPCL = 4 750 DATA '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' 760 MAT READ HEX 800 JLDF(1) = 3 812 JLDF(2) = 3 814 JLDF(3) = 2 816 JLDF(4) = 6 818 JLDF(5) = 5 820 JLDF(6) = 4 822 JSDF(1) = 14 824 JSDF(2) = 13 826 JSDF(3) = 12 828 JSDF(4) = 18 830 JSDF(5) = 17 832 JSDF(6) = 15 834 SSDF(1) = 25 836 SSDF(2) = 23 838 SSDF(3) = 20 1000 PRINT "INPUT THE NAME OF THE INPUT FILE "; 1001 INPUT AAA$ 1005 OPEN AAA$,1,INPUT,RANDOM,OLD ! ********** TEST 1008 PRINT "INPUT THE NAME OF THE OUTPUT LISTING FILE "; 1009 INPUT BBB$ 1010 OPEN BBB$,3,OUTPUT,NEW ! ********** TEST 1020 GOTO 80000 ! ********** TEST 5000 REM SUBROUTINE * MPUGNC * FEB. 13, 1976 5220 IF IC < IMLN THEN GOTO 5330 5300 NC = ' ' 5310 ICSW = 6 5320 RETURN 5330 IC = IC +1 5340 NC = SUBSTR(SMBF,IC,1) 5350 IF NC # ' ' THEN GOTO 5380 5360 ICSW = 1 ! CHAR. IS A SPACE 5370 RETURN 5380 IF NC # ',' THEN GOTO 5410 5390 ICSW = 2 ! CHAR. IS A COMMA 5400 RETURN 5410 IF NC < '0' OR NC > '9' THEN GOTO 5440 5420 ICSW = 3 ! CHAR. IS '0' - '9' 5430 RETURN 5440 IF NC < 'A' OR NC > 'Z' THEN GOTO 5470 5450 ICSW = 4 ! CHAR. IS 'A' - 'Z' 5460 RETURN 5470 IF NC < ' ' OR NC > '_' THEN GOTO 5360 5480 ICSW = 5 5490 RETURN 6000 REM SUBROUTINE * MPAPAG * DEC. 31, 1975 6110 TIME = 100*INT(CLOCK/6000)+INT((CLOCK MOD 6000)/100) 6120 F$ = '%% 2B 6% 8B "M6800 CROSS - ASSEMBLER" 6B 4% B 8% 4B "PAGE" B 3%' 6130 IF NPLI = 1 THEN 6500 6140 IF PGNO = 0 THEN 6260 6150 IF JNL < 1 THEN 6190 6160 PLCT = PLCT + JNL 6170 IF PLCT < PGLN-7 THEN 6500 6190 IF PLCT >= PGLN THEN 6260 6200 PLCT = PLCT + 1 6210 IF LULP = 1 THEN 6240 6220 PRINT ' ' 6230 GOTO 6190 6240 PRINT ON 3:' ' 6250 GOTO 6190 6260 IF LULP = 1 THEN 6310 6270 PRINT ' ---' 6280 PRINT 6290 PRINT 6300 GOTO 6340 6310 PRINT ON 3:' ---' 6320 PRINT ON 3:' ' 6330 PRINT ON 3:' ' 6340 PGNO = PGNO + 1 6350 IF LULP = 1 THEN 6420 6360 PRINT CHAR(12): 6370 FOR L = 1 TO 40 6380 PRINT IN FORM '%':CHAR(127) 6390 NEXT L 6400 PRINT IN FORM F$:PFCC,PNAM,TIME,TDATE,PGNO 6410 GOTO 6430 6420 PRINT ON 3 IN FORM F$:PFCC,PNAM,TIME,TDATE,PGNO 6430 FOR I = 1 TO 3 6440 IF LULP = 1 THEN 6470 6450 PRINT 6460 GOTO 6480 6470 PRINT ON 3:' ' 6480 NEXT I 6490 PLCT = 4 6500 JNL = 0 6510 RETURN 7000 REM SUBROUTINE * MPAFOP * DEC. 29, 1975 7220 PCLS=0,PIXB=1 7230 IXOP = 1 7240 N = NPCD(IXOP) 7250 IXOP = IXOP+1 7260 IF IXOP >126 THEN 7370 7270 IF OPCD=N THEN 7390 7280 IF N<"*0" OR N>"*9" THEN 7350 7290 PCLS=PCLS+1 ! NEW OCODE CLASS FOUND 7300 PIXB=1 7310 IF N#"*9" THEN 7240 7320 PCLS=1 7330 GOTO 7390 7350 PIXB=PIXB+1 7360 GOTO 7240 7370 PCLS=1 7380 PIXB=1 7390 PBIN=0 ! PLACE OPCODE BINARY IN PBIN 7400 RETURN 8000 REM SUBROUTINE * MPAERR * FEB. 24, 1976 8130 JB='' 8140 JSIC=IC 8150 IC=JSIC-6 8160 IF IC <0 THEN IC=0 8170 II = 1 8180 GOSUB 5000 8190 JB=JB + NC 8200 II = II + 1 8210 IF IC '9' THEN JLSW = 1 ELSE JLSW = 2 ! TEST FOR LINE NO. - SET JLSW 9150 IF JLSW = 2 THEN IBF3 = JC ELSE IBF3 = ' ' 9160 ULSW = 1 9170 NN = 0 9180 J = 0 9190 IMLN = 0 9192 LNBF = LENGTH(SMBF) 9200 FOR I = 1 TO LNBF 9210 JC = ' ' 9220 JW = SUBSTR(SMBF,I,1) 9230 ON ULSW GOTO 9240, 9340 9240 ON JLSW GOTO 9340, 9260 9260 IF JW < '0' OR JW > '9' THEN 9300 9270 NN = 10 * NN + VAL(JW) 9280 GOTO 9370 9300 SILN = NN 9310 ULSW = 2 9320 IBF3 = JW 9325 FCHR = I 9330 IF JW = ' ' THEN 9360 9340 J = J+1 9360 IF JW # ' ' THEN IMLN = J 9370 NEXT I 9380 SMBF = SUBSTR(SMBF,FCHR+1,LNBF-FCHR) 9430 IC = FCHR 9440 GOSUB 5000 9450 RETURN 13000 REM SUBROUTINE * MPUBNM * DEC. 29, 1975 13100 JNAM = '' 13110 I = 1 13120 IF ICSW = 4 THEN 13160 13130 GOTO 13230 13140 GOSUB 5000 ! GET NEXT CHARACTER FROM IMAGE BUFFER 13150 IF ICSW < 3 OR ICSW > 4 THEN 13230 13160 JNAM = JNAM + NC 13170 I = I+1 13180 IF I < 7 THEN 13140 13200 GOSUB 5000 ! GET THE NEXT CHARACTER 13210 IF ICSW < 3 OR ICSW > 4 THEN 13230 13220 GOTO 13200 13230 RETURN 15000 REM SUBROUTINE * MPUPTW * FEB. 11, 1976 15170 ON JSW GOTO 15190,15235,15320,15440 15190 PRINT ON 2 IN FORM '%':' ' 15200 OBUF(1) = 'S' 15210 OBUF(2) = STR(JAD) 15220 RETURN 15235 L = 4 15240 OTCK = JAD/256 + JAD MOD 256 15290 TINX = 4 15300 GOTO 15340 15320 OTCK = OTCK + JAD 15330 L = 2 15340 INX = 0 15350 JN = JAD 15355 JBAS = 16 15360 JCOL = L 15370 GOSUB 16000 15380 FOR J = 1 TO L 15390 TINX = TINX + 1 15400 OBUF(TINX) = NB(J) 15410 NEXT J 15420 RETURN 15440 J = (TINX-2)/2 15450 JAD2 = OTCK + J 15470 OTCK = 255 - JAD2 MOD 256 15480 INX = 0 15490 JN = J 15500 JCOL = 2 15510 GOSUB 16000 15520 OBUF(3) = NB(1) 15530 OBUF(4) = NB(2) 15540 JN = OTCK 15550 JCOL = 2 15560 GOSUB 16000 15570 TINX = TINX + 1 15580 OBUF(TINX) = NB(3) 15590 TINX = TINX + 1 15600 OBUF(TINX) = NB(4) 15605 FOR IL = 1 TO TINX 15610 PRINT ON 2 IN FORM '%':OBUF(IL): 15615 NEXT IL 15620 OTSW = 1 ! RESET 'OT' BUFFER SWITCH 1 = BUFFER EMPTY 15630 RETURN 16000 REM SUBROUTINE * MPUCNA * MAR. 09, 1976 16110 JN = JN MOD 65536 16115 FACT(0) = 1 16120 FOR IIII = 1 TO 7 16125 FACT(IIII) = FACT(IIII-1)*JBAS ! SETS UP FACTORS OF 10 OR 16 16130 NEXT IIII 16135 HOVF = JBAS/4 * FACT(JCOL-1) 16140 SEED = JN, NEG = 0 16150 IF SEED < 0 THEN NEG = 1, SEED = SEED + HOVF, SEED = SEED + HOVF 16160 FOR IIII = JCOL - 1 TO 0 STEP -1 16170 HDIG = SEED/FACT(IIII) 16180 SEED = SEED MOD FACT(IIII) 16190 IF NEG THEN NEG = 0, HDIG = HDIG + JBAS/2 16200 INX = INX + 1, NB(INX) = HEX(HDIG) 16210 NEXT IIII 16220 RETURN 17000 REM SUBROUTINE * MPUPTS * FEB. 24, 1976 17220 ON JDSW GOTO 17240,17420,17650 17240 OPEN OTAP,2,OUTPUT,OLD 17245 JSW = 1 17250 JAD = 0 17260 GOSUB 15000 17270 JSW = 2 17280 GOSUB 15000 17290 JSW = 3 17300 JAD = 72 17310 GOSUB 15000 17320 JAD = 68 17330 GOSUB 15000 17340 JAD = 82 17350 GOSUB 15000 17360 JSW = 4 17370 JAD = 0 17380 GOSUB 15000 17400 RETURN 17420 ON OTSW GOTO 17500,17440 17440 IF JADR = TADR AND TADR MOD 16 # 0 THEN 17590 17460 JSW = 4 17470 JAD = 0 17480 GOSUB 15000 17500 TADR = JADR 17510 JSW = 1 17520 JAD = 1 17530 GOSUB 15000 17540 JSW = 2 17550 JAD = TADR 17555 GOSUB 15000 17570 OTSW = 2 17590 JSW = 3 17600 JAD = VAL(JBYT) 17610 GOSUB 15000 17620 TADR = TADR + 1 17630 RETURN 17650 JSW = 4 17660 JAD = 0 17670 IF OTSW # 1 THEN GOSUB 15000 17680 JSW = 1 17690 JAD = 9 17700 GOSUB 15000 17710 JSW = 2 17720 JAD = 0 17730 GOSUB 15000 17740 JSW = 4 17750 GOSUB 15000 17760 CLOSE 2 17770 RETURN 20000 REM SUBROUTINE * MPAFSY * FEB. 24, 1976 20510 FOR III = 1 TO NSYM 20540 IF LSYM(III) > 65535 THEN 20620 !SYMBOL FOUND ERROR 20550 IF ISYM(III) = JNAM THEN 20600 ! SYMBOL FOUND 20560 NEXT III 20570 III = NSYM + 1 20580 JRS=3 ! SYMBOL NOT FOUND 20590 GOTO 20640 20600 JRS=1 ! SYMBOL FOUND 20610 GOTO 20630 20620 JRS=2 20630 LBVL = LSYM(III) 20640 RETURN 22000 REM SUBROUTINE * MPASSY * MAR. 05, 1976 22260 JRSW=1 22270 JV=JNUM 22280 GOSUB 20000 22290 ON JDSW GOTO 22300, 22420, 22440 22300 ON JRS GOTO 22310, 22470, 22340 22310 IF LSYM(III)=JV THEN RETURN 22320 JRSW=2 22330 RETURN 22340 IF III < 16 THEN 22380 !SYMBOL NOT IN TABLE 22350 JER='221' 22360 GOSUB 8000 22370 GOTO 22470 22380 CHR1 = SUBSTR(JNAM,1,1) 22382 IF CHR1 < 'A' OR CHR1 > 'Z' THEN 22410 22388 ISYM(III)=JNAM ! STORE SYMBOL 22390 NSYM = NSYM + 1 22400 LSYM(III)=JV 22410 RETURN 22420 IF JRS=1 THEN 22400 ! CHANGE VALUE 22430 GOTO 22470 22440 IF JRS=3 THEN 22470 22450 LSYM(III) = LSYM(III) + 65536 22460 RETURN 22470 JRSW=3 22480 RETURN 24000 REM SUBROUTINE: * MPUADR * FEB. 06, 1976 24230 JSW = 1 24240 JOVF = 2 24250 ON JS GOTO 24260,24280,24300,24330 24260 JP1 = JP1 + JP2 ! ***** ADDITION ROUTINE 24270 GOTO 24340 24280 JP1 = JP1 - JP2 ! ***** SUBTRACTION ROU TINE 24290 GOTO 24340 24300 JP1 = JP1 * JP2 ! ***** MULTIPLICATION 24310 JOVF = 3 24320 GOTO 24340 24330 JP1 = JP1 / JP2 ! ***** DIVISION 24340 IF ABS(JP1) >= 256 THEN JSW = 2 24350 JOVF = 0 24360 IF ABS(JP1) <= 65535 THEN 24390 24370 JP1 = JP1 MOD 65535 24380 JOVF = 1 24390 RETURN 26000 REM SUBROUTINE: * MPUFNO * FEB. 20, 1976 26220 JSB = 0 26230 FOR A = 1 TO 4 26240 JNB(A) = 0 26250 NEXT A 26260 JERR = 2 26270 JNSB = 1 26280 LEVS = 1 26290 GOTO 26310 26300 GOSUB 5000 26310 NCSW = 1 26320 ON LEVS GOTO 26340,26490 26340 ON ICSW GOTO 26400,26400,26480,26400,26350,26400 26350 JSB = 1 26360 IF NC = '$' THEN 26430 26370 IF NC = '@' THEN 26440 26380 IF NC = '%' THEN 26450 26400 JN = 0 26410 JERR = 2 26420 RETURN 26430 JSB = JSB + 2 26440 JSB = JSB + 1 26450 LEVS = 2 26460 GOTO 26300 26480 LEVS = 2 26490 ON ICSW GOTO 26850,26850,26510,26670,26850,26850 26510 NN = ASC(NC)-48 26520 ON JNSB GOTO 26530,26560,26590,26620 26530 IF NN > 1 THEN JNSB = 2 26540 JNB(1) = JNB(1) * 2 26550 JNB(1) = JNB(1) + NN 26560 IF NN > 7 THEN JNSB = 3 26570 JNB(2) = JNB(2) * 8 26580 JNB(2) = JNB(2) + NN 26590 IF NN > 9 THEN JNSB = 4 26600 JNB(3) = JNB(3) * 10 26610 JNB(3) = JNB(3) + NN 26620 JNB(4) = JNB(4) * 16 26630 JNB(4) = JNB(4) + NN 26640 JERR = 1 26650 ON NCSW GOTO 26300,26310 26670 JC = NC 26680 NCSW = 2 26690 GOSUB 5000 26700 IF JC > 'F' THEN GOTO 26750 26710 NN = ASC(JC) - 55 26720 IF JNSB = 4 THEN GOTO 26620 26730 IF JC # 'B' AND JC # 'D' OR JSB # 0 THEN 26590 26740 IF ICSW = 3 OR ICSW = 4 THEN 26590 26750 JSB = 1 26760 IF JC = 'B' THEN 26830 26770 IF JC = 'Q' OR JC = 'O' THEN 26820 26780 IF JC = 'D' THEN 26810 26790 IF JC # 'H' THEN 26400 26800 JSB = JSB + 1 26810 JSB = JSB + 1 26820 JSB = JSB + 1 26830 IF ICSW = 3 OR ICSW = 4 THEN 26400 26850 IF JSB # 0 THEN 26880 26860 JSB = 3 26870 IF JNSB= 4 THEN JSB = 4 26880 IF JSB < JNSB THEN 26400 26930 JN = JNB(JSB) 26940 RETURN 30000 REM SUBROUTINE: * MPAOPR * MAR. 05, 1976 30120 JV = 0 30130 NS = 1 30140 JSW = 1 30150 LEVS = 1 30160 BRSW = 2 30170 GOTO 30190 30180 GOSUB 5000 30190 ON LEVS GOTO 30210,30250,30260 30210 ON ICSW GOTO 30280,30290,30680,30310,30410,30280 30230 JSW = 5 30240 LEVS = 2 30250 ON ICSW GOTO 30280,30280,30180,30180,30180,30280 30260 ON ICSW GOTO 30280,30280,30230,30230,30410,30280 30280 IF BRSW = 2 AND JSW = 1 THEN JSW = 5 30290 RETURN 30310 GOSUB 13000 30320 GOSUB 20000 30322 I = JRS 30324 J = III 30330 NN = LBVL 30340 BRSW = 1 30365 JER = '222' 30370 IF IPAS = 2 AND I = 2 THEN GOSUB 8000 ! ERROR ROUTINE 30372 IF I < 3 THEN 30720 30376 JER = '211' 30378 IF IPAS = 2 THEN GOSUB 8000 ! ERROR ROUTINE 30380 JSW = 4 30390 GOTO 30240 30410 IF NS = 0 THEN 30470 30430 IF NC # '*' THEN 30470 30450 NN = IPCT 30460 GOTO 30650 30470 IF NC = '+' THEN 30590 30480 IF NS > 1 THEN 30620 30490 IF NC = '-' THEN 30570 30500 IF NC = '*' THEN 30550 30510 IF NC # '/' THEN 30620 30530 NS = 4 30540 GOTO 30620 30550 NS = 3 30560 GOTO 30620 30570 NS = 2 30580 GOTO 30620 30590 NS = 1 30600 LEVS = 1 30610 GOTO 30180 30620 IF NC # "'" THEN 30670 30640 GOSUB 5000 ! GET NEXT CHARACTER 30645 N = NC 30650 GOSUB 5000 30660 GOTO 30700 30670 IF NC # '$' AND NC # '@' AND NC # '%' THEN 30230 30680 GOSUB 26000 ! BUILD NUMBER 30682 NN = JN 30684 I = JERR 30690 IF I = 2 THEN 30230 30700 BRSW = 1 30720 IF NS = 0 THEN 30230 30730 JP1 = JV 30740 JS = NS 30750 JP2 = NN 30760 GOSUB 24000 ! ARITH OP ROUTINE 30762 JV = JP1 30770 IF JSW > 2 THEN 30240 30780 NS = 0 30790 LEVS = 3 30800 GOTO 30190 32000 REM SUBROUTINE: * MPAGAM * FEB. 24, 1976 32135 PAN1 = 0 32140 JSW = 1 32150 JC = NC 32160 GOSUB 5000 ! GET NEXT CHARACTER 32170 JM = 3 32180 IF JC = '#' THEN 32250 32190 JM = 1 32200 IF JC = STR(LDRA) THEN 32250 32210 IF JC = 'X' AND NC = ' ' THEN 32360 32220 JM = 0 32230 IC = IC - 2 32240 GOSUB 5000 ! GET NEXT CHARACTER 32250 GOSUB 30000 ! FORM THE OPERAND'S VALUE 32255 PAN1 = JV 32260 ON ICSW GOTO 32370,32320,32280,32280,32280,32370 32280 JM = 4 32290 JSW = 5 32300 GOTO 32410 32320 GOSUB 5000 ! GET NEXT CHARACTER 32325 JC = NC 32330 GOSUB 5000 ! DO IT AGAIN 32340 IF JC # 'X' OR NC # ' ' THEN 32280 32360 JM = 2 32370 IF JM # 0 THEN 32410 32390 JM = 1 32400 IF JSW # 1 THEN JM = 4 32410 RETURN 34000 REM SUBROUTINE * MPAOPT * FEB. 24, 1976 34120 IANS = 2 34130 IF NC # 'N' THEN 34180 34150 IANS = 1 34160 GOSUB 5000 ! GET THE NEXT CHARACTER 34170 IF NC = 'O' THEN GOSUB 5000 ! DO IT AGAIN 34180 GOSUB 13000 ! BUILD THE OPTION SYMBOL 34200 FOR I = 1 TO NPCL 34210 IF SUBSTR(JNAM,1,1) = SUBSTR(NOPC(I),1,1) THEN 34320 34220 NEXT I 34240 JER = '217' 34250 GOSUB 8000 34260 ON ICSW GOTO 34470,34280,34300,34120,34300,34470 34280 GOSUB 5000 34290 GOTO 34260 34300 GOSUB 5000 34310 GOTO 34240 34320 IF I = 1 THEN 34360 34330 NOPT(I) = IANS 34340 GOTO 34260 34360 N = SUBSTR(JNAM,3,2) 34370 IF SUBSTR(JNAM,5,2) # ' ' THEN N = SUBSTR(JNAM,5,2) 34380 I = 8 34390 IF N = '8 ' THEN 34440 34400 IF N = '10' THEN 34430 34410 IF N = '16' THEN 34240 34420 I = I + 6 34430 I = I + 2 34440 NPBS = I 34450 IXBS = I/5 34460 GOTO 34260 34470 RETURN 40000 REM SUBROUTINE * MPAPA1 * MAR. 05, 1976 40190 MAT PRINT IN FORM '81(%)/':NB 40200 IF LULP # 1 THEN 40220 40210 MAT PRINT ON 3 IN FORM ' " " 2B 81(%)':NB 40220 RETURN 42000 REM SUBROUTINE * MPAPRL * MAR. 05, 1976 42210 IF DOSW(10) = 0 AND IPAS = 1 THEN 43520 42215 ON NPLI GOTO 43330,42270 42220 FOR I = 1 TO 9 42230 IF DOSW(I) = 1 THEN 42270 42240 NEXT I 42250 GOTO 43520 42270 FOR I = 1 TO PGLL 42280 NB(I) = ' ' 42290 NEXT I 42300 FOR NIX = 1 TO 8 42310 IF DOSW(NIX) = 0 THEN 43230 42320 I = 0 42330 K = 0 42340 JJJ = PAN1 42350 ON NIX GOTO 42370,42430,42480,42530,42510,42690,42580,42560 42370 INX = 0 42380 JBAS = 10 42385 JN = SILN ! ***** TEMP ***** 42390 JCOL = 5 42400 GOSUB 16000 42410 GOTO 43230 42430 K = 3 42440 INX = 7 42450 JJJ = IPCT 42460 GOTO 42600 42480 JJJ = PBIN 42490 GOTO 42580 42510 K = 3 42530 I = 3 42540 GOTO 42580 42560 K = 3 42580 I = I + IXBS 42590 INX = JSDF(I) 42600 K = K + IXBS 42610 I = JLDF(K) 42615 JBAS = NPBS 42620 JN = JJJ 42630 JCOL = I 42640 GOSUB 16000 42650 GOTO 43230 42690 INX = SSDF(IXBS) 42700 JSIX = INX 42710 ISIC = IC - 1 42720 IC = 0 42730 IF RTSW = 1 THEN 43150 42750 GOSUB 5000 42760 IF IC < 7 THEN 42785 42770 IF ICSW = 1 OR ICSW = 6 THEN 42815 42780 GOTO 42750 42785 INX = INX + 1 42790 NB(INX) = NC 42792 IF LENGTH(NB(INX)) > 1 THEN STOP ! ***** TEMP ***** 42800 GOTO 42770 42815 IF INX - JSIX < 7 THEN INX = JSIX + 7 42825 FOR I = 1 TO 4 42835 INX = INX + 1 42845 NB(INX) = SUBSTR(OPCD,I,1) 42847 IF LENGTH(NB(INX)) > 1 THEN STOP ! ***** TEMP ***** 42855 NEXT I 42875 IC = SCOL - 1 42880 IF IC < 0 THEN IC = 0 42885 LEVS = 0 42895 INX = INX + 2 42905 LEVS = LEVS +1 42915 GOSUB 5000 42925 ON LEVS GOTO 42935,42975,42975,42935,43130 42935 IF ICSW = 1 THEN 42915 42945 IF ICSW = 6 THEN 43210 42955 LEVS = LEVS + 1 42965 GOTO 42925 42975 IF RTSW = 2 THEN 43130 42995 IF INX >= PGLL THEN 43210 43005 INX = INX + 1 43015 NB(INX) = NC 43017 IF LENGTH(NB(INX)) > 1 THEN STOP ! ***** TEMP ***** 43025 IF RTSW # 4 THEN 43090 43045 SSCH = SSCH - 1 43055 IF SSCH = 0 THEN 42895 43065 GOTO 42915 43090 IF LEVS = 2 THEN 42905 43100 IF STR(SSCH) = NC THEN 42895 43110 GOTO 42915 43130 IF INX - JSIX < 23 THEN INX = JSIX + 23 43140 IC = IC - 1 43145 IF IC < 0 THEN IC = 0 43150 L = PGLL - INX 43160 FOR I = 1 TO L 43170 GOSUB 5000 43180 INX = INX + 1 43190 NB(INX) = NC 43192 IF LENGTH(NB(INX)) > 1 THEN STOP ! ***** TEMP ***** 43200 NEXT I 43210 IC = ISIC 43215 IF IC < 0 THEN IC = 0 43220 GOSUB 5000 43230 NEXT NIX 43250 JLEN = PGLL 43270 GOSUB 40000 43280 JNL = 1 43290 GOSUB 6000 43330 IF DOSW(10) = 1 OR DOSW(9) = 0 THEN 43520 43340 JADR = IPCT 43350 IF DOSW(3) = 0 THEN 43400 43360 JDSW = 2 43370 JBYT = STR(PBIN) 43380 GOSUB 17000 43390 JADR = JADR + 1 43400 JV = PAN1 43410 IF DOSW(4) = 0 AND DOSW(7) = 0 THEN 43460 43415 IF JV < 0 THEN JV = 256 - ABS(JV) 43420 JDSW = 2 43430 JBYT = STR(JV) 43440 GOSUB 17000 43450 GOTO 43520 43460 IF DOSW(5) = 0 AND DOSW(8) = 0 THEN 43520 43470 JBYT = STR(JV/256) 43480 GOSUB 17000 43490 JADR = JADR + 1 43500 JBYT = STR(JV MOD 256) 43510 GOSUB 17000 43520 RETURN 46000 REM SUBROUTINE * MPAPSC * FEB. 24, 1976 46058 I = PIXB - 4 46062 ON I GOTO 47270,46090,46250,46540,46740,47000,47170,47340,47450 46090 GOSUB 30000 46100 OPSW = JSW 46110 PAN1 = JV 46120 IF OPSW > 2 THEN 46180 46130 IPCT = PAN1 46140 MAT DOSW = (0) 46150 DOSW(6),DOSW(2),DOSW(1) = 1 46160 GOTO 47530 46180 JER = '216' 46190 GOSUB 8000 46193 MAT DOSW = (0) 46196 DOSW(6),DOSW(2),DOSW(1) = 1 46200 GOSUB 42000 46210 RETURN 46250 JNAM = LABL 46260 GOSUB 20000 46263 I = JRS 46266 J = III 46270 IF JRS # 1 AND IPAS = 1 THEN RETURN 46280 GOSUB 30000 46282 OPSW = JSW 46284 PAN1 = JV 46290 IF OPSW < 3 AND I = 1 THEN 46380 46310 JER = '213' 46320 GOSUB 8000 46340 JNAM = LABL 46350 JDSW = 3 46360 GOSUB 22000 46365 I = JRSW 46370 GOTO 46470 46380 ON IPAS GOTO 46400,46470 46400 IF LBSW = 2 AND LBVL # PAN1 THEN 46340 46410 LBVL = PAN1 46420 JNAM = LABL 46430 JDSW = 2 46435 JNUM = LBVL 46440 GOSUB 22000 46445 LBSW = JRSW 46450 RETURN 46470 MAT DOSW = (0) 46480 DOSW(8),DOSW(6),DOSW(1) = 1 46490 GOSUB 42000 46500 RETURN 46540 MAT DOSW = (0) 46550 DOSW(9),DOSW(7),DOSW(6),DOSW(2),DOSW(1)=1 46560 GOSUB 30000 46562 PAN1 = JV 46564 OPSW = JSW 46570 ON IPAS GOTO 46670,46590 46590 JER = '210' 46600 IF OPSW = 2 OR OPSW = 3 THEN GOSUB 8000 46620 JER = '214' 46630 IF OPSW = 5 THEN GOSUB 8000 46640 GOSUB 42000 46650 MAT DOSW = (0) 46660 DOSW(9),DOSW(7),DOSW(2)=1 46670 IPCT = IPCT +1 46680 IF ICSW # 2 THEN RETURN 46690 GOSUB 5000 46700 GOTO 46560 46740 JSIC = IC 46750 SCCH = NC 46760 GOSUB 26000 46762 JV = JN 46764 I = JERR 46770 IF JV = 0 AND I = 2 OR ICSW #2 THEN 46840 46790 IF I # 1 OR JV > 255 OR JV < 1 THEN 46180 46800 RTSW = 4 46810 SSCH = JV + IC + 1 - JSIC 46820 JSIC = IC 46840 MAT DOSW = (0) 46850 DOSW(9),DOSW(7),DOSW(6),DOSW(2),DOSW(1) = 1 46860 IC = JSIC 46870 GOSUB 5000 46890 IF RTSW #4 AND ICSW = 6 OR NC = SCCH OR NC = STR(SSCH) THEN RETURN 46895 PAN1 = ASC(NC) 46900 GOSUB 42000 46910 MAT DOSW = (0) 46920 DOSW(9),DOSW(7),DOSW(2) = 1 46930 IPCT = IPCT + 1 46940 IF RTSW # 4 THEN 46870 46950 JV = JV - 1 46960 IF JV = 0 THEN RETURN 46970 GOTO 46870 47000 MAT DOSW = (0) 47010 DOSW(9),DOSW(8),DOSW(6),DOSW(2),DOSW(1) = 1 47020 GOSUB 30000 47025 PAN1 = JV 47030 ON IPAS GOTO 47100,47050 47050 JER = '215' 47060 IF OPSW = 3 OR OPSW = 5 THEN GOSUB 8000 47070 GOSUB 42000 47080 MAT DOSW = (0) 47090 DOSW(9),DOSW(8),DOSW(2) = 1 47100 IPCT = IPCT + 2 47110 IF ICSW # 2 THEN RETURN 47120 GOSUB 5000 47130 GOTO 47020 47170 GOSUB 30000 47172 PAN1 = JV 47174 OPSW =JSW 47176 IF OPSW = 4 THEN 47184 47180 IF OPSW > 2 THEN 46180 47182 GOTO 47190 47184 PAN1 = 1 47190 MAT DOSW = (0) 47200 DOSW(8),DOSW(6),DOSW(2),DOSW(1) = 1 47210 GOSUB 42000 47220 IPCT = IPCT + PAN1 47230 RETURN 47270 IF IPAS = 1 THEN 47520 47280 JNL = 0 47290 IF PLCT > 8 THEN GOSUB 6000 47300 GOTO 47520 47340 GOSUB 30000 47345 OPSW = JSW 47350 IF OPSW > 2 THEN 46180 47370 IF JV < 1 OR PLCT < 5 THEN 47520 47380 MAT DOSW = (0) 47390 GOSUB 42000 47400 JV = JV - 1 47410 GOTO 47370 47450 GOSUB 34000 47460 MAT DOSW = (0) 47470 DOSW(6),DOSW(1) = 1 47480 GOTO 47530 47520 MAT DOSW = (0) 47530 IF LABL ='0' THEN 47650 47550 JER = '223' 47560 GOSUB 8000 47570 LBVL = 0 47580 JNAM = LABL 47590 JDSW = 2 47600 JNUM = LBVL 47610 GOSUB 22000 47615 I = JRSW 47620 JDSW = 3 47630 GOSUB 22000 47635 I = JRSW 47640 FOR A = 1 TO 10 47642 IF DOSW(A) # 0 THEN 47658 47644 NEXT A 47646 DOSW(6),DOSW(1) = 1 47648 GOTO 47658 47650 FOR A = 1 TO 10 47652 IF DOSW(A) = 1 THEN 47658 47654 NEXT A 47658 GOSUB 42000 47660 RETURN 50000 REM SUBROUTINE: * MPAM1 * FEB. 24, 1976 50080 IE = 204 50090 RDNO = 0 50100 LNSW = 2 50120 JDSW = 1 50130 JADR = 0 50140 JBYT = '0' 50150 GOSUB 17000 ! P.T. ROUTINE 50160 PRINT IN FORM '"PAPER TAPE SYSTEM INITIALIZED" % //':SPACE(1) 50170 GOTO 50300 50190 JER = '206' 50200 IF LBSW = 2 THEN GOSUB 8000 ! ERROR ROUTINE 50210 LBSW = 1 50220 ON NMSW GOTO 50240,50270 50240 JER = '201' 50250 GOSUB 8000 ! ERROR ROUTINE 50260 NMSW = 2 50270 MAT DOSW = (0) 50280 DOSW(10),DOSW(6),DOSW(1) = 1 ! DOSW 545 50290 IF ITER # JTER THEN GOSUB 42000 ! PRINT LINE FORMING ROUTINE 50300 JTER = ITER 50305 GOSUB 42000 ! ***** TEMP PRINT STATEMENT ***** 50340 RDNO = RDNO + 1 50345 ON ENDFILE(1) GOTO 51130 50350 INPUT FROM 1 AT RDNO IN FORM '80%':SMBF 50360 SILN = RDNO 50380 GOSUB 9000 ! PACK INPUT BUFFER 50385 LNSW = JLSW 50390 LEVL = 1 50400 LABL = '0' 50405 LBVL = 0 50410 GOTO 50440 50430 GOSUB 5000 ! GET NEXT CHARACTER 50440 ON LEVL GOTO 50450,50700,50790,50930 50450 ON ICSW GOTO 50680,50510,50470,50590,50550,50490 50470 IE = IE - 1 50490 IE = IE -1 50510 JER = STR(IE) 50520 GOSUB 8000 ! ERROR ROUTINE 50530 IE = 204 50540 GOTO 51440 50550 IF NC # '*' THEN GOTO 50510 50570 GOTO 50190 50590 GOSUB 13000 50600 LABL = JNAM 50610 JER = '205' 50630 IF ICSW # 1 THEN GOSUB 8000 ! ERROR ROUTINE 50650 JDSW = 1 50660 JNUM = IPCT 50662 LBVL = IPCT 50665 JNAM = LABL 50670 GOSUB 22000 ! STORE SYMBOL ROUTINE 50675 LBSW = JRSW 50680 LEVL = 2 50700 ON ICSW GOTO 50430,50470,50470,50720,50470,50490 50720 GOSUB 13000 ! BUILD SYMBOL ROUTINE 50730 OPCD = JNAM 50740 IF ICSW # 1 AND ICSW # 6 THEN 50510 50750 GOSUB 7000 ! SEARCH THE OPCODE TABLES 50760 IF PCLS = 2 THEN GOTO 51480 50770 LEVL = 3 50790 ON ICSW GOTO 50430,50940,50940,50800,50940,50940 50800 IF NC # 'A' AND NC # 'B' THEN 50940 50810 JC = NC 50820 GOSUB 5000 ! GET NEXT CHARACTER 50830 IF ICSW = 1 THEN 50880 50840 IC = IC -2 50850 GOSUB 5000 ! GET NEXT CHARACTER 50860 GOTO 50940 50880 OPCD = OPCD + JC 50890 GOSUB 7000 ! FIND OPCODE 50900 IF PCLS = 2 THEN 51480 50920 LEVL = 4 50930 ON ICSW GOTO 50430,50940,50940,50940,50940,50940 50940 ON PCLS GOTO 50990,51480,51460,51340,51220 50990 IF PIXB > 4 THEN 51150 51000 ON PIXB GOTO 51020,51060,51130,51020 51020 JER = '207' 51030 GOSUB 8000 ! ERROR ROUTINE 51040 GOTO 51440 51060 IF NMSW = 2 THEN 50240 51070 GOSUB 13000 ! BUILD SYMBOL ROUTINE 51080 PNAM = JNAM 51090 NMSW = 2 51100 IF PNAM = ' ' THEN 50510 51110 GOTO 50190 51130 RETURN 51150 GOSUB 46000 ! DIRECTIVE OPCODES PROCESSOR 51160 IF IPCT = 0 THEN 50290 51170 GOTO 50190 51220 GOSUB 32000 ! GET ADDRESS MODE 51230 OPSW = JSW 51240 AMOD = JM 51250 IF OPSW > 4 THEN 50510 51260 ON AMOD GOTO 51440,51460,51270,51440 51270 JER = '209' 51280 GOSUB 8000 ! ERROR ROUTINE 51290 GOTO 51440 51340 GOSUB 32000 51350 OPSW = JSW 51360 AMOD = JM 51370 IF OPSW > 4 THEN GOTO 50510 51380 PIXB = PIXB *4-4+AMOD 51390 IF OPB4(PIXB) < 0 THEN 51270 51400 IF PIXB < 13 AND AMOD = 3 THEN 51440 51410 ON AMOD GOTO 51420,51460,51460,51440 51420 IF PIXB # 21 AND PIXB # 25 THEN 51460 51440 IPCT = IPCT + 1 51460 IPCT = IPCT + 1 51480 IPCT = IPCT + 1 51490 GOTO 50190 51500 END 60000 REM SUBROUTINE: * MPAM2 * FEB. 24, 1976 60080 IE = 204 60090 IPCT = 0 60100 LNSW = 2 60112 RDNO = 0 60140 RDNO = RDNO + 1 60200 INPUT FROM 1 AT RDNO IN FORM '80%':SMBF 60230 SILN = RDNO 60250 GOSUB 9000 ! PACK IMAGE BUFFER 60255 LNSW = JLSW 60260 LEVL = 1 60270 RTSW = 1 60280 SSCH = 0 60290 PAN1 = 0 60300 LABL = '0' 60310 GOTO 60340 60330 GOSUB 5000 ! GET NEXT CHAR. 60340 ON LEVL GOTO 60350,60640,60730,60870 60350 ON ICSW GOTO 60610,60410,60370,60590,60520,60390 60370 IE = IE - 1 60390 IE = IE - 1 60410 JER = STR(IE) 60420 GOSUB 8000 ! ERROR ROUTINE 60430 IE = 204 60440 PBIN = 0 60450 PAN1 = 0 60460 RTSW = 1 60470 MAT DOSW = (0) 60480 DOSW(1),DOSW(2),DOSW(3),DOSW(5),DOSW(6),DOSW(9) = 1 60490 GOSUB 42000 ! FORM LIST LINE 60500 IPCT = IPCT + 3 60510 GOTO 60140 60520 IF NC # '*' THEN 60410 60540 MAT DOSW = (0) 60550 DOSW(1),DOSW(6) = 1 60560 GOSUB 42000 ! FORM AND PRINT LIST LINE 60570 GOTO 60140 60590 GOSUB 13000 60600 LABL = JNAM 60610 LEVL = 2 60620 GOTO 60330 60640 ON ICSW GOTO 60330,60370,60370,60660,60370,60390 60660 GOSUB 13000 ! FORM SYMBOL ROUTINE 60670 OPCD = JNAM 60680 IF ICSW # 1 THEN 60410 60690 GOSUB 7000 ! FIND THE OP CODE 60700 IF PCLS = 2 THEN 60890 60710 LEVL = 3 60730 ON ICSW GOTO 60330,60880,60880,60740,60870,60880 60740 IF NC # 'A' AND NC # 'B' THEN 60880 60750 JC = NC 60760 GOSUB 5000 ! GET THE NEXT CHAR. 60770 IF ICSW = 1 THEN 60820 60780 IC = IC - 2 60790 GOSUB 5000 ! GET THE NEXT CHAR. 60800 GOTO 60850 60820 OPCD = OPCD + JC 60830 GOSUB 7000 60840 IF PCLS = 2 THEN 60890 60850 LEVL = 4 60870 ON ICSW GOTO 60330,60880,60880,60880,60880,60880 60880 RTSW = 3 60890 SCOL = IC 60900 IF LABL = '0' OR PCLS = 1 THEN 60970 60910 JNAM = LABL 60920 GOSUB 20000 ! FIND SYMBOL 60922 J = JRS 60924 I = III 60930 IF LSYM(III) = IPCT THEN 60970 60940 JER = '220' 60950 GOSUB 8000 ! ERROR ROUTINE 60960 IPCT = LSYM(III) 60970 ON PCLS GOTO 61020,61250,61350,61570,61980 61000 REM 61020 IF PIXB > 4 THEN 61190 61030 ON PIXB GOTO 61050,60540,61090,61090 61050 JER = '207' 61060 GOSUB 8000 ! ERROR ROUTINE 61070 GOTO 60440 61090 MAT DOSW = (0) 61100 DOSW(1),DOSW(6) = 1 61110 GOSUB 42000 ! LIST LINE FORM ROUTINE 61130 JDSW = 3 61140 JADR = 0 61150 JBYT = '0' 61160 GOSUB 17000 ! PAPER TAPE ROUTINE 61170 RETURN 61190 GOSUB 46000 ! DIRECTIVE OPCODE PROCESSOR 61200 GOTO 60140 61250 PBIN = OPB2(PIXB) 61260 RTSW = 2 61270 MAT DOSW = (0) 61280 DOSW(9),DOSW(6),DOSW(3),DOSW(2),DOSW(1) = 1 61285 GOSUB 42000 61290 IPCT = IPCT + 1 61300 GOTO 60140 61350 PBIN = OPB3(PIXB) 61360 GOSUB 30000 ! FORM OPERAND'S VALUE 61362 PAN1 = JV 61364 OPSW = JSW 61380 JER = '208' 61390 IF PAN1 < IPCT-125 OR PAN1 > IPCT+129 THEN GOSUB 8000 ! ERROR 61400 JP1 = PAN1 61410 JS = 2 61420 JP2 = IPCT 61430 GOSUB 24000 ! ARITHMETIC ROUTINE 61440 PAN1 = JP1 61450 JS = 2 61460 JP2 = 2 61470 GOSUB 24000 61475 PAN1 = JP1 61480 MAT DOSW = (0) 61490 DOSW(9),DOSW(6),DOSW(4),DOSW(3),DOSW(2),DOSW(1) = 1 61500 GOSUB 42000 ! FORM PRINT LINE & PRINT 61510 IPCT = IPCT + 2 61520 GOTO 60140 61570 GOSUB 32000 ! GET THE ADDRESS MODE 61580 AMOD = JM 61590 OPSW = JSW 61600 IF OPSW > 4 THEN 60410 61610 PIXB = PIXB*4-4+AMOD 61620 PBIN = OPB4(PIXB) 61630 IF PBIN < 0 THEN 61660 61640 ON AMOD GOTO 61720,61750,61860,61890 61660 JER = '209' 61670 GOSUB 8000 ! ERROR ROUTINE 61680 PBIN = 0 61690 GOTO 61890 61720 IF PIXB = 21 OR PIXB = 25 THEN 61890 61730 GOTO 61750 61750 IF OPSW = 1 THEN 61800 61770 JER = '210' 61780 GOSUB 8000 ! ERROR ROUTINE 61790 PAN1 = 255 61800 MAT DOSW = (0) 61810 DOSW(9),DOSW(6),DOSW(4),DOSW(3),DOSW(2),DOSW(1) = 1 61820 GOSUB 42000 ! FORM PRINT LINE 61830 IPCT = IPCT + 2 61840 GOTO 60140 61860 IF PIXB < 13 THEN 61890 61870 GOTO 61750 61890 MAT DOSW = (0) 61900 DOSW(9),DOSW(6),DOSW(5),DOSW(3),DOSW(2),DOSW(1) = 1 61910 GOSUB 42000 ! FORM PRINT LINE 61920 IPCT = IPCT + 3 61930 GOTO 60140 61980 PIXB = PIXB * 2 -1 61990 GOSUB 32000 ! GET ADDRESS MODE 62000 AMOD = JM 62010 OPSW = JSW 62020 IF OPSW > 4 THEN 60410 62030 ON AMOD GOTO 62060,62040,61660,62060 62040 PBIN = OPB5(PIXB) 62050 GOTO 61750 62060 PBIN = OPB5(PIXB + 1) 62070 GOTO 61890 70000 REM SUBROUTINE: * MPAM3 * FEB. 20, 1976 70070 JLDF(1) = 6 70080 JLDF(2) = 5 70090 JLDF(3) = 4 70100 IF NPLI =1 OR NSYM < 4 THEN 70400 70110 JLF = JLDF(IXBS) 70120 NL = PGLL/(JLF+9) 70130 IF PLCT < 10 THEN 70160 70140 JNL = 0 70150 IF NSYM/NL + PLCT +10 > PGLN THEN GOSUB 6000 ! NEW PAGE 70160 PRINT ' ' 70170 PRINT ' ' 70180 PRINT ON 3:' ' 70190 PRINT ON 3:' ' 70200 PRINT "SYMBOL TABLE" 70210 PRINT ON 3 IN FORM ' " SYMBOL TABLE" % /':' ' 70220 PRINT ' ' 70230 PRINT ' ' 70240 PRINT ON 3:' ' 70245 PRINT ON 3:' ' 70250 JNL = 5 70252 GOSUB 6000 ! LINE / PAGE COUNT 70254 FFF$ = ' " " 5(6% B 5% B) /' 70256 JBAS = 16 70258 JCOL = 4 70260 FOR A = 1 TO 81 70262 OBUF(A) = ' ' 70264 NEXT A 70266 JBAS = 16 70268 JCOL = 4 70270 FOR A = 1 TO NSYM 70272 INX = 0 70274 JN = LSYM(A) 70275 FFF$ = ' " " 5(6% B 5% B) /' 70276 GOSUB 16000 70278 OBUF(A) = NB(1) + NB(2) + NB(3) + NB(4) 70280 NEXT A 70285 FOR I = 1 TO 3 70290 IF ISYM(I*5-4) = ' ' THEN 70400 70300 EE = I*5 70310 AA = EE -4 70320 BB = EE -3 70330 CC = EE -2 70340 DD = EE -1 70350 PRINT IN FORM FFF$:ISYM(AA),OBUF(AA),ISYM(BB),OBUF(BB),ISYM(CC),OBUF(CC),ISYM(DD),OBUF(DD),ISYM(EE),OBUF(EE) 70360 PRINT ON 3 IN FORM FFF$:ISYM(AA),OBUF(AA),ISYM(BB),OBUF(BB),ISYM(CC),OBUF(CC),ISYM(DD),OBUF(DD),ISYM(EE),OBUF(EE) 70370 JNL = 1 70380 GOSUB 6000 ! LINE/PAGE COUNT 70390 NEXT I 70400 IF ITER = 0 THEN 70470 70410 PRINT ' ' 70420 PRINT ' ' 70430 PRINT IN FORM ' 2B "TOTAL ERRORS: " 4% /':ITER 70440 PRINT ON 3:' ' 70450 PRINT ON 3:' ' 70460 PRINT ON 3 IN FORM ' 2B "TOTAL ERRORS: " 4%':ITER 70470 RETURN 80000 REM MAIN PROGRAM * MPAM * FEB. 20, 1976 80110 PNAM = ' ' 80120 JNL = 0 80130 GOSUB 6000 ! PAGE AND LINE COUNT ROUTINE 80150 FF1$ = ' 9B "M68SAM IS THE PROPERTY OF MOTOROLA SPD, INC." % /' 80160 FF2$ = ' 17B "COPYRIGHT 1974 BY MOTOROLA, INC." % /' 80170 FF3$ = ' 10B "MOTOROLA M6800 CROSS ASSEMBLER, RELEASE 1.1" % /' 80180 FF4$ = ' 10B "TENET BASIC VERSION RELEASE 1.0" % //' 80190 PRINT IN FORM FF1$:' ' 80200 PRINT IN FORM FF2$:' ' 80210 PRINT IN FORM ' 2B %':' ' 80220 PRINT IN FORM FF3$:' ' 80230 PRINT IN FORM ' 2B %':' ' 80240 PRINT IN FORM FF4$:' ' 80250 IF LULP # 1 THEN 80350 80260 PRINT ON 3 IN FORM FF1$:' ' 80270 PRINT ON 3 IN FORM FF2$:' ' 80280 PRINT ON 3 IN FORM ' 2B %':' ' 80290 PRINT ON 3 IN FORM FF3$:' ' 80300 PRINT ON 3 IN FORM ' 2B %':' ' 80310 PRINT ON 3 IN FORM FF4$:' ' 80315 PRINT ON 3 IN FORM ' 2B %':' ' 80320 JNL = 7 80330 GOSUB 6000 ! PAGE AND LINE COUNT ROUTINE 80350 IPAS = 1 80360 GOSUB 50000 ! PASS ONE SUBROUTINE 80380 NPLI = 2 80390 IXBS = 3 80400 NPBS = 16 80410 IPAS = 2 80420 GOSUB 60000 ! PASS 2 SUBROUTINE 80440 GOSUB 70000 ! PASS THREE SUBROUTINE 80460 FOR I = 1 TO NSYM 80470 IF ISYM(I) = ' ' THEN 80500 80475 PRINT IN FORM ' 2B 6% 6B 6% //':ISYM(I),LSYM(I) 80480 PRINT ON 3 IN FORM ' 2B 6% 6B 6% /':ISYM(I),LSYM(I) 80490 NEXT I 80500 DO 6110 80510 PRINT IN FORM ' "COMPLETION TIME FOR THIS RUN:" B 4% ':TIME 80520 PRINT ON 3 IN FORM ' "0 COMPLETION TIME FOR THIS RUN: " 4% ':TIME 80540 PRINT IN FORM ' "CPU TIME FOR THIS RUN - SECONDS:" 6% // ':(TIMER-CPUT)*16E-6 80550 PRINT ON 3 IN FORM ' "0 CPU TIME FOR THIS RUN - SECONDS:" 6% ':(TIMER-CPUT)*16E-6 80560 CLOSE 1,3 80570 STOP 80580 END 582044534D312E320700000000000000 ORRIGINAL STARTING POINT=0100 ************************************* 7E08F47E16417E013F7E01857E019D7E 01AB7E01B57E016B7E014C7E014F7EF0 247EF0277EF0217E017B7E02337E025A 7EF5647E011E7E01217E01397E013C7F 00F27F00F67F00F57F00F7397C00F77D 00F727037CFF53BDF015CE02AFA10027 EE088C02B626F67F00F7398109260286 5A26FA20A88DA3810D260B860ABD01D0 860DBD01D04F7E01D0F07E01158D8BA6 0081042788BD01D00820F47D00F22670 7F00F520037C00F5CE02B7860DA70008 8C02FF26F87D00F62703BD012D7E01EB DFF037BDE80C33DEF039F9CF200DB6FC FD8455B7FCF48611BDF018CE02B70DBD 0275A700250C810D27088C02FE27EF08 20EC7F00F57E02188435B7FCF48613BD F018B6FCF5B6FCF57C00F2CE02B7DFF3 DEF3A60008DFF3811A2704810D26037F 00F2393900F62621367C00F67CFF627D FF02270A8610BDF9CF8630BDF9CF867F BDF9CF8612BDF9CF32393914BDF9CF7D FF02270A8610BDF9CF8639BDF9CF7F00 F67FFF6239DFF07D00F52005BD011820 1137BDE80933252120064724F7B6FCF5 847FCE02AFA10027DE088C02B626F681 0926028620DEF00C39861ADEF00D3900 7F0A1112131400000000000000000000 0020007E094641424110001B41444300 D48941444400D48B414E4400D4844153 4C004A48415352004A47424343002024 42435300202542455100202742474500 202C42475400202E4248490020224249 5400D485424C4500202F424C53002023 424C5400202D424D4900202B424E4500 202642504C00202A4252410020204253 5200208D425643002028425653002029 434241100011434C4310000C434C4910 000E434C52004A4F434C5610000A434D 5000D481434F4D004A4343505800D08C 444141100019444543004A4A44455310 0034444558100009454F5200D488494E 43004A4C494E53100031494E58100008 4A4D5000486E4A53520048AD4C444100 D4864C445300D08E4C445800D0CE4C53 52004A444E4547004A404E4F50100001 4F524100D48A50534800023650554C00 0232524F4C004A49524F52004A465254 4910003B525453100039534241100010 53424300D48253454310000D53454910 000F53455610000B5354410054875354 5300508F5354580050CF53554200D480 53574910003F54414210001654415010 00065442411000175450411000075453 54004A4D545358100030545853100035 57414910003E454E44D0059C455155A0 428805A84D4F4E8005AB4E414D8005AE 059F4643428805A24643438005A54644 4F50548005B14F5247C005B4504147D0 05B7524D428005BA535043D005BD2A2A 2A2A4552524F52000000000000000000 0D0A040D000000000000000000000000 0D0A544F54414C204552524F52532020 434F554E0D0A04533100000000000000 040D0A0A0A0000000000000000000000 0A2D2D2D0D0A0A0A5041474531323334 35202020000000000000000000000000 20200000000000000000000000000000 0D0A0A0A0A047E0B8F7E000000000000 0B637E0D347E0BDD7E0CDC7E0B8F7E0D 957E0DD17E0E6C7E0E7D7E0EB17E0ECC 7E09D47E0B507E08BA7E06607E08077E 10A87E11517E066A7E0EEC7E06FB7E06 457E06497E084C7E06AD7E14727E088B 7E14297E12DE7E0870963E2607964427 03BD010C394D3638303020415353454D 424C45522056455253494F4E20312E32 0D0A454E5445522050415353203A2031 502C31532C32502C324C2C32540D0A0A 04FF0000D0375F200337C6FFDF65DE34 A600085D2704812027F6DF34DE653339 DF65DE3409DF34DE6539DF7FCE0306A6 0090BE847F261AA60190BF847F2612A6 0290C0847F260AE603D736EE04DF3720 190808080808088C04FE26D386CFBD05 ED86009736CE0000DF37DE8139963F26 429642263EDF81DE34DF7F9643262A96 4627267C0039262186CA9739DE4908DF 499649D64ACE057CBD05C68620B7057C B7057DCE056CBD0133DE81BD0136DE7F DF343996272703BD013639DE34DF7FC5 01270DCE00AA9647BD05F69648BD05F6 C5022708CE00AF9638BD05F6C5042708 CE00B2962FBD05F6C508270DCE00B296 2EBD05F6962FBD05F6C510270DCE00AF 962EBD05F6962FBD05F67D0027271D0F 9F63CE00B78E02B632A700088C00EA27 04810D26F3099E630E7E07F6CE00B6C5 2027207D006D2605CE02B72002DE6BDF 34CE00B7BD05DE81202708A700088C00 BD26F1C5402728DE59DF34CE00C59636 8510261BBD05E1BD05C9BD05DE812027 19810D2741A700088C00EA26ED2037C5 802733DE59DF34CE00C5C58027280808 DF7D967DD67EF00644B206432403CE00 CEBD05E1BD05C9BD05DEA700810D2706 088C00EB26F1860DA701860AA7028604 A703DE7FDF34393736A600E601373634 3086016D012B0B4C680269012B048111 26F5A700A603E6046F036F04E002A201 2407EB02A9010C20010D690469036401 66026A0026E63131313233393736A601 36A6003686103630A603584968026901 2404EB04A9036A0026F0313131313139 3716444444448D05178D023339840F8A 30813A25028B07A7000839DF69D64626 0881D3272281D0271E7C0027DE2508DF 25164FCE0507BD05C68620B70507B705 08CE04FEBD05E7DE6939DF65CE08EA7F 0060E001A20025057C006020F5EB01A9 0036DF67DE6596608B30A7003208DF65 DE6708088C08F426D639271003E80064 000A0001BD01060FCE1640DF72B61640 2613C618CE1D308E162732A700085A26 F9DF722006CE0130FF01040E9672D673 CB0824014CF00302B203012505CE2000 2003FE0301DF230909090909090909DF 74CE0020DF218EFF8ACE0605BD011E7F 003E7F003FBD011B815826037E013097 60BD011B16966081312611C1532704DE 72DF7B4F9746972597262019813226C6 C14C26057C003E2007C15426037C003F 97464F974B9742973397419740974497 45974C9743973D86FF9739CE0000DF49 DF47CE16287D16402603CE1D30DF79DF 77CE05848620A700088C059626F886FF 973320037F00337F0027BD0112963327 1B7F006DCE0000DF6EB602B7810D27E7 81302D0881392E0486FF976DCE02B7DF 34966D2607DE6E08DF6E2007BD05D2DE 2CDF6ECE009C8620A700088C00EC26F8 966ED66FCE00A4BD05C6DE34DF6BBD05 DE812A263C7D0046279ACE00B70F9F63 966D27059E6B3420038E02B632A70081 0D2706088C00EB26F39E630E860DA700 860AA7018604A702CE00A4BD05E77E05 C0810D26037E05C08120273DC606CE00 9C5D2704A700085ABD05DE812026F2CE 009C200EA6008120271281302D168139 2F0AA60081412D0C815A2E08088C00A2 26E2200586CDBD05EDBD05E197BEBD05 DE97BFBD05DE97C0DE34DF59BD05D57D 0038260BC60BBD05DBC603206920717D 00332709DE378C05AE270E2007DE378C 05AE260586C9BD05EDD636969C812027 16C540270786CDBD05ED201EC5202610 C601BD05F32009C520270586CABD05ED D636C5802704DE376E00D636C5102606 BD05D87E0B3C86019720C6E3BD05DBC6 01BD05EAD620DB48860099479747D748 7D002726057D00462706CE00A4BD05E7 7E05C0CE009CA60036088C00A426F7BD 05CFDE2ADF2ECE00A332A700098C009B 26F7C6FFBD05F3C6F0BD05DB7E05C396 462744C6C0BD05DBCE00A4BD05E7C680 BD05EA96452703BD05F09625D626CE05 1FBD05C6CE0510BD0136964326169642 2612963F260E963981FF2708CE063FBD 05E720F27E0303BD05F07E0303BD05E1 9762DE3409DF69C6FFD76181302D3B81 392E37BD05DE81302D0481392FF5812C 2707DE6908DF342021DE69DF34BD05D2 7F00627D002C2609962D4D2704976120 0986CCBD05EDC601D761BD05DE810D27 049162260286209738C6E3BD05DBDE34 DF67DE69DF34CE00C5BD05DE810D2708 A700088C00EA26F1860DA700860AA701 8604A702DE67DF34C600BD05EADE4708 DF477D00462706CE00A4BD05E77A0061 2749BD0CCEBD05DE7D0062270F916227 3A810D261086CCBD05ED202F810D2605 8620BD05C99738C603BD05DBC600BD05 EADE4708DF477D0046270B7D00412606 CE00A4BD05E77A006126BA7E05C0CE00 A48620A700088C00A926F839BD05CFDE 2ADF2EC6F1BD05DBC600BD05EADE4708 08DF4796462706CE00A4BD05E7BD0CCE BD05C9BD05DE812C27037E05C0BD05CF DE2ADF2EC611BD05DBC600BD05EADE47 0808DF47964627D8964126D4CE00A4BD 05E720CC8D4AC6E3BD05DBC600BD05EA DE4708DF4796462706CE00A4BD05E7BD 0CCEBD05C9BD05DE812C26218D22C603 BD05DBC600BD05EADE4708DF47964627 E1964126DDCE00A4BD05E720D57E05C0 BD05CF962BD62A270686D2BD05ED4F97 38397E05C39633273086FF9733CE0584 8620A700088C058C26F8BD05E1CE0584 810D271581202D0481612D028620A700 BD05DE088C058C26E7C6C0BD05DB7E05 C37F0061C6FFBD05E1814E260CD761BD 05DE814F2663BD05DE814F260C7F0044 7D0061265BD7442057814D260C7F0040 7D0061264BD7402047814C260C7F0042 7D0061273BD74220378147260C7F0041 7D0061272BD74120278153260C7F0045 7D0061261BD74520178150260C7F0043 7D0061270BD743200786D9BD05ED2014 BD05DE810D270D812C26F57F0061BD05 DE7E0DD9C6C0BD05DB7E05C3BD05CFDE 2ADF2EDF47C6C1BD05DB7E05C3BD05DE 8145270786CABD05ED2023CE00A4860A D6395C26037E05C05C2705A7000820F8 A702860DA7018604A70386FE97397E05 C3BD05CFDE2ADF2EC6F1BD05DB962AD6 2BDB4899479747D7487E05C3BD05CFDE 2A963981FF2712DE2A8C0000270B09DF 2ACE063FBD05E720E87E05C0CE0000DF 2E7F0032D637C520274F86029720BD05 CFDE2ADF2E9C47260686FE972F2030DE 470808DF2A962AD62BD02F2713922E24 14962ED62FD02B922A4D2616C1802A12 D72FC6E7394D260AC1812A0650D72FC6 E73986D0BD05ED20C0BD05E19760BD05 DE9761D637C50426037E10608120265D 96608141270A81422653D638CA40D738 DE34DF5997C2BD05E19760BD05DE9761 9660812327037E1060BD05C996378580 272BBD05CFDE2ADF2EBD05C9BD05DE81 2C271A96378504272286029720C6E7D7 58D62E270586D2BD05EDD6583986D1BD 05ED7F00387F002E7F002F86039720C6 EB39DE59DF34BD05CFDE2ADF2EBD05C9 BD05DE812C2648BD05DE815826CFBD05 DE81202704810D26C49637854027BE7D 002E270586D2BD05ED8602972096388A 209738C6E739815826119660812C2707 812326AE7E0F89966120BF966020F196 322617962E261396378510270D96388A 10973886029720C6E739D637C5182603 7E0FBD96388A30973886039720C6EB39 966181202704810D26AC966081412718 8142262AD637C1022608D638CA01D738 2006D638CA10D73897C2DE34DF599637 850226037E0FBD86019720C6A3398158 26037E0FF97E0FD2CE0000DF2A862B97 287F0029BD05E1812A274BBD05C9BD05 DE810D273581202731812C272DBD05C9 BD05DE810D27228120271E812C271A81 2B271F812D271B812F2717812A26177D 0029270E86CCBD05ED39D636C50827F4 20F7972820CABD09BD05D29628812B92 270E812D2719812A271F812F272720FE 962AD62BDB2D992C972AD72B7E10CD96 2AD62BD02D922C20EF962AD62BCE002C BD05E420E3962AD62BCE002CBD05CC20 D77F002C7F002DDE34DF81BD05DE812A 2605DE47DF2C398127261ABD05DE972B 7F002ABD05DEBD12BB27037E120386CC BD05ED207ECE002C8124275B81402774 812526037E122B81302D0781392E037E 1287979CCE009CC620E700088C00A226 F8CE009C2010BD05DEBD12BB261F8130 2D04813A2D0D81412D04815A2F0586CC BD05ED8C00A227DEA7000820D9C600BD 05F3DE70DF2C396F006F01BD05DEBD15 E22B09BD12AAAB01A70120EF81482603 BD05DE396F006F01BD05DE81302D0F81 382A0B8407BD12AEAB01A70120EA814F 270481512624BD05DE20D86F006F01BD 05DE8130270481312607466901690020 EE81422605BD05DE20B9BD12BB260586 D8BD05ED39BD05DEBD12BB27F8DE34DF 7F0909A600DE81DF34CE002C814F2794 81512790814826037E11E7814227ACDE 7FDF3439BD05DE81302BCD81392EC984 0F9783A600E6015849BD12AEEB01A900 DB838900A700E70120DA680169006801 6900680169006801690039DF30CE12D6 A100270C088C12DE26F6DE307D064239 DE307D0641390A0D202A2B2C2D2FD776 CE16287D16402603CE1D30DF790F9F5E CE00848E009B32A700088C008A26F79E 5E0E5D2B072609CEFFFF200CDE2A2002 DE4796848A809784DF8A9679D67AD07C 927B25037E13B6BD13FCCE0084A600A0 08847F2705BD13F120E0088C008A26ED 7D00762741DE79DF777D008C2A13DE8A 9C922744968D8A80978D86D5BD05ED20 34CE0084A600A708088C008C26F6DE79 DF65DE7BDF79BD1412DE65A608A70008 9C7B26F720127D008C2A207D008D2A0F 86CEBD05EDBD1412DE92DF709E5E3996 77D678D07A9279250720ED86D3BD05ED 0D79003220E2CE0084A600A708088C00 8C26F6967BD67CD07592742A1D7D0076 260986D3BD05ED0D790032DE7BDF79DF 77BD1412DE79DF7B20AE86DDBD05ED20 A7C608DE79085A26FCDF79390F9F5CCE 008C9E793432A700088C009426F79E5C 0E390F9F5CC6088E008BDE7932A70008 5A26F9DF799E5C0E39DE72DF799679D6 7AD07C927B243ABD13FC968C7D004627 054D2A2920034D2B249692D693CE0093 BD05F617BD05F686209792860DA70086 0AA7018604A702CE008CBD05E78D8220 BC399646276ECE00AFDF54D75B964B26 47963E26439644273FBD012786FF974B 8620CE1603A700088C161326F80FCE05 83DF6BCE1603860B97539F5C9E6B329F 6B9E5CBD15D68C161326EF965343BD15 D60ECE15FBBD05F9DE47DF4D7D005B2A 037E15B6DE54A6008120260908DF548C 00B726F2397D004C2625367F005386FF 974CCE05296F00088C056926F8DE4DDF 4FCE052B964FBD15D69650BD15D432DE 4D9C4F2705BD157C20D0DE54BD15E248 4848481608A60008DF54BD15E21B7D00 40273136964DD64ED0229221250A964D D64ED0249223250F32DE4DA700A10026 057F003D200E3686DA7D003D2605973D BD05ED328D6EDE4D08DF4DDF4FDE568C 056527037E14D48D037E14D4367F004C 8603CE052B4C086D0026FA4436BD15D4 9653430909BD15D6860DA700860AA701 8600A7028604A70332CE05298D28CE05 27BD05F932397D004C27028DBF963E26 0D96442709CE1619BD05F9BD01277F00 4B7E14E4DE56369B53975332BD05F6DF 563981302B1181392F0A81412B098146 2E058007840F397D0641395330304230 30303020202020202020202020202020 20202000000D0A000453393033303030 3046430D0A0004000000000000000000 C12020202020FFFF0000000000000000 C22020202020FFFFD82020202020FFFF FF000000000000000000000000000000 7E010000000000000000000000000000 410D0A04000000000000000000000000 7F003E7F003FBDE82DD60026037EE80F 86315425034A1B5F58D70081312613DE 72DF7BCE0605BD011E4F972597269746 201A8132270F813326057C003E2006BD 01157C003F97467F004B4F0100000000 00000000000000000000000000000000 0D9F0000000000000000000000000000 200BDF777E1412000000000000000000 00000000000000000000000000000000 S00B0000582044534D312E3207 S11301007E08F47E16417E013F7E01857E019D7E40 S113011001AB7E01B57E016B7E014C7E014F7EF00A S1130120247EF0277EF0217E017B7E02337E025AFC S11301307EF5647E011E7E01217E01397E013C7FB5 S113014000F27F00F67F00F57F00F7397C00F77D31 S113015000F727037CFF53BDF015CE02AFA10027A3 S1130160EE088C02B626F67F00F73981092602864E S11301805A26FA20A88DA3810D260B860ABD01D01C S1130190860DBD01D04F7E01D0F07E01158D8BA65A S11301B07F00F520037C00F5CE02B7860DA700086A S11301C08C02FF26F87D00F62703BD012D7E01EB8E S11301D0DFF037BDE80C33DEF039F9CF200DB6FC83 S11301E0FD8455B7FCF48611BDF018CE02B70DBDE1 S11301F00275A700250C810D27088C02FE27EF0845 S113020020EC7F00F57E02188435B7FCF48613BD1C S1130210F018B6FCF5B6FCF57C00F2CE02B7DFF3BD S1130220DEF3A60008DFF3811A2704810D26037F7D S113023000F2393900F62621367C00F67CFF627D17 S1130240FF02270A8610BDF9CF8630BDF9CF867F1D S1130250BDF9CF8612BDF9CF32393914BDF9CF7D3E S1130260FF02270A8610BDF9CF8639BDF9CF7F007A S1130270F67FFF6239DFF07D00F52005BD0118200F S11302801137BDE80933252120064724F7B6FCF5CC S1130290847FCE02AFA10027DE088C02B626F68149 S11302A00926028620DEF00C39861ADEF00D3900AC S10902B07F0A1112131471 S11303000020007E094641424110001B4144430045 S1130310D48941444400D48B414E4400D484415395 S11303204C004A48415352004A4742434300202468 S113033042435300202542455100202742474500AF S1130340202C42475400202E424849002022424992 S11303505400D485424C4500202F424C53002023A6 S1130360424C5400202D424D4900202B424E450062 S1130370202642504C00202A425241002020425361 S11303805200208D42564300202842565300202913 S1130390434241100011434C4310000C434C49109C S11303A0000E434C52004A4F434C5610000A434D32 S11303B05000D481434F4D004A4343505800D08CE1 S11303C0444141100019444543004A4A44455310EE S11303D00034444558100009454F5200D488494E12 S11303E043004A4C494E53100031494E58100008FE S11303F04A4D5000486E4A53520048AD4C444100A7 S1130400D4864C445300D08E4C445800D0CE4C5328 S113041052004A444E4547004A404E4F5010000196 S11304204F524100D48A50534800023650554C0074 S11304300232524F4C004A49524F52004A465254DB S11304404910003B525453100039534241100010DC S113045053424300D48253454310000D5345491081 S1130460000F53455610000B535441005487535406 S11304705300508F5354580050CF53554200D480EA S113048053574910003F5441421000165441501034 S113049000065442411000175450411000075453B1 S11304A054004A4D545358100030545853100035DA S11304B057414910003E454E44D0059C455155A036 S11304D0428805A84D4F4E8005AB4E414D8005AE78 S11304C0059F4643428805A24643438005A546440A S11304E04F50548005B14F5247C005B4504147D0D6 S11304F005B7524D428005BA535043D005BD2A2A50 S10A05002A2A4552524F5212 S107050C0D0A040DBF S11305100D0A544F54414C204552524F52532020FF S10C0520434F554E0D0A045331FA S108056B040D0A0A0A58 S11305700A2D2D2D0D0A0A0A5041474531323334D4 S107058035202020DE S105058C202029 S10D05960D0A0A0A0A047E0B8F7E88 S11305A00B637E0D347E0BDD7E0CDC7E0B8F7E0DAB S11305B0957E0DD17E0E6C7E0E7D7E0EB17E0ECCB0 S11305C07E09D47E0B507E08BA7E06607E08077EC4 S11305D010A87E11517E066A7E0EEC7E06FB7E0616 S11305E0457E06497E084C7E06AD7E14727E088BDD S11305F07E14297E12DE7E0870963E2607964427D6 S113060003BD010C394D3638303020415353454D2C S1130610424C45522056455253494F4E20312E32BA S11306200D0A454E5445522050415353203A20312F S1130630502C31532C32502C324C2C32540D0A0A8B S113064004FF0000D0375F200337C6FFDF65DE34C8 S1130650A600085D2704812027F6DF34DE653339E0 S1130660DF65DE3409DF34DE6539DF7FCE0306A6BD S11306700090BE847F261AA60190BF847F2612A60E S11306800290C0847F260AE603D736EE04DF3720C3 S1130690190808080808088C04FE26D386CFBD056F S11306A0ED86009736CE0000DF37DE8139963F268F S11306B0429642263EDF81DE34DF7F9643262A9629 S11306C04627267C0039262186CA9739DE4908DF69 S11306D0499649D64ACE057CBD05C68620B7057C19 S11306E0B7057DCE056CBD0133DE81BD0136DE7FED S11306F0DF343996272703BD013639DE34DF7FC561 S113070001270DCE00AA9647BD05F69648BD05F60D S1130710C5022708CE00AF9638BD05F6C5042708E4 S1130720CE00B2962FBD05F6C508270DCE00B296B1 S11307302EBD05F6962FBD05F6C510270DCE00AFCC S1130740962EBD05F6962FBD05F67D0027271D0FB5 S11307509F63CE00B78E02B632A700088C00EA274A S113076004810D26F3099E630E7E07F6CE00B6C5FE S11307702027207D006D2605CE02B72002DE6BDF28 S113078034CE00B7BD05DE81202708A700088C0001 S1130790BD26F1C5402728DE59DF34CE00C5963684 S11307A08510261BBD05E1BD05C9BD05DE812027D9 S11307B019810D2741A700088C00EA26ED2037C5D2 S11307C0802733DE59DF34CE00C5C58027280808CA S11307D0DF7D967DD67EF00644B206432403CE0028 S11307E0CEBD05E1BD05C9BD05DEA700810D270607 S11307F0088C00EB26F1860DA701860AA702860461 S1130800A703DE7FDF34393736A600E601373634F6 S11308103086016D012B0B4C680269012B04811198 S113082026F5A700A603E6046F036F04E002A20105 S11308302407EB02A9010C20010D6904690364017A S113084066026A0026E63131313233393736A60181 S113085036A6003686103630A60358496802690168 S11308602404EB04A9036A0026F031313131313913 S11308703716444444448D05178D023339840F8A56 S113088030813A25028B07A7000839DF69D646264E S11308900881D3272281D0271E7C0027DE2508DF8C S11308A025164FCE0507BD05C68620B70507B70533 S11308B008CE04FEBD05E7DE6939DF65CE08EA7FB0 S11308C00060E001A20025057C006020F5EB01A991 S11308D00036DF67DE6596608B30A7003208DF657F S11308E0DE6708088C08F426D639271003E800646C S11308F0000A0001BD01060FCE1640DF72B6164095 S11309002613C618CE1D308E162732A700085A2685 S1130910F9DF722006CE0130FF01040E9672D67301 S1130920CB0824014CF00302B203012505CE2000BC S11309302003FE0301DF230909090909090909DF65 S113094074CE0020DF218EFF8ACE0605BD011E7FF6 S1130950003E7F003FBD011B815826037E01309776 S113096060BD011B16966081312611C1532704DE38 S113097072DF7B4F9746972597262019813226C62A S1130980C14C26057C003E2007C15426037C003F51 S113099097464F974B974297339741974097449781 S11309A045974C9743973D86FF9739CE0000DF4922 S11309B0DF47CE16287D16402603CE1D30DF79DFB3 S11309C077CE05848620A700088C059626F886FF36 S11309D0973320037F00337F0027BD01129633270E S11309E01B7F006DCE0000DF6EB602B7810D27E7D6 S11309F081302D0881392E0486FF976DCE02B7DF32 S1130A0034966D2607DE6E08DF6E2007BD05D2DE44 S1130A102CDF6ECE009C8620A700088C00EC26F804 S1130A20966ED66FCE00A4BD05C6DE34DF6BBD0561 S1130A30DE812A263C7D0046279ACE00B70F9F63AD S1130A40966D27059E6B3420038E02B632A7008173 S1130A500D2706088C00EB26F39E630E860DA70077 S1130A60860AA7018604A702CE00A4BD05E77E0579 S1130A70C0810D26037E05C08120273DC606CE0019 S1130A809C5D2704A700085ABD05DE812026F2CE0E S1130A90009C200EA6008120271281302D1681395A S1130AA02F0AA60081412D0C815A2E08088C00A221 S1130AB026E2200586CDBD05EDBD05E197BEBD0549 S1130AC0DE97BFBD05DE97C0DE34DF59BD05D57D99 S1130AD00038260BC60BBD05DBC603206920717DDB S1130AE000332709DE378C05AE270E2007DE378C4E S1130AF005AE260586C9BD05EDD636969C81202710 S1130B0016C540270786CDBD05ED201EC52026103D S1130B10C601BD05F32009C520270586CABD05ED1C S1130B20D636C5802704DE376E00D636C5102606B5 S1130B30BD05D87E0B3C86019720C6E3BD05DBC608 S1130B4001BD05EAD620DB48860099479747D74878 S1130B507D002726057D00462706CE00A4BD05E7B7 S1130B607E05C0CE009CA60036088C00A426F7BDE6 S1130B7005CFDE2ADF2ECE00A332A700098C009B0E S1130B8026F7C6FFBD05F3C6F0BD05DB7E05C3969B S1130B90462744C6C0BD05DBCE00A4BD05E7C6801C S1130BA0BD05EA96452703BD05F09625D626CE0554 S1130BB01FBD05C6CE0510BD0136964326169642C6 S1130BC02612963F260E963981FF2708CE063FBD92 S1130BD005E720F27E0303BD05F07E0303BD05E1B6 S1130BE09762DE3409DF69C6FFD76181302D3B810E S1130BF0392E37BD05DE81302D0481392FF5812C46 S1130C002707DE6908DF342021DE69DF34BD05D221 S1130C107F00627D002C2609962D4D2704976120C4 S1130C200986CCBD05EDC601D761BD05DE810D2762 S1130C30049162260286209738C6E3BD05DBDE34C4 S1130C40DF67DE69DF34CE00C5BD05DE810D270810 S1130C50A700088C00EA26F1860DA700860AA701E2 S1130C608604A702DE67DF34C600BD05EADE470856 S1130C70DF477D00462706CE00A4BD05E77A006164 S1130C802749BD0CCEBD05DE7D0062270F9162278A S1130C903A810D261086CCBD05ED202F810D260549 S1130CA08620BD05C99738C603BD05DBC600BD0552 S1130CB0EADE4708DF477D0046270B7D0041260614 S1130CC0CE00A4BD05E77A006126BA7E05C0CE0039 S1130CD0A48620A700088C00A926F839BD05CFDE1C S1130CE02ADF2EC6F1BD05DBC600BD05EADE4708D6 S1130CF008DF4796462706CE00A4BD05E7BD0CCE07 S1130D00BD05C9BD05DE812C27037E05C0BD05CF09 S1130D10DE2ADF2EC611BD05DBC600BD05EADE47AF S1130D200808DF47964627D8964126D4CE00A4BDAE S1130D3005E720CC8D4AC6E3BD05DBC600BD05EA48 S1130D40DE4708DF4796462706CE00A4BD05E7BD6B S1130D500CCEBD05C9BD05DE812C26218D22C6031E S1130D60BD05DBC600BD05EADE4708DF479646271A S1130D70E1964126DDCE00A4BD05E720D57E05C061 S1130D80BD05CF962BD62A270686D2BD05ED4F97F3 S1130D9038397E05C39633273086FF9733CE0584D2 S1130DA08620A700088C058C26F8BD05E1CE0584B5 S1130DB0810D271581202D0481612D028620A70035 S1130DC0BD05DE088C058C26E7C6C0BD05DB7E05A7 S1130DD0C37F0061C6FFBD05E1814E260CD761BD0E S1130DE005DE814F2663BD05DE814F260C7F00445E S1130DF07D0061265BD7442057814D260C7F00403F S1130E007D0061264BD7402047814C260C7F004251 S1130E107D0061273BD74220378147260C7F004164 S1130E207D0061272BD74120278153260C7F004565 S1130E307D0061261BD74520178150260C7F004377 S1130E407D0061270BD743200786D9BD05ED20140B S1130E50BD05DE810D270D812C26F57F0061BD05C2 S1130E60DE7E0DD9C6C0BD05DB7E05C3BD05CFDE64 S1130E702ADF2EDF47C6C1BD05DB7E05C3BD05DE07 S1130E808145270786CABD05ED2023CE00A4860A26 S1130E90D6395C26037E05C05C2705A7000820F828 S1130EA0A702860DA7018604A70386FE97397E054F S1130EB0C3BD05CFDE2ADF2EC6F1BD05DB962AD6DB S1130EC02BDB4899479747D7487E05C3BD05CFDE3E S1130ED02A963981FF2712DE2A8C0000270B09DFAE S1130EE02ACE063FBD05E720E87E05C0CE0000DF20 S1130EF02E7F0032D637C520274F86029720BD05A6 S1130F00CFDE2ADF2E9C47260686FE972F2030DE72 S1130F10470808DF2A962AD62BD02F2713922E248F S1130F2014962ED62FD02B922A4D2616C1802A1223 S1130F30D72FC6E7394D260AC1812A0650D72FC6B6 S1130F40E73986D0BD05ED20C0BD05E19760BD053C S1130F50DE9761D637C50426037E10608120265DA6 S1130F6096608141270A81422653D638CA40D73831 S1130F70DE34DF5997C2BD05E19760BD05DE976198 S1130F809660812327037E1060BD05C9963785804E S1130F90272BBD05CFDE2ADF2EBD05C9BD05DE81A9 S1130FA02C271A96378504272286029720C6E7D76E S1130FB058D62E270586D2BD05EDD6583986D1BD23 S1130FC005ED7F00387F002E7F002F86039720C613 S1130FD0EB39DE59DF34BD05CFDE2ADF2EBD05C96E S1130FE0BD05DE812C2648BD05DE815826CFBD0512 S1130FF0DE81202704810D26C49637854027BE7DD7 S1131000002E270586D2BD05ED8602972096388AE4 S1131010209738C6E739815826119660812C270716 S1131020812326AE7E0F89966120BF966020F196BB S1131030322617962E261396378510270D96388A52 S113104010973886029720C6E739D637C518260385 S11310507E0FBD96388A30973886039720C6EB39C1 S1131060966181202704810D26AC96608141271862 S11310708142262AD637C1022608D638CA01D73873 S11310802006D638CA10D73897C2DE34DF599637CF S1131090850226037E0FBD86019720C6A339815899 S11310A026037E0FF97E0FD2CE0000DF2A862B970F S11310B0287F0029BD05E1812A274BBD05C9BD054F S11310C0DE810D273581202731812C272DBD05C9CF S11310D0BD05DE810D27228120271E812C271A8140 S11310E02B271F812D271B812F2717812A26177D48 S11310F00029270E86CCBD05ED39D636C50827F460 S113110020F7972820CABD09BD05D29628812B92 S1131110270E812D2719812A271F812F272720FE9B S1131120962AD62BDB2D992C972AD72B7E10CD9679 S11311302AD62BD02D922C20EF962AD62BCE002CFB S1131140BD05E420E3962AD62BCE002CBD05CC2089 S1131150D77F002C7F002DDE34DF81BD05DE812AA0 S11311602605DE47DF2C398127261ABD05DE972B9D S11311707F002ABD05DEBD12BB27037E120386CC89 S1131180BD05ED207ECE002C8124275B8140277491 S1131190812526037E122B81302D0781392E037E73 S11311A01287979CCE009CC620E700088C00A226DC S11311B0F8CE009C2010BD05DEBD12BB261F813079 S11311C02D04813A2D0D81412D04815A2F0586CCA1 S11311D0BD05ED8C00A227DEA7000820D9C600BDFE S11311E005F3DE70DF2C396F006F01BD05DEBD1520 S11311F0E22B09BD12AAAB01A70120EF8148260307 S1131200BD05DE396F006F01BD05DE81302D0F8114 S1131210382A0B8407BD12AEAB01A70120EA814F27 S1131220270481512624BD05DE20D86F006F01BD3F S113123005DE8130270481312607466901690020D3 S1131240EE81422605BD05DE20B9BD12BB2605860A S1131250D8BD05ED39BD05DEBD12BB27F8DE34DF90 S11312607F0909A600DE81DF34CE002C814F27944C S113127081512790814826037E11E7814227ACDE05 S11312807FDF3439BD05DE81302BCD81392EC98411 S11312900F9783A600E6015849BD12AEEB01A900E1 S11312A0DB838900A700E70120DA6801690068018F S11312B06900680169006801690039DF30CE12D61F S11312C0A100270C088C12DE26F6DE307D0642399A S11312D0DE307D0641390A0D202A2B2C2D2FD7769E S11312E0CE16287D16402603CE1D30DF790F9F5E73 S11312F0CE00848E009B32A700088C008A26F79EBD S11313005E0E5D2B072609CEFFFF200CDE2A20028D S1131310DE4796848A809784DF8A9679D67AD07C51 S1131320927B25037E13B6BD13FCCE0084A600A0D9 S113133008847F2705BD13F120E0088C008A26ED80 S11313407D00762741DE79DF777D008C2A13DE8AE3 S11313509C922744968D8A80978D86D5BD05ED2075 S113136034CE0084A600A708088C008C26F6DE790B S1131370DF65DE7BDF79BD1412DE65A608A70008F1 S11313809C7B26F720127D008C2A207D008D2A0F5D S113139086CEBD05EDBD1412DE92DF709E5E3996D9 S11313A077D678D07A9279250720ED86D3BD05EDDE S11313B00D79003220E2CE0084A600A708088C0034 S11313C08C26F6967BD67CD07592742A1D7D007689 S11313D0260986D3BD05ED0D790032DE7BDF79DF8A S11313E077BD1412DE79DF7B20AE86DDBD05ED20EE S11313F0A7C608DE79085A26FCDF79390F9F5CCE30 S1131400008C9E793432A700088C009426F79E5CE9 S11314100E390F9F5CC6088E008BDE7932A7000858 S11314205A26F9DF799E5C0E39DE72DF799679D619 S11314307AD07C927B243ABD13FC968C7D0046279F S1131440054D2A2920034D2B249692D693CE009342 S1131450BD05F617BD05F686209792860DA7008672 S11314600AA7018604A702CE008CBD05E78D822061 S1131470BC399646276ECE00AFDF54D75B964B2619 S113148047963E26439644273FBD012786FF974B48 S11314908620CE1603A700088C161326F80FCE0557 S11314A083DF6BCE1603860B97539F5C9E6B329F34 S11314B06B9E5CBD15D68C161326EF965343BD1553 S11314C0D60ECE15FBBD05F9DE47DF4D7D005B2A48 S11314D0037E15B6DE54A6008120260908DF548C4D S11314E000B726F2397D004C2625367F005386FF4F S11314F0974CCE05296F00088C056926F8DE4DDF70 S11315004FCE052B964FBD15D69650BD15D432DE61 S11315104D9C4F2705BD157C20D0DE54BD15E248F7 S11315204848481608A60008DF54BD15E21B7D0094 S113153040273136964DD64ED0229221250A964D1B S1131540D64ED0249223250F32DE4DA700A10026CB S1131550057F003D200E3686DA7D003D2605973D49 S1131560BD05ED328D6EDE4D08DF4DDF4FDE568C4E S1131570056527037E14D48D037E14D4367F004C76 S11315808603CE052B4C086D0026FA4436BD15D4CF S11315909653430909BD15D6860DA700860AA701EF S11315A08600A7028604A70332CE05298D28CE051E S11315B027BD05F932397D004C27028DBF963E26A2 S11315C00D96442709CE1619BD05F9BD01277F00E4 S11315D04B7E14E4DE56369B53975332BD05F6DF3B S11315E0563981302B1181392F0A81412B098146CB S11315F02E058007840F397D06413953303042303F S113160030303020202020202020202020202020A6 S113161020202000000D0A000453393033303030CC S10A16203046430D0A0004EB S10B1628C12020202020FFFF57 S1131630C22020202020FFFFD82020202020FFFFD0 S1041640FFA6 S10600207E01005A S1070620410D0A0476 S11309497F003E7F003FBDE82DD60026037EE80FD9 S113095986315425034A1B5F58D70081312613DE9B S113096972DF7BCE0605BD011E4F97259726974654 S1130979201A8132270F813326057C003E2006BDCB S10F098901157C003F97467F004B4F0196 S104094300AF S10513770D9FC4 S10A0D9D200BDF777E141226 S9030000FC 100 REM SUBROUTINE TO FIND CONVERSION OF M6800 MENOMICS TO M6800 MACHINE CODE 110 REM INPUTS ARE : 'REC$' RECORD IN STRING FORM 120 REM INPUTS ARE :'LOC' LOCATION OF MENOMIC IN REC$ (FIRST CHARACTOR-MENOMIC ASSUMED TO BE 3 CHARACTORS LONG) 130 REM INPUTS ARE :'MD' MODE OF ADDRESSING IF KNOWN (IM,IN,DI,EX,INH,ACC) 140 IF SUBSTR(REC$,LOC,3)='ABA' THEN HC='1B' AND DE$C='ADD A TO B' 150 IF SUBSTR(REC$,LOC,3)='ADC' THEN 850 160 IF SUBSTR(REC$,LOC,3)='ADD' THEN 1035 170 IF SUBSTR(REC$,LOC,3)='AND' THEN 1140 180 IF SUBSTR(REC$,LOC,3)='ASL' THEN 1155 190 IF SUBSTR(REC$,LOC,3)='ASR' THEN 1170 200 IF SUBSTR(REC$,LOC,3)='BCC' THEN HC='24' AND DE$C='BRANCH IF CARRY CLEAR' 210 IF SUBSTR(REC$,LOC,3)='BCS' THEN HC='25' AND DE$C='BRANCH IF CARRY SET' 220 IF SUBSTR(REC$,LOC,3)='BEQ' THEN HC='27' AND DE$C='BRANCH IF EQUAL' 230 IF SUBSTR(REC$,LOC,3)='BGE' THEN HC='2C' AND DE$C='BRANCH IF GREATER THAN OR EQUAL TO ZERO' 240 IF SUBSTR(REC$,LOC,3)='BGT' THEN HC='2E' AND DE$C='BRANCH IF GREATER THAN ZERO' 250 IF SUBSTR(REC$,LOC,3)='BHI' THEN HC='22' AND DE$C='BRANCH IF HIGHER' 260 IF SUBSTR(REC$,LOC,3)='BIT' THEN 1185 270 IF SUBSTR(REC$,LOC,3)='BLE' THEN HC='2F' AND DE$C='BRANCH IF LESS THAN OR EQUAL TO ZERO' 280 IF SUBSTR(REC$,LOC,3)='BLS' THEN HC='23' AND DE$C='BRANCH IF LOWER OR SAME' 290 IF SUBSTR(REC$,LOC,3)='BLT' THEN HC='2D' AND DE$C='BRANCH IF LESS THAN ZERO' 300 IF SUBSTR(REC$,LOC,3)='BMI' THEN HC='2B' AND DE$C='BRANCH IF MINUS' 310 IF SUBSTR(REC$,LOC,3)='BNE' THEN HC='26' AND DE$C='BRANCH IF NOT EQUAL' 320 IF SUBSTR(REC$,LOC,3)='BPL' THEN HC='2A' AND DE$C='BRANCH IF PLUS' 330 IF SUBSTR(REC$,LOC,3)='BRA' THEN HC='20' AND DE$C='BRANCH ALWAYS' 340 IF SUBSTR(REC$,LOC,3)='BSR' THEN HC='8D' AND DE$C='BRANCH TO SUBROUTINE' 350 IF SUBSTR(REC$,LOC,3)='BVC' THEN HC='28' AND DE$C='BRANCH IF OVERFLOW CLEAR' 360 IF SUBSTR(REC$,LOC,3)='BVS' THEN HC='29' AND DE$C='BRANCH IF OVERFLOW SET' 370 IF SUBSTR(REC$,LOC,3)='CRA' THEN HC='11' AND DE$C='COMPARE ACCUMULATORS' 380 IF SUBSTR(REC$,LOC,3)='CLC' THEN HC='0C' AND DE$C='CLEAR CARRY' 390 IF SUBSTR(REC$,LOC,3)='CLR' THEN 1200 400 IF SUBSTR(REC$,LOC,3)='CLV' THEN HC='0A' AND DE$C="CLEAR TWO'S COMPLEMENT OVERFLOW BIT" 410 IF SUBSTR(REC$,LOC,3)='CMP' THEN 1215 420 IF SUBSTR(REC$,LOC,3)='COM' THEN 1230 430 IF SUBSTR(REC$,LOC,3)='CPX' THEN 1245 440 IF SUBSTR(REC$,LOC,3)='DAA' THEN 1260 450 IF SUBSTR(REC$,LOC,3)='DEC' THEN 1275 460 IF SUBSTR(REC$,LOC,3)='DES' THEN HC='34' AND DE$C='DECREMENT STACK POINTER' 470 IF SUBSTR(REC$,LOC,3)='DEC' THEN HC='09' AND DE$C='DECREMENT INDEX REGISTER' 480 IF SUBSTR(REC$,LOC,3)='EOR' THEN 1290 490 IF SUBSTR(REC$,LOC,3)='INC' THEN 1305 500 IF SUBSTR(REC$,LOC,3)='INS' THEN HC='31' AND DE$C='INCREMENT STACK POINTER' 510 IF SUBSTR(REC$,LOC,3)='INX' THEN HC='08' AND DE$C='INCREMENT INDEX REGISTER' 520 IF SUBSTR(REC$,LOC,3)='JMP' THEN 1320 530 IF SUBSTR(REC$,LOC,3)='JSR' THEN 1335 540 IF SUBSTR(REC$,LOC,3)='LDA' THEN 1350 550 IF SUBSTR(REC$,LOC,3)='LDS' THEN 1365 560 IF SUBSTR(REC$,LOC,3)='LDX' THEN 1380 570 IF SUBSTR(REC$,LOC,3)='LSR' THEN 1395 580 IF SUBSTR(REC$,LOC,3)='NEG' THEN 1410 590 IF SUBSTR(REC$,LOC,3)='NOP' THEN HC='01' AND DE$C='NO OPERATION' 600 IF SUBSTR(REC$,LOC,3)='ORA' THEN 1425 610 IF SUBSTR(REC$,LOC,3)='PSH' THEN 1440 620 IF SUBSTR(REC$,LOC,3)='PUL' THEN 1455 630 IF SUBSTR(REC$,LOC,3)='ROL' THEN 1470 640 IF SUBSTR(REC$,LOC,3)='ROR' THEN 1485 650 IF SUBSTR(REC$,LOC,3)='RTI' THEN HC='3B' AND DE$C='RETURN FROM INTERRUPT' 660 IF SUBSTR(REC$,LOC,3)='RTS' THEN HC='39' AND DE$C='RETURN FROM SUBROUTINE' 670 IF SUBSTR(REC$,LOC,3)='SBA' THEN HC='10' AND DE$C='SUBTRACT B FROM A, STORE IN A' 680 IF SUBSTR(REC$,LOC,3)='SBC' THEN 1500 690 IF SUBSTR(REC$,LOC,3)='SEC' THEN HC='0D' AND DE$C='SET CARRY' 700 IF SUBSTR(REC$,LOC,3)='SEI' THEN HC='0F' AND DE$C='SET INTERRUPT MASK' 710 IF SUBSTR(REC$,LOC,3)='SEV' THEN HC='0B' AND DE$C="SET TWO'S COMPLEMENT OVERFLOW BIT" 720 IF SUBSTR(REC$,LOC,3)='STA' THEN 1515 730 IF SUBSTR(REC$,LOC,3)='STS' THEN 1530 740 IF SUBSTR(REC$,LOC,3)='STX' THEN 1545 750 IF SUBSTR(REC$,LOC,3)='SUB' THEN 1560 760 IF SUBSTR(REC$,LOC,3)='SWI' THEN HC='3F' AND DE$C='SOFTWARE INTERRUPT' 770 IF SUBSTR(REC$,LOC,3)='TAB' THEN HC='16' AND DE$C='TRANSFER FROM A TO B' 780 IF SUBSTR(REC$,LOC,3)='TAP' THEN HC='06' AND DE$C='TRANSFER FROM A TO CONDITION CODE REGISTER' 790 IF SUBSTR(REC$,LOC,3)='TBA' THEN HC='17' AND DE$C='TRANSFER FROM B TO A' 800 IF SUBSTR(REC$,LOC,3)='TPA' THEN HC='07' AND DE$C='TRANSFER FROM CONDITION CODE REGISTER TO A' 810 IF SUBSTR(REC$,LOC,3)='TST' THEN 1575 820 IF SUBSTR(REC$,LOC,3)='TSX' THEN HC='30' AND DE$C='TRANSFER FROM STACK POINTER TO INDEX REGISTER' 830 IF SUBSTR(REC$,LOC,3)='TXS' THEN HC='35' AND DE$C='TRANSFER FROM INDEX REGISTER TO STACK POINTER' 840 IF SUBSTR(REC$,LOC,3)='WAI' THEN HC='3E' AND DE$C='WAIT FOR INTERRUPT' 850 DE$C = 'ADD WITH CARRY' 860 IF SUBSTR(REC$,LOC+4,2)#'A ' OR ' A' THEN 915 870 IF MD='IMM' THEN HC='89' 880 IF MD='DIR' THEN HC='99' 890 IF MD='EXT' THEN HC='B9' 900 IF MD='IND' THEN HC='A9' 915 IF SUBSTR(REC$,LOC+4,2)#'B ' OR ' B' THEN 1005 930 IF MD='IMM' THEN HC='C9' 945 IF MD='DIR' THEN HC='D9' 960 IF MD='EXT' THEN HC='F9' 975 IF MD='IND' THEN HC='E9' 990 GOTO 1590 1005 PRINT 'CONVERSION NOT POSSIBLE FOR THIS MENOMIC' 1020 GOTO 1650 1035 DE$C='ADD WITHOUT CARRY' 1050 IF SUBSTR(REC$,LOC+4,2)#'A 'OR ' A' THEN 1125 1065 IF MD='IMM' THEN HC='8B' 1080 IF MD='DIR' THEN HC='9B' 1095 IF MD='EXT' THEN HC='B9' 1110 IF MD='IND' THEN HC='A9' 1125 IF SUBSTR(REC$,LOC+4,2)#'B ' OR ' B' THEN 1138 1126 IF MD= 'IMM' THEN HC='CB' 1127 IF MD='DIR' THEN HC='DB' 1128 IF MD='EXT' THEN HC='FB' 1129 IF MD='IND' THEN HC='EB' 1130 GOTO 1590 1138 DO 1005 1139 GOTO 1650 1140 DE$C='LOGICAL AND' 1141 IF SUBSTR(REC$,LOC+4,2)#'A 'OR ' A' THEN 1146 1142 IF MD='IMM' THEN HC='84' 1143 IF MD='DIR' THEN HC='94' 1144 IF MD='EXT' THEN HC='B4' 1146 IF MD='IND' THEN HC='A4' 1147 IF SUBSTR(REC$,LOC+4,2)#'B ' OR ' B' THEN 1152 1148 IF MD= 'IMM' THEN HC='C4' 1149 IF MD='DIR' THEN HC='D4' 1150 IF MD='EXT' THEN HC='F4' 1151 IF MD='IND' THEN HC='E4' 1152 GOTO 1590 1153 DO 1005 1154 GOTO 1650 1155 DE$C='ARITHMETIC SHIFT LEFT' 1170 DE$C='ARITHMETIC SHIFT RIGHT' 1185 DE$C='BIT TEST' 1200 DE$C='CLEAR' 1215 DE$C='COMPARE' 1230 DE$C='COMPLEMENT' 1245 DE$C='COMPARE INDEX REGISTER' 1260 DE$C='DECIMAL ADJUST "ACCA"' 1275 DE$C='DECREMENT' 1290 DE$C='EXCLUSIVE OR' 1305 DE$C='INCREMENT' 1320 DE$C='JUMP' 1335 DE$C='JUMP TO SUBROUTINE' 1350 DE$C='LOAD ACCUMULATOR' 1365 DE$C='LOAD STACK POINTER' 1380 DE$C='LOAD INDEX REGISTER' 1395 DE$C='LOGICAL SHIFT RIGHT' 1410 DE$C='NEGATE' 1425 DE$C='INCLUSIVE OR' 1440 DE$C='PUSH DATA ONTO STACK' 1455 DE$C='PULL DATA FROM STACK' 1470 DE$C='ROTATE LEFT' 1485 DE$C='ROTATE RIGHT' 1500 DE$C='SUBTRACT WITH CARRY' 1515 DE$C='STORE ACCUMULATOR' 1530 DE$C='STORE STACK POINTER' 1545 DE$C='STORE INDEX REGISTER' 1560 DE$C='SUBTRACT' 1575 DE$C='TEST' 1590 RETURN 100 INTEGER CONT,NUM,ADDS,ACT,ADDX,CNT 110 GOTO 190 120 PRINT CHAR(12) 130 SLEEP 10 140 GOTO 420 150 REM 160 ZZ=ZZ+1 170 REM 180 GOTO 510 190 REM 200 INTEGER BYTE,A,B,C,D,HEXC(198,2),F 210 STRING TLTE(198) 220 OPEN "M68TDATA",1,SYMBOLIC,INPUT,OLD 230 REM 240 FOR A=1 TO 197 250 INPUT FROM 1 IN FORM 'ZZBZ #':HEXC(A,1),HEXC(A,2),TLTE(A) 260 NEXT A 270 TLTE(198)='NON VALID OP' 280 CLOSE 1 290 PRINT "OBJECT FILE NAME" 300 INPUT NAM$ 310 OPEN NAM$,1,SYMBOLIC,RANDOM,INPUT,OLD 315 ON ENDFILE (1) GOTO 1520 320 INTEGER TAA(TREC(1)) 330 FOR A=1 TO TREC(1) 340 INPUT FROM 1 AT A IN FORM 'ZZZZ':TAA(A) 350 NEXT A 360 REM 370 FLAG=0,A=0 380 GOSUB 730 ! INITAL INPUT FOR FIRST TWO HEX CHAR. 390 REM ! OTHERWISE KNOWN AS AN ADDRESS 400 ON ENDFILE(1) GOTO 1740 410 CNT=CONT 420 GOSUB 820 ! INPUT FOR OTHER THAN BEGINING OF LINE 425 FLGA = 0 430 GOSUB 610 ! OBJECT CODE FILE SEARCH 440 IF C=198 THEN FLAG=0 450 IF C=198 THEN HEXC(C,2)=1 460 IF C=198 THEN FLGG=1 470 IF C=198 THEN 150 480 IF FLAG=1 THEN 1470 !FLAG SHOWS NONEXISTANT OPERATION 490 REM 500 REM 510 GOSUB 920 ! INPUT BASED ON NUMBER OF BYTES IN INST. 520 GOSUB 1370 ! CHECK & COMPLEMENT IF PROPER 530 GOSUB 1110 ! TO PRINT ROUTINE 540 FLGA=0 550 IF HEXC(C,1)#57 THEN 570 560 GOTO 120 570 GOTO 420 580 REM 590 REM 600 REM 610 REM ***** OBJECT CODE ROUTINE ***** 620 C=1 630 IF HEXC(C,1)=NUM THEN RETURN 640 C=C+1 650 IF C>197 THEN 670 660 GOTO 630 670 FLAG=1 680 RETURN 690 REM 700 REM 710 REM 720 REM 730 REM **** INPUT FROM FILE ROUTINE **** 740 A=A+1 750 INPUT FROM 1 AT A IN FORM '255%':AAA$ 760 INPUT FROM 1 AT A IN FORM 'ZZZZ':CONT 770 L=LENGTH(AAA$)/2 780 L=L-2 790 CNT=CONT 800 RETURN 810 REM 820 REM 830 REM 840 REM 850 IF L=0 THEN FLGA=1 860 IF L=0 THEN DO 730:790 870 INPUT FROM 1 IN FORM 'ZZ':NUM 880 L=L-1 890 RETURN 900 REM 910 REM 920 ON HEXC(C,2)-1 GOTO 950,1000 930 RETURN 940 REM 950 GOSUB 820 960 IF FLGA=1 THEN CNT=CNT-1 965 IF FLGA = 1 THEN FLGA = 0 970 ADDS=NUM 980 RETURN 990 REM 1000 GOSUB 820 1010 IF FLGA=1 THEN CNT=CNT-1 1015 IF FLGA=1 THEN FLGA=0 1020 ADDS=BINSLL(NUM,8) 1030 GOSUB 820 1040 IF FLGA=1 THEN CNT=CNT-2 1045 IF FLGA=1 THEN FLGA=0 1050 ADDS=ADDS+NUM 1060 RETURN 1070 REM 1080 REM 1090 REM 1100 REM 1110 REM **** PRINT ROUTINE***** 1120 FLGA=0 1130 ON HEXC(C,2) GOTO 1140,1220,1300 1140 IF FLGG = 0 THEN 1180 1150 PRINT IN FORM "10B4Z 3B 2Z 12B14%14B 2Z /":CNT,HEXC(C,1),TLTE(C),NUM 1160 FLGG=0 1170 GOTO 1190 1180 PRINT IN FORM "10B4Z 3B 2Z 12B14% /":CNT,HEXC(C,1),TLTE(C) 1190 CNT=CNT+1 1200 RETURN 1210 REM 1220 IF FLAG=2 THEN 1230 ELSE 1280 1230 PRINT IN FORM "10B4Z 3B 2Z 3B 2Z 7B 4% 5B 4Z /":CNT,HEXC(C,1),ADDS,TLTE(C),ACT 1240 FLAG =0 1250 CNT=CNT+2 1260 RETURN 1270 REM 1280 PRINT IN FORM "10B4Z 3B 2Z 3B 2Z 7B 4%/":CNT,HEXC(C,1),ADDS,TLTE(C) 1290 GOTO 1250 1300 PRINT IN FORM"10B4Z 3B 2Z 3B 4Z 5B 4%/":CNT,HEXC(C,1),ADDS,TLTE(C) 1310 CNT=CNT+3 1320 RETURN 1330 REM 1340 REM 1350 REM 1360 REM 1370 REM ***** CHECKING AND COMPLEMENT NUMBER ROUTINE **** 1380 IF HEXC(C,1)>24 AND HEXC(C,1)<48 OR HEXC(C,1)=141 THEN 1390 ELSE RETURN 1390 IF NUM>127 THEN ADDX=NUM-256 ELSE ADDX=NUM 1400 ACT=ADDX+2+CNT 1410 FLAG=2 1420 RETURN 1430 REM 1440 REM 1450 REM 1460 REM 1470 REM **** ERROR ENTRY POINT ***** 1480 PRINT IN FORM '10B"OP CODE" 2B 2Z 2B "NOT IN LIST"/':NUM 1490 REM 1500 REM 1510 REM 1520 REM ***** ADDRESSING ROUTINE ****** 1530 PRINT "ENTER STARTING ADDRESS IN HEX"; 1540 INPUT IN FORM "ZZZZ":B 1550 A=1,F=1 1560 IF B>=TAA(A) THEN 1610 1570 F=0 1580 IF B