
#XRay is #FUN! (sorry my phone had real difficulty to focus on the display :( (cc @f4grx @RDGhack) pic.twitter.com/vhtts7e6cM
— Manoel Trapier (@Gozilu) April 29, 2016
wstech24 dit ceci : - $B3 - $00 - Communication direction bit 7 - Recieve data interrupt generation bit 6 - Connection Speed 0 - 9600 bps 1 - 38400 bps bit 5 - Send data interrupt generation bit 4 - ??? bit 3 - ??? bit 2 - Send Complete bit 1 - Error bit
E000:C103 _read_int_eeprom proc near ; CODE XREF: freyaWwcSysGetOwnerInfo:loc_EC078p
E000:C103 push bx
E000:C104 mov ax, 8000h
E000:C107 cmp bx, 400h
E000:C10B jnb short loc_EC132
E000:C10D mov ax, 180h
E000:C110 shl ax, 4
E000:C113 add ax, bx
E000:C115 out WS_IO_INT_EEP_ADDR_L, ax
E000:C117 mov al, 10h
E000:C119 out WS_IO_INT_EEP_STATUS, al
E000:C11B xor dx, dx
E000:C11D
E000:C11D loc_EC11D: ; CODE XREF: _read_int_eeprom+27j
E000:C11D inc dx
E000:C11E mov ax, 8101h
E000:C121 cmp dx, 20h ; ' '
E000:C124 jz short loc_EC132
E000:C126 in al, WS_IO_INT_EEP_STATUS
E000:C128 and al, 1
E000:C12A jz short loc_EC11D
E000:C12C in ax, WS_IO_INT_EEP_DATA_L
E000:C12E mov dx, ax
E000:C130 xor ax, ax
E000:C132
E000:C132 loc_EC132: ; CODE XREF: _read_int_eeprom+8j
E000:C132 ; _read_int_eeprom+21j
E000:C132 pop bx
E000:C133 retn
E000:C133 _read_int_eeprom endp
/* due to BIOS 1.0 bug, sys_interrupt_reset_hook doesn't allow inlining */
void near bank_fill_block(int bank, unsigned offset, unsigned size, unsigned data);
_TEXT:0000 public _bank_fill_block
_TEXT:0000 _bank_fill_block proc near
_TEXT:0000
_TEXT:0000 arg_0 = word ptr 4 ; int bank
_TEXT:0000 arg_2 = word ptr 6 ; unsigned offset
_TEXT:0000 arg_4 = word ptr 8 ; unsigned size
_TEXT:0000 arg_6 = byte ptr 0Ah ; unsigned data
_TEXT:0000
_TEXT:0000 push bp
_TEXT:0001 mov bp, sp
_TEXT:0003 mov al, [bp+arg_6]
_TEXT:0006 mov bx, [bp+arg_0]
_TEXT:0009 mov cx, [bp+arg_4]
_TEXT:000C mov dx, [bp+arg_2]
_TEXT:000F mov ah, 7 ; BANK_WRITE_BLOCK
_TEXT:0011 int 18h ; INT_BANK
_TEXT:0013 pop bp
_TEXT:0014 retn
_TEXT:0014 _bank_fill_block endp
_TEXT:0000 _bank_write_block proc near
_TEXT:0000
_TEXT:0000 var_2 = word ptr -2 ; backup of SI register
_TEXT:0000 arg_0 = word ptr 4 ; int bank
_TEXT:0000 arg_2 = word ptr 6 ; unsigned offset
_TEXT:0000 arg_4 = word ptr 8 ; void far *buffer segment
_TEXT:0000 arg_6 = word ptr 0Ah ; void far *buffer ofsset
_TEXT:0000 arg_8 = word ptr 0Ch ; unsigned size
_TEXT:0000
_TEXT:0000 push bp
_TEXT:0001 mov bp, sp
_TEXT:0003 sub sp, 2
_TEXT:0006 push si
_TEXT:0007 push di
_TEXT:0008 mov di, ds
_TEXT:000A mov ax, si
_TEXT:000C mov [bp+var_2], ax
_TEXT:000F mov ax, [bp+arg_6]
_TEXT:0012 mov ds, ax
_TEXT:0014 mov si, [bp+arg_4]
_TEXT:0017 mov dx, [bp+arg_2]
_TEXT:001A mov cx, [bp+arg_8]
_TEXT:001D mov bx, [bp+arg_0]
_TEXT:0020 mov ah, 7 ; BANK_WRITE_BLOCK
_TEXT:0022 int 18h ; INT_BANK
_TEXT:0024 mov si, [bp+var_2]
_TEXT:0027 mov ds, di
_TEXT:0029 pop di
_TEXT:002A pop si
_TEXT:002B leave
_TEXT:002C retn
_TEXT:002C _bank_write_block endp
FreyaOSStart:
[...]
E000:008E push 0 ; data
E000:0090 push 0FFE0h ; size
E000:0092 push 0 ; offset
E000:0094 push 3 ; bank
E000:0096 call freyaBankFillBlock
[...]
E000:A6B6 ; void __cdecl __near freyaBankFillBlock(int bank, unsigned int offset, unsigned int size, unsigned int data)
E000:A6B6 freyaBankFillBlock proc near ; CODE XREF: FreyaOSStart+96p
E000:A6B6
E000:A6B6 bank = word ptr 4
E000:A6B6 offset = word ptr 6
E000:A6B6 size = word ptr 8
E000:A6B6 data = word ptr 0Ah
E000:A6B6
E000:A6B6 push bp
E000:A6B7 mov bp, sp
E000:A6B9 mov al, byte ptr [bp+data]
E000:A6BC mov bx, [bp+bank]
E000:A6BF mov cx, [bp+size]
E000:A6C2 mov dx, [bp+offset]
E000:A6C5 mov ah, BANK_WRITE_BLOCK
E000:A6C7 int INT_BANK ; ""
E000:A6C9 pop bp
E000:A6CA retn
E000:A6CA freyaBankFillBlock endp
Folco (./709) :C'est gentil, mais tu vas être déçu, il n'y a pas de code 68k dedans ^^
Je peux te désassembler Windows si tu veux
Freya:ABD7 ; _FsIl far *__cdecl __near get_il(fent_t *filesystem)
Freya:ABD7 _get_il proc near ; CODE XREF: FreyaOSStart+ABp
Freya:ABD7 ; FreyaOSStart+C8p ...
Freya:ABD7
Freya:ABD7 pfsPath = dword ptr -8
Freya:ABD7 ptrFsIl = dword ptr -4
Freya:ABD7 filesystem = word ptr 4
Freya:ABD7
Freya:ABD7 push bp
Freya:ABD8 mov bp, sp
Freya:ABDA sub sp, 8
Freya:ABDD les bx, dword ptr [bp+filesystem]
Freya:ABE0 les bx, es:[bx+fent_t.handler.il]
Freya:ABE4 mov word ptr [bp+ptrFsIl+2], es
Freya:ABE7 mov word ptr [bp+ptrFsIl], bx
Freya:ABEA mov ax, word ptr [bp+ptrFsIl+2]
Freya:ABED or ax, ax
Freya:ABEF jz short loc_EABF4
Freya:ABF1 jmp loc_EAC1C
Freya:ABF4 ; ---------------------------------------------------------------------------
Freya:ABF4
Freya:ABF4 loc_EABF4: ; CODE XREF: _get_il+18j
Freya:ABF4 jmp loc_EAC02
Freya:ABF4 ; ---------------------------------------------------------------------------
Freya:ABF7 ; char path[]
Freya:ABF7 path text "Shift-JIS", '/kern/@pfs',0 ; DATA XREF: _get_il:loc_EAC02o
Freya:AC02 ; ---------------------------------------------------------------------------
Freya:AC02
Freya:AC02 loc_EAC02: ; CODE XREF: _get_il:loc_EABF4j
Freya:AC02 lea ax, path ; "/kern/@pfs"
Freya:AC06 mov dx, cs
Freya:AC08 mov word ptr [bp+pfsPath+2], dx
Freya:AC0B mov word ptr [bp+pfsPath], ax
Freya:AC0E push dx
Freya:AC0F push ax ; path
Freya:AC10 call _mmap
Freya:AC13 add sp, 4
Freya:AC16 mov word ptr [bp+ptrFsIl+2], dx
Freya:AC19 mov word ptr [bp+ptrFsIl], ax
Freya:AC1C
Freya:AC1C loc_EAC1C: ; CODE XREF: _get_il+1Aj
Freya:AC1C mov dx, word ptr [bp+ptrFsIl+2]
Freya:AC1F mov ax, word ptr [bp+ptrFsIl]
Freya:AC22 leave
Freya:AC23 retn
Freya:AC23 _get_il endp