mirror of
https://github.com/romychs/DemoN.git
synced 2025-04-18 18:12:40 +03:00
787 lines
28 KiB
NASM
787 lines
28 KiB
NASM
;[]=========================================================================[]
|
||
;[] „¨§ áᥬ¡«¥à ¬®¨â®à -®â« ¤ç¨ª DemoN []
|
||
;[] v0.01 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 10.10.2004 []
|
||
;[] v0.02 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 20.03.2005 []
|
||
;[] v0.03 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 16.02.2006 []
|
||
;[] v0.10 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 10.09.2006 []
|
||
;[] []
|
||
;[] DisAsm - ¢ë¢®¤ «¨á⨣ []
|
||
;[] AttrList - ¢ë¢®¤ âਡã⮢ áâப¨ «¨á⨣ []
|
||
;[] UpAdres - à áç¥â ¯à¥¤ë¤ã饣® ¤à¥á áâப¨ «¨á⨣ []
|
||
;[] List - ä®à¬¨à®¢ ¨¥ áâப¨ «¨á⨣ []
|
||
;[]=========================================================================[]
|
||
|
||
;[]=========================================================================[]
|
||
;[] ‚뢮¤ «¨á⨣ []
|
||
;[]=========================================================================[]
|
||
DisAsm:
|
||
ld hl,(ListAdr) ; ¤à¥á ¯¥à¢®© áâப¨ «¨á⨣
|
||
ld de,0x011A ;ª®®à¤¨ âë ¯¥ç â¨
|
||
.L1 push de
|
||
push hl
|
||
push de
|
||
ld a,d
|
||
dec a
|
||
add a,a
|
||
ld c,a
|
||
ld b,0
|
||
ex de,hl
|
||
ld hl,ListAdr
|
||
add hl,bc
|
||
ld (hl),e ; ¤à¥á áâப¨ «¨á⨣
|
||
inc hl
|
||
ld (hl),d
|
||
ex de,hl
|
||
pop de
|
||
|
||
call AttrList ;®ªà á¨âì áâபã
|
||
|
||
.L2 call PrintReg
|
||
pop hl
|
||
call List
|
||
pop de
|
||
|
||
; push af ;¤«¨ ª®¤ ¢à¥¬¥®
|
||
|
||
ld a,(ListFormat) ;ä®à¬ âë© ¢ë¢®¤
|
||
or a
|
||
call nz,LFormat
|
||
|
||
push de
|
||
push hl
|
||
di
|
||
ld a,21
|
||
add a,e
|
||
ld e,a ;®¢ ï ª®®à¤¨ â X
|
||
ld c,Bios.Lp_Set_Place ;ãáâ ®¢ª ¯®§¨æ¨¨ ¯¥ç â¨
|
||
rst BiosRst
|
||
; ld c,Dss.Locate
|
||
; rst DssRst
|
||
ld hl,List.String
|
||
ld bc,32*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨ áâப¨
|
||
rst BiosRst
|
||
ei
|
||
; ld c,Dss.PChars
|
||
; rst DssRst
|
||
pop hl
|
||
pop de
|
||
|
||
;¯¥ç âì ¤«¨ë ª®¤ ¢ ¯®«¥ ¬¥âª¨ (¢à¥¬¥®)
|
||
; pop af
|
||
; push de
|
||
; push hl
|
||
; ld e,0x24
|
||
; push de
|
||
; ld h,0
|
||
; ld l,a
|
||
; ld de,.Buf
|
||
; call NumToStr8
|
||
; pop de
|
||
; ld c,Dss.Locate
|
||
; rst DssRst
|
||
; ld hl,.Buf
|
||
; ld c,Dss.PChars
|
||
; rst DssRst
|
||
; pop hl
|
||
; pop de
|
||
; jr $+5
|
||
;.Buf db "123",0
|
||
;end (¢à¥¬¥®)
|
||
|
||
inc d ;á«¥¤ãîé ï áâப
|
||
ld a,(KList.Descript) ;ª®«-¢® áâப «¨á⨣
|
||
cp d
|
||
jr nc,.L1
|
||
ret
|
||
|
||
;[]=========================================================================[]
|
||
;[] ‚뢮¤ âਡã⮢ áâப¨ «¨á⨣ []
|
||
;[] ‚室: DE - ª®®à¤¨ âë ¯®¤á¢¥âª¨ []
|
||
;[] HL - ⥪ã騩 ¤à¥á «¨á⨣ []
|
||
;[]=========================================================================[]
|
||
AttrList:
|
||
di
|
||
push hl ;⥪ã騩 ¤à¥á «¨á⨣
|
||
push de ;⥪ã騥 ª®®à¤¨ âë
|
||
|
||
push hl
|
||
ld bc,(Reg._PC) ; ¤à¥á ¯à®£à ¬¬®£® áç¥â稪
|
||
or a ;á¡à®á ä« £ C
|
||
sbc hl,bc
|
||
pop hl
|
||
jr nz,.L2
|
||
ld a,(Color._PC) ;æ¢¥â ¯à®£à ¬¬®£® ªãàá®à
|
||
jr .L0
|
||
|
||
.L2 push hl
|
||
push de
|
||
push hl
|
||
ld bc,Rezident.End-Rezident;¤«¨ १¨¤¥â
|
||
ld hl,(RezAdr) ; ç «® १¨¤¥â
|
||
push hl
|
||
add hl,bc ;ª®¥çë© ¤à¥á १¨¤¥â
|
||
pop de
|
||
dec de
|
||
dec de
|
||
dec de
|
||
dec de
|
||
pop bc
|
||
|
||
call AdrArea
|
||
pop de
|
||
pop hl
|
||
jr c,.L3
|
||
ld a,(Color.RezArea) ;梥⠮¡« áâ¨ à §¬¥é¥¨ï १¨¤¥â
|
||
jr .L0
|
||
|
||
.L3 ld a,(Color.Screen) ;®á®¢®© 梥â
|
||
|
||
.L0 ld (.L1+1),a
|
||
dec e
|
||
ld c,Bios.Lp_Set_Place ;ãáâ ®¢ª ¯®§¨æ¨¨ ¯¥ç â¨
|
||
rst BiosRst
|
||
.L1 ld e,0 ;梥⠯®¤á¢¥âª¨
|
||
ld bc,54*256+Bios.Lp_Print_Atr ;¢ ॣ.B ¤«¨ áâப¨
|
||
rst BiosRst
|
||
pop de
|
||
pop hl
|
||
ei
|
||
ret
|
||
|
||
;[]=========================================================================[]
|
||
;[] <20> áç¥â ¯à¥¤ë¤ã饣® ¤à¥á áâப¨ «¨á⨣ []
|
||
;[] ‚室: HL - ¤à¥á ⥪ã饩 áâப¨ []
|
||
;[] ‚ë室: HL - ¤à¥á ¯à¥¤ë¤ã饩 áâப¨ []
|
||
;[]=========================================================================[]
|
||
UpAdres:
|
||
ld de,-4
|
||
add hl,de ;4-å ¡ ©â ï ª®¬ ¤ ?
|
||
call Ld_a_hl
|
||
; ld a,(hl)
|
||
cp 0xDD ;¯à¥ä¨ªá 0xDD
|
||
jr z,$+8
|
||
or 00110000b ;¬ ᪠¤«ï ¯à¥ä¨ªá®¢ 0xED,0xFD
|
||
cp 0xFD
|
||
jr nz,.L1
|
||
push hl
|
||
call List
|
||
pop hl
|
||
cp 4
|
||
ret z
|
||
|
||
.L1 inc hl
|
||
push hl ;3-å ¡ ©â ï ª®¬ ¤ ?
|
||
call List
|
||
pop hl
|
||
cp 3
|
||
ret z
|
||
|
||
inc hl
|
||
push hl ;2-å ¡ ©â ï ª®¬ ¤ ?
|
||
call List
|
||
pop hl
|
||
cp 2
|
||
ret z
|
||
|
||
inc hl
|
||
ret ;1-® ¡ ©â ï ª®¬ ¤ !
|
||
|
||
;[]=========================================================================[]
|
||
;[] ”®à¬ â¨à®¢ ¨¥ áâப¨ «¨á⨣ []
|
||
;[]=========================================================================[]
|
||
LFormat:
|
||
push hl
|
||
ld hl,List.String+11 ; ç «® áâப¨
|
||
ld bc,2 ;¬ ªá ª®«-¢® ¢áâ ¢«ï¥¬ëå ¯à®¡¥«®¢
|
||
.L2 ld a,(hl)
|
||
or a
|
||
jr z,.Exit
|
||
cp 0x20 ;¯à®¡¥«
|
||
jr z,.L1
|
||
inc hl
|
||
dec c
|
||
jr nz,.L2
|
||
|
||
.Exit pop hl
|
||
ret
|
||
|
||
.L1 push de
|
||
push bc
|
||
push hl
|
||
ld hl,List.String+30 ;ª®¥æ áâப¨
|
||
ld d,h
|
||
ld e,l
|
||
or a
|
||
sbc hl,bc
|
||
pop bc
|
||
push bc
|
||
push hl
|
||
sbc hl,bc ;ª®«-¢® ¡ ©â
|
||
ld b,h
|
||
ld c,l
|
||
pop hl
|
||
lddr
|
||
pop hl
|
||
pop bc ;ª®«-¢® ¯à®¡¥«®¢
|
||
ld b,c
|
||
.L3 inc hl ; ¤à¥á ¢áâ ¢ª¨
|
||
ld a,0x20
|
||
ld (hl),a
|
||
djnz .L3
|
||
pop de
|
||
pop hl
|
||
ret
|
||
|
||
;[]=========================================================================[]
|
||
;[] ”®à¬¨à®¢ ¨¥ áâப¨ «¨á⨣ []
|
||
;[] ‚室: HL - ¤à¥á ¯ ¬ï⨠¤¨§ áᥬ¡«¨à®¢ ¨ï []
|
||
;[] ‚ë室: HL - á«¥¤ãî騩 § ¤¨§ áᥬ¡«¨à®¢ ®© ª®¬ ¤®© ¤à¥á ¯ ¬ï⨠[]
|
||
;[] A - ¤«¨ ª®¤ ª®¬ ¤ë []
|
||
;[]=========================================================================[]
|
||
List:
|
||
xor a ;¤«¨ ª®¤ ª®¬ ¤ë
|
||
ld (.Byte),a
|
||
push hl
|
||
ld d,h
|
||
ld e,l
|
||
|
||
ld hl,.String ;®ç¨á⪠¡ãä¥à áâப¨
|
||
; di ;á ¨á¯®«ì§®¢ ¨¥¬ ªá¥«ï
|
||
; ld d,d ;¢ª«îç¨âì ªá¥«ì
|
||
; ld a,32 ;¤«¨ ¡ãä¥à ¨ ¡ ©â § ¯®«¨â¥«ì
|
||
; ld c,c ;ª®¬ ¤ § ¯®«¥¨ï
|
||
; ld (hl),a ;§ ¯®«¨âì
|
||
; ld b,b ;¢ëª«îç¨âì ªá¥«ì
|
||
; ei
|
||
ld a,32 ;¤«¨ ¡ãä¥à ¨ ¡ ©â § ¯®«¨â¥«ì
|
||
ld b,a
|
||
ld (hl),a
|
||
inc hl
|
||
djnz $-2
|
||
|
||
ld ix,.String+2 ; ¤à¥á ¢ áâப¥ ¤«ï á«¥¤.ª®¤
|
||
ex de,hl
|
||
; ld a,(hl) ;¡ ©â ¨§ ¯ ¬ïâ¨
|
||
call Ld_a_hl
|
||
|
||
;===============================
|
||
cp 0xDD ;¯à¥ä¨ªá #DD
|
||
jr z,.L43
|
||
cp 0xFD ;¯à¥ä¨ªá #FD
|
||
jp nz,.L30
|
||
|
||
ld de,"DF"
|
||
ld a,"Y"
|
||
jr .L42
|
||
|
||
.L43 ld de,"DD"
|
||
ld a,"X"
|
||
|
||
.L42 ld (.String),de ;¯à¥ä¨ªá ¢ áâபã
|
||
ld (.IRS1+1),a ;ª®à४â¨à®¢ª ॣ.¯ àë
|
||
ld (.L9+1),a
|
||
ld (.L13+6),a
|
||
ld a,1
|
||
ld (.Byte),a ;¤«¨ ª®¤ ª®¬ ¤ë
|
||
pop hl
|
||
inc hl
|
||
; ld a,(hl) ;á«¥¤ãî騩 ¡ ©â ª®¬ ¤ë
|
||
call Ld_a_hl
|
||
push hl
|
||
cp 0xCB
|
||
jr z,.L40 ;ª®¬ ¤ë #DD(#FD)#CB
|
||
|
||
ld hl,CodeDDFD ;â ¡«¨æ ª®¤®¢
|
||
ld bc,85 ;à §¬¥à â ¡«¨æë
|
||
cpir ;¯®¨áª ª®¤
|
||
jr z,.L45
|
||
pop hl
|
||
ld bc,ED00
|
||
ld de,.String+9 ;ª®¯¨à®¢ ¨¥ ¬¥¬®¨ª¨ NOP *
|
||
ld a,(bc)
|
||
or a
|
||
ret z
|
||
ld (de),a
|
||
inc de
|
||
inc bc
|
||
jr $-6
|
||
|
||
.L45 ld hl,84 ;à §¬¥à â ¡«¨æë
|
||
or a
|
||
sbc hl,bc
|
||
ld de,TablDDFD
|
||
jp .L_12+3
|
||
|
||
.L40 ld ix,.String+4 ; ¤à¥á ¢ áâப¥ ¤«ï á«¥¤.ª®¤
|
||
ld de,"BC" ;¯à¥ä¨ªá ¢ áâபã
|
||
ld (.String+2),de
|
||
ld a,4 ;¤«¨ ª®¤
|
||
ld (.Byte),a
|
||
pop hl
|
||
inc hl
|
||
call Ld_a_hl
|
||
ld b,a
|
||
; ld b,(hl) ;¡ ©â-ᬥ饨¥
|
||
inc hl
|
||
call Ld_a_hl
|
||
; ld a,(hl) ;á«¥¤ãî騩 ¡ ©â ª®¬ ¤ë
|
||
inc hl
|
||
push hl
|
||
ld c,a
|
||
ld h,0
|
||
cp 0x40 ;®â 0 ¤® 0x3F (ᤢ¨£¨)
|
||
jr c,.L44
|
||
|
||
call .ComCBBit ;¬¥¬®¨ª BIT,SET,RES
|
||
ld a,c
|
||
cp 0x80 ;ª®¬ ¤ BIT
|
||
jr nc,.L41
|
||
call .NomBit ;®¬¥à ¡¨â
|
||
call .IndexRegSh ;¨¤¥ªá ï ¯ à ᮠᬥ饨¥¬
|
||
jr .L46
|
||
|
||
.L41 call .NomBit ;®¬¥à ¡¨â
|
||
jr .L44+3
|
||
|
||
.L44 call .ComCBSh ;¬¥¬®¨ª
|
||
call .RegName ;ॣ¨áâà
|
||
jr nz,$+6
|
||
ld a,"," ;à §¤¥«¨â¥«ì
|
||
ld (de),a
|
||
inc de
|
||
call .IndexRegSh ;¨¤¥ªá ï ¯ à ᮠᬥ饨¥¬
|
||
|
||
.L46 ld a,c
|
||
call ConvHexStr
|
||
ld (ix+2),l
|
||
ld (ix+3),h
|
||
pop hl
|
||
ret
|
||
|
||
;===============================
|
||
.L30 cp 0xCB ;¯à¥ä¨ªá #CB
|
||
jp nz,.L20
|
||
ld de,"BC" ;¯à¥ä¨ªá ¢ áâபã
|
||
ld (.String),de
|
||
pop hl
|
||
inc hl
|
||
call Ld_a_hl
|
||
; ld a,(hl) ;á«¥¤ãî騩 ¡ ©â ª®¬ ¤ë
|
||
inc hl
|
||
push hl
|
||
ld c,a
|
||
ld h,0
|
||
cp 0x40 ;®â 0 ¤® 0x3F (ᤢ¨£¨)
|
||
jr nc,.L31
|
||
call .ComCBSh ;¬¥¬®¨ª
|
||
jr .L31+6
|
||
.L31 call .ComCBBit ;¬¥¬®¨ª
|
||
call .NomBit ;®¬¥à ¡¨â
|
||
call .RegName ;ॣ¨áâà
|
||
call nz,.HLReg
|
||
ld a,c
|
||
call ConvHexStr
|
||
ld (ix+0),l
|
||
ld (ix+1),h
|
||
pop hl
|
||
ld a,2 ;¤«¨ ª®¤ ª®¬ ¤ë
|
||
ret
|
||
|
||
;===============================
|
||
.L20 cp 0xED ;¯à¥ä¨ªá #ED
|
||
jr nz,.L10
|
||
ld a,1
|
||
ld (.Byte),a ;¤«¨ ª®¤
|
||
ld de,"DE" ;¯à¥ä¨ªá ¢ áâபã
|
||
ld (.String),de
|
||
pop hl
|
||
inc hl
|
||
push hl
|
||
call Ld_a_hl
|
||
; ld a,(hl) ;á«¥¤ãî騩 ¡ ©â ª®¬ ¤ë
|
||
cp 0x40 ;®â 0 ¤® 0x3F
|
||
jr c,.L21
|
||
ld de,TablED-0x40*2
|
||
cp 0x7F ;®â 0x40 ¤® 0x7E ¨§ â ¡«¨æë
|
||
jr c,.L_12
|
||
cp 0xA0 ;®â 0x7F ¤® 0x9F
|
||
jr c,.L21
|
||
ld de,TablED-0xA0*2+0x40*2-2
|
||
cp 0xBC ;®â 0xBC ¤® 0xFF
|
||
jr c,.L_12
|
||
.L21 ld hl,ED00 ;ª®¬ ¤ "NOP *"
|
||
jr .L_2-3
|
||
|
||
;===============================
|
||
.L10 ld ix,.String
|
||
ld de,Tabl00_3F ;â ¡«¨æ ᬥ饨©
|
||
cp 0x40 ;ª®¬ ¤ë 0x00...0x3F
|
||
jr c,.L_12
|
||
ld de,TablC0_FF ;â ¡«¨æ ᬥ饨©
|
||
ld c,a
|
||
sub 0xC0 ;ª®¬ ¤ë 0xC0...0xFF
|
||
jr nc,.L_12
|
||
|
||
ld a,c
|
||
cp 0x80
|
||
jr nc,.L8
|
||
ld hl,MHALT
|
||
cp 0x76 ;ª®¤ ª®¬ ¤ë HALT
|
||
jr z,.L_2-3
|
||
|
||
ld hl,.String+9
|
||
ld (hl),"L" ;¬¥¬®¨ª LD
|
||
inc hl
|
||
ld (hl),"D"
|
||
inc hl
|
||
ld (hl)," "
|
||
inc hl
|
||
rrca
|
||
rrca
|
||
rrca
|
||
ex de,hl
|
||
call .RegName+1 ;¯¥ç âì ॣ¨áâà
|
||
call nz,.HLReg
|
||
ld a,"," ;à §¤¥«¨â¥«ì
|
||
ld (de),a
|
||
inc de
|
||
call .RegName ;¯¥ç âì ॣ¨áâà
|
||
call nz,.HLReg
|
||
xor a
|
||
jr .L1
|
||
|
||
.L8 and 00111000b ;ADD,ADC,SUB,SBC,AND,XOR,OR,CP
|
||
rrca
|
||
rrca
|
||
ld l,a
|
||
ld h,0
|
||
ld de,TablM
|
||
add hl,de ;ᬥ饨¥ ¢ â ¡«¨æ¥
|
||
ld a,(hl)
|
||
inc hl
|
||
ld h,(hl)
|
||
ld l,a
|
||
ld de,.String+9 ;ª®¯¨à®¢ ¨¥ ¢ áâபã-¡ãä¥à
|
||
ld a,(hl)
|
||
ld (de),a
|
||
inc de
|
||
inc hl
|
||
or a
|
||
jr nz,$-5
|
||
dec de
|
||
call .RegName ;¯¥ç âì ॣ¨áâà
|
||
call nz,.HLReg
|
||
xor a
|
||
jr .L1
|
||
|
||
.L_12 ld l,a ;à áç¥â ¤à¥á ¢ â ¡«¨æ¥
|
||
ld h,0
|
||
add hl,hl ;*2
|
||
add hl,de
|
||
ld a,(hl)
|
||
inc hl
|
||
ld h,(hl)
|
||
ld l,a ; ¤à¥á áâப¨-¬¥¬®¨ª¨
|
||
|
||
ld de,.String+9 ;ª®¯¨à®¢ ¨¥ ¢ áâபã-¡ãä¥à
|
||
.L_2 ld a,(hl)
|
||
cp 0x20
|
||
jr c,.L1
|
||
cp "x" ;¨¤¥ªáë© à¥£¨áâà
|
||
jr nz,$+4
|
||
.L9 ld a,"X"
|
||
ld (de),a
|
||
cp ")"
|
||
jr nz,$+9
|
||
ld (.TablAdr),hl
|
||
ld (.StrAdr),de
|
||
inc hl
|
||
inc de
|
||
jr .L_2
|
||
|
||
.L1 exa
|
||
pop hl ;¯¥ç âì ¡ ©â
|
||
call Ld_a_hl
|
||
; ld a,(hl)
|
||
inc hl
|
||
push hl
|
||
call ConvHexStr
|
||
ld (ix+0),l
|
||
ld (ix+1),h
|
||
exa
|
||
jp z,.LE
|
||
|
||
dec a ;2-å ¡ ©â ï ª®¬ ¤ (1)
|
||
jr nz,.L3
|
||
call .TwoByteCom
|
||
pop hl
|
||
ld a,(.Byte)
|
||
inc a
|
||
inc a ;¤«¨ ª®¤
|
||
ret
|
||
|
||
.L3 dec a ;3-å ¡ ©â ï ª®¬ ¤ (2)
|
||
jr nz,.L4
|
||
call .ThreeByteCom
|
||
pop hl
|
||
ld a,(.Byte)
|
||
add a,3 ;¤«¨ ª®¤
|
||
ret
|
||
|
||
.L4 dec a ;ª®¬ ¤ë ®â®á¨â¥«ì®£® ¯¥à¥å®¤ (3)
|
||
jr nz,.L7
|
||
pop hl
|
||
call Ld_a_hl
|
||
; ld a,(hl) ;2-© ¡ ©â ª®¬ ¤ë
|
||
inc hl
|
||
push hl
|
||
ld c,a
|
||
call ConvHexStr
|
||
ld (ix+2),l
|
||
ld (ix+3),h
|
||
ld a,c
|
||
ld b,0
|
||
pop hl
|
||
push hl ;⥪ã騩 ¤à¥á
|
||
bit 7,a ;§ ª ç¨á«
|
||
jr z,$+10
|
||
neg
|
||
or a ;á¡à®á ä« £ C
|
||
ld c,a
|
||
sbc hl,bc ;®âà¨æ ⥫쮥 ᬥ饨¥
|
||
jr $+3
|
||
add hl,bc ;¯®«®¦¨â¥«ì®¥ ᬥ饨¥
|
||
call NumToStr16
|
||
pop hl
|
||
ld a,2 ;¤«¨ ª®¤
|
||
ret
|
||
|
||
.L7 dec a ;ª®¬ ¤ë à ¡®âë á ¯®àâ ¬¨ (4)
|
||
jr nz,.L5
|
||
inc a
|
||
ld (.Byte),a ;¤«¨ ª®¤
|
||
ld de,(.StrAdr) ; ¤à¥á ¢áâ ¢ª¨
|
||
call .TwoByteCom
|
||
jr .L6
|
||
|
||
.L5 dec a ;3-å ¡ ©âë¥ ª®á¢¥®© ¤à¥á 樨 (5)
|
||
jr nz,.L11
|
||
ld a,(.Byte)
|
||
inc a
|
||
inc a
|
||
ld (.Byte),a ;¤«¨ ª®¤
|
||
ld de,(.StrAdr) ; ¤à¥á ¢áâ ¢ª¨
|
||
call .ThreeByteCom
|
||
jr .L6
|
||
|
||
.L11 dec a ;¨¤¥ªáë¥ à¥£¨áâàë ᮠᬥ饨¥¬ (6)
|
||
jr nz,.LE
|
||
ld a,2
|
||
ld (.Byte),a ;¤«¨ ª®¤
|
||
ld de,(.StrAdr) ; ¤à¥á ¢áâ ¢ª¨
|
||
pop hl
|
||
call Ld_a_hl
|
||
ld b,a
|
||
; ld b,(hl)
|
||
inc hl
|
||
push hl
|
||
ld ix,.String+4
|
||
call .IndexRegSh
|
||
.L6 ld hl,(.TablAdr) ; ¤à¥á ¢ â ¡«¨æ¥ ¬¥¬®¨ª
|
||
ld a,(hl)
|
||
cp 0x20
|
||
jr nc,.L13
|
||
ld a,b
|
||
cp "," ;¬¥¬®¨ª ®ª ç. ","
|
||
jr nz,.LE
|
||
call .TwoByteCom
|
||
pop hl
|
||
ld a,4 ;¤«¨ ª®¤
|
||
ret
|
||
|
||
.L13 ld b,a
|
||
cp "x" ;¨¤¥ªáë© à¥£¨áâà
|
||
jr nz,$+4
|
||
ld a,"X"
|
||
ld (de),a
|
||
inc hl
|
||
inc de
|
||
jr .L6+3
|
||
|
||
.LE pop hl
|
||
ld a,(.Byte) ;¤«¨ ª®¤
|
||
inc a
|
||
ret
|
||
|
||
;======== ¯¥ç âì ¢â®à®£® ª®¤ ¤¢ãå¡ ©â®© ª®¬ ¤ë ========
|
||
.TwoByteCom:
|
||
pop bc ; ¤à¥á ¢®§¢à â
|
||
pop hl
|
||
call Ld_a_hl
|
||
; ld a,(hl) ;2-© ¡ ©â ª®¬ ¤ë
|
||
inc hl
|
||
push hl
|
||
push bc
|
||
ld c,a
|
||
call ConvHexStr
|
||
ld (ix+2),l
|
||
ld (ix+3),h
|
||
ld l,c
|
||
ld h,0
|
||
jp NumToStr8
|
||
|
||
;======== ¯¥ç âì ¢â®à®£® ¨ âà¥â쥣® ª®¤ âà¥å¡ ©â®© ª®¬ ¤ë ========
|
||
.ThreeByteCom:
|
||
pop bc ; ¤à¥á ¢®§¢à â
|
||
pop hl
|
||
call Ld_a_hl
|
||
; ld a,(hl) ;2-© ¡ ©â ª®¬ ¤ë
|
||
inc hl
|
||
exa
|
||
call Ld_a_hl
|
||
; ld a,(hl) ;3-© ¡ ©â ª®¬ ¤ë
|
||
inc hl
|
||
push hl
|
||
push bc
|
||
ld b,a
|
||
call ConvHexStr
|
||
ld (ix+4),l
|
||
ld (ix+5),h
|
||
exa
|
||
ld c,a
|
||
call ConvHexStr
|
||
ld (ix+2),l
|
||
ld (ix+3),h
|
||
ld h,b ;¢ HL - ç¨á«®
|
||
ld l,c
|
||
jp NumToStr16
|
||
|
||
;======== ¯¥ç âì ¬¥¬®¨ª ª®¬ ¤ á ¯à¥ä¨ªá®¬ 0xCB (ᤢ¨£¨, ¡¨â®¢ë¥) ========
|
||
;A - ¡ ©â ª®¬ ¤ë
|
||
;DE - ¤à¥á ¢ áâப¥
|
||
.ComCBBit:
|
||
and 11000000b
|
||
rlca
|
||
rlca
|
||
rlca
|
||
rlca
|
||
ld l,a
|
||
ld de,CB40-4
|
||
add hl,de
|
||
jr .ComCBSh1
|
||
.ComCBSh:
|
||
and 00111000b ;ᬥ饨¥ ¢ â ¡«¨æ¥
|
||
rrca
|
||
rrca
|
||
ld l,a
|
||
ld de,TablCB
|
||
add hl,de
|
||
ld a,(hl)
|
||
inc hl
|
||
ld h,(hl)
|
||
ld l,a
|
||
.ComCBSh1 ld de,.String+9 ;ª®¯¨à®¢ ¨¥ ¢ áâபã-¡ãä¥à
|
||
ld a,(hl)
|
||
ld (de),a
|
||
inc de
|
||
inc hl
|
||
cp " " ;¯®á«¥¤¨© ᨬ¢®« ¬¥¬®¨ª¨
|
||
jr nz,$-6
|
||
ret
|
||
|
||
;======== ¢ëç¨á«¥¨¥ ®¬¥à ¡¨â ¢ ¡¨â®¢ëå ª®¬ ¤ å BIT, SET, RES ========
|
||
;C - ¡ ©â ª®¬ ¤ë
|
||
;DE - ¤à¥á ¢ áâப¥
|
||
.NomBit:
|
||
ld a,c
|
||
and 00111000b ;®¬¥à ¡¨â
|
||
rrca
|
||
rrca
|
||
rrca
|
||
add a,"0"
|
||
ld (de),a
|
||
ld a,","
|
||
inc de
|
||
ld (de),a
|
||
inc de
|
||
ret
|
||
|
||
;======== ¯¥ç âì ¨¬¥¨ ॣ¨áâà ========
|
||
;C - ª®¬ ¤
|
||
;DE - ¤à¥á ¢ áâப¥
|
||
.RegName:
|
||
ld a,c
|
||
and 00000111b ;ॣ¨áâà
|
||
add a,"B"
|
||
cp "F" ;B,C,D,E
|
||
jr c,.RN1
|
||
inc a
|
||
inc a
|
||
cp "H"
|
||
jr z,.RN1
|
||
add a,3
|
||
cp "L"
|
||
jr z,.RN1
|
||
sub 13
|
||
cp "A"
|
||
ret nz ;®â®á¨â¥«ì ï ¤à¥á æ¨ï
|
||
.RN1 ld (de),a
|
||
inc de
|
||
xor a
|
||
ret
|
||
|
||
;======== ¯¥ç âì (HL) ========
|
||
;DE - ¤à¥á ¢ áâப¥
|
||
.HLReg:
|
||
ex de,hl
|
||
ld (hl),"("
|
||
inc hl
|
||
ld (hl),"H"
|
||
inc hl
|
||
ld (hl),"L"
|
||
inc hl
|
||
ld (hl),")"
|
||
inc hl
|
||
ex de,hl
|
||
ret
|
||
|
||
;======== ¯¥ç âì ¨¤¥ªá®© ॣ¨áâ஢®© ¯ àë ᮠᬥ饨¥¬ ========
|
||
;B - ᬥ饨¥
|
||
;DE - ¤à¥á ¢ áâப¥
|
||
.IndexRegSh:
|
||
ld a,b
|
||
call ConvHexStr
|
||
ld (ix+0),l
|
||
ld (ix+1),h
|
||
ex de,hl
|
||
ld (hl),"("
|
||
inc hl
|
||
ld (hl),"I"
|
||
inc hl
|
||
.IRS1 ld (hl),"X"
|
||
inc hl
|
||
ld a,"+" ;¯®«®¦¨â¥«ì®¥ ᬥ饨¥
|
||
ld (hl),a
|
||
ld a,b ;ᬥ饨¥
|
||
bit 7,b
|
||
jr z,$+8
|
||
ld a,"-" ;®âà¨æ ⥫쮥 ᬥ饨¥
|
||
ld (hl),a
|
||
ld a,b ;ᬥ饨¥
|
||
neg
|
||
inc hl
|
||
ex de,hl
|
||
ld l,a
|
||
ld h,0
|
||
call NumToStr8
|
||
ld a,")"
|
||
ld (de),a
|
||
ret
|
||
|
||
|
||
.String db "00112233 01234567890123456789012"
|
||
.Byte db 0
|
||
.TablAdr dw 0
|
||
.StrAdr dw 0
|
||
|