mirror of
				https://github.com/romychs/DemoN.git
				synced 2025-10-31 00:06:02 +03:00 
			
		
		
		
	Version for DSS 1.70+
This commit is contained in:
		
							parent
							
								
									4c6b0a25fb
								
							
						
					
					
						commit
						51a7833253
					
				
							
								
								
									
										36
									
								
								CLOCK.ASM
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								CLOCK.ASM
									
									
									
									
									
								
							| @ -1,36 +0,0 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                             ‚뢮¤ ç á®¢                                 [] | ||||
| ;[] 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
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								CMDLINE.ASM
									
									
									
									
									
								
							| @ -1,22 +0,0 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]          Ž¡à ¡®âª  ª®¬ ¤®© áâப¨ ¬®¨â®à -®â« ¤ç¨ª  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
									
									
									
									
									
								
							
							
						
						
									
										116
									
								
								DATA.ASM
									
									
									
									
									
								
							| @ -1,116 +0,0 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                       „ ë¥ ¬®¨â®à -®â« ¤ç¨ª  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
									
									
									
									
									
								
							
							
						
						
									
										389
									
								
								DEMON.ASM
									
									
									
									
									
								
							| @ -1,389 +0,0 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                        Œ®¨â®à-®â« ¤ç¨ª 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 | ||||
							
								
								
									
										
											BIN
										
									
								
								DEMON_old.EXE
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DEMON_old.EXE
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										786
									
								
								DISASM.ASM
									
									
									
									
									
								
							
							
						
						
									
										786
									
								
								DISASM.ASM
									
									
									
									
									
								
							| @ -1,786 +0,0 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                   „¨§ áᥬ¡«¥à ¬®¨â®à -®â« ¤ç¨ª  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 | ||||
| 
 | ||||
| @ -1,71 +0,0 @@ | ||||
| 
 | ||||
| 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
									
									
									
									
									
								
							
							
						
						
									
										104
									
								
								EQU/DSS.INC
									
									
									
									
									
								
							| @ -1,104 +0,0 @@ | ||||
| 
 | ||||
| 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 | ||||
| ; | ||||
| @ -1,6 +1,6 @@ | ||||
| BiosRst			EQU	#08 | ||||
| 
 | ||||
| ;”ãªæ¨¨ à ¡®âë á ¯ ¬ïâìî | ||||
| ;Функции работы с памятью | ||||
| Bios.Emm_Fn0		EQU	#C0 | ||||
| Bios.Emm_Fn1		EQU	#C1 | ||||
| Bios.Emm_Fn2		EQU	#C2 | ||||
| @ -13,7 +13,7 @@ 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 | ||||
| @ -26,7 +26,7 @@ Bios.Win_Get_ZG		EQU	#B8 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ;”ãªæ¨¨ ¢ë¢®¤  ⥪áâ    íªà  | ||||
| ;Функции вывода текста на экран | ||||
| Bios.Lp_Print_All	EQU	#81 | ||||
| Bios.Lp_Print_Sym	EQU	#82 | ||||
| Bios.Lp_Print_Atr	EQU	#83 | ||||
| @ -42,7 +42,7 @@ 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 | ||||
|  | ||||
							
								
								
									
										194
									
								
								EQU/dss_equ.asm
									
									
									
									
									
								
							
							
						
						
									
										194
									
								
								EQU/dss_equ.asm
									
									
									
									
									
								
							| @ -1,105 +1,105 @@ | ||||
| DssRst		EQU	#10 | ||||
| DssRst		EQU	0x10 | ||||
| 
 | ||||
| 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 | ||||
| Dss.Version	EQU	0x00 | ||||
| Dss.ChDisk	EQU	0x01 | ||||
| Dss.CurDisk	EQU	0x02 | ||||
| Dss.DskInfo	EQU	0x03 | ||||
| ;Dss.G_ENTRY	EQU	0x04 | ||||
| ;		EQU	0x05 | ||||
| ;		EQU	0x06 | ||||
| ;		EQU	0x07 | ||||
| ;		EQU	0x08 | ||||
| Dss.BOOTDSK	EQU	0x09 | ||||
| ;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 | ||||
| Dss.Create	EQU	0x0A | ||||
| Dss.Creat_N	EQU	0x0B | ||||
| ;		EQU	0x0C | ||||
| ;Dss.ERASE	EQU	0x0D | ||||
| Dss.Delete	EQU	0x0E | ||||
| ;Dss.Move	EQU	0x0F | ||||
| Dss.Rename	EQU	0x10 | ||||
| Dss.Open	EQU	0x11 | ||||
| Dss.Close	EQU	0x12 | ||||
| Dss.Read	EQU	0x13 | ||||
| Dss.Write	EQU	0x14 | ||||
| Dss.Move_FP	EQU	0x15 | ||||
| Dss.Attrib	EQU	0x16 | ||||
| Dss.Get_D_T	EQU	0x17 | ||||
| Dss.Put_D_T	EQU	0x18 | ||||
| Dss.F_First	EQU	0x19 | ||||
| Dss.F_Next	EQU	0x1A | ||||
| Dss.MkDir	EQU	0x1B | ||||
| Dss.RmDir	EQU	0x1C | ||||
| Dss.ChDir	EQU	0x1D | ||||
| Dss.CurDir	EQU	0x1E | ||||
| ;		EQU	0x1F | ||||
| ;		EQU	0x20 | ||||
| Dss.SysTime	EQU	0x21 | ||||
| Dss.SetTime	EQU	0x22 | ||||
| ;		EQU	0x23 | ||||
| ;		EQU	0x24 | ||||
| ;		EQU	0x25 | ||||
| ;		EQU	0x26 | ||||
| ;		EQU	0x27 | ||||
| ;		EQU	0x28 | ||||
| ;		EQU	0x29 | ||||
| ;		EQU	0x2A | ||||
| ;		EQU	0x2B | ||||
| ;		EQU	0x2C | ||||
| ;		EQU	0x2D | ||||
| ;		EQU	0x2E | ||||
| ;		EQU	0x2F | ||||
| ;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 | ||||
| Dss.WaitKey	EQU	0x30 | ||||
| Dss.ScanKey	EQU	0x31 | ||||
| Dss.EchoKey	EQU	0x32 | ||||
| Dss.CTRLKey	EQU	0x33 | ||||
| ;Dss.EDIT	EQU	0x34 | ||||
| Dss.K_CLEAR	EQU	0x35 | ||||
| Dss.K_SETUP	EQU	0x36 | ||||
| Dss.TESTKEY	EQU	0x37 | ||||
| ;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 | ||||
| Dss.SetWin	EQU	0x38 | ||||
| Dss.SetWin1	EQU	0x39 | ||||
| Dss.SetWin2	EQU	0x3A | ||||
| Dss.SetWin3	EQU	0x3B | ||||
| Dss.INFOMEM	EQU	0x3C | ||||
| Dss.GetMem	EQU	0x3D | ||||
| Dss.FreeMem	EQU	0x3E | ||||
| Dss.SetMem	EQU	0x3F | ||||
| ;Execution | ||||
| Dss.Exec	EQU	#40 | ||||
| Dss.Exit	EQU	#41 | ||||
| Dss.Wait	EQU	#42 | ||||
| Dss.Exec	EQU	0x40 | ||||
| Dss.Exit	EQU	0x41 | ||||
| Dss.Wait	EQU	0x42 | ||||
| 
 | ||||
| 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.GSwitch	EQU	0x43 | ||||
| Dss.DosName	EQU	0x44 | ||||
| Dss.EX_Path	EQU	0x45 | ||||
| Dss.Environ	EQU	0x46 | ||||
| Dss.AppInfo	EQU	0x47 | ||||
| ;		EQU	0x48 | ||||
| ;		EQU	0x49 | ||||
| ;		EQU	0x4A | ||||
| ;		EQU	0x4B | ||||
| ;		EQU	0x4C | ||||
| ;		EQU	0x4D | ||||
| ;		EQU	0x4E | ||||
| ;		EQU	0x4F | ||||
| 
 | ||||
| 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 | ||||
| Dss.SetVMod	EQU	0x50 | ||||
| Dss.GetVMod	EQU	0x51 | ||||
| Dss.Locate	EQU	0x52 | ||||
| Dss.Cursor	EQU	0x53 | ||||
| Dss.SelPage	EQU	0x54 | ||||
| Dss.Scroll	EQU	0x55 | ||||
| Dss.Clear	EQU	0x56 | ||||
| Dss.RdChar	EQU	0x57 | ||||
| Dss.WrChar	EQU	0x58 | ||||
| Dss.WinCopy	EQU	0x59 | ||||
| Dss.WinRest	EQU	0x5A | ||||
| Dss.PutChar	EQU	0x5B | ||||
| Dss.PChars	EQU	0x5C | ||||
| ;Dss.RES_PRN	EQU	0x5D | ||||
| ;Dss.CTRLPRN	EQU	0x5E | ||||
| Dss.Print	EQU	0x5F | ||||
| ; | ||||
|  | ||||
							
								
								
									
										86
									
								
								ERROR.ASM
									
									
									
									
									
								
							
							
						
						
									
										86
									
								
								ERROR.ASM
									
									
									
									
									
								
							| @ -1,86 +0,0 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                Ž¡à ¡®âª  ®è¨¡®ª ¬®¨â®à -®â« ¤ç¨ª  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
									
									
									
									
									
								
							
							
						
						
									
										274
									
								
								FILE.ASM
									
									
									
									
									
								
							| @ -1,274 +0,0 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                ” ©«®¢ë¥ ¯à®æ¥¤ãàë ¬®¨â®à -®â« ¤ç¨ª  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
									
									
									
									
									
								
							
							
						
						
									
										246
									
								
								KDUMP.ASM
									
									
									
									
									
								
							| @ -1,246 +0,0 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                    Ž¡à ¡®âª  ª« ¢¨ âãàë ¢ ®ª¥ ¤ ¬¯                     [] | ||||
| ;[] 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 | ||||
| 
 | ||||
							
								
								
									
										440
									
								
								KREG.ASM
									
									
									
									
									
								
							
							
						
						
									
										440
									
								
								KREG.ASM
									
									
									
									
									
								
							| @ -1,440 +0,0 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                  Ž¡à ¡®âª  ª« ¢¨ âãàë ¢ ®ª¥ ॣ¨áâ஢                  [] | ||||
| ;[] 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
									
									
									
									
									
								
							
							
						
						
									
										212
									
								
								KSTACK.ASM
									
									
									
									
									
								
							| @ -1,212 +0,0 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]               Ž¡à ¡®âª  ª« ¢¨ âãàë ¢ ®ª¥ ¤ ¬¯  á⥪                    [] | ||||
| ;[] 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
									
									
									
									
									
								
							
							
						
						
									
										87
									
								
								REZ.ASM
									
									
									
									
									
								
							| @ -1,87 +0,0 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                          <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
									
									
									
									
									
								
							
							
						
						
									
										64
									
								
								SAVESCR.ASM
									
									
									
									
									
								
							| @ -1,64 +0,0 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                      ‘®åà ¥¨¥ íªà   ¢ ä ©«                           [] | ||||
| ;[] 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
									
									
									
									
									
								
							
							
						
						
									
										431
									
								
								STEP.ASM
									
									
									
									
									
								
							| @ -1,431 +0,0 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                       Žâ« ¤ª  ª®¬ ¤ ¯à®£à ¬¬ë                          [] | ||||
| ;[] 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   ;¤«¨  १¨¤¥â  | ||||
| 
 | ||||
| @ -1 +1 @@ | ||||
| 0003 | ||||
| 0004 | ||||
| @ -1 +1 @@ | ||||
| 210211 | ||||
| 240724 | ||||
| @ -1 +1 @@ | ||||
| 11 | ||||
| 12 | ||||
| @ -1 +1 @@ | ||||
| 00:00 | ||||
| 15:00 | ||||
							
								
								
									
										28
									
								
								changes.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								changes.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | ||||
| 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. | ||||
							
								
								
									
										25
									
								
								changes.txt
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								changes.txt
									
									
									
									
									
								
							| @ -1,25 +0,0 @@ | ||||
| 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. | ||||
							
								
								
									
										35
									
								
								clock.asm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								clock.asm
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,35 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                             Вывод часов                                 [] | ||||
| ;[] 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" | ||||
							
								
								
									
										23
									
								
								cmdline.asm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								cmdline.asm
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,23 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]          Обработка командной строки монитора-отладчика 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 | ||||
| 
 | ||||
							
								
								
									
										
											BIN
										
									
								
								d010_136.rar
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								d010_136.rar
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -1 +0,0 @@ | ||||
| (0): error: Error opening file: daemon.asm | ||||
							
								
								
									
										124
									
								
								data.asm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								data.asm
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,124 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                       Данные монитора-отладчика DemoN                   [] | ||||
| ;[] v0.01 - последние изменения 10.10.2004                                  [] | ||||
| ;[] v0.02 - последние изменения 11.03.2005                                  [] | ||||
| ;[] v0.03 - последние изменения 05.02.2006                                  [] | ||||
| ;[] v0.10 - последние изменения 10.09.2006                                  [] | ||||
| ;[]=========================================================================[] | ||||
| 
 | ||||
| SymbolNoPrint | ||||
| 			DB		0xB0;"."                     		; символы < пробела | ||||
| ClockOn     DB		On                     				; признак вывода часов | ||||
| DemonScreen DB		0                      				; номер экрана отладчика | ||||
| OSScreen	DB		0									; Номер экрана ОСи | ||||
| OSGrafMode	DB		0									; Графический режим оси | ||||
| BufPage		DB		255									; Номер страницы с оконным буфером | ||||
| 
 | ||||
| Hello       DB      "\r\n" | ||||
| ;           DB      "Версия откомпилирована специально для Василия Иванова!",13,10,10 | ||||
| 		IFDEF DSS_1_70 | ||||
| 		    DB      "Demon for DSS 1.70+ v" | ||||
| 		ELSE | ||||
|             DB      "DemoN v" | ||||
| 		ENDIF | ||||
|             INCBIN  "VERSION/major.bin" | ||||
|             DB      "." | ||||
|             INCBIN  "VERSION/minor.bin" | ||||
|             DB      " build " | ||||
|             INCBIN  "VERSION/build.bin" | ||||
|             DB      " (alpha) <Created by Alpha Studio>\r\n" | ||||
|             DB      "Last edition " | ||||
|             INCBIN  "VERSION/date.bin" | ||||
|             DB      " (BLR " | ||||
|             INCBIN  "VERSION/time.bin" | ||||
|             DB      ")\r\n" | ||||
|             DB      "FidoNet: Igor Zhadinets 2:454/5.18; " | ||||
|             DB      "e-mail: igor_ast@tut.by",13,10,10,0 | ||||
| Str: | ||||
| .Load       DB      "Load file ...\r\n",0 | ||||
| .DA         DB      "\r\n",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      KEYB.InputLine.Buffer;0x4100 | ||||
|             DW      KEYB.InputLine.Buffer+16;0x8100 | ||||
|             DW      KEYB.PutCode.Buffer;0xC100 | ||||
|             DW      0x5280 | ||||
|             DW      0x9280 | ||||
|             DW      0xD280 | ||||
|             DW      0x6000 | ||||
|             DW      0xA000 | ||||
| 
 | ||||
| ListAddr    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.Keyb.NoExit | ||||
							
								
								
									
										442
									
								
								demon.asm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										442
									
								
								demon.asm
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,442 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                        Монитор-отладчик DemoN                           [] | ||||
| ;[] v0.01 - последние изменения 10.10.2004                                  [] | ||||
| ;[] v0.02 - последние изменения 07.02.2005                                  [] | ||||
| ;[] v0.03 - последние изменения 11.03.2006                                  [] | ||||
| ;[] v0.10 - последние изменения 27.08.2006                                  [] | ||||
| ;[]=========================================================================[] | ||||
| 
 | ||||
| 	;DEVICE	ZXSPECTRUM128 | ||||
| 
 | ||||
|     DEVICE NOSLOT64K | ||||
| 
 | ||||
| 	SLDOPT COMMENT WPMEM, LOGPOINT, ASSERTION | ||||
| 
 | ||||
| ;		define	DEBUG		1	;открытие дебаггерных заглушек | ||||
| ;		define	D_PRINTCH_BIOS	1 | ||||
| 
 | ||||
| 		DEFINE	DSS_1_70 | ||||
| 		;DEFINE	DBG				; For debug with DeZog | ||||
| 
 | ||||
| 		; TODO: Set cur_dir for loaded exe | ||||
| 
 | ||||
| 		IFDEF  DBG | ||||
| 			INCLUDE "dss.asm" | ||||
| 			DB 0 | ||||
| 			ALIGN 16384, 0 | ||||
| 			DS 0x80, 0 | ||||
| 		ENDIF | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	    ORG 0x7F00										; 0x8100-512 | ||||
|      | ||||
| ; ------------------------------------------------------ | ||||
| 
 | ||||
