YSW EQU 3*8 LDFILE CALL RD_DIR LD HL,(FILES) CALL SBMAX ;MAX VALUE LD HL,16 CALL SBWIN ;BIG ADDER LD HL,0 CALL SBVAL ;CURRENT VALUE CALL SETNWIN LD IX,OPNFDLG LD HL,USErini CALL DLGinit AGAIN CALL WAITMSG CALL USErwrk JP AGAIN USErini LD A,H CP #14 JP Z,FILEBX CP #16 JP Z,SBARIN LD A,2 SCF RET SVFILE CALL RD_DIR LD HL,(FILES) CALL SBMAX ;MAX VALUE LD HL,16 CALL SBWIN ;BIG ADDER LD HL,0 CALL SBVAL ;CURRENT VALUE CALL SETNWIN LD IX,SAVFDLG LD HL,USErini CALL DLGinit AGAINS CALL WAITMSG CALL USEswrk JP AGAINS FILEBX LD (SAVEIX),IX CALL LST_INI CALL PUTDIR XOR A RET POSS_Y DW 0 POSS_X DW 0 PUTDIR LD HL,126 LD DE,68+YSW INC HL INC DE LD (POSS_Y),DE LD (POSS_X),HL CALL RSBVAL ;! LD B,H ;! LD C,L ;! LD HL,#C000 LD DE,#0020 ; LD BC,(SB_VAL) INC BC AND A SBC HL,DE SKIDRR ADD HL,DE DEC BC LD A,B OR C JP NZ,SKIDRR LD B,16 PUTDIR1 PUSH BC CALL GETH JP C,EGET PUSH HL LD HL,(POSS_X) LD DE,(POSS_Y) ; LD A,(WTEXT_) LD A,#F0 CALL SBODY EXX LD HL,EXTITEM+2 LD DE,EXTITEM+3 LDD LDD LDD XOR A LD (DE),A EXX XOR A LD (EXTITEM+4),A LD BC,DIRITEM CALL PCHARX LD HL,(POSS_X) LD DE,56 ADD HL,DE LD DE,(POSS_Y) LD BC,EXTITEM+1 CALL PCHARX LD HL,(POSS_Y) LD BC,8 ADD HL,BC LD (POSS_Y),HL POP HL POP BC DJNZ PUTDIR1 RET EGET POP BC RET ADI LD BC,#0020 ADD HL,BC JP GETH1 GETH IN A,(#E2) PUSH AF LD A,DIRPAGE OUT (#E2),A GETH1 LD A,(HL) OR A JP Z,EDI CP #E5 JP Z,ADI LD DE,DIRITEM LD BC,#0020 LDIR POP AF OUT (#E2),A AND A RET EDI POP AF OUT (#E2),A SCF RET DIRITEM DB " " EXTITEM DB " " DW 0,0,0,0,0,0,0,0 SBARIN LD A,L CP 1 JR Z,ITSBR XOR A RET ITSBR LD (SAVEIX2),IX LD A,2 SCF RET LOADF LD C,3 CALL INTMOUS EX DE,HL LD DE,68+YSW AND A SBC HL,DE SRL H RR L SRL H RR L SRL H RR L EX DE,HL ;! CALL RSBVAL ;! ; LD DE,(SB_VAL) ADD HL,DE LD A,L OR A LD HL,#C000 JR Z,LF2 LD B,A LD DE,#0020 LF1 ADD HL,DE DJNZ LF1 LF2 CALL GETH LD A,0 RET C ;;;;;;;; ; ; LD HL,DIRITEM ; CALL DEBUG ; ;;;;;;;; LD A,(DIRITEM+11) AND #10 JP NZ,REDIR CALL RD_FILE CALL CONVERT POP HL RET ;DEBUG ; LD B,H ; LD C,L ; LD HL,5 ; LD DE,5 ; CALL PCHARX ; RET REDIR LD HL,DIRITEM CALL CH_DIR LD HL,(FILES) CALL SBMAX ;MAX VALUE LD HL,0 CALL SBVAL ;CURRENT VALUE LD IX,(SAVEIX) CALL LST_CLR LD IX,(SAVEIX2) LD A,0 CALL SBV_WRK CALL PUTDIR XOR A RET SAVEF LD C,3 CALL INTMOUS EX DE,HL LD DE,68+YSW AND A SBC HL,DE SRL H RR L SRL H RR L SRL H RR L EX DE,HL ;! CALL RSBVAL ;! ; LD DE,(SB_VAL) ADD HL,DE LD A,L OR A LD HL,#C000 JR Z,SF2 LD B,A LD DE,#0020 SF1 ADD HL,DE DJNZ SF1 SF2 CALL GETH LD A,0 RET C LD A,(DIRITEM+11) AND #10 JP NZ,REDIR CALL MAKEBMP CALL SV_FILE POP HL RET USEswrk CP 3 JP Z,PUS2_ CP 4 JP Z,UNPS_SV CP 5 JP Z,DRAG2_ CP 6 JP Z,DROP2_ LD A,1 RET UNPS_SV LD A,H CP #11 JP Z,UP_BT21 CP #14 JP Z,SVFI CP #16 JP Z,UPBARRS LD A,2 RET SVFI LD A,L CP 1 JP Z,SAVEF LD A,3 RET UP_BT21 LD A,L CP 1 JP Z,UP_BT31 CP 2 JP Z,UP_BT32 LD A,3 RET UP_BT31 CALL POPBOT POP HL XOR A RET UP_BT32 CALL POPBOT POP HL XOR A RET USErwrk CP 3 JP Z,PUS2_ CP 4 JP Z,UNPUS2_ CP 5 JP Z,DRAG2_ CP 6 JP Z,DROP2_ LD A,1 RET DROP2_ LD A,H CP #11 JP Z,DROP2 LD A,2 RET DRAG2_ LD A,H CP #11 JP Z,DRAG2 LD A,2 RET PUS2_ LD A,H CP #11 JP Z,PBUTT2 CP #12 JP Z,EDBXX2 CP #16 JP Z,SSBBAR LD A,2 RET EDBXX2 LD A,L CP 1 JP Z,EDBXX1 LD A,3 RET EDBXX1 LD IX,OPNFDLG CALL GETPARM LD IX,SYSTEM1 CALL EDITBOX XOR A RET SSBBAR LD A,L CP 2 JP Z,SBAR1 CP 3 JP Z,SBAR2 LD A,3 RET SBAR1 CALL PUSHBOT SBB2 ;D HL,(SB_VAL) CALL RSBVAL ;! LD A,L OR H RET Z DEC HL CALL SBVAL ;! ; LD (SB_VAL),HL LD IX,(SAVEIX) CALL LST_CLR LD IX,(SAVEIX2) LD A,1 CALL SBV_WRK CALL PUTDIR LD C,3 CALL INTMOUS CP 1 JP Z,SBB2 XOR A RET SBAR2 CALL PUSHBOT SBB1 CALL RSBVAL ;! EX DE,HL ;! INC DE CALL RSBWIN ;! LD B,H ;! LD C,L ;! CALL RSBMAX ; LD HL,(SB_MAX) ; LD BC,(SB_WIN) AND A SBC HL,BC AND A SBC HL,DE LD A,0 RET C EX DE,HL CALL SBVAL ; LD (SB_VAL),HL SBAR0 LD IX,(SAVEIX) CALL LST_CLR LD IX,(SAVEIX2) LD A,2 CALL SBV_WRK CALL PUTDIR LD C,3 CALL INTMOUS CP 1 JP Z,SBB1 XOR A RET UPBARRS LD A,L CP 2 JP Z,UPBAR1 CP 3 JP Z,UPBAR2 LD A,3 RET UPBAR2 UPBAR1 CALL POPBOT XOR A RET SAVEIX DW IX1 SAVEIX2 DW IX2 UNPUS2_ LD A,H CP #11 JP Z,UPBUT21 CP #14 JP Z,LDFI CP #16 JP Z,UPBARRS LD A,2 RET PBUTT2 LD A,L CP 1 JP Z,PBUTT1A CP 2 JP Z,PBUTT2A LD A,3 RET LDFI LD A,L CP 1 JP Z,LOADF LD A,3 RET UPBUT21 LD A,L CP 1 JP Z,UPBUT31 CP 2 JP Z,UPBUT32 LD A,3 RET PBUTT1A CALL PUSHBOT XOR A RET PBUTT2A CALL PUSHBOT XOR A RET UPBUT31 CALL POPBOT POP HL XOR A RET UPBUT32 CALL POPBOT POP HL XOR A RET DROP2 LD A,L CP 1 JP Z,PUSHBOT CP 2 JP Z,PUSHBOT LD A,3 RET DRAG2 LD A,L CP 1 JP Z,POPBOT CP 2 JP Z,POPBOT LD A,3 RET PUSHBOT LD IX,OPNFDLG CALL GETPARM JP BPUSH POPBOT LD IX,OPNFDLG CALL GETPARM JP BPOP SYSTEM1 DB 64,0 DS 64 OPNFDLG DW #0000 ;STYLE DB 6 ;(7) ;NUMBER ITEMS DW 120 ;X DW 32+YSW ;Y DW 96 ;CX DW 192 ;CY DW #0002 ;RESOURCE MENU BAR OR "0" ZERO DB "Open",0 ;CAPTION ;CONTROL ITEM DW 8 ;X DW 170 ;Y DW 40 ;CX DW 14 ;CY DW #1101 ;ID DB BUTTON ;TYPE ITEM #80-BUTTON DB "Open",0 ;TEXT FOR ITEM DW 52 ;X DW 170 ;Y DW 40 ;CX DW 14 ;CY DW #1102 ;ID DB BUTTON ;TYPE ITEM #80-BUTTON DB "Cancel",0 ;TEXT FOR ITEM ; DW 5 ;X ; DW 20 ;Y ; DW 80 ;CX ; DW 12 ;CY ; DW #1201 ;ID ; DB ED_BOX ;TYPE ITEM #80-BUTTON ; DB 0 ;TEXT FOR ITEM IX1 DW 5 ;X DW 35 ;Y DW 88 ;CX DW 130 ;CY DW #1401 ;ID DB LISTX ;TYPE ITEM #80-BUTTON DB #00 ;ARRAY IX2 DW 93-9 ;X DW 36 ;Y DW 8 ;CX DW 128 ;CY DW #1601 ;ID DB VSBAR ;TYPE ITEM #80-BUTTON DB #00 ;ARRAY DW 93-9 ;X DW 36 ;Y DW 8 ;CX DW 8 ;CY DW #1602 ;ID DB BUTTON ;TYPE ITEM #80-BUTTON DB 0 ;TEXT FOR ITEM DW 93-9 ;X DW 36+128-8 ;Y DW 8 ;CX DW 8 ;CY DW #1603 ;ID DB BUTTON ;TYPE ITEM #80-BUTTON DB 0 ;TEXT FOR ITEM SAVFDLG DW #0000 ;STYLE DB 6 ;(7) ;NUMBER ITEMS DW 120 ;X DW 32+YSW ;Y DW 96 ;CX DW 192 ;CY DW #0003 ;RESOURCE MENU BAR OR "0" ZERO DB "Save as",0 ;CAPTION ;CONTROL ITEM DW 8 ;X DW 170 ;Y DW 40 ;CX DW 14 ;CY DW #1101 ;ID DB BUTTON ;TYPE ITEM #80-BUTTON DB "Save",0 ;TEXT FOR ITEM DW 52 ;X DW 170 ;Y DW 40 ;CX DW 14 ;CY DW #1102 ;ID DB BUTTON ;TYPE ITEM #80-BUTTON DB "Cancel",0 ;TEXT FOR ITEM ; DW 5 ;X ; DW 20 ;Y ; DW 80 ;CX ; DW 12 ;CY ; DW #1201 ;ID ; DB ED_BOX ;TYPE ITEM #80-BUTTON ; DB 0 ;TEXT FOR ITEM IX12 DW 5 ;X DW 35 ;Y DW 88 ;CX DW 130 ;CY DW #1401 ;ID DB LISTX ;TYPE ITEM #80-BUTTON DB #00 ;ARRAY IX22 DW 93-9 ;X DW 36 ;Y DW 8 ;CX DW 128 ;CY DW #1601 ;ID DB VSBAR ;TYPE ITEM #80-BUTTON DB #00 ;ARRAY DW 93-9 ;X DW 36 ;Y DW 8 ;CX DW 8 ;CY DW #1602 ;ID DB BUTTON ;TYPE ITEM #80-BUTTON DB 0 ;TEXT FOR ITEM DW 93-9 ;X DW 36+128-8 ;Y DW 8 ;CX DW 8 ;CY DW #1603 ;ID DB BUTTON ;TYPE ITEM #80-BUTTON DB 0 ;TEXT FOR ITEM ;---------------------------------------- AREApix EQU #C000 CONVERT DI LD C,#93 LD A,#0E CALL IPOINT ;CLEAR "S" ; LD C,#93 ; LD A,#0D ; CALL IPOINT ;CLEAR "R" ;; LD BC,#0592 ;; LD A,#0E ;; CALL IPOINT ;CREATE "S" ; LD BC,#0592 ; LD A,#0D ; CALL IPOINT ;CREATE "R" LD BC,#0094 LD HL,FLEPAGE SL2PAGE LD A,#0D PUSH HL PUSH BC CALL IPOINT ;GET PAGES POP BC POP HL LD (HL),A INC A JR Z,EDP001 INC HL INC B LD A,#81 CP B JP NZ,SL2PAGE EDP001 LD C,#92 LD A,#0E CALL IPOINT ;CREATE "S" LD BC,#0094 LD HL,PIXPAGE SL3PAGE LD A,#0E PUSH HL PUSH BC CALL IPOINT ;GET PAGES POP BC POP HL LD (HL),A INC A JR Z,EDP002 INC HL INC B LD A,#81 CP B JP NZ,SL3PAGE EDP002 CALL TURNBMP LD HL,NEWPAL LD DE,#0000 ;! EE (00) AMOUNT COLORS LD BC,#FFA4 LD A,1 ;PALETTE FOR MODE 8(!) CALL IPOINT ;SET PALETTE EI AND A RET FLEBANK DB #00 pixBANK DB #00 FLEPAGE DS #80 ;PIXPAGE DS #80 pixOPEN XOR A PUSH BC PUSH HL LD (pixBANK),A LD C,A LD B,0 IN A,(PAGE3) LD (retBANK+1),A LD HL,PIXPAGE ADD HL,BC LD A,(HL) OUT (PAGE3),A POP HL POP BC RET pixNEXT PUSH BC PUSH HL LD A,(pixBANK) INC A LD (pixBANK),A LD C,A LD B,0 LD HL,PIXPAGE ADD HL,BC LD A,(HL) OUT (PAGE3),A POP HL POP BC LD A,XH OR #C0 LD XH,A SET 7,H SET 6,H RET pixPREV PUSH BC PUSH HL LD A,(pixBANK) DEC A LD (pixBANK),A LD C,A LD B,0 LD HL,PIXPAGE ADD HL,BC LD A,(HL) OUT (PAGE3),A POP HL POP BC LD A,XH OR #C0 LD XH,A SET 7,H SET 6,H RET pixCURR PUSH BC PUSH HL LD A,(pixBANK) LD C,A LD B,0 LD HL,PIXPAGE ADD HL,BC LD A,(HL) OUT (PAGE3),A POP HL POP BC RET FLEOPEN XOR A PUSH BC PUSH HL LD (FLEBANK),A LD C,A LD B,0 IN A,(PAGE3) LD (retBANK+1),A LD HL,FLEPAGE ADD HL,BC LD A,(HL) OUT (PAGE3),A POP HL POP BC RET FLENEXT PUSH BC PUSH HL LD A,(FLEBANK) INC A LD (FLEBANK),A LD C,A LD B,0 LD HL,FLEPAGE ADD HL,BC LD A,(HL) OUT (PAGE3),A POP HL POP BC LD A,XH OR #C0 LD XH,A SET 7,H SET 6,H RET FLEPREV PUSH BC PUSH HL LD A,(FLEBANK) DEC A LD (FLEBANK),A LD C,A LD B,0 LD HL,FLEPAGE ADD HL,BC LD A,(HL) OUT (PAGE3),A POP HL POP BC LD A,XH OR #C0 LD XH,A SET 7,H SET 6,H RET FLECURR PUSH BC PUSH HL LD A,(FLEBANK) LD C,A LD B,0 LD HL,FLEPAGE ADD HL,BC LD A,(HL) OUT (PAGE3),A POP HL POP BC RET retBANK LD A,#00 OUT (PAGE3),A RET TURNBMP LD IX,AREApix CALL FLEOPEN LD A,(IX+00) CP "B" ; RET NZ JP NZ,retBANK LD A,(IX+01) CP "M" ; RET NZ JP NZ,retBANK ;HL'- IMAGE_OFFSET ;DE'- SIZE_HEADER ;BC'- HEIGHT ;BC - WIDTH ;HL - ; D - COLOR_USED ; E - BIT_COUNT EXX LD HL,40 ;SIZE_WINDOW 3.1 HEADER LD E,(IX+14) ;SIZE_HEADER LD D,(IX+15) AND A SBC HL,DE JP NZ,OS2BMP LD HL,14 ;SIZE_FILE_HEADER ADD HL,DE EX DE,HL PUSH DE LD E,(IX+02) ; SIZE FILE LD D,(IX+03) LD C,(IX+04) LD B,(IX+05) LD (FLSIZE),DE LD (FHSIZE),BC LD L,(IX+10) ; IMAGE OFFSET LD H,(IX+11) LD (OFFSET),HL LD C,(IX+18) ;WIDTH LD B,(IX+19) LD (X_SIZE),BC LD C,(IX+22) ;HEIGHT LD B,(IX+23) LD (Y_SIZE),BC POP DE LD L,(IX+10) ;IMAGE_OFFSET LD H,(IX+11) EXX LD C,(IX+18) ;WIDTH LD B,(IX+19) ; LD A,(IX+20) ;HIGH ; LD A,(IX+21) EXX LD C,(IX+22) ;HEIGHT LD B,(IX+23) ; LD A,(IX+24) ;HIGH ; LD A,(IX+25) EXX ; LD A,(IX+26) ;PLANES ; LD A,(IX+27) LD E,(IX+28) ;BIT_COUNT ; LD A,(IX+29) ; LD A,(IX+30) ;COMPRESSION ; LD A,(IX+31) ; LD A,(IX+32) ; LD A,(IX+33) ; LD E,(IX+34) ;SIZE_IMAGE(COMPRESSION) ; LD D,(IX+35) ; LD A,(IX+36) ; LD A,(IX+37) ; LD A,(IX+38) ;X_PELS_PER_METER ; LD A,(IX+39) ; LD A,(IX+40) ; LD A,(IX+41) ; LD A,(IX+42) ;Y_PELS_PER_METER ; LD A,(IX+43) ; LD A,(IX+44) ; LD A,(IX+45) LD D,(IX+46) ;COLOR_USED ; LD A,(IX+47) ; LD A,(IX+48) ; LD A,(IX+49) ; LD A,(IX+50) ;COLOR_IMPORTANT ; LD A,(IX+51) ; LD A,(IX+52) ; LD A,(IX+53) PUSH IX EXX ADD IX,DE ;SKIP BITMAP HEADER EXX PUSH IX POP HL ;HL - PALETTE (B/G/R/0) EXX POP IX EX DE,HL ADD IX,DE ;IX - OUTSET IMAGE EXX INC D ; D - COLOR_USED DEC D LD A,E ; A - BIT_COUNT JP NZ,USCOLOR LD D,16 ;IF COLOR_USED = 0 THEN ; CP 4 ;USED ALL COLOR ; JP Z,USCOLOR ;16 COLORS ? LD D,0 ;(256) CP 8 JP Z,USCOLOR ;256 COLORS ? LD A,#04 ; LD (VDI_ERR),A SCF RET USCOLOR PUSH BC ;PUSH WIDTH PUSH AF ;A - BIT_COUNT PUSH IX ;Install File Palette ; PUSH HL ; LD E,0 ; LD BC,#FFA4 ; LD A,0 ;PALETTE FOR MODE 8(!) ; CALL #3D13 ;SET PALETTE ; POP HL LD DE,NEWPAL LD BC,256*4 LDIR POP IX ;POP OUTSET IMAGE POP AF POP BC ; CP 4 ; JP Z,BMP16 CP 8 JP BMP256 OS2BMP LD A,#05 ; LD (VDI_ERR),A SCF RET REAL256 PUSH BC LD A,C AND #03 JR Z,BM25602 LD A,C AND #FC ADD A,4 LD C,A JR NC,BM25602 INC B BM25602 LD (RL_SIZE),BC POP BC RET RL_SIZE DW 0 ;IX - IMAGE ;BC - WIDTH ;BC'- HEIGHT BMP256 CALL REAL256 EXX PUSH BC EXX LD D,XH LD E,XL EX DE,HL POP DE PUSH BC LD BC,(RL_SIZE) BMP256A DEC DE LD A,D OR E JR Z,BMP256B ADD HL,BC JP NC,BMP256A CALL FLENEXT JP BMP256A BMP256B CALL retBANK CALL pixOPEN LD DE,AREApix BMP256C POP BC PUSH HL PUSH DE CALL READST POP DE CALL WRITEST POP HL PUSH BC LD BC,(RL_SIZE) AND A SBC HL,BC BIT 6,H CALL Z,FLEPREV EXX DEC BC LD A,B OR C EXX JP NZ,BMP256C POP BC CALL retBANK AND A RET ; FROM HL READST CALL FLECURR PUSH BC LD D,H LD E,L ADD HL,BC JP C,DOUBLE LD H,D LD L,E LD DE,STBUFF LDIR POP BC CALL retBANK RET DOUBLE PUSH HL LD A,L LD L,C LD C,A LD A,H LD H,B LD B,A AND A SBC HL,BC LD B,H LD C,L LD H,D LD L,E LD DE,STBUFF LDIR CALL FLENEXT POP BC LD A,B OR C JR Z,ROVNO LDIR CALL FLEPREV ROVNO POP BC CALL retBANK RET ; TO DE WRITEST CALL pixCURR PUSH BC LD H,D LD L,E ADD HL,BC JP C,DOUBLE2 LD HL,STBUFF LDIR POP BC CALL retBANK RET DOUBLE2 PUSH HL LD A,L LD L,C LD C,A LD A,H LD H,B LD B,A AND A SBC HL,BC LD B,H LD C,L LD HL,STBUFF LDIR EX DE,HL CALL pixNEXT EX DE,HL POP BC LD A,B OR C JR Z,ROVNO2 LDIR ROVNO2 POP BC CALL retBANK RET ;--------------------------------- MAKEBMP DI ; LD C,#93 ; LD A,#0E ; CALL IPOINT ;CLEAR "S" LD C,#93 LD A,#0D CALL IPOINT ;CLEAR "R" ; LD BC,#0592 ; LD A,#0E ; CALL IPOINT ;CREATE "S" LD HL,(FLSIZE) LD (SIZE0),HL LD HL,(FHSIZE) LD (SIZE1),HL CALL MEM_CLK ; LD BC,#0592 ; LD A,#0D ; CALL IPOINT ;CREATE "R" LD BC,#0094 LD HL,PIXPAGE SLXPAGE LD A,#0E PUSH HL PUSH BC CALL IPOINT ;GET PAGES POP BC POP HL LD (HL),A INC HL INC B LD A,5 CP B JP NZ,SLXPAGE LD BC,#0094 LD HL,FLEPAGE SX2PAGE LD A,#0D PUSH HL PUSH BC CALL IPOINT ;GET PAGES POP BC POP HL LD (HL),A INC HL INC B ; LD A,5 ; CP B CP #FF JP NZ,SX2PAGE CALL RE_TURN AND A EI RET RE_TURN LD IX,AREApix CALL FLEOPEN LD A,"B" LD (IX+00),A ; MAGIC "BM" ID LD A,"M" LD (IX+01),A ; XOR A LD DE,(FLSIZE) LD BC,(FHSIZE) LD (IX+02),E ; SIZE FILE LD (IX+03),D LD (IX+04),C LD (IX+05),B LD (IX+06),A ; RESERVED LD (IX+07),A LD (IX+08),A LD (IX+09),A LD HL,(OFFSET) LD (IX+10),L ; IMAGE OFFSET LD (IX+11),H LD (IX+12),A LD (IX+13),A LD DE,40 ;SIZE_WINDOW 3.1 HEADER LD (IX+14),E ;SIZE_HEADER LD (IX+15),D LD (IX+16),A LD (IX+17),A LD BC,(X_SIZE) PUSH BC LD (IX+18),C ;WIDTH LD (IX+19),B LD (IX+20),A ;HIGH LD (IX+21),A LD BC,(Y_SIZE) PUSH BC LD (IX+22),C ;HEIGHT LD (IX+23),B LD (IX+24),A ;HIGH LD (IX+25),A LD DE,1 LD (IX+26),E ;PLANES LD (IX+27),D LD DE,8 LD (IX+28),E ;BIT_COUNT LD (IX+29),D LD (IX+30),A ;COMPRESSION LD (IX+31),A LD (IX+32),A LD (IX+33),A LD (IX+34),A ;SIZE_IMAGE(COMPRESSION) LD (IX+35),A LD (IX+36),A LD (IX+37),A LD (IX+38),A ;X_PELS_PER_METER LD (IX+39),A LD (IX+40),A LD (IX+41),A LD (IX+42),A ;Y_PELS_PER_METER LD (IX+43),A LD (IX+44),A LD (IX+45),A LD DE,0 LD (IX+46),E ;COLOR_USED LD (IX+47),D LD (IX+48),A LD (IX+49),A LD (IX+50),A ;COLOR_IMPORTANT LD (IX+51),A LD (IX+52),A LD (IX+53),A LD D,XH LD E,XL LD HL,54 ADD HL,DE EX DE,HL LD HL,NEWPAL LD BC,1024 LDIR EXX POP BC EXX POP BC ;DE - IMAGE PLACE ;BC - WIDTH ;BC'- HEIGHT CALL REAL256 EXX PUSH BC LD HL,STBUFF LD DE,STBUFF+1 LD BC,(RL_SIZE) LD (HL),0 LDIR POP BC PUSH BC EXX EX DE,HL POP DE PUSH HL CALL retBANK CALL pixOPEN LD HL,AREApix BMP256Z DEC DE LD A,D OR E JR Z,BMP256Y ADD HL,BC JP NC,BMP256Z CALL pixNEXT JP BMP256Z BMP256Y CALL retBANK CALL FLEOPEN POP DE BMP256X PUSH BC PUSH HL PUSH DE CALL READS2 POP DE LD BC,(RL_SIZE) CALL WRITES2 POP HL POP BC AND A SBC HL,BC BIT 6,H CALL Z,pixPREV EXX DEC BC LD A,B OR C EXX JP NZ,BMP256X CALL retBANK AND A RET ; FROM HL READS2 CALL pixCURR PUSH BC LD D,H LD E,L ADD HL,BC JP C,DOUBLE3 LD H,D LD L,E LD DE,STBUFF LDIR POP BC CALL retBANK RET DOUBLE3 PUSH HL LD A,L LD L,C LD C,A LD A,H LD H,B LD B,A AND A SBC HL,BC LD B,H LD C,L LD H,D LD L,E LD DE,STBUFF LDIR POP BC LD A,B OR C JR Z,ROVNO3 CALL pixNEXT LDIR CALL pixPREV ROVNO3 POP BC CALL retBANK RET ; TO DE WRITES2 CALL FLECURR PUSH BC LD H,D LD L,E ADD HL,BC JP C,DOUBLE4 LD HL,STBUFF LDIR POP BC CALL retBANK RET DOUBLE4 PUSH HL LD A,L LD L,C LD C,A LD A,H LD H,B LD B,A AND A SBC HL,BC LD B,H LD C,L LD HL,STBUFF LDIR EX DE,HL CALL FLENEXT EX DE,HL POP BC LD A,B OR C JR Z,ROVNO4 LDIR ROVNO4 POP BC CALL retBANK RET FLSIZE DW 0 FHSIZE DW 0 OFFSET DW 1024+54 STBUFF DS 1024 NEWPAL DS 256*4 INCLUDE "WINDOS2.ASM"