diff --git a/Makefile b/Makefile
index 09081ee..7868ba8 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,9 @@
-BASE=siftrd
+BASE=sertrd
+ORIG=siftrd
 ADDR_CLEAR=32767
 ADDR_RUN=32768
 
-SOURCE=$(BASE).za
+SOURCE=$(ORIG).za
 ASLFILE=$(BASE).p
 BINFILE=$(BASE).bin
 TAPFILE=$(BASE).tap
diff --git a/libs/serial.za b/libs/serial.za
new file mode 100644
index 0000000..642f4ee
--- /dev/null
+++ b/libs/serial.za
@@ -0,0 +1,28 @@
+;==================================================================================
+; SERIAL TAP SEND					2015-07-22  Pavel VymetÃ¡lek<pavel@vym.cz>
+; Send DE bytes from address stored at address in IX over serial port of ZX128
+; Uses modified ZX 48 ROM1 by Paul Farrow available at 
+; http://www.fruitcake.plus.com/Sinclair/Interface2/Cartridges/Interface2_RC_New_RS232.htm
+; Serial communication over ZX128's RS-232 or Keypad port or over Interface1 
+; serial port or over classic tape output (standard speed - no turbo)
+; Serial settings: Baud rate is 57600, 8 data bits, 1 stop bit, no parity,
+; CTS/DTR handshaking
+;
+; Tested on ZX Spectrum+ 128K (toastrack) with changed EPROM with RS232ROM ver 3.01
+;
+; Important note: this routine send data block with tap format extensions, ie.
+; firts two bytes are lenght of data, next byte is flag byte (FF-data block)
+; followed by data. Last byte is tap checksum (XOR bytes from flag byte and data).
+; To get raw data You need remove this bytes. Utility tap2ser will do it in binary
+; mode. Utility tap2ser is available at http://vym.cz/zx-spectrum/.
+;==================================================================================
+
+; rom routine SA-BYTES expected lenght in DE and address in IX registers
+
+SER_SEND
+		ld ix, DATA_BUFFER	; address of data
+		ld de,4096			; data length
+		ld	a, 0ffh			; FF - data block, 00 - header - see tap file format
+		call 04c2h			; ROM SA-BYTES - save
+		ret
+
diff --git a/libs/sif.za b/libs/sif.za
new file mode 100644
index 0000000..1c56419
--- /dev/null
+++ b/libs/sif.za
@@ -0,0 +1,202 @@
+
+;==============================================================================
+; SIF recieve/send data from PC to buffer
+;==============================================================================
+; receive exactly BC bytes
+
+SIF_RECEIVE	ld	hl,DATA_BUFFER		; start address of data buffer
+		ld	bc,4096			; number of transfered bytes
+SIF_REC_LOOP	call	8020
+		jr	nc,SIF_BREAK	; nc = Break
+		in	a,(SIF_BASE+20)		; are any data ready?
+		and	1
+		jr	z,SIF_REC_LOOP		; Z = no data
+		xor	a
+		in	a,(SIF_BASE)
+		ld	(hl),a
+		and	111b
+		out	(254),a
+		inc	hl			; inc. memory pointer
+		dec	bc			; dec. byte counter
+		ld	a,c			; is byte counter zero?
+		or	b
+		jr	z,SIF_OK
+		jr	SIF_REC_LOOP
+
+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+; if no data ready, then is good time to test break and jump here if pressed
+; this is common part for all transfers
+
+SIF_BREAK	ld	a,2			; red BORDER
+		ld	(BEEP2+1),a
+		call	BEEP
+		ld	a,7
+		ld	(BEEP2+1),a
+		or	a			; flag NZ = BREAK
+		ret
+
+SIF_OK		xor	a			; set flag Z = all OK
+		ld	a,7			; white border
+		out	(254),a
+		ret
+
+
+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+; send BC bytes from HL
+
+SIF_SEND	ld	hl,DATA_BUFFER
+		ld	bc,4096
+SIF_SEND_LOOP	call	8020
+		jr	nc,SIF_BREAK
+		xor	a
+		in	a,(SIF_BASE+20)		; read LSR, only bit 6 (trasmit empty is interesting)
+		and	01000000b
+		jr	z,SIF_SEND_LOOP		; Z = send buffer is full, wait
+		ld	a,(hl)
+		out	(SIF_BASE),a
+		and	111b
+		out	(254),a
+		inc	hl			; inc. memory pointer
+		dec	bc			; dec. byte counter
+		ld	a,c			; is byte counter zero?
+		or	b
+		jr	z,SIF_OK
+		jr	SIF_SEND_LOOP
+
+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+; clear input serial buffers (not only 16C550)
+
+SIF_CLEAR	ld	c,255			; reset counter to maximum
+		nop
+SIF_CLEAR_LOOP	dec	c			; dec. timeout counter
+		ret	z			; Z = no data, timeout => return
+		ld	b,10
+SIF_CLEAR_WAIT	djnz	SIF_CLEAR_WAIT
+		xor	a
+		in	a,(SIF_BASE+20)		; are any data ready?
+		and	1
+		jr	z,SIF_CLEAR_LOOP	; Z = no data
+		xor	a
+		in	a,(SIF_BASE)
+		jr	SIF_CLEAR
+
+;==============================================================================
+; SIF initization
+;==============================================================================
+;
+; 16C550 registers
+;
+;	LCR	011	divisor latch enable	(1 = divisor can be modified)
+;			set break
+;			set parity		(0 = auto, 1 = software can modify parity bit by LCR4 bit)
+;			odd/even parity		(0 = odd, 1 = even)
+;			parity enable		(0 = no parity, 1 = parity enabled)
+;			stop bits
+;			word length bit 1
+;			word length bit 0
+
+SIF_LCR		db	0
+
+SIF_INIT	xor	a			; init values
+		ld	(SIF_LCR),a
+
+		ld	a,(S_UART)		; if (S_UART==1) a=0; else a=28;
+		cp	1
+		ld	a,0
+		jr	z,SIF_INIT_UART_1
+		ld	a,2
+SIF_INIT_UART_1	out	(SIF_BASE+28),a		; UART
+
+		ld	a,(SIF_LCR)		; get LCR byte to B
+		ld	b,a
+		ld	a,(S_PARITY_ENABLE)	; possible values 0, 1 (0 = disable, 1 = enable)
+		rlca				; 8x
+		rlca
+		rlca
+		and	00001000b
+		or	b			; OR setup bit with LCR and store to B again
+		ld	b,a
+		ld	a,(S_PARITY_TYPE)	; possible values 0, 1 (0 = odd, 1 = even)
+		rlca
+		rlca
+		rlca
+		rlca
+		and	00010000b
+		or	b			; OR setup bit with LCR
+		ld	(SIF_LCR),a		; and store LCR
+
+		ld	a,(S_BITS)		; if (S_BITS=6) lcr+=1; else { if (S_BITS=7) lcr+=2; else lcr+=3; }
+		ld	b,1
+		cp	6
+		jr	z,SIF_INIT_BITS_1
+		ld	b,2
+		cp	7
+		jr	z,SIF_INIT_BITS_1
+		ld	b,3
+SIF_INIT_BITS_1	ld	a,(SIF_LCR)		; modify SIF_LCR
+		or	b
+		ld	(SIF_LCR),a
+		out	(SIF_BASE+12),a		; LCR
+
+		ld	a,00011111b		; FCR
+		out	(SIF_BASE+8),a
+
+		ld	b,00000000b
+		ld	a,(S_IR)
+		cp	1
+		jr	nz,SIF_INIT_IR_1
+		ld	b,01001000b
+SIF_INIT_IR_1	ld	a,b
+		out	(SIF_BASE+16),a		; MCR
+
+		ld	a,(SIF_LCR)		; before baud rate will set
+		or	128
+		out	(SIF_BASE+12),a		; LCR
+
+		ld	a,(S_BPSDIV)		; BPS divider, low byte
+		out	(SIF_BASE),a
+		ld	a,(S_BPSDIV+1)		; BPS divider, high byte
+		out	(SIF_BASE+4),a
+
+		ld	a,191
+		out	(SIF_BASE+12),a		; LCR
+
+		ld	a,(S_CRTSCTS)
+		or	a
+		jr	z,SIF_INIT_TK
+		ld	a,11000000b
+SIF_INIT_TK	out	(SIF_BASE+8),a		; EFR
+		ld	a,(SIF_LCR)
+		out	(SIF_BASE+12),a		; LCR
+		ld	a,00000001b
+		out	(SIF_BASE+4),a		; IER
+		ret
+
+;==============================================================================
+; SIF SETUP - serial port parameters
+;==============================================================================
+
+SIF_BPS		equ	115200
+SIF_BASE	equ	131			; SIF base port
+
+S_UART		db	1			; number of 16C550 (1 ||Â 2)
+S_BITS		db	8			; possible values 7, 8
+S_STOPB		db	1			; possible values 0, 1, 2
+S_PARITY_ENABLE	db	1			; possible values 0, 1 (0 = disable, 1 = enable)
+S_PARITY_TYPE	db	1			; possible values 0, 1 (0 = odd, 1 = even)
+S_CRTSCTS	db	1			; possible values 0, 1 (enabled HW flow)
+S_IR		db	0			; possible values 0, 1, but 1 only when HW isn't enabled
+
+S_BPSDIV	dw	460800/SIF_BPS		; 460800/230400 = 2
+						; 460800/115200 = 4
+						; 460800/57600 = 8
+						; 460800/38400 = 12
+						; 460800/19200 = 24
+						; 460800/9600 = 48
+						; 460800/4800 = 96
+						; 460800/2400 = 192
+						; 460800/1200 = 384
+						; 460800/600 = 768
+						; 460800/300 = 1536
+						; 460800/150 = 3072
+
diff --git a/siftrd.za b/siftrd.za
index 91d40e4..693d3c4 100644
--- a/siftrd.za
+++ b/siftrd.za
@@ -1,5 +1,8 @@
 ;==============================================================================
 ; Simple serial interface (SIF - sif.itherm.cz) and TRDOS copier
