_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

WINDOWS2.C

FILE INFORMATION

FILENAME(S): WINDOWS2.C

FILE TYPE(S): USR

FILE SIZE: 4.4K

FIRST SEEN: 2025-12-01 01:08:52

APPEARS ON: 1 disk(s)

FILE HASH

c25dae75222962cdcbbcfd47077ec5a96dc720c59a049b4268a60b00a2bab1b2

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
SUPER C V 2 0 WINDOWS2.C USR hedning, loot 13 0 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 30 34 3B 0D 1C  |RGETADR = 104;..|
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 39 39 3B 0D 1C 0D 1C  |GETADR = 99;....|
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 30 35  3B 0D 1C 0D 1C 20 20 20  |DR = 105;....   |
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 31  30 33 3B 0D 1C 0D 1C 20  |TADR = 103;.... |
00000970: 20 20 20 20 20 20 20 2A  54 41 52 47 45 54 41 44  |       *TARGETAD|
00000980: 52 20 3D 20 39 35 3B 0D  1C 0D 1C 20 20 20 20 20  |R = 95;....     |
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 31 30 30 3B 0D 1C  0D 1C 20 20 20 20 20 20  |= 100;....      |
00000A00: 20 20 2A 54 41 52 47 45  54 41 44 52 20 3D 20 39  |  *TARGETADR = 9|
00000A10: 34 3B 0D 1C 0D 1C 20 20  20 20 20 20 20 20 46 4F  |4;....        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: 31 30 31 3B 0D 1C 0D 1C  0D 96 20 20 20 20 20 2F  |101;......     /|
00000A90: 2A 20 43 4C 45 41 52 20  57 49 4E 44 4F 57 20 2A  |* CLEAR WINDOW *|
00000AA0: 2F 0D 1C 0D 1C 0D 1C 20  20 20 20 20 20 20 20 43  |/......        C|
00000AB0: 4C 45 41 52 57 49 4E 28  29 3B 0D 1C 0D 1C 20 20  |LEARWIN();....  |
00000AC0: 20 20 20 20 20 20 52 45  53 55 4C 54 20 3D 20 D4  |      RESULT = .|
00000AD0: D2 D5 C5 3B 0D 1C 20 20  20 20 20 20 DD 0D 1C 20  |...;..      ... |
00000AE0: 20 20 20 20 45 4C 53 45  0D 1C 20 20 20 20 20 20  |    ELSE..      |
00000AF0: 20 DB 0D 1C 20 20 20 20  20 20 20 20 4E 45 57 57  | ...        NEWW|
00000B00: 49 4E 2D 2D 3B 0D 1C 20  20 20 20 20 20 20 DD 0D  |IN--;..       ..|
00000B10: 1C 0D 1C 20 20 20 DD 0D  1C 0D 1C 20 20 20 52 45  |...   .....   RE|
00000B20: 54 55 52 4E 28 52 45 53  55 4C 54 29 3B 0D 1C 0D  |TURN(RESULT);...|
00000B30: 1C DD 0D 1C 0D 1C 0D 1C  0D 96 56 4F 49 44 20 43  |..........VOID C|
00000B40: 4C 4F 53 45 57 49 4E 28  29 0D 1C 0D 1C DB 0D 1C  |LOSEWIN().......|
00000B50: 0D 1C 20 20 20 20 20 20  20 20 20 49 4E 54 20 4C  |..         INT L|
00000B60: 4F 4F 50 31 2C 4C 4F 4F  50 32 2C 42 59 54 49 4E  |OOP1,LOOP2,BYTIN|
00000B70: 52 4F 57 2C 4D 45 4D 4F  52 59 3B 0D 1C 55 4E 53  |ROW,MEMORY;..UNS|
00000B80: 49 47 4E 45 44 20 49 4E  54 20 54 41 52 47 45 54  |IGNED INT TARGET|
00000B90: 41 44 52 2C 53 4F 55 52  43 45 41 44 52 3B 0D 1C  |ADR,SOURCEADR;..|
00000BA0: 0D 1C 0D 1C 20 20 20 20  20 49 46 20 28 20 4E 45  |....     IF ( NE|
00000BB0: 57 57 49 4E 20 3E 20 2D  31 20 29 0D 1C 20 20 20  |WWIN > -1 )..   |
00000BC0: 20 20 20 DB 0D 1C 0D 96  20 20 20 20 20 2F 2A 20  |   .....     /* |
00000BD0: 52 45 53 54 4F 52 45 20  48 49 44 44 45 4E 20 53  |RESTORE HIDDEN S|
00000BE0: 55 52 46 41 43 45 20 55  4E 44 45 52 20 57 49 4E  |URFACE UNDER WIN|
00000BF0: 44 4F 57 20 2A 2F 0D 1C  0D 1C 20 20 20 20 20 20  |DOW */....      |
00000C00: 20 20 54 41 52 47 45 54  41 44 52 20 3D 20 D3 C3  |  TARGETADR = ..|
00000C10: D2 C5 C5 CE 2B 34 30 2A  D7 C9 CE C4 CF D7 2E 52  |....+40*.......R|
00000C20: 4F 57 31 2B D7 C9 CE C4  CF D7 2E 43 4F 4C 31 3B  |OW1+.......COL1;|
00000C30: 0D 1C 20 20 20 20 20 20  20 20 53 4F 55 52 43 45  |..        SOURCE|
00000C40: 41 44 52 20 3D 20 D7 C9  CE C4 CF D7 2E 53 54 4F  |ADR = .......STO|
00000C50: 52 45 50 54 52 3B 0D 1C  20 20 20 20 20 20 20 20  |REPTR;..        |
00000C60: 42 59 54 49 4E 52 4F 57  20 20 3D 20 31 2B D7 C9  |BYTINROW  = 1+..|
00000C70: CE C4 CF D7 2E 43 4F 4C  32 2D D7 C9 CE C4 CF D7  |.....COL2-......|
00000C80: 2E 43 4F 4C 31 3B 0D 1C  0D 1C 46 4F 52 28 0D 1C  |.COL1;....FOR(..|
00000C90: 4C 4F 4F 50 31 3D D7 C9  CE C4 CF D7 2E 52 4F 57  |LOOP1=.......ROW|
00000CA0: 31 3B 4C 4F 4F 50 31 3C  3D D7 C9 CE C4 CF D7 2E  |1;LOOP1<=.......|
00000CB0: 52 4F 57 32 3B 4C 4F 4F  50 31 2B 2B 2C 54 41 52  |ROW2;LOOP1++,TAR|
00000CC0: 47 45 54 41 44 52 2B 3D  34 30 2C 53 4F 55 52 43  |GETADR+=40,SOURC|
00000CD0: 45 41 44 52 2B 3D 42 59  54 49 4E 52 4F 57 29 0D  |EADR+=BYTINROW).|
00000CE0: 1C 20 20 20 20 20 20 20  20 4D 4F 56 45 28 54 41  |.        MOVE(TA|
00000CF0: 52 47 45 54 41 44 52 2C  42 59 54 49 4E 52 4F 57  |RGETADR,BYTINROW|
00000D00: 2C 53 4F 55 52 43 45 41  44 52 2C 35 36 29 3B 0D  |,SOURCEADR,56);.|
00000D10: 1C 0D 96 20 20 20 20 20  2F 2A 20 52 45 54 55 52  |...     /* RETUR|
00000D20: 4E 20 4C 41 53 54 20 41  4C 4C 4F 43 41 54 45 44  |N LAST ALLOCATED|
00000D30: 20 42 4C 4F 43 4B 20 2A  2F 0D 1C 0D 1C 20 20 20  | BLOCK */....   |
00000D40: 20 20 20 20 20 4D 45 4D  4F 52 59 20 3D 20 4D 46  |     MEMORY = MF|
00000D50: 52 45 45 20 28 D7 C9 CE  C4 CF D7 2E 42 59 54 45  |REE (.......BYTE|
00000D60: 53 29 3B 0D 1C 0D 96 20  20 20 20 20 2F 2A 20 53  |S);....     /* S|
00000D70: 45 54 20 50 4F 49 4E 54  45 52 20 54 4F 20 50 52  |ET POINTER TO PR|
00000D80: 45 53 45 4E 54 20 57 49  4E 44 4F 57 20 2A 2F 0D  |ESENT WINDOW */.|
00000D90: 1C 0D 1C 20 20 20 20 20  20 20 20 4E 45 57 57 49  |...        NEWWI|
00000DA0: 4E 2D 2D 3B 0D 1C 0D 1C  20 20 20 20 20 DD 0D 1C  |N--;....     ...|
00000DB0: 0D 1C DD 0D 1C 0D 1C 0D  1C 0D 96 42 4F 4F 4C 45  |...........BOOLE|
00000DC0: 41 4E 20 53 43 52 4F 4C  4C 57 49 4E 28 55 50 4F  |AN SCROLLWIN(UPO|
00000DD0: 52 44 4F 57 4E 29 0D 1C  0D 1C 49 4E 54 20 55 50  |RDOWN)....INT UP|
00000DE0: 4F 52 44 4F 57 4E 3B 0D  1C 0D 1C DB 0D 1C 0D 1C  |ORDOWN;.........|
00000DF0: 42 4F 4F 4C 45 41 4E 20  52 45 53 55 4C 54 20 3D  |BOOLEAN RESULT =|
00000E00: 20 C6 C1 CC D3 C5 3B 0D  1C 0D 1C 43 48 41 52 20  | .....;....CHAR |
00000E10: 2A 54 41 52 47 45 54 41  44 44 52 2C 2A 53 4F 55  |*TARGETADDR,*SOU|
00000E20: 52 43 45 41 44 44 52 3B  0D 1C 49 4E 54 20 20 4C  |RCEADDR;..INT  L|
00000E30: 4F 4F 50 2C 42 59 54 45  49 4E 52 4F 57 3B 0D 1C  |OOP,BYTEINROW;..|
00000E40: 0D 1C 0D 1C 49 46 20 28  4E 45 57 57 49 4E 3E 2D  |....IF (NEWWIN>-|
00000E50: 31 29 0D 1C 20 DB 0D 1C  20 20 20 52 45 53 55 4C  |1).. ...   RESUL|
00000E60: 54 3D D4 D2 D5 C5 3B 0D  1C 0D 1C 20 20 20 42 59  |T=....;....   BY|
00000E70: 54 45 49 4E 52 4F 57 3D  D7 C9 CE C4 CF D7 2E 43  |TEINROW=.......C|
00000E80: 4F 4C 32 2D D7 C9 CE C4  CF D7 2E 43 4F 4C 31 2D  |OL2-.......COL1-|
00000E90: 31 3B 0D 1C 0D 1C 20 20  20 49 46 20 28 55 50 4F  |1;....   IF (UPO|
00000EA0: 52 44 4F 57 4E 3D 3D D5  D0 29 0D 1C 20 20 20 20  |RDOWN==..)..    |
00000EB0: DB 0D 1C 20 20 20 20 20  20 54 41 52 47 45 54 41  |...      TARGETA|
00000EC0: 44 44 52 3D D3 C3 D2 C5  C5 CE 2B D7 C9 CE C4 CF  |DDR=......+.....|
00000ED0: D7 2E 52 4F 57 31 2A 34  30 2B 34 31 2B D7 C9 CE  |..ROW1*40+41+...|
00000EE0: C4 CF D7 2E 43 4F 4C 31  3B 0D 1C 20 20 20 20 20  |....COL1;..     |
00000EF0: 20 53 4F 55 52 43 45 41  44 44 52 3D 54 41 52 47  | SOURCEADDR=TARG|
00000F00: 45 54 41 44 44 52 2B 34  30 3B 0D 1C 0D 1C 46 4F  |ETADDR+40;....FO|
00000F10: 52 20 28 4C 4F 4F 50 3D  D7 C9 CE C4 CF D7 2E 52  |R (LOOP=.......R|
00000F20: 4F 57 31 2B 31 3B 4C 4F  4F 50 3C D7 C9 CE C4 CF  |OW1+1;LOOP<.....|
00000F30: D7 2E 52 4F 57 32 2D 31  3B 4C 4F 4F 50 2B 2B 2C  |..ROW2-1;LOOP++,|
00000F40: 54 41 52 47 45 54 41 44  44 52 2B 3D 34 30 2C 53  |TARGETADDR+=40,S|
00000F50: 4F 55 52 43 45 41 44 44  52 2B 3D 34 30 29 0D 1C  |OURCEADDR+=40)..|
00000F60: 20 20 DB 0D 1C 20 20 20  20 4D 4F 56 45 28 54 41  |  ...    MOVE(TA|
00000F70: 52 47 45 54 41 44 44 52  2C 42 59 54 45 49 4E 52  |RGETADDR,BYTEINR|
00000F80: 4F 57 2C 53 4F 55 52 43  45 41 44 44 52 2C 35 33  |OW,SOURCEADDR,53|
00000F90: 29 3B 0D 1C 20 20 DD 0D  1C 0D 1C 20 20 20 20 20  |);..  .....     |
00000FA0: 20 4D 4F 56 45 28 54 41  52 47 45 54 41 44 44 52  | MOVE(TARGETADDR|
00000FB0: 2C 42 59 54 45 49 4E 52  4F 57 2C 26 43 4C 52 53  |,BYTEINROW,&CLRS|
00000FC0: 54 52 5B 30 5D 2C 35 33  29 3B 0D 1C 20 20 20 20  |TR[0],53);..    |
00000FD0: DD 0D 1C 20 20 20 45 4C  53 45 20 49 46 20 28 55  |...   ELSE IF (U|
00000FE0: 50 4F 52 44 4F 57 4E 3D  3D C4 CF D7 CE 29 0D 1C  |PORDOWN==....)..|
00000FF0: 20 20 20 20 20 20 20 20  20 DB 0D 1C 20 20 20 20  |         ...    |
00001000: 20 20 20 20 20 20 20 54  41 52 47 45 54 41 44 44  |       TARGETADD|
00001010: 52 3D D3 C3 D2 C5 C5 CE  2B D7 C9 CE C4 CF D7 2E  |R=......+.......|
00001020: 52 4F 57 32 2A 34 30 2D  33 39 2B D7 C9 CE C4 CF  |ROW2*40-39+.....|
00001030: D7 2E 43 4F 4C 31 3B 0D  1C 20 20 20 20 20 20 20  |..COL1;..       |
00001040: 20 20 20 20 53 4F 55 52  43 45 41 44 44 52 3D 54  |    SOURCEADDR=T|
00001050: 41 52 47 45 54 41 44 44  52 2D 34 30 3B 0D 1C 0D  |ARGETADDR-40;...|
00001060: 1C 46 4F 52 20 28 4C 4F  4F 50 3D D7 C9 CE C4 CF  |.FOR (LOOP=.....|
00001070: D7 2E 52 4F 57 32 2D 31  3B 4C 4F 4F 50 3E D7 C9  |..ROW2-1;LOOP>..|
00001080: CE C4 CF D7 2E 52 4F 57  31 2B 31 3B 4C 4F 4F 50  |.....ROW1+1;LOOP|
00001090: 2D 2D 2C 54 41 52 47 45  54 41 44 44 52 2D 3D 34  |--,TARGETADDR-=4|
000010A0: 30 2C 53 4F 55 52 43 45  41 44 44 52 2D 3D 34 30  |0,SOURCEADDR-=40|
000010B0: 29 0D 1C 20 20 DB 0D 1C  20 20 20 20 4D 4F 56 45  |)..  ...    MOVE|
000010C0: 28 54 41 52 47 45 54 41  44 44 52 2C 42 59 54 45  |(TARGETADDR,BYTE|
000010D0: 49 4E 52 4F 57 2C 53 4F  55 52 43 45 41 44 44 52  |INROW,SOURCEADDR|
000010E0: 2C 35 33 29 3B 0D 1C 20  20 DD 0D 1C 0D 1C 20 20  |,53);..  .....  |
000010F0: 20 20 20 20 20 20 20 20  20 4D 4F 56 45 28 54 41  |         MOVE(TA|
00001100: 52 47 45 54 41 44 44 52  2C 42 59 54 45 49 4E 52  |RGETADDR,BYTEINR|
00001110: 4F 57 2C 26 43 4C 52 53  54 52 5B 30 5D 2C 35 33  |OW,&CLRSTR[0],53|
00001120: 29 3B 0D 1C 20 20 20 20  20 20 20 20 20 DD 0D 1C  |);..         ...|
00001130: 20 20 20 45 4C 53 45 0D  1C 20 20 20 20 DB 0D 1C  |   ELSE..    ...|
00001140: 20 20 20 20 20 20 52 45  53 55 4C 54 20 3D 20 C6  |      RESULT = .|
00001150: C1 CC D3 C5 3B 0D 1C 20  20 20 20 DD 0D 1C 20 DD  |....;..    ... .|
00001160: 0D 1C 0D 1C 52 45 54 55  52 4E 28 52 45 53 55 4C  |....RETURN(RESUL|
00001170: 54 29 3B 0D 1C 0D 1C DD  0D 1C 0D 1C 0D 1C 0D 00  |T);.............|
.../* 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 = 104;..
..        FOR (LOOP1=LEFTCOL+1,++TARGETA
DR;LOOP1<RIGHTCOL;LOOP1++,TARGETADR++)..
            *TARGETADR = 99;....        
*TARGETADR = 105;....        FOR (LOOP1=
UPERROW+1,TARGETADR+=40;LOOP1<DOWNROW;LO
OP1++,TARGETADR+=40)..            *TARGE
TADR = 103;....        *TARGETADR = 95;.
...        FOR (LOOP1=RIGHTCOL-1,TARGETA
DR--;LOOP1>LEFTCOL;LOOP1--,TARGETADR--).
.            *TARGETADR = 100;....      
  *TARGETADR = 94;....        FOR (LOOP1
=DOWNROW-1,TARGETADR-=40;LOOP1>UPERROW;L
OOP1--,TARGETADR-=40)..            *TARG
ETADR = 101;......     /* CLEAR WINDOW *
/......        CLEARWIN();....        RE
SULT = TRUE;..      ...     ELSE..      
 ...        NEWWIN--;..       .....   ..
...   RETURN(RESULT);.............VOID C
LOSEWIN().........         INT LOOP1,LOO
P2,BYTINROW,MEMORY;..UNSIGNED INT TARGET
ADR,SOURCEADR;......     IF ( NEWWIN > -
1 )..      .....     /* RESTORE HIDDEN S
URFACE UNDER WINDOW */....        TARGET
ADR = 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,SOURC
EADR+=BYTINROW)..        MOVE(TARGETADR,
BYTINROW,SOURCEADR,56);....     /* RETUR
N LAST ALLOCATED BLOCK */....        MEM
ORY = MFREE (WINDOW.BYTES);....     /* S
ET POINTER TO PRESENT WINDOW */....     
   NEWWIN--;....     ..............BOOLE
