mss@dartvax.UUCP (Mark Sherman) (09/02/85)
This is an ordinary text file that contains an example listing from McAsm. See net.micro.mac for more details. -------------------------------------------------------- McASM V1.0 Filename: LIST.ASM Page no. 1 File lister application Mon, Jul 15, 1985 1:56:19 PM 1: ;**************************************************************** 2: 3: ; Copyright (c) 1985 by Dave McWherter 4: 5: ; This a simple print application that just reads a text file 6: ; and sends it as ASCII codes to the serial printer driver. 7: 8: ;It also shows off some of the features of the new McAsm assembler 9: ;and McLink linker. (That means that this file can't be assembled 10: ;by MDS or MACASM, but at least the structure of the program and 11: ;the code itself is a useful example.) McAsm is available from me 12: ;directly at the following address: 13: 14: ; Author: Dave McWherter - 70057,1612 15: ; 2151 Brown Ave. 16: ; Bensalem, PA 19020 17: ; 215-639-8764 18: 19: ;**************************************************************** 20: 21: ; File = LIST.ASM 22: 23:00000000 title "File lister application $" timestamp in title 24:00000000 name LIST our module ID 25:00000000 prtr "/E/$45" set Imagewriter for ELITE 26: 27: ;**************************************************************** 28: ;Configure our application file: 29: 30:00000000 ftype 'APPL' file type 31:00000000 fsign 'List' file signature 32:00000000 a5off $100 start a5 offset data $100 below a5 33: 34: ;**************************************************************** 35: ;Assembly setup stuff: 36: 37:00000000 mexp 0 don't expand macros 38:00000000 texp 0 don't expand text statements 39: 40: ;**************************************************************** 41: ;Include traps definitions (with listing turned off): 42: 93:00000000 list 1 94: 95: ;**************************************************************** 96: ; Structure of File Manager parameter block: 97: 98:00000000 dsec 0 99:00000000 ioLink ds.l 1 queue link in header 100:00000004 ioType ds.w 1 type for safety check 101:00000006 ioTrap ds.w 1 the trap 102:00000008 ioCmdAddr ds.l 1 address to dispatch to 103: 104:0000000C ioCompletion ds.l 1 completion routine 105:00000010 ioResult ds.w 1 I/O result code 106:00000012 ioFileName ds.l 1 file name pointer 107:00000016 ioVRefNum equ * volume refnum 108:00000016 ioDrvNum ds.w 1 drive number 109:00000018 ioRefNum ds.w 1 file reference number 110: 111:0000001A csCode equ * control/status code [word] 112:0000001A ioFileType ds.b 1 specified along with FileName 113:0000001B ioPermssn ds.b 1 permissions 114: 115:0000001C csParam equ * operation-defined parameters [20 bytes] 116:0000001C ioOwnBuf ds.l 1 "private" 522-byte buffer 117: 118:00000020 ioBuffer ds.l 1 data buffer 119:00000024 ioByteCount ds.l 1 requested byte count 120:00000028 ioNumDone ds.l 1 actual byte count completed 121: 122:0000002C ioPosMode ds.w 1 initial file positioning mode/eol char 123:0000002E ioPosOffset ds.l 1 file position offset 124:00000032 dend 125: 126:00000050 ioFQElSize equ $50 length of I/O parameter block 127: 128: ;These are all used as indexes off of A0, so if we 'BASE' them we 129: ;don't have to type the '(a0)'. In other words, 'clr.w ioDrvNum' 130: ;will be equivalent to 'clr.w ioDrvNum(a0)'. 131: 132:00000000 base a0,ioLink,ioType,ioTrap,ioCmdAddr 133:00000000 base a0,ioCompletion,ioResult,ioFileName 134:00000000 base a0,ioVRefNum,ioDrvNum,ioRefNum,csCode 135:00000000 base a0,ioFileType,ioPermssn,csParam,ioOwnBuf 136:00000000 base a0,ioBuffer,ioByteCount,ioNumDone 137:00000000 base a0,ioPosMode,ioPosOffset 138: 139: ;**************************************************************** 140: ;This is our variable storage area off of A5: 141: 142:00000000 a5sec start of a5 offset data 143:00000000 DiskParms equ * disk I/O parameter block: 144:00000000 ds.b IOFQElSize 145: 146:00000050 PrtOutParms equ * printer I/O parameter block: 147:00000050 ds.b IOFQElSize 148: 149:000000A0 ByteBuffer ds.b 1 a one-byte buffer 150:000000A1 ds.b 1 align to even boundary for next: 151: 152:000000A2 EventRecord equ * GetNextEvent's result: 153:000000A2 EventType ds.w 1 154:000000A4 EventMessage ds.l 1 155:000000A8 EventTime ds.l 1 156:000000AC EventLocation ds.l 1 157:000000B0 EventModifiers ds.w 1 158: 159:000000B2 WindowPtr ds.l 1 FindWindow's result 160: 161:000000B6 MenuHandle ds.l 1 162:000000BA MenuItem ds.w 1 163: 164:000000BC SFReply equ * reply record from Std File package: 165:000000BC SFGood ds.b 1 166:000000BD SFCopy ds.b 1 167:000000BE SFType ds.b 4 168:000000C2 SFVRefNum ds.w 1 169:000000C4 SFVersion ds.w 1 170:000000C6 SFName ds.b 64 171: 172:00000106 ItemHit ds.w 1 Dialog item hit result 173: 174:00000108 DialogPtr ds.l 1 Dialog's pointer 175:0000010C DStorage ds.w $AA Dialog's storage area 176:00000260 ItemHandle ds.l 1 a dialog item's handle 177:00000264 ItemType ds.w 1 a dialog item's type 178:00000266 ItemBox ds.b 8 a dialog item's rectangle 179: 180:0000026E DeskName ds.w 16 name of desk accessory selected 181: 182:0000028E NewStyle ds.w 1 the newly selected style no. 183:00000290 NewOption ds.w 1 the newly selected option no. 184:00000292 Column ds.w 1 current column no. 185:00000294 PageLines ds.w 1 no. of lines printed on a page 186: 187:00000296 a5end 188: 189: ;All of these are indexed by A5. Since we defined them in an 190: ;'A5SEC', the assembler will automatically add the '(a5)' to 191: ;these variables everytime we use them. In other words, 192: ;'lea Diskparms,a0' will be equivalent to 'lea DiskParms(a5),a0'. 193: 194: ;**************************************************************** 195: ; Start up by initializing the managers: 196: 197:00000000 loc 198:00000000 486DFFFC Start pea -4(a5) space For Quickdraw's use 199:00000004 A86E _InitGraf initialize QuickDraw 200:00000006 A8FE _InitFonts initialize Font Manager 201:00000008 A912 _InitWindows initialize Window Manager 202:0000000A A930 _InitMenus initialize Menu Manager 203: 204:0000000C 42A7 clr.l -(sp) put zero on stack for restart procecdure 205:0000000E A97B _InitDialogs initialize Dialog Manager 206:00000010 A9CC _TEInit initialize Text Edit 207: 208: ;Set up our menus: 209: 210:00000012 7201 moveq #1,d1 install our Apple menu 211:00000014 61000412 bsr InstallMenu 212:00000018 2F01 move.l d1,-(sp) new menu handle to stack 213:0000001A 2F3C4452 move.l #'DRVR',-(sp) add desk accessories to the Apple menu 0000001E 5652 214:00000020 A94D _AddResMenu 215: 216:00000022 7202 moveq #2,d1 install our File menu 217:00000024 61000402 bsr InstallMenu 218: 219:00000028 7203 moveq #3,d1 install our Style menu 220:0000002A 610003FC bsr InstallMenu 221: 222:0000002E 7204 moveq #4,d1 install our Options menu 223:00000030 610003F6 bsr InstallMenu 224: 225:00000034 A937 _DrawMenuBar draw the new menu bar 226: 227: ;Other misc. initialization: 228: 229:00000036 203C0000 move.l #$0000FFFF,d0 flush all pending events 0000003A FFFF 230:0000003C A032 _FlushEvents 231:0000003E A850 _InitCursor init cursor to arrow 232: 233: ;Clear out our I/O device control blocks: 234: 235:00000040 41ED0000 lea DiskParms,a0 236:00000044 303C009F move.w #IOFQElSize*2-1,d0 237:00000048 4218 .clr clr.b (a0)+ 238:0000004A 51C8FFFC dbra d0,.clr 239: 240: ;**************************************************************** 241: ; Main event loop: 242: 243:0000004E WaitForEvent 244:0000004E A9B4 _SystemTask update disk accessories often 245: 246: ;Get any waiting events: 247: 248:00000050 4267 clr.w -(sp) clear space for function result 249:00000052 3F3CFFFF move.w #$FFFF,-(sp) look for any event 250:00000056 486D0000 pea EventRecord where to put event result 251:0000005A A970 _GetNextEvent any waiting events ? 252:0000005C 301F move.w (sp)+,d0 253:0000005E 67EE beq WaitForEvent nope - keep looping 254: 255:00000060 302D0000 move.w EventType,d0 is it mouse down ? 256:00000064 B07C0001 cmp.w #1,d0 257:00000068 66E4 bne WaitForEvent no - ignore whatever 258:0000006A 6006 bra.s MouseDown yes - go handle it 259: 260: ;**************************************************************** 261: ; Common exit routine from menu selections: 262: 263:0000006C SelectionExit 264:0000006C 610003D6 bsr UnhighlightMenu unhighlight selected menu title 265:00000070 60DC bra WaitForEvent 266: 267: ;**************************************************************** 268: ; Find out where the mouse is down at: 269: 270:00000072 MouseDown 271:00000072 4267 clr.w -(sp) make space for integer result 272:00000074 2F2D0000 move.l EventLocation,-(sp) ;pass mouse point 273:00000078 486D0000 pea WindowPtr where to store result window ptr 274:0000007C A92C _FindWindow find window where mouse was 275:0000007E 301F move.w (sp)+,d0 get result off stack 276: 277:00000080 0C000002 cmpi.b #2,d0 in a system window ? 278:00000084 6700029E beq SystemWindow yes 279:00000088 0C000001 cmpi.b #1,d0 in the menu bar ? 280:0000008C 66C0 bne WaitForEvent no - ignore it 281: 282: ;**************************************************************** 283: ; Mouse was pressed in the Menu Bar: 284: 285:0000008E MenuBar 286:0000008E 42A7 clr.l -(sp) make space for function result 287:00000090 2F2D0000 move.l EventLocation,-(sp) ;pass mouse loc as parameter 288:00000094 A93D _MenuSelect menu item selected ? 289:00000096 321F move.w (sp)+,d1 maybe - pop menu ID 290:00000098 341F move.w (sp)+,d2 and menu item number 291:0000009A 3B420000 move.w d2,MenuItem save menu item no. 292: 293:0000009E 0C410001 cmpi.w #1,d1 branch based on which menu 294:000000A2 671A beq.s AppleMenu 295:000000A4 0C410002 cmpi.w #2,d1 296:000000A8 6700005C beq FileMenu 297:000000AC 0C410003 cmpi.w #3,d1 298:000000B0 67000154 beq StyleMenu 299:000000B4 0C410004 cmpi.w #4,d1 300:000000B8 670001BC beq OptionMenu 301:000000BC 6090 bra WaitForEvent ignore if not a menu we know 302: 303: ;**************************************************************** 304: ; Handle a selection in Apple menu: 305: 306:000000BE AppleMenu 307:000000BE 0C420001 cmpi.w #1,d2 is it About ? 308:000000C2 6700001E beq About yes 309: 310: ;Else it must be a desk accessory menu item: 311: 312:000000C6 7201 moveq #1,d1 get handle to Menu 1 313:000000C8 6100036C bsr GetMenuHandle 314: ; menu handle is on stack 315:000000CC 3F2D0000 move.w MenuItem,-(sp) also pass menu's item no. 316:000000D0 486D0000 pea DeskName where to put result text 317:000000D4 A946 _GetItem get desk accessory name (menu text) 318: 319:000000D6 4267 clr.w -(sp) make space for function result 320:000000D8 486D0000 pea DeskName pass desk acc. name as param 321:000000DC A9B6 _OpenDeskAcc open the desk acc. 322:000000DE 301F move.w (sp)+,d0 clear result from stack 323:000000E0 608A bra SelectionExit 324: 325: ;**************************************************************** 326: ; User has selected our 'About...' menu item: 327: 328:000000E2 About 329:000000E2 42A7 clr.l -(sp) make space for dialog handle result 330:000000E4 3F3C0001 move.w #1,-(sp) get dialog no. 1 from resc file 331:000000E8 486D0000 pea Dstorage 332:000000EC 2F3CFFFF move.l #-1,-(sp) put it in front of all other windows 000000F0 FFFF 333:000000F2 A97C _GetNewDialog 334: ; rtns dialog ptr on stack 335:000000F4 2F17 move.l (sp),-(sp) we'll need the ptr again later 336:000000F6 A873 _SetPort make the dialog the current port 337: 338:000000F8 42A7 clr.l -(sp) no filter procedure 339:000000FA 486D0000 pea ItemHit where to store result 340:000000FE A991 _ModalDialog handle events in the dialog box 341: 342: ; (dialog ptr is on stack) 343:00000100 A982 _CloseDialog whatever the hit was, close it 344:00000102 6000FF68 bra SelectionExit 345: 346: ;**************************************************************** 347: ; Handle a selection in our File menu: 348: 349:00000106 FileMenu 350:00000106 0C420001 cmpi.w #1,d2 is it Listing ? 351:0000010A 6700000E beq Listing yes 352:0000010E 0C420002 cmpi.w #2,d2 is it Quit ? 353:00000112 670000EC beq Quit yes 354:00000116 6000FF36 bra WaitForEvent should never happen 355: 356: ;**************************************************************** 357: ; User has selected 'Listing': 358: 359:0000011A loc 360:0000011A Listing 361: 362: ;Use the standard dialog box to get the filename: 363: 364:0000011A 3F3C0050 move.w #80,-(sp) where to put dialog box 365:0000011E 3F3C0050 move.w #80,-(sp) 366:00000122 487A00CE pea NulStr docs say not needed, but I can't 367: ; get it to work without a string! 368:00000126 42A7 clr.l -(sp) no filter proc 369:00000128 3F3CFFFF move.w #-1,-(sp) display all file types 370:0000012C 42A7 clr.l -(sp) no type table 371:0000012E 42A7 clr.l -(sp) no dialog hook 372:00000130 486D0000 pea SFReply where to put reply result 373:00000134 3F3C0002 move.w #2,-(sp) selector for SFGetFile 374:00000138 A9EA _Pack3 in package 3 375: 376:0000013A 102D0000 move.b SFGood,d0 did they cancel it ? 377:0000013E 670000AE beq .Exit yes 378: 379: ;Open the file: 380: 381:00000142 41ED0000 lea DiskParms,a0 setup ptr to I/O parameter block 382:00000146 43ED0000 lea SFName,a1 setup ptr to the name 383:0000014A 21490012 move.l a1,ioFileName 384:0000014E 316D0000 move.w SFVRefNum,ioVRefNum setup vol refnum 00000152 0016 385:00000154 117C0001 move.b #1,ioPermssn read only permission 00000158 001B 386:0000015A A000 _Open open the file 387:0000015C 4A40 tst.w d0 successful open ? 388:0000015E 6600008E bne .Exit no 389: 390: ;Open the serial output driver: 391: 392:00000162 41ED0000 lea PrtOutParms,a0 393:00000166 303A0408 move.w PortNum,d0 which port ? 394:0000016A 0C400002 cmpi.w #2,d0 395:0000016E 6706 beq.s .PortB B 396: 397:00000170 43FA0082 .PortA lea AOutStr,a1 398:00000174 6004 bra.s .Open 399: 400:00000176 43FA0082 .PortB lea BOutStr,a1 401: 402:0000017A 21490012 .Open move.l a1,ioFileName 403:0000017E A000 _Open 404:00000180 4A40 tst.w d0 successful open ? 405:00000182 6664 bne.s .Close no 406: 407:00000184 610001AC bsr DisplayAbortBox display the abort/pause dialog 408:00000188 6100027E bsr StyleToPrinter send style escape codes to printer 409:0000018C 426D0000 clr.w Column init column no. 410: 411:00000190 426D0000 NewPage clr.w PageLines init page line counter 412: 413:00000194 A9B4 .Loop _SystemTask update desk accessories often 414:00000196 610001C0 bsr CheckAbort check for abort or pause 415:0000019A 6532 bcs.s .Done2 is abort - quit 416: 417:0000019C 610002BC bsr ReadByte read bytes 418:000001A0 651E bcs.s .Done until eof or error 419:000001A2 610002E2 bsr PrintChar 420: 421:000001A6 303A03CE move.w Paging,d0 pagination on ? 422:000001AA 67E8 beq .Loop no 423:000001AC 302D0000 move.w PageLines,d0 end of page yet ? 424:000001B0 0C40003C cmpi.w #60,d0 425:000001B4 63DE bls .Loop no 426: 427:000001B6 123C000C move.b #$0C,d1 yes - skip to next page 428:000001BA 610002CA bsr PrintChar 429:000001BE 60D0 bra NewPage 430: 431:000001C0 303A03B4 .Done move.w Paging,d0 pagination on ? 432:000001C4 6708 beq.s .Done2 no 433:000001C6 123C000C move.b #$0C,d1 yes - send formfeed to printer 434:000001CA 610002BA bsr PrintChar 435: 436:000001CE 303A039C .Done2 move.w ImageWriter,d0 is it an ImageWriter ? 437:000001D2 6714 beq.s .Close no 438:000001D4 123C001B move.b #$1B,d1 yes - reset it 439:000001D8 610002AC bsr PrintChar 440:000001DC 123C0063 move.b #$63,d1 441:000001E0 610002A4 bsr PrintChar 442:000001E4 610001C6 bsr CloseAbortBox close the abort/pause dialog 443: 444:000001E8 41ED0000 .Close lea DiskParms,a0 close the file 445:000001EC A001 _Close 446: ; 447: ;*** --> the Driver Manual says you shouldn't Close the serial driver 448: ;*** --> and it's correct - the system hangs if you do! 449: 450:000001EE 6000FE7C .Exit bra SelectionExit 451: 452: 453:000001F2 0120 NulStr text #" " 454:000001F4 052E414F AOutStr text #".AOut" 455:000001FA 052E424F BOutStr text #".BOut" 456:00000200 align 457: 458: ;**************************************************************** 459: ; User wants to quit: 460: 461:00000200 61000242 Quit bsr UnhighlightMenu unhighlight the File title 462:00000204 4E75 rts return to the Finder 463: 464: ;**************************************************************** 465: ; Handle a selection in our Style menu: 466: 467:00000206 StyleMenu 468:00000206 3B420000 move.w d2,NewStyle save newly selected style 469:0000020A 7203 moveq #3,d1 get handle for the style menu 470:0000020C 61000228 bsr GetMenuHandle 471: ; leaves handle on stack 472:00000210 322D0000 move.w NewStyle,d1 is it ImageWriter item ? 473:00000214 B27C0001 cmp.w #1,d1 474:00000218 6720 beq.s IWItem yes - special 475: 476:0000021A 2F17 move.l (sp),-(sp) copy of handle for later 477:0000021C 3F3A0350 move.w StyleNum,-(sp) remove check from previous style 478:00000220 4267 clr.w -(sp) FALSE for no check 479:00000222 A945 _CheckItem 480: ; handle is on stack 481:00000224 3F2D0000 move.w NewStyle,-(sp) put check mark on new selection 482:00000228 3F3CFFFF move.w #$FFFF,-(sp) TRUE for a check 483:0000022C A945 _CheckItem 484: 485:0000022E 41FA033E lea StyleNum,a0 update current style no. 486:00000232 30AD0000 move.w NewStyle,(a0) 487:00000236 6000FE34 bra SelectionExit 488: 489: ;Handle ImageWriter selection: 490: 491:0000023A 41FA0330 IWItem lea ImageWriter,a0 get current ImageWriter state 492:0000023E 3210 move.w (a0),d1 493:00000240 4641 not.w d1 invert it 494:00000242 3081 move.w d1,(a0) save new state 495:00000244 3F3C0001 move.w #1,-(sp) the item no. of ImageWriter 496:00000248 3F01 move.w d1,-(sp) check/uncheck it 497:0000024A A945 _CheckItem 498: 499: ;Enable/Disable style items: 500: 501:0000024C 7203 moveq #3,d1 get the menu handle 502:0000024E 610001E6 bsr GetMenuHandle 503:00000252 2B5F0000 move.l (sp)+,MenuHandle save it 504:00000256 7603 moveq #3,d3 init to first style item 505: 506:00000258 2F2D0000 IWLoop move.l MenuHandle,-(sp) pass the handle 507:0000025C 3F03 move.w d3,-(sp) and the item no. 508:0000025E 303A030C move.w ImageWriter,d0 enabling or disabling ? 509:00000262 6604 bne.s IW2 enabling 510: 511:00000264 A93A _DisableItem else disabling 512:00000266 6002 bra.s IW4 513: 514:00000268 A939 IW2 _EnableItem 515: 516:0000026A 5243 IW4 addq.w #1,d3 to next style item 517:0000026C 0C43000B cmpi.w #11,d3 until all styles done 518:00000270 6DE6 blt IWLoop 519: 520:00000272 6000FDF8 bra SelectionExit 521: 522: ;**************************************************************** 523: ; Handle a selection in our Options menu: 524: 525:00000276 OptionMenu 526:00000276 3B420000 move.w d2,NewOption save new option selection no. 527:0000027A 0C420003 cmpi.w #3,d2 is it a port option ? 528:0000027E 6C26 bge.s OptionLF no 529: 530:00000280 OptionPort 531:00000280 7204 moveq #4,d1 get handle for option menu 532:00000282 610001B2 bsr GetMenuHandle 533: ; handle is on stack 534:00000286 2F17 move.l (sp),-(sp) another copy of handle for later 535:00000288 3F3A02E6 move.w PortNum,-(sp) uncheck the old port selection 536:0000028C 4267 clr.w -(sp) 537:0000028E A945 _CheckItem 538: ; handle still on stack 539:00000290 3F2D0000 move.w NewOption,-(sp) check the new port selection 540:00000294 3F3CFFFF move.w #$FFFF,-(sp) 541:00000298 A945 _CheckItem 542: 543:0000029A 41FA02D4 lea PortNum,a0 save new port no. 544:0000029E 30AD0000 move.w NewOption,(a0) 545:000002A2 6000FDC8 bra SelectionExit and done 546: 547:000002A6 OptionLF 548:000002A6 0C420006 cmpi.w #6,d2 is it a LF option ? 549:000002AA 6C000046 bge OptionPage no 550:000002AE 7204 moveq #4,d1 get handle for option menu 551:000002B0 61000184 bsr GetMenuHandle returns it on the stack 552:000002B4 302D0000 move.w NewOption,d0 the menu's item no. 553:000002B8 3F00 move.w d0,-(sp) 554:000002BA 41FA02AE lea AddLF-8,a0 get current state of this option 555:000002BE E348 lsl.w #1,d0 556:000002C0 36300000 move.w (a0,d0.w),d3 557:000002C4 4643 not.w d3 invert it 558:000002C6 31830000 move.w d3,(a0,d0.w) update new state 559:000002CA 3F03 move.w d3,-(sp) flag to check/uncheck 560:000002CC A945 _CheckItem 561: ; 562:000002CE 7204 moveq #4,d1 get handle on stack again 563:000002D0 61000164 bsr GetMenuHandle 564:000002D4 322D0000 move.w NewOption,d1 setup opposite option in d2 565:000002D8 7405 moveq #5,d2 assume we're on 4 566:000002DA 0C410004 cmpi.w #4,d1 correct assumption ? 567:000002DE 6702 beq.s LF2 yes 568:000002E0 7404 moveq #4,d2 no - on 5, opposite is 4 569: 570:000002E2 3F02 LF2 move.w d2,-(sp) opposite item no. to enable/disable 571:000002E4 4A43 tst.w d3 checking or unchecking ? 572:000002E6 6604 bne.s LF4 checking 573: 574:000002E8 A939 _EnableItem unchecking, enable opposite option 575:000002EA 6002 bra.s LF6 576: 577:000002EC A93A LF4 _DisableItem checking, disable opposite option 578: 579:000002EE 6000FD7C LF6 bra SelectionExit 580: 581:000002F2 OptionPage 582:000002F2 0C420007 cmpi.w #7,d2 is it pagination option ? 583:000002F6 661C bne.s OptionTab no 584:000002F8 7204 moveq #4,d1 get the menu handle on stack 585:000002FA 6100013A bsr GetMenuHandle 586:000002FE 3F3C0007 move.w #7,-(sp) the menu item no. 587:00000302 41FA0272 lea Paging,a0 get current pagination state 588:00000306 OptionPage2 589:00000306 3010 move.w (a0),d0 590:00000308 4640 not.w d0 invert it 591:0000030A 3080 move.w d0,(a0) save new state 592:0000030C 3F00 move.w d0,-(sp) check/uncheck the item 593:0000030E A945 _CheckItem 594:00000310 6000FD5A bra SelectionExit 595: 596:00000314 OptionTab 597:00000314 7204 moveq #4,d1 get the menu handle on stack 598:00000316 6100011E bsr GetMenuHandle 599:0000031A 3F3C0009 move.w #9,-(sp) the menu item no. 600:0000031E 41FA0258 lea Tabbing,a0 get current tabbing state 601:00000322 60E2 bra OptionPage2 then same as pagination 602: 603: ;**************************************************************** 604: ; The mouse was pressed in a system window: 605: 606:00000324 SystemWindow 607:00000324 486D0000 pea EventRecord just pass the event to the system 608:00000328 2F2D0000 move.l WindowPtr,-(sp) 609:0000032C A9B3 _SystemClick 610:0000032E 6000FD1E bra WaitForEvent 611: 612: ;**************************************************************** 613: ; Display our abort dialog box: 614: 615:00000332 DisplayAbortBox 616:00000332 42A7 clr.l -(sp) make space for dialog handle result 617:00000334 3F3C0002 move.w #2,-(sp) get the dialog from resc file 618:00000338 486D0000 pea Dstorage 619:0000033C 2F3CFFFF move.l #-1,-(sp) put it in front of all other windows 00000340 FFFF 620:00000342 A97C _GetNewDialog 621: 622:00000344 2B570000 move.l (sp),DialogPtr save its ptr 623:00000348 A873 _SetPort make the dialog the current port 624: 625: ;Deactivate the resume control: 626: 627:0000034A 7203 moveq #3,d1 get a handle to resume item's control 628:0000034C 6100009E bsr GetItemHandle 629:00000350 3F3C00FF move.w #255,-(sp) deactivate the item 630:00000354 A95D _HiliteControl 631:00000356 4E75 rts 632: 633: ;**************************************************************** 634: ; Check for abort actions: 635: ; R: carry set if abort 636: 637:00000358 CheckAbort 638:00000358 6100005A bsr TestAbortEvent any events in our abort dialog ? 639:0000035C 6744 beq.s CAOK nope 640:0000035E 0C410001 cmpi.w #1,d1 is it an abort ? 641:00000362 6742 beq.s Abort yes - flag it 642:00000364 0C410002 cmpi.w #2,d1 is it pause ? 643:00000368 6638 bne.s CAOK no (should never happen) 644: 645: ;Handle the pause request: 646: 647:0000036A 7202 moveq #2,d1 deactivate the pause control 648:0000036C 6100007E bsr GetItemHandle 649:00000370 3F3C00FF move.w #255,-(sp) 650:00000374 A95D _HiliteControl 651: 652:00000376 7203 moveq #3,d1 activate the resume control 653:00000378 61000072 bsr GetItemHandle 654:0000037C 4267 clr.w -(sp) 655:0000037E A95D _HiliteControl 656: 657:00000380 PauseLoop 658:00000380 61000032 bsr TestAbortEvent wait for an event in our abort box 659:00000384 67FA beq PauseLoop 660:00000386 0C410001 cmpi.w #1,d1 is it abort ? 661:0000038A 671A beq.s Abort yes 662: 663: ;Else it must be resume: 664: 665:0000038C 7203 moveq #3,d1 deactivate the resume control 666:0000038E 6100005C bsr GetItemHandle 667:00000392 3F3C00FF move.w #255,-(sp) 668:00000396 A95D _HiliteControl 669: 670:00000398 7202 moveq #2,d1 activate the pause control 671:0000039A 61000050 bsr GetItemHandle 672:0000039E 4267 clr.w -(sp) 673:000003A0 A95D _HiliteControl 674: 675:000003A2 8040 CAOK or d0,d0 clear carry for no abort 676:000003A4 4E75 rts 677: 678:000003A6 003C0001 Abort ori.b #1,CCR set carry for abort 679:000003AA 4E75 rts 680: 681: ;**************************************************************** 682: ; Close the abort dialog box: 683: 684:000003AC CloseAbortBox 685:000003AC 2F2D0000 move.l DialogPtr,-(sp) 686:000003B0 A982 _CloseDialog 687:000003B2 4E75 rts 688: 689: ;**************************************************************** 690: ; Test for an event in our abort/pause dialog box: 691: ; R: equal set if no events 692: ; d1.w = dialog box item no. which caused any event 693: 694:000003B4 loc 695:000003B4 TestAbortEvent 696:000003B4 4267 clr.w -(sp) clear space for function result 697:000003B6 3F3CFFFF move.w #$FFFF,-(sp) look for any event 698:000003BA 486D0000 pea EventRecord where to put event result 699:000003BE A970 _GetNextEvent any waiting events ? 700:000003C0 301F move.w (sp)+,d0 701:000003C2 6726 beq.s .Exit nope 702: 703:000003C4 4267 clr.w -(sp) is the event in a dialog box ? 704:000003C6 486D0000 pea EventRecord 705:000003CA A97F _IsDialogEvent 706:000003CC 301F move.w (sp)+,d0 707:000003CE 6700001A beq .Exit no 708: 709:000003D2 4267 clr.w -(sp) is it a hit in our dialog ? 710:000003D4 486D0000 pea EventRecord 711:000003D8 486D0000 pea DialogPtr 712:000003DC 486D0000 pea ItemHit 713:000003E0 A980 _DialogSelect 714:000003E2 301F move.w (sp)+,d0 715:000003E4 6704 beq.s .Exit no 716: 717:000003E6 322D0000 move.w ItemHit,d1 yes - rtn item no., clr equal 718: 719:000003EA 4E75 .Exit rts 720: 721: ;**************************************************************** 722: ; Get a handle to a control item in the abort dialog box: 723: ; P: d1.w = the item no. 724: ; R: the handle on the stack 725: 726:000003EC GetItemHandle 727:000003EC 2F2D0000 move.l DialogPtr,-(sp) 728:000003F0 3F01 move.w d1,-(sp) 729:000003F2 486D0000 pea ItemType 730:000003F6 486D0000 pea ItemHandle 731:000003FA 486D0000 pea ItemBox 732:000003FE A98D _GetDItem 733: 734:00000400 205F move.l (sp)+,a0 ;get the rtn address 735:00000402 2F2D0000 move.l ItemHandle,-(sp) ;return the handle on the stack 736:00000406 4ED0 jmp (a0) 737: 738: ;**************************************************************** 739: ; Send the style escape codes to the printer: 740: 741:00000408 loc 742:00000408 StyleToPrinter 743:00000408 303A0162 move.w ImageWriter,d0 no style choice if not ImageWriter 744:0000040C 6718 beq.s .Exit 745: 746:0000040E 123C001B move.b #$1B,d1 the escape code 747:00000412 61000072 bsr PrintChar 748:00000416 41FA0149 lea StyleEscapes-3,a0 ;the escape code table 749:0000041A 323A0152 move.w StyleNum,d1 current style no. 750:0000041E 12301000 move.b (a0,d1.w),d1 get the style eecape code 751:00000422 61000062 bsr PrintChar 752: 753:00000426 4E75 .Exit rts 754: 755: ;**************************************************************** 756: ; Install a new menu from resource file: 757: ; P: d1.w = menu ID 758: ; R: d1.l = menu handle 759: 760:00000428 InstallMenu 761:00000428 6100000C bsr GetMenuHandle get the menu's handle 762:0000042C 2F17 move.l (sp),-(sp) make another stack copy of handle 763:0000042E 4267 clr.w -(sp) beforeID = 0 (after all other others) 764:00000430 A935 _InsertMenu insert the new menu 765:00000432 221F move.l (sp)+,d1 return the new handle 766:00000434 4E75 rts 767: 768: ;**************************************************************** 769: ; Get a menu's handle: 770: ; P: d1.w = menu no. 771: ; R: (sp).l = the handle 772: 773:00000436 GetMenuHandle 774:00000436 42A7 clr.l -(sp) space for returned handle 775:00000438 3F01 move.w d1,-(sp) menu resource ID 776:0000043A A9BF _GetRMenu go get it 777:0000043C 221F move.l (sp)+,d1 get the handle off stack 778:0000043E 205F move.l (sp)+,a0 get return address too 779:00000440 2F01 move.l d1,-(sp) restack the handle 780:00000442 4ED0 jmp (a0) and return 781: 782: ;**************************************************************** 783: ; Unhighlight any highlighted menu title: 784: 785:00000444 UnhighlightMenu 786:00000444 4267 clr.w -(sp) 787:00000446 A938 _HiliteMenu 788:00000448 4E75 rts 789: 790: ;**************************************************************** 791: ; 792: 793:0000044A 3F3C0001 Beep move.w #1,-(sp) 794:0000044E A9C8 _SysBeep 795:00000450 207C0000 movea.l #120,a0 00000454 0078 796:00000456 A03B _Delay 797:00000458 4E75 rts 798: 799: ;**************************************************************** 800: ; Read a byte from the input file: 801: ; R: d1.b = the byte 802: ; carry set if any errors 803: 804:0000045A loc 805:0000045A ReadByte 806:0000045A 41ED0000 lea DiskParms,a0 setup ptr to param blk 807:0000045E 43ED0000 lea ByteBuffer,a1 specify a buffer 808:00000462 21490020 move.l a1,ioBuffer 809:00000466 217C0000 move.l #1,ioByteCount read one byte at a time 0000046A 00010024 810:0000046E 4268002C clr.w ioPosMode relative to current mark 811:00000472 A002 _Read read it 812: 813:00000474 122D0000 move.b ByteBuffer,d1 return the byte 814:00000478 4A40 tst.w d0 any errors ? 815:0000047A 6604 bne.s .Err yes 816:0000047C 8241 or d1,d1 else clear carry 817:0000047E 4E75 rts 818: 819:00000480 003C0001 .Err ori.b #1,CCR set carry 820:00000484 4E75 rts 821: 822: ;**************************************************************** 823: ; Print a character: 824: ; P: d1.b = the character 825: 826:00000486 loc 827:00000486 PrintChar 828:00000486 303A00EC move.w StripLF,d0 stripping LF's ? 829:0000048A 6706 beq.s .2 no 830:0000048C 0C01000A cmpi.b #$0A,d1 yes - is it a LF ? 831:00000490 6744 beq.s .Exit yes - ignore it 832: 833:00000492 0C010009 .2 cmpi.b #$09,d1 is it a tab ? 834:00000496 661A bne.s .8 no 835:00000498 303A00DE move.w Tabbing,d0 yes - are we expanding tabs ? 836:0000049C 6714 beq.s .8 no 837: 838: ;Expand tabs to stops on every 8 columns: 839: 840:0000049E 123C0020 .4 move.b #$20,d1 print a space 841:000004A2 61000034 bsr PrintByte 842:000004A6 302D0000 move.w Column,d0 on an 8th column yet ? 843:000004AA 02000007 andi.b #$07,d0 844:000004AE 66EE bne .4 not yet 845:000004B0 6024 bra.s .Exit yes - done 846: 847:000004B2 3F01 .8 move.w d1,-(sp) save the char a minute 848:000004B4 61000022 bsr PrintByte print it 849:000004B8 321F move.w (sp)+,d1 get char back 850: 851:000004BA 0C01000D cmpi.b #$0D,d1 is it a CR ? 852:000004BE 6616 bne.s .Exit no 853:000004C0 526D0000 addq.w #1,PageLines yes - count lines 854:000004C4 426D0000 clr.w Column reset column no. 855: 856:000004C8 303A00A8 move.w AddLF,d0 adding LF's to CR's ? 857:000004CC 6708 beq.s .Exit no 858:000004CE 123C000A move.b #$0A,d1 yes - add a LF 859:000004D2 61000004 bsr PrintByte 860: 861:000004D6 4E75 .Exit rts 862: 863: ;**************************************************************** 864: ; Print a byte: 865: ; P: d1.b = the byte 866: 867:000004D8 loc 868:000004D8 PrintByte 869:000004D8 41ED0000 lea PrtOutParms,a0 setup ptr to param blk 870:000004DC 43ED0000 lea ByteBuffer,a1 specify a buffer 871:000004E0 21490020 move.l a1,ioBuffer 872:000004E4 1281 move.b d1,(a1) put the byte in the buffer 873:000004E6 217C0000 move.l #1,ioByteCount write one byte at a time 000004EA 00010024 874: 875:000004EE 0C01000D cmpi.b #$0D,d1 bump column if not CR or LF 876:000004F2 670A beq.s .2 877:000004F4 0C01000A cmpi.b #$0A,d1 878:000004F8 6704 beq.s .2 879:000004FA 526D0000 addq.w #1,Column else bump column no. 880: 881:000004FE 303A0070 .2 move.w PortNum,d0 882:00000502 0C400002 cmpi.w #2,d0 883:00000506 6704 beq.s OSPRTK 884:00000508 A003 _Write 885:0000050A 4E75 rts 886: 887: ; ==> This stuff in upper case was added so that List would work 888: ; ==> under the FastFinder. It's not needed under Apple's Finder. 889: ; ==> It goes right to the SCC chip to monitor the CTS line because 890: ; ==> characters were dropping under FastFinder! 891: 892:0000050C 48E76080 OSPRTK MOVEM.L D1-D2/A0,-(SP) 893:00000510 207C009F MOVE.L #$9FFFF8,A0 00000514 FFF8 894:00000516 1410 MOVE.B (A0),D2 895: 896:00000518 D1FC0020 OSPRT2 ADD.L #$200001,A0 0000051C 0001 897:0000051E 10BC0000 MOVE.B #0,(A0) 898:00000522 3E97 MOVE.W (A7),(A7) 899:00000524 10BC0010 MOVE.B #$10,(A0) 900:00000528 91FC0020 SUB.L #$200001,A0 0000052C 0001 901:0000052E 1410 MOVE.B (A0),D2 DO WE HAVE CTS ? 902:00000530 08020005 BTST #5,D2 903:00000534 66E2 BNE.S OSPRT2 NO - PRINTER IS BUSY 904: 905:00000536 1410 MOVE.B (A0),D2 906:00000538 3E97 OSD2 MOVE.W (A7),(A7) 907:0000053A 1410 MOVE.B (A0),D2 908:0000053C 08020002 BTST #2,D2 TX EMPTY ? 909:00000540 67F6 BEQ.S OSD2 NO - WAIT 910: 911:00000542 2F08 MOVE.L A0,-(SP) 912:00000544 D1FC0020 ADD.L #$200001,A0 00000548 0001 913:0000054A 11410004 MOVE.B D1,4(A0) 914:0000054E 205F MOVE.L (SP)+,A0 915: 916:00000550 1410 MOVE.B (A0),D2 WAIT FOR CHAR TO GET OUT 917:00000552 3E97 OSD4 MOVE.W (A7),(A7) 918:00000554 1410 MOVE.B (A0),D2 919:00000556 08020002 BTST #2,D2 920:0000055A 67F6 BEQ.S OSD4 921: 922:0000055C 1410 MOVE.B (A0),D2 923:0000055E 4CDF0106 MOVEM.L (SP)+,D1-D2/A0 924:00000562 4E75 RTS 925: 926: ;**************************************************************** 927: ; Table of escape codes to ImageWriter for various styles: 928: 929:00000564 StyleEscapes 930:00000564 6E4E4570 dc.b $6E,$4E,$45,$70 931:00000568 50657151 dc.b $50,$65,$71,$51 932: 933: ;**************************************************************** 934: ; Initialized data storage area: 935: 936:0000056C FFFF ImageWriter dc.w $FFFF true or false 937:0000056E 0009 StyleNum dc.w 9 current print style no. 938: 939:00000570 0002 PortNum dc.w 2 1 = port A, 2 = port B 940:00000572 FFFF AddLF dc.w $FFFF true or false 941:00000574 0000 StripLF dc.w 0 true or false 942:00000576 FFFF Paging dc.w $FFFF pagination - true or false 943:00000578 FFFF Tabbing dc.w $FFFF tab expansion - true or false 944: 945: ;**************************************************************** McASM V1.0 Filename: LIST.ASM Page no. 19 File lister application Mon, Jul 15, 1985 1:56:19 PM 947: ;**************************************************************** 948: ;**************************************************************** 949: 950: ;This is the resource portion of the LIST application. It uses 951: ;the in-line resource compiling capabilities of McAsm. 952: 953: ;**************************************************************** 954: ;Some equates we'll need: 955: 956:00000012 chk equ $12 check mark char 957:0000FFFF visible equ $FFFF true boolean 958:00000000 nogoaway equ 0 false boolean 959: 960: ;DITL types: 961: 962:00000004 button equ 4 963:00000008 statictext equ 8 964: 965: ;**************************************************************** 966: ;Version data is a string whose type is the signature of the 967: ;application - we have to define our own resource for this 'cause 968: ;it's a non-standard type: 969: 970: ; ('[[...]]' are McAsm's user defined resource delimiters.) 971: 972: 973:0000057A [[ LIST,0 ID is 0 by convention, no attr or name 974:0000057A 154C6973 text #"Lister, V1.1, 7-12-85" 975:00000590 ]] 976: 977: ;**************************************************************** 978: ;All the rest are standard resource types: 979: 980: ; ('$$' is McAsm's delimiter for a standard resource definition.) 981: 982: ;**************************************************************** 983: ;Tell the Finder that we have bundle info in this application: 984: 985:00000590 $$ BNDL,128 bundle resc, ID = 128 986:00000590 4C495354 LIST the application's signature again 987:00000594 0000 0 ID is again 0 by convention 988:00000596 0001 2 two resc types in the BNDL list: 989: 990:00000598 49434E23 ICN#,1 map one icon list: 0000059C 0000 991:0000059E 00000080 0,128 local ID 0 -> actual ID 128 992: 993:000005A2 46524546 FREF,1 map one FREF list: 000005A6 0000 994:000005A8 00000080 0,128 local ID 0 -> actual ID 128 995: 996: ;**************************************************************** 997: ;Our bundle's FREF resource: 998: 999:000005AC $$ FREF,128 FREF resc, ID = 128 1000:000005AC 4150504C APPL filetype 1001:000005B0 0000 0 local ID for icon list 1002:000005B2 00 | no filename follows the application 1003: 1004: ;**************************************************************** 1005: ;This is our unique desktop icon and it's selected mask. To get 1006: ;this to display, we'll have to set the 'bundle bit' in the final 1007: ;linked file and then re-init the desktop by holding down the command 1008: ;and option keys as we execute the Finder. (FEDIT or something 1009: ;similar can be used to set the bundle bit.) 1010: 1011:000005B3 $$ ICN#,128 an icon list, ID = 128 1012: 1013:000005B3 00000000 $00000000,$00000000,$1FE00000,$20100000 000005B7 00000000 000005BB 1FE00000 000005BF 20100000 1014:000005C3 2FD00000 $2FD00000,$28500000,$28500000,$2FD00000 000005C7 28500000 000005CB 28500000 000005CF 2FD00000 1015:000005D3 20100000 $20100000,$3FF00000,$20100000,$21DC3F80 000005D7 3FF00000 000005DB 20100000 000005DF 21DC3F80 1016:000005E3 201460C0 $201460C0,$2014C030,$3FF48018,$000D800C 000005E7 2014C030 000005EB 3FF48018 000005EF 000D800C 1017:000005F3 01F901E6 $01F901E6,$06010323,$1803FFF1,$301E03B1 000005F7 06010323 000005FB 1803FFF1 000005FF 301E03B1 1018:00000603 20F00E31 $20F00E31,$23001839,$33FFF029,$1E00102D 00000607 23001839 0000060B 33FFF029 0000060F 1E00102D 1019:00000613 0200D065 $0200D065,$0200D1C6,$02001301,$02001C00 00000617 0200D1C6 0000061B 02001301 0000061F 02001C00 1020:00000623 03FFF800 $03FFF800,$00000000,$3FF80000,$7FF80000 00000627 00000000 0000062B 3FF80000 0000062F 7FF80000 1021:00000633 00000000 $00000000,$1FF00000,$3FF80000,$7FF80000 00000637 1FF00000 0000063B 3FF80000 0000063F 7FF80000 1022:00000643 7FF80000 $7FF80000,$7FF80000,$7FF80000,$7FF80000 00000647 7FF80000 0000064B 7FF80000 0000064F 7FF80000 1023:00000653 7FF80000 $7FF80000,$7FF80000,$7FFE3F80,$7FFE7FC0 00000657 7FF80000 0000065B 7FFE3F80 0000065F 7FFE7FC0 1024:00000663 7FFEFFF0 $7FFEFFF0,$7FFFFFF8,$7FFFFFFC,$7FFFFFFE 00000667 7FFFFFF8 0000066B 7FFFFFFC 0000066F 7FFFFFFE 1025:00000673 07FFFFFF $07FFFFFF,$1FFFFFFF,$3FFFFFFF,$7FFFFFFF 00000677 1FFFFFFF 0000067B 3FFFFFFF 0000067F 7FFFFFFF 1026:00000683 7FFFFFFF $7FFFFFFF,$7FFFFFFF,$7FFFFFFF,$3FFFFFFF 00000687 7FFFFFFF 0000068B 7FFFFFFF 0000068F 3FFFFFFF 1027:00000693 1FFFFFFF $1FFFFFFF,$07FFFFEF,$07FFFFC7,$07FFFF01 00000697 07FFFFEF 0000069B 07FFFFC7 0000069F 07FFFF01 1028:000006A3 07FFFC00 $07FFFC00,$07FFF800,$00000000,$00000000 000006A7 07FFF800 000006AB 00000000 000006AF 00000000 1029: 1030: ;**************************************************************** 1031: ;This is our 'About' menu: 1032: 1033:000006B3 $$ MENU,1 menu ID 1 1034:000006B3 00010000 0,0,0 placeholders for some stuff 000006B7 00000000 000006BB 0000 1035:000006BD FFFFFFFB $FFFFFFFB enable mask - item 2 disabled 1036:000006C1 0114 "/$14" menu title = apple char 1037:000006C3 2 two items in this menu: 1038: ; item 1: 1039:000006C3 0D41626F About List... the menu item 000006C7 7574204C 000006CB 6973742E 000006CF 2E2E 1040:000006D1 0000 0,0 no icon, no keybd equivalent 1041:000006D3 0000 0,0 no marking char, text style = plain 1042: ; item 2: 1043:000006D5 0D2D2D2D ------------- the item - draw a disabled line 000006D9 2D2D2D2D 000006DD 2D2D2D2D 000006E1 2D2D 1044:000006E3 00000000 0,0,0,0 no icon, no kybd, no mark, plain text 000006E7 00 1045: 1047: ;This is our 'File' menu: 1048: 1049:000006E8 $$ MENU,2 menu ID 2 1050:000006E8 00020000 0,0,0 placeholders for some stuff 000006EC 00000000 000006F0 0000 1051:000006F2 FFFFFFFF $FFFFFFFF enable mask - everything enabled 1052:000006F6 0446696C File menu title 000006FA 65 1053:000006FB 2 two items in this menu: 1054: ; item 1: 1055:000006FB 074C6973 Listing the menu item 000006FF 74696E67 1056:00000703 00000000 0,0,0,0 no icon, no kybd, no mark, plain text 1057: ; item 2: 1058:00000707 04517569 Quit the menu item 0000070B 74 1059:0000070C 00000000 0,0,0,0 no icon, no kybd, no mark, plain text 00000710 00 1060: 1061: ;**************************************************************** 1062: ;This is our 'Style' menu: 1063: 1064:00000711 $$ MENU,3 menu ID 3 1065:00000711 00030000 0,0,0 placeholders for some stuff 00000715 00000000 00000719 0000 1066:0000071B FFFFFFFB $FFFFFFFB enable mask - everything enabled but item 2 1067:0000071F 05537479 Style menu title 00000723 6C65 1068:00000725 10 ten items in this menu: 1069: ; item 1: 1070:00000725 0B496D61 ImageWriter the menu item 00000729 67655772 0000072D 69746572 1071:00000731 00001200 0,0,chk,0 no icon, no kybd, check mark, plain text 1072: ; item 2: 1073:00000735 142D2D2D -------------------- disabled line 00000739 2D2D2D2D 0000073D 2D2D2D2D 00000741 2D2D2D2D 00000745 2D2D2D2D 00000749 2D 1074:0000074A 00000000 0,0,0,0 no icon, no kybd, no mark, plain text 1075: ; item 3: 1076:0000074E 10457874 Extended 72 the item 00000752 656E6465 00000756 64202020 0000075A 20202037 0000075E 32 1077:0000075F 00000000 0,0,0,0 nothing special 1078: ; item 4: 1079:00000763 14504943 PICA 80 00000767 41202020 0000076B 20202020 0000076F 20202020 00000773 20202038 00000777 30 1080:00000778 00000000 0,0,0,0 1081: ; item 5: 1082:0000077C 14454C49 ELITE 96 00000780 54452020 00000784 20202020 00000788 20202020 0000078C 20202039 00000790 36 1083:00000791 00000000 0,0,0,0 1084: ; item 6: 1085:00000795 10504943 PICA prop. -- 00000799 41207072 0000079D 6F702E20 000007A1 2020202D 000007A5 2D 1086:000007A6 00000000 0,0,0,0 1087: ; item 7: 1088:000007AA 10454C49 ELITE prop. -- 000007AE 54452070 000007B2 726F702E 000007B6 2020202D 000007BA 2D 1089:000007BB 00000000 0,0,0,0 1090: ; item 8: 1091:000007BF 0F53656D Semicond. 108 000007C3 69636F6E 000007C7 642E2020 000007CB 20313038 1092:000007CF 00000000 0,0,0,0 1093: ; item 9: 1094:000007D3 0E436F6E Condensed 120 000007D7 64656E73 000007DB 65642020 000007DF 313230 1095:000007E2 00001200 0,0,chk,0 check mark on this one 1096: ; item 10: 1097:000007E6 10556C74 Ultracond. 132 000007EA 7261636F 000007EE 6E642E20 000007F2 20203133 000007F6 32 1098:000007F7 00000000 0,0,0,0 000007FB 00 1099: 1100: ;**************************************************************** 1101: ;This is our 'Options' menu: 1102: 1103:000007FC $$ MENU,4 menu ID 4 1104:000007FC 00040000 0,0,0 placeholders for some stuff 00000800 00000000 00000804 0000 1105:00000806 FFFFFE97 $FFFFFE97 enable mask - 3,5,6,8 disabled 1106:0000080A 074F7074 Options menu title 0000080E 696F6E73 1107:00000812 9 nine items in this menu: 1108: ; item 1: 1109:00000812 0D506F72 Port A, modem the menu item 00000816 7420412C 0000081A 206D6F64 0000081E 656D 1110:00000820 00000000 0,0,0,0 no icon, no kybd, no mark, plain text 1111: ; item 2: 1112:00000824 0F506F72 Port B, printer the item 00000828 7420422C 0000082C 20707269 00000830 6E746572 1113:00000834 00001200 0,0,chk,0 check mark on this one 1114: ; item 3: 1115:00000838 132D2D2D ------------------- another disabled line 0000083C 2D2D2D2D 00000840 2D2D2D2D 00000844 2D2D2D2D 00000848 2D2D2D2D 1116:0000084C 00000000 0,0,0,0 nothing special 1117: ; item 4: 1118:00000850 0E416464 Add LFs to CRs the item 00000854 204C4673 00000858 20746F20 0000085C 435273 1119:0000085F 00001200 0,0,chk,0 another check mark 1120: ; item 5: 1121:00000863 09537472 Strip LFs this one's disabled 00000867 6970204C 0000086B 4673 1122:0000086D 00000000 0,0,0,0 1123: ; item 6: 1124:00000871 132D2D2D ------------------- another disabled line 00000875 2D2D2D2D 00000879 2D2D2D2D 0000087D 2D2D2D2D 00000881 2D2D2D2D 1125:00000885 00000000 0,0,0,0 1126: ; item 7: 1127:00000889 13506167 Pagination, 60 lppg the item 0000088D 696E6174 00000891 696F6E2C 00000895 20363020 00000899 6C707067 1128:0000089D 00001200 0,0,chk,0 and yet another check mark 1129: ; item 8: 1130:000008A1 132D2D2D ------------------- yet another disabled line 000008A5 2D2D2D2D 000008A9 2D2D2D2D 000008AD 2D2D2D2D 000008B1 2D2D2D2D 1131:000008B5 00000000 0,0,0,0 1132: ; item 9: 1133:000008B9 14204578 Expand tabs, 8 spcs 000008BD 70616E64 000008C1 20746162 000008C5 732C2038 000008C9 20737063 000008CD 73 1134:000008CE 00001200 0,0,chk,0 check mark on this one 000008D2 00 1135: 1136: ;**************************************************************** 1137: ;This is the 'About' dialog box: 1138: 1139:000008D3 $$ DLOG,1 dialog, ID = 1 1140:000008D3 00640064 100,100,190,400 bounds rectangle 000008D7 00BE0190 1141:000008DB 0001 1 type = modal dialog box 1142:000008DD FFFF visible initial state 1143:000008DF 0000 nogoaway no close box 1144:000008E1 00000000 0 refcon 1145:000008E5 0001 1 resc ID of DLOG's item list 1146:000008E7 00 | no title 1147: 1148:000008E8 $$ DITL,1 item list for above 1149:000008E8 0002 3 three items in this list: 1150: ; item 1: 1151:000008EA 00000000 0 handle holder 1152:000008EE 000F0014 15,20,36,300 display rectangle 000008F2 0024012C 1153:000008F6 08 statictext item type 1154:000008F7 1E416C6C All I wanted was a listing... the item 000008FB 20492077 000008FF 616E7465 00000903 64207761 00000907 73206120 0000090B 6C697374 0000090F 696E672E 00000913 2E2E20 1155: ; item 2: 1156:00000916 00000000 0 handle holder 1157:0000091A 00230014 35,20,56,300 display rectangle 0000091E 0038012C 1158:00000922 08 statictext item type 1159:00000923 16202020 " By Dave McWherter" the item 00000927 20204279 0000092B 20446176 0000092F 65204D63 00000933 57686572 00000937 746572 1160: ; item 3: 1161:0000093A 00000000 0 handle holder 1162:0000093E 003C00E6 60,230,80,290 display rectangle 00000942 00500122 1163:00000946 04 button item type 1164:00000947 024F4B OK button's title 1165: 1166: ;**************************************************************** 1167: ;This is the 'Change your mind?' dialog box: 1168: 1169:0000094A $$ DLOG,2 dialog, ID = 2 1170:0000094A 00640064 100,100,220,235 bounds rectangle 0000094E 00DC00EB 1171:00000952 0001 1 type = modal dialog box 1172:00000954 FFFF visible initial state 1173:00000956 0000 nogoaway no close box 1174:00000958 00000000 0 refcon 1175:0000095C 0002 2 resc ID of DLOG's item list 1176:0000095E 11436861 Change your mind? the title 00000962 6E676520 00000966 796F7572 0000096A 206D696E 0000096E 643F 1177: 1178:00000970 $$ DITL,2 item list for above 1179:00000970 0002 3 three items in this list: 1180: ; item 1: 1181:00000972 00000000 0 handle holder 1182:00000976 000F0014 15,20,35,95 display rectangle 0000097A 0023005F 1183:0000097E 04 button item type 1184:0000097F 0641626F Abort button's title 00000983 727420 1185: ; item 2: 1186:00000986 00000000 0 handle holder 1187:0000098A 00320014 50,20,70,95 display rectangle 0000098E 0046005F 1188:00000992 04 button item type 1189:00000993 06506175 Pause button's title 00000997 736520 1190: ; item 3: 1191:0000099A 00000000 0 handle holder 1192:0000099E 00550014 85,20,105,95 display rectangle 000009A2 0069005F 1193:000009A6 04 button item type 1194:000009A7 06526573 Resume button's title 000009AB 756D65 1195: 1196: ;**************************************************************** 1197: 1198:000009AE end Number of errors = 0 Cross Reference List Filename: LIST.ASM Page no. 28 File lister application Mon, Jul 15, 1985 1:56:19 PM Abort 000003A6 LAB < 678> 641 661 About 000000E2 LAB < 328> 308 AddLF 00000572 DW < 940> 554 856 AOutStr 000001F4 TXT < 454> 397 AppleMen 000000BE LAB < 306> 294 Beep 0000044A LAB < 793> **** BOutStr 000001FA TXT < 455> 400 button 00000004 EQU < 962> 1163 1183 1188 1193 ByteBuff 000000A0 DS < 149> 807 813 870 CAOK 000003A2 LAB < 675> 639 643 CheckAbo 00000358 LAB < 637> 414 chk 00000012 EQU < 956> 1071 1095 1113 1119 1128 1134 CloseAbo 000003AC LAB < 684> 442 Column 00000292 DS < 184> 409 842 854 879 csCode 0000001A EQU < 111> **** csParam 0000001C EQU < 115> **** DeskName 0000026E DS < 180> 316 320 DialogPt 00000108 DS < 174> 622 685 711 727 DiskParm 00000000 EQU < 143> 235 381 444 806 DisplayA 00000332 LAB < 615> 407 DStorage 0000010C DS < 175> 331 618 EventLoc 000000AC DS < 156> 272 287 EventMes 000000A4 DS < 154> **** EventMod 000000B0 DS < 157> **** EventRec 000000A2 EQU < 152> 250 607 698 704 710 EventTim 000000A8 DS < 155> **** EventTyp 000000A2 DS < 153> 255 FileMenu 00000106 LAB < 349> 296 GetItemH 000003EC LAB < 726> 628 648 653 666 671 GetMenuH 00000436 LAB < 773> 313 470 502 532 551 563 585 598 761 ImageWri 0000056C DW < 936> 436 491 508 743 InstallM 00000428 LAB < 760> 211 217 220 223 ioBuffer 00000020 DS < 118> 808 871 ioByteCo 00000024 DS < 119> 809 873 ioCmdAdd 00000008 DS < 102> **** ioComple 0000000C DS < 104> **** ioDrvNum 00000016 DS < 108> **** ioFileNa 00000012 DS < 106> 383 402 ioFileTy 0000001A DS < 112> **** ioFQElSi 00000050 EQU < 126> 144 147 236 ioLink 00000000 DS < 99> **** ioNumDon 00000028 DS < 120> **** ioOwnBuf 0000001C DS < 116> **** ioPermss 0000001B DS < 113> 385 ioPosMod 0000002C DS < 122> 810 ioPosOff 0000002E DS < 123> **** ioRefNum 00000018 DS < 109> **** ioResult 00000010 DS < 105> **** ioTrap 00000006 DS < 101> **** ioType 00000004 DS < 100> **** ioVRefNu 00000016 EQU < 107> 384 ItemBox 00000266 DS < 178> 731 ItemHand 00000260 DS < 176> 730 735 ItemHit 00000106 DS < 172> 339 712 717 ItemType 00000264 DS < 177> 729 IW2 00000268 LAB < 514> 509 IW4 0000026A LAB < 516> 512 IWItem 0000023A LAB < 491> 474 IWLoop 00000258 LAB < 506> 518 LF2 000002E2 LAB < 570> 567 LF4 000002EC LAB < 577> 572 LF6 000002EE LAB < 579> 575 LIST 00000000 MOD < 0> **** Listing 0000011A LAB < 360> 351 MenuBar 0000008E LAB < 285> **** MenuHand 000000B6 DS < 161> 503 506 MenuItem 000000BA DS < 162> 291 315 MouseDow 00000072 LAB < 270> 258 NewOptio 00000290 DS < 183> 526 539 544 552 564 NewPage 00000190 LAB < 411> 429 NewStyle 0000028E DS < 182> 468 472 481 486 nogoaway 00000000 EQU < 958> 1143 1173 NulStr 000001F2 TXT < 453> 366 OptionLF 000002A6 LAB < 547> 528 OptionMe 00000276 LAB < 525> 300 OptionPa 000002F2 LAB < 581> 549 OptionPa 00000306 LAB < 588> 601 OptionPo 00000280 LAB < 530> **** OptionTa 00000314 LAB < 596> 583 OSD2 00000538 LAB < 906> 909 OSD4 00000552 LAB < 917> 920 OSPRT2 00000518 LAB < 896> 903 OSPRTK 0000050C LAB < 892> 883 PageLine 00000294 DS < 185> 411 423 853 Paging 00000576 DW < 942> 421 431 587 PauseLoo 00000380 LAB < 657> 659 PortNum 00000570 DW < 939> 393 535 543 881 PrintByt 000004D8 LAB < 868> 841 848 859 PrintCha 00000486 LAB < 827> 419 428 434 439 441 747 751 PrtOutPa 00000050 EQU < 146> 392 869 Quit 00000200 LAB < 461> 353 ReadByte 0000045A LAB < 805> 417 Selectio 0000006C LAB < 263> 323 344 450 487 520 545 579 594 SFCopy 000000BD DS < 166> **** SFGood 000000BC DS < 165> 376 SFName 000000C6 DS < 170> 382 SFReply 000000BC EQU < 164> 372 SFType 000000BE DS < 167> **** SFVersio 000000C4 DS < 169> **** SFVRefNu 000000C2 DS < 168> 384 Start 00000000 LAB < 198> **** staticte 00000008 EQU < 963> 1153 1158 StripLF 00000574 DW < 941> 828 StyleEsc 00000564 LAB < 929> 748 StyleMen 00000206 LAB < 467> 298 StyleNum 0000056E DW < 937> 477 485 749 StyleToP 00000408 LAB < 742> 408 SystemWi 00000324 LAB < 606> 278 Tabbing 00000578 DW < 943> 600 835 TestAbor 000003B4 LAB < 695> 638 658 Unhighli 00000444 LAB < 785> 264 461 visible 0000FFFF EQU < 957> 1142 1172 WaitForE 0000004E LAB < 243> 253 257 265 280 301 354 610 WindowPt 000000B2 DS < 159> 273 608 _AddResM 0000A94D TRP < 51> 214 _CheckIt 0000A945 TRP < 52> 479 483 497 537 541 560 593 _Close 0000A001 TRP < 53> 445 _CloseDi 0000A982 TRP < 54> 343 686 _Delay 0000A03B TRP < 55> 796 _DialogS 0000A980 TRP < 56> 713 _Disable 0000A93A TRP < 57> 511 577 _DrawMen 0000A937 TRP < 58> 225 _EnableI 0000A939 TRP < 59> 514 574 _FindWin 0000A92C TRP < 60> 274 _FlushEv 0000A032 TRP < 61> 230 _GetDIte 0000A98D TRP < 62> 732 _GetItem 0000A946 TRP < 63> 317 _GetNewD 0000A97C TRP < 65> 333 620 _GetNext 0000A970 TRP < 64> 251 699 _GetRMen 0000A9BF TRP < 66> 776 _HiliteC 0000A95D TRP < 67> 630 650 655 668 673 _HiliteM 0000A938 TRP < 68> 787 _InitCur 0000A850 TRP < 69> 231 _InitDia 0000A97B TRP < 70> 205 _InitFon 0000A8FE TRP < 71> 200 _InitGra 0000A86E TRP < 72> 199 _InitMen 0000A930 TRP < 73> 202 _InitWin 0000A912 TRP < 74> 201 _InsertM 0000A935 TRP < 75> 764 _IsDialo 0000A97F TRP < 76> 705 _MenuSel 0000A93D TRP < 77> 288 _ModalDi 0000A991 TRP < 78> 340 _Open 0000A000 TRP < 79> 386 403 _OpenDes 0000A9B6 TRP < 80> 321 _Pack3 0000A9EA TRP < 81> 374 _Read 0000A002 TRP < 82> 811 _SetPort 0000A873 TRP < 83> 336 623 _SysBeep 0000A9C8 TRP < 84> 794 _SystemC 0000A9B3 TRP < 85> 609 _SystemT 0000A9B4 TRP < 86> 244 413 _TEInit 0000A9CC TRP < 87> 206 _Write 0000A003 TRP < 88> 884 McLink V1.0, Link Map for file: LIST.APPL ** Module Map ** Mod Code A5 A5 Resc Base Size Org Size Size Module ID 0000 057A 0396 0296 0434 LIST ** External Symbols ** Value Name