initial commit

This commit is contained in:
Dmitry 2020-12-26 23:59:23 +03:00
commit 4c6b0a25fb
38 changed files with 14803 additions and 0 deletions

36
CLOCK.ASM Normal file
View File

@ -0,0 +1,36 @@
;[]=========================================================================[]
;[] ‚뢮¤ ç á®¢ []
;[] v0.03 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 01.02.2006 []
;[]=========================================================================[]
Clock:
ld a,(ClockOn) ;ä« £ ¢ë¢®¤  ç á®¢
inc a
ret nz
ld c,Dss.SysTime
rst DssRst ;¯à®ç¨â âì ¤ ­­ë¥ ® ¢à¥¬¥­¨
ld de,.String
push de
push bc
push hl
ld l,h ;ç áë
ld h,0
call ConvDecStr8_1
inc de
pop hl ;¬¨­ãâë
ld h,0
call ConvDecStr8_1
inc de
pop hl
ld l,h ;ᥪ㭤ë
ld h,0
call ConvDecStr8_1
ld de,71
ld c,Bios.Lp_Set_Place ;ãáâ ­®¢ª  ¯®§¨æ¨¨ ¯¥ç â¨
rst BiosRst : di
pop hl
ld bc,8*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨­  áâப¨
rst BiosRst : di
ret
.String db "00:00:00"

22
CMDLINE.ASM Normal file
View File

@ -0,0 +1,22 @@
;[]=========================================================================[]
;[] Ž¡à ¡®âª  ª®¬ ­¤­®© áâப¨ ¬®­¨â®à -®â« ¤ç¨ª  DemoN []
;[] v0.10 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 08.06.2006 []
;[] ‚室: ­  á⥪¥  ¤à¥á ­ ç «  ª®¬ ­¤­®© áâப¨ ¢ ¯ ¬ï⨠[]
;[] ‚ë室: CF=1 - ­¥â ¯ à ¬¥â஢, CF=0 - ¥áâì ¯ à ¬¥âàë []
;[]=========================================================================[]
CmdLine:
pop hl ;­ ç «®
ld a,(hl) ;¤«¨­  ª®¬ ­¤­®© áâப¨
or a
scf
jr z,.L1 ;­¥â ¯ à ¬¥â஢
ld de,FDebug ;¡ãä¥à
inc hl
ld c,Dss.GSwitch ;¢ë¤¥«¥­¨¥ ¯ à ¬¥âà 
rst DssRst
or a ;CF=0
.L1
;ret

116
DATA.ASM Normal file
View File

@ -0,0 +1,116 @@
;[]=========================================================================[]
;[] „ ­­ë¥ ¬®­¨â®à -®â« ¤ç¨ª  DemoN []
;[] v0.01 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 10.10.2004 []
;[] v0.02 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 11.03.2005 []
;[] v0.03 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 05.02.2006 []
;[] v0.10 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 10.09.2006 []
;[]=========================================================================[]
SymbolNoPrint db #b0;"." ;ᨬ¢®«ë < ¯à®¡¥« 
ClockOn db On ;¯à¨§­ ª ¢ë¢®¤  ç á®¢
DemonScreen db 0 ;­®¬¥à íªà ­  ®â« ¤ç¨ª 
OSScreen db 0 ;<3B>®¬¥à íªà ­  Ž‘¨
OSGrafMode db 0 ;ƒà ä¨ç¥áª¨© ०¨¬ ®á¨
BufPage db 255 ;<3B>®¬¥à áâà ­¨æë á ®ª®­­ë¬ ¡ãä¥à®¬
Hello db 13,10
; db "‚¥àá¨ï ®âª®¬¯¨«¨à®¢ ­  ᯥ樠«ì­® ¤«ï ‚ á¨«¨ï ˆ¢ ­®¢ !",13,10,10
db "DemoN v"
incbin "VERSION\major.bin"
db "."
incbin "VERSION\minor.bin"
db " build "
incbin "VERSION\build.bin"
db " (alpha) <Created by Alpha Studio>",13,10
db "Last edition "
incbin "VERSION\date.bin"
db " (BLR "
incbin "VERSION\time.bin"
db ")",13,10
db "FidoNet: Igor Zhadinets 2:454/5.18; "
db "e-mail: igor_ast@tut.by",13,10,10,0
Str:
.Load db "Load file ...",0x0D,0x0A,0
.DA db 0x0d,0x0A,0
PauseFlash equ 16 ;ç áâ®â  ¬¨£ ­¨ï ¯à®£à.ªãàá®à 
Color:
.Screen db 00000111b ;®á­®¢­®© 梥â íªà ­ 
.Border db 00000011b ;梥â à ¬ª¨
.TextStrReg db 00000010b ;梥â ॣ¨áâ஢ëå ¯ à
.TextStrWin db 00000101b ;梥⠭®¬¥à®¢ ®ª®­
._SP db 00000110b ;¯®¤á¢¥âª  ¢¥à設ë á⥪ 
._PC db 01110001b ;¯®¤á¢¥âª  ¢ë¯®«­ï¥¬®© áâà.
.RezArea db 00001110b ;¯®¤á¢¥âª  १¨¤¥­â 
.TextStrLogo db 00000100b ;梥⠫®£® ¯à®£à ¬¬ë
.Cursor db 00011101b ;梥⠪ãàá®à -㪠§ â¥«ï
.InLine db 00111111b ;梥â áâப¨ ¢¢®¤ 
.InLineEd db 00110001b ;梥â áâப¨ ¢¢®¤  ¯à¨ ।.
StackDebug ds 2 ; ¤à¥á á⥪  ®â« ¤ç¨ª 
BankDebug ds 1 ;­®¬¥à ¡ ­ª¨ ®â« ¤ç¨ª 
BankOS ds 1 ;­®¬¥à ¡ ­ª¨ á OS
RezAdr dw 0x7000 ; ¤à¥á ¯®á ¤ª¨ १¨¤¥­â 
StackDown ds 1 ;£«ã¡¨­  á⥪ 
StackDump dw 0x800A ;­ ç «® ¤ ¬¯  á⥪ 
Reg: ;§­ ç¥­¨¥ ॣ¨áâ஢ëå ¯ à
._IX dw 0
._IY dw 0
._HL dw 0
._DE dw 0
._BC dw 0
._AF dw 0
._HL_ dw 0
._DE_ dw 0
._BC_ dw 0
._AF_ dw 0
._IR dw 0
._SP dw 0x7FFE
._PC dw 0
WinPage: db 0xFF,0xFF,0xFF,0xFF ; ¤à¥á  ¯®¤ª«î祭­ëå áâà ­¨æ
Dump1 dw 0x4000 ; ¤à¥á ­ ç «  ¤¨­ ¬¨ç¥áª®£® ¤ ¬¯ 
Dump: ; ¤à¥á  ­ ç «  áâப ¤ ¬¯ 
dw InputLine.Buffer;0x4100
dw InputLine.Buffer+16;0x8100
dw PutCode.Buffer;0xC100
dw 0x5280
dw 0x9280
dw 0xD280
dw 0x6000
dw 0xA000
ListAdr: ds 40 ;¡ãä¥à åà ­¥­¨ï  ¤à¥á®¢ «¨á⨭£ 
ListFormat: db -1 ;ä®à¬ â­ë© ¢ë¢®¤ «¨á⨭£ 
;-1 - ¤ ; 0 - ­¥â
DecHex db 0 ;0-HEX FF-DEC á¨á⥬ 
;======== Š®­áâ â­âë ======
On equ 0xFF
Off equ 0
Ins equ 0
Ovr equ 0xFF
SysSymb equ 0x1B ;á¨á⥬­ë© §­ ª®£¥­¥à â®à
;¯¥ç âì ç¥à¥§ ¯/¯ ¡¨®á 
ifdef D_PRINTCH_BIOS
Demon.Bios_Win db 0 ;¨¤¥­â¨ä¨ª â®à ®ª­  ¡¨®á 
MainWin db 80,32,0,0,00110000b,0,0,0
ds 26,0
endif
;--------------------------------------
;„¨ «®£®¢®¥ ®ª­® ¤«ï ¯¯ ¢ë室 
;--------------------------------------
ExitDlg db 6,22,13,32,6,#40
db "Confirmation",0
db " You really want to quit?"
db 0x16,32,17,"OK Cancel",0
db 2
db 29,17,8,2 ;Ok
dw 0,0
db 39,17,8,2 ;Cancel
dw 0,Keyb.NoExit

389
DEMON.ASM Normal file
View File

@ -0,0 +1,389 @@
;[]=========================================================================[]
;[] Œ®­¨â®à-®â« ¤ç¨ª DemoN []
;[] v0.01 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 10.10.2004 []
;[] v0.02 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 07.02.2005 []
;[] v0.03 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 11.03.2006 []
;[] v0.10 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 27.08.2006 []
;[]=========================================================================[]
DEVICE ZXSPECTRUM128
; define DEBUG 1 ;®âªàë⨥ ¤¥¡ ££¥à­ëå § £«ã襪
; define D_PRINTCH_BIOS 1
org #8100-512
STARTPRG
DB "EXE" ;EXE ID
DB #00 ;EXE VERSION
DW #0200 ;CODE OFFSET LOW
DW #0000 ;CODE OFFSET HIGH
DW #0000 ;END-BEG ;PRIMARY LOADER
DW #0000 ;
DW #0000 ;RESERVED
DW #0000 ;
DW OrgAdr ;LOAD ADDRESS
DW OrgAdr ;START ADDRESS
DW #C001 ;STACK ADDRESS
OrgAdr equ 0x8100
org OrgAdr
; stack 0xC001
push ix ; ¤à¥á ª®¬ ­¤­®© áâப¨
in a,(EmmWin.P2) ;¡ ­ª  á ®â« ¤ç¨ª®¬
ld (BankDebug),a
in a,(EmmWin.P0) ;¡ ­ª  á OS
ld (BankOS),a
; ld (WinPage),a
; ld (Reg._SP),sp ; ¤à¥á á⥪ 
call SaveAllRegs ;á®åà ­¥­¨¥ ॣ¨áâ஢ëå ¯ à
; ld a,(BankDebug)
ld a,0xFF ;áªà뢠¥¬ ¡ ­ªã á ®â« ¤ç¨ª®¬
ld (WinPage+2),a
include "cmdline.asm"
call nc,LoadFile
jp Start
HorizLine db 8 ;ª®«¨ç¥á⢮ «¨­¨©
;1-¤«¨­  2-á⮫¡¥æ 3-áâப  4-ᨬ¢®«
db 0x4E,0x01,0x00,0xCD, 0x17,0x01,0x03,0xC4
db 0x17,0x01,0x09,0xC4, 0x17,0x01,0x0F,0xC4
db 0x17,0x01,0x11,0xCD, 0x4E,0x01,0x15,0xCD
db 0x4E,0x01,0x1E,0xCD, 0x17,0x01,0x13,0xCD
VerticalLine db 5 ;ª®«¨ç¥á⢮ «¨­¨©
;1-¢ëá®â  2-á⮫¡¥æ 3-áâப  4-ᨬ¢®«
db 0x1D,0x00,0x01,0xBA, 0x10,0x09,0x01,0xB3
db 0x08,0x0C,0x16,0xBA, 0x14,0x18,0x01,0xBA
db 0x1D,0x4F,0x01,0xBA
Corner db 41 ;㣫ë à ¬®ª
;1-á⮫¡¥æ 2-áâப  3-ᨬ¢®«
db 0x00,0x00,0xC9, 0x00,0x03,0xC7, 0x00,0x09,0xC7
db 0x00,0x0F,0xC7, 0x00,0x11,0xCC, 0x00,0x15,0xCC
db 0x00,0x1E,0xC8, 0x06,0x11,0xD1, 0x06,0x13,0xCF
db 0x09,0x00,0xD1, 0x09,0x03,0xC5, 0x09,0x09,0xC5
db 0x09,0x0F,0xC5, 0x0C,0x11,0xD1, 0x0C,0x15,0xCB
db 0x0C,0x1E,0xCA, 0x12,0x0F,0xC2, 0x12,0x11,0xD8
db 0x12,0x13,0xCF, 0x18,0x00,0xCB, 0x18,0x03,0xB6
db 0x18,0x09,0xB6, 0x18,0x0F,0xB6, 0x18,0x15,0xCA
db 0x00,0x13,0xCC, 0x0C,0x13,0xCF, 0x4F,0x00,0xBB
db 0x18,0x13,0xB9, 0x4F,0x15,0xB9, 0x4F,0x1E,0xBC
db 0x18,0x11,0xB9, 0x06,0x12,0xB3, 0x12,0x10,0xB3
db 0x12,0x12,0xB3, 0x09,0x13,0xD1, 0x09,0x14,0xB3
db 0x09,0x15,0xCF, 0x0C,0x12,0xB3, 0x0E,0x13,0xCB
db 0x0E,0x14,0xBA, 0x0E,0x15,0xCA
TextStrReg db 0x16,0x01,0x01,"IX", 0x16,0x01,0x02,"IY"
db 0x16,0x01,0x04,"HL", 0x16,0x01,0x05,"DE"
db 0x16,0x01,0x06,"BC", 0x16,0x01,0x07,"AF"
db 0x16,0x01,0x0A,"HL'", 0x16,0x01,0x0B,"DE'"
db 0x16,0x01,0x0C,"BC'", 0x16,0x01,0x0D,"AF'"
db 0x16,0x01,0x10,"PC", 0x16, 0x0A,0x10,"IR"
db 0x16,0x01,0x14,"SP",0
TextStrLogo db 0x016,0x01,0x1F,0xC4,0xCD,0xCD
db " DemoN v"
incbin "VERSION\major.bin"
db "."
incbin "VERSION\minor.bin"
db " build "
incbin "VERSION\build.bin"
db " (alpha)-"
incbin "VERSION\date.bin"
db " Igor by AlphA Studio, Hard/WCG"
db 0x20,0xCD,0xCD,0xC4,0x00
TextStrWin db 0x16,0x02,0x11," 0 ",0x16,0x08,0x11," 1 "
db 0x16,0x0E,0x11," 2 ",0x16,0x14,0x11," 3 ",0
TextStrRez db 0x16,0x0F,0x14,"REZ",0
;<3B>à®æ¥¤ãà  ¯à®à¨á®¢ª¨ «¨­¨©
;HL -  ¤à¥á ­ ç «  â ¡«¨æë
DrawLine ld c,(hl) ;ª®«¨ç¥á⢮ «¨­¨©
inc hl
ld b,(hl) ;¤«¨­  «¨­¨¨
inc hl
ld e,(hl) ;á⮫¡¥æ
inc hl
ld d,(hl) ;áâப 
inc hl
ld a,(hl) ;ᨬ¢®«
push hl
.L1 push bc
push af
ld bc,Dss.WrChar ;梥⠢ ॣ.B
rst DssRst
inc d ;­ à é¨¢ ­¨¥ ª®®à¤¨­ âë
pop af
pop bc
djnz .L1
pop hl
dec c
jr nz,DrawLine+1
ret
;<3B> ç «® ¯à®£à ¬¬ë
Start:
ld hl,Hello ;á®®¡é¥­¨¥ ¯à®£à ¬¬ë
ld c,Dss.PChars ;¢ë¢¥á⨠áâபã
rst DssRst
ld c,Dss.GetVMod ;’¥ªã騩 £à ä ०¨¬
rst DssRst
jp c,Exit
ld (OSGrafMode),a
ld a,b
ld (OSScreen),a ;¨ ⥪ãé ï áâà ­¨æ  íªà ­ 
push bc
ld bc,#0100+Dss.GetMem ;१¥à¢¨à㥬 1 áâà ­¨æã ¤«ï ®ª®­­®£® ¡ãä¥à 
rst DssRst
pop de ; D - ­®¬¥à áâà ­¨æë íªà ­  - OSScreen
jp c,Exit ;Žè¨¡ª  ¢ë¤¥«¥­¨ï ¡«®ª  ¯ ¬ïâ¨
ld (BufPage),a ;‘®åà ­¨¬ áâà ­¨æã ¢ ¯¥à¥¬¥­­®©
ld b,a
ld a,(DemonScreen)
cp d ;¥á«¨ íªà ­ë Ž‘ ¨ „¥¬®­  ­¥ ᮢ¯ ¤ îâ
jr nz,StartNext ;â® ¨ ­¥ á®å࠭塞 íªà ­ Ž‘¨
ld de,0 ;‘®å࠭塞 íªà ­ ¢ ¤®¯.áâà ­¨æ¥
ld hl,#2050
ld ix,#c000
ld c,Dss.WinCopy
rst DssRst
StartNext ld a,(DemonScreen) ;íªà ­ ®â« ¤ç¨ª 
ld b,a
ld a,3 ;ãáâ ­®¢¨âì ०¨¬ 80å32
ld c,Dss.SetVMod ;Dss.SelPage
; ld bc,0x0054
rst DssRst
ifdef D_PRINTCH_BIOS
ld ix,MainWin ;Žâªàë⨥ ®ª­  ç/§ ¡¨®á
ld e,00010001b
rst BiosRst
ld (Demon.Bios_Win),a
; jr nc,.lp1
; ld c,Dss.EchoKey ;¤¥¡ã££¥à­ ï § £«ã誠
; rst DssRst
endif
.lp1
; ld a,(Color._SP) ;¯®¤á¢¥âª  ¢¥à設ë á⥪ 
; ld b,a
; ld de,0x1C01
; ld hl,0x010B
; ld a," "
; ld c,Dss.Clear
; rst DssRst
call ClearScreen
call DrawDemonScreen
; ld c,Dss.EchoKey ;¤¥¡ã££¥à­ ï § £«ã誠
; rst DssRst
jp Start1
;Ž¡­®¢«¥­¨¥ íªà ­  ¤¥¬®­ 
RefreshScreen call CursorRes
call ClearScreen
call DrawDemonScreen
call Refresh
call Cursor ;¢ª« ªãàá®à
jp CursorSet
ClearScreen ld a,(Color.Screen)
ld b,a ;®ç¨á⪠ íªà ­ 
ld de,0
ld hl,0x2050
ld c,Bios.Lp_Cls_Win
rst BiosRst
ret
DrawDemonScreen
ld a,(Color.Border) ;ãáâ ­®¢ª  æ¢¥â  à ¬ª¨
ld (DrawLine.L1+4),a
ld (DrawCorner+10),a
ld a,0x14 ;ª®¤ ¬­¥¬®­¨ª¨ INC D
ld (DrawLine.L1+6),a
ld hl,VerticalLine ;¢¥à⨪ «ì­ë¥ «¨­¨¨
call DrawLine
ld hl,HorizLine ;£®à¨§®­â «ì­ë¥ «¨­¨¨
ld a,0x1C ;ª®¤ ¬­¥¬®­¨ª¨ INC E
ld (DrawLine.L1+6),a
call DrawLine
ld hl,Corner
ld b,(hl) ;ª®«¨ç¥á⢮ 㣫®¢
DrawCorner push bc
inc hl
ld e,(hl) ;á⮫¡¥æ
inc hl
ld d,(hl) ;áâப 
inc hl
ld a,(hl) ;ᨬ¢®«
push hl
ld bc,Dss.WrChar ;梥⠢ ॣ.B
rst DssRst
pop hl
pop bc
djnz DrawCorner
ld hl,TextStrReg
ld a,(Color.TextStrReg) ;梥â ॣ¨áâ஢ëå ¯ à
ld (PrnStrColor.L1+5),a
call PrnStrColor
ld hl,TextStrWin
ld a,(Color.TextStrWin) ;梥⠭®¬¥à®¢ ®ª®­
ld (PrnStrColor.L1+5),a
call PrnStrColor
ld hl,TextStrLogo
ld a,(Color.TextStrLogo) ;梥⠫®£® ¯à®£à ¬¬ë
ld (PrnStrColor.L1+5),a
call PrnStrColor
ld hl,TextStrRez
ld a,(Color.RezArea) ;梥â १¨¤¥­â 
ld (PrnStrColor.L1+5),a
call PrnStrColor
ret
ds OrgAdr+0x700-$
Start1:
call PreparChar ;¯®¤£®â®¢ª  ¯à®£à ¬¬­®£® ªãàá®à  ¢¢®¤ 
; ld hl,(Reg._PC)
; ld hl,0
; ld (ListAdr),hl
call Refresh
call Keyb
Exit:
ld hl,(Rst38.Vect+1) ;¢®ááâ ­®¢«¥­¨¥ ¢¥ªâ®à  DSS
ld (0039h),hl
ld a,(OSScreen) ;¨ ⥪ãé ï áâà ­¨æ  íªà ­ 
ld b,a
push bc
ld a,(OSGrafMode)
ld c,Dss.SetVMod
; ld bc,0x0100+Dss.SelPage ;¢®ááâ ­®¢«¥­¨¥ íªà ­  DSS
rst DssRst
pop bc
ld a,(DemonScreen)
cp b
jr nz,ExitNext
ld de,0 ;‚®ááâ ­ ¢«¨¢ ¥¬ íªà ­ ¨§ ¤®¯.áâà ­¨æë
ld hl,#2050
ld ix,#c000
ld c,Dss.WinRest
ld a,(BufPage)
push af
ld b,a
rst DssRst
pop af
ld c,Dss.FreeMem ;Žâ¤ ¥¬ áâà ­¨æã ¡ãä¥à  ®¡à â­® Ž‘¨
rst DssRst
ExitNext
ld bc,Dss.Exit ;­®à¬ «ì­®¥ § ¢¥à襭¨¥
rst DssRst
Return ret
Refresh:
di
ld de,0x0104 ;¢ë¢®¤ §­ ç¥­¨© ॣ¨áâ஢
ld hl,(Reg._IX)
call PrintStrReg
ld de,0x0204
ld hl,(Reg._IY)
call PrintStrReg
ld de,0x0404
ld hl,(Reg._HL)
call PrintStrReg
ld de,0x0504
ld hl,(Reg._DE)
call PrintStrReg
ld de,0x0604
ld hl,(Reg._BC)
call PrintStrReg
ld de,0x0A04
ld hl,(Reg._HL_)
call PrintStrReg
ld de,0x0B04
ld hl,(Reg._DE_)
call PrintStrReg
ld de,0x0C04
ld hl,(Reg._BC_)
call PrintStrReg
ld de,0x0704
ld hl,(Reg._AF)
call PrintStrAF
ld de,0x0D04
ld hl,(Reg._AF_)
call PrintStrAF
ld de,0x1004
ld hl,(Reg._PC)
call PrintReg
ld de,0x100D
ld hl,(Reg._IR)
call PrintReg
ld de,0x1404
ld hl,(Reg._SP)
call PrintReg
call PrintSPDn
ld de,0x1413
ld hl,(RezAdr)
call PrintReg
call PrintStrWin ;¢ë¢®¤ ­®¬¥à®¢ ¡ ­®ª ¢ ®ª­ å
call PrintStrSP ;¢ë¢®¤ ¤ ¬¯  á⥪ 
call PrintDump
ei
jp DisAsm
DemonHelp call CursorRes
ld ix,HelpWnd
jp DialogWindow
; ld hl,HelpWndDlg
; jp WinDialog
HelpWnd db 6,16,11,42,7,#27
db "DemoN Help Page",0
db " DemoN v"
incbin "VERSION\major.bin"
db "."
incbin "VERSION\minor.bin"
db " build "
incbin "VERSION\build.bin"
db " (alpha)-"
incbin "VERSION\date.bin"
db 0x0D
db " Igor by AlphA Studio, Hard/WCG",0x0D,0x0D
db " OK",0
HelpWndDlg db 1 ;Ž¯¨á â¥«ì ¤¨ «®£®¢®£® ®ª­ 
db 16+19,16,4,2
dw 0,0
include "EQU\dss_equ.asm";"D:\WORKAST\EQU\dss_equ"
include "EQU\bios_equ.asm";"D:\WORKAST\EQU\bios_equ"
include "EQU\port.asm";"D:\WORKAST\EQU\port"
include "disasm.asm";"D:\WORKAST\DEMON\disasm"
include "util.asm";"D:\WORKAST\DEMON\util"
include "file.asm";"D:\WORKAST\DEMON\file"
include "error.asm";"D:\WORKAST\DEMON\error"
include "clock.asm";"D:\WORKAST\DEMON\clock"
include "keyb.asm";"D:\WORKAST\DEMON\keyb"
include "kreg.asm";"D:\WORKAST\DEMON\kreg"
include "kstack.asm";"D:\WORKAST\DEMON\kstack"
include "kdump.asm";"D:\WORKAST\DEMON\kdump"
include "rez.asm";"D:\WORKAST\DEMON\rez"
include "step.asm";"D:\WORKAST\DEMON\step"
include "savescr.asm";"D:\WORKAST\DEMON\savescr"
include "data.asm";"D:\WORKAST\DEMON\data"
include "tabl.asm";"D:\WORKAST\DEMON\tabl"
include "loadbin.asm"
include "windows.asm"
EndOfDaemon
savebin "demon.exe",STARTPRG,EndOfDaemon-STARTPRG

377
DEMON.TXT Normal file
View File

@ -0,0 +1,377 @@
<EFBFBD>®ä¨ªá¥­­ ï (­  ®è¨¡ª¨) ¤®ª .
<EFBFBD>¥¬­®£® ¨§¬¥­¥­® ®¯¨á ­¨¥ ¢ "2.4. „ ¬¯ ¯ ¬ïâ¨".
ƒ«îª¨.
1. <20>¥ à ¡®â ¥â Ctrl+S.
2. <20>¥à¥©¤¨ ¢ ¯®«¥ ॣ¨áâà  "PC" ¨ ¢¢¥¤¨  ¤à¥á #C000. <20>®á«¥ ¯¥à¥©¤¨ ¢  á¬-
«¨á⨭£ (­  íâ®â  ¤à¥á, ï ¯¥à¥å®¤¨« ¯® Ctrl+~) ¨ ¨¤¨ ¯®-áâà®ç­® ¢¢¥àå
(â.¥. ª ¬« ¤è¨¬  ¤à¥á ¬). “¢¨¤¨èì £«îª¨ á ¢ë¢®¤®¬ ¢  á¬-«¨á⨭£¥. <20>¥à¥©â¨
¬®¦¥èì ­  ¤à㣮©  ¤à¥á, £«îª ­¥ ¯à®¯ ¤ ¥â. <20>ਠáâà ­¨ç­®¬ «¨áâ ­¨¨ ¢¢¥àå,
íâ®â £«îª ¢à®¤¥ ª ª ­¥ § ¬¥â¥­.
Šáâ , ⮫쪮 é á ¯à®¢¥à¨« ­  íâ®â ¦¥ £«îª. ‡ ¯ãáª î „¥¬®­ , ¯¥à¥å®¦ã ¯®
Ctrl+~ ­  #C000 ¨ ¨¤ã ¯®-áâà®ç­® ¢¢¥àå - £«îª. ’® ¦¥ á ¬®¥ á  ¤à¥á  #4000.
.¥. ï å®çã ᪠§ âì, çâ® ¯à ¢ª  ॣ¨áâà  PC âãâ ­¨ ¯à¨ 祬.
<EFBFBD>®¦¥« ­¨¥. Š ª ¡ë ¡ëáâà® ¯¥à¥å®¤¨âì ¢ «î¡®¥ ®ª­® „¨¬ë ?. € â® ªà㣮¢®¥ ¯®
’ ¡ã ã⮬«ï¥â - ¯®ª  ¤®©¤¥èì ¤® ­ã¦­®£® ®ª­ ... Œ®¦¥â ª ¦¤®¬ã ®ª­ã ¯à¨á¢®¨âì
á¢®î ­®â-ª« ¢¨èã, ⨯  Alt+1,2,... –¨äàã ª ¦¤®¬ã ®ª­ã ¬®¦­® ¯®áâ ¢¨âì ­  ¥£®
£à ­¨æã, ­® ⮫쪮 ¤à㣨¬ 梥⮬, ­ ¯à¨¬¥à ᨭ¨¬, çâ®¡ë ¢ £« § å ­¥ â ª
¬ ï稫®. ’¨¯  (¯®à浪®¢ë¥ ­®¬¥à  ⮫쪮 ¤«ï í⮣® ¯à¨¬¥à )
1ÍÍÍÍÍÍÍÍÑÍ
ºIX #8080³0
ºIY #1637³0
2ÄÄÄÄÄÄÄÄÅÄ
ºHL #8100³0
ºDE #2C40³C
ºBC #C089³D
ºAF #FB82³%
ºSz.h.pNc³
3ÄÄÄÄÄÄÄÄÅÄ
ºHL'#0000³C
ºDE'#2E07³3
ºBC'#0200³D
ºAF'#FB44³%
ºsZ.h.Pnc³
4ÄÄÄÄÄÄÄÄÅÄ
ºPC #0000³I
ÌÍ 0 ÍÑÍ 1
º #FB ³ #FF
5ÍÍÍÍÍÏÍÍÑÍ
ºSP #7FFE³
6ÍÍÍÍÍÍÍÍÏÍ
º#800A #FF0
º#8008 #FF0
º#8006 #100
º#8004 #103
º#8002 #7E6
º#8000 #007
º#7FFE #2CE
º#7FFC #434
ÈÍÍÍÍÍÍÍÍÍÍ
‹®¦ª  ¤¥£âï ;). “ â¥¡ï ­¥¬­®£® ªà¨¢®¢ â ï ­ ¢¨£ æ¨ï ¢ hex-®ª­¥ ¬¥¦¤ã hex/ascii
¤ ¬¯ ¬¨. …᫨ ¯¥à¥å®¤¨èì ¨§ ®¤­®£® ¤ ¬¯  ­  ¤à㣮©, â® ¯¥à¥å®¤¨ ­  â®â ¦¥
á ¬ë©  ¤à¥á - íâ® «®£¨ç¥áª¨ ¯à ¢¨«ì­®. Š¨¤ î ⥡¥ hex-। ªâ®à QVIEW, ï ¨¬
­  PC-å¥ â®«ìª® ¨ ¯®«ì§ãîáì.
<EFBFBD>¥à¥¤¥«ë¢ âì ¬­®£® ¯®âॡã¥âáï, ¥á«¨ ¢ hex-®ª­¥ áࠧ㠯ਪàãâ¨âì ०¨¬ । ª-
â¨à®¢ ­¨ï ?.
<EFBFBD>® íâ® â ª, ¬¥çâë ­  ¡ã¤ã饥.
-----------------------------------------------------------------------------
DemoN - ¬®­¨â®à-®â« ¤ç¨ª ¤«ï DSS Estex
1. <20> §­ ç¥­¨¥ ¯à®£à ¬¬ë.
Demon ¯à¥¤­ §­ ç¥­ ¤«ï ®â« ¤ª¨ ¯à®£à ¬, ­ ¯¨á ­­ëå ­   áᥬ¡«¥à¥ Z80. Ž­
¯®§¢®«ï¥â âà áá¨à®¢ âì ª®¤ ¯à®£à ¬¬ë á ®âá«¥¦¨¢ ­¨¥¬ á®áâ®ï­¨ï ¢á¥å ॣ¨áâ஢
¯à®æ¥áá®à  ¨ ï祥ª ¯ ¬ï⨠®â« ¦¨¢ ¥¬®© ¯à®£à ¬¬ë.
2. ‚­¥è­¨© ¢¨¤ ¯à®£à ¬¬ë.
Demon ¨á¯®«ì§ã¥â ⥪áâ®¢ë© à¥¦¨¬ íªà ­ .
’¥ªã饥 ¢à¥¬ï ÄÄÄÄÄÄÄ¿
ÚÄÄÄÁÄÄ¿
ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ18:41:03»
ºIX #8080³0EFC F8FC .üøüº #06CC 34 INC (HL) º
ºIY #1637³0045 4D4F .EMOº #06CD CBB6 RES 6,(HL) º
ÇÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄĶ #06CF 6F LD L,A º
ºHL #8100³0081 FFFE .<2E>.þº #06D0 2606 LD H,#06 º
ºDE #2C40³C34A 2D21 ÃJ-!º #06D2 73 LD (HL),E º
ºBC #C089³D6C6 06C6 ÖÆ.ƺ #06D3 2C INC L º
ºAF #FB82³%11111011 "û" º #06D4 72 LD (HL),D º
ºSz.h.pNc³ º #06D5 2C INC L º
ÇÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄĶ #06D6 70 LD (HL),B º
ºHL'#0000³C34A 2DFF ÃJ-.º #06D7 2C INC L º
ºDE'#2E07³3045 5845 0EXEº #06D8 71 LD (HL),C º
ºBC'#0200³DCE6 0106 Üæ..º #06D9 C9 RET º
ºAF'#FB44³%11111011 "û" º #06DA 214106 LD HL,#0641 º
ºsZ.h.Pnc³ º #06DD 3A4006 LD A,(#0640) º
ÇÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÂÄÄÄÄĶ #06E0 BE CP (HL) º
ºPC #0000³IR #8059³ º #06E1 C8 RET Z º
ÌÍ 0 ÍÑÍ 1 ÍÑÍ 2 ÍØÍ 3 ͹ #06E2 7E LD A,(HL) º
º #FB ³ #FF ³ #E8 ³ #FF º #06E3 34 INC (HL) º
ÌÍÍÍÍÍÏÍÍÑÍÍÏÍËÍÍÍÏÍÍÍÍ͹ #06E4 34 INC (HL) º
ºSP #7FFE³ 0ºREZ #7000º #06E5 34 INC (HL) º
ÌÍÍÍÍÍÍÍÍÏÍÍËÍÊÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º#800A #FF0Fº #4000 007E 7E6C 1038 1000 FF00 FF0F 3C3F 7F18 .~~l.8......<?.. º
º#8008 #FF00º #4010 8002 1866 7F3E 0018 1818 0000 0000 0000 €..f.>.......... º
º#8006 #1000º #4020 0030 6C6C 3000 3860 1860 0000 0000 0006 .0ll0.8`.`...... º
º#8004 #1038º #4030 7C30 7878 1CFC 38FC 7878 0000 1800 6078 |0xx.ü8üxx....`x º
º#8002 #7E6Cº #4040 7C30 FC3C F8FE FE3C CC78 1EE6 F0C6 C638 |0ü<øþþ<Ìx.æðÆÆ8 º
º#8000 #007Eº #4050 FC78 FC78 FCCC CCC6 C6CC FE78 C078 1000 üxüxüÌÌÆÆÌþxÀx.. º
º#7FFE #2CE4º #4060 3000 E000 1C00 3800 E030 0CE0 7000 0000 0.à...8.à0.àp... º
º#7FFC #4340º #4070 0000 0000 1000 0000 0000 001C 18E0 7600 .............àv. º
ÈÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
ÄÍÍ DemoN v0.10 build 65 (alpha) Igor by AlphA Studio, 2006 ÍÍÄ
‚¥áì íªà ­ à §¡¨â ­  á«¥¤ãî騥 ®¡« áâ¨:
- ®ª­® ॣ¨áâ஢;
- ¤ ¬¯ á⥪ ;
- ®ª­® «¨á⨭£ ;
- ¤ ¬¯ ¯ ¬ïâ¨.
2.1. Žª­® ॣ¨áâ஢.
Žª­® ॣ¨áâ஢ à §¡¨â® ­  ¡®«¥¥ ¬¥«ª¨¥ ®ª­  (ãá«®¢­ë¥ ®¡« áâ¨):
- ®¡« áâì ¨­¤¥ªá­ëå ॣ¨áâ஢ëå ¯ à;
- ®¡« áâì ®á­®¢­®£® ­ ¡®à  ॣ¨áâ஢;
- ®¡« áâì  «ìâ¥à­ â¨¢­®£® ­ ¡®à  ॣ¨áâ஢;
- ­¨¦­ïï ®¡« áâì (®á⠢訥áï âਠáâப¨);
2.1.1. ‘®áâ®ï­¨¥ ¨­¤¥ªá­ëå ॣ¨áâ஢ëå ¯ à.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ‘®áâ®ï­¨¥ ॣ¨áâ஢®© ¯ àë
³ ÚÄÄÄÄÄÄ Œ¨­¨-¤ ¬¯
ÚÄÄÄÁÄÄ¿ ÚÄÄÄÄÄÁÄÄÄÄÄÄ¿
ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍ
ºIX #8080³0EFC F8FC .üøüº
ºIY #1637³0045 4D4F .EMOº
ÇÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
À´ ÀÄÂÄÙ ÀÂÄÙ ÀÂÄÙ ÀÂÄÙ
³ ³ ÀÄÄÂÄÙ ÀÄ ASCII ¯à¥¤áâ ¢«¥­¨¥ ¯ ¬ïâ¨
³ ³ ÀÄÄÄÄÄÄÄÄ <20> ©âë ¨§ ¯ ¬ïâ¨, ­  ª®â®àãî ááë« ¥âáï ॣ¨áâ஢ ï ¯ à 
³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ‡­ ç¥­¨¥ ॣ¨áâ஢®© ¯ àë
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ <20>¥£¨áâ஢ ï ¯ à 
2.1.2. ‘®áâ®ï­¨¥ ®á­®¢­®£® ¨ a«ìâ¥à­ â¨¢­®£® ­ ¡®à®¢ ॣ¨áâ஢ ¯à®æ¥áá®à .
ÇÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
ºHL #8100³0081 FFFE .<2E>.þº
ºDE #2C40³C34A 2D21 ÃJ-!º
ºBC #C089³D6C6 06C6 ÖÆ.ƺ
ºAF #FB82³%11111011 "û" º
ºSz.h.pNc³ º
ÇÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
ºHL'#0000³C34A 2DFF ÃJ-.º
ºDE'#2B18³DD21 082E Ý!..º
ºBC'#0200³DCE6 0106 Üæ..º
ºAF'#FB44³%11111011 "û" º
ºsZ.h.Pnc³ º
ÇÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÂÄÄÄÄĶ
‘®áâ®ï­¨¥ áâப á ॣ¨áâ஢묨 ¯ à ¬¨ HL, DE, BC ¨ HL', DE', BC' ¯®«­®áâìî
 ­ «®£¨ç­® áâப ¬ á ¨­¤¥ªá­ë¬¨ ॣ¨áâ஢묨 ¯ à ¬¨. „ «¥¥ ¢ ¤¢ãå áâப å
®â®¡à ¦ ¥âáï á®áâ®ï­¨¥  ªªã¬ã«ïâ®à  ¨ ä« £®¢ ¯à®æ¥áá®à :
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ <20>¥£¨áâ஢ ï ¯ à 
³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ‡­ ç¥­¨¥  ªªã¬ã«ïâ®à 
³ ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ‡­ ç¥­¨¥ ä« £®¢®£® ॣ¨áâà 
³ ³ ³ ÚÄÄÄÄÄÄÄÄ „¢®¨ç­®¥ ¯à¥¤áâ ¢«¥­¨¥  ªªã¬ã«ïâ®à 
³ ³ ³ ³ ÚÄ ASCII ¯à¥¤áâ ¢«¥­¨¥  ªªã¬ã«ïâ®à 
Ú´ Ú´Ú´ ÚÄÄÄÁÄÄÄ¿ ³
ºAF #FB82³%11111011 "û" º
ºSz.h.pNc³ º
ÇÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
³³ ³ ³³³
³³ ³ ³³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄ - ä« £ ¯¥à¥­®á 
³³ ³ ³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ N - ä« £ ®¯¥à æ¨¨ ¢ëç¨â ­¨ï
³³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ P/V - ä« £ ç¥â­®£® १ã«ìâ â  / ¯¥à¥¯®«­¥­¨ï
³³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ H - ä« £ ¢á¯®¬®£ â¥«ì­®£® ¯¥à¥­®á 
³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Z - ä« £ ­ã«ï
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ S - ä« £ §­ ª 
‡ £« ¢­ ï ¡ãª¢  ᮮ⢥âáâ¢ã¥â ãáâ ­®¢«¥­­®¬ã ä« £ã, ¯à®¯¨á­ ï - á¡à®è¥­­®¬ã.
2.1.3. ‘®áâ®ï­¨¥ áç¥â稪  ª®¬ ­¤ ¨ ॣ¨áâ஢  ¤à¥á  ॣ¥­¥à æ¨¨ ¨ â ¡«¨æë
¯à¥à뢠­¨©.
ÇÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÂÄÄÄÄĶ
ºPC #00CF³IR #8045³ º
À´ ÀÄÂÄÙ À´ À´À´
³ ³ ³ ³ ÀÄÄÄÄÄ ‡­ ç¥­¨¥ ॣ¨áâà   ¤à¥á  ॣ¥­¥à æ¨¨
³ ³ ³ ÀÄÄÄÄÄÄÄ ‡­ ç¥­¨¥ ॣ¨áâà   ¤à¥á  â ¡«¨æë ¯à¥à뢠­¨©
³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄ <20>¥£¨áâ஢ ï ¯ à 
³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ‡­ ç¥­¨¥ áç¥â稪  ª®¬ ­¤
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ <20>¥£¨áâ஢ ï ¯ à 
2.1.4. <20>®¬¥à  ¡ ­®ª ¯ ¬ïâ¨, ¢ª«î祭­ëå ¢ ®ª­  ¯à®æ¥áá®à .
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 0-¥ ®ª­®  ¤à¥á­®£® ¯à®áâà ­á⢠ (#0000...#3FFF)
³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ 1-¥ ®ª­®  ¤à¥á­®£® ¯à®áâà ­á⢠ (#4000...#7FFF)
³ ³ ÚÄÄÄÄÄÄÄ 2-¥ ®ª­®  ¤à¥á­®£® ¯à®áâà ­á⢠ (#8000...#BFFF)
³ ³ ³ ÚÄ 3-¥ ®ª­®  ¤à¥á­®£® ¯à®áâà ­á⢠ (#C000...#FFFF)
ÌÍ 0 ÍÑÍ 1 ÍÑÍ 2 ÍØÍ 3 ͹
º #FB ³ #FF ³ #E8 ³ #FF º
ÌÍÍÍÍÍÏÍÍÑÍÍÏÍËÍÍÍÏÍÍÍÍ͹
ÀÂÙ ÀÂÙ ÀÂÙ ÀÂÙ
³ ³ ³ ÀÄ ”¨§¨ç¥áª¨© ­®¬¥à ¡ ­ª¨ ¯ ¬ï⨠¢ª«î祭­®© ¢ 0-¥ ®ª­®
³ ³ ÀÄÄÄÄÄÄÄ ”¨§¨ç¥áª¨© ­®¬¥à ¡ ­ª¨ ¯ ¬ï⨠¢ª«î祭­®© ¢ 1-¥ ®ª­®
³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄ ”¨§¨ç¥áª¨© ­®¬¥à ¡ ­ª¨ ¯ ¬ï⨠¢ª«î祭­®© ¢® 2-¥ ®ª­®
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ”¨§¨ç¥áª¨© ­®¬¥à ¡ ­ª¨ ¯ ¬ï⨠¢ª«î祭­®© ¢ 3-¥ ®ª­®
2.1.5. ‘®áâ®ï­¨¥ 㪠§ â¥«ï á⥪  ¨  ¤à¥á à á¯®«®¦¥­¨ï १¨¤¥­â .
ÌÍÍÍÍÍÏÍÍÑÍÍÏÍËÍÍÍÏÍÍÍÍ͹
ºSP #7FF6³ 4ºREZ #7000º
ÌÍÍÍÍÍÍÍÍÏÍÍËÍÊÍÍÍÍÍÍÍÍÍÊÍ
À´ ÀÄÂÄÙ ÀÄÂÙ ÀÂÙ ÀÄÂÄÙ
³ ³ ³ ³ ÀÄ €¤à¥á à §¬¥é¥­¨ï १¨¤¥­â 
³ ³ ³ ÀÄÄÄÄÄÄ <20>¥§¨¤¥­â
³ ³ ÀÄÄÄÄÄÄÄÄÄÄ ˆá¯®«ì§®¢ ­­ ï £«ã¡¨­  á⥪ 
³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ‡­ ç¥­¨¥ 㪠§ â¥«ï á⥪ 
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ <20>¥£¨áâ஢ ï ¯ à 
‘¯à ¢  ®â ¯ àë SP ¢ë¢®¤¨âáï £«ã¡¨­  ¨á¯®«ì§®¢ ­­®£® á⥪ . ’ ª ª®¬ ­¤ë PUSH,
CALL ¨ RST ¯à¨¢®¤ïâ ª 㢥«¨ç¥­¨î í⮣® ç¨á« ,   ª®¬ ­¤ë POP ¨ RET -
ᮮ⢥âá⢥­­® ª 㬥­ì襭¨î. —¨á«® ¢á¥£¤  ®â®¡à ¦¥­® ¢ ¤¥áïâ¨ç­®¬ ä®à¬ â¥ ¨
¬®¦¥â ¡ëâì ®âà¨æ â¥«ì­ë¬.
2.2. „ ¬¯ á⥪ .
ÌÍÍÍÍÍÍÍÍÏÍÍË ‚¥à設  á⥪  ¯®¤á¢¥ç¥­ . <20>¨¦¥ ¯®¤á¢¥ç¥­­®© áâப¨ ­ å®¤ïâáï
º#8002 #6C7Eº §­ ç¥­¨ï á­ïâë¥ á® á⥪ , ¢ëè¥ - §­ ç¥­¨ï ¢ á⥪¥.
º#8000 #7E00º
º#7FFE #302Cº
º#7FFC #FB82º
º#7FFA #FB82º
º#7FF8 #FB82º
º#7FF6 #2C40º
º#7FF4 #1637º
ÈÍÍÍÍÍÍÍÍÍÍÍÊ
ÀÄÂÄÙ ÀÄÂÄÙ
³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄ ‡­ ç¥­¨¥ ¯ ¬ïâ¨
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ €¤à¥á ¯ ¬ïâ¨
2.3. Žª­® «¨á⨭£ .
’¥ªã饥 ¢à¥¬ï ÄÄÄÄÄÄÄ¿
ÚÄÄÄÁÄÄ¿
ËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ01:58:36»
º #A000 7A LD A,D º
º #A001 FE20 CP #20 º
¶ #A003 20E2 JR NZ,#9FE7 º
º #A005 2128A0 LD HL,#A028 º
º #A008 AF XOR A º
º #A009 0E0A LD C,#0A º
º #A00B D7 RST #10 º
º #A00C 380E JR C,#A01C º
¶ #A00E F5 PUSH AF º
º #A00F 2100C0 LD HL,#C000 º
º #A012 11400A LD DE,#0A40 º
º #A015 0E14 LD C,#14 º
º #A017 D7 RST #10 º
º #A018 F1 POP AF º
¶ #A019 0E12 LD C,#12 º
º #A01B D7 RST #10 º
¹ #A01C 3A32A0 LD A,(#A032) º
º #A01F 0E3C LD C,#3C º
¹ #A021 D7 RST #10 º
º #A022 3A33A0 LD A,(#A033) º
ÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
ÀÄÂÄÙ ÀÄÄÄÄÄÄÂÄÄÄÄÄÙ ÀÄÄÄÂÄÄÙ ÀÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
³ ³ ³ ÀÄÄ Œ­¥¬®­¨ª  ª®¬ ­¤ë
³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄ <20>®«¥ ª®¤  ª®¬ ­¤ë
³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ <20>®«¥ ¬¥âª¨
³ (¢ ⥪ã饩 ¢¥àᨨ ­¥ ॠ«¨§®¢ ­®)
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ €¤à¥á ª®¬ ­¤ë
’¥ªãé ï ª®¬ ­¤  ¯à®æ¥áá®à  (­  ª®â®àãî 㪠§ë¢ ¥â PC) ¢ë¤¥«¥­  ¯®«®á®©.
2.4. „ ¬¯ ¯ ¬ïâ¨.
ASCII ¯à¥¤áâ ¢«¥­¨¥ ¯ ¬ï⨠ÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ÚÄÄÄÄÄÄÄÁÄÄÄÄÄÄ¿
ËÍÊÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º #4000 007E 7E6C 1038 1000 FF00 FF0F 3C3F 7F18 .~~l.8......<?.. º
º #4010 8002 1866 7F3E 0018 1818 0000 0000 0000 €..f.>.......... º
º #4020 0030 6C6C 3000 3860 1860 0000 0000 0006 .0ll0.8`.`...... º
º #4030 7C30 7878 1CFC 38FC 7878 0000 1800 6078 |0xx.ü8üxx....`x º
º #4040 7C30 FC3C F8FE FE3C CC78 1EE6 F0C6 C638 |0ü<øþþ<Ìx.æðÆÆ8 º
º #4050 FC78 FC78 FCCC CCC6 C6CC FE78 C078 1000 üxüxüÌÌÆÆÌþxÀx.. º
º #4060 3000 E000 1C00 3800 E030 0CE0 7000 0000 0.à...8.à0.àp... º
º #4070 0000 0000 1000 0000 0000 001C 18E0 7600 .............àv. º
ÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
ÀÄÂÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
³ ÀÄÄÄÄÄÄÄÄÄÄÄÄ HEX ¯à¥¤áâ ¢«¥­¨¥ ¯ ¬ïâ¨
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ €¤à¥á  ¯ ¬ï⨠¤ ¬¯ 
3. “¯à ¢«¥­¨¥.
“¯à ¢«¥­¨¥ ¢ ¯à®£à ¬¬¥ ®áãé¥á⢫ï¥âáï ¯à¨ ¯®¬®é¨ ª« ¢¨ âãàë.
3.1. Ž¡é¥¥ ã¯à ¢«¥­¨¥.
<EFBFBD>⨠¯®á«¥¤®¢ â¥«ì­®á⨠ª« ¢¨ âãà­ëå ª®¬ ­¤ ®¡à ¡ â뢠îâáï ¢ ­¥§ ¢¨á¨¬®á⨠®â
⮣®, ¢ ª ª®¬ ®ª­¥ ­ å®¤¨âáï ªãàá®à ¯à®£à ¬¬ë:
TAB - ¯¥à¥å®¤ ¢ á«¥¤ãî饥 ®ª­® ¯à®£à ¬¬ë;
SHIFT+TAB - ¯¥à¥å®¤ ¢ ¯à¥¤ë¤ã饥 ®ª­® ¯à®£à ¬¬ë;
CTRL+E - ¯¥à¥ª«î祭¨¥ dEc/hEc á¨áâ¥¬ë ¢ë¢®¤  ç¨á¥« ­  íªà ­¥;
CTRL+R - ¨§¬¥­¥­¨¥  ¤à¥á  à §¬¥é¥­¨ï १¨¤¥­â ;
F7 ¨«¨ CTRL+Z - ¢ë¯®«­¥­¨¥ ⥪ã饩 ª®¬ ­¤ë ¯à®æ¥ác®à ;
F8 ¨«¨ CTRL+C - ¢ë¯®«­¥­¨¥ ⥪ã饩 ª®¬ ­¤ë ¯à®æ¥ác®à  á  ¢â®¬ â¨ç¥áª¨¬
¢ë¯®«­¥­¨¥¬ ¯®¤¯à®£à ¬¬ ¨ 横«  DJNZ;
F9 ¨«¨ CTRL+V - ¯à®¯ã᪠⥪ã饩 ª®¬ ­¤ë ¯à®æ¥ác®à ,  ¤à¥á ¢ ॣ¨áâ஢®© ¯ à¥
PC ãáâ ­ ¢«¨¢ ¥âáï ­  á«¥¤ãîéãî ª®¬ ­¤ã ¡¥§ ¨á¯®«­¥­¨ï
¯à¥¤ë¤ã饩;
ESC - ¯à®á¬®âà á¨á⥬­®£® íªà ­ ;
F10 ¨«¨ ALT+X - ¢ë室 ¨§ ¯à®£à ¬¬ë.
¯à®£à ¬¬¥ ॠ«¨§®¢ ­  ¯®«­®æ¥­­ ï áâப  ¢¢®¤ . „ ­­ë¥ ¬®¦­® ¢¢®¤¨âì ª ª ¢
HEX, â ª ¨ ¢ DEC á¨á⥬ å ¨áç¨á«¥­¨ï, ¯à¨ç¥¬ HEX-ç¨á«® ¤®«¦­® ­ ç¨­ âìáï á
¯à¥ä¨ªá  #, « â¨­áª®© «¨â¥àë x ¨«¨ X.
3.2. Žª­® ॣ¨áâ஢.
HOME - ¢ ­ ç «® ⥪ã饩 áâப¨;
END - ¢ ª®­¥æ ⥪ã饩 áâப¨;
PAGE UP - ­  ¯¥à¢ãî áâபã ãá«®¢­®© ®¡« áâ¨;
PAGE DOWN - ­  ¯®á«¥¤­îî áâபã ãá«®¢­®© ®¡« áâ¨;
ENTER - ­ ç «® । ªâ¨à®¢ ­¨ï §­ ç¥­¨ï ॣ¨áâ஢ëå ¯ à, ¡ ©â ¯ ¬ïâ¨
¨ ASCII ¯à¥¤áâ ¢«¥­¨ï ¯ ¬ï⨠¨  ªªã¬ã«ïâ®à ,   â ª¦¥ ­®¬¥à®¢
¡ ­®ª, ¢ª«î祭­ëå ¢ ®ª­  ¯à®æ¥áá®à ;
- ¨­¢¥àâ¨à®¢ ­¨¥ ¡¨â®¢ ¤¢®¨ç­®£® ¯à¥¤áâ ¢«¥­¨ï  ªªã¬ã«ïâ®à  ¨
ãáâ ­®¢ª  / á¡à®á ä« £®¢,   â ª¦¥ ®¡­ã«¥­¨¥ §­ ç¥­¨ï £«ã¡¨­ë
á⥪ .
3.3. „ ¬¯ á⥪ .
PAGE UP - ¯®-áâà ­¨ç­ë© ¯à®á¬®âà á⥪ ;
PAGE DOWN - ¯®-áâà ­¨ç­ë© ¯à®á¬®âà á⥪ ;
HOME - ¢¥à­ãâì ¢¥à設ã á⥪  ¢ 䮪ãá;
CTRL+X - ãáâ ­®¢¨âì á⥪ ­  ⥪ãéãî áâபã;
ENTER - ¢¢®¤ ­®¢®£®  ¤à¥á  ¨«¨ ¤ ­­ëå;
- ¢¢®¤  ¤à¥á  ¢ ¯®¤á¢¥ç¥­­®© áâப¥ (­  ¢¥à設¥ á⥪ ) ¯à¨¢®¤¨â
ª ¨§¬¥­¥­¨î ॣ¨áâ஢®© ¯ àë SP.
3.4. Žª­® «¨á⨭£ .
PAGE UP - ­  áâà ­¨æã «¨á⨭£  ¢¢¥àå;
PAGE DOWN - ­  áâà ­¨æã «¨á⨭£  ¢­¨§;
HOME - ¯¥à¥å®¤ ¢ ª®«®­ªã  ¤à¥á ;
END - ¯¥à¥å®¤ ¢ ª®«®­ªã ¬­¥¬®­¨ª¨;
CTRL+X - ãáâ ­®¢¨âì §­ ç¥­¨¥ áç¥â稪  ª®¬ ­¤ ­  ⥪ãéãî áâபã;
RCTRL+æ¨äà  - § ¯®¬¨­ ­¨¥ ⥪ã饣®  ¤à¥á  «¨á⨭£  (§ ¯®¬­¨âì § ª« ¤ªã);
LCTRL+æ¨äà  - ¡ëáâàë© ¯¥à¥å®¤ ­   ¤à¥á «¨á⨭£  (­  á®åà. à ­¥¥ § ª« ¤ªã);
LCTRL+~ - ¡ëáâàë© æ¨ª«¨ç¥áª¨© ¯¥à¥å®¤ (®â®¡à ¦¥­¨¥ «¨á⨭£ )
¢ ­ ç «® 0..3 ®ª®­ ¯ ¬ï⨠¯à®æ¥áá®à ;
ENTER - । ªâ¨à®¢ ­¨¥  ¤à¥á  ¨«¨ ª®¤  ª®¬ ­¤ë, ¯à¨ç¥¬ ª®¤ ª®¬ ­¤ë
¢¢®¤¨âáï ⮫쪮 ¢ HEX á¨á⥬¥ ¨áç¨á«¥­¨ï.
3.5. „ ¬¯ ¯ ¬ïâ¨.
PAGE UP - ­  áâà ­¨æã ¤ ¬¯  ¢¢¥àå;
PAGE DOWN - ­  áâà ­¨æã ¤ ¬¯  ¢­¨§;
HOME - ¯¥à¥å®¤ ª ª®«®­ª¥  ¤à¥á ;
END - ¯¥à¥å®¤ ª ¯®á«¥¤­¥© ª®«®­ª¥ ®ª­ ;
CTRL+HOME - ¯¥à¥å®¤ ¯®á«¥¤®¢ â¥«ì­® (¥á«¨ ªãàá®à ãáâ ­®¢«¥­ ¢ ª®­æ¥
áâப¨ ¤ ¬¯ ) ª ¯¥à¢®© ª®«®­ª¥ ASCII ¯à¥¤áâ ¢«¥­¨ï ¯ ¬ïâ¨,
¤ «¥¥ ª ¯¥à¢®© ª®«®­ª¥ ¡ ©â ¯ ¬ï⨠¨ ­ ª®­¥æ ª  ¤à¥áã;
CTRL+END - ¯¥à¥å®¤ ª ¯®á«¥¤­¥© ª®«®­ª¥ ¡ ©â ¯ ¬ï⨠¨ ¤ «¥¥ ª ¯®á«¥¤­¥©
ª®«®­ª¥ ASCII ¯à¥¤áâ ¢«¥­¨ï ¯ ¬ïâ¨;
ENTER - । ªâ¨à®¢ ­¨¥  ¤à¥á  ¨«¨ ⥪ãé¨å ¤ ­­ëå, ¯à¨ç¥¬
। ªâ¨à®¢ ­¨¥ ¢ ¯®«¥ ¤ ­­ëå ¨ ¢ ¯®«¥ ASCII ¯à¥¤áâ ¢«¥­¨ï
¯ ¬ï⨠­¥áª®«ìª® ®â«¨ç ¥âáï - ªãàá®à ¯®á«¥ ¢¢®¤  ®ç¥à¥¤­®£®
¡ ©â   ¢â®¬ â¨ç¥á¨ ¯¥à¥å®¤¨â ª á«¥¤ãî饬ã.

BIN
DEMON_old.EXE Normal file

Binary file not shown.

786
DISASM.ASM Normal file
View File

@ -0,0 +1,786 @@
;[]=========================================================================[]
;[] „¨§ áᥬ¡«¥à ¬®­¨â®à -®â« ¤ç¨ª  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

71
EQU/DOS_EQU.ASM Normal file
View File

@ -0,0 +1,71 @@
VERSION EQU #00
CHDISK EQU #01
CURDISK EQU #02
DSKINFO EQU #03
G_ENTRY EQU #04
BOOTDSK EQU #09
CREATE EQU #0A
CREAT_N EQU #0B
ERASE EQU #0D
DELETE EQU #0E
MOVE EQU #0F
RENAME EQU #10
OPEN EQU #11
CLOSE EQU #12
READ EQU #13
WRITE EQU #14
MOVE_FP EQU #15
ATTRIB EQU #16
GET_D_T EQU #17
PUT_D_T EQU #18
F_FIRST EQU #19
F_NEXT EQU #1A
MKDIR EQU #1B
RMDIR EQU #1C
CHDIR EQU #1D
CURDIR EQU #1E
SYSTIME EQU #21
SETTIME EQU #22
WAITKEY EQU #30
SCANKEY EQU #31
ECHOKEY EQU #32
CTRLKEY EQU #33
EDIT EQU #34
K_CLEAR EQU #35
SETWIN EQU #38
SETWIN1 EQU #39
SETWIN2 EQU #3A
SETWIN3 EQU #3B
FREEMEM EQU #3C
GETMEM EQU #3D
RETMEM EQU #3E
SETMEM EQU #3F
EXEC EQU #40
EXIT EQU #41
WAIT EQU #42
GSWITCH EQU #43
DOSNAME EQU #44
SETVMOD EQU #50
GETVMOD EQU #51
LOCATE EQU #52
CURSOR EQU #53
SELPAGE EQU #54
SCROLL EQU #55
CLEAR EQU #56
RDCHAR EQU #57
WRCHAR EQU #58
WINCOPY EQU #59
WINREST EQU #5A
PUTCHAR EQU #5B
PCHARS EQU #5C
RES_PRN EQU #5D
CTRLPRN EQU #5E
PRINT EQU #5F

104
EQU/DSS.INC Normal file
View File

@ -0,0 +1,104 @@
DSS_VERSION EQU #00
DSS_CHDISK EQU #01
DSS_CURDISK EQU #02
DSS_DSKINFO EQU #03
;DSS_G_ENTRY EQU #04
; EQU #05
; EQU #06
; EQU #07
; EQU #08
DSS_BOOTDSK EQU #09
;File io
DSS_CREATE EQU #0A
DSS_CREAT_N EQU #0B
; EQU #0C
;DSS_ERASE EQU #0D
DSS_DELETE EQU #0E
;DSS_MOVE EQU #0F
DSS_RENAME EQU #10
DSS_OPEN EQU #11
DSS_CLOSE EQU #12
DSS_READ EQU #13
DSS_WRITE EQU #14
DSS_MOVE_FP EQU #15
DSS_ATTRIB EQU #16
DSS_GET_D_T EQU #17
DSS_PUT_D_T EQU #18
DSS_F_FIRST EQU #19
DSS_F_NEXT EQU #1A
DSS_MKDIR EQU #1B
DSS_RMDIR EQU #1C
DSS_CHDIR EQU #1D
DSS_CURDIR EQU #1E
; EQU #1F
; EQU #20
DSS_SYSTIME EQU #21
DSS_SETTIME EQU #22
; EQU #23
; EQU #24
; EQU #25
; EQU #26
; EQU #27
; EQU #28
; EQU #29
; EQU #2A
; EQU #2B
; EQU #2C
; EQU #2D
; EQU #2E
; EQU #2F
;Keyboard
DSS_WAITKEY EQU #30
DSS_SCANKEY EQU #31
DSS_ECHOKEY EQU #32
DSS_CTRLKEY EQU #33
;DSS_EDIT EQU #34
DSS_K_CLEAR EQU #35
DSS_K_SETUP EQU #36
DSS_TESTKEY EQU #37
;Memory
DSS_SETWIN EQU #38
DSS_SETWIN1 EQU #39
DSS_SETWIN2 EQU #3A
DSS_SETWIN3 EQU #3B
DSS_INFOMEM EQU #3C
DSS_GETMEM EQU #3D
DSS_FREEMEM EQU #3E
DSS_SETMEM EQU #3F
;Execution
DSS_EXEC EQU #40
DSS_EXIT EQU #41
DSS_WAIT EQU #42
DSS_GSWITCH EQU #43
DSS_DOSNAME EQU #44
DSS_EX_PATH EQU #45
DSS_ENVIRON EQU #46
DSS_APPINFO EQU #47
; EQU #48
; EQU #49
; EQU #4A
; EQU #4B
; EQU #4C
; EQU #4D
; EQU #4E
; EQU #4F
DSS_SETVMOD EQU #50
DSS_GETVMOD EQU #51
DSS_LOCATE EQU #52
DSS_CURSOR EQU #53
DSS_SELPAGE EQU #54
DSS_SCROLL EQU #55
DSS_CLEAR EQU #56
DSS_RDCHAR EQU #57
DSS_WRCHAR EQU #58
DSS_WINCOPY EQU #59
DSS_WINREST EQU #5A
DSS_PUTCHAR EQU #5B
DSS_PCHARS EQU #5C
;DSS_RES_PRN EQU #5D
;DSS_CTRLPRN EQU #5E
DSS_PRINT EQU #5F
;

59
EQU/bios_equ.asm Normal file
View File

@ -0,0 +1,59 @@
BiosRst EQU #08
;”㭪樨 à ¡®âë á ¯ ¬ïâìî
Bios.Emm_Fn0 EQU #C0
Bios.Emm_Fn1 EQU #C1
Bios.Emm_Fn2 EQU #C2
Bios.Emm_Fn3 EQU #C3
Bios.Emm_Fn4 EQU #C4
Bios.Emm_Fn5 EQU #C5
Bios.Emm_Fn6 EQU #C6
Bios.Emm_Fn7 EQU #C7
Bios.Emm_Fn8 EQU #C8
Bios.Emm_Fn9 EQU #C9
;”㭪樨 ã¯à ¢«¥­¨ï ®ª­ ¬¨ ¨ ०¨¬ ¬¨ íªà ­ 
Bios.Win_Open EQU #B0
Bios.Win_Close EQU #B1
Bios.Win_Copy_Win EQU #B2
Bios.Win_Restore_Win EQU #B3
Bios.Win_Get_Sym EQU #B4
Bios.Win_Put_Sym EQU #B5
Bios.Win_Set_ZG EQU #B6
Bios.Win_Move_Win EQU #B7
Bios.Win_Get_ZG EQU #B8
;”㭪樨 ¢ë¢®¤  ⥪áâ  ­  íªà ­
Bios.Lp_Print_All EQU #81
Bios.Lp_Print_Sym EQU #82
Bios.Lp_Print_Atr EQU #83
Bios.Lp_Set_Place EQU #84
Bios.Lp_Print_Ln EQU #85
Bios.Lp_Print_Ln2 EQU #86
Bios.Lp_Print_Ln3 EQU #87
Bios.Lp_Print_Ln4 EQU #88
Bios.Lp_Cls_Win EQU #89
Bios.Lp_Scroll_Up EQU #8A
Bios.Lp_Print_Ln5 EQU #8B
Bios.Lp_Print_Ln6 EQU #8C
Bios.Lp_Cls_Win2 EQU #8D
Bios.Lp_Get_Place EQU #8E
;”㭪樨 à ¡®âë á ¦¥á⪨¬¨ ¤¨áª ¬¨ ¨ ¤¨áª®¢®¤ ¬¨
Bios.Drv_Reset EQU #51
Bios.Drv_Verify EQU #54
Bios.Drv_Read EQU #55
Bios.Drv_Write EQU #56
Bios.Drv_Detect EQU #57
Bios.Drv_Get_Par EQU #58
Bios.Drv_Set_Par EQU #59
Bios.Ext_Version EQU #5A
Bios.Drv_List EQU #5F

105
EQU/dss_equ.asm Normal file
View File

@ -0,0 +1,105 @@
DssRst EQU #10
Dss.Version EQU #00
Dss.ChDisk EQU #01
Dss.CurDisk EQU #02
Dss.DskInfo EQU #03
;Dss.G_ENTRY EQU #04
; EQU #05
; EQU #06
; EQU #07
; EQU #08
Dss.BOOTDSK EQU #09
;File io
Dss.Create EQU #0A
Dss.Creat_N EQU #0B
; EQU #0C
;Dss.ERASE EQU #0D
Dss.Delete EQU #0E
;Dss.Move EQU #0F
Dss.Rename EQU #10
Dss.Open EQU #11
Dss.Close EQU #12
Dss.Read EQU #13
Dss.Write EQU #14
Dss.Move_FP EQU #15
Dss.Attrib EQU #16
Dss.Get_D_T EQU #17
Dss.Put_D_T EQU #18
Dss.F_First EQU #19
Dss.F_Next EQU #1A
Dss.MkDir EQU #1B
Dss.RmDir EQU #1C
Dss.ChDir EQU #1D
Dss.CurDir EQU #1E
; EQU #1F
; EQU #20
Dss.SysTime EQU #21
Dss.SetTime EQU #22
; EQU #23
; EQU #24
; EQU #25
; EQU #26
; EQU #27
; EQU #28
; EQU #29
; EQU #2A
; EQU #2B
; EQU #2C
; EQU #2D
; EQU #2E
; EQU #2F
;Keyboard
Dss.WaitKey EQU #30
Dss.ScanKey EQU #31
Dss.EchoKey EQU #32
Dss.CTRLKey EQU #33
;Dss.EDIT EQU #34
Dss.K_CLEAR EQU #35
Dss.K_SETUP EQU #36
Dss.TESTKEY EQU #37
;Memory
Dss.SetWin EQU #38
Dss.SetWin1 EQU #39
Dss.SetWin2 EQU #3A
Dss.SetWin3 EQU #3B
Dss.INFOMEM EQU #3C
Dss.GetMem EQU #3D
Dss.FreeMem EQU #3E
Dss.SetMem EQU #3F
;Execution
Dss.Exec EQU #40
Dss.Exit EQU #41
Dss.Wait EQU #42
Dss.GSwitch EQU #43
Dss.DosName EQU #44
Dss.EX_Path EQU #45
Dss.Environ EQU #46
Dss.AppInfo EQU #47
; EQU #48
; EQU #49
; EQU #4A
; EQU #4B
; EQU #4C
; EQU #4D
; EQU #4E
; EQU #4F
Dss.SetVMod EQU #50
Dss.GetVMod EQU #51
Dss.Locate EQU #52
Dss.Cursor EQU #53
Dss.SelPage EQU #54
Dss.Scroll EQU #55
Dss.Clear EQU #56
Dss.RdChar EQU #57
Dss.WrChar EQU #58
Dss.WinCopy EQU #59
Dss.WinRest EQU #5A
Dss.PutChar EQU #5B
Dss.PChars EQU #5C
;Dss.RES_PRN EQU #5D
;Dss.CTRLPRN EQU #5E
Dss.Print EQU #5F
;

4
EQU/port.asm Normal file
View File

@ -0,0 +1,4 @@
EmmWin.P0 EQU #82
EmmWin.P1 EQU #A2
EmmWin.P2 EQU #C2
EmmWin.P3 EQU #E2

86
ERROR.ASM Normal file
View File

@ -0,0 +1,86 @@
;[]=========================================================================[]
;[] Ž¡à ¡®âª  ®è¨¡®ª ¬®­¨â®à -®â« ¤ç¨ª  DemoN []
;[] v0.10 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 27.08.2006 []
;[] []
;[] ErDss - ®¯à¥¤¥«¥­¨¥ ®è¨¡ª¨ DSS ¯® ¥¥ ª®¤ã []
;[]=========================================================================[]
;[]=========================================================================[]
;[] Žè¨¡ª¨ DSS []
;[] ‚室: A - ª®¤ ®è¨¡ª¨ []
;[] ‚ë室: A - ª®¤ ®è¨¡ª¨ []
;[] HL - áâப -®¯¨á ­¨¥ ®è¨¡ª¨ []
;[]=========================================================================[]
PrErDss:
call ErDss
ld c,Dss.PChars ;¢ë¢¥á⨠ᮮ¡é¥­¨¥ ®¡ ®è¨¡ª¥
rst DssRst
ld hl,Str.DA ;¯¥à¥¢®¤ áâப¨
ld c,Dss.PChars
rst DssRst
ret
ErDss:
.MaxError equ 0x26
cp .MaxError+1 ;¬ ªá¨¬ «ì­ë© ª®¤ ®è¨¡ª¨ + 1
jr c,$+4
ld a,.MaxError
push af
add a,a
ld hl,.Tabl
ld d,0
ld e,a
add hl,de
ld a,(hl)
inc hl
ld h,(hl)
ld l,a
pop af
ret
.e01 db "Invalid function",0
.e02 db "Invalid drive number",0
.e03 db "File not found",0
.e04 db "Path not found",0
.e05 db "Invalid handle",0
.e06 db "Too many open files",0
.e07 db "File already exists",0
.e08 db "File read only",0
.e09 db "Root overflow",0
.e0A db "No free space",0
.e0B db "Directory not empty",0
.e0C db "Can't delete current directory",0
.e0D db "Invalid media",0
.e0E db "Unknown operation",0 ;(­¥¢®§¬. ®¯¥à æ¨ï)
.e0F db "Directory exist",0
.e10 db "Invalid filename",0
.e11 db "Invalid EXE-file",0
.e12 db "Not supported EXE-file",0
.e13 db "Access denied",0
.e14 db "Not ready",0
.e15 db "Seek error",0
.e16 db "Sector not found",0
.e17 db "CRC error",0
.e18 db "Write protect",0
.e19 db "Read error",0
.e1A db "Write error",0
.e1B db "Drive failure",0
.e1C db "Extended error: 28",0
.e1D db "Extended error: 29",0
.e1E db "Not enough memory",0
.e1F db "Invalid memory block",0
.e20 db "Extended error: 32",0
.e21 db "Extended error: 33",0
.e22 db "Extended error: 34",0
.e23 db "Too many files",0 ;(ᯨ᮪ ä ©«®¢)
.e24 db "(᫨誮¬ ¡®«ìè ï ¢«®¦. ¯ ¯®ª ¨«¨ >= 1024 ¯ ¯®ª)",0
.e25 db "User abort",0 ;(®¯¥à æ¨ï ¯à¥à¢ ­  ¯®«ì§®¢ â¥«¥¬)
.e26 db "Unknown error: 38..255",0 ;38
.Tabl dw .e01,.e02,.e03,.e04,.e05,.e06,.e07,.e08
dw .e09,.e0A,.e0B,.e0C,.e0D,.e0E,.e0F,.e10
dw .e11,.e12,.e13,.e14,.e15,.e16,.e17,.e18
dw .e19,.e1A,.e1B,.e1C,.e1D,.e1E,.e1F,.e20
dw .e21,.e22,.e23,.e24,.e25,.e26

274
FILE.ASM Normal file
View File

@ -0,0 +1,274 @@
;[]=========================================================================[]
;[] ” ©«®¢ë¥ ¯à®æ¥¤ãàë ¬®­¨â®à -®â« ¤ç¨ª  DemoN []
;[] v0.10 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 27.08.2006 []
;[]=========================================================================[]
LoadFile:
xor a ;¢ëª« ç á®¢
ld (ClockOn),a
ld bc,0x0100+Dss.SelPage ;á¨á⥬­ë© íªà ­
rst DssRst
ld hl,Str.Load ;á®®¡é¥­¨¥ ® § £à㧪¥ ä ©« 
ld c,Dss.PChars
rst DssRst
call LoadExe
ld a,(DemonScreen)
ld b,a
ld c,Dss.SelPage
rst DssRst
ld a,On ;¢ª« ç á®¢
ld (ClockOn),a
ret
LoadExe:
ld hl,FDebug ;¨¬ï ä ©« 
ld a,1 ;®âªàëâì ¤«ï ç⥭¨ï
ld c,Dss.Open
rst DssRst
jp c,PrErDss ;¢ë室 á ®è¨¡ª®©
ld (FId),a ;§ ¯®¬­¨âì ä ©«®¢ë© ¬ ­¨¯ã«ïâ®à
ld hl,FDebug ;¡ãä¥à ¤«ï § £à㧪¨ § £®«®¢ª 
ld de,0x7F ;ª®«-¢® áç¨â뢠¥¬ëå ¡ ©â
ld c,Dss.Read ;ç⥭¨¥
rst DssRst
jp c,PrErDss ;¢ë室 á ®è¨¡ª®©
ld hl,(FDebug) ;§ £®«®¢®ª EXE-ä ©« 
ld de,0x5845 ;'EX' ¯à®¢¥àª  ¨¤¥­â¨ä¨ª â®à 
sbc hl,de
jr nz,.L1
ld hl,FDebug+3
ld a,(hl) ;¢¥àá¨ï EXE-ä ©« 
or a
jr nz,.L1
inc hl
ld e,(hl) ;­ ç «® ¨á¯®«­ï¥¬®£® ª®¤ 
inc hl
ld d,(hl)
ld bc,11 ;¯à®¯ã᪠¥¬ ä« £ § £àã§ç¨ª  ¨ § à¥§¥à¢¨à®¢ ­­ë¥ ¡ ©âë
add hl,bc
ld a,(hl) ;¬«.¡ ©â à á¯®«®¦¥­¨ï ª®¤  ¢ ¯ ¬ïâ¨
ld (FRam),a
inc hl
ld a,(hl) ;áâ.¡ ©â à á¯®«®¦¥­¨ï ª®¤  ¢ ¯ ¬ïâ¨
ld (FRam+1),a
inc hl
ld a,(hl) ;¬«.¡ ©â  ¤à¥á  § ¯ã᪠
ld (Reg._PC),a
ld (ListAdr),a ;¬«.¡ ©â  ¤à¥á  «¨á⨭£ 
inc hl
ld a,(hl) ;áâ.¡ ©â  ¤à¥á  § ¯ã᪠
ld (Reg._PC+1),a
ld (ListAdr+1),a ;áâ.¡ ©â  ¤à¥á  «¨á⨭£ 
inc hl
ld a,(hl) ;¬«.¡ ©â á⥪  ¯à®£à ¬¬ë
ld (Reg._SP),a
inc hl
ld a,(hl) ;áâ.¡ ©â á⥪  ¯à®£à ¬¬ë
ld (Reg._SP+1),a
ld a,e
ld (.L2+2),a
ld a,d
ld (.L2+3),a
.L1 ld hl,0
ld ix,0 ;ᬥ饭¨¥ ¢ ä ©«¥
ld bc,2*256+Dss.Move_FP ;®â­®á¨â¥«ì­® ª®­æ 
rst DssRst
jp c,PrErDss ;¢ë室 á ®è¨¡ª®©
push hl
ld de,(FRam) ; ¤à¥á à á¯®«®¦¥­¨ï ª®¤ 
set 6,d
res 7,d ;£à㧨¬ ç¥à¥§ 1-¥ ®ª­®
ld hl,0x8000
or a ;á¡à®á¨âì ä« £ C
sbc hl,de ;ª®«-¢® áç¨â뢠¥¬ëå ¡ ©â
ld (.L6+1),hl
ex de,hl
ld (.L6+4),hl
pop hl
call NBank ;®¯à¥¤¥«¨âì ª®«-¢® ¡ ­®ª
jp c,PrErDss ;¢ë室 á ®è¨¡ª®©
ld (MemId+1),a ;ª®«-¢® ¢ë¤¥«ï¥¬ëå áâà ­¨æ
ld b,a
ld c,Dss.GetMem ;¢ë¤¥«¥­¨¥ ¯ ¬ïâ¨
rst DssRst
jp c,PrErDss ;¢ë室 á ®è¨¡ª®©
ld (MemId),a ;id ¡«®ª  ¯ ¬ïâ¨
ld a,(FId) ;ä ©«®¢ë© ¬ ­¨¯ã«ïâ®à
ld hl,0
.L2 ld ix,0 ;ᬥ饭¨¥ ¢ ä ©«¥
ld bc,Dss.Move_FP ;®â­®á¨â¥«ì­® ­ ç « 
rst DssRst
jp c,PrErDss ;¢ë室 á ®è¨¡ª®©
ld a,(MemId) ;id ¡«®ª  ¯ ¬ïâ¨
ld bc,Dss.SetWin1 ;¢ª« 1-î ¡ ­ªã ¢ 1-¥ ®ª­®
rst DssRst
jp c,PrErDss ;¢ë室 á ®è¨¡ª®©
.L6 ld de,0x3FFF ;ª®«-¢® áç¨â뢠¥¬ëå ¡ ©â
ld hl,0x4000 ; ¤à¥á § £à㧪¨ ª®¤ 
ld a,1 ;áç¥â稪 ¡ ­®ª
ld (MemId+2),a
.L5 ld a,(FId) ;ä ©«®¢ë© ¬ ­¨¯ã«ïâ®à
ld c,Dss.Read ;ç⥭¨¥
rst DssRst
jp c,PrErDss ;¢ë室 á ®è¨¡ª®©
ld bc,(MemId+1)
ld a,b
cp c ;§ £à§¨«¨ ¢¥áì ä ©«?
jr z,.L4 ;¯¥à¥å®¤, ¥á«¨ ¤ 
inc a
ld (MemId+2),a ;㢥«¨ç¨âì áç¥â稪 ¡ ­®ª
ld a,(MemId) ;id ¡«®ª  ¯ ¬ïâ¨
ld c,Dss.SetWin1 ;¢ª« ¡ ­ªã ¢ 1-¥ ®ª­®
rst DssRst
jp c,PrErDss ;¢ë室 á ®è¨¡ª®©
ld hl,0x4000 ; ¤à¥á ¢ ¯ ¬ï⨠¤«ï § £à㧪¨
ld de,0x3FFF ;ª®«-¢® § £à㦠¥¬ëå ¡ ©â
jr .L5
.L4 ld a,(FId) ;ä ©«®¢ë© ¬ ­¨¯ã«ïâ®à
ld c,Dss.Close ;§ ªàëâì ä ©«
rst DssRst
jp c,PrErDss ;¢ë室 á ®è¨¡ª®©
ld a,(MemId) ;id ¡«®ª  ¯ ¬ïâ¨
ld bc,Bios.Emm_Fn4 ;¢ëç¨á«¨âì 䨧 ­®¬¥à 1-© ¡ ­ª¨
rst BiosRst
ret c ;¢ë室 á ®è¨¡ª®©
ld (BankP),a
ld a,(MemId+1) ;ª®«-¢® ¢ë¤¥«¥­­ëå áâà ­¨æ
dec a
jr z,.L7
ld a,(MemId) ;id ¡«®ª  ¯ ¬ïâ¨
ld bc,1*256+Bios.Emm_Fn4 ;¢ëç¨á«¨âì 䨧 ­®¬¥à 2-© ¡ ­ª¨
rst BiosRst
ret c ;¢ë室 á ®è¨¡ª®©
ld (BankP+1),a
ld a,(MemId+1) ;ª®«-¢® ¢ë¤¥«¥­­ëå áâà ­¨æ
cp 2
jr z,.L7
ld a,(MemId) ;id ¡«®ª  ¯ ¬ïâ¨
ld bc,2*256+Bios.Emm_Fn4 ;¢ëç¨á«¨âì 䨧 ­®¬¥à 3-© ¡ ­ª¨
rst BiosRst
ret c ;¢ë室 á ®è¨¡ª®©
ld (BankP+2),a
ld a,(MemId+1) ;ª®«-¢® ¢ë¤¥«¥­­ëå áâà ­¨æ
cp 3
jr z,.L7
ld a,(MemId) ;id ¡«®ª  ¯ ¬ïâ¨
ld bc,3*256+Bios.Emm_Fn4 ;¢ëç¨á«¨âì 䨧 ­®¬¥à 4-© ¡ ­ª¨
rst BiosRst
ret c ;¢ë室 á ®è¨¡ª®©
ld (BankP+3),a
.L7 ld hl,WinPage
ld de,BankP
ld a,(MemId+1) ;ª®«-¢® ¢ë¤¥«¥­­ëå áâà ­¨æ
ld b,a
cp 5
jr c,$+4
ld b,4 ;¯®¤ª«îç ¥¬ ­¥ ¡®«¥¥ 4 ¡ ­®ª
ld a,(FRam+1) ;áâ. ¤à¥á à á¯®«®¦¥­¨ï ª®¤ 
and 0xC0 ;®ª­® á à á¯®«®¦¥­¨¥¬ ª®¤ 
or a ;0-¥ ®ª­®
jr nz,.L8
ld c,a
ld a,(de)
ld (hl),a ;¯®¤ª«îç¨âì ¡ ­ªã ¯à®£à ¬¬ë
dec b
ret z ;¢ë室, ¥á«¨ ¡®«ìè¥ ­¥â ¡ ­®ª
ld a,c
inc de
.L8 inc hl
cp 0x40 ;1-¥ ®ª­®
jr nz,.L9
ld c,a
ld a,(de)
ld (hl),a ;¯®¤ª«îç¨âì ¡ ­ªã ¯à®£à ¬¬ë
dec b
ret z ;¢ë室, ¥á«¨ ¡®«ìè¥ ­¥â ¡ ­®ª
ld a,c
inc de
.L9 inc hl
cp 0x80 ;2-¥ ®ª­®
jr nz,.L10
ld c,a
ld a,(de)
ld (hl),a ;¯®¤ª«îç¨âì ¡ ­ªã ¯à®£à ¬¬ë
dec b
ret z ;¢ë室, ¥á«¨ ¡®«ìè¥ ­¥â ¡ ­®ª
ld a,c
inc de
.L10 inc hl ;¨­ ç¥ 3-¥ ®ª­®
ld a,(de)
ld (hl),a ;¯®¤ª«îç¨âì ¡ ­ªã ¯à®£à ¬¬ë
ret
;[]=========================================================================[]
;[] ‚ëç¨á«¥­¨¥ ­¥®¡å®¤¨¬®£® ª®«-¢  ¡ ­®ª ¤«ï § £à㧪¨ ä ©«  ¢ ¯ ¬ïâì []
;[] ‚室: HL:IX - ¤«¨­  ä ©«  ¢ ¡ ©â å []
;[] DE - ª®«-¢® ¡ ©â ¤«ï § £à㧪¨ ¢ 1-î ¡ ­ªã []
;[] ‚ë室: A - ª®«-¢® ­¥®¡å®¤¨¬ëå ¡ ­®ª []
;[] ä« £ C - ®è¨¡ª , ª®¤ ®è¨¡ª¨ ¢ A []
;[]=========================================================================[]
NBank:
push ix
ld b,h
ld c,l
pop hl
inc bc
xor a
inc a
sbc hl,de
jr nc,$+4
jr .L5
ld de,16384 ;à §¬¥à ¡ ­ª¨
push af
.L2 pop af
.L1 inc a
jr z,.L3
sbc hl,de
jr nc,.L1
.L5 dec bc
push af
ld a,b
or c
jr nz,.L2
pop af
or a ;á¡à®á¨âì ä« £ C
ret
.L3 ld a,0x1E ;"<22>¥¤®áâ â®ç­® ¯ ¬ïâ¨"
; JP ErrorDSS
ret
BankP ds 4 ;­®¬¥à  ¡ ­®ª § £à㦠¥¬®© ¯à®£¨
MemId ds 3 ;id-¡«®ª  ¯ ¬ï⨠¯®¤ ä ©«,
;ª®«-¢® ¢ë¤¥«¥­­ëå ¡ ­®ª,
;áç¥â稪 § £à㦥­­ëå ¡ ­®ª
FId db 0 ;ä ©«®¢ë© ¬ ­¨¯ã«ïâ®à
FDebug ds 128
db 0
FStart dw 0x4200
FRam dw 0 ; ¤à¥á à á¯®«®¦¥­¨ï ª®¤  ¢ ¯ ¬ïâ¨

246
KDUMP.ASM Normal file
View File

@ -0,0 +1,246 @@
;[]=========================================================================[]
;[] Ž¡à ¡®âª  ª« ¢¨ âãàë ¢ ®ª­¥ ¤ ¬¯  []
;[] v0.10 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 31.03.2006 []
;[]=========================================================================[]
KDump:
ld a,b ;á®áâ®ï­¨¥ <Shift><Alt><Ctrl>
and 11110000b
jr z,.L100
;Ž¡à ¡®âª  ª®¬¡¨­ æ¨¨ Ctrl + ᨬ¢®«
.L10 cp 00100000b ;<Ctrl>
jp nz,.L100
ld a,d ;¯®§¨æ¨®­­ë© ª®¤
cp 0x80+0x51 ;<Ctrl>+<End)
jr nz,.L11
ld hl,.Coordinate ;⥪ãé ï ª®«®­ª 
ld a,16
cp (hl)
jr nc,$+4
ld a,32
inc a
ld (hl),a
jp Keyb-3
.L11 cp 0x80+0x57 ;<Ctrl>+<Home)
jp nz,Keyb-3
; jr nz,.L11
ld hl,.Coordinate ;⥪ãé ï ª®«®­ª 
ld a,18
cp (hl)
jr c,$+8
ld a,2
cp (hl)
jr c,$+3
dec a
ld (hl),a
jp Keyb-3
;Ž¡à ¡®âª  ¯®§¨æ¨®­­®£® ª®¤ 
.L100 ld a,e ;ASCII ª®¤
ld (.L200+1),a
ld a,d ;¯®§¨æ¨®­­ë© ª®¤
ld de,(.Coordinate) ;⥪ã騥 ª®®à¤¨­ âë ªãàá®à 
cp 0x56 ;<Right>
jr nz,.L101
ld a,(.Descript+2) ;ª®«-¢® ª®«®­®ª
cp e
ld a,e
jr nz,$+3
xor a
inc a
ld (.Coordinate),a ;⥪ãé ï ª®«®­ª 
jp Keyb-3
.L101 cp 0x54 ;<Left>
jr nz,.L102
ld a,e ;⥪ãé ï ª®«®­ª 
cp 1
jr nz,$+6
ld a,(.Descript+2) ;ª®«-¢® ª®«®­®ª
inc a
dec a
ld (.Coordinate),a ;⥪ãé ï ª®«®­ª 
jp Keyb-3
.L102 ld hl,(.Descript)
cp 0x52 ;<Down>
jr nz,.L103
ld a,d ;⥪ãé ï áâப 
cp l
jr nz,.L104
ld hl,(Dump1)
ld bc,16
add hl,bc
ld (Dump1),hl
jp Keyb-11
.L104 inc a
ld (.Coordinate+1),a
jp Keyb-3
.L103 cp 0x58 ;<Up>
jr nz,.L105
ld a,d ;⥪ãé ï áâப 
cp h
jr nz,.L107
ld hl,(Dump1)
ld bc,16
or a
sbc hl,bc
ld (Dump1),hl
jp Keyb-11
.L107 dec a
ld (.Coordinate+1),a
jp Keyb-3
.L105 cp 0x53 ;<PgDown>
jr nz,.L108
ld a,d ;⥪ãé ï áâப 
cp l
jr nz,.L106
ld hl,(Dump1)
ld bc,16*7
add hl,bc
ld (Dump1),hl
jp Keyb-11
.L106 ld a,l ;­  ¯®á«¥¤­îî áâபã
ld (.Coordinate+1),a
jp Keyb-3
.L108 cp 0x59 ;<PgUp>
jr nz,.L110
ld a,d ;⥪ãé ï áâப 
cp h
jr nz,.L109
ld hl,(Dump1)
ld bc,16*7
or a
sbc hl,bc
ld (Dump1),hl
jp Keyb-11
jr nz,.L109
.L109 ld a,h ;­  ¯¥à¢ãî áâபã
ld (.Coordinate+1),a
jp Keyb-3
.L110 cp 0x57 ;<Home>
jr nz,.L111
ld a,1
ld (.Coordinate),a ;¯¥à¢ ï ª®«®­ª 
jp Keyb-3
.L111 cp 0x51 ;<End>
jr nz,.L200
ld a,(.Descript+2)
ld (.Coordinate),a ;¯¥à¢ ï ª®«®­ª 
jp Keyb-3
;Ž¡à ¡®âª  ASCII ª®¤®¢
.L200 ld a,0 ;ASCII ª®¤
cp 0x0D ;<Enter>
jp nz,Keyb+6
.L201 ld b,0 ;¤«¨­  áâப¨ ¢¢®¤ 
ld hl,0 ;ª®®à¤¨­ âë áâப¨ ¢¢®¤ 
ld a,b
dec a
jr z,.L202
dec a
jr z,.L203
call InputLine ;¢¢®¤  ¤à¥á 
jp c,Keyb-3 ;§ ¢¥à襭¨¥ ¢¢®¤  ¯® <ESC>
call PutAdres
jp c,.L201 ;®è¨¡ª  ¢ ¢¥¤¥­­ëå ¤ ­­ëå
ld de,16 ;ª®«-¢® ¡ ©â ¢ áâப¥
ld a,(.Coordinate+1) ;­®¬¥à áâப¨
sub 0x16 ;ª®®à¤¨­ â  ¯¥à¢®© áâப¨
jr z,$+8
ld b,a
or a
sbc hl,de
djnz $-3
ld (Dump1),hl
jp Keyb-11
.L202 call InputLineEd ;¢¢®¤ ᨬ¢®« 
jp c,Keyb-3 ;§ ¢¥à襭¨¥ ¢¢®¤  ¯® <ESC>
call .L299
ld a,c
sub 18 ;¯¥à¢ ï ª®«®­ª  ¢ ¯®«¥ ¤ ­­ëå
ld c,a
ld a,(InputLine.Buffer)
ld de,256*18+34 ;1-ï ¨ ¯®á«¥¤­ïï+1 ª®«®­ª¨
jr .L204
.L203 call InputLineEd ;¢¢®¤ ª®¤  ᨬ¢®« 
jp c,Keyb-3 ;§ ¢¥à襭¨¥ ¢¢®¤  ¯® <ESC>
call PutCode
jp c,.L201 ;®è¨¡ª  ¢ ¢¥¤¥­­ëå ¤ ­­ëå
call .L299
ld a,c
sub 2 ;¯¥à¢ ï ª®«®­ª  ¢ ¯®«¥ ¤ ­­ëå
ld c,a
ld a,(PutCode.Buffer) ;§ ¯¨á뢠¥¬ë© ¡ ©â
ld de,256*2+18 ;1-ï ¨ ¯®á«¥¤­ïï+1 ª®«®­ª¨
.L204 add hl,bc
call Ld_hl_a
ld a,(InputLine.EntEnd) ;¢¢®¤ § ª®­ç¥­ ENTER
or a
jp nz,Keyb-11 ;¤ 
ld hl,.Coordinate ;⥪ã騥 ª®®à¤¨­ âë ªãàá®à 
inc (hl)
ld a,e ;¯¥à¢ ï ª®«®­ª  ¤ ­­ëå
cp (hl)
jr nz,.L205
ld a,d
ld (hl),a ;¢ ­ ç «® áâப¨ ª®¤ 
inc hl
ld a,0x1D ;¯®á«¥¤­ïï áâப  ¤ ¬¯ 
cp (hl)
jr nz,.L205-1
ld hl,(Dump1) ;ᤢ¨­ãâì ¤ ¬¯
ld bc,16
add hl,bc
ld (Dump1),hl
jr .L205
inc (hl)
.L205 call CursorRes ;¢ëª« ªãàá®à
call Refresh ;®¡­®¢«¥­¨¥ íªà ­ 
call Cursor ;¢ª« ªãàá®à
call CursorSet
jp .L201
.L299 ld de,16 ;ª®«-¢® ¡ ©â ¢ áâப¥
ld hl,(Dump1) ; ¤à¥á ¢ ¯¥à¢®© áâப¥
ld bc,(.Coordinate)
ld a,b
sub 0x16 ;ª®®à¤¨­ â  ¯¥à¢®© áâப¨
ld b,a
ret z
add hl,de
djnz $-1
ret
.Coordinate dw 0x1601 ;ªãàá®à (áâà/ª®« ªãàá®à )
.Descript:
dw 0x161D ;¯¥à¢ ï/¯®á«¥¤­ïï áâப  ®ª­ 
db 33 ;ª®«-¢® ª®«®­®ª
db 0x0E ;N á⮫¡æ  ª®«®­ª¨
db 5 ;è¨à¨­  ª®«®­ª¨
db 0x15,2,0x17,2
db 0x1A,2,0x1C,2
db 0x1F,2,0x21,2
db 0x24,2,0x26,2
db 0x29,2,0x2B,2
db 0x2E,2,0x30,2
db 0x33,2,0x35,2
db 0x38,2,0x3A,2
db 0x3E,1,0x3F,1,0x40,1,0x41,1
db 0x42,1,0x43,1,0x44,1,0x45,1
db 0x46,1,0x47,1,0x48,1,0x49,1
db 0x4A,1,0x4B,1,0x4C,1,0x4D,1

1202
KEYB.ASM Normal file

File diff suppressed because it is too large Load Diff

440
KREG.ASM Normal file
View File

@ -0,0 +1,440 @@
;[]=========================================================================[]
;[] Ž¡à ¡®âª  ª« ¢¨ âãàë ¢ ®ª­¥ ॣ¨áâ஢ []
;[] v0.03 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 11.03.2006 []
;[] v0.10 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 14.05.2006 []
;[]=========================================================================[]
KReg:
; ld a,b ;á®áâ®ï­¨¥ <Shift><Alt><Ctrl>
; and 0b11110000
; jr z,.L100
;Ž¡à ¡®âª  ª®¬¡¨­ æ¨¨ Shift + ᨬ¢®«
; and 0b11000000 ;<Shift>
; or a
; jp z,Keyb+6
; ld a,d
; cp 0x80+0x0F ;Shift+Tab
; jp nz,Keyb+6
; ld a,2 ;­®¬¥à ®ª­  ¤ ¬¯ 
; ld (Keyb.WinScreen),a
; jp Keyb-3
;Ž¡à ¡®âª  ¯®§¨æ¨®­­®£® ª®¤ 
.L100 ld a,e ;ASCII ª®¤
ld (.L200+1),a
ld a,d ;¯®§¨æ¨®­­ë© ª®¤
cp 0x56 ;<Right>
jr nz,.L101
call .DescCalc
ld a,(hl) ;ª®«-¢® ª®«®­®ª
cp e
ld a,e
jr nz,$+3
xor a
inc a
ld (.Coordinate),a ;⥪ãé ï ª®«®­ª 
jp Keyb-3
.L101 cp 0x54 ;<Left>
jr nz,.L102
call .DescCalc
ld a,e ;⥪ãé ï ª®«®­ª 
cp 1
jr nz,$+4
ld a,(hl) ;ª®«-¢® ª®«®­®ª
inc a
dec a
ld (.Coordinate),a ;⥪ãé ï ª®«®­ª 
jp Keyb-3
.L102 ld hl,(.Descript)
ld de,(.Coordinate)
cp 0x52 ;<Down>
jr nz,.L103
ld a,d ;⥪ãé ï áâப 
cp l
jr nz,.L104
ld a,h ;1-ï áâப 
dec a
.L104 inc a
jr .L107+1
.L103 cp 0x58 ;<Up>
jr nz,.L105
ld a,d ;⥪ãé ï áâப 
cp h
jr nz,.L107
ld a,l ; ¤à¥á ¯®á«¥¤­¥© áâப¨
inc a
.L107 dec a
ld h,a
ld l,1
ld (.Coordinate),hl
jp Keyb-3
.L105 ld b,3
cp 0x53 ;<PgDown>
jr nz,.L108
ld hl,.PgDown
ld a,d ;⥪ãé ï áâப 
cp (hl)
jr c,$+5
inc hl
djnz $-4
ld a,(hl)
jr .L107+1
.L108 cp 0x59 ;<PgUp>
jr nz,.L110
ld hl,.PgUp
ld a,d ;⥪ãé ï áâப 
cp (hl)
jr nc,$+5
inc hl
djnz $-4
ld a,(hl)
dec a
jr .L107+1
.L110 cp 0x57 ;<Home>
jr nz,.L111
ld a,1
ld (.Coordinate),a ;¯¥à¢ ï ª®«®­ª 
jp Keyb-3
.L111 cp 0x51 ;<End>
jr nz,.L200
call .DescCalc
ld a,(hl) ;¯®á«¥¤­ïï ª®«®­ª 
ld (.Coordinate),a ;¯¥à¢ ï ª®«®­ª 
jp Keyb-3
;.L112 cp 0x0F ;<Tab>
; jr nz,.L200
; ld a,4 ;­®¬¥à ®ª­  «¨á⨭£ 
; ld (Keyb.WinScreen),a
; jp Keyb-3
;Ž¡à ¡®âª  ASCII ª®¤®¢
.L200 ld a,0 ;ASCII ª®¤
cp 0x0D ;<Enter>
jp nz,Keyb+6
.L201 ld b,0 ;¤«¨­  áâப¨ ¢¢®¤ 
ld hl,0 ;ª®®à¤¨­ âë áâப¨ ¢¢®¤ 
ld a,b
dec a
jp nz,.L205
ld de,(.Coordinate)
ld a,d ;­®¬¥à áâப¨
ld c,e ;­®¬¥à ª®«®­ª¨
ex de,hl ;ª®®à¤¨­ âë
ld hl,Reg._AF+1 ;ॣ A
cp 6 ;áâப  á ¯ à®© AF?
jr z,.L207
ld hl,Reg._AF_+1 ;ॣ A'
cp 11 ;áâப  á ¯ à®© AF'?
jr z,.L207
ld hl,Reg._AF ;ॣ F
cp 7 ;áâப  á ¯ à®© AF?
jr z,$+9
ld hl,Reg._AF_ ;ॣ F'
cp 12 ;áâப  á ¯ à®© AF'?
jr nz,.L206
ld a,c ;ª®à४æ¨ï ­®¬¥à®¢ ¡¨â
cp 4 ;ª®«®­ª  4..6?
jr c,$+5
inc c
jr .L207-4
cp 3 ;ª®«®­ª  3?
jr z,.L207-4
dec c
ld a,7
jr .L208
.L207 ld a,10 ;ª®«®­ª¨ á ¡¨â ¬¨
cp c
jr z,.L206
dec a
.L208 sub c ;­®¬¥à ¡¨â 
rlca
rlca
rlca ;§ £®â®¢ª  ¤«ï ¡¨â®¢ëå ®¯¥à æ¨©
ld b,a
or 01000110b ;¤«ï BIT
ld ($+16),a
ld a,b
or 11000110b ;¤«ï SET
ld ($+14),a
ld a,b
or 10000110b ;¤«ï RES
ld ($+13),a
bit 0,(hl) ;á®áâ®ï­¨¥ ¡¨â 
jr nz,$+7
set 0,(hl) ;ãáâ ­®¢ª  ¡¨â 
jp Keyb-11
res 0,(hl) ;á¡à®á ¡¨â 
jp Keyb-11
.L206 ex de,hl ;ª®®à¤¨­ âë
call InputLine ;¢¢®¤ ᨬ¢®« 
jp c,Keyb-3 ;§ ¢¥à襭¨¥ ¢¢®¤  ¯® <ESC>
ld de,.L204-5
push de
ld de,(.Coordinate)
ld hl,Reg._AF+1
ld a,d
ld de,0
cp 6 ;áâப  á ¯ à®© AF
ret z
ld hl,Reg._AF_+1
cp 11 ;áâப  á ¯ à®© AF'?
ret z
ld de,(.Coordinate)
ld a,e
sub 6
ld e,a
jr .L209
.L205 dec a ;¡ ©âë ¢ ¬¨­¨¤ ¬¯¥
jr nz,.L202
call InputLine ;¢¢®¤ ç¨á« 
jp c,Keyb-3 ;§ ¢¥à襭¨¥ ¢¢®¤  ¯® <ESC>
call PutCode
jp c,.L201 ;®è¨¡ª  ¢ ¢¥¤¥­­ëå ¤ ­­ëå
ld de,.L204
push de
ld de,(.Coordinate)
.L209 dec d
jr nz,$+6
ld hl,(Reg._IX)
ret
dec d
jr nz,$+6
ld hl,(Reg._IY)
ret
dec d
jr nz,$+6
ld hl,(Reg._HL)
ret
dec d
jr nz,$+6
ld hl,(Reg._DE)
ret
dec d
jr nz,$+6
ld hl,(Reg._BC)
ret
dec d
dec d
dec d
jr nz,$+6
ld hl,(Reg._HL_)
ret
dec d
jr nz,$+6
ld hl,(Reg._DE_)
ret
dec d
ld hl,(Reg._BC_)
ret
ld a,(InputLine.Buffer)
jr $+7
.L204 ld a,(PutCode.Buffer) ;§ ¯¨á뢠¥¬ë© ¡ ©â
dec e
dec e ;ᬥ饭¨¥ ¢ ¬¨­¨¤ ¬¯¥
add hl,de ; ¤à¥á ¢ ¯ ¬ïâ¨
call Ld_hl_a ;§ ¯¨á «¨
jp Keyb-11
.L202 dec a ;®¤­®¡ ©â­®¥ ç¨á«® (­®¬¥à ¡ ­ª¨)
jr nz,.L203
call InputLine ;¢¢®¤ ç¨á« 
jp c,Keyb-3 ;§ ¢¥à襭¨¥ ¢¢®¤  ¯® <ESC>
call PutAdres
jp c,.L201 ;®è¨¡ª  ¢ ¢¥¤¥­­ëå ¤ ­­ëå
ld de,Keyb-11
push de
ld a,l
ld de,(.Coordinate)
dec e ;ª®«®­ª  ¢ áâப¥
jr nz,$+6
ld (WinPage),a ;0-¥ ®ª­®
ret
dec e
jr nz,$+8
ld (WinPage+1),a ;1-¥ ®ª­®
out (EmmWin.P1),a
ret
dec e
jr nz,$+6
ld (WinPage+2),a ;2-¥ ®ª­®
ret
ld (WinPage+3),a ;3-¥ ®ª­®
out (EmmWin.P3),a
ret
.L203 dec a ;£«ã¡¨­  á⥪ 
jr nz,.L210
xor a ;®¡­ã«¨âì
ld (StackDown),a
jp Keyb-11
.L210 ;dec a ;¤¢ãå¡ ©â­®¥ ç¨á«®
;jp nz,Keyb+6
call InputLine ;¢¢®¤ ç¨á«  ¢ ॣ ¯ àë
jp c,Keyb-3 ;§ ¢¥à襭¨¥ ¢¢®¤  ¯® <ESC>
call PutAdres
jp c,.L201 ;®è¨¡ª  ¢ ¢¥¤¥­­ëå ¤ ­­ëå
ld de,Keyb-11
push de
ld de,(.Coordinate)
dec d
jr nz,$+6
ld (Reg._IX),hl
ret
dec d
jr nz,$+6
ld (Reg._IY),hl
ret
dec d
jr nz,$+6
ld (Reg._HL),hl
ret
dec d
jr nz,$+6
ld (Reg._DE),hl
ret
dec d
jr nz,$+6
ld (Reg._BC),hl
ret
dec d
jr nz,$+6
ld (Reg._AF),hl
ret
dec d
dec d
jr nz,$+6
ld (Reg._HL_),hl
ret
dec d
jr nz,$+6
ld (Reg._DE_),hl
ret
dec d
jr nz,$+6
ld (Reg._BC_),hl
ret
dec d
jr nz,$+6
ld (Reg._AF_),hl
ret
dec d
dec d
jr nz,$+13
dec e
jr z,$+6
ld (Reg._IR),hl
ret
ld (Reg._PC),hl
ret
dec e
jr z,.L211
.Rez ld bc,Rezident.End-Rezident;¤«¨­  १¨¤¥­â 
push hl ;­®¢®¥ ­ ç «® १¨¤¥­â 
add hl,bc ;­®¢ë© ª®­¥ç­ë©  ¤à¥á १¨¤¥­â 
ld a,h
and 11000000b
ld d,a
pop hl
ld a,h
and 11000000b
cp d ;१¨¤¥­â ¯¥à¥á¥ª ¥â ®ª­®?
jr z,.L212
ld h,d
ld l,0
dec hl ;¯®á«¥¤­¨©  ¤à¥á ®ª­  á १¨¤¥­â®¬
or a
sbc hl,bc
.L212 ld (RezAdr),hl
ret
.L211 ld (Reg._SP),hl
ret
;<3B> áç¥â ¤¥áªà¨¯â®à  áâப¨ ¢ ®ª­¥ ॣ¨áâ஢
.DescCalc ld de,(.Coordinate) ;⥪ã騥 ª®®à¤¨­ âë
ld hl,.Descript+1
ld b,d ;­®¬¥à áâப¨
inc hl ;¤¥áªà¨¯â®à áâப¨
inc hl
djnz $-2
ld a,(hl) ;­®¬¥à ¤¥áªà¨¯â®à  áâப¨
add a,a
ld c,a
dec hl
ld b,(hl)
push bc
ld b,0
ld hl,.DTabl
add hl,bc
ld a,(hl) ;­ ç «® ¤¥áªà¨¯â®à 
inc hl
ld h,(hl)
ld l,a
pop bc
ret
.PgDown db 2,7,12,15
.PgUp db 14,9,4,2
.Coordinate dw 0x0101 ;ªãàá®à (áâà/ª®« ªãàá®à )
.Descript:
dw 0x010F ;¯¥à¢ ï/ª®«-¢® áâப ®ª­ 
db 0x01,0 ;­®¬¥à áâப¨, ­®¬¥à ¤¥áªà¨¯â®à 
db 0x02,0,0x04,0
db 0x05,0,0x06,0,0x07,1
db 0x08,2,0x0A,0,0x0B,0
db 0x0C,0,0x0D,1,0x0E,2
db 0x10,3,0x12,4,0x14,5
.DTabl dw .D1,.D2,.D3,.D4,.D5,.D6
.D1 db 9 ;ª®«-¢® ª®«®­®ª ¤«ï ¯ à
db 0x04 ;N á⮫¡æ  ª®«®­ª¨
db 5 ;è¨à¨­  ª®«®­ª¨
db 0x0A,2,0x0C,2,0x0F,2,0x11,2
db 0x14,1,0x15,1,0x16,1,0x17,1
.D2 db 10 ;ª®«-¢® ª®«®­®ª ¤«ï ¯ àë AF
db 0x04 ;N á⮫¡æ  ª®«®­ª¨
db 5 ;è¨à¨­  ª®«®­ª¨
db 0x0B,1,0x0C,1,0x0D,1,0x0E,1
db 0x0F,1,0x10,1,0x11,1,0x12,1
db 0x15,1
.D3 db 6 ;ª®«-¢® ª®«®­®ª ¤«ï ä« £®¢
db 0x01 ;N á⮫¡æ  ª®«®­ª¨
db 1 ;è¨à¨­  ª®«®­ª¨
db 0x02,1,0x04,1
db 0x06,1,0x07,1,0x08,1
.D4 db 2 ;ª®«-¢® ª®«®­®ª ¤«ï PC IR
db 0x04 ;N á⮫¡æ  ª®«®­ª¨
db 5 ;è¨à¨­  ª®«®­ª¨
db 0x0D,5
.D5 db 4 ;ª®«-¢® ª®«®­®ª ¤«ï ¡ ­®ª
db 0x02 ;N á⮫¡æ  ª®«®­ª¨
db 3 ;è¨à¨­  ª®«®­ª¨
db 0x08,3,0x0E,3,0x14,3
.D6 db 3 ;ª®«-¢® ª®«®­®ª
db 0x04 ;N á⮫¡æ  ª®«®­ª¨
db 5 ;è¨à¨­  ª®«®­ª¨
db 0x0A,4
db 0x13,5

212
KSTACK.ASM Normal file
View File

@ -0,0 +1,212 @@
;[]=========================================================================[]
;[] Ž¡à ¡®âª  ª« ¢¨ âãàë ¢ ®ª­¥ ¤ ¬¯  á⥪  []
;[] v0.10 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 18.03.2006 []
;[]=========================================================================[]
KStack:
ld a,b ;á®áâ®ï­¨¥ <Shift><Alt><Ctrl>
and 11110000b
; ld b,a
jr z,.L100
;Ž¡à ¡®âª  ª®¬¡¨­ æ¨¨ Shift + ᨬ¢®«
; and 11000000b ;<Shift>
; or a
; jr z,.L10
; ld a,d
;; cp 0x80+0x0F ;Shift+Tab
;; jp nz,Keyb+6
;; ld a,3 ;­®¬¥à ®ª­  ¤ ¬¯ 
;; ld (Keyb.WinScreen),a
; jp Keyb-3
;Ž¡à ¡®âª  ª®¬¡¨­ æ¨¨ Ctrl + ᨬ¢®«
; ld a,b
cp 00100000b ;<Ctrl>
jp nz,Keyb+6
ld a,d ;¯®§¨æ¨®­­ë© ª®¤
cp 0x80+0x2B ;<Ctrl>+<X>
jp nz,Keyb+6
ld hl,(StackDump)
ld bc,(.Coordinate)
ld a,b
ld b,0x16 ;x-ª®à¤¨­ â  1 áâப¨
sub b
rlca ;*2
ld b,0
ld c,a
or a
sbc hl,bc
ld (Reg._SP),hl
ld a,-1
ld (PrintStrSP.StrSp),a
jp Keyb-11
;Ž¡à ¡®âª  ¯®§¨æ¨®­­®£® ª®¤ 
.L100 ld a,e ;ASCII ª®¤
ld (.L200+1),a
ld a,d ;¯®§¨æ¨®­­ë© ª®¤
ld de,(.Coordinate) ;⥪ã騥 ª®®à¤¨­ âë ªãàá®à 
cp 0x56 ;<Right>
jr nz,.L101
ld a,(.Descript+2) ;ª®«-¢® ª®«®­®ª
cp e
ld a,e
jr nz,$+3
xor a
inc a
ld (.Coordinate),a ;⥪ãé ï ª®«®­ª 
jp Keyb-3
.L101 cp 0x54 ;<Left>
jr nz,.L102
ld a,e ;⥪ãé ï ª®«®­ª 
cp 1
jr nz,$+6
ld a,(.Descript+2) ;ª®«-¢® ª®«®­®ª
inc a
dec a
ld (.Coordinate),a ;⥪ãé ï ª®«®­ª 
jp Keyb-3
.L102 ld hl,(.Descript)
cp 0x52 ;<Down>
jr nz,.L103
ld a,d ;⥪ãé ï áâப 
cp l
jr nz,.L104
ld hl,(StackDump) ; ¤à¥á 1-®© áâப¨
dec hl
dec hl
ld (StackDump),hl
ld hl,PrintStrSP.StrSp ;áâப  ¢¥àè.á⥪ 
ld a,-1
cp (hl) ;¢ ¤ ¬¯¥?
jr z,$+3
dec (hl)
jp Keyb-11
.L104 inc a
ld (.Coordinate+1),a
jp Keyb-3
.L103 cp 0x58 ;<Up>
jr nz,.L105
ld a,d ;⥪ãé ï áâப 
cp h
jr nz,.L107
ld hl,(StackDump) ; ¤à¥á 1-®© áâப¨
inc hl
inc hl
ld (StackDump),hl
ld hl,PrintStrSP.StrSp ;áâப  ¢¥àè.á⥪ 
ld a,(hl)
cp 7 ;­  ¯®á«¥¤­¥© áâப¥?
jr c,$+5
ld a,-2
ld (hl),a ;¢¥àè.á⥪  ­¥ ¯®¯ ¤ ¥â ¢ ¤ ¬¯
inc (hl)
jp Keyb-11
.L107 dec a
ld (.Coordinate+1),a
jp Keyb-3
.L105 cp 0x53 ;<PgDown>
jr nz,.L108
ld a,d ;⥪ãé ï áâப 
cp l
jr nz,.L106
ld hl,(StackDump)
ld bc,2*7
or a
sbc hl,bc
ld (StackDump),hl
ld a,-1
ld (PrintStrSP.StrSp),a ;áâப  ¢¥àè.á⥪ 
jp Keyb-11
.L106 ld a,l ;­  ¯®á«¥¤­îî áâபã
ld (.Coordinate+1),a
jp Keyb-3
.L108 cp 0x59 ;<PgUp>
jr nz,.L110
ld a,d ;⥪ãé ï áâப 
cp h
jr nz,.L109
ld hl,(StackDump)
ld bc,2*7
add hl,bc
ld (StackDump),hl
ld a,-1
ld (PrintStrSP.StrSp),a ;áâப  ¢¥àè.á⥪ 
jp Keyb-11
.L109 ld a,h ;­  ¯¥à¢ãî áâபã
ld (.Coordinate+1),a
jp Keyb-3
.L110 cp 0x57 ;<Home>
jr nz,.L200
ld a,6
ld (PrintStrSP.StrSp),a ;áâப  ¢¥àè.á⥪ 
jp Keyb-11
;.L111 cp 0x0F ;<Tab>
; jr nz,.L200
; ld a,1 ;­®¬¥à ®ª­  «¨á⨭£ 
; ld (Keyb.WinScreen),a
; jp Keyb-3
;Ž¡à ¡®âª  ASCII ª®¤®¢
.L200 ld a,0 ;ASCII ª®¤
cp 0x0D ;<Enter>
jp nz,Keyb+6
.L201 ld b,0 ;¤«¨­  áâப¨ ¢¢®¤ 
ld hl,0 ;ª®®à¤¨­ âë áâப¨ ¢¢®¤ 
call InputLine ;¢¢®¤ ç¨á« 
jp c,Keyb-3 ;§ ¢¥à襭¨¥ ¢¢®¤  ¯® <ESC>
call PutAdres
jp c,.L201 ;®è¨¡ª  ¢ ¢¥¤¥­­ëå ¤ ­­ëå
ld bc,(.Coordinate)
ld a,b
ld b,0x16 ;x-ª®à¤¨­ â  1 áâப¨
sub b
ex de,hl
ld hl,(StackDump)
ld b,a ;­®¬¥à áâப¨ 0..7
rlca ;*2
dec c
ld c,a
jr nz,.L202 ;¯¥à¥å®¤ - ¥á«¨ ¤ ­­ë¥, ¨­ ç¥  «à¥á
ld a,(PrintStrSP.StrSp) ;áâப  ¢¥àè.á⥪ 
cp b
jr z,.L203
ld b,0 ;­¥ ­  ¢¥à設¥ á⥪ 
ex de,hl ;HL - ¢¢¥¤¥­­ë©  ¤à¥á
add hl,bc
ld (StackDump),hl
ld a,-1
ld (PrintStrSP.StrSp),a
jr .L203+4
.L203 ld (Reg._SP),de ; ¤à¥á ¢¢¥¤¥­ ­  ¢¥à設¥ á⥪ 
jp Keyb-11
.L202 ld b,0 ;¢¢®¤ ¤ ­­ëå
or a
sbc hl,bc
ld a,d ;§ ¯¨áì ¤ ­­ëå ¢ ¯ ¬ïâì
call Ld_hl_a
inc hl
ld a,e
call Ld_hl_a
jp Keyb-11
.Coordinate dw 0x1601 ;ªãàá®à (áâà/ª®« ªãàá®à )
.Descript:
dw 0x161D ;¯¥à¢ ï/¯®á«¥¤­ïï áâப  ®ª­ 
db 2 ;ª®«-¢® ª®«®­®ª
db 0x01 ;N á⮫¡æ  ª®«®­ª¨
db 5 ;è¨à¨­  ª®«®­ª¨
db 0x07,5

87
REZ.ASM Normal file
View File

@ -0,0 +1,87 @@
;[]=========================================================================[]
;[] <20>¥§¨¤¥­â ®â« ¤ç¨ª  []
;[] v0.03 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 24.02.2006 []
;[] <20>ਭ樯 à ¡®âë (¤¢  ¢ à¨ ­â ): []
;[] 1. <20>¥§¨¤¥­â à á¯®«®¦¥­ ­¥ ¢® ¢â®à®¬ ®ª­¥ ¯ ¬ï⨠(0x8000...0xBFFF) []
;[] ˆ§ ®â« ¤ç¨ª  £®â®¢¨âáï १¨¤¥­â (­ áâà ¨¢ îâáï ¢á¥  ¤à¥á ) ¨ ª®¯¨àã¥âáï []
;[] ¯®  ¤à¥áã à á¯®«®¦¥­¨ï, ã¯à ¢«¥­¨¥ ¨§ ®â« ¤ç¨ª  ¯¥à¥¤ ¥âáï ­  ¬¥âªã []
;[] Rezident.Start1, ¯®á«¥ 祣® ¯à®¨á室¨â ¢®áâ ­®¢«¥­¨¥ ¡ ­ª¨ ¯ ¬ïâ¨, à á- []
;[] ¯®«®¦¥­­®© ¯®¤ ®â« ¤ç¨ª®¬ ¨ ¢ë¯®«­¥­¨¥ ®â« ¦¨¢ ¥¬®© ª®¬ ­¤ë. ‚®§¢à â []
;[] ¢ १¨¤¥­â ®áãé¥á⢫ï¥âáï ­  ¬¥âªã Rezident.RetIn1 ¨ ¤ «¥¥ ¯®á«¥ ¢®á- []
;[] â ­®¢«¥­¨ï ¡ ­ª¨ á ®â« ¤ç¨ª®¬ ¢®§¢à â ¢ ®â« ¤ç¨ª. []
;[] 2. <20>¥§¨¤¥­â à á¯®«®¦¥­ ¢® ¢â®à®¬ ®ª­¥ ¯ ¬ï⨠(0x8000...0xBFFF) []
;[] <20>®áª®«ìªã ¢ í⮬ ®ª­¥ à ¡®â ¥â á ¬ ®â« ¤ç¨ª, â® ¯¥à¥å®¤ ¢ १¨¤¥­â ¨ []
;[] ¢®§¢à â ¢ ®â« ¤ç¨ª ¯®á«¥ âà áá¨à®¢ª¨ ª®¬ ­¤ë ¢ë¯®«­ï¥âáï ¯à¨ ¯®¬®é¨ []
;[] ¢á¯®¬®£ â¥«ì­®© ¯à®æ¥¤ãàë ¤«¨­®© 7 ¡ ©â à á¯®«®¦¥­®© ¯®  ¤à¥áã []
;[] AdrTmpBuf. <20>®á«¥ ª®à४樨 ¢á¥å  ¤à¥á®¢ ¢ ®â« ¤ç¨ª¥ ¨ á®åà ­¥­¨¨  ªªã- []
;[] ¬ã«ïâ®à  ®â« ¦¨¢ ¥¬®© ¯à®£à ¬¬ë ¯®  ¤à¥áã Rezident+1 ¨ ¯ àë HL ¯®  ¤à¥- []
;[] ce Rezident+2 ã¯à ¢«¥­¨¥ ¯¥à¥¤ ¥âáï ¯®  ¤à¥áã AdrTmpBuf, £¤¥ à á¯®«®¦¥­ []
;[] á«¥¤ãî騩 ª®¤ ®âª«îç î騩 ¡ ­ªã á ®â« ¤ç¨ª®¬: []
;[] ld a,<2C>®¬¥à<C2A5> ­ª¨<C2AA>®¤Žâ« ¤ç¨ª®¬ []
;[] out (<28>®¬¥à<C2A5>®àâ 2Žª­ ),a []
;[] jp Rezident.Start []
;[] „ «¥¥ १¨¤¥­â ¢®áâ ­ ¢«¨¢ ¥â 7 ¡ ©â § ¯®à祭ëå ¢ë襯ॢ¥¤¥­­®© ¯à®æ¥- []
;[] ¤ãன,   â ª¦¥ ¯ àã HL ¨  ªªã¬ã«ïâ®à ¨ ¯¥à¥å®¤¨â ª âà áá¨à®¢ª¥. ‚®§¢à â []
;[] ¯à®¨á室¨â ­  ¬¥âªã Rezident.RetIn, £¤¥ ¯®á«¥ á®åà ­¥­¨ï  ªªã¬ã«ïâ®à  ¨ []
;[] ¯ àë HL á®åà ­ï¥âáï 7 ¡ ©â ¯ ¬ï⨠¨§  ¤à¥á  AdrTmpBuf ¨ â㤠 ¯à®¯¨á뢠- []
;[] ¥âáï ª®¤ ¢®áâ ­®¢«¥­¨ï ¡ ­ª¨ á ®â« ¤ç¨ª®¬: []
;[] ld a,<2C>®¬¥à<C2A5> ­ª¨Žâ« ¤ç¨ª®¬ []
;[] out (<28>®¬¥à<C2A5>®àâ 2Žª­ ),a []
;[] jp ‚Žâ« ¤ç¨ª []
;[] <20>®á«¥ ¢®§¢à â  ¢ ®â« ¤ç¨ª ¢®áâ ­ ¢«¨¢ ¥âáï ¯ ¬ïâì § ¯®à祭 ï १¨¤¥­â®¬ []
;[] ¨ ¢à¥¬¥­­®© ¯à®æ¥¤ãன []
;[]=========================================================================[]
AdrTmpBuf equ 0xFF00
Rezident:
ds 11
.Start ld hl,0 ;¢®áâ. ¯ ¬ï⨠§ ¯®à祭­®© ¯à¨
ld (AdrTmpBuf),hl ;à §¬¥é¥­¨¨ १¨¤¥­â 
ld hl,0 ;¢® 2-¬ ®ª­¥
ld (AdrTmpBuf+2),hl
ld hl,0
ld (AdrTmpBuf+4),hl
ld a,0
ld (AdrTmpBuf+6),a
.K2 ld hl,(Rezident+2) ;¢®áâ ­®¢¨«¨ HL
jr .K3
;...¢®áâ ­®¢¨âì ¡ ­ªã ¢® 2-¬ ®ª­¥
.Start1 ld a,0xFF ;¡ ­ª  ¯®¤ demon'®¬
out (EmmWin.P2),a
.K3 ld a,(Rezident+1) ;¢®áâ ­®¢¨¬  ªªã¬ã«ïâ®à
.Step jp 0 ;¯¥à¥å®¤ ­  ¢ë¯®«­¥­¨¥
.RetIn ld (Rezident+1),a ;á®åà ­¨¬  ªªã¬ã«ïâ®à
.K4 ld (Rezident+2),hl ;á®åà ­¨¬ HL
ld hl,(AdrTmpBuf) ;á®åà ­¥­¨¥ ¯ ¬ïâ¨
.K5 ld (Rezident+4),hl
ld hl,(AdrTmpBuf+2)
ld (Rezident+6),hl
ld hl,(AdrTmpBuf+4)
ld (Rezident+8),hl
ld a,(AdrTmpBuf+6)
ld (Rezident+10),a
.BankD1 ld hl,0xFF3E ;ld a,0xFF - N ¡ ­ª¨ á ®â« ¤ç
ld (AdrTmpBuf),hl
ld hl,EmmWin.P2*256+0xD3 ;out (EmmWin.P2),a
ld (AdrTmpBuf+2),hl
.Return1 ld hl,0xC3 ;jp ¢ ®â« ¤ç¨ª
ld (AdrTmpBuf+4),hl
ld a,0
ld (AdrTmpBuf+6),a
in a,(EmmWin.P2) ;­®¬¥à ¡ ­ª¨ ¯®¤ demon'®¬
.K6 ld (Rezident),a ;á®åà ­¨«¨
jp AdrTmpBuf
.RetIn1 ld (Rezident+1),a ;á®åà ­¨¬  ªªã¬ã«ïâ®à
;...á®åà ­¨âì ¡ ­ªã ¨§ 2-£® ®ª­ 
in a,(EmmWin.P2) ;­®¬¥à ¡ ­ª¨ ¯®¤ demon'®¬
.K1 ld (Rezident),a ;á®åà ­¨«¨
.BankD ld a,0xFF ;¡ ­ª  á demon'®¬
out (EmmWin.P2),a
.Return jp 0
.End

64
SAVESCR.ASM Normal file
View File

@ -0,0 +1,64 @@
;[]=========================================================================[]
;[] ‘®åà ­¥­¨¥ íªà ­  ¢ ä ©« []
;[] v0.03 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 11.03.2006 []
;[]=========================================================================[]
SaveScr:
ld bc,1*256+Dss.GetMem
rst DssRst ;¢ë¤¥«¥­¨¥ ¡ ­ª¨ ¯ ¬ïâ¨
ret c ;¢ë室 á ®è¨¡ª®©
ld (.Id),a
ld bc,Dss.SetWin3
rst DssRst ;¢ª«î祭¨¥ ¡ ­ª¨ ¢ 3-¥ ®ª­®
ld (.Id+1),a ;§ ¬¥é ¥¬ ï áâà ­¨æ 
ld de,0 ;¯®§¨æ¨ï ­  íªà ­¥
ld hl,0xC000
.L1 push de
push hl
ld c,Dss.RdChar
rst DssRst ;áç¨â âì ᨬ¢®« á íªà ­ 
pop hl
pop de
ld (hl),a
inc hl
inc e
ld a,e
cp 0x50 ;§ ª®­ç¨« áì áâப ?
jr nz,.L1
ld bc,0x0D0A ;ª®­¥æ áâப¨
ld (hl),b
inc hl
ld (hl),c
inc hl
ld e,0 ;­ ç «® áâப¨
inc d
ld a,d
cp 0x20 ;ª®­¥æ íªà ­ ?
jr nz,.L1
ld hl,.NameF ;¨¬ï ä ©« 
xor a ; âਡãâ
ld c,Dss.Create
rst DssRst
jr c,.L2 ;®è¨¡ª 
push af
ld hl,0xC000 ;­ ç «® § ¯¨á뢠¥¬®© ¯ ¬ïâ¨
ld de,82*32 ;à §¬¥à § ¯¨á뢠¥¬®© ¨­äë
ld c,Dss.Write
rst DssRst ;§ ¯¨á âì
pop af
ld c,Dss.Close
rst DssRst ;§ ªàëâì ä ©«
.L2 ld a,(.Id) ;id ¯ ¬ïâ¨
ld c,Dss.FreeMem
rst DssRst ;®á¢®¡®¤¨âì ¯ ¬ïâì
ld a,(.Id+1)
out (EmmWin.P3),a ;¢®áâ ­®¢¨«¨ ¡ ­ªã
ret
.NameF db "demon.$$$",0
.Id ds 2 ;id ¢ë¤¥«¥­­®£® ¡«®ª 
;11:11 18.02.2011 ‡ £«ã誠 <20>¥ ¡ë«® ¨á室­¨ª  :(
; include "d:\workast\demon\screen\scrdemon"

431
STEP.ASM Normal file
View File

@ -0,0 +1,431 @@
;[]=========================================================================[]
;[] Žâ« ¤ª  ª®¬ ­¤ ¯à®£à ¬¬ë []
;[] v0.03 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 10.03.2006 []
;[] v0.10 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 18.03.2006 []
;[]=========================================================================[]
Step:
di
ld a,(WinPage+2) ;¡ ­ª  ¯®¤ demon'®¬
ld (Rezident.Start1+1),a ;¢ १¨¤¥­â ¥¥
ld (.BankP+1),a
ld a,(BankDebug) ;¡ ­ª  á demon'®¬
ld (Rezident.BankD+1),a ;¢ १¨¤¥­â ¥¥
ld (Rezident.BankD1+2),a
ld hl,Step.Run+3 ;â®çª  ¢®§¢à â  ¢ ®â« ¤ç¨ª
ld (Rezident.Return+1),hl ;¯à®¯¨á뢠¥¬ ¢ १¨¤¥­â¥
ld a,l
ld (Rezident.Return1+2),a
ld a,h
ld (Rezident.Return1+7),a
ld hl,(Reg._PC)
ld (Rezident.Step+1),hl ; ¤à¥á ®â« ¦¨¢ ¥¬®© ª®¬ ­¤ë
ld a,(Reg._AF) ;ä« £
ld b,a
call Ld_a_hl
; ld a,(hl) ;ª®¤ ª®¬ ­¤ë
ld c,a
and 11001111b
cp 11000101b ;PUSH
call z,.SpdInc
cp 11000001b ;POP
call z,.SpdDec
ld a,c
cp 0xCD ;CALL
jr nz,.L7
ld a,(.Flag)
inc a
jp nz,.L2 ;¡¥§ § å®¤  ¢ ¯®¤¯à®£à ¬¬ã
jp .L8
.L7 cp 0xC9 ;RET
jp z,.L9
cp 0xC3 ;JP
jp z,.L8+3
cp 0x18 ;JR
jp z,.L6
cp 0x10 ;DJNZ
jr nz,.L18
ld a,(.Flag)
inc a
jp nz,.L2 ;¡¥§ ®â« ¤ª¨ 横« 
ld a,(Reg._BC+1)
dec a
jr nz,.L6
jp .L2
.L18 inc hl ;á«¥¤ãî騩 ¡ ©â ᮬ ­¤ë
exa
call Ld_a_hl
ld c,a
exa
; ld c,(hl)
dec hl
cp 0xED ;¯à¥ä¨ªá ¤«ï RETI, RETN
jr nz,.L10
ld a,c
cp 0x4D ;RETI
jp z,.L9
cp 0x45 ;RETN
jp z,.L9
.L10 cp 0xDD ;¯à¥ä¨ªá ¤«ï IX
jr nz,.L25
ld a,c
cp 0xE5 ;PUSH IX
call z,.SpdInc
cp 0xE1 ;POP IX
call z,.SpdDec
ld de,(Reg._IX)
jr .L24
.L25 cp 0xFD ;¯à¥ä¨ªá ¤«ï IY
jr nz,.L24-4
ld a,c
cp 0xE5 ;PUSH IY
call z,.SpdInc
cp 0xE1 ;POP IY
call z,.SpdDec
ld de,(Reg._IY)
jr .L24
ld de,(Reg._HL)
.L24 cp 0xE9 ;JP (HL/IX/IY)
jr nz,.L23
ex de,hl
jp .L2+3
.L23 cp 0x38 ;JR C,
jr nz,.L19
bit 0,b ;ä« £ C
jp z,.L2 ;­¥â ¯¥à¥å®¤ 
jr .L6 ;¯¥à¥å®¤
.L19 cp 0x30 ;JR NC,
jr nz,.L20
bit 0,b ;ä« £ C
jp nz,.L2 ;­¥â ¯¥à¥å®¤ 
jr .L6 ;¯¥à¥å®¤
.L20 cp 0x28 ;JR Z,
jr nz,.L21
bit 6,b ;ä« £ Z
jp z,.L2 ;­¥â ¯¥à¥å®¤ 
jr .L6 ;¯¥à¥å®¤
.L21 cp 0x20 ;JR NZ,
jr nz,.L22
bit 6,b ;ä« £ Z
jp nz,.L2 ;­¥â ¯¥à¥å®¤ 
.L6 inc hl
call Ld_a_hl
; ld a,(hl) ;ᬥ饭¨¥
inc hl
ld b,0
ld c,a
bit 7,a ;§­ ª ç¨á« 
jr z,$+11
neg
or a ;á¡à®á ä« £  C
ld c,a
sbc hl,bc ;®âà¨æ â¥«ì­®¥ ᬥ饭¨¥
jp .L2+3
add hl,bc ;¯®«®¦¨â¥«ì­®¥ ᬥ饭¨¥
jp .L2+3
.L22 and 11000111b
cp 11000111b ;RST x
jr nz,.L27
ld a,(.Flag)
inc a
jp nz,.L2 ;¡¥§ § å®¤  ¢ ¯®¤¯à®£à ¬¬ã
call .SpdInc
call Ld_a_hl
; ld a,(hl) ;¡ ©â ª®¬­¤ë
and 00111000b ; ¤à¥á ¯¥à¥å®¤ 
ld h,0
ld l,a
jp .L2+3
.L27 cp 11000010b ;JP flag
jr z,.L26
cp 11000000b ;RET flag
jr z,.L26
cp 11000100b ;CALL flag
jr nz,.L2
ld a,(.Flag)
inc a
jr nz,.L2 ;¡¥§ § å®¤  ¢ ¯®¤¯à®£à ¬¬ã
.L26 call Ld_a_hl
; ld a,(hl) ;ª®¤ ª®¬ ­¤ë
and 00111000b ;ä« £¨
jr z,.L11 ;JP/CALL/RET NZ,
cp 00001000b
jr z,.L12 ;JP/CALL/RET Z,
cp 00010000b
jr z,.L13 ;JP/CALL/RET NC,
cp 00011000b
jr z,.L14 ;JP/CALL/RET C,
cp 00100000b
jr z,.L15 ;JP/CALL/RET PO,
cp 00101000b
jr z,.L16 ;JP/CALL/RET PE,
cp 00110000b
jr z,.L17 ;JP/CALL/RET P,
bit 7,b ;JP/CALL/RET M, ä« £ S
jr z,.L2 ;­¥â ¯¥à¥å®¤ 
jr .L5 ;¯¥à¥å®¤
.L11 bit 6,b ;ä« £ Z
jr nz,.L2 ;­¥â ¯¥à¥å®¤ 
jr .L5 ;¯¥à¥å®¤
.L12 bit 6,b ;ä« £ Z
jr z,.L2 ;­¥â ¯¥à¥å®¤ 
jr .L5 ;¯¥à¥å®¤
.L13 bit 0,b ;ä« £ C
jr nz,.L2 ;­¥â ¯¥à¥å®¤ 
jr .L5 ;¯¥à¥å®¤
.L14 bit 0,b ;ä« £ C
jr z,.L2 ;­¥â ¯¥à¥å®¤ 
jr .L5 ;¯¥à¥å®¤
.L15 bit 2,b ;ä« £ P/V
jr nz,.L2 ;­¥â ¯¥à¥å®¤ 
jr .L5 ;¯¥à¥å®¤
.L16 bit 2,b ;ä« £ P/V
jr z,.L2 ;­¥â ¯¥à¥å®¤ 
jr .L5 ;¯¥à¥å®¤
.L17 bit 7,b ;ä« £ S
jr nz,.L2 ;­¥â ¯¥à¥å®¤ 
.L5 call Ld_a_hl
; ld a,(hl) ;ª®¤ ª®¬ ­¤ë
and 00000111b ;®âá«¥¤¨âì RET'ë
jr nz,.L8-4
.L9 call .SpdDec
ld hl,(Reg._SP) ;á⥪
dec hl
jr .L8+3
cp 00000010b ;®âá«¥¤¨âì JP
jr z,.L8+3
.L8 call .SpdInc
inc hl
call Ld_a_hl
ld b,a
; ld a,(hl)
inc hl
call Ld_a_hl
; ld h,(hl)
ld h,a
ld l,b
jr .L2+3
.L2 call List ;á«¥¤ãîé ï ª®¬ ­¤ 
ld (Reg._PC),hl ;­®¢ë© PC
push hl
push hl
ld a,(KList.Descript) ;ª®«¨ç¥á⢮ áâப «¨á⨭£ 
call AdrListTabl ;­¨¦­¨©  ¤à¥á «¨á⨭£ 
ld de,(ListAdr) ;¢¥àå­¨©  ¤à¥á «¨á⨭£ 
pop bc ;­®¢ë© PC
call AdrArea
jr nc,.L1+4
.L1 ld (ListAdr),bc ;­®¢ ï áâà ­¨æ  «¨á⨭£ 
pop hl
call Ld_a_hl ;á«¥¤ãî騥 §  ª®¬ ­¤®© ¡ ©âë
ld c,a
inc hl
call Ld_a_hl
ld b,a
inc hl
call Ld_a_hl
push bc
push af
push hl
push hl
ld hl,(RezAdr) ; ¤à¥á ¯®á ¤ª¨ १¨¤¥­â 
ld a,h
and 11000000b
cp 10000000b ;®ª­® ¯®á ¤ª¨ १¨¤¥­â 
ld a,0xFF ;FF - १¨¤¥­â ¢® 2-¬ ®ª­¥
jr nz,.L30
ld de,Rezident.RetIn-Rezident
jr .L30+4
.L30 ld de,Rezident.RetIn1-Rezident
inc a ;0 - १¨¤¥­â ­¥ ¢® 2-¬ ®ª­¥
ld (.WRez),a
add hl,de ; ¤à¥á ¢®§¢à â  ¢ १¨¤¥­â
ex de,hl
pop hl
ld a,d ;¯à®¯¨á뢠¥¬ ¯®á«¥
call Ld_hl_a ;®â« ¦¨¢ ¥¬®© ª®¬ ­¤ë
dec hl
ld a,e
call Ld_hl_a
dec hl
ld a,0xC3 ;JP
call Ld_hl_a
ld hl,(RezAdr) ; ¤à¥á ¯®á ¤ª¨
push hl ;ª®à४æ¨ï  ¤à¥á®¢ ª®¤  १¨¤¥­â 
ld (Rezident.K1+1),hl ;­®¬¥à ¡ ­ª¨ ¯®¤ ®â« ¤ç¨ª®¬
ld (Rezident.K6+1),hl
inc hl
ld (Rezident.K3+1),hl ; ªªã¬ã«ïâ®à ¯à£à ¬¬ë
ld (Rezident.RetIn+1),hl
ld (Rezident.RetIn1+1),hl
inc hl
ld (Rezident.K2+1),hl ;¯ à  HL ¯à®£à ¬¬ë
ld (Rezident.K4+1),hl
inc hl
inc hl
ld (Rezident.K5+1),hl ;1 ¨ 2 ¡ ©âë ¡ãä¥à 
inc hl
inc hl
ld (Rezident.K5+7),hl ;3 ¨ 4 ¡ ©âë ¡ãä¥à 
inc hl
inc hl
ld (Rezident.K5+13),hl ;5 ¨ 6 ¡ ©âë ¡ãä¥à 
inc hl
inc hl
ld (Rezident.K5+19),hl ;7 ¡ ©â ¡ãä¥à 
ld a,(.WRez) ;ä« £ ¯®á ¤ª¨ १¨¤¥­â 
or a
jr nz,.L31
ld de,Rezident.Start1-Rezident
ld hl,(RezAdr) ; ¤à¥á ¯®á ¤ª¨
add hl,de ;áâ àâ १¨¤¥­â  ­¥ ¢® 2-¬ ®ª­¥
jr .L32
.L31 inc hl ;áâ àâ १¨¤¥­â  ¢® 2-¬ ®ª­¥
ld (.Run1+1),hl
ld hl,AdrTmpBuf
ld de,Rezident.Start+1 ;á®åà ­¥­¨¥ 7 ¡ ©â ¢ १¨¤¥­â¥
ld b,3
.L33 ld a,(hl)
ld (de),a
inc hl
inc de
ld a,(hl)
ld (de),a
inc hl
inc de
inc de
inc de
inc de
inc de
djnz .L33
ld a,(hl)
ld (de),a
ld de,.Run1+2 ;¢á¯®¬®£ â¥«ì­ ï ¯à®æ¥¤ãà 
ld b,7 ;¤«¨­ 
.L34 ld a,(de)
ld (hl),a
dec hl
dec de
djnz .L34
inc hl
.L32 ld (.Run+1),hl
ld a,(Reg._AF+1) ; ªªã¬ã«ïâ®à ¯à®£à ¬¬ë
ld (Rezident+1),a ;¢ १¨¤¥­â
ld hl,(Reg._HL) ;¯ à  HL
ld (Rezident+2),hl ;¢ १¨¤¥­â
pop hl ; ¤à¥á ¯®á ¤ª¨ १¨¤¥­â 
ld de,Rezident ;­ ç «® १¨¤¥­â 
ld bc,.Buffer
ld a,Rezident.End-Rezident ;¤«¨­  १¨¤¥­â 
.L3 push af
call Ld_a_hl
ld (bc),a ;á®åà ­¥­¨¥ ¯ ¬ï⨠¯®¤ १¨¤¥­â®¬
ld a,(de) ;ª®¯¨à®¢ ­¨¥ १¨¤¥­â 
call Ld_hl_a
inc bc
inc de
inc hl
pop af
dec a
jr nz,.L3
ld a,(WinPage) ;¡ ­ª  ¢ 0-®¬ ®ª­¥
out (EmmWin.P0),a
call RestAllRegs
ld (StackDebug),sp ;á⥪ ®â« ¤ç¨ª 
ld sp,(Reg._SP) ;á⥪ ¯à®£à ¬¬ë
.Run jp 0 ;¯ã᪠१¨¤¥­â 
ld (Reg._SP),sp ;á⥪ ¯à®£à ¬¬ë
ld sp,(StackDebug) ;á⥪ ®â« ¤ç¨ª 
call SaveAllRegs
in a,(EmmWin.P0)
ld (WinPage),a ;¡ ­ª  ¢ 0-®¬ ®ª­¥
ld a,(BankOS) ;¡ ­ª  á OS
out (EmmWin.P0),a
ld hl,(RezAdr)
call Ld_a_hl
ld (WinPage+2),a ;­®¬¥à ¡ ­ª¨ ¢® 2-®¬ ®ª­¥
inc hl ; ªªã¬ã«ïâ®à ¯à®£à ¬¬ 
call Ld_a_hl
ld (Reg._AF+1),a
ld a,(.WRez) ;ä« £ १¨¤¥­â 
or a
jr z,.L35 ;­¥ ¢® 2-¬ ®ª­¥
inc hl ;ॣ¨áâà L ¯à®£à ¬¬ë
call Ld_a_hl
ld (Reg._HL),a
inc hl ;ॣ¨áâà H ¯à®£à ¬¬ë
call Ld_a_hl
ld (Reg._HL+1),a
ld b,7
ld de,AdrTmpBuf
.L36 inc hl ;¡ãä¥à 7-¬¨ ¡ ©â
call Ld_a_hl
ld (de),a ;¢®áâ ­®¢¨«¨
inc de
djnz .L36
.L35 pop hl
pop af ;¢®áâ ­®¢¨«¨ ª®¤ ª®¬ ­¤ë
pop bc
call Ld_hl_a
dec hl
ld a,b
call Ld_hl_a
dec hl
ld a,c
call Ld_hl_a
ld de,.Buffer ;¢®ááâ ­®¢«¥­¨¥ ¯ ¬ï⨠¯®¤ १¨¤¥­â®¬
ld hl,(RezAdr) ; ¤à¥á ¯®á ¤ª¨
ld b,Rezident.End-Rezident ;¤«¨­  १¨¤¥­â 
.L4 ld a,(de)
call Ld_hl_a
inc de
inc hl
djnz .L4
ei
ret
.BankP ld a,0xFF ;(2) ¡ ­ª  ¯®¤ ®â« ¤ç¨ª®¬
out (EmmWin.P2),a ;(2)
.Run1 jp 0 ;(3) ¯¥à¥å®¤ ¢ १¨¤¥­â
.SpdInc push af ;㢥«¨ç¥­¨¥ £«ã¡¨­ë á⥪ 
ld a,(StackDown)
inc a
ld (StackDown),a
pop af
ret
.SpdDec push af ;㬥­ì襭¨¥ £«ã¡¨­ë á⥪ 
ld a,(StackDown)
dec a
ld (StackDown),a
pop af
ret
.Flag db On ;ä« £ § å®¤  ¢ ¯®¤¯à®£à ¬¬ë
.WRez db 0 ;ä« £ ®ª­  ¯®á ¤ª¨ १¨¤¥­â 
.Buffer ds Rezident.End-Rezident ;¤«¨­  १¨¤¥­â 

362
TABL.ASM Normal file
View File

@ -0,0 +1,362 @@
;[]=========================================================================[]
;[] ’ ¡«¨æë ¤¨§ áᥬ¡«¥à  ¬®­¨â®à -®â« ¤ç¨ª  DemoN []
;[] v0.01 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 10.10.2004 []
;[] v0.02 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 29.11.2004 []
;[] v0.03 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 29.01.2006 []
;[]=========================================================================[]
Tabl00_3F:
dw M00,M01,M02,M03,M04,M05,M06,M07,M08,M09,M0A,M0B,M0C,M0D,M0E,M0F
dw M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M1A,M1B,M1C,M1D,M1E,M1F
dw M20,M21,M22,M23,M24,M25,M26,M27,M28,M29,M2A,M2B,M2C,M2D,M2E,M2F
dw M30,M31,M32,M33,M34,M35,M36,M37,M38,M39,M3A,M3B,M3C,M3D,M3E,M3F
M00 db "NOP",0
M01 db "LD BC,",2
M02 db "LD (BC),A",0
M03 db "INC BC",0
M04 db "INC B",0
M05 db "DEC B",0
M06 db "LD B,",1
M07 db "RLCA",0
M08 db "EX AF,AF'",0
M09 db "ADD HL,BC",0
M0A db "LD A,(BC)",0
M0B db "DEC BC",0
M0C db "INC C",0
M0D db "DEC C",0
M0E db "LD C,",1
M0F db "RRCA",0
M10 db "DJNZ ",3
M11 db "LD DE,",2
M12 db "LD (DE),A",0
M13 db "INC DE",0
M14 db "INC D",0
M15 db "DEC D",0
M16 db "LD D,",1
M17 db "RLA",0
M18 db "JR ",3
M19 db "ADD HL,DE",0
M1A db "LD A,(DE)",0
M1B db "DEC DE",0
M1C db "INC E",0
M1D db "DEC E",0
M1E db "LD E,",1
M1F db "RRA",0
M20 db "JR NZ,",3
M21 db "LD HL,",2
M22 db "LD (),HL",5
M23 db "INC HL",0
M24 db "INC H",0
M25 db "DEC H",0
M26 db "LD H,",1
M27 db "DAA",0
M28 db "JR Z,",3
M29 db "ADD HL,HL",0
M2A db "LD HL,()",5
M2B db "DEC HL",0
M2C db "INC L",0
M2D db "DEC L",0
M2E db "LD L,",1
M2F db "CPL",0
M30 db "JR NC,",3
M31 db "LD SP,",2
M32 db "LD (),A",5
M33 db "INC SP",0
M34 db "INC (HL)",0
M35 db "DEC (HL)",0
M36 db "LD (HL),",1
M37 db "SCF",0
M38 db "JR C,",3
M39 db "ADD HL,SP",0
M3A db "LD A,()",5
M3B db "DEC SP",0
M3C db "INC A",0
M3D db "DEC A",0
M3E db "LD A,",1
M3F db "CCF",0
TablC0_FF:
dw MC0,MC1,MC2,MC3,MC4,MC5,MC6,MC7,MC8,MC9,MCA,M00,MCC,MCD,MCE,MCF
dw MD0,MD1,MD2,MD3,MD4,MD5,MD6,MD7,MD8,MD9,MDA,MDB,MDC,MDD,MDE,MDF
dw ME0,ME1,ME2,ME3,ME4,ME5,ME6,ME7,ME8,ME9,MEA,MEB,MEC,M00,MEE,MEF
dw MF0,MF1,MF2,MF3,MF4,MF5,MF6,MF7,MF8,MF9,MFA,MFB,MFC,MFD,MFE,MFF
MC0 db "RET NZ",0
MC1 db "POP BC",0
MC2 db "JP NZ,",2
MC3 db "JP ",2
MC4 db "CALL NZ,",2
MC5 db "PUSH BC",0
MC6 db "ADD A,",1
MC7 db "RST 0",0
MC8 db "RET Z",0
MC9 db "RET",0
MCA db "JP Z,",2
MCC db "CALL Z,",2
MCD db "CALL ",2
MCE db "ADC A,",1
MCF db "RST 8",0
MD0 db "RET NC",0
MD1 db "POP DE",0
MD2 db "JP NC,",2
MD3 db "OUT (),A",4
MD4 db "CALL NC,",2
MD5 db "PUSH DE",0
MD6 db "SUB ",1
MD7 db "RST #10",0
MD8 db "RET C",0
MD9 db "EXX",0
MDA db "JP C,",2
MDB db "IN A,()",4
MDC db "CALL C,",2
MDD db "DD",0
MDE db "SBC A,",1
MDF db "RST #18",0
ME0 db "RET PO",0
ME1 db "POP HL",0
ME2 db "JP PO,",2
ME3 db "EX (SP),HL",0
ME4 db "CALL PO,",2
ME5 db "PUSH HL",0
ME6 db "AND ",1
ME7 db "RST #20",0
ME8 db "RET PE",0
ME9 db "JP (HL)",0
MEA db "JP PE,",2
MEB db "EX DE,HL",0
MEC db "CALL PE,",2
MEE db "XOR ",1
MEF db "RST #28",0
MF0 db "RET P",0
MF1 db "POP AF",0
MF2 db "JP P,",2
MF3 db "DI",0
MF4 db "CALL P,",2
MF5 db "PUSH AF",0
MF6 db "OR ",1
MF7 db "RST #30",0
MF8 db "RET M",0
MF9 db "LD SP,HL",0
MFA db "JP M,",2
MFB db "EI",0
MFC db "CALL M,",2
MFD db "FD",0
MFE db "CP ",1
MFF db "RST #38",0
MHALT db "HALT",0
TablM:
dw M80,M88,M90,M98,MA0,MA8,MB0,MB8
M80 db "ADD A,",0
M88 db "ADC A,",0
M90 db "SUB ",0
M98 db "SBC A,",0
MA0 db "AND ",0
MA8 db "XOR ",0
MB0 db "OR ",0
MB8 db "CP ",0
CodeDDFD:
db 0x09,0x19,0x21,0x22,0x23,0x24,0x25,0x26,0x29
db 0x2A,0x2B,0x2C,0x2D,0x2E,0x34,0x35,0x36,0x39
db 0x44,0x45,0x46,0x4C,0x4D,0x4E,0x54,0x55,0x56
db 0x5C,0x5D,0x5E,0x60,0x61,0x62,0x63,0x64,0x65
db 0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E
db 0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x77,0x7C
db 0x7D,0x7E,0x84,0x85,0x86,0x8C,0x8D,0x8E,0x94
db 0x95,0x96,0x9C,0x9D,0x9E,0xA4,0xA5,0xA6,0xAC
db 0xAD,0xAE,0xB4,0xB5,0xB6,0xBC,0xBD,0xBE,0xE1
db 0xE3,0xE5,0xE9,0xF9
TablDDFD:
dw DD09,DD19,DD21,DD22,DD23,DD24,DD25,DD26,DD29
dw DD2A,DD2B,DD2C,DD2D,DD2E,DD34,DD35,DD36,DD39
dw DD44,DD45,DD46,DD4C,DD4D,DD4E,DD54,DD55,DD56
dw DD5C,DD5D,DD5E,DD60,DD61,DD62,DD63,DD64,DD65
dw DD66,DD67,DD68,DD69,DD6A,DD6B,DD6C,DD6D,DD6E
dw DD6F,DD70,DD71,DD72,DD73,DD74,DD75,DD77,DD7C
dw DD7D,DD7E,DD84,DD85,DD86,DD8C,DD8D,DD8E,DD94
dw DD95,DD96,DD9C,DD9D,DD9E,DDA4,DDA5,DDA6,DDAC
dw DDAD,DDAE,DDB4,DDB5,DDB6,DDBC,DDBD,DDBE,DDE1
dw DDE3,DDE5,DDE9,DDF9
DD09 db "ADD Ix,BC",0
DD19 db "ADD Ix,DE",0
DD21 db "LD Ix,",2
DD22 db "LD (),Ix",5
DD23 db "INC Ix",0
DD24 db "INC Hx",0
DD25 db "DEC Hx",0
DD26 db "LD Hx,",1
DD29 db "ADD Ix,Ix",0
DD2A db "LD Ix,()",5
DD2B db "DEC Ix",0
DD2C db "INC Lx",0
DD2D db "DEC Lx",0
DD2E db "LD Lx,",1
DD34 db "INC )",6
DD35 db "DEC )",6
DD36 db "LD ),",6
DD39 db "ADD Ix,SP",0
DD44 db "LD B,Hx",0
DD45 db "LD B,Lx",0
DD46 db "LD B,)",6
DD4C db "LD C,Hx",0
DD4D db "LD C,Lx",0
DD4E db "LD C,)",6
DD54 db "LD D,Hx",0
DD55 db "LD D,Lx",0
DD56 db "LD D,)",6
DD5C db "LD E,Hx",0
DD5D db "LD E,Lx",0
DD5E db "LD E,)",6
DD60 db "LD Hx,B",0
DD61 db "LD Hx,C",0
DD62 db "LD Hx,D",0
DD63 db "LD Hx,E",0
DD64 db "LD Hx,Hx",0
DD65 db "LD Hx,Lx",0
DD66 db "LD H,)",6
DD67 db "LD Lx,A",0
DD68 db "LD Lx,B",0
DD69 db "LD Lx,C",0
DD6A db "LD Lx,D",0
DD6B db "LD Lx,E",0
DD6C db "LD Lx,Hx",0
DD6D db "LD Lx,Lx",0
DD6E db "LD L,)",6
DD6F db "LD Lx,A",0
DD70 db "LD ),B",6
DD71 db "LD ),C",6
DD72 db "LD ),D",6
DD73 db "LD ),E",6
DD74 db "LD ),H",6
DD75 db "LD ),L",6
DD77 db "LD ),A",6
DD7C db "LD A,Hx",0
DD7D db "LD A,Lx",0
DD7E db "LD A,)",6
DD84 db "ADD A,Hx",0
DD85 db "ADD A,Lx",0
DD86 db "ADD A,)",6
DD8C db "ADC E,Hx",0
DD8D db "ADC E,Lx",0
DD8E db "ADC E,)",6
DD94 db "SUB Hx",0
DD95 db "SUB Lx",0
DD96 db "SUB )",6
DD9C db "SBC A,Hx",0
DD9D db "SBC A,Lx",0
DD9E db "SBC A,)",6
DDA4 db "AND Hx",0
DDA5 db "AND Lx",0
DDA6 db "AND )",6
DDAC db "XOR Hx",0
DDAD db "XOR Lx",0
DDAE db "XOR )",6
DDB4 db "OR Hx",0
DDB5 db "OR Lx",0
DDB6 db "OR )",6
DDBC db "CP Hx",0
DDBD db "CP Lx",0
DDBE db "CP )",6
DDE1 db "POP Ix",0
DDE3 db "EX (SP),Ix",0
DDE5 db "PUSH Ix",0
DDE9 db "JP (Ix)",0
DDF9 db "LD SP,Ix",0
TablCB:
dw CB00,CB08,CB10,CB18,CB20,CB28,CB30,CB38
CB00 db "RLC "
CB08 db "RRC "
CB10 db "RL "
CB18 db "RR "
CB20 db "SLA "
CB28 db "SRA "
CB30 db "SLI "
CB38 db "SRL "
CB40 db "BIT "
CB80 db "RES "
CBC0 db "SET "
TablED:
dw ED40,ED41,ED42,ED43,ED44,ED45,ED46,ED47
dw ED48,ED49,ED4A,ED4B,ED44,ED4D,ED4E,ED4F
dw ED50,ED51,ED52,ED53,ED44,ED45,ED56,ED57
dw ED58,ED59,ED5A,ED5B,ED44,ED4D,ED5E,ED5F
dw ED60,ED61,ED62,ED63,ED44,ED45,ED46,ED67
dw ED68,ED69,ED6A,ED6B,ED44,ED4D,ED4E,ED6F
dw ED70,ED71,ED72,ED73,ED44,ED45,ED56,ED00
dw ED78,ED79,ED7A,ED7B,ED44,ED4D,ED5E
dw EDA0,EDA1,EDA2,EDA3,ED00,ED00,ED00,ED00
dw EDA8,EDA9,EDAA,EDAB,ED00,ED00,ED00,ED00
dw EDB0,EDB1,EDB2,EDB3,ED00,ED00,ED00,ED00
dw EDB8,EDB9,EDBA,EDBB
ED00 db "NOP *",0
ED40 db "IN B,(C)",0
ED41 db "OUT (C),B",0
ED42 db "SBC HL,BC",0
ED43 db "LD (),BC",5
ED44 db "NEG",0
ED45 db "RETN",0
ED46 db "IM 0",0
ED47 db "LD I,A",0
ED48 db "IN C,(C)",0
ED49 db "OUT (C),C",0
ED4A db "ADC HL,BC",0
ED4B db "LD BC,()",5
ED4D db "RETI",0
ED4E db "IM 0 *",0
ED4F db "LD R,A",0
ED50 db "IN D,(C)",0
ED51 db "OUT (C),D",0
ED52 db "SBC HL,DE",0
ED53 db "LD (),DE",5
ED56 db "IM 1",0
ED57 db "LD A,I",0
ED58 db "IN E,(C)",0
ED59 db "OUT (C),E",0
ED5A db "ADC HL,DE",0
ED5B db "LD DE,()",5
ED5E db "IM 2",0
ED5F db "LD A,R",0
ED60 db "IN H,(C)",0
ED61 db "OUT (C),H",0
ED62 db "SBC HL,HL",0
ED63 db "LD (),HL",5
ED67 db "RRD",0
ED68 db "IN L,(C)",0
ED69 db "OUT (C),L",0
ED6A db "ADC HL,HL",0
ED6B db "LD HL,()",5
ED6F db "RLD",0
ED70 db "IN F,(C)",0
ED71 db "OUT (C),*",0
ED72 db "SBC HL,SP",0
ED73 db "LD (),SP",5
ED78 db "IN A,(C)",0
ED79 db "OUT (C),A",0
ED7A db "ADC HL,SP",0
ED7B db "LD SP,()",5
EDA0 db "LDI",0
EDA1 db "CPI",0
EDA2 db "INI",0
EDA3 db "OUTI",0
EDA8 db "LDD",0
EDA9 db "CPD",0
EDAA db "IND",0
EDAB db "OUTD",0
EDB0 db "LDIR",0
EDB1 db "CPIR",0
EDB2 db "INIR",0
EDB3 db "OTIR",0
EDB8 db "LDDR",0
EDB9 db "CPDR",0
EDBA db "INDR",0
EDBB db "OTDR",0

923
UTIL.ASM Normal file
View File

@ -0,0 +1,923 @@
;[]=========================================================================[]
;[] <20>®¤¯à®£à ¬¬ë-ã⨫¨âë ¬®­¨â®à -®â« ¤ç¨ª  DemoN []
;[] v0.01 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 29.08.2004 []
;[] v0.02 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 20.03.2005 []
;[] v0.03 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 25.02.2006 []
;[] v0.10 - ¯®á«¥¤­¨¥ ¨§¬¥­¥­¨ï 17.05.2006 []
;[] []
;[] SaveAllRegs - á®åà ­¥­¨¥ §­ ç¥­¨© ॣ¨áâ஢ëå ¯ à []
;[] RestAllRegs - ¢®áâ ­®¢«¥­¨¥ §­ ç¥­¨© ॣ¨áâ஢ëå ¯ à []
;[] PrnStrColor - ¯¥ç âì áâப¨ ᨬ¢®«®¢ á  âਡãâ ¬¨ []
;[] PrintReg - ¯¥ç âì ¤¢ãå¡ ©â®¢®£® ç¨á«  []
;[] PrintStrAF - ¯¥ç âì §­ ç¥­¨ï ॣ¨áâ஢®© ¯ àë AF ¨ ä« £®¢ []
;[] PrintStrReg - ¯¥ç âì §­ ç¥­¨© ॣ¨áâ஢ëå ¯ à á  ¤à¥á㥬묨 ¡ ©â ¬¨ []
;[] PrintStrWin - ¯¥ç âì ­®¬¥à®¢ ¡ ­®ª ¢ ®ª­ å []
;[] PrintSPDn - ¯¥ç âì £«ã¡¨­ë á⥪  []
;[] PrintStrSp - ¯¥ç âì §­ ç¥­¨© á⥪  []
;[] PrintDump - ¯¥ç âì ¤ ¬¯  []
;[] PrintStrDump - ¯¥ç âì áâப¨ ¤ ¬¯  []
;[] ReplSymNoPrint - § ¬¥­  ­¥¯¥ç â­ëå ᨬ¢®«®¢ ¢ áâப¥ []
;[] NumToStr16 - ä®à¬¨à®¢ ­¨¥ 16-â¨à¨ç­®£® ç¨á«  []
;[] NumToStr8 - ä®à¬¨à®¢ ­¨¥ 8-à¨ç­®£® ç¨á«  []
;[] ConvHexStr - ª®­¢¥àâ¨à®¢ ­¨¥ ç¨á«  ¢ HEX-áâபã []
;[] ConvDecStr - ª®­¢¥àâ¨à®¢ ­¨¥ 16-¡¨â­®£® ç¨á«  ¢ DEC-áâபã []
;[] CursorSet - ¯à®à¨á®¢ª  ªãàá®à  []
;[] CursorRes - ¢®áâ ­®¢«¥­¨¥ íªà ­  ¯®¤ ªãàá®à®¬ []
;[] Ld_a_bc - ç⥭¨¥ ¡ ©â  ¨§ ¯ ¬ïâ¨ á ¯à®¢¥àª®©  ¤à¥á ,  ¤à¥á ¢ BC []
;[] Ld_a_hl - ç⥭¨¥ ¡ ©â  ¨§ ¯ ¬ïâ¨ á ¯à®¢¥àª®©  ¤à¥á ,  ¤à¥á ¢ HL []
;[] Ld_hl_a - § ¯¨áì ¡ ©â  ¢ ¯ ¬ïâì á ¯à®¢¥àª®©  ¤à¥á ,  ¤à¥á ¢ HL []
;[] AdrArea - ®¯à¥¤¥«¥­¨¥ ¯à¨­ ¤«¥¦­®á⨠ ¤à¥á  ®¡« á⨠¯ ¬ï⨠[]
;[]=========================================================================[]
;[]=========================================================================[]
;[] ‘®åà ­¥­¨¥ §­ ç¥­¨© ॣ¨áâ஢ëå ¯ à []
;[]=========================================================================[]
SaveAllRegs:
ld (Reg._HL),hl
ld (Reg._DE),de
ld (Reg._BC),bc
ld (Reg._IX),ix
ld (Reg._IY),iy
push af
pop hl
ld (Reg._AF),hl
ld a,r
ld (Reg._IR),a
ld a,i
ld (Reg._IR+1),a
exx
ex af,af'
ld (Reg._HL_),hl
ld (Reg._DE_),de
ld (Reg._BC_),bc
push af
pop hl
ld (Reg._AF_),hl
ex af,af'
exx
ld hl,WinPage ;á®åà ­¥­¨¥ ­®¬¥à®¢ áâà ­¨æ
in a,(EmmWin.P0) ;0-¥ ®ª­®
ld (hl),a
inc hl
in a,(EmmWin.P1) ;1-¥ ®ª­®
ld (hl),a
inc hl
in a,(EmmWin.P2) ;2-¥ ®ª­®
ld (hl),a
inc hl
in a,(EmmWin.P3) ;3-¥ ®ª­®
ld (hl),a
ret
;[]=========================================================================[]
;[] ‚®áâ ­®¢«¥­¨¥ §­ ç¥­¨© ॣ¨áâ஢ëå ¯ à []
;[]=========================================================================[]
RestAllRegs:
ld a,(Reg._IR)
ld r,a
ld a,(Reg._IR+1)
ld i,a
ld hl,(Reg._AF)
push hl
pop af
ld hl,(Reg._HL)
ld de,(Reg._DE)
ld bc,(Reg._BC)
ld ix,(Reg._IX)
ld iy,(Reg._IY)
exx
ex af,af'
ld hl,(Reg._AF_)
push hl
pop af
ld hl,(Reg._HL_)
ld de,(Reg._DE_)
ld bc,(Reg._BC_)
ex af,af'
exx
ret
;[]=========================================================================[]
;[] <20>¥ç âì áâப¨ ᨬ¢®«®¢ []
;[] ‚室: HL -  ¤à¥á áâப¨ ᨬ¢®«®¢ []
;[] []
;[] ”®à¬ â áâப¨: 0x16, ‘⮫¡¥æ, ‘âப , ‘¨¬¢®«ë, 0x00 []
;[]=========================================================================[]
ld a,(Color.Screen) ;®á­®¢­®© 梥â
ld (PrnStrColor.L1+5),a
PrnStrColor:
ld a,(hl)
cp 0x16 ;ª®¤ ãáâ ­®¢ª¨ ¯®§¨æ¨¨ ªãàá®à 
jr nz,.L2
inc hl
ld e,(hl) ;á⮫¡¥æ
ld a,e
ld (PrtXCoord),a
inc hl
ld d,(hl) ;áâப 
inc hl
ld a,(hl) ;ᨬ¢®«
.L2 cp 0x0D
jr nz,.L3
inc d
ld a,(PrtXCoord)
ld e,a
jr .L4
.L3 cp 0x17
jr nz,.L1
inc hl
ld a,(hl)
ld (PrnStrColor.L1+5),a
inc hl
ld a,(hl)
.L1 or a
ret z ;¢ë室 ¥á«¨ ª®­¥æ áâப¨
push hl
push de
;¯¥ç âì ç/§ ¡¨®á ¨«¨ ¤áá?
ifdef D_PRINTCH_BIOS
ld h,0x03 ; âਡãâ
ld l,a
sub a ;¨¤¥­â¨ä¨ª â®à ®ª­ 
; ld a,(Demon.Bios_Win)
ld bc,SysSymb*256+Bios.Win_Put_Sym
rst BiosRst
else
ld b,0x03
ld c,Dss.WrChar
rst DssRst
endif
pop de
pop hl
inc e
.L4 inc hl
jr PrnStrColor
PrtXCoord db 0
;[]=========================================================================[]
;[] <20>¥ç âì ¤¢ãå¡ ©â®¢®£® ç¨á«  []
;[] ‚室: DE - ª®®à¤¨­ âë ¯¥ç â¨ []
;[] HL - §­ ç¥­¨¥ ॣ¨áâ஢®© ¯ àë []
;[]=========================================================================[]
PrintReg:
di
push hl
ld c,Bios.Lp_Set_Place ;ãáâ ­®¢ª  ¯®§¨æ¨¨ ¯¥ç â¨
rst BiosRst
pop hl
ld a,(DecHex) ;á¨á⥬ áç¨á«¥­¨ï
or a
jr z,.Hex
ld de,.String
call ConvDecStr
jr .Print
.Hex ld a,"#"
ld (.String),a
ld c,l
ld a,h
call ConvHexStr
ld (.String+1),hl ;áâ à訩 ¡ ©â
ld a,c
call ConvHexStr
ld (.String+3),hl ;¬« ¤è¨© ¡ ©â
.Print ld hl,.String ;¯¥ç â ¥¬ ï áâப 
ld bc,5*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨­  áâப¨
rst BiosRst
ei
ret
.String db "#0123"
;[]=========================================================================[]
;[] <20>¥ç âì §­ ç¥­¨ï ॣ¨áâ஢®© ¯ àë AF ¨ ä« £®¢ []
;[] ‚室: DE - ª®®à¤¨­ âë ¯¥ç â¨ []
;[] HL - §­ ç¥­¨¥ ॣ¨áâ஢®© ¯ àë []
;[]=========================================================================[]
PrintStrAF:
ld a,h ;§­ ç¥­¨¥ ॣ¨áâà  A
push hl
ld (.String+11),a
ld hl,.String+1 ;¤¢®¨ç­®¥ §­ ç¥­¨¥
push de
ld de,0x3031 ;"01"
ld b,8
.L1 rlca
jr c,$+5
ld (hl),d ;"0"
jr $+3
ld (hl),e ;"1"
inc hl
djnz .L1
pop de
inc b ;B=1
inc hl
inc hl
call ReplSymNoPrint
pop hl
ld a,l ;ä« £¨
push hl
ld hl,.Flags
ld b,8
res 3,a ;á¡à®á ­¥¨§¢¥áâ­ëå ä« £®¢
res 5,a
.L2 rlca
jr c,$+6
set 5,(hl) ;á¡à®è¥­
jr $+4
res 5,(hl) ;ãáâ ­®¢«¥­
inc hl
djnz .L2
pop hl
push de
call PrintReg ;¯¥ç âì §­ ç¥­¨ï ॣ.¯ àë
pop de
push de
ld a,6
add a,e
ld e,a
ld c,Bios.Lp_Set_Place
di
rst BiosRst
ld hl,.String
ld bc,13*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨­  áâப¨
di
rst BiosRst
pop de
inc d
dec e
dec e
dec e
ld c,Bios.Lp_Set_Place
di
rst BiosRst
ld hl,.Flags
ld bc,8*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨­  áâப¨
di
rst BiosRst
ei
ret
.String db '%01010101 " "'
.Flags db "SZ.H.PNC"
;[]=========================================================================[]
;[] <20>¥ç âì §­ ç¥­¨© ॣ¨áâ஢ëå ¯ à á  ¤à¥á㥬묨 ¡ ©â ¬¨ []
;[] ‚室: DE - ª®®à¤¨­ âë ¯¥ç â¨ []
;[] HL - §­ ç¥­¨¥ ॣ¨áâ஢®© ¯ àë []
;[]=========================================================================[]
PrintStrReg:
push hl
ld b,h
ld c,l
call Ld_a_bc ;ld a,(bc)  ¤à¥áã¥¬ë¥ ¡ ©âë
ld (.String+10),a
call ConvHexStr
ld (.String),hl
inc bc
call Ld_a_bc ;ld a,(bc)
ld (.String+11),a
call ConvHexStr
ld (.String+2),hl
inc bc
call Ld_a_bc ;ld a,(bc)
ld (.String+12),a
call ConvHexStr
ld (.String+5),hl
inc bc
call Ld_a_bc ;ld a,(bc)
ld (.String+13),a
call ConvHexStr
ld (.String+7),hl
ld hl,.String+10 ;§ ¬¥­  ­¥¯¥ç â­ëå ᨬ¢®«®¢
ld b,4
call ReplSymNoPrint
pop hl
push de
call PrintReg ;¯¥ç âì §­ ç¥­¨ï ॣ.¯ àë
pop de
di
ld a,6
add a,e
ld e,a
ld c,Bios.Lp_Set_Place ;ãáâ ­®¢ª  ¯®§¨æ¨¨ ¯¥ç â¨
rst BiosRst
ld hl,.String ;¯¥ç â ¥¬ ï áâப 
ld bc,14*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨­  áâப¨
rst BiosRst
ei
ret
.String db "0123 4567 ABCD"
;[]=========================================================================[]
;[] <20>¥ç âì ­®¬¥à®¢ ¡ ­®ª ¢ ®ª­ å []
;[] ‚室: HL -  ¤à¥á á®åà ­¥­­ëå ­®¬¥à®¢ []
;[]=========================================================================[]
PrintStrWin:
ld hl,WinPage ;¢ë¢®¤ ­®¬¥à®¢ ¡ ­®ª ¢ ®ª­ å
ld de,.String+3
ld b,4
.L1 push bc
ld a,(hl)
inc hl
push hl
ld l,a
ld h,0
call NumToStr8 ;ª®­¢¥àâ¨à®¢ ­¨¥ ¢ HEX-áâபã
inc de
inc de
inc de
pop hl
pop bc
djnz .L1
ld hl,.String
jp PrnStrColor-6
.String db 0x16,0x02,0x12,"#01"
db 0x16,0x08,0x12,"#02"
db 0x16,0x0E,0x12,"#03"
db 0x16,0x14,0x12,"#04",0
;[]=========================================================================[]
;[] <20>¥ç âì £«ã¡¨­ë á⥪  []
;[]=========================================================================[]
PrintSPDn:
ld a,(StackDown)
ld l,a
ld a,0x7F
cp l ;®âà¨æ â¥«ì­®¥?
jr nc,.L1
res 7,l ;á¡à®á¨âì ¬¨­ãá
inc a
sub l
ld l,a
.L1 ld h,0
ld de,.String+1
push de
call ConvDecStr8
pop hl
dec hl
ld bc,3*256+"0"
ld (hl),c
ld a,(hl) ;£ è¥­¨¥ ­¥§­ ç é¨å ­ã«¥©
cp c
jr nz,$+8
ld a,0x20
ld (hl),a
inc hl
djnz $-8
ld a,(StackDown)
bit 7,a
jr z,$+6
dec hl ;®âà¨æ â¥«ì­®¥ ç¨á«®
ld a,"-"
ld (hl),a
ld de,0x140A
ld c,Bios.Lp_Set_Place ;ãáâ ­®¢ª  ¯®§¨æ¨¨ ¯¥ç â¨
di
rst BiosRst
ld hl,.String ;¯¥ç â ¥¬ ï áâப 
ld bc,4*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨­  áâப¨
di
rst BiosRst
ei
ret
.String ds 4
;[]=========================================================================[]
;[] <20>¥ç âì §­ ç¥­¨© á⥪  []
;[]=========================================================================[]
PrintStrSP:
ld a,(.StrSp) ;áâப  á ¢¥à設®© á⥪ 
inc a
jr z,.L4 ;¥á«¨ ¢¥à設  á⥪  ­¥ ¯®¯ ¤ ¥â ¢ ¤ ¬¯
ld hl,(Reg._SP)
dec hl
dec hl
inc hl
inc hl
dec a
jr nz,$-3
ld (StackDump),hl
.L4 ld hl,(StackDump) ;­ ç «® ¤ ¬¯ 
ld de,#1601 ;ª®®à¤¨­ âë ¯¥ç â¨
ld a,-1
ld (.StrSp),a
ld b,8 ;ª®«-¢® áâப ¤ ¬¯ 
.L3 push bc
push de ;ª®®à¤¨­ âë
push hl
or a ;á¡à®á ä« £  C
ld a,b
ld bc,(Reg._SP) ; ¤à¥á ¢¥à設ë á⥪ 
sbc hl,bc
jr nz,.L2
ld b,a
ld a,8
sub b
ld (.StrSp),a ;­®¬¥à áâப¨ ¢ ¤ ¬¯¥ á ¢¥à設®© á⥪ 
ld a,(Color._SP) ;梥⠢¥à設ë á⥪ 
jr .L2+3
.L2 ld a,(Color.Screen) ;®á­®¢­®© 梥â
ld (.L1+1),a ;§ ¯¨á «¨ 梥â
ld c,Bios.Lp_Set_Place ;ãáâ ­®¢ª  ¯®§¨æ¨¨ ¯¥ç â¨
di
rst BiosRst
.L1 ld e,0 ;梥⠯®¤á¢¥âª¨
ld bc,11*256+Bios.Lp_Print_Atr ;¢ ॣ.B ¤«¨­  áâப¨
rst BiosRst
pop hl
pop de
push de
push hl
call PrintReg ;¯¥ç âì  ¤à¥á 
pop hl
pop de
push de
dec hl
dec hl
push hl
ld a,6
add a,e
ld e,a
inc hl
inc hl
call Ld_a_hl
ld c,a
inc hl
call Ld_a_hl
ld l,a
ld h,c
call PrintReg ;¯¥ç âì §­ ç¥­¨ï á⥪ 
pop hl
pop de
inc d
pop bc
djnz .L3
ei
ret
.StrSp db 6
;[]=========================================================================[]
;[] <20>¥ç âì ¤ ¬¯  []
;[]=========================================================================[]
PrintDump:
ld de,0x160E ;ª®®à¤¨­ âë
ld hl,(Dump1)
ld b,8 ;ª®«¨ç¥á⢮ áâப
push de
push bc
push hl
call PrintStrDump
pop hl
ld bc,16
add hl,bc
pop bc
pop de
inc d ;á«¥¤ãîé ï áâப 
djnz $-14
ret
ld hl,Dump ;¢ë¢®¤ ¤ ¬¯ 
; ld de,0x160E ;ª®®à¤¨­ âë
ld b,8 ;ª®«¨ç¥á⢮ áâப
push de
push bc
ld c,(hl) ;¬« ¤è¨© ¡ ©â  ¤à¥á 
inc hl
push hl
ld h,(hl) ;áâ à訩 ¡ ©â  ¤à¥á 
ld l,c
call PrintStrDump
pop hl
inc hl
pop bc
pop de
inc d ;á«¥¤ãîé ï áâப 
djnz $-15
ret
;[]=========================================================================[]
;[] <20>¥ç âì áâப¨ ¤ ¬¯  []
;[] ‚室: DE - ª®®à¤¨­ âë ¯¥ç â¨ []
;[] HL -  ¤à¥á ­ ç «  áâப¨ []
;[]=========================================================================[]
PrintStrDump:
push de
push hl
ld b,h
ld c,l
ld de,.String
ld ix,.String+41
push ix
ld a,8
.L1 exa
call Ld_a_bc ;ld a,(bc)
ld (ix),a
inc ix
call ConvHexStr
ex de,hl
ld (hl),e
inc hl
ld (hl),d
inc hl
ex de,hl
inc bc
call Ld_a_bc ;ld a,(bc)
ld (ix),a
inc ix
call ConvHexStr
ex de,hl
ld (hl),e
inc hl
ld (hl),d
inc hl
inc hl
ex de,hl
inc bc
exa
dec a
jr nz,.L1
ld b,16
pop hl
call ReplSymNoPrint ;§ ¬¥­  ­¥¯¥ç â­ëå ᨬ¢®«®¢
pop hl
pop de
push de
call PrintReg ;¯¥ç âì  ¤à¥á  áâப¨
pop de
di
ld a,7
add a,e
ld e,a
ld c,Bios.Lp_Set_Place ;ãáâ ­®¢ª  ¯®§¨æ¨¨ ¯¥ç â¨
rst BiosRst
ld hl,.String
ld bc,57*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨­  áâப¨
rst BiosRst
ei
ret
.String db "1000 2000 3000 4000 5000 6000 7000 8000 "
db "0123456789ABCDEF"
;[]=========================================================================[]
;[] ‡ ¬¥­  ­¥¯¥ç â­ëå ᨬ¢®«®¢ ¢ áâப¥ []
;[] ‚室: B - ¤«¨­  áâப¨ []
;[] HL -  ¤à¥á ­ ç «  áâப¨ []
;[]=========================================================================[]
ReplSymNoPrint:
ld a,(SymbolNoPrint)
ld c,a
.L1 ld a,(hl)
cp 127
jr z,$+10
cp 0xFF
jr z,$+6
cp " "
jr nc,$+3
ld (hl),c
inc hl
djnz .L1
ret
;[]=========================================================================[]
;[] ”®à¬¨à®¢ ­¨¥ 16-⨡¨â­®£® ç¨á«  []
;[] ‚室: DE -  ¤à¥á ¡ãä¥à  []
;[] HL - ç¨á«® []
;[]=========================================================================[]
NumToStr16:
ld a,(DecHex) ;á¨á⥬ áç¨á«¥­¨ï
or a
jp nz,ConvDecStr
ld a,"#"
ld (de),a
inc de
ld c,l
ld a,h
call ConvHexStr
ex de,hl
ld (hl),e ;áâ à訩 ¡ ©â
inc hl
ld (hl),d
inc hl
ex de,hl
ld a,c
call ConvHexStr
ex de,hl
ld (hl),e ;¬« ¤è¨© ¡ ©â
inc hl
ld (hl),d
inc hl
ex de,hl
ret
;[]=========================================================================[]
;[] ”®à¬¨à®¢ ­¨¥ 8-¡¨â­®£® ç¨á«  []
;[] ‚室: DE -  ¤à¥á ¡ãä¥à  []
;[] HL - ç¨á«® []
;[]=========================================================================[]
NumToStr8:
ld a,(DecHex) ;á¨á⥬ áç¨á«¥­¨ï
or a
jp nz,ConvDecStr8
.Hex ld a,"#"
ld (de),a
inc de
ld a,l
call ConvHexStr
ex de,hl
ld (hl),e
inc hl
ld (hl),d
inc hl
ex de,hl
ret
;[]=========================================================================[]
;[] Š®­¢¥àâ¨à®¢ ­¨¥ ç¨á«  ¢ HEX-áâபã []
;[] ‚室: A - ç¨á«® []
;[] ‚ë室: HL - HEX-áâப  []
;[]=========================================================================[]
ConvHexStr:
push af
rrca
rrca
rrca
rrca
and 0x0F
add a,0x30
cp 0x3A
jr c,$+4
add a,7
ld l,a
pop af
and 0x0F
add a,0x30
cp 0x3A
jr c,$+4
add a,7
ld h,a
ret
;[]=========================================================================[]
;[] Š®­¢¥àâ¨à®¢ ­¨¥ 16-¡¨â­®£® ç¨á«  ¢ DEC-áâபã []
;[] ‚室: HL - ç¨á«® []
;[] DE -  ¤à¥á ­ ç «  DEC-áâப¨ []
;[]=========================================================================[]
ConvDecStr:
ld bc,-10000
ld a,0xFF
inc a
add hl,bc
jr c,$-2
sbc hl,bc
add a,"0"
ld (de),a
inc de
ld bc,-1000
ld a,0xFF
inc a
add hl,bc
jr c,$-2
sbc hl,bc
add a,"0"
ld (de),a
inc de
ConvDecStr8:
ld bc,-100
ld a,0xFF
inc a
add hl,bc
jr c,$-2
sbc hl,bc
add a,"0"
ld (de),a
inc de
ConvDecStr8_1:
ld bc,-10
ld a,0xFF
inc a
add hl,bc
jr c,$-2
sbc hl,bc
add a,"0"
ld (de),a
inc de
ld a,l
add a,"0"
ld (de),a
inc de
ret
;[]=========================================================================[]
;[] <20>à®à¨á®¢ª  ªãàá®à  []
;[] ‚室: B - ¤«¨­  ªãàá®à  []
;[] HL - ª®®à¤¨­ âë ªãàá®à  []
;[]=========================================================================[]
CursorSet:
ld (CursorRes+1),hl
ex de,hl
ld l,b ;à §¬¥à ¯® ¢¥à⨪ «¨
ld h,1 ;à §¬¥à ¯® £®à¨§®­â «¨
ld (CursorRes+4),hl
ld ix,.Buffer
push de
push hl
push ix
push bc
ifdef D_PRINTCH_BIOS
xor a
ld c,Bios.Win_Copy_Win ;ª®¯¨à®¢ ­¨¥ ¢ ¡ãä¥à
di
rst BiosRst
ei
else
ld a,(BankDebug)
ld b,a
ld c,Dss.WinCopy
rst DssRst
endif
pop bc ;¢ B ¤«¨­  ªãàá®à 
pop hl
push hl
inc hl
ld a,(hl) ;梥â ᨬ¢®«®¢
ld (CursorRes.L1+1),a
ld a,(Color.Cursor)
.L1 ld (hl),a
inc hl ;ª ¡ ©âã 梥â 
inc hl
djnz .L1
pop ix
pop hl
pop de
ifdef D_PRINTCH_BIOS
xor a
ld c,Bios.Win_Restore_Win ;¢ë¢®¤ ªãàá®à  ­  íªà ­
di
rst BiosRst
ei
else
ld a,(BankDebug)
ld b,a
ld c,Dss.WinRest
rst DssRst
endif
ret
.Buffer ds 22*2 ;max ¤«¨­  ªãàá®à 
;[]=========================================================================[]
;[] ‚®áâ ­®¢«¥­¨¥ íªà ­  ¯®¤ ªãàá®à®¬ []
;[]=========================================================================[]
CursorRes:
ld de,0 ;ª®®à¤¨­ âë
ld hl,0 ;à §¬¥à
ld b,l ;¤«¨­ 
push de
push hl
ld hl,CursorSet.Buffer
push hl
.L1 ld a,0 ;梥â
inc hl ;ª ¡ ©âã 梥â 
jr CursorSet.L1
;[]=========================================================================[]
;[] —⥭¨¥ ¡ ©â  ¨§ ¯ ¬ïâ¨ á ¯à®¢¥àª®©  ¤à¥á  []
;[] ‚室: BC ¨«¨ HL -  ¤à¥á ¢ ¯ ¬ï⨠[]
;[] ‚ë室: A - áç¨â ­­ë© ¡ ©â []
;[]=========================================================================[]
Ld_a_bc:
ld a,11000000b ;¯à®¢¥àª  ¤¨ ¯ §®­ 
and b
jr z,.L1 ;¢ 0-¬ ®ª­¥
cp 10000000b ;¢® 2-®¬ ®ª­¥
ld a,(bc)
ret nz ;¢®§¢à é ¥¬ ¡ ©â, ¥á«¨ ­¥â
ld a,(WinPage+2) ;­®¬¥à ¡ ­ª¨ ¯®¤ ®â« ¤ç¨ª®¬
out (EmmWin.P3),a ;¢ âà¥âì¥ ®ª­® ¥¥
set 6,b ;ª®à४â¨à㥬  ¤à¥á
ld a,(bc) ;ç¨â ¥¬ ¡ ©â
res 6,b ;¢®áâ ­ ¢«¨¢ ¥¬  ¤à¥á
jr Ld_a_hl.L1
.L1 ld a,(WinPage) ;­®¬¥à ¡ ­ª¨ ¢ 0-¬
out (EmmWin.P3),a ;¢ âà¥âì¥ ®ª­® ¥¥
set 6,b ;ª®à४â¨à㥬  ¤à¥á
set 7,b
ld a,(bc) ;ç¨â ¥¬ ¡ ©â
res 6,b ;¢®áâ ­ ¢«¨¢ ¥¬  ¤à¥á
res 7,b
jr Ld_a_hl.L1
Ld_a_hl:
ld a,11000000b ;¯à®¢¥àª  ¤¨ ¯ §®­ 
and h
jr z,.L2 ;¢ 0-¬ ®ª­¥
cp 10000000b ;¢® 2-®¬ ®ª­¥
ld a,(hl)
ret nz ;¢®§¢à é ¥¬ ¡ ©â, ¥á«¨ ­¥â
ld a,(WinPage+2) ;­®¬¥à ¡ ­ª¨ ¯®¤ ®â« ¤ç¨ª®¬
out (EmmWin.P3),a ;¢ âà¥âì¥ ®ª­® ¥¥
set 6,h ;ª®à४â¨à㥬  ¤à¥á
ld a,(hl) ;ç¨â ¥¬ ¡ ©â
res 6,h ;¢®áâ ­ ¢«¨¢ ¥¬  ¤à¥á
jr .L1
.L2 ld a,(WinPage) ;­®¬¥à ¡ ­ª¨ ¢ 0-¬ ®ª­¥
out (EmmWin.P3),a ;¢ âà¥âì¥ ®ª­® ¥¥
set 6,h ;ª®à४â¨à㥬  ¤à¥á
set 7,h
ld a,(hl) ;ç¨â ¥¬ ¡ ©â
res 6,h ;¢®áâ ­ ¢«¨¢ ¥¬  ¤à¥á
res 7,h
.L1 push af
ld a,(WinPage+3) ;­®¬¥à ¡ ­ª¨ ¨§ 3-£® ®ª­ 
out (EmmWin.P3),a ;¢®áâ ­ ¢«¨¢ ¥¬
pop af
ret
;[]=========================================================================[]
;[] ‡ ¯¨áì ¡ ©â  ¢ ¯ ¬ïâì á ¯à®¢¥àª®©  ¤à¥á  []
;[] ‚室: HL -  ¤à¥á ¢ ¯ ¬ï⨠[]
;[] A - § ¯¨á뢠¥¬ë© ¡ ©â []
;[]=========================================================================[]
Ld_hl_a:
push af
ld a,11000000b ;¯à®¢¥àª  ¤¨ ¯ §®­ 
and h
jr z,.L2 ;¢ 0-®¬ ®ª­¥
cp 10000000b ;¢® 2-®¬ ®ª­¥?
jr z,.L1
pop af
ld (hl),a ;§ ¯¨á «¨ ¡ ©â, ¥á«¨ ­¥â
ret
.L1 ld a,(WinPage+2) ;­®¬¥à ¡ ­ª¨ ¯®¤ ®â« ¤ç¨ª®¬
out (EmmWin.P3),a ;¢ âà¥âì¥ ®ª­® ¥¥
set 6,h ;ª®à४â¨à㥬  ¤à¥á
pop af
ld (hl),a ;¯¨è¥¬ ¡ ©â
jr .L3
.L2 ld a,(WinPage) ;­®¬¥à ¡ ­ª¨ ¢ 0-®¬
out (EmmWin.P3),a ;¢ âà¥âì¥ ®ª­® ¥¥
set 6,h ;ª®à४â¨à㥬  ¤à¥á
set 7,h
pop af
ld (hl),a ;¯¨è¥¬ ¡ ©â
res 7,h ;¢®áâ ­ ¢«¨¢ ¥¬  ¤à¥á
.L3 res 6,h
ld a,(WinPage+3) ;­®¬¥à ¡ ­ª¨ ¨§ 3-£® ®ª­ 
out (EmmWin.P3),a ;¢®áâ ­ ¢«¨¢ ¥¬
ret
;[]=========================================================================[]
;[] Ž¯à¥¤¥«¥­¨¥ ¯à¨­ ¤«¥¦­®á⨠ ¤à¥á  ®¡« á⨠¯ ¬ï⨠[]
;[] ‚室: HL - ­¨¦­¨©  ¤à¥á ®¡« á⨠¯ ¬ï⨠[]
;[] DE - ¢¥àå­¨©  ¤à¥á ®¡« á⨠¯ ¬ï⨠[]
;[] BC -  ¤à¥á []
;[] ‚ë室: ä« £ C -  ¤à¥á ­¥ ¯à¨­ ¤«¥¦¨â ®¡« á⨠¯ ¬ï⨠[]
;[] ä« £ NC -  ¤à¥á ¯à¨­ ¤«¥¦¨â ®¡« á⨠¯ ¬ï⨠[]
;[]=========================================================================[]
AdrArea:
or a
sbc hl,bc
ret c
ex de,hl
or a
sbc hl,bc
ccf
ret

1
VERSION/build.bin Normal file
View File

@ -0,0 +1 @@
0003

1
VERSION/date.bin Normal file
View File

@ -0,0 +1 @@
210211

1
VERSION/major.bin Normal file
View File

@ -0,0 +1 @@
0

1
VERSION/minor.bin Normal file
View File

@ -0,0 +1 @@
11

1
VERSION/time.bin Normal file
View File

@ -0,0 +1 @@
00:00

25
changes.txt Normal file
View File

@ -0,0 +1,25 @@
DemoN v.0.11
Hard/WCG
b0003 20.02.2011
+ По кнопке <Z> PC присваивается адрес, на котором установлен курсор.
+ Добавил диалог Load BIN-file, но еще не довел его до ума.
b0002 19.02.2011
* Изменил процедуры печати и прорисовки курсора для работы через DSS, т.к. на эмуляторе Demon не
полноценно работает.
+ при старте запоминаем текущий режим экрана и при выходе - восстанавливаем.
+ сохраняем в буфер инфу экрана ОСи, если экран демона находится на той же странице,
при выходе - восстанавливаем
* изменена П/П просмотра другого экрана, теперь она с учетом того, что демон и ОС могут быть на одном экране
* изменен образ "непечатаемого" символа
+ добавил ПП прорисовки окон и обработки диалогов - на будущее
b0001 18.02.2011
* Переделал исходник под кроссассемблер sjasmplus.

BIN
d010_136.rar Normal file

Binary file not shown.

1
daemon.lst Normal file
View File

@ -0,0 +1 @@
(0): error: Error opening file: daemon.asm

BIN
demon.exe Normal file

Binary file not shown.

7807
demon.lst Normal file

File diff suppressed because it is too large Load Diff

BIN
dm.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

191
loadbin.asm Normal file
View File

@ -0,0 +1,191 @@
LoadBinDialog ld ix,.LoadBinWnd
call DialogWindow
ret
.LoadBinEditFN ;ld hl,.LoadBinFileName
;ld c,20
;call InputLine.ToBuffer
.L003 ld hl,#0f24
ld b,20
call InputLine1
jr c,LoadBinDialog
ld a,c
and a
jr z,.L003
ld (.filenamelen),a
push bc
ld de,.LoadBinFileName
call InputLine.FromBuffer
pop bc
ld a,20
sub c
jr z,.L001
ld b,a
ld a,32
.L002 ld (de),a
inc de
djnz .L002
.L001 jr LoadBinDialog
.EditAddres ld hl,#1021
ld b,5
call InputLine1
jr c,LoadBinDialog
push bc
call PutAdres
pop bc
jr c,.EditAddres
ld (.LoadToAdr),hl
ld de,.AdresTxt
call InputLine.FromBuffer
jr LoadBinDialog
.EditLenght ld hl,#1031
ld b,5
call InputLine1
jr c,LoadBinDialog
push bc
call PutAdres
pop bc
jr c,.EditLenght
ld (.LoadLen),hl
ld de,.LenTxt
call InputLine.FromBuffer
jr LoadBinDialog
.LoadBIN
xor a
ld (ClockOn),a
ld c,Dss.Open
ld hl,.LoadBinFileName
push hl
ld a,(.filenamelen)
ld d,0
ld e,a
add hl,de
ld (.restadr+1),hl
ld (hl),0
pop hl
ld a,1
rst DssRst
jp c,.Err1
.restadr ld hl,0
ld (hl),32
ld (.FMid),a
ld hl,(.LoadToAdr)
ld a,1 ;àäðåñ â îáëàñòè #0000-7fff?
bit 7,h
jr z,.adr0000
inc a ;#8000-#bfff?
bit 6,h
jr z,.adr
inc a ;#c000-ffff !!!
jr .adr
.adr0000 bit 6,h
jr nz,.adr
sub a
.adr ld (.bank),a
set 6,h ;àäðåñ çàãðóçêè =>#4XXX
res 7,h
ld (.LoadFirst+4),hl
push hl
ld hl,0 ;Óçíàåì äëèíó ôàéëà
ld ix,0
ld b,2
ld c,Dss.Move_FP
rst DssRst
ld (.LoadLen),HL
ld (.LoadEnd+1),hl
pop hl
.Load00 and a
ex hl,de
ld de,#8000
sbc hl,de
ld (.LoadFirst+1),hl
ld de,(.LoadEnd+1)
and a
sbc hl,de
jr c,.LoadEnd
.LoadFirst ld de,0 ;êîëè÷åñòâî áàéò, êîòîðûå íàäî ñ÷èòàòü â ïåðâóþ áàíêó
ld hl,0 ;àäðåñ, êóäà ñêà÷àòü
.LoadNext call .Bank1
ld c,Dss.Read
ld a,(.FMid)
rst DssRst
jr c,.Err
ld hl,.bank
inc (hl)
ld hl,(.LoadEnd+1)
ld de,#4000
and a
sbc hl,de
jr c,.LoadEnd ;Îñòàëîñü ìåíüøå 16Êá
ld (.LoadEnd+1),hl
ld hl,#4000
ld de,#4000
jr .LoadNext
.LoadEnd ld de,0 ;êîëè÷åñòâî áàéò, êîòîðûå íåîáõîäèìî äî÷èòàòü
call .Bank1
ld hl,#4000
ld a,(.FMid)
ld c,Dss.Read
rst DssRst
jr c,.Err
ld a,(.FMid)
ld c,Dss.Close
rst DssRst
ld hl,(.LoadToAdr)
ld (ListAdr),hl
ld a,(WinPage+1)
out (EmmWin.P1),a
ret
.Err push af
ld a,(.FMid)
ld c,Dss.Close
rst DssRst
pop af
.Err1 call ErDss
ld c,Dss.PChars ;âûâîä òåêñòà îøèáêè è îæèäàíèÿ any key
rst DssRst
ld c,Dss.WaitKey
rst DssRst
ret
.Bank1 push hl
push de
ld a,(.bank)
ld l,a
ld h,0
ld de,WinPage
add hl,de
ld a,(hl)
out (EmmWin.P1),a
pop de
pop hl
ret
.bank db 0
.FMid db 0
.filenamelen db 0
.LoadToAdr dw #4000
.LoadLen dw #1000
.LoadBinWnd db 2,23,13,36,6,7
db "Load BIN-file",0
db "Filename: "
.LoadBinFileName ds 20,32
db 0X0D
db "Addres: "
.AdresTxt db "#4000 Lenght: "
.LenTxt db "#1000"
db 0x16,10+23,4+13,"OK Cancel",0
db 5
db 35,15,22,2 ;Filename
dw 0,.LoadBinEditFN
db 32,16,7,2 ;Addres
dw 0,.EditAddres
db 48,16,7,2 ;Lenght
dw 0,.EditLenght
db 30,17,8,2 ;OK
dw 0,.LoadBIN
db 41,17,8,2 ;Cancel
dw 0,0

3
make.bat Normal file
View File

@ -0,0 +1,3 @@
C:\asm\sjasm\sjasmplus.exe --lst=demon.lst --lstlab demon.asm
copy /B /Y demon.exe M:\Install\zx\sprinter\soft\emulator\exe\disk\
pause 0

26
readme.txt Normal file
View File

@ -0,0 +1,26 @@
Монитор-отладчик DemoN by Alpha Studio с небольшими доработками Hard/WCG
DemoN v.0.11
b0003 20.02.2011
+ По кнопке <Z> PC присваивается адрес, на котором установлен курсор.
+ Добавил диалог Load BIN-file, но еще не довел его до ума.
b0002 19.02.2011
* Изменил процедуры печати и прорисовки курсора для работы через DSS, т.к. на эмуляторе Demon не
полноценно работает.
+ при старте запоминаем текущий режим экрана и при выходе - восстанавливаем.
+ сохраняем в буфер инфу экрана ОСи, если экран демона находится на той же странице,
при выходе - восстанавливаем
* изменена П/П просмотра другого экрана, теперь она с учетом того, что демон и ОС могут быть на одном экране
* изменен образ "непечатаемого" символа
+ добавил ПП прорисовки окон и обработки диалогов - на будущее
b0001 18.02.2011
* Переделал исходник под кроссассемблер sjasmplus.

349
windows.asm Normal file
View File

@ -0,0 +1,349 @@
;IX - WINDOW DESCRIPTOR
;+0 - FLAG:
; BITS: 0 - STANDART WINDOW
; 1 - 0 - WITHOUT HEADER / 1 - WITH HEADER
; 2 - 0 - ORDINARY FRAME / 1 - DOUBLE FRAME
;+1 - X COORD
;+2 - Y COORD
;+3 - LENGHT
;+4 - HEIGHT
;+5 - ATTR
Windows BIT 0,(IX+0)
JR Z,NO_STAND_WIN
LD A,(IX+1)
LD DE,-4
ADD IX,DE
PUSH IX
LD IX,STANDART
LD (IX+5),A
JR STAND_WIN
NO_STAND_WIN
PUSH IX
STAND_WIN
CALL Rectang
CALL Frame
BIT 1,(IX+0)
CALL NZ,WinHeader
POP HL
; PUSH HL
LD DE,6
ADD HL,DE
bit 1,(ix+0)
ld a,(IX+5)
jr z,WinNoHeader
RRCA
RRCA
RRCA
RRCA
AND #7F
ld (PrnStrColor.L1+5),a
push hl
call MenuItemLen
ld a,(ix+3)
sbc a,b
ld e,(ix+1)
and a
rra
add a,e
ld e,a
ld d,(ix+2)
pop hl
CALL PrnStrColor
inc hl
ld a,(IX+5)
WinNoHeader
ld (PrnStrColor.L1+5),a
ld d,(ix+2) ;Êîîðäèíàòû â îêíå
ld e,(ix+1)
inc d
inc d
inc e
inc e
ld a,e
ld (PrtXCoord),a
; LD (WINDOW_TXT),HL
CALL PrnStrColor
; EX (DE),HL
RET
;Ðèñîâàíèå çàãîëîâêà îêíà
WinHeader
LD E,(IX+1)
LD D,(IX+2)
LD L,(IX+3)
LD H,1
LD A,(IX+5)
RRCA
RRCA
RRCA
RRCA
AND #7F
LD B,A
LD A,#20
CALL FillBox
RET
;Ïðîöåäóðà îñâîáîæäåíèÿ ïðÿìîóãîëüíîé ïëîùàäè îêíà
;Íà âõîä: IX - àäðåñ îïèñàòåëÿ
Rectang LD E,(IX+1)
LD D,(IX+2)
LD H,(IX+4)
LD L,(IX+3)
LD B,(IX+5)
LD A,#20
CALL FillBox
RET
FillBox PUSH HL
PUSH DE
FillB1 LD C,Dss.WrChar
RST DssRst
INC E
DEC L
JR NZ,FillB1
POP DE
POP HL
INC D
DEC H
JR NZ,FillBox
RET
Frame LD HL,FrameType1
BIT 2,(IX+0) ;windows type flag
JR Z,Frame1
LD HL,FrameType2
Frame1 LD D,(IX+2)
LD E,(IX+1)
LD B,(IX+5)
PUSH DE
PUSH HL
; PUSH BC
LD A,(HL)
LD C,Dss.WrChar
RST DssRst
; POP BC
POP HL
POP DE
LD A,(IX+3)
DEC A
ADD A,E
LD E,A
INC HL
LD A,(HL)
LD C,Dss.WrChar
PUSH DE
PUSH HL
RST DssRst
POP HL
POP DE
LD A,(IX+4)
DEC A
ADD A,D
LD D,A
INC HL
LD A,(HL)
PUSH DE
PUSH HL
LD C,Dss.WrChar
RST DssRst
POP HL
POP DE
LD E,(IX+1)
INC HL
LD A,(HL)
LD C,Dss.WrChar
RST DssRst
;HORIZONTAL LINES
INC HL
LD A,(HL)
LD (FramHor),A
INC HL
PUSH HL
LD H,(IX+2)
LD A,(IX+4)
DEC A
ADD A,H
LD L,A
LD A,(IX+3)
SUB 2
LD C,Dss.WrChar
LD E,(IX+1)
INC E
LD B,(IX+5)
FramHl1 PUSH AF
PUSH HL
LD D,H
LD A,0
FramHor EQU $-1
PUSH AF
RST DssRst
POP AF
LD D,L
RST DssRst
POP HL
POP AF
INC E
DEC A
JR NZ,FramHl1
POP HL
;VERTICAL LINES
LD A,(HL)
LD (FramVer),A
LD H,(IX+1)
LD A,(IX+3)
DEC A
ADD A,H
LD L,A
LD A,(IX+4)
SUB 2
LD C,Dss.WrChar
LD D,(IX+2)
INC D
LD B,(IX+5)
FramVl1 PUSH AF
PUSH HL
LD E,H
LD A,0
FramVer EQU $-1
PUSH AF
RST DssRst
POP AF
LD E,L
RST DssRst
POP HL
POP AF
INC D
DEC A
JR NZ,FramVl1
RET
;ËÈÑÒÀÅÒ ÄÎ ÑËÅÄÓÞÙÅÃÎ ÏÓÍÊÒÀ ÌÅÍÞ
MenuItemLen
LD B,0
NextMnuItem
LD A,(HL)
INC HL
AND A
RET Z
INC B
JR NextMnuItem
;Ïðîðèñîâêà îêíà è îáðàáîòêà äèàëîãà
DialogWindow
call Windows
inc hl
; jp WinDialog
;ÏÏ îáðàáîòêè äèàëîãîâîãî îêíà
;Dialogs
;+0 (1) - Count of Items
;+1 (N) - Item Descriptor
;Descriptor
; +0 - X
; +1 - Y
; +2 - Len
; +3 - Attrib
; +4 (2) - Hot Key
; +6 (2) - Routine
WinDialog:
ld a,(hl)
ld (DlgItemsCnt),a
inc hl
ld (.DialogAdr),hl
xor a
ld (SelectedItem),a
.Lp1 ld a,(SelectedItem)
ld l,a
ld h,0
add hl,hl
add hl,hl
add hl,hl
ld de,0
.DialogAdr equ $-2
add hl,de
ld e,(hl)
inc hl
ld d,(hl)
inc hl
ld b,(hl)
ex hl,de
call CursorSet
.Lp2 ld c,Dss.ScanKey
rst DssRst
jr z,.Lp2
ld a,d
cp #52 ;<Down>
jr nz,.Lp3
.LpDn ld a,(DlgItemsCnt)
ld b,a
ld a,(SelectedItem)
inc a
cp b ;Äîñòèãëè ìàêñèìàëüíîãî ïóíêòà
jr z,.Lp2
.Lp4 ld (SelectedItem),a
call CursorRes
jr .Lp1
.Lp3 cp #58 ;<Up>
jr nz,.Lp5
.LpUp ld a,(SelectedItem)
and a
jr z,.Lp2
dec a
jr .Lp4
.Lp5 cp #54 ;<Left>
jr z,.LpUp
cp #56 ;<Right>
jr z,.LpDn
.LpAscii
ld a,e ;ASCII - êîä
cp #0D ;<Enter>
jr nz,.Lp2
call CursorRes
ld a,(SelectedItem)
ld l,a
ld h,0
add hl,hl
add hl,hl
add hl,hl
ld de,(.DialogAdr)
add hl,de
ld de,6
add hl,de
ifdef DEBUG
push hl
ld de,0
call PrintReg
pop hl
endif
ld a,(hl)
inc hl
ld h,(hl)
ld l,a
or h
ret z ;Åñëè àäðåñ =0, òî RET
ifdef DEBUG
push hl
ld de,8
call PrintReg
pop hl
endif
jp (hl)
DlgItemsCnt
DB 0
SelectedItem
DB 0
STANDART; TYPE, X, Y, L,H,COLOR
DEFB 5,10,13,#20,6,7
;Ordinary frame
FrameType1
DB #DA,#BF,#D9,#C0,#C4,#B3
;Double frame
FrameType2
DB #C9,#BB,#BC,#C8,#CD,#BA