Subversion Repositories pentevo

Rev

Rev 888 | Rev 1026 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. ;LAST UPDATE: 23.05.2021 savelij
  3.  
  4.                 TITLE "menu_execute.a80"
  5.  
  6. ;[ЗАГРУЗКА С ЛЕНТЫ]
  7. TAPELOAD        LD H,CMOS_BYTE_00
  8.                 CALL READCMOS
  9.                 AND M_EMUL_TAPE
  10.                 JP NZ,EMULTAPLOAD
  11.                 LD IX,TAPE_LDT
  12.                 RST8 _WINW
  13. TAPELOAD1       CALL MEMSET                     ;ВЫСТАВИЛИ РЕЖИМЫ ПАМЯТИ И ТУРБЫ
  14.                 LD HL,BAS4TAPE
  15.                 LD DE,0X5C3A
  16.                 LD BC,EBAS4TAPE-BAS4TAPE
  17.                 LDIR                            ;ПЕРЕМЕННЫЕ БАСИКА СДЕЛАЛИ FOR ONLY TAPE
  18.                 LD HL,ERROR_TAPE
  19.                 PUSH HL
  20.                 LD (0X5C3D),SP                  ;ПЕРЕХВАТ ОШИБКИ ЕСЛИ ЕСТЬ ЖЕЛАНИЕ ВЕРНУТЬСЯ
  21.                 LD HL,0XFF58
  22.                 LD SP,HL                        ;ВЫСТАВИЛИ СТЕК А ЛЯ БЕЙСИК 48
  23.                 LD DE,0X3E08
  24.                 LD BC,0XA8
  25.                 EX DE,HL
  26.                 LDIR                            ;ПОЛОЖИЛИ ШРИФТ UDG
  27.                 LD HL,0X3E00
  28.                 PUSH HL
  29.                 LD HL,0X1303
  30.                 PUSH HL
  31.                 LD HL,0X1B76
  32.                 PUSH HL                         ;ЗАПОЛНИЛИ ДНО ПЕРЕСТАВЛЕННОГО СТЕКА
  33.                 LD IX,0X5CD1                    ;УСТАНОВИЛИ ДЛЯ ЗАГРУЗКИ С ЛЕНТЫ
  34.                 JP 0X073E                       ;ПЕРЕХОД НА ЗАГРУЗКУ С ЛЕНТЫ
  35.  
  36. ;[ПЕРЕХВАТ ОШИБКИ ИЛИ БРЕКА ДЛЯ ВОЗВРАТА]
  37. ERROR_TAPE      LD HL,BAS_VAR
  38.                 LD DE,0X5C00
  39.                 LD BC,EBAS_VAR-BAS_VAR
  40.                 LDIR                            ;ВЕРНУЛИ ТЫРДОСНЫЕ ПЕРЕМЕННЫЕ НА МЕСТО
  41.                 XOR A
  42.                 LD (0X5C3D),BC                  ;СНЯЛИ ПЕРЕХВАТЧИК ОШИБОК
  43.                 OUT (0XFE),A
  44.                 DEC A
  45.                 LD (gFenv),A
  46.                 CALL GLUDIN                     ;ПОГУДЕЛИ В АУ ЧТО БЫЛА ОШИБКА
  47.                 LD A,1
  48.                 LD (gFenv),A
  49.                 JP RESTART                      ;ПЕРЕЗАПУСК HE GLUK
  50.  
  51. ;[СОЗДАНИЕ РАМ ДИСКА НА 640К]
  52. RAM_640         LD HL,RESTART
  53.                 PUSH HL
  54. CREATE_TRDRAM
  55.                 LD HL,636*4                     ;RAM DISK НА 640 КИЛОБАЙТ
  56.                 LD (SECFREE),HL                 ;ВЫСТАВИЛИ ПЕРЕМЕННУЮ КОЛИЧЕСТВА СЕКТОРОВ НА RAM DISK
  57.                 DI
  58.  
  59.         IFNDEF TESTEMUFDD
  60. ; test
  61.                 PEC_ON M_SHADOW_BF
  62.                 LD A,RAM_RAMDISK+1
  63.                 LD BC,WIN_P2
  64.                 OUT (C),A
  65.                 LD HL,0X8000
  66.                 LD D,H
  67.                 LD E,L
  68.                 INC DE
  69.                 LD BC,0X0FFF
  70.                 LD (HL),L
  71.                 LDIR                            ;ОЧИСТИЛИ СТРАНИЦУ TR-DOS ДИРЕКТОРИИ
  72.                 LD HL,DSKINFO
  73.                 LD DE,0X88E1
  74.                 LD C,DSK_END-DSKINFO
  75.                 LDIR                            ;ПЕРЕНЕСЛИ ШАБЛОН ДЛЯ 9 СЕКТОРА ДИРЫ
  76.                 LD A,ZXSTD_CPU2;0XFD
  77.                 LD BC,WIN_P2
  78.                 OUT (C),A
  79.                 PEC_OFF M_SHADOW_BF
  80. ; test
  81.         ENDIF
  82.  
  83.                 JP CREATE_TRD640
  84.  
  85. ;[СБРОС NEOGS]
  86. RESETNGS        LD A,0X80
  87.                 OUT (0X33),A
  88.                 JP RESTART
  89.  
  90. ;[FILE NOT FOUND]
  91. FILE_NONE       LD IX,FILENONE
  92.                 RST8 _WINW
  93.                 JP STUPID1
  94.  
  95. ;[ПРОВЕРКА ВИРТУАЛЬНОГО ПРИВОДА]
  96. CMP_VIRTUAL     LD H,VIRT_REAL_DRIVE
  97.                 CALL READCMOS
  98.                 LD A,(DRV_SYM)
  99.                 LD D,A                          ;НОМЕР ТЕКУЩЕГО РЕАЛЬНОГО ДИСКОВОДА
  100.                 LD A,L
  101.                 RRCA
  102.                 RRCA
  103.                 AND 3                           ;НОМЕР РЕАЛЬНОГО ДИСКОВОДА ИЗ CMOS
  104.                 CP D
  105.                 JR NZ,PRT_NONETRDOS
  106.                 LD IX,ERR_VIRTUAL
  107.                 JR PRT_NONETRDOS1
  108.  
  109. PRT_NONETRDOS   LD IX,NONETRDOS
  110. PRT_NONETRDOS1  RST8 _WINW
  111.                 JR STUPID1
  112.  
  113. ;[ВЫВОД ПОМОЩИ]
  114. VIEW_HELP       LD IX,WIN_HELP
  115.                 RST8 _WINW
  116. VIEWHELP1       CALL PRINTTIME
  117.                 EI
  118.                 HALT
  119.                 BIT 5,(IY+1)
  120.                 CALL Z,CP_TIME_KOSHAK
  121.                 JR Z,VIEWHELP1
  122.                 RES 5,(IY+1)
  123.                 JR STUPID1
  124.  
  125. LDFDI_ERROR     LD IX,LDFDIERROR
  126.                 RST8 _WINW
  127.                 JR STUPID1
  128.  
  129. _STUPID         LD IX,MSTUPID
  130.                 CALL DRAWWIN
  131.                 LD HL,_STUPID
  132.                 LD (DSTUPID),HL
  133. STUPID1         LD SP,0
  134. TEK_SP          EQU $-2
  135.                 CALL SET_7FFD_0
  136.                 EI
  137.                 CALL RESET_VG
  138.                 CALL EXIT4ERROR
  139. ;               LD A,0XFF
  140. ;               LD (gFenv),A
  141. ;               CALL GLUDIN                     ;HL
  142. ;               LD A,1
  143. ;               LD (gFenv),A
  144.                 JP RESTART
  145.  
  146. ;[ПЕРЕХОДИЛКА В БАСИК128]
  147. BAS128          CALL SYSTEM
  148.                 CALL MEMSET
  149.                 DI
  150.                 CALL INIT_LOADTAPE
  151.                 XOR A
  152.                 CALL SET_7FFD
  153.                 RST 0
  154.  
  155. ;[СБРОС УКАЗАТЕЛЯ ЗАГРУЗЧИКА TAPE]
  156. INIT_LOADTAPE   PEC_ON M_SHADOW_BF
  157.                 LD BC,WIN_P2
  158.                 XOR A
  159.                 OUT (C),A
  160.                 LD HL,0X8000
  161.                 LD (HL),A
  162.                 INC L
  163.                 LD (HL),A
  164.                 INC L
  165.                 LD (HL),A
  166.                 LD B,HIGH (WIN_A2)
  167.                 LD A,0X7D
  168.                 OUT (C),A
  169.                 PEC_OFF M_SHADOW_BF
  170.                 RET
  171.  
  172. ;[ПЕРЕХОДИЛКА В БАСИК48]
  173. BAS48           CALL SYSTEM
  174.                 CALL MEMSET
  175.                 CALL INIT_LOADTAPE
  176.                 LD A,0X30
  177.                 CALL SET_7FFD
  178.                 RST 0
  179.  
  180. ;[ПЕРЕХОДИЛКА В ТЫРДОС]
  181. DOS128          CALL SYSTEM
  182.                 CALL MEMSET
  183.                 LD IX,0
  184.                 JP DOSIX
  185.  
  186. ;МЕНЮХА ЗАЧИСТКИ СТРАНИЦ, ФОРМАТИРОВАНИЯ РАМДИСКА И ДИСКЕТНЫЙ КОПИР
  187. _KILLS          LD IX,MKILLS
  188.                 RST8 _WINW
  189.                 JP _RULILKA
  190.  
  191. ;[СБРОС В BASIC 48 СО СТАНДАРТНОЙ ПРОШИВКОЙ ПРИ ВЫКЛЮЧЕННОМ ТУРБО РЕЖИМЕ]
  192. BAS48STD        DI
  193.                 CALL SET_EMU_TAPE
  194.                 LD BC,PENT_CONF
  195.                 LD A,0X14
  196.                 OUT (C),A
  197.                 LD BC,CONF_128
  198.                 LD A,0X30
  199.                 OUT (C),A
  200.                 PEC_ON M_SHADOW_BF
  201.                 ATMPORT WIN_A0,0X3F
  202.                 EVOPORT WIN_P0,0
  203.                 LD HL,0
  204.                 LD (HL),H
  205.                 INC L
  206.                 LD (HL),H
  207.                 INC L
  208.                 LD (HL),H
  209.                 ATMPORT WIN_A0,ROM_BAS48_STD
  210.                 PEC_OFF M_SHADOW_BF
  211.                 JP 0
  212.  
  213. ;[СБРОС В BASIC 128 СО СТАНДАРТНОЙ ПРОШИВКОЙ ПРИ ВЫКЛЮЧЕННОМ ТУРБО РЕЖИМЕ]
  214. BAS128STD       DI
  215.                 CALL SET_EMU_TAPE
  216.                 LD BC,PENT_CONF
  217.                 LD A,0X14
  218.                 OUT (C),A
  219.                 PEC_ON M_SHADOW_BF
  220.                 ATMPORT WIN_A0,0X3F
  221.                 EVOPORT WIN_P0,0
  222.                 LD HL,0
  223.                 LD (HL),H
  224.                 INC L
  225.                 LD (HL),H
  226.                 INC L
  227.                 LD (HL),H
  228.                 ATMPORT WIN_A0,ROM_BAS48_128
  229.                 LD BC,CONF_128
  230.                 XOR A
  231.                 OUT (C),A
  232.                 ATMPORT WIN_A0,ROM_BAS128_STD
  233.                 PEC_OFF M_SHADOW_BF
  234.                 JP 0
  235.  
  236. ;[HDD BOOT]
  237. HDD_BOOT        LD HL,ADR_CAT
  238.                 PUSH HL
  239.                 RST8 _COM_DEV,_COMHDDN,_DEV_INIT
  240.                 LD A,H
  241.                 POP HL
  242.                 AND A
  243.                 JR NZ,HDDBOOT1
  244. HDDBOOT4        PUSH HL
  245.                 CALL MEMSET
  246.                 POP DE
  247.                 PUSH DE
  248.                 LD HL,HDDBOOT2
  249.                 LD BC,EHDDBOOT2-HDDBOOT2
  250.                 LDIR
  251.                 RET
  252.  
  253. HDDBOOT1        LD IX,HDDBOOT_ERROR
  254.                 RST8 _WINW
  255.                 JP STUPID1
  256.  
  257. HDDBOOT2        LD HL,0X6000                    ;ГРУЗИТЬ БУДЕМ КАК И БЫЛ АДРЕС
  258.                 PUSH HL                         ;ПОСЛЕ ЗАГРУЗКИ ЗАПУСКАЕМ ЗАГРУЖЕННОЕ
  259.                 LD BC,0
  260.                 LD DE,2
  261.                 LD A,0X30
  262.                 RST8 _COM_DEV,_COMHDDN,_DEV_READ
  263.                 RET
  264.  
  265.                 LD DE,2                         ;ГРУЗИМ НАЧИНАЯ С СЕКТОРА 2 ИБО LBA
  266.                 LD BC,0XFF00+PN_1F6
  267.                 LD A,0XE0                       ;ВЫБРАЛИ МАСТЕР И LBA РЕЖИМ
  268.                 OUT (C),A
  269.                 LD C,PN_1F5
  270.                 OUT (C),D
  271.                 LD C,PN_1F4
  272.                 OUT (C),D
  273.                 LD C,PN_1F3
  274.                 OUT (C),E
  275.                 LD C,PN_1F2
  276.                 LD A,0X30                       ;ГРУЗИМ СЕКТОРОВ КАК И БЫЛО
  277.                 OUT (C),A
  278.                 EX AF,AF'                       ;СПРЯТАЛИ КОЛИЧЕСТВО СЕКТОРОВ ЗАГРУЗКИ
  279.                 LD C,PN_1F7
  280.                 LD A,0X20
  281.                 OUT (C),A                       ;КОМАНДА ЧТЕНИЯ
  282.                 LD C,PN_1F7
  283. HDDRD1_         IN A,(C)
  284.                 AND 0X88
  285.                 CP 8
  286.                 JR NZ,HDDRD1_
  287.                 EX AF,AF'
  288. HDDRD2_         EX AF,AF'
  289.                 XOR A
  290.                 LD C,PN_1F0
  291. READSC1_        IN E,(C)
  292.                 INC C
  293.                 IN D,(C)
  294.                 DEC C
  295.                 LD (HL),E
  296.                 INC HL
  297.                 LD (HL),D
  298.                 INC HL
  299.                 DEC A
  300.                 JR NZ,READSC1_
  301.                 LD C,PN_1F7
  302. HDDRD3_         IN A,(C)
  303.                 AND 0X80
  304.                 JR NZ,HDDRD3_
  305.                 EX AF,AF'
  306.                 DEC A
  307.                 JR NZ,HDDRD2_
  308.                 RET
  309. EHDDBOOT2
  310.  
  311.                 include "hdd_cd_boot.a80"
  312.  
  313. HDDRDLN EQU $-HDDREAD
  314.  
  315. ;[CD BOOT]
  316. CDBOOT  XOR A
  317.         CALL CLS
  318.         CALL MEMSET
  319.         CALL HDDBINI
  320.         EI
  321.         JP CDBOOTGO
  322.  
  323. UMOUNTIMAGE     RST8 _MOUNTER,_GET_VIRT_BITS
  324.                 AND 0X0F
  325.                 JP Z,RESTART
  326.                 LD IX,WDISMOUNT
  327.                 RST8 _WINW
  328.                 JP _RULILKA                     ;ВОЗВРАЩАЕМСЯ К ОБЩЕМУ УПРАВЛЕНИЮ
  329.  
  330. DISMOUNT_A      XOR A
  331. DISMOUNT_DRV    RST8 _MOUNTER,_CLOSEMOUNT
  332.                 JP RESTART
  333.  
  334. DISMOUNT_B      LD A,1
  335.                 JR DISMOUNT_DRV
  336.  
  337. DISMOUNT_C      LD A,2
  338.                 JR DISMOUNT_DRV
  339.  
  340. DISMOUNT_D      LD A,3
  341.                 JR DISMOUNT_DRV
  342.  
  343. ;[СБРОС CMOS]
  344. RESET_CMOS      RST8 _CMOS_RW,_CLEAR_CMOS
  345.                 CALL SET_MODES
  346.                 JP RESTART
  347.  
  348. ;[УСТАНОВКА ЗАДЕРЖКИ ДО ОПРЕДЕЛЕНИЯ HDD]
  349. HDDTIMEOUT      LD H,HDD_TIMEOUT
  350.                 CALL READCMOS
  351.                 LD E,A
  352.                 AND 0X0F
  353.                 INC A
  354.                 CP 10
  355.                 JR C,HDDTIMEOUT1
  356.                 XOR A
  357. HDDTIMEOUT1     LD D,A
  358.                 LD A,E
  359.                 AND 0XF0
  360.                 OR D
  361.                 LD L,A
  362.                 CALL WRITECMOS
  363.                 AND 0X0F
  364.                 ADD A,'0'
  365.                 LD (TXT_HDDTIMEOUT),A
  366.                 JR REPRINT_MENU
  367.  
  368.         IF 0
  369. ;[УСТАНОВКА ЗАДЕРЖКИ ЗАПУСКА SCREENSAVER]
  370. SCRSAVTIMEOUT   LD H,HDD_TIMEOUT
  371.                 CALL READCMOS
  372.                 LD E,A
  373.                 AND 0XF0
  374.                 ADD A,0X10
  375.                 CP 0XA0
  376.                 JR C,.L0
  377.                 XOR A
  378. .L0             LD D,A
  379.                 LD A,E
  380.                 AND 0X0F
  381.                 OR D
  382.                 LD L,A
  383.                 CALL WRITECMOS
  384.                 AND 0XF0
  385.                 RRCA
  386.                 RRCA
  387.                 RRCA
  388.                 RRCA
  389.                 LD (TIMEOUTSCRSAV),A
  390.                 ADD A,'0'
  391.                 LD (TXT_SCRSAVDELAY),A
  392.                 JR REPRINT_MENU
  393.         ENDIF
  394.  
  395. ;[УСТАНОВКА РАЗРЕШЕНИЯ/ЗАПРЕЩЕНИЯ ОЗВУЧКИ КЛАВИАТУРЫ]
  396. SOUND_KEYS      LD C,M_SOUNDKEYS
  397.                 LD HL,SNDKEYS_STAT
  398. SET_MENU        PUSH HL
  399.                 LD H,CMOS_BYTE_01
  400. SET_MENU1       CALL READCMOS
  401.                 XOR C
  402.                 LD L,A
  403.                 CALL WRITECMOS
  404.                 AND C
  405.                 POP HL
  406.                 CALL SET_ONOFF
  407. REPRINT_MENU    LD HL,SETUPERTXT
  408.                 RST8 _PRINT_MESSAGE
  409.                 CALL REST_COLCURS
  410.                 RST8 _COM_DEV,_CONTROL_SD
  411.                 JP _RULILKA
  412.  
  413. ;[УСТАНОВКА РАЗРЕШЕНИЯ/ЗАПРЕЩЕНИЯ ДОСТУПА К SD КАРТЕ NEOGS]
  414. ACS_SDNGS       LD C,M_ACCESSSDG
  415.                 LD HL,ACCSSDG_STAT
  416.                 JR SET_MENU
  417.  
  418. ;[УСТАНОВКА ВЫБОРА ДРАЙВЕРА ПРИНТЕРА]
  419. AYPRN_SETUP     LD C,M_TYPE_FONT
  420.                 LD HL,ETXT_AYPRINTER
  421.                 JR SET_MENU
  422.  
  423. ;[ВКЛЮЧЕНИЕ/ВЫКЛЮЧЕНИЕ АВТОСТАРТА TAP ФАЙЛА ПРИ ВЫБОРЕ В FILE BROWSER]
  424. AUTO_TAPE       LD C,M_AUTO_TAPE
  425.                 LD HL,TXT_AUTOTAPE
  426.                 PUSH HL
  427.                 LD H,CMOS_BYTE_00
  428.                 JR SET_MENU1
  429.  
  430. ;для резидента HONEY COMANDER
  431.         IFDEF REZIDENT
  432. ;включение/выключение резидента
  433. REZID_SETUP     LD C,M_REZIDENT
  434.                 LD HL,TXT_REZIDENT
  435.                 JR SET_MENU
  436.  
  437. ;включение/выключения порчи резидента при запуске
  438. KILL_REZID      LD C,M_KILL_REZIDENT
  439.                 LD HL,TXT_KILLREZID
  440.                 PUSH HL
  441.                 LD H,CMOS_BYTE_03
  442.                 JR SET_MENU1
  443.         ENDIF;REZIDENT
  444.  
  445. ;[УСТАНОВКА ПЕРЕД ВЫВОДОМ МЕНЮ SETUP]
  446. SETUPM          LD IX,SETUPER
  447.                 LD H,CMOS_BYTE_01
  448.                 CALL READCMOS
  449.                 LD B,A
  450.                 AND M_SOUNDKEYS
  451.                 LD HL,SNDKEYS_STAT
  452.                 CALL SET_ONOFF
  453.                 LD A,B
  454.                 AND M_ACCESSSDG
  455.                 LD HL,ACCSSDG_STAT
  456.                 CALL SET_ONOFF
  457.                 LD H,CMOS_BYTE_00
  458.                 CALL READCMOS
  459.                 AND M_AUTO_TAPE
  460.                 LD HL,TXT_AUTOTAPE
  461.                 CALL SET_ONOFF
  462.                 LD H,HDD_TIMEOUT
  463.                 CALL READCMOS
  464.                 LD D,A
  465.                 AND 0X0F
  466.                 ADD A,'0'
  467.                 LD (TXT_HDDTIMEOUT),A
  468.                 LD A,D
  469.                 AND 0XF0
  470.                 RRCA
  471.                 RRCA
  472.                 RRCA
  473.                 RRCA
  474.                 ADD A,'0'
  475. ;               LD (TXT_SCRSAVDELAY),A
  476.                 RST8 _WINW
  477.                 JP _RULILKA
  478.  
  479. ;[ATM CP/M]
  480. ATM_CPM         EI
  481.                 HALT
  482.                 DI
  483.                 PEC_ON M_SHADOW_BF
  484.                 LD HL,CPM_PAGES
  485.                 LD DE,0X3F
  486. ATM_CPM1        LD BC,CONF_128
  487.                 OUT (C),D
  488.                 LD BC,LOW (WIN_A3)
  489. ATM_CPM2        OUTI
  490.                 LD A,B
  491.                 SUB E
  492.                 LD B,A
  493.                 JR NZ,ATM_CPM2
  494.                 LD A,D
  495.                 XOR 0X10
  496.                 LD D,A
  497.                 JR NZ,ATM_CPM1
  498.                 LD SP,0X8000
  499.                 LD BC,0X177
  500.                 LD A,6
  501.                 OUT (C),A
  502.                 PEC_OFF M_SHADOW_BF
  503.                 JP 0X000C
  504.  
  505. CPM_PAGES       DB 3!0X7F,2!0X7F,4!0X7F,0!0X7F
  506.                 DB 3!0X7F,2!0X7F,5!0X7F,ROM_ATMCPM
  507.  
  508. ;[УСТАНОВКА РАЗРЕШЕНИЯ/ЗАПРЕЩЕНИЯ ЭМУЛЯЦИИ ЛЕНТЫ]
  509. SET_EMU_TAPE    LD H,CMOS_BYTE_00
  510.                 CALL READCMOS
  511.                 AND M_EMUL_TAPE
  512.                 RET Z
  513.                 LD BC,BREAK_LOW_WR
  514.                 LD A,LOW (ADRBRK_EMUTAP)
  515.                 OUT (C),A
  516.                 LD B,HIGH (BREAK_HIGH_WR)
  517.                 LD A,HIGH (ADRBRK_EMUTAP)
  518.                 OUT (C),A
  519.                 PEC_ON M_BREAK_BF
  520.                 RET
  521.  
  522.                 include sdcardboot.a80
  523.  
  524. SONGLN          CALL START_SONGLN
  525.                 JP RESTART
  526.  
  527. START_SONGLN    DI
  528.                 PUSH IX
  529.                 PUSH IY
  530.                 LD A,0X11
  531.                 CALL SET_7FFD
  532.                 LD A,0X10
  533.                 CALL SET_EFF7
  534.                 LD HL,0X4000
  535.                 LD DE,0XE000
  536.                 LD BC,0X1B00
  537.                 LDIR
  538.                 LD HL,0XD000
  539.                 LD DE,0XD001
  540.                 LD BC,0X1000
  541.                 LD (HL),0
  542.                 LDIR
  543. SONGLN1         XOR A
  544.                 IN A,(0XFE)
  545.                 CPL
  546.                 AND 0X1F
  547.                 JR NZ,SONGLN1
  548.                 PEC_ON M_SHADOW_BF
  549.                 EVOPORT WIN_A0,ROM_RST82
  550.                 CALL UNP_SONGLN
  551.                 EVOPORT WIN_A0,ROM_BAS48|0X80
  552.                 PEC_OFF M_SHADOW_BF
  553.                 CALL 0XC000
  554.                 LD HL,0XE000
  555.                 LD DE,0X4000
  556.                 LD BC,0X1B00
  557.                 LDIR
  558.                 LD HL,0XC000
  559.                 LD DE,0XC001
  560.                 LD BC,0X3FFF
  561.                 LD (HL),0
  562.                 LDIR
  563.                 LD A,0X10
  564.                 CALL SET_7FFD
  565.                 XOR A
  566.                 CALL SET_EFF7
  567.                 POP IY
  568.                 POP IX
  569.                 RET
  570.