מה אנחנו בונים עכשיו
מכונת ה-Dragon היא Dragon 32 שהשבבים שלו מדומים בדפדפן: המעבד 6809, הזיכרון, המסך והקלטת, דרך האמולטור XRoar של Ciaran Anscomb. ה-ROM, השבב שבו יושבת שפת ה-BASIC, שייך לבעלי הזכויות. לכן אנחנו כותבים ROM משלנו, בשפת המכונה של המעבד 6809.
המטרה
המחשב האמיתי, כמה שיותר קרוב, בלי להעתיק את הקוד המקורי. כל החלטה נבחנת בשאלה אחת: האם זה מקרב אותנו למקור?
איך אנחנו בונים
- הבסיס: ה-BASIC ש-Microsoft פרסמה כקוד פתוח (רישיון MIT). ממנו הלב: מספרים, מחרוזות, משתנים ולולאות.
- שני חדרים: אני לא מתכנת, ואני בונה עם AI. סוכן AI אחד קורא את המקור ומחזיר רק עובדות, במילים שלו: מה כל פקודה עושה, ובאילו כתובות בזיכרון. סוכן שני כותב את הקוד, בלי לראות את המקור אף פעם. ככה ההתנהגות קרובה למקור ככל שאנחנו יודעים, והקוד שלנו.
- הספרים של אז: המדריכים שיצאו עם המחשב וספרי BASIC מאותן שנים.
- מי שבנה את האמולטור: Ciaran Anscomb ענה לנו על שאלות שאין עליהן תשובה בשום ספר, למשל המהירות המדויקת של הקלטת.
איך אנחנו בודקים
574 בדיקות אוטומטיות מריצות את ה-ROM בתוך XRoar על כל שינוי. הן בודקות מה מופיע על המסך, מה נכתב לקלטת ומה יוצא למדפסת. ביניהן 74 תוכניות מספרי BASIC של פעם, עם הפלט שמודפס בספר, וצלילים עד רמת מחזור המעבד.
מה יש היום
- כל ה-BASIC בשבב אחד של 16K, כמו במקור. חריץ המחסנית נשאר ריק.
- כל הפקודות, עם אותן הודעות שגיאה: גרפיקה, צליל ו-
PLAY,EDITו-RENUM. - קלטת בפורמט המקורי ובמהירות המקורית, כולל קבצים.
- מדפסת:
LLISTו-PRINT #-2. - RESET ששומר את התוכנית, ו-BREAK שעוצר עם מספר השורה.
- 25 נקודות הרחבה בזיכרון, באותם מקומות כמו במקור. דרכן מחסניות מוסיפות פקודות.
המהירות מול 1982
ב-1982 המגזין Personal Computer World הריץ על כל מחשב שמונה תוכניות BASIC קצרות, ומדד בשעון עצר כמה שניות לקחה כל אחת. הנה התוצאות של ה-Dragon 32 מהגיליון של אוגוסט 1982, ולידן אותן תוכניות על המכונה שלנו (בשניות):
| מבחן | מה הוא בודק | Dragon 32, 1982 | המכונה שלנו |
|---|---|---|---|
| BM1 | לולאת FOR ריקה, 1000 פעמים | 1.6 | 1.6 |
| BM2 | לולאה עם IF ו-GOTO | 10.2 | 10.1 |
| BM3 | חשבון עם משתנים | 19.7 | 19.8 |
| BM4 | חשבון עם מספרים קבועים | 21.6 | 21.7 |
| BM5 | ועוד GOSUB | 23.3 | 23.5 |
| BM6 | ועוד לולאת FOR פנימית | 34.3 | 35.5 |
| BM7 | ועוד כתיבה למערך | 50.0 | 52.4 |
| BM8 | חזקה, לוגריתם וסינוס, 100 פעמים | 12.9 | 12.4 |
חמש התוכניות הראשונות יוצאות כמעט בדיוק כמו במקור, בגבולות הדיוק של שעון עצר. שלושה הבדלים קטנים עוד נשארו: לולאת FOR פנימית וכתיבה למערך איטיות אצלנו בכמה אחוזים, והפונקציות המתמטיות מהירות קצת יותר. נבדוק אותם מול Dragon אמיתי.
המקור: Personal Computer World, אוגוסט 1982, עמ' 116.
מה עוד רחוק מהמקור
- תוכנות בשפת מכונה: הרבה משחקים של פעם קופצים ישר לכתובות בתוך ה-ROM המקורי. בנינו את הכתובות שתוכנות של אז השתמשו בהן, כל אחת במקום המקורי שלה, וגם את טבלאות הפקודות. 35 משחקים מאותה תקופה כבר רצים עליה בלי שינוי בקוד שלהם, של Ken Kalish, Scott Adams, Mike Hughey, Tim Love, Harry Whitehouse, Ian Murray-Watson, Rolf Michelsen, Douglas J. Morgan, Gary Ritchie ו-Owen Stenseth, באישור המחברים. הצעד הבא: השוואה מול Dragon אמיתי.
- מהירות: קרובה מאוד למקור (ראו למעלה). נשארו כמה אחוזים בלולאות
FORפנימיות, במערכים ובפונקציות המתמטיות. DLOAD: טעינה דרך כבל. עוד לא ידוע לנו מה הפקודה עושה ב-Dragon 32.- מחשב אמיתי: עוד לא בדקנו מול Dragon אמיתי. כל מה שאנחנו יודעים מגיע מהמקור, מהספרים ומ-Ciaran.
זה פרויקט של חובב, בלי לוח זמנים. מה שבונים כאן לא משנה את האפליקציה הראשית.
יש לכם Dragon אמיתי?
יש דברים שאפשר לדעת רק ממחשב שעובד. נשמח שתקלידו את השורות האלה ותספרו לנו מה הופיע על המסך, ובאיזה דגם:
PRINT PEEK(144)*256+PEEK(145)(אורך הצפצוף שבתחילת כל קלטת)PRINT PEEK(287)(ערך אחד בזיכרון שאנחנו לא יודעים)10 REMואחר כךLLIST, בלי מדפסת מחוברת (מופיע OK, או שהמחשב נתקע? RESET מחזיר אותו)DLOAD(שגיאה, כלום, או נתקע?)
אפשר לכתוב לנו דרך יצירת קשר.