to
sas9568635: что я могу сказать,
liberation абсолютно прав, это процедура вывода экранной заставки, она копируется в ОЗУ в ходе загрузки, откуда и запускается. Зачем надо было "портить" ещё один участок памяти - мне самому неясно (там код не настолько сложный). Впрочем, есть ещё СБР+Ц ...
Quote:
Почему нельзя было оставить эту процедуру в ПЗУ - тайна сия велика. Хотя эффект, конечно, оригинальный.
там и другие тайны есть, однако.
в частности, после вывода заставки заново повторяется инициализация системы (не железо, которое программируют один раз перед этим, но распределение памяти, стек, повторно копируют бейсик в ОЗУ и т.п.)
Code:
RAM:80C0 RAM_ShowBanner:
...
RAM:80D4 RAM_ShowBan_Go: lxi h, aPk01@Lxbib@@@R
...
RAM:8195 aPk01@Lxbib@@@R:.text "pK-01@"
RAM:8195 .db 27h
RAM:8195 .text "lxBIB"
RAM:8195 .db 27h
RAM:8195 .text "@@@:R"
RAM:8195 .db 0
...
ROM:FCA6 ROM_ShowBanner:
...........................
RAM:BE3C CursorStatus: .db 0
RAM:BFEB jBasicStart: jmp BasicStart
ROM:D7D9 BasicStart: jmp loc_FA8C
ROM:F809 PrintChar: jmp sub_BFF4
RAM:BFF4 jmp loc_DF68
ROM:F800 GoBoot: jmp jBasicStart
----------[BEGIN]-----------------------
ROM:E0C2 lxi h, jBasicStart
ROM:E0C5 mvi m, 0C3h ; jmp
ROM:E0C7 lxi h, doShowBanner
ROM:E0CA shld jBasicStart+1
ROM:E0CD ResumeBoot:
...........................
ROM:E11C jmp GoBoot
----------[END]-------------------------
ROM:E1F8 doShowBanner:
ROM:E1F8 lxi h, BasicStart
ROM:E1FB shld jBasicStart+1
ROM:E1FE mvi a, 1 ; hide cursor
ROM:E200 sta CursorStatus
ROM:E203 lxi h, ROM_ShowBanner
ROM:E206 lxi d, ROM_ShowBanner
ROM:E209 lxi b, 0EAh ; 'ъ'
ROM:E20C call CopyMem
ROM:E20F call PrintChar ; c=0, so just effectively
ROM:E20F ; initialize TTY subsystem
ROM:E212 call RAM_ShowBan_Go
ROM:E215 jmp FlashPalettes
ROM:E6E4 FlashPalettes:
ROM:E6E4 call Pause
ROM:E6E7 mvi a, 3Ch
ROM:E6E9 out 0C1h
ROM:E6EB call Pause
ROM:E6EE mvi a, 5Fh
ROM:E6F0 out 0C1h
ROM:E6F2 call Pause
ROM:E6F5 mvi a, 8Fh
ROM:E6F7 out 0C1h
ROM:E6F9 jmp ResumeBoot
ROM:E218 Pause:
ROM:E218 lxi b, 0FFFFh
ROM:E21B
ROM:E21B loc_E21B:
ROM:E21B dcx b
ROM:E21C mov a, b
ROM:E21D ora c
ROM:E21E jnz loc_E21B
ROM:E221 ret
ROM:E11F CopyMem:
ROM:E11F ldax d
ROM:E120 mov m, a
ROM:E121 inx d
ROM:E122 inx h
ROM:E123 dcx b
ROM:E124 mov a, b
ROM:E125 ora c
ROM:E126 jnz CopyMem
ROM:E129 ret