Немига 405 boot 02A: различия между версиями

Материал из Emuverse
Строка 294: Строка 294:
002040: NOP
002040: NOP
002042: BLO 002070
002042: BLO 002070
002044: TST (R5)+
002044: TST (R5)+ ; R5=154200, (R5)=005727
002046: BEQ 002056 ; Отличие от 3.03 -- в 4.05 условие НЕ сработало -- почему?
002046: BEQ 002056 ; Отличие от 3.03 -- в 4.05 условие НЕ сработало -- почему?
002050: CALL 003652
002050: CALL 003652

Версия от 13:34, 28 января 2017

Загрузка на Немиге 4.05

В дисководе MD0: вставлена дискета 02A.DSK.

 Filename  Blocks  Date      Start    Bytes Trk Sec DskFileOffset  Comment
---------- ------  --------- ----- -------- --- --- ------------- ----------
Boot Block      1                0      512   0   2   0000000000  MD BOOT
Home Block      1                1      512   0   6   0000000200
Reserved        4                2     2048   0  10
Directory       2                6     1024   1  
MD    .SYS      4  22-Dec-91     8     2048   1  11   0000001000  заканчивается на SC03 TR02
RT11SJ.SYS     55  15-Feb-91    12    28160   2   4   0000001800
SWAP  .SYS      0  13-May-92    67        0
LP    .SYS      2  31-May-89    67     1024
LPU   .SYS      0  13-Jan-93    69        0
LN    .SYS      2  20-Oct-92    69     1024
LB    .SYS      2  13-Jan-93    71     1024
VD    .SYS      2  29-Mar-93    73     1024
VMU   .SYS      0  17-Dec-91    75        0
VM    .SYS      2  18-May-92    75     1024
LD    .SYS      8  15-Aug-90    77     4096
SG    .SAV      8  02-Mar-93    85     4096
SL    .SAV      8  22-Jul-91    93     4096
STARTS.SAV      1  22-Mar-93   101      512
ON    .SAV      1  20-May-92   102      512
DATE  .SAV      1  15-Aug-90   103      512
NET   .SAV     14  21-Jun-91   104     7168
DIR   .SAV      4  10-Aug-91   118     2048
RESORC.SAV     22  17-May-88   122    11264
NC    .SAV     25  06-Apr-93   144    12800
EDIK  .SAV     22  24-Feb-93   169    11264
DESS  .SAV     18  13-Feb-92   191     9216
SC    .SYS      3  13-Jan-93   209     1536
MX    .SYS      3  20-Jan-92   212     1536
BINCOM.SAV     10  21-Sep-88   215     5120
SRCCOM.SAV     11  21-Sep-88   225     5632
V0    .SYS      3  06-May-92   236     1536
V1    .SYS      2  05-May-92   239     1024
G8    .SYS      8  22-Feb-93   241     4096
MF    .SAV      3  27-May-92   249     1536
SOS   .SAV      4  29-Apr-87   252     2048
NETRW .SAV      2  29-May-92   256     1024
TRANS .SAV      3  08-Jun-92   258     1536
DUP   .SAV     43  14-Dec-90   261    22016
PIP   .SAV     28  14-Dec-90   304    14336
TXT   .SAV      3  09-Mar-93   332     1536
VD    .COM      1  16-Apr-93   335      512
VD    .DIR      1  16-Apr-93   336      512
< UNUSED >    122              337    62464
---------- ------  --------- ----- --------
 38 files, 329 blocks

Запускаем машину, она загружается в Пульт, пользователь вводит команду D.

Загрузчик в ПЗУ

