Hello, all, Below are the preliminary data for drawing on the double hires screen. You will probably want to copy and paste this into a text viewer with a fixed font, as it will be much easier to read. About the information below: I know that it will change dramatically, even the memory map I posted earlier will be changed. But I posted this so people will know the state so far of the SimCity-type game. The next post I do will be pseudocode for the actual calculations of each square as the game runs. I figure it will be along the lines of Life, which I used before. I am also getting the file format for the original SimCity, so a saved file will be able to be moved to a Mac or IBM PC and used on the real programs. I need to ask if anyone has the ProDOS 8 MLI call information, or where I can find it on the internet. I need the layout for each of the ProDOS 8 MLI calls so I will be able to read and write to the disk. Any comments or suggestions will be more than gladly accepted! Take care, all. ------- Cut Here ------- Hires Memory Locations Line Address Line Address Line Address Unused 00 2000.2027 40 2028.204F 80 2050.2077 2078.207F 01 2400.2427 41 2428.244F 81 2450.2477 2478.247F 02 2800.2827 42 2828.284F 82 2850.2877 2878.287F 03 2C00.2C27 43 2C28.2C4F 83 2C50.2C77 2C78.2C7F 04 3000.3027 44 3028.304F 84 3050.3077 3078.307F 05 3400.3427 45 3428.344F 85 3450.3477 3478.347F 06 3800.3827 46 3828.384F 86 3850.3877 3878.387F 07 3C00.3C27 47 3C28.3C4F 87 3C50.3C77 3C78.3C7F 08 2080.20A7 48 20A8.20CF 88 20D0.20F7 20F8.20FF 09 2480.24A7 49 24A8.24CF 89 24D0.24F7 24F8.24FF 0A 2880.28A7 4A 28A8.28CF 8A 28D0.28F7 28F8.28FF 0B 2C80.2CA7 4B 2CA8.2CCF 8B 2CD0.2CF7 2CF8.2CFF 0C 3080.30A7 4C 30A8.30CF 8C 30D0.30F7 30F8.30FF 0D 3480.34A7 4D 34A8.34CF 8D 34D0.34F7 34F8.34FF 0E 3880.38A7 4E 38A8.38CF 8E 38D0.38F7 38F8.38FF 0F 3C80.3CA7 4F 3CA8.3CCF 8F 3CD0.3CF7 3CF8.3CFF 10 2100.2127 50 2128.214F 90 2150.2177 2178.217F 11 2500.2527 51 2528.254F 91 2550.2577 2578.257F 12 2900.2927 52 2928.294F 92 2950.2977 2978.297F 13 2D00.2D27 53 2D28.2D4F 93 2D50.2D77 2D78.2D7F 14 3100.3127 54 3128.314F 94 3150.3177 3178.317F 15 3500.3527 55 3528.354F 95 3550.3577 3578.357F 16 3900.3927 56 3928.394F 96 3950.3977 3978.397F 17 3D00.3D27 57 3D28.3D4F 97 3D50.3D77 3D78.3D7F 18 2180.21A7 58 21A8.21CF 98 21D0.21F7 21F8.21FF 19 2580.25A7 59 25A8.25CF 99 25D0.25F7 25F8.25FF 1A 2980.29A7 5A 29A8.29CF 9A 29D0.29F7 29F8.29FF 1B 2D80.2DA7 5B 2DA8.2DCF 9B 2DD0.2DF7 2DF8.2DFF 1C 3180.31A7 5C 31A8.31CF 9C 31D0.31F7 31F8.31FF 1D 3580.35A7 5D 35A8.35CF 9D 35D0.35F7 35F8.35FF 1E 3980.39A7 5E 39A8.39CF 9E 39D0.39F7 39F8.39FF 1F 3D80.3DA7 5F 3DA8.3DCF 9F 3DD0.3DF7 3DF8.3DFF 20 2200.2227 60 2228.224F A0 2250.2277 2278.227F 21 2600.2627 61 2628.264F A1 2650.2677 2678.267F 22 2A00.2A27 62 2A28.2A4F A2 2A50.2A77 2A78.2A7F 23 2E00.2E27 63 2E28.2E4F A3 2E50.2E77 2E78.2E7F 24 3200.3227 64 3228.324F A4 3250.3277 3278.327F 25 3600.3627 65 3628.364F A5 3650.3677 3678.367F 26 3A00.3A27 66 3A28.3A4F A6 3A50.3A77 3A78.3A7F 27 3E00.3E27 67 3E28.3E4F A7 3E50.3E77 3E78.3E7F 28 2280.22A7 68 22A8.22CF A8 22D0.22F7 22F8.22FF 29 2680.26A7 69 26A8.26CF A9 26D0.26F7 26F8.26FF 2A 2A80.2AA7 6A 2AA8.2ACF AA 2AD0.2AF7 2AF8.2AFF 2B 2E80.2EA7 6B 2EA8.2ECF AB 2ED0.2EF7 2EF8.2EFF 2C 3280.32A7 6C 32A8.32CF AC 32D0.32F7 32F8.32FF 2D 3680.36A7 6D 36A8.36CF AD 36D0.36F7 36F8.36FF 2E 3A80.3AA7 6E 3AA8.3ACF AE 3AD0.3AF7 3AF8.3AFF 2F 3E80.3EA7 6F 3EA8.3ECF AF 3ED0.3EF7 3EF8.3EFF 30 2300.2327 70 2328.234F B0 2350.2377 2378.237F 31 2700.2727 71 2728.274F B1 2750.2777 2778.277F 32 2B00.2B27 72 2B28.2B4F B2 2B50.2B77 2B78.2B7F 33 2F00.2F27 73 2F28.2F4F B3 2F50.2F77 2F78.2F7F 34 3300.3327 74 3328.334F B4 3350.3377 3378.337F 35 3700.3727 75 3728.374F B5 3750.3777 3778.377F 36 3B00.3B27 76 3B28.3B4F B6 3B50.3B77 3B78.3B7F 37 3F00.3F27 77 3F28.3F4F B7 3F50.3F77 3F78.3F7F 38 2380.23A7 78 23A8.23CF B8 23D0.23F7 23F8.23FF 39 2780.27A7 79 27A8.27CF B9 27D0.27F7 27F8.27FF 3A 2B80.2BA7 7A 2BA8.2BCF BA 2BD0.2BF7 2BF8.2BFF 3B 2F80.2FA7 7B 2FA8.2FCF BB 2FD0.2FF7 2FF8.2FFF 3C 3380.33A7 7C 33A8.33CF BC 33D0.33F7 33F8.33FF 3D 3780.37A7 7D 37A8.37CF BD 37D0.37F7 37F8.37FF 3E 3B80.3BA7 7E 3BA8.3BCF BE 3BD0.3BF7 3BF8.3BFF 3F 3F80.3FA7 7F 3FA8.3FCF BF 3FD0.3FF7 3FF8.3FFF Which lets us make the following lookup table: * NOTE: REALLY GOOD IDEA TO SEI BEFORE JSRing TO THIS CODE! * SHOULD HAVE A RTL SOMEWHERE IN HERE (NEEDS TO BE WORKED OUT LATER) * PROBABLY WITH A DISPATCHER ROUTINE * NOTE: ALSO, THIS IS IN BANK 05 GBASL EQU $26 GBASH EQU $27 ****************************************** * ON ENTRY: * Y = LINE #0 (0) - BF (191) * ON EXIT: * Y = UNCHANGED * A = UNDEFINED * 26.27 = BASE LOCATION OF HIRES LINE ****************************************** 0000:B9 CB 00 FINDBAS LDA HIBYTES,Y 0003:85 27 STA GBASH 0005:B9 0B 00 LDA LOBYTES,Y 0008:85 26 STA GBASL 000A:60 RTS 000B: LOBYTES HEX 00000000000000008080808080808080 001B: HEX 00000000000000008080808080808080 002B: HEX 00000000000000008080808080808080 003B: HEX 00000000000000008080808080808080 004B: HEX 2828282828282828A8A8A8A8A8A8A8A8 005B: HEX 2828282828282828A8A8A8A8A8A8A8A8 006B: HEX 2828282828282828A8A8A8A8A8A8A8A8 007B: HEX 2828282828282828A8A8A8A8A8A8A8A8 008B: HEX 5050505050505050D0D0D0D0D0D0D0D0 009B: HEX 5050505050505050D0D0D0D0D0D0D0D0 00AB: HEX 5050505050505050D0D0D0D0D0D0D0D0 00BB: HEX 5050505050505050D0D0D0D0D0D0D0D0 00CB: HIBYTES HEX 2024282C3034383C2024282C3034383C 00DB: HEX 2125292D3135393D2125292D3135393D 00EB: HEX 22262A2E32363A3E22262A2E32363A3E 00FB: HEX 23272B2F33373B3F23272B2F33373B3F 010B: HEX 2024282C3034383C2024282C3034383C 011B: HEX 2125292D3135393D2125292D3135393D 012B: HEX 22262A2E32363A3E22262A2E32363A3E 013B: HEX 23272B2F33373B3F23272B2F33373B3F 014B: HEX 2024282C3034383C2024282C3034383C 015B: HEX 2125292D3135393D2125292D3135393D 016B: HEX 22262A2E32363A3E22262A2E32363A3E 017B: HEX 23272B2F33373B3F23272B2F33373B3F CODE FOR BYTE PLACEMENT: * ENTRY: Y = LINE #, X = BYTE #, A = DISPLAY BITMAP(256 POSSIBLE) * EXIT: Y,X,A = UNKNOWN 018B:84 25 STY $25 (CV) 018D:86 24 STX $24 (CH) 018F:85 1F STA $1F (TEMPLOC) 0191:20 00 00 JSR FINDBAS ;PUTS BASE ADDRESS INTO 26.27 * SINCE ONLY WHOLE BYTES ARE PUT ON SCREEN, X = 0 - $4F (79) * ODD # COLUMNS IN MAIN MEMORY, EVEN # COLUMNS IN AUXILIARY MEMORY 0194:46 24 LSR $24 ;DIVIDE BY 2 0196:90 1E BCC ALTMEM ;BYTE IN AUXILIARY MEMORY 0198:2C 54 C0 BIT MAINMEM ;SET TO WRITE TO MAIN MEM 019B:A4 1F CONT01 LDY $1F ;GET OFFSET FOR BITMAP TO DISPLAY 019D:20 00 00 JSR SETLOC ;SET OFFSET LOCATION FOR BITMAP Y IN 28.29 * NOTE: SETLOC NOT DETERMINED YET, SO ADDRESS = 0000 01A0:A2 07 LDX #$07 ;DISPLAY ALL 8 BYTES ON SCREEN 01A2:A0 00 LOOP01 LDY #$00 ;Y=0 SO WE ONLY GET THE FIRST BYTES 01A4:B1 28 LDA ($28),Y ;GET EACH SUCCESSIVE BYTE 01A6:A4 24 LDY $24 ;OFFSET ON SCREEN 01A8:91 26 STA ($26),Y ;PUT IT ON SCREEN 01AA:E6 29 INC $29 ;INCREMENT THE LOW-BYTE 01AC:A4 25 LDY $25 ;HAVE TO INCREMENT THE LINE # 01AE:C8 INY ;ADD 1 TO IT (NEXT LINE DOWN) 01AF:20 00 00 JSR FINDBAS ;PUT NEW ADDRESS INTO 26.27 01B2:CA DEX ;GO THROUGH EACH BYTE 01B3:10 EC BPL LOOP01 ;IF NOT DONE (X=>0) 01B5:60 RTS 01B6:2C 55 C0 ALTMEM BIT AUXMEM ;IF EVEN COLUMN, DISPLAY IN AUXMEM 01B9:4C 9B 01 JMP CONT01 ;WHY REWRITE CODE? :-)