LS-DOS 6.3.1 - LBLOAD Assembly Listing (HTML format version)

[Copyright 1999,2002,2014 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_2014 at nemesis.lonestar.org
Comments and queries to this address: web_software_2014 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,2014 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_2014 at nemesis.lonestar.org
Comments and queries to this address: web_software_2014 at nemesis.lonestar.org]

Valid HTML 4.01!