Guida al compilatore

In questa breve guida si vuole assemblare un programma di base con alcune funzioni specifiche per la compilaziome ed esecuzione di un normale programma a 32bit.
Il compilatore non è completo di tutte le istruzioni in Assembler, ma ne contiene una buona dose per lo sviluppo di programmi complessi, mentre altre istuzioni mancanti si possono facilmente aggiungere.

Partiamo con il codice del programma
                      ;avvio 1:0000
;00,08,00,00  segmento impostazioni
;00,08,00,80  segmento codice
;00,01,00,00  elenco programmi
;00,01,01,00  elenco dei quadrati
;00,02,00,00  definizioni di testo
;00,08,02,80  dati
;10:0000      dati
;11:0000      elenco dei quadrati
;12:0000      etichette di salto far
;13:0000      buffer di compilazione
;20:0000      segmento codice
;21:0000      codifica del salto
;22:0000      elenco archivi
;23:0000      segmento di copia
;26:0000      tastiera virtuale
      jmp 0000
*00 04 10 00 01 00       ;0003 tabella idt
*00 04 00 00 00 00       ;0009 tabella idt (modo reale)
*00
*fd 01 08 00 00 8f 00 00 ;0010 int 00
*fd 01 08 00 00 8f 00 00 ;int 01
*fd 01 08 00 00 8f 00 00 ;int 02
*fd 01 08 00 00 8f 00 00 ;int 03
*fd 01 08 00 00 8f 00 00 ;int 04
*fd 01 08 00 00 8f 00 00 ;int 05
*fd 01 08 00 00 8f 00 00 ;int 06
*fd 01 08 00 00 8f 00 00 ;int 07
*fa 01 08 00 00 8f 00 00 ;int 08
*f7 01 08 00 00 8f 00 00 ;int 09
*fd 01 08 00 00 8f 00 00 ;int 0a
*fd 01 08 00 00 8f 00 00 ;int 0b
*fd 01 08 00 00 8f 00 00 ;int 0c
*fd 01 08 00 00 8f 00 00 ;int 0d
*fd 01 08 00 00 8f 00 00 ;int 0e
*fd 01 08 00 00 8f 00 00 ;int 0f
*fd 01 08 00 00 8f 00 00 ;int 10
*fd 01 08 00 00 8f 00 00 ;int 11
*fd 01 08 00 00 8f 00 00 ;int 12
*fd 01 08 00 00 8f 00 00 ;int 13
*fd 01 08 00 00 8f 00 00 ;int 14
*fd 01 08 00 00 8f 00 00 ;int 15
*fd 01 08 00 00 8f 00 00 ;int 16
*03 00 50 00 00 8f 00 00 ;int 17
*fd 01 08 00 00 8f 00 00 ;int 18
*fd 01 08 00 00 8f 00 00 ;int 19
*fd 01 08 00 00 8f 00 00 ;int 1a
*fd 01 08 00 00 8f 00 00 ;int 1b
*fd 01 08 00 00 8f 00 00 ;int 1c
*fd 01 08 00 00 8f 00 00 ;int 1d
*58 00 08 01 01 00       ;0100 tabella gdt
*0000
*00 00 00 00 00 00 00 00 ;0108 indice 00
*00 00 00 00 01 9a 01 00 ;indice 08 (codice)
*00 00 00 00 00 92 81 00 ;indice 10 (dati)
*00 00 00 00 02 9a 01 00 ;indice 18 (codice)
*00 00 00 00 03 9a 01 00 ;indice 20 (codice)
*00 00 00 00 04 9a 01 00 ;indice 28 (codice)
*00 00 00 00 05 9a 01 00 ;indice 30 (codice)
*00 00 00 00 06 9a 01 00 ;indice 38 (codice)
*00 00 00 00 07 9a 01 00 ;indice 40 (codice)
*00 00 00 00 08 9a 01 00 ;indice 48 (codice)
*00 00 00 00 09 9a 01 00 ;indice 50 (codice)
*00000000000000000000000000000000
*00000000000000000000000000000000
*00000000000000000000000000000000
*00000000000000000000000000000000
*00000000000000000000000000000000
*00000000000000000000000000000000
*00000000000000000000000000000000
*00000000000000000000000000000000
*00000000000000000000000000000000
*00000000
:0014 jmp 000C
      jmp 0009
      jmp 0008
      jmp 0007
*00 e4 8f 03  ;0200 max settore del disco
*00 00 00 10  ;0204 max bytes della memoria
*00 00 00 00  ;0208 il tempo totale
*00 00 00 00  ;020c il tempo parziale
*00 00 00 00  ;0210 la tastiera
*00 00 00 00  ;0214 numero settori
*00 00 00 00  ;0218 posizione su disco
*00 00 00 00  ;021c posizione in memoria
*00 00 00 00  ;0220 dma
*00 00 00 00  ;0224 dma
*00 00 00 00  ;0228 numero da convertire
*c0 13 10 00  ;022c buffer linea di comando
*00 00 00 00  ;0230 video linea di comando
*00 00        ;0234 pagina video
*01 00        ;0236 spostamento del cursore
*20 03 00 00  ;0238 orizzontale video
*58 02 00 00  ;023c verticale video
*e0 15 00 00  ;0240 orizzontale memoria video
*b3 0b 00 00  ;0244 verticale memoria video
*00 00 00 00  ;0248 inizio display
*00 5e 01 00  ;024c dimensione di una riga di testo
*00 00 08 00  ;0250 archivio in compilazione
*00 00 00 00  ;0254 fondo buffer archivi
*00 00 00 00  ;0258 caps lock
*00           ;025c fondo riga
*00           ;025d fondo pagina
*00 00        ;025e fondo copia
*00 00 00 00  ;0260 fondo codifica del salto
*c0 12 60 09  ;0264 limite finestra grafica
*00 00 00     ;0268 opcode
*00           ;026b incremento
*00 00 00 00  ;026c finestra grafica
*ebe9ff00 eaff00 00                    ;0270 jmp
*00e8ff00 9aff00 00                    ;0278 call
*88898a8b b0b8 c600c700 8c8e a0a1a2a3  ;0280 mov
*ff30 50 6a68 060e161e 0fa0a8 00000000 ;0290 push
*c000 d200 c100 d300                   ;02a0 rol
*c008 d208 c108 d308                   ;02a8 ror
*c020 d220 c120 d320                   ;02b0 shl
*c028 d228 c128 d328                   ;02b8 shr
*20212223 2425 80208120 0000 00000000  ;02c0 and
*8f00 58 0000 0700171f 0fa1a8 00000000 ;02d0 pop
*fe0040 ff0040 0000                    ;02e0 inc
*fe0848 ff0848 0000                    ;02e8 dec
*00010203 0405 80008100 0000 00000000  ;02f0 add
*38393a3b 3c3d 80388138 0000 00000000  ;0300 cmp
*30313233 3435 80308130 0000 00000000  ;0310 xor
*28292a2b 2c2d 80288128 0000 00000000  ;0320 sub
*84858485 a8a9 f600f700 0000 00000000  ;0330 test
*00008687 0000 00000000 0000 00000000  ;0340 xchg
*0f0110 00                             ;0350 lgdt
*0f0118 00                             ;0354 lidt
*f620 f720                             ;0358 mul
*f630 f730                             ;035c div
*08090a0b 0c0d 80088108 0000 00000000  ;0360 or
*f618 f718                             ;0370 neg
*df00 db00                             ;0374 fild
*df18 db18                             ;0378 fistp
*d8c8 dcc8                             ;037c fmul
*d8f0 dcf8                             ;0380 fdiv
*d8c0 dcc0                             ;0384 fadd
*d8e0 dce8                             ;0388 fsub
*d9c0 d900                             ;038c fld
*ddd8 d918                             ;0390 fstp
*ddd0 d910                             ;0394 fst
*df28 df38                             ;0398 fildq-fistpq
*dd00 dd18                             ;039c fldq-fstpq
*dbf0 dff0                             ;03a0 fcomi-fcomip
*d9c8 0000                             ;03a4 fxch
*db28 db38                             ;03a8 fldt-fstpt
*00000000
*00000000000000000000000000000000
*00000000000000000000000000000000
*00000000000000000000000000000000
*00000000000000000000000000000000
*00000000000000000000000000000000
*00 00 26 00  ;0400 tastiera virtuale
*00           ;0404 test riproduce
:0001 push cx ;imposta la porta 64********************
      xor cx,cx
:0006 in al,64
      jmp 0002
:0002 jmp 0003
:0003 jmp 0004
:0004 jmp 0005
:0005 test al,02
      loopnz 0006
      pop cx
      ret
:0007 mov eax,FFFFFFFF ;int 00 "errore"**************
      pop ebx
      pop ecx
      pop edx
      pop ebp
      jmp 001E
:0008 push ax    ;int 08 "il tempo"*****************
      cli
      incd [00010208]
      incw [0001020C]
      mov al,20
      out 20,al
      sti
      pop ax
      iretd
:0009 push ax    ;int 09 "la tastiera"**************
      cli
      call 0001
      in al,60
      cmp [00010404],01
      jz 000B
      cmp al,E0
      jnz 000A
      mov [00010210],00
      mov [00010211],al
      jmp 000B
:000a mov [00010210],al
      cmp al,80
      jb 000B
      mov [00010210],0000
:000b mov al,20
      out 20,al
      sti
      pop ax
      iretd
:000d push bx ;legge settori del disco**************
      push cx
      push dx
      mov bx,[00010214]  ;numero settori
      cli
      mov dx,0CF8        ;imposta la macchina
      mov eax,8000F904
      out dx,eax
      mov dx,0CFC
      mov ax,0005
      out dx,ax
      sti
:0012 mov eax,[0001021C] ;posizione in memoria
      mov [00010220],eax ;inizio dma
      mov eax,80000000
      mov ax,bx
      cmp ax,0041
      jb 000E
      mov ax,0040
:000e push ax
      mov cx,0200
      mul cx
      mov [00010224],eax ;imposta il dma
      cli
      mov dx,1800
      in al,dx
      test al,01
      jz 000F
      lea esi,00101A36   ;Disco in lettura
      call 0029
      call 0038
      jmp 001E
:000f add dl,02
      in al,dx
      or al,06
      out dx,al
      add dl,02
      mov eax,00010220   ;posizione dma
      out dx,eax
      mov dx,01F6
      mov al,A0
      out dx,al
      mov dx,01F1
      mov al,00
      out dx,al
      inc dl
      pop ax
      out dx,al
      inc dl
      mov al,[00010218]  ;posizione su disco
      out dx,al
      inc dl
      mov al,[00010219]
      out dx,al
      inc dl
      mov al,[0001021A]
      out dx,al
      inc dl
      mov al,[0001021B]
      add al,E0
      out dx,al
      inc dl
      mov al,C8          ;sposta i dati
      out dx,al
      mov dx,1800
      mov al,08
      out dx,al
      or al,01
      out dx,al
      mov dx,01F7        ;test di lettura
:0010 in al,dx
      cmp al,50
      jnz 0010
      mov dx,1800
      mov al,00
      out dx,al
      add dl,02
      in al,dx
      or al,07
      out dx,al
      sti
      sub bx,0040
      ja 0011
      mov dx,01F7
      in al,dx
      pop dx
      pop cx
      pop bx
      ret
:0011 mov eax,00000040   ;ciclo rotazione
      add [00010218],eax
      mov eax,00008000
      add [0001021C],eax
      jmp 0012
:0013 push ecx ;inizio display******************
      push edx
      mov [00010248],eax
      xor ecx,ecx
      mov eax,[00010240]
      mov cx,[0001024A]
      shr cx,03
      mul ecx
      mov cx,[00010248]
      shr cx,03
      add eax,ecx
      mov cx,ax
      cli
      mov dx,03D4
      mov al,0D
      out dx,al
      inc dx
      mov al,cl
      out dx,al
      dec dx
      mov al,0C
      out dx,ax
      shr eax,08
      mov dx,03DE
      mov al,00
      out dx,al
      inc dx
      mov al,10
      cmp ah,10
      jb 0053
      mov al,40
:0053 add al,ah
      out dx,al
      sti
      mov eax,[00010240]
      mov cx,[0001024A]
      mul ecx
      mov cx,[00010248]
      add eax,ecx
      mov [00010248],eax
      pop edx
      pop ecx
      ret
:0015 push eax ;cambia pagina video************
      push dx
      mov dx,03DE
      mov eax,edi
      shr eax,08
      mov al,04
      cli
      out dx,ax
      sti
      pop dx
      pop eax
      ret
:0016 push esi ;disegna un carattere 8x16************
      push edi  ;al = carattere
      push ebp  ;ebx = colore
      push cx
      call 0015
      lea esi,00100000
      lea ebp,000A0000
      mov bp,di
      mov ah,00
      shl ax,04
      add si,ax
      mov cx,0010        ;punti in verticale
:001b push cx
      mov ah,80
      mov al,[esi]
      mov cx,0008        ;punti in orizzontale
:0019 mov [ebp+00],bl
      test al,ah
      jz 0017
      mov [ebp+00],bh
:0017 inc bp
      jnz 0018
      add edi,00010000
      call 0015
:0018 shr ah,01
      loop 0019
      mov ax,[00010240]
      sub ax,0008
      add bp,ax
      ja 001A
      add edi,00010000
      call 0015
:001a inc si
      pop cx
      loop 001B
      pop cx
      pop ebp
      pop edi
      pop esi
      ret
