Introduced internal gotoxy that pops both parameters.

About all CONIO functions offering a <...>xy variant call
  popa
  _gotoxy

By providing an internal gotoxy variant that starts with a popa all those CONIO function can be shortened by 3 bytes. As soon as program calls more than one CONIO function this means an overall code size reduction.
This commit is contained in:
Oliver Schmidt
2016-06-05 14:58:38 +02:00
parent d670998814
commit 13482984ca
50 changed files with 120 additions and 152 deletions

View File

@@ -6,13 +6,12 @@
;
.export _cclearxy, _cclear
.import popa, _gotoxy, cputdirect
.import gotoxy, cputdirect
.importzp tmp1
_cclearxy:
pha ; Save the length
jsr popa ; Get y
jsr _gotoxy ; Call this one, will pop params
jsr gotoxy ; Call this one, will pop params
pla ; Restore the length and run into _cclear
_cclear:

View File

@@ -6,15 +6,14 @@
;
.export _chlinexy, _chline
.import popa, _gotoxy, cputdirect
.import gotoxy, cputdirect
.importzp tmp1
.include "nes.inc"
_chlinexy:
pha ; Save the length
jsr popa ; Get y
jsr _gotoxy ; Call this one, will pop params
jsr gotoxy ; Call this one, will pop params
pla ; Restore the length
_chline:

View File

@@ -9,7 +9,7 @@
.export _cputcxy, _cputc, cputdirect, putchar
.export newline
.constructor initconio
.import popa, _gotoxy
.import gotoxy
.import ppuinit, paletteinit, ppubuf_put
.import setcursor
@@ -23,8 +23,7 @@
_cputcxy:
pha ; Save C
jsr popa ; Get Y
jsr _gotoxy ; Set cursor, drop x
jsr gotoxy ; Set cursor, drop x and y
pla ; Restore C
; Plot a character - also used as internal function

View File

@@ -6,15 +6,14 @@
;
.export _cvlinexy, _cvline
.import popa, _gotoxy, putchar, newline
.import gotoxy, putchar, newline
.importzp tmp1
.include "nes.inc"
_cvlinexy:
pha ; Save the length
jsr popa ; Get y
jsr _gotoxy ; Call this one, will pop params
jsr gotoxy ; Call this one, will pop params
pla ; Restore the length and run into _cvline
_cvline:

View File

@@ -4,21 +4,19 @@
; void gotoxy (unsigned char x, unsigned char y);
;
.export _gotoxy
.export gotoxy, _gotoxy
.import setcursor
.import popa
.include "nes.inc"
.proc _gotoxy
gotoxy:
jsr popa ; Get Y
_gotoxy:
sta CURS_Y ; Set Y
jsr popa ; Get X
sta CURS_X ; Set X
tay
ldx CURS_Y
jmp setcursor ; Set the cursor position
.endproc