Den Zurin
12.12.2010, 07:26
Здраствуйте!
При написании программы для ZX Spectrum у меня возник такой вопрос.
По умолчанию в ZX Spectrum основной экран использует только 22 строки, нижние 2 строки используются под служебный экран (сообщения об ошибках и др.).
Можно увеличить размер основного экрана до 24 строк?
В литературе по ZX Spectrum описывается системная переменная DF_SZ (адрес 23659), задающая число строк в служебном экране. Я попробовал записать туда 0, но основной экран от этого не увеличился - при выводе в нижние 2 строки программа зависает. Вот текст программы на ассемблере:
ORG 60000
; POKE 23659, 0
LD A,0
LD (IY+49),A
; clear screen
CALL 3435
; select channel #2
LD A, 0
CALL 5633
; PRINT AT 23,0; "*";
LD A,#16
RST 16
LD A,23
RST 16
LD A,0
RST 16
LD A,"*"
RST 16
; wait key pressed
RES 5,(IY+1)
LOOP BIT 5,(IY+1)
JR Z,LOOP
; POKE 23659,2
LD A,2
LD (IY+49),A
; clear screen
CALL 3435
; select channel #2
LD A,2
CALL 5633
; return
RET
При написании программы для ZX Spectrum у меня возник такой вопрос.
По умолчанию в ZX Spectrum основной экран использует только 22 строки, нижние 2 строки используются под служебный экран (сообщения об ошибках и др.).
Можно увеличить размер основного экрана до 24 строк?
В литературе по ZX Spectrum описывается системная переменная DF_SZ (адрес 23659), задающая число строк в служебном экране. Я попробовал записать туда 0, но основной экран от этого не увеличился - при выводе в нижние 2 строки программа зависает. Вот текст программы на ассемблере:
ORG 60000
; POKE 23659, 0
LD A,0
LD (IY+49),A
; clear screen
CALL 3435
; select channel #2
LD A, 0
CALL 5633
; PRINT AT 23,0; "*";
LD A,#16
RST 16
LD A,23
RST 16
LD A,0
RST 16
LD A,"*"
RST 16
; wait key pressed
RES 5,(IY+1)
LOOP BIT 5,(IY+1)
JR Z,LOOP
; POKE 23659,2
LD A,2
LD (IY+49),A
; clear screen
CALL 3435
; select channel #2
LD A,2
CALL 5633
; return
RET