AN SCROLLWIN(UPORDOWN)....INT UPORDOWN;.
........BOOLEAN RESULT = FALSE;....CHAR 
*TARGETADDR,*SOURCEADDR;..INT  LOOP,BYTE
INROW;......IF (NEWWIN>-1).. ...   RESUL
T=TRUE;....   BYTEINROW=WINDOW.COL2-WIND
OW.COL1-1;....   IF (UPORDOWN==UP)..    
...      TARGETADDR=SCREEN+WINDOW.ROW1*4
0+41+WINDOW.COL1;..      SOURCEADDR=TARG
ETADDR+40;....FOR (LOOP=WINDOW.ROW1+1;LO
OP<WINDOW.ROW2-1;LOOP++,TARGETADDR+=40,S
OURCEADDR+=40)..  ...    MOVE(TARGETADDR
,BYTEINROW,SOURCEADDR,53);..  .....     
 MOVE(TARGETADDR,BYTEINROW,&CLRSTR[0],53
);..    ...   ELSE IF (UPORDOWN==DOWN)..
         ...           TARGETADDR=SCREEN
+WINDOW.ROW2*40-39+WINDOW.COL1;..       
    SOURCEADDR=TARGETADDR-40;....FOR (LO
OP=WINDOW.ROW2-1;LOOP>WINDOW.ROW1+1;LOOP
--,TARGETADDR-=40,SOURCEADDR-=40)..  ...
    MOVE(TARGETADDR,BYTEINROW,SOURCEADDR
,53);..  .....           MOVE(TARGETADDR
,BYTEINROW,&CLRSTR[0],53);..         ...
   ELSE..    ...      RESULT = FALSE;.. 
   ... .....RETURN(RESULT);.............
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL