00000000: 00 20 54 4F 20 21 41 0D 20 57 45 47 20 5B 41 53 |. TO !A. WEG [AS|
00000010: 53 45 4D 42 4C 45 45 52 20 45 52 4E 53 20 53 59 |SEMBLEER ERNS SY|
00000020: 4D 42 4F 4C 53 20 53 59 4D 53 2E 4C 20 41 53 53 |MBOLS SYMS.L ASS|
00000030: 49 47 4E 20 52 45 4C 49 4E 53 3F 20 49 4E 53 3F |IGN RELINS? INS?|
00000040: 20 49 4D 50 49 4E 53 3F 20 41 4D 4F 44 45 31 20 | IMPINS? AMODE1 |
00000050: 4C 4F 4F 4B 55 50 20 48 49 38 20 4C 4F 38 20 49 |LOOKUP HI8 LO8 I|
00000060: 4E 53 4C 45 4E 20 4F 50 43 4F 44 45 20 49 4E 44 |NSLEN OPCODE IND|
00000070: 45 4E 54 20 41 4D 4F 44 45 20 53 54 4F 52 45 32 |ENT AMODE STORE2|
00000080: 20 45 4D 49 54 20 4C 41 42 45 4C 3F 20 53 54 4F | EMIT LABEL? STO|
00000090: 52 45 20 53 54 4F 52 45 31 20 4F 50 45 52 41 4E |RE STORE1 OPERAN|
000000A0: 44 20 52 45 4C 4F 50 45 52 20 4F 50 2E 4C 4F 43 |D RELOPER OP.LOC|
000000B0: 20 45 52 52 4F 52 20 24 31 20 24 20 21 41 5D 0D | ERROR $1 $ !A].|
000000C0: 20 57 45 47 20 4E 41 4D 45 4E 0D 45 4E 44 0D 0D | WEG NAMEN.END..|
000000D0: 54 4F 20 41 53 53 45 4D 42 4C 45 45 52 20 3A 43 |TO ASSEMBLEER :C|
000000E0: 4F 44 45 0D 20 41 4C 53 20 57 41 41 52 44 45 3F |ODE. ALS WAARDE?|
000000F0: 20 22 4C 41 42 45 4C 53 20 45 52 4E 53 20 3A 4C | "LABELS ERNS :L|
00000100: 41 42 45 4C 53 0D 20 4D 41 41 4B 20 22 4C 41 42 |ABELS. MAAK "LAB|
00000110: 45 4C 53 20 5B 5D 0D 20 53 43 48 52 49 4A 56 45 |ELS []. SCHRIJVE|
00000120: 4E 20 50 52 20 3A 43 4F 44 45 0D 20 4D 41 41 4B |N PR :CODE. MAAK|
00000130: 20 22 43 4F 44 45 20 4D 45 20 54 45 4B 53 54 20 | "CODE ME TEKST |
00000140: 3A 43 4F 44 45 0D 20 53 59 4D 42 4F 4C 53 20 3A |:CODE. SYMBOLS :|
00000150: 43 4F 44 45 20 3A 4F 52 47 0D 20 53 54 4F 52 45 |CODE :ORG. STORE|
00000160: 20 3A 43 4F 44 45 20 3A 4F 52 47 0D 45 4E 44 0D | :CODE :ORG.END.|
00000170: 0D 54 4F 20 45 52 4E 53 20 3A 4E 41 4D 45 4E 0D |.TO ERNS :NAMEN.|
00000180: 20 41 4C 53 20 3A 4E 41 4D 45 4E 20 3D 20 5B 5D | ALS :NAMEN = []|
00000190: 20 53 54 4F 50 0D 20 57 45 47 4E 41 41 4D 20 45 | STOP. WEGNAAM E|
000001A0: 45 52 53 54 45 20 3A 4E 41 4D 45 4E 0D 20 45 52 |ERSTE :NAMEN. ER|
000001B0: 4E 53 20 4D 45 20 3A 4E 41 4D 45 4E 0D 45 4E 44 |NS ME :NAMEN.END|
000001C0: 0D 0D 54 4F 20 53 59 4D 42 4F 4C 53 20 3A 43 4F |..TO SYMBOLS :CO|
000001D0: 44 45 20 3A 44 4F 54 0D 20 41 4C 53 20 3A 43 4F |DE :DOT. ALS :CO|
000001E0: 44 45 20 3D 20 5B 5D 20 4D 41 41 4B 20 22 45 4E |DE = [] MAAK "EN|
000001F0: 44 20 3A 44 4F 54 20 2D 20 31 20 53 54 4F 50 0D |D :DOT - 1 STOP.|
00000200: 20 53 59 4D 42 4F 4C 53 20 4D 45 20 3A 43 4F 44 | SYMBOLS ME :COD|
00000210: 45 20 3A 44 4F 54 20 2B 20 28 20 53 59 4D 53 2E |E :DOT + ( SYMS.|
00000220: 4C 20 45 45 52 53 54 45 20 3A 43 4F 44 45 20 45 |L EERSTE :CODE E|
00000230: 45 52 53 54 45 20 45 45 52 53 54 45 20 3A 43 4F |ERSTE EERSTE :CO|
00000240: 44 45 20 29 0D 45 4E 44 0D 0D 54 4F 20 53 59 4D |DE ).END..TO SYM|
00000250: 53 2E 4C 20 3A 52 45 47 45 4C 20 3A 54 4F 4B 45 |S.L :REGEL :TOKE|
00000260: 4E 0D 20 41 4C 53 20 49 4E 53 3F 20 3A 54 4F 4B |N. ALS INS? :TOK|
00000270: 45 4E 20 52 45 53 20 49 4E 53 4C 45 4E 20 41 4D |EN RES INSLEN AM|
00000280: 4F 44 45 20 3A 54 4F 4B 45 4E 20 4D 45 20 3A 52 |ODE :TOKEN ME :R|
00000290: 45 47 45 4C 0D 20 41 4C 53 20 4C 41 42 45 4C 3F |EGEL. ALS LABEL?|
000002A0: 20 3A 54 4F 4B 45 4E 20 41 53 53 49 47 4E 20 3A | :TOKEN ASSIGN :|
000002B0: 54 4F 4B 45 4E 20 3A 44 4F 54 20 52 45 53 20 53 |TOKEN :DOT RES S|
000002C0: 59 4D 53 2E 4C 20 4D 45 20 3A 52 45 47 45 4C 20 |YMS.L ME :REGEL |
000002D0: 45 45 52 53 54 45 20 4D 45 20 3A 52 45 47 45 4C |EERSTE ME :REGEL|
000002E0: 0D 20 41 4C 53 20 4C 49 4A 53 54 3F 20 3A 54 4F |. ALS LIJST? :TO|
000002F0: 4B 45 4E 20 52 55 4E 20 3A 54 4F 4B 45 4E 20 52 |KEN RUN :TOKEN R|
00000300: 45 53 20 30 0D 20 41 4C 53 20 47 45 54 41 4C 3F |ES 0. ALS GETAL?|
00000310: 20 3A 54 4F 4B 45 4E 20 52 45 53 20 31 0D 20 45 | :TOKEN RES 1. E|
00000320: 52 52 4F 52 20 3A 54 4F 4B 45 4E 20 5B 47 45 45 |RROR :TOKEN [GEE|
00000330: 4E 20 49 4E 53 54 52 55 4B 54 49 45 5D 0D 45 4E |N INSTRUKTIE].EN|
00000340: 44 0D 0D 54 4F 20 41 53 53 49 47 4E 20 3A 4C 41 |D..TO ASSIGN :LA|
00000350: 42 45 4C 20 3A 44 49 4E 47 0D 20 4D 41 41 4B 20 |BEL :DING. MAAK |
00000360: 22 4C 41 42 45 4C 20 4D 4C 20 3A 4C 41 42 45 4C |"LABEL ML :LABEL|
00000370: 0D 20 41 4C 53 20 57 41 41 52 44 45 3F 20 3A 4C |. ALS WAARDE? :L|
00000380: 41 42 45 4C 20 45 52 52 4F 52 20 3A 4C 41 42 45 |ABEL ERROR :LABE|
00000390: 4C 20 5B 41 4C 20 47 45 42 52 55 49 4B 54 5D 0D |L [AL GEBRUIKT].|
000003A0: 20 4D 41 41 4B 20 3A 4C 41 42 45 4C 20 3A 44 4F | MAAK :LABEL :DO|
000003B0: 54 0D 20 4D 41 41 4B 20 22 4C 41 42 45 4C 53 20 |T. MAAK "LABELS |
000003C0: 5A 45 54 56 20 3A 4C 41 42 45 4C 20 3A 4C 41 42 |ZETV :LABEL :LAB|
000003D0: 45 4C 53 0D 45 4E 44 0D 0D 54 4F 20 49 4E 53 3F |ELS.END..TO INS?|
000003E0: 20 3A 54 4F 4B 45 4E 0D 20 41 4C 53 20 57 41 41 | :TOKEN. ALS WAA|
000003F0: 52 44 45 3F 20 3A 54 4F 4B 45 4E 20 52 45 53 20 |RDE? :TOKEN RES |
00000400: 4C 49 4A 53 54 3F 20 57 41 41 52 44 45 20 3A 54 |LIJST? WAARDE :T|
00000410: 4F 4B 45 4E 0D 20 52 45 53 20 22 4E 49 45 54 57 |OKEN. RES "NIETW|
00000420: 0D 45 4E 44 0D 0D 54 4F 20 4C 4F 4F 4B 55 50 20 |.END..TO LOOKUP |
00000430: 3A 44 49 4E 47 20 3A 50 4C 41 41 54 53 0D 20 41 |:DING :PLAATS. A|
00000440: 4C 53 20 3A 50 4C 41 41 54 53 20 3D 20 5B 5D 20 |LS :PLAATS = [] |
00000450: 45 52 52 4F 52 20 3A 44 49 4E 47 20 5B 56 45 52 |ERROR :DING [VER|
00000460: 4B 45 45 52 44 45 20 4D 4F 44 45 5D 0D 20 41 4C |KEERDE MODE]. AL|
00000470: 53 20 3A 44 49 4E 47 20 3D 20 45 45 52 53 54 45 |S :DING = EERSTE|
00000480: 20 3A 50 4C 41 41 54 53 20 52 45 53 20 45 45 52 | :PLAATS RES EER|
00000490: 53 54 45 20 4D 45 20 3A 50 4C 41 41 54 53 0D 20 |STE ME :PLAATS. |
000004A0: 52 45 53 20 4C 4F 4F 4B 55 50 20 3A 44 49 4E 47 |RES LOOKUP :DING|
000004B0: 20 4D 45 20 4D 45 20 3A 50 4C 41 41 54 53 0D 45 | ME ME :PLAATS.E|
000004C0: 4E 44 0D 0D 54 4F 20 41 4D 4F 44 45 31 20 3A 56 |ND..TO AMODE1 :V|
000004D0: 44 45 45 4C 20 3A 41 44 45 45 4C 0D 20 41 4C 53 |DEEL :ADEEL. ALS|
000004E0: 20 3A 56 44 45 45 4C 20 3D 20 22 23 20 52 45 53 | :VDEEL = "# RES|
000004F0: 20 4C 4F 4F 4B 55 50 20 4D 45 20 3A 41 44 45 45 | LOOKUP ME :ADEE|
00000500: 4C 20 3A 49 4D 4D 53 0D 20 41 4C 53 20 3A 56 44 |L :IMMS. ALS :VD|
00000510: 45 45 4C 20 3D 20 22 21 20 52 45 53 20 4C 4F 4F |EEL = "! RES LOO|
00000520: 4B 55 50 20 4D 45 20 3A 41 44 45 45 4C 20 3A 5A |KUP ME :ADEEL :Z|
00000530: 50 53 0D 20 41 4C 53 20 3A 56 44 45 45 4C 20 3D |PS. ALS :VDEEL =|
00000540: 20 22 28 20 52 45 53 20 4C 4F 4F 4B 55 50 20 4D | "( RES LOOKUP M|
00000550: 45 20 3A 41 44 45 45 4C 20 3A 49 4E 44 49 52 53 |E :ADEEL :INDIRS|
00000560: 0D 20 52 45 53 20 4C 4F 4F 4B 55 50 20 3A 41 44 |. RES LOOKUP :AD|
00000570: 45 45 4C 20 3A 49 4E 44 45 58 45 53 0D 45 4E 44 |EEL :INDEXES.END|
00000580: 0D 0D 54 4F 20 49 4D 50 49 4E 53 3F 20 3A 54 4F |..TO IMPINS? :TO|
00000590: 4B 45 4E 0D 20 41 4C 53 20 49 4E 53 3F 20 3A 54 |KEN. ALS INS? :T|
000005A0: 4F 4B 45 4E 20 52 45 53 20 22 49 4D 50 20 3D 20 |OKEN RES "IMP = |
000005B0: 45 45 52 53 54 45 20 57 41 41 52 44 45 20 3A 54 |EERSTE WAARDE :T|
000005C0: 4F 4B 45 4E 0D 20 52 45 53 20 22 4E 49 45 54 57 |OKEN. RES "NIETW|
000005D0: 0D 45 4E 44 0D 0D 54 4F 20 52 45 4C 49 4E 53 3F |.END..TO RELINS?|
000005E0: 20 3A 54 4F 4B 45 4E 0D 20 41 4C 53 20 49 4E 53 | :TOKEN. ALS INS|
000005F0: 3F 20 3A 54 4F 4B 45 4E 20 52 45 53 20 22 52 45 |? :TOKEN RES "RE|
00000600: 4C 20 3D 20 45 45 52 53 54 45 20 57 41 41 52 44 |L = EERSTE WAARD|
00000610: 45 20 3A 54 4F 4B 45 4E 0D 20 52 45 53 20 22 4E |E :TOKEN. RES "N|
00000620: 49 45 54 57 0D 45 4E 44 0D 0D 54 4F 20 48 49 38 |IETW.END..TO HI8|
00000630: 20 3A 4E 0D 20 52 45 53 20 51 55 4F 54 49 45 4E | :N. RES QUOTIEN|
00000640: 54 20 3A 4E 20 32 35 36 0D 45 4E 44 0D 0D 54 4F |T :N 256.END..TO|
00000650: 20 4C 4F 38 20 3A 4E 0D 20 52 45 53 20 42 49 54 | LO8 :N. RES BIT|
00000660: 41 4E 44 20 3A 4E 20 32 35 35 0D 45 4E 44 0D 0D |AND :N 255.END..|
00000670: 54 4F 20 49 4E 53 4C 45 4E 20 3A 4D 4F 44 45 0D |TO INSLEN :MODE.|
00000680: 20 52 45 53 20 45 45 52 53 54 45 20 57 41 41 52 | RES EERSTE WAAR|
00000690: 44 45 20 3A 4D 4F 44 45 0D 45 4E 44 0D 0D 54 4F |DE :MODE.END..TO|
000006A0: 20 4F 50 43 4F 44 45 20 3A 49 4E 53 20 3A 4D 4F | OPCODE :INS :MO|
000006B0: 44 45 0D 20 52 45 53 20 4C 4F 4F 4B 55 50 20 3A |DE. RES LOOKUP :|
000006C0: 4D 4F 44 45 20 57 41 41 52 44 45 20 3A 49 4E 53 |MODE WAARDE :INS|
000006D0: 0D 45 4E 44 0D 0D 54 4F 20 49 4E 44 45 4E 54 20 |.END..TO INDENT |
000006E0: 3A 53 50 41 54 49 45 53 0D 20 41 4C 53 20 3A 53 |:SPATIES. ALS :S|
000006F0: 50 41 54 49 45 53 20 3C 20 30 20 50 52 49 4E 54 |PATIES < 0 PRINT|
00000700: 31 20 22 27 20 27 20 53 54 4F 50 0D 20 48 45 52 |1 "' ' STOP. HER|
00000710: 48 41 41 4C 20 3A 53 50 41 54 49 45 53 20 5B 50 |HAAL :SPATIES [P|
00000720: 52 49 4E 54 31 20 22 27 20 27 5D 0D 45 4E 44 0D |RINT1 "' '].END.|
00000730: 0D 54 4F 20 41 4D 4F 44 45 20 3A 54 4F 4B 45 4E |.TO AMODE :TOKEN|
00000740: 20 3A 41 52 47 53 0D 20 41 4C 53 20 52 45 4C 49 | :ARGS. ALS RELI|
00000750: 4E 53 3F 20 3A 54 4F 4B 45 4E 20 52 45 53 20 22 |NS? :TOKEN RES "|
00000760: 52 45 4C 0D 20 41 4C 53 20 49 4D 50 49 4E 53 3F |REL. ALS IMPINS?|
00000770: 20 3A 54 4F 4B 45 4E 20 52 45 53 20 22 49 4D 50 | :TOKEN RES "IMP|
00000780: 0D 20 41 4C 53 20 3A 41 52 47 53 20 3D 20 5B 5D |. ALS :ARGS = []|
00000790: 20 52 45 53 20 22 49 4D 50 0D 20 41 4C 53 20 3A | RES "IMP. ALS :|
000007A0: 41 52 47 53 20 3D 20 5B 41 5D 20 52 45 53 20 22 |ARGS = [A] RES "|
000007B0: 41 43 43 0D 20 41 4C 53 20 4D 45 20 3A 41 52 47 |ACC. ALS ME :ARG|
000007C0: 53 20 3D 20 5B 5D 20 52 45 53 20 22 41 42 53 0D |S = [] RES "ABS.|
000007D0: 20 52 45 53 20 41 4D 4F 44 45 31 20 45 45 52 53 | RES AMODE1 EERS|
000007E0: 54 45 20 3A 41 52 47 53 20 4D 45 20 3A 41 52 47 |TE :ARGS ME :ARG|
000007F0: 53 0D 45 4E 44 0D 0D 54 4F 20 53 54 4F 52 45 32 |S.END..TO STORE2|
00000800: 20 3A 52 45 47 45 4C 20 3A 4D 4F 44 45 0D 20 4C | :REGEL :MODE. L|
00000810: 4F 4B 41 41 4C 20 22 42 59 54 45 20 4C 4F 4B 41 |OKAAL "BYTE LOKA|
00000820: 41 4C 20 22 4C 45 4E 0D 20 4D 41 41 4B 20 22 42 |AL "LEN. MAAK "B|
00000830: 59 54 45 20 4F 50 43 4F 44 45 20 45 45 52 53 54 |YTE OPCODE EERST|
00000840: 45 20 3A 52 45 47 45 4C 20 3A 4D 4F 44 45 0D 20 |E :REGEL :MODE. |
00000850: 4D 41 41 4B 20 22 4C 45 4E 20 49 4E 53 4C 45 4E |MAAK "LEN INSLEN|
00000860: 20 3A 4D 4F 44 45 0D 20 45 4D 49 54 20 3A 44 4F | :MODE. EMIT :DO|
00000870: 54 20 3A 42 59 54 45 0D 20 41 4C 53 20 3A 4C 45 |T :BYTE. ALS :LE|
00000880: 4E 20 3D 20 31 20 52 45 53 20 3A 4C 45 4E 0D 20 |N = 1 RES :LEN. |
00000890: 4D 41 41 4B 20 22 42 59 54 45 20 4F 50 45 52 41 |MAAK "BYTE OPERA|
000008A0: 4E 44 20 3A 4D 4F 44 45 20 4D 45 20 3A 52 45 47 |ND :MODE ME :REG|
000008B0: 45 4C 0D 20 41 4C 53 20 3A 4C 45 4E 20 3D 20 32 |EL. ALS :LEN = 2|
000008C0: 20 45 4D 49 54 20 3A 44 4F 54 20 2B 20 31 20 3A | EMIT :DOT + 1 :|
000008D0: 42 59 54 45 20 52 45 53 20 3A 4C 45 4E 0D 20 45 |BYTE RES :LEN. E|
000008E0: 4D 49 54 20 3A 44 4F 54 20 2B 20 31 20 4C 4F 38 |MIT :DOT + 1 LO8|
000008F0: 20 3A 42 59 54 45 0D 20 45 4D 49 54 20 3A 44 4F | :BYTE. EMIT :DO|
00000900: 54 20 2B 20 32 20 48 49 38 20 3A 42 59 54 45 0D |T + 2 HI8 :BYTE.|
00000910: 20 52 45 53 20 3A 4C 45 4E 0D 45 4E 44 0D 0D 54 | RES :LEN.END..T|
00000920: 4F 20 45 4D 49 54 20 3A 44 4F 54 20 3A 42 59 54 |O EMIT :DOT :BYT|
00000930: 45 0D 20 49 4E 44 45 4E 54 20 32 39 20 2D 20 45 |E. INDENT 29 - E|
00000940: 45 52 53 54 45 20 43 55 52 53 4F 52 50 4F 53 0D |ERSTE CURSORPOS.|
00000950: 20 28 20 50 52 49 4E 54 31 20 3A 44 4F 54 20 22 | ( PRINT1 :DOT "|
00000960: 3D 20 3A 42 59 54 45 20 29 0D 20 50 52 49 4E 54 |= :BYTE ). PRINT|
00000970: 20 5B 5D 0D 20 2E 44 45 50 4F 53 49 54 20 3A 44 | []. .DEPOSIT :D|
00000980: 4F 54 20 3A 42 59 54 45 0D 45 4E 44 0D 0D 54 4F |OT :BYTE.END..TO|
00000990: 20 4C 41 42 45 4C 3F 20 3A 54 4F 4B 45 4E 0D 20 | LABEL? :TOKEN. |
000009A0: 52 45 53 20 22 3A 20 3D 20 4C 41 41 54 53 54 45 |RES ": = LAATSTE|
000009B0: 20 3A 54 4F 4B 45 4E 0D 45 4E 44 0D 0D 54 4F 20 | :TOKEN.END..TO |
000009C0: 53 54 4F 52 45 20 3A 43 4F 44 45 20 3A 44 4F 54 |STORE :CODE :DOT|
000009D0: 0D 20 41 4C 53 20 3A 43 4F 44 45 20 3D 20 5B 5D |. ALS :CODE = []|
000009E0: 20 53 54 4F 50 0D 20 53 54 4F 52 45 31 20 45 45 | STOP. STORE1 EE|
000009F0: 52 53 54 45 20 3A 43 4F 44 45 20 45 45 52 53 54 |RSTE :CODE EERST|
00000A00: 45 20 45 45 52 53 54 45 20 3A 43 4F 44 45 0D 45 |E EERSTE :CODE.E|
00000A10: 4E 44 0D 0D 54 4F 20 53 54 4F 52 45 31 20 3A 52 |ND..TO STORE1 :R|
00000A20: 45 47 45 4C 20 3A 54 4F 4B 45 4E 0D 20 50 52 49 |EGEL :TOKEN. PRI|
00000A30: 4E 54 31 20 3A 52 45 47 45 4C 0D 20 41 4C 53 20 |NT1 :REGEL. ALS |
00000A40: 4C 49 4A 53 54 3F 20 3A 54 4F 4B 45 4E 20 50 52 |LIJST? :TOKEN PR|
00000A50: 49 4E 54 20 5B 5D 20 53 54 4F 52 45 20 4D 45 20 |INT [] STORE ME |
00000A60: 3A 43 4F 44 45 20 3A 44 4F 54 20 53 54 4F 50 0D |:CODE :DOT STOP.|
00000A70: 20 41 4C 53 20 4C 41 42 45 4C 3F 20 3A 54 4F 4B | ALS LABEL? :TOK|
00000A80: 45 4E 20 4D 41 41 4B 20 22 52 45 47 45 4C 20 4D |EN MAAK "REGEL M|
00000A90: 45 20 3A 52 45 47 45 4C 20 4D 41 41 4B 20 22 54 |E :REGEL MAAK "T|
00000AA0: 4F 4B 45 4E 20 45 45 52 53 54 45 20 3A 52 45 47 |OKEN EERSTE :REG|
00000AB0: 45 4C 0D 20 41 4C 53 20 47 45 54 41 4C 3F 20 3A |EL. ALS GETAL? :|
00000AC0: 54 4F 4B 45 4E 20 45 4D 49 54 20 3A 44 4F 54 20 |TOKEN EMIT :DOT |
00000AD0: 3A 54 4F 4B 45 4E 20 53 54 4F 52 45 20 4D 45 20 |:TOKEN STORE ME |
00000AE0: 3A 43 4F 44 45 20 3A 44 4F 54 20 2B 20 31 20 53 |:CODE :DOT + 1 S|
00000AF0: 54 4F 50 0D 20 53 54 4F 52 45 20 4D 45 20 3A 43 |TOP. STORE ME :C|
00000B00: 4F 44 45 20 3A 44 4F 54 20 2B 20 28 20 53 54 4F |ODE :DOT + ( STO|
00000B10: 52 45 32 20 3A 52 45 47 45 4C 20 28 20 41 4D 4F |RE2 :REGEL ( AMO|
00000B20: 44 45 20 3A 54 4F 4B 45 4E 20 4D 45 20 3A 52 45 |DE :TOKEN ME :RE|
00000B30: 47 45 4C 20 29 20 29 0D 45 4E 44 0D 0D 54 4F 20 |GEL ) ).END..TO |
00000B40: 4F 50 45 52 41 4E 44 20 3A 4D 4F 44 45 20 3A 41 |OPERAND :MODE :A|
00000B50: 52 47 53 0D 20 41 4C 53 20 3A 4D 4F 44 45 20 3D |RGS. ALS :MODE =|
00000B60: 20 22 52 45 4C 20 52 45 53 20 52 45 4C 4F 50 45 | "REL RES RELOPE|
00000B70: 52 0D 20 4D 41 41 4B 20 22 41 52 47 53 20 45 4C |R. MAAK "ARGS EL|
00000B80: 45 4D 45 4E 54 20 28 20 4F 50 2E 4C 4F 43 20 3A |EMENT ( OP.LOC :|
00000B90: 4D 4F 44 45 20 29 20 3A 41 52 47 53 0D 20 41 4C |MODE ) :ARGS. AL|
00000BA0: 53 20 4C 49 4A 53 54 3F 20 3A 41 52 47 53 20 52 |S LIJST? :ARGS R|
00000BB0: 45 53 20 52 55 4E 20 3A 41 52 47 53 0D 20 41 4C |ES RUN :ARGS. AL|
00000BC0: 53 20 47 45 54 41 4C 3F 20 3A 41 52 47 53 20 52 |S GETAL? :ARGS R|
00000BD0: 45 53 20 3A 41 52 47 53 0D 20 41 4C 53 20 45 45 |ES :ARGS. ALS EE|
00000BE0: 52 53 54 45 20 3A 41 52 47 53 20 3D 20 22 22 20 |RSTE :ARGS = "" |
00000BF0: 52 45 53 20 41 53 43 49 49 20 4D 45 20 3A 41 52 |RES ASCII ME :AR|
00000C00: 47 53 0D 20 41 4C 53 20 57 41 41 52 44 45 3F 20 |GS. ALS WAARDE? |
00000C10: 3A 41 52 47 53 20 52 45 53 20 57 41 41 52 44 45 |:ARGS RES WAARDE|
00000C20: 20 3A 41 52 47 53 0D 20 45 52 52 4F 52 20 3A 41 | :ARGS. ERROR :A|
00000C30: 52 47 53 20 5B 47 45 45 4E 20 4C 41 42 45 4C 5D |RGS [GEEN LABEL]|
00000C40: 0D 45 4E 44 0D 0D 54 4F 20 52 45 4C 4F 50 45 52 |.END..TO RELOPER|
00000C50: 0D 20 4D 41 41 4B 20 22 41 52 47 53 20 28 20 4F |. MAAK "ARGS ( O|
00000C60: 50 45 52 41 4E 44 20 22 41 42 53 20 3A 41 52 47 |PERAND "ABS :ARG|
00000C70: 53 20 29 20 2D 20 3A 44 4F 54 20 2D 20 32 0D 20 |S ) - :DOT - 2. |
00000C80: 41 4C 53 20 3A 41 52 47 53 20 3C 20 30 20 52 45 |ALS :ARGS < 0 RE|
00000C90: 53 20 32 35 36 20 2B 20 3A 41 52 47 53 20 41 4E |S 256 + :ARGS AN|
00000CA0: 44 45 52 53 20 52 45 53 20 3A 41 52 47 53 0D 45 |DERS RES :ARGS.E|
00000CB0: 4E 44 0D 0D 54 4F 20 4F 50 2E 4C 4F 43 20 3A 4D |ND..TO OP.LOC :M|
00000CC0: 4F 44 45 0D 20 52 45 53 20 45 45 52 53 54 45 20 |ODE. RES EERSTE |
00000CD0: 4D 45 20 57 41 41 52 44 45 20 3A 4D 4F 44 45 0D |ME WAARDE :MODE.|
00000CE0: 45 4E 44 0D 0D 54 4F 20 45 52 52 4F 52 20 3A 41 |END..TO ERROR :A|
00000CF0: 20 3A 42 0D 20 28 20 50 52 49 4E 54 20 5B 49 4E | :B. ( PRINT [IN|
00000D00: 20 52 45 47 45 4C 5D 20 3A 52 45 47 45 4C 20 29 | REGEL] :REGEL )|
00000D10: 0D 20 28 20 50 52 49 4E 54 20 3A 41 20 3A 42 20 |. ( PRINT :A :B |
00000D20: 29 0D 20 41 46 47 45 4C 4F 50 45 4E 0D 45 4E 44 |). AFGELOPEN.END|
00000D30: 0D 0D 54 4F 20 24 31 20 3A 57 4F 4F 52 44 20 3A |..TO $1 :WOORD :|
00000D40: 56 41 4C 0D 20 41 4C 53 20 3A 57 4F 4F 52 44 20 |VAL. ALS :WOORD |
00000D50: 3D 20 22 20 52 45 53 20 3A 56 41 4C 0D 20 41 4C |= " RES :VAL. AL|
00000D60: 53 20 47 45 54 41 4C 3F 20 45 45 52 53 54 45 20 |S GETAL? EERSTE |
00000D70: 3A 57 4F 4F 52 44 20 52 45 53 20 24 31 20 4D 45 |:WOORD RES $1 ME|
00000D80: 20 3A 57 4F 4F 52 44 20 3A 56 41 4C 20 2A 20 3A | :WOORD :VAL * :|
00000D90: 24 42 41 53 45 20 2B 20 45 45 52 53 54 45 20 3A |$BASE + EERSTE :|
00000DA0: 57 4F 4F 52 44 0D 20 4C 4F 4B 41 41 4C 20 22 44 |WOORD. LOKAAL "D|
00000DB0: 49 47 49 54 0D 20 4D 41 41 4B 20 22 44 49 47 49 |IGIT. MAAK "DIGI|
00000DC0: 54 20 28 20 41 53 43 49 49 20 45 45 52 53 54 45 |T ( ASCII EERSTE|
00000DD0: 20 3A 57 4F 4F 52 44 20 29 20 2D 20 35 35 0D 20 | :WOORD ) - 55. |
00000DE0: 41 4C 53 20 45 45 4E 56 41 4E 20 3A 44 49 47 49 |ALS EENVAN :DIGI|
00000DF0: 54 20 3C 20 30 20 3A 44 49 47 49 54 20 2D 20 31 |T < 0 :DIGIT - 1|
00000E00: 20 3E 20 3A 24 42 41 53 45 20 45 52 52 4F 52 20 | > :$BASE ERROR |
00000E10: 45 45 52 53 54 45 20 3A 57 4F 4F 52 44 20 5B 47 |EERSTE :WOORD [G|
00000E20: 45 45 4E 20 47 45 54 41 4C 5D 0D 20 52 45 53 20 |EEN GETAL]. RES |
00000E30: 24 31 20 4D 45 20 3A 57 4F 4F 52 44 20 3A 56 41 |$1 ME :WOORD :VA|
00000E40: 4C 20 2A 20 3A 24 42 41 53 45 20 2B 20 3A 44 49 |L * :$BASE + :DI|
00000E50: 47 49 54 0D 45 4E 44 0D 0D 54 4F 20 24 20 3A 57 |GIT.END..TO $ :W|
00000E60: 4F 4F 52 44 0D 20 52 45 53 20 24 31 20 3A 57 4F |OORD. RES $1 :WO|
00000E70: 4F 52 44 20 30 0D 45 4E 44 0D 0D 54 4F 20 5A 45 |ORD 0.END..TO ZE|
00000E80: 54 4F 50 0D 20 4D 41 41 4B 20 22 24 42 41 53 45 |TOP. MAAK "$BASE|
00000E90: 20 31 36 0D 20 4C 41 41 44 20 22 41 4D 4F 44 45 | 16. LAAD "AMODE|
00000EA0: 53 0D 20 4C 41 41 44 20 22 4F 50 43 4F 44 45 53 |S. LAAD "OPCODES|
00000EB0: 0D 20 4D 41 41 4B 20 22 4F 52 47 20 24 20 22 43 |. MAAK "ORG $ "C|
00000EC0: 34 30 0D 20 4C 41 41 44 20 22 41 44 52 45 53 53 |40. LAAD "ADRESS|
00000ED0: 45 4E 0D 20 57 45 47 4E 41 41 4D 20 22 53 54 41 |EN. WEGNAAM "STA|
00000EE0: 52 54 4F 50 0D 20 57 45 47 20 5A 45 54 4F 50 0D |RTOP. WEG ZETOP.|
00000EF0: 45 4E 44 0D 0D 4D 41 41 4B 20 22 53 54 41 52 54 |END..MAAK "START|
00000F00: 4F 50 20 5B 5A 45 54 4F 50 5D 0D |OP [ZETOP]. |
. TO !A. WEG [ASSEMBLEER ERNS SYMBOLS SY
MS.L ASSIGN RELINS? INS? IMPINS? AMODE1
LOOKUP HI8 LO8 INSLEN OPCODE INDENT AMOD
E STORE2 EMIT LABEL? STORE STORE1 OPERAN
D RELOPER OP.LOC ERROR $1 $ !A]. WEG NAM
EN.END..TO ASSEMBLEER :CODE. ALS WAARDE?
"LABELS ERNS :LABELS. MAAK "LABELS [].
SCHRIJVEN PR :CODE. MAAK "CODE ME TEKST
:CODE. SYMBOLS :CODE :ORG. STORE :CODE :
ORG.END..TO ERNS :NAMEN. ALS :NAMEN = []
STOP. WEGNAAM EERSTE :NAMEN. ERNS ME :N
AMEN.END..TO SYMBOLS :CODE :DOT. ALS :CO
DE = [] MAAK "END :DOT - 1 STOP. SYMBOLS
ME :CODE :DOT + ( SYMS.L EERSTE :CODE E
ERSTE EERSTE :CODE ).END..TO SYMS.L :REG
EL :TOKEN. ALS INS? :TOKEN RES INSLEN AM
ODE :TOKEN ME :REGEL. ALS LABEL? :TOKEN
ASSIGN :TOKEN :DOT RES SYMS.L ME :REGEL
EERSTE ME :REGEL. ALS LIJST? :TOKEN RUN
:TOKEN RES 0. ALS GETAL? :TOKEN RES 1. E
RROR :TOKEN [GEEN INSTRUKTIE].END..TO AS
SIGN :LABEL :DING. MAAK "LABEL ML :LABEL
. ALS WAARDE? :LABEL ERROR :LABEL [AL GE
BRUIKT]. MAAK :LABEL :DOT. MAAK "LABELS
ZETV :LABEL :LABELS.END..TO INS? :TOKEN.
ALS WAARDE? :TOKEN RES LIJST? WAARDE :T
OKEN. RES "NIETW.END..TO LOOKUP :DING :P
LAATS. ALS :PLAATS = [] ERROR :DING [VER
KEERDE MODE]. ALS :DING = EERSTE :PLAATS
RES EERSTE ME :PLAATS. RES LOOKUP :DING
ME ME :PLAATS.END..TO AMODE1 :VDEEL :AD
EEL. ALS :VDEEL = "# RES LOOKUP ME :ADEE
L :IMMS. ALS :VDEEL = "! RES LOOKUP ME :
ADEEL :ZPS. ALS :VDEEL = "( RES LOOKUP M
E :ADEEL :INDIRS. RES LOOKUP :ADEEL :IND
EXES.END..TO IMPINS? :TOKEN. ALS INS? :T
OKEN RES "IMP = EERSTE WAARDE :TOKEN. RE
S "NIETW.END..TO RELINS? :TOKEN. ALS INS
? :TOKEN RES "REL = EERSTE WAARDE :TOKEN
. RES "NIETW.END..TO HI8 :N. RES QUOTIEN
T :N 256.END..TO LO8 :N. RES BITAND :N 2
55.END..TO INSLEN :MODE. RES EERSTE WAAR
DE :MODE.END..TO OPCODE :INS :MODE. RES
LOOKUP :MODE WAARDE :INS.END..TO INDENT
:SPATIES. ALS :SPATIES < 0 PRINT1 "' ' S
TOP. HERHAAL :SPATIES [PRINT1 "' '].END.
.TO AMODE :TOKEN :ARGS. ALS RELINS? :TOK
EN RES "REL. ALS IMPINS? :TOKEN RES "IMP
. ALS :ARGS = [] RES "IMP. ALS :ARGS = [
A] RES "ACC. ALS ME :ARGS = [] RES "ABS.
RES AMODE1 EERSTE :ARGS ME :ARGS.END..T
O STORE2 :REGEL :MODE. LOKAAL "BYTE LOKA
AL "LEN. MAAK "BYTE OPCODE EERSTE :REGEL
:MODE. MAAK "LEN INSLEN :MODE. EMIT :DO
T :BYTE. ALS :LEN = 1 RES :LEN. MAAK "BY
TE OPERAND :MODE ME :REGEL. ALS :LEN = 2
EMIT :DOT + 1 :BYTE RES :LEN. EMIT :DOT
+ 1 LO8 :BYTE. EMIT :DOT + 2 HI8 :BYTE.
RES :LEN.END..TO EMIT :DOT :BYTE. INDEN
T 29 - EERSTE CURSORPOS. ( PRINT1 :DOT "
= :BYTE ). PRINT []. .DEPOSIT :DOT :BYTE
.END..TO LABEL? :TOKEN. RES ": = LAATSTE
:TOKEN.END..TO STORE :CODE :DOT. ALS :C
ODE = [] STOP. STORE1 EERSTE :CODE EERST
E EERSTE :CODE.END..TO STORE1 :REGEL :TO
KEN. PRINT1 :REGEL. ALS LIJST? :TOKEN PR
INT [] STORE ME :CODE :DOT STOP. ALS LAB
EL? :TOKEN MAAK "REGEL ME :REGEL MAAK "T
OKEN EERSTE :REGEL. ALS GETAL? :TOKEN EM
IT :DOT :TOKEN STORE ME :CODE :DOT + 1 S
TOP. STORE ME :CODE :DOT + ( STORE2 :REG
EL ( AMODE :TOKEN ME :REGEL ) ).END..TO
OPERAND :MODE :ARGS. ALS :MODE = "REL RE
S RELOPER. MAAK "ARGS ELEMENT ( OP.LOC :
MODE ) :ARGS. ALS LIJST? :ARGS RES RUN :
ARGS. ALS GETAL? :ARGS RES :ARGS. ALS EE
RSTE :ARGS = "" RES ASCII ME :ARGS. ALS
WAARDE? :ARGS RES WAARDE :ARGS. ERROR :A
RGS [GEEN LABEL].END..TO RELOPER. MAAK "
ARGS ( OPERAND "ABS :ARGS ) - :DOT - 2.
ALS :ARGS < 0 RES 256 + :ARGS ANDERS RES
:ARGS.END..TO OP.LOC :MODE. RES EERSTE
ME WAARDE :MODE.END..TO ERROR :A :B. ( P
RINT [IN REGEL] :REGEL ). ( PRINT :A :B
). AFGELOPEN.END..TO $1 :WOORD :VAL. ALS
:WOORD = " RES :VAL. ALS GETAL? EERSTE
:WOORD RES $1 ME :WOORD :VAL * :$BASE +
EERSTE :WOORD. LOKAAL "DIGIT. MAAK "DIGI
T ( ASCII EERSTE :WOORD ) - 55. ALS EENV
AN :DIGIT < 0 :DIGIT - 1 > :$BASE ERROR
EERSTE :WOORD [GEEN GETAL]. RES $1 ME :W
OORD :VAL * :$BASE + :DIGIT.END..TO $ :W
OORD. RES $1 :WOORD 0.END..TO ZETOP. MAA
K "$BASE 16. LAAD "AMODES. LAAD "OPCODES
. MAAK "ORG $ "C40. LAAD "ADRESSEN. WEGN
AAM "STARTOP. WEG ZETOP.END..MAAK "START
OP [ZETOP].
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL