Explorar el Código

Initial revision

keie hace 39 años
padre
commit
ee9c5be180
Se han modificado 2 ficheros con 88 adiciones y 0 borrados
  1. 44 0
      mach/z80/libmon/char.nas.s
  2. 44 0
      mach/z80/libsys/char.nas.s

+ 44 - 0
mach/z80/libmon/char.nas.s

@@ -0,0 +1,44 @@
+.define putchar,getchar
+! output routine in monitor for the nascom
+CRT	= 0x013B
+! output a charcter
+! entry: ascii character in a
+.text
+putchar:
+	push	hl
+	push	bc
+	ld	hl,tab
+	ld	b,5
+1:	cp	(hl)
+	jr	z,fetch
+	inc	hl
+	inc	hl
+	djnz	1b
+2:	call	CRT
+	pop	bc
+	pop	hl
+	ret
+fetch:	inc	hl
+	ld	a,(hl)
+	jr	2b
+! conversion table for nascom characters
+tab:	.byte	0x0D,0x00
+	.byte	0x1B,0x1E
+	.byte	0x08,0x1D
+	.byte	0x0A,0x1F
+	.byte	0x7F,0x00
+
+KBD	= 0x69
+ get character from keyboard
+getchar:
+	call	KBD
+	jr	nc,getchar
+	cp	0x1F
+	jr	z,CR
+	cp	0x1D
+	jr	z,BS
+	ret
+CR:	ld	a,0xA
+	ret
+BS:	ld	a,0x8
+	ret

+ 44 - 0
mach/z80/libsys/char.nas.s

@@ -0,0 +1,44 @@
+.define putchar,getchar
+! output routine in monitor for the nascom
+CRT	= 0x013B
+! output a charcter
+! entry: ascii character in a
+.text
+putchar:
+	push	hl
+	push	bc
+	ld	hl,tab
+	ld	b,5
+1:	cp	(hl)
+	jr	z,fetch
+	inc	hl
+	inc	hl
+	djnz	1b
+2:	call	CRT
+	pop	bc
+	pop	hl
+	ret
+fetch:	inc	hl
+	ld	a,(hl)
+	jr	2b
+! conversion table for nascom characters
+tab:	.byte	0x0D,0x00
+	.byte	0x1B,0x1E
+	.byte	0x08,0x1D
+	.byte	0x0A,0x1F
+	.byte	0x7F,0x00
+
+KBD	= 0x69
+ get character from keyboard
+getchar:
+	call	KBD
+	jr	nc,getchar
+	cp	0x1F
+	jr	z,CR
+	cp	0x1D
+	jr	z,BS
+	ret
+CR:	ld	a,0xA
+	ret
+BS:	ld	a,0x8
+	ret