https://emuverse.ru/w/index.php?title=%D0%A3%D0%9A%D0%9D%D0%A6_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%91%D0%B5%D0%B9%D1%81%D0%B8%D0%BA-%D0%92%D0%B8%D0%BB%D1%8C%D0%BD%D1%8E%D1%81_%D1%81_%D0%BA%D0%B0%D1%81%D1%81%D0%B5%D1%82%D1%8B_%D0%9F%D0%97%D0%A3&feed=atom&action=history
УКНЦ загрузка Бейсик-Вильнюс с кассеты ПЗУ - История изменений
2024-03-29T13:31:49Z
История изменений этой страницы в вики
MediaWiki 1.40.0
https://emuverse.ru/w/index.php?title=%D0%A3%D0%9A%D0%9D%D0%A6_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%91%D0%B5%D0%B9%D1%81%D0%B8%D0%BA-%D0%92%D0%B8%D0%BB%D1%8C%D0%BD%D1%8E%D1%81_%D1%81_%D0%BA%D0%B0%D1%81%D1%81%D0%B5%D1%82%D1%8B_%D0%9F%D0%97%D0%A3&diff=1986&oldid=prev
Nzeemin: Новая страница: «{{Emuverse}} Процесс загрузки с кассеты ПЗУ Бейсик Вильнюс. # Загрузчик в ОЗУ ЦП дает команду…»
2015-10-07T07:37:34Z
<p>Новая страница: «{{Emuverse}} Процесс загрузки с кассеты ПЗУ Бейсик Вильнюс. # Загрузчик в ОЗУ ЦП дает команду…»</p>
<p><b>Новая страница</b></p><div>{{Emuverse}}<br />
<br />
Процесс загрузки с кассеты ПЗУ Бейсик Вильнюс.<br />
<br />
# Загрузчик в ОЗУ ЦП дает команду на чтение первых 512 байт из картриджа в ОЗУ с адреса 000000<br />
# Загрузчик проверяет что первой командой является 000240 NOP и запускает выполнение с адреса 000000<br />
<pre><br />
; Начало загрузчика, полученного с кассеты ПЗУ<br />
000000 000240 NOP<br />
000002 012702 MOV #000104, R2<br />
000004 000104<br />
000006 110062 MOVB R0, 000003(R2) ;<br />
000010 000003<br />
000012 012701 MOV #000005, R1 ;<br />
000014 000005<br />
000016 012703 MOV #000116, R3<br />
000020 000116<br />
; Далее через канал 2 считываем 27653 слов с кассеты в ОЗУ с адреса 5566<br />
000022 000402 BR 000030 ; --+<br />
; Передача массива параметров в канал 2 ; |<br />
000024 112337 MOVB (R3)+, @#176676 ; | <-+<br />
000026 176676 ; | |<br />
000030 105737 TSTB @#176674 ; <-+ |<br />
000032 176674 ; | |<br />
000034 100375 BPL 000030 ; --+ |<br />
000036 077106 SOB R1, 000024 ; --+<br />
000040 105712 TSTB (R2) ; Проверяем состояние ошибки операции<br />
000042 001356 BNE 000000 ; Ошибка - повторяем сначала<br />
; Теперь по адресам 005566-065313 находится дамп с кассеты ПЗУ<br />
; Подсчет контрольной суммы<br />
000044 005003 CLR R3<br />
000046 012701 MOV #005556, R1<br />
000050 005556<br />
000052 012702 MOV #027653, R2<br />
000054 027653<br />
000056 062103 ADD (R1)+, R3 ; <-+<br />
000060 005503 ADC R3 ; |<br />
000062 077203 SOB R2, 000056 ; --+<br />
000064 005203 INC R3<br />
000066 001344 BNE 000000<br />
; Переход на загруженный код<br />
000070 000137 JMP @#005556<br />
000072 005556<br />
<br />
; Массив параметров для получения данных с кассеты ПЗУ через канал 2<br />
000104 004000 ; Команда (10) и ответ<br />
000106 000021 ; Номер кассеты и номер устройства<br />
000110 000200 ; Адрес от начала кассеты ПЗУ<br />
000112 005566 ; Адрес в ОЗУ<br />
000114 027653 ; Количество слов; это 24406 (десятичное) байт<br />
<br />
; Начало работы основного блока<br />
; Перенос 6-ти слов с адресов 000000-.. на адреса 001206-..<br />
005556 012706 MOV #001000, SP<br />
005560 001000<br />
005562 012700 MOV #001206, R0<br />
005564 001206 <br />
005566 005001 CLR R1<br />
005570 012702 MOV #000006, R2<br />
005572 000006<br />
005574 012120 MOV (R1)+, (R0)+ ; <-+<br />
005576 077202 SOB R2, 005574 ; --+<br />
<br />
005600 013720 MOV @#000060, (R0)+<br />
005602 000060<br />
005604 013720 MOV @#000062, (R0)+<br />
005606 000062<br />
005610 013720 MOV @#000244, (R0)+<br />
005612 000244<br />
005614 013720 MOV @#000246, (R0)+<br />
005616 000246<br />
005620 005037 CLR @#001236<br />
005622 001236<br />
005624 012737 MOV #070074, @#176640<br />
005626 070074<br />
005630 176640<br />
005632 013720 MOV @#176642, (R0)+<br />
005634 176642<br />
005636 012737 MOV #020306, @#176642<br />
005640 020306<br />
005642 176642<br />
005644 005237 INC @#176640<br />
005646 176640<br />
005650 013720 MOV @#176642, (R0)+<br />
005652 176642<br />
005654 012737 MOV #000600, @#176642<br />
005656 000600<br />
005660 176642<br />
005662 005067 CLR 001170<br />
005664 173302<br />
005666 012737 MOV #160000, @#001034<br />
005670 160000<br />
005672 001034 <br />
005674 013737 MOV @#001034, @#001032<br />
005676 001034<br />
005700 001032<br />
005702 005067 CLR 001054<br />
005704 173146<br />
005706 005067 CLR 001142<br />
005710 173230<br />
005712 012767 MOV #000310, 001006<br />
005714 000310<br />
005716 173066<br />
005720 012700 MOV #001060, R0<br />
005722 001060<br />
005724 012720 MOV #000012, (R0)+<br />
005726 000012<br />
005730 012720 MOV #000012, (R0)+<br />
005732 000012<br />
005734 005020 CLR (R0)+<br />
005736 010001 MOV R0, R1<br />
005740 012720 MOV #040101, (R0)+<br />
005742 040101<br />
005744 012720 MOV #027076, (R0)+<br />
005746 027076<br />
005750 012120 MOV (R1)+, (R0)+<br />
005752 012120 MOV (R1)+, (R0)+<br />
005754 012701 MOV #000012, R1<br />
005756 000012<br />
005760 012720 MOV #043524, (R0)+ ; <-+<br />
005762 043524 ; |<br />
005764 077103 SOB R1, 005760 ; --+<br />
005766 005037 CLR @#001130<br />
005770 001130<br />
005772 004767 JSR PC, 014170<br />
005774 006172<br />
005776 005037 CLR @#001064<br />
006000 001064<br />
006002 004767 JSR PC, 007746<br />
006004 001740<br />
</pre><br />
<br />
[[Категория:УКНЦ]]</div>
Nzeemin