| STARTPRG | ||||
| 			DB	"EXE"									; EXE ID | ||||
| 		IFDEF	DSS_1_70		 | ||||
| 			DB	0x01									; EXE VERSION | ||||
| 		ELSE		 | ||||
| 			DB	0x00 | ||||
| 		ENDIF | ||||
| 			DW	0x0200									; CODE OFFSET LOW | ||||
| 			DW	0x0000									; CODE OFFSET HIGH | ||||
| 			DW	0x0000									; END-BEG ;PRIMARY LOADER | ||||
| 			DW	0x0000									; | ||||
| 			DW	0x0000									; RESERVED | ||||
| 			DW	0x0000									;	 | ||||
| 			DW	OrgAdr									; LOAD ADDRESS | ||||
| 			DW	OrgAdr									; START ADDRESS | ||||
| 			DW	0xC001									; STACK ADDRESS | ||||
| ExeFiller		 | ||||
| 		IFDEF	DBG | ||||
| 			DS  106,0 | ||||
| 		ELSE | ||||
| 			DS  OrgAdr-ExeFiller,0 | ||||
| 		ENDIF | ||||
| 
 | ||||
|         	ORG	0x8100 | ||||
| @STACK_TOP												; for DeZog internal sim | ||||
| 
 | ||||
| OrgAdr			 | ||||
| ;           stack   0xC001 | ||||
|     	IFDEF	DBG | ||||
|     	    LD      SP, STACK_TOP | ||||
| 			LD      IX,CMD_LINE1 | ||||
|     	ENDIF | ||||
| 
 | ||||
|             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 | ||||
| 
 | ||||
| ; ------------------------------------------------------             | ||||
| ; Процедура прорисовки линий | ||||
| ; 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 | ||||
| ; ------------------------------------------------------             | ||||
| ; Начало программы | ||||
| ; ------------------------------------------------------             | ||||
| 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    KEYB.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    KEYB.PreparChar            			; подготовка программного курсора ввода | ||||
| ;           ld      hl,(Reg._PC) | ||||
| ;           ld      hl,0 | ||||
| ;           ld      (ListAddr),hl | ||||
| 
 | ||||
|             call    Refresh | ||||
|             call    KEYB.Keyb | ||||
| 
 | ||||
| ; ------------------------------------------------------ | ||||
| Exit: | ||||
|             ld      hl,(KEYB.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" | ||||
|             INCLUDE "EQU/bios_equ.asm" | ||||
|             INCLUDE "EQU/port.asm" | ||||
|             INCLUDE "disasm.asm" | ||||
|             INCLUDE "util.asm" | ||||
|             INCLUDE "file.asm" | ||||
|             INCLUDE "error.asm" | ||||
|             INCLUDE "clock.asm" | ||||
|              | ||||
| 			INCLUDE "keyb.asm"				 | ||||
|             INCLUDE "kreg.asm"				 | ||||
| 
 | ||||
|             INCLUDE "kstack.asm" | ||||
|             INCLUDE "kdump.asm" | ||||
|             INCLUDE "rez.asm" | ||||
|             INCLUDE "step.asm" | ||||
|             INCLUDE "savescr.asm" | ||||
|             INCLUDE "data.asm" | ||||
|             INCLUDE "tabl.asm" | ||||
| 			INCLUDE	"loadbin.asm" | ||||
| 			INCLUDE	"windows.asm" | ||||
| 
 | ||||
| EndOfDaemon	 | ||||
| 			;savebin	"demon.exe",STARTPRG,EndOfDaemon-STARTPRG | ||||
							
								
								
									
										377
									
								
								demon.utf.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										377
									
								
								demon.utf.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,377 @@ | ||||
| Пофиксенная (на ошибки) дока. | ||||
| Немного изменено описание в "2.4. Дамп памяти". | ||||
| 
 | ||||
| Глюки. | ||||
| 1. Не работает Ctrl+S. | ||||
| 
 | ||||
| 2. Перейди в поле регистра "PC" и введи адрес #C000. После перейди в асм- | ||||
| листинг (на этот адрес, я переходил по Ctrl+~) и иди по-строчно вверх | ||||
| (т.е. к младшим адресам). Увидишь глюки с выводом в асм-листинге. Перейти | ||||
| можешь на другой адрес, глюк не пропадает. При страничном листании вверх, | ||||
| этот глюк вроде как не заметен. | ||||
| Кста, только щас проверил на этот же глюк. Запускаю Демона, перехожу по | ||||
| Ctrl+~ на #C000 и иду по-строчно вверх - глюк. То же самое с адреса #4000. | ||||
| Т.е. я хочу сказать, что правка регистра PC тут ни при чем. | ||||
| 
 | ||||
| Пожелание. Как бы быстро переходить в любое окно Димы ?. А то круговое по | ||||
| Табу утомляет - пока дойдешь до нужного окна... Может каждому окну присвоить | ||||
| свою нот-клавишу, типа 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-хе только и пользуюсь. | ||||
| Переделывать много потребуется, если в hex-окне сразу прикрутить режим редак- | ||||
| тирования ?. | ||||
| 
 | ||||
| Но это так, мечты на будущее. | ||||
| ----------------------------------------------------------------------------- | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         DemoN - монитор-отладчик для DSS Estex | ||||
| 
 | ||||
| 1. Назначение программы. | ||||
| 
 | ||||
| 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 .Б.■║ #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 представление памяти | ||||
|   │   │       └──────── Байты из памяти, на которую ссылается регистровая пара | ||||
|   │   └──────────────── Значение регистровой пары | ||||
|   └──────────────────── Регистровая пара | ||||
| 
 | ||||
| 
 | ||||
| 2.1.2. Состояние основного и aльтернативного наборов регистров процессора. | ||||
| 
 | ||||
| ╟────────┼──────────────╢ | ||||
| ║HL #8100│0081 FFFE .Б.■║ | ||||
| ║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' полностью | ||||
| аналогично строкам с индексными регистровыми парами. Далее в двух строках | ||||
| отображается состояние аккумулятора и флагов процессора: | ||||
| 
 | ||||
|   ┌──────────────────── Регистровая пара | ||||
|   │   ┌──────────────── Значение аккумулятора | ||||
|   │   │ ┌────────────── Значение флагового регистра | ||||
|   │   │ │     ┌──────── Двоичное представление аккумулятора | ||||
|   │   │ │     │      ┌─ ASCII представление аккумулятора | ||||
|  ┌┤  ┌┤┌┤ ┌───┴───┐  │ | ||||
| 
 | ||||
| ║AF #FB82│%11111011 "√" ║ | ||||
| ║Sz.h.pNc│              ║ | ||||
| ╟────────┼──────────────╢ | ||||
|  ││ │ │││ | ||||
|  ││ │ ││└────────────── С   - флаг переноса | ||||
|  ││ │ │└─────────────── N   - флаг операции вычитания | ||||
|  ││ │ └──────────────── P/V - флаг четного результата / переполнения | ||||
|  ││ └────────────────── H   - флаг вспомогательного переноса | ||||
|  │└──────────────────── Z   - флаг нуля | ||||
|  └───────────────────── S   - флаг знака | ||||
| Заглавная буква соответствует установленному флагу, прописная - сброшенному. | ||||
| 
 | ||||
| 2.1.3. Состояние счетчика команд и регистров адреса регенерации и таблицы | ||||
|        прерываний. | ||||
| 
 | ||||
| ╟────────┼────────┬─────╢ | ||||
| ║PC #00CF│IR #8045│     ║ | ||||
| 
 | ||||
|  └┤ └─┬─┘ └┤  └┤└┤ | ||||
|   │   │    │   │ └───── Значение регистра адреса регенерации | ||||
|   │   │    │   └─────── Значение регистра адреса таблицы прерываний | ||||
|   │   │    └─────────── Регистровая пара | ||||
|   │   └──────────────── Значение счетчика команд | ||||
|   └──────────────────── Регистровая пара | ||||
| 
 | ||||
| 2.1.4. Номера банок памяти, включенных в окна процессора. | ||||
| 
 | ||||
|    ┌─────────────────── 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║ | ||||
| ╠════════╧══╦═╩═════════╩═ | ||||
| 
 | ||||
|  └┤ └─┬─┘ └─┬┘ └┬┘ └─┬─┘ | ||||
|   │   │     │   │    └─ Адрес размещения резидента | ||||
|   │   │     │   └────── Резидент | ||||
|   │   │     └────────── Использованная глубина стека | ||||
|   │   └──────────────── Значение указателя стека | ||||
|   └──────────────────── Регистровая пара | ||||
| 
 | ||||
| Справа от пары SP выводится глубина использованного стека. Так команды PUSH, | ||||
| CALL и RST приводят к увеличению этого числа, а команды POP и RET - | ||||
| соответственно к уменьшению. Число всегда отображено в десятичном формате и | ||||
| может быть отрицательным. | ||||
| 
 | ||||
| 2.2. Дамп стека. | ||||
| 
 | ||||
| ╠════════╧══╦   Вершина стека подсвечена. Ниже подсвеченной строки находятся | ||||
| ║#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)           ║ | ||||
| ╩══════════════════════════════════════════════════════╣ | ||||
|   └─┬─┘ └──────┬─────┘ └───┬──┘ └─────┬──────────────┘ | ||||
|     │          │           │          └── Мнемоника команды | ||||
|     │          │           └───────────── Поле кода команды | ||||
|     │          └───────────────────────── Поле метки | ||||
|     │                                     (в текущей версии не реализовано) | ||||
|     └──────────────────────────────────── Адрес команды | ||||
| 
 | ||||
| Текущая команда процессора (на которую указывает 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. Общее управление. | ||||
| 
 | ||||
| Эти последовательности клавиатурных команд обрабатываются в независимости от | ||||
| того, в каком окне находится курсор программы: | ||||
| 
 | ||||
| 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 представления | ||||
|                   памяти несколько отличается - курсор после ввода очередного | ||||
|                   байта автоматичеси переходит к следующему. | ||||
							
								
								
									
										786
									
								
								disasm.asm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										786
									
								
								disasm.asm
									
									
									
									
									
										Normal 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       - вывод атрибутов строки листинга                        [] | ||||
| ;[] UpAddress      - расчет предыдущего адреса строки листинга              [] | ||||
| ;[] List           - формирование строки листинга                           [] | ||||
| ;[]=========================================================================[] | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]                            Вывод листинга                               [] | ||||
| ;[]=========================================================================[] | ||||
| DisAsm: | ||||
|             ld      hl,(ListAddr)						; адрес первой строки листинга | ||||
|             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,ListAddr | ||||
|             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,(KEYB.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 | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]                  Расчет предыдущего адреса строки листинга              [] | ||||
| ;[] Вход:  HL - адрес текущей строки                                        [] | ||||
| ;[] Выход: HL - адрес предыдущей строки                                     [] | ||||
| ;[]=========================================================================[] | ||||
| UpAddress: | ||||
|     		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 | ||||
| 
 | ||||
							
								
								
									
										398
									
								
								dss.asm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										398
									
								
								dss.asm
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,398 @@ | ||||
| ; ====================================================== | ||||
| ; DSS Estex dumb for debug code in VSC with DEZOG plugin  | ||||
| ; By Roman Boykov. Copyright (c) 2024 | ||||
| ; https://github.com/romychs | ||||
| ; ====================================================== | ||||
| 	INCLUDE "dss.inc" | ||||
| 
 | ||||
|     ORG 0x0000 | ||||
| 
 | ||||
| RESET: | ||||
|     JP NOT_IMPL | ||||
|     DS 5, 0xFF | ||||
|      | ||||
| RST08: | ||||
|     JP NOT_IMPL | ||||
|     DS 5, 0xFF | ||||
| 
 | ||||
|     ORG 0x0010     | ||||
| RST10: | ||||
|     JP DSS_HANDLER | ||||
|     DS 5, 0xFF | ||||
| 
 | ||||
| RST18: | ||||
|     JP NOT_IMPL | ||||
|     DS 5, 0xFF | ||||
| 
 | ||||
| RST20: | ||||
|     JP NOT_IMPL | ||||
|     DS 5, 0xFF | ||||
| 
 | ||||
| RST28: | ||||
|     JP NOT_IMPL | ||||
|     DS 5, 0xFF | ||||
| 
 | ||||
| RST30: | ||||
|     JP NOT_IMPL | ||||
|     DS 5, 0xFF | ||||
| 
 | ||||
| RST38: | ||||
|     JP NOT_IMPL | ||||
|     DS 5, 0xFF | ||||
| 
 | ||||
| DSS_HANDLER | ||||
|      | ||||
|     PUSH    HL | ||||
|     PUSH    BC | ||||
|     LD      A, C | ||||
|     CP      DSS_CURDISK | ||||
|     JP      Z, _CURDISK | ||||
|     CP      0x0B | ||||
|     JP      Z, _CREATE_FILE | ||||
|     CP      0x11 | ||||
|     JP      Z, _OPEN_FILE | ||||
|     CP      0x12 | ||||
|     JP      Z, _CLOSE_FILE | ||||
|     CP      0x13 | ||||
|     JP      Z, _READ_FILE | ||||
|     CP      0x14 | ||||
|     JP      Z, _WRITE_FILE | ||||
| 	CP		0x19 | ||||
| 	JP		Z, _FIND_FIRST | ||||
| 	CP		0x1D | ||||
| 	JP      Z, _CH_DIR | ||||
| 	CP		0x1E | ||||
| 	JP      Z, _CURDIR | ||||
| 
 | ||||
| 	CP		DSS_WAITKEY | ||||
| 	JP      Z, _WAITKEY | ||||
| 
 | ||||
| 	CP		DSS_SCANKEY | ||||
| 	JP      Z, _SCANKEY | ||||
| 
 | ||||
| 	CP		DSS_ECHOKEY | ||||
| 	JP      Z, _ECHOKEY | ||||
| 
 | ||||
| 	CP		DSS_SETVMOD | ||||
| 	JP		Z, _SETVMOD | ||||
| 
 | ||||
| 	CP		DSS_GSWITCH | ||||
| 	JP		Z, _GSWITCH | ||||
| 
 | ||||
| 	CP		DSS_GETVMOD | ||||
| 	JP		Z, _GETVMOD | ||||
| 
 | ||||
| 	CP		low DSS_CLEAR | ||||
| 	JP		Z, _CLEAR | ||||
| 
 | ||||
| 	CP		DSS_PUTCHAR | ||||
|     JP      Z, _PUTCHAR | ||||
| 
 | ||||
|     CP      DSS_PCHARS     | ||||
|     JP      Z, _PCHARS | ||||
| 
 | ||||
|     CP      0x41 | ||||
|     JP      Z, _EXIT | ||||
| 
 | ||||
|     POP     BC | ||||
|     POP     HL | ||||
|      | ||||
| 
 | ||||
| NOT_IMPL | ||||
|     LD A,0x01 | ||||
|     SCF | ||||
|     RET | ||||
| 
 | ||||
| _PUTCHAR | ||||
| 	LD BC, 0x9000 | ||||
| 	OUT (C),A | ||||
| 	JR	NORM_EXIT | ||||
| 	 | ||||
| 
 | ||||
| _PCHARS | ||||
|     LD BC, 0x9000 | ||||
| 
 | ||||
| NXT_PCHAR     | ||||
|     LD A, (HL) | ||||
|     OUT (C),A | ||||
|     INC HL | ||||
|     OR A | ||||
|     JR	NZ, NXT_PCHAR | ||||
| 
 | ||||
| NORM_EXIT | ||||
| 	AND A												; CF=0 | ||||
|     POP BC | ||||
|     POP HL     | ||||
|     RET | ||||
| 
 | ||||
| BAD_EXIT | ||||
|     SCF | ||||
|     POP BC | ||||
|     POP HL     | ||||
|     RET | ||||
| 
 | ||||
| 
 | ||||
| _CURDISK | ||||
| 	LD A, 3 | ||||
| 	JP      NORM_EXIT | ||||
| 
 | ||||
| ; Входные значения: | ||||
| ; HL - указатель на файловую спецификацию | ||||
| ; A - атрибут файла | ||||
| ; Выходные значения: | ||||
| ; A — код  ошибки, если CF=1 | ||||
| ; A - файловый манипулятор, если CF=0 | ||||
| _CREATE_FILE | ||||
|     JP  _OPEN_FILE | ||||
| 
 | ||||
| ; Входные значения: | ||||
| ;   HL - указатель на файловую спецификацию | ||||
| ;   A - режим доступа | ||||
| ;   A=0 чтение/запись | ||||
| ;   A=1 чтение | ||||
| ;   A=2 запись | ||||
| ; Выходные значения: | ||||
| ;   A - код ошибки, если CF=1 | ||||
| ;   A - файловый манипулятор, если CF=0 | ||||
| CUR_FILE_MAN | ||||
|     DB  0x4F | ||||
| 
 | ||||
| CUR_DIR | ||||
|     DB "\\FOLDER",0 | ||||
| CUR_DIR_END | ||||
| CUR_DIR_SIZE 	EQU 	CUR_DIR_END-CUR_DIR | ||||
| 
 | ||||
| _OPEN_FILE | ||||
|     LD      HL, CUR_FILE_MAN | ||||
|     INC     (HL) | ||||
|     LD      A, (HL) | ||||
|     JP      NORM_EXIT | ||||
| 
 | ||||
| _CLOSE_FILE | ||||
|     JP      NORM_EXIT | ||||
| 
 | ||||
| CUR_F_PTR | ||||
|     DW  ZIP_FILE | ||||
| 
 | ||||
| REMAINS_IN_ZIP | ||||
|     DW  0 | ||||
| 
 | ||||
| ; Входные значения: | ||||
| ; A - файловый манипулятор | ||||
| ; HL - адрес в памяти | ||||
| ; DE - количество читаемых байт | ||||
| ; Выходные значения: | ||||
| ; A - код ошибки, если CF=1 | ||||
| ; DE - реальное количество прочитанных байт | ||||
| ; если CF=0: | ||||
| ; A = 0 прочитаны все байты | ||||
| ; A = 0FFh прочитано меньшее число байт | ||||
| _READ_FILE | ||||
|     OR      A | ||||
|     JP	    Z, BAD_EXIT | ||||
|     PUSH    DE | ||||
|     POP     BC                                          ; BC - bytes to read | ||||
|     PUSH    HL                                           | ||||
| 
 | ||||
|     LD      HL, (CUR_F_PTR)                             ; HL -> IN ZIP_FILE | ||||
|     LD      DE, ZIP_FILE_END | ||||
|     EX      HL, DE | ||||
|     SUB     HL, DE                                      ; HL = remain bytes | ||||
|     LD      (REMAINS_IN_ZIP), HL | ||||
|     SBC     HL, BC | ||||
|     LD	    A, 0 | ||||
|     JR      NC, NO_OUT_OF_ZIP | ||||
|     DEC     A | ||||
|     LD      HL,(REMAINS_IN_ZIP) | ||||
|     LD      BC, HL | ||||
| 
 | ||||
| NO_OUT_OF_ZIP | ||||
|     LD      HL, (CUR_F_PTR) | ||||
|     POP     DE                                          ; DE - Buffer to write | ||||
|     PUSH    BC | ||||
|     LDIR | ||||
|     POP     DE                                          ; DE = bytes read, A = 0 or 0xFF | ||||
|     LD      (CUR_F_PTR), HL | ||||
|      | ||||
|     JP      NORM_EXIT | ||||
| 
 | ||||
| 
 | ||||
| ; Входные значения: | ||||
| ; A - файловый манипулятор | ||||
| ; HL - адрес в памяти | ||||
| ; DE - количество записываемых байт | ||||
| ; Выходные значения: | ||||
| ; A - код ошибки, если CF=1 | ||||
| ; DE - реальное количество записанных байт | ||||
| _WRITE_FILE | ||||
|      | ||||
|     PUSH    DE | ||||
|     POP     BC | ||||
|     LD      DE,UNZIP_FILE | ||||
| 
 | ||||
|     PUSH    BC | ||||
|     LDIR | ||||
|     POP     DE | ||||
|     JP      NORM_EXIT | ||||
| 
 | ||||
| ; Входные значения: | ||||
| ; HL - указатель на файловую спецификацию | ||||
| ; Выходные значения: | ||||
| ; A - код ошибки, если CF=1 | ||||
| _CH_DIR | ||||
|     JP      NORM_EXIT | ||||
| 
 | ||||
| 
 | ||||
| ; 1Eh (30) CURDIR (Информация о текущем каталоге) | ||||
| ; Входные значения: | ||||
| ; HL - буфер в памяти 256 байт | ||||
| ; Выходные значения: | ||||
| ; A - код ошибки, если CF=1 | ||||
| _CURDIR | ||||
| 	PUSH	DE | ||||
| 	LD		DE, CUR_DIR | ||||
| 	EX		HL,DE | ||||
| 	LD		BC, CUR_DIR_SIZE | ||||
| 	LDIR | ||||
| 	POP 	DE | ||||
| 	JP		NORM_EXIT | ||||
| 
 | ||||
| _ECHOKEY | ||||
| 	PUSH	HL | ||||
| 	LD		HL,EC | ||||
|     LD      C,DSS_PCHARS | ||||
|     RST     DSS | ||||
| 	POP		HL | ||||
| 	LD		A,(EC) | ||||
| 	JP		NORM_EXIT | ||||
| 
 | ||||
| EC 	DB "3",0 | ||||
| 
 | ||||
| ; Входные значения: | ||||
| ; HL - указатель на файловую спецификацию | ||||
| ; DE - рабочий буфер 44 байта, если B=0, иначе 256 байт | ||||
| ; A - атрибуты, используемые при поиске | ||||
| ; B = 0 - имя найденного файла в формате 11 байт "FilenameExt" | ||||
| ; B = 1 - имя найденного файла в формате DOS "filename.ext",0 | ||||
| ; C - 19h | ||||
| ; Выходные значения: | ||||
| ; A - код ошибки, если CF=1 | ||||
| _FIND_FIRST | ||||
| 	PUSH	DE | ||||
| 	LD 		HL, 33										; offset of file name | ||||
| 	ADD 	HL, DE				 | ||||
| 	EX 		HL, DE | ||||
| 	LD 		HL, ZIP_FILE_NAME | ||||
| 	LD 		BC,9 | ||||
| 	LDIR | ||||
| 	POP DE | ||||
|     JP      NORM_EXIT | ||||
| 
 | ||||
| 
 | ||||
| _SCANKEY | ||||
| 	XOR		A | ||||
|     JP      NORM_EXIT | ||||
| 
 | ||||
| 
 | ||||
| ; Выходные значения: | ||||
| ; A - код символа | ||||
| ; D - позиционный код | ||||
| ; Е - ASCII код | ||||
| ; C - режим клавиатуры: | ||||
| _WAITKEY | ||||
| 	XOR		A | ||||
| 	LD		D, A | ||||
| 	LD		C, A | ||||
| 	LD		E,65 | ||||
| 	LD		A,65 | ||||
|     JP      NORM_EXIT | ||||
| 
 | ||||
| 
 | ||||
| CUR_VMOD | ||||
| 	DB 1 | ||||
| 
 | ||||
| ; 50h (80) SETVMOD (Выбор режима экрана) | ||||
| ; Входные значения: | ||||
| ; A - режим экрана: | ||||
| ; 02h - текстовый 40x32x16 цветов; | ||||
| ; 03h - текстовый 80x32x16 цветов; | ||||
| ; 81h - графический 320x256x256 цветов; | ||||
| ; 82h - графический 640x256x16 цветов; | ||||
| ; B - страница экрана 0/1 | ||||
| ; C - 50h | ||||
| ; Выходные значения: | ||||
| ; A - код ошибки, если CF=1 | ||||
| _SETVMOD | ||||
| 	LD		(CUR_VMOD),A | ||||
| 	JP      NORM_EXIT | ||||
| 
 | ||||
| ; 51h (81) GETVMOD (Получить текущий режим экрана) | ||||
| ; Входные значения: | ||||
| ; C - 51h | ||||
| ; Выходные значения: | ||||
| ; A - код ошибки, если CF=1 | ||||
| ; A - текущий режим экрана, если CF=0 | ||||
| ; B - страница экрана 0/1 | ||||
| _GETVMOD | ||||
| 	LD		A,(CUR_VMOD) | ||||
| 	JP      NORM_EXIT | ||||
| 
 | ||||
| ; 56h (86) CLEAR (Очистка окна) | ||||
| ; Входные значения: | ||||
| ; D - строка левого верхнего угла окна | ||||
| ; E - столбец левого верхнего угла окна | ||||
| ; H - высота окна | ||||
| ; L - ширина окна | ||||
| ; B - атрибут заполнитель | ||||
| ; A - символ заполнитель | ||||
| ; C - 56h | ||||
| ; Выходные значения: | ||||
| ; нет | ||||
| _CLEAR | ||||
| 	JP      NORM_EXIT | ||||
| 
 | ||||
| 
 | ||||
| _EXIT | ||||
| ;   LOGPOINT STOPPED!     | ||||
| 
 | ||||
|     HALT | ||||
|     JP _EXIT | ||||
| 
 | ||||
| ; GSWITCH (Выделить параметр командной строки) | ||||
| ; Входные значения: | ||||
| ; 	HL - указатель командной строки | ||||
| ; 	DE - буфер для выделяемого параметра | ||||
| ; 	C - 43h  | ||||
| ; Выходные значения: | ||||
| ; 	HL - указатель на следующий параметр командной строки | ||||
| ; 	CF = 0 - конец строки не достигнут (есть другие параметры) | ||||
| ; 	CF = 1 - конец строки (в буфер перенесён последний параметр или ноль)  | ||||
| 
 | ||||
| _GSWITCH | ||||
| 	LD		HL,CMD_LINE1+1 | ||||
| 	PUSH	DE | ||||
| .next	 | ||||
| 	LD		A, (HL) | ||||
| 	LD		(DE), A | ||||
| 	OR      A | ||||
| 	JR		Z,.enough | ||||
| 	INC		HL | ||||
| 	INC		DE | ||||
| 	JR		.next | ||||
| .enough	 | ||||
| 	POP		DE | ||||
| 	JP      BAD_EXIT | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| CMD_LINE1 | ||||
| 	DB	" myfile.exe",0	 | ||||
| ZIP_FILE_NAME | ||||
| 	DB "file.zip",0 | ||||
| ZIP_FILE | ||||
| 	DS 1024,0 | ||||
| ZIP_FILE_END | ||||
| UNZIP_FILE | ||||
| 	DS 1024,0 | ||||
| 
 | ||||
|     ALIGN 16384, 0 | ||||
							
								
								
									
										44
									
								
								dss.inc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								dss.inc
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | ||||
| ; ====================================================== | ||||
| ; Defines for DSS Estex for Sprinter computer | ||||
| ; By Roman Boykov. Copyright (c) 2024 | ||||
| ; https://github.com/romychs | ||||
| ; ====================================================== | ||||
| 
 | ||||
| ; DSS RST Entry | ||||
| DSS                 EQU 0x10 | ||||
| 
 | ||||
| ; DSS Functions | ||||
| DSS_CURDISK         EQU 0x02 | ||||
| DSS_CREATE_FILE     EQU 0x0B | ||||
| DSS_OPEN_FILE       EQU 0x11 | ||||
| DSS_CLOSE_FILE      EQU 0x12 | ||||
| DSS_READ_FILE       EQU 0x13 | ||||
| DSS_WRITE           EQU 0x14 | ||||
| DSS_MOVE_FP_CP      EQU 0x0115 | ||||
| DSS_FIND_FIRST      EQU 0x0119 | ||||
| DSS_FIND_NEXT       EQU 0x011A | ||||
| DSS_MKDIR           EQU 0x1B | ||||
| DSS_CHDIR           EQU 0x1D | ||||
| DSS_CURDIR          EQU 0x1E | ||||
| DSS_SCANKEY			EQU 0x31 | ||||
| DSS_ECHOKEY			EQU	0x32  | ||||
| DSS_EXIT            EQU 0x41 | ||||
| DSS_GSWITCH			EQU 0x43 | ||||
| DSS_WAITKEY			EQU 0x48 | ||||
| DSS_SETVMOD			EQU 0x50 | ||||
| DSS_GETVMOD			EQU 0x51 | ||||
| DSS_CLEAR			EQU 0x56 | ||||
| DSS_PUTCHAR			EQU 0x5B | ||||
| DSS_PCHARS          EQU 0x5C | ||||
| 
 | ||||
| 
 | ||||
| DSS_VMOD_T40		EQU 0x02							; text 40x32, 16 colors | ||||
| DSS_VMOD_T80		EQU 0x03							; text 80x32, 16 colors | ||||
| DSS_VMOD_G320		EQU 0x81							; graphics 320x256, 256 colors | ||||
| DSS_VMOD_G640		EQU 0x82							; graphics 640x256, 16 colors | ||||
| 
 | ||||
| 
 | ||||
| ; DSS Error codes | ||||
| E_FILE_EXISTS       EQU 7 | ||||
| E_FILE_NOT_FOUND    EQU 3 | ||||
| 
 | ||||
							
								
								
									
										86
									
								
								error.asm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								error.asm
									
									
									
									
									
										Normal 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      "Too many folders nested or many folders (>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 | ||||
| 
 | ||||
							
								
								
									
										378
									
								
								file.asm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										378
									
								
								file.asm
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,378 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                Файловые процедуры монитора-отладчика 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               			; имя файла | ||||
| 		IFDEF DSS_1_70			 | ||||
| 			call	build_filename | ||||
| 		ENDIF | ||||
|             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,.AS_BUN | ||||
|             ld      hl,FDebug+3			 | ||||
|             ld      a,(hl)                  			; версия EXE-файла | ||||
| 			; exe v0 & v1 | ||||
| 		IFDEF DSS_1_70 | ||||
| 			cp 		2									; если версия EXE >1 то грузим как бинарник с ORG 0x0000 | ||||
| 			jp		p,.AS_BUN | ||||
| 		ELSE | ||||
|             or      a | ||||
| 			jr      nz,.AS_BUN | ||||
| 		ENDIF | ||||
|             inc     hl | ||||
|             ld      e,(hl)                  			; DE -> начало исполняемого кода | ||||
|             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      (ListAddr),a							; мл.байт адреса листинга | ||||
|             inc     hl | ||||
|             ld      a,(hl)                  			; ст.байт адреса запуска | ||||
|             ld      (Reg._PC+1),a | ||||
|             ld      (ListAddr+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      (.F_OFFS),a | ||||
|             ld      a,d | ||||
|             ld      (.F_OFFS+1),a | ||||
| 
 | ||||
| .AS_BUN | ||||
|          	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 | ||||
| .F_OFFS+2   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                  		; "Недостаточно памяти" | ||||
| ;           JP      ErrorDSS | ||||
|             ret | ||||
| 
 | ||||
| 	IFDEF DSS_1_70			 | ||||
| 
 | ||||
| ; ------------------------------------------------------ | ||||
| ; Check '\' in file path | ||||
| ; Inp: HL->filespec | ||||
| ; Out: CF=0 - slash exists, CF=1 - no slash | ||||
| ; ------------------------------------------------------ | ||||
| check_bkslash | ||||
| 			PUSH    BC,HL | ||||
| 			LD		B,128 | ||||
| .next				 | ||||
| 			LD		A, (HL) | ||||
| 			OR		A | ||||
| 			JR		Z,.not_exists | ||||
| 			CP		"\\" | ||||
| 			JR		Z,.exists | ||||
| 			INC		HL | ||||
| 			DJNZ	.next				 | ||||
| .not_exists | ||||
| 			SCF										 | ||||
| 			JR		.exit | ||||
| .exists	 | ||||
| 			OR		A								; CF=0 | ||||
| .exit		POP    	HL,BC | ||||
| 			RET				 | ||||
| 
 | ||||
| ; ---------------------------------------------------- | ||||
| ;  Get full current path | ||||
| ;  Inp: HP - pointer to buffer for path | ||||
| ; ---------------------------------------------------- | ||||
| get_cur_dur | ||||
|     		PUSH    HL | ||||
|     		LD      C, Dss.CurDisk | ||||
|     		RST     DssRst | ||||
|     		JP      C,PrErDss | ||||
|     		ADD     A, 65 | ||||
|     		LD      (HL),A | ||||
|     		INC     HL | ||||
|     		LD      (HL),':' | ||||
|     		INC     HL | ||||
|     		LD      C, Dss.CurDir | ||||
|     		RST     DssRst | ||||
|     		JP      C,PrErDss | ||||
|     		POP     HL | ||||
|     		CALL    add_back_slash | ||||
|     		RET | ||||
| 
 | ||||
| ; ---------------------------------------------------- | ||||
| ; Add back slash to path string | ||||
| ; Inp: HL - pointer to zero ended string with path | ||||
| ; Out: HL - point to end | ||||
| ; ---------------------------------------------------- | ||||
| add_back_slash | ||||
|     		XOR     A | ||||
|     		; find end of path | ||||
| .find_eos | ||||
|     		CP      (HL) | ||||
|     		JR      Z,.is_eos | ||||
|     		INC     HL | ||||
|     		JR      .find_eos | ||||
|     		; check last symbol is '\'' and add if not | ||||
| .is_eos | ||||
| 		    DEC     HL | ||||
|     		LD      A,(HL) | ||||
|     		CP      "\\" | ||||
|     		JR      Z,.is_sep | ||||
|     		INC     HL | ||||
|     		LD      (HL),"\\" | ||||
| .is_sep | ||||
|     		; mark new end of string | ||||
|     		INC     HL | ||||
|     		LD      (HL),0x0 | ||||
|     		RET | ||||
| 
 | ||||
| ; ------------------------------------------------------ | ||||
| ; In only filename specified, build full path to file | ||||
| ; Inp: HL -> to filename | ||||
| ; Out: HL -> full path name | ||||
| ; ------------------------------------------------------ | ||||
| build_filename | ||||
| 			CALL	check_bkslash | ||||
| 			RET		NC | ||||
| 			LD		HL, FullPath | ||||
| 			call    get_cur_dur | ||||
| 			LD		DE, FDebug | ||||
| 			EX		DE,HL | ||||
| 			LD		BC,128 | ||||
| 			LDIR | ||||
| 			LD		HL, FullPath | ||||
| 			RET | ||||
| 	ENDIF | ||||
| 
 | ||||
| BankP       DS      4                       			; номера банок загружаемой проги | ||||
| MemId       DS      3                       			; id-блока памяти под файл, | ||||
|                                                 		; кол-во выделенных банок, | ||||
|                                                 		; счетчик загруженных банок | ||||
| FId         DB      0                       			; файловый манипулятор | ||||
| FDebug      DS      128									; имя отлаживаемого файла и буфер для его чтения | ||||
|             DB      0 | ||||
| 	IFDEF DSS_1_70			 | ||||
| FullPath	DS		256,0				 | ||||
| 	ENDIF | ||||
| FStart      DW      0x4200 | ||||
| FRam        DW      0                       			; адрес расположения кода в памяти | ||||
							
								
								
									
										260
									
								
								kdump.asm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										260
									
								
								kdump.asm
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,260 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                    Обработка клавиатуры в окне дампа                    [] | ||||
| ;[] v0.10 - последние изменения 31.03.2006                                  [] | ||||
| ;[]=========================================================================[] | ||||
| 
 | ||||
| 
 | ||||
| 	MODULE KDUMP | ||||
| 
 | ||||
| KDump: | ||||
|             ld      a,b                     			; состояние <Shift><Alt><Ctrl> | ||||
|             and     11110000b | ||||
|             jr      z,.L100 | ||||
| 
 | ||||
|         ; Обработка комбинации Ctrl + символ | ||||
| .L10        cp      00100000b              				; <Ctrl> | ||||
|             jp      nz,.L100 | ||||
|             ld      a,d                     			; позиционный код | ||||
| 
 | ||||
|             cp      SHIFTED_KEY+END_KEY					; <Ctrl>+<End> | ||||
|             jr      nz,.L11 | ||||
|             ld      hl,.Coordinate          			; текущая колонка | ||||
|             ld      a,16 | ||||
|             cp      (hl) | ||||
|             jr      nc,.L415 | ||||
|             ld      a,32 | ||||
| .L415			 | ||||
|             inc     a | ||||
|             ld      (hl),a | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| .L11        cp      SHIFTED_KEY+HOME_KEY				; <Ctrl>+<Home> | ||||
|             jp      nz,KEYB.Keyb_NC | ||||
| ;           jr      nz,.L11 | ||||
|             ld      hl,.Coordinate          			; текущая колонка | ||||
|             ld      a,18 | ||||
|             cp      (hl) | ||||
|             jr      c,.L11P8 | ||||
|             ld      a,2 | ||||
|             cp      (hl) | ||||
|             jr      c,.L11P8 | ||||
|             dec     a | ||||
| .L11P8			 | ||||
|             ld      (hl),a | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| 		; Обработка позиционного кода | ||||
| .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,.LA446 | ||||
|             xor     a | ||||
| .LA446			 | ||||
|             inc     a | ||||
|             ld      (.Coordinate),a         			; текущая колонка | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| .L101       cp      0x54                    			; <Left> | ||||
|             jr      nz,.L102 | ||||
|             ld      a,e                     			; текущая колонка | ||||
|             cp      1 | ||||
|             jr      nz,.L101P6 | ||||
|             ld      a,(.Descript+2)         			; кол-во колонок | ||||
|             inc     a | ||||
| .L101P6			 | ||||
|             dec     a | ||||
|             ld      (.Coordinate),a         			; текущая колонка | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| .L102       ld      hl,(.Descript) | ||||
|             cp      DN_KEY								; <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.Keyb_RF | ||||
| .L104       inc     a | ||||
|             ld      (.Coordinate+1),a | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| .L103       cp      UP_KEY								; <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.Keyb_RF | ||||
| .L107       dec     a | ||||
|             ld      (.Coordinate+1),a | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| .L105       cp      PGDN_KEY							; <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.Keyb_RF | ||||
| .L106       ld      a,l                     			; на последнюю строку | ||||
|             ld      (.Coordinate+1),a | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| .L108       cp      PGUP_KEY							; <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.Keyb_RF | ||||
|             jr      nz,.L109 | ||||
| .L109       ld      a,h                     			; на первую строку | ||||
|             ld      (.Coordinate+1),a | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| .L110       cp      HOME_KEY							; <Home> | ||||
|             jr      nz,.L111 | ||||
|             ld      a,1 | ||||
|             ld      (.Coordinate),a         			; первая колонка | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| .L111       cp      END_KEY                    			; <End> | ||||
|             jr      nz,.L200 | ||||
|             ld      a,(.Descript+2) | ||||
|             ld      (.Coordinate),a         			; первая колонка | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
|         ; Обработка ASCII кодов | ||||
| .L200       ld      a,0                     			; ASCII код | ||||
|             cp      ENTER_KEY							; <Enter> | ||||
|             jp      nz,KEYB.Keyb_L1 | ||||
| .L201  | ||||
| .ESTR_LEN+*	ld      b,0                     			; длина строки ввода | ||||
| .ESTR_POS+* ld      hl,0                    			; координаты строки ввода | ||||
| 
 | ||||
|             ld      a,b | ||||
|             dec     a | ||||
|             jr      z,.L202 | ||||
|             dec     a | ||||
|             jr      z,.L203 | ||||
| 
 | ||||
|             call    KEYB.InputLine               		; ввод адреса | ||||
|             jp      c,KEYB.Keyb_NC                		; завершение ввода по <ESC> | ||||
|             call    KEYB.PutAddress			 | ||||
|             jp      c,.L201                 			; ошибка в веденных данных | ||||
|             ld      de,16                   			; кол-во байт в строке | ||||
|             ld      a,(.Coordinate+1)       			; номер строки | ||||
|             sub     0x16                    			; координата первой строки | ||||
|             jr      z,.L522 | ||||
|             ld      b,a | ||||
| .L51D			 | ||||
|             or      a | ||||
|             sbc     hl,de | ||||
|             djnz    .L51D | ||||
| .L522 | ||||
|             ld      (Dump1),hl | ||||
|             jp      KEYB.Keyb_RF | ||||
| 
 | ||||
| .L202       call    KEYB.InputLineEd             		; ввод символа | ||||
|             jp      c,KEYB.Keyb_NC                		; завершение ввода по <ESC> | ||||
|             call    .L299 | ||||
|             ld      a,c | ||||
|             sub     18                      			; первая колонка в поле данных | ||||
|             ld      c,a | ||||
|             ld      a,(KEYB.InputLine.Buffer) | ||||
|             ld      de,256*18+34            			; 1-я и последняя+1 колонки | ||||
|             jr      .L204 | ||||
| 
 | ||||
| .L203       call    KEYB.InputLineEd             		; ввод кода символа | ||||
|             jp      c,KEYB.Keyb_NC                		; завершение ввода по <ESC> | ||||
|             call    KEYB.PutCode | ||||
|             jp      c,.L201                 			; ошибка в веденных данных | ||||
|             call    .L299 | ||||
|             ld      a,c | ||||
|             sub     2                      	 			; первая колонка в поле данных | ||||
|             ld      c,a | ||||
|             ld      a,(KEYB.PutCode.Buffer)      		; записываемый байт | ||||
|             ld      de,256*2+18             			; 1-я и последняя+1 колонки | ||||
| .L204       add     hl,bc | ||||
|             call    Ld_hl_a | ||||
|             ld      a,(KEYB.InputLine.EntEnd)    		; ввод закончен ENTER | ||||
|             or      a | ||||
|             jp      nz,KEYB.Keyb_RF              		; да | ||||
|             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,.L205M1 | ||||
|             ld      hl,(Dump1)              			; сдвинуть дамп | ||||
|             ld      bc,16 | ||||
|             add     hl,bc | ||||
|             ld      (Dump1),hl | ||||
|             jr      .L205 | ||||
| .L205M1 | ||||
|             inc     (hl) | ||||
| .L205       call    CursorRes               			; выкл курсор | ||||
|             call    Refresh                 			; обновление экрана | ||||
|             call    KEYB.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 | ||||
| .LA59C			 | ||||
|             add     hl,de | ||||
|             djnz    .LA59C | ||||
|             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 | ||||
| 
 | ||||
| 	ENDMODULE | ||||
							
								
								
									
										477
									
								
								kreg.asm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										477
									
								
								kreg.asm
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,477 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                  Обработка клавиатуры в окне регистров                  [] | ||||
| ;[] v0.03 - последние изменения 11.03.2006                                  [] | ||||
| ;[] v0.10 - последние изменения 14.05.2006                                  [] | ||||
| ;[]=========================================================================[] | ||||
| 	MODULE KREG | ||||
| KReg | ||||
| ;                ld      a,b                     ;состояние <Shift><Alt><Ctrl> | ||||
| ;                and     0b11110000 | ||||
| ;                jr      z,.L100 | ||||
| 
 | ||||
|             ; Обработка комбинации Shift + символ | ||||
| ;                and     0b11000000              ;<Shift> | ||||
| ;                or      a | ||||
| ;                jp      z,KEYB.Keyb.Keyb_L1 | ||||
| ;                ld      a,d | ||||
| ;                cp      0x80+0x0F               ;Shift+Tab | ||||
| ;                jp      nz,KEYB.Keyb.Keyb_L1 | ||||
| ;                ld      a,2                     ;номер окна дампа | ||||
| ;                ld      (Keyb.WinScreen),a | ||||
| ;                jp      Keyb_NC | ||||
| 
 | ||||
|             ; Обработка позиционного кода | ||||
| .L100       ld      a,e									; ASCII код | ||||
|             ld      (.ASC_COD),a | ||||
|             ld      a,d                     			; позиционный код | ||||
| 
 | ||||
|             cp      RIGHT_KEY                    		; <Right> | ||||
|             jr      nz,.L101 | ||||
|             call    .DescCalc | ||||
|             ld      a,(hl)                  			; кол-во колонок | ||||
|             cp      e | ||||
|             ld      a,e | ||||
|             jr      nz,.L9FC0 | ||||
|             xor     a | ||||
| .L9FC0			 | ||||
|             inc     a | ||||
|             ld      (.Coordinate),a         			; текущая колонка | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| .L101       cp      LEFT_KEY							; <Left> | ||||
|             jr      nz,.L102 | ||||
|             call    .DescCalc | ||||
|             ld      a,e                     			; текущая колонка | ||||
|             cp      1 | ||||
|             jr      nz,.L9FD5 | ||||
|             ld      a,(hl)                  			; кол-во колонок | ||||
|             inc     a | ||||
| .L9FD5			 | ||||
|             dec     a | ||||
|             ld      (.Coordinate),a         			; текущая колонка | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| .L102       ld      hl,(.Descript) | ||||
|             ld      de,(.Coordinate) | ||||
|             cp      DN_KEY								; <Down> | ||||
|             jr      nz,.L103 | ||||
|             ld      a,d                     			; текущая строка | ||||
|             cp      l | ||||
|             jr      nz,.L104 | ||||
|             ld      a,h                     			; 1-я строка | ||||
|             dec     a | ||||
| .L104       inc     a | ||||
|             jr      .L107P1 | ||||
| 
 | ||||
| .L103       cp      UP_KEY								; <Up> | ||||
|             jr      nz,.L105 | ||||
|             ld      a,d                     			; текущая строка | ||||
|             cp      h | ||||
|             jr      nz,.L107 | ||||
|             ld      a,l                     			; адрес последней строки | ||||
|             inc     a | ||||
| .L107       dec     a | ||||
| .L107P1     ld      h,a | ||||
|             ld      l,1 | ||||
|             ld      (.Coordinate),hl | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| .L105       ld      b,3 | ||||
|             cp      PGDN_KEY                    		; <PgDown> | ||||
|             jr      nz,.L108 | ||||
|             ld      hl,.PgDown | ||||
|             ld      a,d                    	 			; текущая строка | ||||
| .LA00E			 | ||||
|             cp      (hl) | ||||
|             jr      c,.LA014 | ||||
|             inc     hl | ||||
|             djnz    .LA00E | ||||
| .LA014 | ||||
|             ld      a,(hl) | ||||
|             jr      .L107+1 | ||||
| 
 | ||||
| .L108       cp      PGUP_KEY                    		; <PgUp> | ||||
|             jr      nz,.L110 | ||||
|             ld      hl,.PgUp | ||||
|             ld      a,d                     			; текущая строка | ||||
| .LA01F			 | ||||
|             cp      (hl) | ||||
|             jr      nc,.LA025 | ||||
|             inc     hl | ||||
|             djnz    .LA01F | ||||
| .LA025			 | ||||
|             ld      a,(hl) | ||||
|             dec     a | ||||
|             jr      .L107P1 | ||||
| 
 | ||||
| .L110       cp      HOME_KEY                    		; <Home> | ||||
|             jr      nz,.L111 | ||||
|             ld      a,1 | ||||
|             ld      (.Coordinate),a         			; первая колонка | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| .L111       cp      END_KEY								; <End> | ||||
|             jr      nz,.L200 | ||||
|             call    .DescCalc | ||||
|             ld      a,(hl)                  			; последняя колонка | ||||
|             ld      (.Coordinate),a         			; первая колонка | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| ;.L112           cp      0x0F                    		; <Tab> | ||||
| ;                jr      nz,.L200 | ||||
| ;                ld      a,4                     		; номер окна листинга | ||||
| ;                ld      (Keyb.WinScreen),a | ||||
| ;                jp      Keyb_NC | ||||
| 
 | ||||
|         ; Обработка ASCII кодов | ||||
| .L200 | ||||
| .ASC_COD+*	ld      a,0                     			; ASCII код | ||||
|             cp      ENTER_KEY               			; <Enter> | ||||
|             jp      nz,KEYB.Keyb_L1 | ||||
| .L201 | ||||
| .ESTR_LEN+*	ld      b,0                     			; длина строки ввода | ||||
| .ESTR_POS+* 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,.LA077 | ||||
|             ld      hl,Reg._AF_             			; рег F' | ||||
|             cp      12                      			; строка с парой AF'? | ||||
|             jr      nz,.L206 | ||||
| .LA077 | ||||
|             ld      a,c                     			; коррекция номеров бит | ||||
|             cp      4                       			; колонка 4..6? | ||||
|             jr      c,.LA07F | ||||
|             inc     c | ||||
|             jr      .L207-4 | ||||
| .LA07F			 | ||||
|             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      (.BIT_TST),a | ||||
|             ld      a,b | ||||
|             or      11000110b              				; для SET | ||||
|             ld      (.BIT_SET),a | ||||
|             ld      a,b | ||||
|             or      10000110b              				; для RES | ||||
|             ld      (.BIT_RST),a | ||||
| .BIT_TST+1  bit     0,(hl)                  			; состояние бита | ||||
|             jr      nz,.LA0AD | ||||
| .BIT_SET+1	set     0,(hl)                  			; установка бита | ||||
|             jp     	KEYB.Keyb_RF | ||||
| .LA0AD			 | ||||
| .BIT_RST+1  res     0,(hl)                  			; сброс бита | ||||
|             jp      KEYB.Keyb_RF | ||||
| 
 | ||||
| .L206       ex      de,hl                   			; координаты | ||||
|             call    KEYB.InputLine               		; ввод символа | ||||
|             jp      c,KEYB.Keyb_NC                		; завершение ввода по <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    KEYB.InputLine               		; ввод числа | ||||
|             jp      c,KEYB.Keyb_NC                		; завершение ввода по <ESC> | ||||
|             call    KEYB.PutCode | ||||
|             jp      c,.L201                 			; ошибка в веденных данных | ||||
|             ld      de,.L204 | ||||
|             push    de | ||||
|             ld      de,(.Coordinate) | ||||
| .L209       dec     d | ||||
|             jr      nz,.LA0F9 | ||||
|             ld      hl,(Reg._IX) | ||||
|             ret | ||||
| .LA0F9 | ||||
|             dec     d | ||||
|             jr      nz,.LA100 | ||||
|             ld      hl,(Reg._IY) | ||||
|             ret | ||||
| .LA100			 | ||||
|             dec     d | ||||
|             jr      nz,.LA107 | ||||
|             ld      hl,(Reg._HL) | ||||
|             ret | ||||
| .LA107			 | ||||
|             dec     d | ||||
|             jr      nz,.LA10E | ||||
|             ld      hl,(Reg._DE) | ||||
|             ret | ||||
| .LA10E			 | ||||
|             dec     d | ||||
|             jr      nz,.LA115 | ||||
|             ld      hl,(Reg._BC) | ||||
|             ret | ||||
| .LA115			 | ||||
|             dec     d | ||||
|             dec     d | ||||
|             dec     d | ||||
|             jr      nz,.LA11E | ||||
|             ld      hl,(Reg._HL_) | ||||
|             ret | ||||
| .LA11E			 | ||||
|             dec     d | ||||
|             jr      nz,.LA125 | ||||
|             ld      hl,(Reg._DE_) | ||||
|             ret | ||||
| .LA125			 | ||||
|             dec     d | ||||
|             ld      hl,(Reg._BC_) | ||||
|             ret | ||||
| 
 | ||||
|             ld      a,(KEYB.InputLine.Buffer) | ||||
|             jr      .LA134 | ||||
| .L204		ld      a,(KEYB.PutCode.Buffer)				; записываемый байт | ||||
|             dec     e | ||||
|             dec     e                       			; смещение в минидампе | ||||
| .LA134			 | ||||
|             add     hl,de                   			; адрес в памяти | ||||
|             call    Ld_hl_a                 			; записали | ||||
|             jp      KEYB.Keyb_RF | ||||
| 
 | ||||
| .L202       dec     a                       			; однобайтное число (номер банки) | ||||
|             jr      nz,.L203 | ||||
|             call    KEYB.InputLine               		; ввод числа | ||||
|             jp      c,KEYB.Keyb_NC                		; завершение ввода по <ESC> | ||||
|             call    KEYB.PutAddress | ||||
|             jp      c,.L201                 			; ошибка в веденных данных | ||||
|             ld      de,KEYB.Keyb_RF | ||||
|             push    de | ||||
|             ld      a,l | ||||
|             ld      de,(.Coordinate) | ||||
|             dec     e                       			; колонка в строке | ||||
|             jr      nz,.LA15A | ||||
|             ld      (WinPage),a             			; 0-е окно | ||||
|             ret | ||||
| .LA15A			 | ||||
|             dec     e | ||||
|             jr      nz,.LA163 | ||||
|             ld      (WinPage+1),a           			; 1-е окно | ||||
|             out     (EmmWin.P1),a | ||||
|             ret | ||||
| .LA163			 | ||||
|             dec     e | ||||
|             jr      nz,.LA16A | ||||
|             ld      (WinPage+2),a           			; 2-е окно | ||||
|             ret | ||||
| .LA16A			 | ||||
|             ld      (WinPage+3),a           			; 3-е окно | ||||
|             out     (EmmWin.P3),a | ||||
|             ret | ||||
| 
 | ||||
| .L203       dec     a                       			; глубина стека | ||||
|             jr      nz,.L210 | ||||
|             xor     a                       			; обнулить | ||||
|             ld      (StackDown),a | ||||
|             jp      KEYB.Keyb_RF | ||||
|             | ||||
| .L210       ;dec     a                       			; двухбайтное число | ||||
|             ;jp      nz,KEYB.Keyb.Keyb_L1 | ||||
|             call    KEYB.InputLine               		; ввод числа в рег пары | ||||
|             jp      c,KEYB.Keyb_NC                		; завершение ввода по <ESC> | ||||
|             call    KEYB.PutAddress | ||||
|             jp      c,.L201                 			; ошибка в веденных данных | ||||
|             ld      de,KEYB.Keyb_RF | ||||
|             push    de | ||||
|             ld      de,(.Coordinate) | ||||
|             dec     d | ||||
|             jr      nz,.LA195 | ||||
|             ld      (Reg._IX),hl | ||||
|             ret | ||||
| .LA195			 | ||||
|             dec     d | ||||
|             jr      nz,.LA19C | ||||
|             ld      (Reg._IY),hl | ||||
|             ret | ||||
| .LA19C			 | ||||
|             dec     d | ||||
|             jr      nz,.LA1A3 | ||||
|             ld      (Reg._HL),hl | ||||
|             ret | ||||
| .LA1A3			 | ||||
|             dec     d | ||||
|             jr      nz,.LA1AA | ||||
|             ld      (Reg._DE),hl | ||||
|             ret | ||||
| .LA1AA			 | ||||
|             dec     d | ||||
|             jr      nz,.LA1B1 | ||||
|             ld      (Reg._BC),hl | ||||
|             ret | ||||
| .LA1B1			 | ||||
|             dec     d | ||||
|             jr      nz,.LA1B8 | ||||
|             ld      (Reg._AF),hl | ||||
|             ret | ||||
| .LA1B8			 | ||||
|             dec     d | ||||
|             dec     d | ||||
|             jr      nz,.LA1C0 | ||||
|             ld      (Reg._HL_),hl | ||||
|             ret | ||||
| .LA1C0 | ||||
|             dec     d | ||||
|             jr      nz,.LA1C7 | ||||
|             ld      (Reg._DE_),hl | ||||
|             ret | ||||
| .LA1C7			 | ||||
|             dec     d | ||||
|             jr      nz,.LA1CE | ||||
|             ld      (Reg._BC_),hl | ||||
|             ret | ||||
| .LA1CE			 | ||||
|             dec     d | ||||
|             jr      nz,.LA1D5 | ||||
|             ld      (Reg._AF_),hl | ||||
|             ret | ||||
| .LA1D5			 | ||||
|             dec     d | ||||
|             dec     d | ||||
|             jr      nz,.LA1E4 | ||||
|             dec     e | ||||
|             jr      z,.LA1E0 | ||||
|             ld      (Reg._IR),hl | ||||
|             ret | ||||
| .LA1E0 | ||||
|             ld      (Reg._PC),hl | ||||
|             ret | ||||
| .LA1E4			 | ||||
|             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 | ||||
| 
 | ||||
|         ; Расчет дескриптора строки в окне регистров | ||||
| .DescCalc   ld      de,(.Coordinate)        			; текущие координаты | ||||
|             ld      hl,.Descript+1 | ||||
|             ld      b,d                     			; номер строки | ||||
| .LA20E | ||||
|             inc     hl                      			; дескриптор строки | ||||
|             inc     hl | ||||
|             djnz    .LA20E | ||||
|             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 | ||||
| 
 | ||||
| 	ENDMODULE | ||||
							
								
								
									
										215
									
								
								kstack.asm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										215
									
								
								kstack.asm
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,215 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]               Обработка клавиатуры в окне дампа стека                   [] | ||||
| ;[] v0.10 - последние изменения 18.03.2006                                  [] | ||||
| ;[]=========================================================================[] | ||||
| KStack: | ||||
|                 ld      a,b                     ;состояние <Shift><Alt><Ctrl> | ||||
|                 and     SHIFTS_MASK | ||||
| ;               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.Keyb.Keyb_L1 | ||||
| ;;              ld      a,3                     ;номер окна дампа | ||||
| ;;              ld      (Keyb.WinScreen),a | ||||
| ;               jp      Keyb_NC | ||||
| 
 | ||||
|                 ;Обработка комбинации Ctrl + символ | ||||
| ;                ld      a,b | ||||
|             cp      CTRL_FLAG              				; <Ctrl> | ||||
|             jp      nz,KEYB.Keyb_L1 | ||||
|             ld      a,d                     			; позиционный код | ||||
|             cp      SHIFTED_KEY+X_KEY					; <Ctrl>+<X> | ||||
|             jp      nz,KEYB.Keyb_L1 | ||||
|             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.Keyb_RF | ||||
| 
 | ||||
|             ; Обработка позиционного кода | ||||
| .L100       ld      a,e                     			; ASCII код | ||||
|             ld      (.L200+1),a | ||||
|             ld      a,d                     			; позиционный код | ||||
|             ld      de,(.Coordinate)        			; текущие координаты курсора | ||||
|             cp      RIGHT_KEY							; <Right> | ||||
|             jr      nz,.L101 | ||||
|             ld      a,(.Descript+2)         			; кол-во колонок | ||||
|             cp      e | ||||
|             ld      a,e | ||||
|             jr      nz,.LA2E6 | ||||
|             xor     a | ||||
| .LA2E6			 | ||||
|             inc     a | ||||
|             ld      (.Coordinate),a         			; текущая колонка | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| .L101       cp      LEFT_KEY                    		; <Left> | ||||
|             jr      nz,.L102 | ||||
|             ld      a,e                     			; текущая колонка | ||||
|             cp      1 | ||||
|             jr      nz,.LA2FA | ||||
|             ld      a,(.Descript+2)         			; кол-во колонок | ||||
|             inc     a | ||||
| .LA2FA			 | ||||
|             dec     a | ||||
|             ld      (.Coordinate),a         			; текущая колонка | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| .L102       ld      hl,(.Descript) | ||||
|             cp      DN_KEY                    			; <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,.LA31D | ||||
|             dec     (hl) | ||||
| .LA31D				 | ||||
|             jp      KEYB.Keyb_RF | ||||
| .L104       inc     a | ||||
|             ld      (.Coordinate+1),a | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| .L103       cp      UP_KEY								; <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,.LA342 | ||||
|             ld      a,-2 | ||||
|             ld      (hl),a                  			; верш.стека не попадает в дамп | ||||
| .LA342				 | ||||
|             inc     (hl) | ||||
|             jp      KEYB.Keyb_RF | ||||
| .L107       dec     a | ||||
|             ld      (.Coordinate+1),a | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| .L105       cp      PGDN_KEY							; <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.Keyb_RF | ||||
| .L106       ld      a,l                     			; на последнюю строку | ||||
|             ld      (.Coordinate+1),a | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| .L108       cp      PGUP_KEY							; <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.Keyb_RF | ||||
| .L109       ld      a,h                     			; на первую строку | ||||
|             ld      (.Coordinate+1),a | ||||
|             jp      KEYB.Keyb_NC | ||||
| 
 | ||||
| .L110       cp      HOME_KEY							; <Home> | ||||
|             jr      nz,.L200 | ||||
|             ld      a,6 | ||||
|             ld      (PrintStrSP.StrSp),a    			; строка верш.стека | ||||
|             jp      KEYB.Keyb_RF | ||||
| 
 | ||||
| ;.L111           cp      0x0F                    		;<Tab> | ||||
| ;                jr      nz,.L200 | ||||
| ;                ld      a,1                     		; номер окна листинга | ||||
| ;                ld      (Keyb.WinScreen),a | ||||
| ;                jp      KEYB.Keyb_NC | ||||
| 
 | ||||
|         ;Обработка ASCII кодов | ||||
| .L200       ld      a,0									; ASCII код | ||||
|             cp      0x0D                    			; <Enter> | ||||
|             jp      nz,KEYB.Keyb_L1 | ||||
| .L201        | ||||
| .ESTR_LEN+*	ld      b,0                     			; длина строки ввода | ||||
| .ESTR_POS+*	ld      hl,0                    			; координаты строки ввода | ||||
|             call    KEYB.InputLine               		; ввод числа | ||||
|             jp      c,KEYB.Keyb_NC                		; завершение ввода по <ESC> | ||||
|             call    KEYB.PutAddress | ||||
|             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.Keyb_RF | ||||
| 
 | ||||
| .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.Keyb_RF | ||||
| 
 | ||||
| 
 | ||||
| .Coordinate DW      0x1601                  ;курсор (стр/кол курсора) | ||||
| .Descript | ||||
|             DW      0x161D                  ;первая/последняя строка окна | ||||
|             DB      2                       ;кол-во колонок | ||||
|             DB      0x01                    ;N столбца колонки | ||||
|             DB      5                       ;ширина колонки | ||||
|             DB      0x07,5 | ||||
| 
 | ||||
							
								
								
									
										369
									
								
								loadbin.asm
									
									
									
									
									
								
							
							
						
						
									
										369
									
								
								loadbin.asm
									
									
									
									
									
								
							| @ -1,191 +1,206 @@ | ||||
| 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 | ||||
| 	MODULE LOADBIN | ||||
| 
 | ||||
| .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 | ||||
| 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	KEYB.InputLine1 | ||||
| 			jr		c,LoadBinDialog | ||||
| 			ld		a,c | ||||
| 			and		a | ||||
| 			jr		z,.L003 | ||||
| 			ld		(.filenamelen),a | ||||
| 			push	bc | ||||
| 			ld		de,.LoadBinFileName | ||||
| 			call	KEYB.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,0x1021 | ||||
| 			ld		b,5 | ||||
| 			call	KEYB.InputLine1 | ||||
| 			jr		c,LoadBinDialog | ||||
| 			push	bc | ||||
| 			call	KEYB.PutAddress | ||||
| 			pop		bc | ||||
| 			jr		c,.EditAddres | ||||
| 			ld		(.LoadToAdr),hl | ||||
| 			ld		de,.AdresTxt | ||||
| 			call	KEYB.InputLine.FromBuffer | ||||
| 			jr		LoadBinDialog | ||||
| 
 | ||||
| .EditLenght	 | ||||
| 			ld		hl,0x1031 | ||||
| 			ld		b,5 | ||||
| 			call	KEYB.InputLine1 | ||||
| 			jr		c,LoadBinDialog | ||||
| 			push	bc | ||||
| 			call	KEYB.PutAddress | ||||
| 			pop		bc | ||||
| 			jr		c,.EditLenght | ||||
| 			ld		(.LoadLen),hl | ||||
| 			ld		de,.LenTxt | ||||
| 			call	KEYB.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 | ||||
|             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 | ||||
| 
 | ||||
| 		ld	hl,(.LoadToAdr) | ||||
| 		ld	(ListAdr),hl | ||||
| 		ld	a,(WinPage+1) | ||||
| 		out	(EmmWin.P1),a | ||||
| 		ret | ||||
| .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		(ListAddr),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 | ||||
| 			ld		a,(.FMid) | ||||
| 			ld		c,Dss.Close | ||||
| 			rst		DssRst | ||||
| 			pop		af | ||||
| .Err1	 | ||||
| 			ei	 | ||||
| 			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		 | ||||
| 			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		 | ||||
| .filenamelen	 | ||||
| 			db	0 | ||||
| .LoadToAdr	dw	0x4000 | ||||
| .LoadLen	dw	0x1000		 | ||||
| .LoadBinWnd	db	2,23,13,36,6,7 | ||||
| 		db	"Load BIN-file",0 | ||||
| 		db	"Filename:  " | ||||
| .LoadBinFileName	ds	20,32 | ||||
| 		db	0X0D | ||||
| 		db	"Addres: " | ||||
| 			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 | ||||
| 			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								; Address | ||||
| 			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 | ||||
| 
 | ||||
| 	ENDMODULE | ||||
							
								
								
									
										2
									
								
								make.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										2
									
								
								make.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,2 @@ | ||||
| #! /bin/bash | ||||
| sjasmplus --sld=demon.sld --sym=demon.labels --raw=demon.exe --fullpath demon.asm | ||||
							
								
								
									
										27
									
								
								readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								readme.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,27 @@ | ||||
| # Монитор-отладчик DemoN by Alpha Studio с небольшими доработками Hard/WCG | ||||
| 
 | ||||
| ## DemoN v.0.12 | ||||
| 
 | ||||
| ### b0004 24.07.2024 (Romych) | ||||
| 
 | ||||
| + (DSS 1.70+) Добавлена поддержка загрузки EXE-файлов версии 1 | ||||
| + (DSS 1.70+) Добавлена поддержка функции DSS CurDir, теперь demon.exe можно держать где-то в каталоге, прописанных в PATH и запускать отладку exe из текущего каталога. | ||||
| 
 | ||||
| ### b0003 20.02.2011 | ||||
| 
 | ||||
| + По кнопке "Z" PC присваивается адрес, на котором установлен курсор. | ||||
| + Добавил диалог Load BIN-file, но еще не довел его до ума. | ||||
| 
 | ||||
| ### b0002 19.02.2011 | ||||
| 
 | ||||
| + Изменил процедуры печати и прорисовки курсора для работы через DSS, т.к. на эмуляторе Demon не | ||||
| полноценно работает. | ||||
| + при старте запоминаем текущий режим экрана и при выходе - восстанавливаем. | ||||
| + сохраняем в буфер инфу экрана ОСи, если экран демона находится на той же странице, при выходе - восстанавливаем | ||||
| + изменена П/П просмотра другого экрана, теперь она с учетом того, что демон и ОС могут быть на одном экране | ||||
| + изменен образ "непечатаемого" символа | ||||
| + добавил ПП прорисовки окон и обработки диалогов - на будущее | ||||
| 
 | ||||
| ### b0001 18.02.2011 | ||||
| 
 | ||||
| + Переделал исходник под кроссассемблер sjasmplus. | ||||
							
								
								
									
										26
									
								
								readme.txt
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								readme.txt
									
									
									
									
									
								
							| @ -1,26 +0,0 @@ | ||||
| Монитор-отладчик 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. | ||||
							
								
								
									
										87
									
								
								rez.asm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								rez.asm
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,87 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                          Резидент отладчика                             [] | ||||
| ;[] v0.03 - последние изменения 24.02.2006                                  [] | ||||
| ;[] Принцип работы (два варианта):                                          [] | ||||
| ;[] 1. Резидент расположен не во втором окне памяти (0x8000...0xBFFF)       [] | ||||
| ;[] Из отладчика готовится резидент (настраиваются все адреса) и копируется [] | ||||
| ;[] по адресу расположения, управление из отладчика передается на метку     [] | ||||
| ;[] Rezident.Start1, после чего происходит востановление банки памяти, рас- [] | ||||
| ;[] положенной под отладчиком и выполнение отлаживаемой команды. Возврат    [] | ||||
| ;[] в резидент осуществляется на метку Rezident.RetIn1 и далее после вос-   [] | ||||
| ;[] тановления банки с отладчиком возврат в отладчик.                       [] | ||||
| ;[] 2. Резидент расположен во втором окне памяти (0x8000...0xBFFF)          [] | ||||
| ;[] Поскольку в этом окне работает сам отладчик, то переход в резидент и    [] | ||||
| ;[] возврат в отладчик после трассировки команды выполняется при помощи     [] | ||||
| ;[] вспомогательной процедуры длиной 7 байт расположеной по адресу          [] | ||||
| ;[] AdrTmpBuf. После коррекции всех адресов в отладчике и сохранении акку-  [] | ||||
| ;[] мулятора отлаживаемой программы по адресу Rezident+1 и пары HL по адре- [] | ||||
| ;[] ce Rezident+2 управление передается по адресу AdrTmpBuf, где расположен [] | ||||
| ;[] следующий код отключающий банку с отладчиком:                           [] | ||||
| ;[] ld a,НомерБанкиПодОтладчиком                                            [] | ||||
| ;[] out (НомерПорта2Окна),a                                                 [] | ||||
| ;[] jp Rezident.Start                                                       [] | ||||
| ;[] Далее резидент востанавливает 7 байт запорченых вышепреведенной проце-  [] | ||||
| ;[] дурой, а также пару HL и аккумулятор и переходит к трассировке. Возврат [] | ||||
| ;[] происходит на метку Rezident.RetIn, где после сохранения аккумулятора и [] | ||||
| ;[] пары HL сохраняется 7 байт памяти из адреса AdrTmpBuf и туда прописыва- [] | ||||
| ;[] ется код востановления банки с отладчиком:                              [] | ||||
| ;[] ld a,НомерБанкиСОтладчиком                                              [] | ||||
| ;[] out (НомерПорта2Окна),a                                                 [] | ||||
| ;[] jp ВОтладчик                                                            [] | ||||
| ;[] После возврата в отладчик востанавливается память запорченая резидентом [] | ||||
| ;[] и временной процедурой                                                  [] | ||||
| ;[]=========================================================================[] | ||||
| 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
									
								
							
							
						
						
									
										64
									
								
								savescr.asm
									
									
									
									
									
										Normal 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 Заглушка Не было исходника :(  | ||||
| ;                include "d:\workast\demon\screen\scrdemon" | ||||
| 
 | ||||
							
								
								
									
										44
									
								
								sim/ports.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								sim/ports.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | ||||
| port_p0 = 0; | ||||
| port_p1 = 1; | ||||
| port_p2 = 2; | ||||
| port_p3 = 3; | ||||
| message = ""; | ||||
| 
 | ||||
| // This function is called when time (t-states) advances.
 | ||||
| API.tick = () => { | ||||
| } | ||||
| 
 | ||||
| // This function is called when an 'out' is executed in Z80.
 | ||||
| API.writePort = (port, value) => { | ||||
|     // Go through all ports
 | ||||
|     if (port == 0x9000) { | ||||
|         if (value != 0) { | ||||
|             message += String.fromCharCode(value); | ||||
|          } else { | ||||
|             API.log("> " + message); | ||||
|             message = ""; | ||||
|          } | ||||
|     } else if (port == 0x82) { | ||||
|         port_p0 = value; | ||||
|     } else if (port == 0xA2) { | ||||
|         port_p1 = value; | ||||
|     } else if (port == 0xC2) { | ||||
|         port_p2 = value; | ||||
|     } else if (port == 0xE2) { | ||||
|         port_p3 = value; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| API.readPort = (port) => { | ||||
|     if (port == 0x82) { | ||||
|         return port_p0; | ||||
|     } else if (port == 0xA2) { | ||||
|         return port_p1; | ||||
|     } else if (port == 0xC2) { | ||||
|         return port_p2; | ||||
|     } else if (port == 0xE2) { | ||||
|         return port_p3; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
							
								
								
									
										433
									
								
								step.asm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										433
									
								
								step.asm
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,433 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]                       Отладка команд программы                          [] | ||||
| ;[] v0.03 - последние изменения 10.03.2006                                  [] | ||||
| ;[] v0.10 - последние изменения 18.03.2006                                  [] | ||||
| ;[]=========================================================================[] | ||||
| 	MODULE STEP | ||||
| 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      .NPC | ||||
| .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      .NPC | ||||
|             add     hl,bc                   			; положительное смещение | ||||
|             jp      .NPC | ||||
| 
 | ||||
| .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      .NPC | ||||
| .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      .NPC | ||||
| .L2         call    List                    			; следующая команда | ||||
| .NPC | ||||
|             ld      (Reg._PC),hl            			; новый PC | ||||
|             push    hl | ||||
|             push    hl | ||||
|             ld      a,(KEYB.KList.Descript)      		; количество строк листинга | ||||
|             call    KEYB.AdrListTabl             		; нижний адрес листинга | ||||
|             ld      de,(ListAddr)            			; верхний адрес листинга | ||||
|             pop     bc                      			; новый PC | ||||
|             call    AdrArea | ||||
|             jr      nc,.L1+4 | ||||
| 
 | ||||
| .L1         ld      (ListAddr),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   			; длина резидента | ||||
| 
 | ||||
| 	ENDMODULE | ||||
| @ -1,8 +1,8 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]             ’ ¡«¨æë ¤¨§ áᥬ¡«¥à  ¬®¨â®à -®â« ¤ç¨ª  DemoN              [] | ||||
| ;[] v0.01 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 10.10.2004                                  [] | ||||
| ;[] v0.02 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 29.11.2004                                  [] | ||||
| ;[] v0.03 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 29.01.2006                                  [] | ||||
| ;[]             Таблицы дизассемблера монитора-отладчика 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 | ||||
| @ -1,36 +1,36 @@ | ||||
| ;[]=========================================================================[] | ||||
| ;[]               <EFBFBD>®¤¯à®£à ¬¬ë-ã⨫¨âë ¬®¨â®à -®â« ¤ç¨ª  DemoN             [] | ||||
| ;[] v0.01 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 29.08.2004                                  [] | ||||
| ;[] v0.02 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 20.03.2005                                  [] | ||||
| ;[] v0.03 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 25.02.2006                                  [] | ||||
| ;[] v0.10 - ¯®á«¥¤¨¥ ¨§¬¥¥¨ï 17.05.2006                                  [] | ||||
| ;[]               Подпрограммы-утилиты монитора-отладчика 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    - сохранение значений регистровых пар                    [] | ||||
| ;[] 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 | ||||
| @ -59,22 +59,22 @@ SaveAllRegs: | ||||
|                 ex      af,af' | ||||
|                 exx | ||||
| 
 | ||||
|                 ld      hl,WinPage              ;á®åà ¥¨¥ ®¬¥à®¢ áâà ¨æ | ||||
|                 in      a,(EmmWin.P0)           ;0-¥ ®ª® | ||||
|                 ld      hl,WinPage              ;сохранение номеров страниц | ||||
|                 in      a,(EmmWin.P0)           ;0-е окно | ||||
|                 ld      (hl),a | ||||
|                 inc     hl | ||||
|                 in      a,(EmmWin.P1)           ;1-¥ ®ª® | ||||
|                 in      a,(EmmWin.P1)           ;1-е окно | ||||
|                 ld      (hl),a | ||||
|                 inc     hl | ||||
|                 in      a,(EmmWin.P2)           ;2-¥ ®ª® | ||||
|                 in      a,(EmmWin.P2)           ;2-е окно | ||||
|                 ld      (hl),a | ||||
|                 inc     hl | ||||
|                 in      a,(EmmWin.P3)           ;3-¥ ®ª® | ||||
|                 in      a,(EmmWin.P3)           ;3-е окно | ||||
|                 ld      (hl),a | ||||
|                 ret | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]                 ‚®áâ ®¢«¥¨¥ § ç¥¨© ॣ¨áâ஢ëå ¯ à                  [] | ||||
| ;[]                 Востановление значений регистровых пар                  [] | ||||
| ;[]=========================================================================[] | ||||
| RestAllRegs: | ||||
|                 ld      a,(Reg._IR) | ||||
| @ -104,25 +104,25 @@ RestAllRegs: | ||||
|                 ret | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]                         <EFBFBD>¥ç âì áâப¨ ᨬ¢®«®¢                          [] | ||||
| ;[] ‚室:  HL -  ¤à¥á áâப¨ ᨬ¢®«®¢                                       [] | ||||
| ;[]                         Печать строки символов                          [] | ||||
| ;[] Вход:  HL - адрес строки символов                                       [] | ||||
| ;[]                                                                         [] | ||||
| ;[] ”®à¬ â áâப¨: 0x16, ‘⮫¡¥æ, ‘âப , ‘¨¬¢®«ë, 0x00                     [] | ||||
| ;[] Формат строки: 0x16, Столбец, Строка, Символы, 0x00                     [] | ||||
| ;[]=========================================================================[] | ||||
|                 ld      a,(Color.Screen)        ;®á®¢®© 梥â | ||||
|                 ld      a,(Color.Screen)        ;основной цвет | ||||
|                 ld      (PrnStrColor.L1+5),a | ||||
| PrnStrColor: | ||||
|                 ld      a,(hl) | ||||
|                 cp      0x16                    ;ª®¤ ãáâ ®¢ª¨ ¯®§¨æ¨¨ ªãàá®à  | ||||
|                 cp      0x16                    ;код установки позиции курсора | ||||
|                 jr      nz,.L2 | ||||
|                 inc     hl | ||||
|                 ld      e,(hl)                  ;á⮫¡¥æ | ||||
|                 ld      e,(hl)                  ;столбец | ||||
| 		ld	a,e | ||||
| 		ld	(PrtXCoord),a | ||||
|                 inc     hl | ||||
|                 ld      d,(hl)                  ;áâப  | ||||
|                 ld      d,(hl)                  ;строка | ||||
|                 inc     hl | ||||
|                 ld      a,(hl)                  ;ᨬ¢®« | ||||
|                 ld      a,(hl)                  ;символ | ||||
| .L2             cp	0x0D | ||||
| 		jr	nz,.L3 | ||||
| 		inc	d | ||||
| @ -137,14 +137,14 @@ PrnStrColor: | ||||
| 		inc	hl | ||||
| 		ld	a,(hl) | ||||
| .L1		or      a | ||||
|                 ret     z                       ;¢ë室 ¥á«¨ ª®¥æ áâப¨ | ||||
|                 ret     z                       ;выход если конец строки | ||||
|                 push    hl | ||||
|                 push    de | ||||
| ;¯¥ç âì ç/§ ¡¨®á ¨«¨ ¤áá? | ||||
| ;печать ч/з биос или дсс? | ||||
| 	ifdef D_PRINTCH_BIOS | ||||
|                 ld      h,0x03                  ; âਡãâ | ||||
|                 ld      h,0x03                  ;атрибут | ||||
|                 ld      l,a | ||||
|                 sub     a                       ;¨¤¥â¨ä¨ª â®à ®ª  | ||||
|                 sub     a                       ;идентификатор окна | ||||
| ;		ld	a,(Demon.Bios_Win) | ||||
|                 ld      bc,SysSymb*256+Bios.Win_Put_Sym | ||||
|                 rst     BiosRst | ||||
| @ -160,18 +160,18 @@ PrnStrColor: | ||||
|                 jr      PrnStrColor | ||||
| PrtXCoord	db	0 | ||||
| ;[]=========================================================================[] | ||||
| ;[]                    <EFBFBD>¥ç âì ¤¢ãå¡ ©â®¢®£® ç¨á«                            [] | ||||
| ;[] ‚室:  DE - ª®®à¤¨ âë ¯¥ç â¨                                           [] | ||||
| ;[]        HL - § ç¥¨¥ ॣ¨áâ஢®© ¯ àë                                   [] | ||||
| ;[]                    Печать двухбайтового числа                           [] | ||||
| ;[] Вход:  DE - координаты печати                                           [] | ||||
| ;[]        HL - значение регистровой пары                                   [] | ||||
| ;[]=========================================================================[] | ||||
| PrintReg: | ||||
|                 di | ||||
|                 push    hl | ||||
|                 ld      c,Bios.Lp_Set_Place     ;ãáâ ®¢ª  ¯®§¨æ¨¨ ¯¥ç â¨ | ||||
|                 ld      c,Bios.Lp_Set_Place     ;установка позиции печати | ||||
|                 rst     BiosRst | ||||
|                 pop     hl | ||||
| 
 | ||||
|                 ld      a,(DecHex)              ;á¨á⥬ áç¨á«¥¨ï | ||||
|                 ld      a,(DecHex)              ;систем счисления | ||||
|                 or      a | ||||
|                 jr      z,.Hex | ||||
| 
 | ||||
| @ -184,12 +184,12 @@ PrintReg: | ||||
|                 ld      c,l | ||||
|                 ld      a,h | ||||
|                 call    ConvHexStr | ||||
|                 ld      (.String+1),hl          ;áâ à訩 ¡ ©â | ||||
|                 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 ¤«¨  áâப¨ | ||||
|                 ld      (.String+3),hl          ;младший байт | ||||
| .Print          ld      hl,.String              ;печатаемая строка | ||||
|                 ld      bc,5*256+Bios.Lp_Print_Ln2 ;в рег.B длина строки | ||||
|                 rst     BiosRst | ||||
|                 ei | ||||
|                 ret | ||||
| @ -197,16 +197,16 @@ PrintReg: | ||||
| .String         db      "#0123" | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]              <EFBFBD>¥ç âì § ç¥¨ï ॣ¨áâ஢®© ¯ àë AF ¨ ä« £®¢               [] | ||||
| ;[] ‚室:  DE - ª®®à¤¨ âë ¯¥ç â¨                                           [] | ||||
| ;[]        HL - § ç¥¨¥ ॣ¨áâ஢®© ¯ àë                                   [] | ||||
| ;[]              Печать значения регистровой пары AF и флагов               [] | ||||
| ;[] Вход:  DE - координаты печати                                           [] | ||||
| ;[]        HL - значение регистровой пары                                   [] | ||||
| ;[]=========================================================================[] | ||||
| PrintStrAF: | ||||
|                 ld      a,h                     ;§ ç¥¨¥ ॣ¨áâà  A | ||||
|                 ld      a,h                     ;значение регистра A | ||||
|                 push    hl | ||||
|                 ld      (.String+11),a | ||||
| 
 | ||||
|                 ld      hl,.String+1            ;¤¢®¨ç®¥ § ç¥¨¥ | ||||
|                 ld      hl,.String+1            ;двоичное значение | ||||
|                 push    de | ||||
|                 ld      de,0x3031               ;"01" | ||||
|                 ld      b,8 | ||||
| @ -225,23 +225,23 @@ PrintStrAF: | ||||
|                 call    ReplSymNoPrint | ||||
| 
 | ||||
|                 pop     hl | ||||
|                 ld      a,l                     ;ä« £¨ | ||||
|                 ld      a,l                     ;флаги | ||||
|                 push    hl | ||||
|                 ld      hl,.Flags | ||||
|                 ld      b,8 | ||||
|                 res     3,a                     ;á¡à®á ¥¨§¢¥áâëå ä« £®¢ | ||||
|                 res     3,a                     ;сброс неизвестных флагов | ||||
|                 res     5,a | ||||
| .L2             rlca | ||||
|                 jr      c,$+6 | ||||
|                 set     5,(hl)                  ;á¡à®è¥ | ||||
|                 set     5,(hl)                  ;сброшен | ||||
|                 jr      $+4      | ||||
|                 res     5,(hl)                  ;ãáâ ®¢«¥ | ||||
|                 res     5,(hl)                  ;установлен | ||||
|                 inc     hl | ||||
|                 djnz    .L2 | ||||
|                 pop     hl | ||||
| 
 | ||||
|                 push    de | ||||
|                 call    PrintReg                ;¯¥ç âì § ç¥¨ï ॣ.¯ àë | ||||
|                 call    PrintReg                ;печать значения рег.пары | ||||
|                 pop     de | ||||
|                 push    de | ||||
|                 ld      a,6 | ||||
| @ -251,7 +251,7 @@ PrintStrAF: | ||||
|                 di | ||||
|                 rst     BiosRst | ||||
|                 ld      hl,.String | ||||
|                 ld      bc,13*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨  áâப¨ | ||||
|                 ld      bc,13*256+Bios.Lp_Print_Ln2 ;в рег.B длина строки | ||||
|                 di | ||||
|                 rst     BiosRst | ||||
|                 pop     de | ||||
| @ -263,7 +263,7 @@ PrintStrAF: | ||||
|                 di | ||||
|                 rst     BiosRst | ||||
|                 ld      hl,.Flags | ||||
|                 ld      bc,8*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨  áâப¨ | ||||
|                 ld      bc,8*256+Bios.Lp_Print_Ln2 ;в рег.B длина строки | ||||
|                 di | ||||
|                 rst     BiosRst | ||||
|                 ei | ||||
| @ -273,16 +273,16 @@ PrintStrAF: | ||||
| .Flags          db      "SZ.H.PNC" | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]          <EFBFBD>¥ç âì § ç¥¨© ॣ¨áâ஢ëå ¯ à á  ¤à¥á㥬묨 ¡ ©â ¬¨          [] | ||||
| ;[] ‚室:  DE - ª®®à¤¨ âë ¯¥ç â¨                                           [] | ||||
| ;[]        HL - § ç¥¨¥ ॣ¨áâ஢®© ¯ àë                                   [] | ||||
| ;[]          Печать значений регистровых пар с адресуемыми байтами          [] | ||||
| ;[] Вход:  DE - координаты печати                                           [] | ||||
| ;[]        HL - значение регистровой пары                                   [] | ||||
| ;[]=========================================================================[] | ||||
| PrintStrReg: | ||||
|                 push    hl | ||||
|                 ld      b,h | ||||
|                 ld      c,l | ||||
| 
 | ||||
