;######################################### setPic: DWAIT ld a, (contrastSave) ld (contrast), a add a, 24 | $C0 out ($10), a bcall(_GrBufClr) setPicWText: bit_(avbPic) call yesOrNo8 ld hl, (avShadow+avPicContrast) call displayMenuNumber ld hl, (avShadow+avRefresh) call displayMenuNumber ld hl, avShadow+avPicName call dispName ld hl, setPicText jp menu ;################# togglePic: call killOffScrpt toggle_(avbPic) call makeAVDirty jr setPic ;################## killOffScrpt: res 1, (iy + $33) ld hl, offName jp deleteHL ;################ findPic: ld hl, picTag call findItems call newItemsMenu jr inTheHeat picsMenu: call itemsMenu inTheHeat: jp c, setPic ; call z, copyPicName call nz, dispTempPic jr picsMenu picTag: .db "BM", 0 ;################## setRefresh: ld hl, refreshText dispMessageCommon: ld de, 48*256+7 ld (penCol), de call myVPutS jr setPicWText ;################## savePicCont: ld hl, picContText jr dispMessageCommon ;################################### dispTempPic: call skiFastLosePass di DWAIT ld a, 7 out ($10), a newPicz: xor a out (05), a DWAIT ld a, (avShadow+avPicContrast) or a jr nz, not0z ld a, (contrastSave) not0z: ld (contrast), a add a, 24 | $C0 out ($10), a ld a, (avShadow+avRefresh) or a jr nz, not0zz ld a, 178 not0zz: ld (refresh), a ld a, (selected) dec a ld e, 9 bcall(_MultAbyE) ld de, saveSScreen add hl, de rst 20h bcall(_chkFindSym) ld a, b or a jr z, tempPicInRam call findStartInRom ld de, 2+2 add hl, de call fast_bhl ex de, hl jr gotItz tempPicInRam: inc de inc de inc de inc de gotItz: ld a, 1 ld (buttonPressed), a ld a, 3 out (05), a call movePic ld hl, refresh call waitDone ld hl, _0 ld (grayRetSave), hl loopz: xor a call keyScan cp b jp z, noButtons ld a, (buttonPressed) or a jp nz, buttonDone inc a ld (buttonPressed), a call keyScanFD bit 6, b jp z, toMenu bit 1, b call z, raiseContrast bit 2, b call z, lowerContrast ld a, (refresh) bit 3, b jr nz, notMult inc a jr nz, notMult dec a notMult: bit 4, b jr nz, notDiv dec a jr nz, notDiv dec a notDiv: ld (refresh), a bit 0, b jr nz, notEnter xor a out (05), a DWAIT ld a, 5 out ($10), a copyPicName: ld a, (selected) dec a ld e, 9 bcall(_MultAbyE) ld de, saveSScreen add hl, de rst 20h ld de, avShadow+avPicName call storeName ld a, (contrast) ld (avShadow+avPicContrast), a inc hl ld a, (refresh) ld (avShadow+avRefresh), a call makeAvDirty jp setPic notEnter: ld a, $BF call keyScan bit 5, b jr z, toMenu bit 6, b jr z, toMenu ld hl, newPicz push hl ld a, $FE call keyScan ld a, b rrca jp nc, downz rrca jp nc, upz rrca jp nc, downz rrca jp nc, upz pop hl jr buttonDone noButtons: xor a ld (buttonPressed), a buttonDone: #if _84 ld hl, $C000 #else ld hl, (grayAddr) #endif call grayCopy ld hl, refresh call waitLoop jp loopz toMenu: xor a out (05), a out ($20), a DWAIT ld a, 5 out ($10), a #if _84 #else ld hl, _83pPicName call deleteHL #endif pop af jp setPic toRedisp: xor a out (05), a out ($20), a DWAIT ld a, 5 out ($10), a ret ;####################################### ;##################################### ;8 level grayscale fastcopy ;0000000 ;1000000 ;0010001 ;0101010 ;1010101 ;1101110 ;0111111 ;1111111 ;0 = 0/7 ;1 = 1/7 ;2 = 2/7 ;3 = 3/7 ;4 = 4/7 ;5 = 5/7 ;6 = 6/7 ;7 = 7/7 ;((l ^ h ^ 1000000) & (m ^ h ^ 0010001) & 1111011) ^ h grayCopy: push hl ld hl, (grayRetSave) ld c, $80 ld de, _0End-_0 add hl, de ld de, last sbc hl, de add hl, de jr c, itsGood1 ld hl, _0 itsGood1: ex de, hl pop hl grayColumns: push bc DWAIT ld a, c cp $C0 jr nz, notDoneYet pop bc ld (grayRetSave), de ret notDoneYet: out ($10), a push de DWAIT ld a, $20 out ($10), a ld bc, 12*256+$10 grayLoop: ld e, (hl) inc hl ld a, (hl) inc hl xor e ret return: inc hl and d xor e fwait: in f, (c) jp m, fwait out ($11), a djnz grayLoop pop de pop bc inc c jr grayColumns _0: ;_0 xor %10000001 ld d, a ld a, (hl) xor e xor %00100010 and %11110111 call return _0End: ;_1: xor %00000010 ld d, a ld a, (hl) xor e xor %01000100 and %11101111 call return ;_2: xor %00000100 ld d, a ld a, (hl) xor e xor %10001001 and %11011111 call return ;_3: xor %00001000 ld d, a ld a, (hl) xor e xor %00010010 and %10111111 call return ;_4: xor %00010000 ld d, a ld a, (hl) xor e xor %00100100 and %01111110 call return ;_5: xor %00100000 ld d, a ld a, (hl) xor e xor %01001000 and %11111101 call return _6: xor %01000000 ld d, a ld a, (hl) xor e xor %10010001 and %11111011 last: push hl ld hl, _0 ex (sp), hl jp return ;########################################## movePic: #if _84 push de push bc ld hl, movePicData ld de, $8000 ld bc, movePicDataEnd-MovePicData ldir pop bc pop de jp $8000 movePicData: in a, (06) push af ld a, b or a jr nz, notRam ld hl, $BFFF ld a, $80 or a sbc hl, de res 7, d set 6, d jr c, notRam ld a, $C1 notRam: out (06), a ld hl, $8000 or a sbc hl, de ld bc, 768*3 sbc hl, bc add hl, bc push hl jr nc, unaPagina ld b, h ld c, l unaPagina: ex de, hl ld de, $C000 ldir pop bc ld hl, 768*3 or a sbc hl, bc jr z, unaPagina2 jr c, unaPagina2 ld b, h ld c, l in a, (06) inc a cp $82 jr nz, not82 ld a, $C0 not82: out (06), a ld hl, $4000 ldir unaPagina2: pop af out (06), a ret movePicDataEnd: #else ld (grayAddr), de ld a, b or a ret z push af push de ld hl, _83pPicName push hl call deleteHL ld hl, 768*3+2+6+5 bcall(_enoughMem) jr nc, isEnoughMem ld a, E_Memory & $7F bjump(_jError) isEnoughMem: pop hl rst 20h ld hl, 768*3 push hl bcall(_createAppVar) inc de inc de ld (grayAddr), de pop bc pop hl pop af bcall(_flashToRam) ret #endif ;##################################### ;OFFSCRIPT offStart: ld hl, appName-offStart+$8001 rst 20h bcall(_findApp) ret c ld c, 06 in b, (c) out (06), a ;lol t-states call offScrptEntry out (06), a ret appName: .db appObj, "zStart" #if _84 .db 0, 0 #else .db "83" #endif offEnd: ;##################################### offScrptEntry: push bc bit 4, (iy + 8) jr nz, offScrptRet ld hl, getKeyHookPtr ld de, Op5 ld bc, 3 ldir ld a, (iy + $34) ;address of hook flag ld (Op5+3), a in a, (06) ld hl, onEntry bcall(_enableGetCSCHook) bcall(_clrLCDFull) offScrptRet: pop af ret ;##################################### ;from turning on #if _84 grayRetSave equ 768*3+$C000 ;2 grayRefresh equ grayRetSave+2 ;1 #else grayRetSave equ $8000+ avSize ;2 grayRefresh equ grayRetSave+2 ;1 grayAddr equ grayRefresh+1 ;2 #endif onEntry: .db $83 ld hl, op5 ld de, getKeyHookPtr ld bc, 3 ldir ld a, (hl) ld (iy + $34), a #if _84 #else ld hl, (editCursor) ld de, (editTop) or a sbc hl, de ld (op6Ext), hl #endif bcall(_getCSC) halt bcall(_getCSC) call findArcAppVar ld a, $1A-1 inc a ret c ld de, $8000 ld a, b ld bc, avSize+2 bcall(_flashToRam) ld ix, $8002 bit_(avbPic) jp z, onDone ld hl, $8002+avPicName call unpackName bcall(_chkFindSym) jr c, onDone ld a, b or a jr z, ramza call findStartInRom ld de, 4 add hl, de call fast_bhl jr afterRamza ramza: ld hl, 4 add hl, de afterRamza: push bc push hl bcall(_RunIndicOff) bcall(_CursorOff) bcall(_EnableAPD) #if _84 #else bcall(_closeEditEqu) #endif pop de pop bc ld a, 3 out (05), a call skiFastLosePass DWAIT ld a, ($8002+avPicContrast) add a, $D8 out ($10), a ld a, ($8002+avRefresh) ld (grayRefresh), a DWAIT ld a, 7 out ($10), a call movePic ld hl, _0 ld (grayRetSave), hl ld hl, grayRefresh call waitDone onLoop: bcall(_GetCSC) or a jr z, notYet onQuit: xor a out (05), a DWAIT ld a, 5 out ($10), a bcall(_ClrLCDFull) #if _84 #else call fixEditBuffer #endif onDone: ld a, (contrast) add a, 24 | $C0 out ($10), a #if _84 #else ld hl, _83pPicName call deleteHL #endif jp turningOnDoProgram notYet: bit onInterrupt, (iy + onFlags) res onInterrupt, (iy + onFlags) jr nz, onQuit notQuitting: #if _84 ld hl, $C000 #else ld hl, (grayAddr) #endif di call grayCopy ei ld hl, grayRefresh call waitLoop jr onLoop ;###################################### ;raise Contrast raiseContrast: ld a, (contrast) cp 39 ret z inc a jr contrastCommon ;##################################### ;lower contrast lowerContrast: ld a, (contrast) or a ret z dec a contrastCommon: ld (contrast), a add a, $18 | $C0 out ($10), a ret ;###################### WaitLoop: #if _84 IN A, ($31) BIT 2, A JR NZ, WaitDone IN A, ($04) BIT 5, A JR Z, WaitLoop #endif WaitDone: ld a, $40 out ($30), a xor a out ($31), a ld a, (hl) out ($32), a ret #if _84 #else _83pPicName: .db appVarObj, "%p83", 0 #endif