; banner.asm 9/5/2012 dwg - new version semantics - #.#.# (#) maclib portab maclib globals maclib cpmbios maclib cpmbdos maclib bioshdr maclib printers maclib cpmappl maclib applvers cseg ; entered with argv in hl public x$banner x$banner: 0000 221E04 shld argv 0003 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xprog ! xchg 000C 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xvers ! xchg 0015 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xprod ! xchg 001E 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xorig ! xchg 0027 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xser ! xchg 0030 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xnam ! xchg printf '----------------------------------------' 0039+F5 PUSH PSW 003A+C5 PUSH B 003B+D5 PUSH D 003C+E5 PUSH H 003D+0E09 MVI C,PRINTSTR 003F+114C00 LXI D,??0002 0042+CD0500 CALL BDOS 0045+E1 POP H 0046+D1 POP D 0047+C1 POP B 0048+F1 POP PSW 0049+C37500 JMP ??0001 004C+2D2D2D2D2D??0002 DB '----------------------------------------' 0074+24 DB '$' print crlf 0075+F5 PUSH PSW 0076+C5 PUSH B 0077+D5 PUSH D 0078+E5 PUSH H 0079+0E09 MVI C,PRINTSTR 007B+112C04 LXI D,CRLF 007E+CD0500 CALL BDOS 0081+E1 POP H 0082+D1 POP D 0083+C1 POP B 0084+F1 POP PSW 0085 2A2004EB0E lhld xprog ! xchg ! mvi c,9 ! call BDOS printf ' ' 008E+F5 PUSH PSW 008F+C5 PUSH B 0090+D5 PUSH D 0091+E5 PUSH H 0092+0E09 MVI C,PRINTSTR 0094+11A100 LXI D,??0004 0097+CD0500 CALL BDOS 009A+E1 POP H 009B+D1 POP D 009C+C1 POP B 009D+F1 POP PSW 009E+C3A300 JMP ??0003 00A1+20 ??0004 DB ' ' 00A2+24 DB '$' IF A$MONTH LT 10 conout ' ' 00A3+F5 PUSH PSW 00A4+C5 PUSH B 00A5+D5 PUSH D 00A6+E5 PUSH H 00A7+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL 00A9+1E20 MVI E,' ' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED 00AB+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT 00AE+E1 POP H 00AF+D1 POP D 00B0+C1 POP B 00B1+F1 POP PSW ENDIF IF A$DAY LT 10 conout ' ' ENDIF 00B2 210300 lxi h,A$MONTH 00B5 CD0000 call pr$d$word conout '/' 00B8+F5 PUSH PSW 00B9+C5 PUSH B 00BA+D5 PUSH D 00BB+E5 PUSH H 00BC+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL 00BE+1E2F MVI E,'/' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED 00C0+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT 00C3+E1 POP H 00C4+D1 POP D 00C5+C1 POP B 00C6+F1 POP PSW 00C7 211F00 lxi h,A$DAY 00CA CD0000 call pr$d$word conout '/' 00CD+F5 PUSH PSW 00CE+C5 PUSH B 00CF+D5 PUSH D 00D0+E5 PUSH H 00D1+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL 00D3+1E2F MVI E,'/' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED 00D5+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT 00D8+E1 POP H 00D9+D1 POP D 00DA+C1 POP B 00DB+F1 POP PSW 00DC 21DD07 lxi h,A$YEAR 00DF CD0000 call pr$d$word printf ' ' 00E2+F5 PUSH PSW 00E3+C5 PUSH B 00E4+D5 PUSH D 00E5+E5 PUSH H 00E6+0E09 MVI C,PRINTSTR 00E8+11F500 LXI D,??0006 00EB+CD0500 CALL BDOS 00EE+E1 POP H 00EF+D1 POP D 00F0+C1 POP B 00F1+F1 POP PSW 00F2+C3F800 JMP ??0005 00F5+2020 ??0006 DB ' ' 00F7+24 DB '$' printf 'Version ' 00F8+F5 PUSH PSW 00F9+C5 PUSH B 00FA+D5 PUSH D 00FB+E5 PUSH H 00FC+0E09 MVI C,PRINTSTR 00FE+110B01 LXI D,??0008 0101+CD0500 CALL BDOS 0104+E1 POP H 0105+D1 POP D 0106+C1 POP B 0107+F1 POP PSW 0108+C31401 JMP ??0007 010B+5665727369??0008 DB 'Version ' 0113+24 DB '$' 0114 210200 lxi h,A$RMJ 0117 CD0000 call pr$d$word conout '.' 011A+F5 PUSH PSW 011B+C5 PUSH B 011C+D5 PUSH D 011D+E5 PUSH H 011E+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL 0120+1E2E MVI E,'.' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED 0122+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT 0125+E1 POP H 0126+D1 POP D 0127+C1 POP B 0128+F1 POP PSW 0129 210500 lxi h,A$RMN 012C CD0000 call pr$d$word conout '.' 012F+F5 PUSH PSW 0130+C5 PUSH B 0131+D5 PUSH D 0132+E5 PUSH H 0133+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL 0135+1E2E MVI E,'.' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED 0137+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT 013A+E1 POP H 013B+D1 POP D 013C+C1 POP B 013D+F1 POP PSW 013E 210000 lxi h,A$RUP 0141 CD0000 call pr$d$word printf ' (' 0144+F5 PUSH PSW 0145+C5 PUSH B 0146+D5 PUSH D 0147+E5 PUSH H 0148+0E09 MVI C,PRINTSTR 014A+115701 LXI D,??0010 014D+CD0500 CALL BDOS 0150+E1 POP H 0151+D1 POP D 0152+C1 POP B 0153+F1 POP PSW 0154+C35A01 JMP ??0009 0157+2028 ??0010 DB ' (' 0159+24 DB '$' 015A 210100 lxi h,A$RTP 015D CD0000 call pr$d$word conout ')' 0160+F5 PUSH PSW 0161+C5 PUSH B 0162+D5 PUSH D 0163+E5 PUSH H 0164+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL 0166+1E29 MVI E,')' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED 0168+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT 016B+E1 POP H 016C+D1 POP D 016D+C1 POP B 016E+F1 POP PSW print crlf 016F+F5 PUSH PSW 0170+C5 PUSH B 0171+D5 PUSH D 0172+E5 PUSH H 0173+0E09 MVI C,PRINTSTR 0175+112C04 LXI D,CRLF 0178+CD0500 CALL BDOS 017B+E1 POP H 017C+D1 POP D 017D+C1 POP B 017E+F1 POP PSW printf 'S/N ' 017F+F5 PUSH PSW 0180+C5 PUSH B 0181+D5 PUSH D 0182+E5 PUSH H 0183+0E09 MVI C,PRINTSTR 0185+119201 LXI D,??0012 0188+CD0500 CALL BDOS 018B+E1 POP H 018C+D1 POP D 018D+C1 POP B 018E+F1 POP PSW 018F+C39701 JMP ??0011 0192+532F4E20 ??0012 DB 'S/N ' 0196+24 DB '$' 0197 2A2404EB0E lhld xprod ! xchg ! mvi c,9 ! call BDOS conout '-' 01A0+F5 PUSH PSW 01A1+C5 PUSH B 01A2+D5 PUSH D 01A3+E5 PUSH H 01A4+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL 01A6+1E2D MVI E,'-' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED 01A8+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT 01AB+E1 POP H 01AC+D1 POP D 01AD+C1 POP B 01AE+F1 POP PSW 01AF 2A2604EB0E lhld xorig ! xchg ! mvi c,9 ! call BDOS conout '-' 01B8+F5 PUSH PSW 01B9+C5 PUSH B 01BA+D5 PUSH D 01BB+E5 PUSH H 01BC+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL 01BE+1E2D MVI E,'-' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED 01C0+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT 01C3+E1 POP H 01C4+D1 POP D 01C5+C1 POP B 01C6+F1 POP PSW ; print xser 01C7 2A2804EB0E lhld xser ! xchg ! mvi c,9 ! call BDOS printf ' ' 01D0+F5 PUSH PSW 01D1+C5 PUSH B 01D2+D5 PUSH D 01D3+E5 PUSH H 01D4+0E09 MVI C,PRINTSTR 01D6+11E301 LXI D,??0014 01D9+CD0500 CALL BDOS 01DC+E1 POP H 01DD+D1 POP D 01DE+C1 POP B 01DF+F1 POP PSW 01E0+C3E501 JMP ??0013 01E3+20 ??0014 DB ' ' 01E4+24 DB '$' ; printf 'All Rights Reserved' printf 'Licensed under GPL3' 01E5+F5 PUSH PSW 01E6+C5 PUSH B 01E7+D5 PUSH D 01E8+E5 PUSH H 01E9+0E09 MVI C,PRINTSTR 01EB+11F801 LXI D,??0016 01EE+CD0500 CALL BDOS 01F1+E1 POP H 01F2+D1 POP D 01F3+C1 POP B 01F4+F1 POP PSW 01F5+C30C02 JMP ??0015 01F8+4C6963656E??0016 DB 'Licensed under GPL3' 020B+24 DB '$' print crlf 020C+F5 PUSH PSW 020D+C5 PUSH B 020E+D5 PUSH D 020F+E5 PUSH H 0210+0E09 MVI C,PRINTSTR 0212+112C04 LXI D,CRLF 0215+CD0500 CALL BDOS 0218+E1 POP H 0219+D1 POP D 021A+C1 POP B 021B+F1 POP PSW printf 'Copyright (C) 2011-12' 021C+F5 PUSH PSW 021D+C5 PUSH B 021E+D5 PUSH D 021F+E5 PUSH H 0220+0E09 MVI C,PRINTSTR 0222+112F02 LXI D,??0018 0225+CD0500 CALL BDOS 0228+E1 POP H 0229+D1 POP D 022A+C1 POP B 022B+F1 POP PSW 022C+C34502 JMP ??0017 022F+436F707972??0018 DB 'Copyright (C) 2011-12' 0244+24 DB '$' 0245 2A2A04EB0E lhld xnam ! xchg ! mvi c,9 ! call BDOS print crlf 024E+F5 PUSH PSW 024F+C5 PUSH B 0250+D5 PUSH D 0251+E5 PUSH H 0252+0E09 MVI C,PRINTSTR 0254+112C04 LXI D,CRLF 0257+CD0500 CALL BDOS 025A+E1 POP H 025B+D1 POP D 025C+C1 POP B 025D+F1 POP PSW printf '----------------------------------------' 025E+F5 PUSH PSW 025F+C5 PUSH B 0260+D5 PUSH D 0261+E5 PUSH H 0262+0E09 MVI C,PRINTSTR 0264+117102 LXI D,??0020 0267+CD0500 CALL BDOS 026A+E1 POP H 026B+D1 POP D 026C+C1 POP B 026D+F1 POP PSW 026E+C39A02 JMP ??0019 0271+2D2D2D2D2D??0020 DB '----------------------------------------' 0299+24 DB '$' print crlf 029A+F5 PUSH PSW 029B+C5 PUSH B 029C+D5 PUSH D 029D+E5 PUSH H 029E+0E09 MVI C,PRINTSTR 02A0+112C04 LXI D,CRLF 02A3+CD0500 CALL BDOS 02A6+E1 POP H 02A7+D1 POP D 02A8+C1 POP B 02A9+F1 POP PSW 02AA C9 ret ; entered with argv in hl public x$sbanner x$sbanner: 02AB 221E04 shld argv 02AE 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xprog ! xchg 02B7 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xvers ! xchg 02C0 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xprod ! xchg 02C9 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xorig ! xchg 02D2 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xser ! xchg 02DB 5E235623EB mov e,m ! inx h ! mov d,m ! inx h ! xchg ! shld xnam ! xchg ; printf '----------------------------------------' ; print crlf 02E4 2A2004EB0E lhld xprog ! xchg ! mvi c,9 ! call BDOS printf ' ' 02ED+F5 PUSH PSW 02EE+C5 PUSH B 02EF+D5 PUSH D 02F0+E5 PUSH H 02F1+0E09 MVI C,PRINTSTR 02F3+110003 LXI D,??0022 02F6+CD0500 CALL BDOS 02F9+E1 POP H 02FA+D1 POP D 02FB+C1 POP B 02FC+F1 POP PSW 02FD+C30203 JMP ??0021 0300+20 ??0022 DB ' ' 0301+24 DB '$' IF A$MONTH LT 10 conout ' ' 0302+F5 PUSH PSW 0303+C5 PUSH B 0304+D5 PUSH D 0305+E5 PUSH H 0306+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL 0308+1E20 MVI E,' ' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED 030A+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT 030D+E1 POP H 030E+D1 POP D 030F+C1 POP B 0310+F1 POP PSW ENDIF IF A$DAY LT 10 conout ' ' ENDIF 0311 210300 lxi h,A$MONTH 0314 CD0000 call pr$d$word conout '/' 0317+F5 PUSH PSW 0318+C5 PUSH B 0319+D5 PUSH D 031A+E5 PUSH H 031B+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL 031D+1E2F MVI E,'/' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED 031F+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT 0322+E1 POP H 0323+D1 POP D 0324+C1 POP B 0325+F1 POP PSW 0326 211F00 lxi h,A$DAY 0329 CD0000 call pr$d$word conout '/' 032C+F5 PUSH PSW 032D+C5 PUSH B 032E+D5 PUSH D 032F+E5 PUSH H 0330+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL 0332+1E2F MVI E,'/' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED 0334+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT 0337+E1 POP H 0338+D1 POP D 0339+C1 POP B 033A+F1 POP PSW 033B 21DD07 lxi h,A$YEAR 033E CD0000 call pr$d$word printf ' ' 0341+F5 PUSH PSW 0342+C5 PUSH B 0343+D5 PUSH D 0344+E5 PUSH H 0345+0E09 MVI C,PRINTSTR 0347+115403 LXI D,??0024 034A+CD0500 CALL BDOS 034D+E1 POP H 034E+D1 POP D 034F+C1 POP B 0350+F1 POP PSW 0351+C35703 JMP ??0023 0354+2020 ??0024 DB ' ' 0356+24 DB '$' printf 'Vers. ' 0357+F5 PUSH PSW 0358+C5 PUSH B 0359+D5 PUSH D 035A+E5 PUSH H 035B+0E09 MVI C,PRINTSTR 035D+116A03 LXI D,??0026 0360+CD0500 CALL BDOS 0363+E1 POP H 0364+D1 POP D 0365+C1 POP B 0366+F1 POP PSW 0367+C37103 JMP ??0025 036A+566572732E??0026 DB 'Vers. ' 0370+24 DB '$' 0371 210200 lxi h,A$RMJ 0374 CD0000 call pr$d$word conout '.' 0377+F5 PUSH PSW 0378+C5 PUSH B 0379+D5 PUSH D 037A+E5 PUSH H 037B+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL 037D+1E2E MVI E,'.' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED 037F+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT 0382+E1 POP H 0383+D1 POP D 0384+C1 POP B 0385+F1 POP PSW 0386 210500 lxi h,A$RMN 0389 CD0000 call pr$d$word conout '.' 038C+F5 PUSH PSW 038D+C5 PUSH B 038E+D5 PUSH D 038F+E5 PUSH H 0390+0E02 MVI C,CWRITE ; SET FOR CONSOLE OUTPUT BDOS CALL 0392+1E2E MVI E,'.' ; PLACE OUTPUT CHARACTER IN E AS REQUIRED 0394+CD0500 CALL BDOS ; CALL BDOS FUNCTION ENTRY POINT 0397+E1 POP H 0398+D1 POP D 0399+C1 POP B 039A+F1 POP PSW 039B 210000 lxi h,A$RUP 039E CD0000 call pr$d$word printf ' ( ' 03A1+F5 PUSH PSW 03A2+C5 PUSH B 03A3+D5 PUSH D 03A4+E5 PUSH H 03A5+0E09 MVI C,PRINTSTR 03A7+11B403 LXI D,??0028 03AA+CD0500 CALL BDOS 03AD+E1 POP H 03AE+D1 POP D 03AF+C1 POP B 03B0+F1 POP PSW 03B1+C3B803 JMP ??0027 03B4+202820 ??0028 DB ' ( ' 03B7+24 DB '$' 03B8 210100 lxi h,A$RTP 03BB CD0000 call pr$d$word printf ') ' 03BE+F5 PUSH PSW 03BF+C5 PUSH B 03C0+D5 PUSH D 03C1+E5 PUSH H 03C2+0E09 MVI C,PRINTSTR 03C4+11D103 LXI D,??0030 03C7+CD0500 CALL BDOS 03CA+E1 POP H 03CB+D1 POP D 03CC+C1 POP B 03CD+F1 POP PSW 03CE+C3D403 JMP ??0029 03D1+2920 ??0030 DB ') ' 03D3+24 DB '$' printf 'COPR Douglas Goodall Licensed w/GPLv3' 03D4+F5 PUSH PSW 03D5+C5 PUSH B 03D6+D5 PUSH D 03D7+E5 PUSH H 03D8+0E09 MVI C,PRINTSTR 03DA+11E703 LXI D,??0032 03DD+CD0500 CALL BDOS 03E0+E1 POP H 03E1+D1 POP D 03E2+C1 POP B 03E3+F1 POP PSW 03E4+C30D04 JMP ??0031 03E7+434F505220??0032 DB 'COPR Douglas Goodall Licensed w/GPLv3' 040C+24 DB '$' print crlf 040D+F5 PUSH PSW 040E+C5 PUSH B 040F+D5 PUSH D 0410+E5 PUSH H 0411+0E09 MVI C,PRINTSTR 0413+112C04 LXI D,CRLF 0416+CD0500 CALL BDOS 0419+E1 POP H 041A+D1 POP D 041B+C1 POP B 041C+F1 POP PSW 041D C9 ret ;---------------------------------------------------------------- 041E argv ds 2 ;---------------- 0420 xprog ds 2 0422 xvers ds 2 0424 xprod ds 2 0426 xorig ds 2 0428 xser ds 2 042A xnam ds 2 042C 0D0A24 crlf db CR,LF,'$' 042F end