Image Map Image Map
Page 3 of 5 FirstFirst 12345 LastLast
Results 21 to 30 of 48

Thread: Proper Assembler to use for Source Code

  1. #21
    Join Date
    Mar 2013
    Location
    Chaffee, MO
    Posts
    1,209

    Default

    2icebitn,
    YEP, there's lots of ways to get to Albuquerque. I just chose a different route than you. I like to use scripts to process the PDF's and TIF's and OCR
    programs that can give 80 to 90% accuracy (or more) if the material to be OCR'd is a descent document. I'm well on the way and have most of the
    books and manuals you suggest. I just didn't have the Exidy Sorcerer exasm.com that would run on my emulators.

    Thanks.

    Larry

  2. #22
    Join Date
    Sep 2017
    Location
    Principality of Xeon
    Posts
    1,861
    Blog Entries
    1

    Default

    I'm not saying ocr is a bad thing. It's just that code, assembler code especially, is so finicky. It can be done. But you could drive yourself batty if the engine whigged out and spew out some spurious characters. You can also type in some interesting hyroglyphics. But at least you get to check your crazy self line by line LOL.

  3. #23

    Default

    you're missing a page between E4CA and E538. DUMP = E4D3 which isn't listed.
    also DW SE should be DW SET
    using M80 assembler, it doesn't like the ADD immediate value like ADD 9, ADD 30H. Is there an ADI syntax for immediate? It's been awhile since I used M80

    Larry G

  4. #24
    Join Date
    May 2018
    Location
    Melbourne, Australia
    Posts
    156

    Default

    Quote Originally Posted by ldkraemer View Post
    Patched Monitor 1.1 -- pages 5 thru page 10 = 6
    What exactly are you scanning there? It sounds like you have source for the changes from 1.0 to 1.1?
    But I thought creating a listing of 1.1 was the purpose of the exercise?

  5. #25
    Join Date
    May 2018
    Location
    Melbourne, Australia
    Posts
    156

    Default

    Quote Originally Posted by ldkraemer View Post
    I have found the 2 Pass Z80 assembler that the Exidy Sorcerer uses to assemble the code. - exasm.com

    Code:
    00000170   CD BA 10 11  5A 3D 2A 06  00 25 2E F4  ED 53 46 0E  ....Z=*..%...SF.
    00000180   22 48 0E 37  ED 52 30 05  3E 58 C3 F3  03 E5 C1 D5  "H.7.R0.>X......
    00000190   E1 22 44 0E  DD CB 0C AE  13 36 7F ED  B0 C9 45 58  ."D......6....EX
    000001A0   49 44 59 20  5A 38 30 20  41 73 73 65  6D 62 6C 65  IDY Z80 Assemble
    000001B0   72 20 2D 20  20 76 65 72  73 69 6F 6E  20 32 2E 31  r -  version 2.1
    000001C0   20 20 03 0A  0D 43 6F 70  79 72 69 67  68 74 20 28    ...Copyright (
    000001D0   43 29 20 31  39 38 30 20  62 79 20 45  58 49 44 59  C) 1980 by EXIDY
    000001E0   20 49 4E 43  0A 0D 03 DD  CB 0C FE 21  F4 02 1E 00   INC.......!....
    000001F0   CD 92 04 C9  50 41 53 53  20 32 0A 0D  03 3E FE DD  ....PASS 2...>..
    00000200   77 08 DD 36  09 3E DD 36  0A 3E 21 92  3C 22 4C 0E  w..6.>.6.>!.<"L.
    00000210   AF DD 77 03  DD 77 04 DD  77 05 DD 77  06 32 51 0E  ..w..w..w..w.2Q.
    So, someone with the proper assembler is going to need to assemble the Source Code.

    Thanks.

    Larry
    Don't you say in this post you have a disk image with EXASM.COM on it?
    http://www.vcfed.org/forum/showthrea...427#post529427
    What am I missing

  6. #26
    Join Date
    Mar 2013
    Location
    Chaffee, MO
    Posts
    1,209

    Default

    exidyboy,
    Well, I was using cpmtools with my conjured up definition for cpmtools and noticed some files in the directory etc. So, that led
    me to the "Sorcerer_Software_Manual_Apr79.pdf" file. Which I downloaded and looked through. In there was the .PRN file for
    the MONITOR Version 1.0. I thought that was interesting. Then I found the PATCHED byte HEX DUMP to update the MONITOR
    to Ver 1.1. I thought it would be easy to OCR those pages to get the SOURCE that could build Ver 1.0. Then my idea was to
    have the HEX bytes handy and insert them over the the PRN file and change the instructions to exact code that would create those
    bytes. When I was done I'd have the SOURCE for ver 1.1 in a .ASM file. (Turned out to need to be .MAC because I'm using M80 on
    MYZ80.) If you have the EXASM.COM file on your Sorcerer, you should be able to build either version with the source.

    But, somehow when I printed the .PDF pages from 27 to xx (end) with Document Viewer in Debian I got a missing page.
    I know I used 27-68, or whatever the end number actually was. The odd thing is I tried it again and I got that page.
    Anyway Larry G found the missing page and I'd now processing it. He also found the other typo that should allow me
    to change/modify my source so I get the actual HEX BYTES that the original PDF has for the .PRN listing. With that
    done, I'm ready for the next step.

    So, THANKS Larry G for taking a look and finding what I glossed over. My Plan is to use DB to insert the HEX bytes
    for the ADD Instructions, so I end up with the actual BYTES I need versus the actual Instructions that EXASM.COM
    would have used. I'll just stuff the BYTES in the Source so M80 is satisfied and not worry about the actual code.

    Yes, I have EXASM.COM, but it doesn't run in MYZ80, or in the other Emulator I tried (RUNCPM). Maybe, I should
    extract it again and give that a try.

    Interested?

    Larry
    Last edited by ldkraemer; August 30th, 2018 at 05:41 AM. Reason: typo

  7. #27
    Join Date
    Mar 2013
    Location
    Chaffee, MO
    Posts
    1,209

    Default

    I copied a different copy of EXASM.COM to MYZ80 and it runs. Now, it should be easier to get the
    actual source built.

    Larry

    exasm.png

  8. #28
    Join Date
    Mar 2013
    Location
    Chaffee, MO
    Posts
    1,209

    Default

    OK, some news of the first part of assembly of Monitor 1.0 OCR'd pages.

    I tried the EXASM.COM program, and read the Development PAC information and I can't get past the JR & JP out of range
    problem. I've tried REL and ABS (should be ABS at 0E000h) and the jumps are still out of range. So, I switched back to M80.

    I've had to patch a few places with the DB directive for the ADD instructions (7 if I remember correctly) and now it is assembled
    with ZERO Errors.
    Code:
      E13A'                   LINEIN	EQU	$
      E13A'   FD E5                 	PUSH	IY		;MOVE IY
      E13C'   E1                    	POP	HL		;   TO HL
      E13D'   3E 3C                 	LD	A, LINELN	;SET LINE
                                    ;	ADD	L		;  LENGTH AND
                                    ;
                                    ;  E13D'   3E 3C                 	LD	A, LINELN	;SET LINE
                                    ;  E13F'   85                 		ADD	L		;  LENGTH AND
                                    ;  E140'   4F                    	LD	C, A		;START IN
                                    ;
      E13F'   85                    	DB	85H
      E140'   4F                    	LD	C, A		;START IN
      E141'   45                    	LD	B, L		;IN BC
      E142'   FD 7E 43             LD	A, (IY+BATCHF)  ;GET BATCH FLAG
      E145'   B7                    	OR	A		;TEST IT
    But, checking the first few bytes for the Jump instruction the Byte Sex is wrong. There is no M80 command
    I can find to change the endian problem. But, that's not a show stopper because I can block cut and paste columns easily.
    I didn't see any reference in the Development PAC about changing the endianness of bytes.

    Next step is to spot check bytes every 0100h or so to make sure it all looks correct. Then swap byte sex for address's and compare to
    the OCR'd file I built, along with the original PDF document. A three way check. That will take a bit of time.

    At least the first step is done. Now, I need an Exidy User (gertk) to see if the EXASM.COM software builds the source code properly on the Sorcerer.

    Thanks.

    Larry
    Last edited by ldkraemer; August 31st, 2018 at 08:39 AM. Reason: typo

  9. #29

    Default

    It's possible that your Z80 assembler expects the syntax for ADD to be "ADD A,L". That is the strict syntax for Z80 instructions.

    I would expect any 8080/Z80 assembler to use proper (little endian) byte placement. What problem are you seeing with byte orders?

    Regarding jumps out of range, I think only JR could possibly be out of range (+127/-128 ). JP should be an absolute jump and should handle any 16-bit destination address. Unless you are doing math on the target address and the assembler is detecting wrap/overflow in the expression (e.g. the assembler does 32-bit arithmetic and complains if the high 16 bits are not 0).
    Last edited by durgadas311; August 31st, 2018 at 03:21 PM.

  10. #30
    Join Date
    Mar 2013
    Location
    Chaffee, MO
    Posts
    1,209

    Default

    I've got the Original PDF file that I OCR'd. A snippet of that code is:

    ORIGINAL PDF DOCUMENT:
    Code:
    E027	C3 AF E2	0122 CMOTOFF:	JP MTROFF		;TURN CASSETTE MOTOR OFF
    E02A	C3 5A E6	0123 BASSAV:	JP SAVBAS		;ENTRY FOR BASIC CSAVE
    E02D	C3 99 E7	0124 BASLOD:	JP LODBAS		;ENTRY FOR BASIC CLOAD
    E030			0125 ;
    E030	FD E5		0126 CHRIN:	PUSH IY			;WE DESTROY THESE
    E032	E5		0127		PUSH HL
    E033	CD A2 E1	0128		CALL GETIY
    E036	21 41 E0	0129		LD HL,CHRINR		;FOR RETURN
    E039	E5		0130		PUSH HL
    E03A	FD 6E 41	0131		LD L,(IY+INADD)		;GET ADDRESS
    E03D	FD 66 42	0132		LD H,(IY+INADD+1)
    E040	E9		0133		JP (HL)			;GO DO IT
    E041	E1		0134 CHRINR:	POP HL			;RESTORE
    E042	FD E1		0135		POP IY
    E044	C9		0136		RET
    E045			0137 ;
    E045	FD E5		0138 CHROUT:	PUSH IY			;WE DESTROY THESE
    E047	E5		0139		PUSH HL
    E048	F5		0140		PUSH AF
    E049	CD A2 E1	0141		CALL GETIY
    E04C	FD 66 3E	0142		LD H,(IY+SPEEDS)	;GET DISPLAY SPEED
    C3 AF E2 = JMP E2AF


    I've also got the Exidy Sorcerer's EXASM.COM, the I run in MYZ80:

    EXASM.COM - Assembler
    Code:
      E027  C3A4E2    0123 CMOTOFF:        JP      MTROFF          ;TURN CASSETTE MOTOR OFF
      E02A  C30AE6    0124 BASSAV:         JP      SAVBAS          ;ENTRY FOR BASIC CSAVE
      E02D  C348E7    0125 BASLOD:         JP      LODBAS          ;ENTRY FOR BASIC CLOAD
                      0126 ;
      E030  FDE5      0127 CHRIN:          PUSH    IY              ;WE DESTROY THESE
      E032  E5        0128                 PUSH    HL
      E033  CDA1E1    0129                 CALL    GETIY
      E036  2141E0    0130                 LD      HL, CHRINR      ;FOR RETURN
      E039  E5        0131                 PUSH    HL
      E03A  FD6E41    0132                 LD      L, (IY+INADD)   ;GET ADDRESS
      E03D  FD6642    0133                 LD      H, (IY+INADD+1)
      E040  E9        0134                 JP      (HL)            ;GO DO IT
      E041  E1        0135 CHRINR:         POP     HL              ;RESTORE
      E042  FDE1      0136                 POP     IY
      E044  C9        0137                 RET
                      0138 ;
      E045  FDE5      0139 CHROUT:         PUSH    IY              ;WE DESTROY THESE
      E047  E5        0140                 PUSH    HL
      E048  F5        0141                 PUSH    AF
      E049  CDA1E1    0142                 CALL    GETIY
      E04C  FD663E    0143                 LD      H, (IY+SPEEDS)  ;GET DISPLAY SPEED
    C3 A4 E2 = JMP E2A4 (Which matches byte sex, but instructions are not exactly same as unknown assember.

    EXASM.COM has REL and ABS modules and Jumps are out of Range. And If I use REL mode I get a 3 byte hard
    address that makes the HEX BYTES not match the PDF. Plus there are Lots of Errors of Out of Range.


    I've also got M80 that I run in MYZ80:

    MONITOR.PRN - M80 Assembler
    Code:
      E027'   C3 E2AA'              CMOTOFF:	JP	MTROFF	;TURN CASSETTE MOTOR OFF
      E02A'   C3 E653'              BASSAV:		JP	SAVBAS	;ENTRY FOR BASIC CSAVE
      E02D'   C3 E792'              BASLOD:		JP	LODBAS	;ENTRY FOR BASIC CLOAD
                                    ;
      E030'   FD E5                 CHRIN:	PUSH	IY		;WE DESTROY THESE
      E032'   E5                    	PUSH	HL
      E033'   CD E1A2'              	CALL	GETIY
      E036'   21 E041'              	LD	HL, CHRINR	;FOR RETURN
      E039'   E5                    	PUSH	HL
      E03A'   FD 6E 41              	LD	L, (IY+INADD)	;GET ADDRESS
      E03D'   FD 66 42              	LD	H, (IY+INADD+1)
      E040'   E9                    	JP	(HL)		;GO DO IT
      E041'   E1                    CHRINR:	POP	HL		;RESTORE
      E042'   FD E1                 	POP	IY
      E044'   C9                    	RET
                                    ;
      E045'   FD E5                 CHROUT:	PUSH	IY		;WE DESTROY THESE
      E047'   E5                    	PUSH	HL
      E048'   F5                    	PUSH	AF
      E049'   CD E1A2'              	CALL	GETIY
      E04C'   FD 66 3E              	LD	H, (IY+SPEEDS)	;GET DISPLAY SPEED
    M80 builds with ZERO errors with 7 Patches for DB values for the ADD L Instruction. That keeps the HEX BYTES
    exactly the same around the patched areas. But, the Byte Sex is changed, and I don't find any Switch or way
    to change the address order from the M80 manual.

    I haven't checked each and every BYTE of the two .PRN's with the PDF yet to see where there are differences. Working one problem at a time.

    Ideas.

    Larry

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •