Image Map Image Map
Page 1 of 5 12345 LastLast
Results 1 to 10 of 48

Thread: Proper Assembler to use for Source Code

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

    Default Proper Assembler to use for Source Code

    I've OCR'd the the Monitor.prn file and created the source code for the Exidy Sorcerer - MONITOR Ver 1.0.
    I've corrected lots of OCR errors, and now I'm at the point I want to assemble the source to generate the Monitor.prn
    file for comparison with the original. I assumed the assembler for CP/M ver 2.2 was used to Generate the MONITOR,
    but that doesn't seem to be the case. The EX Instruction is used versus the XCHG that CP/M's ASM uses.

    I've tried the RunCPM ASM.COM, the MYZ80 LASM.COM & ASM.COM, and I am getting the same errors of undefined
    Labels. I'm getting lots of errors with Undefined Labels and Label problems. It makes me think I'm using the incorrect
    assembler for this source.

    Is there an Assembler GURU that has an idea what CP/M or Z80 assembler should be used to assemble this source?

    The first "U" error is at:
    UE02A F20000 0123 BASSAV: JP SAVBAS ;ENTRY FOR BASIC CSAVE


    A SECTION of the .PRN file follows.................

    Code:
                    *EXIDY STANDARD MONITOR SOFTWARE		07/26/76
                    0002 ;
                    0003 ;
                    0004 ;
                    0005 ;###################################
                    0006 ;#					#
                    0007 ;#    EXIDY STANDARD MONITOR       #
                    0008 ;#					#
                    0009 ;###################################
                    0010 ;
                    0011 ;
                    0012 ;
                    0013 ;
                    0014 ;
                    0015 ;
                    0016 ;          DEVELOPED FOR EXIDY INC.
                    0017 ;
                    0018 ;          BY JOHN K. BORDERS JR.
                    0019 ;
                    0020 ;
                    0021 ;
                    0022 ; 	Z80 BASED MONITOR SOFTWARE
                    0023 ;	WITH FULL CASSETTE AND VIDEO
                    0024 ;	DRIVER ROUTINES. SELF-SEEKING
                    0025 ;	RAM STORAGE AND STACK ROUTINES.
                    0026 ;
                    0027 ;
                    0028 ;
                    0029 ;
                    0030 ;
                    0031 ;	VERSION 1.0 	DATED: 7/26/78
                    0032 ;
                    0033 ;
                    0034 ;
                    0035 ;
                    0036 ;
                    0037 ;
                    0038 ;
                    0039 ;
                    0040 ;	EQUATE TABLE
                    0041 ;
                    0042 ;
                    0043 ;*********************************
                    0044 ;
                    0045 ; ASCII EQUATES
                    0046 ;
     000D =         0047 CR:	EQU	0DH		;CARRIAGE RETURN
     000A =         0048 LF:	EQU	0AH		;LINE FEED
     001B =         0049 ESC:	EQU	1BH		;ESCAPE
     0001 =         0050 CNTRLA:	EQU	'A'-40H
     0003 =         0051 CNTRLC:	EQU	'C'-40H
     0008 =         0052 CNTRLH:	EQU	'H'-40H
     0011 =         0053 CNTRLQ:	EQU	'Q'-40H
     0013 =         0054 CNTRLS:	EQU	'S'-40H
     0017 =         0055 CNTRLW:	EQU	'W'-40H
     001A =         0056 CNTRLZ:	EQU	'Z'-40H
     007F =         0057 RUBOUT:	EQU	7FH		;RUB OUT
     0020 =         0058 SPACE:	EQU	20H		;SPACE
                    0059 ;
                    0060 ; RAM POINTERS
                    0061 ;
     F000 =         0062 RAMTOP:	EQU	0F000H		;POINTER STORE
     0000 =         0063 RAM:	EQU	0000H		;START OF RAM
     0000 =         0064 BUFFER:	EQU	0		;INPUT BUFFER
     003C =         0065 LINELN:	EQU	BUFFER+60	;LINE LENGTH
     003D =         0066 TAPES:	EQU	LINELN+1	;TAPE RATE
     003E =         0067 SPEEDS:	EQU	TAPES+1		;DISPLAY SPEED
     003F =         0068 OUTADD:	EQU	SPEEDS+1	;OUTPUT ADDRESS
     0041 =         0069 INADD:	EQU	OUTADD+2	;INPUT ADDRESS
     0043 =         0070 BATCHF:	EQU	INADD+2		;BATCH FLAG
     0044 =         0071 PROMPT:	EQU	BATCHF+1	;PROMPT CHARACTER
     0045 =         0072 CMTRFG:	EQU	PROMPT+1	;CASSETTE MOTOR FLAG
     0046 =         0073 CRCBYT:	EQU	CMTRFG+1	;CRC BYTE
     0047 =         0074 CHEAD:	EQU	CRCBYT+1	;COMMAND HEADER
     0057 =         0075 THEAD:	EQU	CHEAD+16	;TAPE HEADER
                    0076 ; VIDEO SCREEN EQUATES
     00F8 =         0077 TOPHRG:	EQU	0F8H
     F000 =         0076 SCREEN:	EQU	0F000H
     F080 =         0079 VID:	EQU	SCREEN+128
     F800 =         0080 TOP:	EQU	SCREEN+2048
     0067 =         0081 VDHLD:	EQU	THEAD+16	;CHAR HOLD
     0068 =         0082 LINE:	EQU	VDHLD+1		;LINE #
     006A =         0083 CHR:	EQU	LINE+2		;CHAR #
     006C =         0084 LSTKEY:	EQU	CHR+2		;LAST KEY FRESSED
     0010 =         0085 HEADLN:	EQU	16		;HEADER LENGTH
     006E =         0086 STORE:	EQU	LSTKEY+2	;END OF EQU	TABLE
                    0087 ;
                    0088 ; CASSETTE HEADER EQUATES
                    0089 ;
     0000 =         0090 HNAME:	EQU	0
     0006 =         0091 HTYPE:	EQU	6
     0007 =         0092 HSIZE:	EQU	7
     0009 =         0093 HADDR:	EQU	9
     000B =         0094 HXEQ:	EQU	11
                    0096 ;
                    ;	BASSAV:		EQU	0E65AH
                    ;	BASLOAD:	EQU	0E799H
                    ;	CHRINR:		EQU	0E041H
                    ;	MAIN3:		EQU	0E11CH
                    ;	STAPR2:		EQU	0E985H
                    ;	MLOOP:		EQU	0EB44H
                    ;	FINISH:		EQU	0E348H
                    ;	SE:		EQU	0E330H
                    ;	DUMP:		EQU	0E314H
                    0097 ;
                    0098 ;
                    0099 ;
                    0100 ;
     E000           0101		ORG 0E000H
                    0102 ;
                    0103 ;
                    0104 ;
                    0105 ;	JUMP TABLE INTO MONITOR
                    0106 ;
                    0107 ;
                    0108 ;
     E000 F247E0    0109 COLD:	JP	INITC		;COLD	START
     E003 F278E0    0110 WARM:	JP	INITW		;WARM START
     E006 F24DE0    0111 USER:	JP	INITU		;USER START
     E009 F230E0    0112 RECEVE:	JP	CHRIN		;INPUT CHARACTER
     E00C F23CE0    0113 SEND:	JP	CHROUT		;OUTPUT CHARACTER
     E00F F27DE1    0114 INTAPE:	JP	TAPEIN		;TAPE INPUT
     E012 F288E1    0115 OUTAPE:	JP	TAPOUT		;TAPE OUTPUT
     E015 F26BE6    0116 QUIKCK:	JP	QUIK			;CNTRLC CHECK
     E018 F27EE6    0117 KEYBRD:	JP	CHRIN1		;KEYBOARD INPUT
     E01B F20EE6    0118 VIDEO:	JP	CHROT1		;VIDEO OUTPUT
     E01E F298E4    0119 PARLIN:	JP	PARIN		;PARALLEL INPUT
     E021 F29DE4    0120 PARLOT:	JP	PAROUT		;PARALLEL OUTPUT
     E024 F25BE1    0121 CMOTON:	JP	MOTRON		;TURN CASSETTE MOTOR ON
     E027 F267E1    0122 CMOTOFF:	JP	MTROFF		;TURN CASSETTE MOTOR OFF
    UE02A F20000    0123 BASSAV:	JP	SAVBAS		;ENTRY FOR BASIC CSAVE
     E02D F2B1E4    0124 BASLOD:	JP	LODBAS		;ENTRY FOR BASIC CLOAD
                    0125 ;
    VE030 56        0126 CHRIN:	PUSH	IY		;WE DESTROY THESE
    VE031 76        0127		PUSH	HL
     E032 CDE0E0    0128		CALL	GETIY
    L               0129		LD	HL, CHRINR	;FOR RETURN
    VE035 76        0130		PUSH	HL
    S               0131		LD	L, (IY+INADD)	;GET ADDRESS
    L               0132		LD	H, (IY+INADD+1)
    PE036 F29FE6    0133		JP	(HL)		;GO DO IT
    VE039 76        0134 CHRINR:	POP	HL		;RESTORE
    VE03A 56        0135		POP	IY
     E03B C9        0136		RET
                    0137 ;
    VE03C 56        0138 CHROUT:	PUSH	IY		;WE DESTROY THESE
    VE03D 76        0139		PUSH	HL
    VE03E 76        0140		PUSH	AF
     E03F CDE0E0    0141		CALL	GETIY
    S               0142		LD	H, (IY+SPEEDS)	;GD DISPLAY SPEED
    L               0143		LD	L, 1		;FINISH OFF
    L               0144 OUTDLY:	DEC	HL		;DELAY
    S               0145		LD	A, H		;ARE WE THROUGH?
    S               0146		OR	L
    L               0147		JR	NZ, OUTDLY	;NOPE-
    VE042 76        0148		POP	AF		;GET 'EM BACK
    L               0149		LD	HL, CHRINR
    VE043 76        0150		PUSH	HL
    S               0151		LD	L, (IY+OUTADD)
    L               0152		LD	H, (IY+OUTADD+1)
    PE044 F29FE6    0153		JP	(HL)
                    0154 ;
                    0155 ;
                    0156 ;
                    0157 ;		INITIALIZE ROUTINES
                    0158 ;
                    0159 ;
                    0160 ;
                    0161 ;
                    0162 ;
                    0163 ;
                    0164 ;		INITC = COLD	START - FINDS
                    0165 ;			TOP OF RAM AND SDS
                    0166 ;			STACK AND STORAGE THERE
                    0167 ;		INITW = WARM START - USES
                    0166 ;			STACK FROM INITC
                    0169 ;		INITU = USER START - USES
                    0170 ;			HL FROM USER AS TOP OF
                    0171 ;			RAM LIKE INITC
                    0172 ;
                    0173 ;
                    0174 ;
     E047 =         0175 INITC:	EQU	$
    S               0176		LD	A, 0FFH		;INITIALIZE CASSETTE
    PE047 D3FD      0177		OUT	0FDH, A
    S               0178		LD	D, 0
    L               0179 		LD	HL, RAM		;POINT BEG RAM
    L               0180 INITC2:	LD	A, (HL)		;GD IT
    L               0181		LD	B, (HL)		;TWICE
    L               0182		CPL			;TURN AROUND
    P               0183		LD	(HL), A		;PUT BACK
     E049 F49FE6    0184		CP	(HL)		;& CHK IT
    P               0185		LD	(HL), B		;PUT REAL BACK
    L               0186		INC	HL		;POINT NEXT
    L               0187		JR	Z, INITC2	;LOOP IF GOOD
    L               0188		DEC	HL		;ADJUST
    L               0189		DEC	HL		;  H & L
     E04C 01        0190		DB	1		;LXI B
                    0191 ;
                    0192 ;		 USER START ENTRY POINT
                    0193 ;
     E04D =         0194 INITU:	EQU	$
    S               0195		LD	D, 1
    L0000 =         0196 INITU1:	EQU	$
    P               0197		LD	(RAMTOP), HL	;USER IS HERE
    L               0198		LD	IY, (RAMTOP)
    L               0199		LD	BC, 0-STORE
    VE04D 56        0200		ADD	IY, BC		;DO IT
    S               0201		LD	SP, IY		;GET A STACK
    PE04E CD6BE6    0202		CALL	QUIK		;SEE IF WARM RESET
    SE051 F2B2E6    0203		JP	NZ, PWARM	;YES-GO DO IT
    S               0204		LD	A, L		;CLEAR RAM!
    VE054 56        0205		PUSH	IY
    VE055 76        0206		POP	HL		;GET BEGINNING
    L               0207 INITU2:	LD	(HL), 0		;MAKE ZERO
    L               0208		INC	HL		;NEXT
     E056 F40500    0209		CP	L		;THRU?
    L               0210		JR	NZ, INITU2	;NO-KEEP GOIN'
    P               0211		LD	(IY+PROMPT), '>'	;INIT PROMPT
    P               0212		LD	(IY+TAPES), 40H	;SET FOR 1200 BAUD
    VE059 76        0213		PUSH	DE		;WE DESTROY
     E05A CDFDE5    0214		CALL	VIDINT		;INIT VIDE0 BOARD
    VE05D 76        0215		POP	DE		;GET BACK
    L               0216		LD	HL, CHRIN1	;POINT KEYBOARD
    P               0217		LD	(IY+INADD), L
    P               0218		LD	(IY+INADD+1), H	;PUT AWAY
    L               0219		LD	HL, CHROT1	;POINT VIDEO
    P               0220		LD	(IY+OUTADD), L
    P               0221		LD	(IY+OUTADD+1), H
    S               0222		LD	A, (PCOLD)	;SEE IF PROM PACK IS IN
    PE05E F4C300    0223		CP	0C3H		;IS THE "JUMP" THERE?
    L               0224		JR	NZ, INITU3	;NO-
    S               0225		LD	A, (PWARM)	;HOW ABOUT THIS ONE?
    PE061 F4C300    0226		CP	0C3H
    L               0227		JR	NZ, INITU3
    S               0228		DEC	D
    PE064 F2E4E5    0229		JP	PROMP1
    L               0230 INITU3:	LD	HL, HEDING	;POINT MSG
     E067 CDE8E0    0231		CALL	MSGOUT
    L               0232		LD	DE, (RAMTOP)
     E06A CDFDE0    0233		CALL	ADDOUT		;PRINT RAM TOP
    L               0234		LD	HL, HEAD2
     E06D CDE8E0    0235		CALL	MSGOUT		;FINISH
    VE070 56        0236		PUSH	IY		;PUT STACK
    VE071 76        0237		POP	DE		;  IN DE
    L               0236		DEC	DE		;ADJUST
     E072 CDFDE0    0239		CALL	ADDOUT		;PRINT IT
    L               0240		LD	HL, HEAD3	;LAST ONE
     E075 CDE8E0    0241		CALL	MSGOUT
                    0242 ;
                    0243 ;		WARM START ENTRY POINT
                    0244 ;
     E078 =         0245 INITW:	EQU	$
     E078 CDE0E0    0246		CALL	GETIY		;GO GET A VALID IY FROM RA
                    0248 ;
                    0249 ;
                    0250 ;
                    0251 ;	BEGINNING OF MAIN PROGRAM
                    0252 ;
                    0253 ;
                    0254 ;
                    0255 ;
                    0256 ;
     E07B =         0257 START:	EQU	$		;START MAINLINE
    S               0258 		LD	SP, IY		;REDO STACK
    PE07B CD0DE1    0259		CALL	CRLF		;FRESH LINE
    S               0260		LD	A, (IY+PROMPT)	;LOAD PROMPT
    PE07E CD3CE0    0261		CALL	CHROUT		;& OUT
     E081 CD9CE0    0262		CALL	LINEIN		;GET A LINE
    VE084 56        0263		PUSH	IY		;MOVE IY
    VE085 76        0264		POP	HL		;   TO HL
     E086 CD29E1    0265		CALL	SCAN		;SKIP DELIMS
    SE089 F2B9E6    0266		JP	Z, ERRCMD	;UH-OH NONE!
    L               0267		LD	IX, TABLE	;POINT CMD TBL
    VE08C 76        0268 MAIN1:	PUSH	HL		;SAVE 'EM
    VE08D 76        0269		PUSH	IX
    S               0270		LD	B, 2		;CHECK 2 CHRS
    L               0271 MAIN2:	LD	A, (IX)		;LOAD FRM TABLE
    PE08E F49FE6    0272		CP	(HL)		;COMPARE?
    L               0273		JR	NZ, MAIN4	;NO-TRY NEXT
    L               0274		INC	HL		;CHECK NEXT CHR
    L               0273		INC	IX
    L               0276		DJNZ	MAIN2		;LOOP FOR 2
    VE091 76        0277		POP	DE		;CLEAR STACK
    VE092 76        0278		POP	DE		;I/O PNTR
    L               0279		LD	BC, START	;PUSH	RETURN
    VE093 56        0280		PUSH	BC
    L               0281 MAIN3:	LD	L, (IX)		;LOAD
    L               0282		LD	H, (IX+1)	;  JUMP
    PE094 F29FE6    0283		JP	(HL)		;     ADDRESS
    VE097 76        0284 MAIN4:	POP	IX		;RESET
    VE098 76        0285		POP	HL		;  POINTERS
    L               0286		INC	IX		;NEXT ENTRY
    L               0287		INC	IX		;    IN
    L               0288		INC	IX		;  TABLE
    L               0289		INC	IX
    S               0290		LD	A, (IX)		;IS IT
    S               0291		OR	A		;  THE END?
    L               0292		JR	NZ, MAIN1	;NO-CONTINUE
    L               0293 ERRCMD:	LD	HL, IVCMSG
     E099 F2FDE0    0294		JP	WHAT
                    0296 ;

    Thanks.

    Larry
    Last edited by ldkraemer; August 27th, 2018 at 06:45 PM. Reason: updated

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

    Default

    I know nothing about cp/m, much less z80 based assembler. But you may try eliminating everything to the left of the mnemonics. Unless of course it belongs there

    Correction, everything including the line numbers and to the left. The labels would need to stay ('MAIN' etc.). I'm assuming and basically confident one of your choices can process symbolic references.

    Another likely problem, the declarations between 0096 and 0097 have colons in front of them. That seems to indicate a comment line, and the code won't be seen by the assembler.
    Last edited by 2icebitn; August 27th, 2018 at 06:52 PM.

  3. #3
    Join Date
    Mar 2013
    Location
    Chaffee, MO
    Posts
    1,393

    Default

    Yes, I already have.....................

    My SOURCE is as follows:

    Code:
    *EXIDY STANDARD MONITOR SOFTWARE		07/26/76
    0002 ;
    0003 ;
    0004 ;
    0005 ;###################################
    0006 ;#					#
    0007 ;#    EXIDY STANDARD MONITOR       #
    0008 ;#					#
    0009 ;###################################
    0010 ;
    0011 ;
    0012 ;
    0013 ;
    0014 ;
    0015 ;
    0016 ;          DEVELOPED FOR EXIDY INC.
    0017 ;
    0018 ;          BY JOHN K. BORDERS JR.
    0019 ;
    0020 ;
    0021 ;
    0022 ; 	Z80 BASED MONITOR SOFTWARE
    0023 ;	WITH FULL CASSETTE AND VIDEO
    0024 ;	DRIVER ROUTINES. SELF-SEEKING
    0025 ;	RAM STORAGE AND STACK ROUTINES.
    0026 ;
    0027 ;
    0028 ;
    0029 ;
    0030 ;
    0031 ;	VERSION 1.0 	DATED: 7/26/78
    0032 ;
    0033 ;
    0034 ;
    0035 ;
    0036 ;
    0037 ;
    0038 ;
    0039 ;
    0040 ;	EQUATE TABLE
    0041 ;
    0042 ;
    0043 ;*********************************
    0044 ;
    0045 ; ASCII EQUATES
    0046 ;
    0047 CR:	EQU	0DH		;CARRIAGE RETURN
    0048 LF:	EQU	0AH		;LINE FEED
    0049 ESC:	EQU	1BH		;ESCAPE
    0050 CNTRLA:	EQU	'A'-40H
    0051 CNTRLC:	EQU	'C'-40H
    0052 CNTRLH:	EQU	'H'-40H
    0053 CNTRLQ:	EQU	'Q'-40H
    0054 CNTRLS:	EQU	'S'-40H
    0055 CNTRLW:	EQU	'W'-40H
    0056 CNTRLZ:	EQU	'Z'-40H
    0057 RUBOUT:	EQU	7FH		;RUB OUT
    0058 SPACE:	EQU	20H		;SPACE
    0059 ;
    0060 ; RAM POINTERS
    0061 ;
    0062 RAMTOP:	EQU	0F000H		;POINTER STORE
    0063 RAM:	EQU	0000H		;START OF RAM
    0064 BUFFER:	EQU	0		;INPUT BUFFER
    0065 LINELN:	EQU	BUFFER+60	;LINE LENGTH
    0066 TAPES:	EQU	LINELN+1	;TAPE RATE
    0067 SPEEDS:	EQU	TAPES+1		;DISPLAY SPEED
    0068 OUTADD:	EQU	SPEEDS+1	;OUTPUT ADDRESS
    0069 INADD:	EQU	OUTADD+2	;INPUT ADDRESS
    0070 BATCHF:	EQU	INADD+2		;BATCH FLAG
    0071 PROMPT:	EQU	BATCHF+1	;PROMPT CHARACTER
    0072 CMTRFG:	EQU	PROMPT+1	;CASSETTE MOTOR FLAG
    0073 CRCBYT:	EQU	CMTRFG+1	;CRC BYTE
    0074 CHEAD:	EQU	CRCBYT+1	;COMMAND HEADER
    0075 THEAD:	EQU	CHEAD+16	;TAPE HEADER
    0076 ; VIDEO SCREEN EQUATES
    0077 TOPHRG:	EQU	0F8H
    0076 SCREEN:	EQU	0F000H
    0079 VID:	EQU	SCREEN+128
    0080 TOP:	EQU	SCREEN+2048
    0081 VDHLD:	EQU	THEAD+16	;CHAR HOLD
    0082 LINE:	EQU	VDHLD+1		;LINE #
    0083 CHR:	EQU	LINE+2		;CHAR #
    0084 LSTKEY:	EQU	CHR+2		;LAST KEY FRESSED
    0085 HEADLN:	EQU	16		;HEADER LENGTH
    0086 STORE:	EQU	LSTKEY+2	;END OF EQU	TABLE
    0087 ;
    0088 ; CASSETTE HEADER EQUATES
    0089 ;
    0090 HNAME:	EQU	0
    0091 HTYPE:	EQU	6
    0092 HSIZE:	EQU	7
    0093 HADDR:	EQU	9
    0094 HXEQ:	EQU	11
    0096 ;
    ;	BASSAV:		EQU	0E65AH
    ;	BASLOAD:	EQU	0E799H
    ;	CHRINR:		EQU	0E041H
    ;	MAIN3:		EQU	0E11CH
    ;	STAPR2:		EQU	0E985H
    ;	MLOOP:		EQU	0EB44H
    ;	FINISH:		EQU	0E348H
    ;	SE:		EQU	0E330H
    ;	DUMP:		EQU	0E314H
    0097 ;
    0098 ;
    0099 ;
    0100 ;
    0101		ORG 0E000H
    0102 ;
    0103 ;
    0104 ;
    0105 ;	JUMP TABLE INTO MONITOR
    0106 ;
    0107 ;
    0108 ;
    0109 COLD:	JP	INITC		;COLD	START
    0110 WARM:	JP	INITW		;WARM START
    0111 USER:	JP	INITU		;USER START
    0112 RECEVE:	JP	CHRIN		;INPUT CHARACTER
    0113 SEND:	JP	CHROUT		;OUTPUT CHARACTER
    0114 INTAPE:	JP	TAPEIN		;TAPE INPUT
    0115 OUTAPE:	JP	TAPOUT		;TAPE OUTPUT
    0116 QUIKCK:	JP	QUIK			;CNTRLC CHECK
    0117 KEYBRD:	JP	CHRIN1		;KEYBOARD INPUT
    0118 VIDEO:	JP	CHROT1		;VIDEO OUTPUT
    0119 PARLIN:	JP	PARIN		;PARALLEL INPUT
    0120 PARLOT:	JP	PAROUT		;PARALLEL OUTPUT
    0121 CMOTON:	JP	MOTRON		;TURN CASSETTE MOTOR ON
    0122 CMOTOFF:	JP	MTROFF		;TURN CASSETTE MOTOR OFF
    0123 BASSAV:	JP	SAVBAS		;ENTRY FOR BASIC CSAVE
    0124 BASLOD:	JP	LODBAS		;ENTRY FOR BASIC CLOAD
    0125 ;
    0126 CHRIN:	PUSH	IY		;WE DESTROY THESE
    0127		PUSH	HL
    0128		CALL	GETIY
    0129		LD	HL, CHRINR	;FOR RETURN
    0130		PUSH	HL
    0131		LD	L, (IY+INADD)	;GET ADDRESS
    0132		LD	H, (IY+INADD+1)
    0133		JP	(HL)		;GO DO IT
    0134 CHRINR:	POP	HL		;RESTORE
    0135		POP	IY
    0136		RET
    0137 ;
    0138 CHROUT:	PUSH	IY		;WE DESTROY THESE
    0139		PUSH	HL
    0140		PUSH	AF
    0141		CALL	GETIY
    0142		LD	H, (IY+SPEEDS)	;GD DISPLAY SPEED
    0143		LD	L, 1		;FINISH OFF
    0144 OUTDLY:	DEC	HL		;DELAY
    0145		LD	A, H		;ARE WE THROUGH?
    0146		OR	L
    0147		JR	NZ, OUTDLY	;NOPE-
    0148		POP	AF		;GET 'EM BACK
    0149		LD	HL, CHRINR
    0150		PUSH	HL
    0151		LD	L, (IY+OUTADD)
    0152		LD	H, (IY+OUTADD+1)
    0153		JP	(HL)
    0154 ;
    0155 ;
    0156 ;
    0157 ;		INITIALIZE ROUTINES
    0158 ;
    0159 ;
    0160 ;
    0161 ;
    0162 ;
    0163 ;
    0164 ;		INITC = COLD	START - FINDS
    0165 ;			TOP OF RAM AND SDS
    0166 ;			STACK AND STORAGE THERE
    0167 ;		INITW = WARM START - USES
    0166 ;			STACK FROM INITC
    0169 ;		INITU = USER START - USES
    0170 ;			HL FROM USER AS TOP OF
    0171 ;			RAM LIKE INITC
    0172 ;
    0173 ;
    0174 ;
    0175 INITC:	EQU	$
    0176		LD	A, 0FFH		;INITIALIZE CASSETTE
    0177		OUT	0FDH, A
    0178		LD	D, 0
    0179 		LD	HL, RAM		;POINT BEG RAM
    0180 INITC2:	LD	A, (HL)		;GD IT
    0181		LD	B, (HL)		;TWICE
    0182		CPL			;TURN AROUND
    0183		LD	(HL), A		;PUT BACK
    0184		CP	(HL)		;& CHK IT
    0185		LD	(HL), B		;PUT REAL BACK
    0186		INC	HL		;POINT NEXT
    0187		JR	Z, INITC2	;LOOP IF GOOD
    0188		DEC	HL		;ADJUST
    0189		DEC	HL		;  H & L
    0190		DB	1		;LXI B
    0191 ;
    0192 ;		 USER START ENTRY POINT
    0193 ;
    0194 INITU:	EQU	$
    0195		LD	D, 1
    0196 INITU1:	EQU	$
    0197		LD	(RAMTOP), HL	;USER IS HERE
    0198		LD	IY, (RAMTOP)
    0199		LD	BC, 0-STORE
    0200		ADD	IY, BC		;DO IT
    0201		LD	SP, IY		;GET A STACK
    0202		CALL	QUIK		;SEE IF WARM RESET
    0203		JP	NZ, PWARM	;YES-GO DO IT
    0204		LD	A, L		;CLEAR RAM!
    0205		PUSH	IY
    0206		POP	HL		;GET BEGINNING
    0207 INITU2:	LD	(HL), 0		;MAKE ZERO
    0208		INC	HL		;NEXT
    0209		CP	L		;THRU?
    0210		JR	NZ, INITU2	;NO-KEEP GOIN'
    0211		LD	(IY+PROMPT), '>'	;INIT PROMPT
    0212		LD	(IY+TAPES), 40H	;SET FOR 1200 BAUD
    0213		PUSH	DE		;WE DESTROY
    0214		CALL	VIDINT		;INIT VIDE0 BOARD
    0215		POP	DE		;GET BACK
    0216		LD	HL, CHRIN1	;POINT KEYBOARD
    0217		LD	(IY+INADD), L
    0218		LD	(IY+INADD+1), H	;PUT AWAY
    0219		LD	HL, CHROT1	;POINT VIDEO
    0220		LD	(IY+OUTADD), L
    0221		LD	(IY+OUTADD+1), H
    0222		LD	A, (PCOLD)	;SEE IF PROM PACK IS IN
    0223		CP	0C3H		;IS THE "JUMP" THERE?
    0224		JR	NZ, INITU3	;NO-
    0225		LD	A, (PWARM)	;HOW ABOUT THIS ONE?
    0226		CP	0C3H
    0227		JR	NZ, INITU3
    0228		DEC	D
    0229		JP	PROMP1
    0230 INITU3:	LD	HL, HEDING	;POINT MSG
    0231		CALL	MSGOUT
    0232		LD	DE, (RAMTOP)
    0233		CALL	ADDOUT		;PRINT RAM TOP
    0234		LD	HL, HEAD2
    0235		CALL	MSGOUT		;FINISH
    0236		PUSH	IY		;PUT STACK
    0237		POP	DE		;  IN DE
    0236		DEC	DE		;ADJUST
    0239		CALL	ADDOUT		;PRINT IT
    0240		LD	HL, HEAD3	;LAST ONE
    0241		CALL	MSGOUT
    0242 ;
    0243 ;		WARM START ENTRY POINT
    0244 ;
    0245 INITW:	EQU	$
    0246		CALL	GETIY		;GO GET A VALID IY FROM RAM
    0248 ;
    Thanks.

    Larry

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

    Default

    You still have the line numbers, don't know if that's an issue. I also edited my prior post.

  5. #5
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    33,689
    Blog Entries
    18

    Default

    The line numbers are going to confuse most assemblers. About the only one that I know required them was the old PT assembler--and it was 8080.

  6. #6

    Default

    I can't tell if your PRN listing is from 8080 or Z80 assembly, but the code is definitely Z80 and so you'll need to use a Z80-aware assembler. The default CP/M assemblers do not do Z80, as far as I remember. If the PRN is from a 8080 assembly, then I would not spend any time trying to understand the errors. If you can attach the entire PRN/LST from a Z80 assembly, please do that.

  7. #7
    Join Date
    May 2018
    Location
    Melbourne, Australia
    Posts
    209

    Default

    Quote Originally Posted by 2icebitn View Post
    You still have the line numbers, don't know if that's an issue. I also edited my prior post.
    I'm still seeing the leading semi-colons which are commenting out the first EQUate that is failing, as Larry points out, for the address of the BASSAV routine.
    To delete the column of line numbers - which can't be assembled - you might find an editor with column mode useful.
    The source code syntax looks compatible with the assembler in the Exidy Z80 Development Pac - which would make sense.

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

    Default

    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

  9. #9

    Default

    It looks like a listing file from that will need the first 5 characters stripped off.

    After that- it looks close to Microsoft Macro-80 with the .z80 directive..

  10. #10

    Default

    Do you have the complete code?

    M80 errors are for unresolved labels as this code segment is not complete. M80 run under 22NICE off the USB floppy of my Panasonic CF-52. CP/M had problems with the 512GByte SATA FAT-32 drive.

    You need to get rid of the line numbers, easily done in Wordstar Column Edit Mode.

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
  •