From 23f3b72aa9776b2f2baa51d8eb180986e156a56b Mon Sep 17 00:00:00 2001 From: Tolik Trek Date: Fri, 15 May 2026 00:20:27 +1000 Subject: [PATCH] Updated CLP --- Shared_Includes | 2 +- ZXMODE/_HELP.FRT | 0 macroses/accelerator | 71 ++++++++++++++++++++++++++++++++++++++ macroses/accelerator.a80 | 71 ++++++++++++++++++++++++++++++++++++++ macroses/macros | 73 ++++++++++++++++++++++++++++++++++++++++ macroses/macros.a80 | 73 ++++++++++++++++++++++++++++++++++++++++ spectrum.asm | 2 +- 7 files changed, 290 insertions(+), 2 deletions(-) mode change 100755 => 100644 ZXMODE/_HELP.FRT create mode 100644 macroses/accelerator create mode 100644 macroses/accelerator.a80 create mode 100644 macroses/macros create mode 100644 macroses/macros.a80 diff --git a/Shared_Includes b/Shared_Includes index f5f85b3..51198ce 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit f5f85b3d14c65bfc2f8619b596815e350f1a9d5b +Subproject commit 51198ce44bd19f511b63e6fafaf91b3de5470f9d diff --git a/ZXMODE/_HELP.FRT b/ZXMODE/_HELP.FRT old mode 100755 new mode 100644 diff --git a/macroses/accelerator b/macroses/accelerator new file mode 100644 index 0000000..e27a5fe --- /dev/null +++ b/macroses/accelerator @@ -0,0 +1,71 @@ +; Макросы акселератора для красоты)) + +;--------[выключить акселератор]-------- + MACRO ACC_Off + ld b,b + ENDM +;--------------------------------------- + +;---------[режим приема байта]---------- + MACRO ACC_SetBlockSize + ld d,d +; включает акселератор в режим приема +; байта размера блока далее следует +; команда типа LD A,dat, где dat и будет +; новым размером блока. Если размер +; блока был установлен ранее, его можно +; не устанавливать. + ENDM +;--------------------------------------- + +;-------[заполнение одним байтом]------- + MACRO ACC_FillOneByte + ld c,c +; Операция Fill. Последующая команда +; типа LD (HL),A приведет к заполнению +; указанного ранее количества байт +; значением A + ENDM +;--------------------------------------- + +;----[заполнение вертикальных линий]---- +;Операция Fill для графического экрана. + MACRO ACC_FillScreenOneByte + ld e,e +; Последующая команда типа LD (HL),A +; приведет к заполнению значением A +; вертикальных линий экрана указанным +; ранее количеством байт + ENDM +;--------------------------------------- + +;----------[копирование блока]---------- + MACRO ACC_CopyBlock + ld l,l +; Последующая команда типа LD A,(HL) +; приведет к заполнению ОЗУ акселератора +; данными из адреса (HL), а команда типа +; LD (DE),A приведет к перезаписи данных +; из ОЗУ акселератора в основное или +; видео-ОЗУ. + ENDM +;--------------------------------------- + +;---[копирование графического блока]---- + MACRO ACC_CopyScreenBlock + ld a,a +; копирование блока для граф. экрана. +; Последующая команда типа LD A,(HL) +; приведет к заполнению ОЗУ акселератора +; данными из адреса (HL), а команда типа +; LD (DE),A приведет к перезаписи данных +; из ОЗУ акселератора в видео-ОЗУ +; вертикальными линиями. + ENDM +;--------------------------------------- + +;--------------[Reserved]--------------- + MACRO ACC_Reserved + LD H,H + ENDM +;--------------------------------------- \ No newline at end of file diff --git a/macroses/accelerator.a80 b/macroses/accelerator.a80 new file mode 100644 index 0000000..e27a5fe --- /dev/null +++ b/macroses/accelerator.a80 @@ -0,0 +1,71 @@ +; Макросы акселератора для красоты)) + +;--------[выключить акселератор]-------- + MACRO ACC_Off + ld b,b + ENDM +;--------------------------------------- + +;---------[режим приема байта]---------- + MACRO ACC_SetBlockSize + ld d,d +; включает акселератор в режим приема +; байта размера блока далее следует +; команда типа LD A,dat, где dat и будет +; новым размером блока. Если размер +; блока был установлен ранее, его можно +; не устанавливать. + ENDM +;--------------------------------------- + +;-------[заполнение одним байтом]------- + MACRO ACC_FillOneByte + ld c,c +; Операция Fill. Последующая команда +; типа LD (HL),A приведет к заполнению +; указанного ранее количества байт +; значением A + ENDM +;--------------------------------------- + +;----[заполнение вертикальных линий]---- +;Операция Fill для графического экрана. + MACRO ACC_FillScreenOneByte + ld e,e +; Последующая команда типа LD (HL),A +; приведет к заполнению значением A +; вертикальных линий экрана указанным +; ранее количеством байт + ENDM +;--------------------------------------- + +;----------[копирование блока]---------- + MACRO ACC_CopyBlock + ld l,l +; Последующая команда типа LD A,(HL) +; приведет к заполнению ОЗУ акселератора +; данными из адреса (HL), а команда типа +; LD (DE),A приведет к перезаписи данных +; из ОЗУ акселератора в основное или +; видео-ОЗУ. + ENDM +;--------------------------------------- + +;---[копирование графического блока]---- + MACRO ACC_CopyScreenBlock + ld a,a +; копирование блока для граф. экрана. +; Последующая команда типа LD A,(HL) +; приведет к заполнению ОЗУ акселератора +; данными из адреса (HL), а команда типа +; LD (DE),A приведет к перезаписи данных +; из ОЗУ акселератора в видео-ОЗУ +; вертикальными линиями. + ENDM +;--------------------------------------- + +;--------------[Reserved]--------------- + MACRO ACC_Reserved + LD H,H + ENDM +;--------------------------------------- \ No newline at end of file diff --git a/macroses/macros b/macroses/macros new file mode 100644 index 0000000..2bdf8ce --- /dev/null +++ b/macroses/macros @@ -0,0 +1,73 @@ +; + MACRO FRAM_ON + IN A,(FastRAM_ON) + IF Emulator + PUSH BC + PUSH AF + LD BC,#1FFD + XOR A + OUT (C),A + OUT (FastRam_BANK0),A + POP AF + POP BC + ENDIF + ENDM + + MACRO FRAM_OFF + IN A,(FastRAM_OFF) + IF Emulator + PUSH BC + PUSH AF + LD BC,#1FFD + LD A,1 + OUT (C),A + XOR A + OUT (FastRam_BANK0),A + POP AF + POP BC + ENDIF + ENDM +; +; + MACRO PrintProc + + MODULE PrintF +;--------------------------------------- +printstr: +; в рег. HL адрес на печатаемый буфер + LD C,Dss.PChars + jp ToDSS +;--------------------------------------- + +;--------------------------------------- +; в рег. A число печатаемое как hex +printhex: + LD D,A + RRCA + RRCA + RRCA + RRCA + AND #0F + ADD A,#30 + CP #3A + JR C,.PRNH1 + ADD A,7 +.PRNH1: + CALL .PRINT_CHAR + LD A,D + AND #0F + ADD A,#30 + CP #3A + JP C,.PRINT_CHAR + ADD A,7 + JP .PRINT_CHAR +; в регистре A символ для печати +.PRINT_CHAR: + LD BC,#0182 + JP ToBIOS +;--------------------------------------- + ENDMODULE + + ENDM +; +; \ No newline at end of file diff --git a/macroses/macros.a80 b/macroses/macros.a80 new file mode 100644 index 0000000..2bdf8ce --- /dev/null +++ b/macroses/macros.a80 @@ -0,0 +1,73 @@ +; + MACRO FRAM_ON + IN A,(FastRAM_ON) + IF Emulator + PUSH BC + PUSH AF + LD BC,#1FFD + XOR A + OUT (C),A + OUT (FastRam_BANK0),A + POP AF + POP BC + ENDIF + ENDM + + MACRO FRAM_OFF + IN A,(FastRAM_OFF) + IF Emulator + PUSH BC + PUSH AF + LD BC,#1FFD + LD A,1 + OUT (C),A + XOR A + OUT (FastRam_BANK0),A + POP AF + POP BC + ENDIF + ENDM +; +; + MACRO PrintProc + + MODULE PrintF +;--------------------------------------- +printstr: +; в рег. HL адрес на печатаемый буфер + LD C,Dss.PChars + jp ToDSS +;--------------------------------------- + +;--------------------------------------- +; в рег. A число печатаемое как hex +printhex: + LD D,A + RRCA + RRCA + RRCA + RRCA + AND #0F + ADD A,#30 + CP #3A + JR C,.PRNH1 + ADD A,7 +.PRNH1: + CALL .PRINT_CHAR + LD A,D + AND #0F + ADD A,#30 + CP #3A + JP C,.PRINT_CHAR + ADD A,7 + JP .PRINT_CHAR +; в регистре A символ для печати +.PRINT_CHAR: + LD BC,#0182 + JP ToBIOS +;--------------------------------------- + ENDMODULE + + ENDM +; +; \ No newline at end of file diff --git a/spectrum.asm b/spectrum.asm index 6fc7f4c..55b1fc7 100644 --- a/spectrum.asm +++ b/spectrum.asm @@ -24,7 +24,7 @@ ; Images [+] - Load SCL image - [ ] - Load TAP image + [+] - Load TAP image [ ] - Load SNA file ; Features