diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po
index f33979cc..57ecb8c0 100644
Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ
diff --git a/BIN/EDIT.S.BUF.txt b/BIN/EDIT.S.BUF.txt
index 0fe884f9..2cf657c3 100644
--- a/BIN/EDIT.S.BUF.txt
+++ b/BIN/EDIT.S.BUF.txt
@@ -10,12 +10,12 @@ BUF.InsertClipboard
 				>STYA ClipboardPtr
 				jsr BUF.ComputeCOffset
 
-				lda BufLen
+				lda FileLen
 				sec
 				ldy #ClipboardLen
 				adc (pData),y
 				pha
-				lda BufLen+1
+				lda FileLen+1
 				iny
 				adc (pData),y
 				ply
@@ -30,13 +30,13 @@ BUF.InsertClipboard
 
 				>LDA.G ClipboardLen
 				clc
-				adc BufLen
-				sta BufLen
+				adc FileLen
+				sta FileLen
 
 				iny
 				lda (pData),y
-				adc BufLen+1
-				sta BufLen+1
+				adc FileLen+1
+				sta FileLen+1
 		
 .8				clc	
 .9				rts
@@ -45,11 +45,11 @@ BUF.InsertTAB	jsr BUF.ComputeCOffset
 				cpy #256-TABLEN
 				beq .8
 				
-				lda BufLen
+				lda FileLen
 				sec
 				adc #TABLEN
 				tay
-				lda BufLen+1
+				lda FileLen+1
 				adc #0
 				
 				jsr BUF.GetNewYA
@@ -71,13 +71,13 @@ BUF.InsertTAB	jsr BUF.ComputeCOffset
 				
 .3				jsr BUF.CopyTail
 
-.4				lda BufLen
+.4				lda FileLen
 				clc
 				adc #TABLEN
-				sta BufLen
+				sta FileLen
 				bcc .8
 
-				inc BufLen+1
+				inc FileLen+1
 
 .8				clc	
 .9				rts				
@@ -87,11 +87,11 @@ BUF.InsertA		sta TmpByte
 				cpy #255
 				beq .8
 
-				lda BufLen
+				lda FileLen
 				clc
 				adc #2
 				tay
-				lda BufLen+1
+				lda FileLen+1
 				adc #0
 				
 				jsr BUF.GetNewYA
@@ -108,9 +108,9 @@ BUF.InsertA		sta TmpByte
 
 .3				jsr BUF.CopyTail
 
-.4				inc BufLen
+.4				inc FileLen
 				bne .8
-				inc BufLen+1
+				inc FileLen+1
 
 .8				clc	
 .9				rts
@@ -118,11 +118,11 @@ BUF.InsertA		sta TmpByte
 BUF.DelSel		jsr BUF.GetSelLen
 				bcs .8
 
-				lda BufLen
+				lda FileLen
 				sec
 				sbc SelLen
 				tay
-				lda BufLen+1
+				lda FileLen+1
 				sbc SelLen+1
 				iny
 				bne .1
@@ -142,13 +142,13 @@ BUF.DelSel		jsr BUF.GetSelLen
 				sta BufPtrBackup+1
 				jsr BUF.CopyTail
 
-				lda BufLen
+				lda FileLen
 				sec
 				sbc SelLen
-				sta BufLen
-				lda BufLen+1
+				sta FileLen
+				lda FileLen+1
 				sbc SelLen+1
-				sta BufLen+1
+				sta FileLen+1
 
 				jsr BUF.ResetSel
 .8				clc
@@ -157,7 +157,7 @@ BUF.DelSel		jsr BUF.GetSelLen
 * Erase char at CurXY
 *--------------------------------------
 BUF.DelCharAtCursor
-				>LDYA BufLen
+				>LDYA FileLen
 				jsr BUF.GetNewYA		BufferLen-1
 				bcs .9
 
@@ -173,10 +173,10 @@ BUF.DelCharAtCursor
 
 .4				jsr BUF.CopyTail
 
-				lda BufLen
+				lda FileLen
 				bne .5
-				dec BufLen+1
-.5				dec BufLen	
+				dec FileLen+1
+.5				dec FileLen	
 
 				jsr BUF.ResetSel
 				pla						Get back deleted char
diff --git a/BIN/EDIT.S.CTRL.txt b/BIN/EDIT.S.CTRL.txt
index edfc0c90..04e32428 100644
--- a/BIN/EDIT.S.CTRL.txt
+++ b/BIN/EDIT.S.CTRL.txt
@@ -438,10 +438,10 @@ Ctrl.D			jsr BUF.DelSel
 Ctrl.Z			jsr BUF.ComputeCOffset
 
 				lda BUF.COffset
-				eor BufLen
+				eor FileLen
 				bne .1
 				lda BUF.COffset+1
-				eor BufLen+1
+				eor FileLen+1
 				bne .1
 
 				clc
diff --git a/BIN/EDIT.S.FILE.txt b/BIN/EDIT.S.FILE.txt
new file mode 100644
index 00000000..29c0a630
--- /dev/null
+++ b/BIN/EDIT.S.FILE.txt
@@ -0,0 +1,148 @@
+NEW
+  AUTO 3,1
+				.LIST OFF
+*--------------------------------------
+NewFile			stz FileLen
+				stz FileLen+1
+
+				clc
+				rts
+*--------------------------------------
+LoadFile		>PUSHWZ				Aux type
+				>PUSHBZ				Type
+				>PUSHBI	O.RDONLY
+				>LDA.G hFileName
+				>SYSCALL GetMemPtr
+				>SYSCALL fopen
+				bcs NewFile
+
+				txa
+				>STA.G hFile
+				
+				>PUSHEA.G STATBUF
+				>LDA.G hFile
+				>SYSCALL fstat
+				bcs .9
+				
+				>LDA.G STATBUF+S.STAT.P.TYPE
+				cmp #S.FI.T.TXT
+				beq LoadFile.TXT
+				cmp #$FA				S-C/ASM?
+				bne .91
+
+				jmp LoadFile.ASM
+
+				>LDA.G hFile
+				>SYSCALL fclose
+				
+.91				lda #MLI.E.INCFF
+				sec
+				rts
+				
+				>LDA.G STATBUF+S.STAT.SIZE+3
+				dey
+				ora (pData),y
+				bne .90
+				
+				dey
+				lda (pData),y			Size HI
+				adc #4					1K more		
+				
+				ldy #0					Size LO
+				>STYA BufLen
+				
+				>SYSCALL GetMem
+				>STYA BufPtr
+				
+				txa
+				>STA.G hBuffer
+
+				ldy #0
+
+				ldx #0
+				
+.1				lda (BufPtrBackup),y
+				beq .8
+
+				cpx #C.CR
+				bne .2
+				
+				cmp #C.LF
+				beq .5
+
+.2				cmp #C.SPACE
+				bcs .3
+
+				cmp #C.CR
+				bne .5
+
+.3				sta (BufPtr)
+				inc BufPtr
+				bne .4
+				inc BufPtr+1
+.4				inc FileLen
+				bne .5
+				inc FileLen+1
+
+.5				tax						set previous char
+				iny
+				bne .1
+
+				inc BufPtrBackup+1
+				bra .1
+
+.8				sta (BufPtr)
+				clc
+.9				jmp BUF.ResetSel
+
+.90				lda #E.FTB
+				sec
+				rts
+*--------------------------------------
+LoadFile.TXT	stz 
+*--------------------------------------
+LoadFile.ASM
+				lda #MLI.E.INCFF
+				sec
+				rts
+*--------------------------------------
+SaveFile		>PUSHWZ					Aux type
+				>PUSHBI S.FI.T.TXT
+				>PUSHBI	O.CREATE+O.WRONLY
+				>LDA.G hFileName
+				>SYSCALL GetMemPtr
+
+				>SYSCALL FOpen
+				bcs .9
+				pha
+				>PUSHW FileLen
+				>LDA.G hBuffer
+				>SYSCALL GetMemPtr
+				>PUSHYA
+				pla
+				pha
+			
+				>SYSCALL FWrite
+				bcc .1
+
+				tax
+				pla
+				phx
+				>SYSCALL FClose
+				pla
+				sec
+				rts
+
+.1				pla
+				>SYSCALL FClose
+				
+				lda #$80
+				>STA.G bSaved
+				jsr SCRN.UpdateTopBar
+.9				rts
+*--------------------------------------
+*--------------------------------------
+MAN
+SAVE USR/SRC/BIN/EDIT.S.FILE
+LOAD USR/SRC/BIN/EDIT.S
+ASM
diff --git a/BIN/EDIT.S.SCRN.txt b/BIN/EDIT.S.SCRN.txt
index b6473ccc..8bc8feba 100644
--- a/BIN/EDIT.S.SCRN.txt
+++ b/BIN/EDIT.S.SCRN.txt
@@ -291,7 +291,7 @@ SCRN.UpdateStatusBar
 				>PUSHA
 				
 				>PUSHW BUF.COffset
-				>PUSHW BufLen
+				>PUSHW FileLen
 
 				>PUSHBI 7
 				bra SCRN.UpdateStatusBarOut
diff --git a/BIN/EDIT.S.txt b/BIN/EDIT.S.txt
index b60663b5..6312e30e 100644
--- a/BIN/EDIT.S.txt
+++ b/BIN/EDIT.S.txt
@@ -22,6 +22,7 @@ BUF.COffset		.BS 2
 BUF.TmpLine1	.BS 2
 BUF.TmpLine2	.BS 2
 
+FileLen			.BS 2
 BufLen			.BS 2
 SelLen			.BS 2
 TmpLen			.BS 2
@@ -153,7 +154,7 @@ CS.RUN			>PUSHBI 0
 				bcs CS.RUN.RTS
 
 				txa
-				>STA.G hBuffer			BufLen already set to 0
+				>STA.G hBuffer			FileLen already set to 0
 
 .3				lda #$ff
 				>STA.G bSaved
@@ -339,99 +340,10 @@ CharIn.Esc		>STZ.G bEscMode
 
 				sec
 				rts
-*--------------------------------------
-LoadFile		>PUSHWZ				Aux type
-				>PUSHBI S.FI.T.TXT
-				>PUSHBI	O.RDONLY
-				>LDA.G hFileName
-				>SYSCALL GetMemPtr
-				>SYSCALL LoadTXTFile
-				bcs .9
-
-				txa
-				>STA.G hBuffer
-
-				>SYSCALL GetMemPtr
-				>STYA BufPtr
-				>STYA BufPtrBackup
-				stz BufLen
-				stz BufLen+1
-
-				ldy #0
-
-				ldx #0
-				
-.1				lda (BufPtrBackup),y
-				beq .8
-
-				cpx #C.CR
-				bne .2
-				
-				cmp #C.LF
-				beq .5
-
-.2				cmp #C.SPACE
-				bcs .3
-
-				cmp #C.CR
-				bne .5
-
-.3				sta (BufPtr)
-				inc BufPtr
-				bne .4
-				inc BufPtr+1
-.4				inc BufLen
-				bne .5
-				inc BufLen+1
-
-.5				tax						set previous char
-				iny
-				bne .1
-
-				inc BufPtrBackup+1
-				bra .1
-
-.8				sta (BufPtr)
-				clc
-.9				jmp BUF.ResetSel
-*--------------------------------------
-SaveFile		>PUSHWZ					Aux type
-				>PUSHBI S.FI.T.TXT
-				>PUSHBI	O.CREATE+O.WRONLY
-				>LDA.G hFileName
-				>SYSCALL GetMemPtr
-
-				>SYSCALL FOpen
-				bcs .9
-				pha
-				>PUSHW BufLen
-				>LDA.G hBuffer
-				>SYSCALL GetMemPtr
-				>PUSHYA
-				pla
-				pha
-			
-				>SYSCALL FWrite
-				bcc .1
-
-				tax
-				pla
-				phx
-				>SYSCALL FClose
-				pla
-				sec
-				rts
-
-.1				pla
-				>SYSCALL FClose
-				
-				lda #$80
-				>STA.G bSaved
-				jsr SCRN.UpdateTopBar
-.9				rts
 *--------------------------------------
 				.INB USR/SRC/BIN/EDIT.S.BUF
 				.INB USR/SRC/BIN/EDIT.S.CTRL
+				.INB USR/SRC/BIN/EDIT.S.FILE
 				.INB USR/SRC/BIN/EDIT.S.SCRN
 *--------------------------------------
 CS.END
@@ -490,8 +402,10 @@ PromptBufPtr	.BS 1
 PromptMode		.BS 1
 bExit			.BS 1
 bSaved			.BS 1
+bCRLF			.BS 1
 bEscMode		.BS 1
 EscBuffer		.BS 16
+hFile			.BS 1
 hFileName		.BS 1
 hFind			.BS 1
 hReplace		.BS 1
@@ -512,6 +426,7 @@ ScreenX			.BS 1
 ScreenY			.BS 2
 CurX			.BS 1
 CurY			.BS 1
+STATBUF			.BS S.STAT
 DS.END
 				.ED
 *--------------------------------------
