diff --git a/constants/SP2000.inc b/constants/SP2000.inc index f35628c..19c3bb8 100644 --- a/constants/SP2000.inc +++ b/constants/SP2000.inc @@ -251,7 +251,7 @@ bit7..bit3 Можно переключать страницы через внутренний порт #8F, тогда bit4 этого порта включает сигнал записи для ПЗУ. Так же этот порт даёт прямую нумерацию страниц при установленном bit4. ;------------------------------------------------------------------------------------------------------------------------------- -Для vROM можно использовать любые страницы ОЗУ. +Для vROM можно использовать любые свободные страницы ОЗУ. Для vRAM нельзя использовать: #1FFD b4=1: #A0,#D0..#DF diff --git a/constants/dss_equ.inc b/constants/dss_equ.inc index 8d64619..7b3fd63 100644 --- a/constants/dss_equ.inc +++ b/constants/dss_equ.inc @@ -188,6 +188,8 @@ Dss: .Cursor EQU #53 .SelPage EQU #54 .Scroll EQU #55 +.Scroll.Up EQU 256*1 + .Scroll +.Scroll.Down EQU 256*2 + .Scroll .Clear EQU #56 .RdChar EQU #57 .WrChar EQU #58 diff --git a/printf.asm b/printf.asm index 33ab081..8c95123 100755 --- a/printf.asm +++ b/printf.asm @@ -1,8 +1,13 @@ - + MODULE printf# +cmd EQU 16 ;universal color print to console procedure like printf() -;in: DE -printf#: LD YH,D - LD YL,E +;in: IY +str: PUSH IY + LD C,Dss.Cursor + RST ToDSS + LD (coords),DE + POP IY + ; LD L,(IY) ; at iy we have pointer to format string LD H,(IY+1) @@ -36,7 +41,7 @@ loop1: LD A,(HL) CP 'U' JP Z,prt_u ; unsigned decimal CP 'L' - JP Z,prt_l + JP Z,prt_l ; long CP 'C' JP Z,prt_c ; print single character CP 'O' @@ -242,10 +247,10 @@ scan_length: LD (padch),A ; space padding by default LD A,(HL) CP '-' - JR NZ,SL1 + JR NZ,.sl1 LD (fladj),A ; all will be LEFT adjusted, not right INC HL -sl1: LD A,(HL) +.sl1: LD A,(HL) CP '0' JR NZ,sl2 LD A,(fladj) @@ -312,13 +317,13 @@ _strlen: EX DE,HL ;--------------------------------------- outch: PUSH IY PUSH HL - CP cr + CP "\r" JP Z,.new_line - CP lf + CP "\n" JP Z,.prtNullX - CP tab + CP "\t" JP Z,.tabpr - CP col_cmd + CP cmd JP Z,.set_attr .next0: EX AF,AF @@ -326,8 +331,8 @@ outch: PUSH IY LD A,(print_attr) LD B,A EX AF,AF' - LD C,ESTEX_wrchar - RST 0x10 + LD C,Dss.WrChar + RST ToDSS LD A,(coords) INC A CP 80 ;координата по X 0..79 (итого 80) @@ -350,23 +355,25 @@ outch: PUSH IY LD (coords),A ;x JR .end_pr -.ScrollUP: LD DE,0 +.ScrollUP: XOR A + LD D,A + LD E,A LD HL,0x2050 - LD BC,0x0155 + LD BC,Dss.Scroll.Up XOR A - RST 0x10 + RST ToDSS RET -.tabpr: LD C,0x53 - RST 0x10 +.tabpr: LD C,Dss.Cursor + RST ToDSS INC E ;x++ LD A,E ADD A,8 AND 0x78 LD E,A LD (coords),DE - LD C,0x52 ; fix - RST 0x10 + LD C,Dss.Locate + RST ToDSS JP .end_pr ;Set attribute @@ -392,7 +399,7 @@ padch: DB ' ' sign: DB 0 ; знак числа number: DS 16 ; буфер числа -coords: DW 0 +coords: DW 0000 print_attr: DB 7 - + ENDMODULE \ No newline at end of file