Comparison of ROM calls for ZX81 vs Lambda-v1 vs Lambda-v2

Software and Games for the Lambda 8300 / Power 3000 Computer
Post Reply
User avatar
mrtinb
Posts: 1121
Joined: Fri Nov 06, 2015 5:44 pm
Location: Denmark
Contact:

Comparison of ROM calls for ZX81 vs Lambda-v1 vs Lambda-v2

Post by mrtinb » Mon Feb 25, 2019 7:19 am

Comparing the disassembled ROM for ZX81 and the disassembled ROM for Lambda 8300 they seemed quite different. Especially the RST calls in start of ROM was swapped around.

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 :
:...............:..............:..............:..............:
Martin
ZX81, Lambda 8300, Commodore 64, Mac G4 Cube

User avatar
stefano
Posts: 407
Joined: Tue Dec 11, 2012 9:24 am
Contact:

Re: Comparison of ROM calls for ZX81 vs Lambda-v1 vs Lambda-v2

Post by stefano » Wed Oct 23, 2019 10:25 pm

This is an interestink work.
I should improve basck sooner or later to make it more effective on the Sinclair BASIC but at the end there are few variants aroud and comparing the asm sources is not that nightmare..

Where can the "other" LAMBDA ROM be found ? A new z88dk option is feasible, probably also a self adjusting library is, we have something already in the ZX Spectrum libraries the for the different ZX Interface 1 ROM versions.

User avatar
mrtinb
Posts: 1121
Joined: Fri Nov 06, 2015 5:44 pm
Location: Denmark
Contact:

Re: Comparison of ROM calls for ZX81 vs Lambda-v1 vs Lambda-v2

Post by mrtinb » Thu Oct 24, 2019 7:02 am

My work began after discoveries in this thread https://www.sinclairzxworld.com/viewtop ... =16&t=1695 where Olufson patched his z88dk tool chain to compile for Lambda ROM version 1.
Last edited by mrtinb on Thu Oct 24, 2019 7:08 am, edited 1 time in total.
Martin
ZX81, Lambda 8300, Commodore 64, Mac G4 Cube

User avatar
mrtinb
Posts: 1121
Joined: Fri Nov 06, 2015 5:44 pm
Location: Denmark
Contact:

Re: Comparison of ROM calls for ZX81 vs Lambda-v1 vs Lambda-v2

Post by mrtinb » Thu Oct 24, 2019 7:07 am

The different ROMs I found for the Lambda 8300 can be found in this post: https://www.sinclairzxworld.com/viewtop ... =10#p31682
Martin
ZX81, Lambda 8300, Commodore 64, Mac G4 Cube

Post Reply