Jump to content

RXB

+AtariAge Subscriber
  • Content Count

    4,464
  • Joined

  • Last visited

  • Days Won

    2

RXB last won the day on November 20 2016

RXB had the most liked content!

Community Reputation

1,913 Excellent

1 Follower

About RXB

  • Rank
    River Patroller
  • Birthday 01/22/1954

Profile Information

  • Gender
    Male
  • Location
    Vancouver, Washington, USA
  • Interests
    Computers, Science, Technology, TI99/4A
  • Currently Playing
    World of Warcraft. Left4Dead, CoD4
  • Playing Next
    Mosty TI games and some CoD or Diablo

Recent Profile Visitors

18,462 profile views
  1. That is the bill they send me each month I pay.
  2. Anyone else pay $5.00 each month for AtariAge?
  3. Did a mod to use FAC as buffer and not used VDP to save VDP. What do you think? ************************************************************ AORG >6000 TITL 'RXB ROM3' UNUSED DATA >0000,>0000,>0000,>0000 DATA >0000,>0000,>0000,>0000 ************************************************************ * XML table number 7 for RXB ROM3 - must have * * it's origin at >6010 * ************************************************************ * 0 1 2 3 4 5 6 DATA RROLL,LROLL,UROLL,DROLL,>0000,>0000,>0000 * 7 8 9 A B C D DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000 * E F DATA >0000,>0000 ************************************************************ * XML table number 8 for RXB ROM3 - must have * * it's origin at >6030 * ************************************************************ * 0 1 2 3 4 5 6 7 DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000 * 8 9 A B C D E F DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000 ************************************************************ * Start of routines * ************************************************************ * Windy XB routines from previous Assembly adapted ************************************************************ * repetition = repeat number times ************************************************************ ************************************************************ * CALL RROLL(repetion,...) * ************************************************************ RROLL MOV R11,R8 * save return address LI R3,31 * 31 right edge Screen Address BL @VGWITE * Move IT (VDP to FAC RAM) * Buffer has 24 far right characters CLR R3 * Screen address LI R5,1 * Destination * Copy everything on screen 1 char right. Doesn't matter that * first column will get wrong chars because they will be * overwritten by previous last column in next section. LI R1,767 * copy all but last char on screen BL @H2LCPY * Move IT, high to low VRAM * Moved all on screen 1 right CLR R3 * 0 left edge Screen Address LI R2,24 * ROW counter BL @B2CCPY * Move IT B *R8 * RETURN ************************************************************ * CALL LROLL(repetion,...) * ************************************************************ LROLL MOV R11,R8 * save return address CLR R3 * 0 left edge Screen Address BL @C2BCPY * Move IT * Buffer has 24 far left characters LI R3,1 * Screen address CLR R5 * Destination * Copy everything on screen 1 char left. Doesn't matter that * last column will get wrong chars because they will be * overwritten by previous first column in next section. LI R1,767 * copy all but first char on screen BL @L2HCPY * Move IT, low to high VRAM * Moved all on screen 1 left LI R3,31 * 31 right edge Screen Address BL @B2CCPY * Move IT B *R8 * RETURN *********************************************************** * CALL UROLL(repetion,...) * *********************************************************** UROLL MOV R11,R8 * save return address CLR R3 * 0 top Sreeen Adress LI R2,32 * 32 bytes length BL @L2HCPY * Move IT * Buffer has 32 top line characters LI R3,32 * 2nd line Screen address CLR R5 * 0 screen Destination LI R1,736 * Number of Bytes BL @L2HCPY * Move IT * Moved all on screen up 1 LI R3,736 * Bottom left edge Screen Address LI R2,32 * Get 32 Bytes length BL @L2HCPY * Move IT B *R8 * RETURN * ********************************************************** * CALL DROLL(repetion,...) * ************************************************************ DROLL MOV R11,R8 * save return address LI R3,736 * Bottom of Sreeen Adress LI R2,32 * 32 bytes length BL @L2HCPY * Move IT, low to high VRAM * Buffer has 32 top line characters CLR R3 * 0 Screen address LI R5,32 * 2nd line Destination LI R1,736 * Number of Bytes BL @H2LCPY * Move IT, high to low VRAM * Moved all on screen down 1 CLR R3 * Top of screen LI R2,32 * Get 32 Bytes BL @L2HCPY * Move IT, low to high VRAM B *R8 * RETURN *********************************************************** ** Low RAM to High VDP Copy ******************************* *********************************************************** L2HCPY MOV R11,R9 * save return address LI R5,FAC * FAC RAM BUFFER L2HCPR BL @GVWITE * Move IT (RAM to VDP) AI R3,32 * Screen Address+1 INC R5 * Buffer+1 DEC R2 * COUNTER-1 JNE L2HCPR * 0? No, loop B *R9 * RETURN *********************************************************** ** High VDP to Low VDP Copy ******************************* *********************************************************** H2LCPY MOV R11,R9 * save return address * Adjust source and dest to copy from last byte to first A R1,R3 * one past end of source DEC R3 * adjust to last source char A R1,R5 * one past end of dest DEC R5 * adjust to last dest char H2LCPR BL @MVDN * Move IT DEC R3 * source-1 DEC R5 * dest-1 DEC R1 * counter-1 JNE H2LCPR * 0? No, loop B *R9 * RETURN ************************************************************ ** Column Copy VDP to RAM FAC Buffer *********************** ************************************************************ C2BCPY MOV R11,R9 * save return address LI R2,24 * ROW counter LI R5,FAC * FAC RAM BUFFER C2BCPR BL @VGWITE * Move IT (VDP to RAM) DEC R2 * ROW COUNTER-1 JNE C2BCPR * 0? No, loop B *R9 * RETURN ************************************************************ ** RAM Buffer to Column Copy ****************************** ************************************************************ B2CCPY MOV R11,R9 * save return address LI R2,24 * ROW counter LI R5,FAC * FAC RAM BUFFER B2CCPR BL @GVWITE * Move IT (RAM to VDP) DEC R2 * ROW COUNTER-1 JNE B2CCPR * 0? No, loop B *R9 * RETURN ************************************************************ ** VRAM to VRAM Single Byte Copy *************************** ************************************************************ MVDN MOVB @>83E7,*R15 * R3LSB Write out read address MOVB R3,*R15 * R3MSB Write out read address MOVB @>8800,R7 * Read VDP data byte MOVB @>83EB,*R15 * R5LSB Write out write address ORI R5,>4000 * Enable VDP write MOVB R5,*R15 * R5MSB Write out write address MOVB R7,@>8C00 * Write vdp data byte RT * RETURN ************************************************************ ** VDP to RAM Single Byte Copy ***************************** ************************************************************ VGWITE MOVB @>83E7,*R15 * R3LSB Write out read address ORI R2,>4000 * Enable VDP write MOVB R3,*R15 * R3MSB Write out read address NOP MOVB @>8800,*R5+ * Read VDP data byte to FAC INC R5 * Buffer+1 AI R3,32 * Screen Address+32 RT ************************************************************ ** RAM to VDP Single Byte Copy ***************************** ************************************************************ GVWITE MOVB @>83E7,*R15 * Write out read address ORI R3,>4000 * Enable VDP write MOVB R3,*R15 * R3MSB Write out read address MOVB *R5+,@>8C00 * Move byte FAC RAM to VDP ADDRESS INC R5 * Buffer+1 AI R3,32 * Screen Address+32 RT *********************************************************** * >7000 data routines * ALCEND is EA INIT * LOW1 is XB INIT * CHARS is RXB character set definitions 8 bytes each *********************************************************** AORG >7000 *********************************************************** ALCEND DATA >205A,>24F4,>4000,>AA55 DATA >2038,>2096,>2038,>217E DATA >2038,>21E2,>2038,>234C DATA >2038,>2432,>2038,>246E DATA >2038,>2484,>2038,>2490 DATA >2038,>249E,>2038,>24AA DATA >2038,>24B8,>2038,>2090 DATA >0000,>0000,>0000,>0000 DATA >0000,>0000,>0000,>0000 DATA >0000,>0000,>0000,>0000 DATA >0000,>0000,>0000,>0000 DATA >6520,>C060,>2004,>0281 DATA >4000,>130E,>C001,>0202 DATA >834A,>8CB0,>1606,>8CB0 DATA >1604,>8CB0,>1602,>C030 DATA >0450,>0221,>0008,>10EF DATA >0200,>2500,>C800,>8322 DATA >02E0,>83E0,>0460,>00CE DATA >C81D,>8322,>10F9,>C01D DATA >C06D,>0002,>06A0,>20DC DATA >C0C1,>0603,>0223,>8300 DATA >D0D3,>1361,>0983,>0643 DATA >1612,>C000,>165C,>C0C5 DATA >05C3,>06A0,>2406,>1653 DATA >05C3,>06A0,>23CA,>0204 DATA >834A,>0202,>0008,>DC74 DATA >0602,>15FD,>0380,>06A0 DATA >20F8,>10F5,>C041,>1347 DATA >0A81,>9060,>8312,>1143 DATA >0981,>C141,>0A35,>0225 DATA >0008,>A160,>8310,>045B DATA >C24B,>0643,>1634,>C0C5 DATA >06A0,>23CA,>C0C1,>06A0 DATA >2406,>112D,>06A0,>211C DATA >06A0,>23CA,>6004,>0A30 DATA >A040,>0459,>C28B,>0A51 DATA >09D1,>C201,>D120,>8343 DATA >0984,>1303,>0600,>1123 DATA >0580,>0206,>0001,>C0C5 DATA >0223,>0004,>06A0,>23CA DATA >C0C1,>0643,>05C3,>06A0 DATA >23CA,>0581,>6044,>3981 DATA >C186,>1611,>C187,>0608 DATA >15F5,>0606,>A184,>8180 DATA >150A,>05C3,>045A,>0200 DATA >0700,>0460,>2084,>0200 DATA >1C00,>0460,>2084,>0200 DATA >1400,>0460,>2084,>C01D DATA >C06D,>0002,>06A0,>20DC DATA >C0C1,>0603,>0223,>8300 DATA >D0D3,>0983,>160E,>C000 DATA >1622,>0202,>0008,>0204 DATA >834A,>C0C5,>06A0,>23CA DATA >CD01,>05C3,>0642,>15FA DATA >0380,>0643,>160F,>C000 DATA >1612,>C0C5,>05C3,>06A0 DATA >2406,>160B,>05C3,>06A0 DATA >23CA,>C101,>0201,>834A DATA >0460,>20CA,>06A0,>20F8 DATA >10F8,>0460,>2166,>0460 DATA >216E,>C81D,>2038,>C82D DATA >0002,>83E2,>C82D,>0004 DATA >2044,>02E0,>83E0,>C80B DATA >2040,>C020,>2044,>06A0 DATA >20DC,>C0C1,>0603,>0223 DATA >8300,>D0D3,>0983,>0603 DATA >1332,>0643,>164A,>C2A0 DATA >2038,>162D,>C0C5,>05C3 DATA >06A0,>2406,>9801,>2058 DATA >1620,>0206,>0008,>0204 DATA >834A,>C0C5,>06A0,>23CA DATA >CD01,>05C3,>0646,>15FA DATA >06A0,>22DA,>0225,>0004 DATA >C105,>C046,>06A0,>23E6 DATA >05C4,>D050,>0981,>06A0 DATA >23E6,>C2E0,>2040,>C820 DATA >203E,>830C,>02E0,>2038 DATA >0380,>0200,>0700,>C2E0 DATA >2040,>0460,>2084,>0200 DATA >1C00,>0460,>226E,>C08B DATA >0643,>16F3,>C0C5,>06A0 DATA >23CA,>C0C1,>06A0,>2406 DATA >1102,>0460,>226A,>C020 DATA >2038,>06A0,>211C,>6004 DATA >0A10,>A0C0,>06A0,>23CA DATA >0452,>06A0,>227E,>0206 DATA >834A,>CD83,>DDA0,>2058 DATA >DD84,>CD81,>C0C1,>1602 DATA >04D6,>1005,>0603,>06A0 DATA >2406,>0981,>C581,>C020 DATA >2044,>06A0,>22DA,>0460 DATA >225A,>C80B,>203A,>C805 DATA >203C,>C2E0,>601E,>069B DATA >C020,>2044,>C160,>203C DATA >D190,>0986,>C820,>830C DATA >203E,>C806,>830C,>C806 DATA >8350,>C2E0,>6012,>069B DATA >C020,>2044,>0206,>834A DATA >0204,>001C,>CD84,>DDA0 DATA >2058,>DD84,>C5A0,>831C DATA >C0A0,>830C,>1309,>C116 DATA >C0C0,>0583,>D073,>06A0 DATA >241A,>0584,>0602,>15FA DATA >C2E0,>6028,>069B,>C020 DATA >2044,>C160,>203C,>C2E0 DATA >203A,>045B,>C01D,>C06D DATA >0002,>06A0,>20DC,>C0C1 DATA >0603,>0223,>8300,>D0D3 DATA >0983,>0603,>1302,>0643 DATA >1623,>C000,>1628,>C02D DATA >0004,>C0C5,>05C3,>06A0 DATA >2406,>9801,>2058,>161D DATA >05C3,>06A0,>23CA,>C041 DATA >1307,>C181,>0601,>C0C1 DATA >06A0,>2406,>9050,>1A15 DATA >DC01,>1309,>C0C6,>0981 DATA >C141,>06A0,>2406,>DC01 DATA >0583,>0605,>15FA,>0380 DATA >06A0,>227E,>C02D,>0004 DATA >10E6,>0460,>2166,>0460 DATA >216E,>0200,>1300,>0460 DATA >2084,>06C3,>D803,>8C02 DATA >06C3,>D803,>8C02,>1000 DATA >D060,>8800,>06C1,>D060 DATA >8800,>06C1,>045B,>06C4 DATA >D804,>8C02,>06C4,>0264 DATA >4000,>D804,>8C02,>1000 DATA >D801,>8C00,>06C1,>D801 DATA >8C00,>06C1,>045B,>06C3 DATA >D803,>8C02,>06C3,>D803 DATA >8C02,>1000,>D060,>8800 DATA >045B,>06C4,>D804,>8C02 DATA >06C4,>0264,>4000,>D804 DATA >8C02,>1000,>D801,>8C00 DATA >045B,>C83E,>83E2,>02E0 DATA >83E0,>C80B,>204E,>C081 DATA >0281,>0040,>1B0A,>C0A1 DATA >6010,>0281,>0004,>1605 DATA >C0A2,>0002,>0692,>2466 DATA >1001,>0692,>02E0,>2038 DATA >C80B,>83F6,>0380,>0200 DATA >0B00,>0460,>2084,>02E0 DATA >83E0,>C80B,>204E,>06A0 DATA >000E,>02E0,>2038,>C80B DATA >83F6,>0380,>06A0,>24CA DATA >D82D,>0002,>8C00,>0380 DATA >06A0,>24CA,>D831,>8C00 DATA >0602,>16FC,>0380,>06A0 DATA >24D0,>DB60,>8800,>0002 DATA >0380,>06A0,>24D0,>DC60 DATA >8800,>0602,>16FC,>0380 DATA >C05D,>D82D,>0001,>8C02 DATA >0261,>8000,>D801,>8C02 DATA >0380,>0201,>4000,>1001 DATA >04C1,>C09D,>D820,>203D DATA >8C02,>E081,>D802,>8C02 DATA >C06D,>0002,>C0AD,>0004 DATA >045B ********************************************************** * EDITOR ASSEMBLER LOWER 8K SUPPORT * Data for Initialization of * Memory Expansion * LOW1 DATA >A55A,>2128,>2398,>225A LOW2 DATA >A000,>FFD7,>2676,>3F38 LOW3 DATA >0064,>2000,>2EAA,>2094 DATA >21C4,>2094,>2196,>2094,>21DE,>2094,>21F4 DATA >2094,>2200,>2094,>220E,>2094,>221A,>2094,>2228 DATA >209A,>22B2,>20DA,>23BA,>C80B,>2030,>D060 DATA >8349,>2060,>20FC,>132A,>C020,>8350,>1311,>06A0 DATA >2646,>101E,>0281,>3F38,>1319,>C001,>0202 DATA >834A,>8CB0,>1611,>8CB0,>160F,>8CB0,>160D,>C810 DATA >2022,>02E0,>20BA,>C020,>2022,>1309,>0690 DATA >02E0,>83E0,>C2E0,>2030,>045B,>0221,>0008,>10E4 DATA >0200,>0F00,>D800,>8322,>02E0,>83E0,>0460 DATA >00CE,>5820,>20FC,>8349,>02E0,>2094,>0380,>C83E DATA >83E2,>02E0,>83E0,>C80B,>20AA,>C081,>0281 DATA >8000,>1B07,>09C1,>0A11,>0A42,>09B2,>A0A1,>0CFA DATA >C092,>0692,>02E0,>2094,>C80B,>83F6,>0380 DATA >D060,>8373,>0981,>C87E,>8304,>F820,>20FC,>8349 DATA >02E0,>83E0,>C2E0,>2030,>045B,>02E0,>83E0 DATA >C80B,>20AA,>06A0,>000E,>02E0,>2094,>C80B,>83F6 DATA >0380,>06A0,>223A,>D82D,>0002,>8C00,>0380 DATA >06A0,>223A,>D831,>8C00,>0602,>16FC,>0380,>06A0 DATA >2240,>DB60,>8800,>0002,>0380,>06A0,>2240 DATA >DC60,>8800,>0602,>16FC,>0380,>C05D,>D82D,>0001 DATA >8C02,>0261,>8000,>D801,>8C02,>0380,>0201 DATA >4000,>1001,>04C1,>C09D,>D820,>2099,>8C02,>E081 DATA >D802,>8C02,>C06D,>0002,>C0AD,>0004,>045B DATA >0204,>834A,>C014,>C184,>04F6,>04F6,>C140,>1323 DATA >0740,>0203,>0040,>04F6,>04D6,>0280,>0064 DATA >1A13,>0280,>2710,>1A08,>0583,>C040,>04C0,>3C20 DATA >20FA,>D920,>83E3,>0003,>0583,>C040,>04C0 DATA >3C20,>20FA,>D920,>83E3,>0002,>D920,>83E1,>0001 DATA >D520,>83E7,>0545,>1101,>0514,>045B,>C17E DATA >53E0,>20FC,>C020,>8356,>C240,>0229,>FFF8,>0420 DATA >2114,>D0C1,>0983,>0704,>0202,>208C,>0580 DATA >0584,>80C4,>1306,>0420,>2114,>DC81,>9801,>20FE DATA >16F6,>C104,>1352,>0284,>0007,>154F,>04E0 DATA >83D0,>C804,>8354,>C804,>2036,>0584,>A804,>8356 DATA >C820,>8356,>2038,>02E0,>83E0,>04C1,>020C DATA >0F00,>C30C,>1301,>1E00,>022C,>0100,>04E0,>83D0 DATA >028C,>2000,>1332,>C80C,>83D0,>1D00,>0202 DATA >4000,>9812,>20FF,>16EE,>A0A0,>20A4,>1003,>C0A0 DATA >83D2,>1D00,>C092,>13E6,>C802,>83D2,>05C2 DATA >C272,>D160,>8355,>1309,>9C85,>16F2,>0985,>0206 DATA >208C,>9CB6,>16ED,>0605,>16FC,>0581,>C801 DATA >203A,>C809,>2034,>C80C,>2032,>0699,>10E2,>1E00 DATA >02E0,>209A,>C009,>0420,>2114,>09D1,>1604 DATA >0380,>02E0,>209A,>04C1,>06C1,>D741,>F3E0,>20FC DATA >0380,>C80B,>2030,>02E0,>20BA,>0420,>2124 DATA >02E0,>83E0,>1303,>C2E0,>2030,>045B,>D820,>20BA DATA >8322,>0460,>00CE,>04E0,>2022,>53E0,>20FC DATA >C020,>8356,>0420,>2120,>0008,>1332,>0220,>FFF7 DATA >0201,>0200,>0420,>210C,>0580,>C800,>202E DATA >C1E0,>2024,>C147,>04CC,>06A0,>25E0,>0283,>0001 DATA >1624,>058C,>04C3,>1023,>0283,>0046,>161E DATA >04C2,>06A0,>262E,>0283,>003A,>16F7,>C020,>202E DATA >0600,>0201,>0100,>0420,>210C,>06A0,>25E0 DATA >C020,>2022,>1307,>06A0,>2646,>1005,>CB4E,>0016 DATA >C3A0,>2022,>0380,>D740,>F3E0,>20FC,>0380 DATA >06A0,>25C2,>04C4,>D123,>2662,>0974,>C808,>202C DATA >06A0,>2594,>0464,>23F8,>0580,>0240,>FFFE DATA >C120,>2024,>A100,>1808,>8804,>2026,>1B05,>C160 DATA >2024,>C804,>2024,>100A,>C120,>2028,>A100 DATA >8804,>202A,>140C,>C160,>2028,>C804,>2028,>C1C5 DATA >0209,>0008,>06A0,>262E,>0609,>16FC,>10B6 DATA >0200,>0800,>10CC,>A005,>C800,>2022,>10AF,>A800 DATA >202C,>13AC,>0200,>0B00,>10C2,>A005,>C1C0 DATA >10A6,>A005,>DDC0,>DDE0,>20DB,>10A1,>A005,>06A0 DATA >2566,>C000,>1316,>0226,>FFF8,>8106,>1B02 DATA >0514,>1096,>8594,>16F8,>89A4,>0002,>0002,>16F4 DATA >89A4,>0004,>0004,>16F0,>C0E6,>0006,>C250 DATA >C403,>C009,>16FC,>0224,>0008,>C804,>202A,>10EA DATA >A005,>06A0,>2566,>0226,>FFF8,>8106,>13E3 DATA >C296,>1501,>050A,>8294,>16F7,>89A4,>0002,>0002 DATA >16F3,>89A4,>0004,>0004,>16EF,>C296,>1516 DATA >C0E6,>0006,>C253,>C4C0,>C0C9,>16FC,>C246,>6244 DATA >C286,>022A,>0008,>C0C6,>0643,>064A,>C693 DATA >0649,>16FB,>0224,>0008,>C804,>202A,>10D9,>CB44 DATA >0002,>0200,>0C00,>0460,>2432,>0460,>2494 DATA >C28B,>0209,>0006,>C1A0,>202A,>0226,>FFF8,>C106 DATA >8806,>2028,>1AF3,>C806,>202A,>06A0,>262E DATA >DDA0,>20E1,>0609,>16FA,>C580,>0206,>4000,>045A DATA >C28B,>04C0,>C30C,>1308,>06A0,>262E,>D020 DATA >20E1,>06A0,>262E,>A003,>045A,>0209,>0004,>06A0 DATA >262E,>06A0,>25C2,>0A40,>A003,>0609,>16F8 DATA >045A,>0223,>FFD0,>0283,>000A,>1A05,>0223,>FFF9 DATA >0283,>0019,>1B01,>045B,>0200,>0A00,>0460 DATA >2432,>02E0,>83E0,>0200,>2032,>C330,>C270,>C830 DATA >8354,>C830,>8356,>C050,>1D00,>9820,>4000 DATA >20FF,>161D,>0699,>101B,>1E00,>02E0,>20DA,>C020 DATA >202E,>0201,>20DB,>0202,>0004,>0420,>2118 DATA >7000,>0950,>1610,>0982,>C001,>0201,>203C,>0420 DATA >2118,>04C8,>0602,>11D7,>D0F1,>0983,>A203 DATA >045B,>02E0,>20DA,>04C0,>06C0,>0460,>2432,>0201 DATA >3F40,>0221,>FFF8,>C011,>1105,>8060,>202A DATA >16F9,>05CB,>045B,>0200,>0D00,>045B,>2D52,>5163 DATA >6483,>8455,>045C,>5B5F,>5EF0,>F003,>F0F0 DATA >4700,>00C8,>3F38 LOW4 DATA >5554,>4C54,>4142,>2022,>5041,>4420,>2020,>8300 DATA >4750,>4C57,>5320,>83E0,>534F,>554E,>4420 DATA >8400,>5644,>5052,>4420,>8800,>5644,>5053,>5441 DATA >8802,>5644,>5057,>4420,>8C00,>5644,>5057 DATA >4120,>8C02,>5350,>4348,>5244,>9000,>5350,>4348 DATA >5754,>9400,>4752,>4D52,>4420,>9800,>4752 DATA >4D52,>4120,>9802,>4752,>4D57,>4420,>9C00,>4752 DATA >4D57,>4120,>9C02,>5343,>414E,>2020,>000E DATA >584D,>4C4C,>4E4B,>2104,>4B53,>4341,>4E20,>2108 DATA >5653,>4257,>2020,>210C,>564D,>4257,>2020 DATA >2110,>5653,>4252,>2020,>2114,>564D,>4252,>2020 DATA >2118,>5657,>5452,>2020,>211C,>4453,>524C DATA >4E4B,>2120,>4C4F,>4144,>4552,>2124,>4750,>4C4C DATA >4E4B,>2100 *********************************************************** * * RXB Character set *********************************************************** CHARS BYTE >00,>10,>10,>10,>10,>10,>00,>10 * ! 33 BYTE >00,>50,>50,>50,>00,>00,>00,>00 * " 34 BYTE >00,>50,>50,>F8,>50,>F8,>50,>50 * # 35 BYTE >00,>20,>78,>A0,>70,>28,>F0,>20 * $ 36 BYTE >00,>C0,>C8,>10,>20,>40,>98,>18 * % 37 BYTE >00,>40,>A0,>A0,>40,>A8,>90,>68 * & 38 BYTE >00,>C0,>40,>80,>00,>00,>00,>00 * ' 39 BYTE >00,>08,>10,>20,>20,>20,>10,>08 * ( 40 BYTE >00,>10,>08,>04,>04,>04,>08,>10 * ) 41 BYTE >00,>00,>28,>10,>7C,>10,>28,>00 * * 42 BYTE >00,>00,>10,>10,>7C,>10,>10,>00 * + 43 BYTE >00,>00,>00,>00,>00,>60,>20,>40 * , 44 BYTE >00,>00,>00,>00,>F8,>00,>00,>00 * - 45 BYTE >00,>00,>00,>00,>00,>00,>60,>60 * . 46 BYTE >00,>00,>08,>10,>20,>40,>80,>00 * / 47 BYTE >00,>70,>88,>98,>A8,>C8,>88,>70 * 0 48 BYTE >00,>20,>60,>20,>20,>20,>20,>70 * 1 49 BYTE >00,>70,>88,>08,>30,>40,>80,>F8 * 2 50 BYTE >00,>70,>88,>08,>30,>08,>88,>70 * 3 51 BYTE >00,>10,>30,>50,>90,>F8,>10,>10 * 4 52 BYTE >00,>F0,>80,>80,>F0,>08,>88,>70 * 5 53 BYTE >00,>70,>80,>80,>F0,>88,>88,>70 * 6 54 BYTE >00,>F8,>08,>10,>20,>40,>40,>40 * 7 55 BYTE >00,>70,>88,>88,>70,>88,>88,>70 * 8 56 BYTE >00,>70,>88,>88,>78,>08,>88,>70 * 9 57 BYTE >00,>00,>60,>60,>00,>60,>60,>00 * : 58 BYTE >00,>00,>60,>60,>00,>60,>20,>40 * ; 59 BYTE >00,>08,>10,>20,>40,>20,>10,>08 * < 60 BYTE >00,>00,>7C,>00,>00,>7C,>00,>00 * = 61 BYTE >00,>20,>10,>08,>04,>08,>10,>20 * > 62 BYTE >00,>70,>88,>10,>20,>20,>00,>20 * ? 63 BYTE >00,>38,>44,>5C,>54,>5C,>40,>38 * @ 64 BYTE >00,>70,>88,>88,>F8,>88,>88,>88 * A 65 BYTE >00,>F0,>48,>48,>70,>48,>48,>F0 * B 66 BYTE >00,>70,>88,>80,>80,>80,>88,>70 * C 67 BYTE >00,>F0,>48,>48,>48,>48,>48,>F0 * D 68 BYTE >00,>F8,>80,>80,>F0,>80,>80,>F8 * E 69 BYTE >00,>F8,>80,>80,>F0,>80,>80,>80 * F 70 BYTE >00,>70,>88,>80,>80,>98,>88,>78 * G 71 BYTE >00,>88,>88,>88,>F8,>88,>88,>88 * H 72 BYTE >00,>F8,>20,>20,>20,>20,>20,>F8 * I 73 BYTE >00,>08,>08,>08,>08,>08,>88,>70 * J 74 BYTE >00,>88,>90,>A0,>C0,>A0,>90,>88 * K 75 BYTE >00,>80,>80,>80,>80,>80,>80,>F8 * L 76 BYTE >00,>88,>D8,>A8,>A8,>88,>88,>88 * M 77 BYTE >00,>88,>88,>C8,>A8,>98,>88,>88 * N 78 BYTE >00,>70,>88,>88,>88,>88,>88,>70 * O 79 BYTE >00,>F0,>88,>88,>88,>F0,>80,>80 * P 80 BYTE >00,>70,>88,>88,>88,>A8,>90,>68 * Q 81 BYTE >00,>F0,>88,>88,>F0,>A0,>90,>88 * R 82 BYTE >00,>70,>88,>80,>70,>08,>88,>70 * S 83 BYTE >00,>F8,>20,>20,>20,>20,>20,>20 * T 84 BYTE >00,>44,>44,>44,>44,>44,>44,>38 * U 85 BYTE >00,>44,>44,>44,>28,>28,>10,>10 * V 86 BYTE >00,>88,>88,>88,>88,>A8,>A8,>50 * W 87 BYTE >00,>88,>88,>50,>20,>50,>88,>88 * X 88 BYTE >00,>88,>88,>88,>50,>20,>20,>20 * Y 89 BYTE >00,>F8,>08,>10,>20,>40,>80,>F8 * Z 90 BYTE >00,>78,>40,>40,>40,>40,>40,>78 * [ 91 BYTE >00,>00,>80,>40,>20,>10,>08,>00 * \ 92 BYTE >00,>F0,>10,>10,>10,>10,>10,>F0 * ] 93 BYTE >00,>20,>50,>88,>00,>00,>00,>00 * ^ 94 BYTE >00,>00,>00,>00,>00,>00,>00,>FF * _ 95 BYTE >00,>18,>10,>08,>00,>00,>00,>00 * ` 96 BYTE >00,>00,>00,>60,>10,>70,>90,>68 * a 97 BYTE >00,>00,>40,>40,>70,>48,>48,>B0 * b 98 BYTE >00,>00,>00,>60,>90,>80,>90,>60 * c 99 BYTE >00,>00,>10,>10,>70,>90,>90,>68 * d 100 BYTE >00,>00,>00,>60,>90,>E0,>80,>70 * e 101 BYTE >00,>00,>30,>40,>E0,>40,>40,>40 * f 102 BYTE >00,>00,>00,>70,>90,>70,>10,>60 * g 103 BYTE >00,>00,>80,>80,>E0,>90,>90,>90 * h 104 BYTE >00,>00,>20,>00,>20,>20,>20,>70 * i 105 BYTE >00,>00,>10,>10,>10,>10,>90,>60 * j 106 BYTE >00,>00,>80,>90,>A0,>C0,>A0,>90 * k 107 BYTE >00,>00,>60,>20,>20,>20,>20,>70 * l 108 BYTE >00,>00,>00,>D0,>A8,>A8,>A8,>A8 * m 109 BYTE >00,>00,>00,>B0,>48,>48,>48,>48 * n 110 BYTE >00,>00,>00,>60,>90,>90,>90,>60 * o 111 BYTE >00,>00,>F0,>48,>48,>70,>40,>40 * p 112 BYTE >00,>00,>78,>90,>90,>70,>10,>10 * q 113 BYTE >00,>00,>00,>B0,>C8,>80,>80,>80 * r 114 BYTE >00,>00,>00,>70,>80,>70,>08,>F0 * s 115 BYTE >00,>00,>40,>E0,>40,>40,>50,>20 * t 116 BYTE >00,>00,>00,>90,>90,>90,>90,>68 * u 117 BYTE >00,>00,>00,>88,>88,>88,>50,>20 * v 118 BYTE >00,>00,>00,>88,>88,>A8,>A8,>50 * w 119 BYTE >00,>00,>00,>88,>50,>20,>50,>88 * x 120 BYTE >00,>00,>00,>48,>48,>38,>08,>70 * y 121 BYTE >00,>00,>00,>F8,>10,>20,>40,>F8 * z 122 BYTE >00,>18,>20,>20,>40,>20,>20,>18 * { 123 BYTE >00,>20,>20,>20,>00,>20,>20,>20 * | 124 BYTE >00,>C0,>20,>20,>10,>20,>20,>C0 * } 125 BYTE >00,>00,>00,>40,>A8,>10,>00,>00 * ~ 126 *********************************************************** END
  4. LEE going to use your suggestion to save 32 bytes of the rolled line off screen to FAC as suggested instead of using VDP Rollout area >03C0. As I save the REPETITON value in SREF (>831C) used for only making new strings or moving strings in XB. So this should speed up ROLL over all speed slightly. When I get to making RXB HPUT and VPUT commands into Assembly ROMs this will also speed up SCROLLs.
  5. Will have to work on it tomorrow and love your changes, so far not a issue for size just used to making code as compact as possible.
  6. I am writing my GPL routines now, including SCROLL up, left, right and down too. Along with ROLL up, left, right and down.
  7. Ok have the ROM3 set up and looks great, still have to write the GPL to make it work. **************************************************************** AORG >6000 TITL 'RXB ROM3' UNUSED DATA >0000,>0000,>0000,>0000 DATA >0000,>0000,>0000,>0000 **************************************************************** * XML table number 7 for RXB ROM3 - must have * * it's origin at >6010 * **************************************************************** * 0 1 2 3 4 5 6 DATA RROLL,LROLL,UROLL,DROLL,>0000,>0000,>0000 * 7 8 9 A B C D DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000 * E F DATA >0000,>0000 **************************************************************** * XML table number 8 for RXB ROM3 - must have * * it's origin at >6030 * **************************************************************** * 0 1 2 3 4 5 6 7 DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000 * 8 9 A B C D E F DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000 * F **************************************************************** * Start of routines * **************************************************************** * Windy XB routines from previous Assembly adapted **************************************************************** * direction = U (up), D (Down), L (Left), R (Right) * repetition = repeat number times * string = string or string variable to display just like PRINT **************************************************************** * CALL ROLL(direction,...) * CALL ROLL(direction,repetition,...) * Assembly roll the screen like a drum with number of times also **************************************************************** * XML MVDN (MV05 for VDP) (VDP to VDP) * ********************************************************** * CALL RROLL(direction,repetion,...) * ************************************************************ RROLL MOV R11,R8 * save return address LI R2,24 * ROW counter LI R3,31 * 31 right edge Screen Address LI R5,>03C0 * Buffer for 24 characters LI R1,1 * 1 Byte BL @LRLP1 * Move IT * Buffer has 24 far right characters LI R2,24 * ROW counter CLR R3 * Screen address LI R5,1 * Destination BL @LRLP2 * Move IT * Moved all on screen 1 right LI R2,24 * ROW counter LI R3,>03C0 * Buffer for 1 character LI R5,1 * 1 left edge Screen Address LI R1,1 * Get 1 Byte BL @LRLP3 * Move IT B *R8 * RETURN ************************************************************ * CALL LROLL(direction,repetion,...) * ************************************************************ LROLL MOV R11,R8 * save return address LI R2,24 * ROW counter CLR R3 * 0 left edge Screen Address LI R5,>03C0 * Buffer for 24 characters LI R1,1 * 1 Byte BL @LRLP1 * Move IT * Buffer has 24 far left characters LI R2,24 * ROW counter LI R3,1 * Screen address CLR R5 * Destination BL @LRLP2 * Move IT * Moved all on screen 1 left LI R2,24 * ROW counter LI R3,>03C0 * Buffer for 1 character LI R5,31 * 31 right edge Screen Address LI R1,1 * Get 1 Byte BL @LRLP3 * Move IT B *R8 * RETURN ************************************************************ LRLP1 MOV R11,R9 * save return address LRR1 BL @MIT * Move IT INC R5 * Buffer+1 AI R3,32 * Screen Address+32 DEC R2 * ROW COUNTER-1 JNE LRR1 * 0? No loop B *R9 * RETURN ************************************************************ LRLP2 MOV R11,R9 * save return address LRLPM LI R1,31 * Number of Bytes LRLPN BL @MIT * Move IT AI R3,32 * VDP address+32 AI R5,32 * VDP destination address+32 INC R1 * COLUMN COUNTER+1 JNE LRLPN * 0? No loop DEC R2 * ROW COUNTER-1 JNE LRLPM * 0? No loop B *R9 * RETURN ************************************************************ LRLP3 MOV R11,R9 * save return address LRLPO BL @MIT * Move IT INC R3 * Buffer+1 AI R5,32 * Screen Address+32 DEC R2 * ROW COUNTER-1 JNE LRLPO * 0? No loop B *R9 * RETURN ************************************************************ * CALL UROLL(direction,repetion,...) * ************************************ *********************** UROLL MOV R11,R8 * save return address CLR R3 * 0 top Sreeen Adress LI R5,>03C0 * Buffer for 32 characters LI R1,32 * 32 bytes length BL @UDLP1 * Move IT * Buffer has 32 top line characters LI R3,32 * 2nd line Screen address CLR R5 * 0 screen Destination LI R1,736 * Number of Bytes BL @UDLP2 * Move IT * Moved all on screen up 1 LI R3,>03C0 * Buffer for 32 characters LI R5,736 * Bottom left edge Screen Address LI R1,32 * Get 32 Bytes length BL @UDLP3 * Move IT B *R8 * RETURN * ********************************************************** * CALL DROLL(direction,repetion,...) * ************************************************************ DROLL MOV R11,R8 * save return address LI R3,736 * Bottom of Sreeen Adress LI R5,>03C0 * Buffer for 32 characters LI R1,32 * 32 bytes length BL @UDLP1 * Move IT * Buffer has 32 top line characters CLR R3 * 0 Screen address LI R5,32 * 2nd line Destination LI R1,736 * Number of Bytes BL @UDLP2 * Move IT * Moved all on screen up 1 LI R3,>03C0 * Buffer for 32 characters CLR R5 * Top left edge Screen Address LI R1,32 * Get 32 Bytes BL @UDLP3 * Move IT B *R9 * RETURN *********************************************************** UDLP1 MOV R11,R9 * save return address UDR1 BL @MIT * Move IT INC R3 * BUFFER+1 INC R5 * SCREEN+1 DEC R1 * COUNTER-1 JNE UDR1 * 0? No loop B *R9 * RETURN *********************************************************** UDLP2 MOV R11,R9 * save return address UDR2 BL @MIT * Move IT INC R3 * lower screen line INC R5 * upper scren line DEC R1 * COUNTER-1 JNE UDR2 * 0? No loop B *R9 * RETURN *********************************************************** UDLP3 MOV R11,R9 * save return address UDR3 BL @MIT * Move IT INC R3 * BUFFER+1 INC R5 * SCREEN+1 DEC R1 * COUNTER-1 JNE UDR3 * 0? No loop B *R9 * RETURN *********************************************************** MIT MOV R11,R10 * save return address MOVB @>83E7,*R15 * Write out read address MOVB R3,*R15 MOVB @>8800,R7 * Read a byte MOVB @>83EB,*R15 * Write out write address ORI R5,>4000 * Enable VDP write MOVB R5,*R15 MOVB R7,@>8C00 * Write the byte B *R10 * RETURN *********************************************************** * >7000 data routines * ALCEND is EA INIT * LOW1 is XB INIT * CHARS is RXB character set definitions 8 bytes each *********************************************************** AORG >1000 *********************************************************** ALCEND DATA >205A,>24F4,>4000,>AA55 DATA >2038,>2096,>2038,>217E DATA >2038,>21E2,>2038,>234C DATA >2038,>2432,>2038,>246E DATA >2038,>2484,>2038,>2490 DATA >2038,>249E,>2038,>24AA DATA >2038,>24B8,>2038,>2090 DATA >0000,>0000,>0000,>0000 DATA >0000,>0000,>0000,>0000 DATA >0000,>0000,>0000,>0000 DATA >0000,>0000,>0000,>0000 DATA >6520,>C060,>2004,>0281 DATA >4000,>130E,>C001,>0202 DATA >834A,>8CB0,>1606,>8CB0 DATA >1604,>8CB0,>1602,>C030 DATA >0450,>0221,>0008,>10EF DATA >0200,>2500,>C800,>8322 DATA >02E0,>83E0,>0460,>00CE DATA >C81D,>8322,>10F9,>C01D DATA >C06D,>0002,>06A0,>20DC DATA >C0C1,>0603,>0223,>8300 DATA >D0D3,>1361,>0983,>0643 DATA >1612,>C000,>165C,>C0C5 DATA >05C3,>06A0,>2406,>1653 DATA >05C3,>06A0,>23CA,>0204 DATA >834A,>0202,>0008,>DC74 DATA >0602,>15FD,>0380,>06A0 DATA >20F8,>10F5,>C041,>1347 DATA >0A81,>9060,>8312,>1143 DATA >0981,>C141,>0A35,>0225 DATA >0008,>A160,>8310,>045B DATA >C24B,>0643,>1634,>C0C5 DATA >06A0,>23CA,>C0C1,>06A0 DATA >2406,>112D,>06A0,>211C DATA >06A0,>23CA,>6004,>0A30 DATA >A040,>0459,>C28B,>0A51 DATA >09D1,>C201,>D120,>8343 DATA >0984,>1303,>0600,>1123 DATA >0580,>0206,>0001,>C0C5 DATA >0223,>0004,>06A0,>23CA DATA >C0C1,>0643,>05C3,>06A0 DATA >23CA,>0581,>6044,>3981 DATA >C186,>1611,>C187,>0608 DATA >15F5,>0606,>A184,>8180 DATA >150A,>05C3,>045A,>0200 DATA >0700,>0460,>2084,>0200 DATA >1C00,>0460,>2084,>0200 DATA >1400,>0460,>2084,>C01D DATA >C06D,>0002,>06A0,>20DC DATA >C0C1,>0603,>0223,>8300 DATA >D0D3,>0983,>160E,>C000 DATA >1622,>0202,>0008,>0204 DATA >834A,>C0C5,>06A0,>23CA DATA >CD01,>05C3,>0642,>15FA DATA >0380,>0643,>160F,>C000 DATA >1612,>C0C5,>05C3,>06A0 DATA >2406,>160B,>05C3,>06A0 DATA >23CA,>C101,>0201,>834A DATA >0460,>20CA,>06A0,>20F8 DATA >10F8,>0460,>2166,>0460 DATA >216E,>C81D,>2038,>C82D DATA >0002,>83E2,>C82D,>0004 DATA >2044,>02E0,>83E0,>C80B DATA >2040,>C020,>2044,>06A0 DATA >20DC,>C0C1,>0603,>0223 DATA >8300,>D0D3,>0983,>0603 DATA >1332,>0643,>164A,>C2A0 DATA >2038,>162D,>C0C5,>05C3 DATA >06A0,>2406,>9801,>2058 DATA >1620,>0206,>0008,>0204 DATA >834A,>C0C5,>06A0,>23CA DATA >CD01,>05C3,>0646,>15FA DATA >06A0,>22DA,>0225,>0004 DATA >C105,>C046,>06A0,>23E6 DATA >05C4,>D050,>0981,>06A0 DATA >23E6,>C2E0,>2040,>C820 DATA >203E,>830C,>02E0,>2038 DATA >0380,>0200,>0700,>C2E0 DATA >2040,>0460,>2084,>0200 DATA >1C00,>0460,>226E,>C08B DATA >0643,>16F3,>C0C5,>06A0 DATA >23CA,>C0C1,>06A0,>2406 DATA >1102,>0460,>226A,>C020 DATA >2038,>06A0,>211C,>6004 DATA >0A10,>A0C0,>06A0,>23CA DATA >0452,>06A0,>227E,>0206 DATA >834A,>CD83,>DDA0,>2058 DATA >DD84,>CD81,>C0C1,>1602 DATA >04D6,>1005,>0603,>06A0 DATA >2406,>0981,>C581,>C020 DATA >2044,>06A0,>22DA,>0460 DATA >225A,>C80B,>203A,>C805 DATA >203C,>C2E0,>601E,>069B DATA >C020,>2044,>C160,>203C DATA >D190,>0986,>C820,>830C DATA >203E,>C806,>830C,>C806 DATA >8350,>C2E0,>6012,>069B DATA >C020,>2044,>0206,>834A DATA >0204,>001C,>CD84,>DDA0 DATA >2058,>DD84,>C5A0,>831C DATA >C0A0,>830C,>1309,>C116 DATA >C0C0,>0583,>D073,>06A0 DATA >241A,>0584,>0602,>15FA DATA >C2E0,>6028,>069B,>C020 DATA >2044,>C160,>203C,>C2E0 DATA >203A,>045B,>C01D,>C06D DATA >0002,>06A0,>20DC,>C0C1 DATA >0603,>0223,>8300,>D0D3 DATA >0983,>0603,>1302,>0643 DATA >1623,>C000,>1628,>C02D DATA >0004,>C0C5,>05C3,>06A0 DATA >2406,>9801,>2058,>161D DATA >05C3,>06A0,>23CA,>C041 DATA >1307,>C181,>0601,>C0C1 DATA >06A0,>2406,>9050,>1A15 DATA >DC01,>1309,>C0C6,>0981 DATA >C141,>06A0,>2406,>DC01 DATA >0583,>0605,>15FA,>0380 DATA >06A0,>227E,>C02D,>0004 DATA >10E6,>0460,>2166,>0460 DATA >216E,>0200,>1300,>0460 DATA >2084,>06C3,>D803,>8C02 DATA >06C3,>D803,>8C02,>1000 DATA >D060,>8800,>06C1,>D060 DATA >8800,>06C1,>045B,>06C4 DATA >D804,>8C02,>06C4,>0264 DATA >4000,>D804,>8C02,>1000 DATA >D801,>8C00,>06C1,>D801 DATA >8C00,>06C1,>045B,>06C3 DATA >D803,>8C02,>06C3,>D803 DATA >8C02,>1000,>D060,>8800 DATA >045B,>06C4,>D804,>8C02 DATA >06C4,>0264,>4000,>D804 DATA >8C02,>1000,>D801,>8C00 DATA >045B,>C83E,>83E2,>02E0 DATA >83E0,>C80B,>204E,>C081 DATA >0281,>0040,>1B0A,>C0A1 DATA >6010,>0281,>0004,>1605 DATA >C0A2,>0002,>0692,>2466 DATA >1001,>0692,>02E0,>2038 DATA >C80B,>83F6,>0380,>0200 DATA >0B00,>0460,>2084,>02E0 DATA >83E0,>C80B,>204E,>06A0 DATA >000E,>02E0,>2038,>C80B DATA >83F6,>0380,>06A0,>24CA DATA >D82D,>0002,>8C00,>0380 DATA >06A0,>24CA,>D831,>8C00 DATA >0602,>16FC,>0380,>06A0 DATA >24D0,>DB60,>8800,>0002 DATA >0380,>06A0,>24D0,>DC60 DATA >8800,>0602,>16FC,>0380 DATA >C05D,>D82D,>0001,>8C02 DATA >0261,>8000,>D801,>8C02 DATA >0380,>0201,>4000,>1001 DATA >04C1,>C09D,>D820,>203D DATA >8C02,>E081,>D802,>8C02 DATA >C06D,>0002,>C0AD,>0004 DATA >045B ********************************************************** * EDITOR ASSEMBLER LOWER 8K SUPPORT * Data for Initialization of * Memory Expansion * LOW1 DATA >A55A,>2128,>2398,>225A LOW2 DATA >A000,>FFD7,>2676,>3F38 LOW3 DATA >0064,>2000,>2EAA,>2094 DATA >21C4,>2094,>2196,>2094,>21DE,>2094,>21F4 DATA >2094,>2200,>2094,>220E,>2094,>221A,>2094,>2228 DATA >209A,>22B2,>20DA,>23BA,>C80B,>2030,>D060 DATA >8349,>2060,>20FC,>132A,>C020,>8350,>1311,>06A0 DATA >2646,>101E,>0281,>3F38,>1319,>C001,>0202 DATA >834A,>8CB0,>1611,>8CB0,>160F,>8CB0,>160D,>C810 DATA >2022,>02E0,>20BA,>C020,>2022,>1309,>0690 DATA >02E0,>83E0,>C2E0,>2030,>045B,>0221,>0008,>10E4 DATA >0200,>0F00,>D800,>8322,>02E0,>83E0,>0460 DATA >00CE,>5820,>20FC,>8349,>02E0,>2094,>0380,>C83E DATA >83E2,>02E0,>83E0,>C80B,>20AA,>C081,>0281 DATA >8000,>1B07,>09C1,>0A11,>0A42,>09B2,>A0A1,>0CFA DATA >C092,>0692,>02E0,>2094,>C80B,>83F6,>0380 DATA >D060,>8373,>0981,>C87E,>8304,>F820,>20FC,>8349 DATA >02E0,>83E0,>C2E0,>2030,>045B,>02E0,>83E0 DATA >C80B,>20AA,>06A0,>000E,>02E0,>2094,>C80B,>83F6 DATA >0380,>06A0,>223A,>D82D,>0002,>8C00,>0380 DATA >06A0,>223A,>D831,>8C00,>0602,>16FC,>0380,>06A0 DATA >2240,>DB60,>8800,>0002,>0380,>06A0,>2240 DATA >DC60,>8800,>0602,>16FC,>0380,>C05D,>D82D,>0001 DATA >8C02,>0261,>8000,>D801,>8C02,>0380,>0201 DATA >4000,>1001,>04C1,>C09D,>D820,>2099,>8C02,>E081 DATA >D802,>8C02,>C06D,>0002,>C0AD,>0004,>045B DATA >0204,>834A,>C014,>C184,>04F6,>04F6,>C140,>1323 DATA >0740,>0203,>0040,>04F6,>04D6,>0280,>0064 DATA >1A13,>0280,>2710,>1A08,>0583,>C040,>04C0,>3C20 DATA >20FA,>D920,>83E3,>0003,>0583,>C040,>04C0 DATA >3C20,>20FA,>D920,>83E3,>0002,>D920,>83E1,>0001 DATA >D520,>83E7,>0545,>1101,>0514,>045B,>C17E DATA >53E0,>20FC,>C020,>8356,>C240,>0229,>FFF8,>0420 DATA >2114,>D0C1,>0983,>0704,>0202,>208C,>0580 DATA >0584,>80C4,>1306,>0420,>2114,>DC81,>9801,>20FE DATA >16F6,>C104,>1352,>0284,>0007,>154F,>04E0 DATA >83D0,>C804,>8354,>C804,>2036,>0584,>A804,>8356 DATA >C820,>8356,>2038,>02E0,>83E0,>04C1,>020C DATA >0F00,>C30C,>1301,>1E00,>022C,>0100,>04E0,>83D0 DATA >028C,>2000,>1332,>C80C,>83D0,>1D00,>0202 DATA >4000,>9812,>20FF,>16EE,>A0A0,>20A4,>1003,>C0A0 DATA >83D2,>1D00,>C092,>13E6,>C802,>83D2,>05C2 DATA >C272,>D160,>8355,>1309,>9C85,>16F2,>0985,>0206 DATA >208C,>9CB6,>16ED,>0605,>16FC,>0581,>C801 DATA >203A,>C809,>2034,>C80C,>2032,>0699,>10E2,>1E00 DATA >02E0,>209A,>C009,>0420,>2114,>09D1,>1604 DATA >0380,>02E0,>209A,>04C1,>06C1,>D741,>F3E0,>20FC DATA >0380,>C80B,>2030,>02E0,>20BA,>0420,>2124 DATA >02E0,>83E0,>1303,>C2E0,>2030,>045B,>D820,>20BA DATA >8322,>0460,>00CE,>04E0,>2022,>53E0,>20FC DATA >C020,>8356,>0420,>2120,>0008,>1332,>0220,>FFF7 DATA >0201,>0200,>0420,>210C,>0580,>C800,>202E DATA >C1E0,>2024,>C147,>04CC,>06A0,>25E0,>0283,>0001 DATA >1624,>058C,>04C3,>1023,>0283,>0046,>161E DATA >04C2,>06A0,>262E,>0283,>003A,>16F7,>C020,>202E DATA >0600,>0201,>0100,>0420,>210C,>06A0,>25E0 DATA >C020,>2022,>1307,>06A0,>2646,>1005,>CB4E,>0016 DATA >C3A0,>2022,>0380,>D740,>F3E0,>20FC,>0380 DATA >06A0,>25C2,>04C4,>D123,>2662,>0974,>C808,>202C DATA >06A0,>2594,>0464,>23F8,>0580,>0240,>FFFE DATA >C120,>2024,>A100,>1808,>8804,>2026,>1B05,>C160 DATA >2024,>C804,>2024,>100A,>C120,>2028,>A100 DATA >8804,>202A,>140C,>C160,>2028,>C804,>2028,>C1C5 DATA >0209,>0008,>06A0,>262E,>0609,>16FC,>10B6 DATA >0200,>0800,>10CC,>A005,>C800,>2022,>10AF,>A800 DATA >202C,>13AC,>0200,>0B00,>10C2,>A005,>C1C0 DATA >10A6,>A005,>DDC0,>DDE0,>20DB,>10A1,>A005,>06A0 DATA >2566,>C000,>1316,>0226,>FFF8,>8106,>1B02 DATA >0514,>1096,>8594,>16F8,>89A4,>0002,>0002,>16F4 DATA >89A4,>0004,>0004,>16F0,>C0E6,>0006,>C250 DATA >C403,>C009,>16FC,>0224,>0008,>C804,>202A,>10EA DATA >A005,>06A0,>2566,>0226,>FFF8,>8106,>13E3 DATA >C296,>1501,>050A,>8294,>16F7,>89A4,>0002,>0002 DATA >16F3,>89A4,>0004,>0004,>16EF,>C296,>1516 DATA >C0E6,>0006,>C253,>C4C0,>C0C9,>16FC,>C246,>6244 DATA >C286,>022A,>0008,>C0C6,>0643,>064A,>C693 DATA >0649,>16FB,>0224,>0008,>C804,>202A,>10D9,>CB44 DATA >0002,>0200,>0C00,>0460,>2432,>0460,>2494 DATA >C28B,>0209,>0006,>C1A0,>202A,>0226,>FFF8,>C106 DATA >8806,>2028,>1AF3,>C806,>202A,>06A0,>262E DATA >DDA0,>20E1,>0609,>16FA,>C580,>0206,>4000,>045A DATA >C28B,>04C0,>C30C,>1308,>06A0,>262E,>D020 DATA >20E1,>06A0,>262E,>A003,>045A,>0209,>0004,>06A0 DATA >262E,>06A0,>25C2,>0A40,>A003,>0609,>16F8 DATA >045A,>0223,>FFD0,>0283,>000A,>1A05,>0223,>FFF9 DATA >0283,>0019,>1B01,>045B,>0200,>0A00,>0460 DATA >2432,>02E0,>83E0,>0200,>2032,>C330,>C270,>C830 DATA >8354,>C830,>8356,>C050,>1D00,>9820,>4000 DATA >20FF,>161D,>0699,>101B,>1E00,>02E0,>20DA,>C020 DATA >202E,>0201,>20DB,>0202,>0004,>0420,>2118 DATA >7000,>0950,>1610,>0982,>C001,>0201,>203C,>0420 DATA >2118,>04C8,>0602,>11D7,>D0F1,>0983,>A203 DATA >045B,>02E0,>20DA,>04C0,>06C0,>0460,>2432,>0201 DATA >3F40,>0221,>FFF8,>C011,>1105,>8060,>202A DATA >16F9,>05CB,>045B,>0200,>0D00,>045B,>2D52,>5163 DATA >6483,>8455,>045C,>5B5F,>5EF0,>F003,>F0F0 DATA >4700,>00C8,>3F38 LOW4 DATA >5554,>4C54,>4142,>2022,>5041,>4420,>2020,>8300 DATA >4750,>4C57,>5320,>83E0,>534F,>554E,>4420 DATA >8400,>5644,>5052,>4420,>8800,>5644,>5053,>5441 DATA >8802,>5644,>5057,>4420,>8C00,>5644,>5057 DATA >4120,>8C02,>5350,>4348,>5244,>9000,>5350,>4348 DATA >5754,>9400,>4752,>4D52,>4420,>9800,>4752 DATA >4D52,>4120,>9802,>4752,>4D57,>4420,>9C00,>4752 DATA >4D57,>4120,>9C02,>5343,>414E,>2020,>000E DATA >584D,>4C4C,>4E4B,>2104,>4B53,>4341,>4E20,>2108 DATA >5653,>4257,>2020,>210C,>564D,>4257,>2020 DATA >2110,>5653,>4252,>2020,>2114,>564D,>4252,>2020 DATA >2118,>5657,>5452,>2020,>211C,>4453,>524C DATA >4E4B,>2120,>4C4F,>4144,>4552,>2124,>4750,>4C4C DATA >4E4B,>2100 *********************************************************** * * RXB Character set *********************************************************** CHARS BYTE >00,>10,>10,>10,>10,>10,>00,>10 * ! 33 BYTE >00,>50,>50,>50,>00,>00,>00,>00 * " 34 BYTE >00,>50,>50,>F8,>50,>F8,>50,>50 * # 35 BYTE >00,>20,>78,>A0,>70,>28,>F0,>20 * $ 36 BYTE >00,>C0,>C8,>10,>20,>40,>98,>18 * % 37 BYTE >00,>40,>A0,>A0,>40,>A8,>90,>68 * & 38 BYTE >00,>C0,>40,>80,>00,>00,>00,>00 * ' 39 BYTE >00,>08,>10,>20,>20,>20,>10,>08 * ( 40 BYTE >00,>10,>08,>04,>04,>04,>08,>10 * ) 41 BYTE >00,>00,>28,>10,>7C,>10,>28,>00 * * 42 BYTE >00,>00,>10,>10,>7C,>10,>10,>00 * + 43 BYTE >00,>00,>00,>00,>00,>60,>20,>40 * , 44 BYTE >00,>00,>00,>00,>F8,>00,>00,>00 * - 45 BYTE >00,>00,>00,>00,>00,>00,>60,>60 * . 46 BYTE >00,>00,>08,>10,>20,>40,>80,>00 * / 47 BYTE >00,>70,>88,>98,>A8,>C8,>88,>70 * 0 48 BYTE >00,>20,>60,>20,>20,>20,>20,>70 * 1 49 BYTE >00,>70,>88,>08,>30,>40,>80,>F8 * 2 50 BYTE >00,>70,>88,>08,>30,>08,>88,>70 * 3 51 BYTE >00,>10,>30,>50,>90,>F8,>10,>10 * 4 52 BYTE >00,>F0,>80,>80,>F0,>08,>88,>70 * 5 53 BYTE >00,>70,>80,>80,>F0,>88,>88,>70 * 6 54 BYTE >00,>F8,>08,>10,>20,>40,>40,>40 * 7 55 BYTE >00,>70,>88,>88,>70,>88,>88,>70 * 8 56 BYTE >00,>70,>88,>88,>78,>08,>88,>70 * 9 57 BYTE >00,>00,>60,>60,>00,>60,>60,>00 * : 58 BYTE >00,>00,>60,>60,>00,>60,>20,>40 * ; 59 BYTE >00,>08,>10,>20,>40,>20,>10,>08 * < 60 BYTE >00,>00,>7C,>00,>00,>7C,>00,>00 * = 61 BYTE >00,>20,>10,>08,>04,>08,>10,>20 * > 62 BYTE >00,>70,>88,>10,>20,>20,>00,>20 * ? 63 BYTE >00,>38,>44,>5C,>54,>5C,>40,>38 * @ 64 BYTE >00,>70,>88,>88,>F8,>88,>88,>88 * A 65 BYTE >00,>F0,>48,>48,>70,>48,>48,>F0 * B 66 BYTE >00,>70,>88,>80,>80,>80,>88,>70 * C 67 BYTE >00,>F0,>48,>48,>48,>48,>48,>F0 * D 68 BYTE >00,>F8,>80,>80,>F0,>80,>80,>F8 * E 69 BYTE >00,>F8,>80,>80,>F0,>80,>80,>80 * F 70 BYTE >00,>70,>88,>80,>80,>98,>88,>78 * G 71 BYTE >00,>88,>88,>88,>F8,>88,>88,>88 * H 72 BYTE >00,>F8,>20,>20,>20,>20,>20,>F8 * I 73 BYTE >00,>08,>08,>08,>08,>08,>88,>70 * J 74 BYTE >00,>88,>90,>A0,>C0,>A0,>90,>88 * K 75 BYTE >00,>80,>80,>80,>80,>80,>80,>F8 * L 76 BYTE >00,>88,>D8,>A8,>A8,>88,>88,>88 * M 77 BYTE >00,>88,>88,>C8,>A8,>98,>88,>88 * N 78 BYTE >00,>70,>88,>88,>88,>88,>88,>70 * O 79 BYTE >00,>F0,>88,>88,>88,>F0,>80,>80 * P 80 BYTE >00,>70,>88,>88,>88,>A8,>90,>68 * Q 81 BYTE >00,>F0,>88,>88,>F0,>A0,>90,>88 * R 82 BYTE >00,>70,>88,>80,>70,>08,>88,>70 * S 83 BYTE >00,>F8,>20,>20,>20,>20,>20,>20 * T 84 BYTE >00,>44,>44,>44,>44,>44,>44,>38 * U 85 BYTE >00,>44,>44,>44,>28,>28,>10,>10 * V 86 BYTE >00,>88,>88,>88,>88,>A8,>A8,>50 * W 87 BYTE >00,>88,>88,>50,>20,>50,>88,>88 * X 88 BYTE >00,>88,>88,>88,>50,>20,>20,>20 * Y 89 BYTE >00,>F8,>08,>10,>20,>40,>80,>F8 * Z 90 BYTE >00,>78,>40,>40,>40,>40,>40,>78 * [ 91 BYTE >00,>00,>80,>40,>20,>10,>08,>00 * \ 92 BYTE >00,>F0,>10,>10,>10,>10,>10,>F0 * ] 93 BYTE >00,>20,>50,>88,>00,>00,>00,>00 * ^ 94 BYTE >00,>00,>00,>00,>00,>00,>00,>FF * _ 95 BYTE >00,>18,>10,>08,>00,>00,>00,>00 * ` 96 BYTE >00,>00,>00,>60,>10,>70,>90,>68 * a 97 BYTE >00,>00,>40,>40,>70,>48,>48,>B0 * b 98 BYTE >00,>00,>00,>60,>90,>80,>90,>60 * c 99 BYTE >00,>00,>10,>10,>70,>90,>90,>68 * d 100 BYTE >00,>00,>00,>60,>90,>E0,>80,>70 * e 101 BYTE >00,>00,>30,>40,>E0,>40,>40,>40 * f 102 BYTE >00,>00,>00,>70,>90,>70,>10,>60 * g 103 BYTE >00,>00,>80,>80,>E0,>90,>90,>90 * h 104 BYTE >00,>00,>20,>00,>20,>20,>20,>70 * i 105 BYTE >00,>00,>10,>10,>10,>10,>90,>60 * j 106 BYTE >00,>00,>80,>90,>A0,>C0,>A0,>90 * k 107 BYTE >00,>00,>60,>20,>20,>20,>20,>70 * l 108 BYTE >00,>00,>00,>D0,>A8,>A8,>A8,>A8 * m 109 BYTE >00,>00,>00,>B0,>48,>48,>48,>48 * n 110 BYTE >00,>00,>00,>60,>90,>90,>90,>60 * o 111 BYTE >00,>00,>F0,>48,>48,>70,>40,>40 * p 112 BYTE >00,>00,>78,>90,>90,>70,>10,>10 * q 113 BYTE >00,>00,>00,>B0,>C8,>80,>80,>80 * r 114 BYTE >00,>00,>00,>70,>80,>70,>08,>F0 * s 115 BYTE >00,>00,>40,>E0,>40,>40,>50,>20 * t 116 BYTE >00,>00,>00,>90,>90,>90,>90,>68 * u 117 BYTE >00,>00,>00,>88,>88,>88,>50,>20 * v 118 BYTE >00,>00,>00,>88,>88,>A8,>A8,>50 * w 119 BYTE >00,>00,>00,>88,>50,>20,>50,>88 * x 120 BYTE >00,>00,>00,>48,>48,>38,>08,>70 * y 121 BYTE >00,>00,>00,>F8,>10,>20,>40,>F8 * z 122 BYTE >00,>18,>20,>20,>40,>20,>20,>18 * { 123 BYTE >00,>20,>20,>20,>00,>20,>20,>20 * | 124 BYTE >00,>C0,>20,>20,>10,>20,>20,>C0 * } 125 BYTE >00,>00,>00,>40,>A8,>10,>00,>00 * ~ 126 *********************************************************** END
  8. Oddly all of these are built into the XB ROMs but they do not have the same names and it is strange that no one before has utilized them as space saving? I mean look at how much space you could save in Lower 8K using them!
  9. OMG thanks Lee learned much from this. GPL is going to call the ROLL routines as part of the SCROLL routines then if needed print last line in string replacing that roll line. Your use of FAC instead of VDP >03C0 for only 32 characters is pretty minimal for increase in speed overall. As unlike everyone else I am using the XML Registers instead of BLWP use by XB CALL INIT or EA CALL INIT I can get away with only BL Here is the latest from what I learned from you: AORG >7000 * Windy XB routines **************************************************************** * direction = U (up), D (Down), L (Left), R (Right) * repetition = repeat number times * string = string or string variable to display just like PRINT **************************************************************** * CALL CLEAR(direction,...) * Assembly ROM CALL CLEAR but all 4 direction clears screen **************************************************************** * CALL ROLL(direction,...) * CALL ROLL(direction,repetition,...) * Assembly roll the screen like a drum with number of times also **************************************************************** * XML MVDN (MV05 for VDP) (VDP to VDP) * ************************************************************** * CALL RROLL(direction,repetion,...) * **************************************************************** RROLL MOV R11,R8 * save return address LI R2,24 * ROW counter LI R3,31 * 31 right edge Screen Address LI R5,>03C0 * Buffer for 24 characters LI R1,1 * 1 Byte BL @LRLP1 * Move IT * Buffer has 24 far right characters LI R2,24 * ROW counter CLR R3 * Screen address LI R5,1 * Destination BL @LRLP2 * Move IT * Moved all on screen 1 right LI R2,24 * ROW counter LI R3,>03C0 * Buffer for 1 character LI R5,1 * 1 left edge Screen Address LI R1,1 * Get 1 Byte BL @LRLP3 * Move IT B *R8 * RETURN **************************************************************** * CALL LROLL(direction,repetion,...) * **************************************************************** LROLL MOV R11,R8 * save return address LI R2,24 * ROW counter CLR R3 * 0 left edge Screen Address LI R5,>03C0 * Buffer for 24 characters LI R1,1 * 1 Byte BL @LRLP1 * Move IT * Buffer has 24 far left characters LI R2,24 * ROW counter LI R3,1 * Screen address CLR R5 * Destination BL @LRLP2 * Move IT * Moved all on screen 1 left LI R2,24 * ROW counter LI R3,>03C0 * Buffer for 1 character LI R5,31 * 31 right edge Screen Address LI R1,1 * Get 1 Byte BL @LRLP3 * Move IT B *R8 * RETURN **************************************************************** LRLP1 MOV R11,R9 * save return address LRR1 BL @MIT * Move IT INC R5 * Buffer+1 AI R3,32 * Screen Address+32 DEC R2 * ROW COUNTER-1 JNE LRR1 * 0? No loop B *R9 * RETURN **************************************************************** LRLP2 MOV R11,R9 * save return address LRLPM LI R1,31 * Number of Bytes LRLP2 BL @MIT * Move IT AI R3,32 * VDP address+32 AI R5,32 * VDP destination address+32 INC R1 * COLUMN COUNTER+1 JNE LRLP2 * 0? No loop DEC R2 * ROW COUNTER-1 JNE LRLPM * 0? No loop B *R9 * RETURN **************************************************************** LRLP3 MOV R11,R9 * save return address LRLPN BL @MIT * Move IT INC R3 * Buffer+1 AI R5,32 * Screen Address+32 DEC R2 * ROW COUNTER-1 JNE LRLPN * 0? No loop B *R9 * RETURN **************************************************************** * CALL UROLL(direction,repetion,...) * ************************************ *************************** UROLL MOV R11,R8 * save return address CLR R3 * 0 top Sreeen Adress LI R5,>03C0 * Buffer for 32 characters LI R1,32 * 32 bytes length BL @UDLP1 * Move IT * Buffer has 32 top line characters LI R3,32 * 2nd line Screen address CLR R5 * 0 screen Destination LI R1,736 * Number of Bytes BL @UDLP2 * Move IT * Moved all on screen up 1 LI R3,>03C0 * Buffer for 32 characters LI R5,736 * Bottom left edge Screen Address LI R1,32 * Get 32 Bytes length BL @UDLP3 * Move IT B *R8 * RETURN * ************************************************************** * CALL DROLL(direction,repetion,...) * **************************************************************** DROLL MOV R11,R8 * save return address LI R3,736 * Bottom of Sreeen Adress LI R5,>03C0 * Buffer for 32 characters LI R1,32 * 32 bytes length BL @UDLP1 * Move IT * Buffer has 32 top line characters CLR R3 * 0 Screen address LI R5,32 * 2nd line Destination LI R1,736 * Number of Bytes BL @UDLP2 * Move IT * Moved all on screen up 1 LI R3,>03C0 * Buffer for 32 characters CLR R5 * Top left edge Screen Address LI R1,32 * Get 32 Bytes BL @UDLP3 * Move IT B *R9 * RETURN *************************************************************** UDLP1 MOV R11,R9 * save return address UDR1 BL @MIT * Move IT INC R3 * BUFFER+1 INC R5 * SCREEN+1 DEC R1 * COUNTER-1 JNE UDR1 * 0? No loop B *R9 * RETURN *************************************************************** UDLP2 MOV R11,R9 * save return address UDR2 BL @MIT * Move IT INC R3 * lower screen line INC R5 * upper scren line DEC R1 * COUNTER-1 JNE UDR2 * 0? No loop B *R9 * RETURN **************************************************************** UDLP3 MOV R11,R9 * save return address UDR3 BL @MIT * Move IT INC R3 * BUFFER+1 INC R5 * SCREEN+1 DEC R1 * COUNTER-1 JNE UDR3 * 0? No loop B *R9 * RETURN **************************************************************** MIT MOV R11,R10 * save return address MOVB @>83E7,*R15 * Write out read address MOVB R3,*R15 MOVB @>8800,R7 * Read a byte MOVB @>83EB,*R15 * Write out write address ORI R5,>4000 * Enable VDP write MOVB R5,*R15 MOVB R7,@>8C00 * Write the byte B *R10 * RETURN **************************************************************** END
  10. Sloppy but this should work: AORG >7000 * Windy XB routines **************************************************************** * direction = U (up), D (Down), L (Left), R (Right) * repetition = repeat number times * string = string or string variable to display just like PRINT **************************************************************** * CALL CLEAR(direction,...) * Assembly ROM CALL CLEAR but all 4 direction clears screen **************************************************************** * CALL ROLL(direction,...) * CALL ROLL(direction,repetition,...) * Assembly roll the screen like a drum with number of times also **************************************************************** * XML MVDN (MV05 for VDP) (VDP to VDP) * ************************************************************** * CALL RROLL(direction,repetion,...) * **************************************************************** RROLL LI R2,24 * ROW counter LI R3,31 * 31 right edge Screen Address LI R5,>03C0 * Buffer for 24 characters LI R1,1 * 1 Byte RRL1 MOVB @>83E7,*R15 Write out read address MOVB R3,*R15 MOVB @>8800,R7 Read a byte MOVB @>83EB,*R15 Write out write address ORI R5,>4000 Enable VDP write MOVB R5,*R15 MOVB R7,@>8C00 Write the byte INC R5 * Buffer+1 AI R3,32 * Screen Address+32 DEC R2 * ROW COUNTER-1 JNE RRL1 * 0? No loop * Buffer has 24 far right characters LI R2,24 * ROW counter CLR R3 * Screen address LI R5,1 * Destination RRL2 LI R1,31 * Number of Bytes RRL2L MOVB @>83E7,*R15 Write out read address MOVB R3,*R15 MOVB @>8800,R7 Read a byte MOVB @>83EB,*R15 Write out write address ORI R5,>4000 Enable VDP write MOVB R5,*R15 MOVB R7,@>8C00 Write the byte AI R3,32 * VDP address+32 AI R5,32 * VDP destination address+32 INC R1 * Column+1 JNE RRL2L * 0? No loop DEC R2 * ROW COUNTER-1 JNE RRL2 * 0? No loop * Moved all on screen 1 right LI R2,24 * ROW counter LI R3,>03C0 * Buffer for 1 character LI R5,1 * 1 left edge Screen Address RRL3 LI R1,1 * Get 1 Byte MOVB @>83E7,*R15 Write out read address MOVB R3,*R15 MOVB @>8800,R7 Read a byte MOVB @>83EB,*R15 Write out write address ORI R5,>4000 Enable VDP write MOVB R5,*R15 MOVB R7,@>8C00 Write the byte INC R3 * Buffer+1 AI R5,32 * Screen Address+32 DEC R2 * ROW COUNTER-1 JNE RRL3 * 0? No loop RT **************************************************************** * CALL LROLL(direction,repetion,...) * **************************************************************** LROLL LI R2,24 * ROW counter CLR R3 * 0 left edge Screen Address LI R5,>03C0 * Buffer for 24 characters LI R1,1 * 1 Byte LRL1 MOVB @>83E7,*R15 * Write out read address MOVB R3,*R15 MOVB @>8800,R7 * Read a byte MOVB @>83EB,*R15 * Write out write address ORI R5,>4000 * Enable VDP write MOVB R5,*R15 MOVB R7,@>8C00 * Write the byte INC R5 * Buffer+1 AI R3,32 * Screen Address+32 DEC R2 * ROW COUNTER-1 JNE LRL1 * 0? No loop * Buffer has 24 far left characters LI R2,24 * ROW counter LI R3,1 * Screen address CLR R5 * Destination LRL2 LI R1,31 * Number of Bytes LRL2L MOVB @>83E7,*R15 * Write out read address MOVB R3,*R15 MOVB @>8800,R7 * Read a byte MOVB @>83EB,*R15 * Write out write address ORI R5,>4000 * Enable VDP write MOVB R5,*R15 MOVB R7,@>8C00 * Write the byte AI R3,32 * VDP address+32 AI R5,32 * VDP destination address+32 INC R1 * COLUMN COUNTER+1 JNE LRL2L * 0? No loop DEC R2 * ROW COUNTER-1 JNE LRL2 * 0? No loop * Moved all on screen 1 left LI R2,24 * ROW counter LI R3,>03C0 * Buffer for 1 character LI R5,31 * 31 right edge Screen Address LI R1,1 * Get 1 Byte LRL3 MOVB @>83E7,*R15 * Write out read address MOVB R3,*R15 MOVB @>8800,R7 * Read a byte MOVB @>83EB,*R15 * Write out write address ORI R5,>4000 * Enable VDP write MOVB R5,*R15 MOVB R7,@>8C00 * Write the byte INC R3 * Buffer+1 AI R5,32 * Screen Address+32 DEC R2 * ROW COUNTER-1 JNE RRL3 * 0? No loop RT * ************************************************************** * CALL UROLL(direction,repetion,...) * ************************************ *************************** UROLL CLR R3 * 0 top Sreeen Adress LI R5,>03C0 * Buffer for 32 characters LI R1,32 * 32 bytes length URL1 MOVB @>83E7,*R15 * Write out read address MOVB R3,*R15 MOVB @>8800,R7 * Read a byte MOVB @>83EB,*R15 * Write out write address ORI R5,>4000 * Enable VDP write MOVB R5,*R15 MOVB R7,@>8C00 * Write the byte INC R3 * COLUMN+1 INC R4 * BUFFER+1 DEC R1 * COUNTER-1 JNE URL1 * 0? No loop * Buffer has 32 top line characters LI R3,32 * 2nd line Screen address CLR R5 * 0 screen Destination LI R1,736 * Number of Bytes URL2 MOVB @>83E7,*R15 * Write out read address MOVB R3,*R15 MOVB @>8800,R7 * Read a byte MOVB @>83EB,*R15 * Write out write address ORI R5,>4000 * Enable VDP write MOVB R5,*R15 MOVB R7,@>8C00 * Write the byte INC R3 * lower screen line INC R5 * upper scren line DEC R1 * COUNTER-1 JNE URL2 * 0? No loop * Moved all on screen up 1 LI R3,>03C0 * Buffer for 32 characters LI R5,736 * Bottom left edge Screen Address LI R1,32 * Get 32 Bytes length URL3 MOVB @>83E7,*R15 * Write out read address MOVB R3,*R15 MOVB @>8800,R7 * Read a byte MOVB @>83EB,*R15 * Write out write address ORI R5,>4000 * Enable VDP write MOVB R5,*R15 MOVB R7,@>8C00 * Write the byte INC R3 * BUFFER+1 INC R5 * SCREEN+1 DEC R1 * COUNTER-1 JNE URL3 * 0? No loop RT * ************************************************************** * CALL DROLL(direction,repetion,...) * ************************************ *************************** DROLL LI R3,736 * Bottom of Sreeen Adress LI R5,>03C0 * Buffer for 32 characters LI R1,32 * 32 bytes length DRL1 MOVB @>83E7,*R15 * Write out read address MOVB R3,*R15 MOVB @>8800,R7 * Read a byte MOVB @>83EB,*R15 * Write out write address ORI R5,>4000 * Enable VDP write MOVB R5,*R15 MOVB R7,@>8C00 * Write the byte INC R3 * SCREEN+1 INC R5 * BUFFER+1 DEC R1 * COUNTER-1 JNE DRL1 * 0? No loop * Buffer has 32 top line characters LI R3,32 * 2nd line Screen address CLR R5 * 0 screen Destination LI R1,736 * Number of Bytes DRL2 MOVB @>83E7,*R15 * Write out read address MOVB R3,*R15 MOVB @>8800,R7 * Read a byte MOVB @>83EB,*R15 * Write out write address ORI R5,>4000 * Enable VDP write MOVB R5,*R15 MOVB R7,@>8C00 * Write the byte INC R3 * lower screen address INC R5 * upper screen address DEC R1 * COUNTER-1 JNE DRL2 * 0? No loop * Moved all on screen up 1 LI R3,>03C0 * Buffer for 32 characters CLR R5 * Top left edge Screen Address LI R1,32 * Get 32 Bytes DRL3 MOVB @>83E7,*R15 * Write out read address MOVB R3,*R15 MOVB @>8800,R7 * Read a byte MOVB @>83EB,*R15 * Write out write address ORI R5,>4000 * Enable VDP write MOVB R5,*R15 MOVB R7,@>8C00 * Write the byte DEC R3 * COUNTER-1 JNE DRL3 * 0? No loop RT *************************************************************** END
  11. Thanks Lee I can recreate XB ROMs to include your mod as indicated! RXB can run on Console alone or with Expansion RAM and or SAMS too. This particular set of commands are strictly for VDP RightRoll, LeftRoll, UpRoll, DownRoll and same for SCROLL in all directions next addition.
  12. Well anyone with Assembly talent take a look at this source and see what you think: First this is section of XB ROM that I am using to make the new commands: 4076 ************************************************************ 4077 7F7E AORG >7F7E 4079 4080 * (VDP to VDP) or (RAM to RAM) 4081 * WITHOUT ERAM : Move the contents in VDP RAM from a lower 4082 * address to a higher address avoiding a 4083 * possible over-write of data 4084 * >835C ARG : byte count 4085 * >8300 VAR0 : source address 4086 * >8306 VARY2 : destination address 4087 * WITH ERAM Same as above except moves ERAM to ERAM 4088 4089 7F7E C060 MVDN MOV @ARG,R1 Get byte count 7F80 835C 4090 7F82 C160 MOV @VARY2,R5 Get destination 7F84 8306 4091 7F86 C0E0 MOV @VAR0,R3 Get source 7F88 8300 4092 7F8A C1E0 MVDN2 MOV @RAMTOP,R7 ERAM or VDP? 7F8C 8384 99/4 ASSEMBLER MVDNS PAGE 0094 4093 7F8E 1612 JNE MV01 ERAM, so handle it 4094 7F90 1002 JMP MV05 VDP, so jump into loop 4095 7F92 0605 MVDN1 DEC R5 4096 7F94 0603 DEC R3 4097 7F96 MV05 EQU $ 4098 7F96 D7E0 MOVB @R3LB,*R15 Write out read address 7F98 83E7 4099 7F9A D7C3 MOVB R3,*R15 4100 7F9C D1E0 MOVB @XVDPRD,R7 Read a byte 7F9E 8800 4101 7FA0 D7E0 MOVB @R5LB,*R15 Write out write address 7FA2 83EB 4102 7FA4 0265 ORI R5,WRVDP Enable VDP write 7FA6 4000 4103 7FA8 D7C5 MOVB R5,*R15 4104 7FAA D807 MOVB R7,@XVDPWD Write the byte 7FAC 8C00 4105 7FAE 0601 DEC R1 One less byte to move 4106 7FB0 16F0 JNE MVDN1 Loop if more to move 4107 7FB2 045B RT 4108 7FB4 MV01 EQU $ 4109 7FB4 D553 MVDNZ1 MOVB *R3,*R5 Move a byte 4110 7FB6 0603 DEC R3 Decrement destination 4111 7FB8 0605 DEC R5 Decrement source 4112 7FBA 0601 DEC R1 One less byte to move 4113 7FBC 16FB JNE MVDNZ1 Loop if more to move 4114 7FBE 045B RT 4115 ************************************************************ 4116 And here are the new commands and GPL will do the conversion from command to access the values used and pass them to Assembly. ******************************************************************************** * CALL CLEAR(direction,...) * Assembly ROM CALL CLEAR but all 4 direction clears screen ********************************************************************************* * CALL ROLL(direction,...) * CALL ROLL(direction,repetition,...) * Assembly roll the screen like a drum with number of times also **************************************************************** * XML MVDN (MV05 for VDP) (VDP to VDP) * ************************************************************** * CALL RROLL(direction,repetion,...) * **************************************************************** RROLL LI R2,24 * ROW counter LI R3,31 * 31 right edge Screen Address LI R5,>03C0 * Buffer for 24 characters RRL1 LI R1,1 * 1 Byte BL @MV05 * Byte from screen to buffer INC R5 * Buffer+1 AI R3,32 * Screen Address+32 DEC R2 * ROW COUNTER-1 JNE RRL1 * 0? No loop * Buffer has 24 far right characters LI R2,24 * ROW counter CLR R3 * Screen address LI R5,1 * Destination RRL2 LI R1,31 * Number of Bytes BL @MV05 * Move screen line over AI R3,32 * VDP address+32 AI R5,32 * VDP destination address+32 DEC R2 * ROW COUNTER-1 JNE RRL2 * 0? No loop * Moved all on screen 1 right LI R2,24 * ROW counter LI R3,>03C0 * Buffer for 1 character LI R5,31 * 31 right edge Screen Address RRL3 LI R1,1 * Get 1 Byte BL @MV05 * Byte from buffer to screen INC R3 * Buffer+1 AI R5,32 * Screen Address+32 DEC R2 * ROW COUNTER-1 JNE RRL3 * 0? No loop RT **************************************************************** * CALL LROLL(direction,repetion,...) * **************************************************************** LROLL LI R2,24 * ROW counter CLR R3 * 0 left edge Screen Address LI R5,>03C0 * Buffer for 24 characters LRL1 LI R1,1 * 1 Byte BL @MV05 * Byte from screen to buffer INC R5 * Buffer+1 AI R3,32 * Screen Address+32 DEC R2 * ROW COUNTER-1 JNE LRL1 * 0? No loop * Buffer has 24 far left characters LI R2,24 * ROW counter LI R3,1 * Screen address CLR R5 * Destination LRL2 LI R1,31 * Number of Bytes BL @MV05 * Move screen line over AI R3,32 * VDP address+32 AI R5,32 * VDP destination address+32 DEC R2 * ROW COUNTER-1 JNE LRL2 * 0? No loop * Moved all on screen 1 left LI R2,24 * ROW counter LI R3,>03C0 * Buffer for 1 character CLR R5 * 0 left edge Screen Address RRL3 LI R1,1 * Get 1 Byte BL @MV05 * Byte from buffer to screen INC R3 * Buffer+1 AI R5,32 * Screen Address+32 DEC R2 * ROW COUNTER-1 JNE RRL3 * 0? No loop RT * ************************************************************** * CALL UROLL(direction,repetion,...) * ************************************ *************************** UROLL CLR R3 * 0 top Sreeen Adress LI R5,>03C0 * Buffer for 32 characters LI R1,32 * 32 bytes length BL @MV05 * Bytes from screen to buffer * Buffer has 32 top line characters LI R3,32 * 2nd line Screen address CLR R5 * 0 screen Destination LI R1,736 * Number of Bytes BL @MV05 * Move screen line 1 up * Moved all on screen up 1 LI R3,>03C0 * Buffer for 32 characters LI R5,736 * Bottom left edge Screen Address LI R1,32 * Get 32 Bytes length BL @MV05 * Byte from buffer to screen RT * ************************************************************** * CALL DROLL(direction,repetion,...) * ************************************ *************************** DROLL LI R3,736 * Bottom of Sreeen Adress LI R5,>03C0 * Buffer for 32 characters LI R1,32 * 32 bytes length BL @MV05 * Bytes from screen to buffer * Buffer has 32 top line characters LI R3,32 * 2nd line Screen address CLR R5 * 0 screen Destination LI R1,736 * Number of Bytes BL @MV05 * Move screen line 1 down * Moved all on screen up 1 LI R3,>03C0 * Buffer for 32 characters CLR R5 * Top left edge Screen Address LI R1,32 * Get 32 Bytes BL @MV05 * Byte from buffer to screen RT *********************************************************************************** END If you have any suggestion please pass them along to me.
×
×
  • Create New...