WINDOWS.C
FILE INFORMATION
FILENAME(S): WINDOWS.C
FILE TYPE(S): USR
FILE SIZE: 4.4K
FIRST SEEN: 2025-12-01 01:08:52
APPEARS ON: 1 disk(s)
FILE HASH
1b4369197984896e89d390f0862b013ca368f5a90a5c0345c7e3404d7fd9d5f6
FOUND ON DISKS (1 DISKS)
| DISK TITLE | FILENAME | FILE TYPE | COLLECTION | TRACK | SECTOR | ACTIONS |
|---|---|---|---|---|---|---|
| SUPER C V 2 0 | WINDOWS.C | USR | hedning, loot | 17 | 10 | DOWNLOAD FILE |
FILE CONTENT & ANALYSIS
00000000: 85 81 9F 2F 2A 20 D7 49 4E 44 4F 57 20 52 4F 55 |.../* .INDOW ROU| 00000010: 54 49 4E 53 20 46 4F 52 20 54 48 45 20 C3 36 34 |TINS FOR THE .64| 00000020: 20 2A 2F 0D 1C 0D 1C 0D 1F 23 44 45 46 49 4E 45 | */......#DEFINE| 00000030: 20 D7 C9 CE C4 CF D7 20 20 57 49 4E 44 4F 57 5B | ...... WINDOW[| 00000040: 4E 45 57 57 49 4E 5D 0D 1F 23 44 45 46 49 4E 45 |NEWWIN]..#DEFINE| 00000050: 20 D3 C3 D2 C5 C5 CE 20 20 30 58 45 30 30 30 0D | ...... 0XE000.| 00000060: 1F 23 44 45 46 49 4E 45 20 D5 D0 20 20 20 20 20 |.#DEFINE .. | 00000070: 20 30 0D 1F 23 44 45 46 49 4E 45 20 C4 CF D7 CE | 0..#DEFINE ....| 00000080: 20 20 20 20 31 0D 1C 0D 1C 0D 9F 2F 2A 20 D7 49 | 1....../* .I| 00000090: 4E 44 4F 57 20 53 54 52 55 43 54 55 52 45 20 2A |NDOW STRUCTURE *| 000000A0: 2F 0D 1C 0D 9C 53 54 41 54 49 43 20 53 54 52 55 |/....STATIC STRU| 000000B0: 43 54 20 57 49 4E 53 54 52 55 43 0D 9C 20 20 20 |CT WINSTRUC.. | 000000C0: 20 20 20 20 20 20 20 20 20 DB 0D 9C 0D 9C 20 20 | ..... | 000000D0: 20 20 20 20 20 20 20 20 20 20 20 20 49 4E 54 20 | INT | 000000E0: 20 52 4F 57 31 3B 20 20 20 20 20 20 2F 2A 20 55 | ROW1; /* U| 000000F0: 50 50 45 52 20 4C 45 46 54 20 43 4F 52 4E 45 52 |PPER LEFT CORNER| 00000100: 20 2A 2F 0D 9C 20 20 20 20 20 20 20 20 20 20 20 | */.. | 00000110: 20 20 20 49 4E 54 20 20 43 4F 4C 31 3B 0D 9C 20 | INT COL1;.. | 00000120: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 4E 54 | INT| 00000130: 20 20 52 4F 57 32 3B 20 20 20 20 20 20 2F 2A 20 | ROW2; /* | 00000140: 44 4F 57 4E 20 52 49 47 48 54 20 43 4F 52 4E 45 |DOWN RIGHT CORNE| 00000150: 52 20 2A 2F 0D 9C 20 20 20 20 20 20 20 20 20 20 |R */.. | 00000160: 20 20 20 20 49 4E 54 20 20 43 4F 4C 32 3B 0D 9C | INT COL2;..| 00000170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 4E | IN| 00000180: 54 20 20 42 59 54 45 53 3B 20 20 20 20 20 2F 2A |T BYTES; /*| 00000190: 20 4E 55 4D 42 45 52 20 4F 46 20 42 59 54 45 53 | NUMBER OF BYTES| 000001A0: 20 55 53 45 44 20 42 59 20 57 49 4E 44 4F 57 20 | USED BY WINDOW | 000001B0: 2A 2F 0D 9C 20 20 20 20 20 20 20 20 20 20 20 20 |*/.. | 000001C0: 20 20 43 48 41 52 20 2A 53 54 4F 52 45 50 54 52 | CHAR *STOREPTR| 000001D0: 3B 20 2F 2A 20 50 4F 49 4E 54 45 52 20 54 4F 20 |; /* POINTER TO | 000001E0: 53 54 4F 52 41 47 45 20 4F 46 20 48 49 44 44 45 |STORAGE OF HIDDE| 000001F0: 4E 20 20 53 55 52 46 41 43 45 20 2A 2F 0D 9C 0D |N SURFACE */...| 00000200: 9C 20 20 20 20 20 20 20 20 20 20 20 20 DD 20 57 |. . W| 00000210: 49 4E 44 4F 57 5B 38 5D 3B 0D 9C 0D 9C 0D 9C 53 |INDOW[8];......S| 00000220: 54 41 54 49 43 20 49 4E 54 20 20 4E 45 57 57 49 |TATIC INT NEWWI| 00000230: 4E 20 20 20 20 20 3D 20 2D 31 3B 0D 9C 53 54 41 |N = -1;..STA| 00000240: 54 49 43 20 43 48 41 52 20 43 4C 52 53 54 52 5B |TIC CHAR CLRSTR[| 00000250: 34 31 5D 20 3D 20 DB 22 20 20 20 20 20 20 20 20 |41] = ." | 00000260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000280: 22 DD 3B 0D 1C 0D 1C 0D 9F 2F 2A 20 46 55 4E 43 |".;....../* FUNC| 00000290: 54 49 4F 4E 20 44 45 43 4C 41 52 41 54 49 4F 4E |TION DECLARATION| 000002A0: 53 20 2A 2F 0D 1C 0D 1C 0D 96 56 4F 49 44 20 43 |S */......VOID C| 000002B0: 4C 45 41 52 57 49 4E 28 29 0D 1C 0D 1C DB 0D 1C |LEARWIN().......| 000002C0: 0D 1C 49 4E 54 20 20 4C 4F 4F 50 31 2C 52 4F 57 |..INT LOOP1,ROW| 000002D0: 41 44 44 52 2C 42 59 54 45 49 4E 52 4F 57 3B 0D |ADDR,BYTEINROW;.| 000002E0: 1C 0D 1C 0D 1C 20 20 20 20 20 52 4F 57 41 44 44 |..... ROWADD| 000002F0: 52 20 20 20 3D 20 D3 C3 D2 C5 C5 CE 2B D7 C9 CE |R = ......+...| 00000300: C4 CF D7 2E 52 4F 57 31 2A 34 30 2B 34 30 2B D7 |....ROW1*40+40+.| 00000310: C9 CE C4 CF D7 2E 43 4F 4C 31 2B 31 3B 0D 1C 20 |......COL1+1;.. | 00000320: 20 20 20 20 42 59 54 45 49 4E 52 4F 57 20 3D 20 | BYTEINROW = | 00000330: D7 C9 CE C4 CF D7 2E 43 4F 4C 32 2D D7 C9 CE C4 |.......COL2-....| 00000340: CF D7 2E 43 4F 4C 31 2D 31 3B 0D 1C 0D 1C 20 20 |...COL1-1;.... | 00000350: 20 20 20 46 4F 52 20 28 4C 4F 4F 50 31 3D D7 C9 | FOR (LOOP1=..| 00000360: CE C4 CF D7 2E 52 4F 57 31 2B 31 3B 4C 4F 4F 50 |.....ROW1+1;LOOP| 00000370: 31 3C D7 C9 CE C4 CF D7 2E 52 4F 57 32 3B 4C 4F |1<.......ROW2;LO| 00000380: 4F 50 31 2B 2B 2C 52 4F 57 41 44 44 52 2B 3D 34 |OP1++,ROWADDR+=4| 00000390: 30 29 0D 1C 20 20 20 20 20 20 20 20 20 4D 4F 56 |0).. MOV| 000003A0: 45 20 28 52 4F 57 41 44 44 52 2C 42 59 54 45 49 |E (ROWADDR,BYTEI| 000003B0: 4E 52 4F 57 2C 26 43 4C 52 53 54 52 5B 30 5D 29 |NROW,&CLRSTR[0])| 000003C0: 3B 0D 1C 0D 1C 0D 1C DD 0D 1C 0D 1C 0D 1C 0D 1C |;...............| 000003D0: 0D 96 42 4F 4F 4C 45 41 4E 20 4F 50 45 4E 57 49 |..BOOLEAN OPENWI| 000003E0: 4E 28 55 50 45 52 52 4F 57 2C 4C 45 46 54 43 4F |N(UPERROW,LEFTCO| 000003F0: 4C 2C 44 4F 57 4E 52 4F 57 2C 52 49 47 48 54 43 |L,DOWNROW,RIGHTC| 00000400: 4F 4C 29 0D 1C 0D 1C 49 4E 54 20 20 20 20 20 55 |OL)....INT U| 00000410: 50 45 52 52 4F 57 2C 4C 45 46 54 43 4F 4C 2C 44 |PERROW,LEFTCOL,D| 00000420: 4F 57 4E 52 4F 57 2C 52 49 47 48 54 43 4F 4C 3B |OWNROW,RIGHTCOL;| 00000430: 0D 1C 0D 1C DB 0D 1C 0D 1C 49 4E 54 20 20 20 20 |.........INT | 00000440: 20 49 2C 4C 4F 4F 50 31 2C 4C 4F 4F 50 32 2C 42 | I,LOOP1,LOOP2,B| 00000450: 59 54 49 4E 52 4F 57 3B 0D 1C 49 4E 54 20 20 20 |YTINROW;..INT | 00000460: 20 20 53 4F 55 52 43 45 41 44 52 2C 53 54 4F 52 | SOURCEADR,STOR| 00000470: 45 41 44 52 3B 0D 1C 43 48 41 52 20 20 20 20 2A |EADR;..CHAR *| 00000480: 54 41 52 47 45 54 41 44 52 2C 2A 43 4F 4C 4F 52 |TARGETADR,*COLOR| 00000490: 20 3D 20 36 34 36 3B 0D 1C 43 48 41 52 20 20 20 | = 646;..CHAR | 000004A0: 20 2A 42 4F 52 44 45 52 20 3D 20 35 33 32 38 30 | *BORDER = 53280| 000004B0: 3B 0D 1C 42 4F 4F 4C 45 41 4E 20 52 45 53 55 4C |;..BOOLEAN RESUL| 000004C0: 54 20 20 3D 20 C6 C1 CC D3 C5 3B 0D 1C 0D 1C 0D |T = .....;.....| 000004D0: 1C 20 20 49 46 20 28 20 4E 45 57 57 49 4E 20 3C |. IF ( NEWWIN <| 000004E0: 20 37 20 29 0D 1C 20 20 20 DB 0D 1C 0D 96 20 20 | 7 ).. ..... | 000004F0: 20 20 20 2F 2A 20 49 4E 49 54 49 41 4C 49 5A 45 | /* INITIALIZE| 00000500: 20 41 20 4E 45 57 20 57 49 4E 44 4F 57 20 2A 2F | A NEW WINDOW */| 00000510: 0D 1C 0D 1C 20 20 20 20 20 4E 45 57 57 49 4E 2B |.... NEWWIN+| 00000520: 2B 3B 0D 1C 0D 96 20 20 20 20 20 2F 2A 20 43 41 |+;.... /* CA| 00000530: 4C 43 55 4C 41 54 45 20 4E 55 4D 42 45 52 20 4F |LCULATE NUMBER O| 00000540: 46 20 42 59 54 45 53 20 49 4E 20 54 48 45 20 57 |F BYTES IN THE W| 00000550: 49 4E 44 4F 57 20 2A 2F 0D 1C 0D 1C 20 20 20 20 |INDOW */.... | 00000560: 20 D7 C9 CE C4 CF D7 2E 42 59 54 45 53 20 3D 20 | .......BYTES = | 00000570: 20 28 31 2B 44 4F 57 4E 52 4F 57 2D 55 50 45 52 | (1+DOWNROW-UPER| 00000580: 52 4F 57 29 2A 28 31 2B 52 49 47 48 54 43 4F 4C |ROW)*(1+RIGHTCOL| 00000590: 2D 4C 45 46 54 43 4F 4C 29 3B 0D 1C 0D 96 20 20 |-LEFTCOL);.... | 000005A0: 20 20 20 2F 2A 20 41 4C 4C 4F 43 41 54 45 20 53 | /* ALLOCATE S| 000005B0: 54 4F 52 41 47 45 20 41 52 45 41 20 46 4F 52 20 |TORAGE AREA FOR | 000005C0: 48 49 44 44 45 4E 20 53 55 52 46 41 43 45 20 2A |HIDDEN SURFACE *| 000005D0: 2F 0D 1C 0D 1C 20 20 20 20 20 49 46 20 28 28 53 |/.... IF ((S| 000005E0: 54 4F 52 45 41 44 52 20 3D 20 4D 41 4C 4C 4F 43 |TOREADR = MALLOC| 000005F0: 28 D7 C9 CE C4 CF D7 2E 42 59 54 45 53 29 29 20 |(.......BYTES)) | 00000600: 21 3D 20 30 29 0D 1C 20 20 20 20 20 20 DB 0D 1C |!= 0).. ...| 00000610: 20 20 20 20 20 20 20 20 D7 C9 CE C4 CF D7 2E 53 | .......S| 00000620: 54 4F 52 45 50 54 52 20 3D 20 53 54 4F 52 45 41 |TOREPTR = STOREA| 00000630: 44 52 3B 0D 1C 0D 96 20 20 20 20 20 2F 2A 20 53 |DR;.... /* S| 00000640: 54 4F 52 45 20 43 4F 52 44 49 4E 41 54 45 53 20 |TORE CORDINATES | 00000650: 46 4F 52 20 57 49 4E 44 4F 57 20 2A 2F 0D 1C 0D |FOR WINDOW */...| 00000660: 1C 20 20 20 20 20 20 20 20 D7 C9 CE C4 CF D7 2E |. .......| 00000670: 52 4F 57 31 20 3D 20 55 50 45 52 52 4F 57 3B 0D |ROW1 = UPERROW;.| 00000680: 1C 20 20 20 20 20 20 20 20 D7 C9 CE C4 CF D7 2E |. .......| 00000690: 43 4F 4C 31 20 3D 20 4C 45 46 54 43 4F 4C 3B 0D |COL1 = LEFTCOL;.| 000006A0: 1C 20 20 20 20 20 20 20 20 D7 C9 CE C4 CF D7 2E |. .......| 000006B0: 52 4F 57 32 20 3D 20 44 4F 57 4E 52 4F 57 3B 0D |ROW2 = DOWNROW;.| 000006C0: 1C 20 20 20 20 20 20 20 20 D7 C9 CE C4 CF D7 2E |. .......| 000006D0: 43 4F 4C 32 20 3D 20 52 49 47 48 54 43 4F 4C 3B |COL2 = RIGHTCOL;| 000006E0: 0D 1C 0D 96 20 20 20 20 20 2F 2A 20 53 54 4F 52 |.... /* STOR| 000006F0: 45 20 48 49 44 44 45 4E 20 53 55 52 46 41 43 45 |E HIDDEN SURFACE| 00000700: 20 54 4F 20 41 4C 4C 4F 43 41 54 45 44 20 42 4C | TO ALLOCATED BL| 00000710: 4F 43 4B 20 2A 2F 0D 1C 0D 1C 20 20 20 20 20 20 |OCK */.... | 00000720: 20 20 53 4F 55 52 43 45 41 44 52 20 3D 20 D3 C3 | SOURCEADR = ..| 00000730: D2 C5 C5 CE 2B 34 30 2A 55 50 45 52 52 4F 57 2B |....+40*UPERROW+| 00000740: 4C 45 46 54 43 4F 4C 3B 0D 1C 20 20 20 20 20 20 |LEFTCOL;.. | 00000750: 20 20 42 59 54 49 4E 52 4F 57 20 20 3D 20 31 2B | BYTINROW = 1+| 00000760: 52 49 47 48 54 43 4F 4C 2D 4C 45 46 54 43 4F 4C |RIGHTCOL-LEFTCOL| 00000770: 3B 0D 1C 0D 1C 20 20 20 20 20 20 46 4F 52 28 4C |;.... FOR(L| 00000780: 4F 4F 50 31 3D 55 50 45 52 52 4F 57 3B 4C 4F 4F |OOP1=UPERROW;LOO| 00000790: 50 31 3C 3D 44 4F 57 4E 52 4F 57 3B 4C 4F 4F 50 |P1<=DOWNROW;LOOP| 000007A0: 31 2B 2B 2C 53 4F 55 52 43 45 41 44 52 2B 3D 34 |1++,SOURCEADR+=4| 000007B0: 30 2C 53 54 4F 52 45 41 44 52 2B 3D 42 59 54 49 |0,STOREADR+=BYTI| 000007C0: 4E 52 4F 57 29 0D 1C 20 20 20 20 20 20 20 20 20 |NROW).. | 000007D0: 4D 4F 56 45 28 53 54 4F 52 45 41 44 52 2C 42 59 |MOVE(STOREADR,BY| 000007E0: 54 49 4E 52 4F 57 2C 53 4F 55 52 43 45 41 44 52 |TINROW,SOURCEADR| 000007F0: 2C 35 36 29 3B 0D 1C 0D 1C 0D 96 20 20 20 20 20 |,56);...... | 00000800: 2F 2A 20 44 52 41 57 20 46 52 41 4D 45 20 52 4F |/* DRAW FRAME RO| 00000810: 55 4E 44 20 57 49 4E 44 4F 57 20 2A 2F 0D 1C 0D |UND WINDOW */...| 00000820: 1C 0D 1C 20 20 20 20 20 20 20 20 54 41 52 47 45 |... TARGE| 00000830: 54 41 44 52 20 3D 20 D3 C3 D2 C5 C5 CE 2B 34 30 |TADR = ......+40| 00000840: 2A 55 50 45 52 52 4F 57 2B 4C 45 46 54 43 4F 4C |*UPERROW+LEFTCOL| 00000850: 3B 0D 1C 0D 1C 20 20 20 20 20 20 20 20 2A 54 41 |;.... *TA| 00000860: 52 47 45 54 41 44 52 20 3D 20 31 31 32 3B 0D 1C |RGETADR = 112;..| 00000870: 0D 1C 20 20 20 20 20 20 20 20 46 4F 52 20 28 4C |.. FOR (L| 00000880: 4F 4F 50 31 3D 4C 45 46 54 43 4F 4C 2B 31 2C 2B |OOP1=LEFTCOL+1,+| 00000890: 2B 54 41 52 47 45 54 41 44 52 3B 4C 4F 4F 50 31 |+TARGETADR;LOOP1| 000008A0: 3C 52 49 47 48 54 43 4F 4C 3B 4C 4F 4F 50 31 2B |<RIGHTCOL;LOOP1+| 000008B0: 2B 2C 54 41 52 47 45 54 41 44 52 2B 2B 29 0D 1C |+,TARGETADR++)..| 000008C0: 20 20 20 20 20 20 20 20 20 20 20 20 2A 54 41 52 | *TAR| 000008D0: 47 45 54 41 44 52 20 3D 20 36 37 3B 0D 1C 0D 1C |GETADR = 67;....| 000008E0: 20 20 20 20 20 20 20 20 2A 54 41 52 47 45 54 41 | *TARGETA| 000008F0: 44 52 20 3D 20 31 31 30 3B 0D 1C 0D 1C 20 20 20 |DR = 110;.... | 00000900: 20 20 20 20 20 46 4F 52 20 28 4C 4F 4F 50 31 3D | FOR (LOOP1=| 00000910: 55 50 45 52 52 4F 57 2B 31 2C 54 41 52 47 45 54 |UPERROW+1,TARGET| 00000920: 41 44 52 2B 3D 34 30 3B 4C 4F 4F 50 31 3C 44 4F |ADR+=40;LOOP1<DO| 00000930: 57 4E 52 4F 57 3B 4C 4F 4F 50 31 2B 2B 2C 54 41 |WNROW;LOOP1++,TA| 00000940: 52 47 45 54 41 44 52 2B 3D 34 30 29 0D 1C 20 20 |RGETADR+=40).. | 00000950: 20 20 20 20 20 20 20 20 20 20 2A 54 41 52 47 45 | *TARGE| 00000960: 54 41 44 52 20 3D 20 36 36 3B 0D 1C 0D 1C 20 20 |TADR = 66;.... | 00000970: 20 20 20 20 20 20 2A 54 41 52 47 45 54 41 44 52 | *TARGETADR| 00000980: 20 3D 20 31 32 35 3B 0D 1C 0D 1C 20 20 20 20 20 | = 125;.... | 00000990: 20 20 20 46 4F 52 20 28 4C 4F 4F 50 31 3D 52 49 | FOR (LOOP1=RI| 000009A0: 47 48 54 43 4F 4C 2D 31 2C 54 41 52 47 45 54 41 |GHTCOL-1,TARGETA| 000009B0: 44 52 2D 2D 3B 4C 4F 4F 50 31 3E 4C 45 46 54 43 |DR--;LOOP1>LEFTC| 000009C0: 4F 4C 3B 4C 4F 4F 50 31 2D 2D 2C 54 41 52 47 45 |OL;LOOP1--,TARGE| 000009D0: 54 41 44 52 2D 2D 29 0D 1C 20 20 20 20 20 20 20 |TADR--).. | 000009E0: 20 20 20 20 20 2A 54 41 52 47 45 54 41 44 52 20 | *TARGETADR | 000009F0: 3D 20 36 37 3B 0D 1C 0D 1C 20 20 20 20 20 20 20 |= 67;.... | 00000A00: 20 2A 54 41 52 47 45 54 41 44 52 20 3D 20 31 30 | *TARGETADR = 10| 00000A10: 39 3B 0D 1C 0D 1C 20 20 20 20 20 20 20 20 46 4F |9;.... FO| 00000A20: 52 20 28 4C 4F 4F 50 31 3D 44 4F 57 4E 52 4F 57 |R (LOOP1=DOWNROW| 00000A30: 2D 31 2C 54 41 52 47 45 54 41 44 52 2D 3D 34 30 |-1,TARGETADR-=40| 00000A40: 3B 4C 4F 4F 50 31 3E 55 50 45 52 52 4F 57 3B 4C |;LOOP1>UPERROW;L| 00000A50: 4F 4F 50 31 2D 2D 2C 54 41 52 47 45 54 41 44 52 |OOP1--,TARGETADR| 00000A60: 2D 3D 34 30 29 0D 1C 20 20 20 20 20 20 20 20 20 |-=40).. | 00000A70: 20 20 20 2A 54 41 52 47 45 54 41 44 52 20 3D 20 | *TARGETADR = | 00000A80: 36 36 3B 0D 1C 0D 1C 0D 96 20 20 20 20 20 2F 2A |66;...... /*| 00000A90: 20 43 4C 45 41 52 20 57 49 4E 44 4F 57 20 2A 2F | CLEAR WINDOW */| 00000AA0: 0D 1C 0D 1C 0D 1C 20 20 20 20 20 20 20 20 43 4C |...... CL| 00000AB0: 45 41 52 57 49 4E 28 29 3B 0D 1C 0D 1C 20 20 20 |EARWIN();.... | 00000AC0: 20 20 20 20 20 52 45 53 55 4C 54 20 3D 20 D4 D2 | RESULT = ..| 00000AD0: D5 C5 3B 0D 1C 20 20 20 20 20 20 DD 0D 1C 20 20 |..;.. ... | 00000AE0: 20 20 20 45 4C 53 45 0D 1C 20 20 20 20 20 20 20 | ELSE.. | 00000AF0: DB 0D 1C 20 20 20 20 20 20 20 20 4E 45 57 57 49 |... NEWWI| 00000B00: 4E 2D 2D 3B 0D 1C 20 20 20 20 20 20 20 DD 0D 1C |N--;.. ...| 00000B10: 0D 1C 20 20 20 DD 0D 1C 0D 1C 20 20 20 52 45 54 |.. ..... RET| 00000B20: 55 52 4E 28 52 45 53 55 4C 54 29 3B 0D 1C 0D 1C |URN(RESULT);....| 00000B30: DD 0D 1C 0D 1C 0D 1C 0D 96 56 4F 49 44 20 43 4C |.........VOID CL| 00000B40: 4F 53 45 57 49 4E 28 29 0D 1C 0D 1C DB 0D 1C 0D |OSEWIN()........| 00000B50: 1C 20 20 20 20 20 20 20 20 20 49 4E 54 20 4C 4F |. INT LO| 00000B60: 4F 50 31 2C 4C 4F 4F 50 32 2C 42 59 54 49 4E 52 |OP1,LOOP2,BYTINR| 00000B70: 4F 57 2C 4D 45 4D 4F 52 59 3B 0D 1C 55 4E 53 49 |OW,MEMORY;..UNSI| 00000B80: 47 4E 45 44 20 49 4E 54 20 54 41 52 47 45 54 41 |GNED INT TARGETA| 00000B90: 44 52 2C 53 4F 55 52 43 45 41 44 52 3B 0D 1C 0D |DR,SOURCEADR;...| 00000BA0: 1C 0D 1C 20 20 20 20 20 49 46 20 28 20 4E 45 57 |... IF ( NEW| 00000BB0: 57 49 4E 20 3E 20 2D 31 20 29 0D 1C 20 20 20 20 |WIN > -1 ).. | 00000BC0: 20 20 DB 0D 1C 0D 96 20 20 20 20 20 2F 2A 20 52 | ..... /* R| 00000BD0: 45 53 54 4F 52 45 20 48 49 44 44 45 4E 20 53 55 |ESTORE HIDDEN SU| 00000BE0: 52 46 41 43 45 20 55 4E 44 45 52 20 57 49 4E 44 |RFACE UNDER WIND| 00000BF0: 4F 57 20 2A 2F 0D 1C 0D 1C 20 20 20 20 20 20 20 |OW */.... | 00000C00: 20 54 41 52 47 45 54 41 44 52 20 3D 20 D3 C3 D2 | TARGETADR = ...| 00000C10: C5 C5 CE 2B 34 30 2A D7 C9 CE C4 CF D7 2E 52 4F |...+40*.......RO| 00000C20: 57 31 2B D7 C9 CE C4 CF D7 2E 43 4F 4C 31 3B 0D |W1+.......COL1;.| 00000C30: 1C 20 20 20 20 20 20 20 20 53 4F 55 52 43 45 41 |. SOURCEA| 00000C40: 44 52 20 3D 20 D7 C9 CE C4 CF D7 2E 53 54 4F 52 |DR = .......STOR| 00000C50: 45 50 54 52 3B 0D 1C 20 20 20 20 20 20 20 20 42 |EPTR;.. B| 00000C60: 59 54 49 4E 52 4F 57 20 20 3D 20 31 2B D7 C9 CE |YTINROW = 1+...| 00000C70: C4 CF D7 2E 43 4F 4C 32 2D D7 C9 CE C4 CF D7 2E |....COL2-.......| 00000C80: 43 4F 4C 31 3B 0D 1C 0D 1C 46 4F 52 28 0D 1C 4C |COL1;....FOR(..L| 00000C90: 4F 4F 50 31 3D D7 C9 CE C4 CF D7 2E 52 4F 57 31 |OOP1=.......ROW1| 00000CA0: 3B 4C 4F 4F 50 31 3C 3D D7 C9 CE C4 CF D7 2E 52 |;LOOP1<=.......R| 00000CB0: 4F 57 32 3B 4C 4F 4F 50 31 2B 2B 2C 54 41 52 47 |OW2;LOOP1++,TARG| 00000CC0: 45 54 41 44 52 2B 3D 34 30 2C 53 4F 55 52 43 45 |ETADR+=40,SOURCE| 00000CD0: 41 44 52 2B 3D 42 59 54 49 4E 52 4F 57 29 0D 1C |ADR+=BYTINROW)..| 00000CE0: 20 20 20 20 20 20 20 20 4D 4F 56 45 28 54 41 52 | MOVE(TAR| 00000CF0: 47 45 54 41 44 52 2C 42 59 54 49 4E 52 4F 57 2C |GETADR,BYTINROW,| 00000D00: 53 4F 55 52 43 45 41 44 52 2C 35 36 29 3B 0D 1C |SOURCEADR,56);..| 00000D10: 0D 96 20 20 20 20 20 2F 2A 20 52 45 54 55 52 4E |.. /* RETURN| 00000D20: 20 4C 41 53 54 20 41 4C 4C 4F 43 41 54 45 44 20 | LAST ALLOCATED | 00000D30: 42 4C 4F 43 4B 20 2A 2F 0D 1C 0D 1C 20 20 20 20 |BLOCK */.... | 00000D40: 20 20 20 20 4D 46 52 45 45 20 28 D7 C9 CE C4 CF | MFREE (.....| 00000D50: D7 2E 42 59 54 45 53 29 3B 0D 1C 0D 96 20 20 20 |..BYTES);.... | 00000D60: 20 20 2F 2A 20 53 45 54 20 50 4F 49 4E 54 45 52 | /* SET POINTER| 00000D70: 20 54 4F 20 50 52 45 53 45 4E 54 20 57 49 4E 44 | TO PRESENT WIND| 00000D80: 4F 57 20 2A 2F 0D 1C 0D 1C 20 20 20 20 20 20 20 |OW */.... | 00000D90: 20 4E 45 57 57 49 4E 2D 2D 3B 0D 1C 0D 1C 20 20 | NEWWIN--;.... | 00000DA0: 20 20 20 DD 0D 1C 0D 1C DD 0D 1C 0D 1C 0D 1C 0D | .............| 00000DB0: 96 42 4F 4F 4C 45 41 4E 20 53 43 52 4F 4C 4C 57 |.BOOLEAN SCROLLW| 00000DC0: 49 4E 28 55 50 4F 52 44 4F 57 4E 29 0D 1C 0D 1C |IN(UPORDOWN)....| 00000DD0: 49 4E 54 20 55 50 4F 52 44 4F 57 4E 3B 0D 1C 0D |INT UPORDOWN;...| 00000DE0: 1C DB 0D 1C 0D 1C 42 4F 4F 4C 45 41 4E 20 52 45 |......BOOLEAN RE| 00000DF0: 53 55 4C 54 20 3D 20 C6 C1 CC D3 C5 3B 0D 1C 0D |SULT = .....;...| 00000E00: 1C 43 48 41 52 20 2A 54 41 52 47 45 54 41 44 44 |.CHAR *TARGETADD| 00000E10: 52 2C 2A 53 4F 55 52 43 45 41 44 44 52 3B 0D 1C |R,*SOURCEADDR;..| 00000E20: 49 4E 54 20 20 4C 4F 4F 50 2C 42 59 54 45 49 4E |INT LOOP,BYTEIN| 00000E30: 52 4F 57 3B 0D 1C 0D 1C 0D 1C 49 46 20 28 4E 45 |ROW;......IF (NE| 00000E40: 57 57 49 4E 3E 2D 31 29 0D 1C 20 DB 0D 1C 20 20 |WWIN>-1).. ... | 00000E50: 20 52 45 53 55 4C 54 3D D4 D2 D5 C5 3B 0D 1C 0D | RESULT=....;...| 00000E60: 1C 20 20 20 42 59 54 45 49 4E 52 4F 57 3D D7 C9 |. BYTEINROW=..| 00000E70: CE C4 CF D7 2E 43 4F 4C 32 2D D7 C9 CE C4 CF D7 |.....COL2-......| 00000E80: 2E 43 4F 4C 31 2D 31 3B 0D 1C 0D 1C 20 20 20 49 |.COL1-1;.... I| 00000E90: 46 20 28 55 50 4F 52 44 4F 57 4E 3D 3D D5 D0 29 |F (UPORDOWN==..)| 00000EA0: 0D 1C 20 20 20 20 DB 0D 1C 20 20 20 20 20 20 54 |.. ... T| 00000EB0: 41 52 47 45 54 41 44 44 52 3D D3 C3 D2 C5 C5 CE |ARGETADDR=......| 00000EC0: 2B D7 C9 CE C4 CF D7 2E 52 4F 57 31 2A 34 30 2B |+.......ROW1*40+| 00000ED0: 34 31 2B D7 C9 CE C4 CF D7 2E 43 4F 4C 31 3B 0D |41+.......COL1;.| 00000EE0: 1C 20 20 20 20 20 20 53 4F 55 52 43 45 41 44 44 |. SOURCEADD| 00000EF0: 52 3D 54 41 52 47 45 54 41 44 44 52 2B 34 30 3B |R=TARGETADDR+40;| 00000F00: 0D 1C 0D 1C 46 4F 52 20 28 4C 4F 4F 50 3D D7 C9 |....FOR (LOOP=..| 00000F10: CE C4 CF D7 2E 52 4F 57 31 2B 31 3B 4C 4F 4F 50 |.....ROW1+1;LOOP| 00000F20: 3C D7 C9 CE C4 CF D7 2E 52 4F 57 32 2D 31 3B 4C |<.......ROW2-1;L| 00000F30: 4F 4F 50 2B 2B 2C 54 41 52 47 45 54 41 44 44 52 |OOP++,TARGETADDR| 00000F40: 2B 3D 34 30 2C 53 4F 55 52 43 45 41 44 44 52 2B |+=40,SOURCEADDR+| 00000F50: 3D 34 30 29 0D 1C 20 20 DB 0D 1C 20 20 20 20 4D |=40).. ... M| 00000F60: 4F 56 45 28 54 41 52 47 45 54 41 44 44 52 2C 42 |OVE(TARGETADDR,B| 00000F70: 59 54 45 49 4E 52 4F 57 2C 53 4F 55 52 43 45 41 |YTEINROW,SOURCEA| 00000F80: 44 44 52 2C 35 33 29 3B 0D 1C 20 20 DD 0D 1C 0D |DDR,53);.. ....| 00000F90: 1C 20 20 20 20 20 20 4D 4F 56 45 28 54 41 52 47 |. MOVE(TARG| 00000FA0: 45 54 41 44 44 52 2C 42 59 54 45 49 4E 52 4F 57 |ETADDR,BYTEINROW| 00000FB0: 2C 26 43 4C 52 53 54 52 5B 30 5D 2C 35 33 29 3B |,&CLRSTR[0],53);| 00000FC0: 0D 1C 20 20 20 20 DD 0D 1C 20 20 20 45 4C 53 45 |.. ... ELSE| 00000FD0: 20 49 46 20 28 55 50 4F 52 44 4F 57 4E 3D 3D C4 | IF (UPORDOWN==.| 00000FE0: CF D7 CE 29 0D 1C 20 20 20 20 20 20 20 20 20 DB |...).. .| 00000FF0: 0D 1C 20 20 20 20 20 20 20 20 20 20 20 54 41 52 |.. TAR| 00001000: 47 45 54 41 44 44 52 3D D3 C3 D2 C5 C5 CE 2B D7 |GETADDR=......+.| 00001010: C9 CE C4 CF D7 2E 52 4F 57 32 2A 34 30 2D 33 39 |......ROW2*40-39| 00001020: 2B D7 C9 CE C4 CF D7 2E 43 4F 4C 31 3B 0D 1C 20 |+.......COL1;.. | 00001030: 20 20 20 20 20 20 20 20 20 20 53 4F 55 52 43 45 | SOURCE| 00001040: 41 44 44 52 3D 54 41 52 47 45 54 41 44 44 52 2D |ADDR=TARGETADDR-| 00001050: 34 30 3B 0D 1C 0D 1C 46 4F 52 20 28 4C 4F 4F 50 |40;....FOR (LOOP| 00001060: 3D D7 C9 CE C4 CF D7 2E 52 4F 57 32 2D 31 3B 4C |=.......ROW2-1;L| 00001070: 4F 4F 50 3E D7 C9 CE C4 CF D7 2E 52 4F 57 31 2B |OOP>.......ROW1+| 00001080: 31 3B 4C 4F 4F 50 2D 2D 2C 54 41 52 47 45 54 41 |1;LOOP--,TARGETA| 00001090: 44 44 52 2D 3D 34 30 2C 53 4F 55 52 43 45 41 44 |DDR-=40,SOURCEAD| 000010A0: 44 52 2D 3D 34 30 29 0D 1C 20 20 DB 0D 1C 20 20 |DR-=40).. ... | 000010B0: 20 20 4D 4F 56 45 28 54 41 52 47 45 54 41 44 44 | MOVE(TARGETADD| 000010C0: 52 2C 42 59 54 45 49 4E 52 4F 57 2C 53 4F 55 52 |R,BYTEINROW,SOUR| 000010D0: 43 45 41 44 44 52 2C 35 33 29 3B 0D 1C 20 20 DD |CEADDR,53);.. .| 000010E0: 0D 1C 0D 1C 20 20 20 20 20 20 20 20 20 20 20 4D |.... M| 000010F0: 4F 56 45 28 54 41 52 47 45 54 41 44 44 52 2C 42 |OVE(TARGETADDR,B| 00001100: 59 54 45 49 4E 52 4F 57 2C 26 43 4C 52 53 54 52 |YTEINROW,&CLRSTR| 00001110: 5B 30 5D 2C 35 33 29 3B 0D 1C 20 20 20 20 20 20 |[0],53);.. | 00001120: 20 20 20 DD 0D 1C 20 20 20 45 4C 53 45 0D 1C 20 | ... ELSE.. | 00001130: 20 20 20 DB 0D 1C 20 20 20 20 20 20 52 45 53 55 | ... RESU| 00001140: 4C 54 20 3D 20 C6 C1 CC D3 C5 3B 0D 1C 20 20 20 |LT = .....;.. | 00001150: 20 DD 0D 1C 20 DD 0D 1C 0D 1C 52 45 54 55 52 4E | ... .....RETURN| 00001160: 28 52 45 53 55 4C 54 29 3B 0D 1C 0D 1C DD 0D 1C |(RESULT);.......| 00001170: 0D 1C 0D 1C 0D 00 |...... |
.../* WINDOW ROUTINS FOR THE C64 */.....
.#DEFINE WINDOW WINDOW[NEWWIN]..#DEFINE
SCREEN 0XE000..#DEFINE UP 0..#DEF
INE DOWN 1....../* WINDOW STRUCTURE *
/....STATIC STRUCT WINSTRUC..
..... INT ROW1; /* U
PPER LEFT CORNER */.. INT
COL1;.. INT ROW2; /*
DOWN RIGHT CORNER */.. INT
COL2;.. INT BYTES; /*
NUMBER OF BYTES USED BY WINDOW */..
CHAR *STOREPTR; /* POINTER TO
STORAGE OF HIDDEN SURFACE */....
. WINDOW[8];......STATIC INT NEWWI
N = -1;..STATIC CHAR CLRSTR[41] = ."
".;....../* FUNCTION DECLARATIONS */....
..VOID CLEARWIN().........INT LOOP1,ROW
ADDR,BYTEINROW;...... ROWADDR = SC
REEN+WINDOW.ROW1*40+40+WINDOW.COL1+1;..
BYTEINROW = WINDOW.COL2-WINDOW.COL1-
1;.... FOR (LOOP1=WINDOW.ROW1+1;LOOP
1<WINDOW.ROW2;LOOP1++,ROWADDR+=40)..
MOVE (ROWADDR,BYTEINROW,&CLRSTR[0])
;.................BOOLEAN OPENWIN(UPERRO
W,LEFTCOL,DOWNROW,RIGHTCOL)....INT U
PERROW,LEFTCOL,DOWNROW,RIGHTCOL;........
.INT I,LOOP1,LOOP2,BYTINROW;..INT
SOURCEADR,STOREADR;..CHAR *TARGETAD
R,*COLOR = 646;..CHAR *BORDER = 53280
;..BOOLEAN RESULT = FALSE;...... IF (
NEWWIN < 7 ).. ..... /* INITIALIZE
A NEW WINDOW */.... NEWWIN++;....
/* CALCULATE NUMBER OF BYTES IN THE W
INDOW */.... WINDOW.BYTES = (1+DOWN
ROW-UPERROW)*(1+RIGHTCOL-LEFTCOL);....
/* ALLOCATE STORAGE AREA FOR HIDDEN S
URFACE */.... IF ((STOREADR = MALLOC
(WINDOW.BYTES)) != 0).. ...
WINDOW.STOREPTR = STOREADR;.... /* S
TORE CORDINATES FOR WINDOW */....
WINDOW.ROW1 = UPERROW;.. WINDOW.
COL1 = LEFTCOL;.. WINDOW.ROW2 = D
OWNROW;.. WINDOW.COL2 = RIGHTCOL;
.... /* STORE HIDDEN SURFACE TO ALLO
CATED BLOCK */.... SOURCEADR = SC
REEN+40*UPERROW+LEFTCOL;.. BYTINR
OW = 1+RIGHTCOL-LEFTCOL;.... FOR(L
OOP1=UPERROW;LOOP1<=DOWNROW;LOOP1++,SOUR
CEADR+=40,STOREADR+=BYTINROW)..
MOVE(STOREADR,BYTINROW,SOURCEADR,56);...
... /* DRAW FRAME ROUND WINDOW */...
... TARGETADR = SCREEN+40*UPERROW
+LEFTCOL;.... *TARGETADR = 112;..
.. FOR (LOOP1=LEFTCOL+1,++TARGETA
DR;LOOP1<RIGHTCOL;LOOP1++,TARGETADR++)..
*TARGETADR = 67;....
*TARGETADR = 110;.... FOR (LOOP1=
UPERROW+1,TARGETADR+=40;LOOP1<DOWNROW;LO
OP1++,TARGETADR+=40).. *TARGE
TADR = 66;.... *TARGETADR = 125;.
... FOR (LOOP1=RIGHTCOL-1,TARGETA
DR--;LOOP1>LEFTCOL;LOOP1--,TARGETADR--).
. *TARGETADR = 67;....
*TARGETADR = 109;.... FOR (LOOP1
=DOWNROW-1,TARGETADR-=40;LOOP1>UPERROW;L
OOP1--,TARGETADR-=40).. *TARG
ETADR = 66;...... /* CLEAR WINDOW */
...... CLEARWIN();.... RES
ULT = TRUE;.. ... ELSE..
... NEWWIN--;.. ..... ...
.. RETURN(RESULT);.............VOID CL
OSEWIN()......... INT LOOP1,LOOP
2,BYTINROW,MEMORY;..UNSIGNED INT TARGETA
DR,SOURCEADR;...... IF ( NEWWIN > -1
).. ..... /* RESTORE HIDDEN SU
RFACE UNDER WINDOW */.... TARGETA
DR = SCREEN+40*WINDOW.ROW1+WINDOW.COL1;.
. SOURCEADR = WINDOW.STOREPTR;..
BYTINROW = 1+WINDOW.COL2-WINDOW.
COL1;....FOR(..LOOP1=WINDOW.ROW1;LOOP1<=
WINDOW.ROW2;LOOP1++,TARGETADR+=40,SOURCE
ADR+=BYTINROW).. MOVE(TARGETADR,B
YTINROW,SOURCEADR,56);.... /* RETURN
LAST ALLOCATED BLOCK */.... MFRE
E (WINDOW.BYTES);.... /* SET POINTER
TO PRESENT WINDOW */.... NEWWIN-
-;.... ..............BOOLEAN SCROLLW
IN(UPORDOWN)....INT UPORDOWN;.........BO
OLEAN RESULT = FALSE;....CHAR *TARGETADD
R,*SOURCEADDR;..INT LOOP,BYTEINROW;....
..IF (NEWWIN>-1).. ... RESULT=TRUE;...
. BYTEINROW=WINDOW.COL2-WINDOW.COL1-1;
.... IF (UPORDOWN==UP).. ... T
ARGETADDR=SCREEN+WINDOW.ROW1*40+41+WINDO
W.COL1;.. SOURCEADDR=TARGETADDR+40;
....FOR (LOOP=WINDOW.ROW1+1;LOOP<WINDOW.
ROW2-1;LOOP++,TARGETADDR+=40,SOURCEADDR+
=40).. ... MOVE(TARGETADDR,BYTEINROW
,SOURCEADDR,53);.. ..... MOVE(TARG
ETADDR,BYTEINROW,&CLRSTR[0],53);.. ..
. ELSE IF (UPORDOWN==DOWN).. .
.. TARGETADDR=SCREEN+WINDOW.RO
W2*40-39+WINDOW.COL1;.. SOURCE
ADDR=TARGETADDR-40;....FOR (LOOP=WINDOW.
ROW2-1;LOOP>WINDOW.ROW1+1;LOOP--,TARGETA
DDR-=40,SOURCEADDR-=40).. ... MOVE(T
ARGETADDR,BYTEINROW,SOURCEADDR,53);.. .
.... MOVE(TARGETADDR,BYTEINROW
,&CLRSTR[0],53);.. ... ELSE..
... RESULT = FALSE;.. ... ...
..RETURN(RESULT);.............
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL