; part of virtual processor, emulator for FIFTH xcharput: mov eax, [es:edi] ; chary mov [chary], eax mov ecx, [es:edi+4] ; charx mov eax, [es:edi+8] ; addrdest add eax, [xms_addr] mov ebx, [es:eax] mov [sizex], ebx add eax, 8 add eax, ecx push eax sub edx, edx mov eax, [chary] mul dword [sizex] pop ebx add eax, ebx mov [addrdst], eax mov eax, [es:edi+12] add eax, [xms_addr] mov [addrsrc], eax mov al, [es:edi+16] mov [colorbg], al mov al, [es:edi+20] mov [colorfg], al add edi, 24 mov [linenum], 8 charl1: mov eax, [addrsrc] mov bx, [es:eax] mov edx, [addrdst] mov cx, 8 charl2: dec cx bt bx, cx jnc charl3 mov al, [colorfg] jmp charl4 charl3: mov al, [colorbg] charl4: mov [es:edx], al inc edx cmp cx, 0 jne charl2 mov eax, [sizex] add [addrdst], eax inc [addrsrc] dec [linenum] mov al, [linenum] cmp al, 0 jne charl1 jmp emu colorfg db 0 colorbg db 0 charx dd 0 chary dd 0 addrsrc dd 0 addrdst dd 0 sizex dd 0 linenum db 0