Floppy0 COMMAND 000030
Floppy0 SET STATE 1 OPER 000020
Floppy0 STEP OUT
Floppy0 PREPARE TRACK 1
Floppy0 COMMAND 000030
Floppy0 SET STATE 1 OPER 000020
Floppy0 STEP OUT
Floppy0 PREPARE TRACK 0
Floppy TRACK 00
Floppy0 COMMAND 000010
Floppy0 SET STATE 1 OPER 000000
Floppy0 READ 17 POS0010 SC01 TR00
Floppy0 SET STATE 0 OPER 000000
Floppy0 COMMAND 000010
Floppy0 SET STATE 1 OPER 000000
Floppy0 READ 17 POS0010 SC01 TR00
Floppy0 READ a0 POS0140 SC02 TR00
Floppy0 READ 3e POS0270 SC03 TR00
Floppy0 READ 83 POS0400 SC04 TR00
Floppy0 READ fe POS0530 SC05 TR00
Floppy0 READ 00 POS0660 SC06 TR00
Floppy0 READ ff POS0790 SC07 TR00
Floppy0 READ ff POS0920 SC08 TR00
Floppy0 READ ff POS1050 SC09 TR00
Floppy0 READ 1f POS1180 SC10 TR00
Floppy0 READ 19 POS1310 SC11 TR00
Floppy0 READ 00 POS1440 SC12 TR00
Floppy0 READ 59 POS1570 SC13 TR00
Floppy0 READ 42 POS1700 SC14 TR00
Floppy0 READ 45 POS1830 SC15 TR00
Floppy0 READ 81 POS1960 SC16 TR00
Floppy0 READ f4 POS2090 SC17 TR00
Floppy0 READ f4 POS2220 SC18 TR00
Floppy0 READ b6 POS2350 SC19 TR00
Floppy0 READ 4a POS2480 SC20 TR00
Floppy0 READ 01 POS2610 SC21 TR00
Floppy0 READ 04 POS2740 SC22 TR00
Floppy0 READ 32 POS2870 SC23 TR00

выходим из подпрограммы чтения
161670: MOV	#000200, @#177766
161676: CLR	PC			; Запуск полученного блока с адреса 000000

Начальный загрузчик MD BOOT

000000: NOP	
000002: BR	000024

Очищается экран и выводится надпись "MD BOOT    V02.02(#)"

Floppy0 COMMAND 000070
Floppy0 SET STATE 1 OPER 000060
Floppy0 STEP IN
Floppy0 PREPARE TRACK 1
Floppy0 COMMAND 000030
Floppy0 SET STATE 1 OPER 000020
Floppy0 STEP OUT
Floppy0 PREPARE TRACK 0
Floppy TRACK 00
Floppy0 COMMAND 000010
Floppy0 SET STATE 1 OPER 000000
Floppy0 READ 17 POS0010 SC01 TR00
Floppy0 SET STATE 0 OPER 000000
Floppy0 COMMAND 000010
Floppy0 SET STATE 1 OPER 000000

Floppy0 READ 17 POS0010 SC01 TR00
Floppy0 READ a0 POS0140 SC02 TR00
Floppy0 READ 3e POS0270 SC03 TR00
Floppy0 READ 83 POS0400 SC04 TR00
Floppy0 READ fe POS0530 SC05 TR00
Floppy0 READ 00 POS0660 SC06 TR00
Floppy0 READ ff POS0790 SC07 TR00
Floppy0 READ ff POS0920 SC08 TR00
Floppy0 READ ff POS1050 SC09 TR00
Floppy0 READ 1f POS1180 SC10 TR00
Floppy0 READ 19 POS1310 SC11 TR00
Floppy0 READ 00 POS1440 SC12 TR00
Floppy0 READ 59 POS1570 SC13 TR00
Floppy0 READ 42 POS1700 SC14 TR00
Floppy0 READ 45 POS1830 SC15 TR00
Floppy0 READ 81 POS1960 SC16 TR00
Floppy0 READ f4 POS2090 SC17 TR00
Floppy0 READ f4 POS2220 SC18 TR00
Floppy0 READ b6 POS2350 SC19 TR00
Floppy0 READ 4a POS2480 SC20 TR00
Floppy0 READ 01 POS2610 SC21 TR00
Floppy0 READ 04 POS2740 SC22 TR00
Floppy0 READ 32 POS2870 SC23 TR00

