mirror of
https://github.com/Tolik-Trek/Shared_Includes.git
synced 2026-06-15 09:01:33 +03:00
...
This commit is contained in:
parent
7b2364f46e
commit
49355dafb8
@ -1,23 +1,26 @@
|
||||
;
|
||||
;栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩<EFBFBD>;
|
||||
DEFDEVICE SPRINTER, #4000, 256
|
||||
|
||||
DEFINE SLOT? +(SLOT0 | ((#C0 & high $)>>>1))
|
||||
DEFINE OFFSET? +(SLOT3 ^ SLOT?)*512
|
||||
|
||||
IFNDEF _includedSP2000 : DEFINE _includedSP2000 : ENDIF
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; <EFBFBD>à¥àë¢ ¨ï ;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩<EFBFBD>;
|
||||
|
||||
|
||||
;栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩<EFBFBD>;
|
||||
; 踳琺<EFBFBD><EFBFBD>⑧<EFBFBD> ;
|
||||
;栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩<EFBFBD>;
|
||||
; ‚¥ªâ®à #FF:
|
||||
; ª« ¢¨ âãà - ¢¨á¨â 32 â ªâ . ¬®¦® ¯à®¢¥à¨âì ¯® ¡ãä¥àã ¢ ¯à®æ¥, ¬®¦¥â «®¦¨âìáï á ®áâ «ì묨.
|
||||
; ª ¤à®¢®¥ - ¢¨á¨â 32 â ªâ . Œ®¦¥â «®¦¨âìáï á ®áâ «ì묨.
|
||||
; CBL - ¢¨á¨â ¤® § å¢ â ¯à®æ¥¬, ¬®¦¥â «®¦¨âìáï á ®áâ «ì묨.
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩<EFBFBD>;
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; €¤à¥á ¯®à⮢ ;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩<EFBFBD>;
|
||||
; <EFBFBD>むメ<EFBFBD> <EFBFBD>珥<EFBFBD> ;
|
||||
;栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩<EFBFBD>;
|
||||
; <EFBFBD>Ž<EFBFBD>’ #FE
|
||||
; Read:
|
||||
; bit0 - keyboard
|
||||
@ -38,13 +41,12 @@
|
||||
; bit5 -
|
||||
; bit6 -
|
||||
; bit7 -
|
||||
|
||||
|
||||
ZX_Beeper EQU #FE ; bit 4
|
||||
ZX_Tape_Ou EQU #FE ; bit 3
|
||||
ZX_Tape_In EQU #FE ; bit 6
|
||||
|
||||
;------------[Covox Blaster]------------;
|
||||
;旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭<EFBFBD>;
|
||||
;
|
||||
; Covox Blaster
|
||||
CBL:
|
||||
.OUT EQU #4F ; <20>®àâ ¤«ï ¢ë¢®¤ §¢ãª = #FB
|
||||
.BUFFER_PAGE EQU #FD ; áâà ¨æ -¡ãä¥à ¤«ï ª¨¤ ¨ï ¬ã§« ªá¥«¥¬ (¯à¥àë¢ ¨ï CBL ¤®«¦ë ¡ëâì ¢ª«îç¥ë)
|
||||
@ -75,7 +77,7 @@ CBL:
|
||||
.KHz_44 EQU #0D
|
||||
.KHz_55 EQU #0E
|
||||
.KHz_109 EQU #0F
|
||||
|
||||
;
|
||||
; #00 - COVOX on, standart Pentagon mode
|
||||
; #80 - CBL on, 15 kHz mono
|
||||
; #81 - CBL on, 22 kHz mono
|
||||
@ -93,14 +95,14 @@ CBL:
|
||||
; (2 ¡ ª¨ ¯® 128/256)
|
||||
; ¯à¥àë¢ ¨¥ ¯à¨«¥â ¥â ¯®á«¥ ª ¦¤®©
|
||||
; ¡ ª¨
|
||||
|
||||
;
|
||||
; <EFBFBD>¥¦¨¬ 8 ¡¨â:
|
||||
; ã஢¥ì ã«ï ¢ ᥬ¯« å - #80
|
||||
; <EFBFBD>¥¦¨¬ 16 ¡¨â:
|
||||
; ã஢¥ì ã«ï ¢ ᥬ¯« å - #0000
|
||||
; Stereo-áí¬¯«ë:
|
||||
; ç¥à¥¤ãî騥áï ®âáç¥âë L ¨ R ª «®¢.
|
||||
|
||||
;
|
||||
; mono_8bit:
|
||||
; DB 80h,81h,7Fh....
|
||||
; mono_16bit:
|
||||
@ -109,8 +111,7 @@ CBL:
|
||||
; DB 80h,80h,81h,80h,7Fh,80h... ; §¤¥áì ®¤¨ ª « ¨£à ¥â, ¢â®à®© ¬®«ç¨â
|
||||
; stereo_16bit:
|
||||
; DW 0,0,1000,0,-1000,0... ; «®£¨ç®, ®¤¨ ª « ¨£à ¥â, ¢â®à®© ¬®«ç¨â
|
||||
|
||||
|
||||
;
|
||||
; CASE CBL_XX[3..0] IS
|
||||
; WHEN 0 => CBL_TAB[] = 13; -- 15.625 KHz -- mono/stereo
|
||||
; WHEN 1 => CBL_TAB[] = 9; -- 21.875 KHz -- mono/stereo
|
||||
@ -120,7 +121,7 @@ CBL:
|
||||
; WHEN 5 => CBL_TAB[] = 0; -- reserved
|
||||
; WHEN 6 => CBL_TAB[] = 0; -- reserved
|
||||
; WHEN 7 => CBL_TAB[] = 0; -- reserved
|
||||
|
||||
;
|
||||
; WHEN 8 => CBL_TAB[] = 27; -- 7.8125 KHz -- mono/stereo 8/16 bit
|
||||
; WHEN 9 => CBL_TAB[] = 19; -- 10.9375 KHz -- mono/stereo 8/16 bit
|
||||
; WHEN 10=> CBL_TAB[] = 13; -- 15.625 KHz -- mono/stereo 8/16 bit
|
||||
@ -130,9 +131,10 @@ CBL:
|
||||
; WHEN 14=> CBL_TAB[] = 3; -- 54.6875 KHz -- mono/stereo 8/16 bit
|
||||
; WHEN 15=> CBL_TAB[] = 1; -- 109.375 KHz -- mono/stereo 8/16 bit
|
||||
; END CASE;
|
||||
;---------------------------------------;
|
||||
|
||||
;=======================================
|
||||
;旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭<EFBFBD>;
|
||||
;
|
||||
; SYS_PORT / CNF_PORT
|
||||
;
|
||||
; § ¬ ¯«¥ ç¥à¥§ ª àâã ¯®à⮢ #7C/#3C ¨ #74/#24
|
||||
CNF_PORT:
|
||||
.ON EQU #74
|
||||
@ -248,10 +250,14 @@ bit7..bit3
|
||||
¯¥à¥ª«î票¥ áâà ¨æ <EFBFBD>‡“ ¯®à⮬ #5C ¯à®¨á室¨â ⮫쪮 ¯à¨ ¢®âªã⮩ <20>‡“ ç¥à¥§ sys_port.
|
||||
Œ®¦® ¯¥à¥ª«îç âì áâà ¨æë ç¥à¥§ ¢ãâ२© ¯®àâ #8F, ⮣¤ bit4 í⮣® ¯®àâ ¢ª«îç ¥â ᨣ « § ¯¨á¨ ¤«ï <20>‡“.
|
||||
’ ª ¦¥ íâ®â ¯®àâ ¤ ñâ ¯àï¬ãî ã¬¥à æ¨î áâà ¨æ ¯à¨ ãáâ ®¢«¥®¬ bit4.
|
||||
----------------------------------------------------
|
||||
*/
|
||||
;=======================================
|
||||
;-------------------------------------------------------------------------------------------------------------------------------
|
||||
<EFBFBD><EFBFBD> vROM <EFBFBD>Ν<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>М<EFBFBD><EFBFBD>碎 <EFBFBD>°<EFBFBD> 痰<EFBFBD><EFBFBD>⑧肓 <EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD> vRAM ⑤<EFBFBD>э <EFBFBD><EFBFBD><EFBFBD>М<EFBFBD><EFBFBD>碎:
|
||||
#1FFD b4=1: #A0,#D0..#DF
|
||||
|
||||
*/
|
||||
;旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭<EFBFBD>;
|
||||
;
|
||||
; ¯®àâë ã¯à ¢«¥¨ï áâà ¨æ ¬¨ ä áâà ¬
|
||||
FastRAM:
|
||||
.ON EQU #FB ; ‚ª«î票¥ ªíè IN A,(FastRAM.ON) - ¯à¨¡¨â® £¢®§¤ï¬¨ ¢ ª®ä¥
|
||||
@ -259,8 +265,8 @@ FastRAM:
|
||||
.SLOT0 EQU #5C ; <20>¥à¥ª«î票¥ áâà ¨æ ªíè ¯à¨ FastRAM.ON ¢ ã«¥¢®¬ ®ª¥ (bit0..1) - ¯à¨¡¨â® £¢®§¤ï¬¨ ¢ ª®ä¥
|
||||
;!TODO ¯®áâ ¢¨âì ¢ ª à⥠¯®à⮢ ç⥨¥ ¯®àâ #FB ¢ãâ२© ¯®àâ SLOT0
|
||||
; ç⮡ ¯à¨ ¢ª«î票¨ ªíè ¢ ॣ¨áâà á®åà ï« áì áâà ¨æ ¢ ¡ ª¥ 0 (¯®«¥§® ¯à¨ ¢ª«î票¨ ªíè ¨§ ¡ ª¨ ®«ì)
|
||||
|
||||
|
||||
;旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭<EFBFBD>;
|
||||
;
|
||||
; <EFBFBD>®àâ ã¯à ¢«¥¨ï áâà ¨æ ¬¨ <EFBFBD>‡“
|
||||
; <EFBFBD>¥à¥ª«î票¥ áâà ¨æ <EFBFBD>‡“ ¯à¨ FastRAM.OFF ¢ ã«¥¢®¬ ®ª¥.
|
||||
ROM:
|
||||
@ -275,12 +281,11 @@ vROM:
|
||||
; à §à¥è¥¨¥ § ¯¨á¨ bit4 (0 - no Write; 1 - Write)
|
||||
; ¯à¨ bit4 == 1 ¯à¨ã¤¨â¥«ì® ¢ëáâ ¢«ï¥âáï ¨ ¡«®ª¨àã¥âáï sys_pg ¢ 1 (ld a,1 : out (sys_port_on),a)
|
||||
; ¯®ª bit4 ¥ á¡à®è¥ ¯¥à¥ª«îç âì áâà ¨æë <EFBFBD>‡“ system/user ç¥à¥§ ¯®àâ
|
||||
|
||||
|
||||
;旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭<EFBFBD>;
|
||||
;P_KBD_OUT EQU #F8 ;!TODO
|
||||
;P_KBD_IN EQU #FE
|
||||
|
||||
;-----------------------------[ KEMPSTON ]------------------------------;
|
||||
;旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭<EFBFBD>;
|
||||
; KEMPSTON
|
||||
KEMPSTON:
|
||||
.JOYSTICK EQU 7
|
||||
|
||||
@ -289,7 +294,6 @@ KEMPSTON:
|
||||
; Š¥¬¯áâ® ¨§ DOS_ON ¤«ï á¯¥æ¨ «ì®£® èãઠLPT+JOY ç⮡ ¯®
|
||||
; PC Link ª®¥ªâ¨âìáï ª PC
|
||||
.PC_Link EQU #FF ;JOY_DOS
|
||||
|
||||
; <EFBFBD> ª ¦¤ë© ¢¥è¨© ¯®àâ ¬ë誨 ¯à®¯¨á ®¤¨ ¢¥è¨©, § ç¨â
|
||||
; ª®ä ¬®¨â®à¨â áâ à訩 ¤à¥á, DCP+Conf ®¡à ¡®âª .
|
||||
.MOUSE.X EQU #FBDF
|
||||
@ -300,10 +304,9 @@ KEMPSTON:
|
||||
; bit3: § १¥à¢¨à®¢ ® ¯®¤ ¥éñ ®¤ã ª®¯ªã (0= ¦ â )
|
||||
; bit4..7: ª®®à¤¨ â ª®«ñᨪ
|
||||
.MOUSE.Buttons EQU #FADF
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;---------------[Border]----------------
|
||||
;旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭旭<EFBFBD>;
|
||||
;
|
||||
; Border
|
||||
BorderColor EQU #FE
|
||||
; 梥⠡®à¤îà ¢ ०¨¬¥ á¯à¨â¥à ¡¥àñâáï ¨§ 4 ¯ «¨âàë.
|
||||
; 梥⠢ ¯ «¨âॠ¢ëç¨á«ï¥âáï ¤ã¡«¨à®¢ ¨¥¬ ¢ ®¬¥à¥ 梥⠡®à¤îà bit2..0 ¢ bit5..3
|
||||
@ -319,8 +322,12 @@ BorderColor EQU #FE
|
||||
; 6 - CYAN color index #36 #36/#10 = 3
|
||||
; 7 - CYAN color index #3F #3F/#10 = 3
|
||||
;---------------------------------------
|
||||
;栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩<EFBFBD>;
|
||||
|
||||
;-------------[ZX keyboard]-------------
|
||||
|
||||
;栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩<EFBFBD>;
|
||||
; ZX keyboard
|
||||
;
|
||||
; ü ÉÍÍËÍÍËÍÍËÍÍËÍÍËÍÍËÍÍËÍÍËÍÍËÍÍ»
|
||||
; <EFBFBD>ˆ’A º 0º 1º 2º 3º 4º 4º 3º 2º 1º 0º
|
||||
; ÈÍÍÊÍÍÊÍÍÊÍÍÊÍÍÊÍÍÊÍÍÊÍÍÊÍÍÊÍͼ
|
||||
@ -353,13 +360,10 @@ ZXKeys EQU #FE
|
||||
.Line_6 EQU #BFFE
|
||||
.Line_7 EQU #7FFE
|
||||
|
||||
|
||||
; ????? —â®-â® ¯à® à áè¨à¥ë© ¡¨â ª« ¢ë ¢ #FE
|
||||
|
||||
; CS - caps shift
|
||||
; SS - symbol shift
|
||||
; FS - function shift
|
||||
|
||||
; Left Shift => CS
|
||||
; Right SHIFT => CS
|
||||
; Ctrl => SS
|
||||
@ -414,18 +418,19 @@ ZXKeys EQU #FE
|
||||
; F9 => 9+FS
|
||||
; F10 => 0+FS
|
||||
; Scroll Lock => CS+FS
|
||||
;---------------------------------------
|
||||
;
|
||||
;--------[á¨åந§ æ¨ï íªà ]---------
|
||||
;栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩<EFBFBD>;
|
||||
|
||||
|
||||
;栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩<EFBFBD>;
|
||||
; 瓱㊤牀⑧<EFBFBD><EFBFBD>罔<EFBFBD> 蹣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
SCR_SyncPort EQU #FE
|
||||
; bit 5 - á¨åந§ æ¨ï íªà
|
||||
; ª ¤à®¢ë© ¨¬¯ã«ìá
|
||||
; ¤«¨ - 4 ¬á
|
||||
; ¯¥à¨®¤ - 20 ¬á
|
||||
;栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩<EFBFBD>;
|
||||
|
||||
;---------------------------------------
|
||||
;
|
||||
|
||||
SLOT0 EQU #82 ; ®¬¥à ¡ ª¨ 0
|
||||
.MEM_ADDR EQU #00
|
||||
SLOT1 EQU #A2 ; ®¬¥à ¡ ª¨ 1
|
||||
|
||||
@ -29,7 +29,7 @@ PALETTE: DB #00, #00, #00, #00 ; 0 BLACK
|
||||
; CGA
|
||||
FLASH EQU #80
|
||||
; CGA
|
||||
INC:
|
||||
INK:
|
||||
.BLACK EQU #00 ; —…<E28094><E280A6>›‰
|
||||
.BLUE EQU #01 ; ‘ˆ<E28098>ˆ‰
|
||||
.GREEN EQU #02 ; ‡…‹…<E280B9>›‰
|
||||
@ -48,14 +48,14 @@ INC:
|
||||
.WHITE EQU #0F ; <20>…‹›‰
|
||||
; CGA
|
||||
PAPER:
|
||||
.BLACK EQU 16*INC.BLACK
|
||||
.BLUE EQU 16*INC.BLUE
|
||||
.GREEN EQU 16*INC.GREEN
|
||||
.CYAN EQU 16*INC.CYAN
|
||||
.RED EQU 16*INC.RED
|
||||
.MAGENTA EQU 16*INC.MAGENTA
|
||||
.BROWN EQU 16*INC.BROWN
|
||||
.LGRAY EQU 16*INC.LGRAY
|
||||
.BLACK EQU 16*INK.BLACK
|
||||
.BLUE EQU 16*INK.BLUE
|
||||
.GREEN EQU 16*INK.GREEN
|
||||
.CYAN EQU 16*INK.CYAN
|
||||
.RED EQU 16*INK.RED
|
||||
.MAGENTA EQU 16*INK.MAGENTA
|
||||
.BROWN EQU 16*INK.BROWN
|
||||
.LGRAY EQU 16*INK.LGRAY
|
||||
|
||||
; CGA
|
||||
BORDER:
|
||||
|
||||
398
printf.asm
Executable file
398
printf.asm
Executable file
@ -0,0 +1,398 @@
|
||||
|
||||
;universal color print to console procedure like printf()
|
||||
;in: DE
|
||||
printf#: LD YH,D
|
||||
LD YL,E
|
||||
LD L,(IY) ; at iy we have pointer to format string
|
||||
LD H,(IY+1)
|
||||
|
||||
loop: LD A,(HL)
|
||||
INC HL
|
||||
OR A
|
||||
RET Z
|
||||
CP '%'
|
||||
JR Z,loc3
|
||||
loc4: CALL outch
|
||||
JP loop
|
||||
|
||||
loc3: LD A,(HL)
|
||||
INC HL
|
||||
CP '%'
|
||||
JR Z,loc4
|
||||
DEC HL
|
||||
CALL scan_length ; scan [-][0][0-9*][lL]
|
||||
loop1: LD A,(HL)
|
||||
INC HL
|
||||
|
||||
CP 'x'
|
||||
JP Z,prt_x1
|
||||
CP 'X'
|
||||
JP Z,prt_x2 ; hexadecimal
|
||||
;
|
||||
AND %1101'1111
|
||||
;
|
||||
CP 'D'
|
||||
JP Z,prt_d ; signed decimal
|
||||
CP 'U'
|
||||
JP Z,prt_u ; unsigned decimal
|
||||
CP 'L'
|
||||
JP Z,prt_l
|
||||
CP 'C'
|
||||
JP Z,prt_c ; print single character
|
||||
CP 'O'
|
||||
JP Z,prt_o ; octal
|
||||
CP 'S'
|
||||
JP Z,prt_s ; string
|
||||
JP loop
|
||||
|
||||
|
||||
; %l - long
|
||||
prt_l: LD (flong),A
|
||||
INC HL
|
||||
JP loop1
|
||||
|
||||
; %c symbol
|
||||
prt_c: LD A,(iy+2)
|
||||
CALL outch
|
||||
; ld de,(nprtd+1)
|
||||
; inc de
|
||||
; ld (nprtd+1),de
|
||||
prt_q: INC IY
|
||||
INC IY
|
||||
LD A,(flong)
|
||||
OR A
|
||||
JP Z,loop ; false
|
||||
INC IY
|
||||
INC IY
|
||||
JP loop
|
||||
|
||||
; %s string
|
||||
prt_s: LD A,' '
|
||||
LD (padch),A
|
||||
PUSH HL
|
||||
PUSH IY
|
||||
LD L,(iy+2)
|
||||
LD H,(iy+3)
|
||||
fmt0: PUSH HL
|
||||
CALL _strlen
|
||||
EX DE,HL
|
||||
LD HL,(flen)
|
||||
LD A,H
|
||||
OR L
|
||||
JR Z,fmt01
|
||||
; call _pad
|
||||
; or a
|
||||
SBC HL,DE
|
||||
LD (flen),HL
|
||||
LD A,(fladj)
|
||||
OR A
|
||||
CALL Z,_pad
|
||||
fmt01:
|
||||
POP HL
|
||||
fmt1: LD A,(HL)
|
||||
INC HL
|
||||
OR A
|
||||
JR Z,fmt21
|
||||
CALL outch
|
||||
; ld de,(nprtd+1)
|
||||
; inc de
|
||||
; ld (nprtd+1),de
|
||||
JP fmt1
|
||||
|
||||
fmt2:
|
||||
LD HL,(flen)
|
||||
LD A,(fladj)
|
||||
OR A
|
||||
CALL NZ,_pad
|
||||
fmt21: POP IY
|
||||
POP HL
|
||||
JP prt_q
|
||||
|
||||
; %u unsigned decimal
|
||||
prt_u: PUSH HL
|
||||
PUSH IY
|
||||
CALL getnum
|
||||
JR fmt4
|
||||
|
||||
; %d signed decimal
|
||||
prt_d: PUSH HL
|
||||
PUSH IY
|
||||
CALL getnum
|
||||
LD A,(flong)
|
||||
OR A
|
||||
JR NZ,fmt3 ; true
|
||||
BIT 7,H
|
||||
JR Z,fmt3
|
||||
LD DE,-1
|
||||
fmt3: BIT 7,D
|
||||
JR Z,fmt4
|
||||
LD A,'-'
|
||||
LD (sign),A
|
||||
XOR A
|
||||
SUB L
|
||||
LD L,A
|
||||
LD A,0
|
||||
SBC A,H
|
||||
LD H,A
|
||||
LD A,0
|
||||
SBC A,E
|
||||
LD E,A
|
||||
LD A,0
|
||||
SBC A,D
|
||||
LD D,A
|
||||
fmt4: LD A,10 ; base
|
||||
LD BC,char1
|
||||
CALL mk_num
|
||||
JP fmt0
|
||||
|
||||
; %o octal
|
||||
prt_o: PUSH HL
|
||||
PUSH IY
|
||||
CALL getnum
|
||||
LD A,8 ; base
|
||||
LD BC,char1
|
||||
CALL mk_num
|
||||
JP fmt0
|
||||
|
||||
; %X hex
|
||||
prt_x2: LD BC,char1
|
||||
prt_x: PUSH HL
|
||||
PUSH IY
|
||||
CALL getnum
|
||||
LD A,16 ; base
|
||||
CALL mk_num
|
||||
JP fmt0
|
||||
|
||||
; %x hex
|
||||
prt_x1: LD BC,char2
|
||||
JR prt_x
|
||||
|
||||
;---------------------------------------
|
||||
getnum: XOR A
|
||||
LD (sign),A
|
||||
LD L,(iy+2)
|
||||
LD H,(iy+3)
|
||||
LD A,(flong)
|
||||
OR A
|
||||
JR Z,gnu1 ; false
|
||||
LD E,(iy+4)
|
||||
LD D,(iy+5)
|
||||
RET
|
||||
gnu1: LD DE,0
|
||||
RET
|
||||
|
||||
|
||||
mk_num: LD (mn0+1),A ; base
|
||||
LD (chars),BC
|
||||
EXX
|
||||
LD HL,number
|
||||
EXX
|
||||
CALL mn0
|
||||
EXX
|
||||
LD (HL),0
|
||||
EXX
|
||||
LD HL,number
|
||||
LD A,(sign)
|
||||
OR A
|
||||
RET Z
|
||||
DEC HL
|
||||
RET
|
||||
|
||||
|
||||
mn0: LD BC,0x200a
|
||||
XOR A
|
||||
mn1: ADD HL,HL
|
||||
RL E
|
||||
RL D
|
||||
RLA
|
||||
CP C
|
||||
JR C,mn2
|
||||
SUB C
|
||||
INC L
|
||||
mn2: DJNZ mn1
|
||||
; DEHL-quot; A-rem
|
||||
PUSH AF
|
||||
LD A,D
|
||||
OR E
|
||||
OR H
|
||||
OR L
|
||||
CALL NZ,mn0
|
||||
POP AF
|
||||
PUSH HL
|
||||
chars+1: LD HL,char1 ; save char1 or char2
|
||||
LD C,A
|
||||
LD B,0
|
||||
ADD HL,BC
|
||||
LD A,(HL)
|
||||
POP HL
|
||||
EXX
|
||||
LD (HL),A
|
||||
INC HL
|
||||
EXX
|
||||
RET
|
||||
|
||||
|
||||
scan_length:
|
||||
XOR A
|
||||
LD (flong),A ; false
|
||||
LD (fladj),A
|
||||
LD (flen+0),A ; make length = 0
|
||||
LD (flen+1),A
|
||||
LD A,' '
|
||||
LD (padch),A ; space padding by default
|
||||
LD A,(HL)
|
||||
CP '-'
|
||||
JR NZ,SL1
|
||||
LD (fladj),A ; all will be LEFT adjusted, not right
|
||||
INC HL
|
||||
sl1: LD A,(HL)
|
||||
CP '0'
|
||||
JR NZ,sl2
|
||||
LD A,(fladj)
|
||||
OR A
|
||||
JR NZ,sl1a
|
||||
LD A,'0'
|
||||
LD (padch),A ; pad numbers with '0's, not spaces
|
||||
sl1a: INC HL
|
||||
sl2: LD DE,0
|
||||
sl2a: LD A,(HL)
|
||||
SUB '0'
|
||||
JR C,sl3
|
||||
CP 9+1
|
||||
JR NC,sl3
|
||||
EX DE,HL
|
||||
LD C,L
|
||||
LD B,H
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,BC
|
||||
ADD HL,HL
|
||||
LD B,0
|
||||
LD C,A
|
||||
ADD HL,BC
|
||||
EX DE,HL
|
||||
INC HL
|
||||
JR sl2a
|
||||
|
||||
sl3: LD (flen),DE ; set explicit length
|
||||
LD A,(HL)
|
||||
CP 'l'
|
||||
JR Z,sl4
|
||||
CP 'L'
|
||||
RET NZ
|
||||
sl4: LD (flong),A ; true
|
||||
INC HL
|
||||
RET
|
||||
|
||||
|
||||
_pad: DEC HL
|
||||
BIT 7,H
|
||||
RET NZ
|
||||
PUSH HL
|
||||
LD A,(padch)
|
||||
CALL outch
|
||||
POP HL
|
||||
; ld de,(nprtd+1)
|
||||
; inc de
|
||||
; ld (nprtd+1),de
|
||||
JP _pad
|
||||
|
||||
|
||||
_strlen: EX DE,HL
|
||||
LD HL,0
|
||||
.loop0: LD A,(DE)
|
||||
OR A
|
||||
RET Z
|
||||
INC HL
|
||||
INC DE
|
||||
JR .loop0
|
||||
|
||||
|
||||
|
||||
;---------------------------------------
|
||||
outch: PUSH IY
|
||||
PUSH HL
|
||||
CP cr
|
||||
JP Z,.new_line
|
||||
CP lf
|
||||
JP Z,.prtNullX
|
||||
CP tab
|
||||
JP Z,.tabpr
|
||||
CP col_cmd
|
||||
JP Z,.set_attr
|
||||
|
||||
.next0: EX AF,AF
|
||||
LD DE,(coords)
|
||||
LD A,(print_attr)
|
||||
LD B,A
|
||||
EX AF,AF'
|
||||
LD C,ESTEX_wrchar
|
||||
RST 0x10
|
||||
LD A,(coords)
|
||||
INC A
|
||||
CP 80 ;ª®®à¤¨ â ¯® X 0..79 (¨â®£® 80)
|
||||
JR NC,.new_line ; ®¢ãî áâபã.
|
||||
LD (coords),A
|
||||
.end_pr: POP HL
|
||||
POP IY
|
||||
RET
|
||||
|
||||
.new_line: LD A,(coords+1) ;Y
|
||||
CP 31
|
||||
JR C,.noscroll
|
||||
CALL .ScrollUP
|
||||
JR .prtNullX
|
||||
|
||||
.noscroll: INC A
|
||||
LD (coords+1),A ;y
|
||||
|
||||
.prtNullX: XOR A
|
||||
LD (coords),A ;x
|
||||
JR .end_pr
|
||||
|
||||
.ScrollUP: LD DE,0
|
||||
LD HL,0x2050
|
||||
LD BC,0x0155
|
||||
XOR A
|
||||
RST 0x10
|
||||
RET
|
||||
|
||||
.tabpr: LD C,0x53
|
||||
RST 0x10
|
||||
INC E ;x++
|
||||
LD A,E
|
||||
ADD A,8
|
||||
AND 0x78
|
||||
LD E,A
|
||||
LD (coords),DE
|
||||
LD C,0x52 ; fix
|
||||
RST 0x10
|
||||
JP .end_pr
|
||||
|
||||
;Set attribute
|
||||
.set_attr: LD A,(HL)
|
||||
LD (print_attr),A
|
||||
POP HL
|
||||
POP IY
|
||||
INC HL
|
||||
RET
|
||||
; jp .end_pr
|
||||
|
||||
|
||||
|
||||
char1: DB '0123456789ABCDEF'
|
||||
char2: DB '0123456789abcdef'
|
||||
|
||||
|
||||
flen: DW 0
|
||||
fladj: DB 0
|
||||
flong: DB 0 ; false/true
|
||||
padch: DB ' '
|
||||
|
||||
sign: DB 0 ; § ª ç¨á«
|
||||
number: DS 16 ; ¡ãä¥à ç¨á«
|
||||
|
||||
coords: DW 0
|
||||
print_attr: DB 7
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user