www.pudn.com > DBG8051.rar > Dbgwykon.pas
unit DbgWykonaj;
interface
procedure RuszajSie;
procedure Wykonaj;
implementation
uses WinTypes, WinProcs, Win31, DbgZmTypy, DbgAsm;
{ runprog: 0 - nie wykonują się rozkazy }
{ 1 - az do najblizszej pulapki }
{ 2 - az do adresu w runto lub pulapki }
{ 3 - az do RET/RETI lub pulapki }
procedure RuszajSie;
begin
Wykonaj;
if anim then OdrysujCoTrzeba;
if aktual then AktualizujWtyczki(OknoGlowne);
if (ZnajdzSymb(SymbBrk,WtoHEX(RejPC))<>-1) or
((runprog=2) and (RejPC=runto)) or
((runprog=3) and ((Mem[selROM:RejPC]=$22) or (Mem[selROM:RejPC]=$32))) then
begin
PostMessage(OknoGlowne,wm_Command,us_StopNow,0);
Exit;
end;
end;
procedure WypiszNaTerm;
var a:word;
begin
asm
push es
mov [a],ax
end;
if OknoTerm<>0 then
SendMessage(GetWindow(OknoTerm,gw_Child),wm_Command,us_OdebranoZnak,a);
Mem[selRAMInt:$98]:=Mem[selRAMInt:$98] or 2; {TI=1}
end;
procedure ZwiekszT0T1Przerw; forward;
procedure Wykonaj; assembler;
asm
mov es,[selROM]
mov ax,[selRAMInt]
dw 268eh,offset selRAMInt {mov fs,[selRAMInt]}
mov cl,[bigmem] {cl=1 - 256 bajtów RAMInt, cl=0 - 128 bajtów}
mov si,[RejPC] {Program Counter -> si}
mov al,es:[si]
mov bl,al
xor bh,bh
push bx {zachowaj bajt rozkazu na stosie}
shl bx,1
jmp word ptr cs:[bx+offset @TabSkokow]
@TabSkokow:
dw offset @s0, offset @s1, offset @s2, offset @s3, offset @s4, offset @s5
dw offset @s6, offset @s7, offset @s8, offset @s9, offset @sa, offset @sb
dw offset @sc, offset @sd, offset @se, offset @sf, offset @s10, offset @s11
dw offset @s12, offset @s13, offset @s14, offset @s15, offset @s16, offset @s17
dw offset @s18, offset @s19, offset @s1a, offset @s1b, offset @s1c, offset @s1d
dw offset @s1e, offset @s1f, offset @s20, offset @s21, offset @s22, offset @s23
dw offset @s24, offset @s25, offset @s26, offset @s27, offset @s28, offset @s29
dw offset @s2a, offset @s2b, offset @s2c, offset @s2d, offset @s2e, offset @s2f
dw offset @s30, offset @s31, offset @s32, offset @s33, offset @s34, offset @s35
dw offset @s36, offset @s37, offset @s38, offset @s39, offset @s3a, offset @s3b
dw offset @s3c, offset @s3d, offset @s3e, offset @s3f, offset @s40, offset @s41
dw offset @s42, offset @s43, offset @s44, offset @s45, offset @s46, offset @s47
dw offset @s48, offset @s49, offset @s4a, offset @s4b, offset @s4c, offset @s4d
dw offset @s4e, offset @s4f, offset @s50, offset @s51, offset @s52, offset @s53
dw offset @s54, offset @s55, offset @s56, offset @s57, offset @s58, offset @s59
dw offset @s5a, offset @s5b, offset @s5c, offset @s5d, offset @s5e, offset @s5f
dw offset @s60, offset @s61, offset @s62, offset @s63, offset @s64, offset @s65
dw offset @s66, offset @s67, offset @s68, offset @s69, offset @s6a, offset @s6b
dw offset @s6c, offset @s6d, offset @s6e, offset @s6f, offset @s70, offset @s71
dw offset @s72, offset @s73, offset @s74, offset @s75, offset @s76, offset @s77
dw offset @s78, offset @s79, offset @s7a, offset @s7b, offset @s7c, offset @s7d
dw offset @s7e, offset @s7f, offset @s80, offset @s81, offset @s82, offset @s83
dw offset @s84, offset @s85, offset @s86, offset @s87, offset @s88, offset @s89
dw offset @s8a, offset @s8b, offset @s8c, offset @s8d, offset @s8e, offset @s8f
dw offset @s90, offset @s91, offset @s92, offset @s93, offset @s94, offset @s95
dw offset @s96, offset @s97, offset @s98, offset @s99, offset @s9a, offset @s9b
dw offset @s9c, offset @s9d, offset @s9e, offset @s9f, offset @sa0, offset @sa1
dw offset @sa2, offset @sa3, offset @sa4, offset @sa5, offset @sa6, offset @sa7
dw offset @sa8, offset @sa9, offset @saa, offset @sab, offset @sac, offset @sad
dw offset @sae, offset @saf, offset @sb0, offset @sb1, offset @sb2, offset @sb3
dw offset @sb4, offset @sb5, offset @sb6, offset @sb7, offset @sb8, offset @sb9
dw offset @sba, offset @sbb, offset @sbc, offset @sbd, offset @sbe, offset @sbf
dw offset @sc0, offset @sc1, offset @sc2, offset @sc3, offset @sc4, offset @sc5
dw offset @sc6, offset @sc7, offset @sc8, offset @sc9, offset @sca, offset @scb
dw offset @scc, offset @scd, offset @sce, offset @scf, offset @sd0, offset @sd1
dw offset @sd2, offset @sd3, offset @sd4, offset @sd5, offset @sd6, offset @sd7
dw offset @sd8, offset @sd9, offset @sda, offset @sdb, offset @sdc, offset @sdd
dw offset @sde, offset @sdf, offset @se0, offset @se1, offset @se2, offset @se3
dw offset @se4, offset @se5, offset @se6, offset @se7, offset @se8, offset @se9
dw offset @sea, offset @seb, offset @sec, offset @sed, offset @see, offset @sef
dw offset @sf0, offset @sf1, offset @sf2, offset @sf3, offset @sf4, offset @sf5
dw offset @sf6, offset @sf7, offset @sf8, offset @sf9, offset @sfa, offset @sfb
dw offset @sfc, offset @sfd, offset @sfe, offset @sff
@TabBitow: { MSB: maska bitu, LSB: adres bajtu }
dw 120h,220h,420h,820h,1020h,2020h,4020h,8020h,121h,221h,421h,821h,1021h,2021h,4021h,8021h
dw 122h,222h,422h,822h,1022h,2022h,4022h,8022h,123h,223h,423h,823h,1023h,2023h,4023h,8023h
dw 124h,224h,424h,824h,1024h,2024h,4024h,8024h,125h,225h,425h,825h,1025h,2025h,4025h,8025h
dw 126h,226h,426h,826h,1026h,2026h,4026h,8026h,127h,227h,427h,827h,1027h,2027h,4027h,8027h
dw 128h,228h,428h,828h,1028h,2028h,4028h,8028h,129h,229h,429h,829h,1029h,2029h,4029h,8029h
dw 12ah,22ah,42ah,82ah,102ah,202ah,402ah,802ah,12bh,22bh,42bh,82bh,102bh,202bh,402bh,802bh
dw 12ch,22ch,42ch,82ch,102ch,202ch,402ch,802ch,12dh,22dh,42dh,82dh,102dh,202dh,402dh,802dh
dw 12eh,22eh,42eh,82eh,102eh,202eh,402eh,802eh,12fh,22fh,42fh,82fh,102fh,202fh,402fh,802fh
dw 180h,280h,480h,880h,1080h,2080h,4080h,8080h,188h,288h,488h,888h,1088h,2088h,4088h,8088h
dw 190h,290h,490h,890h,1090h,2090h,4090h,8090h,198h,298h,498h,898h,1098h,2098h,4098h,8098h
dw 1a0h,2a0h,4a0h,8a0h,10a0h,20a0h,40a0h,80a0h,1a8h,2a8h,4a8h,8a8h,10a8h,20a8h,40a8h,80a8h
dw 1b0h,2b0h,4b0h,8b0h,10b0h,20b0h,40b0h,80b0h,1b8h,2b8h,4b8h,8b8h,10b8h,20b8h,40b8h,80b8h
dw 1c0h,2c0h,4c0h,8c0h,10c0h,20c0h,40c0h,80c0h,1c8h,2c8h,4c8h,8c8h,10c8h,20c8h,40c8h,80c8h
dw 1d0h,2d0h,4d0h,8d0h,10d0h,20d0h,40d0h,80d0h,1d8h,2d8h,4d8h,8d8h,10d8h,20d8h,40d8h,80d8h
dw 1e0h,2e0h,4e0h,8e0h,10e0h,20e0h,40e0h,80e0h,1e8h,2e8h,4e8h,8e8h,10e8h,20e8h,40e8h,80e8h
dw 1f0h,2f0h,4f0h,8f0h,10f0h,20f0h,40f0h,80f0h,1f8h,2f8h,4f8h,8f8h,10f8h,20f8h,40f8h,80f8h
@s0: { NOP }
mov al,1
jmp @Koniec
@s1: { AJMP xxxx }
shr al,5
mov ah,es:[si+1]
xchg ah,al
add si,2
and si,0f800h
add ax,si
mov [RejPC],ax
xor al,al
jmp @Koniec
@s2: { LJMP xxxx }
mov ax,es:[si+1]
xchg ah,al
mov [RejPC],ax
xor al,al
jmp @Koniec
@s3: { RR A }
db 64h {fs:}
mov al,[0e0h]
ror al,1
db 64h {fs:}
mov [0e0h],al
mov al,1
jmp @Koniec
@s4: { INC A }
db 64h {fs:}
inc byte ptr [0e0h]
mov al,1
jmp @Koniec
@s5: { INC reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
inc byte ptr [bx]
mov al,2
jmp @Koniec
@s6: { INC @R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx]
or cl,cl {bigmem?}
jz @s6_1
cmp bx,128 {adres>=128?}
jb @s6_1
add bx,128 {adres=adres+128}
@s6_1:
db 64h {fs:}
inc byte ptr [bx]
mov al,1
jmp @Koniec
@s7: { INC @R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx+1]
or cl,cl {bigmem?}
jz @s7_1
cmp bx,128 {adres>=128?}
jb @s7_1
add bx,128 {adres=adres+128}
@s7_1:
db 64h {fs:}
inc byte ptr [bx]
mov al,1
jmp @Koniec
@s8: { INC R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
inc byte ptr [bx]
mov al,1
jmp @Koniec
@s9: { INC R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
inc byte ptr [bx+1]
mov al,1
jmp @Koniec
@sa: { INC R2 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
inc byte ptr [bx+2]
mov al,1
jmp @Koniec
@sb: { INC R3 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
inc byte ptr [bx+3]
mov al,1
jmp @Koniec
@sc: { INC R4 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
inc byte ptr [bx+4]
mov al,1
jmp @Koniec
@sd: { INC R5 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
inc byte ptr [bx+5]
mov al,1
jmp @Koniec
@se: { INC R6 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
inc byte ptr [bx+6]
mov al,1
jmp @Koniec
@sf: { INC R7 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
inc byte ptr [bx+7]
mov al,1
jmp @Koniec
@s10: { JBC bit,rel }
mov bl,es:[si+1]
xor bh,bh
shl bx,1
mov ax,cs:[bx+offset @TabBitow]
mov bl,al
xor bh,bh
mov al,3
db 64h {fs:}
test byte ptr [bx],ah
jz @Koniec
db 64h {fs:}
xor byte ptr [bx],ah
db 26h,0Fh,0BEh,5Ch,2 {movsx bx,byte ptr es:[si+2]}
add si,3
add si,bx
mov [RejPC],si
xor al,al
jmp @Koniec
@s11: { ACALL xxxx }
add si,2
{PUSH PC ->}
mov dx,si
db 64h {fs:}
mov bl,[81h] {SP}
inc bl
xor bh,bh
or cl,cl {bigmem?}
jz @s11_1
cmp bx,128 {adres>=128?}
jb @s11_1
add bx,128 {adres=adres+128}
@s11_1:
db 64h {fs:}
mov [bx],dl {mlodszy bajt PC na stos}
cmp bx,256
jb @s11_2
sub bx,128 {cofamy sie do normalnego, 8-bitowego adresu}
@s11_2:
inc bl
or cl,cl {bigmem?}
jz @s11_3
cmp bx,128 {adres>=128?}
jb @s11_3
add bx,128 {adres=adres+128}
@s11_3:
db 64h {fs:}
mov [bx],dh {starszy bajt PC na stos}
db 64h {fs:}
add byte ptr [81h],2
{<- PUSH PC}
shr al,5
mov ah,es:[si-1]
xchg ah,al
and si,0f800h
add ax,si
mov [RejPC],ax
xor al,al
jmp @Koniec
@s12: { LCALL xxxx }
add si,3
{PUSH PC ->}
mov dx,si
db 64h {fs:}
mov bl,[81h] {SP}
inc bl
xor bh,bh
or cl,cl {bigmem?}
jz @s12_1
cmp bx,128 {adres>=128?}
jb @s12_1
add bx,128 {adres=adres+128}
@s12_1:
db 64h {fs:}
mov [bx],dl {mlodszy bajt PC na stos}
cmp bx,256
jb @s12_2
sub bx,128 {cofamy sie do normalnego, 8-bitowego adresu}
@s12_2:
inc bl
or cl,cl {bigmem?}
jz @s12_3
cmp bx,128 {adres>=128?}
jb @s12_3
add bx,128 {adres=adres+128}
@s12_3:
db 64h {fs:}
mov [bx],dh {starszy bajt PC na stos}
db 64h {fs:}
add byte ptr [81h],2
{<- PUSH PC}
mov ax,es:[si-2]
xchg ah,al
mov [RejPC],ax
xor al,al
jmp @Koniec
@s13: { RRC A }
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
mov al,[0e0h]
rcr al,1
db 64h {fs:}
mov [0e0h],al
jc @s13ustaw
db 64h {fs:}
and byte ptr [0d0h],7fh {zeruj CY}
mov al,1
jmp @Koniec
@s13ustaw:
db 64h {fs:}
or byte ptr [0d0h],80h {ustaw CY}
mov al,1
jmp @Koniec
@s14: { DEC A }
db 64h {fs:}
dec byte ptr [0e0h]
mov al,1
jmp @Koniec
@s15: { DEC reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
dec byte ptr [bx]
mov al,2
jmp @Koniec
@s16: { DEC @R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx]
or cl,cl {bigmem?}
jz @s16_1
cmp bx,128 {adres>=128?}
jb @s16_1
add bx,128 {adres=adres+128}
@s16_1:
db 64h {fs:}
dec byte ptr [bx]
mov al,1
jmp @Koniec
@s17: { DEC @R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx+1]
or cl,cl {bigmem?}
jz @s17_1
cmp bx,128 {adres>=128?}
jb @s17_1
add bx,128 {adres=adres+128}
@s17_1:
db 64h {fs:}
dec byte ptr [bx]
mov al,1
jmp @Koniec
@s18: { DEC R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
dec byte ptr [bx]
mov al,1
jmp @Koniec
@s19: { DEC R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
dec byte ptr [bx+1]
mov al,1
jmp @Koniec
@s1a: { DEC R2 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
dec byte ptr [bx+2]
mov al,1
jmp @Koniec
@s1b: { DEC R3 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
dec byte ptr [bx+3]
mov al,1
jmp @Koniec
@s1c: { DEC R4 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
dec byte ptr [bx+4]
mov al,1
jmp @Koniec
@s1d: { DEC R5 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
dec byte ptr [bx+5]
mov al,1
jmp @Koniec
@s1e: { DEC R6 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
dec byte ptr [bx+6]
mov al,1
jmp @Koniec
@s1f: { DEC R7 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
dec byte ptr [bx+7]
mov al,1
jmp @Koniec
@s20: { JB bit,rel }
mov bl,es:[si+1]
xor bh,bh
shl bx,1
mov ax,cs:[bx+offset @TabBitow]
mov bl,al
xor bh,bh
mov al,3
db 64h {fs:}
test byte ptr [bx],ah
jz @Koniec
db 26h,0Fh,0BEh,5Ch,2 {movsx bx,byte ptr es:[si+2]}
add si,3
add si,bx
mov [RejPC],si
xor al,al
jmp @Koniec
@s21: { AJMP xxxx }
jmp @s1
@s22: { RET }
db 64h {fs:}
mov bl,[81h] {SP}
xor bh,bh
dec bl
or cl,cl {bigmem?}
jz @s22_1
cmp bx,128 {adres>=128?}
jb @s22_1
add bx,128 {adres=adres+128}
@s22_1:
db 64h {fs:}
mov al,[bx] {pobieramy mlodszy bajt PC ze stosu}
cmp bx,256
jb @s22_2
sub bx,128 {cofamy sie do normalnego adresu}
@s22_2:
inc bl
or cl,cl {bigmem?}
jz @s22_3
cmp bx,128 {adres>=128?}
jb @s22_3
add bx,128 {adres=adres+128}
@s22_3:
db 64h {fs:}
mov ah,[bx] {pobieramy starszy bajt PC ze stosu}
db 64h {fs:}
sub byte ptr [81h],2
mov [RejPC],ax
xor al,al
jmp @Koniec
@s23: { RL A }
db 64h {fs:}
mov al,[0e0h]
rol al,1
db 64h {fs:}
mov [0e0h],al
mov al,1
jmp @Koniec
@s24: { ADD A,#nn }
db 64h {fs:}
mov al,[0e0h]
add al,byte ptr es:[si+1]
db 64h {fs:}
mov [0e0h],al
mov al,2
jmp @Flagi
@s25: { ADD A,reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
add [0e0h],al
mov al,2
jmp @Flagi
@s26: { ADD A,@R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx] {w BL zawartosc R0}
or cl,cl {bigmem?}
jz @s26_1
cmp bx,128 {adres>=128?}
jb @s26_1
add bx,128 {adres=adres+128}
@s26_1:
db 64h {fs:}
mov al,[bx] {w AL zawartosc @R0}
db 64h {fs:}
add [0e0h],al
mov al,1
jmp @Flagi
@s27: { ADD A,@R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx+1] {w BL zawartosc R1}
or cl,cl {bigmem?}
jz @s27_1
cmp bx,128 {adres>=128?}
jb @s27_1
add bx,128 {adres=adres+128}
@s27_1:
db 64h {fs:}
mov al,[bx] {w AL zawartosc @R1}
db 64h {fs:}
add [0e0h],al
mov al,1
jmp @Flagi
@s28: { ADD A,R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx] {w AL zawartosc R0}
db 64h {fs:}
add [0e0h],al
mov al,1
jmp @Flagi
@s29: { ADD A,R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+1] {w AL zawartosc R1}
db 64h {fs:}
add [0e0h],al
mov al,1
jmp @Flagi
@s2a: { ADD A,R2 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+2] {w AL zawartosc R2}
db 64h {fs:}
add [0e0h],al
mov al,1
jmp @Flagi
@s2b: { ADD A,R3 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+3] {w AL zawartosc R3}
db 64h {fs:}
add [0e0h],al
mov al,1
jmp @Flagi
@s2c: { ADD A,R4 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+4] {w AL zawartosc R4}
db 64h {fs:}
add [0e0h],al
mov al,1
jmp @Flagi
@s2d: { ADD A,R5 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+5] {w AL zawartosc R5}
db 64h {fs:}
add [0e0h],al
mov al,1
jmp @Flagi
@s2e: { ADD A,R6 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+6] {w AL zawartosc R6}
db 64h {fs:}
add [0e0h],al
mov al,1
jmp @Flagi
@s2f: { ADD A,R7 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+7] {w AL zawartosc R7}
db 64h {fs:}
add [0e0h],al
mov al,1
jmp @Flagi
@s30: { JNB bit,rel }
mov bl,es:[si+1]
xor bh,bh
shl bx,1
mov ax,cs:[bx+offset @TabBitow]
mov bl,al
xor bh,bh
mov al,3
db 64h {fs:}
test byte ptr [bx],ah
jnz @Koniec
db 26h,0Fh,0BEh,5Ch,2 {movsx bx,byte ptr es:[si+2]}
add si,3
add si,bx
mov [RejPC],si
xor al,al
jmp @Koniec
@s31: { ACALL xxxx }
jmp @s11
@s32: { RETI }
xor bl,bl
cmp [intflipflop],3 {przerzutniki aktywnego poziomu przerwania}
jne @s32_2
mov bl,1
@s32_2:
mov [intflipflop],bl
jmp @s22 {skok do obslugi RET}
@s33: { RLC A }
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
mov al,[0e0h]
rcl al,1
db 64h {fs:}
mov [0e0h],al
jc @s33ustaw
db 64h {fs:}
and byte ptr [0d0h],7fh {zeruj CY}
mov al,1
jmp @Koniec
@s33ustaw:
db 64h {fs:}
or byte ptr [0d0h],80h {ustaw CY}
mov al,1
jmp @Koniec
@s34: { ADDC A,#nn }
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
mov al,[0e0h]
adc al,byte ptr es:[si+1]
db 64h {fs:}
mov [0e0h],al
mov al,2
jmp @Flagi
@s35: { ADDC A,reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx]
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
adc [0e0h],al
mov al,2
jmp @Flagi
@s36: { ADDC A,@R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx] {w BL zawartosc R0}
or cl,cl {bigmem?}
jz @s36_1
cmp bx,128 {adres>=128?}
jb @s36_1
add bx,128 {adres=adres+128}
@s36_1:
db 64h {fs:}
mov al,[bx] {w AL zawartosc @R0}
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
adc [0e0h],al
mov al,1
jmp @Flagi
@s37: { ADDC A,@R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx+1] {w BL zawartosc R1}
or cl,cl {bigmem?}
jz @s37_1
cmp bx,128 {adres>=128?}
jb @s37_1
add bx,128 {adres=adres+128}
@s37_1:
db 64h {fs:}
mov al,[bx] {w AL zawartosc @R1}
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
adc [0e0h],al
mov al,1
jmp @Flagi
@s38: { ADDC A,R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx] {w AL zawartosc R0}
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
adc [0e0h],al
mov al,1
jmp @Flagi
@s39: { ADDC A,R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+1] {w AL zawartosc R1}
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
adc [0e0h],al
mov al,1
jmp @Flagi
@s3a: { ADDC A,R2 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+2] {w AL zawartosc R2}
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
adc [0e0h],al
mov al,1
jmp @Flagi
@s3b: { ADDC A,R3 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+3] {w AL zawartosc R3}
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
adc [0e0h],al
mov al,1
jmp @Flagi
@s3c: { ADDC A,R4 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+4] {w AL zawartosc R4}
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
adc [0e0h],al
mov al,1
jmp @Flagi
@s3d: { ADDC A,R5 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+5] {w AL zawartosc R5}
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
adc [0e0h],al
mov al,1
jmp @Flagi
@s3e: { ADDC A,R6 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+6] {w AL zawartosc R6}
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
adc [0e0h],al
mov al,1
jmp @Flagi
@s3f: { ADDC A,R7 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+7] {w AL zawartosc R7}
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
adc [0e0h],al
mov al,1
jmp @Flagi
@s40: { JC rel }
mov al,2
db 64h {fs:}
test byte ptr [0d0h],80h {PSW,CY}
jz @Koniec
db 26h,0Fh,0BEh,5Ch,1 {movsx bx,byte ptr es:[si+1]}
add si,2
add si,bx
mov [RejPC],si
xor al,al
jmp @Koniec
@s41: { AJMP xxxx }
jmp @s1
@s42: { ORL reg,A }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[0e0h]
db 64h {fs:}
or [bx],al
mov al,2
jmp @Koniec
@s43: { ORL reg,#nn }
mov bl,es:[si+1]
xor bh,bh
mov al,es:[si+2]
db 64h {fs:}
or [bx],al
mov al,3
jmp @Koniec
@s44: { ORL A,#nn }
mov al,es:[si+1]
db 64h {fs:}
or [0e0h],al
mov al,2
jmp @Koniec
@s45: { ORL A,reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
or [0e0h],al
mov al,2
jmp @Koniec
@s46: { ORL A,@R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx] {w BL zawartosc R0}
or cl,cl {bigmem?}
jz @s46_1
cmp bx,128 {adres>=128?}
jb @s46_1
add bx,128 {adres=adres+128}
@s46_1:
db 64h {fs:}
mov al,[bx] {w AL zawartosc @R0}
db 64h {fs:}
or [0e0h],al
mov al,1
jmp @Koniec
@s47: { ORL A,@R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx+1] {w BL zawartosc R1}
or cl,cl {bigmem?}
jz @s47_1
cmp bx,128 {adres>=128?}
jb @s47_1
add bx,128 {adres=adres+128}
@s47_1:
db 64h {fs:}
mov al,[bx] {w AL zawartosc @R1}
db 64h {fs:}
or [0e0h],al
mov al,1
jmp @Koniec
@s48: { ORL A,R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx] {w AL zawartosc R0}
db 64h {fs:}
or [0e0h],al
mov al,1
jmp @Koniec
@s49: { ORL A,R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+1] {w AL zawartosc R1}
db 64h {fs:}
or [0e0h],al
mov al,1
jmp @Koniec
@s4a: { ORL A,R2 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+2] {w AL zawartosc R2}
db 64h {fs:}
or [0e0h],al
mov al,1
jmp @Koniec
@s4b: { ORL A,R3 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+3] {w AL zawartosc R3}
db 64h {fs:}
or [0e0h],al
mov al,1
jmp @Koniec
@s4c: { ORL A,R4 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+4] {w AL zawartosc R4}
db 64h {fs:}
or [0e0h],al
mov al,1
jmp @Koniec
@s4d: { ORL A,R5 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+5] {w AL zawartosc R5}
db 64h {fs:}
or [0e0h],al
mov al,1
jmp @Koniec
@s4e: { ORL A,R6 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+6] {w AL zawartosc R6}
db 64h {fs:}
or [0e0h],al
mov al,1
jmp @Koniec
@s4f: { ORL A,R7 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+7] {w AL zawartosc R7}
db 64h {fs:}
or [0e0h],al
mov al,1
jmp @Koniec
@s50: { JNC rel }
mov al,2
db 64h {fs:}
test byte ptr [0d0h],80h {PSW,CY}
jnz @Koniec
db 26h,0Fh,0BEh,5Ch,1 {movsx bx,byte ptr es:[si+1]}
add si,2
add si,bx
mov [RejPC],si
xor al,al
jmp @Koniec
@s51: { ACALL xxxx }
jmp @s11
@s52: { ANL reg,A }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[0e0h]
db 64h {fs:}
and [bx],al
mov al,2
jmp @Koniec
@s53: { ANL reg,#nn }
mov bl,es:[si+1]
xor bh,bh
mov al,es:[si+2]
db 64h {fs:}
and [bx],al
mov al,3
jmp @Koniec
@s54: { ANL A,#nn }
mov al,es:[si+1]
db 64h {fs:}
and [0e0h],al
mov al,2
jmp @Koniec
@s55: { ANL A,reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
and [0e0h],al
mov al,2
jmp @Koniec
@s56: { ANL A,@R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx] {w BL zawartosc R0}
or cl,cl {bigmem?}
jz @s56_1
cmp bx,128 {adres>=128?}
jb @s56_1
add bx,128 {adres=adres+128}
@s56_1:
db 64h {fs:}
mov al,[bx] {w AL zawartosc @R0}
db 64h {fs:}
and [0e0h],al
mov al,1
jmp @Koniec
@s57: { ANL A,@R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx+1] {w BL zawartosc R1}
or cl,cl {bigmem?}
jz @s57_1
cmp bx,128 {adres>=128?}
jb @s57_1
add bx,128 {adres=adres+128}
@s57_1:
db 64h {fs:}
mov al,[bx] {w AL zawartosc @R1}
db 64h {fs:}
and [0e0h],al
mov al,1
jmp @Koniec
@s58: { ANL A,R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx] {w AL zawartosc R0}
db 64h {fs:}
and [0e0h],al
mov al,1
jmp @Koniec
@s59: { ANL A,R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+1] {w AL zawartosc R1}
db 64h {fs:}
and [0e0h],al
mov al,1
jmp @Koniec
@s5a: { ANL A,R2 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+2] {w AL zawartosc R2}
db 64h {fs:}
and [0e0h],al
mov al,1
jmp @Koniec
@s5b: { ANL A,R3 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+3] {w AL zawartosc R3}
db 64h {fs:}
and [0e0h],al
mov al,1
jmp @Koniec
@s5c: { ANL A,R4 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+4] {w AL zawartosc R4}
db 64h {fs:}
and [0e0h],al
mov al,1
jmp @Koniec
@s5d: { ANL A,R5 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+5] {w AL zawartosc R5}
db 64h {fs:}
and [0e0h],al
mov al,1
jmp @Koniec
@s5e: { ANL A,R6 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+6] {w AL zawartosc R6}
db 64h {fs:}
and [0e0h],al
mov al,1
jmp @Koniec
@s5f: { ANL A,R7 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+7] {w AL zawartosc R7}
db 64h {fs:}
and [0e0h],al
mov al,1
jmp @Koniec
@s60: { JZ rel }
mov al,2
db 64h {fs:}
or byte ptr [0e0h],0
jnz @Koniec
db 26h,0Fh,0BEh,5Ch,1 {movsx bx,byte ptr es:[si+1]}
add si,2
add si,bx
mov [RejPC],si
xor al,al
jmp @Koniec
@s61: { AJMP xxxx }
jmp @s1
@s62: { XRL reg,A }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[0e0h]
db 64h {fs:}
xor [bx],al
mov al,2
jmp @Koniec
@s63: { XRL reg,#nn }
mov bl,es:[si+1]
xor bh,bh
mov al,es:[si+2]
db 64h {fs:}
xor [bx],al
mov al,3
jmp @Koniec
@s64: { XRL A,#nn }
mov al,es:[si+1]
db 64h {fs:}
xor [0e0h],al
mov al,2
jmp @Koniec
@s65: { XRL A,reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
xor [0e0h],al
mov al,2
jmp @Koniec
@s66: { XRL A,@R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx] {w BL zawartosc R0}
or cl,cl {bigmem?}
jz @s66_1
cmp bx,128 {adres>=128?}
jb @s66_1
add bx,128 {adres=adres+128}
@s66_1:
db 64h {fs:}
mov al,[bx] {w AL zawartosc @R0}
db 64h {fs:}
xor [0e0h],al
mov al,1
jmp @Koniec
@s67: { XRL A,@R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx+1] {w BL zawartosc R1}
or cl,cl {bigmem?}
jz @s67_1
cmp bx,128 {adres>=128?}
jb @s67_1
add bx,128 {adres=adres+128}
@s67_1:
db 64h {fs:}
mov al,[bx] {w AL zawartosc @R1}
db 64h {fs:}
xor [0e0h],al
mov al,1
jmp @Koniec
@s68: { XRL A,R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx] {w AL zawartosc R0}
db 64h {fs:}
xor [0e0h],al
mov al,1
jmp @Koniec
@s69: { XRL A,R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+1] {w AL zawartosc R1}
db 64h {fs:}
xor [0e0h],al
mov al,1
jmp @Koniec
@s6a: { XRL A,R2 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+2] {w AL zawartosc R2}
db 64h {fs:}
xor [0e0h],al
mov al,1
jmp @Koniec
@s6b: { XRL A,R3 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+3] {w AL zawartosc R3}
db 64h {fs:}
xor [0e0h],al
mov al,1
jmp @Koniec
@s6c: { XRL A,R4 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+4] {w AL zawartosc R4}
db 64h {fs:}
xor [0e0h],al
mov al,1
jmp @Koniec
@s6d: { XRL A,R5 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+5] {w AL zawartosc R5}
db 64h {fs:}
xor [0e0h],al
mov al,1
jmp @Koniec
@s6e: { XRL A,R6 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+6] {w AL zawartosc R6}
db 64h {fs:}
xor [0e0h],al
mov al,1
jmp @Koniec
@s6f: { XRL A,R7 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+7] {w AL zawartosc R7}
db 64h {fs:}
xor [0e0h],al
mov al,1
jmp @Koniec
@s70: { JNZ rel }
mov al,2
db 64h {fs:}
or byte ptr [0e0h],0
jz @Koniec
db 26h,0Fh,0BEh,5Ch,1 {movsx bx,byte ptr es:[si+1]}
add si,2
add si,bx
mov [RejPC],si
xor al,al
jmp @Koniec
@s71: { ACALL xxxx }
jmp @s11
@s72: { ORL C,bit }
mov bl,es:[si+1]
xor bh,bh
shl bx,1
mov ax,cs:[bx+offset @TabBitow]
mov bl,al
xor bh,bh
mov al,2
db 64h {fs:}
test byte ptr [bx],ah
jz @Koniec
db 64h {fs:}
or byte ptr [0d0h],80h {CY=1}
jmp @Koniec
@s73: { JMP @A+DPTR }
db 64h {fs:}
mov al,[0e0h]
xor ah,ah
db 64h {fs:}
add ax,[82h] {DPTR}
mov [RejPC],ax
xor al,al
jmp @Koniec
@s74: { MOV A,#nn }
mov al,es:[si+1]
db 64h {fs:}
mov [0e0h],al
mov al,2
jmp @Koniec
@s75: { MOV reg,#nn }
mov bl,es:[si+1]
xor bh,bh
mov al,es:[si+2]
cmp bx,99h {SBUF?}
jne @s75_1
call WypiszNaTerm
mov al,3
jmp @Koniec
@s75_1:
db 64h {fs:}
mov [bx],al
mov al,3
jmp @Koniec
@s76: { MOV @R0,#nn }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx] {w BX zawartosc R0}
or cl,cl {bigmem?}
jz @s76_1
cmp bx,128 {adres>=128?}
jb @s76_1
add bx,128 {adres=adres+128}
@s76_1:
mov al,es:[si+1]
db 64h {fs:}
mov [bx],al
mov al,2
jmp @Koniec
@s77: { MOV @R1,#nn }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx+1] {w BX zawartosc R1}
or cl,cl {bigmem?}
jz @s77_1
cmp bx,128 {adres>=128?}
jb @s77_1
add bx,128 {adres=adres+128}
@s77_1:
mov al,es:[si+1]
db 64h {fs:}
mov [bx],al
mov al,2
jmp @Koniec
@s78: { MOV R0,#nn }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
mov al,es:[si+1]
db 64h {fs:}
mov [bx],al
mov al,2
jmp @Koniec
@s79: { MOV R1,#nn }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
mov al,es:[si+1]
db 64h {fs:}
mov [bx+1],al
mov al,2
jmp @Koniec
@s7a: { MOV R2,#nn }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
mov al,es:[si+1]
db 64h {fs:}
mov [bx+2],al
mov al,2
jmp @Koniec
@s7b: { MOV R3,#nn }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
mov al,es:[si+1]
db 64h {fs:}
mov [bx+3],al
mov al,2
jmp @Koniec
@s7c: { MOV R4,#nn }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
mov al,es:[si+1]
db 64h {fs:}
mov [bx+4],al
mov al,2
jmp @Koniec
@s7d: { MOV R5,#nn }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
mov al,es:[si+1]
db 64h {fs:}
mov [bx+5],al
mov al,2
jmp @Koniec
@s7e: { MOV R6,#nn }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
mov al,es:[si+1]
db 64h {fs:}
mov [bx+6],al
mov al,2
jmp @Koniec
@s7f: { MOV R7,#nn }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
mov al,es:[si+1]
db 64h {fs:}
mov [bx+7],al
mov al,2
jmp @Koniec
@s80: { SJMP xxxx }
db 26h,0Fh,0BEh,5Ch,1 {movsx bx,byte ptr es:[si+1]}
add si,2
add si,bx
mov [RejPC],si
xor al,al
jmp @Koniec
@s81: { AJMP xxxx }
jmp @s1
@s82: { ANL C,bit }
mov bl,es:[si+1]
xor bh,bh
shl bx,1
mov ax,cs:[bx+offset @TabBitow]
mov bl,al
xor bh,bh
mov al,2
db 64h {fs:}
test byte ptr [bx],ah
jnz @Koniec
db 64h {fs:}
and byte ptr [0d0h],7fh {CY=0}
jmp @Koniec
@s83: { MOVC A,@A+PC }
inc si
db 64h {fs:}
mov bl,[0e0h]
xor bh,bh
mov al,es:[bx+si]
db 64h {fs:}
mov [0e0h],al
mov al,1
jmp @Koniec
@s84: { DIV AB }
db 64h {fs:}
mov al,[0e0h] {ACC}
db 64h {fs:}
mov bl,[0f0h] {B}
or bl,bl
jz @s84zero
xor ah,ah
div bl {AL-iloraz,AH-reszta}
db 64h {fs:}
mov [0e0h],al
db 64h {fs:}
mov [0f0h],ah
db 64h
and byte ptr [0d0h],7bh {CY=0,OV=0}
mov al,1
jmp @Koniec
@s84zero:
db 64h {fs:}
and byte ptr [0d0h],7fh {CY=0}
db 64h {fs:}
or byte ptr [0d0h],4 {OV=1}
mov al,1
jmp @Koniec
@s85: { MOV reg2,reg1 }
mov dx,es:[si+1] {DL-zrodlo,DH-przeznaczenie}
mov bl,dl
xor bh,bh
db 64h {fs:}
mov al,[bx]
mov bl,dh
cmp bx,99h {SBUF?}
jne @s85_1
call WypiszNaTerm
mov al,3
jmp @Koniec
@s85_1:
db 64h {fs:}
mov [bx],al
mov al,3
jmp @Koniec
@s86: { MOV reg,@R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx] {w BX zawartosc R0}
or cl,cl {bigmem?}
jz @s86_1
cmp bx,128 {adres>=128?}
jb @s86_1
add bx,128 {adres=adres+128}
@s86_1:
db 64h {fs:}
mov al,[bx]
xor bh,bh
mov bl,es:[si+1]
cmp bx,99h {SBUF?}
jne @s86_2
call WypiszNaTerm
mov al,2
jmp @Koniec
@s86_2:
db 64h {fs:}
mov [bx],al
mov al,2
jmp @Koniec
@s87: { MOV reg,@R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx+1] {w BX zawartosc R1}
or cl,cl {bigmem?}
jz @s87_1
cmp bx,128 {adres>=128?}
jb @s87_1
add bx,128 {adres=adres+128}
@s87_1:
db 64h {fs:}
mov al,[bx]
xor bh,bh
mov bl,es:[si+1]
cmp bx,99h {SBUF?}
jne @s87_2
call WypiszNaTerm
mov al,2
jmp @Koniec
@s87_2:
db 64h {fs:}
mov [bx],al
mov al,2
jmp @Koniec
@s88: { MOV reg,R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx] {w AL zawartosc R0}
mov bl,es:[si+1]
cmp bx,99h {SBUF?}
jne @s88_1
call WypiszNaTerm
mov al,2
jmp @Koniec
@s88_1:
db 64h {fs:}
mov [bx],al
mov al,2
jmp @Koniec
@s89: { MOV reg,R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+1] {w AL zawartosc R1}
mov bl,es:[si+1]
cmp bx,99h {SBUF?}
jne @s89_1
call WypiszNaTerm
mov al,2
jmp @Koniec
@s89_1:
db 64h {fs:}
mov [bx],al
mov al,2
jmp @Koniec
@s8a: { MOV reg,R2 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+2] {w AL zawartosc R2}
mov bl,es:[si+1]
cmp bx,99h {SBUF?}
jne @s8a_1
call WypiszNaTerm
mov al,2
jmp @Koniec
@s8a_1:
db 64h {fs:}
mov [bx],al
mov al,2
jmp @Koniec
@s8b: { MOV reg,R3 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+3] {w AL zawartosc R3}
mov bl,es:[si+1]
cmp bx,99h {SBUF?}
jne @s8b_1
call WypiszNaTerm
mov al,2
jmp @Koniec
@s8b_1:
db 64h {fs:}
mov [bx],al
mov al,2
jmp @Koniec
@s8c: { MOV reg,R4 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+4] {w AL zawartosc R4}
mov bl,es:[si+1]
cmp bx,99h {SBUF?}
jne @s8c_1
call WypiszNaTerm
mov al,2
jmp @Koniec
@s8c_1:
db 64h {fs:}
mov [bx],al
mov al,2
jmp @Koniec
@s8d: { MOV reg,R5 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+5] {w AL zawartosc R5}
mov bl,es:[si+1]
cmp bx,99h {SBUF?}
jne @s8d_1
call WypiszNaTerm
mov al,2
jmp @Koniec
@s8d_1:
db 64h {fs:}
mov [bx],al
mov al,2
jmp @Koniec
@s8e: { MOV reg,R6 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+6] {w AL zawartosc R6}
mov bl,es:[si+1]
cmp bx,99h {SBUF?}
jne @s8e_1
call WypiszNaTerm
mov al,2
jmp @Koniec
@s8e_1:
db 64h {fs:}
mov [bx],al
mov al,2
jmp @Koniec
@s8f: { MOV reg,R7 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+7] {w AL zawartosc R7}
mov bl,es:[si+1]
cmp bx,99h {SBUF?}
jne @s8f_1
call WypiszNaTerm
mov al,2
jmp @Koniec
@s8f_1:
db 64h {fs:}
mov [bx],al
mov al,2
jmp @Koniec
@s90: { MOV DPTR,#nnnn }
mov ax,es:[si+1]
xchg ah,al
db 64h {fs:}
mov [82h],ax
mov al,3
jmp @Koniec
@s91: { ACALL xxxx }
jmp @s11
@s92: { MOV bit,C }
mov bl,es:[si+1]
xor bh,bh
shl bx,1
mov ax,cs:[bx+offset @TabBitow]
mov bl,al
xor bh,bh
db 64h {fs:}
mov cl,[0d0h] {PSW}
test cl,80h {CY}
jz @s92zero
db 64h {fs:}
or byte ptr [bx],ah {bit=1}
mov al,2
jmp @Koniec
@s92zero:
xor ah,255
db 64h {fs:}
and byte ptr [bx],ah {bit=0}
mov al,2
jmp @Koniec
@s93: { MOVC A,@A+DPTR }
db 64h {fs:}
mov bx,[82h] {DPL,DPH}
db 64h {fs:}
add bl,[0e0h]
adc bh,0
mov al,es:[bx]
db 64h {fs:}
mov [0e0h],al
mov al,1
jmp @Koniec
@s94: { SUBB A,#nn }
mov al,es:[si+1]
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
sbb byte ptr [0e0h],al
mov al,2
jmp @Flagi
@s95: { SUBB A,reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx]
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
sbb byte ptr [0e0h],al
mov al,2
jmp @Flagi
@s96: { SUBB A,@R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx] {w BX zawartosc R0}
or cl,cl {bigmem?}
jz @s96_1
cmp bx,128 {adres>=128?}
jb @s96_1
add bx,128 {adres=adres+128}
@s96_1:
db 64h {fs:}
mov al,[bx]
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
sbb byte ptr [0e0h],al
mov al,1
jmp @Flagi
@s97: { SUBB A,@R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx+1] {w BX zawartosc R1}
or cl,cl {bigmem?}
jz @s97_1
cmp bx,128 {adres>=128?}
jb @s97_1
add bx,128 {adres=adres+128}
@s97_1:
db 64h {fs:}
mov al,[bx]
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
sbb byte ptr [0e0h],al
mov al,1
jmp @Flagi
@s98: { SUBB A,R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx] {w AL zawartosc R0}
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
sbb byte ptr [0e0h],al
mov al,1
jmp @Flagi
@s99: { SUBB A,R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+1] {w AL zawartosc R1}
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
sbb byte ptr [0e0h],al
mov al,1
jmp @Flagi
@s9a: { SUBB A,R2 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+2] {w AL zawartosc R2}
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
sbb byte ptr [0e0h],al
mov al,1
jmp @Flagi
@s9b: { SUBB A,R3 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+3] {w AL zawartosc R3}
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
sbb byte ptr [0e0h],al
mov al,1
jmp @Flagi
@s9c: { SUBB A,R4 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+4] {w AL zawartosc R4}
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
sbb byte ptr [0e0h],al
mov al,1
jmp @Flagi
@s9d: { SUBB A,R5 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+5] {w AL zawartosc R5}
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
sbb byte ptr [0e0h],al
mov al,1
jmp @Flagi
@s9e: { SUBB A,R6 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+6] {w AL zawartosc R6}
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
sbb byte ptr [0e0h],al
mov al,1
jmp @Flagi
@s9f: { SUBB A,R7 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+7] {w AL zawartosc R7}
db 64h,0Fh,0BAh,26h,0D0h,0,7 {bt word ptr fs:[0d0h],7} {CY sym.->CF}
db 64h {fs:}
sbb byte ptr [0e0h],al
mov al,1
jmp @Flagi
@sa0: { ORL C,/bit }
mov bl,es:[si+1]
xor bh,bh
shl bx,1
mov ax,cs:[bx+offset @TabBitow]
mov bl,al
xor bh,bh
mov al,2
db 64h {fs:}
test byte ptr [bx],ah
jnz @Koniec
db 64h {fs:}
or byte ptr [0d0h],80h {CY=1}
jmp @Koniec
@sa1: { AJMP xxxx }
jmp @s1
@sa2: { MOV C,bit }
mov bl,es:[si+1]
xor bh,bh
shl bx,1
mov ax,cs:[bx+offset @TabBitow]
mov bl,al
xor bh,bh
db 64h {fs:}
test byte ptr [bx],ah
jz @sa2zero
db 64h {fs:}
or byte ptr [0d0h],80h {CY=1}
mov al,2
jmp @Koniec
@sa2zero:
db 64h {fs:}
and byte ptr [0d0h],7fh {CY=0}
mov al,2
jmp @Koniec
@sa3: { INC DPTR }
db 64h {fs:}
inc word ptr [82h]
mov al,1
jmp @Koniec
@sa4: { MUL AB }
db 64h {fs:}
mov al,[0e0h] {ACC}
db 64h {fs:}
mov bl,[0f0h] {B}
mul bl {AX-iloczyn}
db 64h {fs:}
mov [0e0h],al
db 64h {fs:}
mov [0f0h],ah
jc @sa4msb
db 64h {fs:}
and byte ptr [0d0h],7bh {CY=0,OV=0}
mov al,1
jmp @Koniec
@sa4msb:
db 64h {fs:}
and byte ptr [0d0h],7fh {CY=0}
db 64h {fs:}
or byte ptr [0d0h],4 {OV=1}
mov al,1
jmp @Koniec
@sa5: { ??? }
mov al,1
jmp @Koniec
@sa6: { MOV @R0,reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx] {AL=reg}
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx] {w BX zawartosc R0}
or cl,cl {bigmem?}
jz @sa6_1
cmp bx,128 {adres>=128?}
jb @sa6_1
add bx,128 {adres=adres+128}
@sa6_1:
db 64h {fs:}
mov [bx],al
mov al,2
jmp @Koniec
@sa7: { MOV @R1,reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx] {AL=reg}
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx+1] {w BX zawartosc R1}
or cl,cl {bigmem?}
jz @sa7_1
cmp bx,128 {adres>=128?}
jb @sa7_1
add bx,128 {adres=adres+128}
@sa7_1:
db 64h {fs:}
mov [bx],al
mov al,2
jmp @Koniec
@sa8: { MOV R0,reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx] {AL=reg}
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov [bx],al
mov al,2
jmp @Koniec
@sa9: { MOV R1,reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx] {AL=reg}
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov [bx+1],al
mov al,2
jmp @Koniec
@saa: { MOV R2,reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx] {AL=reg}
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov [bx+2],al
mov al,2
jmp @Koniec
@sab: { MOV R3,reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx] {AL=reg}
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov [bx+3],al
mov al,2
jmp @Koniec
@sac: { MOV R4,reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx] {AL=reg}
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov [bx+4],al
mov al,2
jmp @Koniec
@sad: { MOV R5,reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx] {AL=reg}
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov [bx+5],al
mov al,2
jmp @Koniec
@sae: { MOV R6,reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx] {AL=reg}
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov [bx+6],al
mov al,2
jmp @Koniec
@saf: { MOV R7,reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx] {AL=reg}
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov [bx+7],al
mov al,2
jmp @Koniec
@sb0: { ANL C,/bit }
mov bl,es:[si+1]
xor bh,bh
shl bx,1
mov ax,cs:[bx+offset @TabBitow]
mov bl,al
xor bh,bh
mov al,2
db 64h {fs:}
test byte ptr [bx],ah
jz @Koniec
db 64h {fs:}
and byte ptr [0d0h],7fh {CY=0}
jmp @Koniec
@sb1: { ACALL xxxx }
jmp @s11
@sb2: { CPL bit }
mov bl,es:[si+1]
xor bh,bh
shl bx,1
mov ax,cs:[bx+offset @TabBitow]
mov bl,al
xor bh,bh
db 64h {fs:}
xor byte ptr [bx],ah { NOT bit }
mov al,2
jmp @Koniec
@sb3: { CPL C }
db 64h {fs:}
xor byte ptr [0d0h],80h
mov al,1
jmp @Koniec
@sb4: { CJNE A,#nn,rel }
db 64h {fs:}
mov al,[0e0h]
cmp al,es:[si+1]
@sb4tutaj:
pushf
jc @sb4cy
db 64h {fs:}
and byte ptr [0d0h],7fh {CY=0}
jmp @sb4dal
@sb4cy:
db 64h {fs:}
or byte ptr [0d0h],80h {CY=1}
@sb4dal:
popf
jne @sb4skok
mov al,3
jmp @Koniec
@sb4skok:
db 26h,0Fh,0BEh,5Ch,2 {movsx bx,byte ptr es:[si+2]}
add si,3
add si,bx
mov [RejPC],si
xor al,al
jmp @Koniec
@sb5: { CJNE A,reg,rel }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[0e0h]
db 64h {fs:}
cmp al,[bx]
jmp @sb4tutaj
@sb6: { CJNE @R0,#nn,rel }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx] {w BX zawartosc R0}
or cl,cl {bigmem?}
jz @sb6_1
cmp bx,128 {adres>=128?}
jb @sb6_1
add bx,128 {adres=adres+128}
@sb6_1:
db 64h {fs:}
mov al,[bx]
cmp al,es:[si+1]
jmp @sb4tutaj
@sb7: { CJNE @R1,#nn,rel }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx+1] {w BX zawartosc R1}
or cl,cl {bigmem?}
jz @sb7_1
cmp bx,128 {adres>=128?}
jb @sb7_1
add bx,128 {adres=adres+128}
@sb7_1:
db 64h {fs:}
mov al,[bx]
cmp al,es:[si+1]
jmp @sb4tutaj
@sb8: { CJNE R0,#nn,rel }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx] {w BX zawartosc R0}
cmp al,es:[si+1]
jmp @sb4tutaj
@sb9: { CJNE R1,#nn,rel }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+1] {w BX zawartosc R1}
cmp al,es:[si+1]
jmp @sb4tutaj
@sba: { CJNE R2,#nn,rel }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+2] {w BX zawartosc R2}
cmp al,es:[si+1]
jmp @sb4tutaj
@sbb: { CJNE R3,#nn,rel }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+3] {w BX zawartosc R3}
cmp al,es:[si+1]
jmp @sb4tutaj
@sbc: { CJNE R4,#nn,rel }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+4] {w BX zawartosc R4}
cmp al,es:[si+1]
jmp @sb4tutaj
@sbd: { CJNE R5,#nn,rel }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+5] {w BX zawartosc R5}
cmp al,es:[si+1]
jmp @sb4tutaj
@sbe: { CJNE R6,#nn,rel }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+6] {w BX zawartosc R6}
cmp al,es:[si+1]
jmp @sb4tutaj
@sbf: { CJNE R7,#nn,rel }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+7] {w BX zawartosc R7}
cmp al,es:[si+1]
jmp @sb4tutaj
@sc0: { PUSH reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
mov bl,[81h] {SP}
or cl,cl {bigmem?}
jz @sc0_1
cmp bx,128 {adres>=128?}
jb @sc0_1
add bx,128 {adres=adres+128}
@sc0_1:
db 64h {fs:}
mov [bx+1],al
db 64h {fs:}
inc byte ptr [81h]
mov al,2
jmp @Koniec
@sc1: { AJMP xxxx }
jmp @s1
@sc2: { CLR bit }
mov bl,es:[si+1]
xor bh,bh
shl bx,1
mov ax,cs:[bx+offset @TabBitow]
mov bl,al
xor bh,bh
xor ah,255
db 64h {fs:}
and byte ptr [bx],ah { bit=0 }
mov al,2
jmp @Koniec
@sc3: { CLR C }
db 64h {fs:}
and byte ptr [0d0h],7fh
mov al,1
jmp @Koniec
@sc4: { SWAP A }
db 64h {fs:}
rol byte ptr [0e0h],4
mov al,1
jmp @Koniec
@sc5: { XCH A,reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
mov ah,[0e0h]
db 64h {fs:}
mov [0e0h],al
db 64h {fs:}
mov [bx],ah
mov al,2
jmp @Koniec
@sc6: { XCH A,@R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx] {w BX zawartosc R0}
or cl,cl {bigmem?}
jz @sc6_1
cmp bx,128 {adres>=128?}
jb @sc6_1
add bx,128 {adres=adres+128}
@sc6_1:
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
mov ah,[0e0h]
db 64h {fs:}
mov [0e0h],al
db 64h {fs:}
mov [bx],ah
mov al,1
jmp @Koniec
@sc7: { XCH A,@R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx+1] {w BX zawartosc R1}
or cl,cl {bigmem?}
jz @sc7_1
cmp bx,128 {adres>=128?}
jb @sc7_1
add bx,128 {adres=adres+128}
@sc7_1:
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
mov ah,[0e0h]
db 64h {fs:}
mov [0e0h],al
db 64h {fs:}
mov [bx],ah
mov al,1
jmp @Koniec
@sc8: { XCH A,R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
mov ah,[0e0h]
db 64h {fs:}
mov [0e0h],al
db 64h {fs:}
mov [bx],ah
mov al,1
jmp @Koniec
@sc9: { XCH A,R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
inc bl {w BX adres R1}
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
mov ah,[0e0h]
db 64h {fs:}
mov [0e0h],al
db 64h {fs:}
mov [bx],ah
mov al,1
jmp @Koniec
@sca: { XCH A,R2 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
add bl,2 {w BX adres R2}
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
mov ah,[0e0h]
db 64h {fs:}
mov [0e0h],al
db 64h {fs:}
mov [bx],ah
mov al,1
jmp @Koniec
@scb: { XCH A,R3 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
add bl,3 {w BX adres R3}
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
mov ah,[0e0h]
db 64h {fs:}
mov [0e0h],al
db 64h {fs:}
mov [bx],ah
mov al,1
jmp @Koniec
@scc: { XCH A,R4 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
add bl,4 {w BX adres R4}
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
mov ah,[0e0h]
db 64h {fs:}
mov [0e0h],al
db 64h {fs:}
mov [bx],ah
mov al,1
jmp @Koniec
@scd: { XCH A,R5 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
add bl,5 {w BX adres R5}
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
mov ah,[0e0h]
db 64h {fs:}
mov [0e0h],al
db 64h {fs:}
mov [bx],ah
mov al,1
jmp @Koniec
@sce: { XCH A,R6 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
add bl,6 {w BX adres R6}
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
mov ah,[0e0h]
db 64h {fs:}
mov [0e0h],al
db 64h {fs:}
mov [bx],ah
mov al,1
jmp @Koniec
@scf: { XCH A,R7 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
add bl,7 {w BX adres R7}
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
mov ah,[0e0h]
db 64h {fs:}
mov [0e0h],al
db 64h {fs:}
mov [bx],ah
mov al,1
jmp @Koniec
@sd0: { POP reg }
db 64h {fs:}
mov bl,[81h] {SP}
xor bh,bh
or cl,cl {bigmem?}
jz @sd0_1
cmp bx,128 {adres>=128?}
jb @sd0_1
add bx,128 {adres=adres+128}
@sd0_1:
db 64h {fs:}
mov al,[bx]
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov [bx],al
db 64h {fs:}
dec byte ptr [81h]
mov al,2
jmp @Koniec
@sd1: { ACALL xxxx }
jmp @s11
@sd2: { SETB bit }
mov bl,es:[si+1]
xor bh,bh
shl bx,1
mov ax,cs:[bx+offset @TabBitow]
mov bl,al
xor bh,bh
db 64h {fs:}
or byte ptr [bx],ah { bit=1 }
mov al,2
jmp @Koniec
@sd3: { SETB C }
db 64h {fs:}
or byte ptr [0d0h],80h
mov al,1
jmp @Koniec
@sd4: { DA A }
db 64h {fs:}
mov bl,[0d0h] {PSW}
xor bh,bh
and bl,0c0h {CY i AC}
shr bl,6
mov ah,cs:[bx+offset @sd4tab] {CF-bit 0., AF-bit 4., bit 1.=1}
sahf {AH->Flags}
db 64h {fs:}
mov al,[0e0h]
daa
db 64h {fs:}
mov [0e0h],al
jc @sd4ustawc
db 64h {fs:}
and byte ptr [0d0h],7fh {CY=0}
mov al,1
jmp @Koniec
@sd4ustawc:
db 64h {fs:}
or byte ptr [0d0h],80h {CY=1}
mov al,1
jmp @Koniec
@sd4tab:
db 2,12h,3,13h
@sd5: { DJNZ reg,xxxx }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
dec byte ptr [bx]
jz @sd5nic
db 26h,0Fh,0BEh,5Ch,2 {movsx bx,byte ptr es:[si+2]}
add si,3
add si,bx
mov [RejPC],si
xor al,al
jmp @Koniec
@sd5nic:
mov al,3
jmp @Koniec
@sd6: { XCHD A,@R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx] {w BX zawartosc R0}
or cl,cl {bigmem?}
jz @sd6_1
cmp bx,128 {adres>=128?}
jb @sd6_1
add bx,128 {adres=adres+128}
@sd6_1:
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
mov ah,[0e0h] {ACC}
db 64h {fs:}
and byte ptr [bx],0f0h
db 64h {fs:}
and byte ptr [0e0h],0f0h
and ax,0f0fh
db 64h {fs:}
or byte ptr [bx],ah
db 64h {fs:}
or byte ptr [0e0h],al
mov al,1
jmp @Koniec
@sd7: { XCHD A,@R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx+1] {w BX zawartosc R1}
or cl,cl {bigmem?}
jz @sd7_1
cmp bx,128 {adres>=128?}
jb @sd7_1
add bx,128 {adres=adres+128}
@sd7_1:
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
mov ah,[0e0h] {ACC}
db 64h {fs:}
and byte ptr [bx],0f0h
db 64h {fs:}
and byte ptr [0e0h],0f0h
and ax,0f0fh
db 64h {fs:}
or byte ptr [bx],ah
db 64h {fs:}
or byte ptr [0e0h],al
mov al,1
jmp @Koniec
@sd8: { DJNZ R0,xxxx }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
dec byte ptr [bx]
jz @sd8nic
db 26h,0Fh,0BEh,5Ch,1 {movsx bx,byte ptr es:[si+1]}
add si,2
add si,bx
mov [RejPC],si
xor al,al
jmp @Koniec
@sd8nic:
mov al,2
jmp @Koniec
@sd9: { DJNZ R1,xxxx }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
inc bl
db 64h {fs:}
dec byte ptr [bx]
jz @sd8nic
db 26h,0Fh,0BEh,5Ch,1 {movsx bx,byte ptr es:[si+1]}
add si,2
add si,bx
mov [RejPC],si
xor al,al
jmp @Koniec
@sda: { DJNZ R2,xxxx }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
add bl,2
db 64h {fs:}
dec byte ptr [bx]
jz @sd8nic
db 26h,0Fh,0BEh,5Ch,1 {movsx bx,byte ptr es:[si+1]}
add si,2
add si,bx
mov [RejPC],si
xor al,al
jmp @Koniec
@sdb: { DJNZ R3,xxxx }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
add bl,3
db 64h {fs:}
dec byte ptr [bx]
jz @sd8nic
db 26h,0Fh,0BEh,5Ch,1 {movsx bx,byte ptr es:[si+1]}
add si,2
add si,bx
mov [RejPC],si
xor al,al
jmp @Koniec
@sdc: { DJNZ R4,xxxx }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
add bl,4
db 64h {fs:}
dec byte ptr [bx]
jz @sd8nic
db 26h,0Fh,0BEh,5Ch,1 {movsx bx,byte ptr es:[si+1]}
add si,2
add si,bx
mov [RejPC],si
xor al,al
jmp @Koniec
@sdd: { DJNZ R5,xxxx }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
add bl,5
db 64h {fs:}
dec byte ptr [bx]
jz @sd8nic
db 26h,0Fh,0BEh,5Ch,1 {movsx bx,byte ptr es:[si+1]}
add si,2
add si,bx
mov [RejPC],si
xor al,al
jmp @Koniec
@sde: { DJNZ R6,xxxx }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
add bl,6
db 64h {fs:}
dec byte ptr [bx]
jz @sd8nic
db 26h,0Fh,0BEh,5Ch,1 {movsx bx,byte ptr es:[si+1]}
add si,2
add si,bx
mov [RejPC],si
xor al,al
jmp @Koniec
@sdf: { DJNZ R7,xxxx }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
add bl,7
db 64h {fs:}
dec byte ptr [bx]
jz @sd8nic
db 26h,0Fh,0BEh,5Ch,1 {movsx bx,byte ptr es:[si+1]}
add si,2
add si,bx
mov [RejPC],si
xor al,al
jmp @Koniec
@se0: { MOVX A,@DPTR }
push es
mov ax,[selRAM]
mov es,ax
db 64h {fs:}
mov bx,[82h] {DPL,DPH}
mov al,es:[bx]
db 64h {fs:}
mov [0e0h],al {ACC}
pop es
mov al,1
jmp @Koniec
@se1: { AJMP xxxx }
jmp @s1
@se2: { MOVX A,@R0 }
push es
mov ax,[selRAM]
mov es,ax
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx] {w BL zawartosc R0}
db 64h {fs:}
mov bh,[0a0h] {P2-starszy bajt adresu}
mov al,es:[bx]
db 64h {fs:}
mov [0e0h],al {ACC}
pop es
mov al,1
jmp @Koniec
@se3: { MOVX A,@R1 }
push es
mov ax,[selRAM]
mov es,ax
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx+1] {w BL zawartosc R1}
db 64h {fs:}
mov bh,[0a0h] {P2-starszy bajt adresu}
mov al,es:[bx]
db 64h {fs:}
mov [0e0h],al {ACC}
pop es
mov al,1
jmp @Koniec
@se4: { CLR A }
db 64h {fs:}
mov byte ptr [0e0h],0
mov al,1
jmp @Koniec
@se5: { MOV A,reg }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
mov [0e0h],al
mov al,2
jmp @Koniec
@se6: { MOV A,@R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx] {w BL zawartosc R0}
or cl,cl {bigmem?}
jz @se6_1
cmp bx,128 {adres>=128?}
jb @se6_1
add bx,128 {adres=adres+128}
@se6_1:
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
mov [0e0h],al
mov al,1
jmp @Koniec
@se7: { MOV A,@R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx+1] {w BL zawartosc R1}
or cl,cl {bigmem?}
jz @se7_1
cmp bx,128 {adres>=128?}
jb @se7_1
add bx,128 {adres=adres+128}
@se7_1:
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
mov [0e0h],al
mov al,1
jmp @Koniec
@se8: { MOV A,R0 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx]
db 64h {fs:}
mov [0e0h],al
mov al,1
jmp @Koniec
@se9: { MOV A,R1 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+1]
db 64h {fs:}
mov [0e0h],al
mov al,1
jmp @Koniec
@sea: { MOV A,R2 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+2]
db 64h {fs:}
mov [0e0h],al
mov al,1
jmp @Koniec
@seb: { MOV A,R3 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+3]
db 64h {fs:}
mov [0e0h],al
mov al,1
jmp @Koniec
@sec: { MOV A,R4 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+4]
db 64h {fs:}
mov [0e0h],al
mov al,1
jmp @Koniec
@sed: { MOV A,R5 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+5]
db 64h {fs:}
mov [0e0h],al
mov al,1
jmp @Koniec
@see: { MOV A,R6 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+6]
db 64h {fs:}
mov [0e0h],al
mov al,1
jmp @Koniec
@sef: { MOV A,R7 }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[bx+7]
db 64h {fs:}
mov [0e0h],al
mov al,1
jmp @Koniec
@sf0: { MOVX @DPTR,A }
push es
mov ax,[selRAM]
mov es,ax
db 64h {fs:}
mov bx,[82h] {DPL,DPH}
db 64h {fs:}
mov al,[0e0h]
mov es:[bx],al
pop es
mov al,1
jmp @Koniec
@sf1: { ACALL xxxx }
jmp @s11
@sf2: { MOVX @R0,A }
push es
mov ax,[selRAM]
mov es,ax
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx] {w BL zawartosc R0}
db 64h {fs:}
mov bh,[0a0h] {P2-starszy bajt adresu}
db 64h {fs:}
mov al,[0e0h] {ACC}
mov es:[bx],al
pop es
mov al,1
jmp @Koniec
@sf3: { MOVX @R1,A }
push es
mov ax,[selRAM]
mov es,ax
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx+1] {w BL zawartosc R1}
db 64h {fs:}
mov bh,[0a0h] {P2-starszy bajt adresu}
db 64h {fs:}
mov al,[0e0h] {ACC}
mov es:[bx],al
pop es
mov al,1
jmp @Koniec
@sf4: { CPL A }
db 64h {fs:}
xor byte ptr [0e0h],0ffh
mov al,1
jmp @Koniec
@sf5: { MOV reg,A }
mov bl,es:[si+1]
xor bh,bh
db 64h {fs:}
mov al,[0e0h]
cmp bx,99h {SBUF?}
jne @sf5_1
call WypiszNaTerm
mov al,2
jmp @Koniec
@sf5_1:
db 64h {fs:}
mov [bx],al
mov al,2
jmp @Koniec
@sf6: { MOV @R0,A }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx] {w BL zawartosc R0}
or cl,cl {bigmem?}
jz @sf6_1
cmp bx,128 {adres>=128?}
jb @sf6_1
add bx,128 {adres=adres+128}
@sf6_1:
db 64h {fs:}
mov al,[0e0h]
cmp bx,99h {SBUF?}
jne @sf6_2
call WypiszNaTerm
mov al,1
jmp @Koniec
@sf6_2:
db 64h {fs:}
mov [bx],al
mov al,1
jmp @Koniec
@sf7: { MOV @R1,A }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov bl,[bx+1] {w BL zawartosc R1}
or cl,cl {bigmem?}
jz @sf7_1
cmp bx,128 {adres>=128?}
jb @sf7_1
add bx,128 {adres=adres+128}
@sf7_1:
db 64h {fs:}
mov al,[0e0h]
cmp bx,99h {SBUF?}
jne @sf7_2
call WypiszNaTerm
mov al,1
jmp @Koniec
@sf7_2:
db 64h {fs:}
mov [bx],al
mov al,1
jmp @Koniec
@sf8: { MOV R0,A }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[0e0h]
db 64h {fs:}
mov [bx],al
mov al,1
jmp @Koniec
@sf9: { MOV R1,A }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[0e0h]
db 64h {fs:}
mov [bx+1],al
mov al,1
jmp @Koniec
@sfa: { MOV R2,A }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[0e0h]
db 64h {fs:}
mov [bx+2],al
mov al,1
jmp @Koniec
@sfb: { MOV R3,A }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[0e0h]
db 64h {fs:}
mov [bx+3],al
mov al,1
jmp @Koniec
@sfc: { MOV R4,A }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[0e0h]
db 64h {fs:}
mov [bx+4],al
mov al,1
jmp @Koniec
@sfd: { MOV R5,A }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[0e0h]
db 64h {fs:}
mov [bx+5],al
mov al,1
jmp @Koniec
@sfe: { MOV R6,A }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[0e0h]
db 64h {fs:}
mov [bx+6],al
mov al,1
jmp @Koniec
@sff: { MOV R7,A }
db 64h {fs:}
mov bl,[0d0h] {PSW}
and bl,18h
xor bh,bh {w BX adres R0}
db 64h {fs:}
mov al,[0e0h]
db 64h {fs:}
mov [bx+7],al
mov al,1
jmp @Koniec
{ ustawiamy flagi po operacjach arytmetycznych }
@Flagi:
pushf
pop bx
db 64h {fs:}
mov ah,[0d0h] {PSW}
and ah,3bh {CY,AC,OV=0}
test bx,1 {CF}
jz @sflnc
or ah,80h {CY=1}
@sflnc:
test bx,10h {AF}
jz @sflna
or ah,40h {AC=1}
@sflna:
test bx,800h {OF}
jz @sflno
or ah,4 {OV=1}
@sflno:
db 64h {fs:}
mov [0d0h],ah {PSW}
@Koniec:
xor ah,ah
add [RejPC],ax {al-dlugosc rozkazu}
{ teraz jeszcze ustawiamy bit parzystosci P }
db 64h {fs:}
or byte ptr [0e0h],0
jp @parzys
db 64h {fs:}
and byte ptr [0d0h],0feh {zeruj P}
jmp @TheEnd
@parzys:
db 64h {fs:}
or byte ptr [0d0h],1 {ustaw P}
@TheEnd:
pop bx {przywróć bajt rozkazu ze stosu}
db 66h,0b8h,0,0,0,0 {mov eax,0}
mov al,ds:[offset TabIleCykli+bx] {pobierz ilosc cykli z tablicy}
db 66h,1,6
dw offset licznikcykli {add [licznikcykli],eax}
db 66h,1,6
dw offset licznikcykliwewn {add [licznikcykliwewn],eax}
mov cx,ax
@cykleloop:
push cx
call ZwiekszT0T1Przerw { zwieksz liczniki odpowiednią ilość razy }
pop cx { (tyle, ile cykli trwało wykonywanie rozkazu) }
loop @cykleloop
end;
procedure ZwiekszT0T1Przerw;
var
tryb_0,tryb_1,p3,tmod,tcon:byte;
gate_0,ct_0,gate_1,ct_1,int0,int1,t0,t1,tr0,tr1,it0,it1,zwieksz_a,zwieksz_b:boolean;
begin
tmod:=Mem[selRAMInt:$89];
tcon:=Mem[selRAMInt:$88];
p3:=Mem[selRAMInt:$B0];
gate_0:=boolean(tmod and 8);
ct_0:=boolean(tmod and 4);
tryb_0:=tmod and 3;
gate_1:=boolean(tmod and 128);
ct_1:=boolean(tmod and 64);
tryb_1:=(tmod shr 4) and 3;
int0:=boolean(p3 and 4);
int1:=boolean(p3 and 8);
t0:=boolean(p3 and 16);
t1:=boolean(p3 and 32);
tr0:=boolean(tcon and 16);
tr1:=boolean(tcon and 64);
if poprz_t0 and (not t0) then t0:=true else t0:=false; { zbocze opadające }
poprz_t0:=boolean(p3 and 16);
if poprz_t1 and (not t1) then t1:=true else t1:=false; { zbocze opadające }
poprz_t1:=boolean(p3 and 32);
zwieksz_a:=((not(gate_0) or int0) and t0) and ct_0;
zwieksz_b:=(not(gate_0) or int0) and (not(ct_0));
if tryb_0=3 then
begin
if tr0 and (zwieksz_a or zwieksz_b) then
begin
Inc(Mem[selRAMInt:$8A]); { TL0 }
if Mem[selRAMInt:$8A]=0 then { nastąpiło przepełnienie licznika }
Mem[selRAMInt:$88]:=Mem[selRAMInt:$88] or 32; { TF0=1 }
end;
if tr1 then
begin
Inc(Mem[selRAMInt:$8C]); { TH0 }
if Mem[selRAMInt:$8C]=0 then { nastąpiło przepełnienie licznika }
Mem[selRAMInt:$88]:=Mem[selRAMInt:$88] or 128; { TF1=1 }
end;
end else
if tr0 then
begin
if zwieksz_a or zwieksz_b then
case tryb_0 of
0: begin
Inc(Mem[selRAMInt:$8A]); { TL0 }
if (Mem[selRAMInt:$8A] and 31)=0 then { nastąpiło przepełnienie preskalera }
begin
Inc(Mem[selRAMInt:$8C]); { TH0 }
if Mem[selRAMInt:$8C]=0 then { nastąpiło przepełnienie licznika }
Mem[selRAMInt:$88]:=Mem[selRAMInt:$88] or 32; { TF0=1 }
end;
end;
1: begin
Inc(Mem[selRAMInt:$8A]); { TL0 }
if Mem[selRAMInt:$8A]=0 then { nastąpiło przepełnienie młodszego bajtu }
begin
Inc(Mem[selRAMInt:$8C]); { TH0 }
if Mem[selRAMInt:$8C]=0 then
Mem[selRAMInt:$88]:=Mem[selRAMInt:$88] or 32; { TF0=1 }
end;
end;
2: begin
Inc(Mem[selRAMInt:$8A]); { TL0 }
if Mem[selRAMInt:$8A]=0 then { nastąpiło przepełnienie licznika }
begin
Mem[selRAMInt:$8A]:=Mem[selRAMInt:$8C]; { przepisanie TH0 do TL0 }
Mem[selRAMInt:$88]:=Mem[selRAMInt:$88] or 32; { TF0=1 }
end;
end;
end;
end;
if tryb_1<>3 then
if tr1 or (tryb_0=3) then
begin
zwieksz_a:=((not(gate_1) or int1) and t1) and ct_1;
zwieksz_b:=(not(gate_1) or int1) and (not(ct_1));
if zwieksz_a or zwieksz_b then
case tryb_1 of
0: begin
Inc(Mem[selRAMInt:$8B]); { TL1 }
if (Mem[selRAMInt:$8B] and 31)=0 then { nastąpiło przepełnienie preskalera }
begin
Inc(Mem[selRAMInt:$8D]); { TH1 }
if Mem[selRAMInt:$8D]=0 then { nastąpiło przepełnienie licznika }
if tryb_0<>3 then Mem[selRAMInt:$88]:=Mem[selRAMInt:$88] or 128; { TF1=1 }
end;
end;
1: begin
Inc(Mem[selRAMInt:$8B]); { TL1 }
if Mem[selRAMInt:$8B]=0 then { nastąpiło przepełnienie młodszego bajtu }
begin
Inc(Mem[selRAMInt:$8D]); { TH1 }
if Mem[selRAMInt:$8D]=0 then
if tryb_0<>3 then Mem[selRAMInt:$88]:=Mem[selRAMInt:$88] or 128; { TF1=1 }
end;
end;
2: begin
Inc(Mem[selRAMInt:$8B]); { TL1 }
if Mem[selRAMInt:$8B]=0 then { nastąpiło przepełnienie licznika }
begin
Mem[selRAMInt:$8B]:=Mem[selRAMInt:$8D]; { przepisanie TH1 do TL1 }
if tryb_0<>3 then Mem[selRAMInt:$88]:=Mem[selRAMInt:$88] or 128; { TF1=1 }
end;
end;
end;
end;
it0:=boolean(tcon and 1); { 0-poziom, 1-zbocze }
it1:=boolean(tcon and 4);
if it0 then { reakcja na zbocze opadające INT0 }
begin
if poprz_int0 and (not int0) then
Mem[selRAMInt:$88]:=Mem[selRAMInt:$88] or 2 else { IE0=1 }
Mem[selRAMInt:$88]:=Mem[selRAMInt:$88] and 253; { IE0=0 }
end else { reakcja na niski poziom INT0 }
if not int0 then
Mem[selRAMInt:$88]:=Mem[selRAMInt:$88] or 2 else { IE0=1 }
Mem[selRAMInt:$88]:=Mem[selRAMInt:$88] and 253; { IE0=0 }
if it1 then { reakcja na zbocze opadające INT1 }
begin
if poprz_int1 and (not int1) then
Mem[selRAMInt:$88]:=Mem[selRAMInt:$88] or 8 else { IE1=1 }
Mem[selRAMInt:$88]:=Mem[selRAMInt:$88] and 247; { IE1=0 }
end else { reakcja na niski poziom INT1 }
if not int1 then
Mem[selRAMInt:$88]:=Mem[selRAMInt:$88] or 8 else { IE1=1 }
Mem[selRAMInt:$88]:=Mem[selRAMInt:$88] and 247; { IE1=0 }
poprz_int0:=int0;
poprz_int1:=int1;
{*** generacja przerwań na podstawie ustawionych flag IE0,TF0,IE1,TF1,TI,RI ***}
tcon:=Mem[selRAMInt:$88];
if (tcon and 2)=2 then { IE0 }
if GenPrzerwanie(0,true) then
begin
tcon:=tcon xor 2;
Mem[selRAMInt:$88]:=tcon;
Exit;
end;
if (tcon and 32)=32 then { TF0 }
if GenPrzerwanie(1,true) then
begin
tcon:=tcon xor 32;
Mem[selRAMInt:$88]:=tcon;
Exit;
end;
if (tcon and 8)=8 then { IE1 }
if GenPrzerwanie(2,true) then
begin
tcon:=tcon xor 8;
Mem[selRAMInt:$88]:=tcon;
Exit;
end;
if (tcon and 128)=128 then { TF1 }
if GenPrzerwanie(3,true) then
begin
tcon:=tcon xor 128;
Mem[selRAMInt:$88]:=tcon;
Exit;
end;
if (Mem[selRAMInt:$98] and 2)=2 then { TI w SCON }
if GenPrzerwanie(4,true) then Exit;
if (Mem[selRAMInt:$98] and 1)=1 then { RI w SCON }
if GenPrzerwanie(4,true) then Exit;
end;
end.