/* * DisplayAsmLines - display all assembler lines * hwnd - dialog handle * paddr - address to start dissassembly */ static void DisplayAsmLines( HWND hwnd, address *paddr ) { int i; address addr; address flagaddr; char buff[256]; HWND hscrl; DWORD max; int curr; mad_registers *regs; addr = *paddr; regs = StatGetMadRegisters( hwnd ); GetCurrAddr( &flagaddr, regs ); for( i = STAT_DISASM_1;i <= STAT_DISASM_8; i++ ) { buff[0] = ' '; if( MADAddrComp( &addr, &flagaddr, MAF_FULL ) == 0 ) { buff[0] = '*'; } Disassemble( &addr, buff+1, FALSE, 255 ); SetDlgItemText( hwnd, i, buff ); } #ifdef __NT__ max = max; curr = curr; hscrl = GetDlgItem( hwnd, STAT_SCROLL ); SetScrollRange( hscrl, SB_CTL, 0, 2, FALSE ); SetScrollPos( hscrl, SB_CTL, 1, TRUE ); #else max = GetASelectorLimit( paddr->mach.segment ); if( max > MAXRANGE ) { curr = ( MAXRANGE * paddr->mach.offset ) / max; max = MAXRANGE; } else { curr = paddr->mach.offset; } hscrl = GetDlgItem( hwnd, STAT_SCROLL ); SetScrollRange( hscrl, SB_CTL, 0, max, FALSE); SetScrollPos( hscrl, SB_CTL, curr, TRUE ); #endif } /* DisplayAsmLines */
/* * DisplayAsmLines - display all assembler lines * hwnd - dialog handle * paddr - address to start dissassembly * flagaddr - address of instruction to mark * idlo - id of first text field * idhi - id of last text field (text field id's must be contiguous) * sbid - scroll bar id */ void DisplayAsmLines( HWND hwnd, ADDRESS *paddr, ADDRESS *flagaddr, int idlo, int idhi, int sbid ) { int i; ADDRESS addr; char buff[256]; HWND hscrl; BOOL markit; DWORD max; int curr; addr = *paddr; for( i=idlo;i<=idhi;i++ ) { markit = FALSE; if( (addr.seg == flagaddr->seg ) && (addr.offset == flagaddr->offset )) markit = TRUE; addr.offset += Disassemble( &addr, buff+1, FALSE ); if( markit ) { buff[0] = '*'; } else { buff[0] = ' '; } SetDlgItemText( hwnd, i, buff ); } #ifdef __NT__ max = max; curr = curr; hscrl = GetDlgItem( hwnd, sbid ); SetScrollRange( hscrl, SB_CTL, 0, 2, FALSE); SetScrollPos( hscrl, SB_CTL, 1, TRUE ); #else max = GetASelectorLimit( paddr->seg ); if( max > MAXRANGE ) { curr = (MAXRANGE*paddr->offset)/max; max = MAXRANGE; } else { curr = paddr->offset; } hscrl = GetDlgItem( hwnd, sbid ); SetScrollRange( hscrl, SB_CTL, 0, max, FALSE); SetScrollPos( hscrl, SB_CTL, curr, TRUE ); #endif } /* DisplayAsmLines */