mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
73 lines
1.1 KiB
NASM
73 lines
1.1 KiB
NASM
//////////////////////////////////////////////////////////////////////
|
|
; ”ãªæ¨ï #3F. ˆ§¬¥¥¨¥ ¡«®ª ¯ ¬ïâ¨.
|
|
;
|
|
; ¢å®¤: A - ¨¤¥â¨ä¨ª â®à ¡«®ª ¯ ¬ïâ¨
|
|
; B - ®¢ë© à §¬¥à ¡«®ª
|
|
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
|
//////////////////////////////////////////////////////////////////////
|
|
SETMEM: LD E,A
|
|
LD D,#00
|
|
;LD HL,MEMTAB
|
|
LD HL,CORE_BUFFERS.MemoryTable ; ¬ áᨢ ᯨ᪠¢ë¤¥«. áâà ¨æ
|
|
ADD HL,DE
|
|
LD A,(TASK)
|
|
CP (HL)
|
|
LD A,DSS_Error.sys.INVALID_MEMORY_HND
|
|
SCF
|
|
RET NZ
|
|
LD D,B
|
|
PUSH DE
|
|
LD A,E
|
|
CALL .SIZEBLK
|
|
POP DE
|
|
LD A,DSS_Error.sys.INVALID_MEMORY_HND
|
|
RET C
|
|
LD A,B
|
|
CP D
|
|
RET Z
|
|
JR C,.INCMEM
|
|
; DECMEM
|
|
LD B,D
|
|
LD A,E
|
|
LD C,BIOS.DivMemBlocks
|
|
RST ToBIOS
|
|
LD A,B
|
|
LD C,BIOS.FreeMem
|
|
RST ToBIOS
|
|
XOR A
|
|
RET
|
|
; „®¡ ¢¨âì áâà ¨æ ¯ ¬ï⨠ª ¡«®ªã
|
|
.INCMEM:
|
|
LD A,D
|
|
SUB B
|
|
LD B,A
|
|
LD C,E
|
|
PUSH BC
|
|
LD C,BIOS.GetMem
|
|
RST ToBIOS
|
|
POP BC
|
|
LD B,A
|
|
LD A,DSS_Error.sys.NOT_ENOUGH_MEMORY
|
|
RET C
|
|
LD A,C
|
|
LD C,BIOS.MergeMemBlocks
|
|
RST ToBIOS
|
|
XOR A
|
|
RET
|
|
;
|
|
.SIZEBLK:
|
|
LD B,#FF
|
|
LD C,A
|
|
.loop: INC B
|
|
PUSH BC
|
|
LD A,C
|
|
LD C,BIOS.GetMemPage
|
|
RST ToBIOS
|
|
POP BC
|
|
JR NC,.loop
|
|
OR A
|
|
SCF
|
|
RET Z
|
|
XOR A
|
|
RET
|
|
; |