;****************************************************************** ; вход: DE - вертикаль, HL - горизонталь, ; B - цвет точки, A - экран PIC_FN1: AND A SCF RET NZ CCF IN A,(PORT_Y) PUSH AF IN A,(SLOT3) EX AF,AF' LD A,SYS_PAGE OUT (SLOT3),A LD A,(WIN_ID_0.GRAF_Y) ADD A,E OUT (PORT_Y),A LD A,B LD BC,(WIN_ID_0.GRAF_X) ADD HL,BC LD B,A LD A,#50 OUT (SLOT3),A LD (HL),A EX AF,AF' OUT (SLOT3),A POP AF OUT (PORT_Y),A RET ; вход: DE - вертикаль, HL - горизонталь. ; IX - длина линии в точках не 0 !!! ; FILL - by A ; ????? PIC_FN2: LD D,A IN A,(SLOT1) EX AF,AF' LD A,B ADD A,#50 OUT (SLOT1),A BIT 0,B LD BC,#40+#4000 JR Z,PIC_FN2_NO_2ND LD BC,#40+320+#4000 PIC_FN2_NO_2ND: ADD HL,BC LD A,E OUT (PORT_Y),A LD A,XH AND A JR Z,PIC_FN2_NO256 PIC_FN2_256L: LD B,64 PIC_FN2_256: LD (HL),D INC HL LD (HL),D INC HL LD (HL),D INC HL LD (HL),D INC HL DJNZ PIC_FN2_256 DEC A JR NZ,PIC_FN2_256L PIC_FN2_NO256: LD B,XL AND A RR B JR NC,PIC_FN2_NO1 LD (HL),D INC HL AND A PIC_FN2_NO1: RR B JR NC,PIC_FN2_NO2 LD (HL),D INC HL LD (HL),D INC HL AND A PIC_FN2_NO2: XOR A CP B JR Z,PIC_FN2_NO4 PIC_FN2_4: LD (HL),D INC HL LD (HL),D INC HL LD (HL),D INC HL LD (HL),D INC HL DJNZ PIC_FN2_4 PIC_FN2_NO4: EX AF,AF' OUT (SLOT1),A XOR A OUT (PORT_Y),A RET ;************************************************************************ ; вход: dE - вертикаль, HL - горизонталь. ; A',HL' - адрес данных во второй странице ! ; BC' - длина данных ; ВЫВОД ЛИНИИ ТОЧЕК PIC_FN3: IN A,(SLOT3) LD C,A LD A,SYS_PAGE OUT (SLOT3),A LD A,C LD (SYS_PAGE.COPY_SLOT3),A IN A,(SLOT2) LD (SYS_PAGE.COPY_SLOT2),A IN A,(SLOT1) LD (SYS_PAGE.COPY_SLOT1),A LD A,B ADD A,#50 OUT (SLOT1),A BIT 0,B LD BC,#40 + #4000 JR Z,PIC_FN3_NO_2ND LD BC,#40 + 320 + #4000 PIC_FN3_NO_2ND: ADD HL,BC LD A,E OUT (PORT_Y),A LD A,H EXX LD D,A EXX LD A,L EXX LD E,A EXX EX AF,AF' OUT (SLOT2),A EX AF,AF' LD HL,SYS_PAGE.RAM_TABLE LD L,A LD A,SYS_PAGE OUT (SLOT3),A LD A,(HL) OUT (SLOT3),A EXX LDIR BIT 6,H JR Z,PIC_FN3_NO RES 6,H EX AF,AF' PIC_FN3_NO: EXX LD A,SYS_PAGE OUT (SLOT3),A LD A,(SYS_PAGE.COPY_SLOT1) OUT (SLOT1),A LD A,(SYS_PAGE.COPY_SLOT2) OUT (SLOT2),A LD A,(SYS_PAGE.COPY_SLOT3) OUT (SLOT3),A XOR A OUT (PORT_Y),A RET ;************************************************************************** ;PIC_FN4: ; вход: HL - данные палитры RGB, E - начальный цвет ; D - число цветов, B - PAL-mask, A - page PAL PIC_SET_PAL: PUSH IX EX AF,AF' IN A,(PORT_Y) PUSH AF ; сохранить положение PORT_Y LD A,E OUT (PORT_Y),A ; начальный цвет в порт LD A,D ; сохранить число цветов EX AF,AF' ; вернуть страницу PAL BIT 7,H ; проверить адрес данных LD C,SLOT3 ; если ниже 8000h LD D,#C3 ; то граф.экран на странице 3 JR Z,.NO_PAGE1 LD D,#43 ; иначе LD C,SLOT1 ; на странице 1 .NO_PAGE1: ADD A,A PUSH AF ADD A,A AND #1C XOR #E0 ; младший байт адреса PAL LD E,A ; DE - адрес в видео-ОЗУ PUSH DE POP IX ; адрес палитры LD D,B ; маска PAL EX AF,AF' ; вернуть число цветов LD B,A ; число цветов IN E,(C) ; сохранить страницу 3 LD A,#50 ; страница графического RAM OUT (C),A POP AF JR C,PIC_GET_PAL ; цикл установки цветов палитры .loopPal: LD A,(HL) ; B AND D LD (IX+2),A INC HL LD A,(HL) ; G AND D LD (IX+1),A INC HL LD A,(HL) ; R AND D LD (IX+0),A INC HL LD A,(HL) ; Y AND D LD (IX+3),A INC HL IN A,(PORT_Y) INC A OUT (PORT_Y),A DJNZ .loopPal ; выполнять, пока не 0 .exit: OUT (C),E ; восстановить страницу 3 POP AF OUT (PORT_Y),A ; восстановить Y_PORT POP IX AND A RET PIC_GET_PAL: ; цикл чтения цветов палитры .loopPal: LD A,(IX+2) LD (HL),A ; B INC HL LD A,(IX+1) LD (HL),A ; G INC HL LD A,(IX+0) LD (HL),A ; R INC HL LD A,(IX+3) LD (HL),A ; Y INC HL IN A,(PORT_Y) INC A OUT (PORT_Y),A DJNZ .loopPal ; выполнять, пока не 0 JR PIC_SET_PAL.exit ;******************************************************************** PIC_FN5: ; УСТАНОВКА СТРАНИЦЫ MODE LD A,E AND 1 OUT (RGMOD),A RET ;******************************************************************* ; Установка внутренней палитры ; A - page_pal, E - номер палитры, B - тип палитры SET_PAL_INIT: LD D,A DEC B JP Z,SET_GRAPH_PALETTE DEC B JP Z,SET_TXT_PALETTE.ZX DEC B JP Z,SET_TXT_PALETTE.IBM ; LD IX,PAL_DAT1 ; JR Z,PIC_FN6_L1 ; DEC B ; LD IX,PAL_DAT ; JR Z,PIC_FN6_L1 SCF RET ;PIC_FN6_L1: ; AND 3 ; ADD A,A ; ADD A,A ; ADD A,#E0 ; LD L,A ; LD H,#43 ; IN A,(SLOT1) ; PUSH AF ; ; LD A,#50 ; OUT (SLOT1),A ; XOR A ; OUT (PORT_Y),A ; EX AF,AF' ; call PAL_LOOP_M ; ; POP AF ; OUT (SLOT1),A ; XOR A ; OUT (PORT_Y),A ; ; RET ;****************************************************************** ; Рисование линии. ; dЕ - вертикаль, HL - горизонталь ; H' - высота, C'/DE',B' - add_parameters ; A - color PIC_FN7: LD D,A IN A,(SLOT1) PUSH AF LD A,B ADD A,#50 OUT (SLOT1),A BIT 0,B LD BC,#40+#4000 JR Z,.no_2nd LD BC,#40+320+#4000 .no_2nd: ADD HL,BC LD A,E .loop: OUT (PORT_Y),A ; страница видео-ОЗУ LD (HL),D EXX EX AF,AF' DEC H JR Z,.exit LD A,C ; NEXT HORIZONTAL ADD A,B LD C,A LD A,E EXX ADC A,L LD L,A EXX LD A,D EXX ADC A,H LD H,A INC E ; NEXT VERTICAL EX AF,AF' INC A JR .loop .exit: EXX POP AF OUT (SLOT1),A XOR A OUT (PORT_Y),A RET ;****************************************************************** ; Рисование линии. ; dЕ - вертикаль, HL - горизонталь ; H' - высота, C'/DE',B' - add_parameters ; (IX) - colors PIC_FN8: IN A,(SLOT1) PUSH AF LD A,B ADD A,#50 OUT (SLOT1),A BIT 0,B LD BC,#40+#4000 JR Z,.no_2nd LD BC,#40+320+#4000 .no_2nd: ADD HL,BC LD A,E .loop: OUT (PORT_Y),A ; страница видео-ОЗУ LD D,(IX) INC IX LD (HL),D EXX EX AF,AF' DEC H JR Z,.exit LD A,C ; NEXT HORIZONTAL ADD A,B LD C,A LD A,E EXX ADC A,L LD L,A EXX LD A,D EXX ADC A,H LD H,A INC E ; NEXT VERTICAL EX AF,AF' INC A JR .loop .exit: EXX POP AF OUT (SLOT1),A XOR A OUT (PORT_Y),A RET ;************************************************** ; Вывод спрайта на экран ; HL - горизоталь, dE - вертикаль ; A',HL' - адрес данных PIC_FN9: ;********************************* ; HL,E - координаты D - color ; B - Magnify PIC_FN10: PIC_FN11: PIC_FN12: PIC_FN13: PIC_FN14: PIC_FN15: SCF RET ;************************************ ;************************************ ; SYCLES EQU 0 ; ;START EQU 1 ; ST1 EQU 2 ; DPAL1 EQU 3 ; ST2 EQU 4 ; DPAL2 EQU 5 ; MACRO NEXT_LIN_H ; EX AF,AF' ; INC A ; OUT (PORT_Y),A ; EX AF,AF' ; ENDM ; MACRO NEXT_LIN_HP ; EX AF,AF' ; INC A ; OUT (PORT_Y),A ; JR NZ,.MD_NO_INC_H ; INC L ; .MD_NO_INC_H: ; EX AF,AF' ; ENDM ;**************************************** ; Загрузка режима экрана. ;**************************************** ; CALL SINC_DEF ; CALL SET_TXT_PALETTE.ZX ; RET ;**************************************** ;!TODO тут функция CL0 EQU 200 CL1 EQU 240 SET_TXT_PALETTE: .IBM: LD DE,#8000 JR .TXT ; .ZX: LD DE,0 .TXT: PUSH IX IN A,(PORT_Y) PUSH AF IN A,(SLOT3) EX AF,AF' LD A,#50 OUT (SLOT3),A ; LD IX,#C3F0 ; !HARDCODE адрес палитры? .generate_loop: CALL GENERATE_PAL1 LD A,E OUT (PORT_Y),A LD (IX),L ; R LD (IX+1),B ; G LD (IX+2),C ; B LD (IX+3),H ; i ? INC E JR NZ,.generate_loop ; LD BC,4 ADD IX,BC INC D LD A,D AND 3 JR NZ,.generate_loop ; EX AF,AF' OUT (SLOT3),A POP AF OUT (PORT_Y),A POP IX RET ; генерация спектрумовской палитры. ; Вход: E - атрибут, D - номер палитры ; ВЫХОД: L - red, B - green, C - blue, H - intensity GENERATE_PAL1: XOR A LD C,A LD B,A LD L,A BIT 7,D JR NZ,GENERATE_IBM BIT 1,D JR NZ,.FLH .NOF: BIT 0,D JR Z,.PAPER .INK: LD A,CL0 BIT 6,E JR Z,.NOI1 LD A,CL1 .NOI1: BIT 0,E ; BLUE JR Z,.NO1 LD C,A .NO1: BIT 1,E ; RED JR Z,.PP_NO2 LD L,A .PP_NO2: BIT 2,E ; GREEN JR Z,.PP_NO6 LD B,A .PP_NO3: JR .PP_NO6 ; .FLH: BIT 7,E JR Z,.NOF BIT 0,D JR Z,.INK .PAPER: LD A,CL0 BIT 6,E JR Z,.NOI2 LD A,CL1 .NOI2: BIT 3,E ; BLUE JR Z,.PP_NO4 LD C,A .PP_NO4: BIT 4,E ; RED JR Z,.PP_NO5 LD L,A .PP_NO5: BIT 5,E ; GREEN JR Z,.PP_NO6 LD B,A .PP_NO6: LD A,C AND A RRA ADD A,L RRA ADD A,B RRA LD H,A ; B/W mode RET ;**************************************** GENERATE_IBM: BIT 7,E JR Z,.NO_FLH BIT 1,D JR Z,.PAPER .NO_FLH: BIT 0,D JR Z,.PAPER .INK: .NO_INTENS: LD A,#A8 .INTENS: BIT 0,E ; BLUE JR Z,.PPI_NO4 LD C,A .PPI_NO4: BIT 2,E ; RED JR Z,.PPI_NO5 LD L,A .PPI_NO5: BIT 1,E ; GREEN JR Z,.PPI_NO6 LD B,A .PPI_NO6: LD A,E AND #0F CP 6 JR NZ,.no_correct LD B,#54 .no_correct: BIT 3,E JR Z,GENERATE_PAL1.PP_NO6 LD A,#54 ADD A,C LD C,A LD A,#54 ADD A,B LD B,A LD A,#54 ADD A,L LD L,A JR GENERATE_PAL1.PP_NO6 .PAPER: LD A,#A8 BIT 4,E ; BLUE JR Z,.PPI_NO4X LD C,A .PPI_NO4X: BIT 6,E ; RED JR Z,.PPI_NO5X LD L,A .PPI_NO5X: BIT 5,E ; GREEN JR Z,.PPI_NO6X LD B,A .PPI_NO6X: LD A,E AND #70 CP #60 JR NZ,GENERATE_PAL1.PP_NO6 LD B,#54 JR GENERATE_PAL1.PP_NO6 ;**************************************** ;**************************************** ;**************************************** ; D - номер графической палитры SET_GRAPH_PALETTE: PUSH IX IN A,(PORT_Y) PUSH AF IN A,(SLOT3) EX AF,AF' LD A,#50 OUT (SLOT3),A LD IX,#C3E0 LD A,D AND 3 ADD A,A ADD A,A LD E,A LD D,0 ADD IX,DE LD E,0 XOR A LD B,A LD C,A LD L,A LD H,A SET_PAL_GR1: LD A,E OUT (PORT_Y),A LD (IX),L LD (IX+1),B LD (IX+2),C LD (IX+3),H CALL GENERATE_PAL3 INC E LD A,E CP 40 JR NZ,SET_PAL_GR1 XOR A LD B,A LD C,A LD L,A LD H,A SET_PAL_GR2: LD A,E OUT (PORT_Y),A LD (IX),L LD (IX+1),B LD (IX+2),C LD (IX+3),H CALL GENERATE_PAL2 INC E JR NZ,SET_PAL_GR2 EX AF,AF' OUT (SLOT3),A POP AF OUT (PORT_Y),A POP IX RET ; ;;********************************* ; GENERATE_PAL3: ; gray-scale LD A,B ADD A,6 LD B,A LD C,A LD L,A LD A,C AND A RRA ADD A,L RRA ADD A,B RRA LD H,A RET GENERATE_PAL2: ; C - BLUE; L - RED; B - GREEN; H - INTENSITY LD A,C ADD A,50 LD C,A JR NC,GEN_PAL2_L1 LD C,0 LD A,L ADD A,50 LD L,A JR NC,GEN_PAL2_L1 LD L,0 LD A,B ADD A,50 LD B,A JR NC,GEN_PAL2_L1 LD B,0 GEN_PAL2_L1: LD A,C AND A RR A ADD A,L RR A ADD A,B RR A LD H,A RET ; ;************************************ FN_SYNC: BIT 7,A JR Z,.old_mode ; LD H,A AND #60 ; check reserved bits JR NZ,.error ; BIT 2,H ; Set V-Sinc? JR NZ,.set_v_sinc ; BIT 4,H ; Set Waits? JR Z,.error ; Error - no parameters ; .set_waits: LD A,H AND 8 ; check waits. Z - no waits, NZ - waits LD H,Port_All_Mode.DEFAULT JR Z,.no_change LD H,Port_All_Mode.DEFAULT-Port_All_Mode.MEM_WAITS_OFF .no_change: LD BC,(Port_All_Mode) IN A,(C) AND H OUT (C),A RET ; .set_v_sinc: LD A,H AND 3 JR Z,.SetDefLines DEC A JR Z,.SetCmosLines DEC A JR Z,.Set320Lines ;JR .Set312Lines .set312lines: LD A,Port_VSYNC.SET_312L OUT (Port_VSYNC),A ; LD C,SLOT3 IN B,(C) LD A,SYS_PAGE OUT (C),A LD A,(SYS_PAGE.VSyncAndWaits) AND 2 LD (SYS_PAGE.VSyncAndWaits),A OUT (C),B ; .end_set_v_sinc: BIT 4,H RET Z JR .set_waits ; .Set320Lines: LD A,Port_VSYNC.SET_320L OUT (Port_VSYNC),A ; LD C,SLOT3 IN B,(C) LD A,SYS_PAGE OUT (C),A LD A,(SYS_PAGE.VSyncAndWaits) OR 1 LD (SYS_PAGE.VSyncAndWaits),A OUT (C),B JR .end_set_v_sinc ; .SetCmosLines: LD D,CMOS_CELL.ScreenSET CALL CMOS_RD ; AND high CMOS_CELL.ScreenSET.Mask.Sinc ; в регистре A значение ScreenSET JR Z,.SetDefLines ; BIT 6,A JR Z,.set312lines JR .Set320Lines ; .old_mode: AND A JR Z,.INT_DEF DEC A JR Z,.INT_SCORP DEC A JR Z,.INT_PENT DEC A JR Z,.INT_ORIG DEC A JR Z,.INT_CMOS_SINC ; [x] кастомный экран по таблице пользователя DEC A JR Z,.PROG_SCR ; .error: SCF RET ; .SetDefLines: LD C,SLOT3 IN B,(C) LD A,SYS_PAGE OUT (C),A LD A,(SYS_PAGE.VSyncAndWaits) OUT (C),B AND 1 JR Z,.set312lines JR .Set320Lines ; .INT_DEF: LD C,SLOT3 IN B,(C) LD A,SYS_PAGE OUT (C),A LD DE,(SYS_PAGE.SCREEN_TABLE) OUT (C),B ; CALL Test_SCREEN_TABLE JR NZ,.INT_CMOS_SINC JP (IX) ; .INT_CMOS_SINC: LD C,SLOT3 IN B,(C) LD A,SYS_PAGE OUT (C),A LD DE,(SYS_PAGE.SCREEN_TABLE) OUT (C),B ; LD D,CMOS_CELL.ScreenSET CALL CMOS_RD ; AND high CMOS_CELL.ScreenSET.Mask.Int ; в регистре A значение ScreenSET JR NZ,.skiptest ; CALL Test_SCREEN_TABLE JP (IX) ; default int (non CMOS) ; .skiptest: CP #10 JR Z,.INT_SCORP ; scorpion int ; CP #20 JR Z,.INT_PENT ; pentagon int ; ;JR .INT_ORIG ; original int .INT_ORIG: LD IX,SCREEN_TABLES.ORIGINAL JR .PROG_SCR ; .INT_SCORP: LD IX,SCREEN_TABLES.SCORPION JR .PROG_SCR ; .INT_PENT: LD IX,SCREEN_TABLES.PENTAGON ;JR .PROG_SCR .PROG_SCR: IN A,(SLOT3) EX AF,AF' LD A,SYS_PAGE OUT (SLOT3),A EX AF,AF' LD (SYS_PAGE.COPY_SLOT3),A IN A,(PORT_Y) LD (SYS_PAGE.COPY_RGADR),A ; LD (SYS_PAGE.SCREEN_TABLE),IX XOR A ;----[START]-----------------------[? 1] .loop_1: OUT (PORT_Y),A EX AF,AF' LD A,#50 OUT (SLOT3),A LD HL,#C300 ;----[START]------------------[v 2]----- .loop_2: LD C,(IX) ;----[START]-------------[v 3]---------- .loop_3: ; взять адрес данных для записи в служебную область экрана LD E,(IX+1) ; take adress of line X LD D,(IX+2) ;----[START]--------[v 4]--------------- .loop_4: LD A,(DE) ; take counter in table 1, line X, column Y INC DE AND A JR Z,.loop_4_exit ; exit if zero-counter LD B,A LD A,(DE) INC DE ;----[START]---[v 5]-------------------- .loop_5: LD (HL),A INC L LD (HL),0 INC L LD (HL),0 ; EX AF,AF' INC A OUT (PORT_Y),A EX AF,AF' ; LD (HL),0 DEC L LD (HL),0 DEC L LD (HL),A ; EX AF,AF' INC A OUT (PORT_Y),A EX AF,AF' ; DJNZ .loop_5 ;--------------[^ 5]-------------------- JR .loop_4 ;-------------------[^ 4]--------------- .loop_4_exit: INC HL ; next line INC HL INC HL INC HL IN A,(PORT_Y) AND #80 OUT (PORT_Y),A DEC C JR NZ,.loop_3 ;------------------------[^ 3]---------- INC IX ; next counter INC IX INC IX LD A,(IX) AND A JR NZ,.loop_2 ;-----------------------------[^ 2]----- LD A,SYS_PAGE OUT (SLOT3),A LD IX,(SYS_PAGE.SCREEN_TABLE) ; EX AF,AF' ADD A,#80 JR NC,.loop_1 ;----------------------------------[^ 1] ; Exit LD A,(SYS_PAGE.COPY_RGADR) OUT (PORT_Y),A LD A,(SYS_PAGE.COPY_SLOT3) OUT (SLOT3),A .exit: OR A RET ; ;DE - содержимое SYS_PAGE.SCREEN_TABLE Test_SCREEN_TABLE: LD HL,SCREEN_TABLES.SCORPION AND A SBC HL,DE LD IX,FN_SYNC.INT_SCORP RET Z ; LD HL,SCREEN_TABLES.ORIGINAL AND A SBC HL,DE LD IX,FN_SYNC.INT_ORIG RET Z ; LD HL,SCREEN_TABLES.PENTAGON AND A SBC HL,DE LD IX,FN_SYNC.INT_PENT RET Z AND A RET ;--- Screen data table 1: counter1, data1 .. counterX, dataX SCREEN_TABLES: ; | число | значения | ; | строк | в | ; | /2 | строках | .SCR: DB 41 , #F8 DB 3 , #FC DB 4 , #FC DB 7 , #FC DB 9 , #F8 DB 0 ;.SCR: DB 41,#F8, 3,#FC, 4,#FC, 7,#FC, 9,#F8, 0 .INT: DB 40,#FC, 2,#FD, 6,#FC, 7,#FC, 9,#FC, 0 .INT_SC: DB 41,#F8, 1,#FD, 6,#FC, 7,#FC, 9,#F8, 0 .BLN: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0 .SNC: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0 .RES: DB 41,#F8, 3,#FE, 4,#FE, 7,#FE, 9,#F8, 0 ;--------------------------------------- ;--- Screen data tables 2: counter1, data address1 .. counterX, data addressX ; ; | кол-во | значения | ; | строк | в | ; | | строке | .PENTAGON: DB 33 : DW .SCR DB 1 : DW .INT ; DW .BLN DB 3 : DW .SNC DB 1 : DW .BLN DB 1 : DW .SCR DB 1 : DW .RES DB 0 ; end .SCORPION: DB 31 : DW .SCR DB 1 : DW .INT_SC DB 1 : DW .SCR DB 1 : DW .SNC DB 3 : DW .SNC DB 1 : DW .BLN DB 2 : DW .RES DB 0 ; end .ORIGINAL: DB 33 : DW .SCR DB 1 : DW .SNC DB 1 : DW .INT DB 2 : DW .SNC DB 1 : DW .BLN DB 1 : DW .SCR DB 1 : DW .RES DB 0 ; end ;--------------------------------------- ;************************************ ; ; Экранные таблицы ; ;текстовое окно 80x32 LP_SCR_80: DB 40,32,0,0,%0001'1011,0,0,0 BLOCK 8,0 ;текстовое окно 40x32 LP_SCR_40: DB 40,32,0,0,%0111'1011,0,0,0 BLOCK 8,0 ;спектрумовское окно 32x24 LP_SCR_32: DB 32,24,4,4,%0011'0000,1,0,0 BLOCK 8,0 ;текстовое окно 64x24 LP_SCR_64: DB 32,24,4,4,%1001'1011,0,0,0 BLOCK 8,0 ;графическое окно 0 PIC_320X256_1: DB 40,32,0,0,%0010'0000,0,8,0 BLOCK 8,0 ;графическое окно 1 PIC_320X256_2: DB 40,32,0,0,%0110'0000,0,48,0 BLOCK 8,0 ;************************************ ;