:001c push edi ;converte esadecimale*****************
      push ebx   ;eax = numero da convertire
      push cx    ;esi = numero convertito
      lea edi,00010228
      mov [edi],eax
      dec di
      add di,cx
      mov ebx,00101400
:001d mov bl,[edi]
      rol bl,04
      and bl,0F
      mov bl,[ebx]
      mov [esi],bl
      inc si
      mov bl,[edi]
      and bl,0F
      mov bl,[ebx]
      mov [esi],bl
      inc si
      dec di
      loop 001D
      pop cx
      pop ebx
      pop edi
      ret
:001e push esp ;stampa i registri***************
      push edi
      push esi
      push ebp
      push edx
      push ecx
      push ebx
      push eax
      pushfd
      push cs
      push gs
      push fs
      push ss
      push es
      push ds
      mov bx,030F        ;colore carattere+sfondo
      lea esi,001014A0   ;registri a 16 bit
      mov eax,096012C0
      call 0013
      mov edi,[00010248]
      mov eax,[00010240]
      shl eax,05
      add eax,00000020
      add edi,eax
      mov ebp,edi
      mov cx,0006
:0020 pop ax
      push edi
      push cx
      push si
      add si,0005
      mov cx,0002
      call 001C
      pop si
      mov cx,0009
:001f mov al,[esi]
      call 0016
      add edi,00000008
      inc si
      loop 001F
      pop cx
      pop edi
      mov eax,[00010240]
      shl eax,04
      add edi,eax
      loop 0020
      mov edi,ebp
      add edi,00000050
      lea esi,00101410   ;registri a 32 bit
      mov cx,0009
:0022 pop eax
      push edi
      push cx
      push si
      add si,0008
      mov cx,0004
      call 001C
      pop si
      mov cx,0010
:0021 mov al,[esi]
      call 0016
      add edi,00000008
      inc si
      loop 0021
      pop cx
      pop edi
      mov eax,[00010240]
      shl eax,04
      add edi,eax
      loop 0022
      mov esp,0000FFFF
:0023 mov ax,[00010210]  ;ciclo tastiera
      cmp al,00
      jz 0023
      mov [00010210],0000
      cmp ax,E02A
      jz 0023
      call 00E6
      cmp al,1D          ;tasto pausa
      jz 0054
      mov eax,000012C0
      call 0013
      jmp 0042
:0054 mov al,FE
      out 64,al
:0024 push esi ;imposta la linea di comando************
      push edi
      push ebx
      push cx
      mov ebx,0E0E0E0E   ;colore
      mov eax,000012C0
      call 0013
      mov edi,[00010248]
      lea esi,000A0000
      mov cx,0018        ;ciclo in verticale
:0027 push edi
      push cx
      call 0015
      mov si,di
      mov cx,[00010238]  ;ciclo in orizzontale
      shr cx,02
:0026 mov [esi],ebx
      add si,0004
      jnz 0025
      add edi,00010000
      call 0015
:0025 loop 0026
      pop cx
      pop edi
      add edi,[00010240]
      loop 0027
      mov bx,010E
      lea esi,001014E0   ;Pagina:
      mov edi,[00010248]
      mov eax,[00010240]
      shl eax,02
      add edi,eax
      add edi,00000008
      mov cx,0007
:0028 mov al,[esi]
      call 0016
      inc si
      add edi,00000008
      loop 0028
      lea esi,001014E7   ;X:        Y:
      mov edi,[00010248]
      mov eax,[00010240]
      shl eax,02
      add edi,eax
      add edi,00000298
      mov cx,0010
:0029 mov al,[esi]
      call 0016
      inc si
      add edi,00000008
      loop 0029
      mov edi,[00010248]
      mov eax,[00010240]
      shl eax,02
      add edi,eax
      add edi,00000078
      mov [00010230],edi ;inizio scrittura sulla linea
      pop cx
      pop ebx
      pop edi
      pop esi
      ret
:002a push ebx ;conversione esadecimale-decimale********
      push ecx   ;eax = numero
      push edx
      lea edi,001013B8   ;buffer dei numeri
      mov ebx,00101400
      mov ecx,0000000A
:002c cmp eax,00000000
      jz 002B
      xor edx,edx
      div ecx
      mov bl,dl
      mov dl,[ebx]
      dec di
      mov [edi],dl
      jmp 002C
:002b cmp di,13B8
      jnz 002D
      dec di
      mov [edi],52
:002d pop edx
      pop ecx
      pop ebx
      ret
:002e push esi ;imposta la pagina***************
      push edi
      push ebx
      push cx
      mov bx,030F        ;colore
      xor eax,eax
      mov ax,[00130004]
      call 002A
      mov esi,edi
      mov edi,[00010248]
      mov eax,[00010240]
      shl eax,02
      add eax,00000040
      add edi,eax
      mov cx,0004
:002f mov al,[esi]
      call 0016
      add edi,00000008
      inc si
      loop 002F
      pop cx
      pop ebx
      pop edi
      pop esi
      ret
:0030 push esi ;imposta la orizzontale************
      push edi
      push ebx
      push cx
      mov bx,030F        ;colore
      xor eax,eax
      mov al,dh
      call 002A
      mov esi,edi
      mov edi,[00010248]
      mov eax,[00010240]
      shl eax,02
      add eax,000002A8
      add edi,eax
      mov cx,0004
:0031 mov al,[esi]
      call 0016
      add edi,00000008
      inc si
      loop 0031
      pop cx
      pop ebx
      pop edi
      pop esi
      ret
:0032 push esi ;imposta la verticale***************
      push edi
      push ebx
      push cx
      mov bx,030F        ;colore
      xor eax,eax
      mov al,dl
      call 002A
      mov esi,edi
      mov edi,[00010248]
      mov eax,[00010240]
      shl eax,02
      add eax,000002E8
      add edi,eax
      mov cx,0004
:0033 mov al,[esi]
      call 0016
      add edi,00000008
      inc si
      loop 0033
      pop cx
      pop ebx
      pop edi
      pop esi
      ret
:0034 push cx ;imposta inizio pagina**************
      push dx
      lea ebp,00132000
      mov ax,[00130004]
      dec ax
      mov cx,0024
      mul cx
      mov cx,ax
:0037 cmp cx,0000
      jz 0035
:0036 inc ebp
      mov al,[ebp+00]
      cmp al,1C
      jnz 0036
      dec cx
      jmp 0037
:0035 pop dx
      pop cx
      ret
:0038 push esi ;spampa una pagina**************
      push edi
      push ebx
      push ecx
      mov bx,[00130010]  ;colore
      mov esi,ebp
      mov edi,[00010248]
      mov eax,[00010240]
      mov ecx,00000018
      mul ecx
      add edi,eax
      mov cx,0000
:003d cmp cx,0024        ;ciclo in verticale
      jz 0039
      push edi
      push cx
      mov cx,0064
:003b inc esi            ;ciclo sulla riga
      mov al,[esi]
      cmp al,1C
      jz 003A
      call 0016
      add edi,00000008
      dec cx
      jmp 003B
:003a cmp cx,0000
      jz 003C
      call 0016
      add edi,00000008
      mov al,1C
      dec cx
      jmp 003A
:003c pop cx
      pop edi
      inc cx
      cmp esi,[00010254]
      jz 006D
      add edi,[0001024C]
      jmp 003D
:0039 mov [0001025D],cl  ;fondo pagina
      mov dx,0101        ;coordinate
      pop ecx
      pop ebx
      pop edi
      pop esi
      ret
:003e push ecx ;punto inserimento************
      push edx
      push dx
      mov edi,[00010248]
      mov eax,[00010240]
      mov ecx,00000008
      mov dh,00
      shl dx,04
      add cx,dx
      mul ecx
      pop dx
      shr dx,08
      dec dl
      shl dx,03
      mov cx,dx
      add eax,ecx
      add edi,eax
      pop edx
      pop ecx
      ret
:003f push ebp ;modo cursore********************
      push cx
      call 003E
      call 0015
      lea ebp,000A0000
      mov bp,di
      mov cx,0010        ;punti in verticale
:0048 push cx
      mov cx,0002        ;punti in orizzontale
:0046 xor [ebp+00],01010101
      add bp,0004
      jnz 0045
      add edi,00010000
      call 0015
:0045 loop 0046
      mov ax,[00010240]
      sub ax,0008
      add bp,ax
      ja 0047
      add edi,00010000
      call 0015
:0047 pop cx
      loop 0048
      pop cx
      pop ebp
      ret
:0049 push esi ;imposta il fondo riga**************
      push dx
      shr dx,08
      mov esi,ebp
:004b mov al,[esi]
      cmp al,1C
      jz 004A
      inc esi
      inc dx
      jmp 004B
:004A sub dx,0064
      neg dx
      mov [0001025C],dl
      pop dx
      pop esi
      ret
:0065 push esi ;sposta i caratteri******************
      push edi
      push ebx
      mov esi,[00010254]
      incd [00010254]
      push ax
:0067 cmp esi,ebp
      jz 0066
      mov al,[esi]
      mov [esi+01],al
      dec esi
      jmp 0067
:0066 mov al,[esi]
      mov [esi+01],al
      pop ax
      mov [ebp+00],al
      mov bx,[00130010]  ;colore
      call 003E
:0069 mov al,[esi]
      cmp al,1C
      jz 0068
      call 0016
      add edi,00000008
      inc esi
      jmp 0069
:0068 pop ebx
      pop edi
      pop esi
      ret
:006a mov al,[ebp+00] ;va a fondo riga***********
      cmp al,1C
      jz 006B
      inc ebp
      jmp 006A
:006b ret
:006c dec ebp ;va a inizio riga***************
      mov al,[ebp+00]
      cmp al,1C
      jnz 006C
      ret
:006d push cx ;pulisce la pagina*************
      shl cx,04
      add edi,[0001024C]
      lea esi,000A0000
:0071 cmp cx,0240
      jz 006E
      push edi
      push cx
      mov si,di
      call 0015
      mov cx,[00010238]
      shr cx,02
      xor eax,eax
:0070 mov [esi],eax
      add si,0004
      jnz 006F
      add edi,00010000
      call 0015
:006f loop 0070
      pop cx
      pop edi
      add edi,[00010240]
      inc cx
      jmp 0071
:006e pop cx
      mov [0001025D],cl  ;fondo pagina
      mov dx,0101        ;coordinate
      pop ecx
      pop ebx
      pop edi
      pop esi
      ret
:0072 push esi ;cancella un carattere***********
      push edi
      push ebx
      mov esi,ebp
:0074 cmp esi,[00010254]
      jz 0073
      mov al,[esi]
      mov [esi+FF],al
      inc esi
      jmp 0074
:0073 mov al,[esi]
      mov [esi+FF],al
      decd [00010254]
      call 003E
      mov esi,ebp
      mov bx,[00130010]  ;colore
      dec esi
:0076 mov al,[esi]
      cmp al,1C
      jz 0075
      call 0016
      add edi,00000008
      inc esi
      jmp 0076
:0075 call 0016
      pop ebx
      pop edi
      pop esi
      ret
:0077 push esi ;nuova riga********************
      mov esi,[00010254]
      incd [00010254]
:0079 cmp esi,ebp
      jz 0078
      mov al,[esi]
      mov [esi+01],al
      dec esi
      jmp 0079
:0078 mov al,[esi]
      mov [esi+01],al
      pop esi
      ret
:007a push esi    ;cancella una riga**************
      push edi
      mov esi,ebp
      mov edi,ebp
:007b inc esi
      mov al,[esi]
      cmp al,1C
      jnz 007B
:007d cmp esi,[00010254]
      jz 007C
      mov al,[esi]
      mov [edi],al
      inc esi
      inc edi
      jmp 007D
:007c mov al,[esi]
      mov [edi],al
      mov [00010254],edi
      pop edi
      pop esi
      ret
:007e push edi ;messaggio*******************
      push ebp
      push ebx
      mov ebp,[0001022C]
      mov edi,[00010230]
      mov bx,030F        ;colore
:0080 mov al,[esi]
      cmp al,00
      jz 007F
      mov [ebp+00],al
      call 0016
      add edi,00000008
      inc bp
      inc si
      jmp 0080
:007f mov [0001022C],bp
      mov [00010230],edi
      pop ebx
      pop ebp
      pop edi
      ret
:0081 push edi ;linea di comando****************
      push ebx
      push cx
      xor cx,cx
:0082 mov ax,[00010210]  ;ciclo tastiera
      cmp al,00
      jz 0082
      mov [00010210],0000
      cmp ax,E02A
      jz 0082
      call 00E6
      cmp al,0E
      jz 0083
      cmp al,1C
      jz 0084
      mov ebx,[0001022C] ;carattere
      cmp bx,1400
      jz 0082
      mov [ebx],al
      inc bx
      mov [0001022C],bx
      mov edi,[00010230]
      mov bx,030F        ;colore
      call 0016
      add edi,00000008
      mov [00010230],edi
      inc cx
      jmp 0082
:0083 mov ebx,[0001022C] ;cancella
      cmp cx,0000
      jz 0082
      dec bx
      mov [ebx],00
      mov [0001022C],bx
      mov edi,[00010230]
      mov bx,0E0E        ;colore
      sub edi,00000008
      call 0016
      mov [00010230],edi
      dec cx
      jmp 0082
:0084 mov ebx,[0001022C] ;ritorno
      mov al,A8
      mov [ebx],al
      inc bx
      mov [0001022C],bx
      mov edi,[00010230]
      mov bx,010F        ;colore
      call 0016
      add edi,00000008
      mov [00010230],edi
      pop cx
      pop ebx
      pop edi
      ret
:0085 push edi ;compone il numero decimale*************
      push cx
      xor ebx,ebx
      mov cl,00
      mov edi,[0001022C]
      dec di
:0087 dec di
      lea eax,00101500
      mov al,[edi]
      cmp al,34
      jz 0086
      mov al,[eax]
      and eax,000000FF
      shl eax,cl
      add ebx,eax
      add cl,04
      jmp 0087
:0086 pop cx
      pop edi
      ret
:0088 xor eax,eax ;conver. decimale esadecimale*********
:0089 cmp ebx,10000000
      jb 008A
      sub ebx,10000000
      add eax,00989680
      jmp 0089
:008a cmp ebx,01000000
      jb 008B
      sub ebx,01000000
      add eax,000F4240
      jmp 008A
:008b cmp ebx,00100000
      jb 008C
      sub ebx,00100000
      add eax,000186A0
      jmp 008B
:008c cmp ebx,00010000
      jb 008D
      sub ebx,00010000
      add eax,00002710
      jmp 008C
:008d cmp bx,1000
      jb 008E
      sub bx,1000
      add eax,000003E8
      jmp 008D
:008e cmp bx,0100
      jb 008F
      sub bx,0100
      add eax,00000064
      jmp 008E
:008f cmp bx,0010
      jb 0090
      sub bx,0010
      add eax,0000000A
      jmp 008F
:0090 add eax,ebx
      ret
:0091 push esi ;cancella la linea di comando************
      push edi
      push ebx
      push cx
      mov ax,13C0
      mov [0001022C],ax
      mov ebx,0E0E0E0E   ;colore
      mov edi,[00010248]
      mov eax,[00010240]
      shl eax,02
      add edi,eax
      add edi,00000078
      mov [00010230],edi ;inizio scrittura sulla linea
      lea esi,000A0000
      mov cx,0010        ;ciclo in verticale
:0094 push edi
      push cx
      call 0015
      mov si,di
      mov cx,0200        ;ciclo in orizzontale
      shr cx,02
:0093 mov [esi],ebx
      add si,0004
      jnz 0092
      add edi,00010000
      call 0015
:0092 loop 0093
      pop cx
      pop edi
      add edi,[00010240]
      loop 0094
      pop cx
      pop ebx
      pop edi
      pop esi
      ret
:0096 push bx ;scrive settori del disco*************
      push cx
      push dx
      mov bx,[00010214]  ;numero settori
      cli
      mov dx,0CF8        ;imposta la macchina
      mov eax,8000F904
      out dx,eax
      mov dx,0CFC
      mov ax,0005
      out dx,ax
      sti
:009b mov eax,[0001021C] ;posizione in memoria
      mov [00010220],eax ;inizio dma
      mov eax,80000000
      mov ax,bx
      cmp ax,0041
      jb 0097
      mov ax,0040
:0097 push ax
      mov cx,0200
      mul cx
      mov [00010224],eax ;imposta dma
      cli
      mov dx,1800
      in al,dx
      test al,01
      jz 0098
      lea esi,00101A9C   ;Disco in scrittura
      call 0029
      call 0038
      jmp 001E
:0098 add dl,02
      in al,dx
      or al,06
      out dx,al
      add dl,02
      mov eax,00010220   ;posizione dma
      out dx,eax
      mov dx,01F6
      mov al,A0
      out dx,al
      mov dx,01F1
      mov al,00
      out dx,al
      inc dl
      pop ax
      out dx,al
      inc dl
      mov al,[00010218]  ;posizione su disco
      out dx,al
      inc dl
      mov al,[00010219]
      out dx,al
      inc dl
      mov al,[0001021A]
      out dx,al
      inc dl
      mov al,[0001021B]
      add al,E0
      out dx,al
      inc dl
      mov al,CA          ;sposta i dati
      out dx,al
      mov dx,1800
      mov al,00
      out dx,al
      or al,01
      out dx,al
      mov dx,01F7        ;test di lettura
:0099 in al,dx
      cmp al,50
      jnz 0099
      mov dx,1800
      mov al,00
      out dx,al
      add dl,02
      in al,dx
      or al,07
      out dx,al
      sti
      sub bx,0040
      ja 009A
      mov dx,01F7
      in al,dx
      pop dx
      pop cx
      pop bx
      ret
:009a mov eax,00000040   ;ciclo rotazione
      add [00010218],eax
      mov eax,00008000
      add [0001021C],eax
      jmp 009B
:009c mov ax,[00010214] ;nuovo archivio****************
      push ax
      mov ax,0001
      mov [00010214],ax
      mov eax,00010080
      mov [00010218],eax
      mov eax,00004000
      mov [0001021C],eax
      call 000D
      mov eax,[00004000]
      mov [esi],eax
      add eax,00000080
      mov [00004000],eax
      call 0096
      pop ax
      mov [00010214],ax
      ret
:009d push esi ;salva gli archivi*******************
      push edi
      push cx
      lea edi,00130000
      lea esi,00130100
      mov eax,[00010254]
      shr eax,10
      sub ax,0012
      mov cx,ax
      mov ax,0080
      mov [00010214],ax
:009f mov eax,[esi]
      cmp eax,00000000
      jnz 009E
      call 009C
      mov eax,[esi]
:009e mov [00010218],eax
      mov [0001021C],edi
      call 0096
      add edi,00010000
      add si,0004
      loop 009F
      pop cx
      pop edi
      pop esi
      ret
:00a8 push ebx ;conversione carattere*******
      lea ebx,00101500
      mov [00010228],eax
      mov bl,[00010228]
      mov ah,[ebx]
      shl ah,04
      mov bl,[00010229]
      mov al,[ebx]
      add ah,al
      mov bl,[0001022A]
      mov al,[ebx]
      shl al,04
      mov bl,[0001022B]
      mov bl,[ebx]
      add al,bl
      pop ebx
      ret
:00a9 push ebx ;conversione carattere*******
      lea ebx,00101500
      mov [00010228],ax
      mov bl,[00010228]
      mov al,[ebx]
      shl al,04
      mov bl,[00010229]
      mov ah,[ebx]
      add al,ah
      pop ebx
      ret
:00ab push esi ;copia il codice***************
      push ebp
      push cx
      lea esi,00230000
      mov cx,ax
:00ac mov al,[ebp+00]
      mov [esi],al
      inc ebp
      inc si
      cmp al,1C
      jnz 00AC
      loop 00AC
      mov [0001025E],si
      pop cx
      pop ebp
      pop esi
      ret
:00ad ;etichetta libera
:00af mov [esi+30],00 ;istruzione errata**************
      call 0091
      call 007E
:00ae mov ax,[00010210]  ;ciclo tastiera
      cmp al,00
      jz 00AE
      mov [00010210],0000
      cmp ax,E02A
      jz 00AE
      call 0091
      jmp 001E
:00b0 push si ;sposta i numeri*************
      mov si,bx
      mov bx,1380
:00b2 cmp bx,si
      jz 00B1
      mov al,[ebx]
      mov [edx],al
      inc bx
      inc dx
      jmp 00B2
:00b1 pop si
      ret
:00b3 cmp [esi],39 ;spazio*****************
      jnz 00AF
:00b4 inc esi
      cmp [esi],39
      jz 00B4
      ret
:00b5 push edi ;numero*****************
      push ebx
      lea edi,001013B0
      lea ebx,00101500
      mov cl,00
:00b8 mov bl,[esi]
      cmp bl,80
      jb 00B6
      cmp bl,B4
      jz 00B7
      mov al,[ebx]
      shl al,04
      inc esi
      mov bl,[esi]
      mov ah,[ebx]
      add al,ah
      mov [edi],al
      inc di
      inc cl
:00b7 inc esi
      jmp 00B8
:00b6 pop ebx
:00ba cmp di,13B0
      jz 00B9
      dec di
      mov al,[edi]
      mov [ebx],al
      inc bx
      jmp 00BA
:00b9 pop edi
      ret
:00bb push esi ;cambia programma******************
      push ebx
      lea esi,00220000
      mov ebx,[0001022C]
:00bc dec bx
      cmp [ebx],34
      jnz 00BC
      inc bx
:00c2 cmp [esi],00
      jz 00BD
      push bx
:00c0 mov ah,[esi]
      mov al,[ebx]
      cmp ax,FFA8
      jz 00BE
      cmp al,ah
      jnz 00BF
      inc bx
      inc si
      jmp 00C0
:00bf cmp [esi],FF
      jz 00C1
      inc si
      jmp 00BF
:00c1 add si,0005
      pop bx
      jmp 00C2
:00be pop bx
      inc si
      mov eax,[esi]
      mov [00010250],eax
:00bd pop ebx
      pop esi
      ret
:00c3 push esi ;incolla il codice****************
      push edi
      push cx
      xor eax,eax
      mov ax,[0001025E]
      cmp ax,0000
      jz 00C4
      cmp [ebp+00],1C
      jnz 00C5
      dec ax
:00c5 mov esi,[00010254]
      add [00010254],eax
      mov edi,[00010254]
      mov cx,ax
:00c7 cmp esi,ebp
      jz 00C6
      mov al,[esi]
      mov [edi],al
      dec esi
      dec edi
      jmp 00C7
:00c6 mov al,[esi]
      mov [edi],al
      lea edi,00230000
:00c8 mov al,[edi]
      mov [esi],al
      inc di
      inc esi
      loop 00C8
:00c4 pop cx
      pop edi
      pop esi
      ret
:00c9 push edi ;finestra grafica***************
      push ebp
      push cx
      lea ebp,000A0000
      mov cx,ax
      shr eax,10
:00cc push edi           ;ciclo in verticale
      push cx
      call 0015
      mov bp,di
:00cb mov [ebp+00],bl    ;ciclo in orizzontale
      inc bp
      jnz 00CA
      add edi,00010000
      call 0015
:00ca loop 00CB
      pop cx
      pop edi
      add edi,[00010240]
      dec ax
      jnz 00CC
      pop cx
      pop ebp
      pop edi
      ret
:00cd push esi ;punto video**************
      push edi
      mov edi,esi
      shr esi,10
      cmp si,[00010234]
      jz 00CE
      call 0015
:00ce and edi,0000FFFF
      or edi,000A0000
      mov [edi],bl
      mov [00010234],si
      pop edi
      pop esi
      ret
:00d0 push eax ;vista disegno*******************
      mov eax,[0001026C]
      call 0013
      call 00E0
:00d1 mov ax,[00010210]  ;ciclo tastiera
      cmp al,00
      jz 00D1
      mov [00010210],0000
      cmp ax,E02A
      jz 00D1
      call 00E6
      cmp ax,E04D
      jz 00D2
      cmp ax,E04B
      jz 00D3
      cmp ax,E050
      jz 00D4
      cmp ax,E048
      jz 00D5
      cmp ax,E051        ;tasto pag.
      jz 00D6
      cmp ax,E053        ;tasto canc.
      jz 00D7
      cmp ax,E04F        ;tasto fine
      jz 00D8
      cmp ax,E047        ;tasto freccia
      jz 00D9
      cmp al,4E          ;tasto +
      jz 00DA
      cmp al,4A          ;tasto -
      jz 00DB
      cmp al,3B          ;tasto F1
      jz 001E
      cmp al,1C
      jz 00DC
      jmp 00D1
:00d2 mov eax,[0001026C] ;finestra a destra
      cmp ax,[00010264]
      jnb 00D1
      add ax,0010
      mov [0001026C],ax
      call 0013
      jmp 00D1
:00d3 mov eax,[0001026C] ;finestra a sinistra
      cmp ax,0000
      jz 00D1
      sub ax,0010
      mov [0001026C],ax
      call 0013
      jmp 00D1
:00d4 mov ax,[0001026E]  ;finestra in alto
      cmp ax,[00010266]
      jnb 00D1
      add ax,0010
      mov [0001026E],ax
      mov eax,[0001026C]
      call 0013
      jmp 00D1
:00d5 mov ax,[0001026E]  ;finestra in basso
      cmp ax,0000
      jz 00D1
      sub ax,0010
      mov [0001026E],ax
      mov eax,[0001026C]
      call 0013
      jmp 00D1
:00d6 call 00E0          ;cursore a destra
      mov ax,[00010236]
      add [0013000A],ax
      call 00E0
      jmp 00D1
:00d7 call 00E0          ;cursore a sinistra
      mov ax,[00010236]
      sub [0013000A],ax
      call 00E0
      jmp 00D1
:00d8 call 00E0          ;cursore in basso
      mov ax,[00010236]
      add [0013000E],ax
      call 00E0
      jmp 00D1
:00d9 call 00E0          ;cursore in alto
      mov ax,[00010236]
      sub [0013000E],ax
      call 00E0
      jmp 00D1
:00da xor [00010236],FF  ;cursore veloce
      jmp 00D1
:00db mov eax,0A2D12C0   ;coordinate
      call 0013
      call 00DD
:00cf cmp [00010210],00
      jz 00CF
      mov eax,[0001026C]
      call 0013
      jmp 00D1
:00dc call 00E0
      pop eax
      ret
:00dd push esi ;coordinate*****************
      push edi
      push ebx
      push cx
      mov bx,030F        ;colore carattere+sfondo
      mov edi,[00010248]
      add edi,00000020
      lea esi,00101380
      mov [esi],342D
      add si,0002
      mov eax,[00130008]
      mov cx,0004
      call 001C
      mov [esi],39
      mov [esi+01],3415
      add si,0003
      mov eax,[0013000C]
      call 001C
      lea si,1380
      mov cx,0015
:00de mov al,[esi]
      call 0016
      add edi,00000008
      inc si
      loop 00DE
      pop cx
      pop ebx
      pop edi
      pop esi
      ret
:00e0 push edi ;modo cursore***************
      push ecx
      push edx
      mov eax,[0013000C]
      shr eax,10
      sub eax,00000004
      mov ecx,[00010240]
      mul ecx
      mov cx,[0013000A]
      add eax,ecx
      mov edi,eax
      call 0015
      mov edx,edi
      and edx,0000FFFF
      or edx,000A0000
      mov ax,0404
      mov cx,0009
:00e3 xor [edx],al
      add dx,[00010240]
      ja 00E1
      add edi,00010000
      call 0015
:00e1 dec cx
      jz 00E2
      cmp cx,0005
      jnz 00E3
      xor [edx+01],ax
      xor [edx+03],ax
      xor [edx+FE],ax
      xor [edx+FC],ax
      dec cx
      add dx,[00010240]
      ja 00E3
      add edi,00010000
      call 0015
      jmp 00E3
:00e2 pop edx
      pop ecx
      pop edi
      ret
:00e4 push esi ;colore del punto*************
      push edi
      mov edi,esi
      shr esi,10
      cmp si,[00010234]
      jz 00E5
      call 0015
:00e5 and edi,0000FFFF
      or edi,000A0000
      mov al,[edi]
      mov [00010234],si
      pop edi
      pop esi
      ret
:00e6 cmp [0001025B],00 ;tastiera virtuale**************
      jz 00E7
      push esi           ;registra
      mov esi,[00010400]
      mov [esi],ax
      add si,0002
      mov [00010400],si
      pop esi
      ret
:00e7 cmp [00010404],00
      jz 00E8
      push esi           ;riproduce
      mov esi,[00010400]
      mov ax,[esi]
      cmp [esi+02],FF
      jz 00E9
      add si,0002
      mov [00010400],si
      mov [00010210],01
      pop esi
      ret
:00e9 mov [00010404],00  ;fine
      mov [00010400],0000
      mov [00010210],00
      pop esi
:00e8 ret
jmp 001E
:0000 mov ax,1000        ;inizio codice***********************
      mov ds,ax
      mov ax,4F02        ;imposta il modo video 800x600
      mov bx,0103
      int 10
      mov ax,4F08        ;modalità colori della tavolozza
      mov bx,0800
      int 10
      mov ax,4F06        ;imposta orizzontale memoria video
      mov bl,00
      mov cx,[00000240]
      int 10
      cli                ;controller 8259
      mov al,11          ;icw1
      out 20,al
      call 0001
      mov al,11
      out A0,al
      call 0001
      mov al,08          ;icw2
      out 21,al
      call 0001
      mov al,10
      out A1,al
      call 0001
      mov al,04          ;icw3
      out 21,al
      call 0001
      mov al,02
      out A1,al
      call 0001
      mov al,01          ;icw4
      out 21,al
      call 0001
      mov al,01
      out A1,al
      call 0001
      mov al,B8          ;mascheratura
      out 21,al
      call 0001
      mov al,0F
      out A1,al
      sti
      cli                ;imposta la tastiera
      call 0001
      mov al,ED
      out 60,al
      call 0001
      mov al,00
      out 60,al
      sti
      cli                ;imposta la linea a0
      call 0001
      mov al,D1
      out 64,al
      call 0001
      mov al,DF
      out 60,al
      call 0001
      mov al,FF
      out 64,al
      sti
      cli                ;imposta la memoria protetta
      lgdt [00000100]
      lidt [00000003]
      mov eax,00000013
      mov cr0,eax
      sti
      cli                ;imposta i registri
      mov ax,0010
      mov ds,ax
      mov es,ax
      mov fs,ax
      mov gs,ax
      mov ss,ax
      mov esp,0000FFFF
      mov ax,0002
      push ax
      popf
      sti
      jmpf 0008:0014
:000c mov ax,0080
      mov [00010214],ax
      mov eax,00080280
      mov [00010218],eax
      mov eax,00100000
      mov [0001021C],eax
      call 000D          ;carica i dati
      lea esi,00101000   ;scrive i colori
      cli
      mov cx,00FF
      mov dx,03C8
      mov al,00
      out dx,al
      inc dx
:00fe mov al,[esi]
      out dx,al
      mov al,[esi+01]
      out dx,al
      mov al,[esi+02]
      out dx,al
      add si,0003
      loop 00FE
      sti
      mov ax,0080
      mov [00010214],ax
      mov eax,00010100
      mov [00010218],eax
      mov eax,00110000
      mov [0001021C],eax
      call 000D          ;carica elenco dei quadrati
      mov ax,0001
      mov [00010214],ax
      mov eax,00010000
      mov [00010218],eax
      mov eax,00220000
      mov [0001021C],eax
      call 000D          ;carica elenco archivi
      call 0024          ;imposta la linea di comando
      mov eax,00FFE04D
      mov [00260000],eax ;inizia la tastiera virtuale
:0040 mov ax,0080
      mov [00010214],ax
      mov eax,[00010250]
      mov [00010218],eax
      lea edi,00130000
      mov [0001021C],edi
      call 000D          ;carica il primo archivio
      lea esi,00130100
:0041 add si,0004
      mov eax,[esi]
      cmp eax,00000000
      jz 0042
      mov [00010218],eax
      add edi,00010000
      mov [0001021C],edi
      call 000D          ;carica gli archivi seguenti
      jmp 0041
:0042 mov ax,0010
      mov [00010214],ax
      lea edi,00120000
      lea esi,001300E0
      mov cx,0008
:0043 mov eax,[esi]
      cmp eax,00000000
      jz 0044
      mov [00010218],eax
      mov [0001021C],edi
      call 000D          ;carica le etichette
:0044 add di,2000
      add si,0004
      loop 0043
      mov eax,[00130000]
      mov [00010254],eax ;fondo buffer
      call 0034          ;imposta inizio pagina
      call 0038          ;stampa una pagina
      mov ebp,[0013002C] ;posizione cursore
      mov dx,[0013002A]  ;posizione coordinate
      call 002E          ;imposta la pagina
      call 0030          ;imposta la orizzontale
      call 0032          ;imposta la verticale
      call 003F          ;modo cursore
      call 0049          ;imposta il fondo riga
:0055 mov ax,[00010210]  ;ciclo tastiera*******************
      cmp al,00
      jz 0055
      mov [00010210],0000
      cmp ax,E02A
      jz 0055
      cmp ax,0038        ;tasto alt
      jz 0095
:004c call 00E6
      cmp ax,E04D
      jz 0056
      cmp ax,E04B
      jz 0057
      cmp ax,E050
      jz 0058
      cmp ax,E048
      jz 0059
      cmp ax,E051
      jz 005A
      cmp ax,E049
      jz 005B
      cmp ax,E037        ;tasto stampa
      jz 005C
      cmp ax,E05D        ;tasto wind
      jz 005D
      cmp ax,E038        ;tasto alt gr
      jz 005E
      cmp al,0E
      jz 005F
      cmp al,1C
      jz 0060
      cmp al,0F
      jz 0061
      cmp al,3A
      jz 0062
      cmp al,3B
      jz 0063
      cmp al,01
      jz 0064
      cmp [0001025C],00  ;carattere++++++++++++++++++
      jz 0055
      cmp [0001025A],00
      jz 004D
      add al,80
:004d call 0065
      inc ebp
      inc dh
      dec [0001025C]
      call 0030
      call 003F
      jmp 0055
:0056 mov al,[ebp+00]    ;cursore a destra+++++++++++++++
      cmp al,1C
      jz 0055
      call 003F
      inc ebp
      inc dh
      call 0030
      call 003F
      jmp 0055
:0057 cmp dh,01          ;cursore a sinistra+++++++++++++
      jz 0055
      call 003F
      dec ebp
      dec dh
      call 0030
      call 003F
      jmp 0055
:0058 cmp dl,[0001025D]  ;cursore in basso++++++++++++++
      jz 005A
      call 003F
      call 006A
      inc ebp
      mov dh,01
      inc dl
      call 0049
      call 0030
      call 0032
      call 003F
      jmp 0055
:0059 cmp dl,01          ;cursore in alto+++++++++++++
      jz 004E
      call 003F
      call 006C
      call 006C
      inc ebp
      mov dh,01
      dec dl
      call 0049
      call 0030
      call 0032
      call 003F
      jmp 0055
:004e mov ax,[00130004]
      cmp ax,0001
      jz 0055
      decw [00130004]
      call 006C
      call 006C
      push ebp
      call 0034
      call 0038
      pop ebp
      inc ebp
      mov dx,0124
      call 002E
      call 0030
      call 0032
      call 003F
      call 0049
      jmp 0055
:005a push ebp           ;pagina giù++++++++++++++++++
      incw [00130004]
      call 0034
      cmp ebp,[00010254]
      jb 004F
      decw [00130004]
      pop ebp
      jmp 0055
:004f pop eax
      call 0038
      inc ebp
      call 002E
      call 0030
      call 0032
      call 003F
      call 0049
      jmp 0055
:005b mov ax,[00130004]  ;pagina sù+++++++++++++++++++
      cmp ax,0001
      jz 0055
      decw [00130004]
      call 0034
      call 0038
      inc ebp
      call 002E
      call 0030
      call 0032
      call 003F
      call 0049
      jmp 0055
:005f cmp dh,01          ;cancella un carattere+++++++
      jz 0055
      call 003F
      dec dh
      inc [0001025C]
      call 0072
      dec ebp
      call 0030
      call 003F
      jmp 0055
:0060 call 006A          ;nuova riga++++++++++++++++++
      call 0077
      cmp dl,24
      jz 005A
      push ebp
      push dx
      call 0034
      call 0038
      pop dx
      pop ebp
      inc ebp
      mov dh,01
      inc dl
      call 0030
      call 0032
      call 003F
      call 0049
      jmp 0055
:0061 call 006C          ;cancella una riga+++++++++++++++
      call 007A
      cmp ebp,[00010254]
      jnz 0050
      mov al,1C
      mov [ebp+01],al
      incd [00010254]
:0050 inc ebp
      push ebp
      push dx
      call 0034
      call 0038
      pop dx
      pop ebp
      mov dh,01
      call 0030
      call 003F
      call 0049
      jmp 0055
:0062 xor [0001025A],01  ;minuscole e maiuscole+++++++++++
      cli
      call 0001
      mov al,ED
      out 60,al
      call 0001
      mov al,[00010258]
      xor al,04
      out 60,al
      sti
      mov [00010258],al
      jmp 0055
:0063 jmp 0040           ;riavvio programma+++++++++++
:005d xor [0001025B],01  ;tastiera virtuale+++++++++++
      cli
      call 0001
      mov al,ED
      out 60,al
      call 0001
      mov al,[00010258]
      xor al,01
      out 60,al
      sti
      mov [00010258],al
      cmp [0001025B],01
      jz 0055
      sub [00010400],0002
      jmp 0055
:005e mov [00010404],01  ;riproduce la tastiera+++++++
      jmp 004C
:0095 cmp [0001025B],00  ;copia tasto+++++++++++++++++
      jz 0055
      mov esi,[00010400]
      mov ah,00
      mov al,[ebp+00]
      mov [esi],ax
      add si,0002
      mov [00010400],si
      cmp al,1C
      jz 0058
      jmp 0056
:005c call 0091          ;comandi+++++++++++++++++++++
      call 0081
      lea esi,001013C0
      cmp [esi],17
      jz 0280
      cmp [esi],2E
      jz 0281
      cmp [esi],1F
      jz 0282
      jmp 005C
:0281 inc si             ;c------------
      cmp [esi],1E
      jz 0283
      cmp [esi],18
      jnz 005C
      inc si
      cmp [esi],19
      jnz 005C
      inc si
      inc si
      inc si
      lea esi,00101A8E   ;copia
      call 007E
      call 0081
      call 0085
      call 0088
      cmp ax,0000
      jz 0055
      call 00AB
      jmp 0055
:0283 inc si
      cmp [esi],32
      jnz 005C
      inc si
      inc si
      inc si
      inc si
      lea esi,00101A7E   ;cambia
      call 007E
      call 0081
      call 00BB
      jmp 0040
:0280 inc si             ;i------------
      cmp [esi],31
      jnz 005C
      inc si
      cmp [esi],2E
      jnz 005C
      inc si
      inc si
      inc si
      inc si
      inc si
      call 00C3          ;incolla
      push ebp
      push dx
      call 0034
      call 0038
      pop dx
      pop ebp
      call 003F
      call 0049
      jmp 0055
:0282 inc si             ;s------------
      lea ebx,001202AA
      mov eax,00080000
      mov ax,[ebx]
      push eax
      lea ebx,00124200
      mov eax,[esi]
      cmp al,A8
      jnz 0284
      pop eax
      jmp 0055
:0284 call 00A8
      and eax,0000FFFF
      or eax,00200000
      shl ax,01
      add bx,ax
      mov ax,[ebx]
      push eax
      retf
jmp 001E
:0064 mov eax,[00010254] ;compilazione******************
      mov [00130000],eax
      mov [0013002A],dx  ;coordinate pagina
      mov [0013002C],ebp ;posizione cursore
      call 009D          ;salva gli archivi
      cmp [00130024],00
      jz 001E
      lea esi,00132000   ;buffer di compilazione
      lea edx,00200000   ;segmento codice
      lea edi,00210000   ;codifica del salto
      lea ebx,00101380   ;buffer dei numeri
:00a0 cmp esi,[00010254]
      jz 00A3