|                 call    Ld_a_bc                 ;ld a,(bc)  ¤à¥áã¥¬ë¥ ¡ ©âë | ||||
|                 call    Ld_a_bc                 ;ld a,(bc) адресуемые байты | ||||
|                 ld      (.String+10),a | ||||
|                 call    ConvHexStr | ||||
|                 ld      (.String),hl | ||||
| @ -302,22 +302,22 @@ PrintStrReg: | ||||
|                 call    ConvHexStr | ||||
|                 ld      (.String+7),hl | ||||
| 
 | ||||
|                 ld      hl,.String+10           ;§ ¬¥  ¥¯¥ç âëå ᨬ¢®«®¢ | ||||
|                 ld      hl,.String+10           ;замена непечатных символов | ||||
|                 ld      b,4 | ||||
|                 call    ReplSymNoPrint | ||||
| 
 | ||||
|                 pop     hl | ||||
|                 push    de | ||||
|                 call    PrintReg                ;¯¥ç âì § ç¥¨ï ॣ.¯ àë | ||||
|                 call    PrintReg                ;печать значения рег.пары | ||||
|                 pop     de | ||||
|                 di | ||||
|                 ld      a,6 | ||||
|                 add     a,e | ||||
|                 ld      e,a | ||||
|                 ld      c,Bios.Lp_Set_Place     ;ãáâ ®¢ª  ¯®§¨æ¨¨ ¯¥ç â¨ | ||||
|                 ld      c,Bios.Lp_Set_Place     ;установка позиции печати | ||||
|                 rst     BiosRst | ||||
|                 ld      hl,.String              ;¯¥ç â ¥¬ ï áâப  | ||||
|                 ld      bc,14*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨  áâப¨ | ||||
|                 ld      hl,.String              ;печатаемая строка | ||||
|                 ld      bc,14*256+Bios.Lp_Print_Ln2 ;в рег.B длина строки | ||||
|                 rst     BiosRst | ||||
|                 ei | ||||
|                 ret | ||||
| @ -325,11 +325,11 @@ PrintStrReg: | ||||
| .String         db      "0123 4567 ABCD" | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]                       <EFBFBD>¥ç âì ®¬¥à®¢ ¡ ®ª ¢ ®ª å                      [] | ||||
| ;[] ‚室:  HL -  ¤à¥á á®åà ¥ëå ®¬¥à®¢                                   [] | ||||
| ;[]                       Печать номеров банок в окнах                      [] | ||||
| ;[] Вход:  HL - адрес сохраненных номеров                                   [] | ||||
| ;[]=========================================================================[] | ||||
| PrintStrWin: | ||||
|                 ld      hl,WinPage              ;¢ë¢®¤ ®¬¥à®¢ ¡ ®ª ¢ ®ª å | ||||
|                 ld      hl,WinPage              ;вывод номеров банок в окнах | ||||
|                 ld      de,.String+3 | ||||
|                 ld      b,4 | ||||
| .L1             push    bc | ||||
| @ -338,7 +338,7 @@ PrintStrWin: | ||||
|                 push    hl | ||||
|                 ld      l,a | ||||
|                 ld      h,0 | ||||
|                 call    NumToStr8               ;ª®¢¥àâ¨à®¢ ¨¥ ¢ HEX-áâபã | ||||
|                 call    NumToStr8               ;конвертирование в HEX-строку | ||||
|                 inc     de | ||||
|                 inc     de | ||||
|                 inc     de | ||||
| @ -355,15 +355,15 @@ PrintStrWin: | ||||
|                 db      0x16,0x14,0x12,"#04",0 | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]                         <EFBFBD>¥ç âì £«ã¡¨ë á⥪                             [] | ||||
| ;[]                         Печать глубины стека                            [] | ||||
| ;[]=========================================================================[] | ||||
| PrintSPDn: | ||||
|                 ld      a,(StackDown) | ||||
|                 ld      l,a | ||||
|                 ld      a,0x7F | ||||
|                 cp      l                       ;®âà¨æ â¥«ì®¥? | ||||
|                 cp      l                       ;отрицательное? | ||||
|                 jr      nc,.L1 | ||||
|                 res     7,l                     ;á¡à®á¨âì ¬¨ãá | ||||
|                 res     7,l                     ;сбросить минус | ||||
|                 inc     a | ||||
|                 sub     l | ||||
|                 ld      l,a | ||||
| @ -375,7 +375,7 @@ PrintSPDn: | ||||
|                 dec     hl | ||||
|                 ld      bc,3*256+"0" | ||||
|                 ld      (hl),c | ||||
|                 ld      a,(hl)                  ;£ è¥¨¥ ¥§ ç é¨å ã«¥© | ||||
|                 ld      a,(hl)                  ;гашение незначащих нулей | ||||
|                 cp      c | ||||
|                 jr      nz,$+8 | ||||
|                 ld      a,0x20 | ||||
| @ -385,16 +385,16 @@ PrintSPDn: | ||||
|                 ld      a,(StackDown) | ||||
|                 bit     7,a | ||||
|                 jr      z,$+6 | ||||
|                 dec     hl                      ;®âà¨æ â¥«ì®¥ ç¨á«® | ||||
|                 dec     hl                      ;отрицательное число | ||||
|                 ld      a,"-" | ||||
|                 ld      (hl),a | ||||
| 
 | ||||
|                 ld      de,0x140A | ||||
|                 ld      c,Bios.Lp_Set_Place     ;ãáâ ®¢ª  ¯®§¨æ¨¨ ¯¥ç â¨ | ||||
|                 ld      c,Bios.Lp_Set_Place     ;установка позиции печати | ||||
|                 di | ||||
|                 rst     BiosRst | ||||
|                 ld      hl,.String              ;¯¥ç â ¥¬ ï áâப  | ||||
|                 ld      bc,4*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨  áâப¨ | ||||
|                 ld      hl,.String              ;печатаемая строка | ||||
|                 ld      bc,4*256+Bios.Lp_Print_Ln2 ;в рег.B длина строки | ||||
|                 di | ||||
|                 rst     BiosRst | ||||
|                 ei | ||||
| @ -403,12 +403,12 @@ PrintSPDn: | ||||
| .String         ds      4 | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]                          <EFBFBD>¥ç âì § ç¥¨© á⥪                           [] | ||||
| ;[]                          Печать значений стека                          [] | ||||
| ;[]=========================================================================[] | ||||
| PrintStrSP: | ||||
|                 ld      a,(.StrSp)              ;áâப  á ¢¥à訮© á⥪  | ||||
|                 ld      a,(.StrSp)              ;строка с вершиной стека | ||||
|                 inc     a | ||||
|                 jr      z,.L4                   ;¥á«¨ ¢¥à訠 á⥪  ¥ ¯®¯ ¤ ¥â ¢ ¤ ¬¯ | ||||
|                 jr      z,.L4                   ;если вершина стека не попадает в дамп | ||||
|                 ld      hl,(Reg._SP) | ||||
|                 dec     hl | ||||
|                 dec     hl | ||||
| @ -418,39 +418,39 @@ PrintStrSP: | ||||
|                 jr      nz,$-3 | ||||
|                 ld      (StackDump),hl | ||||
| 
 | ||||
| .L4             ld      hl,(StackDump)          ; ç «® ¤ ¬¯  | ||||
|                 ld      de,#1601                ;ª®®à¤¨ âë ¯¥ç â¨ | ||||
| .L4             ld      hl,(StackDump)          ;начало дампа | ||||
|                 ld      de,#1601                ;координаты печати | ||||
|                 ld      a,-1 | ||||
|                 ld      (.StrSp),a | ||||
| 
 | ||||
|                 ld      b,8                     ;ª®«-¢® áâப ¤ ¬¯  | ||||
|                 ld      b,8                     ;кол-во строк дампа | ||||
| .L3             push    bc | ||||
|                 push    de                      ;ª®®à¤¨ âë | ||||
|                 push    de                      ;координаты | ||||
|                 push    hl | ||||
|                 or      a                       ;á¡à®á ä« £  C | ||||
|                 or      a                       ;сброс флага C | ||||
|                 ld      a,b | ||||
|                 ld      bc,(Reg._SP)            ; ¤à¥á ¢¥àè¨ë á⥪  | ||||
|                 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)           ;梥⠢¥àè¨ë á⥪  | ||||
|                 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     ;ãáâ ®¢ª  ¯®§¨æ¨¨ ¯¥ç â¨ | ||||
| .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 ¤«¨  áâப¨ | ||||
| .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                ;¯¥ç âì  ¤à¥á  | ||||
|                 call    PrintReg                ;печать адреса | ||||
|                 pop     hl | ||||
|                 pop     de | ||||
|                 push    de | ||||
| @ -470,7 +470,7 @@ PrintStrSP: | ||||
|                 ld      l,a | ||||
|                 ld      h,c | ||||
| 
 | ||||
|                 call    PrintReg                ;¯¥ç âì § ç¥¨ï á⥪  | ||||
|                 call    PrintReg                ;печать значения стека | ||||
|                 pop     hl | ||||
|                 pop     de | ||||
|                 inc     d | ||||
| @ -482,12 +482,12 @@ PrintStrSP: | ||||
| .StrSp          db      6 | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]                              <EFBFBD>¥ç âì ¤ ¬¯                                [] | ||||
| ;[]                              Печать дампа                               [] | ||||
| ;[]=========================================================================[] | ||||
| PrintDump: | ||||
|                 ld      de,0x160E               ;ª®®à¤¨ âë | ||||
|                 ld      de,0x160E               ;координаты | ||||
|                 ld      hl,(Dump1) | ||||
|                 ld      b,8                     ;ª®«¨ç¥á⢮ áâப | ||||
|                 ld      b,8                     ;количество строк | ||||
|                 push    de | ||||
|                 push    bc | ||||
|                 push    hl | ||||
| @ -497,33 +497,33 @@ PrintDump: | ||||
|                 add     hl,bc | ||||
|                 pop     bc | ||||
|                 pop     de | ||||
|                 inc     d                       ;á«¥¤ãîé ï áâப  | ||||
|                 inc     d                       ;следующая строка | ||||
|                 djnz    $-14 | ||||
|                 ret | ||||
| 
 | ||||
|                 ld      hl,Dump                 ;¢ë¢®¤ ¤ ¬¯  | ||||
| ;                ld      de,0x160E               ;ª®®à¤¨ âë | ||||
|                 ld      b,8                     ;ª®«¨ç¥á⢮ áâப | ||||
|                 ld      hl,Dump                 ;вывод дампа | ||||
| ;                ld      de,0x160E               ;координаты | ||||
|                 ld      b,8                     ;количество строк | ||||
|                 push    de | ||||
|                 push    bc | ||||
|                 ld      c,(hl)                  ;¬« ¤è¨© ¡ ©â  ¤à¥á  | ||||
|                 ld      c,(hl)                  ;младший байт адреса | ||||
|                 inc     hl | ||||
|                 push    hl | ||||
|                 ld      h,(hl)                  ;áâ à訩 ¡ ©â  ¤à¥á  | ||||
|                 ld      h,(hl)                  ;старший байт адреса | ||||
|                 ld      l,c | ||||
|                 call    PrintStrDump | ||||
|                 pop     hl | ||||
|                 inc     hl | ||||
|                 pop     bc | ||||
|                 pop     de | ||||
|                 inc     d                       ;á«¥¤ãîé ï áâப  | ||||
|                 inc     d                       ;следующая строка | ||||
|                 djnz    $-15 | ||||
|                 ret | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]                           <EFBFBD>¥ç âì áâப¨ ¤ ¬¯                            [] | ||||
| ;[] ‚室:  DE - ª®®à¤¨ âë ¯¥ç â¨                                           [] | ||||
| ;[]        HL -  ¤à¥á  ç «  áâப¨                                         [] | ||||
| ;[]                           Печать строки дампа                           [] | ||||
| ;[] Вход:  DE - координаты печати                                           [] | ||||
| ;[]        HL - адрес начала строки                                         [] | ||||
| ;[]=========================================================================[] | ||||
| PrintStrDump: | ||||
|                 push    de | ||||
| @ -566,21 +566,21 @@ PrintStrDump: | ||||
| 
 | ||||
|                 ld      b,16 | ||||
|                 pop     hl | ||||
|                 call    ReplSymNoPrint          ;§ ¬¥  ¥¯¥ç âëå ᨬ¢®«®¢ | ||||
|                 call    ReplSymNoPrint          ;замена непечатных символов | ||||
| 
 | ||||
|                 pop     hl | ||||
|                 pop     de | ||||
|                 push    de | ||||
|                 call    PrintReg                ;¯¥ç âì  ¤à¥á  áâப¨ | ||||
|                 call    PrintReg                ;печать адреса строки | ||||
|                 pop     de | ||||
|                 di | ||||
|                 ld      a,7 | ||||
|                 add     a,e | ||||
|                 ld      e,a | ||||
|                 ld      c,Bios.Lp_Set_Place     ;ãáâ ®¢ª  ¯®§¨æ¨¨ ¯¥ç â¨ | ||||
|                 ld      c,Bios.Lp_Set_Place     ;установка позиции печати | ||||
|                 rst     BiosRst | ||||
|                 ld      hl,.String | ||||
|                 ld      bc,57*256+Bios.Lp_Print_Ln2 ;¢ ॣ.B ¤«¨  áâப¨ | ||||
|                 ld      bc,57*256+Bios.Lp_Print_Ln2 ;в рег.B длина строки | ||||
|                 rst     BiosRst | ||||
|                 ei | ||||
|                 ret | ||||
| @ -589,9 +589,9 @@ PrintStrDump: | ||||
|                 db      "0123456789ABCDEF" | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]                   ‡ ¬¥  ¥¯¥ç âëå ᨬ¢®«®¢ ¢ áâப¥                   [] | ||||
| ;[] ‚室:  B  - ¤«¨  áâப¨                                                [] | ||||
| ;[]        HL -  ¤à¥á  ç «  áâப¨                                         [] | ||||
| ;[]                   Замена непечатных символов в строке                   [] | ||||
| ;[] Вход:  B  - длина строки                                                [] | ||||
| ;[]        HL - адрес начала строки                                         [] | ||||
| ;[]=========================================================================[] | ||||
| ReplSymNoPrint: | ||||
|                 ld      a,(SymbolNoPrint) | ||||
| @ -609,12 +609,12 @@ ReplSymNoPrint: | ||||
|                 ret | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]                  ”®à¬¨à®¢ ¨¥ 16-⨡¨â®£® ç¨á«                         [] | ||||
| ;[] ‚室:  DE -  ¤à¥á ¡ãä¥à                                                 [] | ||||
| ;[]        HL - ç¨á«®                                                       [] | ||||
| ;[]                  Формирование 16-тибитного числа                        [] | ||||
| ;[] Вход:  DE - адрес буфера                                                [] | ||||
| ;[]        HL - число                                                       [] | ||||
| ;[]=========================================================================[] | ||||
| NumToStr16: | ||||
|                 ld      a,(DecHex)              ;á¨á⥬ áç¨á«¥¨ï | ||||
|                 ld      a,(DecHex)              ;систем счисления | ||||
|                 or      a | ||||
|                 jp      nz,ConvDecStr | ||||
| 
 | ||||
| @ -625,7 +625,7 @@ NumToStr16: | ||||
|                 ld      a,h | ||||
|                 call    ConvHexStr | ||||
|                 ex      de,hl | ||||
|                 ld      (hl),e                  ;áâ à訩 ¡ ©â | ||||
|                 ld      (hl),e                  ;старший байт | ||||
|                 inc     hl | ||||
|                 ld      (hl),d | ||||
|                 inc     hl | ||||
| @ -633,7 +633,7 @@ NumToStr16: | ||||
|                 ld      a,c | ||||
|                 call    ConvHexStr | ||||
|                 ex      de,hl | ||||
|                 ld      (hl),e                  ;¬« ¤è¨© ¡ ©â | ||||
|                 ld      (hl),e                  ;младший байт | ||||
|                 inc     hl | ||||
|                 ld      (hl),d | ||||
|                 inc     hl | ||||
| @ -641,12 +641,12 @@ NumToStr16: | ||||
|                 ret | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]                    ”®à¬¨à®¢ ¨¥ 8-¡¨â®£® ç¨á«                          [] | ||||
| ;[] ‚室:  DE -  ¤à¥á ¡ãä¥à                                                 [] | ||||
| ;[]        HL - ç¨á«®                                                       [] | ||||
| ;[]                    Формирование 8-битного числа                         [] | ||||
| ;[] Вход:  DE - адрес буфера                                                [] | ||||
| ;[]        HL - число                                                       [] | ||||
| ;[]=========================================================================[] | ||||
| NumToStr8: | ||||
|                 ld      a,(DecHex)              ;á¨á⥬ áç¨á«¥¨ï | ||||
|                 ld      a,(DecHex)              ;систем счисления | ||||
|                 or      a | ||||
|                 jp      nz,ConvDecStr8 | ||||
| 
 | ||||
| @ -664,9 +664,9 @@ NumToStr8: | ||||
|                 ret | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]                    Š®¢¥àâ¨à®¢ ¨¥ ç¨á«  ¢ HEX-áâà®ªã                   [] | ||||
| ;[] ‚室:  A  - ç¨á«®                                                       [] | ||||
| ;[] ‚ë室: HL - HEX-áâப                                                   [] | ||||
| ;[]                    Конвертирование числа в HEX-строку                   [] | ||||
| ;[] Вход:  A  - число                                                       [] | ||||
| ;[] Выход: HL - HEX-строка                                                  [] | ||||
| ;[]=========================================================================[] | ||||
| ConvHexStr: | ||||
|                 push    af | ||||
| @ -691,9 +691,9 @@ ConvHexStr: | ||||
|                 ret | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]             Š®¢¥àâ¨à®¢ ¨¥ 16-¡¨â®£® ç¨á«  ¢ DEC-áâà®ªã               [] | ||||
| ;[] ‚室:  HL - ç¨á«®                                                       [] | ||||
| ;[]        DE -  ¤à¥á  ç «  DEC-áâப¨                                     [] | ||||
| ;[]             Конвертирование 16-битного числа в DEC-строку               [] | ||||
| ;[] Вход:  HL - число                                                       [] | ||||
| ;[]        DE - адрес начала DEC-строки                                     [] | ||||
| ;[]=========================================================================[] | ||||
| ConvDecStr: | ||||
|                 ld      bc,-10000 | ||||
| @ -744,15 +744,15 @@ ConvDecStr8_1: | ||||
|                 ret | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]                           <EFBFBD>à®à¨á®¢ª  ªãàá®à                             [] | ||||
| ;[] ‚室:  B  - ¤«¨  ªãàá®à                                                [] | ||||
| ;[]        HL - ª®®à¤¨ âë ªãàá®à                                           [] | ||||
| ;[]                           Прорисовка курсора                            [] | ||||
| ;[] Вход:  B  - длина курсора                                               [] | ||||
| ;[]        HL - координаты курсора                                          [] | ||||
| ;[]=========================================================================[] | ||||
| CursorSet: | ||||
|                 ld      (CursorRes+1),hl | ||||
|                 ex      de,hl | ||||
|                 ld      l,b                     ;à §¬¥à ¯® ¢¥à⨪ «¨ | ||||
|                 ld      h,1                     ;à §¬¥à ¯® £®à¨§®â «¨ | ||||
|                 ld      l,b                     ;размер по вертикали | ||||
|                 ld      h,1                     ;размер по горизонтали | ||||
|                 ld      (CursorRes+4),hl | ||||
|                 ld      ix,.Buffer | ||||
|                 push    de | ||||
| @ -761,7 +761,7 @@ CursorSet: | ||||
|                 push    bc | ||||
| 	ifdef	D_PRINTCH_BIOS | ||||
|                 xor     a | ||||
|                 ld      c,Bios.Win_Copy_Win     ;ª®¯¨à®¢ ¨¥ ¢ ¡ãä¥à | ||||
|                 ld      c,Bios.Win_Copy_Win     ;копирование в буфер | ||||
|                 di | ||||
|                 rst     BiosRst | ||||
|                 ei | ||||
| @ -772,15 +772,15 @@ CursorSet: | ||||
| 		rst	DssRst | ||||
| 	endif | ||||
| 
 | ||||
