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,307 of 4,675   
   Kerr-Mudd,John to nowhere@nospicedham.never.at   
   Re: Tetris was: Re: Pong 256   
   27 Feb 21 20:52:04   
   
   From: notsaying@nospicedham.127.0.0.1   
      
   On Sat, 27 Feb 2021 15:15:08 GMT, wolfgang kern   
    wrote:   
      
   > On 26.02.2021 12:34, Kerr-Mudd,John wrote:   
   > < Here's my hexdump:   
   >   
   > and here is what I see :)  (thick glasses wont help)   
      
   in the following I've added labels above; and comment below sections   
      
   >   
   > 0100  B80100  |CD10   mode01  rare supported today   
   wide screen  40*25 for text tetris   
      
   > 0105  6800B8  |07     es = screen   
   > 0109  53      |1F     ds = bx    bx=0 ?   
   yup ; allows access to keystate at 0000:0x417   
      
   > 010b  E440    |89C3   in[40]     bx=ax   
   > 010f  83E307  |74f7   AND ax,07  JZ 114+f7=010b   
   > 0114  B401            ah=1   
   > 0116  C1E003          SHL ax,3   
   > 0119  2E8A9FF701      bl=cs:01f7+bx   
   load shape from table   
      
   > 011e  C1E304          SHL bx,4   
   random shape, colour (with hilight bit on)   
      
   > 0121  BFC4FF          di=ffc4   
   start posn   
      
      
   > 0124  83C750          ADD di,50   
   > 0127  BD0400          bp=0400   
   nope; bp=0004   
   > 012a  91  swap ax,cx   
      
      
   mainloop:   
   > 012b  91              swap ax,cx   
   restore ax   
   > 012c  4D              DEC bp   
   > 012d  74F5            JZ 0124   
    do 4 times   
      
   > 012f  60              pusha   
   > 0130  BED207  |89F7   si=07d2 di=si   
   >   
   > 0135  B90A00  |B208   cx=07d2 dl=08   
   no! cx=0A; line lth ; dl=8=hilite attribute bit set   
   >   
   > 013a  26AD            es:LODSW   
   > 013c  20E2            AND dl,ah   
   test if full line (all 10 attributes high)   
   > 013e  AB      |E2 F9  STOSW  LOOP 141+f9=013a   
   >   
   > 0141  AD      |B8BA09 ?LODSW? ax= 09ba  ;║ blue/blink/high   
   bright blue double vertical lines at edge   
   > 0145  AB      |7410   STOSW  JZ 0158   
   flag still valid from last AND   
      
   > 0148  83C750          ADD di,50   
   drop line   
   > 014b  2EFE06FF01      INC byte[cs:01ff]   
   up score   
      
   > 0150  60              PUSHA   
   > 0151  B402 |B207 |CD21  INT21_02/07   
   > 0157  61              POPA   
   beep   
   >   
   > 0158  83EF68  |83EE68 SUB si,68 SUB di 68   
   > 015e  AB      |AD     STOSW  LODSW   
   > 0160  73D3            JNC 162+d3= 0135   
    have printed screen   
      
   > 0162  2EA0FF01|D40A   al=[cs:-1ff]  AAM   
   > 0168  0D3030  |BF1800 OR ax,3030  di=1800   
   > 016e  268825          [es:di]=ah   
   > 0171  AF       |AA    SCASW  STOSB   
   print score   
      
   > 0173  61 |89FE |53    POPA  si=di inc bx   
   > 0177  A01704   |D0E8  al=[0417]  SHR al,1   
   querykeys   
      
   > 017c  7301     |AF    JNC 017f      scasw   
   > 017f  D0E8     |7302  SHR al,1 JNC 0175   
   > 0183  4F4F            di-2   
   left-2, right+2   
      
   > 0185  D0E8     |7302  SHR al,1 JNC 017b   
   > 0189  CD20            ;end   
   > 018b  D0E8    |7312   SHR al,1 JNC 18f+12=01a1   
   > 018f  B110    |BA1111 cl=10 dx=1111   
      
   > 0194  C1C304          ROL bx,4   
   > 0197  D1D2     |7302  RLC dx,1 JNC 019f   
   > 019b  D1CB     |E2F5  ROR bx,1 LOOP f5+19f=0194   
   >   
   > 019f  89D3            bx=dx   
   rotate shape   
      
   > 01a1  B008     |99    al=8  cwd   
   > 01a4  E82400   |7404  CALL 01cB   
   > 01a9  5B       |89F7  POP bx  di=si   
   > 01ac  52              POP dx   
   > 01ad  5A      |BADA03 PUSH dx  dx=03da   
   > 01b1  E81700  |7403   CALL 01cd  JZ 01b9   
   > 01b6  E942ff          JMP 1b9+ff42= 00fb ???   
    10b; jnz newblock   
      
   sadly the jmp back is too far for a short jnz   
      
   >   
   > 01b9  b104            cl=4   
   delay count   
   >   
   > 01bb  EC |A808 |75FB  in ax,dx TEST al,08 JNZ 01bb   
   >   
   > 01c0  EC |A808 |75FB   
   > 01c5  E2F4            LOOP 01bb   
   > 01c7  91 |682B01      SWAP ax cx   PUSH 0128   
   save ax, ret to mainloop later   
      
   test/putrtn:   
   > 01cb  60 B91000       PUSHA  cx=0010   
   >   
   > 01cf  F6C103 7503     TEST cl,3  JNZ 01d7   
   > 01d4  83C748          ADD di,48   
   > 01d7  D1C3 |731A      ROL bx,1  JNC 1db+1a=01f5   
   > 01db  08D2 |7413      OR dl,dl JZ  1df+13=01f2   
   > 01df  260A7550        OR dh,[es:di+50]   
   test next line clear   
      
   > 01e3  81FF8007 |7202  CMP di,0780 JC 01eb   
   > 01e9  08C6            OR dh,al   
   > 01eb  AB              STOSW   
   > 91ec  E2E1            LOOP 1ee+e1=01cf   
   > 01ee  84C6 61 C3      TEST dh,al  POPA  RET   
   >   
   > 01f2  260A35          OR dh,[es:di]   
   test overwrite posn is clear   
      
   > 01f5  AF EBF4         SCASW  JMP 1f8+f4= 01ec   
      
   data:   
   > 01f8  E2C6            LOOP 1fa+c6= 01c0   
   > 01fa  6C 4E           INSB  DEC si   
   > 01fc  F066E800        LOCK BIG CALL ???  crash!   
   these last bytes are the tetris shape data!   
   (final byte is for the score)   
      
   --   
   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