سيوافق الكثيرون على أن جائحة COVID-19 الناشئ قد دمر إلى حد كبير حياة مجتمع تكنولوجيا المعلومات. لكننا لن نتحدث عن شريط مظلم ، ولكن عن حلقة أخرى.بالفعل في مارس ، تم إلغاء demoparty Forever 2020 الشهيرة ، وبعد ذلك تم تأجيل الحدث إلى الخريف. قبل الإلغاء بوقت طويل ، تحدثت مع المنظمين. رفضوا قبول أحد أعمالي ، موضحين أنه لا يوجد Apple II ، وفي المقابل طلبوا فيديو للعمل من جهاز كمبيوتر حقيقي.حسنًا ، لم أتمكن من الحصول على السجل ، لذلك لاحظت قائمة الأنظمة الأساسية:Amstrad CPC و Thomson و PMD-85 و MSX و ZX81 و Sam Coupe وجميعها غير C = 64 8 بت كومودور أو أي نظام 8 بت آخرلقد انجذبت إلى ZX81 ، حيث كنت أحاول بالفعل تعلم الكمبيوتر ، ولكن تعطلت.ذهب البحث وفقًا لنمطي المعتاد:محاكي
لقد اخترت EightyOneالإصدار 1.6.1. يحتوي الإصدار على مصحح أخطاء مناسب ، لكن البرنامج لا يحاكي نموذجًا آخر - ZX80 ، في وقت لاحق وجدت بناء آخر 3.7.يعني الصليب
تم جلب البحث إلى FASM (وهو موضوع في المنتدى تم تكييفه مع النظام الأساسي. ومع ذلك ، لم تبدأ الأمثلة المجمعة. جربت خيارات التجميع الأخرى - Pasmo وغيرها ، ولكن لم يتم تجميع برنامج عمل بعد.جلبت عمليات البحث الطويلة مثالاً لطباعة Hello، world!، معجزة! اتضح! الآن جاء دور الحلقة الثالثة.توثيق
تم العثور على جزء من المعلومات هنا.ROM Disassembler هنا.بطاقة الذاكرة:0000-1FFF - ROM
2000-3FFF - Shadow ROM. , Interface 1
4000-7FFF - 16
جزء من الذاكرة محجوز لمتغيرات النظام .علاوة على ذلك ، في 16509 ، يتم تخزين برنامج BASIC ومتغيراته.يحتوي البرنامج على 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 ;
اتضح مثل هذه الحيلة البسيطة: بعد التحميل ، لا تحتاج إلى كتابة RUN ، سيبدأ البرنامج من تلقاء نفسه.وباختصار ، سأصف جوهر البرنامج: أولاً ملء ذاكرة الفيديو وفقًا للنموذج ، كما كان في برنامج الطباعة "Hello ، world" ، ثم ملء الأسطر بأحرف برموز 00-63.
في التطور الأول ، أخطأت وكتبت أحرف ملء برموز 00-255 ، لكن البرنامج لم يعمل ، حيث لم يتم استخدام جزء من الرموز .وكانت نتيجة البحث هي عمل كير ، الذي يبدو غير مثير للاهتمام ، ولكن بالنسبة لي البرنامج نفسه إنجاز رائع.وقبل demoparty ، هناك الكثير من الوقت الذي سيتم إنفاقه على تطوير برنامج في ترشيح 1k.يبقى ZX80.هناك ترتيب مختلف لمتغيرات النظام لذلك.يتم تخزين البرنامج هنا .لذلك ، قمت بكتابة البرنامج ونظرت في المصحح:
هناك قيود طفيفة هنا - ذاكرة 1k ، لذلك عليك التفكير في البرنامج الذي تكتبه.ربما سأكتب يوما ما.