Initial revision
diff --git a/contiki-cpc/ctk/unused/ctk-80col-asm.S b/contiki-cpc/ctk/unused/ctk-80col-asm.S
new file mode 100644
index 0000000..4df6cad
--- /dev/null
+++ b/contiki-cpc/ctk/unused/ctk-80col-asm.S
@@ -0,0 +1,986 @@
+
+;---------------------------------------------------------------------       
+	.importzp       ptr1, ptr2, ptr3, ptr4, sreg
+	.importzp	sp
+
+	.import		pushax
+	.import		incsp2
+
+	.import		_ctk_80col_screencolors
+	.import		_ctk_80col_screenpattern	
+		
+	.import		_ctk_80col_lefttab
+	.import		_ctk_80col_righttab
+	
+	.import		_ctk_80col_cursx
+	.import		_ctk_80col_cursy
+	.import		_ctk_80col_color
+	.import		_ctk_80col_underline	
+	.import		_ctk_80col_reversed
+
+	.import		_ctk_80col_yscreenaddr
+	.import		_ctk_80col_yhiresaddr
+
+	.import		_ctk_80col_windowparams
+	
+	.import		_ctk_80col_bitmapptr
+
+	.import		_ctk_80col_versionstring
+	.import		_ctk_80col_versionstring_len	
+	
+	.import		_ctk_80col_theme
+			
+	.export		_ctk_80col_cclear
+	.export		_ctk_80col_chline
+	.export		_ctk_80col_cputc
+	.export		_ctk_80col_cputsn
+	
+	.export		_ctk_80col_clear_line
+	.export		_ctk_80col_draw_bitmapline
+	
+	.export		_ctk_80col_draw_windowborders
+
+;---------------------------------------------------------------------
+
+ptr5 = sreg
+
+	;; Offsets in the theme struct
+
+	ulcornerpattern =	8
+	titlebarpattern =	ulcornerpattern+8
+	urcornerpattern =	titlebarpattern+8
+	rborderpattern  =	urcornerpattern+8
+	lrcornerpattern =	rborderpattern+8
+	lowerborderpattern =	lrcornerpattern+8
+	llcornerpattern =	lowerborderpattern+8
+	lborderpattern =	llcornerpattern+8
+
+	
+	buttonleftpattern =	lborderpattern+8
+	buttonrightpattern =	buttonleftpattern+8
+
+				
+.bss
+tmp01:	.res 1
+tmpl:	.res 1
+tmpf:	.res 1
+tmpc:	.res 1
+tmpw:	.res 1	
+tmpptr:	.res 2
+
+tmpy:	.res 1
+tmph:	.res 1
+
+	;; Window border parameters	
+w:	.res 1
+wpw          = 0
+h:	.res 1
+wph          = 1	
+clipy1:	.res 1
+wpclipy1     = 2
+clipy2:	.res 1
+wpclipy2     = 3	
+color1:	.res 1
+wpcolor1     = 4	
+color2:	.res 1
+wpcolor2     = 5	
+titlecolor:  .res 1
+wptitlecolor = 6
+titlelen:    .res 1
+wptitlelen   = 7
+title:	.res 2
+wptitle      = 8
+	
+;---------------------------------------------------------------------
+.data
+;---------------------------------------------------------------------
+.code
+setupptrs:	
+	;; Find hires address.	
+	lda _ctk_80col_cursy
+	asl
+	tax
+	lda _ctk_80col_yhiresaddr,x
+	sta ptr2
+	lda _ctk_80col_yhiresaddr+1,x
+	sta ptr2+1
+
+	;; Add X coordinate to the hires address. 
+	lda #0
+	sta ptr1+1
+	lda _ctk_80col_cursx
+	asl
+	rol ptr1+1
+; 	asl	
+; 	rol ptr1+1	
+	asl
+	rol ptr1+1
+	clc
+	adc ptr2
+	and #$f8
+	sta ptr2
+	lda ptr2+1
+	adc ptr1+1
+	sta ptr2+1
+
+	;; Find screen address. 
+	lda _ctk_80col_cursy
+	asl
+	tax
+	lda _ctk_80col_cursx
+	lsr
+	clc
+	adc _ctk_80col_yscreenaddr,x
+	sta ptr1
+	lda _ctk_80col_yscreenaddr+1,x
+	adc #0
+	sta ptr1+1
+	
+	;; Turn off interrupts, prepare $01 to store color data in RAM
+	;; under I/O area.		
+	sei
+	lda $01
+	sta tmp01
+	and #$f8
+	sta $01
+	rts
+;---------------------------------------------------------------------	
+restore01:	
+	lda tmp01
+	sta $01
+	cli
+	rts		
+;---------------------------------------------------------------------
+_ctk_80col_cclear:
+	sta tmpl
+	cmp #0
+	bne @norts
+	rts
+@norts:		
+		
+	jsr setupptrs		
+
+	ldy tmpl
+	lda _ctk_80col_color
+:		
+	sta (ptr1),y
+	dey
+	bpl :-
+	
+	;; Store either $00 or $ff in hires memory, depending on the
+	;; reversed flag		
+	
+	ldx tmpl
+	lda _ctk_80col_reversed
+	beq @noff
+	lda #$ff
+@noff:		
+	sta tmpf
+
+		
+@loop1:
+	ldy #7
+	lda tmpf
+@loop2:
+	sta (ptr2),y
+	dey
+	bpl @loop2
+
+	lda ptr2
+	clc
+	adc #8
+	sta ptr2
+	bcc @noinc
+	inc ptr2+1
+@noinc:		
+
+	inc _ctk_80col_cursx
+
+	dex
+	bpl @loop1
+
+	jmp restore01
+;---------------------------------------------------------------------
+_ctk_80col_chline:
+	sta tmpl
+	cmp #0
+	bne @norts
+	rts
+@norts:	
+			
+	jsr setupptrs		
+
+	;; Store horizontal line pattern in hires memory
+	ldx tmpl
+@loop1:
+	ldy #0
+	lda #$00
+	sta (ptr2),y
+	iny
+	lda #$00
+	sta (ptr2),y
+	iny
+	lda #$00
+	sta (ptr2),y
+	iny
+	lda #$ff
+	sta (ptr2),y
+	iny
+	lda #$ff
+	sta (ptr2),y
+	iny
+	lda #$00
+	sta (ptr2),y
+	iny
+	lda #$00
+	sta (ptr2),y
+	iny
+	lda #$00
+	sta (ptr2),y
+
+
+	lda ptr2
+	clc
+	adc #8
+	sta ptr2
+	bcc @noinc
+	inc ptr2+1
+@noinc:	
+
+	inc _ctk_80col_cursx
+
+	dex
+	bne @loop1
+
+	jmp restore01
+;---------------------------------------------------------------------	
+_ctk_80col_cputc:
+	sta tmpc
+
+	jsr setupptrs
+	
+	;; Turn on font ROM
+	lda tmp01
+	and #$f8
+	ora #$01
+	sta $01
+
+	lda #0
+	sta ptr1+1		  
+	
+	;; Convert from PETSCII to screen encoding
+	lda tmpc
+	eor #$e0
+	clc
+	adc #$20
+	bpl @cont
+	adc #$40
+	bpl @cont
+	eor #$a0
+@cont:
+	ldx _ctk_80col_reversed
+	beq :+
+	eor #$80
+:		
+
+	;; Convert to address in character ROM
+	asl
+	rol ptr1+1
+	asl
+	rol ptr1+1
+	asl
+	rol ptr1+1
+	sta ptr1
+	lda #$d8
+	adc ptr1+1
+	sta ptr1+1
+
+	lda _ctk_80col_cursx
+	and #1
+	beq @left
+
+	;; Print on hires screen, bottom-up. If we should underline,
+	;; we do this by eor:ing the bottom line with #$ff
+	ldy #7
+	lda (ptr1),y
+	ldx _ctk_80col_underline
+	beq @rightnounderline
+	eor #$ff
+@rightnounderline:
+	tax
+	lda (ptr2),y
+	and #$f0
+	ora _ctk_80col_righttab,x	
+ 	sta (ptr2),y
+	dey
+@rightloop:
+	lda (ptr1),y
+	tax
+	lda (ptr2),y
+	and #$f0
+	ora _ctk_80col_righttab,x	
+ 	sta (ptr2),y
+	dey
+	bpl @rightloop	
+	
+	inc _ctk_80col_cursx	
+	
+	jmp restore01		
+	
+@left:		
+	;; Print on hires screen, bottom-up. If we should underline,
+	;; we do this by eor:ing the bottom line with #$ff
+	ldy #7
+	lda (ptr1),y
+	ldx _ctk_80col_underline
+	beq @nounderline
+	eor #$ff
+@nounderline:
+	tax
+	lda (ptr2),y
+	and #$0f
+	ora _ctk_80col_lefttab,x	
+ 	sta (ptr2),y
+	dey
+@loop:
+	lda (ptr1),y
+	tax
+	lda (ptr2),y
+	and #$0f
+	ora _ctk_80col_lefttab,x	
+ 	sta (ptr2),y
+	dey
+	bpl @loop
+
+	
+	
+	inc _ctk_80col_cursx	
+	
+	jmp restore01		
+;---------------------------------------------------------------------
+_ctk_80col_cputsn:
+	sta tmpl
+	cmp #0
+	bne :+
+        jmp incsp2	
+:		
+
+	jsr setupptrs
+	
+	;; Turn on font ROM
+	lda tmp01
+	and #$f8
+	ora #$01
+	sta $01
+
+	;; Output each character from the string
+	lda #0
+	sta tmpc
+	ldy #0
+	lda (sp),y
+	sta ptr3
+	iny
+	lda (sp),y
+	sta ptr3+1	
+	
+@loop1:		
+
+	
+	lda #0
+	sta ptr1+1		  	
+
+	ldy tmpc
+	lda (ptr3),y
+	bne :+
+	jmp @end
+:	
+			
+	;; Convert from PETSCII to screen encoding
+	eor #$e0
+	clc
+	adc #$20
+	bpl @cont
+	adc #$40
+	bpl @cont
+	eor #$a0
+@cont:
+	ldx _ctk_80col_reversed
+	beq :+
+	eor #$80
+:		
+
+	;; Convert to address in character ROM
+	asl
+	rol ptr1+1
+	asl
+	rol ptr1+1
+	asl
+	rol ptr1+1
+	sta ptr1
+	lda #$d8
+	adc ptr1+1
+	sta ptr1+1
+
+	lda _ctk_80col_cursx
+	and #1
+	beq @left
+
+	;; Print on hires screen, bottom-up. If we should underline,
+	;; we do this by eor:ing the bottom line with #$ff
+	ldy #7
+	lda (ptr1),y
+	ldx _ctk_80col_underline
+	beq @rightnounderline
+	eor #$ff
+@rightnounderline:
+	tax
+	lda (ptr2),y
+	and #$f0
+	ora _ctk_80col_righttab,x	
+ 	sta (ptr2),y
+	dey
+@rightloop:
+	lda (ptr1),y
+	tax
+	lda (ptr2),y
+	and #$f0
+	ora _ctk_80col_righttab,x	
+ 	sta (ptr2),y
+	dey
+	bpl @rightloop	
+
+
+	lda ptr2
+	clc
+	adc #8
+	sta ptr2
+	bcc :+
+	inc ptr2+1
+:	
+	
+	inc _ctk_80col_cursx	
+	
+	jmp @loopend
+	
+@left:		
+	;; Print on hires screen, bottom-up. If we should underline,
+	;; we do this by eor:ing the bottom line with #$ff
+	ldy #7
+	lda (ptr1),y
+	ldx _ctk_80col_underline
+	beq @nounderline
+	eor #$ff
+@nounderline:
+	tax
+	lda (ptr2),y
+	and #$0f
+	ora _ctk_80col_lefttab,x	
+ 	sta (ptr2),y
+	dey
+@loop:
+	lda (ptr1),y
+	tax
+	lda (ptr2),y
+	and #$0f
+	ora _ctk_80col_lefttab,x	
+ 	sta (ptr2),y
+	dey
+	bpl @loop
+			
+	inc _ctk_80col_cursx	
+@loopend:
+	inc tmpc
+	lda tmpc
+	cmp tmpl
+	beq :+
+	jmp @loop1
+:	
+	
+@end:
+	jsr restore01
+	
+        jmp incsp2	
+;---------------------------------------------------------------------
+_ctk_80col_clear_line:
+	sta tmpl
+	asl
+	tax
+	lda _ctk_80col_yscreenaddr,x
+	sta ptr1
+	lda _ctk_80col_yscreenaddr+1,x
+	sta ptr1+1	
+	lda _ctk_80col_yhiresaddr,x
+	sta ptr2
+	lda _ctk_80col_yhiresaddr+1,x
+	sta ptr2+1
+	
+	sei
+	lda $01
+	sta tmp01
+	and #$f8
+	sta $01
+
+	ldy #39
+	ldx tmpl
+	lda _ctk_80col_screencolors,x
+:	
+	sta (ptr1),y
+	dey
+	bpl :-
+
+	lda tmpl
+	asl
+	asl
+	asl
+	tax
+	ldy #0
+:
+	lda _ctk_80col_screenpattern,x
+	sta (ptr2),y
+	iny
+	lda _ctk_80col_screenpattern+1,x
+	sta (ptr2),y
+	iny
+	lda _ctk_80col_screenpattern+2,x
+	sta (ptr2),y
+	iny
+	lda _ctk_80col_screenpattern+3,x
+	sta (ptr2),y
+	iny
+	lda _ctk_80col_screenpattern+4,x
+	sta (ptr2),y
+	iny
+	lda _ctk_80col_screenpattern+5,x
+	sta (ptr2),y
+	iny
+	lda _ctk_80col_screenpattern+6,x
+	sta (ptr2),y
+	iny
+	lda _ctk_80col_screenpattern+7,x
+	sta (ptr2),y
+	iny
+	bne :-
+
+	inc ptr2+1
+	
+:	
+	lda _ctk_80col_screenpattern,x
+	sta (ptr2),y
+	iny
+	lda _ctk_80col_screenpattern+1,x
+	sta (ptr2),y
+	iny
+	lda _ctk_80col_screenpattern+2,x
+	sta (ptr2),y
+	iny
+	lda _ctk_80col_screenpattern+3,x
+	sta (ptr2),y
+	iny
+	lda _ctk_80col_screenpattern+4,x
+	sta (ptr2),y
+	iny
+	lda _ctk_80col_screenpattern+5,x
+	sta (ptr2),y
+	iny
+	lda _ctk_80col_screenpattern+6,x
+	sta (ptr2),y
+	iny
+	lda _ctk_80col_screenpattern+7,x
+	sta (ptr2),y
+	iny
+	cpy #$40
+	bne :-
+
+	lda tmpl
+	cmp #24
+	bne :+			
+
+	sta _ctk_80col_cursy
+	lda #2
+	sta _ctk_80col_cursx
+
+	jsr restore01
+		
+	lda #<_ctk_80col_versionstring
+	ldx #>_ctk_80col_versionstring
+ 	jsr pushax		
+	lda _ctk_80col_versionstring_len
+	jmp _ctk_80col_cputsn
+:		
+	jmp restore01	
+;---------------------------------------------------------------------	
+_ctk_80col_draw_bitmapline:
+	sta tmpl
+	cmp #0
+	bne :+
+	rts
+:		
+
+	jsr setupptrs
+	
+	ldy #0	
+	lda _ctk_80col_color
+:	
+	sta (ptr1),y	
+	iny
+	cpy tmpl
+	bne :-
+
+	lda _ctk_80col_bitmapptr
+	sta ptr1
+	lda _ctk_80col_bitmapptr+1
+	sta ptr1+1
+	
+	ldy #0
+	ldx #0
+:		
+	lda (ptr1),y
+ 	sta (ptr2),y		
+	iny
+	inx
+	cpx #8
+	bne :-
+
+	ldx #0
+	
+	dec tmpl
+	bne :-
+	
+	jmp restore01	
+;---------------------------------------------------------------------
+_ctk_80col_draw_windowborders:
+
+	jsr setupptrs
+
+	lda _ctk_80col_windowparams + wpclipy1
+	beq :+
+	jmp @nofirstline
+:		
+	
+	;; Draw first line of the border, including the window title
+
+	;; Start with filling color memory
+	lda _ctk_80col_windowparams + wpw
+	sta tmpw	
+
+	
+	ldy #0
+	lda _ctk_80col_windowparams + wptitlecolor	
+:	
+	sta (ptr1),y
+	iny
+	cpy tmpw
+	bcc :-
+
+	dec tmpw
+
+	;; Set color for upper right corner
+	sta (ptr1),y	
+	iny
+	sta (ptr1),y
+		
+	
+	;; Turn on font ROM for drawing the title
+	lda tmp01
+	and #$f8
+	ora #$01
+	sta $01
+
+	;; Use a temporary pointer (ptr3) rather than ptr2 so we can
+	;; reuse it later.
+	lda ptr2
+	sta ptr3
+	lda ptr2+1
+	sta ptr3+1
+		
+	;; Draw upper left corner
+	ldy #7
+:	
+	lda _ctk_80col_theme+ulcornerpattern,y
+	sta (ptr3),y
+	dey
+	bpl :-
+
+	lda ptr3
+	clc
+	adc #$8
+	sta ptr3
+	bcc :+
+	inc ptr3+1
+:
+
+	
+	;; Draw window title bar pattern
+@titlebarloop:	
+	ldy #7
+:
+	lda _ctk_80col_theme+titlebarpattern,y
+	sta (ptr3),y
+	dey
+	bpl :-
+
+	lda ptr3
+	clc
+	adc #$8
+	sta ptr3
+	bcc :+
+	inc ptr3+1
+:
+	;; Loop until we are three characters away from right border
+	;; to avoid flickering since we would be overwriting the close
+	;; button.
+	dec tmpw
+	bpl @titlebarloop
+
+	;; Draw upper right corner piece
+	ldy #7
+:
+	lda _ctk_80col_theme+urcornerpattern,y
+	sta (ptr3),y
+	dey
+	bpl :-
+
+
+@nofirstline:
+
+
+	ldx _ctk_80col_windowparams + wph
+	inx
+	stx tmph
+
+	;; Draw left and right borders
+
+	;; Fill color memory (pointer in ptr1, setup by setupptrs)
+
+	;; First check how much we actually should draw by inspecting
+	;; the clipy1 and clipy2 fields in the _ctk_80col_windowparams 
+	;; structure		
+
+	lda #1
+	sta tmpy
+	
+	ldx _ctk_80col_windowparams + wpclipy1
+@clipy1loop:
+	cpx #0
+	beq @clipy1loopend
+	lda ptr1
+	clc
+	adc #$28
+	sta ptr1
+	bcc :+
+	inc ptr1+1
+:
+	lda ptr3
+	clc
+	adc #$40
+	sta ptr3
+	lda ptr3+1
+	adc #1
+	sta ptr3+1
+
+	inc tmpy
+	
+	dex
+	jmp @clipy1loop
+@clipy1loopend:	
+
+	lda ptr1
+	clc
+	adc #$28
+	sta ptr1
+	bcc :+
+	inc ptr1+1
+:
+		
+	ldx tmpy
+	ldy _ctk_80col_windowparams + wpw
+	iny
+	sty tmpw
+@bordercloop:
+	cpx _ctk_80col_windowparams + wpclipy2
+	beq @bordercloopend
+	
+	ldy tmpw
+	lda _ctk_80col_windowparams + wpcolor2
+	sta (ptr1),y
+	ldy #0
+	lda _ctk_80col_windowparams + wpcolor1
+	sta (ptr1),y
+
+	lda ptr1
+	clc
+	adc #$28
+	sta ptr1
+	bcc :+
+	inc ptr1+1
+:
+	
+	inx
+	cpx tmph
+	bcc @bordercloop
+	beq @bordercloop	
+@bordercloopend:
+
+	
+	;; Fill color memory for lower border, if clipy2 allows
+	cpx _ctk_80col_windowparams + wpclipy2
+	beq @noclowerborder
+
+	lda ptr1
+	sec
+	sbc #$28
+	sta ptr1
+	bcs :+
+	dec ptr1+1
+:
+		
+	ldy _ctk_80col_windowparams + wpw
+	lda _ctk_80col_windowparams + wpcolor2		
+@lbordercloop:	
+	sta (ptr1),y
+	dey
+	bne @lbordercloop
+	
+@noclowerborder:	
+		
+	;; Draw right border
+	ldx tmpy
+@rborderloop:
+	cpx _ctk_80col_windowparams + wpclipy2
+	beq @rborderloopend
+
+	lda ptr3
+	clc
+	adc #$40
+	sta ptr3
+	lda ptr3+1
+	adc #1
+	sta ptr3+1
+
+	ldy #7
+:
+	lda _ctk_80col_theme+rborderpattern,y		
+	sta (ptr3),y
+	dey
+	bpl :-
+
+	inx
+	cpx tmph
+	bne @rborderloop	
+@rborderloopend:
+	
+ 	cpx _ctk_80col_windowparams + wpclipy2 
+ 	beq @norbordercorner
+	
+	lda ptr3
+	clc
+	adc #$40
+	sta ptr3
+	lda ptr3+1
+	adc #1
+	sta ptr3+1
+	
+	;; Draw lower right corner, if clipy2 allows it
+	ldy #7
+:		
+	lda _ctk_80col_theme+lrcornerpattern,y
+	sta (ptr3),y
+	dey
+	bpl :-
+
+@norbordercorner:	
+
+	stx tmpy
+		
+	;; Draw lower border
+	ldx _ctk_80col_windowparams + wpw
+
+@lowerborderloop:
+	lda ptr3
+	sec
+	sbc #$8
+	sta ptr3
+	bcs :+
+	dec ptr3+1
+:	
+
+	lda tmpy
+	cmp _ctk_80col_windowparams + wpclipy2
+	beq @nolowerborder
+	
+	ldy #7
+:	
+	lda _ctk_80col_theme+lowerborderpattern,y
+	sta (ptr3),y
+	dey
+	bpl :-
+@nolowerborder:	
+		
+	dex
+	bne @lowerborderloop
+
+	lda ptr3
+	sec
+	sbc #$8
+	sta ptr3
+	bcs :+
+	dec ptr3+1
+:	
+
+
+	ldx tmpy
+ 	cpx tmph
+ 	bne @nolbordercorner
+	
+	;; Draw lower left corner, if clipy2 allows it
+	ldy #7
+:		
+	lda _ctk_80col_theme+llcornerpattern,y
+	sta (ptr3),y
+	dey
+	bpl :-
+
+	lda ptr3
+	sec
+	sbc #$40
+	sta ptr3
+	lda ptr3+1
+	sbc #1
+	sta ptr3+1
+
+@nolbordercorner:	
+				
+	;; Draw left border
+
+	
+		
+@lborderloop:
+	cpx #1
+	beq @lborderloopend
+	cpx _ctk_80col_windowparams + wpclipy1
+	bcc @lborderloopend
+	
+	ldy #7
+:
+	lda _ctk_80col_theme+lborderpattern,y	
+	sta (ptr3),y
+	dey
+	bpl :-
+
+	lda ptr3
+	sec
+	sbc #$40
+	sta ptr3
+	lda ptr3+1
+	sbc #1
+	sta ptr3+1
+	
+	dex
+	jmp @lborderloop
+	
+@lborderloopend:		
+
+	
+	jmp restore01
+;---------------------------------------------------------------------	
+	
\ No newline at end of file