;Bios initialization for ZCPR3 and Advent Turbo Rom cc Ron Lane ; MACLIB Z3BASE ; ORG ccp-120 ; IF EXPATH NE 0 lxi d,path ;Copy cold boot path lxi h,expath ;Into system External Path Area mvi b,3 ;3 bytes call movlop ENDIF ; IF Z3WHL NE 0 mvi a,01 ;Clear or set Wheel Byte sta z3whl ; Clear = 00 sett = 01 ENDIF ; IF Z3MSG NE 0 lxi h,z3msg ;Clear Message bytes mvi b,80 ;80 bytes call zerom ENDIF ; IF Z3NDIR NE 0 lxi h,z3ndir ;Named Directory base call zero128 ;128 bytes ENDIF ; IF RCP NE 0 lxi h,rcp ;RCP address (zero fill) call zero128 ;128 bytes ENDIF ; IF FCP NE 0 lxi h,fcp ;FCP adress (zero fill) call zero128 ;128 bytes ENDIF ; IF Z3ENV NE 0 lxi h,z3env ;ENV address (zero fill) mvi b,128+16 ;128 bytes + 16 for environment call zerom ENDIF ; IF SHSTK NE 0 xra a ;Clear shell stack sta shstk ENDIF ; IF Z3FULL NE 0 lxi d,cmdset ;Set buffers for Multiple commands lxi h,z3cl ;Command line base mvi b,22 ;22 bytes call movlop ;copy command ; jmp ccp ;Run with command ; cmdset: dw z3cl+4 ;Beginning of I/O buffer db z3cls ;Size of I/O buffer db 0 ;Empty buffer db 'LDR SYS.ENV' ;Initial Command db ';START' db 0 ; ELSE ; lxi d,cmdset lxi h,z3cl mvi b,6 call movlop ; jmp ccp ; cmdset: dw z3cl+4 ; For non Z3full db z3cls ; MLTCMD buffer init. db 0 db 0 ENDIF ; ; path: db 1,0 ;Disk A User 0 db 0 ; movlop: ldax d ;Get byte of source mov m,a ;move it inx d ;bump pointers inx h dcr b jnz movlop ;Countinue until done ret ; zero128: mvi b,128 ;128 bytes ; zerom: mvi m,0 ;store 0 inx h dcr b jnz zerom ret ; end