PDA

Просмотр полной версии : 128 -> 48



boo_boo
03.03.2006, 04:37
напомните, плз, как из 128 режима переключиться в 48 (полноценный, с закрытым 7ffd), так, чтобы безболезненно вернуться после этого в васик. от лысого out(7ffdH),30H васик обижается :(

Vladimir Kladov
03.03.2006, 06:46
randomize usr 0
?

boo_boo
03.03.2006, 08:08
randomize usr 0
?кхем.. :rolleyes: не, аналог команды васика-128 "spectrum", не прерывающий выполнение программы. OUT(7ffd),#30 прекрасно все переключает, но стоит сделать RET, как настают кранты -- тк на стеке адрес в ПЗУ-0 :(

Jukov
03.03.2006, 16:09
В своём буте я делаю так для перехода в режим 48 с открытым портом:
RES 4,(IY+1)
LD SP,(23613)
LD HL,#1303
EX (SP),HL
LD HL,#1B7D
PUSH HL

Дальше тебе нужно добавить лишь out. В литературе также еще рекомендуется переключать каналы на работу с ZX-принтером, но думаю тебе это не понадобится.

Wlodek
03.03.2006, 20:33
Переключение из 128К в 48К "на ходу":

CALL сюда-> DI
LD SP,(23613)
POP HL
LD HL,4867 ; ERR_SP FOR 48-BASIC
PUSH HL
LD HL,7030 ; CONTINUE INTERPRETATOR 48-BASIC
PUSH HL
RES 4,(IY+1); сброс флага 128К
LD DE,5566 ; INFORMATION FOR STREAMS
LD HL,(23631) ; CHANS
LD BC,15
ADD HL,BC
EX DE,HL ; DE=ADDR.FOR STREAMS/CHANNELS, HL=5556
LD C,4 ; BC=4 FOR LDIR
LDIR
EI
RET
; после возврата из этой подпрограммы будет 48К режим с открытым портом #7FFD.
; Если нужно закрыть порт, запишите в него нужный байт по возвращении
; из подпрограммы.

Вызов этой подпрограммы
не опасен, поэтому специальной проверки на 128К не требуется.

boo_boo
04.03.2006, 15:03
оно самое, спасибо :)