Image Map Image Map
Page 5 of 5 FirstFirst 12345
Results 41 to 48 of 48

Thread: Proper Assembler to use for Source Code

  1. #41


    I don't know that assembler, but the native CP/M assemblers didn't like colons on labels in EQU statements, as I recall. Not sure why that would cause errors on other lines, but I have seen stranger things - sometimes these assemblers have pretty simplistic error handling/recovery. I certainly don't see anything wrong with the lines called-out, unless this assembler doesn't recognize (the standard pseudo-op) "DW".

  2. #42


    Tried some small piece of assembler in EXASM again, this time without the ORG statement at the beginning and it gives zero errors.. huh, uhm, but the relative jumps are wrong still....

                                                                                                 EXIDY Z80 ASSEMBLER V 2.1  PAGE    1
     '0000  2180F0    0001         LD HL,0F080H
     '>0003           0002 WAIT
     '0003  CB4F      0004         BIT 1,A
     '0005  2801      0005         JR Z,WAIT
     '0007  DBFC      0006         IN A,(0FCH)
     '0009  77        0007         LD (HL),A
     '000A  CBFD      0008         SET 7,L
     '000C  DBFD      0009         IN A,(0FDH)
     '000E  77        0010         LD (HL),A
     '000F  2C        0011         INC L
     '0010  CBFD      0012         SET 7,L
     '0012  1801      0013         JR WAIT
                      0014         END

  3. #43


    Ah, but this is working:

                  EXIDY Z80 ASSEMBLER V 2.1  PAGE    1
     '0000  2180F0    0001         LD HL,0F080H
     '>0003           0002 WAIT EQU $
     '0003  CB4F      0004         BIT 1,A
     '0005  28FC      0005         JR Z,WAIT-$
     '0007  DBFC      0006         IN A,(0FCH)
     '0009  77        0007         LD (HL),A
     '000A  CBFD      0008         SET 7,L
     '000C  DBFD      0009         IN A,(0FDH)
     '000E  77        0010         LD (HL),A
     '000F  2C        0011         INC L
     '0010  CBFD      0012         SET 7,L
     '0012  18EF      0013           JR WAIT-$
                      0014         END
    Note the minus and the dollar sign at the end of the relative jumps...

  4. #44
    Join Date
    Mar 2013
    Chaffee, MO


    Patches for Version 1.0 Source to Generate Version 1.1 Monitor are done. I'm not going to generate the code, as that last step
    is left for all Exidy Sorcerer Users. It should be a matter of cut and paste and find any typo's.

    Monitor Version 1.0 Patches to Generate Version 1.1
    Patched Byte Block Number and NEW Source to Add to Monitor ver 1.0 to generate Ver 1.1
    00000000 4F		LD C,A
    00000001 45		LD B,L
    00000002 FD7E43		LD A,(IY+67)
    00000005 B7		OR A
    00000006 2039		JR NZ,0x0041
    00000008 CD30E0		CALL 0xE030
    0000000B 28FB		JR Z,0x0008
    0000000D FE7F		CP 0x7F
    0000000F 2824		JR Z,0x0035
    00000011 301B		JR NC,0x002E
    00000013 FE0D		CP 0x0D
    00000015 280D		JR Z,0x0024
    00000017 FE20		CP 0x20
    00000019 3813		JR C,0x002E
    0000001B FE40		CP 0x40
    0000001D 2005		JR Z,0x0024
    0000001F CD05E2		CALL 0xE205
    00000022 18D6		JR 0xFFFA
    00000024 CD45E8		CALL 0xE845
    00000027 77		LD (HL),A
    00000028 23		INC HL
    00000029 FE0D		CP 0x0D
    0000002B CA05E2		JP Z,0xE205
    00000000 0601		LD B,0x01
    00000002 CDA2E2		CALL 0xE3A2		;DELAY1
    00000005 FDE5		PUSH IY
    00000007 CDA2E1		CALL 0xE1A2		;GETIY
    0000000A C34EE8		JP 0xE84E
    0000000D FD7745		LD (IY+69),A		;(IY+CMTRFG),A
    Version 1.0
      808 E340  84E8        		DW LIST			;LIST BATCH FILE
      809 E342  50 52       		DB 'PR'
      810 E344  45E8        		DW PRMPTC		;CHANGE PROMPT CHAR
      811 E346  4F 56       		DB 'OV'
      812 E348  D4E1        		DW FINISH		;END BATCH MODE
      813 E34A  50 50       		DB 'PP'
      814 E34C  4400        		DW PROMPT		;BRANCH TO-FROM PACK
      815         4EE3      ENDTBL:	EQU	$
      816 E34E  00          		DB 0			;ENDING BYTE
      817                   ;
      818                   ;
      819                   ;
      820                   ;
      821                   ;
      822                   ;  SET COMMAND TABLE
      823                   ;
      824                   ;
      825                   ;
      826                   ;
      827                   ;
      828         4FE3      SETTBL:	EQU	$
      829                   ;
      830 E34F  54          		DB 'T'
    Version 1.1
      808 E340  84E8        		DW LIST			;LIST BATCH FILE
      809 E342  40 40       		DB '@@'
      810 E344  0000        		DW PRMPTC		;CHANGE PROMPT CHAR
      811 E346  4F 56       		DB 'OV'
      812 E348  D4E1        		DW FINISH		;END BATCH MODE
      813 E34A  50 50       		DB 'PP'
      814 E34C  8A				ADC A,D
                E9				JP  (HL)
      815         4EE3      ENDTBL:	EQU	$
      816 E34E  00          		DB 0			;ENDING BYTE
      817                   ;
      818                   ;
      819                   ;
      820                   ;
      821                   ;
      822                   ;  SET COMMAND TABLE
      823                   ;
      824                   ;
      825                   ;
      826                   ;
      827                   ;
      828         4FE3      SETTBL:	EQU	$
      829                   ;
      830 E34F  54          		DB 'T'
      831 E350  DCE5        		DW TAPE			;SET TAPE RATE
      832 E352  53          		DB 'S'
      833 E353  EAE5        		DW SPEED		;SET DISPLAY SPEED
      834 E355  58          		DB 'X'
      835 E356  F2E5        		DW XEQSET		;SET XEQ ADDRESS
      836 E358  46          		DB 'F'
      837 E359  EEE5        		DW SETFIL		;SET FILE TYPE
      838 E35B  4F          		DB 'O'
      839 E35C  F9E5        		DW SETOUT		;SET OUTPUT
      840 E35E  49          		DB 'I'
      841 E35F  1CE6        		DW SETIN		;SET INPUT
      842 E361  00          		DB 0
    D   M O N 1 T O R     V e r s i
    o n   1 . 1   C o p y r i g h t
      ( C )   1 9 7 9   b y   E X I
      853 E363  45 58 49 44 		DB 'EXIDY STANDARD MONITOR'
      854 E379  0D 0D       		DB CR,CR
      855 E37B  56 45 52 53 		DB 'Version 1.1'
      856 E386  0D          		DB CR
      857 E387  43 4F 50 59 		DB 'Copyright (C) 1979 by '
      858 E39D  45 58 49 44 		DB 'EXIDY INC.'
    00000000 CADEE1		JP Z,0xE1DE
    00000003 FE47		CP 0x47		;"G"
    00000005 DC3DE2		CALL C,0xE23D
    00000008 DD23		INC IX
    0000000A C31CE1		JP 0xE11C
    0000000D 7B		LD A,E
    0000000E E603		AND 0x03
    00000010 EE01		XOR 0x01
    00000012 0F		RRCA
    00000013 0F		RRCA
    00000014 FD773D		LD (IY+61),A
    00000017 F5		PUSH AF
    00000018 C353E8		JP 0xE853
    0000001B FD733E		LD (IY+62),E
    0000001E C9		RET
    00000000 CDDAE2		CALL 0XE2DA
    00000003 B8		CP B
    00000004 C2E3E1		JP NZ,0xE1E3
    00000007 C9		RET
    00000008 C5		PUSH BC
    00000009 060A		LD B,0x0A
    0000000B CDDAE2		CALL 0xE2DA
    0000000E 28E3		JR Z,0xFFF3
    00000010 B7		OR A
    00000011 20F6		JR NZ,0x0009
    00000013 10F6		DJNZ 0X000B
    00000015 CDDAE2		CALL 0xE2DA
    00000018 28D9		JR Z,0xFFF3
    0000001A FE01		CP 0x01
    0000001C 38F7		JR C,0x0015
    0000001E 20E9		JR NZ,0x0009
    00000020 FD7046		LD (IY+70),B
    00000023 C1		POP BC
    00000024 C9		RET
    00000025 DBFE		IN A,(0xFE)
    00000027 CB7F		BIT 7,A
    00000029 28FA		JR Z,0x0025
    0000002B DBFF		IN A,(0xFF)
    0000002D C9		RET
    0000002E F5		PUSH AF
    00000000 CD34E7		CALL 0xE734
    00000003 C3BEE7		JP 0xE7BE
    00000006 FE61		CP 0x61
    00000008 D8		RET C
    00000009 FE7B		CP 0x7B
    0000000B D0		RET NC
    0000000C E6DF		AND 0xDF
    0000000D C9		RET
    0000000F FD7E45		LD A,(IY+69)
    00000012 E6C0		AND 0xC0
    00000014 D3FE		OUT (0xFE),A
    00000016 C3BCE2		JP 0xE2BC
    00000019 FD7043		LD (IY+67),B
    0000001C C9		RET
    0000001D 3E2A		LD A,0x2A
    0000001F CD4500		CALL 0x0045
    00000000 C9		RET
    00000001 CD10EB		CALL 0xEB10
    00000004 2180F0		LD HL,0xF080
    00000007 3EF8		LD A,0xF8
    00000009 3620		LD (HL),0x20
    0000000B 23		INC HL
    0000000C BC		CP H
    0000000D 20FA		JR NZ,0x0009
    0000000F 65		LD H,L
    00000010 FD7568		LD (IY+104),L
    00000013 FD7469		LD (IY+105),H
    00000016 FD756A		LD (IY+106),L
    00000019 FD746B		LD (IY+107),H
    0000001C CDD6E9		CALL 0xE9D6
    0000001F 7E		LD A,(HL)
    00000000 CDCCE9		CALL 0xE9CC
    00000003 18E7		JR 0xFFEC
    00000005 CDB4E9		CALL 0xE9B4
    00000008 18E2		JR 0xFFEC
    0000000A 110000		LD DE,0x0000
    0000000D 18EB		JR 0xFFFA
    00000000 FDE5		PUSH IY
    00000002 CDA2E1		CALL 0xE1A2
    00000005 C5		PUSH BC
    00000006 D5		PUSH DE
    00000007 E5		PUSH HL
    00000008 DDE5		PUSH IX
    0000000A FD7E45 	LD A,(IY+69)
    0000000D F601		OR 0x01
    0000000F D3FE		OUT (0xFE),A
    00000011 DBFE		IN A,(0xFE)
    00000013 CB4F		BIT 1,A
    00000015 200E		JR NZ,0x0025
    00000017 018813 	LD BC,0x1388
    0000001A 0B		DEC BC
    0000001B 78		LD A,B
    0000001C B1		OR C
    0000001D 20FB		JR NZ,0x001A
    0000001F FD7E6C		LD A,(IY+108)
    00000022 C310EC 	JP 0xEC10
    00000025 AF		XOR A
    00000026 0EFE		LD C,0xFE
    00000028 1E80		LD E,0x80
    0000002A 1600		LD D,0x00
    0000002C 42		LD B,D
    0000002D FD7E45		LD A,(IY+69)
    00000030 E6F0		AND 0xF0
    00000022 67		LD H,A
    00000033 DD211EEC	LD IX,0xEC1E
    00000037 ED61		OUT (C),H
    00000039 2E01		LD L,0x01
    0000003B ED78		IN A,(C)
    0000003D A5		AND L
    0000003E C2E2EB		JP NZ,0xEBE2
    00000041 E5		PUSH HL
    00000042 210001		LD HL,0x0100
    00000045 2D		DEC L
    00000046 20FD		JR NZ,0x0045
    00000048 25		DEC H
    00000049 20FA		JR NZ,0x0045
    0000004B E1		POP HL
    0000004C ED78		IN A,(C)
    0000004E A5		AND L
    0000084F C2E2EB		JP NZ,0xEBE2
    00000052 DD5600		LD D,(IX+0)
    00000055 CB7A		BIT 7,D
    00000057 281A		JR Z,0x0073
    00000059 CB62		BIT 4,D
    00000061 2802		JR Z,0x0065
    00000063 CBE8		SET 5,B
    00000065 CB52		BIT 2,D
    00000067 2802		JR Z,0x006B
    00000069 CBE0		SET 4,B
    0000006B CB4A		BIT 1,D
    0000006D 2857		JR Z,0x00C6
    0000006F CBD8		SET 3,B
    00000071 1853		JR 0x00C6
    00000073 E5		PUSH HL
    00000074 D5		PUSH DE
    00000075 DDE5		PUSH IX
    00000077 E1		POP HL
    00000078 111EEC		LD DE,0xEC1E
    0000007B B7		OR A
    0000007C ED52		SBC HL,DE
    0000007E 01CB70 	LD BC,0x70CB
    00000081 2815		JR Z,0x0098
    00000083 CB72		BIT 6,D
    00000085 2811		JR Z,0x0098
    00000087 D5		PUSH DE
    00000088 116EEC		LD DE,0xEC6E
    00000089 19		ADD HL,DE
    0000008C 7E		LD A,(HL)
    0000008D CBFF		SET 7,A
    0000008F D1		POP DE
    00000090 CB60		BIT 4,B
    00000092 2826		JR Z,0x00BA
    00000094 CBF7		SET 6,A
    00000096 1822		JR 0x00BA
    00000098 D5		PUSH DE
    00000099 CB68		BIT 5,B
    0000009B 2805		JR Z,0x00A2
    0000009D 11BEEC		LD DE,0xECBE
    000000A0 1815		JR 0x00B7
    000000A2 CB60		BIT 4,B
    000000A4 2805		JR Z,0x00AB
    000000A6 110EED		LD DE,0xED0E
    000000A9 180C		JR 0x00B7
    000000AB CB58		BIT 3,B
    000000AD 2805		JR Z,0x00B4
    000000AF 115EED		LD DE,0xED5E
    000000B2 1803		JR 0x00B7
    000000B4 11AEED		LD DE,0xEDAE
    000000B7 19		ADD HL,DE
    000000B8 D1		POP DE
    000000B9 7E		LD A,(HL)
    000000BA 1E1C		LD E,0x1C
    000000BC E1		POP HL
    000000BD F5		PUSH AF
    000000BE ED78		IN A,(C)
    000000C0 A5		AND L
    000000C1 28FB		JR Z,0x00BE
    000000C3 F1		POP AF
    00000000 CA57EB		JP Z,0xEB57
    00000003 CB93		RES 2,E
    00000085 CB5B		BIT 3,E
    00000007 2007		JR NZ,0x0010
    00000009 24		INC H
    0000000A 7C		LD A,H
    0000000B E60F		AND 0x0F
    0000000F C253EB		JP NZ,0xEB53
    00000010 CB9B		RES 3,E
    00000012 37		SCF
    00000013 CB7B		BIT 7,E
    00000015 2803		JR Z,0x001A
    00000017 AF		XOR A
    00000018 CBE3		SET 4,E
    0000001A CB63		BIT 4,E
    0000001C 2003		JR NZ,0x0021
    0000001E C346EB 	JP 0XEB46
    The ONLINE Dis-Assembler I used was

    Next step is to bundle the Monitor's Source and send to Exidy Sorcerer Repositories.


    Last edited by ldkraemer; September 5th, 2018 at 06:00 PM. Reason: typo

  5. #45
    Join Date
    Mar 2013
    Chaffee, MO


    It would be interesting to insert some test code for DB & DW to see how that works.

    TABLE:	EQU	$
    		DB 'DU'
    		DB 'PP'
    		DB 0			;ENDING BYTE


  6. #46
    Join Date
    Mar 2013
    Chaffee, MO


    I found what the EXASM.COM program is looking for. You need to do a GLOBAL "Search & Replace" for:
    1. "DB " to "DEFB "
    2. "DW " to 'DEFW "

    My file is named MONITR10.SRC and it builds with ZERO errors using:


    But, my .PRN file has 20 0f these bytes "/00" at the beginning of the file I just use GEDIT to delete them.

    2332 ;
    2333 ;
    2334 ; END OF PROGRAM! ! ! ! !
    2335 ;
    2336 ;
    2337 END


    Thanks for your HELP. Hope you get Version 1.1 where you can test it.
    Email coming your way.......


  7. #47


    Assembling is indeed working for the Monitor-10.Z80 file after replacing the DB and DW, ADD A and adding the -$ to the relative jumps.
    Alas linking with EXLINK is another problem: it gives me a 'load above exlink error ADDR:E000 do it anyway? Y/N'
    If I choose 'Y' then it writes a 32 kB .COM file and then CP/M errors out with a R/O error on the disk and stops.

    I notice that if I add an address as second parameter to EXLINK it still says 'Starting offset 0' but the 'load above exlink error' displays 'ADDR C000'.

    2018-09-10 06.10.10.jpg

    Is it possible to give EXLINK the correct offset at the command line?
    Last edited by gertk; September 10th, 2018 at 10:01 AM.

  8. #48
    Join Date
    Mar 2013
    Chaffee, MO


    The Linker info starts on p.58 of the "Exidy_Development_Pac_Users_Manual_1979.pdf" manual. An offset can be added to the
    Linker's command line as explained on p.62. But, in this case I don't think the linker is used. The linker is typically used to
    gather the various Modules and tie all the global and local symbols to a Symbol table.

    You already have the HEX bytes you need for the Monitor or Updated Monitor (Ver 1.1), and those can be burned into an EPROM
    and inserted into the IC Socket for the Monitor ROM (4K).

    The actual code at 0xE000 is as follows:

    	00E0		  ORG 0E000H
    E000  C3 62E0
    E003  C3 E8E0
    E006  C3 77E0
    E009  C3 30E0
    E00C  C3 45E0
    E00F  C3 DAE2
    E012  C3 EEE2
    E015  C3 D1EA
    E018  C3 1CEB
    E01B  C3 F0E9
    E01E  C3 76E7
    E021  C3 7FE7
    E024  C3 8AE2
    E027  C3 AFE2
    E02A  C3 5AE6
    E02D  C3 99E7
    E030  FD E5
    E032  E5
    E033  CD A2E1
    E036  21 41E0
    E039  E5
    E03A  FD 6E 41 
    E03D  FD 66 42 
    E040  E9
    E041  E1
    E042  FD E1
    E044  C9
    E045  FD E5
    E047  E5
    E048  F5
    E049  CD A2E1
    E04C  FD 66 3E 
    E04F  2E 01
    E051  2B
    E052  7C
    E053  B5
    E054  20 FB
    E056  F1
    E057  21 41E0
    E05A  E5
    E05B  FD 6E 3F 
    E05E  FD 66 40 
    E061  E9
    You should be able to load DDT, then do a data dump of 0xE000 and find these exact bytes in your Computer,
    where the current Monitors HEX Bytes should be.

    Try this in CP/M:
    Run DDT which will give you the - command prompt.

    Do the following commands from DDT's prompt:

    -f0100,7fff,00 ; Fill from 0x0100 to 0x7fff with zero's, to make sure I know what is what!
    -mE000,EFFF,0100 ; move 4096 bytes to 0100 through end of 4096 bytes for Monitor @0xE000 ms,f,d s=start, f=end, d=destination
    CNTL C ; EXIT DDT and save the block by using: SAVE 16 MON10.HEX Saves a 4K block = 16 pages of 256 bytes

    This should save your current Monitor's HEX bytes.

    I just found four files inside a .ZIP file and two of those are "exidy standard 1.1 exm011-1.bin", "exidy standard 1.1 exm011-2.bin"

    I just checked the first 0x47 bytes to the hex bytes I posted above and they are equal. That tells me the hex bytes we have are "close"
    to being the source for Ver 1.0.........just needs the patches inserted and assembled again for Ver 1.1. When that is finished you can do a
    difference of two files with diff, or vbindiff. That will find anything in the re-created source that might still need fixing to be 100% the same.

    There are two other files in that zip which are for Televideo Emulation.
    exidy tvi-c rom1.bin - Exidy Sorcerer II TVI-C Rom 1
    exidy tvi-c rom2.bin - Exidy Sorcerer II TVI-C Rom 2

    More about the TVI Custom ROM...

    EXIDY/TVI MONITOR - This pair of monitor ROMS replace your current ROMS and give you full Televideo
    emulation. With this monitor you can run all those 'standard' CP/M programs that use cursor addressing,
    clear-to-eol, cIear-to-eos, reverse print, and more! You can also run dBase II, SuperCalc, and other
    terminal dependent programs. Since all of the internal callable routines have been kept at their
    original starting addresses, this monitor is 99.99% compatible with your old Exidy software! Also,
    all of the known bugs in the old monitor have been fixed.

    Note that although the TVI monitor simulates the Televideo for output, it does not simulate the
    Televideo keyboard codes. Therefore, some changes or re-configuration may be necessary to some programs
    for complete compatibility. For complete TVI emulation, use TVI monitor version -A.

    TVI-0 .....Televideo output simulation... *39.95
    TVI-A .....Televideo input/output simulation...*39.95

    The monitor set contains two 2716, single 5 volt EPROMS. Some Sorcerers may require a cut and jumper
    to change from present ROMS or 3 voltage EPROMS to 5 volt type.

    Last edited by ldkraemer; September 10th, 2018 at 05:53 AM. Reason: second set ROM info added

Tags for this Thread


Posting Permissions

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