00000000: 00 0A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |..**************|
00000010: 2A 2A 2A 2A 0D 2A A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 |****.*..........|
00000020: A0 A0 A0 A0 A0 A0 2A 0D 2A A0 6D 61 63 72 6F A0 |......*.*.macro.|
00000030: 6C 69 62 72 61 72 79 A0 A0 2A 0D 2A A0 A0 A0 A0 |library..*.*....|
00000040: A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 2A 0D 2A A0 |............*.*.|
00000050: 57 49 54 48 A0 32 A0 50 52 4F 47 52 41 4D A0 2A |WITH.2.PROGRAM.*|
00000060: 0D 2A A0 A0 A0 A0 45 58 41 4D 50 4C 45 53 A0 A0 |.*....EXAMPLES..|
00000070: A0 A0 2A 0D 2A A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 |..*.*...........|
00000080: A0 A0 A0 A0 A0 2A 0D 2A A0 A0 A0 A0 32 2F 32 30 |.....*.*....2/20|
00000090: 2F 38 33 A0 A0 A0 A0 A0 2A 0D 2A A0 A0 A0 A0 A0 |/83.....*.*.....|
000000A0: A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 2A 0D 2A A0 75 |...........*.*.u|
000000B0: 53 45 A0 41 53 A0 41 A0 47 55 49 44 45 A0 2A 0D |SE.AS.A.GUIDE.*.|
000000C0: 2A A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 |*...............|
000000D0: A0 2A 0D 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |.*.*************|
000000E0: 2A 2A 2A 2A 2A 0D 0D 63 68 72 69 6E 20 3D 20 24 |*****..chrin = $|
000000F0: 66 66 63 66 0D 63 68 72 6F 75 74 20 3D 20 24 66 |ffcf.chrout = $f|
00000100: 66 64 32 0D 70 6C 6F 74 20 3D 20 24 66 66 66 30 |fd2.plot = $fff0|
00000110: 0D 0D 69 6E 63 64 20 6D 61 63 0D 20 69 6E 63 20 |..incd mac. inc |
00000120: 5D 31 0D 20 62 6E 65 20 6E 63 0D 20 69 6E 63 20 |]1. bne nc. inc |
00000130: 5D 31 2B 31 0D 6E 63 20 3C 3C 3C 0D 0D 64 65 63 |]1+1.nc <<<..dec|
00000140: 64 20 6D 61 63 0D 20 6C 64 61 20 5D 31 0D 20 62 |d mac. lda ]1. b|
00000150: 6E 65 20 6E 64 0D 20 64 65 63 20 5D 31 2B 31 0D |ne nd. dec ]1+1.|
00000160: 6E 64 20 64 65 63 20 5D 31 0D 20 3C 3C 3C 0D 0D |nd dec ]1. <<<..|
00000170: 6D 6F 76 20 6D 61 63 0D 20 6C 64 61 20 5D 31 0D |mov mac. lda ]1.|
00000180: 20 73 74 61 20 5D 32 0D 20 3C 3C 3C 0D 0D 73 74 | sta ]2. <<<..st|
00000190: 69 6E 64 20 6D 61 63 0D 20 3E 3E 3E 20 6D 6F 76 |ind mac. >>> mov|
000001A0: 2E 5D 31 3B 28 5D 32 29 2C 79 0D 20 69 6E 79 0D |.]1;(]2),y. iny.|
000001B0: 20 3E 3E 3E 20 6D 6F 76 2E 5D 31 2B 31 3B 28 5D | >>> mov.]1+1;(]|
000001C0: 32 29 2C 79 0D 20 3C 3C 3C 0D 0D 6C 64 69 6E 64 |2),y. <<<..ldind|
000001D0: 20 6D 61 63 0D 20 3E 3E 3E 20 6D 6F 76 2E 28 5D | mac. >>> mov.(]|
000001E0: 31 29 2C 79 3B 5D 32 0D 20 69 6E 79 0D 20 3E 3E |1),y;]2. iny. >>|
000001F0: 3E 20 6D 6F 76 2E 28 5D 31 29 2C 79 3B 5D 32 2B |> mov.(]1),y;]2+|
00000200: 31 0D 20 3C 3C 3C 0D 0D 74 72 61 6E 73 20 6D 61 |1. <<<..trans ma|
00000210: 63 0D 20 3E 3E 3E 20 6D 6F 76 2E 5D 31 3B 5D 32 |c. >>> mov.]1;]2|
00000220: 0D 20 3E 3E 3E 20 6D 6F 76 2E 5D 31 2B 31 3B 5D |. >>> mov.]1+1;]|
00000230: 32 2B 31 0D 20 3C 3C 3C 0D 0D 61 64 64 20 6D 61 |2+1. <<<..add ma|
00000240: 63 0D 20 63 6C 63 0D 20 6C 64 61 20 5D 31 0D 20 |c. clc. lda ]1. |
00000250: 61 64 63 20 5D 32 0D 20 73 74 61 20 5D 33 0D 20 |adc ]2. sta ]3. |
00000260: 6C 64 61 20 5D 31 2B 31 0D 20 61 64 63 20 5D 32 |lda ]1+1. adc ]2|
00000270: 2B 31 0D 20 73 74 61 20 5D 33 2B 31 0D 20 3C 3C |+1. sta ]3+1. <<|
00000280: 3C 0D 0D 73 75 62 20 6D 61 63 0D 20 73 65 63 0D |<..sub mac. sec.|
00000290: 20 6C 64 61 20 5D 31 0D 20 73 62 63 20 5D 32 0D | lda ]1. sbc ]2.|
000002A0: 20 73 74 61 20 5D 33 0D 20 6C 64 61 20 5D 31 2B | sta ]3. lda ]1+|
000002B0: 31 0D 20 73 62 63 20 5D 32 2B 31 0D 20 73 74 61 |1. sbc ]2+1. sta|
000002C0: 20 5D 33 2B 31 0D 20 3C 3C 3C 0D 0D 61 64 64 78 | ]3+1. <<<..addx|
000002D0: 20 6D 61 63 0D 20 74 78 61 0D 20 63 6C 63 0D 20 | mac. txa. clc. |
000002E0: 61 64 63 20 5D 31 0D 20 73 74 61 20 5D 32 0D 20 |adc ]1. sta ]2. |
000002F0: 6C 64 61 20 5D 31 2B 31 0D 20 61 64 63 20 23 30 |lda ]1+1. adc #0|
00000300: 0D 20 73 74 61 20 5D 32 2B 31 0D 20 3C 3C 3C 0D |. sta ]2+1. <<<.|
00000310: 0D 61 64 64 79 20 6D 61 63 0D 20 74 79 61 0D 20 |.addy mac. tya. |
00000320: 63 6C 63 0D 20 61 64 63 20 5D 31 0D 20 73 74 61 |clc. adc ]1. sta|
00000330: 20 5D 32 0D 20 6C 64 61 20 5D 31 2B 31 0D 20 61 | ]2. lda ]1+1. a|
00000340: 64 63 20 23 30 0D 20 73 74 61 20 5D 32 2B 31 0D |dc #0. sta ]2+1.|
00000350: 20 3C 3C 3C 0D 0D 61 64 64 6E 75 6D 20 6D 61 63 | <<<..addnum mac|
00000360: 0D 20 6C 64 61 20 23 5D 31 0D 20 63 6C 63 0D 20 |. lda #]1. clc. |
00000370: 61 64 63 20 5D 32 0D 20 73 74 61 20 5D 32 0D 20 |adc ]2. sta ]2. |
00000380: 62 63 63 20 6E 69 0D 20 69 6E 63 20 5D 32 2B 31 |bcc ni. inc ]2+1|
00000390: 0D 6E 69 20 3C 3C 3C 0D 0D 73 77 61 70 20 6D 61 |.ni <<<..swap ma|
000003A0: 63 0D 20 6C 64 61 20 5D 31 0D 20 70 68 61 0D 20 |c. lda ]1. pha. |
000003B0: 6C 64 61 20 5D 32 0D 20 73 74 61 20 5D 31 0D 20 |lda ]2. sta ]1. |
000003C0: 70 6C 61 0D 20 73 74 61 20 5D 32 0D 20 3C 3C 3C |pla. sta ]2. <<<|
000003D0: 0D 0D 70 75 6C 6C 20 6D 61 63 0D 20 70 6C 61 0D |..pull mac. pla.|
000003E0: 20 73 74 61 20 5D 31 0D 20 70 6C 61 0D 20 73 74 | sta ]1. pla. st|
000003F0: 61 20 5D 31 2B 31 0D 20 3C 3C 3C 0D 0D 70 75 73 |a ]1+1. <<<..pus|
00000400: 68 20 6D 61 63 0D 20 6C 64 61 20 5D 31 2B 31 0D |h mac. lda ]1+1.|
00000410: 20 70 68 61 0D 20 6C 64 61 20 5D 31 0D 20 70 68 | pha. lda ]1. ph|
00000420: 61 0D 20 3C 3C 3C 0D 0D 63 6F 6D 70 61 72 65 20 |a. <<<..compare |
00000430: 6D 61 63 0D 20 6C 64 61 20 5D 31 0D 20 63 6D 70 |mac. lda ]1. cmp|
00000440: 20 5D 32 0D 20 6C 64 61 20 5D 31 2B 31 0D 20 73 | ]2. lda ]1+1. s|
00000450: 62 63 20 5D 32 2B 31 0D 20 3C 3C 3C 0D 0D 63 70 |bc ]2+1. <<<..cp|
00000460: 72 61 64 72 73 20 6D 61 63 0D 20 6C 64 61 20 5D |radrs mac. lda ]|
00000470: 31 0D 20 63 6D 70 20 23 3C 5D 32 0D 20 6C 64 61 |1. cmp #<]2. lda|
00000480: 20 5D 31 2B 31 0D 20 73 62 63 20 23 3E 5D 32 0D | ]1+1. sbc #>]2.|
00000490: 20 3C 3C 3C 0D 0D 70 6F 6B 65 20 6D 61 63 0D 20 | <<<..poke mac. |
000004A0: 3E 3E 3E 20 6D 6F 76 2E 23 5D 32 3B 5D 31 0D 20 |>>> mov.#]2;]1. |
000004B0: 3C 3C 3C 0D 0D 73 65 74 70 6E 74 20 6D 61 63 0D |<<<..setpnt mac.|
000004C0: 20 3E 3E 3E 20 70 6F 6B 65 2E 5D 31 3B 5D 32 0D | >>> poke.]1;]2.|
000004D0: 20 3E 3E 3E 20 70 6F 6B 65 2E 5D 31 2B 31 3B 3E | >>> poke.]1+1;>|
000004E0: 5D 32 0D 20 3C 3C 3C 0D 0D 63 70 72 73 74 72 20 |]2. <<<..cprstr |
000004F0: 6D 61 63 0D 6C 70 20 6C 64 61 20 28 5D 32 29 2C |mac.lp lda (]2),|
00000500: 79 0D 20 61 6E 64 20 23 25 30 31 31 31 31 31 31 |y. and #%0111111|
00000510: 31 0D 20 63 6D 70 20 5D 31 2C 79 0D 20 62 6E 65 |1. cmp ]1,y. bne|
00000520: 20 6F 75 74 0D 20 64 65 79 0D 20 62 70 6C 20 6C | out. dey. bpl l|
00000530: 70 0D 20 69 6E 79 0D 6F 75 74 20 3C 3C 3C 0D 0D |p. iny.out <<<..|
00000540: 70 72 63 68 72 20 6D 61 63 0D 20 6C 64 61 20 23 |prchr mac. lda #|
00000550: 5D 31 0D 20 6A 73 72 20 63 68 72 6F 75 74 0D 20 |]1. jsr chrout. |
00000560: 3C 3C 3C 0D 0D 70 72 61 64 72 73 20 6D 61 63 0D |<<<..pradrs mac.|
00000570: 20 6C 64 78 20 5D 31 0D 20 6C 64 61 20 5D 31 2B | ldx ]1. lda ]1+|
00000580: 31 0D 20 6A 73 72 20 70 72 6E 74 61 78 0D 20 3C |1. jsr prntax. <|
00000590: 3C 3C 0D 0D 67 6F 74 6F 78 79 20 6D 61 63 0D 20 |<<..gotoxy mac. |
000005A0: 6C 64 79 20 23 5D 31 0D 20 6C 64 78 20 23 5D 32 |ldy #]1. ldx #]2|
000005B0: 0D 20 63 6C 63 0D 20 6A 73 72 20 70 6C 6F 74 0D |. clc. jsr plot.|
000005C0: 20 3C 3C 3C 0D 0D 6D 65 73 73 61 67 65 20 6D 61 | <<<..message ma|
000005D0: 63 0D 20 6C 64 79 20 23 30 0D 6D 6C 70 20 6C 64 |c. ldy #0.mlp ld|
000005E0: 61 20 5D 31 2C 79 0D 20 62 65 71 20 73 65 6E 74 |a ]1,y. beq sent|
000005F0: 0D 20 6A 73 72 20 63 68 72 6F 75 74 0D 20 69 6E |. jsr chrout. in|
00000600: 79 0D 20 62 6E 65 20 6D 6C 70 0D 73 65 6E 74 20 |y. bne mlp.sent |
00000610: 3C 3C 3C 0D 0D 0D 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |<<<...**********|
00000620: A0 65 58 41 4D 50 4C 45 53 A0 2A 2A 2A 2A 2A 2A |.eXAMPLES.******|
00000630: 2A 2A 2A 2A 2A 2A 0D 0D 20 65 78 70 20 6F 66 66 |******.. exp off|
00000640: 20 3B 64 4F A0 4E 4F 54 A0 50 52 49 4E 54 A0 4D | ;dO.NOT.PRINT.M|
00000650: 41 43 52 4F A0 45 58 50 41 4E 53 49 4F 4E 0D 20 |ACRO.EXPANSION. |
00000660: 74 72 20 6F 6E 20 3B 6C 49 4D 49 54 A0 54 4F A0 |tr on ;lIMIT.TO.|
00000670: 33 A0 42 59 54 45 53 A0 50 52 49 4E 54 45 44 2F |3.BYTES.PRINTED/|
00000680: 4C 49 4E 45 0D 0D 79 20 3D 20 31 0D 6E 20 3D 20 |LINE..y = 1.n = |
00000690: 30 0D 73 61 76 6F 62 6A 20 6B 62 64 20 27 64 4F |0.savobj kbd 'dO|
000006A0: A0 59 4F 55 A0 57 41 4E 54 A0 4F 42 4A 45 43 54 |.YOU.WANT.OBJECT|
000006B0: A0 43 4F 44 45 A0 53 41 56 45 44 3F A0 28 59 2F |.CODE.SAVED?.(Y/|
000006C0: 4E 29 27 0D 65 78 61 6D 70 6C 65 20 6B 62 64 20 |N)'.example kbd |
000006D0: 27 61 53 53 45 4D 42 4C 45 A0 57 48 49 43 48 A0 |'aSSEMBLE.WHICH.|
000006E0: 50 52 4F 47 52 41 4D 3F A0 28 31 2F 32 29 27 0D |PROGRAM?.(1/2)'.|
000006F0: 20 65 72 72 20 65 78 61 6D 70 6C 65 2D 31 2F 32 | err example-1/2|
00000700: 0D 0D 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |..**************|
00000710: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************|
00000720: 2A 2A 0D 2A 0D 2A A0 A0 65 58 41 4D 50 4C 45 A0 |**.*.*..eXAMPLE.|
00000730: 31 0D 2A 0D 2A A0 28 66 49 4E 44 A0 49 4E 50 55 |1.*.*.(fIND.INPU|
00000740: 54 A0 61 73 63 69 69 A0 53 54 52 49 4E 47 A0 49 |T.ascii.STRING.I|
00000750: 4E 0D 2A A0 4D 45 4D 4F 52 59 A0 46 52 4F 4D A0 |N.*.MEMORY.FROM.|
00000760: 24 38 30 30 A0 54 4F A0 24 63 66 66 66 2E 29 0D |$800.TO.$cfff.).|
00000770: 2A 0D 2A A0 74 4F A0 55 53 45 3A A0 6C 6F 61 64 |*.*.tO.USE:.load|
00000780: A0 22 73 65 61 72 63 68 2E 6F 22 2C 38 2C 31 0D |."search.o",8,1.|
00000790: 2A A0 74 59 50 45 A0 6E 65 77 A0 49 46 A0 49 4E |*.tYPE.new.IF.IN|
000007A0: A0 44 49 52 45 43 54 A0 4D 4F 44 45 0D 2A A0 54 |.DIRECT.MODE.*.T|
000007B0: 48 45 4E A0 A0 73 79 73 A0 38 32 30 0D 2A 0D 2A |HEN..sys.820.*.*|
000007C0: A0 70 55 54 A0 65 78 61 6D 70 6C 65 A0 3D A0 31 |.pUT.example.=.1|
000007D0: A0 54 4F A0 41 53 53 45 4D 42 4C 45 0D 2A 0D 2A |.TO.ASSEMBLE.*.*|
000007E0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************|
000007F0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D |***************.|
00000800: 0D 20 64 6F 20 65 78 61 6D 70 6C 65 2D 31 0D 20 |. do example-1. |
00000810: 65 6C 73 65 0D 0D 70 6C 20 3D 20 24 38 62 0D 71 |else..pl = $8b.q|
00000820: 6C 20 3D 20 24 38 64 0D 6C 65 6E 20 3D 20 24 38 |l = $8d.len = $8|
00000830: 66 0D 69 6E 20 3D 20 24 32 30 30 0D 73 74 61 72 |f.in = $200.star|
00000840: 74 20 3D 20 24 38 30 30 0D 65 6E 64 20 3D 20 24 |t = $800.end = $|
00000850: 64 30 30 30 0D 69 6D 61 69 6E 20 3D 20 24 33 30 |d000.imain = $30|
00000860: 32 0D 0D 20 6F 72 67 20 24 33 33 34 0D 0D 20 6C |2.. org $334.. l|
00000870: 64 61 20 23 31 34 37 20 3B 63 4C 45 41 52 A0 26 |da #147 ;cLEAR.&|
00000880: A0 48 4F 4D 45 0D 20 6A 73 72 20 63 68 72 6F 75 |.HOME. jsr chrou|
00000890: 74 0D 20 3E 3E 3E 20 6D 65 73 73 61 67 65 2E 74 |t. >>> message.t|
000008A0: 79 70 65 0D 20 3E 3E 3E 20 73 65 74 70 6E 74 2E |ype. >>> setpnt.|
000008B0: 70 6C 3B 73 74 61 72 74 0D 69 6E 70 75 74 30 20 |pl;start.input0 |
000008C0: 6C 64 78 20 23 30 0D 69 6E 70 75 74 20 6A 73 72 |ldx #0.input jsr|
000008D0: 20 63 68 72 69 6E 0D 20 61 6E 64 20 23 25 30 31 | chrin. and #%01|
000008E0: 31 31 31 31 31 31 0D 20 73 74 61 20 69 6E 2C 78 |111111. sta in,x|
000008F0: 0D 20 63 6D 70 20 23 24 64 0D 20 62 65 71 20 69 |. cmp #$d. beq i|
00000900: 6E 67 6F 74 0D 20 69 6E 78 0D 20 63 70 78 20 23 |ngot. inx. cpx #|
00000910: 24 35 39 0D 20 62 6C 74 20 69 6E 70 75 74 0D 20 |$59. blt input. |
00000920: 62 67 65 20 69 6E 70 75 74 30 0D 69 6E 67 6F 74 |bge input0.ingot|
00000930: 20 64 65 78 0D 20 62 6D 69 20 65 78 69 74 20 3B | dex. bmi exit ;|
00000940: 6C 45 41 56 45 A0 49 46 A0 4E 4F A0 49 4E 50 55 |lEAVE.IF.NO.INPU|
00000950: 54 0D 20 73 74 78 20 6C 65 6E 0D 20 3E 3E 3E 20 |T. stx len. >>> |
00000960: 61 64 64 78 2E 70 6C 3B 71 6C 0D 6E 78 63 6D 70 |addx.pl;ql.nxcmp|
00000970: 20 6C 64 79 20 6C 65 6E 0D 20 3E 3E 3E 20 63 70 | ldy len. >>> cp|
00000980: 72 73 74 72 2E 69 6E 3B 70 6C 0D 20 62 6E 65 20 |rstr.in;pl. bne |
00000990: 6E 65 78 74 0D 20 3E 3E 3E 20 70 72 63 68 72 2E |next. >>> prchr.|
000009A0: 24 64 20 3B 66 4F 55 4E 44 2C A0 50 52 49 4E 54 |$d ;fOUND,.PRINT|
000009B0: A0 4C 4F 43 41 54 49 4F 4E 0D 20 3E 3E 3E 20 70 |.LOCATION. >>> p|
000009C0: 72 63 68 72 2E 27 24 27 0D 20 3E 3E 3E 20 70 72 |rchr.'$'. >>> pr|
000009D0: 61 64 72 73 2E 70 6C 0D 6E 65 78 74 20 3E 3E 3E |adrs.pl.next >>>|
000009E0: 20 69 6E 63 64 2E 70 6C 0D 20 3E 3E 3E 20 69 6E | incd.pl. >>> in|
000009F0: 63 64 2E 71 6C 0D 20 3E 3E 3E 20 63 70 72 61 64 |cd.ql. >>> cprad|
00000A00: 72 73 2E 71 6C 3B 65 6E 64 20 3B 66 49 4E 49 53 |rs.ql;end ;fINIS|
00000A10: 48 45 44 3F 0D 20 62 6C 74 20 6E 78 63 6D 70 0D |HED?. blt nxcmp.|
00000A20: 20 3E 3E 3E 20 6D 65 73 73 61 67 65 2E 63 61 6C | >>> message.cal|
00000A30: 6C 0D 65 78 69 74 20 6A 6D 70 20 28 69 6D 61 69 |l.exit jmp (imai|
00000A40: 6E 29 0D 74 79 70 65 20 74 78 74 20 27 54 45 58 |n).type txt 'TEX|
00000A50: 54 A0 54 4F A0 4C 4F 43 41 54 45 3A 27 0D 20 68 |T.TO.LOCATE:'. h|
00000A60: 65 78 20 30 64 0D 20 62 72 6B 20 3B 73 49 47 4E |ex 0d. brk ;sIGN|
00000A70: 41 4C 53 A0 4D 53 47 A0 45 4E 44 0D 63 61 6C 6C |ALS.MSG.END.call|
00000A80: 20 68 65 78 20 30 64 0D 20 74 78 74 20 27 53 59 | hex 0d. txt 'SY|
00000A90: 53 A0 38 32 30 A0 46 4F 52 A0 4D 4F 52 45 27 0D |S.820.FOR.MORE'.|
00000AA0: 20 68 65 78 20 30 64 0D 20 62 72 6B 0D 0D 2A A0 | hex 0d. brk..*.|
00000AB0: 73 55 42 52 4F 55 54 49 4E 45 A0 54 4F A0 50 52 |sUBROUTINE.TO.PR|
00000AC0: 49 4E 54 A0 61 2C 78 A0 49 4E A0 48 45 58 3A 0D |INT.a,x.IN.HEX:.|
00000AD0: 0D 70 72 6E 74 61 78 20 6A 73 72 20 70 72 62 79 |.prntax jsr prby|
00000AE0: 74 65 20 3B 70 52 49 4E 54 A0 61 A0 49 4E A0 48 |te ;pRINT.a.IN.H|
00000AF0: 45 58 0D 20 74 78 61 20 3B 67 45 54 A0 78 0D 70 |EX. txa ;gET.x.p|
00000B00: 72 62 79 74 65 20 70 68 61 20 3B 73 55 42 52 4F |rbyte pha ;sUBRO|
00000B10: 55 54 49 4E 45 A0 54 4F A0 50 52 49 4E 54 A0 61 |UTINE.TO.PRINT.a|
00000B20: A0 49 4E A0 48 45 58 0D 20 6C 75 70 20 34 0D 20 |.IN.HEX. lup 4. |
00000B30: 6C 73 72 0D 20 2D 2D 5E 0D 20 6A 73 72 20 70 72 |lsr. --^. jsr pr|
00000B40: 6E 69 62 20 3B 70 52 49 4E 54 A0 48 49 47 48 A0 |nib ;pRINT.HIGH.|
00000B50: 4E 49 42 42 4C 45 0D 20 70 6C 61 20 3B 67 45 54 |NIBBLE. pla ;gET|
00000B60: A0 4C 4F 57 A0 4E 49 42 42 4C 45 0D 20 61 6E 64 |.LOW.NIBBLE. and|
00000B70: 20 23 24 66 0D 70 72 6E 69 62 20 6F 72 61 20 23 | #$f.prnib ora #|
00000B80: 27 30 27 0D 20 63 6D 70 20 23 27 39 27 2B 31 0D |'0'. cmp #'9'+1.|
00000B90: 20 62 6C 74 20 70 72 69 74 0D 20 61 64 63 20 23 | blt prit. adc #|
00000BA0: 27 41 27 2D 27 39 27 2D 32 0D 70 72 69 74 20 6A |'A'-'9'-2.prit j|
00000BB0: 6D 70 20 63 68 72 6F 75 74 0D 0D 20 65 72 72 20 |mp chrout.. err |
00000BC0: 2A 2D 31 2F 24 34 30 30 0D 20 64 6F 20 73 61 76 |*-1/$400. do sav|
00000BD0: 6F 62 6A 0D 20 73 61 76 65 20 22 73 65 61 72 63 |obj. save "searc|
00000BE0: 68 22 0D 20 66 69 6E 0D 20 66 69 6E 0D 0D 2A 2A |h". fin. fin..**|
00000BF0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************|
00000C00: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 2A |**************.*|
00000C10: 0D 2A A0 A0 65 58 41 4D 50 4C 45 A0 32 0D 2A 0D |.*..eXAMPLE.2.*.|
00000C20: 2A A0 28 72 45 56 49 56 45 A0 41 A0 44 45 41 44 |*.(rEVIVE.A.DEAD|
00000C30: A0 62 61 73 69 63 A0 50 52 4F 47 2E 29 0D 2A 0D |.basic.PROG.).*.|
00000C40: 2A A0 74 4F A0 55 53 45 3A A0 6C 6F 61 64 A0 22 |*.tO.USE:.load."|
00000C50: 72 65 76 69 76 65 2E 6F 22 2C 38 2C 31 0D 2A A0 |revive.o",8,1.*.|
00000C60: 54 48 45 4E A0 73 79 73 A0 38 32 30 2E A0 A0 74 |THEN.sys.820...t|
00000C70: 48 45 A0 44 45 41 44 0D 2A A0 50 52 4F 47 52 41 |HE.DEAD.*.PROGRA|
00000C80: 4D 2C A0 49 46 A0 41 4E 59 2C A0 57 49 4C 4C A0 |M,.IF.ANY,.WILL.|
00000C90: 42 45 A0 42 41 43 4B 2E 0D 2A 0D 2A A0 70 55 54 |BE.BACK..*.*.pUT|
00000CA0: A0 65 78 61 6D 70 6C 65 A0 3D A0 32 A0 54 4F A0 |.example.=.2.TO.|
00000CB0: 41 53 53 45 4D 42 4C 45 0D 2A 0D 2A 2A 2A 2A 2A |ASSEMBLE.*.*****|
00000CC0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************|
00000CD0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 0D 20 64 6F |***********.. do|
00000CE0: 20 65 78 61 6D 70 6C 65 2D 32 0D 20 65 6C 73 65 | example-2. else|
00000CF0: 0D 0D 70 6C 20 3D 20 24 38 62 0D 71 6C 20 3D 20 |..pl = $8b.ql = |
00000D00: 24 38 64 0D 70 72 6F 67 62 65 67 20 3D 20 24 32 |$8d.progbeg = $2|
00000D10: 62 0D 76 61 72 74 61 62 20 3D 20 24 32 64 0D 6C |b.vartab = $2d.l|
00000D20: 69 6E 6B 73 65 74 20 3D 20 24 61 35 32 61 0D 62 |inkset = $a52a.b|
00000D30: 61 73 63 6C 64 20 3D 20 24 61 30 30 30 0D 0D 20 |ascld = $a000.. |
00000D40: 6F 72 67 20 24 33 33 34 0D 0D 20 3E 3E 3E 20 74 |org $334.. >>> t|
00000D50: 72 61 6E 73 2E 70 72 6F 67 62 65 67 3B 70 6C 0D |rans.progbeg;pl.|
00000D60: 20 3E 3E 3E 20 61 64 64 6E 75 6D 2E 34 3B 70 6C | >>> addnum.4;pl|
00000D70: 0D 20 6C 64 79 20 23 30 0D 66 6E 64 65 6E 64 20 |. ldy #0.fndend |
00000D80: 6C 64 61 20 28 70 6C 29 2C 79 20 3B 66 49 4E 44 |lda (pl),y ;fIND|
00000D90: A0 45 4E 44 A0 4F 46 A0 46 49 52 53 54 A0 4C 49 |.END.OF.FIRST.LI|
00000DA0: 4E 45 0D 20 70 68 70 0D 20 3E 3E 3E 20 69 6E 63 |NE. php. >>> inc|
00000DB0: 64 2E 70 6C 0D 20 70 6C 70 0D 20 62 6E 65 20 66 |d.pl. plp. bne f|
00000DC0: 6E 64 65 6E 64 0D 20 3E 3E 3E 20 73 74 69 6E 64 |ndend. >>> stind|
00000DD0: 2E 70 6C 3B 70 72 6F 67 62 65 67 20 3B 66 49 52 |.pl;progbeg ;fIR|
00000DE0: 53 54 A0 4C 49 4E 4B 0D 6C 6F 6F 70 20 64 65 79 |ST.LINK.loop dey|
00000DF0: 20 3B 6E 4F 57 A0 79 3D 30 0D 20 3E 3E 3E 20 6C | ;nOW.y=0. >>> l|
00000E00: 64 69 6E 64 2E 70 6C 3B 71 6C 20 3B 70 55 54 A0 |dind.pl;ql ;pUT.|
00000E10: 4E 45 58 54 A0 4C 49 4E 4B A0 49 4E A0 71 6C 0D |NEXT.LINK.IN.ql.|
00000E20: 20 6C 64 61 20 71 6C 20 3B 69 53 A0 4C 49 4E 4B | lda ql ;iS.LINK|
00000E30: 0D 20 6F 72 61 20 71 6C 2B 31 20 3B 3D A0 30 A0 |. ora ql+1 ;=.0.|
00000E40: 3F 0D 20 62 65 71 20 66 69 78 70 6E 74 0D 20 3E |?. beq fixpnt. >|
00000E50: 3E 3E 20 63 6F 6D 70 61 72 65 2E 71 6C 3B 70 6C |>> compare.ql;pl|
00000E60: 20 3B 76 41 4C 49 44 49 54 59 A0 43 48 45 43 4B | ;vALIDITY.CHECK|
00000E70: 0D 20 62 6C 74 20 62 61 64 70 72 6F 67 0D 20 3E |. blt badprog. >|
00000E80: 3E 3E 20 74 72 61 6E 73 2E 71 6C 3B 70 6C 20 3B |>> trans.ql;pl ;|
00000E90: 73 45 54 A0 55 50 A0 46 4F 52 A0 4C 4F 4F 50 0D |sET.UP.FOR.LOOP.|
00000EA0: 20 6A 6D 70 20 6C 6F 6F 70 0D 66 69 78 70 6E 74 | jmp loop.fixpnt|
00000EB0: 20 3E 3E 3E 20 61 64 64 6E 75 6D 2E 32 3B 70 6C | >>> addnum.2;pl|
00000EC0: 20 3B 6E 4F 57 A0 70 6C 3D 45 4E 44 A0 50 52 4F | ;nOW.pl=END.PRO|
00000ED0: 47 52 41 4D 0D 20 3E 3E 3E 20 74 72 61 6E 73 2E |GRAM. >>> trans.|
00000EE0: 70 6C 3B 76 61 72 74 61 62 0D 20 6A 6D 70 20 6C |pl;vartab. jmp l|
00000EF0: 69 6E 6B 73 65 74 20 3B 6C 45 54 A0 62 61 73 69 |inkset ;lET.basi|
00000F00: 63 A0 46 49 4E 49 53 48 A0 49 54 A0 55 50 0D 62 |c.FINISH.IT.UP.b|
00000F10: 61 64 70 72 6F 67 20 6A 6D 70 20 28 62 61 73 63 |adprog jmp (basc|
00000F20: 6C 64 29 0D 0D 20 65 72 72 20 2A 2D 31 2F 24 34 |ld).. err *-1/$4|
00000F30: 30 30 0D 20 64 6F 20 73 61 76 6F 62 6A 0D 20 73 |00. do savobj. s|
00000F40: 61 76 65 20 22 72 65 76 69 76 65 22 0D 20 66 69 |ave "revive". fi|
00000F50: 6E 0D 20 66 69 6E 0D |n. fin. |
..******************.* *.
* MACRO LIBRARY *.* *.*
WITH 2 PROGRAM *.* EXAMPLES *.*
*.* 2/20/83 *.*
*.* USE AS A GUIDE *.*
*.******************..CHRIN = $
FFCF.CHROUT = $FFD2.PLOT = $FFF0..INCD M
AC. INC ]1. BNE NC. INC ]1+1.NC <<<..DEC
D MAC. LDA ]1. BNE ND. DEC ]1+1.ND DEC ]
1. <<<..MOV MAC. LDA ]1. STA ]2. <<<..ST
IND MAC. >>> MOV.]1;(]2),Y. INY. >>> MOV
.]1+1;(]2),Y. <<<..LDIND MAC. >>> MOV.(]
1),Y;]2. INY. >>> MOV.(]1),Y;]2+1. <<<..
TRANS MAC. >>> MOV.]1;]2. >>> MOV.]1+1;]
2+1. <<<..ADD MAC. CLC. LDA ]1. ADC ]2.
STA ]3. LDA ]1+1. ADC ]2+1. STA ]3+1. <<
<..SUB MAC. SEC. LDA ]1. SBC ]2. STA ]3.
LDA ]1+1. SBC ]2+1. STA ]3+1. <<<..ADDX
MAC. TXA. CLC. ADC ]1. STA ]2. LDA ]1+1
. ADC #0. STA ]2+1. <<<..ADDY MAC. TYA.
CLC. ADC ]1. STA ]2. LDA ]1+1. ADC #0. S
TA ]2+1. <<<..ADDNUM MAC. LDA #]1. CLC.
ADC ]2. STA ]2. BCC NI. INC ]2+1.NI <<<.
.SWAP MAC. LDA ]1. PHA. LDA ]2. STA ]1.
PLA. STA ]2. <<<..PULL MAC. PLA. STA ]1.
PLA. STA ]1+1. <<<..PUSH MAC. LDA ]1+1.
PHA. LDA ]1. PHA. <<<..COMPARE MAC. LDA
]1. CMP ]2. LDA ]1+1. SBC ]2+1. <<<..CP
RADRS MAC. LDA ]1. CMP #<]2. LDA ]1+1. S
BC #>]2. <<<..POKE MAC. >>> MOV.#]2;]1.
<<<..SETPNT MAC. >>> POKE.]1;]2. >>> POK
E.]1+1;>]2. <<<..CPRSTR MAC.LP LDA (]2),
Y. AND #%01111111. CMP ]1,Y. BNE OUT. DE
Y. BPL LP. INY.OUT <<<..PRCHR MAC. LDA #
]1. JSR CHROUT. <<<..PRADRS MAC. LDX ]1.
LDA ]1+1. JSR PRNTAX. <<<..GOTOXY MAC.
LDY #]1. LDX #]2. CLC. JSR PLOT. <<<..ME
SSAGE MAC. LDY #0.MLP LDA ]1,Y. BEQ SENT
. JSR CHROUT. INY. BNE MLP.SENT <<<...**
******** EXAMPLES ************.. EXP OFF
;DO NOT PRINT MACRO EXPANSION. TR ON ;L
IMIT TO 3 BYTES PRINTED/LINE..Y = 1.N =
0.SAVOBJ KBD 'DO YOU WANT OBJECT CODE SA
VED? (Y/N)'.EXAMPLE KBD 'ASSEMBLE WHICH
PROGRAM? (1/2)'. ERR EXAMPLE-1/2..******
**************************.*.* EXAMPLE
1.*.* (FIND INPUT ASCII STRING IN.* MEMO
RY FROM $800 TO $CFFF.).*.* TO USE: LOAD
"SEARCH.O",8,1.* TYPE NEW IF IN DIRECT
MODE.* THEN SYS 820.*.* PUT EXAMPLE = 1
TO ASSEMBLE.*.*************************
*******.. DO EXAMPLE-1. ELSE..PL = $8B.Q
L = $8D.LEN = $8F.IN = $200.START = $800
.END = $D000.IMAIN = $302.. ORG $334.. L
DA #147 ;CLEAR & HOME. JSR CHROUT. >>> M
ESSAGE.TYPE. >>> SETPNT.PL;START.INPUT0
LDX #0.INPUT JSR CHRIN. AND #%01111111.
STA IN,X. CMP #$D. BEQ INGOT. INX. CPX #
$59. BLT INPUT. BGE INPUT0.INGOT DEX. BM
I EXIT ;LEAVE IF NO INPUT. STX LEN. >>>
ADDX.PL;QL.NXCMP LDY LEN. >>> CPRSTR.IN;
PL. BNE NEXT. >>> PRCHR.$D ;FOUND, PRINT
LOCATION. >>> PRCHR.'$'. >>> PRADRS.PL.
NEXT >>> INCD.PL. >>> INCD.QL. >>> CPRAD
RS.QL;END ;FINISHED?. BLT NXCMP. >>> MES
SAGE.CALL.EXIT JMP (IMAIN).TYPE TXT 'TEX
T TO LOCATE:'. HEX 0D. BRK ;SIGNALS MSG
END.CALL HEX 0D. TXT 'SYS 820 FOR MORE'.
HEX 0D. BRK..* SUBROUTINE TO PRINT A,X
IN HEX:..PRNTAX JSR PRBYTE ;PRINT A IN H
EX. TXA ;GET X.PRBYTE PHA ;SUBROUTINE TO
PRINT A IN HEX. LUP 4. LSR. --^. JSR PR
NIB ;PRINT HIGH NIBBLE. PLA ;GET LOW NIB
BLE. AND #$F.PRNIB ORA #'0'. CMP #'9'+1.
BLT PRIT. ADC #'A'-'9'-2.PRIT JMP CHROU
T.. ERR *-1/$400. DO SAVOBJ. SAVE "SEARC
H". FIN. FIN..**************************
******.*.* EXAMPLE 2.*.* (REVIVE A DEAD
BASIC PROG.).*.* TO USE: LOAD "REVIVE.O
",8,1.* THEN SYS 820. THE DEAD.* PROGRA
M, IF ANY, WILL BE BACK..*.* PUT EXAMPLE
= 2 TO ASSEMBLE.*.*********************
***********.. DO EXAMPLE-2. ELSE..PL = $
8B.QL = $8D.PROGBEG = $2B.VARTAB = $2D.L
INKSET = $A52A.BASCLD = $A000.. ORG $334
.. >>> TRANS.PROGBEG;PL. >>> ADDNUM.4;PL
. LDY #0.FNDEND LDA (PL),Y ;FIND END OF
FIRST LINE. PHP. >>> INCD.PL. PLP. BNE F
NDEND. >>> STIND.PL;PROGBEG ;FIRST LINK.
LOOP DEY ;NOW Y=0. >>> LDIND.PL;QL ;PUT
NEXT LINK IN QL. LDA QL ;IS LINK. ORA QL
+1 ;= 0 ?. BEQ FIXPNT. >>> COMPARE.QL;PL
;VALIDITY CHECK. BLT BADPROG. >>> TRANS
.QL;PL ;SET UP FOR LOOP. JMP LOOP.FIXPNT
>>> ADDNUM.2;PL ;NOW PL=END PROGRAM. >>
> TRANS.PL;VARTAB. JMP LINKSET ;LET BASI
C FINISH IT UP.BADPROG JMP (BASCLD).. ER
R *-1/$400. DO SAVOBJ. SAVE "REVIVE". FI
N. FIN.
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL