; LAST UPDATE: 18.10.2023 savelij
RCALL MACRO ADDR
LD SP,RADDR
JP ADDR
; IF MOMPASS > 1
RADDR DW $+2
; ELSE
;RADDR := $+2
; ENDIF
ENDM
ENT_DEF MACRO V1,V2,V3,V4
DB V1 + V2 * 4 + V3 * 16 + V4 * 64
ENDM
BITMASK KS_RUS, 7
BITMASK KS_SCROLL, 6
BITMASK KS_NUM, 5
BITMASK KS_CAPS, 4
BITMASK KS_SHFT2, 3
BITMASK KS_ALT, 2
BITMASK KS_CTRL, 1
BITMASK KS_SHFT, 0
ED_PROC EQU 0
ED_CHAR EQU 1
ED_SCAN EQU 2
ED_INI EQU 0
_RU5 EQU 0
_INTOF EQU 5
BIOS EQU 0EA00H
CCP EQU BIOS-1600H
_RESET EQU 0
_SEEK EQU 1
_FORMAT EQU 2
_RECAL EQU 3
_READ EQU 4
_WSECT EQU 5
_WRITE EQU 6
_SETCH EQU 7
_GETCH EQU 8
;------------------------------
; ERRORS CODES FOR C_STAT
;
CS_UNKNO EQU 0FFH ; UNKNOWN FUNCTION
CS_ERSEC EQU 80H ; WRONG SEQUENCE
CS_UNPRN EQU 81H ; UNPRINTABLE CHAR IN SEQUENCE
CS_NODRV EQU 82H ; DRIVER NOT INSTALLED
CS_ERPAR EQU 83H ; WRONG PARAMETERS
CS_NOMOD EQU 84H ; SCREEN MODE DOES NOT EXIST
; TEXT MODE ERRORS
CST_OVER EQU 1 ; CAN'T WRITE OVER
ADRD EQU 7DFDH
_TF_CURATR EQU 0 ; CURSOR IS FLEX ATTRIB
;----------------------------
; КОДЫ ОШИБОК, ВОЗВРАЩАЕМЫЕ ДИСКОВОЙ СИСТЕМОЙ
;
_ADRERR EQU 08H ;ОШИБКА АДРЕСАЦИИ
_CHNFND EQU 09H ;КАНАЛ НЕ ПРИСОЕДИНЕН
_HRDERR EQU 40H ;ОШИБКА АППАРАТУРЫ
_INVALID EQU 41H ;НЕСООТВЕТСТВИЕ ДРАЙВЕРА АППАРАТУРЕ
_DTYPER EQU 50H ;НЕДОПУСТИМЫЙ НОМЕР ДРАЙВЕРА В КАНАЛЕ
_DRNFND EQU 51H ;ДРАЙВЕР ОТСУТСТВУЕТ
_COMERR EQU 52H ;ЗАПРЕЩЕННАЯ КОМАНДА
_IOERR EQU 53H ;ОШИБКА ВВОДА/ВЫВОДА
_WR_PROT EQU 54H ;ЗАЩИТА ОТ ЗАПИСИ
_FATAL_ERROR EQU 56H ;НЕ ОБРАБОТАННАЯ ФАТАЛЬНАЯ ОШИБКА
_NRDY EQU 59H ;НЕТ ГОТОВНОСТИ АППАРАТУРЫ (TIMEOUT)
_NO_DATA EQU 81H ;СЕКТОР НЕ НАЙДЕН
_NO_ADDR_MARK EQU 82H ;АДРЕСНЫЙ МАРКЕР НЕ НАЙДЕН
_OVERRUN EQU 83H ;OVERRUN
_CRC_ERR EQU 84H ;ОШИБКА В CRC
MAXDRVN EQU 7 ;МАКСИМАЛЬНЫЙ НОМЕР ДРАЙВЕРА
IOBYTE EQU 3
SYS_SP EQU 0X8000
ED_BUF EQU 0X7F40 ;DS 128
MAXQUI EQU 10H ; KEYBUFFER SIZE
BEGQUI EQU ED_BUF+0X80 ;DS MAXQUI
IX_BAS EQU 0X5F40
IX_SHIFT EQU 0X7F
IX_BASE EQU IX_BAS+IX_SHIFT
; VARIABLES IX RELATIVE
INIT_VAR IX_BAS
SETVAR FLAG, BYTE ;EQU IX_BAS ;DB 0 ; DM FLAG 1 <DEFB 0 >
SETVAR FLAG1, BYTE ;EQU FLAG+1 ;DB 0 ; DM FLAG1 1 <DEFB 0 >
SETVAR CUR_X, BYTE ;EQU FLAG1+1 ;DB 0 ; DM CUR_X 1 <DEFB 0 >
SETVAR CUR_Y, BYTE ;EQU CUR_X+1 ;DB 0 ; DM CUR_Y 1 <DEFB 0 >
SETVAR W_X1, BYTE ;EQU CUR_Y+1 ;DB 0 ; DM W_X1 1 <DEFB 0 >
SETVAR W_Y1, BYTE ;EQU W_X1+1 ;DB 0 ; DM W_Y1 1 <DEFB 0 >
SETVAR W_X2, BYTE ;EQU W_Y1+1 ;DB 50 ; DM W_X2 1 <DEFB 50 >
SETVAR W_Y2, BYTE ;EQU W_X2+1 ;DB 24 ; DM W_Y2 1 <DEFB 24 >
SETVAR COLOR_P, BYTE ;EQU W_Y2+1 ;DB 0 ; DM COLOR_P 1 <DEFB 0 >
SETVAR COLOR_I, BYTE ;EQU COLOR_P+1 ;DB 7 ; DM COLOR_I 1 <DEFB 7 >
SETVAR C_STAT, BYTE ;EQU COLOR_I+1 ;DB 0 ; DM C_STAT 1 <DEFB 0 >
SETVAR T_FLAG, BYTE ;EQU C_STAT+1 ;DB 0 ; DM T_FLAG 1 <DEFB 0 >
SETVAR CUR_VAL, BYTE ;EQU T_FLAG+1 ;DB 0 ; DM CUR_VAL 1 <DEFB 0 >
SETVAR SCR_ADR, WORD ;EQU CUR_VAL+1 ;DW 0 ; DM SCR_ADR 2 <DEFW 0 >
SETVAR COLOR_M, BYTE ;EQU SCR_ADR+2 ;DB 7 ; DM COLOR_M 1 <DEFB 7 >
SETVAR SAV_CUR, BYTE ;EQU COLOR_M+1 ;DB 0 ; DM SAV_CUR 1 <DEFB 0 >
SETVAR MEMDSP, BYTE ;EQU SAV_CUR+1 ;DB 0X11 ; DM MEMDSP 1 <DEFB 11H >
SETVAR C_CNT, BYTE ;EQU MEMDSP+1 ;DB 1 ; DM C_CNT 1 <DEFB 1 >
SETVAR C_MAX, BYTE ;EQU C_CNT+1 ;DB 10 ; DM C_MAX 1 <DEFB 10 >
SETVAR C_BEG, BYTE ;EQU C_MAX+1 ;DB 7 ; DM C_BEG 1 <DEFB 7 >
SETVAR C_END, BYTE ;EQU C_BEG+1 ;DB 8 ; DM C_END 1 <DEFB 8 >
SETVAR TMP_W, WORD ;EQU C_END+1 ;DW 0 ; DM TMP_W 2 <DEFS 2 >
SETVAR C_ACT, BYTE ;EQU TMP_W+2 ;DB 1 ; DM C_ACT 1 <DEFB 1 >
SETVAR BEEP_D, WORD ;EQU C_ACT+1 ;DW 0X3F10 ; DM BEEP_D 2 <DEFW 3F10H >
SETVAR FE_IMG, BYTE ;EQU BEEP_D+2 ;DB 0XBE ; DM FE_IMG 1 <DEFB 0BEH >
SETVAR BORDER, BYTE ;EQU FE_IMG+1 ;DB 0 ; DM BORDER 1 <DEFB 0 >
SETVAR SYS_P, BYTE ;EQU BORDER+1 ;DB 0 ; DM SYS_P 1 <DEFB 0 >
SETVAR FUNC, BYTE ;EQU SYS_P+1 ;DB 0 ; DM FUNC 1 <DEFS 1 >
SETVAR FCNT, BYTE ;EQU FUNC+1 ;DB 0 ; DM FCNT 1 <DEFS 1 >
SETVAR PAR_PT, WORD ;EQU FCNT+1 ;DW 0 ; DM PAR_PT 2 <DEFS 2 >
SETVAR BCOL, BYTE ;EQU PAR_PT+2 ;DB 0 ; DM BCOL 1 <DEFB 0 >
SETVAR TIME_C, DWORD ;EQU BCOL+1 ;DUPL 4,0 ; DM TIME_C 4 <DEFB 0,0,0,0 >
; FOR KEYBOARD
SETVAR K_5CNT, BYTE ;EQU TIME_C+4 ;DB 0 ; DM K_5CNT 1 <DB 0 >
SETVAR K_LAST, BYTE ;EQU K_5CNT+1 ;DB 0 ; DM K_LAST 1 <DB 0 >
SETVAR K_CNT, BYTE ;EQU K_LAST+1 ;DB 0 ; DM K_CNT 1 <DB 0 >
SETVAR K_BUF, BYTE ;EQU K_CNT+1 ;DB -1 ; DM K_BUF 1 <DB -1 >
SETVAR KEY_DEL, BYTE ;EQU K_BUF+1 ;DB 15 ; DM KEY_DEL 1 <DB 15 >
SETVAR KEY_REP, BYTE ;EQU KEY_DEL+1 ;DB 5 ; DM KEY_REP 1 <DB 5 >
SETVAR TAIL, BYTE ;EQU KEY_REP+1 ;DB 0 ; DM TAIL 1 <DEFB 0 >
SETVAR BEEP_T, WORD ;EQU TAIL+1 ;DW 0X6008 ; DM BEEP_T 2 <DEFW 6008H >
SETVAR BEEP_K, WORD ;EQU BEEP_T+2 ;DW 0X3F04 ; DM BEEP_K 2 <DEFW 3F04H >
; KB SWITCH
SETVAR KEYBOARD, 3 ;EQU BEEP_K+2 ;DB 0XC9,0,0 ; DM KEYBOARD 3 <DB 0C9H,0,0 >
SETVAR READ_K, 3 ;EQU KEYBOARD+3 ;DUPL 3,0 ; DM READ_K 3
SETVAR STAT_K, 3 ;EQU READ_K+3 ;DUPL 3,0 ; DM STAT_K 3
SETVAR READA_KNW, 3 ;EQU STAT_K+3 ;DUPL 3,0 ; DM READA_KNW 3
SETVAR KB_TYP, 3 ;EQU READA_KNW+3 ;DUPL 3,0 ; DM KB_TYP 3
SETVAR K_INIT, 3 ;EQU KB_TYP+3 ;DUPL 3,0 ; DM K_INIT 3
SETVAR KS_ASH, BYTE ;EQU K_INIT+3 ;DB 0 ; DM KS_ASH 1
SETVAR KS_SHIFTS, BYTE ;EQU KS_ASH+1 ;DB 0 ; DM KS_SHIFTS 1
SETVAR KS_UND, WORD ;EQU KS_SHIFTS+1 ;DW 0 ; DM KS_UND 2
SETVAR KS_UNDS, BYTE ;EQU KS_UND+2 ;DB 0 ; DM KS_UNDS 1
SETVAR KS_UNDS1, BYTE ;EQU KS_UNDS+1 ;DB 0 ; DM KS_UNDS1 1
SETVAR I_MAX, BYTE ;EQU KS_UNDS1+1 ;DB 0 ; DM I_MAX 1
SETVAR I_MIN, BYTE ;EQU I_MAX+1 ;DB 0 ; DM I_MIN 1
SETVAR I_AVR, BYTE ;EQU I_MIN+1 ;DB 0 ; DM I_AVR 1
; EDISK WORK VALUE
SETVAR ED_CYL, BYTE ;EQU I_AVR+1 ;DB 0 ; DM ED_CYL 1
; FDISK WORK VALUE
SETVAR SV_SP, WORD ;EQU ED_CYL+1 ;DW 0 ; DM SV_SP 2
; PROTECT VALUE
SETVAR RTIME, WORD ;EQU SV_SP+2 ;DW 0 ; DM RTIME 2
; INTERPAGE LDIR'S PARAMETERS
R8_FR EQU RTIME;+2 ;DB 0 ; DM R8_FR 1
R8_TO EQU RTIME+1;2 ;DB 0 ; DM R8_TO 1
; ESC SEQUENCE PARAMS
SETVAR PAR1, BYTE ;EQU RTIME+2 ;DB 0 ; DM PAR1 1
SETVAR PAR2, BYTE ;EQU PAR1+1 ;DB 0 ; DM PAR2 1
SETVAR PAR3, BYTE ;EQU PAR2+1 ;DB 0 ; DM PAR3 1
SETVAR PAR4, BYTE ;EQU PAR3+1 ;DB 0 ; DM PAR4 1
SETVAR PARR, 13 ;EQU PAR4+1 ;DUPL 13,0 ; DM PARR 13
BUF EQU PAR1
; POWER ON DETECTOR
SETVAR TST_1RUN, WORD ;EQU PARR+13 ;DW 0 ; DM TST_1RUN 2
SETVAR TST_IS1, BYTE ;EQU TST_1RUN+2 ;DB 0 ; DM TST_IS1 1
; IN VALUE
SETVAR RQCHAN, BYTE ;EQU TST_IS1+1 ;DB 0 ; DM RQCHAN 1 ;НОМЕР КАНАЛА
SETVAR RQCOM, BYTE ;EQU RQCHAN+1 ;DB 0 ; DM RQCOM 1 ;КОМАНДА
SETVAR RQBLN, BYTE ;EQU RQCOM+1 ;DB 0 ; DM RQBLN 1 ;ЧИСЛО БЛОКОВ
SETVAR RQTRACK, WORD ;EQU RQBLN+1 ;DW 0 ; DM RQTRACK 2 ;НОМЕР ДОРОЖКИ
SETVAR RQBLOCK, WORD ;EQU RQTRACK+2 ;DW 0X4F00 ; DM RQBLOCK 2 ;НОМЕР БЛОКА
SETVAR RQBADR, WORD ;EQU RQBLOCK+2 ;DW 0X18 ; DM RQBADR 2 ;БУФЕР ПОЛЬЗОВАТЕЛЯ
; WORK VALUE
SETVAR RQHEAD, BYTE ;EQU RQBADR+2 ;DB 7 ; DM RQHEAD 1 ;НОМЕР ГОЛОВКИ
SETVAR RQCYL, WORD ;EQU RQHEAD+1 ;DW 0 ; DM RQCYL 2 ;НОМЕР ЦИЛИНДРА
SETVAR LOCBUF, WORD ;EQU RQCYL+2 ;DW 0 ; DM LOCBUF 2 ;АДРЕС БЛОКА В БУФЕРЕ
SETVAR RQSECT, BYTE ;EQU LOCBUF+2 ;DB 7 ; DM RQSECT 1 ;НОМЕР СЕКТОРА
SETVAR DCBUF, WORD ;EQU RQSECT+1 ;DW 0X300 ; DM DCBUF 2 ;АДРЕС БУФЕРА
SETVAR REP, BYTE ;EQU DCBUF+2 ;DB 1 ; DM REP 1 ;СЧЕТЧИК ЧИСЛА ПОВТОРОВ
;ПЕРЕМЕННЫЕ КОНТРОЛЕРА ФЛОПОВ
SETVAR FD_TRKS, WORD ;EQU REP+1 ;DB 0X0A,7;,8,0 ; DM FD_TRKS 4 ;НОМЕРА ТЕКУЩИХ ДОРОЖЕК
;БЛОК СОСТОЯНИЯ БУФЕРА
SETVAR BUFT, BYTE ;EQU FD_TRKS+2 ;DB 0 ; DM BUFT 1 ;НОМЕР КАНАЛА
SETVAR BUFTRK, WORD ;EQU BUFT+1 ;DW 0X1001 ; DM BUFTRK 2 ;НОМЕР ДОРОЖКИ
SETVAR BUFSEC, BYTE ;EQU BUFTRK+2 ;DB 0X3F ; DM BUFSEC 1 ;НОМЕР СЕКТОРА
;-----------------------
INIT_VAR
SETVAR DVALID, BYTE ;EQU 0 ;: DS 1 ;+ ПРИЗНАК ДЕЙСТВИТЕЛЬНОСТИ
SETVAR _DTYP, BYTE ;EQU DVALID+1 ;: DS 1 ;+ КОД УСТРОЙСТВА
SETVAR _DUS, BYTE ;EQU _DTYP+1 ;: DS 1 ;+ НОМЕР ПРИВОДА
SETVAR _DDTYP, BYTE ;EQU _DUS+1 ;: DS 1 ;- КОД ПРИВОДА (Hi bit - unbuferized)
SETVAR _DHEADF, BYTE ;EQU _DDTYP+1 ;: DS 1 ;+ ЧИСЛО ФИКСИРОВАННЫХ ГОЛОВОК
SETVAR _DHEADR, BYTE ;EQU _DHEADF+1 ;: DS 1 ;+ ЧИСЛО СМЕННЫХ ГОЛОВОК
SETVAR _DCYLN, WORD ;EQU _DHEADR+1 ;: DS 2 ;+ ЧИСЛО ЦИЛИНДРОВ НА ДИСКЕ
SETVAR _DSECTT, BYTE ;EQU _DCYLN+2 ;: DS 1 ;+ ЧИСЛО СЕКТОРОВ НА ДОРОЖКЕ
SETVAR _DBYTES, WORD ;EQU _DSECTT+1 ;: DS 2 ;+ ЧИСЛО БАЙТОВ В СЕКТОРЕ
SETVAR _DALTCYL, BYTE ;EQU _DBYTES+2 ;: DS 1 ;+ ЧИСЛО СИСТЕМНЫХ ДОРОЖЕК
SETVAR _DBEGCYL, WORD ;EQU _DALTCYL+1 ;: DS 2 ;+ НОМЕР НАЧАЛЬНОГО ЦИЛИНДРА
SETVAR _DBLDR, WORD ;EQU _DBEGCYL+2 ;: DS 2 ;+ ЧИСЛО БЛОКОВ НА ДИСКЕ
SETVAR _DBLTR, WORD ;EQU _DBLDR+2 ;: DS 2 ;+ ЧИСЛО БЛОКОВ НА ДОРОЖКЕ
SETVAR _DTRACK, WORD ;EQU _DBLTR+2 ;: DS 2 ;+ ЧИСЛО ДОРОЖЕК НА ДИСКЕ
SETVAR _DSEKTL, BYTE ;EQU _DTRACK+2 ;: DS 1 ;+ ДЛИНА НОМЕРА БЛОКА В СЕКТОРЕ
SETVAR _DDIRENT, WORD ;EQU _DSEKTL+1 ;: DS 2 ;+ ЧИСЛО ЗАПИСЕЙ В ДИРЕКТОРИИ
SETVAR _DIF0, BYTE ;EQU _DDIRENT+2 ;: DS 1 ;+ РАЗМЕТКА ПЕРВОЙ ДОРОЖКИ
SETVAR _DIF1, BYTE ;EQU _DIF0+1 ;: DS 1 ;+ РАЗМЕТКА ВТОРОЙ ДОРОЖКИ
SETVAR _DIF2, BYTE ;EQU _DIF1+1 ;: DS 1 ;+ РАЗМЕТКА ВСЕХ ОСТАВШИХСЯ ДОРОЖЕК
SETVAR _DTIF, BYTE ;EQU _DIF2+1 ;: DS 1 ;? СМЕЩЕНИЕ ПЕРВОГО СЕКТОРА
SETVAR _DF8, BYTE ;EQU _DTIF+1 ; DS 1 ;+ ПРИЗНАК 8-ДЮЙМОВОГО ДИСКА
; ИЛИ НОМЕР НАЧАЛЬНОЙ ГОЛОВКИ
SETVAR _DFMFM, BYTE ;EQU _DF8+1 ;: DS 1 ;+ ПЛОТНОСТЬ ЗАПИСИ
SETVAR _DFN, BYTE ;EQU _DFMFM+1 ;: DS 1 ;+ РАЗМЕР СЕКТОРА
SETVAR _DFGPL, BYTE ;EQU _DFN+1 ;: DS 1 ;+ GAP3 ДЛЯ ЧТЕНИЯ/ЗАПИСИ
SETVAR _DFGPF, BYTE ;EQU _DFGPL+1 ;: DS 1 ;+ GAP3 ДЛЯ ФОРМАТА
SETVAR _DFSRHUT, BYTE ;EQU _DFGPF+1 ;: DS 1 ;+ ВРЕМЯ ШАГА
; ИЛИ ВРЕМЯ ШАГА ПРИ SEEK
SETVAR _DFHLT, BYTE ;EQU _DFSRHUT+1 ; DS 1: ;+ ВРЕМЯ ОПУСКАНИЯ ГОЛОВКИ
; ИЛИ ВРЕМЯ ШАГА ПРИ RECALIBRATE
SETVAR _DFMOTOR, BYTE ;EQU _DFHLT+1 ;: DS 1 ;+ ПРИЗНАК ВКЛЮЧЕНИЯ МОТОРА
;СМЕЩЕНИЯ ОТ IX
_FLAG EQU LOW (IX_BASE - FLAG)
_FLAG1 EQU LOW (IX_BASE - FLAG1)
_W_X1 EQU LOW (IX_BASE - W_X1)
_W_X2 EQU LOW (IX_BASE - W_X2)
_W_Y1 EQU LOW (IX_BASE - W_Y1)
_W_Y2 EQU LOW (IX_BASE - W_Y2)
_CUR_X EQU LOW (IX_BASE - CUR_X)
_CUR_Y EQU LOW (IX_BASE - CUR_Y)
_C_STAT EQU LOW (IX_BASE - C_STAT)
_CUR_VAL EQU LOW (IX_BASE - CUR_VAL)
_T_FLAG EQU LOW (IX_BASE - T_FLAG)
_MEMDSP EQU LOW (IX_BASE - MEMDSP)
_C_CNT EQU LOW (IX_BASE - C_CNT)
_TMP_W EQU LOW (IX_BASE - TMP_W)
_C_ACT EQU LOW (IX_BASE - C_ACT)
_FE_IMG EQU LOW (IX_BASE - FE_IMG)
_BORDER EQU LOW (IX_BASE - BORDER)
_SYS_P EQU LOW (IX_BASE - SYS_P)
_FUNC EQU LOW (IX_BASE - FUNC)
_FCNT EQU LOW (IX_BASE - FCNT)
_TIME_C EQU LOW (IX_BASE - TIME_C)
_K_5CNT EQU LOW (IX_BASE - K_5CNT)
_K_LAST EQU LOW (IX_BASE - K_LAST)
_K_CNT EQU LOW (IX_BASE - K_CNT)
_K_BUF EQU LOW (IX_BASE - K_BUF)
_TAIL EQU LOW (IX_BASE - TAIL)
_KS_ASH EQU LOW (IX_BASE - KS_ASH)
_KS_SHIFTS EQU LOW (IX_BASE - KS_SHIFTS)
_KS_UND EQU LOW (IX_BASE - KS_UND)
_KS_UNDS EQU LOW (IX_BASE - KS_UNDS)
_I_MAX EQU LOW (IX_BASE - I_MAX)
_I_MIN EQU LOW (IX_BASE - I_MIN)
_ED_CYL EQU LOW (IX_BASE - ED_CYL)
_PAR1 EQU LOW (IX_BASE - PAR1)
_PAR2 EQU LOW (IX_BASE - PAR2)
_PAR4 EQU LOW (IX_BASE - PAR4)
_TST_IS1 EQU LOW (IX_BASE - TST_IS1)
_RQCHAN EQU LOW (IX_BASE - RQCHAN)
_RQCOM EQU LOW (IX_BASE - RQCOM)
_RQBLN EQU LOW (IX_BASE - RQBLN)
_RQTRACK EQU LOW (IX_BASE - RQTRACK)
_RQBLOCK EQU LOW (IX_BASE - RQBLOCK)
_RQBADR EQU LOW (IX_BASE - RQBADR)
_RQHEAD EQU LOW (IX_BASE - RQHEAD)
_REP EQU LOW (IX_BASE - REP)
_BUFT EQU LOW (IX_BASE - BUFT)
_BUFSEC EQU LOW (IX_BASE - BUFSEC)
; REST OF SWITCH AREA
INIT_VAR 0xDF40
SETVAR CL_SW, 3 ;EQU 0XDF40
SETVAR SW_DO, 0 ;EQU CL_SW+3
SETVAR OUT_SW, 0 ;EQU CL_SW+3
SETVAR SW_CLR, 0 ;EQU OUT_SW
; SOME DATA AREAS
SETVAR SV_ARE, WORD ;EQU SW_CLR
SETVAR ARR_CO, 16 + 3 ;EQU SV_ARE+2
SETVAR SG_ENC, DWORD ;EQU ARR_CO+16+3
SETVAR ENC_SI, DWORD ;EQU SG_ENC+4
SETVAR ENC_SO, DWORD ;EQU ENC_SI+4
SETVAR PAL_BUF, 0 ;EQU ENC_SO+4
; FILLED SWITCH AREA
INIT_VAR CL_SW
SETVAR SW_C, 0 ;EQU CL_SW
SETVAR SW_PUT, 0 ;EQU CL_SW
SETVAR SW_CLL, 0 ;EQU CL_SW
SETVAR SW_SCO, 0 ;EQU CL_SW
SETVAR SW_RRL, 0 ;EQU CL_SW
SETVAR SW_SIZ, 0 ;EQU CL_SW
;-----------------------