width_max equ 32 ; макс. длина пути панели ;------------------------------------------------- ; Ограничение строки пути (макс. 32 символа) ;------------------------------------------------- width_path: xor a ld (width1__),a ; сбр. флаг переполн. строки ; узнать длину пути ld iy,(__path) ; описатель пути акт. панели ld hl,(__buff) ; буфер пути акт. панели ld e,l ld d,h ld bc,127;255 ; макс. длина пути ;!HARDCODE cmd len cpir dec hl push hl ; сохр. конец пути в буфере sbc hl,de ld a,l cp width_max+1 ; 33 jr c,width__ ; длина пути > 32 ld a,width_max ; 32 ld (width1__),a ; уст. флаг width__: ld c,a ; длина строки пути ld b,0 add a,3+1 ; + имя диска и концевой пробел ld (iy+0),a ; полная длина строки ex af,af' push iy pop hl ld de,7 add hl,de ex de,hl ; de=приемный буфер pop hl ; восст. конец пути в буфере ; скопировать строку and a sbc hl,bc ; hl=начало перекачки push de ldir ld a," " ld (de),a ; концевой пробел inc de xor a ld (de),a ; конец описателя pop de width1__+1: ld a,0 ; 0/32 нет/да флаг переполн. строки or a jr z,width2__ ld a,'\' ld (de),a inc de ld a,"." ld (de),a inc de ld (de),a ; центрировать строку width2__: ex af,af' ; полная длина строки srl a ; / 2 ld c,a ld a,20 ; ширина панели / 2 sub c ld (iy+3),a ; X полож. строки ld a,(disk) ; номер диска акт. панели add a,"A" ld (iy+5),a ret