:00a1 inc esi
:00a2 mov al,[esi]
      cmp al,1C
      jz 00A0
      cmp al,39
      jz 00A1
      cmp al,33
      jz 00A4
      cmp al,34
      jz 00A5
      cmp al,37
      jz 00A6
      jmp 00A7
:00a4 inc esi            ;commento
      mov al,[esi]
      cmp al,1C
      jz 00A0
      jmp 00A4
:00a5 inc esi            ;etichetta
      lea ebp,00130200
      mov eax,[esi]
      call 00A8
      shl ax,01
      add bp,ax
      mov [ebp+00],dx
      add esi,00000004
      jmp 00A2
:00a6 inc esi            ;zona dati
:00aa mov al,[esi]
      cmp al,1C
      jz 00A0
      cmp al,33
      jz 00A4
      cmp al,39
      jz 00A6
      mov ax,[esi]
      call 00A9
      mov [edx],al
      inc dx
      add esi,00000002
      jmp 00AA
:00a7 mov bx,1380        ;istruzione++++++++++++++
      xor eax,eax
      mov [00010268],eax
      cmp [esi],24
      jz 0100
      cmp [esi],2E
      jz 0106
      cmp [esi],32
      jz 010A
      cmp [esi],19
      jz 011C
      cmp [esi],26
      jz 0125
      cmp [esi],13
      jz 0129
      cmp [esi],1F
      jz 0137
      cmp [esi],1E
      jz 013D
      cmp [esi],17
      jz 0143
      cmp [esi],20
      jz 014D
      cmp [esi],2D
      jz 0152
      cmp [esi],18
      jz 0155
      cmp [esi],30
      jz 0162
      cmp [esi],14
      jz 0164
      cmp [esi],31
      jz 018B
      cmp [esi],21
      jz 0194
jmp 00AF
:0100 inc esi            ;j++++++++++++
      cmp [esi],32
      jz 0103
      mov ax,800F
      cmp [esi],31
      jnz 0104
      inc esi
      inc ah
:0104 cmp [esi],18       ;jo
      jz 0105
      add ah,02
      cmp [esi],30       ;jb
      jz 0105
      add ah,02
      cmp [esi],2C       ;jz
      jz 0105
      add ah,04
      cmp [esi],1F       ;js
      jz 0105
      add ah,02
      cmp [esi],19       ;jp
      jz 0105
      add ah,02
      cmp [esi],26       ;jl
      jz 0105
      sub ah,06
      xor ah,01
      cmp [esi],1E       ;ja
      jz 0105
      add ah,08          ;jg
:0105 inc esi
      inc esi
      mov [edx],ax
      call 00B5
      mov ax,[ebx+FE]
      mov [edx+02],ax
      add dx,0004
      mov [edi],dx
      add di,0002
      jmp 00A2
:0103 inc esi
      inc esi
      cmp [esi],21
      jz 0101
      cmp [esi],1F
      jz 0191
      call 00B3          ;jmp 0000
      lea ebp,00010270
:0108 call 00B5
      mov ax,[ebx+FE]
      shl eax,08
      mov al,[ebp+01]
      mov [edx],eax
      add dx,0003
      mov [edi],dx
      add di,0002
      jmp 00A2
:0101 inc esi
      call 00B3          ;jmpf 0000:0000
      mov al,[00010274]
:0109 mov [edx],al
      inc dx
      call 00B5
      push edi
      lea edi,00120200
      mov eax,[ebx+FC]
      mov ax,[ebx+FE]
      cmp ax,0008
      jz 0102
      sub ax,0008
:0102 sub ax,0008
      shl ax,0A
      add di,ax
      mov ax,[ebx+FC]
      shl ax,01
      add di,ax
      mov ax,[edi]
      pop edi
      mov [edx],eax
      add dx,0004
      jmp 00A2
:0191 inc esi
      call 00B3          ;jmps 0000:0000
      mov al,[00010274]
      mov [edx],al
      inc dx
      call 00B5
      call 00B0
      jmp 00A2
jmp 00AF
:0106 inc esi            ;c++++++++++++++
      cmp [esi],32
      jz 0151
      cmp [esi],26
      jz 0154
      inc esi
      inc esi
      inc esi
      cmp [esi],21
      jz 0107
      call 00B3          ;call 0000
      mov [edx],0E
      inc dx
      lea ebp,00010278
      jmp 0108
:0107 inc esi
      call 00B3          ;callf 0000:0000
      mov al,[0001027C]
      jmp 0109
:0151 inc esi
      inc esi
      call 00B3          ;cmp
      lea ebp,00010300
      jmp 013E
:0154 inc esi
      cmp [esi],2E
      jz 01BA
      inc esi
      mov [edx],FA       ;cli
      inc dx
      jmp 00A2
:01ba inc esi
      mov [edx],F8       ;clc
      inc dx
      jmp 00A2
jmp 00AF
:0137 inc esi            ;s++++++++++++++
      cmp [esi],14
      jz 0159
      cmp [esi],16
      jz 015A
      inc esi
      cmp [esi],13
      jz 013A
      inc esi
      cmp [esi],11
      jz 0138
      cmp [esi],20
      jz 0139
      call 00B3          ;shl
      lea ebp,000102B0
      jmp 0132
:0138 inc esi
      call 00B3          ;shlw
      lea ebp,000102B4
      jmp 0132
:0139 inc esi
      call 00B3          ;shld
      lea ebp,000102B4
      mov [edx],66
      inc dx
      jmp 0132
:013a inc esi
      cmp [esi],11
      jz 013B
      cmp [esi],20
      jz 013C
      call 00B3          ;shr
      lea ebp,000102B8
      jmp 0132
:013b inc esi
      call 00B3          ;shrw
      lea ebp,000102BC
      jmp 0132
:013c inc esi
      call 00B3          ;shrd
      lea ebp,000102BC
      mov [edx],66
      inc dx
      jmp 0132
:0159 inc esi
      cmp [esi],18
      jz 0188
      cmp [esi],2E
      jz 01BB
      inc esi
      mov [edx],FB       ;sti
      inc dx
      jmp 00A2
:01bb inc esi
      mov [edx],F9       ;stc
      inc dx
      jmp 00A2
:0188 inc esi
      inc esi
      cmp [esi],11
      jz 0189
      cmp [esi],20
      jz 018A
      mov [edx],AA       ;stos
      inc dx
      jmp 00A2
:0189 inc esi
      mov [edx],AB       ;stosw
      inc dx
      jmp 00A2
:018a inc esi
      mov eax,00AB6667   ;stosd
      mov [edx],eax
      add dx,0003
      jmp 00A2
:015a inc esi
      inc esi
      call 00B3          ;sub
      lea ebp,00010320
      jmp 013E
jmp 00AF
:014d inc esi            ;d++++++++++++++
      cmp [esi],17
      jz 0183
      inc esi
      inc esi
      cmp [esi],11
      jz 014E
      cmp [esi],20
      jz 014F
      call 00B3          ;dec
      lea ebp,000102E8
      jmp 014B
:014e inc esi
      call 00B3          ;decw
      lea ebp,000102EB
      jmp 014B
:014f inc esi
      call 00B3          ;decd
      lea ebp,000102EB
      mov [edx],66
      inc dx
      jmp 014B
:0183 inc esi
      inc esi
      cmp [esi],11
      jz 0184
      cmp [esi],20
      jz 0185
      call 00B3          ;div
      lea ebp,0001035C
      mov ch,[ebp+00]
      jmp 0182
:0184 inc esi
      call 00B3          ;divw
      lea ebp,0001035C
      mov ch,[ebp+02]
      jmp 0182
:0185 inc esi
      call 00B3          ;divd
      lea ebp,0001035C
      mov ch,[ebp+02]
      mov [edx],66
      inc dx
      jmp 0182
jmp 00AF
:0143 inc esi            ;i++++++++++++++
      cmp [esi],13
      jz 015C
      inc esi
      cmp [esi],14
      jz 015B
      cmp [esi],2E
      jz 015E
      cmp [esi],1F
      jz 0169
      call 00B3          ;in
      cmp [esi],12
      jnz 015F
      inc esi
      mov [edx],66
      inc dx
:015f mov ax,[esi]
      mov ch,E4
      cmp ax,261E
      jz 0160
      mov ch,E5
:0160 inc esi
      inc esi
      inc esi
      cmp [esi],80
      jb 0161
      call 00B5
      jmp 0115
:0161 add ch,08
      inc esi
      inc esi
      jmp 0115
:0169 inc esi
      cmp [esi],11
      jz 016A
      cmp [esi],20
      jz 016B
      mov ax,6C67        ;ins
      mov [edx],ax
      add dx,0002
      jmp 00A2
:016b mov [edx],66       ;insd
      inc dx
:016a inc esi
      mov ax,6D67        ;insw
      mov [edx],ax
      add dx,0002
      jmp 00A2
:015e inc esi
      cmp [esi],11
      jz 014A
      cmp [esi],20
      jz 014C
      call 00B3          ;inc
      lea ebp,000102E0
:014b mov ch,[ebp+00]
      mov al,[ebp+01]
      mov [0001026B],al
      cmp [esi],2A
      jnz 0144
      inc esi            ;[eax]
      mov [edx],67
      inc dx
      mov ax,[esi+01]
      cmp ax,2D1E
      jz 0145
      inc [00010269]
      cmp ax,2D2E
      jz 0145
      inc [00010269]
      cmp ax,2D20
      jz 0145
      inc [00010269]
      cmp ax,2D30
      jz 0145
      inc [00010269]
      inc [00010269]
      cmp al,80
      jb 0146
      call 00B5          ;[00000000]
      jmp 0147
:0146 cmp ax,1930
      jz 0145
      inc [00010269]
      cmp ax,171F
      jz 0145
      inc [00010269]
      cmp ax,1720
      jz 0145
      jmp 00AF
:0145 inc esi
      inc esi
      inc esi
      cmp [esi],36
      jz 0147
      inc esi
      mov [00010268],40
      call 00B5
      cmp cl,01
      jz 0147
      mov [00010268],80
:0147 inc esi
      jmp 010F
:0144 cmp [esi],12
      jnz 0148
      inc esi
      mov [edx],66
      inc dx
:0148 mov ax,[esi]       ;al
      inc esi
      inc esi
      cmp ax,261E
      jz 0149
      inc [00010269]
      cmp ax,262E
      jz 0149
      inc [00010269]
      cmp ax,2620
      jz 0149
      inc [00010269]
      cmp ax,2630
      jz 0149
      inc [00010269]
      cmp ax,231E
      jz 0149
      inc [00010269]
      cmp ax,232E
      jz 0149
      inc [00010269]
      cmp ax,2320
      jz 0149
      inc [00010269]
      cmp ax,2330
      jz 0149
      mov ch,[ebp+02]    ;ax
      cmp ax,2D1E
      jz 0115
      inc ch
      cmp ax,2D2E
      jz 0115
      inc ch
      cmp ax,2D20
      jz 0115
      inc ch
      cmp ax,2D30
      jz 0115
      inc ch
      cmp ax,191F
      jz 0115
      inc ch
      cmp ax,1930
      jz 0115
      inc ch
      cmp ax,171F
      jz 0115
      inc ch
      cmp ax,1720
      jz 0115
      jmp 00AF
:0149 mov [00010268],C0
      jmp 010F
:014a inc esi
      call 00B3          ;incw
      lea ebp,000102E3
      jmp 014B
:014c inc esi
      call 00B3          ;incd
      lea ebp,000102E3
      mov [edx],66
      inc dx
      jmp 014B
:015b inc esi
      call 00B3          ;int
      call 00B5
      mov ch,CD
      jmp 0115
:015c inc esi
      inc esi
      inc esi
      cmp [esi],20
      jz 015D
      mov [edx],CF       ;iret
      inc dx
      jmp 00A2
:015d inc esi
      mov ax,CF66        ;iretd
      mov [edx],ax
      add dx,0002
      jmp 00A2
jmp 00AF
:0129 inc esi            ;r++++++++++++++
      cmp [esi],12
      jz 0141
      inc esi
      cmp [esi],13
      jz 0134
      inc esi
      cmp [esi],11
      jz 0131
      cmp [esi],20
      jz 0133
      call 00B3          ;rol
      lea ebp,000102A0
:0132 mov ch,[ebp+00]
      mov al,[ebp+01]
      mov [0001026B],al
      cmp [esi],2A
      jnz 012A
      inc esi            ;[eax]
      mov [edx],67
      inc dx
      mov ax,[esi+01]
      cmp ax,2D1E
      jz 012B
      inc [00010269]
      cmp ax,2D2E
      jz 012B
      inc [00010269]
      cmp ax,2D20
      jz 012B
      inc [00010269]
      cmp ax,2D30
      jz 012B
      inc [00010269]
      inc [00010269]
      cmp al,80
      jb 012C
      call 00B5          ;[00000000]
      jmp 012D
:012c cmp ax,1930
      jz 012B
      inc [00010269]
      cmp ax,171F
      jz 012B
      inc [00010269]
      cmp ax,1720
      jz 012B
      jmp 00AF
:012b inc esi
      inc esi
      inc esi
      cmp [esi],36
      jz 012D
      inc esi
      mov [00010268],40
      call 00B5
      cmp cl,01
      jz 012D
      mov [00010268],80
:012d inc esi
      inc esi
      cmp [esi],80
      jb 012E
      call 00B5          ;[eax],00
      jmp 010F
:012e mov ch,[ebp+02]
      inc esi
      inc esi
      jmp 010F
:012a cmp [esi],12
      jnz 012F
      inc esi
      mov [edx],66
      inc dx
:012f mov [00010268],C0 ;al
      mov ax,[esi]
      cmp ax,261E
      jz 0130
      inc [00010269]
      cmp ax,262E
      jz 0130
      inc [00010269]
      cmp ax,2620
      jz 0130
      inc [00010269]
      cmp ax,2630
      jz 0130
      inc [00010269]
      cmp ax,231E
      jz 0130
      inc [00010269]
      cmp ax,232E
      jz 0130
      inc [00010269]
      cmp ax,2320
      jz 0130
      inc [00010269]
      cmp ax,2330
      jz 0130
      add bp,0004
      mov ch,[ebp+00]    ;ax
      mov [00010269],00
      cmp ax,2D1E
      jz 0130
      inc [00010269]
      cmp ax,2D2E
      jz 0130
      inc [00010269]
      cmp ax,2D20
      jz 0130
      inc [00010269]
      cmp ax,2D30
      jz 0130
      inc [00010269]
      cmp ax,191F
      jz 0130
      inc [00010269]
      cmp ax,1930
      jz 0130
      inc [00010269]
      cmp ax,171F
      jz 0130
      inc [00010269]
      cmp ax,1720
      jz 0130
      jmp 00AF
:0130 inc esi
      jmp 012D
:0131 inc esi
      call 00B3          ;rolw
      lea ebp,000102A4
      jmp 0132
:0133 inc esi
      call 00B3          ;rold
      lea ebp,000102A4
      mov [edx],66
      inc dx
      jmp 0132
:0134 inc esi
      cmp [esi],11
      jz 0135
      cmp [esi],20
      jz 0136
      call 00B3          ;ror
      lea ebp,000102A8
      jmp 0132
:0135 inc esi
      call 00B3          ;rorw
      lea ebp,000102AC
      jmp 0132
:0136 inc esi
      call 00B3          ;rold
      lea ebp,000102AC
      mov [edx],66
      inc dx
      jmp 0132
:0141 inc esi
      cmp [esi],19
      jz 0165
      inc esi
      cmp [esi],21
      jz 0142
      mov [edx],CB       ;ret
      inc dx
      jmp 00A2
:0142 inc esi
      mov [edx],CB       ;retf
      inc dx
      jmp 00A2
:0165 inc esi
      inc esi
      mov [edx],F3       ;repz
      inc dx
      jmp 00A2
:01cb ;etichetta libera
jmp 00AF
:0125 inc esi            ;l++++++++++++++
      cmp [esi],18
      jz 0153
      cmp [esi],22
      jz 0170
      cmp [esi],17
      jz 0176
      inc esi
      inc esi
      call 00B3          ;lea
      mov ch,8D
      cmp [esi],12
      jnz 0126
      inc esi
      mov [edx],66
      inc dx
:0126 mov ax,[esi]       ;ax
      cmp ax,2D1E
      jz 0127
      mov [00010269],08
      cmp ax,2D2E
      jz 0127
      mov [00010269],10
      cmp ax,2D20
      jz 0127
      mov [00010269],18
      cmp ax,2D30
      jz 0127
      mov [00010269],20
      cmp ax,191F
      jz 0127
      mov [00010269],28
      cmp ax,1930
      jz 0127
      mov [00010269],30
      cmp ax,171F
      jz 0127
      mov [00010269],38
      cmp ax,1720
      jz 0127
      jmp 00AF
:0127 inc esi
      inc esi
      inc esi
      cmp [esi],80
      jb 0128
      call 00B5          ;ax,0000
      mov [0001026A],06
      cmp cl,02
      jz 010F
      mov [0001026A],05
      mov [edx],67
      inc dx
      cmp cl,04
      jz 010F
      jmp 00AF
:0128 inc esi            ;ax,eax
      mov [edx],67
      inc dx
      mov ax,[esi]
      inc esi
      inc esi
      cmp ax,2D1E
      jz 010F
      inc [0001026A]
      cmp ax,2D2E
      jz 010F
      inc [0001026A]
      cmp ax,2D20
      jz 010F
      inc [0001026A]
      cmp ax,2D30
      jz 010F
      inc [0001026A]
      inc [0001026A]
      inc [0001026A]
      cmp ax,171F
      jz 010F
      inc [0001026A]
      cmp ax,1720
      jz 010F
      jmp 00AF
:0153 inc esi
      inc esi
      inc esi
      cmp [esi],31
      jz 0178
      call 00B3          ;loop
      mov [edx],E2
      inc dx
:0179 mov eax,[esi]
      add esi,00000004
      call 00A8
      shl ax,01
      push edi
      lea edi,00130200
      add di,ax
      mov ax,[edi]
      pop edi
      sub ax,dx
      neg ax
      inc ax
      cmp ax,007F
      ja 00AF
      neg ax
      mov [edx],al
      inc dx
      jmp 00A2
:0178 inc esi
      inc esi
      call 00B3          ;loopnz
      mov [edx],E0
      inc dx
      jmp 0179
:0170 inc esi
      inc esi
      inc esi
      call 00B3          ;lgdt
      lea ebp,00010350
:0177 mov al,[ebp+02]
      mov [0001026B],al
      cmp [esi],2A
      jnz 0171
      inc esi
      mov [edx],67       ;[eax]
      inc dx
      mov ax,[esi+01]
      cmp ax,2D1E
      jz 0172
      inc [00010269]
      cmp ax,2D2E
      jz 0172
      inc [00010269]
      cmp ax,2D20
      jz 0172
      inc [00010269]
      cmp ax,2D30
      jz 0172
      inc [00010269]
      inc [00010269]
      cmp al,80
      jb 0173
      call 00B5          ;[00000000]
      jmp 0174
:0173 cmp ax,1930
      jz 0172
      inc [00010269]
      cmp ax,171F
      jz 0172
      inc [00010269]
      cmp ax,1720
      jz 0172
      jmp 00AF
:0172 inc esi
      inc esi
      inc esi
      cmp [esi],36
      jz 0174
      inc esi
      mov [00010268],40
      call 00B5
      cmp cl,01
      jz 0174
      mov [00010268],80
      jmp 0174
:0171 mov [00010268],C0 ;ax
      cmp [esi],12
      jnz 0175
      inc esi
      mov [edx],66
      inc dx
:0175 mov ax,[esi]
      inc esi
      cmp ax,2D1E
      jz 0174
      inc [00010269]
      cmp ax,2D2E
      jz 0174
      inc [00010269]
      cmp ax,2D20
      jz 0174
      inc [00010269]
      cmp ax,2D30
      jz 0174
      inc [00010269]
      cmp ax,191F
      jz 0174
      inc [00010269]
      cmp ax,1930
      jz 0174
      inc [00010269]
      cmp ax,171F
      jz 0174
      inc [00010269]
      cmp ax,1720
      jz 0174
      jmp 00AF
:0174 inc esi
      mov al,[00010268]
      add al,[00010269]
      add al,[0001026B]
      shl eax,10
      mov ax,[ebp+00]
      mov [edx],eax
      add dx,0003
      call 00B0
      jmp 00A2
:0176 inc esi
      inc esi
      inc esi
      call 00B3          ;lidt
      lea ebp,00010354
      jmp 0177
jmp 00AF
:011c inc esi            ;p++++++++++++++
      cmp [esi],18
      jz 013F
      cmp [esi],31
      jz 0192
      inc esi
      inc esi
      inc esi
      cmp [esi],20
      jz 0123
      cmp [esi],21
      jz 016D
      call 00B3          ;push
      lea ebp,00010290
:0124 cmp [esi],2A
      jnz 011D
      inc esi
      mov ch,[ebp+00]    ;[eax]
      mov al,[ebp+01]
      mov [0001026B],al
      mov [edx],67
      inc dx
      mov ax,[esi+01]
      cmp ax,2D1E
      jz 011E
      inc [00010269]
      cmp ax,2D2E
      jz 011E
      inc [00010269]
      cmp ax,2D20
      jz 011E
      inc [00010269]
      cmp ax,2D30
      jz 011E
      inc [00010269]
      inc [00010269]
      cmp al,80
      jb 011F
      call 00B5          ;[00000000]
      inc esi
      jmp 010F
:011f cmp ax,1930
      jz 011E
      inc [00010269]
      cmp ax,171F
      jz 011E
      inc [00010269]
      cmp ax,1720
      jz 011E
      jmp 00AF
:011e inc esi
      inc esi
      inc esi
      cmp [esi],36
      jz 0120
      inc esi
      mov [00010268],40
      call 00B5
      cmp cl,01
      jz 0120
      mov [00010268],80
:0120 inc esi
      jmp 010F
:011d cmp [esi],80
      jb 0121
      mov ch,[ebp+04]    ;0000
      call 00B5
      cmp cl,02
      jz 0115
      mov [edx],66
      inc dx
      cmp cl,04
      jz 0115
      jmp 00AF
:0121 mov al,[esi+02]
      cmp al,1C
      jz 0122
      cmp al,39
      jz 0122
      inc esi
      mov [edx],66
      inc dx
:0122 mov ch,[ebp+02]    ;ax
      mov ax,[esi]
      inc esi
      inc esi
      cmp ax,2D1E
      jz 0115
      inc ch
      cmp ax,2D2E
      jz 0115
      inc ch
      cmp ax,2D20
      jz 0115
      inc ch
      cmp ax,2D30
      jz 0115
      inc ch
      cmp ax,191F
      jz 0115
      inc ch
      cmp ax,1930
      jz 0115
      inc ch
      cmp ax,171F
      jz 0115
      inc ch
      cmp ax,1720
      jz 0115
      mov ch,[ebp+05]    ;es
      cmp ax,1F12
      jz 0115
      mov ch,[ebp+06]
      cmp ax,1F2E
      jz 0115
      mov ch,[ebp+07]
      cmp ax,1F1F
      jz 0115
      mov ch,[ebp+08]
      cmp ax,1F20
      jz 0115
      mov ch,[ebp+09]
      mov cl,[ebp+0A]
      mov [00010268],cl
      cmp ax,1F21
      jz 010F
      mov cl,[ebp+0B]
      mov [00010268],cl
      cmp ax,1F22
      jz 010F
      jmp 00AF
:0123 inc esi
      call 00B3          ;pushd
      lea ebp,00010290
      mov [edx],66
      inc dx
      jmp 0124
:016d inc esi
      cmp [esi],20
      jz 0187
      mov [edx],9C       ;pushf
      inc dx
      jmp 00A2
:0187 inc esi
      mov ax,9C66        ;pushfd
      mov [edx],ax
      add dx,0002
      jmp 00A2
:013f inc esi
      inc esi
      cmp [esi],20
      jz 0140
      cmp [esi],21
      jz 016E
      call 00B3          ;pop
      lea ebp,000102D0
      jmp 0124
:0140 inc esi
      call 00B3          ;popd
      lea ebp,000102D0
      mov [edx],66
      inc dx
      jmp 0124
:016e inc esi
      mov [edx],9D       ;popf
      inc dx
      jmp 00A2
:0192 inc esi
      inc esi
      cmp [esi],21
      jz 01B4
      call 00B3          ;pnt
      mov ch,8D
      mov ax,6667
      mov [edx],ax
      add dx,0002
      inc esi
      mov ax,[esi]       ;eax
      cmp ax,2D1E
      jz 0193
      mov [00010269],08
      cmp ax,2D2E
      jz 0193
      mov [00010269],10
      cmp ax,2D20
      jz 0193
      mov [00010269],18
      cmp ax,2D30
      jz 0193
      mov [00010269],20
      cmp ax,191F
      jz 0193
      mov [00010269],28
      cmp ax,1930
      jz 0193
      mov [00010269],30
      cmp ax,171F
      jz 0193
      mov [00010269],38
      cmp ax,1720
      jz 0193
      jmp 00AF
:0193 mov [0001026A],05
      inc esi
      inc esi
      inc esi
      call 00B5          ;eax,00000000
      lea eax,00130000
      mov ax,[ebx+FC]
      shl ax,01
      add ax,0200
      mov ax,[eax]
      mov [ebx+FC],ax
      jmp 010F
:01b4 inc esi
      call 00B3          ;pntf
      mov ch,8D
      mov ax,6667
      mov [edx],ax
      add dx,0002
      inc esi
      mov ax,[esi]       ;eax
      cmp ax,2D1E
      jz 01B5
      mov [00010269],08
      cmp ax,2D2E
      jz 01B5
      mov [00010269],10
      cmp ax,2D20
      jz 01B5
      mov [00010269],18
      cmp ax,2D30
      jz 01B5
      mov [00010269],20
      cmp ax,191F
      jz 01B5
      mov [00010269],28
      cmp ax,1930
      jz 01B5
      mov [00010269],30
      cmp ax,171F
      jz 01B5
      mov [00010269],38
      cmp ax,1720
      jz 01B5
      jmp 00AF
:01b5 mov [0001026A],05
      inc esi
      inc esi
      inc esi
      call 00B5          ;eax,00000000
      mov eax,[ebx+FC]
      shl ax,01
      add ax,0200
      mov ax,[eax]
      add ax,2000
      mov [ebx+FC],ax
      jmp 010F
jmp 00AF
:013d inc esi            ;a++++++++++++++
      cmp [esi],20
      jz 0150
      inc esi
      inc esi
      call 00B3          ;and
      lea ebp,000102C0
      jmp 013E
:0150 inc esi
      inc esi
      call 00B3          ;add
      lea ebp,000102F0
      jmp 013E
jmp 00AF
:0152 inc esi            ;x++++++++++++++
      cmp [esi],2E
      jz 016C
      inc esi
      inc esi
      call 00B3          ;xor
      lea ebp,00010310
      jmp 013E
