////////////////////////////////////////////////////////////////////// ; Функция #38. Подключение страницы памяти. ; ; вход: A - идентиф. блока памяти ; B - номер страницы в блоке (0,1,2,..) ; H - биты 6 и 7 задают номер окна, в которое будет подкл. страница ; выход: A - номер страницы, если CF=0 ; A - код ошибки, если CF=1 ; if B = 0FFh, then logical page number got from DE ////////////////////////////////////////////////////////////////////// SETWIN: LD C,A LD A,H AND %1100'0000 JR NZ,.no_error OR %0100'0000 .no_error: RRCA OR %100'0010 LD H,A ;SLOT number LD A,C .ALL: LD C,BIOS.GetMemPage EX DE,HL RST ToBIOS EX DE,HL RET C LD C,H ;SLOT number IN B,(C) OUT (C),A LD A,B RET ; SETWIN: BIT 7,H ; if #8000 or high? ; JR Z,SETWIN1 ; no, go to open in SLOT1 ; BIT 6,H ; if #C000 or high? ; JR Z,SETWIN2 ; no, go to open in SLOT2 ; JR SETWIN3 ; yes, go to open in SLOT3 ////////////////////////////////////////////////////////////////////// ; Функция #39. Подключение страницы памяти в первое окно. ; ; вход: A - идентиф. блока памяти ; B - номер страницы в блоке (0,1,2,..) ; выход: A - номер страницы, если CF=0 ; A - код ошибки, если CF=1 ////////////////////////////////////////////////////////////////////// SETWIN1: LD H,SLOT1 JR SETWIN.ALL ; SETWIN1: LD C,BIOS.GetMemPage ; EX DE,HL ; RST ToBIOS ; EX DE,HL ; RET C ; LD C,SLOT1 ; IN B,(C) ; OUT (C),A ; LD A,B ; RET ////////////////////////////////////////////////////////////////////// ; Функция #3A. Подключение страницы памяти во второе окно. ; ; вход: A - идентиф. блока памяти ; B - номер страницы в блоке (0,1,2,..) ; выход: A - номер страницы, если CF=0 ; A - код ошибки, если CF=1 ////////////////////////////////////////////////////////////////////// SETWIN2: LD H,SLOT2 JR SETWIN.ALL ; SETWIN2 LD C,BIOS.GetMemPage ; EX DE,HL ; RST ToBIOS ; EX DE,HL ; RET C ; LD C,SLOT2 ; IN B,(C) ; OUT (C),A ; LD A,B ; RET ////////////////////////////////////////////////////////////////////// ; Функция #3B. Подключение страницы памяти в третье окно. ; ; вход: A - идентиф. блока памяти ; B - номер страницы в блоке (0,1,2,..) ; выход: A - номер страницы, если CF=0 ; A - код ошибки, если CF=1 ////////////////////////////////////////////////////////////////////// SETWIN3: LD H,SLOT3 JR SETWIN.ALL ; SETWIN3: LD C,BIOS.GetMemPage ; EX DE,HL ; RST ToBIOS ; EX DE,HL ; RET C ; LD C,SLOT3 ; IN B,(C) ; OUT (C),A ; LD A,B ; RET