|                 pop     bc                      ;¢ B ¤«¨  ªãàá®à  | ||||
|                 pop     bc                      ;в B длина курсора | ||||
|                 pop     hl | ||||
|                 push    hl | ||||
|                 inc     hl | ||||
|                 ld      a,(hl)                  ;梥â ᨬ¢®«®¢ | ||||
|                 ld      a,(hl)                  ;цвет символов | ||||
|                 ld      (CursorRes.L1+1),a | ||||
|                 ld      a,(Color.Cursor) | ||||
| .L1             ld      (hl),a | ||||
|                 inc     hl                      ;ª ¡ ©âã æ¢¥â  | ||||
|                 inc     hl                      ;к байту цвета | ||||
|                 inc     hl | ||||
|                 djnz    .L1 | ||||
| 
 | ||||
| @ -789,7 +789,7 @@ CursorSet: | ||||
|                 pop     de | ||||
| 	ifdef	D_PRINTCH_BIOS | ||||
|                 xor     a | ||||
|                 ld      c,Bios.Win_Restore_Win  ;¢ë¢®¤ ªãàá®à    íªà  | ||||
|                 ld      c,Bios.Win_Restore_Win  ;вывод курсора на экран | ||||
|                 di | ||||
|                 rst     BiosRst | ||||
|                 ei | ||||
| @ -801,115 +801,115 @@ CursorSet: | ||||
| 	endif | ||||
|                 ret | ||||
| 
 | ||||
| .Buffer         ds      22*2                    ;max ¤«¨  ªãàá®à  | ||||
| .Buffer         ds      22*2                    ;max длина курсора | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]                    ‚®áâ ®¢«¥¨¥ íªà   ¯®¤ ªãàá®à®¬                    [] | ||||
| ;[]                    Востановление экрана под курсором                    [] | ||||
| ;[]=========================================================================[] | ||||
| CursorRes: | ||||
|                 ld      de,0                    ;ª®®à¤¨ âë | ||||
|                 ld      hl,0                    ;à §¬¥à | ||||
|                 ld      b,l                     ;¤«¨  | ||||
|                 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                      ;ª ¡ ©âã æ¢¥â  | ||||
| .L1             ld      a,0                     ;цвет | ||||
|                 inc     hl                      ;к байту цвета | ||||
|                 jr      CursorSet.L1 | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]                 —⥨¥ ¡ ©â  ¨§ ¯ ¬ïâ¨ á ¯à®¢¥àª®©  ¤à¥á                [] | ||||
| ;[] ‚室:  BC ¨«¨ HL -  ¤à¥á ¢ ¯ ¬ï⨠                                      [] | ||||
| ;[] ‚ë室: A  - áç¨â ë© ¡ ©â                                              [] | ||||
| ;[]                 Чтение байта из памяти с проверкой адреса               [] | ||||
| ;[] Вход:  BC или HL - адрес в памяти                                       [] | ||||
| ;[] Выход: A  - считанный байт                                              [] | ||||
| ;[]=========================================================================[] | ||||
| Ld_a_bc: | ||||
|                 ld      a,11000000b            ;¯à®¢¥àª  ¤¨ ¯ §®  | ||||
|                 ld      a,11000000b            ;проверка диапазона | ||||
|                 and     b | ||||
|                 jr      z,.L1                   ;¢ 0-¬ ®ª¥ | ||||
|                 cp      10000000b              ;¢® 2-®¬ ®ª¥ | ||||
|                 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                     ;¢®áâ  ¢«¨¢ ¥¬  ¤à¥á | ||||
|                 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                     ;ª®à४â¨à㥬  ¤à¥á | ||||
| .L1             ld      a,(WinPage)             ;номер банки в 0-м | ||||
|                 out     (EmmWin.P3),a           ;в третье окно ее | ||||
|                 set     6,b                     ;корректируем адрес | ||||
|                 set     7,b | ||||
|                 ld      a,(bc)                  ;ç¨â ¥¬ ¡ ©â | ||||
|                 res     6,b                     ;¢®áâ  ¢«¨¢ ¥¬  ¤à¥á | ||||
|                 ld      a,(bc)                  ;читаем байт | ||||
|                 res     6,b                     ;востанавливаем адрес | ||||
|                 res     7,b | ||||
|                 jr      Ld_a_hl.L1 | ||||
| Ld_a_hl: | ||||
|                 ld      a,11000000b            ;¯à®¢¥àª  ¤¨ ¯ §®  | ||||
|                 ld      a,11000000b            ;проверка диапазона | ||||
|                 and     h | ||||
|                 jr      z,.L2                   ;¢ 0-¬ ®ª¥ | ||||
|                 cp      10000000b              ;¢® 2-®¬ ®ª¥ | ||||
|                 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                     ;¢®áâ  ¢«¨¢ ¥¬  ¤à¥á | ||||
|                 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                     ;ª®à४â¨à㥬  ¤à¥á | ||||
| .L2             ld      a,(WinPage)             ;номер банки в 0-м окне | ||||
|                 out     (EmmWin.P3),a           ;в третье окно ее | ||||
|                 set     6,h                     ;корректируем адрес | ||||
|                 set     7,h | ||||
|                 ld      a,(hl)                  ;ç¨â ¥¬ ¡ ©â | ||||
|                 res     6,h                     ;¢®áâ  ¢«¨¢ ¥¬  ¤à¥á | ||||
|                 ld      a,(hl)                  ;читаем байт | ||||
|                 res     6,h                     ;востанавливаем адрес | ||||
|                 res     7,h | ||||
| .L1             push    af | ||||
|                 ld      a,(WinPage+3)           ;®¬¥à ¡ ª¨ ¨§ 3-£® ®ª  | ||||
|                 out     (EmmWin.P3),a           ;¢®áâ  ¢«¨¢ ¥¬ | ||||
|                 ld      a,(WinPage+3)           ;номер банки из 3-го окна | ||||
|                 out     (EmmWin.P3),a           ;востанавливаем | ||||
|                 pop     af | ||||
|                 ret | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]                 ‡ ¯¨áì ¡ ©â  ¢ ¯ ¬ïâì á ¯à®¢¥àª®©  ¤à¥á                 [] | ||||
| ;[] ‚室:  HL -  ¤à¥á ¢ ¯ ¬ï⨠                                             [] | ||||
| ;[]        A  - § ¯¨á뢠¥¬ë© ¡ ©â                                           [] | ||||
| ;[]                 Запись байта в память с проверкой адреса                [] | ||||
| ;[] Вход:  HL - адрес в памяти                                              [] | ||||
| ;[]        A  - записываемый байт                                           [] | ||||
| ;[]=========================================================================[] | ||||
| Ld_hl_a: | ||||
|                 push    af | ||||
|                 ld      a,11000000b            ;¯à®¢¥àª  ¤¨ ¯ §®  | ||||
|                 ld      a,11000000b            ;проверка диапазона | ||||
|                 and     h | ||||
|                 jr      z,.L2                   ;¢ 0-®¬ ®ª¥ | ||||
|                 cp      10000000b              ;¢® 2-®¬ ®ª¥? | ||||
|                 jr      z,.L2                   ;в 0-ом окне | ||||
|                 cp      10000000b              ;во 2-ом окне? | ||||
|                 jr      z,.L1 | ||||
|                 pop     af | ||||
|                 ld      (hl),a                  ;§ ¯¨á «¨ ¡ ©â, ¥á«¨ ¥â | ||||
|                 ld      (hl),a                  ;записали байт, если нет | ||||
|                 ret | ||||
| .L1             ld      a,(WinPage+2)           ;®¬¥à ¡ ª¨ ¯®¤ ®â« ¤ç¨ª®¬ | ||||
|                 out     (EmmWin.P3),a           ;¢ âà¥âì¥ ®ª® ¥¥ | ||||
|                 set     6,h                     ;ª®à४â¨à㥬  ¤à¥á | ||||
| .L1             ld      a,(WinPage+2)           ;номер банки под отладчиком | ||||
|                 out     (EmmWin.P3),a           ;в третье окно ее | ||||
|                 set     6,h                     ;корректируем адрес | ||||
|                 pop     af | ||||
|                 ld      (hl),a                  ;¯¨è¥¬ ¡ ©â | ||||
|                 ld      (hl),a                  ;пишем байт | ||||
|                 jr      .L3 | ||||
| .L2             ld      a,(WinPage)             ;®¬¥à ¡ ª¨ ¢ 0-®¬ | ||||
|                 out     (EmmWin.P3),a           ;¢ âà¥âì¥ ®ª® ¥¥ | ||||
|                 set     6,h                     ;ª®à४â¨à㥬  ¤à¥á | ||||
| .L2             ld      a,(WinPage)             ;номер банки в 0-ом | ||||
|                 out     (EmmWin.P3),a           ;в третье окно ее | ||||
|                 set     6,h                     ;корректируем адрес | ||||
|                 set     7,h | ||||
|                 pop     af | ||||
|                 ld      (hl),a                  ;¯¨è¥¬ ¡ ©â | ||||
|                 res     7,h                     ;¢®áâ  ¢«¨¢ ¥¬  ¤à¥á | ||||
|                 ld      (hl),a                  ;пишем байт | ||||
|                 res     7,h                     ;востанавливаем адрес | ||||
| .L3             res     6,h | ||||
|                 ld      a,(WinPage+3)           ;®¬¥à ¡ ª¨ ¨§ 3-£® ®ª  | ||||
|                 out     (EmmWin.P3),a           ;¢®áâ  ¢«¨¢ ¥¬ | ||||
|                 ld      a,(WinPage+3)           ;номер банки из 3-го окна | ||||
|                 out     (EmmWin.P3),a           ;востанавливаем | ||||
|                 ret | ||||
| 
 | ||||
| ;[]=========================================================================[] | ||||
| ;[]            Ž¯à¥¤¥«¥¨¥ ¯à¨ ¤«¥¦®á⨠ ¤à¥á  ®¡« á⨠¯ ¬ï⨠            [] | ||||
| ;[] ‚室:  HL - ¨¦¨©  ¤à¥á ®¡« á⨠¯ ¬ï⨠                                [] | ||||
| ;[]        DE - ¢¥à娩  ¤à¥á ®¡« á⨠¯ ¬ï⨠                               [] | ||||
| ;[]        BC -  ¤à¥á                                                       [] | ||||
| ;[] ‚ë室: ä« £ C  -  ¤à¥á ¥ ¯à¨ ¤«¥¦¨â ®¡« á⨠¯ ¬ï⨠                   [] | ||||
| ;[]        ä« £ NC -  ¤à¥á ¯à¨ ¤«¥¦¨â ®¡« á⨠¯ ¬ï⨠                      [] | ||||
| ;[]            Определение принадлежности адреса области памяти             [] | ||||
| ;[] Вход:  HL - нижний адрес области памяти                                 [] | ||||
| ;[]        DE - верхний адрес области памяти                                [] | ||||
| ;[]        BC - адрес                                                       [] | ||||
| ;[] Выход: флаг C  - адрес не принадлежит области памяти                    [] | ||||
| ;[]        флаг NC - адрес принадлежит области памяти                       [] | ||||
| ;[]=========================================================================[] | ||||
| AdrArea: | ||||
|                 or      a | ||||
							
								
								
									
										655
									
								
								windows.asm
									
									
									
									
									
								
							
							
						
						
									
										655
									
								
								windows.asm
									
									
									
									
									
								
							| @ -1,349 +1,370 @@ | ||||
| 
 | ||||
| ;IX	- WINDOW DESCRIPTOR | ||||
| ;+0	- FLAG: | ||||
| ; ------------------------------------------------------ | ||||
| ; 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 | ||||
| ; +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 | ||||
| 
 | ||||
| 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 | ||||
| 			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) | ||||
| 			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		0x7F | ||||
| 			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 | ||||
| 			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 | ||||
| 			LD		E,(IX+1) | ||||
| 			LD		D,(IX+2) | ||||
| 			LD		L,(IX+3) | ||||
| 			LD		H,1 | ||||
| 			LD		A,(IX+5) | ||||
| 			RRCA | ||||
| 			RRCA | ||||
| 			RRCA | ||||
| 			RRCA | ||||
| 			AND		0x7F | ||||
| 			LD		B,A | ||||
| 			LD		A,0x20 | ||||
| 			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  | ||||
| ; ------------------------------------------------------ | ||||
| ; Процедура освобождения	прямоугольной площади окна | ||||
| ; На вход: IX - адрес описателя | ||||
| ; ------------------------------------------------------ | ||||
| Rectang	 | ||||
| 			LD		E,(IX+1) | ||||
| 			LD		D,(IX+2) | ||||
| 			LD		H,(IX+4) | ||||
| 			LD		L,(IX+3) | ||||
| 			LD		B,(IX+5) | ||||
| 			LD		A,0x20 | ||||
| 			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 | ||||
| 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 | ||||
| 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 | ||||
| FramHor+*	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 | ||||
| FramVer+*	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 | ||||
| 			LD		B,0 | ||||
| NextMnuItem | ||||
| 	LD	A,(HL) | ||||
| 	INC	HL | ||||
| 	AND	A | ||||
| 	RET	Z | ||||
| 	INC	B | ||||
| 	JR	NextMnuItem | ||||
| 			LD		A,(HL) | ||||
| 			INC		HL | ||||
| 			AND		A | ||||
| 			RET		Z | ||||
| 			INC		B | ||||
| 			JR		NextMnuItem | ||||
| 
 | ||||
| 
 | ||||
| ;Ïðîðèñîâêà îêíà è îáðàáîòêà äèàëîãà | ||||
| ; ------------------------------------------------------ | ||||
| ; Прорисовка окна и обработка диалога | ||||
| ; ------------------------------------------------------ | ||||
| DialogWindow | ||||
| 	call	Windows | ||||
| 	inc	hl | ||||
| ;	jp	WinDialog | ||||
| 			call	Windows | ||||
| 			inc		hl | ||||
| ;			jp		WinDialog | ||||
| 
 | ||||
| ;ÏÏ îáðàáîòêè äèàëîãîâîãî îêíà | ||||
| ;Dialogs | ||||
| ;+0 (1)	-	Count of Items | ||||
| ;+1 (N)	-	Item Descriptor | ||||
| ;Descriptor | ||||
| ; ------------------------------------------------------ | ||||
| ; ПП обработки диалогового окна | ||||
| ; 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 | ||||
| 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 | ||||
| .DialogAdr+*	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		DN_KEY								; <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		UP_KEY								; <Up> | ||||
| 			jr		nz,.Lp5 | ||||
| .LpUp		ld		a,(SelectedItem) | ||||
| 			and		a | ||||
| 			jr		z,.Lp2 | ||||
| 			dec		a | ||||
| 			jr		.Lp4 | ||||
| .Lp5		cp		LEFT_KEY							; <Left> | ||||
| 			jr		z,.LpUp | ||||
| 			cp		RIGHT_KEY							; <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 | ||||
| 			ld		a,e									; ASCII - код | ||||
| 			cp		ENTER_KEY							; <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 | ||||
| 
 | ||||
| ;Ordinary frame | ||||
| 			jp	(hl) | ||||
| DlgItemsCnt | ||||
| 			DB	0 | ||||
| SelectedItem | ||||
| 			DB	0 | ||||
| 
 | ||||
| ;    TYPE, X, Y,  L,H,COLOR | ||||
| STANDART | ||||
|         	DEFB    5,10,13,0x20,6,7 | ||||
| 
 | ||||
| ; Ordinary frame | ||||
| FrameType1 | ||||
| 	DB	#DA,#BF,#D9,#C0,#C4,#B3 | ||||
| ;Double frame | ||||
| 			DB	0xDA,0xBF,0xD9,0xC0,0xC4,0xB3 | ||||
| ; Double frame | ||||
| FrameType2 | ||||
| 	DB	#C9,#BB,#BC,#C8,#CD,#BA | ||||
| 			DB	0xC9,0xBB,0xBC,0xC8,0xCD,0xBA | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 boykovra
						boykovra