:016c inc esi
      inc esi
      inc esi
      call 00B3          ;xchg
      lea ebp,00010340
      jmp 013E
jmp 00AF
:0155 inc esi            ;o++++++++++++++
      cmp [esi],13
      jz 0186
      inc esi
      inc esi
      cmp [esi],1F
      jz 0166
      call 00B3          ;out
      cmp [esi],80
      jb 0156
      call 00B5
      mov ch,E6          ;00,al
      jmp 0157
:0156 inc esi
      inc esi
      mov ch,EE          ;dx,al
:0157 inc esi
      cmp [esi],12
      jnz 0158
      inc esi
      mov [edx],66
      inc dx
:0158 mov ax,[esi]
      inc esi
      inc esi
      cmp ax,261E
      jz 0115
      inc ch             ;out dx,ax
      jmp 0115
:0166 inc esi
      cmp [esi],11
      jz 0167
      cmp [esi],20
      jz 0168
      mov ax,6E67        ;outs
      mov [edx],ax
      add dx,0002
      jmp 00A2
:0168 mov [edx],66       ;outsd
      inc dx
:0167 inc esi
      mov ax,6F67        ;outsw
      mov [edx],ax
      add dx,0002
      jmp 00A2
:0186 inc esi
      call 00B3          ;or
      lea ebp,00010360
      jmp 013E
jmp 00AF
:0162 inc esi            ;b++++++++++++++
      inc esi
      inc esi
      inc esi
      inc esi
      call 00B3          ;bswap
      inc esi
      mov ax,[esi]
      inc esi
      inc esi
      mov cx,C80F
      cmp ax,2D1E
      jz 0163
      inc ch
      cmp ax,2D2E
      jz 0163
      inc ch
      cmp ax,2D20
      jz 0163
      inc ch
      cmp ax,2D30
      jz 0163
      inc ch
      cmp ax,191F
      jz 0163
      inc ch
      cmp ax,1930
      jz 0163
      inc ch
      cmp ax,171F
      jz 0163
      inc ch
      cmp ax,1720
      jz 0163
      jmp 00AF
:0163 mov ax,cx
      shl eax,08
      mov al,66
      mov [edx],eax
      add dx,0003
      jmp 00A2
jmp 00AF
:0164 inc esi            ;t++++++++++++++
      inc esi
      inc esi
      inc esi
      call 00B3          ;test
      lea ebp,00010330
      jmp 013E
jmp 00AF
:018b inc esi            ;n++++++++++++++
      inc esi
      inc esi
      cmp [esi],11
      jz 018C
      cmp [esi],20
      jz 018D
      call 00B3          ;neg
      lea ebp,00010370
      mov ch,[ebp+00]
      jmp 0182
:018c inc esi
      call 00B3          ;negw
      lea ebp,00010370
      mov ch,[ebp+02]
      jmp 0182
:018d inc esi
      call 00B3          ;negd
      lea ebp,00010370
      mov ch,[ebp+02]
      mov [edx],66
      inc dx
      jmp 0182
jmp 00AF
:0194 inc esi            ;f++++++++++++++
      cmp [esi],32
      jz 019D
      cmp [esi],20
      jz 01A0
      cmp [esi],1E
      jz 01A2
      cmp [esi],1F
      jz 01A3
      cmp [esi],26
      jz 01A4
      cmp [esi],2E
      jz 01A5
      cmp [esi],19
      jz 01A8
      cmp [esi],13
      jz 01B8
      cmp [esi],2D
      jz 01CC
      inc esi
      cmp [esi],26
      jz 0195
      cmp [esi],1F
      jz 019B
      inc esi
      inc esi
      inc esi
      mov ax,E3DB        ;finit
      mov [edx],ax
      add dx,0002
      jmp 00A2
:0195 inc esi
      inc esi
      cmp [esi],20
      jz 0199
      cmp [esi],10
      jz 01BC
      call 00B3          ;fild
      lea ebp,00010374
:019a mov ch,[ebp+00]
      mov al,[ebp+01]
      mov [0001026B],al
      mov [edx],67
      inc dx
      inc esi
      mov ax,[esi+01]    ;[eax]
      cmp ax,2D1E
      jz 0196
      inc [00010269]
      cmp ax,2D2E
      jz 0196
      inc [00010269]
      cmp ax,2D20
      jz 0196
      inc [00010269]
      cmp ax,2D30
      jz 0196
      inc [00010269]
      inc [00010269]
      cmp al,80
      jb 0197
      call 00B5          ;[00000000]
      inc esi
      jmp 010F
:0197 cmp ax,1930
      jz 0196
      inc [00010269]
      cmp ax,171F
      jz 0196
      inc [00010269]
      cmp ax,1720
      jz 0196
      jmp 00AF
:0196 inc esi
      inc esi
      inc esi
      cmp [esi],36
      jz 0198
      inc esi
      mov [00010268],40
      call 00B5
      cmp cl,01
      jz 0198
      mov [00010268],80
:0198 inc esi
      jmp 010F
:0199 inc esi
      call 00B3          ;fildd
      lea ebp,00010376
      jmp 019A
:01bc inc esi
      call 00B3          ;fildq
      lea ebp,00010398
      jmp 019A
:019b inc esi
      inc esi
      inc esi
      cmp [esi],20
      jz 019C
      cmp [esi],10
      jz 01BD
      call 00B3          ;fistp
      lea ebp,00010378
      jmp 019A
:019c inc esi
      call 00B3          ;fistpd
      lea ebp,0001037A
      jmp 019A
:01bd inc esi
      call 00B3          ;fistpq
      lea ebp,0001039A
      jmp 019A
:019d inc esi
      inc esi
      inc esi
      call 00B3          ;fmul
      lea ebp,0001037C
:01a1 inc esi
      inc esi
      cmp [esi],52
      jz 019E
      mov cx,[ebp+02]    ;st1,st0
      mov al,[esi]
      add esi,00000005
      inc [00010269]
      cmp al,4F
      jz 019F
      inc [00010269]
      cmp al,50
      jz 019F
      inc [00010269]
      cmp al,51
      jz 019F
      inc [00010269]
      cmp al,4B
      jz 019F
      inc [00010269]
      cmp al,4C
      jz 019F
      inc [00010269]
      cmp al,4D
      jz 019F
      inc [00010269]
      cmp al,47
      jz 019F
      jmp 00AF
:019e mov cx,[ebp+00]    ;st0,st1
      add esi,00000004
      mov al,[esi]
      inc esi
      cmp al,52
      jz 019F
      inc [00010269]
      cmp al,4F
      jz 019F
      inc [00010269]
      cmp al,50
      jz 019F
      inc [00010269]
      cmp al,51
      jz 019F
      inc [00010269]
      cmp al,4B
      jz 019F
      inc [00010269]
      cmp al,4C
      jz 019F
      inc [00010269]
      cmp al,4D
      jz 019F
      inc [00010269]
      cmp al,47
      jz 019F
      jmp 00AF
:019f add ch,[00010269]
      mov [edx],cx
      add dx,0002
      jmp 00A2
:01a0 inc esi
      inc esi
      inc esi
      call 00B3          ;fdiv
      lea ebp,00010380
      jmp 01A1
:01a2 inc esi
      cmp [esi],30
      jz 01B6
      inc esi
      inc esi
      call 00B3          ;fadd
      lea ebp,00010384
      jmp 01A1
:01b6 inc esi
      inc esi
      mov ax,E1D9        ;fabs
      mov [edx],ax
      add dx,0002
      jmp 00A2
:01a3 inc esi
      cmp [esi],17
      jz 01A6
      cmp [esi],10
      jz 01A7
      cmp [esi],14
      jz 01AB
      inc esi
      inc esi
      call 00B3          ;fsub
      lea ebp,00010388
      jmp 01A1
:01ab inc esi
      cmp [esi],19
      jz 01AE
      cmp [esi],20
      jz 01AF
      call 00B3          ;fst
      lea ebp,00010394
      jmp 01AC
:01af inc esi
      call 00B3          ;fstd
      lea ebp,00010396
      jmp 019A
:01ae inc esi
      cmp [esi],20
      jz 01AD
      cmp [esi],10
      jz 01C1
      cmp [esi],14
      jz 01CE
      call 00B3          ;fstp
      lea ebp,00010390
      jmp 01AC
:01ad inc esi
      call 00B3          ;fstpd
      lea ebp,00010392
      jmp 019A
:01c1 inc esi
      call 00B3          ;fstpq
      lea ebp,0001039E
      jmp 019A
:01ce inc esi
      call 00B3          ;fstpt
      lea ebp,000103AA
      jmp 019A
:01a4 inc esi
      inc esi
      cmp [esi],19
      jz 01A9
      cmp [esi],20
      jz 01AA
      cmp [esi],10
      jz 01C0
      cmp [esi],14
      jz 01CD
      cmp [esi],4F
      jz 01BE
      cmp [esi],2C
      jz 01BF
      call 00B3          ;fld
      lea ebp,0001038C
:01ac mov cx,[ebp+00]    ;st0
      inc esi
      inc esi
      mov al,[esi]
      inc esi
      cmp al,52
      jz 019F
      inc [00010269]
      cmp al,4F
      jz 019F
      inc [00010269]
      cmp al,50
      jz 019F
      inc [00010269]
      cmp al,51
      jz 019F
      inc [00010269]
      cmp al,4B
      jz 019F
      inc [00010269]
      cmp al,4C
      jz 019F
      inc [00010269]
      cmp al,4D
      jz 019F
      inc [00010269]
      cmp al,47
      jz 019F
      jmp 00AF
:01aa inc esi
      call 00B3          ;fldd
      lea ebp,0001038E
      jmp 019A
:01c0 inc esi
      call 00B3          ;fldq
      lea ebp,0001039C
      jmp 019A
:01cd inc esi
      call 00B3          ;fldt
      lea ebp,000103A8
      jmp 019A
:01be inc esi
      mov ax,E8D9        ;fld1
      mov [edx],ax
      add dx,0002
      jmp 00A2
:01bf inc esi
      mov ax,EED9        ;fldz
      mov [edx],ax
      add dx,0002
      jmp 00A2
:01a9 inc esi
      inc esi
      mov ax,EBD9        ;fldpi
      mov [edx],ax
      add dx,0002
      jmp 00A2
:01a5 inc esi
      cmp [esi],23
      jz 01B9
      inc esi
      cmp [esi],32
      jz 01C2
      inc esi
      mov ax,FFD9        ;fcos
      mov [edx],ax
      add dx,0002
      jmp 00A2
:01c2 inc esi
      inc esi
      cmp [esi],19
      jz 01C3
      call 00B3          ;fcomi
      lea ebp,000103A0
      jmp 01AC
:01c3 inc esi
      call 00B3          ;fcomip
      lea ebp,000103A2
      jmp 01AC
:01b9 inc esi
      inc esi
      mov ax,E0D9        ;fchs
      mov [edx],ax
      add dx,0002
      jmp 00A2
:01a6 inc esi
      inc esi
      mov ax,FED9        ;fsin
      mov [edx],ax
      add dx,0002
      jmp 00A2
:01a7 inc esi
      inc esi
      inc esi
      mov ax,FAD9        ;fsqrt
      mov [edx],ax
      add dx,0002
      jmp 00A2
:01a8 inc esi
      cmp [esi],1E
      jz 01B7
      inc esi
      inc esi
      inc esi
      mov ax,F2D9        ;fptan
      mov [edx],ax
      add dx,0002
      jmp 00A2
:01b7 inc esi
      inc esi
      inc esi
      inc esi
      mov ax,F3D9        ;fpatan
      mov [edx],ax
      add dx,0002
      jmp 00A2
:01b8 inc esi
      inc esi
      inc esi
      inc esi
      inc esi
      inc esi
      mov ax,FCD9        ;frndint
      mov [edx],ax
      add dx,0002
      jmp 00A2
:01cc inc esi
      inc esi
      inc esi
      call 00B3          ;fxch
      lea ebp,000103A4
      jmp 01AC
jmp 00AF
:010a inc esi            ;m++++++++++++++
      cmp [esi],16
      jz 017A
      inc esi
      inc esi
      cmp [esi],1F
      jz 018E
      call 00B3          ;mov
      lea ebp,00010280
:013e cmp [esi],2A
      jnz 0111
      inc esi
      mov ch,[ebp+00]    ;[eax],al
      mov [edx],67
      inc dx
      inc esi
      mov ax,[esi]
      cmp ax,2D1E
      jz 010B
      inc [00010269]
      cmp ax,2D2E
      jz 010B
      inc [00010269]
      cmp ax,2D20
      jz 010B
      inc [00010269]
      cmp ax,2D30
      jz 010B
      inc [00010269]
      inc [00010269]
      cmp al,80
      jb 010C
      dec esi
      call 00B5          ;[00000000],al
      jmp 010D
:010c cmp ax,1930
      jz 010B
      inc [00010269]
      cmp ax,171F
      jz 010B
      inc [00010269]
      cmp ax,1720
      jz 010B
      jmp 00AF
:010b inc esi
      inc esi
      cmp [esi],36
      jz 010D
      inc esi
      mov [00010268],40
      call 00B5
      cmp cl,01
      jz 010D
      mov [00010268],80
:010d inc esi
      inc esi
      cmp [esi],80
      jb 010E
      mov ch,[ebp+06]    ;[eax],00
      mov al,[ebp+07]
      mov [0001026B],al
      call 00B5
      cmp cl,01
      jz 010F
      mov ch,[ebp+08]
      mov al,[ebp+09]
      mov [0001026B],al
      cmp cl,02
      jz 010F
      mov [edx],66
      inc dx
      jmp 010F
:010e cmp [esi],12
      jnz 0110
      inc esi
      mov [edx],66
      inc dx
:0110 mov ax,[esi]       ;[eax],al
      inc esi
      inc esi
      cmp ax,261E
      jz 010F
      mov [0001026A],08
      cmp ax,262E
      jz 010F
      mov [0001026A],10
      cmp ax,2620
      jz 010F
      mov [0001026A],18
      cmp ax,2630
      jz 010F
      mov [0001026A],20
      cmp ax,231E
      jz 010F
      mov [0001026A],28
      cmp ax,232E
      jz 010F
      mov [0001026A],30
      cmp ax,2320
      jz 010F
      mov [0001026A],38
      cmp ax,2330
      jz 010F
      mov ch,[ebp+01]    ;[eax],ax
      mov [0001026A],00
      cmp ax,2D1E
      jz 010F
      mov [0001026A],08
      cmp ax,2D2E
      jz 010F
      mov [0001026A],10
      cmp ax,2D20
      jz 010F
      mov [0001026A],18
      cmp ax,2D30
      jz 010F
      mov [0001026A],20
      cmp ax,191F
      jz 010F
      mov [0001026A],28
      cmp ax,1930
      jz 010F
      mov [0001026A],30
      cmp ax,171F
      jz 010F
      mov [0001026A],38
      cmp ax,1720
      jz 010F
jmp 00AF
:0111 mov al,[esi+02]
      cmp al,35
      jz 0112
      cmp al,52
      jz 016F
      inc esi
      mov [edx],66
      inc dx
:0112 mov ax,[esi]
      mov ch,[ebp+02]    ;al,[eax]
      mov cl,00
      cmp ax,261E
      jz 0114
      mov [00010269],08
      cmp ax,262E
      jz 0114
      mov [00010269],10
      cmp ax,2620
      jz 0114
      mov [00010269],18
      cmp ax,2630
      jz 0114
      mov [00010269],20
      cmp ax,231E
      jz 0114
      mov [00010269],28
      cmp ax,232E
      jz 0114
      mov [00010269],30
      cmp ax,2320
      jz 0114
      mov [00010269],38
      cmp ax,2330
      jz 0114
      mov ch,[ebp+03]    ;ax,[eax]
      mov cl,01
      mov [00010269],00
      cmp ax,2D1E
      jz 0114
      mov [00010269],08
      cmp ax,2D2E
      jz 0114
      mov [00010269],10
      cmp ax,2D20
      jz 0114
      mov [00010269],18
      cmp ax,2D30
      jz 0114
      mov [00010269],20
      cmp ax,191F
      jz 0114
      mov [00010269],28
      cmp ax,1930
      jz 0114
      mov [00010269],30
      cmp ax,171F
      jz 0114
      mov [00010269],38
      cmp ax,1720
      jz 0114
      mov ch,[ebp+0B]    ;es,[eax]
      mov [00010269],00
      cmp ax,1F12
      jz 0114
      mov [00010269],08
      cmp ax,1F2E
      jz 0114
      mov [00010269],10
      cmp ax,1F1F
      jz 0114
      mov [00010269],18
      cmp ax,1F20
      jz 0114
      mov [00010269],20
      cmp ax,1F21
      jz 0114
      mov [00010269],28
      cmp ax,1F22
      jz 0114
jmp 00AF
:0114 inc esi
      inc esi
      inc esi
      cmp [esi],80
      jb 0113
      mov ah,[00010269]
      mov al,cl
      push ax
      call 00B5
      pop ax
      mov ch,[ebp+04]    ;al,00
      cmp ax,0000
      jz 0115
      mov ch,[ebp+05]    ;ax,0000
      cmp ax,0001
      jz 0115
      cmp bp,0280
      jnz 0116
      mov ch,[ebp+04]    ;mov cl,00
      mov ah,[00010269]
      shr ah,03
      add ch,ah
      cmp al,00
      jz 0115
      mov ch,[ebp+05]    ;mov cx,0000
      add ch,ah
      jmp 0115
:0116 mov ch,[ebp+06]    ;add cl,00
      mov ah,[ebp+07]
      mov [0001026B],ah
      mov ah,C0
      mov [00010268],ah
      mov ah,[00010269]
      shr ah,03
      mov [00010269],ah
      cmp al,00
      jz 010F
      mov ch,[ebp+08]    ;add cx,0000
      mov ah,[ebp+09]
      mov [0001026B],ah
      jmp 010F
:0113 cmp [esi],2A
      jnz 0117
      inc esi
      mov [edx],67      ;al,[eax]
      inc dx
      inc esi
      mov ax,[esi]
      cmp ax,2D1E
      jz 0118
      inc [0001026A]
      cmp ax,2D2E
      jz 0118
      inc [0001026A]
      cmp ax,2D20
      jz 0118
      inc [0001026A]
      cmp ax,2D30
      jz 0118
      inc [0001026A]
      inc [0001026A]
      cmp al,80
      jb 0119
      dec esi
      call 00B5          ;al,[00000000]
      jz 011A
:0119 cmp ax,1930
      jz 0118
      inc [0001026A]
      cmp ax,171F
      jz 0118
      inc [0001026A]
      cmp ax,1720
      jz 0118
      jmp 00AF
:0118 inc esi
      inc esi
      cmp [esi],36
      jz 011A
      inc esi
      mov [00010268],40
      call 00B5
      cmp cl,01
      jz 011A
      mov [00010268],80
:011a inc esi
      jmp 010F
:0117 mov [00010268],C0
      mov al,[esi+02]
      cmp al,1C
      jz 011B
      cmp al,39
      jz 011B
      inc esi
:011b mov ax,[esi]       ;al,al
      inc esi
      inc esi
      cmp ax,261E
      jz 010F
      inc [0001026A]
      cmp ax,262E
      jz 010F
      inc [0001026A]
      cmp ax,2620
      jz 010F
      inc [0001026A]
      cmp ax,2630
      jz 010F
      inc [0001026A]
      cmp ax,231E
      jz 010F
      inc [0001026A]
      cmp ax,232E
      jz 010F
      inc [0001026A]
      cmp ax,2320
      jz 010F
      inc [0001026A]
      cmp ax,2330
      jz 010F
      mov [0001026A],00 ;ax,ax
      cmp ax,2D1E
      jz 010F
      inc [0001026A]
      cmp ax,2D2E
      jz 010F
      inc [0001026A]
      cmp ax,2D20
      jz 010F
      inc [0001026A]
      cmp ax,2D30
      jz 010F
      inc [0001026A]
      cmp ax,191F
      jz 010F
      inc [0001026A]
      cmp ax,1930
      jz 010F
      inc [0001026A]
      cmp ax,171F
      jz 010F
      inc [0001026A]
      cmp ax,1720
      jz 010F
      mov ch,[ebp+0A]    ;ax,es
      mov cl,[00010269]
      shr cl,03
      mov [00010269],cl
      mov [0001026A],00
      cmp ax,1F12
      jz 010F
      mov [0001026A],08
      cmp ax,1F2E
      jz 010F
      mov [0001026A],10
      cmp ax,1F1F
      jz 010F
      mov [0001026A],18
      cmp ax,1F20
      jz 010F
      mov [0001026A],20
      cmp ax,1F21
      jz 010F
      mov [0001026A],28
      cmp ax,1F22
      jz 010F
jmp 00AF
:016f inc esi
      inc esi
      inc esi
      inc esi
      mov ch,C0          ;mov cr0
      mov ax,220F
      mov [edx],ax
      add dx,0002
      inc esi
      mov ax,[esi]       ;eax
      inc esi
      inc esi
      cmp ax,2D1E
      jz 0115
      inc ch
      cmp ax,2D2E
      jz 0115
      inc ch
      cmp ax,2D20
      jz 0115
      inc ch
      cmp ax,2D30
      jz 0115
      inc ch
      cmp ax,191F
      jz 0115
      inc ch
      cmp ax,1930
      jz 0115
      inc ch
      cmp ax,171F
      jz 0115
      inc ch
      cmp ax,1720
      jz 0115
      jmp 00AF
:018e inc esi
      cmp [esi],11
      jz 018F
      cmp [esi],20
      jz 0190
      mov [edx],A4       ;movs
      inc dx
      jmp 00A2
:018f inc esi
      mov [edx],A5       ;movsw
      inc dx
      jmp 00A2
:0190 inc esi
      mov eax,00A56667   ;movsd
      mov [edx],eax
      add dx,0003
      jmp 00A2
:017a inc esi
      inc esi
      cmp [esi],11
      jz 0180
      cmp [esi],20
      jz 0181
      call 00B3          ;mul
      lea ebp,00010358
      mov ch,[ebp+00]
:0182 mov al,[ebp+01]
      mov [0001026B],al
      cmp [esi],2A
      jnz 017B
      inc esi
      mov [edx],67       ;[eax]
      inc dx
      mov ax,[esi+01]
      cmp ax,2D1E
      jz 017C
      inc [00010269]
      cmp ax,2D2E
      jz 017C
      inc [00010269]
      cmp ax,2D20
      jz 017C
      inc [00010269]
      cmp ax,2D30
      jz 017C
      inc [00010269]
      inc [00010269]
      cmp al,80
      jb 017D
      call 00B5          ;[00000000]
      inc esi
      jmp 010F
:017d cmp ax,1930
      jz 017C
      inc [00010269]
      cmp ax,171F
      jz 017C
      inc [00010269]
      cmp ax,1720
      jz 017C
      jmp 00AF
:017c inc esi
      inc esi
      inc esi
      cmp [esi],36
      jz 017E
      inc esi
      mov [00010268],40
      call 00B5
      cmp cl,01
      jz 017E
      mov [00010268],80
:017e inc esi
      jmp 010F
:017b mov [00010268],C0  ;al
      mov ch,[ebp+00]
      cmp [esi],12
      jnz 017F
      inc esi
      mov [edx],66
      inc dx
:017f mov ax,[esi]
      inc esi
      inc esi
      cmp ax,261E
      jz 010F
      inc [00010269]
      cmp ax,262E
      jz 010F
      inc [00010269]
      cmp ax,2620
      jz 010F
      inc [00010269]
      cmp ax,2630
      jz 010F
      inc [00010269]
      cmp ax,231E
      jz 010F
      inc [00010269]
      cmp ax,232E
      jz 010F
      inc [00010269]
      cmp ax,2320
      jz 010F
      inc [00010269]
      cmp ax,2330
      jz 010F
      mov ch,[ebp+02]    ;ax
      mov [00010269],00
      cmp ax,2D1E
      jz 010F
      inc [00010269]
      cmp ax,2D2E
      jz 010F
      inc [00010269]
      cmp ax,2D20
      jz 010F
      inc [00010269]
      cmp ax,2D30
      jz 010F
      inc [00010269]
      cmp ax,191F
      jz 010F
      inc [00010269]
      cmp ax,1930
      jz 010F
      inc [00010269]
      cmp ax,171F
      jz 010F
      inc [00010269]
      cmp ax,1720
      jz 010F
      jmp 00AF
:0180 inc esi
      call 00B3          ;mulw
      lea ebp,00010358
      mov ch,[ebp+02]
      jmp 0182
:0181 inc esi
      call 00B3          ;muld
      lea ebp,00010358
      mov ch,[ebp+02]
      mov [edx],66
      inc dx
      jmp 0182
jmp 00AF
:010f mov ah,[00010268]
      add ah,[00010269]
      add ah,[0001026A]
      add ah,[0001026B]
      mov al,ch
      mov [edx],ax
      add dx,0002
      call 00B0
      jmp 00A2
:0115 mov al,ch
      mov [edx],al
      inc dx
      call 00B0
      jmp 00A2
jmp 00AF
:00a3 mov [00130018],edx ;fine compilazione***************
      mov [00010260],edi
      lea ebp,00130200
      mov di,0000
:0052 cmp edi,[00010260]
      jz 0051
      push bp
      mov ax,[edi]
      sub ax,0002
      mov dx,ax
      mov ax,[edx]
      shl ax,01
      add bp,ax
      mov ax,[ebp+00]
      sub ax,[edi+00]
      mov [edx],ax
      add di,0002
      pop bp
      jmp 0052
:0051 mov ax,0080
      mov [00010214],ax
      mov eax,[00130014]
      mov [00010218],eax
      mov eax,00200000
      mov [0001021C],eax
      call 0096          ;salva il codice
      mov ax,0010
      mov [00010214],ax
      mov eax,[00130100]
      mov [00010218],eax
      mov eax,00130000
      mov [0001021C],eax
      call 0096          ;salva le etichette
      mov eax,[00130100]
      cmp eax,00080200
      jz 001E
      cmp eax,00080000
      jz 001E
      lea esi,00200000
      lea edi,00090000
      mov ecx,00004000
      repz
      movsd              ;sposta il codice
      jmps 0050:0000
:00ff lea esi,00200000   ;esegue il compilatore++++++++++++
      lea edi,00010000
      mov ecx,[00130018]
      and ecx,0000FFFF
      shr cx,02
      inc cx
      repz
      movsd
      cli
      lidt [00010009]
      mov eax,00000010
      mov cr0,eax
      mov ax,0000
      mov ds,ax
      mov es,ax
      mov fs,ax
      mov gs,ax
      mov ax,9000
      mov ss,ax
      mov esp,0000FFFF
      mov dx,0000
      sti
      jmps 1000:0000
jmp 001e
      
Introduzione alla programmazione in "Assembler"
invia E-mail