-   
- ;LAST UPDATE: 12.09.2022 savelij 
-   
- ;ОПИСАТЕЛЬ ОКНА (АДРЕС В IX) 
- ;+00 X КООРДИНАТА 
- ;+01 Y КООРДИНАТА 
- ;+02 V ВЫСОТА 
- ;+03 H ШИРИНА 
- ;+04 C ЦВЕТ 
- ;+05 C ЦВЕТ КУРСОРА 
- ;+06 F ФЛАГОВЫЙ 
- ;+07 N НОМЕР ПУНКТА В ОКНЕ 
- ;  БИТ 7-0=БАЙТЫ 8-9 ТЕКУЩИЙ ПУНКТ МЕНЮ, 
- ;        1=БАЙТЫ 8-9 АДРЕС ХРАНЕНИЯ 
- ;+08 | ТЕКУЩИЙ 
- ;+09 | ПУНКТ МЕНЮ 
- ;+0A : КОЛИЧЕСТВО 
- ;+0B : ПУНКТОВ МЕНЮ 
- ;+0C | АДРЕС 
- ;+0D | ТЕКСТА 
- ;+0E : СПИСОК АДРЕСОВ 
- ;+0F : ПОДПРОГРАММ 
- ;+10 | АДРЕС СПИСКА АКТИВНЫХ 
- ;+11 | ЗОН ДЛЯ МЫШИ 
- ;+12 : АДРЕС СПИСКА 
- ;+13 : ГОРЯЧИХ КЛАВИШ 
-   
- ;ФОРМАТ ФЛАГОВОГО БАЙТА ОКНА 
- ;IX+6 
- ;7-0-НЕТ, 1-ЕСТЬ НИЖНИЙ ЗАГОЛОВОК 
- ;6-0-С РАМКОЙ,1-БЕЗ РАМКИ 
- ;5-0-НЕТ, 1-ЕСТЬ ВЕРХНИЙ ЗАГОЛОВОК 
- ;4-0-НЕТ, 1-ЕСТЬ ТЕКСТ 
- ;3 
- ;2- 
- ;1- 
- ;0- 
-   
- ;РАСКЛАДКА БАЙТ ВЫДЕЛЕНИЙ 
- ;+0 ФЛАГОВЫЙ 
- ;    7 ПРИ АКТИВНОСТИ УСТАНОВЛЕН 
- ;    6 УСТАНОВЛЕН, НЕ ВЫДЕЛЯЕТСЯ 
- ;    5 УСТАНОВЛЕН, ВЫЗОВ ВЕКТОРА 
- ;    4 
- ;    3 \ 
- ;    2  } ФОРМА КУРСОРА 
- ;    1  } ПРИ ПОПАДАНИИ 
- ;    0 / 
- ;+1 X КООРДИНАТА 
- ;+2 Y КООРДИНАТА 
- ;+3 V ВЫСОТА 
- ;+4 H ШИРИНА 
- ;+5 K КОД КЛАВИШИ 
-   
- ;[ГЕНЕРАЦИЯ ТАБЛИЦЫ АДРЕСОВ ЛИНИЙ ZX ЭКРАНА] 
- ADRTSC          LD B,0X18 
-                 LD DE,0X4000 
-                 LD HL,BUFTSC 
- ADRTSC2         LD C,8 
- ADRTSC1         LD (HL),E 
-                 INC HL 
-                 LD (HL),D 
-                 INC HL 
-                 INC D 
-                 DEC C 
-                 JR NZ,ADRTSC1 
-                 LD A,0X20 
-                 ADD A,E 
-                 LD E,A 
-                 JR C,ADRTSC3 
-                 LD A,D 
-                 SUB 8 
-                 LD D,A 
- ADRTSC3         DJNZ ADRTSC2 
-                 RET 
-   
- ;[CLS] 
- CLS             LD HL,0 
-                 LD D,H 
-                 LD E,L 
-                 ADD HL,SP 
-                 LD B,0X60 
-                 LD SP,0X5800 
- CLS1            REPT 0X20 
-                 PUSH DE 
-                 ENDM 
-                 DJNZ CLS1 
-                 LD SP,HL 
- CLSSCR          LD HL,0 
-                 LD D,A 
-                 LD E,A 
-                 ADD HL,SP 
-                 LD SP,0X5B00 
-                 LD B,12 
- CLS2            REPT 0X20 
-                 PUSH DE 
-                 ENDM 
-                 DJNZ CLS2 
-                 LD SP,HL 
-                 RRCA 
-                 RRCA 
-                 RRCA 
-                 AND 7 
-                 OUT (0XFE),A 
-                 RET 
-   
- ;[СЛЕДУЮЩАЯ СТРОКА ZX ЭКРАНА] 
- INC_H           INC H 
-                 LD A,H 
-                 AND 7 
-                 RET NZ 
-                 LD A,L 
-                 ADD A,0X20 
-                 LD L,A 
-                 RET C 
- UMEHL1          LD A,H 
-                 SUB 8 
-                 LD H,A 
-                 RET      
-   
- ;[ПРЕДЫДУЩАЯ СТРОКА ZX ЭКРАНА] 
- DEC_H           DEC H 
-                 LD A,H 
-                 AND 7 
-                 CP 7 
-                 RET NZ 
-                 LD A,L 
-                 SUB 0X20 
-                 LD L,A 
-                 RET C 
- UVEHL1          LD A,H 
-                 ADD A,8 
-                 LD H,A 
-                 RET 
-   
- UVEHL           LD A,0X20 
-                 ADD A,L 
-                 LD L,A 
-                 RET NC 
-                 JR UVEHL1 
-   
- UMEHL           LD A,L 
-                 SUB 0X20 
-                 LD L,A 
-                 RET NC 
-                 JR UMEHL1 
-   
- ;[РИСОВАНИЕ ОКНА (GLUK)] 
- DRAWWIN         LD C,(IX+_X_COORD)              ;X 
-                 LD B,(IX+_Y_COORD)              ;Y 
-                 EX DE,HL 
-                 LD A,C 
-                 ADD A,A 
-                 ADD A,A 
-                 ADD A,A 
-                 LD C,A 
-                 LD A,B 
-                 ADD A,A 
-                 ADD A,A 
-                 ADD A,A 
-                 CALL 0X22B0 
-                 EX DE,HL 
-                 PUSH IX 
-                 POP HL 
-                 INC HL 
-                 INC HL 
-                 INC HL 
-                 LD B,(HL)               ;ШИРИНА-1 
-                 INC HL 
-                 DEC B 
-                 LD A,(HL) 
-                 INC HL 
-                 LD (COL_SYM),A          ;ЦВЕТ ОКНА 
-                 PUSH DE 
-                 LD C,B 
-                 CALL PR32 
-                 DEC C 
-                 JR NZ,$-4 
-                 CALL PR3232 
-                 POP DE 
-                 PUSH DE 
-                 CALL NXCOLLN    ;C=0 
-                 CALL PRTX 
-                 INC HL 
-                 PUSH BC 
-                 CALL PR32 
-                 DJNZ $-3 
-                 POP BC 
-                 LD A,C                  ;НАПЕЧАТАНО СТРОК 
-                 ADD A,A 
-                 ADD A,A 
-                 ADD A,A 
-                 ADD A,6+8 
-                 LD D,A 
-                 LD A,B 
-                 ADD A,A 
-                 ADD A,A 
-                 ADD A,A 
-                 ADD A,0X10*WIDE+0X0D-0X10 
-                 LD E,A 
-                 POP HL 
-                 INC H 
-                 LD C,0X40 
-                 PUSH BC 
-                 PUSH HL 
-                 LD B,E 
-                 CALL HORLN 
-                 LD B,D 
-                 CALL VERLN 
-                 POP HL 
-                 POP BC 
-                 LD B,D 
-                 CALL VERLN 
-                 LD B,E 
- HORLN           LD A,(HL) 
- HORLN0          OR C 
-                 RRC C 
-                 JR NC,$+5 
-                 LD (HL),A 
-                 INC L 
-                 LD A,(HL) 
-                 DJNZ HORLN0 
-                 OR C 
-                 LD (HL),A 
-                 RET 
-          
- VERLN0          CALL INC_H 
- VERLN           LD A,(HL) 
-                 OR C 
-                 LD (HL),A 
-                 DJNZ VERLN0 
-                 RET 
-          
- NXCOLLN         LD A,E 
-                 ADD A,0X20 
-                 LD E,A 
-                 RET NC 
-                 LD A,D 
-                 ADD A,8 
-                 LD D,A 
-                 RET 
-          
- PRSP0           LD A,(HL) 
-                 INC HL 
-                 PUSH DE 
-                 PUSH HL 
-                 LD H,(HL) 
-                 LD L,A 
-                 CALL PRT_HL_ 
-                 POP HL 
-                 POP DE 
-                 INC HL 
-                 CALL NXCOLLN 
-                 DJNZ PRSP0 
-                 RET      
-   
- ;[ПЕЧАТЬ В HEX 16-ГО ЧИСЛА] 
- PRT_HL_         LD A,H 
-                 CALL PRT_A_ 
-                 LD A,L 
- ;[ПЕЧАТЬ В HEX 8-ГО ЧИСЛА] 
- PRT_A_          PUSH AF 
-                 RRCA 
-                 RRCA 
-                 RRCA 
-                 RRCA 
-                 CALL $+4 
-                 POP AF 
-                 AND 0X0F 
-                 CP 0X0A 
-                 CCF 
-                 ADC A,"0" 
-                 DAA 
- PRSN            AND 0X7F 
- PRSYM           CP 0X20 
-                 JR NC,PRSYM1 
-                 CP 0X80 
-                 JR C,PRSYM1 
-                 LD A,"." 
- PRSYM1          PUSH DE 
-                 PUSH BC 
-                 PUSH HL 
-                 ADD A,A 
-                 LD L,A 
-                 LD H,0X0F 
-                 ADD HL,HL 
-                 ADD HL,HL 
-                 LD B,4 
- PRSN0           LD A,(HL) 
-                 RRCA 
-                 OR (HL) 
-                 INC L 
-                 EX DE,HL 
-                 LD (HL),A 
-                 INC H 
-                 EX DE,HL 
-                 LD A,(HL) 
-                 RRCA 
-                 OR (HL) 
-                 INC L 
-                 EX DE,HL 
-                 LD (HL),A 
-                 INC H 
-                 EX DE,HL 
-                 DJNZ PRSN0 
-                 POP HL 
- PR32Q           POP BC 
-                 LD A,D 
-                 RRCA 
-                 RRCA 
-                 RRCA 
-                 ADD A,0X4F 
-                 LD D,A 
-                 LD A,7 
- COL_SYM         EQU $-1         ;ЦВЕТ СИМВОЛА 
-                 LD (DE),A 
-                 POP DE 
-                 INC E 
-                 RET NZ 
-                 LD A,D 
-                 ADD A,8 
-                 LD D,A 
-                 RET 
-   
- PR3232          CALL PR32 
- PR32            PUSH DE 
-                 PUSH BC 
-                 XOR A 
-                 REPT 4 
-                 LD (DE),A 
-                 INC D 
-                 LD (DE),A 
-                 INC D 
-                 ENDM 
-                 JR PR32Q 
-   
- PRCR            CALL PR3232 
- PRCRDE          LD DE,0 
-                 CALL NXCOLLN 
-                 INC C 
- PRTX            LD (PRCRDE+1),DE 
-                 CALL PR3232 
- PRTX0           LD A,(HL) 
-                 CP 0XFF 
-                 RET Z 
-                 CALL PRSN 
-                 BIT 7,(HL) 
-                 INC HL 
-                 JR Z,PRTX0 
-                 JR PRCR 
-   
- ;[ПЕЧАТЬ ТЕКСТА] 
- PRINT_MSG       PUSH HL 
-                 LD A,D 
-                 CALL 0X0E9E             ;HL=ADRLN,D:=A 
-                 LD A,E 
-                 ADD A,L 
-                 LD L,A 
-                 EX DE,HL 
-                 POP HL 
- PRTXT           LD A,(HL) 
-                 INC HL 
-                 CP 0XFF 
-                 RET Z 
-                 CALL PRSN 
-                 JR PRTXT 
-   
- REST_COLOR      LD DE,(COL_CURSOR) 
-                 LD HL,COLBUF 
-                 LD C,(IX+_H_SIZE) 
-                 BIT 2,(IY+55)           ;ФАЙЛОВ БОЛЬШЕ ВЫСОТЫ ОКНА? 
-                 JR Z,RESTCOL1 
-                 DEC C                   ;ЦВЕТНАЯ ПОЛОСКА НА 1 КОРОЧЕ 
- RESTCOL1        LD B,0 
-                 LDIR 
-                 RET 
-   
- REST_COLCURS    LD DE,(COL_CURSOR) 
-                 LD HL,COLBUF 
-                 LD C,(IX+_H_SIZE) 
-                 LD B,0 
-                 LDIR 
-                 RET 
-   
- ;[РИСОВАЛКА ЦВЕТНОЙ ПОЛОСКИ В МЕНЮ] 
- COLOR_CURSOR    LD DE,0 
- COL_CURSOR      EQU $-2 
-                 LD HL,COLBUF 
-                 LD C,(IX+_H_SIZE) 
- COLCURS1        LD B,0 
-                 LDIR 
- SET_ADR_ATR     LD A,(IX+_NUM_PKT) 
-                 LD B,A 
-                 LD H,(IX) 
-                 LD L,(IX+_Y_COORD) 
-                 ADD A,L 
-                 LD L,A 
-                 INC L 
-                 CALL ADRDIS 
-                 EX DE,HL 
-                 LD (COL_CURSOR),HL      ;ПОЛОЖИЛИ АДРЕС ДЛЯ ВОССТАНОВЛЕНИЯ ЦВЕТА 
-                 LD DE,COLBUF 
-                 LD B,(IX+_H_SIZE) 
- COLCURS2        LD C,(IX+_COLOR_CUR) 
-                 LD A,(HL) 
-                 LD (DE),A 
-                 LD (HL),C 
-                 INC L 
-                 INC E 
-                 DJNZ $-5 
-                 RET 
-   
- ;[ПЕЧАТЬ СИМВОЛА] 
- PRT_SYM         PUSH HL 
-                 PUSH DE 
-                 EX DE,HL 
-                 CALL ADRDIS 
-                 EX DE,HL 
-                 ADD A,A 
-                 LD L,A 
-                 LD H,0X0F 
-                 ADD HL,HL 
-                 ADD HL,HL 
-                 REPT 8 
-                 LD A,(HL) 
-                 RRCA 
-                 OR (HL) 
-                 LD (DE),A 
-                 INC L 
-                 INC D 
-                 ENDM 
-                 POP DE 
-                 POP HL 
-                 INC D 
-                 RET 
-   
- PRTSPECSYM      PUSH HL 
-                 PUSH DE 
-                 EX DE,HL 
-                 CALL ADRDIS 
-                 EX DE,HL 
-                 LD L,A 
-                 LD H,0 
-                 ADD HL,HL 
-                 ADD HL,HL 
-                 ADD HL,HL 
-                 LD A,L 
-                 ADD A,LOW (ICON) 
-                 LD L,A 
-                 ADC A,HIGH (ICON) 
-                 SUB L 
-                 LD H,A 
-                 REPT 8 
-                 LD A,(HL) 
-                 LD (DE),A 
-                 INC HL 
-                 INC D 
-                 ENDM 
-                 POP DE 
-                 POP HL 
-                 INC D 
-                 RET 
-   
- ;[CURSOR_UP] 
- CURSOR_UP       LD C,(IX+_TEK_PKT_L) 
-                 LD B,(IX+_TEK_PKT_H) 
-                 LD A,B 
-                 OR C 
-                 RET Z 
-                 DEC BC 
-                 LD (IX+_TEK_PKT_L),C 
-                 LD (IX+_TEK_PKT_H),B 
-                 LD A,(IX+_NUM_PKT) 
-                 AND A 
-                 JR Z,CURSOR_UP1 
-                 DEC (IX+_NUM_PKT) 
-                 JP COLOR_CURSOR 
-   
- CURSOR_UP1      CALL REST2X2 
- ;               CALL REST_COLCURS 
- ;               LD A,1 
-                 XOR A 
-                 RST8 _SCROLL_DOWN 
- ;               CALL SET_ADR_ATR 
-                 LD E,(IX+_Y_COORD) 
-                 INC E 
- DOWN1           LD D,(IX+_X_COORD) 
-                 INC D 
-                 INC D 
-                 LD HL,ERS_FLAGS 
-                 BIT B_RUN_FAT,(HL) 
-                 LD L,(IX+_TEK_PKT_L) 
-                 LD H,(IX+_TEK_PKT_H) 
-                 JR NZ,DOWN3 
-                 LD BC,ADR_CAT 
-                 ADD HL,HL 
-                 ADD HL,HL 
-                 ADD HL,HL 
-                 ADD HL,HL 
-                 ADD HL,BC 
- DOWN4           CALL FILENAME8_3 
-                 LD A,(ERS_FLAGS) 
-                 AND M_MOUSE_ON                  ;ПРОВЕРКА НАЛИЧИЯ МЫШИ 
-                 RET Z 
-                 JP DRAW_MOUSE 
-   
- DOWN3           LD BC,ADR_CAT_FAT 
-                 DEC D 
-                 ADD HL,HL 
-                 ADD HL,BC 
-                 LD C,(HL) 
-                 INC HL 
-                 LD B,(HL) 
-                 PUSH DE 
-                 LD A,6 
-                 RST8 _COM_FAT,_POS_FILES 
-                 LD HL,BUF_FILEITEM 
-                 RST8 _COM_FAT,_READ_DIR 
-                 LD BC,0X0B 
-                 ADD HL,BC 
-                 LD A,(HL) 
-                 SBC HL,BC 
-                 AND 0X10 
-                 LD A,0 
-                 JR NZ,DOWN5 
-                 LD A,1 
- DOWN5           POP DE 
-                 CALL PRTSPECSYM 
-                 LD HL,OUT_NAME_FILET 
-                 RST8 _COM_FAT,_GET_LONGNAME 
-                 LD (LONG_NAME),A 
-                 JR DOWN4 
-   
- ;[CURSOR_DOWN] 
- CURSOR_DOWN     LD C,(IX+_TEK_PKT_L) 
-                 LD B,(IX+_TEK_PKT_H) 
-                 LD L,(IX+_NUM_KOL_L) 
-                 LD H,(IX+_NUM_KOL_H) 
-                 LD A,H 
-                 OR L 
-                 RET Z 
-                 SCF 
-                 SBC HL,BC 
-                 RET Z 
-                 INC BC 
-                 LD (IX+_TEK_PKT_L),C 
-                 LD (IX+_TEK_PKT_H),B 
-                 LD A,(IX+_V_SIZE) 
-                 SUB 3 
-                 CP (IX+_NUM_PKT) 
-                 JR Z,CURSOR_DOWN1 
-                 INC (IX+_NUM_PKT) 
-                 JP COLOR_CURSOR 
-   
- CURSOR_DOWN1    CALL REST2X2 
- ;               CALL REST_COLCURS 
- ;               LD A,1 
-                 XOR A 
-                 RST8 _SCROLL_UP 
- ;               CALL SET_ADR_ATR 
-                 LD A,(IX+_Y_COORD) 
-                 ADD A,(IX+_V_SIZE) 
-                 SUB 2 
-                 LD E,A 
-                 JP DOWN1 
-   
- GET_XY          LD E,(IX+_NUM_KOL_L) 
-                 LD D,(IX+_NUM_KOL_H)    ;КОЛ-ВО 
-                 LD L,(IX+_TEK_PKT_L) 
-                 LD H,(IX+_TEK_PKT_H)    ;НОМЕР 
-                 LD A,(IX+_V_SIZE) 
-                 SUB 3 
-                 LD C,A 
-                 LD B,0 
-                 LD A,D 
-                 OR E 
-                 LD A,C 
-                 RET 
-   
- ;[ПЕРЕМЕЩЕНИЕ НА СТРАНИЦУ ВВЕРХ] 
- PAGEUP          CALL GET_XY 
-                 RET Z 
-                 XOR A 
-                 SBC HL,BC 
-                 EX DE,HL 
-                 JR NC,PDUN0 
- PDU0            LD D,A 
-                 LD E,A 
-                 JR PDUN0 
-   
- ;[ПЕРЕМЕЩЕНИЕ НА СТРАНИЦУ ВНИЗ] 
- PAGEDN          CALL GET_XY 
-                 RET Z 
-                 EX DE,HL 
-                 AND A 
-                 SBC HL,BC 
-                 ADD HL,BC 
-                 EX DE,HL 
-                 JR NC,PDN00 
-                 DEC DE 
-                 LD A,E 
-                 JR PDUN0 
-   
- PDN00           ADD HL,BC 
-                 EX DE,HL 
-                 SBC HL,DE 
-                 ADD HL,DE 
-                 JR Z,PDUN1 
-                 JR NC,PDUN0 
- PDUN1           EX DE,HL 
-                 DEC DE 
- PDUN0           LD (IX+_NUM_PKT),A 
-                 LD (IX+_TEK_PKT_L),E 
-                 LD (IX+_TEK_PKT_H),D 
-                 CALL REST2X2 
-                 CALL OUT_TEK_DIR 
-                 LD A,(ERS_FLAGS) 
-                 AND M_MOUSE_ON                  ;ПРОВЕРКА НАЛИЧИЯ МЫШИ 
-                 RET Z 
-                 JP DRAW_MOUSE 
-   
- ;[ВЫЧИСЛЕНИЕ АДРЕСА В ZX ЭКРАНЕ] 
- ;H-X, L-Y 
- ADRDIS          LD (ASD+1),A 
-                 LD A,L 
-                 AND 0X18 
-                 OR 0X40 
-                 EX AF,AF' 
-                 LD A,L 
-                 AND 7 
-                 RRCA 
-                 RRCA 
-                 RRCA 
-                 ADD A,H 
-                 LD L,A 
-                 EX AF,AF' 
-                 LD H,A 
-                 LD E,L 
- ADRATR          LD A,H 
-                 RRCA 
-                 RRCA 
-                 RRCA 
-                 AND 3 
-                 OR 0X58 
-                 LD D,A 
- ASD             LD A,0 
-                 RET 
-   
- ;[УСТАНОВКА АДРЕСА РИСОВАНИЯ ИНДИКАТОРНОЙ ПОЛОСКИ] 
- SETWIN_INDICAT  PUSH HL 
-                 PUSH DE 
-                 LD H,(IX+_X_COORD) 
-                 INC H 
-                 ADD A,(IX+_Y_COORD) 
-                 LD L,A 
-                 CALL ADRDIS 
-                 LD (ADRSTARTIND),DE 
-                 POP DE 
-                 POP HL 
-                 RET 
-   
- ;[РИСОВАНИЕ СЛЕДУЮЩЕГО ЦВЕТНОГО КВАДРАТИКА] 
- INC_INDICAT     PUSH HL 
-                 LD HL,0 
- ADRSTARTIND     EQU $-2 
-                 LD (HL),0X39 
-                 INC HL 
-                 LD (ADRSTARTIND),HL 
-                 POP HL 
-                 RET 
-   
- ;[ВОССТАНОВЛЕНИЕ ЧАСТИ ЭКРАНА ПОД ОКНОМ] 
- WIN_RESTORE 
- ;               BIT 3,(IX-1) 
- ;               RET Z 
- ;               RES 3,(IX-1) 
-                 LD A,2 
-                 JR RESAV 
-   
- ;[СОХРАНЕНИЕ ЧАСТИ ЭКРАНА ПОД ОКНОМ] 
- WIN_STORE 
- ;               BIT 3,(IX-1) 
- ;               RET NZ 
- ;               SET 3,(IX-1) 
-                 LD A,1 
- RESAV           EX AF,AF' 
-                 LD A,0X16;P_WINS 
-                 CALL SET_7FFD;PAGE_128 
- ;               LD HL,PAGE_128_RET 
- ;               PUSH HL 
-                 EX AF,AF' 
-                 LD (NSOH+1),A 
-                 RRCA 
-                 CALL WSOHR 
-                 LD HL,0X127E 
-                 JR C,SOH7 
-                 LD HL,0X771A 
- SOH7            LD (SOH4),HL 
-                 LD (SOH1),HL 
-                 LD L,(IX+_Y_COORD) 
-                 LD H,(IX+_X_COORD) 
-                 CALL ADRDIS_ 
-                 PUSH HL 
-                 CALL ADRATR_ 
-                 EX (SP),HL 
-                 LD B,(IX+_V_SIZE) 
- SOH3            PUSH BC 
-                 LD B,8 
-                 PUSH HL 
- SOH2            PUSH HL 
-                 LD C,(IX+_H_SIZE) 
- SOH1            LD A,(HL) 
-                 LD (DE),A 
-                 INC DE 
-                 INC HL 
-                 DEC C 
-                 JR NZ,SOH1 
-                 POP HL 
-                 INC H 
-                 DJNZ SOH2 
-                 POP HL 
-                 CALL UVEHL_ 
-                 POP BC 
-                 DJNZ SOH3 
-                 POP HL 
-                 LD A,(NSOH+1) 
-                 AND A 
-                 JR Z,SOH6_0 
-                 BIT 6,(IX+_FLAGS) 
-                 JR Z,SOH6_0 
-                 INC (IX+_V_SIZE) 
-                 INC (IX+_H_SIZE) 
- SOH6_0          LD C,(IX+_V_SIZE) 
- SOH6            PUSH HL 
-                 LD B,(IX+_H_SIZE) 
- SOH4            LD A,(HL) 
-                 LD (DE),A 
-                 INC HL 
-                 INC DE 
-                 DJNZ SOH4 
-                 POP HL 
-                 LD A,0X20 
-                 ADD A,L 
-                 LD L,A 
-                 JR NC,SOH4_0 
-                 INC H 
- SOH4_0          DEC C 
-                 JR NZ,SOH6 
- NSOH            LD A,0 
-                 AND A 
-                 RET Z 
-                 CP 1 
-                 JR NZ,NSOH1 
-                 LD (BUFHR+1),DE 
- NSOH1           BIT 6,(IX+_FLAGS) 
-                 JR Z,ADRWEK 
-                 DEC (IX+_V_SIZE) 
-                 DEC (IX+_H_SIZE) 
- ADRWEK          LD HL,0 
-                 RRCA 
-                 JR NC,ADRWK1 
-                 INC HL 
-                 INC HL 
-                 LD D,IXH 
-                 LD E,IXL 
-                 LD (HL),E 
-                 INC HL 
-                 LD (HL),D 
-                 RET 
-   
- ADRWK1          LD A,(BUFHR1+1) 
-                 AND A 
-                 RET Z 
-                 DEC HL 
-                 DEC HL 
-                 DEC HL 
-                 DEC HL 
-                 DEC HL 
-                 LD D,(HL) 
-                 DEC HL 
-                 LD E,(HL) 
- ADRWK2          LD IXH,D 
-                 LD IXL,E 
-                 RET 
-   
- WSOHR           PUSH AF 
-                 PUSH HL 
- BUFHR           LD DE,0XC000 
-                 EX AF,AF' 
-                 LD HL,TABSS 
- BUFHR1          LD A,0 
-                 AND A 
-                 JR NZ,BUFHR4 
-                 LD DE,0XC000 
- BUFHR4          PUSH AF 
-                 PUSH AF 
-                 ADD A,A 
-                 ADD A,A 
-                 ADD A,L 
-                 LD L,A 
-                 JR NC,BUFHR4_0 
-                 INC H 
- BUFHR4_0        LD (ADRWEK+1),HL 
-                 POP AF 
-                 EX AF,AF' 
-                 JR NC,NWOS 
-                 LD (HL),E 
-                 INC HL 
-                 LD (HL),D 
-                 POP AF 
-                 INC A 
-                 JR BUFHR3 
-   
- NWOS            DEC HL 
-                 DEC HL 
-                 DEC HL 
-                 LD D,(HL) 
-                 DEC HL 
-                 LD E,(HL) 
-                 LD (BUFHR+1),DE 
-                 POP AF 
-                 DEC A 
-                 RET C 
- BUFHR3          LD (BUFHR1+1),A 
-                 POP HL 
-                 POP AF 
-                 RET 
-   
- TABSS           DUPL 0X20,0 
-   
- ADRDIS_         PUSH AF 
-                 LD A,L 
-                 AND 0X18 
-                 OR 0X40 
-                 EX AF,AF' 
-                 LD A,L 
-                 AND 7 
-                 RRCA 
-                 RRCA 
-                 RRCA 
-                 ADD A,H 
-                 LD L,A 
-                 EX AF,AF' 
-                 LD H,A 
-                 POP AF 
-                 RET 
-   
- ADRATR_         LD A,H 
-                 RRCA 
-                 RRCA 
-                 RRCA 
-                 AND 3 
-                 OR 0X58 
-                 LD H,A 
-                 RET 
-   
- UVEHL_          LD A,0X20 
-                 ADD A,L 
-                 LD L,A 
-                 RET NC 
-                 LD A,H 
-                 ADD A,8 
-                 LD H,A 
-                 RET 
-   
- DRAW_PROGRESS   PUSH AF 
-                 PUSH HL 
-                 LD L,A 
-                 LD H,0 
-                 ADD HL,HL       ; *2 
-                 ADD HL,HL       ; *4 
-                 ADD HL,HL       ; *8 
-                 ADD HL,HL       ; *16 
-                 LD C,L 
-                 LD B,H 
-                 LD DE,(FILESIZE_BLOCKS) 
-                 CALL DIVIDE16 
-                 INC C 
-                 LD L,(IX + _Y_COORD) 
-                 INC L 
-                 INC L 
-                 INC L 
-                 LD H,0 
-                 ADD HL,HL       ; *2 
-                 ADD HL,HL       ; *4 
-                 ADD HL,HL       ; *8 
-                 ADD HL,HL       ; *16 
-                 ADD HL,HL       ; *32 
-                 LD A,(IX + _X_COORD) 
-                 INC A 
-                 ADD A,L 
-                 LD L,A 
-                 LD A,0x58 
-                 ADD A,H 
-                 LD H,A 
-                 LD A,%00111000 
- .L1             LD (HL),A 
-                 INC L 
-                 DEC C 
-                 JR NZ,.L1 
-                 POP HL 
-                 POP AF 
-                 RET 
-