Closed qboneteam closed 5 years ago
короч, одна и та же дискета в пяти разных эмулях +3. процедура печати десятичного числа самописная, от ромов не зависит
дай процедурину
при этом у меня вот так:
ПРОЦЕДУРИНУ
Так она на диске - автостартует
Что-то специфичное - без турбо у FDC печатается 30000, с турбо N000 Опять криворукие погроммисты из амстрада сделали всё, чтобы ускорить работу uPD765 было нельзя... минимум, чего удалось добиться - 14мкс/байт, при том что ВГ93 с тырдосом может 0.5мкс/байт
То есть тут ничего не сделаешь и можно закрывать?
Турбо отключить. В следующей сборке uPD765 с турбо будет работать медленее, и по крайней мере в этом случае такого не будет
ПРОЦЕДУРИНУ
Вот ПРОЦЕДУРИНА. Непосредственно вывод на экран через rst #10
. Не очень понятно, как она может выдать на выходе что-то кроме цифр, и как это зависит от привода. Наверное, какая-то амстрадовская магия =)
; prints a number in decimal to a self-allocated zero-terminated buffer ready for print subroutine
; ENTRY CONDITIONS
; BC = number
; CY must be set to print leading zeroes (or spaces)
; EXIT CONDITIONS
; Always:
; HL = self-allocated zero-terminated buffer ready for print subroutine
; BC' DE' HL' corrupt
; All other registers preserved
dec_to_str:
ex af,af'
ld a,#FF
.dec_to_str:
ld (.number+1),bc
exx
.number:
ld hl,#0000
push ix
ld xh,a
ld de,.buf
ld bc,#D8F0 ; -10,000
call .write_digit
ld bc,#FC18 ; -1,000
call .write_digit
ld bc,#FF9C ; -100
call .write_digit
ld c,#F6 ; -10
call .write_digit
ld a,l
call .write_char
pop ix
exx
ld hl,.buf
ex af,af'
ret
.write_digit:
xor a ; Clear the A register.
.l1 add hl,bc ; The 'trial subtraction'.
inc a ; Count each 'trial'.
jr c,.l1 ; Jump back until exhausted.
sbc hl,bc ; Restore last 'subtraction'
dec a ; and discount it.
jr nz,.write_char ; If no 'subtractions' were possible jump back to see if a space is to be printed.
ld a,xh ; Здесь в A нужен "0" или #Fx, а не что попало
or a
ret m
.write_char
ld xh,0
add a,"0" ; Otherwise print the digit.
ld (de),a
inc de
xor a
ld (de),a
ret
db "0" ; Leading zero
.buf:
dz "000000"
Да всё, уже определилось, что ПРОЦЕДУРИНА не виновата, это всё из-за скорости работы fdc. Дос наивно ждёт нормальной скорости
Да всё, уже определилось, что ПРОЦЕДУРИНА не виновата, это всё из-за скорости работы fdc. Дос наивно ждёт нормальной скорости
А ежели пропатчить дос чтобы не ждал?