+; This version is modified to use ZX128's serial port with modified ROM 
+; please see libs/serial.za for description
+; All SIF calls are removed or commented, all SIF code is moved to libs/sif.za
 ;==============================================================================
 
 		cpu	z80undoc
@@ -24,7 +27,7 @@ MENU_0		call	MAIN_TITLE		; + cls
 		add	a,'A'
 		call	PRINT
 
-		call	SIF_INIT		; set serial port
+;		call	SIF_INIT		; set serial port
 		call	BEEP
 
 		xor	a			; set status to nothing
@@ -98,7 +101,7 @@ TRD_CAT		call	CLS
 WRITE_FDD	call	CLS
 		ld	a,6			; yellow border - clearing buffers
 		out	(254),a
-		call	SIF_CLEAR
+;		call	SIF_CLEAR
 		ld	a,2
 		out	(254),a
 		ld	hl,TXT_REWRDISC		; question - rewrite target disc? yes / no
@@ -144,16 +147,17 @@ WRITE_FDD_START	call	CLS
 		ld	c,24			; function TRDOS PRINT_0, read system sector and check TRDOS sign.
 		call	BETA
 
-; pøijímat data
+; pÅ™ijÃ­mat data
 
-WRITE_FDD_LOOP	call	SIF_RECEIVE
+WRITE_FDD_LOOP
+		;call	SIF_RECEIVE
 		jp	nz,MENU_CMN		; NZ = BREAK
 
-; kdy¾ je plný buffer (1 track) => ulo¾it
+; kdyÅ¾ je plnÃ½ buffer (1 track) => uloÅ¾it
 
 		call	TRD_SAVE_TRACK
 
-; není-li poslední track => opakovat
+; nenÃ­-li poslednÃ­ track => opakovat
 
 		ld	a,(TRD_TRACK)		; increment and test track number
 		inc	a
@@ -161,7 +165,7 @@ WRITE_FDD_LOOP	call	SIF_RECEIVE
 		call	PRINT_FDD_TRACK
 		ld	a,(TRD_TRACK)
 WRITE_LASTTR	cp	160			; number of last track (limit for writing)
-		jr	c,WRITE_FDD_LOOP	; C = A < 160, then wait for next track
+		jr	c,WRITE_FDD_LOOP	; C = A <Â 160, then wait for next track
 
 		ld	hl,TXT_DISC_FULL
 		call	TEXTOUT
@@ -195,7 +199,8 @@ PRINT_FDD_TRACK	ld	hl,TXT_TRACK_1		; display TRACK NUMBER
 		ret
 
 ;==============================================================================
-; read data from disc and send trought SIF until is not end of disc
+; read data from disc and send trough ZX128's Serial port until is not end of disc
+; see file libs/serial.za for details
 
 READ_FDD	call	CLS
 		xor	a			; reset track counter
@@ -235,8 +240,10 @@ READ_FDD	call	CLS
 
 ; read and send track
 
-READ_FDD_LOOP	call	TRD_LOAD_TRACK
-		call	SIF_SEND
+READ_FDD_LOOP
+		call	TRD_LOAD_TRACK
+;		call	SIF_SEND		; SIF removed - in future may be choice between both SIF or SER
+		call	SER_SEND		; send data by serial port
 		jp	nz,MENU_CMN		; NZ = BREAK
 
 		ld	a,(TRD_TRACK)		; increment and test track number
@@ -260,7 +267,7 @@ READ_LASTTR	cp	160			; compare with number of track readed from source disc
 
 TRD_LOAD_TRACK	call	SPR_DRAW_FDD_RD
 
- 		ld	hl,DATA_BUFFER		; SYSTEM SECTOR READING // HL = buffer
+		ld	hl,DATA_BUFFER		; SYSTEM SECTOR READING // HL = buffer
  		ld	a,(TRD_TRACK)
  		ld	d,a
 		ld	e,0			; D = track (TRD_TRACK) , E = sector 0
@@ -301,206 +308,6 @@ S_DATA2TRD	call	CLS
 		call	TEXTOUT
 
 ;==============================================================================
-; SIF recieve/send data from PC to buffer
-;==============================================================================
-; receive exactly BC bytes
-
-SIF_RECEIVE	ld	hl,DATA_BUFFER		; start address of data buffer
-		ld	bc,4096			; number of transfered bytes
-SIF_REC_LOOP	call	8020
-		jr	nc,SIF_BREAK	; nc = Break
-		in	a,(SIF_BASE+20)		; are any data ready?
-		and	1
-		jr	z,SIF_REC_LOOP		; Z = no data
-		xor	a
-		in	a,(SIF_BASE)
-		ld	(hl),a
-		and	111b
-		out	(254),a
-		inc	hl			; inc. memory pointer
-		dec	bc			; dec. byte counter
-		ld	a,c			; is byte counter zero?
-		or	b
-		jr	z,SIF_OK
-		jr	SIF_REC_LOOP
-
-; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-; if no data ready, then is good time to test break and jump here if pressed
-; this is common part for all transfers
-
-SIF_BREAK	ld	a,2			; red BORDER
-		ld	(BEEP2+1),a
-		call	BEEP
-		ld	a,7
-		ld	(BEEP2+1),a
-		or	a			; flag NZ = BREAK
-		ret
-
-SIF_OK		xor	a			; set flag Z = all OK
-		ld	a,7			; white border
-		out	(254),a
-		ret
-
-; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-; send BC bytes from HL
-
-SIF_SEND	ld	hl,DATA_BUFFER
-		ld	bc,4096
-SIF_SEND_LOOP	call	8020
-		jr	nc,SIF_BREAK
-		xor	a
-		in	a,(SIF_BASE+20)		; read LSR, only bit 6 (trasmit empty is interesting)
-		and	01000000b
-		jr	z,SIF_SEND_LOOP		; Z = send buffer is full, wait
-		ld	a,(hl)
-		out	(SIF_BASE),a
-		and	111b
-		out	(254),a
-		inc	hl			; inc. memory pointer
-		dec	bc			; dec. byte counter
-		ld	a,c			; is byte counter zero?
-		or	b
-		jr	z,SIF_OK
-		jr	SIF_SEND_LOOP
-
-; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-; clear input serial buffers (not only 16C550)
-
-SIF_CLEAR	ld	c,255			; reset counter to maximum
-		nop
-SIF_CLEAR_LOOP	dec	c			; dec. timeout counter
-		ret	z			; Z = no data, timeout => return
-		ld	b,10
-SIF_CLEAR_WAIT	djnz	SIF_CLEAR_WAIT
-		xor	a
-		in	a,(SIF_BASE+20)		; are any data ready?
-		and	1
-		jr	z,SIF_CLEAR_LOOP	; Z = no data
-		xor	a
-		in	a,(SIF_BASE)
-		jr	SIF_CLEAR
-
-;==============================================================================
-; SIF initization
-;==============================================================================
-;
-; 16C550 registers
-;
-;	LCR	011	divisor latch enable	(1 = divisor can be modified)
-;			set break
-;			set parity		(0 = auto, 1 = software can modify parity bit by LCR4 bit)
-;			odd/even parity		(0 = odd, 1 = even)
-;			parity enable		(0 = no parity, 1 = parity enabled)
-;			stop bits
-;			word length bit 1
-;			word length bit 0
-
-SIF_LCR		db	0
-
-SIF_INIT	xor	a			; init values
-		ld	(SIF_LCR),a
-
-		ld	a,(S_UART)		; if (S_UART==1) a=0; else a=28;
-		cp	1
-		ld	a,0
-		jr	z,SIF_INIT_UART_1
-		ld	a,2
-SIF_INIT_UART_1	out	(SIF_BASE+28),a		; UART
-
-		ld	a,(SIF_LCR)		; get LCR byte to B
-		ld	b,a
-		ld	a,(S_PARITY_ENABLE)	; possible values 0, 1 (0 = disable, 1 = enable)
-		rlca				; 8x
-		rlca
-		rlca
-		and	00001000b
-		or	b			; OR setup bit with LCR and store to B again
-		ld	b,a
-		ld	a,(S_PARITY_TYPE)	; possible values 0, 1 (0 = odd, 1 = even)
-		rlca
-		rlca
-		rlca
-		rlca
-		and	00010000b
-		or	b			; OR setup bit with LCR
-		ld	(SIF_LCR),a		; and store LCR
-
-		ld	a,(S_BITS)		; if (S_BITS=6) lcr+=1; else { if (S_BITS=7) lcr+=2; else lcr+=3; }
-		ld	b,1
-		cp	6
-		jr	z,SIF_INIT_BITS_1
-		ld	b,2
-		cp	7
-		jr	z,SIF_INIT_BITS_1
-		ld	b,3
-SIF_INIT_BITS_1	ld	a,(SIF_LCR)		; modify SIF_LCR
-		or	b
-		ld	(SIF_LCR),a
-		out	(SIF_BASE+12),a		; LCR
-
-		ld	a,00011111b		; FCR
-		out	(SIF_BASE+8),a
-
-		ld	b,00000000b
-		ld	a,(S_IR)
-		cp	1
-		jr	nz,SIF_INIT_IR_1
-		ld	b,01001000b
-SIF_INIT_IR_1	ld	a,b
-		out	(SIF_BASE+16),a		; MCR
-
-		ld	a,(SIF_LCR)		; before baud rate will set
-		or	128
-		out	(SIF_BASE+12),a		; LCR
-
-		ld	a,(S_BPSDIV)		; BPS divider, low byte
-		out	(SIF_BASE),a
-		ld	a,(S_BPSDIV+1)		; BPS divider, high byte
-		out	(SIF_BASE+4),a
-
-		ld	a,191
-		out	(SIF_BASE+12),a		; LCR
-
-		ld	a,(S_CRTSCTS)
-		or	a
-		jr	z,SIF_INIT_TK
-		ld	a,11000000b
-SIF_INIT_TK	out	(SIF_BASE+8),a		; EFR
-		ld	a,(SIF_LCR)
-		out	(SIF_BASE+12),a		; LCR
-		ld	a,00000001b
-		out	(SIF_BASE+4),a		; IER
-		ret
-
-;==============================================================================
-; SIF SETUP - serial port parameters
-;==============================================================================
-
-SIF_BPS		equ	115200
-SIF_BASE	equ	131			; SIF base port
-
-S_UART		db	1			; number of 16C550 (1 || 2)
-S_BITS		db	8			; possible values 7, 8
-S_STOPB		db	1			; possible values 0, 1, 2
-S_PARITY_ENABLE	db	1			; possible values 0, 1 (0 = disable, 1 = enable)
-S_PARITY_TYPE	db	1			; possible values 0, 1 (0 = odd, 1 = even)
-S_CRTSCTS	db	1			; possible values 0, 1 (enabled HW flow)
-S_IR		db	0			; possible values 0, 1, but 1 only when HW isn't enabled
-
-S_BPSDIV	dw	460800/SIF_BPS		; 460800/230400 = 2
-						; 460800/115200 = 4
-						; 460800/57600 = 8
-						; 460800/38400 = 12
-						; 460800/19200 = 24
-						; 460800/9600 = 48
-						; 460800/4800 = 96
-						; 460800/2400 = 192
-						; 460800/1200 = 384
-						; 460800/600 = 768
-						; 460800/300 = 1536
-						; 460800/150 = 3072
-
-;==============================================================================
 ; TRDOS
 ;==============================================================================
 ; SELECT target drive
@@ -564,64 +371,64 @@ BYTE_COUNTER	db	0
 ;==============================================================================
 ; SPRITE DRAW
 ;==============================================================================
-; grafické symboly informující u¾ivatele, ¾e se nìco dìje
+; grafickÃ© symboly informujÃ­cÃ­ uÅ¾ivatele, Å¾e se nÄ›co dÄ›je
 
-SPR_DRAW_FDD_RD	push	bc			; na zaèátku uschovám v¹echny registry, pro jistotu
+SPR_DRAW_FDD_RD	push	bc			; na zaÄ�Ã¡tku uschovÃ¡m vÅ¡echny registry, pro jistotu
 		push	de
 		push	hl
 		ld	de,SPR_FDD_BLUE		; READ = blue color of floppy
 		jr	SPR_DRAW_0
 
-SPR_DRAW_FDD_WR	push	bc			; na zaèátku uschovám v¹echny registry, pro jistotu
+SPR_DRAW_FDD_WR	push	bc			; na zaÄ�Ã¡tku uschovÃ¡m vÅ¡echny registry, pro jistotu
 		push	de
 		push	hl
 		ld	de,SPR_FDD_RED		; WRITE = red color of floppy
 
-SPR_DRAW_0	push	de			; uschovám adresu barev
-		ld	de,SPR_FDD		; do DE adresa pøedlohy
-SPR_DRAW_2	ld	hl,20480+6*32+30	; adresa levého horního rohu spritu v pravém dolním rohu VRAM
-		ld	b,16			; 16 pixelù na vý¹ku
-SPR_DRAW_1	ld	a,(de)			; vykreslím levý byte
+SPR_DRAW_0	push	de			; uschovÃ¡m adresu barev
+		ld	de,SPR_FDD		; do DE adresa pÅ™edlohy
+SPR_DRAW_2	ld	hl,20480+6*32+30	; adresa levÃ©ho hornÃ­ho rohu spritu v pravÃ©m dolnÃ­m rohu VRAM
+		ld	b,16			; 16 pixelÅ¯ na vÃ½Å¡ku
+SPR_DRAW_1	ld	a,(de)			; vykreslÃ­m levÃ½ byte
 		ld	(hl),a
 		inc	hl
 		inc	de
-		ld	a,(de)			; vykreslím pravý byte
+		ld	a,(de)			; vykreslÃ­m pravÃ½ byte
 		ld	(hl),a
 		dec	hl
 		inc	de
-		call	DOWNHL			; posun o mikroøádek ní¾
+		call	DOWNHL			; posun o mikroÅ™Ã¡dek nÃ­Å¾
 		djnz	SPR_DRAW_1
 		ld	hl,22528+768-34
-		pop	de			; do DE obnovím adresu barev - mìní se pro READ/WRITE
-		ld	a,(de)			; vykreslím barvy
+		pop	de			; do DE obnovÃ­m adresu barev - mÄ›nÃ­ se pro READ/WRITE
+		ld	a,(de)			; vykreslÃ­m barvy
 		ld	(hl),a
 		inc	de
 		inc	hl
-		ld	a,(de)			; vykreslím barvy
+		ld	a,(de)			; vykreslÃ­m barvy
 		ld	(hl),a
 		inc	de
 		ld	hl,22528+768-2
-		ld	a,(de)			; vykreslím barvy
+		ld	a,(de)			; vykreslÃ­m barvy
 		ld	(hl),a
 		inc	de
 		inc	hl
-		ld	a,(de)			; vykreslím barvy
+		ld	a,(de)			; vykreslÃ­m barvy
 		ld	(hl),a
-		pop	hl			; obnovím registry a vrátím se
+		pop	hl			; obnovÃ­m registry a vrÃ¡tÃ­m se
 		pop	de
 		pop	bc
 		ret
 
 SPR_CLEAR	push	hl
 		push	bc
-		ld	hl,20480+6*32+30	; adresa levého horního rohu spritu v pravém dolním rohu VRAM
-		ld	b,16			; 16 mikroøádkù
+		ld	hl,20480+6*32+30	; adresa levÃ©ho hornÃ­ho rohu spritu v pravÃ©m dolnÃ­m rohu VRAM
+		ld	b,16			; 16 mikroÅ™Ã¡dkÅ¯
 SPR_CLEAR_0	xor	a
 		ld	(hl),a
 		inc	hl
 		ld	(hl),a
 		dec	hl
-		call	DOWNHL			; posun o mikroøádek ní¾
+		call	DOWNHL			; posun o mikroÅ™Ã¡dek nÃ­Å¾
 		djnz	SPR_CLEAR_0
 		ld	a,56
 		ld	hl,22528+768-34
@@ -632,7 +439,7 @@ SPR_CLEAR_0	xor	a
 		ld	(hl),a
 		inc	hl
 		ld	(hl),a
-		pop	bc			; obnovím registry a vrátím se
+		pop	bc			; obnovÃ­m registry a vrÃ¡tÃ­m se
 		pop	hl
 		ret
 
@@ -666,7 +473,7 @@ SPR_FDD_RED	db	64+6*8+2, 64+6*8+2, 64+7*8+2, 64+7*8+2	; red = writing
 ; main menu
 
 TXT_TITLE	db	22,0,0					; common title for MENU and HELP
-		db	" TRDOS image copier for SIF",13
+		db	" TRDOS image copier for SERIAL",13
 		db	13,0
 
 TXT_MENU	db	"W) write TRDOS image to disc",13
@@ -678,7 +485,7 @@ TXT_MENU	db	"W) write TRDOS image to disc",13
 		db	13
 		db	"Q) Quit - return to BASIC"
 		db	22,20,0,"Target drive "
-		db	22,23,40,"http://cygnus.speccy.cz"
+		db	22,23,40,"http://cygnus.speccy.cz vym.cz"
 		db	22,20,14,0				; position for drive letter
 
 ; info / help / about application
@@ -694,6 +501,8 @@ TXT_HELP	db	"This program works with serial",13
 		db	"control (RTS CTS handshaking).",13
 		db	13
 		db	"Released 2009-11-01",13
+		db	"Modified 2015-07-22 by Pavel",13
+		db	"Vymetalek for ZX128's Serial",13
 		db	22,23,0
 		db	"Press any key to main menu."
 		db	0
@@ -756,6 +565,8 @@ TXT_OK		db	13,"O.K.",0
 ; LIBRARIES
 ;==============================================================================
 
+;		include		"libs/sif.za"
+		include		"libs/serial.za"
 		include		"libs/beep.za"
 		include		"libs/downhl.za"
 		include		"libs/pause0.za"
@@ -770,5 +581,5 @@ FONT		binclude	"libs/font_iso8859-2_8x8.bin"
 
 ;==============================================================================
 
-SYSTEM_SECTOR	equ	49152-512	; reserved memory for system sector - disc information
 DATA_BUFFER	equ	49152		; reserved memory for one track data
+SYSTEM_SECTOR	equ	DATA_BUFFER-512	; reserved memory for system sector - disc information
