OPTION.H
FILE INFORMATION
FILENAME(S): OPTION.H
FILE TYPE(S): USR
FILE SIZE: 3.6K
FIRST SEEN: 2025-12-01 01:08:53
APPEARS ON: 1 disk(s)
FILE HASH
467438d58a6ea52853683e5a05e85947a6f579ba26a15d8737b2bef063988a3e
FOUND ON DISKS (1 DISKS)
| DISK TITLE | FILENAME | FILE TYPE | COLLECTION | TRACK | SECTOR | ACTIONS |
|---|---|---|---|---|---|---|
| C BACKUP | OPTION.H | USR | hedning, loot | 20 | 10 | DOWNLOAD FILE |
FILE CONTENT & ANALYSIS
00000000: 85 81 1C 2F 2A 20 CF 50 54 49 4F 4E 41 4C 20 4D |.../* .PTIONAL M| 00000010: 41 43 52 4F 20 44 45 46 49 4E 49 54 49 4F 4E 53 |ACRO DEFINITIONS| 00000020: 20 41 4E 44 20 46 55 4E 43 54 49 4F 4E 53 2E 20 | AND FUNCTIONS. | 00000030: 2A 2F 0D 1C 0D 1C 0D 1C 0D 1F 2F 2A 20 CD 41 43 |*/......../* .AC| 00000040: 52 4F 20 44 45 46 49 4E 49 54 49 4F 4E 53 20 2A |RO DEFINITIONS *| 00000050: 2F 0D 1F 0D 1F 0D 1F 23 44 45 46 49 4E 45 20 50 |/......#DEFINE P| 00000060: 4F 4B 45 28 41 44 44 52 2C 56 41 4C 55 45 29 20 |OKE(ADDR,VALUE) | 00000070: 20 2A 41 44 44 52 3D 56 41 4C 55 45 0D 1F 23 44 | *ADDR=VALUE..#D| 00000080: 45 46 49 4E 45 20 50 45 45 4B 28 41 44 44 52 29 |EFINE PEEK(ADDR)| 00000090: 20 20 20 20 20 20 20 20 2A 41 44 44 52 0D 1F 0D | *ADDR...| 000000A0: 1F 23 44 45 46 49 4E 45 20 43 4C 52 53 43 52 20 |.#DEFINE CLRSCR | 000000B0: 20 20 20 20 20 20 20 20 20 20 20 50 55 54 43 48 | PUTCH| 000000C0: 41 52 28 C3 CC D2 29 0D 1F 0D 1F 23 44 45 46 49 |AR(...)....#DEFI| 000000D0: 4E 45 20 D7 C9 CE C4 CF D7 20 20 20 20 20 20 20 |NE ...... | 000000E0: 20 20 20 20 20 57 49 4E 44 4F 57 5B 4E 45 57 57 | WINDOW[NEWW| 000000F0: 49 4E 5D 0D 1F 23 44 45 46 49 4E 45 20 D3 C3 D2 |IN]..#DEFINE ...| 00000100: C5 C5 CE 20 20 20 20 20 20 20 20 20 20 20 20 30 |... 0| 00000110: 58 45 30 30 30 0D 1F 0D 1F 0D 1F 0D 9F 2F 2A 20 |XE000......../* | 00000120: D7 49 4E 44 4F 57 20 53 54 52 55 43 54 55 52 45 |.INDOW STRUCTURE| 00000130: 20 2A 2F 0D 9F 0D 9F 53 54 41 54 49 43 20 53 54 | */....STATIC ST| 00000140: 52 55 43 54 20 57 49 4E 53 54 52 55 43 0D 9F 20 |RUCT WINSTRUC.. | 00000150: 20 20 20 20 20 20 20 20 20 20 20 DB 0D 9F 0D 9F | .....| 00000160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 4E | IN| 00000170: 54 20 20 52 4F 57 31 3B 20 20 20 20 20 20 2F 2A |T ROW1; /*| 00000180: 20 55 50 50 45 52 20 4C 45 46 54 20 43 4F 52 4E | UPPER LEFT CORN| 00000190: 45 52 20 2A 2F 0D 9F 20 20 20 20 20 20 20 20 20 |ER */.. | 000001A0: 20 20 20 20 20 49 4E 54 20 20 43 4F 4C 31 3B 0D | INT COL1;.| 000001B0: 9F 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 |. I| 000001C0: 4E 54 20 20 52 4F 57 32 3B 20 20 20 20 20 20 2F |NT ROW2; /| 000001D0: 2A 20 44 4F 57 4E 20 52 49 47 48 54 20 43 4F 52 |* DOWN RIGHT COR| 000001E0: 4E 45 52 20 2A 2F 0D 9F 20 20 20 20 20 20 20 20 |NER */.. | 000001F0: 20 20 20 20 20 20 49 4E 54 20 20 43 4F 4C 32 3B | INT COL2;| 00000200: 0D 9F 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |.. | 00000210: 49 4E 54 20 20 42 59 54 45 53 3B 20 20 20 20 20 |INT BYTES; | 00000220: 2F 2A 20 4E 55 4D 42 45 52 20 4F 46 20 42 59 54 |/* NUMBER OF BYT| 00000230: 45 53 20 55 53 45 44 20 42 59 20 57 49 4E 44 4F |ES USED BY WINDO| 00000240: 57 20 2A 2F 0D 9F 20 20 20 20 20 20 20 20 20 20 |W */.. | 00000250: 20 20 20 20 43 48 41 52 20 2A 53 54 4F 52 45 50 | CHAR *STOREP| 00000260: 54 52 3B 20 2F 2A 20 50 4F 49 4E 54 45 52 20 54 |TR; /* POINTER T| 00000270: 4F 20 53 54 4F 52 41 47 45 20 4F 46 20 48 49 44 |O STORAGE OF HID| 00000280: 44 45 4E 20 20 53 55 52 46 41 43 45 20 2A 2F 0D |DEN SURFACE */.| 00000290: 9F 0D 9F 20 20 20 20 20 20 20 20 20 20 20 20 DD |... .| 000002A0: 20 57 49 4E 44 4F 57 5B 38 5D 3B 0D 9F 0D 9F 0D | WINDOW[8];.....| 000002B0: 9F 53 54 41 54 49 43 20 49 4E 54 20 20 4E 45 57 |.STATIC INT NEW| 000002C0: 57 49 4E 20 20 20 20 20 3D 20 2D 31 3B 0D 9F 53 |WIN = -1;..S| 000002D0: 54 41 54 49 43 20 43 48 41 52 20 43 4C 52 53 54 |TATIC CHAR CLRST| 000002E0: 52 5B 34 31 5D 20 3D 20 DB 22 20 20 20 20 20 20 |R[41] = ." | 000002F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000310: 20 20 22 DD 3B 0D 9F 0D 9F 0D 1C 2F 2A 20 46 55 | ".;....../* FU| 00000320: 4E 43 54 49 4F 4E 20 44 45 43 4C 41 52 41 54 49 |NCTION DECLARATI| 00000330: 4F 4E 53 20 2A 2F 0D 1C 0D 1C 0D 96 56 4F 49 44 |ONS */......VOID| 00000340: 20 43 45 4E 54 52 45 28 53 54 52 49 4E 47 29 0D | CENTRE(STRING).| 00000350: 1C 0D 1C 43 48 41 52 20 2A 53 54 52 49 4E 47 3B |...CHAR *STRING;| 00000360: 0D 1C 0D 1C DB 0D 1C 0D 1C 49 4E 54 20 20 42 59 |.........INT BY| 00000370: 54 45 53 3B 0D 1C 49 4E 54 20 20 2A 4C 49 4E 45 |TES;..INT *LINE| 00000380: 20 3D 20 32 31 34 3B 0D 1C 0D 1C 20 20 20 20 20 | = 214;.... | 00000390: 42 59 54 45 53 20 3D 20 28 34 30 20 2D 20 53 54 |BYTES = (40 - ST| 000003A0: 52 4C 45 4E 28 53 54 52 49 4E 47 29 29 20 2F 20 |RLEN(STRING)) / | 000003B0: 32 3B 0D 1C 0D 1C 20 20 20 20 20 43 55 52 53 4F |2;.... CURSO| 000003C0: 52 28 2A 4C 49 4E 45 2C 42 59 54 45 53 29 3B 0D |R(*LINE,BYTES);.| 000003D0: 1C 0D 1C 20 20 20 20 20 50 55 54 53 28 53 54 52 |... PUTS(STR| 000003E0: 49 4E 47 2C D3 D4 C4 C9 CF 29 3B 0D 1C 0D 1C DD |ING,.....);.....| 000003F0: 0D 1C 0D 1C 0D 96 56 4F 49 44 20 43 4C 45 41 52 |......VOID CLEAR| 00000400: 57 49 4E 28 29 0D 1C 0D 1C DB 0D 1C 0D 1C 49 4E |WIN().........IN| 00000410: 54 20 20 4C 4F 4F 50 31 2C 52 4F 57 41 44 44 52 |T LOOP1,ROWADDR| 00000420: 2C 42 59 54 45 49 4E 52 4F 57 3B 0D 1C 0D 1C 0D |,BYTEINROW;.....| 00000430: 1C 20 20 20 20 20 52 4F 57 41 44 44 52 20 20 20 |. ROWADDR | 00000440: 3D 20 D3 C3 D2 C5 C5 CE 2B D7 C9 CE C4 CF D7 2E |= ......+.......| 00000450: 52 4F 57 31 2A 34 30 2B 34 30 2B D7 C9 CE C4 CF |ROW1*40+40+.....| 00000460: D7 2E 43 4F 4C 31 2B 31 3B 0D 1C 20 20 20 20 20 |..COL1+1;.. | 00000470: 42 59 54 45 49 4E 52 4F 57 20 3D 20 D7 C9 CE C4 |BYTEINROW = ....| 00000480: CF D7 2E 43 4F 4C 32 2D D7 C9 CE C4 CF D7 2E 43 |...COL2-.......C| 00000490: 4F 4C 31 2D 31 3B 0D 1C 0D 1C 20 20 20 20 20 46 |OL1-1;.... F| 000004A0: 4F 52 20 28 4C 4F 4F 50 31 3D D7 C9 CE C4 CF D7 |OR (LOOP1=......| 000004B0: 2E 52 4F 57 31 2B 31 3B 4C 4F 4F 50 31 3C D7 C9 |.ROW1+1;LOOP1<..| 000004C0: CE C4 CF D7 2E 52 4F 57 32 3B 4C 4F 4F 50 31 2B |.....ROW2;LOOP1+| 000004D0: 2B 2C 52 4F 57 41 44 44 52 2B 3D 34 30 29 0D 1C |+,ROWADDR+=40)..| 000004E0: 20 20 20 20 20 20 20 20 20 4D 4F 56 45 20 28 52 | MOVE (R| 000004F0: 4F 57 41 44 44 52 2C 42 59 54 45 49 4E 52 4F 57 |OWADDR,BYTEINROW| 00000500: 2C 26 43 4C 52 53 54 52 5B 30 5D 29 3B 0D 1C 0D |,&CLRSTR[0]);...| 00000510: 1C 0D 1C DD 0D 1C 0D 1C 0D 1C 0D 1C 0D 96 42 4F |..............BO| 00000520: 4F 4C 45 41 4E 20 4F 50 45 4E 57 49 4E 28 55 50 |OLEAN OPENWIN(UP| 00000530: 45 52 52 4F 57 2C 4C 45 46 54 43 4F 4C 2C 44 4F |ERROW,LEFTCOL,DO| 00000540: 57 4E 52 4F 57 2C 52 49 47 48 54 43 4F 4C 29 0D |WNROW,RIGHTCOL).| 00000550: 1C 0D 1C 49 4E 54 20 20 20 20 20 55 50 45 52 52 |...INT UPERR| 00000560: 4F 57 2C 4C 45 46 54 43 4F 4C 2C 44 4F 57 4E 52 |OW,LEFTCOL,DOWNR| 00000570: 4F 57 2C 52 49 47 48 54 43 4F 4C 3B 0D 1C 0D 1C |OW,RIGHTCOL;....| 00000580: DB 0D 1C 0D 1C 49 4E 54 20 20 20 20 20 49 2C 4C |.....INT I,L| 00000590: 4F 4F 50 31 2C 4C 4F 4F 50 32 2C 42 59 54 49 4E |OOP1,LOOP2,BYTIN| 000005A0: 52 4F 57 3B 0D 1C 49 4E 54 20 20 20 20 20 53 4F |ROW;..INT SO| 000005B0: 55 52 43 45 41 44 52 2C 53 54 4F 52 45 41 44 52 |URCEADR,STOREADR| 000005C0: 3B 0D 1C 43 48 41 52 20 20 20 20 2A 54 41 52 47 |;..CHAR *TARG| 000005D0: 45 54 41 44 52 2C 2A 43 4F 4C 4F 52 20 3D 20 36 |ETADR,*COLOR = 6| 000005E0: 34 36 3B 0D 1C 43 48 41 52 20 20 20 20 2A 42 4F |46;..CHAR *BO| 000005F0: 52 44 45 52 20 3D 20 35 33 32 38 30 3B 0D 1C 42 |RDER = 53280;..B| 00000600: 4F 4F 4C 45 41 4E 20 52 45 53 55 4C 54 20 20 3D |OOLEAN RESULT =| 00000610: 20 C6 C1 CC D3 C5 3B 0D 1C 0D 1C 0D 1C 20 20 49 | .....;...... I| 00000620: 46 20 28 20 4E 45 57 57 49 4E 20 3C 20 37 20 29 |F ( NEWWIN < 7 )| 00000630: 0D 1C 20 20 20 DB 0D 1C 0D 96 20 20 20 20 20 2F |.. ..... /| 00000640: 2A 20 49 4E 49 54 49 41 4C 49 5A 45 20 41 20 4E |* INITIALIZE A N| 00000650: 45 57 20 57 49 4E 44 4F 57 20 2A 2F 0D 1C 0D 1C |EW WINDOW */....| 00000660: 20 20 20 20 20 4E 45 57 57 49 4E 2B 2B 3B 0D 1C | NEWWIN++;..| 00000670: 0D 96 20 20 20 20 20 2F 2A 20 43 41 4C 43 55 4C |.. /* CALCUL| 00000680: 41 54 45 20 4E 55 4D 42 45 52 20 4F 46 20 42 59 |ATE NUMBER OF BY| 00000690: 54 45 53 20 49 4E 20 54 48 45 20 57 49 4E 44 4F |TES IN THE WINDO| 000006A0: 57 20 2A 2F 0D 1C 0D 1C 20 20 20 20 20 D7 C9 CE |W */.... ...| 000006B0: C4 CF D7 2E 42 59 54 45 53 20 3D 20 20 28 31 2B |....BYTES = (1+| 000006C0: 44 4F 57 4E 52 4F 57 2D 55 50 45 52 52 4F 57 29 |DOWNROW-UPERROW)| 000006D0: 2A 28 31 2B 52 49 47 48 54 43 4F 4C 2D 4C 45 46 |*(1+RIGHTCOL-LEF| 000006E0: 54 43 4F 4C 29 3B 0D 1C 0D 96 20 20 20 20 20 2F |TCOL);.... /| 000006F0: 2A 20 41 4C 4C 4F 43 41 54 45 20 53 54 4F 52 41 |* ALLOCATE STORA| 00000700: 47 45 20 41 52 45 41 20 46 4F 52 20 48 49 44 44 |GE AREA FOR HIDD| 00000710: 45 4E 20 53 55 52 46 41 43 45 20 2A 2F 0D 1C 0D |EN SURFACE */...| 00000720: 1C 20 20 20 20 20 53 54 4F 52 45 41 44 52 20 3D |. STOREADR =| 00000730: 20 41 4C 4C 4F 43 28 D7 C9 CE C4 CF D7 2E 42 59 | ALLOC(.......BY| 00000740: 54 45 53 29 3B 0D 1C 20 20 20 20 20 D7 C9 CE C4 |TES);.. ....| 00000750: CF D7 2E 53 54 4F 52 45 50 54 52 20 3D 20 53 54 |...STOREPTR = ST| 00000760: 4F 52 45 41 44 52 3B 0D 1C 0D 96 20 20 20 20 20 |OREADR;.... | 00000770: 2F 2A 20 53 54 4F 52 45 20 43 4F 52 44 49 4E 41 |/* STORE CORDINA| 00000780: 54 45 53 20 46 4F 52 20 57 49 4E 44 4F 57 20 2A |TES FOR WINDOW *| 00000790: 2F 0D 1C 0D 1C 20 20 20 20 20 D7 C9 CE C4 CF D7 |/.... ......| 000007A0: 2E 52 4F 57 31 20 3D 20 55 50 45 52 52 4F 57 3B |.ROW1 = UPERROW;| 000007B0: 0D 1C 20 20 20 20 20 D7 C9 CE C4 CF D7 2E 43 4F |.. .......CO| 000007C0: 4C 31 20 3D 20 4C 45 46 54 43 4F 4C 3B 0D 1C 20 |L1 = LEFTCOL;.. | 000007D0: 20 20 20 20 D7 C9 CE C4 CF D7 2E 52 4F 57 32 20 | .......ROW2 | 000007E0: 3D 20 44 4F 57 4E 52 4F 57 3B 0D 1C 20 20 20 20 |= DOWNROW;.. | 000007F0: 20 D7 C9 CE C4 CF D7 2E 43 4F 4C 32 20 3D 20 52 | .......COL2 = R| 00000800: 49 47 48 54 43 4F 4C 3B 0D 1C 0D 96 20 20 20 20 |IGHTCOL;.... | 00000810: 20 2F 2A 20 53 54 4F 52 45 20 48 49 44 44 45 4E | /* STORE HIDDEN| 00000820: 20 53 55 52 46 41 43 45 20 54 4F 20 41 4C 4C 4F | SURFACE TO ALLO| 00000830: 43 41 54 45 44 20 42 4C 4F 43 4B 20 2A 2F 0D 1C |CATED BLOCK */..| 00000840: 0D 1C 20 20 20 20 20 53 4F 55 52 43 45 41 44 52 |.. SOURCEADR| 00000850: 20 3D 20 D3 C3 D2 C5 C5 CE 2B 34 30 2A 55 50 45 | = ......+40*UPE| 00000860: 52 52 4F 57 2B 4C 45 46 54 43 4F 4C 3B 0D 1C 20 |RROW+LEFTCOL;.. | 00000870: 20 20 20 20 42 59 54 49 4E 52 4F 57 20 20 3D 20 | BYTINROW = | 00000880: 31 2B 52 49 47 48 54 43 4F 4C 2D 4C 45 46 54 43 |1+RIGHTCOL-LEFTC| 00000890: 4F 4C 3B 0D 1C 0D 1C 20 20 20 20 20 46 4F 52 28 |OL;.... FOR(| 000008A0: 4C 4F 4F 50 31 3D 55 50 45 52 52 4F 57 3B 4C 4F |LOOP1=UPERROW;LO| 000008B0: 4F 50 31 3C 3D 44 4F 57 4E 52 4F 57 3B 4C 4F 4F |OP1<=DOWNROW;LOO| 000008C0: 50 31 2B 2B 2C 53 4F 55 52 43 45 41 44 52 2B 3D |P1++,SOURCEADR+=| 000008D0: 34 30 2C 53 54 4F 52 45 41 44 52 2B 3D 42 59 54 |40,STOREADR+=BYT| 000008E0: 49 4E 52 4F 57 29 0D 1C 20 20 20 20 20 20 20 20 |INROW).. | 000008F0: 20 4D 4F 56 45 28 53 54 4F 52 45 41 44 52 2C 42 | MOVE(STOREADR,B| 00000900: 59 54 49 4E 52 4F 57 2C 53 4F 55 52 43 45 41 44 |YTINROW,SOURCEAD| 00000910: 52 2C 35 36 29 3B 0D 1C 0D 1C 0D 96 20 20 20 20 |R,56);...... | 00000920: 20 2F 2A 20 44 52 41 57 20 46 52 41 4D 45 20 52 | /* DRAW FRAME R| 00000930: 4F 55 4E 44 20 57 49 4E 44 4F 57 20 2A 2F 0D 1C |OUND WINDOW */..| 00000940: 0D 1C 0D 1C 20 20 20 20 20 54 41 52 47 45 54 41 |.... TARGETA| 00000950: 44 52 20 3D 20 D3 C3 D2 C5 C5 CE 2B 34 30 2A 55 |DR = ......+40*U| 00000960: 50 45 52 52 4F 57 2B 4C 45 46 54 43 4F 4C 3B 0D |PERROW+LEFTCOL;.| 00000970: 1C 0D 1C 20 20 20 20 20 2A 54 41 52 47 45 54 41 |... *TARGETA| 00000980: 44 52 20 3D 20 31 31 32 3B 0D 1C 0D 1C 20 20 20 |DR = 112;.... | 00000990: 20 20 46 4F 52 20 28 4C 4F 4F 50 31 3D 4C 45 46 | FOR (LOOP1=LEF| 000009A0: 54 43 4F 4C 2B 31 2C 2B 2B 54 41 52 47 45 54 41 |TCOL+1,++TARGETA| 000009B0: 44 52 3B 4C 4F 4F 50 31 3C 52 49 47 48 54 43 4F |DR;LOOP1<RIGHTCO| 000009C0: 4C 3B 4C 4F 4F 50 31 2B 2B 2C 54 41 52 47 45 54 |L;LOOP1++,TARGET| 000009D0: 41 44 52 2B 2B 29 0D 1C 20 20 20 20 20 20 20 20 |ADR++).. | 000009E0: 20 2A 54 41 52 47 45 54 41 44 52 20 3D 20 36 37 | *TARGETADR = 67| 000009F0: 3B 0D 1C 0D 1C 20 20 20 20 20 2A 54 41 52 47 45 |;.... *TARGE| 00000A00: 54 41 44 52 20 3D 20 31 31 30 3B 0D 1C 0D 1C 20 |TADR = 110;.... | 00000A10: 20 20 20 20 46 4F 52 20 28 4C 4F 4F 50 31 3D 55 | FOR (LOOP1=U| 00000A20: 50 45 52 52 4F 57 2B 31 2C 54 41 52 47 45 54 41 |PERROW+1,TARGETA| 00000A30: 44 52 2B 3D 34 30 3B 4C 4F 4F 50 31 3C 44 4F 57 |DR+=40;LOOP1<DOW| 00000A40: 4E 52 4F 57 3B 4C 4F 4F 50 31 2B 2B 2C 54 41 52 |NROW;LOOP1++,TAR| 00000A50: 47 45 54 41 44 52 2B 3D 34 30 29 0D 1C 20 20 20 |GETADR+=40).. | 00000A60: 20 20 20 20 20 20 2A 54 41 52 47 45 54 41 44 52 | *TARGETADR| 00000A70: 20 3D 20 36 36 3B 0D 1C 0D 1C 20 20 20 20 20 2A | = 66;.... *| 00000A80: 54 41 52 47 45 54 41 44 52 20 3D 20 31 32 35 3B |TARGETADR = 125;| 00000A90: 0D 1C 0D 1C 20 20 20 20 20 46 4F 52 20 28 4C 4F |.... FOR (LO| 00000AA0: 4F 50 31 3D 52 49 47 48 54 43 4F 4C 2D 31 2C 54 |OP1=RIGHTCOL-1,T| 00000AB0: 41 52 47 45 54 41 44 52 2D 2D 3B 4C 4F 4F 50 31 |ARGETADR--;LOOP1| 00000AC0: 3E 4C 45 46 54 43 4F 4C 3B 4C 4F 4F 50 31 2D 2D |>LEFTCOL;LOOP1--| 00000AD0: 2C 54 41 52 47 45 54 41 44 52 2D 2D 29 0D 1C 20 |,TARGETADR--).. | 00000AE0: 20 20 20 20 20 20 20 20 2A 54 41 52 47 45 54 41 | *TARGETA| 00000AF0: 44 52 20 3D 20 36 37 3B 0D 1C 0D 1C 20 20 20 20 |DR = 67;.... | 00000B00: 20 2A 54 41 52 47 45 54 41 44 52 20 3D 20 31 30 | *TARGETADR = 10| 00000B10: 39 3B 0D 1C 0D 1C 20 20 20 20 20 46 4F 52 20 28 |9;.... FOR (| 00000B20: 4C 4F 4F 50 31 3D 44 4F 57 4E 52 4F 57 2D 31 2C |LOOP1=DOWNROW-1,| 00000B30: 54 41 52 47 45 54 41 44 52 2D 3D 34 30 3B 4C 4F |TARGETADR-=40;LO| 00000B40: 4F 50 31 3E 55 50 45 52 52 4F 57 3B 4C 4F 4F 50 |OP1>UPERROW;LOOP| 00000B50: 31 2D 2D 2C 54 41 52 47 45 54 41 44 52 2D 3D 34 |1--,TARGETADR-=4| 00000B60: 30 29 0D 1C 20 20 20 20 20 20 20 20 20 2A 54 41 |0).. *TA| 00000B70: 52 47 45 54 41 44 52 20 3D 20 36 36 3B 0D 1C 0D |RGETADR = 66;...| 00000B80: 1C 0D 96 20 20 20 20 20 2F 2A 20 43 4C 45 41 52 |... /* CLEAR| 00000B90: 20 57 49 4E 44 4F 57 20 2A 2F 0D 1C 0D 1C 0D 1C | WINDOW */......| 00000BA0: 20 20 20 20 20 43 4C 45 41 52 57 49 4E 28 29 3B | CLEARWIN();| 00000BB0: 0D 1C 0D 1C 20 20 20 20 20 52 45 53 55 4C 54 20 |.... RESULT | 00000BC0: 3D 20 D4 D2 D5 C5 3B 0D 1C 0D 1C 20 20 20 DD 0D |= ....;.... ..| 00000BD0: 1C 0D 1C 20 20 20 52 45 54 55 52 4E 28 52 45 53 |... RETURN(RES| 00000BE0: 55 4C 54 29 3B 0D 1C 0D 1C DD 0D 1C 0D 1C 0D 1C |ULT);...........| 00000BF0: 0D 96 49 4E 54 20 20 43 4C 4F 53 45 57 49 4E 28 |..INT CLOSEWIN(| 00000C00: 29 0D 1C 0D 1C DB 0D 1C 0D 1C 20 20 20 20 20 20 |)......... | 00000C10: 20 20 20 49 4E 54 20 4C 4F 4F 50 31 2C 4C 4F 4F | INT LOOP1,LOO| 00000C20: 50 32 2C 42 59 54 49 4E 52 4F 57 2C 4D 45 4D 4F |P2,BYTINROW,MEMO| 00000C30: 52 59 3B 0D 1C 55 4E 53 49 47 4E 45 44 20 49 4E |RY;..UNSIGNED IN| 00000C40: 54 20 54 41 52 47 45 54 41 44 52 2C 53 4F 55 52 |T TARGETADR,SOUR| 00000C50: 43 45 41 44 52 3B 0D 1C 0D 1C 0D 1C 20 20 20 20 |CEADR;...... | 00000C60: 20 49 46 20 28 20 4E 45 57 57 49 4E 20 3E 20 2D | IF ( NEWWIN > -| 00000C70: 31 20 29 0D 1C 20 20 20 20 20 20 DB 0D 1C 0D 96 |1 ).. .....| 00000C80: 20 20 20 20 20 2F 2A 20 52 45 53 54 4F 52 45 20 | /* RESTORE | 00000C90: 48 49 44 44 45 4E 20 53 55 52 46 41 43 45 20 55 |HIDDEN SURFACE U| 00000CA0: 4E 44 45 52 20 57 49 4E 44 4F 57 20 2A 2F 0D 1C |NDER WINDOW */..| 00000CB0: 0D 1C 20 20 20 20 20 20 20 20 54 41 52 47 45 54 |.. TARGET| 00000CC0: 41 44 52 20 3D 20 D3 C3 D2 C5 C5 CE 2B 34 30 2A |ADR = ......+40*| 00000CD0: D7 C9 CE C4 CF D7 2E 52 4F 57 31 2B D7 C9 CE C4 |.......ROW1+....| 00000CE0: CF D7 2E 43 4F 4C 31 3B 0D 1C 20 20 20 20 20 20 |...COL1;.. | 00000CF0: 20 20 53 4F 55 52 43 45 41 44 52 20 3D 20 D7 C9 | SOURCEADR = ..| 00000D00: CE C4 CF D7 2E 53 54 4F 52 45 50 54 52 3B 0D 1C |.....STOREPTR;..| 00000D10: 20 20 20 20 20 20 20 20 42 59 54 49 4E 52 4F 57 | BYTINROW| 00000D20: 20 20 3D 20 31 2B D7 C9 CE C4 CF D7 2E 43 4F 4C | = 1+.......COL| 00000D30: 32 2D D7 C9 CE C4 CF D7 2E 43 4F 4C 31 3B 0D 1C |2-.......COL1;..| 00000D40: 0D 1C 46 4F 52 28 0D 1C 4C 4F 4F 50 31 3D D7 C9 |..FOR(..LOOP1=..| 00000D50: CE C4 CF D7 2E 52 4F 57 31 3B 4C 4F 4F 50 31 3C |.....ROW1;LOOP1<| 00000D60: 3D D7 C9 CE C4 CF D7 2E 52 4F 57 32 3B 4C 4F 4F |=.......ROW2;LOO| 00000D70: 50 31 2B 2B 2C 54 41 52 47 45 54 41 44 52 2B 3D |P1++,TARGETADR+=| 00000D80: 34 30 2C 53 4F 55 52 43 45 41 44 52 2B 3D 42 59 |40,SOURCEADR+=BY| 00000D90: 54 49 4E 52 4F 57 29 0D 1C 20 20 20 20 20 20 20 |TINROW).. | 00000DA0: 20 4D 4F 56 45 28 54 41 52 47 45 54 41 44 52 2C | MOVE(TARGETADR,| 00000DB0: 42 59 54 49 4E 52 4F 57 2C 53 4F 55 52 43 45 41 |BYTINROW,SOURCEA| 00000DC0: 44 52 2C 35 36 29 3B 0D 1C 0D 96 20 20 20 20 20 |DR,56);.... | 00000DD0: 2F 2A 20 52 45 54 55 52 4E 20 4C 41 53 54 20 41 |/* RETURN LAST A| 00000DE0: 4C 4C 4F 43 41 54 45 44 20 42 4C 4F 43 4B 20 2A |LLOCATED BLOCK *| 00000DF0: 2F 0D 1C 0D 1C 20 20 20 20 20 20 20 20 4D 45 4D |/.... MEM| 00000E00: 4F 52 59 20 3D 20 D7 C9 CE C4 CF D7 2E 42 59 54 |ORY = .......BYT| 00000E10: 45 53 20 26 20 30 58 37 46 46 46 3B 0D 1C 0D 1C |ES & 0X7FFF;....| 00000E20: 20 20 20 20 20 20 20 20 46 52 45 45 20 28 4D 45 | FREE (ME| 00000E30: 4D 4F 52 59 29 3B 0D 1C 0D 96 20 20 20 20 20 2F |MORY);.... /| 00000E40: 2A 20 53 45 54 20 50 4F 49 4E 54 45 52 20 54 4F |* SET POINTER TO| 00000E50: 20 50 52 45 53 45 4E 54 20 57 49 4E 44 4F 57 20 | PRESENT WINDOW | 00000E60: 2A 2F 0D 1C 0D 1C 20 20 20 20 20 20 20 20 4E 45 |*/.... NE| 00000E70: 57 57 49 4E 2D 2D 3B 0D 1C 0D 1C 20 20 20 20 20 |WWIN--;.... | 00000E80: DD 0D 1C 0D 1C DD 0D 00 |........ |
.../* OPTIONAL MACRO DEFINITIONS AND FUN
CTIONS. */......../* MACRO DEFINITIONS *
/......#DEFINE POKE(ADDR,VALUE) *ADDR=V
ALUE..#DEFINE PEEK(ADDR) *ADDR...
.#DEFINE CLRSCR PUTCHAR(CLR).
...#DEFINE WINDOW WINDOW[NEWW
IN]..#DEFINE SCREEN 0XE000...
...../* WINDOW STRUCTURE */....STATIC ST
RUCT WINSTRUC.. .....
INT ROW1; /* UPPER LEFT CORN
ER */.. INT COL1;..
INT ROW2; /* DOWN RIGHT COR
NER */.. INT COL2;..
INT BYTES; /* NUMBER OF BYT
ES USED BY WINDOW */.. CHAR
*STOREPTR; /* POINTER TO STORAGE OF HID
DEN SURFACE */.... . WINDOW[
8];......STATIC INT NEWWIN = -1;..S
TATIC CHAR CLRSTR[41] = ."
".;....../* FU
NCTION DECLARATIONS */......VOID CENTRE(
STRING)....CHAR *STRING;.........INT BY
TES;..INT *LINE = 214;.... BYTES =
(40 - STRLEN(STRING)) / 2;.... CURSO
R(*LINE,BYTES);.... PUTS(STRING,STDI
O);...........VOID CLEARWIN().........IN
T LOOP1,ROWADDR,BYTEINROW;...... RO
WADDR = SCREEN+WINDOW.ROW1*40+40+WINDO
W.COL1+1;.. BYTEINROW = WINDOW.COL2-
WINDOW.COL1-1;.... FOR (LOOP1=WINDOW
.ROW1+1;LOOP1<WINDOW.ROW2;LOOP1++,ROWADD
R+=40).. MOVE (ROWADDR,BYTEINROW
,&CLRSTR[0]);.................BOOLEAN OP
ENWIN(UPERROW,LEFTCOL,DOWNROW,RIGHTCOL).
...INT UPERROW,LEFTCOL,DOWNROW,RIGHT
COL;.........INT I,LOOP1,LOOP2,BYTIN
ROW;..INT SOURCEADR,STOREADR;..CHAR
*TARGETADR,*COLOR = 646;..CHAR *BO
RDER = 53280;..BOOLEAN RESULT = FALSE;.
..... IF ( NEWWIN < 7 ).. ..... /
* INITIALIZE A NEW WINDOW */.... NEW
WIN++;.... /* CALCULATE NUMBER OF BY
TES IN THE WINDOW */.... WINDOW.BYTE
S = (1+DOWNROW-UPERROW)*(1+RIGHTCOL-LEF
TCOL);.... /* ALLOCATE STORAGE AREA
FOR HIDDEN SURFACE */.... STOREADR =
ALLOC(WINDOW.BYTES);.. WINDOW.STORE
PTR = STOREADR;.... /* STORE CORDINA
TES FOR WINDOW */.... WINDOW.ROW1 =
UPERROW;.. WINDOW.COL1 = LEFTCOL;..
WINDOW.ROW2 = DOWNROW;.. WINDOW.
COL2 = RIGHTCOL;.... /* STORE HIDDEN
SURFACE TO ALLOCATED BLOCK */.... S
OURCEADR = SCREEN+40*UPERROW+LEFTCOL;..
BYTINROW = 1+RIGHTCOL-LEFTCOL;....
FOR(LOOP1=UPERROW;LOOP1<=DOWNROW;LOO
P1++,SOURCEADR+=40,STOREADR+=BYTINROW)..
MOVE(STOREADR,BYTINROW,SOURCEAD
R,56);...... /* DRAW FRAME ROUND WIN
DOW */...... TARGETADR = SCREEN+40*U
PERROW+LEFTCOL;.... *TARGETADR = 112
;.... FOR (LOOP1=LEFTCOL+1,++TARGETA
DR;LOOP1<RIGHTCOL;LOOP1++,TARGETADR++)..
*TARGETADR = 67;.... *TARGE
TADR = 110;.... FOR (LOOP1=UPERROW+1
,TARGETADR+=40;LOOP1<DOWNROW;LOOP1++,TAR
GETADR+=40).. *TARGETADR = 66;..
.. *TARGETADR = 125;.... FOR (LO
OP1=RIGHTCOL-1,TARGETADR--;LOOP1>LEFTCOL
;LOOP1--,TARGETADR--).. *TARGETA
DR = 67;.... *TARGETADR = 109;....
FOR (LOOP1=DOWNROW-1,TARGETADR-=40;LO
OP1>UPERROW;LOOP1--,TARGETADR-=40)..
*TARGETADR = 66;...... /* CLEAR
WINDOW */...... CLEARWIN();....
RESULT = TRUE;.... ..... RETURN(RES
ULT);.............INT CLOSEWIN().......
.. INT LOOP1,LOOP2,BYTINROW,MEMO
RY;..UNSIGNED INT TARGETADR,SOURCEADR;..
.... IF ( NEWWIN > -1 ).. .....
/* RESTORE HIDDEN SURFACE UNDER WIN
DOW */.... TARGETADR = SCREEN+40*
WINDOW.ROW1+WINDOW.COL1;.. SOURCE
ADR = WINDOW.STOREPTR;.. BYTINROW
= 1+WINDOW.COL2-WINDOW.COL1;....FOR(..
LOOP1=WINDOW.ROW1;LOOP1<=WINDOW.ROW2;LOO
P1++,TARGETADR+=40,SOURCEADR+=BYTINROW).
. MOVE(TARGETADR,BYTINROW,SOURCEA
DR,56);.... /* RETURN LAST ALLOCATED
BLOCK */.... MEMORY = WINDOW.BYT
ES & 0X7FFF;.... FREE (MEMORY);..
.. /* SET POINTER TO PRESENT WINDOW
*/.... NEWWIN--;.... ........
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL