Код:
RAM:04BC ExtROM: ; CODE XREF: RAM:04AAj
RAM:04BC call CLS
RAM:04BF lxi h, PPI2_RUS
RAM:04C2 lxi d, PIC_RUS
RAM:04C5 mvi m, 0Eh ;0 000 111 0 (setc.7=0)
RAM:04C7 ;
RAM:04C7 ldax d
RAM:04C8 cma
RAM:04C9 ani 1
RAM:04CB jz noRom
RAM:04CE mvi m, 0Fh
RAM:04D0 ldax d ; 7
RAM:04D1 ani 1 ; 7
RAM:04D3 jnz okRom ; 10
RAM:04D6
RAM:04D6 noRom: ; CODE XREF: RAM:04CBj
RAM:04D6 ora c
RAM:04D7 jz R_LOAD_TST
RAM:04DA lxi h, mNoRom ; "Подключите внешнее ПЗУ"
RAM:04DD jmp msgHalt
RAM:04E0 ; ---------------------------------------------------------------------------
RAM:04E0
RAM:04E0 romError: ; CODE XREF: RAM:0574j
RAM:04E0 lxi h, mRomError ; "Внешнее ПЗУ неисправно"
RAM:04E3
RAM:04E3 msgHalt: ; CODE XREF: RAM:04DDj
RAM:04E3 lxi d, ACZU
RAM:04E6 call toSCR
RAM:04E9
RAM:04E9 _HALT: ; CODE XREF: RAM:05B0j
RAM:04E9 ; RAM:05C0j
RAM:04E9 hlt
RAM:0546 okRom: ; CODE XREF: RAM:04D3j
RAM:0546 mvi l, 0Bh ; 7 FA0B PPI0.RUS
RAM:0548 mvi m, 90h ; 10 1 00 1 0 0 0 0 = A - in, BC - OUT
RAM:054A mvi l, 9 ; 7 FA09 PPI0.B
RAM:054C mvi m, 4 ; 10 set ext addr=0004
RAM:054E xchg ; 4
RAM:054F dcx d ; 5 67=7+7+10+7+10+7+10+4+5 after c.7=1
RAM:0550 ldax d ;! 7 !
RAM:0551 mov l, a ; 4
RAM:0552 call extRomIncAddr ; 17+16 33T aftrer bit change
RAM:0555 ldax d ;
RAM:0556 mov h, a
RAM:0557 call extRomIncAddr
RAM:055A push h ; 4,5 START addr
RAM:055B ldax d
RAM:055C mov h, a
RAM:055D mvi l, 0
RAM:055F call extRomIncAddr
RAM:0562 push h
RAM:0563 ldax d
RAM:0564 mov b, a
RAM:0565 call resetRomAddr
RAM:0568 mvi c, 0
RAM:056A
RAM:056A crcLoop: ; CODE XREF: RAM:0570j
RAM:056A ldax d ; 7
RAM:056B add c ; 4
RAM:056C mov c, a ; 5
RAM:056D call extRomIncAddr ; 17+16
RAM:0570 jnz crcLoop ; 10
RAM:0573 inr c
RAM:0574 jnz romError
RAM:0577 call resetRomAddr
RAM:057A
RAM:057A rom2ramLoop: ; CODE XREF: RAM:0580j
RAM:057A ldax d ; 7
RAM:057B mov m, a ; 7
RAM:057C inx h ; 5
RAM:057D call extRomIncAddr ; 17+16
RAM:0580 jnz rom2ramLoop ; 10
RAM:0583 call resetRomAddr
RAM:0586 lxi h, ACZU+40h
RAM:0589 xthl
RAM:058A mvi c, 38h ; '8'
RAM:058C
RAM:058C VerifyRom: ; CODE XREF: RAM:05B9j
RAM:058C ldax d ; 7
RAM:058D cmp m ; 7
RAM:058E jz VerifyRomNextByte
RAM:0591 xchg
RAM:0592 xthl
RAM:0593 call PutHexDE
RAM:0596 mvi m, 20h ; ' '
RAM:0598 inx h
RAM:0599 ldax d
RAM:059A call PutHexA
RAM:059D mvi m, 20h ; ' '
RAM:059F inx h
RAM:05A0 xthl
RAM:05A1 mov a, m
RAM:05A2 xthl
RAM:05A3 call PutHexA
RAM:05A6
RAM:05A6 loc_5A6: ; CODE XREF: RAM:05ACj
RAM:05A6 mvi m, 20h ; ' '
RAM:05A8 inx h
RAM:05A9 mov a, l
RAM:05AA ani 0Fh
RAM:05AC jnz loc_5A6
RAM:05AF dcr c
RAM:05B0 jz _HALT
RAM:05B3 xthl
RAM:05B4 xchg
RAM:05B5
RAM:05B5 VerifyRomNextByte: ; CODE XREF: RAM:058Ej
RAM:05B5 inx h
RAM:05B6 call extRomIncAddr ;17+16
RAM:05B9 jnz VerifyRom ;10
RAM:05BC pop h
RAM:05BD mov a, c
RAM:05BE cpi 38h ; '8'
RAM:05C0 jnz _HALT
RAM:05C3 pop h
RAM:05C4 pchl
RAM:05C4 ; ---------------------------------------------------------------------------
RAM:05C5 mNoRom: .text "Подключите внешнее ПЗУ"
RAM:05C5 .db 0
RAM:05DC mRomError: .text "Внешнее ПЗУ неисправно" ; DATA XREF: RAM:romErroro
RAM:05DC .db 0
RAM:05F3
RAM:05F3 ; =============== S U B R O U T I N E =======================================
RAM:05F3
RAM:05F3
RAM:05F3 resetRomAddr: ; CODE XREF: RAM:0565p
RAM:05F3 ; RAM:0577p ...
RAM:05F3 xra a
RAM:05F4 inx d
RAM:05F5 stax d
RAM:05F6 inx d
RAM:05F7 stax d
RAM:05F8 dcx d
RAM:05F9 dcx d
RAM:05FA ret
RAM:05FA ; End of function resetRomAddr
RAM:05FA
RAM:05FB
RAM:05FB ; =============== S U B R O U T I N E =======================================
RAM:05FB
RAM:05FB
RAM:05FB extRomIncAddr: ; CODE XREF: RAM:0552p
RAM:05FB ; RAM:0557p ...
RAM:05FB inx d ;5 5
RAM:05FC ldax d ;7 12
RAM:05FD inr a ;5 17
RAM:05FE stax d ;7 24
RAM:05FF dcx d ;5 29 5
RAM:0600 rnz ;11 yes/5 40/34 16 (after bit change)
RAM:0601 inx d ;5 39
RAM:0602 inx d ;5 44
RAM:0603 ldax d ;7 51
RAM:0604 inr a ;5 56
RAM:0605 stax d ;7 63
RAM:0606 dcx d ;5 68
RAM:0607 dcx d ;5 73
RAM:0608 cmp b ;4 77
RAM:0609 ret ;10 87
RAM:0609 ; End of function extRomIncAddr
RAM:0609