рдХрдИ рд▓реЛрдЧ рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реЛрдВрдЧреЗ рдХрд┐ рдЙрднрд░рддреЗ рд╣реБрдП COVID-19 рдорд╣рд╛рдорд╛рд░реА рдиреЗ рдЖрдИрдЯреА рд╕рдореБрджрд╛рдп рдХреЗ рдЬреАрд╡рди рдХреЛ рдмрд╣реБрдд рдЦрд░рд╛рдм рдХрд░ рджрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рдЕрдВрдзреЗрд░реЗ рдкрдЯреНрдЯреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдкреНрд░рдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВредрдорд╛рд░реНрдЪ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА, рдкреНрд░рд╕рд┐рджреНрдз рдбреЗрдореЛрдкрд╛рд░реНрдЯреА рдлреЙрд░рдПрд╡рд░ 2020 рдХреЛ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ , рдФрд░ рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ рд╢рд░рдж рдЛрддреБ рддрдХ рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд░рджреНрджреАрдХрд░рдг рд╕реЗ рдмрд╣реБрдд рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдЖрдпреЛрдЬрдХреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рдд рдХреАред рдЙрдиреНрд╣реЛрдВрдиреЗ рдореЗрд░реЗ рдПрдХ рдХрд╛рдо рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛, рдпрд╣ рд╕рдордЭрд╛рддреЗ рд╣реБрдП рдХрд┐ рдХреЛрдИ Apple II рдирд╣реАрдВ рдерд╛, рдФрд░ рдмрджрд▓реЗ рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдХрд╛рдо рдХреЗ рд╡реАрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛редрдареАрдХ рд╣реИ, рдореБрдЭреЗ рд░рд┐рдХреЙрд░реНрдб рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреА рд╕реВрдЪреА рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛:Amstrad CPC, Thomson, PMD-85, MSX, ZX81, рд╕реИрдо рдХреВрдк, рд╕рднреА рдЧреИрд░-рд╕реА = 64 8-рдмрд┐рдЯ рдХрдореЛрдбреЛрд░ рдпрд╛ рдХреЛрдИ рднреА 8-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдордореИрдВ ZX81 рд╕реЗ рдЖрдХрд░реНрд╖рд┐рдд рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдВрдкреНрдпреВрдЯрд░ рд╕реАрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдпрд╛редрд╢реЛрдз рдореЗрд░реЗ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реБрдЖ:рдПрдореБрд▓реЗрдЯрд░
рдореИрдВрдиреЗ рдЪреБрдирд╛ EightyOneрдиреЗ 1.6.1 рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдпрд╛ред рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдбрд┐рдмрдЧрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд┐рд╕реА рдЕрдиреНрдп рдореЙрдбрд▓ рдХрд╛ рдЕрдиреБрдХрд░рдг рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - ZX80, рдмрд╛рдж рдореЗрдВ рдореБрдЭреЗ рдПрдХ рдФрд░ рдирд┐рд░реНрдорд╛рдг 3.7 рдорд┐рд▓рд╛редрдХреНрд░реЙрд╕ рдХрд╛ рдорддрд▓рдм рд╣реИ
рдЦреЛрдЬ FASM (рдПрдХ рдХреЗ рд▓рд┐рдП рд▓рд╛рдпрд╛ рдордВрдЪ рдкрд░ рд╡рд┐рд╖рдп рдордВрдЪ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдВрдХрд▓рд┐рдд рдЙрджрд╛рд╣рд░рдг рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдореИрдВ рдЕрдиреНрдп рдХреЛрдбрд╛рдВрддрд░рдХ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА -редред Pasmo рдФрд░ рджреВрд╕рд░реЛрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдХрд╛рдо рдХрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛редрд▓рд╛рдВрдЧ рдЦреЛрдЬреЗрдВ рдПрдХ рд▓рд╛рдпрд╛ рдореБрджреНрд░рдг рдХрд╛ рдЙрджрд╛рд╣рд░рдг Hello, world!, рдЪрдорддреНрдХрд╛рд░! рдпрд╣ рдирд┐рдХрд▓рд╛! рдЕрдм рддреАрд╕рд░реЗ рдПрдкрд┐рд╕реЛрдб рдХреА рдмрд╛рд░реА рдЖрдИ рд╣реИредрдкреНрд░рд▓реЗрдЦрди
рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣рд╛рдБ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ редDisassembler ROM рдпрд╣рд╛рдБредрдореЗрдореЛрд░реА рдХрд╛рд░реНрдб:0000-1FFF - ROM
2000-3FFF - Shadow ROM. , Interface 1
4000-7FFF - 16
рдореЗрдореЛрд░реА рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╕рд┐рд╕реНрдЯрдо рдЪрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рд╣реИ редрдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, 16509 рдкрд░, рдмреЗрд╕рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдФрд░ рдЗрд╕рдХреЗ рдЪрд░ рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╣реИрдВредBASIC рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдкреНрд░рд╛рд░реВрдк рд╢рд╛рдорд┐рд▓ рд╣реИ:2 big endian
2
...
1 ($76) -
рдХреИрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ BASIC рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реА рд╕рдВрднрд╡ рд╣реИрдВ; рдпрд╣ рд╡рд┐рдзрд┐ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдереА:1 REM ( )
2 RANDOMIZE USR(16514) - , REM
рдЖрдкрдХреЛ рд╕рд┐рд╕реНрдЯрдо рдЪрд░ D_FILE рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реА рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИредрд╕рдВрдХреЗрддрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:D_FILE: defw display_file
display_file: defb _NL
defs 32
...
defs 32
defb _NL
рдкрд╣рд▓реА рдмрд╛рдЗрдЯ рд▓рд╛рдЗрди рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рд╕рдВрдХреЗрдд рд╣реИ, рдлрд┐рд░ 32 рдмрд╛рдЗрдЯреНрд╕ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╣реИрдВредрдпрд╣ 24 рд░реЗрдЦрд╛рдПрдБ рдирд┐рдХрд▓реАрдВ, рдЬреЛ рднрд╛рд░реА рджрд┐рдЦ рд░рд╣реА рдереАрдВредрдкрд╣рд▓рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЬреЛ рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛:
;compile with sjasmplus
device zxspectrum128
p_start: org 0x4009
begin
VERSN: defb 0
E_PPC: defw 20 ; BASIC line number of line with cursor.
D_FILE: defw display_file2
DF_CC: defw display_file2+1
VARS: defw variables
DEST: defw 0
E_LINE: defw edit_line
CH_ADD: defw p_end-1
X_PTR: defw 0
STKBOT: defw p_end
STKEND: defw p_end
BERG: defb 0
MEM: defw MEMBOT
SPARE1: defb 0
DF_SZ: defb 2 ; Number of lines in lower part of screen.
S_TOP: defw 10 ; BASIC line number of line at top of screen.
LAST_K: defw 0xffff
DB_ST: defb 0
MARGIN: defb 55 ; Blank lines above/below TV picture: US = 31, UK = 55.
NXTLIN: defw display_file ; Memory address of next program line to be executed.
OLDPPC: defw 0
FLAGX: defb 0
STRLEN: defw 0
T_ADDR: defw 0x0c8d
SEED: defw 0
FRAMES: defw 0 ; Updated once for every TV frame displayed.
COORDS: defw 0
PR_CC: defb 0xbc
S_POSN: defb 0x21,0x18
CDFLAG: defb 0x40
PRBUF: defs 0x20
defb _NL
MEMBOT: defs 0x1e
SPARE2: defw 0
; Start of the BASIC area for user programs.
basic_0001: defb 0,1 ; 1 REM
defw basic_0010-basic_0001-4
defb _REM
; Start of user machine code program
mem_16514:
ld hl,p_end;display_file2
push hl
;cls
ld c,25
c1:
ld b,32
ld (hl),$76:inc hl
c2:
ld (hl),0:inc hl
djnz c2
dec c
jr nz,c1
pop hl
push hl
ld c,$0
ylp:
ld (hl),$76
inc hl
ld b,32
xlp:
ld (hl),c
inc hl
inc c
bit 6,c
jr nz,endp;ret nz
djnz xlp
jr ylp
endp:
pop hl
ld (D_FILE),hl
jr $
display_file2:
dup 25
defb _NL
edup
end
display /d,end-begin
savebin "prb.p",begin,end-begin
рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдВрд╕реНрдХрд░рдг рдиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ редрдПрдХ рдЦрд╛рдореА: рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдирд┐рдЪрд▓рд╛ рд░реЗрдЦрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓рд╛рдЗрдиреЗрдВ рдЦрд╛рд▓реА рд╣реИрдВред рдореИрдиреБрдЕрд▓ рдХреЛ рдкрдврд╝рдирд╛ рдПрдХ рдФрд░ рдмрджрд▓рд╛рд╡ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ:NXTLIN: defw basic_0010 ;
рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╕рд░рд▓ рдЪрд╛рд▓ рдирд┐рдХрд▓рд╛: рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЖрд░рдпреВрдПрди рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдЦреБрдж рд╕реЗ рд╢реБрд░реВ рд╣реЛрдЧрд╛редрд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореИрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛: рдкрд╣рд▓реЗ рдореЙрдбрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реА рдореЗрдВ рднрд░рдирд╛, рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рд┐рдВрдЯрд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо "рд╣реИрд▓реЛ, рд╡рд░реНрд▓реНрдб" рдореЗрдВ рдерд╛, рдлрд┐рд░ рдХреЛрдб 00-63 рдХреЗ рд╕рд╛рде рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рднрд░рдирд╛ред
рдкрд╣рд▓реЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рдЧрд▓рддреА рдХреА рдФрд░ рдХреЛрдб 00-255 рдХреЗ рд╕рд╛рде рд╡рд░реНрдгреЛрдВ рдХреЛ рднрд░рдирд╛ рд▓рд┐рдЦрд╛, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрд╢реЛрдз рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХреЗрд░ рдХрд╛ рдХрд╛рдо рдерд╛ , рдЬреЛ рдирд┐рд░реНрдмрд╛рдз рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реНрд╡рдпрдВ рдПрдХ рдмрдбрд╝реА рдЙрдкрд▓рдмреНрдзрд┐ рд╣реИредрдФрд░ рдкреНрд░рдЬрд╛рддрдВрддреНрд░ рд╕реЗ рдкрд╣рд▓реЗ, 1k рдирд╛рдорд╛рдВрдХрди рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдкрд░ рдмрд╣реБрдд рд╕рдордп рд▓рдЧреЗрдЧрд╛редZX80 рд░рд╣рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдЪрд░рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдХреНрд░рдо рд╣реИредрд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдпрд╣рд╛рдБ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ редрдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдФрд░ рдбрд┐рдмрдЧрд░ рдореЗрдВ рджреЗрдЦрд╛:
рдпрд╣рд╛рдВ рдереЛрдбрд╝реА рд╕реА рд╕реАрдорд╛ рд╣реИ - 1k рдореЗрдореЛрд░реА, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдХрд┐рд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реИредрд╢рд╛рдпрдж рдХрд┐рд╕реА рджрд┐рди рд▓рд┐рдЦреВрдВрдЧрд╛ред