diff --git a/BIN/TERM.S.txt b/BIN/TERM.S.txt
new file mode 100644
index 00000000..d4d2c3e6
--- /dev/null
+++ b/BIN/TERM.S.txt
@@ -0,0 +1,171 @@
+NEW
+  AUTO 3,1
+				.LIST OFF
+				.OP	65C02
+				.OR	$2000
+				.TF BIN/TERM
+*--------------------------------------
+				.INB INC/MACROS.I
+				.INB INC/A2OSX.I
+				.INB INC/ETH.I
+				.INB INC/LIBTCPIP.I
+				.INB INC/NET.TELNET.I
+*--------------------------------------
+TIMEOUT.MAX		.EQ 200					20 sec.
+BUFSIZE			.EQ 256
+*--------------------------------------
+				.DUMMY
+				.OR ZPBIN
+ZS.START
+ZPDevName		.BS 2
+ZPBufPtr		.BS 2
+ZPBufLen		.BS 2
+hBuf			.BS 1
+hDev			.BS 1
+TimeOut			.BS 1
+ZS.END
+				.ED
+*--------------------------------------
+*			File Header (16 Bytes)
+*--------------------------------------
+CS.START		cld
+				jmp (.1,x)
+				.DA #$61				6502,Level 1 (65c02)
+				.DA #1					BIN Layout Version 1
+				.DA #S.PS.F.EVENT		S.PS.F
+				.DA #0
+				.DA CS.END-CS.START		Code Size (without Constants)
+				.DA DS.END-DS.START		Data Segment Size
+				.DA #32					Stack Size
+				.DA #ZS.END-ZS.START	Zero Page Size
+				.DA 0
+*--------------------------------------
+.1				.DA CS.INIT
+				.DA CS.RUN
+				.DA CS.DOEVENT		
+				.DA	CS.QUIT
+L.MSG.USAGE		.DA MSG.USAGE
+L.MSG.DEVOK		.DA MSG.DEVOK
+				.DA 0
+*--------------------------------------
+CS.INIT			clc
+				rts
+*--------------------------------------
+CS.RUN			lda #1
+				>SYSCALL ArgV
+				bcs .9
+				>STYA ZPDevName
+				
+				>PUSHWZ					auxtype
+				>PUSHBI 0				type				>PUSHBI O.RDWR
+				>PUSHBI O.RDWR
+				>LDYA ZPDevName
+				>SYSCALL fopen
+				bcs .99
+				
+				stx hDev
+				>LDYA L.MSG.DEVOK
+				>SYSCALL puts
+
+				>LDYAI BUFSIZE
+				>SYSCALL getmem
+				bcs .99
+				
+				>STYA ZPBufPtr
+				stx hBuf
+
+				bra CS.RUN.LOOP
+
+.9				>LDYA L.MSG.USAGE
+				>SYSCALL puts
+
+				lda #E.SYN
+				sec
+.99				rts
+
+CS.RUN.LOOP		>SLEEP
+
+				lda hDev
+				>SYSCALL feof
+				bcs .99
+				tay
+				bne .2					EOF, no char
+
+				>PUSHWI BUFSIZE
+				>PUSHW ZPBufPtr
+				lda hDev
+				>SYSCALL fRead
+				bcc .1
+.99				rts
+				
+.1				>PUSHYA					len
+				>PUSHW ZPBufPtr
+				ldy #S.PS.hStdOut
+				lda (pPs),y
+				>SYSCALL fwrite
+				bcs .9
+
+.2				ldy #S.PS.hStdIn
+				lda (pPs),y
+
+				>SYSCALL feof
+				bcs .9
+				tay
+				bne CS.RUN.LOOP			EOF = true, no char from STDIN
+
+				>PUSHWI BUFSIZE			
+				>PUSHW ZPBufPtr
+				ldy #S.PS.hStdIn
+				lda (pPs),y
+				>SYSCALL fread
+.3				bcs .9
+
+				>STYA ZPBufLen
+				lda (ZPBufPtr)
+				cmp #$14				Ctrl-T
+				beq .9
+
+				>PUSHW ZPBufLen
+				>PUSHW ZPBufPtr
+				lda hDev
+				>SYSCALL fWrite
+				bcs .9
+
+				jmp CS.RUN.LOOP
+
+.9				rts				
+*--------------------------------------
+CS.DOEVENT		lda (pEvent)
+				bpl .9					is it a TIMER event?
+				lda TimeOut
+				beq .9
+				dec TimeOut
+.9				sec						do not discard TIMER event
+				rts
+*--------------------------------------
+CS.QUIT			lda hDev
+				beq .1
+
+				>SYSCALL fclose
+
+.1				lda hBuf
+				beq .2
+
+				>SYSCALL freemem
+
+.2				clc
+				rts
+*--------------------------------------
+CS.END
+MSG.USAGE		.AZ "Usage : TERM device "
+MSG.DEVOK		.AZ "Connected (Exit key is Ctrl-T)"
+*--------------------------------------
+				.DUMMY
+				.OR 0
+DS.START
+DS.END
+				.ED
+*--------------------------------------
+MAN
+SAVE USR/SRC/BIN/TERM.S
+ASM
diff --git a/ProDOS.FX/ProDOS.S.CCLK.txt b/ProDOS.FX/ProDOS.S.CCLK.txt
index ba12763d..27ebffe2 100644
--- a/ProDOS.FX/ProDOS.S.CCLK.txt
+++ b/ProDOS.FX/ProDOS.S.CCLK.txt
@@ -52,7 +52,6 @@ CCLK.START		>SHORTMX				8 bit mode.
 				xce		  				to continue with Prodos 8
 				rts
 savestate 		.HS 00					state of the state register
-				.AS "JIMJAYKERRY&MIKE"
 *--------------------------------------
 CCLK.LEN		.EQ *-CCLK.START
 MAN
diff --git a/ProDOS.FX/ProDOS.S.TCLK.txt b/ProDOS.FX/ProDOS.S.TCLK.txt
index 18e2c6ad..96fe3709 100644
--- a/ProDOS.FX/ProDOS.S.TCLK.txt
+++ b/ProDOS.FX/ProDOS.S.TCLK.txt
@@ -3,10 +3,11 @@ NEW
 *--------------------------------------
 * Thunderclock driver
 * hard coded for slot 1
-* $2F00-2F7C moved to $D742
 *--------------------------------------
 clkmode			.EQ	$0538				clock mode
-
+rdtcp			.EQ	$C108				Thunderclock read entry
+wttcp			.EQ	$C10B				Thunderclock write entry
+*--------------------------------------
 TCLK.START		ldx TCLK.Cx2+2			clock slot = $C1.
 
 				lda clkmode,x			save current mode
@@ -77,7 +78,7 @@ TCLK.Cx2		jsr	rdtcp				read month, day of week, day of month
 				pla						restore previous mode.
 				ldx TCLK.Cx2+2			clock slot = $C1
 				sta clkmode,x
-TCLK.CEND		rts
+				rts
 
 * this table contains entries for the cumulative # of days in a year,
 * one entry for each month. the values are modulo 256.
@@ -109,7 +110,6 @@ yradj			.DA #$12				Monday
 				.DA #$14				Wednesday
 				.DA #$13				Tuesday
 
-TCLK.END		.HS 000000			 	pad
 TCLK.LEN		.EQ *-TCLK.START
 *--------------------------------------
 MAN
diff --git a/ProDOS.FX/ProDOS.S.txt b/ProDOS.FX/ProDOS.S.txt
index 11700850..4256e80b 100644
--- a/ProDOS.FX/ProDOS.S.txt
+++ b/ProDOS.FX/ProDOS.S.txt
@@ -62,7 +62,6 @@ ecde			.EQ	$1A
 
 wndbtm			.EQ	$23
 
-
 pcl				.EQ	$3A
 pch				.EQ	$3B
 A1L				.EQ	$3C
@@ -142,9 +141,6 @@ q6h				.EQ	$C08D				disk port
 q7l				.EQ	$C08E				disk port
 q7h				.EQ	$C08F				disk port
 
-rdtcp			.EQ	$C108				Thunderclock read entry
-wttcp			.EQ	$C10B				Thunderclock write entry
-
 auxmove			.EQ	$C311				move (3C)-(3E) to (42)
 xfer			.EQ	$C314
 
diff --git a/SHARED/X.UNPAK.S.txt b/SHARED/X.UNPAK.S.txt
index 2e8a8253..83062e5d 100644
--- a/SHARED/X.UNPAK.S.txt
+++ b/SHARED/X.UNPAK.S.txt
@@ -16,19 +16,27 @@ X.Unpak			jsr X.Unpak.GetByte		CHNK.DATA.T
 *--------------------------------------
 X.Unpak.STORE	jsr X.Unpak.GetULEN	
 
+				ldx ZPnCnt				!LEN LO
+				
 				ldy #0
-
-.1				lda (ZPInBufPtr),y
-
-				iny
+				
+.1				inx
 				bne .2
 				
-				inc ZPInBufPtr+1
-
-.2				jsr X.Unpak.PutByte
+				inc ZPnCnt+1
+				beq .8
+								
+.2				lda (ZPInBufPtr),y
+				sta (ZPOutBufPtr),y
+				iny
 				bne .1
+				
+				inc ZPInBufPtr+1
+				inc ZPOutBufPtr+1
 
-				clc
+				bra .1
+
+.8				clc
 				rts
 *--------------------------------------
 X.Unpak.PAK		pha						A = BLBITS