Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
AC
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
\EDD\C5\CDE\C1
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
AFF
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
A\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
\n6670 REM ==RELOCATING ASSEMBLER=
\n6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
\n6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
\n6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
\n6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
\n6702 LET I=1
\n6704 LET T=28
\n6705 LET TT=256
\n6706 LET NL=118
\n6708 LET O=0
\n6710 LET NS=I
\n6720 LET NR=NS
\n6730 LET LL=48
\n6740 DIM N$(LL,8)
\n6750 DIM R$(LL+LL,9)
\n6760 DIM N(LL)
\n6770 DIM R(LL+LL)
\n6780 PRINT "START ADDR: ";
\n6790 INPUT Z
\n6795 PRINT Z
\n6800 LET ZZ=Z
\n6810 LET A=16508
\n6870 GOSUB 6930
\n6880 IF X$="(" THEN GOSUB 7050
\n6910 IF X$=")" THEN GOTO 7700
\n6920 GOTO 6870
\n6930 LET A=A+5
\n6940 IF 234=PEEK A THEN GOTO 7000
\n6950 LET A=A+I
\n6960 IF NL<>PEEK A THEN GOTO 6950
\n6970 IF NL<>PEEK (A+I) THEN GOTO 6930
\n6980 PRINT "NO CODE"
\n6985 IF Z=ZZ THEN STOP
\n6990 PRINT " END "")"""
\n6995 STOP
\n7000 LET A=A+I
\n7010 LET X$=CHR$ PEEK A
\n7020 IF X$=")" THEN RETURN
\n7030 IF X$<>"(" THEN GOTO 6960
\n7040 RETURN
\n7050 LET AA=A-5
\n7060 GOSUB 7180
\n7070 IF E=I THEN RETURN
\n7080 LET A=A+I
\n7090 LET Y=PEEK A
\n7100 IF Y<T OR Y>43 THEN GOTO 7150
\n7120 POKE Z,16*(X-T)+Y-T
\n7130 LET Z=Z+I
\n7140 GOTO 7060
\n7150 PRINT "-HEX ERROR"
\n7160 POKE A,Y+128
\n7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
\n7175 STOP
\n7180 LET E=O
\n7190 LET A=A+I
\n7200 LET X=PEEK A
\n7210 IF X=O THEN GOTO 7190
\n7220 IF X=NL THEN LET E=I
\n7230 LET X$=CHR$ X
\n7240 IF X$=")" THEN LET E=I
\n7250 IF E=I THEN RETURN
\n7260 IF X<T OR X>43 THEN GOTO 7290
\n7280 RETURN
\n7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
\n7310 GOSUB 7460
\n7330 LET N$(NS)=S$
\n7340 LET N(NS)=Z
\n7350 IF W>O THEN LET N(NS)=M
\n7360 LET NS=NS+I
\n7370 GOTO 7200
\n7380 GOSUB 7460
\n7400 LET R$(NR)=S$
\n7410 LET R(NR)=Z
\n7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
\n7430 LET NR=NR+I
\n7440 LET Z=Z+I
\n7450 GOTO 7200
\n7460 LET S$=X$
\n7480 LET M=O
\n7490 LET W=M
\n7500 LET A=A+I
\n7510 LET Q$=CHR$ PEEK A
\n7520 IF Q$=" " OR Q$>"Z" THEN RETURN
\n7540 IF Q$="=" THEN GOTO 7570
\n7550 LET S$=S$+Q$
\n7560 GOTO 7490
\n7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
\n7580 LET A=A+I
\n7590 LET X=PEEK A
\n7600 IF X=O AND W<=O THEN GOTO 7580
\n7610 IF X=NL THEN RETURN
\n7630 IF X=O THEN RETURN
\n7640 IF X<T OR X>43 THEN GOTO 7680
\n7650 LET M=16*M+X-T
\n7660 LET W=W+I
\n7670 IF M<65536 THEN GOTO 7580
\n7680 PRINT "-EQU ERROR"
\n7690 GOTO 7910
\n7700 LET W=O
\n7720 FOR J=I TO NR-I
\n7730 FOR K=I TO NS-I
\n7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
\n7750 NEXT K
\n7770 PRINT "UNDEFINED: ";R$(J,)
\n7780 LET W=W+I
\n7785 GOTO 7895
\n7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
\n7820 LET X=N(K)-R(J)-I
\n7830 IF X<128 AND X>-129 THEN GOTO 7880
\n7850 PRINT "REL JUMP RANGE ERROR"
\n7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
\n7862 FOR K=I TO NS-I
\n7864 IF R(J)<N(K) THEN GOTO 7868
\n7866 NEXT K
\n7868 PRINT "FOLLOWING ";N$(K-I)
\n7870 GOTO 7910
\n7880 IF X<O THEN LET X=X+TT
\n7890 POKE R(J),X
\n7895 NEXT J
\n7900 IF W=O THEN GOTO 7970
\n7910 PRINT "COMPILATION ABORTED"
\n7915 STOP
\n7920 LET NN=INT (N(K)/TT)
\n7930 POKE R(J),N(K)-NN*TT
\n7940 POKE R(J)+I,NN
\n7950 GOTO 7895
\n7970 PRINT "COMPILATION COMPLETED"
\n7980 PRINT Z-ZZ-48;" BYTES"
\n7990 PRINT "RELOCATOR ENTRY: ";Z-48
\n8010 PRINT " SYMBOL ADDR REL"
\n8020 FOR Q=I TO NS-I
\n8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
\n8040 NEXT Q
\n8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
\n8205 STOP
\n8995 REM == RELOCATOR SET
\n9000 LET ZX=Z
\n9005 FOR J=I TO NR-I
\n9010 IF R$(J,I)<>"$" THEN GOTO 9040
\n9015 LET NN=INT (R(J)/TT)
\n9020 POKE Z,R(J)-NN*TT
\n9025 POKE Z+I,NN
\n9030 LET Z=Z+I+I
\n9040 NEXT J
\n9050 POKE ZX-47,(Z-ZX)/2
\n9055 LET NN=INT (ZX/TT)
\n9060 POKE ZX-35,ZX-NN*TT
\n9065 POKE ZX-34,NN
\n9070 LET K=ZX-ZZ-48
\n9075 LET NN=INT (K/TT)
\n9080 POKE ZX-5,K-NN*TT
\n9085 POKE ZX-4,NN
\n9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"\F5\CD
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
F
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
A
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
E\CD\D9\CDA\EDB
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
AE\BE\FC\CD itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"E\CD itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"\F1
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
AE
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
F\EB\EDD
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
AB\EB\ED\B0
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
BE\C9\E5\A7\EDD\D5\EB
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
B\CD\AD\E1\D1\D5\ED\B0\D1
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
ABE\FE\C8\E5\D5\CD\F2\CD\C5
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
E\D1\D5\C5
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
A itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"C\E5\EB
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
B\CD\AD\EDB itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"C\E1\ED\B8\C1\D1\E1\ED\B0\DA\E5E\BE
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
\CF
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
FE\EA\BE\E1\CD\F2\EB\E8E
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
D itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
\ED\A1\EF\EA itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"FE\BE\E7\D1\C9E\A7
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
AB\ED\E5EE\E3\E5\EBE\EB\EB
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
B\E1\E3D\EB\E1\EB itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"\AC
Skip to content
Hexas, Basic*Olay
Symbolic hex assembler written in BASIC. Generates relocatable code.
Content
Source Code
1 REM \2A\3C\40\11\22\00\ED\52\44\4D\21\82\40\19\C5\CD\9E\09\C1\2A\7F\40\09\22\7F\40\2A\29\40\09\22\29\40\C9
2 REM SIRIUSWARE HEXAS*
3 REM COPYRIGHT 1983 D.B.WOOD
4 PRINT "BYTES NEEDED IN REM"
5 INPUT N
6 POKE 16445,INT (N/256)
7 POKE 16444,N-256*PEEK 16445
8 RAND USR 16514
9 FOR I=0 TO N-1
10 POKE 16514+I,22
11 NEXT I
12 REM ==END OF REM EXPANDER==
6670 REM ==RELOCATING ASSEMBLER=
6675 REM PLACE YOUR MACH. LANG. CODE IN FRONT OF THIS
6680 REM (3E 00 A7 2A 7B40 11 8240 ED52 E5 21 0000
6685 REM (5E 23 56 23 E3 E5 EB 4E 23 46 EB 09 EB 72 2B 73 E1 E3 3D 20 EB
6690 REM (E1 11 8240 19 EB 01 0000 EDB0 C9)
6702 LET I=1
6704 LET T=28
6705 LET TT=256
6706 LET NL=118
6708 LET O=0
6710 LET NS=I
6720 LET NR=NS
6730 LET LL=48
6740 DIM N$(LL,8)
6750 DIM R$(LL+LL,9)
6760 DIM N(LL)
6770 DIM R(LL+LL)
6780 PRINT "START ADDR: ";
6790 INPUT Z
6795 PRINT Z
6800 LET ZZ=Z
6810 LET A=16508
6870 GOSUB 6930
6880 IF X$="(" THEN GOSUB 7050
6910 IF X$=")" THEN GOTO 7700
6920 GOTO 6870
6930 LET A=A+5
6940 IF 234=PEEK A THEN GOTO 7000
6950 LET A=A+I
6960 IF NL<>PEEK A THEN GOTO 6950
6970 IF NL<>PEEK (A+I) THEN GOTO 6930
6980 PRINT "NO CODE"
6985 IF Z=ZZ THEN STOP
6990 PRINT " END "")"""
6995 STOP
7000 LET A=A+I
7010 LET X$=CHR$ PEEK A
7020 IF X$=")" THEN RETURN
7030 IF X$<>"(" THEN GOTO 6960
7040 RETURN
7050 LET AA=A-5
7060 GOSUB 7180
7070 IF E=I THEN RETURN
7080 LET A=A+I
7090 LET Y=PEEK A
7100 IF Y<T OR Y>43 THEN GOTO 7150
7120 POKE Z,16*(X-T)+Y-T
7130 LET Z=Z+I
7140 GOTO 7060
7150 PRINT "-HEX ERROR"
7160 POKE A,Y+128
7170 PRINT "AT LINE ";TT*PEEK AA+PEEK (AA+I)
7175 STOP
7180 LET E=O
7190 LET A=A+I
7200 LET X=PEEK A
7210 IF X=O THEN GOTO 7190
7220 IF X=NL THEN LET E=I
7230 LET X$=CHR$ X
7240 IF X$=")" THEN LET E=I
7250 IF E=I THEN RETURN
7260 IF X<T OR X>43 THEN GOTO 7290
7280 RETURN
7290 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7380
7310 GOSUB 7460
7330 LET N$(NS)=S$
7340 LET N(NS)=Z
7350 IF W>O THEN LET N(NS)=M
7360 LET NS=NS+I
7370 GOTO 7200
7380 GOSUB 7460
7400 LET R$(NR)=S$
7410 LET R(NR)=Z
7420 IF X$="$" OR X$="£" THEN LET Z=Z+I
7430 LET NR=NR+I
7440 LET Z=Z+I
7450 GOTO 7200
7460 LET S$=X$
7480 LET M=O
7490 LET W=M
7500 LET A=A+I
7510 LET Q$=CHR$ PEEK A
7520 IF Q$=" " OR Q$>"Z" THEN RETURN
7540 IF Q$="=" THEN GOTO 7570
7550 LET S$=S$+Q$
7560 GOTO 7490
7570 IF X$="+" OR X$="$" OR X$="£" THEN GOTO 7680
7580 LET A=A+I
7590 LET X=PEEK A
7600 IF X=O AND W<=O THEN GOTO 7580
7610 IF X=NL THEN RETURN
7630 IF X=O THEN RETURN
7640 IF X<T OR X>43 THEN GOTO 7680
7650 LET M=16*M+X-T
7660 LET W=W+I
7670 IF M<65536 THEN GOTO 7580
7680 PRINT "-EQU ERROR"
7690 GOTO 7910
7700 LET W=O
7720 FOR J=I TO NR-I
7730 FOR K=I TO NS-I
7740 IF N$(K)=R$(J,2 TO ) THEN GOTO 7800
7750 NEXT K
7770 PRINT "UNDEFINED: ";R$(J,)
7780 LET W=W+I
7785 GOTO 7895
7800 IF R$(J,I)="$" OR R$(J,I)="£" THEN GOTO 7920
7820 LET X=N(K)-R(J)-I
7830 IF X<128 AND X>-129 THEN GOTO 7880
7850 PRINT "REL JUMP RANGE ERROR"
7860 PRINT J;"TH REFERENCE. JUMP TO ";N$(K)
7862 FOR K=I TO NS-I
7864 IF R(J)<N(K) THEN GOTO 7868
7866 NEXT K
7868 PRINT "FOLLOWING ";N$(K-I)
7870 GOTO 7910
7880 IF X<O THEN LET X=X+TT
7890 POKE R(J),X
7895 NEXT J
7900 IF W=O THEN GOTO 7970
7910 PRINT "COMPILATION ABORTED"
7915 STOP
7920 LET NN=INT (N(K)/TT)
7930 POKE R(J),N(K)-NN*TT
7940 POKE R(J)+I,NN
7950 GOTO 7895
7970 PRINT "COMPILATION COMPLETED"
7980 PRINT Z-ZZ-48;" BYTES"
7990 PRINT "RELOCATOR ENTRY: ";Z-48
8010 PRINT " SYMBOL ADDR REL"
8020 FOR Q=I TO NS-I
8030 PRINT " ";N$(Q,);TAB 12;N(Q);TAB 22;N(Q)-ZZ
8040 NEXT Q
8200 PRINT "TYPE CONT FOR RELOCATOR SETUP"
8205 STOP
8995 REM == RELOCATOR SET
9000 LET ZX=Z
9005 FOR J=I TO NR-I
9010 IF R$(J,I)<>"$" THEN GOTO 9040
9015 LET NN=INT (R(J)/TT)
9020 POKE Z,R(J)-NN*TT
9025 POKE Z+I,NN
9030 LET Z=Z+I+I
9040 NEXT J
9050 POKE ZX-47,(Z-ZX)/2
9055 LET NN=INT (ZX/TT)
9060 POKE ZX-35,ZX-NN*TT
9065 POKE ZX-34,NN
9070 LET K=ZX-ZZ-48
9075 LET NN=INT (K/TT)
9080 POKE ZX-5,K-NN*TT
9085 POKE ZX-4,NN
9090 PRINT "TOTAL BYTES INCLUDING RELOCATIONDATA: ";Z-ZZ
1 REM \AF\18\01\37\F5\CD\23\0F\2A\29\40\11\05\00\19\22\16\40\7E\CD\D9\14\CD\8A\15\ED\43\7B\40\2A\16\40\3E\76\BE\23\20\FC\CD\01\41\22\3E\40\CD\01\41\F1\2A\3E\40\38\0F\EB\ED\52\44\4D\2A\7B\40\EB\ED\B0\2B\7E\12\C9\E5\A7\ED\52\44\4D\D5\EB\2B\CD\AD\09\E1\D1\D5\ED\B0\D1\2A\7B\40\7E\FE\76\C8\E5\D5\CD\F2\09\CD\C5\0E\D1\D5\C5\2A\1C\40\E5\EB\2B\CD\AD\09\ED\5B\1C\40\E1\ED\B8\C1\D1\E1\ED\B0\18\DA\E5\3E\76\BE\20\02\CF\0F\23\23\23\23\3E\EA\BE\28\07\E1\CD\F2\09\EB\18\E8\3E\0D\01\03\00\23\ED\A1\20\EF\EA\1F\41\3E\76\BE\20\E7\23\D1\C9\3E\03\A7\2A\7B\40\11\82\40\ED\52\E5\21\5E\41\5E\23\56\23\E3\E5\EB\4E\23\46\EB\09\EB\72\2B\73\E1\E3\3D\20\EB\E1\11\82\40\19\EB\01\AC\00\ED\B0\C9\A9\40\AF\40\24\41\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B\1B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172
People
No people associated with this content.
\ED\B0\C9\A9\AF itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-56686 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.11.3 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.11.2"B
2 REM COPYRIGHT 1982 D.B.WOOD
10 SAVE "BASIC*OLA%Y"
15 PRINT "ADDR:"
30 INPUT E
35 POKE 16508,INT (E/256)
40 POKE 16507,E-256*PEEK 16508
45 RAND USR 16686
50 PRINT "ENTRY POINTS"
55 PRINT " COPY ";E
60 PRINT "OVERLAY ";E+3
70 PRINT "NEXT AVAIL ADDR ";E+172