[Copyright 1999,2002 Frank Durda IV, All Rights Reserved. Mirroring of any material on this page in any form is expressly prohibited. The official web site for this material is: http://nemesis.lonestar.org Contact this address for use clearances: clearance at nemesis.lonestar.org Comments and queries to this address: web_software at nemesis.lonestar.org]
MISOSYS EDAS-4.3 04/11/99 01:28:25 LOAD/RUN - LS-DOS 6.2 Page 00001
00001 ;LBLOAD/ASM - LOAD & RUN Commands
00003 ;
000D 00004 CR EQU 13
004D 00005 @RUN EQU 77
0028 00006 RST28 EQU 28H
0000 00007 *GET SVCMAC:3 ;SVC Macro equivalents
00008 ;SVCMAC/ASM - LS-DOS Version VI
00009 *LIST OFF
00401 *LIST ON
00403 ;
2400 00404 ORG 2400H
00405 ;
00406 ; RUN entry point
00407 ;
2400 C32924 00408 RUN JP RUN0 ;RUN entry point
00409 ;
00410 ; LOAD entry point
00411 ;
2403 CDC924 00412 LOAD CALL COMMON ;Parse parms & filespec
2406 203F 00413 JR NZ,IOERR
2408 3AFC24 00414 LD A,(XPARM+1) ;If not (X), go to it
240B B7 00415 OR A
240C 200A 00416 JR NZ,NEEDPR
240E 119425 00417 LD DE,FCB ;Pt to fcb
2411 00418 @@LOAD
2411+3E4C 00419 LD A,76
2413+EF 00420 RST 40
2414 2031 00421 JR NZ,IOERR ;Go on error
2416 1844 00422 JR EXIT ; or just exit
00423 ;
00424 ; Need to prompt for the system disk
00425 ;
2418 CD0F25 00426 NEEDPR CALL LOADIT ;Load the file
241B 202A 00427 JR NZ,IOERR ;Exit if error
241D 210000 00428 LD HL,0 ;Init no error
00429 ;
00430 ; Get the system disk back in system drive
00431 ;
2420 E5 00432 PMTSYS PUSH HL ;Save cmd line ptr
2421 213A25 00433 LD HL,PMTSYS$
2424 CD6324 00434 CALL FLASH
2427 E1 00435 POP HL ;Rcvr cmnd line ptr
2428 C9 00436 RET
00437 ;
00438 ; RUN command entry
00439 ;
2429 CDC924 00440 RUN0 CALL COMMON ;Parse common args
242C 2019 00441 JR NZ,IOERR ;Go on error
242E 3AFC24 00442 LD A,(XPARM+1)
2431 B7 00443 OR A
2432 119425 00444 LD DE,FCB
2435 2005 00445 JR NZ,RUN1 ;Prompt if (X)
2437 3E4D 00446 LD A,@RUN ;RUN SVC number
2439 C32800 00447 JP RST28
00448 ;
243C E5 00449 RUN1 PUSH HL ;Save cmnd line ptr
243D 119425 00450 LD DE,FCB
2440 CD0F25 00451 CALL LOADIT
2443 E3 00452 EX (SP),HL ;Get cmd ptr & save ept
2444 28DA 00453 JR Z,PMTSYS ;Run if prog OK or
2446 E1 00454 POP HL ; pop TRAADR & error
00455 ;
00456 ; Error handling
00457 ;
2447 FE3F 00458 IOERR CP 63 ;If extended error
2449 280A 00459 JR Z,EXTERR ; handle by @LOGOT
244B 6F 00460 LD L,A ;Put error # into HL
244C 2600 00461 LD H,0
244E F6C0 00462 OR 0C0H ;Set short error and ret
2450 4F 00463 LD C,A
2451 00464 @@ERROR
2451+3E1A 00465 LD A,26
2453+EF 00466 RST 40
2454 C9 00467 RET
2455 00468 EXTERR @@LOGOT
00469 IFEQ 00H,1
00470 LD HL,
00471 ENDIF
2455+3E0C 00472 LD A,12
2457+EF 00473 RST 40
2458 21FFFF 00474 LD HL,-1
245B C9 00475 RET
245C 210000 00476 EXIT LD HL,0
245F C9 00477 RET
00478 ;
00479 ; Flash the prompt & await reply
00480 ;
2460 CDB924 00481 FLASH0 CALL RESKFLG ;Reset 3-bit field
2463 01FD41 00482 FLASH LD BC,16893 ;Delay for 250 ms
2466 00483 @@PAUSE
2466+3E10 00484 LD A,16
2468+EF 00485 RST 40
2469 FD7E0A 00486 LD A,(IY+'K'-'A')
246C E605 00487 AND 4!1 ;Wait for no ENTER!BRK
246E 20F0 00488 JR NZ,FLASH0
2470 CDB924 00489 CALL RESKFLG ;Reset in case BREAK
2473 00490 FLS1 @@DSPLY ;Display the message
00491 IFEQ 00H,1
00492 LD HL,
00493 ENDIF
2473+3E0A 00494 LD A,10
2475+EF 00495 RST 40
2476 C24724 00496 JP NZ,IOERR ;Abort on error
2479 010040 00497 LD BC,4000H
247C CD9024 00498 CALL FLS2 ;Blink start
247F 2042 00499 JR NZ,GOTBRK ;Handle BREAK
2481 0E1E 00500 LD C,1EH ;Cursor erase to EOL
2483 CD2025 00501 CALL DSP
2486 013333 00502 LD BC,3333H ;Wait
2489 CD9024 00503 CALL FLS2 ;Wait & ck enter
248C 2035 00504 JR NZ,GOTBRK ;Handle BREAK
248E 18E3 00505 JR FLS1 ;Loop until ENTER
00506 ;
00507 ; FLS2 - Delay a while & ck on
00508 ;
2490 00509 FLS2 @@CKBRKC ; hit ?
2490+3E6A 00510 LD A,106
2492+EF 00511 RST 40
2493 2808 00512 JR Z,CKENT ;No - check
2495 0E1E 00513 LD C,1EH ;Erase Line
2497 CD2025 00514 CALL DSP ;Output byte
249A AF 00515 XOR A ;Set NZ
249B 3C 00516 INC A ;
249C C9 00517 RET ;And RETurn
00518 ;
249D FDCB0A56 00519 CKENT BIT 2,(IY+'K'-'A') ;Ck ENTER bit
24A1 2006 00520 JR NZ,FLS4 ;Go on ENTER down
24A3 0B 00521 DEC BC ;Count down
24A4 78 00522 LD A,B
24A5 B1 00523 OR C
24A6 20E8 00524 JR NZ,FLS2
24A8 C9 00525 RET ;Return with Z-flag
00526 ;
00527 ; ENTER condition found
00528 ;
24A9 F1 00529 FLS4 POP AF ;Pop return code
24AA 00530 FLS5 @@KBD ;Clear type ahead buffer
24AA+3E08 00531 LD A,8
24AC+EF 00532 RST 40
24AD 28FB 00533 JR Z,FLS5 ;Loop if have character
24AF 0E1E 00534 LD C,1EH ;Wipe line
24B1 CD2025 00535 CALL DSP
24B4 0E0E 00536 LD C,14 ;Cursor on
24B6 CD2025 00537 CALL DSP
24B9 FD7E0A 00538 RESKFLG LD A,(IY+'K'-'A') ;Reset 3-bit field
24BC E6F8 00539 AND 0F8H
24BE FD770A 00540 LD (IY+'K'-'A'),A
24C1 AF 00541 XOR A ;Set Z-flag
24C2 C9 00542 RET
00543 ;
24C3 217825 00544 GOTBRK LD HL,STOP$ ;Point to error message
24C6 3E3F 00545 LD A,63 ;Init extended error
24C8 C9 00546 RET ; & return NZ
00547 ;
00548 ; Common initialization routine
00549 ;
24C9 118A25 00550 COMMON LD DE,PRMTBL ;Parm of X?
24CC 00551 @@PARAM
24CC+3E11 00552 LD A,17
24CE+EF 00553 RST 40
24CF C0 00554 RET NZ ;Ret with error code
24D0 00555 COMM1 @@FLAGS ;Get flag table pointer
24D0+3E65 00556 LD A,101
24D2+EF 00557 RST 40
24D3 7E 00558 COMM1A LD A,(HL) ;Skip past spaces
24D4 FE20 00559 CP ' '
24D6 2003 00560 JR NZ,COMM2
24D8 23 00561 INC HL
24D9 18F8 00562 JR COMM1A
24DB 119425 00563 COMM2 LD DE,FCB ;Get filespec
24DE 00564 @@FSPEC
24DE+3E4E 00565 LD A,78
24E0+EF 00566 RST 40
24E1 2005 00567 JR NZ,COMM3 ;Go on error
24E3 1A 00568 LD A,(DE) ;Device specs not allowed
24E4 FE2A 00569 CP '*'
24E6 2007 00570 JR NZ,COMM4 ;Go if OK
24E8 212725 00571 COMM3 LD HL,SPCREQ$ ;Point to error message
24EB 3E3F 00572 LD A,63 ;Init extended error
24ED B7 00573 OR A ;Set NZ condition
24EE C9 00574 RET
00575 ;
24EF E5 00576 COMM4 PUSH HL ;Save cmdline ptr
24F0 219125 00577 LD HL,CMDEXT ;Default to CMD
24F3 00578 @@FEXT
24F3+3E4F 00579 LD A,79
24F5+EF 00580 RST 40
24F6 CD0C25 00581 CALL GOSYS2 ;Get SYS2 for open
24F9 E1 00582 POP HL ;Pop the INBUF$ pointer
24FA C0 00583 RET NZ
24FB 110000 00584 XPARM LD DE,0 ;Ck on X parm
24FE 7A 00585 LD A,D
24FF B3 00586 OR E
2500 C8 00587 RET Z ;Back on no (X)
2501 E5 00588 PUSH HL ;Save pointer
2502 215925 00589 LD HL,PMTSRC$ ;Init prompt
2505 CD6324 00590 CALL FLASH ;Prompt for source disk
2508 D1 00591 POP DE ;Pointer to DE
2509 C0 00592 RET NZ ;Back on error in HL
250A EB 00593 EX DE,HL ;If no error, pointer
250B C9 00594 RET ; back to HL
00595 ;
00596 ; Call SYS2 for open routine
00597 ;
250C 3E84 00598 GOSYS2 LD A,84H ;Load sys2
250E EF 00599 RST 28H
00600 ;
00601 ; Loading routine
00602 ;
250F 119425 00603 LOADIT LD DE,FCB
2512 FDCB12D6 00604 SET 2,(IY+'S'-'A') ;Turn on RUN flag
2516 00605 @@LOAD ;Load the file
2516+3E4C 00606 LD A,76
2518+EF 00607 RST 40
2519 C8 00608 RET Z
251A F5 00609 PUSH AF ;Save error ret code
251B CD2024 00610 CALL PMTSYS ;Get system disk back
251E F1 00611 POP AF ;Rcvr error ret code
251F C9 00612 RET
00613 ;
2520 00614 DSP @@DSP ;Display byte
2520+3E02 00615 LD A,2
2522+EF 00616 RST 40
2523 C8 00617 RET Z ;Return if OK
2524 C34724 00618 JP IOERR
00619 ;
00620 ;
2527 46 00621 SPCREQ$ DB 'File spec required',CR
69 6C 65 20 73 70 65 63
20 72 65 71 75 69 72 65
64 0D
253A 0F 00622 PMTSYS$ DB 15,29,30,'Insert SYSTEM disk ',29,3
1D 1E 49 6E 73 65 72 74
20 53 59 53 54 45 4D 20
64 69 73 6B 20 3C 45 4E
54 45 52 3E 1D 03
2559 0F 00623 PMTSRC$ DB 15,29,30,'Insert SOURCE disk ',29,3
1D 1E 49 6E 73 65 72 74
20 53 4F 55 52 43 45 20
64 69 73 6B 20 3C 45 4E
54 45 52 3E 1D 03
2578 0E 00624 STOP$ DB 14,29,'Command aborted',CR
1D 43 6F 6D 6D 61 6E 64
20 61 62 6F 72 74 65 64
0D
00625 ;
258A 80 00626 PRMTBL DB 80H,41H,'X',0
41 58 00
258E FC24 00627 DW XPARM+1
2590 00 00628 NOP
00629 ;
2591 43 00630 CMDEXT DB 'CMD'
4D 44
2594 00 00631 FCB DB 0
2595 00632 DS 31
00633 ;
2403 00634 END LOAD
2403 is the transfer address
00000 Total errors
[Copyright 1999,2002 Frank Durda IV, All Rights Reserved. Mirroring of any material on this page in any form is expressly prohibited. The official web site for this material is: http://nemesis.lonestar.org Contact this address for use clearances: clearance at nemesis.lonestar.org Comments and queries to this address: web_software at nemesis.lonestar.org]