Banyak yang akan setuju bahwa pandemi COVID-19 yang muncul telah cukup merusak kehidupan komunitas TI. Tapi kita tidak akan berbicara tentang strip gelap, tetapi tentang episode lain.Sudah pada bulan Maret, Forever 2020 yang terkenal dengan demokrasi itu dibatalkan , dan kemudian acara itu ditunda hingga musim gugur. Jauh sebelum pembatalan, saya berbicara dengan panitia. Mereka menolak untuk menerima salah satu pekerjaan saya, menjelaskan bahwa tidak ada Apple II, dan sebagai imbalannya meminta video karya dari komputer asli.Yah, saya tidak bisa mendapatkan catatan, jadi saya perhatikan daftar platform:Amstrad CPC, Thomson, PMD-85, MSX, ZX81, Sam Coupe, semua non-C = 64 Commodores 8-bit atau sistem 8-bit lainnyaSaya tertarik pada ZX81, karena saya sudah mencoba mempelajari komputer, tetapi jatuh.Penelitian berjalan sesuai dengan pola saya yang biasa:Emulator
Saya memilih EightyOnemengambil versi 1.6.1. Versi ini memiliki debugger yang mudah digunakan, tetapi program ini tidak meniru model lain - ZX80, kemudian saya menemukan versi 3,7.Salib berarti
Pencarian dibawa ke FASM ( topik di forum yang disesuaikan untuk platform. Namun, contoh yang dikompilasi tidak dimulai. Saya mencoba opsi assembler lainnya - Pasmo dan lainnya, tetapi masih tidak mengkompilasi program kerja.Pencarian lama membawa contoh pencetakan Halo, dunia!, keajaiban! ternyata! Sekarang giliran telah datang ke episode ketiga.Dokumentasi
Sebagian informasinya ditemukan di sini.Disassembler ROM di sini.Kartu memori:0000-1FFF - ROM
2000-3FFF - Shadow ROM. , Interface 1
4000-7FFF - 16
Sebagian dari memori dicadangkan untuk variabel sistem .Selanjutnya, pada 16509, program BASIC dan variabel-variabelnya disimpan.Program pada BASIC berisi format:2 big endian
2
...
1 ($76) -
Untuk kaset, hanya program BASIC yang dimungkinkan; metode ini diusulkan:1 REM ( )
2 RANDOMIZE USR(16514) - , REM
Anda harus memperhatikan variabel sistem D_FILE, yang menunjukkan memori video.Dalam contoh yang ditunjukkan, ini diterapkan sebagai berikut:D_FILE: defw display_file
display_file: defb _NL
defs 32
...
defs 32
defb _NL
Byte pertama adalah tanda awal baris, kemudian 32 byte adalah spasi.Ternyata 24 baris, yang tampak tebal.Program pertama yang saya tulis:
;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
Versi singkat menyarankan topik ini .Satu kekurangan: setelah memuat program, intinya tidak ditampilkan. Ini tidak mengherankan, karena garis-garisnya kosong. Membaca manual menyarankan perubahan lain:NXTLIN: defw basic_0010 ;
Ternyata trik sederhana: setelah memuat, Anda tidak perlu mengetik RUN, program akan mulai dengan sendirinya.Singkatnya, saya akan menjelaskan esensi program: pertama mengisi memori video sesuai dengan model, seperti yang ada di program pencetakan "Hello, world", kemudian mengisi garis dengan karakter dengan kode 00-63.
Pada perkembangan pertama, saya membuat kesalahan dan menulis karakter mengisi dengan kode 00-255, tetapi program tidak bekerja, sebagai bagian dari kode tidak digunakan.Hasil penelitian adalah karya kerr , yang tampaknya tidak menarik, tetapi bagi saya program itu sendiri merupakan pencapaian yang hebat.Dan sebelum negara demokrasi, ada banyak waktu yang akan dihabiskan untuk mengembangkan program dalam nominasi 1k.Tetap ZX80.Ada urutan variabel sistem yang berbeda untuknya.Perangkat lunak disimpan di sini .Oleh karena itu, saya mengetik program dan mencari di dalam debugger:
Ada sedikit batasan di sini - memori 1k, jadi Anda perlu memikirkan program mana yang akan ditulis.Mungkin saya akan menulis suatu hari nanti.