Then I went through an old Danish book, that has ML for both ZX81 and Lambda 8300: "Maskinkode med ZX81" (Machine code with ZX81). Here it seems that RST calls in ZX81 and Lambda 8300 are similar.
So I found that in some areas the ROM in ZX81 and Lambda ROM version 1 are quite similar. It seems major differences were made between Lambda ROM version 1 and 2. Seems like Lambda ROM version 2 was changed even more just for the purpose of not being sued for copying the ZX81 ROM.
So the RST call between ZX81 and Lambda ROM version 1 are quite similar.
This makes it irritatingly difficult to create one binary that works for both Lambda 8300 ROM versions.
Here are my discoveries so far:
Code: Select all
..............................................................
: Function : ZX81 : Lambda v1 : Lambda v2 :
:...............:..............:..............:..............:
: Test break : 3910 $0F46 : 4411 $113B : 7208 $1C28 :
: Keyboard scan : 699 $02BB : 829 $033D : 3444 $0D74 :
: Key codes : 126 $007E : 123 $007B : 999 $03E7 :
: Key translate : 1981 $07BD : 2398 $095E : 6263 $1877 :
: Print string : 2923 $0B6B : 3318 $0CF6 : ? 5443 $1543 :
: ? : 2919 $0B67 : 3314 $0CF2 : ? 5443 $1543 :
: AT print pos : 2293 $08F5 : 2708 $0A94 : 5304 $14B8 :
: RST $10 impl. : 2056 $0808 : 2473 $09A9 : 5220 $1464 :
: PLOT : 2998 $0BB6 : 3389 $0D3D : ? :
: SCROLL : 3086 $0C0E : 2993 $0BB1 : 7262 $1C5E :
Code: Select all
: CLS : 2602 $0A2A : 3024 $0BD0 : 7293 $1C7D :
: Print BC dec : 2712 $0A98 : 3117 $0C2D : ? :
: SLOW : 3883 $0F2B : 641 $0281 : ? :
: FAST : 3875 $0F23 : 876 $036C : ? :
: SAVE : 763 $02FB : 904 $0388 : 3340 $0D0C :
: LOAD : 839 $0347 : 783 $030F : 6639 $19EF :
: SAVE no pause : 787 $0313 : 928 $03A0 : 3364 $0D24 :
: Num to Calc : 5408 $1520 : 5912 $1718 : 1918 $077E :
: Num from Calc : 3751 $0EA7 : 4232 $1088 : 5385 $1509 :
: 8-bit to Calc : 5405 $151D : 5909 $1715 : 1913 $0779 :
: Dec from Calc : 5112 $13F8 : 5613 $15ED : RST $20 :
: ............. : ............ : ............ : ............ :
: Prog File : 16509 $407D : 17302 $4396 : 17302 $4396 :
Code: Select all
: Display File : (16396)$400C : 16509 $407D : 16509 $407D :
: Print pos : (16398)$400E : (16398)$400E : (16398)$400E :
: Vars : (16400)$4010 : (16400)$4010 : (16400)$4010 :
: E Line : (16404)$4014 : (16404)$4014 : (16404)$4014 :
: P-File end mk : N/A : 255 $FF : 255 $FF :
: RST error : RST $08 : RST $08 : 5194 $144A :
: : Num/Letter : 2 Letters : 2 Letters :
: RST printchar : RST $10 : RST $10 : RST $18 :
: RST getchar : RST $18 : RST $18 : RST $10 :
: RST nextchar : RST $20 : RST $20 : RST $08 :
: RST floatcalc : RST $28 : RST $28 : RST $30 :
: RST makespace : RST $30 : RST $30 : 3037 $0BDD :
: RST interrupt : RST $38 : RST $38 : RST $38 :
Code: Select all
: 1 REM content : 16514 $4082 : 17307 $439B : 17307 $439B :
: Charset : 7680 $1E00 : N/A : N/A :
: Keyb. result : (16421)$4025 : (16421)$4025 : (16421)$4025 :
:...............:..............:..............:..............: