;
;  Assembler to generate the cpm3355.spr file
;
cr		equ	0dh
lf		equ	0ah

		org	100h

		db	0

		dw	4F9H

		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0

		JP	0CH

		JP	397H

		JP	18H

		JP	35H

		LD	HL,3
		LD	DE,43H
		LD	BC,9
		LDIR
		RET

		LD	A,(4CH)
		ADD	A,0AH
		LD	C,A
		IN	A,(C)
		CPL
		BIT	0,A
		JR	Z,233H
		AND	0CH
		JR	NZ,230H
		LD	A,0FFH
		OR	A
		LD	(437H),A
		RET

		CALL	3F5H
		SUB	A
		RET

		LD	A,C
		LD	HL,44FH
		BIT	3,(HL)
		JR	NZ,285H
		LD	HL,0B3H
		LD	BC,8
		CPIR
		JR	Z,295H
		CP	80H
		JR	NC,270H
		CP	20H
		JR	C,267H
		LD	BC,(45FH)
		LD	HL,(451H)
		ADD	HL,BC
		LD	DE,63CH
		CALL	42CH
		CALL	NC,28AH
		LD	(451H),HL
		LD	HL,450H
		INC	(HL)
		LD	HL,(459H)
		LD	(HL),A
		INC	HL
		LD	(459H),HL
		RET

		CP	0C0H
		PUSH	AF
		JR	NC,27DH
		AND	3FH
		LD	(45FH),A
		POP	AF
		JR	267H

		AND	3FH
		LD	C,A
		LD	B,0
		POP	AF
		JR	253H

		CP	cr
		JP	Z,295H
		CP	lf
		JR	Z,2AAH
		OR	80H
		LD	BC,0CH
		JR	253H

		LD	HL,0BBH
		LD	A,C
		JR	29BH

		ADD	A,A
		CALL	432H
		LD	A,(HL)
		INC	HL
		LD	H,(HL)
		LD	L,A
		JP	(HL)

		LD	HL,44FH
		SET	3,(HL)
		RET

		CALL	2C8H
		LD	HL,44FH
		RES	3,(HL)
		RET

		db	7FH
		db	0AH
		db	0CH
		db	0DH
		db	9
		db	5
		db	3
		db	2

		dw	2ACH
		dw	2A5H
		dw	0A4H
		dw	0CBH
		dw	295H
		dw	2B6H
		dw	2C8H
		dw	397H

		LD	A,' '
		CALL	4FH
		LD	A,(450H)
		AND	7
		JR	NZ,2CBH
		RET

		LD	HL,463H
		LD	DE,(459H)
		AND	A
		SBC	HL,DE
		RET	NC
		CALL	2DDH
		LD	HL,(45BH)
		LD	DE,(451H)
		ADD	HL,DE
		EX	DE,HL
		LD	HL,(453H)
		ADD	HL,HL
		CALL	42CH
		LD	HL,(459H)
		LD	(HL),0
		DEC	HL
		EX	DE,HL
		LD	HL,463H
		LD	(459H),HL
		LD	A,(44FH)
		BIT	3,A
		JP	NC,19CH
		LD	BC,(45BH)
		LD	(461H),BC
		LD	A,(HL)
		JR	NZ,35DH
		CP	80H
		JR	NC,346H
		CP	' '
		JR	Z,330H
		JR	C,358H
		PUSH	HL
		LD	HL,(461H)
		CALL	351H
		POP	HL
		LD	A,(HL)
		LD	B,A
		CALL	36EH
		CALL	33DH
		LD	DE,(45DH)
		PUSH	HL
		LD	HL,(461H)
		CALL	311H
		ADD	HL,DE
		LD	(461H),HL
		POP	HL
		INC	HL
		LD	A,(HL)
		AND	A
		JR	NZ,316H
		RET

		CP	0C0H
		JR	NC,351H
		AND	3FH
		LD	(45DH),A
		JR	340H

		AND	3FH
		LD	E,A
		LD	D,0
		JR	334H

		CALL	258H
		JR	340H

		PUSH	HL
		LD	H,B
		LD	L,C
		LD	C,A
		LD	B,6
		RR	C
		CALL	C,26AH
		INC	HL
		INC	HL
		DJNZ	363H
		LD	B,H
		LD	C,L
		POP	HL
		INC	HL
		LD	A,(HL)
		AND	A
		JR	NZ,35DH
		LD	(461H),BC
		RET

		LD	A,(HL)
		PUSH	HL
		LD	H,B
		LD	L,C
		RLA
		RLA
		LD	C,A
		LD	B,6
		DEC	HL
		DEC	HL
		RL	C
		CALL	C,26AH
		DJNZ	382H
		LD	B,H
		LD	C,L
		POP	HL
		DEC	HL
		LD	DE,463H
		CALL	42CH
		JR	NC,379H
		LD	(461H),BC
		RET

		LD	BC,(451H)
		LD	(461H),BC
		EX	DE,HL
		JR	NZ,379H
		LD	HL,45DH
		LD	B,0
		LD	A,(DE)
		CP	80H
		JR	C,3BDH
		CP	0C0H
		JR	NC,3BDH
		AND	3FH
		LD	C,(HL)
		LD	(HL),A
		LD	A,C
		OR	80H
		LD	(DE),A
		INC	B
		INC	DE
		LD	A,(DE)
		AND	A
		JR	NZ,3ADH
		LD	A,(HL)
		PUSH	AF
		EX	DE,HL
		PUSH	HL
		LD	DE,0
		DEC	HL
		LD	A,(HL)
		DEC	A
		JR	NZ,3D0H
		INC	D
		CP	5
		JR	NZ,3D5H
		INC	E
		DJNZ	3CAH
		LD	A,(44FH)
		RR	D
		JR	NC,3E0H
		XOR	0C0H
		RR	E
		JR	NC,3E6H
		XOR	30H
		LD	(44FH),A
		POP	HL
		DEC	HL
		LD	A,(HL)
		PUSH	HL
		CP	80H
		JR	NC,433H
		CP	20H
		JR	Z,43EH
		JR	C,453H
		LD	HL,(461H)
		LD	DE,(45DH)
		SBC	HL,DE
		LD	(461H),HL
		PUSH	AF
		CALL	311H
		CALL	351H
		POP	AF
		LD	B,A
		CALL	36EH
		CALL	33DH
		POP	HL
		DEC	HL
		LD	DE,463H
		CALL	42CH
		JR	NC,3EBH
		POP	AF
		LD	(45DH),A
		LD	A,(44FH)
		BIT	6,A
		JR	Z,429H
		XOR	0C0H
		BIT	4,A
		JR	Z,42FH
		XOR	30H
		LD	(44FH),A
		RET

		CP	0C0H
		JR	NC,441H
		AND	3FH
		LD	(45DH),A
		JR	412H

		LD	A,(45DH)
		AND	3FH
		LD	D,0
		LD	E,A
		LD	HL,(461H)
		SBC	HL,DE
		LD	(461H),HL
		CALL	311H
		JR	412H

		CALL	258H
		JR	412H

		DEC	A
		LD	B,80H
		JR	Z,462H
		CP	5
		RET	NZ
		LD	B,' '
		LD	A,(44FH)
		XOR	B
		LD	(44FH),A
		RET

		PUSH	HL
		CALL	351H
		LD	A,'.'
		CALL	36EH
		POP	HL
		RET

		CALL	0D8H
		LD	HL,(451H)
		LD	(45BH),HL
		LD	DE,10H
		LD	A,(44FH)
		BIT	3,A
		RET	Z
		LD	E,2
		RET

		PUSH	AF
		PUSH	BC
		CALL	295H
		CALL	2C8H
		POP	HL
		POP	AF
		RET

		CALL	0D8H
		LD	HL,0
		LD	(450H),HL
		LD	(451H),HL
		LD	(45BH),HL
		RET

		CALL	275H
		LD	E,8
		JR	4CBH

		CALL	275H
		EX	DE,HL
		LD	L,8
		LD	A,8
		JR	4EFH

		CALL	295H
		LD	(457H),HL
		LD	DE,(455H)
		LD	HL,420H
		SUB	A
		SBC	HL,DE
		JR	4EFH

		CALL	275H
		LD	HL,(457H)
		ADD	HL,DE
		LD	(457H),HL
		LD	DE,(455H)
		ADD	HL,DE
		LD	DE,420H
		SBC	HL,DE
		RET	C
		LD	HL,(457H)
		LD	A,H
		OR	L
		RET	Z
		LD	DE,0
		LD	(457H),DE
		SUB	A
		CALL	2EFH
		RET

		EX	DE,HL
		LD	BC,420H
		LD	HL,(455H)
		AND	A
		JR	NZ,50BH
		ADD	HL,DE
		AND	A
		SBC	HL,BC
		JR	NC,500H
		ADD	HL,BC
		LD	(455H),HL
		EX	DE,HL
		CALL	415H
		LD	A,'w'
		JR	585H

		SBC	HL,DE
		JR	NC,500H
		JR	4FFH

		LD	A,(44FH)
		BIT	7,A
		RET	Z
		PUSH	HL
		PUSH	DE
		CALL	351H
		LD	A,'_'
		CALL	36EH
		POP	DE
		LD	HL,0CH
		SBC	HL,DE
		JR	NC,53BH
		LD	A,L
		NEG
		POP	HL
		PUSH	HL
		PUSH	DE
		CALL	432H
		CALL	351H
		LD	A,'_'
		CALL	36EH
		POP	DE
		POP	HL
		RET

		LD	A,(44FH)
		BIT	5,A
		RET	Z
		PUSH	HL
		LD	HL,(453H)
		INC	HL
		CALL	351H
		LD	A,B
		CALL	36EH
		POP	HL
		RET

		LD	DE,(453H)
		LD	(453H),HL
		SUB	A
		SBC	HL,DE
		RET	Z
		JR	NC,567H
		LD	A,L
		CPL
		LD	L,A
		LD	A,H
		CPL
		LD	H,A
		INC	HL
		LD	A,8
		CALL	415H
		LD	A,'{'
		JR	585H

		CALL	3BFH
		ADD	A,A
		CPL
		PUSH	BC
		PUSH	AF
		LD	A,(4CH)
		ADD	A,0AH
		LD	C,A
		POP	AF
		OUT	(C),A
		POP	BC
		LD	A,'}'
		CALL	385H
		RET

		PUSH	BC
		PUSH	AF
		LD	A,(4CH)
		ADD	A,0CH
		LD	C,A
		POP	AF
		OUT	(C),A
		LD	A,7FH
		OUT	(C),A
		POP	BC
		AND	A
		RET

		LD	A,(4CH)
		ADD	A,cr
		LD	C,A
		XOR	A
		OUT	(C),A
		LD	HL,44FH
		LD	(HL),A
		LD	D,H
		LD	E,L
		INC	DE
		LD	BC,0CH
		LDIR
		LD	HL,463H
		LD	(459H),HL
		LD	HL,0CH
		LD	(45DH),HL
		LD	(45FH),HL
		LD	A,'~'
		JR	585H

		PUSH	AF
		PUSH	BC
		PUSH	HL
		PUSH	DE
		LD	A,(4CH)
		ADD	A,0AH
		LD	C,A
		LD	B,0AH
		IN	A,(C)
		LD	D,A
		IN	A,(C)
		CP	D
		JR	NZ,5C3H
		DJNZ	5CEH
		BIT	1,A
		JR	NZ,5DEH
		CALL	397H
		JR	5C3H

		BIT	0,A
		JR	NZ,5C3H
		CPL
		AND	0CH
		JR	Z,5ECH
		CALL	3F5H
		JR	5C3H

		CPL
		LD	(437H),A
		POP	DE
		POP	HL
		POP	BC
		POP	AF
		RET

		LD	HL,438H
		AND	4
		JR	NZ,5FFH
		LD	HL,443H
		LD	A,(437H)
		AND	A
		RET	Z
		IN	A,(0)
		RLA
		JR	NC,604H
		LD	A,(HL)
		OUT	(1),A
		INC	HL
		LD	A,(HL)
		AND	A
		JR	NZ,604H
		LD	(437H),A
		RET

		CALL	3BFH
		PUSH	BC
		OR	H
		CPL
		PUSH	AF
		LD	A,(4CH)
		ADD	A,0BH
		LD	C,A
		POP	AF
		OUT	(C),A
		LD	A,L
		CPL
		DEC	C
		OUT	(C),A
		POP	BC
		RET

		PUSH	HL
		AND	A
		SBC	HL,DE
		POP	HL
		RET

		ADD	A,L
		LD	L,A
		RET	NC
		INC	H
		RET

		db	0ffh

		db	7,cr,lf
		db	'Paper',cr,lf,0

		db	7,cr,lf
		db	'Ribbon',cr,lf,0

		db	0,0,0,0,0,0,0,0
		db	0,0

		dw	463h
		dw	0
		dw	0CH
		dw	0CH

		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0
		db	0,0,0,0,0,0,0,0

; bit map for relocation?

		db	24h,92h,0,0
		db	0,2,20h,81h
		db	0,0,24h,9
		db	24h,42h,0,40h
		db	0,40h,1,2
		db	2,9,0,0ah
		db	0aah,0a1h,20h,22h
		db	4,88h,44h,81h
		db	24h,22h,20h,0
		db	12h,9,11h,22h
		db	0,2,0,20h
		db	1,0,1,0
		db	0,80h,48h,21h
		db	10h,40h,0,0
		db	0,0,0,40h
		db	0,80h,0,44h
		db	22h,42h,42h,41h
		db	20h,0,40h,10h
		db	80h,84h,84h,0
		db	8,84h,21h,24h
		db	10h,2,41h,4
		db	91h,2,0,91h
		db	0,24h,44h,1
		db	0,44h,4,0
		db	22h,0,10h,10h
		db	80h,0,48h,41h
		db	2,22h,9,0
		db	0,40h,80h,0
		db	10h,0,0,0
		db	20h,2,41h,20h
		db	0,0,0,10h
		db	0,41h,1,2
		db	40h,0,11h,0
		db	0,0,0,0
		db	0,0,0,20h
		db	0,0,0,0
		db	0,0,0,0
		db	0,0,0,0
		db	0,0,0,0
		db	0,0,0,0

		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah,1ah
		db	1ah,1ah,1ah

		END