Floppy0 SET STATE 0 OPER 000000
Floppy0 COMMAND 000070
Floppy0 SET STATE 1 OPER 000060
Floppy0 STEP IN
Floppy0 PREPARE TRACK 1
Floppy0 COMMAND 000010
Floppy0 SET STATE 1 OPER 000000

Floppy0 READ 6c POS0010 SC01 TR01
Floppy0 READ 0d POS0140 SC02 TR01
Floppy0 READ 01 POS0270 SC03 TR01
Floppy0 READ bb POS0400 SC04 TR01
Floppy0 READ 04 POS0530 SC05 TR01
Floppy0 READ 0a POS0660 SC06 TR01
Floppy0 READ 35 POS0790 SC07 TR01
Floppy0 READ ff POS0920 SC08 TR01
Floppy0 READ ff POS1050 SC09 TR01
Floppy0 READ ff POS1180 SC10 TR01
Floppy0 READ 46 POS1310 SC11 TR01  MD.SYS sector 1, занимает 16 секторов
Floppy0 READ d7 POS1440 SC12 TR01  MD.SYS sector 2
Floppy0 READ ff POS1570 SC13 TR01  MD.SYS sector 3
Floppy0 READ e0 POS1700 SC14 TR01  MD.SYS sector 4
Floppy0 READ 00 POS1830 SC15 TR01  MD.SYS sector 5
Floppy0 READ 37 POS1960 SC16 TR01  MD.SYS sector 6
Floppy0 READ 11 POS2090 SC17 TR01  MD.SYS sector 7
Floppy0 READ 05 POS2220 SC18 TR01  MD.SYS sector 8
Floppy0 READ c1 POS2350 SC19 TR01  MD.SYS sector 9
Floppy0 READ c1 POS2480 SC20 TR01  MD.SYS sector 10
Floppy0 READ 5e POS2610 SC21 TR01  MD.SYS sector 11
Floppy0 READ 1f POS2740 SC22 TR01  MD.SYS sector 12
Floppy0 READ 1f POS2870 SC23 TR01  MD.SYS sector 13

Floppy0 SET STATE 0 OPER 000000
Floppy0 COMMAND 000070
Floppy0 SET STATE 1 OPER 000060
Floppy0 STEP IN
Floppy0 PREPARE TRACK 2
Floppy0 COMMAND 000010
Floppy0 SET STATE 1 OPER 000000

Floppy0 READ c5 POS0010 SC01 TR02  MD.SYS sector 14
Floppy0 READ e6 POS0140 SC02 TR02  MD.SYS sector 15
Floppy0 READ 01 POS0270 SC03 TR02  MD.SYS sector 16 -- конец
Floppy0 READ 90 POS0400 SC04 TR02
Floppy0 READ 04 POS0530 SC05 TR02
Floppy0 READ 1a POS0660 SC06 TR02
Floppy0 READ 48 POS0790 SC07 TR02
Floppy0 READ 1f POS0920 SC08 TR02
Floppy0 READ 19 POS1050 SC09 TR02
Floppy0 READ 00 POS1180 SC10 TR02
Floppy0 READ 59 POS1310 SC11 TR02
Floppy0 READ 42 POS1440 SC12 TR02
Floppy0 READ 45 POS1570 SC13 TR02
Floppy0 READ 81 POS1700 SC14 TR02
Floppy0 READ f4 POS1830 SC15 TR02
Floppy0 READ f4 POS1960 SC16 TR02
Floppy0 READ b6 POS2090 SC17 TR02
Floppy0 READ 4a POS2220 SC18 TR02
Floppy0 READ 01 POS2350 SC19 TR02
Floppy0 READ 04 POS2480 SC20 TR02
Floppy0 READ 32 POS2610 SC21 TR02
Floppy0 READ 6c POS2740 SC22 TR02
Floppy0 READ 0d POS2870 SC23 TR02

000154: MOV	(R5), R4
000156: CLR	(R5)
Floppy0 SET STATE 0 OPER 000000

После чтения с диска

... Проверка контрольных сумм? ...

000476: TST	(SP)+
000500: RTI			; Завершение подпрограммы чтения
000366: MOV	#040152, R5
000372: CMP	(SP)+, 177772(R5)
000376: BNE	000664
000400: MOV	(SP)+, R3
000402: BEQ	000412
000412: MOV	#000100, R4
000416: MOV	(SP)+, R3
000420: MOV	(SP)+, R2
000422: MOV	(R5)+, (R2)+
000424: DEC	(SP)
000426: BEQ	000074
000430: SOB	R4, 000422
... Крутится цикл 000422-000430 ...
000432: INC	R3
000434: MOV	R2, -(SP)
000436: MOV	R3, -(SP)
000440: BR	000636
000636: CLR	R1
000640: MOV	#040016, R5
000644: MOV	#000120, R4
000650: MOVB	(R5)+, R2
000652: MOV	R1, R0
000654: ADD	R2, R1
000656: CMP	R1, (SP)
000660: BHI	000300
000662: SOB	R4, 000650
... Крутится цикл 000650-000662 ...
000300: MOV	(SP), -(SP)
000302: SUB	R0, (SP)
000304: MOV	R0, -(SP)
000306: SUB	#000120, R4
000312: MOV	#040000, R3
000316: MOV	(R3), R1
000320: ADD	R4, R1
000322: BEQ	000366
000366: MOV	#040152, R5
000372: CMP	(SP)+, 177772(R5)
000376: BNE	000664
000400: MOV	(SP)+, R3
000402: BEQ	000412
000404: ADD	#000202, R5
000410: SOB	R3, 000404
000412: MOV	#000100, R4
000416: MOV	(SP)+, R3
000420: MOV	(SP)+, R2
000422: MOV	(R5)+, (R2)+
000424: DEC	(SP)
000426: BEQ	000074
000430: SOB	R4, 000422
... Крутится цикл 000422-000430 ...
...
000426: BEQ	000074
000074: TST	(SP)+
000076: RETURN	
003676: MOV	(SP)+, R0
003700: MOV	(SP)+, R1
003702: MOV	(SP)+, R2
003704: MOV	(SP)+, R3
003706: MOV	(SP)+, R4
003710: MOV	(SP)+, R5
003712: RETURN	
002022: BLO	001764
002024: MOV	R2, R5
002026: ADD	#000176, R5
002032: CALL	003742
003742: MOV	@#000004, 003776
003750: MOV	#003636, @#000004
003756: MOV	@#000010, 004004
003764: MOV	#003636, @#000010
003772: CALL	@(SP)+
002036: TST	@(R5)+
002040: NOP	
002042: BLO	002070
002044: TST	(R5)+		; R5=154200, (R5)=005727
002046: BEQ	002056		; Отличие от 3.03 -- в 4.05 условие НЕ сработало -- почему?
002050: CALL	003652
003652: MOV	R5, -(SP)
003654: MOV	R4, -(SP)
003656: MOV	R3, -(SP)
003660: MOV	R2, -(SP)
003662: MOV	R1, -(SP)
003664: MOV	R0, -(SP)
003666: MOV	R5, -(SP)
003670: MOV	000014(SP), R5
003674: CALL	@(SP)+
154202: SEC	
154204: MOV	#000000, @#177600
154212: BHIS	154254
154214: TST	@#177574
154220: NOP	
154222: BHIS	154232
154232: MOV	PC, R0
154234: ADD	#000022, R0
154240: TSTB	@#177564
154244: BPL	154240
... Вечный цикл 154240-15444 ...

Floppy Motor OFF