home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
86xx
/
8612.d64
/
mc68705-assembl.
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
16KB
|
816 lines
10 DATA *PORT-A EQU 0000
20 DATA *PORT-B EQU 0001
30 DATA *PORT-C EQU 0002
40 DATA *DDR-A EQU 0004
50 DATA *DDR-B EQU 0005
60 DATA *DDR-C EQU 0006
70 DATA *EOI-FLAG EQU 0011
80 DATA *DEV-# EQU 0012
90 DATA *SEC.FLAG EQU 0013
100 DATA *LABEL14 EQU 0014
110 DATA *CBM-FLAG EQU 0015
120 DATA *LF-FLAG EQU 0016
130 DATA *$22-FLAG EQU 0017
140 DATA *CRSR-FLAG EQU 0018
150 DATA *RESTORE EQU 0019
160 DATA *DOT-FLAG EQU 001A
170 DATA *ASC.FLAG EQU 001B
175 DATA *FRZ-FLAG EQU 001C
180 DATA *OPCODE EQU 0020
190 DATA *HI-BYTE EQU 0021
200 DATA *LO-BYTE EQU 0022
210 DATA *LABEL23 EQU 0023
220 DATA ORG 07FE
230 DATA DAT 04
240 DATA DAT 00
250 DATA ORG 0784
260 DATA DAT 80
270 DATA ORG 0080
280 DATA *GET-BYTE LDA@ 18
290 DATA *CLOCKL BIL CLOCKL
300 DATA *LCLOCK BIL LCLOCK
310 DATA BCL0 PORT-C
320 DATA *BIL BIL CLOCK1H
330 DATA *DECA DECA
340 DATA BNE BIL
350 DATA LDA@ 10
360 DATA BST0 PORT-C
370 DATA *DEC DECA
380 DATA BNE DEC
390 DATA BST7 EOI-FLAG
400 DATA BCL0 PORT-C
410 DATA *CLOCK1H BIH CLOCK1H
420 DATA *CLOCK1L BIL CLOCK1L
430 DATA BBC1 PORT-C BIT-1
440 DATA *BIT-1 RORX
450 DATA *CLOCK2H BIH CLOCK2H
460 DATA *CLOCK2L BIL CLOCK2L
470 DATA BBC1 PORT-C BIT-2
480 DATA *BIT-2 RORX
490 DATA *CLOCK3H BIH CLOCK3H
500 DATA *CLOCK3L BIL CLOCK3L
510 DATA BBC1 PORT-C BIT-3
520 DATA *BIT-3 RORX
530 DATA *CLOCK4H BIH CLOCK4H
540 DATA *CLOCK4L BIL CLOCK4L
550 DATA BBC1 PORT-C BIT-4
560 DATA *BIT-4 RORX
570 DATA *CLOCK5H BIH CLOCK5H
580 DATA *CLOCK5L BIL CLOCK5L
590 DATA BBC1 PORT-C BIT-5
600 DATA *BIT-5 RORX
610 DATA *CLOCK6H BIH CLOCK6H
620 DATA *CLOCK6L BIL CLOCK6L
630 DATA BBC1 PORT-C BIT-6
640 DATA *BIT-6 RORX
650 DATA *CLOCK7H BIH CLOCK7H
660 DATA *CLOCK7L BIL CLOCK7L
670 DATA BBC1 PORT-C BIT-7
680 DATA *BIT-7 RORX
690 DATA *CLOCK8H BIH CLOCK8H
700 DATA *CLOCK8L BIL CLOCK8L
710 DATA BBC1 PORT-C BIT-8
720 DATA *BIT-8 RORX
730 DATA *BYTE BIH BYTE
740 DATA BST0 PORT-C
750 DATA RTS
760 DATA *DATA JSR CHECK
770 DATA *BUSY BBS0 PORT-A BUSY
780 DATA STA PORT-B
790 DATA BCL3 PORT-C
800 DATA BST3 PORT-C
810 DATA *JSR80 JSR GET-BYTE
820 DATA BBS2 PORT-C DATA
830 DATA JMP TEST-DEV
840 DATA ORG 0400
850 DATA LDA@ 00
860 DATA STA DDR-A
870 DATA LDA@ FF
880 DATA STA DDR-B
890 DATA INCA
900 DATA STA PORT-B
910 DATA LDA@ 09
920 DATA STA DDR-C
930 DATA DECA
940 DATA STA PORT-C
950 DATA CLR EOI-FLAG
960 DATA CLR CBM-FLAG
970 DATA CLR DOT-FLAG
980 DATA CLR LF-FLAG
990 DATA CLR ASC.FLAG
995 DATA CLR FRZ-FLAG
1000 DATA LDA PORT-A
1010 DATA EOR@ FF
1020 DATA TAX
1030 DATA ASRA
1040 DATA AND@ 03
1050 DATA ADD@ 24
1060 DATA STA DEV-#
1070 DATA LDA@ D6
1080 DATA STA OPCODE
1090 DATA LDA@ 01
1100 DATA STA HI-BYTE
1110 DATA CLR LO-BYTE
1120 DATA LDA@ 81
1130 DATA STA LABEL23
1140 DATA CLC
1150 DATA TXA
1160 DATA ASLA
1170 DATA BCC TEST-LF
1180 DATA BST7 DOT-FLAG
1190 DATA *TEST-LF CLC
1200 DATA ASLA
1210 DATA BCC ATN
1220 DATA BST7 LF-FLAG
1230 DATA *ATN BBS2 PORT-C ATN
1240 DATA *CLOCK BIH CLOCK
1250 DATA CLR SEC.FLAG
1260 DATA CLR $22-FLAG
1270 DATA CLR CRSR-FLAG
1280 DATA CLR RESTORE
1290 DATA CLR ASC.FLAG
1300 DATA BST0 PORT-C
1310 DATA JSR GET-BYTE
1320 DATA *TEST-DEV CPX DEV-#
1330 DATA BEQ PLUS13
1340 DATA *UNLIST CPX@ 3F
1350 DATA BNE ATN2
1360 DATA *DATAL BRA RELEASE
1370 DATA *ATN2 BBC7 EOI-FLAG SLR
1380 DATA *RELEASE LDA@ 0E
1390 DATA BST0 PORT-C
1400 DATA *TFR DECA
1410 DATA BNE TFR
1420 DATA BCL7 EOI-FLAG
1430 DATA *SLR BCL0 PORT-C
1440 DATA *WAIT BBC2 PORT-C WAIT
1450 DATA BRA ATN
1460 DATA *PLUS13 JSR GET-BYTE
1470 DATA BBC2 PORT-C SEC.ADR.
1480 DATA JMP DATA
1490 DATA *SEC.ADR. CPX@ 3F
1500 DATA BEQ RELEASE
1502 DATA BBS7 FRZ-FLAG STORE
1510 DATA TXA
1520 DATA AND@ 0F
1530 DATA CMP@ 0E
1540 DATA BHS AUTOFEED
1550 DATA CMP@ 01
1560 DATA BEQ TRUTH
1570 DATA CMP@ 02
1580 DATA BEQ ASCII
1582 DATA CMP@ 03
1584 DATA BEQ FREEZE
1590 DATA CMP@ 05
1600 DATA BEQ TRUTH
1610 DATA CMP@ 06
1620 DATA BEQ TRUTH
1630 DATA CMP@ 07
1640 DATA BEQ BUSIN
1650 DATA *CLR.SEC. BCL7 SEC.FLAG
1660 DATA *STORE JMP JSR80
1670 DATA *AUTOFEED CMP@ 0F
1680 DATA BNE OFF
1690 DATA BST7 LF-FLAG
1700 DATA BRA STORE
1703 DATA *FREEZE BST7 FRZ-FLAG
1706 DATA BRA STORE
1710 DATA *OFF BCL7 LF-FLAG
1720 DATA BRA STORE
1730 DATA *TRUTH BST7 CBM-FLAG
1740 DATA BCL7 SEC.FLAG
1750 DATA BRA STORE
1760 DATA *BUSIN BST7 SEC.FLAG
1770 DATA BST7 RESTORE
1780 DATA BRA STORE
1790 DATA *ASCII BCL7 SEC.FLAG
1800 DATA BCL7 RESTORE
1810 DATA BST7 ASC.FLAG
1820 DATA BRA STORE
1830 DATA *CHECK TXA
1840 DATA BBC7 CBM-FLAG CHECK-2
1850 DATA CMP@ 0D
1860 DATA BNE PRINT
1870 DATA BBC7 LF-FLAG PRINT
1880 DATA JSR OUT
1890 DATA LDA@ 0A
1900 DATA *PRINT RTS
1910 DATA *CHECK-2 BBS7 ASC.FLAG ASCII-1
1920 DATA CMP@ 22
1930 DATA BNE VERDER
1940 DATA INC $22-FLAG
1950 DATA *VERDER AND@ 7F
1960 DATA CMP@ 1F
1970 DATA BLS CODES
1980 DATA TXA
1990 DATA BBS7 SEC.FLAG TRANSL.
2000 DATA CMP@ 5B
2010 DATA BHS GRAPHIC
2020 DATA RTS
2030 DATA *ASCII-1 JMP ASCII-2
2040 DATA *GRAPHIC CMP@ 60
2050 DATA BHS BIT-8H
2060 DATA LDA@ 03
2070 DATA STA HI-BYTE
2080 DATA LDA@ 40
2090 DATA STA LO-BYTE
2100 DATA TXA
2110 DATA SUB@ 5B
2120 DATA STA LABEL14
2130 DATA ASLA
2140 DATA ASLA
2150 DATA ADD LABEL14
2160 DATA ADD LABEL14
2170 DATA ADD LO-BYTE
2180 DATA STA LO-BYTE
2190 DATA JMP BIT-IMM.
2200 DATA *BIT-8H CMP@ 9F
2210 DATA BHI M.ADR.
2220 DATA ADD@ 60
2230 DATA TAX
2240 DATA *M.ADR. CLR LO-BYTE
2250 DATA LDA@ 01
2260 DATA STA HI-BYTE
2270 DATA JSR MULTIPLY
2280 DATA JMP BIT-IMM.
2290 DATA *CODES JMP CODES-1
2300 DATA *TRANSL. JMP BUSINESS
2310 DATA *MULTIPLY TXA
2320 DATA SUB@ A0
2330 DATA STA LABEL14
2340 DATA *MULTI CLC
2350 DATA ASLA
2360 DATA BCC MULTI-4
2370 DATA INC HI-BYTE
2380 DATA CLC
2390 DATA *MULTI-4 ASLA
2400 DATA BCC MULTI-5
2410 DATA INC HI-BYTE
2420 DATA CLC
2430 DATA *MULTI-5 ADC LABEL14
2440 DATA BCC SUM
2450 DATA INC HI-BYTE
2460 DATA CLC
2470 DATA *SUM ADC LABEL14
2480 DATA BCC RESULT
2490 DATA INC HI-BYTE
2500 DATA CLC
2510 DATA *RESULT STA LO-BYTE
2520 DATA RTS
2530 DATA *BIT-IMM. JSR DOTTEST
2540 DATA *NXT JSR OPCODE
2550 DATA JSR OUT
2560 DATA INCX
2570 DATA CPX@ 06
2580 DATA BNE NXT
2590 DATA CLRA
2600 DATA *RETURN RSP
2610 DATA JMP JSR80
2620 DATA *OUT BBS0 PORT-A OUT
2630 DATA STA PORT-B
2640 DATA BCL3 PORT-C
2650 DATA BST3 PORT-C
2660 DATA RTS
2670 DATA *BUSINESS CMP@ 5B
2680 DATA BHS UPPER-1
2690 DATA CMP@ 41
2700 DATA BHS LOWER
2710 DATA RTS
2720 DATA *LOWER ORA@ 20
2730 DATA RTS
2740 DATA *UPPER-1 CMP@ 61
2750 DATA BHS UPPER-2
2760 DATA SUB@ 5B
2770 DATA STA LABEL14
2780 DATA LDA@ 03
2790 DATA STA HI-BYTE
2800 DATA LDA LABEL14
2810 DATA JSR MULTI
2820 DATA ADD@ 40
2830 DATA STA LO-BYTE
2840 DATA JMP BIT-IMM.
2850 DATA *UPPER-2 CMP@ 7B
2860 DATA BHS GRAPH-2
2870 DATA AND@ 5F
2880 DATA RTS
2890 DATA *GRAPH-2 CMP@ 80
2900 DATA BHS KAR-A9
2910 DATA SUB@ 7B
2920 DATA *GRAPH-3 STA LABEL14
2930 DATA LDA@ 03
2940 DATA STA HI-BYTE
2950 DATA LDA LABEL14
2960 DATA JSR MULTI
2970 DATA ADD@ 64
2980 DATA STA LO-BYTE
2990 DATA JMP BIT-IMM.
3000 DATA *KAR-A9 CMP@ A9
3010 DATA BNE KAR-BA
3020 DATA LDA@ 03
3030 DATA STA HI-BYTE
3040 DATA LDA@ 82
3050 DATA STA LO-BYTE
3060 DATA JMP BIT-IMM.
3070 DATA *KAR-BA CMP@ BA
3080 DATA BNE KAR-FF
3090 DATA LDA@ 03
3100 DATA STA HI-BYTE
3110 DATA LDA@ 88
3120 DATA STA LO-BYTE
3130 DATA JMP BIT-IMM.
3140 DATA *KAR-FF CMP@ FF
3150 DATA BNE KAR-C0
3160 DATA LDA@ 03
3170 DATA STA HI-BYTE
3180 DATA LDA@ 76
3190 DATA STA LO-BYTE
3200 DATA JMP BIT-IMM.
3210 DATA *KAR-C0 CMP@ C0
3220 DATA BNE GRAPH-4
3230 DATA LDA@ 03
3240 DATA STA HI-BYTE
3250 DATA LDA@ 5E
3260 DATA STA LO-BYTE
3270 DATA JMP BIT-IMM.
3280 DATA *GRAPH-4 CMP@ E0
3290 DATA BHS GRAPH-5
3300 DATA CMP@ C1
3310 DATA BHS UPPER-3
3320 DATA JMP M.ADR.
3330 DATA *GRAPH-5 AND@ BF
3340 DATA JMP KAR-A9
3350 DATA *UPPER-3 CMP@ DB
3360 DATA BHS GRAPH-6
3370 DATA AND@ 7F
3380 DATA RTS
3390 DATA *GRAPH-6 SUB@ DB
3400 DATA JMP GRAPH-3
3410 DATA *CODES-1 TXA
3420 DATA CMP@ 0D
3430 DATA BNE CODES-2
3440 DATA BBC7 CRSR-FLAG CR-1
3450 DATA LDA RESTORE
3460 DATA STA SEC.FLAG
3470 DATA CLR CRSR-FLAG
3480 DATA *CR-1 BBS7 LF-FLAG LF
3490 DATA CLR $22-FLAG
3500 DATA RTS
3510 DATA *LF JSR OUT
3520 DATA CLR $22-FLAG
3530 DATA LDA@ 0A
3540 DATA RTS
3550 DATA *CODES-2 CMP@ 11
3560 DATA BEQ CODES-3
3570 DATA CMP@ 91
3580 DATA BEQ CODES-4
3590 DATA CMP@ 12
3600 DATA BEQ CODES-5
3610 DATA CMP@ 13
3620 DATA BEQ CODES-6
3630 DATA CMP@ 0E
3640 DATA BEQ CODES-7
3650 DATA CMP@ 0F
3660 DATA BEQ CODES-8
3670 DATA BNE CODES-9
3680 DATA *CODES-3 BBS0 $22-FLAG PRINT-D
3690 DATA BST7 SEC.FLAG
3700 DATA BST7 CRSR-FLAG
3710 DATA JMP RETURN
3720 DATA *CODES-4 BBS0 $22-FLAG CODES-9
3730 DATA BCL7 SEC.FLAG
3740 DATA BST7 CRSR-FLAG
3750 DATA JMP RETURN
3760 DATA *CODES-5 BBS0 $22-FLAG PRINT-R
3770 DATA JMP RETURN
3780 DATA *CODES-6 BBS0 $22-FLAG PRINT-S
3790 DATA JMP RETURN
3800 DATA *PRINT-D LDA@ 8E
3810 DATA STA LO-BYTE
3820 DATA *PR-CODE LDA@ 03
3830 DATA STA HI-BYTE
3840 DATA JMP BIT-IMM.
3850 DATA *PRINT-R LDA@ 94
3860 DATA STA LO-BYTE
3870 DATA BRA PR-CODE
3880 DATA *PRINT-S LDA@ 9A
3890 DATA STA LO-BYTE
3900 DATA BRA PR-CODE
3910 DATA *CODES-7 BBS0 $22-FLAG CODES-9
3920 DATA LDA@ 1B
3930 DATA JSR OUT
3940 DATA LDA@ 57
3950 DATA JSR OUT
3960 DATA LDA@ 01
3970 DATA JSR OUT
3980 DATA JMP RETURN
3990 DATA *CODES-8 BBS0 $22-FLAG CODES-9
4000 DATA LDA@ 1B
4010 DATA JSR OUT
4020 DATA LDA@ 57
4030 DATA JSR OUT
4040 DATA LDA@ 00
4050 DATA JSR OUT
4060 DATA JMP RETURN
4070 DATA *CODES-9 BBS0 $22-FLAG END
4080 DATA CMP@ 10
4090 DATA BEQ CHR$16
4100 DATA CMP@ 08
4110 DATA BEQ CHR$26
4120 DATA RTS
4130 DATA *CHR$26 JSR GET-BYTE
4140 DATA TXA
4150 DATA CMP@ 1A
4160 DATA BEQ REPEAD
4170 DATA RTS
4180 DATA *REPEAD JMP REP-CHAR.
4190 DATA *CHR$16 JMP SET-TAP
4200 DATA *END ADD@ 40
4210 DATA TAX
4220 DATA CMP@ 45
4230 DATA BNE HOGER-1
4240 DATA LDA@ A0
4250 DATA STA LO-BYTE
4260 DATA LDA@ 03
4270 DATA STA HI-BYTE
4280 DATA JMP BIT-IMM.
4290 DATA *HOGER-1 CMP@ 80
4300 DATA BHS HOGER-2
4310 DATA LDA@ 03
4320 DATA STA HI-BYTE
4330 DATA TXA
4340 DATA SUB@ 5B
4350 DATA STA LABEL14
4360 DATA JSR MULTI
4370 DATA ADD@ 40
4380 DATA STA LO-BYTE
4390 DATA JMP BIT-REV.
4400 DATA *HOGER-2 CLR LO-BYTE
4410 DATA LDA@ 01
4420 DATA STA HI-BYTE
4430 DATA JSR MULTIPLY
4440 DATA *BIT-REV. JSR DOTTEST
4450 DATA *GO-ON JSR OPCODE
4460 DATA EOR@ FE
4470 DATA JSR OUT
4480 DATA INCX
4490 DATA CPX@ 06
4500 DATA BNE GO-ON
4510 DATA CLRA
4520 DATA RSP
4530 DATA JMP JSR80
4540 DATA *DOTTEST BBS7 DOT-FLAG IBM
4550 DATA LDA@ 1B
4560 DATA JSR OUT
4570 DATA LDA@ 4B
4580 DATA JSR OUT
4590 DATA LDA@ 06
4600 DATA JSR OUT
4610 DATA CLRX
4620 DATA CLRA
4630 DATA JSR OUT
4640 DATA RTS
4650 DATA *IBM LDA@ 1B
4660 DATA JSR OUT
4670 DATA LDA@ 2A
4680 DATA JSR OUT
4690 DATA LDA@ 00
4700 DATA JSR OUT
4710 DATA LDA@ 06
4720 DATA JSR OUT
4730 DATA CLRX
4740 DATA CLRA
4750 DATA JSR OUT
4760 DATA RTS
4770 DATA ORG 03A8
4780 DATA *SET-TAP LDA@ 1B
4790 DATA JSR OUT
4800 DATA LDA@ 44
4810 DATA JSR OUT
4820 DATA JSR GET-BYTE
4830 DATA TXA
4840 DATA AND@ 0F
4850 DATA ASLA
4860 DATA STA LABEL14
4870 DATA ASLA
4880 DATA ASLA
4890 DATA ADD LABEL14
4900 DATA STA LABEL14
4910 DATA JSR GET-BYTE
4920 DATA TXA
4930 DATA AND@ 0F
4940 DATA ADD LABEL14
4950 DATA JSR OUT
4960 DATA LDA@ 00
4970 DATA JSR OUT
4980 DATA LDA@ 09
4990 DATA JSR OUT
5000 DATA JMP RETURN
5010 DATA ORG 03D8
5020 DATA *ASCII-2 CMP@ 9F
5023 DATA BLS CMP-0D
5026 DATA AND@ 7F
5030 DATA *CMP-0D CMP@ 0D
5040 DATA BEQ ASC-LF
5050 DATA CMP@ 60
5060 DATA BHS ASC.LOW
5070 DATA CMP@ 40
5080 DATA BHS ASC.UP
5090 DATA *PRINTEN RTS
5100 DATA *ASC.LOW AND@ 5F
5110 DATA BRA PRINTEN
5120 DATA *ASC.UP ORA@ 20
5130 DATA BRA PRINTEN
5140 DATA *ASC-LF BBC7 LF-FLAG PRINTEN
5150 DATA JSR OUT
5160 DATA LDA@ 0A
5170 DATA RTS
5180 DATA ORG 0738
5190 DATA *REP-CHAR. LDA@ 1B
5200 DATA JSR OUT
5210 DATA BBS7 DOT-FLAG IBM-2
5220 DATA LDA@ 4B
5230 DATA JSR OUT
5240 DATA BRA REP-2
5250 DATA *IBM-2 LDA@ 2A
5260 DATA JSR OUT
5270 DATA LDA@ 00
5280 DATA JSR OUT
5290 DATA *REP-2 JSR GET-BYTE
5300 DATA TXA
5310 DATA STA LABEL14
5320 DATA JSR OUT
5330 DATA LDA@ 00
5340 DATA JSR OUT
5350 DATA JSR GET-BYTE
5360 DATA TXA
5370 DATA LDX LABEL14
5380 DATA *REP-3 JSR OUT
5390 DATA DECX
5400 DATA BNE REP-3
5410 DATA JMP RETURN
5420 REM 550 STATEMENTS - 148 LABELS
10000 PRINT"[147]":PRINT"ASSEMBLER FOR MOTOROLA MC68705":PRINT
10010 OPEN4,4:POKE56,144:CLR
10020 PRINT"EVEN GEDULD A.U.B.":PRINT
10030 FOR CL=36864 TO 38912:POKECL,0:NEXT
10040 POKE38910,4:POKE38788,128
10050 PRINT"BASE ADRESS OF ASS. CODE BUFFER $9000":P=36864:PRINT
10060 INPUT"HOW MANY LINES TO BE ASSEMBLED";D:PRINT
10070 INPUT"HOW MANY LABELS ARE USED";C:PRINT:PRINT
10080 DIML$(C),A(C):Z=1
10090 PRINT"FIRST PASS RUNNING":PRINT:PRINT
10100 K=0:Q=0
10110 FOR X=1 TO D:PRINTX;
10120 IF Z=3 THEN PRINT#4,X;
10130 GOSUB 12250
10140 GOTO 10240
10150 GOSUB 12450
10160 NEXT X
10170 Z=Z+1
10180 IF Z=4 THEN 10210
10190 IF Z=3 THEN PRINT"PRINT-OUT":PRINT:PRINT:RESTORE:GOTO10100
10200 PRINT"SECUND PASS RUNNING":PRINT:PRINT:RESTORE:GOTO 10100
10210 PRINT:PRINT:PRINT"ASSEMBLY COMPLETE":PRINT#4:PRINT#4:PRINT#4,"ASSEMBLY COMPLETE"
10220 PRINT#4:PRINT#4
10230 CLOSE 4:END
10240 READ S$:P$=S$
10250 IF LEFT$(S$,1)="*" THEN GOSUB 10930
10260 M$=LEFT$(S$,3):S$=RIGHT$(S$,(LEN(S$)-3))
10270 IF M$="ADC" THEN B=169:GOTO 11050
10280 IF M$="ADD" THEN B=171:GOTO 11050
10290 IF M$="AND" THEN B=164:GOTO 11050
10300 IF M$="ASL" THEN B=56:GOTO 10990
10310 IF M$="ASR" THEN B=55:GOTO 10990
10320 IF M$="BCC" THEN O=36:GOTO 11450
10330 IF M$="BCL" THEN B=17:GOTO 11610
10340 IF M$="BCS" THEN O=37:GOTO 11450
10350 IF M$="BEQ" THEN O=39:GOTO 11450
10360 IF M$="BHC" THEN O=40:GOTO 11450
10370 IF M$="BHF" THEN O=41:GOTO 11450
10380 IF M$="BHI" THEN O=34:GOTO 11450
10390 IF M$="BHS" THEN O=36:GOTO 11450
10400 IF M$="BIH" THEN O=47:GOTO 11450
10410 IF M$="BIL" THEN O=46:GOTO 11450
10420 IF M$="BIT" THEN B=165:GOTO 11050
10430 IF M$="BLO" THEN O=37:GOTO 11450
10440 IF M$="BLS" THEN O=35:GOTO 11450
10450 IF M$="BMC" THEN O=44:GOTO 11450
10460 IF M$="BMI" THEN O=43:GOTO 11450
10470 IF M$="BMS" THEN O=45:GOTO 11450
10480 IF M$="BNE" THEN O=38:GOTO 11450
10490 IF M$="BPL" THEN O=42:GOTO 11450
10500 IF M$="BRA" THEN O=32:GOTO 11450
10510 IF M$="BRN" THEN O=33:GOTO 11450
10520 IF M$="BBC" THEN B=1:GOTO 11720
10530 IF M$="BBS" THEN B=0:GOTO 11720
10540 IF M$="BST" THEN B=16:GOTO 11610
10550 IF M$="BSR" THEN O=173:GOTO 11450
10560 IF M$="CLC" THEN O=152:GOTO 11780
10570 IF M$="CLI" THEN O=154:GOTO 11780
10580 IF M$="CLR" THEN B=63:GOTO 10990
10590 IF M$="CMP" THEN B=161:GOTO 11050
10600 IF M$="COM" THEN B=51:GOTO 10990
10610 IF M$="CPX" THEN B=163:GOTO 11050
10620 IF M$="DAT" THEN 12060
10630 IF M$="DEC" THEN B=58:GOTO10990
10640 IF M$="EOR" THEN B=168:GOTO11050
10650 IF M$="EQU" THEN 12160
10660 IF M$="INC" THEN B=60:GOTO10990
10670 IF M$="JMP" THEN B=172:GOTO11050
10680 IF M$="JSR" THEN B=173:GOTO11050
10690 IF M$="LDA" THEN B=166:GOTO11050
10700 IF M$="LDX" THEN B=174:GOTO11050
10710 IF M$="LSL" THEN B=56:GOTO10990
10720 IF M$="LSR" THEN B=52:GOTO10990
10730 IF M$="NEG" THEN B=48:GOTO10990
10740 IF M$="NOP" THEN O=157:GOTO11780
10750 IF M$="ORA" THEN B=170:GOTO11050
10760 IF M$="ORG" THEN 12090
10770 IF M$="ROL" THEN B=57:GOTO10990
10780 IF M$="ROR" THEN B=54:GOTO10990
10790 IF M$="RSP" THEN O=156:GOTO11780
10800 IF M$="RTI" THEN O=128:GOTO11780
10810 IF M$="RTS" THEN O=129:GOTO11780
10820 IF M$="SBC" THEN B=162:GOTO11050
10830 IF M$="SEC" THEN O=153:GOTO11780
10840 IF M$="SEI" THEN O=155:GOTO11780
10850 IF M$="STA" THEN B=167:GOTO11050
10860 IF M$="STX" THEN B=175:GOTO11050
10870 IF M$="SUB" THEN B=160:GOTO11050
10880 IF M$="SWI" THEN O=130:GOTO11780
10890 IF M$="TAX" THEN O=151:GOTO11780
10900 IF M$="TST" THEN B=61:GOTO10990
10910 IF M$="TXA" THEN O=159:GOTO11780
10920 PRINT"MNEMONIC ERROR IN LINE ";X:CLOSE4:END
10930 L$=MID$(S$,2,1):S$=RIGHT$(S$,(LEN(S$)-2))
10940 IF LEFT$(S$,1)=" " THEN 10970
10950 L$=L$+LEFT$(S$,1):GOSUB 12230
10960 GOTO 10940
10970 GOSUB 12230:K=K+1:L$(K)=L$
10980 A(K)=Q:RETURN
10990 T=1:M$=LEFT$(S$,1):GOSUB 12230
11000 IF M$=" " THEN M=0:GOTO11140
11010 IF M$="A" THEN M=1:GOTO 11100
11020 IF M$="X" THEN M=2:GOTO 11100
11030 IF M$="(" THEN M=3:GOTO 11120
11040 PRINT"ADRESS MODE ERROR IN LINE ";X:CLOSE4:END
11050 T=2:M$=LEFT$(S$,1):GOSUB 12230
11060 IF M$="@" THEN M=0:GOTO 11350
11070 IF M$=" " THEN M=2:GOTO 11140
11080 IF M$="(" THEN M=3:GOTO 11120
11090 GOTO 11040
11100 GOSUB 11800
11110 GOTO 10150
11120 M$=LEFT$(S$,1)
11130 IF M$=")" THEN 11210
11140 GOSUB 11910
11150 IF F=0 THEN 11250
11160 IF T=2 THEN 11300
11170 IFH>0THENPRINT"READ/MODEFY/WRITE TO PAGE ZERO ONLY - ERROR IN LINE ";X:CLOSE4:END
11180 GOSUB 11800
11190 GOSUB 11880
11200 GOTO 10150
11210 IF T=2 THEN M=5:GOTO 11230
11220 M=4
11230 GOSUB 11800
11240 GOTO 10150
11250 IF Z=2 THEN PRINT"UNDEFINED LABEL IN LINE ";X:CLOSE4:END
11260 IF T=1 THEN 11180
11270 GOSUB 11800
11280 GOSUB 11840
11290 GOTO 10150
11300 IF A(Y)>Q THEN 11270
11310 IF H>0 THEN 11270
11320 IF M=2 THEN M=1:GOTO 11340
11330 M=4
11340 GOTO 11180
11350 GOSUB 12230
11360 GOSUB 11380
11370 GOTO 11180
11380 M$=LEFT$(S$,1)
11390 IF ASC(M$)<71 AND ASC(M$)> 64 THEN L=(ASC(M$)-55)*16:GOTO 11410
11400 L=(ASC(M$)-48)*16
11410 M$=MID$(S$,2,1)
11420 IF ASC(M$)<71 AND ASC(M$)>64 THEN L=L+ASC(M$)-55:GOTO 11440
11430 L=L+ASC(M$)-48
11440 RETURN
11450 GOSUB 11810
11460 GOSUB 12230
11470 GOSUB 11910
11480 IF F=0 THEN 11560
11490 IF A(Y)>Q+1 THEN 11530
11500 IF (Q+1)-A(Y)>128 THEN PRINT"BRANCH OUT OF RANGE IN LINE ";X:CLOSE4:END
11510 L=256-((Q+1)-A(Y))
11520 GOTO 11580
11530 IF A(Y)-(Q+1)>127 THEN PRINT"BRANCH OUT OF RANGE IN LINE ";X:CLOSE4:END
11540 L=A(Y)-(Q+1)
11550 GOTO 11580
11560 IF Z=2 THEN PRINT"UNDEFINED LABEL IN LINE ";X-1:CLOSE4:END
11570 L=0
11580 IF O<16 THEN RETURN
11590 GOSUB 11880
11600 GOTO 10150
11610 M$=LEFT$(S$,1):GOSUB 12230
11620 IF VAL(M$)<0 OR VAL(M$)>7 THEN PRINT"BIT NUMBER ERROR IN LINE ";X:CLOSE4:END
11630 M=VAL(M$)
11640 GOSUB 12230:GOSUB 11910
11650 IF F=0 THEN PRINT"UNDEFINED LABEL IN LINE ";X:CLOSE4:END
11660 IF A(Y)>127THENPRINT"TARGET BYTE NOT IN RAM - ERROR IN LINE ";X:CLOSE4:END
11670 O=B+(2*M)
11680 GOSUB 11810
11690 IF B<16 THEN RETURN
11700 GOSUB 11880
11710 GOTO 10150
11720 GOSUB 11610
11730 J=L
11740 GOSUB 11470
11750 H=J
11760 GOSUB 11840
11770 GOTO 10150
11780 GOSUB 11810
11790 GOTO 10150
11800 O=B+(16*M)
11810 POKE(P+Q),O:Q=Q+1
11820 GOSUB 12300
11830 RETURN
11840 POKE(P+Q),H:Q=Q+1
11850 GOSUB 12350
11860 IF B=0 OR B=1 THEN L=L-1
11870 IF L<0 THEN L=0
11880 POKE(P+Q),L:Q=Q+1
11890 GOSUB 12400
11900 RETURN
11910 L$=""
11920 IF LEN(S$)=0 THEN 11960
11930 L$=L$+LEFT$(S$,1):GOSUB 12230
11940 IFRIGHT$(L$,1)=")"ORRIGHT$(L$,1)=" "THENL$=LEFT$(L$,(LEN(L$)-1)):GOTO11960
11950 GOTO 11920
11960 Y=0
11970 Y=Y+1
11980 IF Y>K THEN 12030
11990 IF L$=L$(Y) THEN 12020
12000 GOTO 11970
12010 F=0:H=255:L=255:RETURN
12020 F=1:H=INT(A(Y)/256):L=A(Y)-(H*256):RETURN
12030 IF Z=1 THEN 12010
12040 IF Y>C THEN 12010
12050 GOTO 11990
12060 GOSUB 12230
12070 GOSUB 11380
12080 GOSUB 11880:GOTO 10150
12090 GOSUB 12230
12100 GOSUB 11380
12110 H=L
12120 S$=RIGHT$(S$,(LEN(S$)-2))
12130 GOSUB 11380
12140 Q=L+(256*H)
12150 GOTO 10150
12160 GOSUB 12230
12170 GOSUB 11380
12180 A(K)=256*L
12190 S$=RIGHT$(S$,(LEN(S$)-2))
12200 GOSUB 11380
12210 A(K)=A(K)+L
12220 GOTO 10150
12230 S$=RIGHT$(S$,(LEN(S$)-1))
12240 RETURN
12250 IF Z<3 THEN RETURN
12260 R=Q:E=3
12270 GOSUB 12560
12280 PRINT#4,TAB(6) R$;
12290 RETURN
12300 IF Z<3 THEN RETURN
12310 R=O:E=2
12320 GOSUB 12560
12330 PRINT#4,TAB(11)R$;
12340 RETURN
12350 IF Z<3 THEN RETURN
12360 R=H:E=2
12370 GOSUB 12560
12380 PRINT#4,TAB(14)R$;
12390 RETURN
12400 IF Z<3 THEN RETURN
12410 R=L:E=2
12420 GOSUB 12560
12430 PRINT#4,TAB(17)R$;
12440 RETURN
12450 IF Z<3 THEN RETURN
12460 HP$=""
12470 IF LEFT$(P$,1)="*" THEN 12490
12480 GOTO 12530
12490 HP$=HP$+(LEFT$(P$,1))
12500 P$=RIGHT$(P$,(LEN(P$)-1))
12510 IF LEFT$(P$,1)<>" " THEN 12490
12520 PRINT#4,TAB(21)HP$;TAB(32)P$:GOTO 12540
12530 PRINT#4,TAB(33)P$
12540 :
12550 RETURN
12560 R$=""
12570 FOR Y=E TO 1 STEP-1
12580 I=INT(R/16^(Y-1))):R=R-(I*(16^(Y-1)))
12590 IF I>9 THEN I$=CHR$(I+55):GOTO 12610
12600 I$=CHR$(I+48)
12610 R$=R$+I$
12620 NEXT Y
12630 RETURN