home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.asm.x86      Ahh, the lost art of x86 assembly      4,675 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 4,432 of 4,675   
   Kerr-Mudd, John to Jim Leonard   
   Re: Small Tetris   
   12 Dec 21 21:52:31   
   
   From: admin@nospicedham.127.0.0.1   
      
   On Sun, 12 Dec 2021 11:58:23 -0800 (PST)   
   Jim Leonard  wrote:   
      
   > On Saturday, December 4, 2021 at 8:20:06 AM UTC-6, Kerr-Mudd, John wrote:   
   > > On Sun, 21 Nov 2021 13:50:31 +0000   
   > > "Kerr-Mudd, John"  wrote:   
   > >   
   > > >   
   > > > I've been looking at small tetris games; doable in <256 bytes; I'm at   
   > > > 241 (219 with a different look), I'll look at adding "drop" and   
   > > > maybe scoring.   
   >   
   > It would be more interesting, and less mangled, for you to post the .asm   
   source instead of a binary hex dump.   
   >   
      
   Where's the fun in that?   
   OK you can have a 'u' debug dump for a bit of clarity.   
   I've improved it slightly; I have 7 spare bytes now, so this doesn't match the   
   previous hexdump.   
   Note the cunning use of /movsb/ to move through the lines; often copying in   
   place!   
   also that /bright/=blockchar (8)   
      
      
     assumes ax=0 ,ss=ds on entry, also that int 10 puts spaces (0x20) to screen   
   area   
   ->u 100 l100   
   162E:0100 40             inc          ax   
   162E:0101 CD 10          int          10   
   162E:0103 68 00 B8       push         B800   
   162E:0106 07             pop          es   
   162E:0107 06             push         es   
   162E:0108 1F             pop          ds   
   162E:0109 E4 40          in           al,40   
   162E:010B 83 E0 07       and          ax,0007   
   162E:010E BB 08 08       mov          bx,0808   
   162E:0111 08 C7          or           bh,al   
   162E:0113 95             xchg         ax,bp   
   162E:0114 8B AE F1 01    mov          bp,[bp+01F1]   
   162E:0118 81 E5 F0 0F    and          bp,0FF0   
   162E:011C 41             inc          cx   
   162E:011D BF C0 FF       mov          di,FFC0   
   162E:0120 E3 04          jcxzw        0126   
   162E:0122 E2 05          loopw        0129   
   162E:0124 B1 0A          mov          cl,0A   
   162E:0126 83 C7 50       add          di,0050   
   162E:0129 60             pushaw   
   162E:012A BF 80 07       mov          di,0780   
   162E:012D B1 0C          mov          cl,0C   
   162E:012F B8 DB 08       mov          ax,08DB   
   162E:0132 F3 AB          repz stosw   
   162E:0134 BE 32 07       mov          si,0732   
   162E:0137 8A 16 1E 00    mov          dl,[001E]   
   162E:013B 83 EF 68       sub          di,0068   
   162E:013E B1 0A          mov          cl,0A   
   162E:0140 B6 08          mov          dh,08   
   162E:0142 AB             stosw   
   162E:0143 A4             movsb   
   162E:0144 22 34          and          dh,[si]   
   162E:0146 A4             movsb   
   162E:0147 E2 FA          loopw        0143   
   162E:0149 AB             stosw   
   162E:014A 74 04          jz           0150   
   162E:014C 83 C7 50       add          di,0050   
   162E:014F 42             inc          dx   
   162E:0150 83 EE 64       sub          si,0064   
   162E:0153 73 E6          jnb          013B   
   162E:0155 BF 1C 00       mov          di,001C   
   162E:0158 92             xchg         ax,dx   
   162E:0159 3C 3A          cmp          al,3A   
   162E:015B 72 07          jb           0164   
   162E:015D 2C 0A          sub          al,0A   
   162E:015F FE 05          inc          byte [di]   
   162E:0161 80 0D 30       or           byte [di],30   
   162E:0164 AF             scasw   
   162E:0165 0C 30          or           al,30   
   162E:0167 AA             stosb   
   162E:0168 61             popaw   
   162E:0169 B4 01          mov          ah,01   
   162E:016B CD 16          int          16   
   162E:016D 74 09          jz           0178   
   162E:016F 98             cbw   
   162E:0170 CD 16          int          16   
   162E:0172 88 E0          mov          al,ah   
   162E:0174 3C 01          cmp          al,01   
   162E:0176 74 57          jz           01CF   
   162E:0178 57             push         di   
   162E:0179 3C 4D          cmp          al,4D   
   162E:017B 75 01          jnz          017E   
   162E:017D AF             scasw   
   162E:017E 3C 4B          cmp          al,4B   
   162E:0180 75 02          jnz          0184   
   162E:0182 4F             dec          di   
   162E:0183 4F             dec          di   
   162E:0184 55             push         bp   
   162E:0185 3C 48          cmp          al,48   
   162E:0187 74 4C          jz           01D5   
   162E:0189 3C 50          cmp          al,50   
   162E:018B 75 02          jnz          018F   
   162E:018D 31 C9          xor          cx,cx   
   162E:018F 99             cwd   
   162E:0190 89 D8          mov          ax,bx   
   162E:0192 E8 1E 00       call         01B3   
   162E:0195 75 53          jnz          01EA   
   162E:0197 5A             pop          dx   
   162E:0198 5A             pop          dx   
   162E:0199 BA DA 03       mov          dx,03DA   
   162E:019C E8 14 00       call         01B3   
   162E:019F 74 03          jz           01A4   
   162E:01A1 E9 65 FF       jmp          0109   
   162E:01A4 51             push         cx   
   162E:01A5 B1 06          mov          cl,06   
   162E:01A7 EC             in           al,dx   
   162E:01A8 A8 08          test         al,08   
   162E:01AA 74 FB          jz           01A7   
   162E:01AC E2 F9          loopw        01A7   
   162E:01AE 91             xchg         ax,cx   
   162E:01AF 59             pop          cx   
   162E:01B0 68 20 01       push         0120   
   162E:01B3 60             pushaw   
   162E:01B4 B1 10          mov          cl,10   
   162E:01B6 F6 C1 03       test         cl,03   
   162E:01B9 75 03          jnz          01BE   
   162E:01BB 83 C7 48       add          di,0048   
   162E:01BE D1 C5          rol          bp,1   
   162E:01C0 73 10          jnb          01D2   
   162E:01C2 08 D2          or           dl,dl   
   162E:01C4 74 0A          jz           01D0   
   162E:01C6 AB             stosw   
   162E:01C7 0A 75 4E       or           dh,[di+4E]   
   162E:01CA E2 EA          loopw        01B6   
   162E:01CC 84 C6          test         dh,al   
   162E:01CE 61             popaw   
   162E:01CF C3             ret   
   162E:01D0 0A 35          or           dh,[di]   
   162E:01D2 AF             scasw   
   162E:01D3 EB F5          jmp          01CA   
   162E:01D5 51             push         cx   
   162E:01D6 B1 10          mov          cl,10   
   162E:01D8 B8 11 11       mov          ax,1111   
   162E:01DB C1 C5 04       rol          bp,04   
   162E:01DE D1 D0          rcl          ax,1   
   162E:01E0 73 02          jnb          01E4   
   162E:01E2 D1 CD          ror          bp,1   
   162E:01E4 E2 F5          loopw        01DB   
   162E:01E6 95             xchg         ax,bp   
   162E:01E7 59             pop          cx   
   162E:01E8 EB A5          jmp          018F   
   162E:01EA 5D             pop          bp   
   162E:01EB 5F             pop          di   
   162E:01EC 83 FF C0       cmp          di,FFC0   
   162E:01EF 75 A8          jnz          0199   
   162E:01F1 C3             ret   
   162E:01F2 66 36 16       ss:push         ss   
   162E:01F5 27             daa   
   162E:01F6 47             inc          di   
   162E:01F7 F7 F0          div          ax   
      
   Those last 8 bytes (yes, including the ret!) encode the tetris shape data   
      
   --   
   Bah, and indeed Humbug.   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca