*---------------------------------------------------------------* * banner.aii * * ProLine banner maker utilities * * * * Copyright 1985-1992 Morgan Davis Group * * * * When Who Version Description * * ------- --- -------- --------------------------------------- * * 24feb92 mwd 1.0b1 Created from old Merlin source * 3jun92 mwd 1.0 Official release * machine M65C02 case on include 'handy.mac' include 'mega2.equ' include 'omm.equ' include 'ommids.equ' string equ $05 ptr equ $08 *------------------------------* * Banner Segment Header * *------------------------------* bn PROC hVERS DC.W $0000 ;W: driver loader version hID DC.W 'bn' ;W: driver's two-byte signature hSIZE DC.W END-START ;W: size of driver (not including header) hORG DC.W START ;W: org of driver pc phase hAMPC DC.W AMPERCT ;W: ampersand command lookup table address hKIND DC.W $0000 ;W: driver kind hRSRV1 DC.W $0000 ;W: reserved 1 hRSRV2 DC.W $0000 ;W: reserved 2 START cmp #MSG_AMPR ;user service call? beq doampr ;yes cmp #MSG_INFO ;get info string? bne startrts ;no move word,a_info,a1 startrts rts *------------------------------* * Amper Command Dispatcher * *------------------------------* doampr jsr chkopn move word,a_banner,a1 ldy #OMM_PUTWORD ldx #OMM_ID jsr OMMVEC jmp chkcls ; call bannerAddr, string, pixelchar, monospace, bold banner jsr chkcom ;skip comma after call address ldy #OMM_GETSTR ;parse string ldx #OMM_ID jsr OMMVEC ldy #2 ;copy the descriptor _aadesc lda lowtr,y sta string,y dey bpl _aadesc pha ;save string length ldy #0 ;get three options _bflags jsr chrgot ;end of statement? beq _bcls ;yes phy jsr combyte ;skip comma, get monospace flag ply txa sta options,y iny cpy #3 bne _bflags _bcls pla ;see if length is zero bne ban ;no _aabye rts ;back to basic ban move byte,#1,rowmask ;init row mask banshee zero byte,chrindx ;init char index move byte,string,count ;get length of string banjo ldy chrindx lda (string+1),y ;get a character and #$7f sec sbc #32 ;we can't do controls bmi done ;nope sta ptr stz ptr+1 ldx #3 ;ptr = char * 8 _abloop aslw ptr ;set up index dex bne _abloop addw a_chars,ptr ;add offset to charset address lda #7 ;assume monospace ldx monospace ;check it bne _absetsz ;its mono lda (ptr) ;get width byte _absetsz sta _absize+1 ldy #0 _abloop2 iny ldx #$a0 ;assume space lda (ptr),y ;get this character row data and rowmask beq _abprint ldx pixelchar _abprint txa ora #$80 jsr cout ldx bold ;bold (double-width pixel)? beq _absize ;no jsr cout ;show it again _absize cpy #00 bne _abloop2 done inc chrindx dec count bne banjo jsr crout asl rowmask bcc banshee rts *------------------------------* * Immediate Mode Addresses * *------------------------------* DC.B 0 ;flag start of data section a_info DC.W info a_banner dc.w banner a_chars dc.w chars DC.W $0000 *------------------------------* * Data Section * *------------------------------* msb on info cstr '&SYSDATE Banner 3.0' msb off AMPERCT cstr 'BANNER' ;BANNER(bannerAddr) dc.b -1 count DS.B 1 chrindx DS.B 1 rowmask DS.B 1 options pixelchar dc.b '#' bold dc.b 0 monospace dc.b 0 *------------------------------* 8 pixels tall by 7 pixels wide * The Character Set * *------------------------------* chars dc.b 3 ; (spc) dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b 3 ; ! dc.b %00000000 dc.b %01011111 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b 5 ; " dc.b %00000000 dc.b %00000111 dc.b %00000000 dc.b %00000111 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b 7 ; # dc.b %00000000 dc.b %00010100 dc.b %01111111 dc.b %00010100 dc.b %01111111 dc.b %00010100 dc.b %00000000 dc.b 7 ; $ dc.b %00000000 dc.b %00100100 dc.b %00101010 dc.b %01111111 dc.b %00101010 dc.b %00010010 dc.b %00000000 dc.b 7 ; % dc.b %00000000 dc.b %00100011 dc.b %00010011 dc.b %00001000 dc.b %01100100 dc.b %01100010 dc.b %00000000 dc.b 7 ; & dc.b %00000000 dc.b %00110110 dc.b %01001001 dc.b %01010110 dc.b %00100000 dc.b %01010000 dc.b %00000000 dc.b 3 ; ' dc.b %00000000 dc.b %00000111 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b 5 ; ( dc.b %00000000 dc.b %00011100 dc.b %00100010 dc.b %01000001 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b 5 ; ) dc.b %00000000 dc.b %01000001 dc.b %00100010 dc.b %00011100 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b 7 ; * dc.b %00000000 dc.b %00100010 dc.b %00010100 dc.b %01111111 dc.b %00010100 dc.b %00100010 dc.b %00000000 dc.b 7 ; + dc.b %00000000 dc.b %00001000 dc.b %00001000 dc.b %00111110 dc.b %00001000 dc.b %00001000 dc.b %00000000 dc.b 4 ; , dc.b %00000000 dc.b %10000000 dc.b %01100000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b 7 ; - dc.b %00000000 dc.b %00001000 dc.b %00001000 dc.b %00001000 dc.b %00001000 dc.b %00001000 dc.b %00000000 dc.b 3 ; , dc.b %00000000 dc.b %01000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b 7 ; / dc.b %00000000 dc.b %00100000 dc.b %00010000 dc.b %00001000 dc.b %00000100 dc.b %00000010 dc.b %00000000 dc.b 7 ; 0 dc.b %00000000 dc.b %00111110 dc.b %01010001 dc.b %01001001 dc.b %01000101 dc.b %00111110 dc.b %00000000 dc.b 5 ; 1 dc.b %00000000 dc.b %01000010 dc.b %01111111 dc.b %01000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b 7 ; 2 dc.b %00000000 dc.b %01100010 dc.b %01010001 dc.b %01001001 dc.b %01001001 dc.b %01000110 dc.b %00000000 dc.b 7 ; 3 dc.b %00000000 dc.b %00100001 dc.b %01000001 dc.b %01001001 dc.b %01001101 dc.b %00110011 dc.b %00000000 dc.b 7 ; 4 dc.b %00000000 dc.b %00011000 dc.b %00010100 dc.b %00010010 dc.b %01111111 dc.b %00010000 dc.b %00000000 dc.b 7 ; 5 dc.b %00000000 dc.b %00100111 dc.b %01000101 dc.b %01000101 dc.b %01000101 dc.b %00111001 dc.b %00000000 dc.b 7 ; 6 dc.b %00000000 dc.b %00111100 dc.b %01001010 dc.b %01001001 dc.b %01001001 dc.b %00110001 dc.b %00000000 dc.b 7 ; 7 dc.b %00000000 dc.b %00000001 dc.b %01110001 dc.b %00001001 dc.b %00000101 dc.b %00000011 dc.b %00000000 dc.b 7 ; 8 dc.b %00000000 dc.b %00110110 dc.b %01001001 dc.b %01001001 dc.b %01001001 dc.b %00110110 dc.b %00000000 dc.b 7 ; 9 dc.b %00000000 dc.b %01000110 dc.b %01001001 dc.b %01001001 dc.b %00101001 dc.b %00011110 dc.b %00000000 dc.b 3 ; : dc.b %00000000 dc.b %00010100 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b 4 ; ; dc.b %00000000 dc.b %01000000 dc.b %00110100 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b 7 ; < dc.b %00000000 dc.b %00001000 dc.b %00010100 dc.b %00100010 dc.b %01000001 dc.b %00000000 dc.b %00000000 dc.b 7 ; = dc.b %00000000 dc.b %00010100 dc.b %00010100 dc.b %00010100 dc.b %00010100 dc.b %00010100 dc.b %00000000 dc.b 7 ; > dc.b %00000000 dc.b %01000001 dc.b %00100010 dc.b %00010100 dc.b %00001000 dc.b %00000000 dc.b %00000000 dc.b 7 ; ? dc.b %00000000 dc.b %00000010 dc.b %00000001 dc.b %01011001 dc.b %00000101 dc.b %00000010 dc.b %00000000 ;-------------------------------- ************* THE FOLLOWING LINE MUST BE CONVERTED MANUALLY!!!!! ************* dc.b 7 ; @ dc.b %00000000 dc.b %00111110 dc.b %01000001 dc.b %01011101 dc.b %01001001 dc.b %01001110 dc.b %00000000 dc.b 7 ; A dc.b %00000000 dc.b %01111100 dc.b %00010010 dc.b %00010001 dc.b %00010010 dc.b %01111100 dc.b %00000000 dc.b 7 ; B dc.b %00000000 dc.b %01111111 dc.b %01001001 dc.b %01001001 dc.b %01001001 dc.b %00110110 dc.b %00000000 dc.b 7 ; C dc.b %00000000 dc.b %00111110 dc.b %01000001 dc.b %01000001 dc.b %01000001 dc.b %00100010 dc.b %00000000 dc.b 7 ; D dc.b %00000000 dc.b %01111111 dc.b %01000001 dc.b %01000001 dc.b %01000001 dc.b %00111110 dc.b %00000000 dc.b 7 ; E dc.b %00000000 dc.b %01111111 dc.b %01001001 dc.b %01001001 dc.b %01001001 dc.b %01000001 dc.b %00000000 dc.b 7 ; F dc.b %00000000 dc.b %01111111 dc.b %00001001 dc.b %00001001 dc.b %00001001 dc.b %00000001 dc.b %00000000 dc.b 7 ; G dc.b %00000000 dc.b %00111110 dc.b %01000001 dc.b %01000001 dc.b %01010001 dc.b %01110001 dc.b %00000000 dc.b 7 ; H dc.b %00000000 dc.b %01111111 dc.b %00001000 dc.b %00001000 dc.b %00001000 dc.b %01111111 dc.b %00000000 dc.b 5 ; I dc.b %00000000 dc.b %01000001 dc.b %01111111 dc.b %01000001 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b 7 ; J dc.b %00000000 dc.b %00100000 dc.b %01000000 dc.b %01000000 dc.b %01000000 dc.b %00111111 dc.b %00000000 dc.b 7 ; K dc.b %00000000 dc.b %01111111 dc.b %00001000 dc.b %00010100 dc.b %00100010 dc.b %01000001 dc.b %00000000 dc.b 7 ; L dc.b %00000000 dc.b %01111111 dc.b %01000000 dc.b %01000000 dc.b %01000000 dc.b %01000000 dc.b %00000000 dc.b 7 ; M dc.b %00000000 dc.b %01111111 dc.b %00000010 dc.b %00001100 dc.b %00000010 dc.b %01111111 dc.b %00000000 dc.b 7 ; N dc.b %00000000 dc.b %01111111 dc.b %00000100 dc.b %00001000 dc.b %00010000 dc.b %01111111 dc.b %00000000 dc.b 7 ; O dc.b %00000000 dc.b %00111110 dc.b %01000001 dc.b %01000001 dc.b %01000001 dc.b %00111110 dc.b %00000000 dc.b 7 ; P dc.b %00000000 dc.b %01111111 dc.b %00001001 dc.b %00001001 dc.b %00001001 dc.b %00000110 dc.b %00000000 dc.b 7 ; Q dc.b %00000000 dc.b %00111110 dc.b %01000001 dc.b %01010001 dc.b %00100001 dc.b %01011110 dc.b %00000000 dc.b 7 ; R dc.b %00000000 dc.b %01111111 dc.b %00001001 dc.b %00011001 dc.b %00101001 dc.b %01000110 dc.b %00000000 dc.b 7 ; S dc.b %00000000 dc.b %00100110 dc.b %01001001 dc.b %01001001 dc.b %01001001 dc.b %00110010 dc.b %00000000 dc.b 7 ; T dc.b %00000000 dc.b %00000001 dc.b %00000001 dc.b %01111111 dc.b %00000001 dc.b %00000001 dc.b %00000000 dc.b 7 ; U dc.b %00000000 dc.b %00111111 dc.b %01000000 dc.b %01000000 dc.b %01000000 dc.b %00111111 dc.b %00000000 dc.b 7 ; V dc.b %00000000 dc.b %00011111 dc.b %00100000 dc.b %01000000 dc.b %00100000 dc.b %00011111 dc.b %00000000 dc.b 7 ; W dc.b %00000000 dc.b %01111111 dc.b %00100000 dc.b %00011000 dc.b %00100000 dc.b %01111111 dc.b %00000000 dc.b 7 ; X dc.b %00000000 dc.b %01100011 dc.b %00010100 dc.b %00001000 dc.b %00010100 dc.b %01100011 dc.b %00000000 dc.b 7 ; Y dc.b %00000000 dc.b %00000011 dc.b %00000100 dc.b %01111000 dc.b %00000100 dc.b %00000011 dc.b %00000000 dc.b 7 ; Z dc.b %00000000 dc.b %01100001 dc.b %01010001 dc.b %01001001 dc.b %01000101 dc.b %01000011 dc.b %00000000 dc.b 7 ; [ dc.b %00000000 dc.b %01111111 dc.b %01111111 dc.b %01000001 dc.b %01000001 dc.b %01000001 dc.b %00000000 dc.b 7 ; \ dc.b %00000000 dc.b %00000010 dc.b %00000100 dc.b %00001000 dc.b %00010000 dc.b %00100000 dc.b %00000000 dc.b 7 ; ] dc.b %00000000 dc.b %01000001 dc.b %01000001 dc.b %01000001 dc.b %01111111 dc.b %01111111 dc.b %00000000 dc.b 7 ; ^ dc.b %00000000 dc.b %00000100 dc.b %00000010 dc.b %00000001 dc.b %00000010 dc.b %00000100 dc.b %00000000 dc.b 7 ; _ dc.b %10000000 dc.b %10000000 dc.b %10000000 dc.b %10000000 dc.b %10000000 dc.b %10000000 dc.b %10000000 ;------------------------------- dc.b 5 ; ` dc.b %00000000 dc.b %00000001 dc.b %00000010 dc.b %00000100 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b 7 ; a dc.b %00000000 dc.b %00100000 dc.b %01010100 dc.b %01010100 dc.b %01010100 dc.b %01111000 dc.b %00000000 dc.b 7 ; b dc.b %00000000 dc.b %01111111 dc.b %01000100 dc.b %01000100 dc.b %01000100 dc.b %00111000 dc.b %00000000 dc.b 7 ; c dc.b %00000000 dc.b %00111000 dc.b %01000100 dc.b %01000100 dc.b %01000100 dc.b %01000100 dc.b %00000000 dc.b 7 ; d dc.b %00000000 dc.b %00111000 dc.b %01000100 dc.b %01000100 dc.b %01000100 dc.b %01111111 dc.b %00000000 dc.b 7 ; e dc.b %00000000 dc.b %00111000 dc.b %01010100 dc.b %01010100 dc.b %01010100 dc.b %01011000 dc.b %00000000 dc.b 7 ; f dc.b %00000000 dc.b %00001000 dc.b %01111110 dc.b %00001001 dc.b %00001001 dc.b %00000010 dc.b %00000000 dc.b 7 ; g dc.b %00000000 dc.b %00011000 dc.b %10100100 dc.b %10100100 dc.b %10100100 dc.b %01111000 dc.b %00000000 dc.b 7 ; h dc.b %00000000 dc.b %01111111 dc.b %00000100 dc.b %00000100 dc.b %00000100 dc.b %01111000 dc.b %00000000 dc.b 5 ; i dc.b %00000000 dc.b %01000100 dc.b %01111101 dc.b %01000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b 6 ; j dc.b %00000000 dc.b %01000000 dc.b %10000000 dc.b %10000100 dc.b %01111101 dc.b %00000000 dc.b %00000000 dc.b 7 ; k dc.b %00000000 dc.b %01111111 dc.b %00010000 dc.b %00010000 dc.b %00101000 dc.b %01000100 dc.b %00000000 dc.b 5 ; l dc.b %00000000 dc.b %01000001 dc.b %01111111 dc.b %01000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b 7 ; m dc.b %00000000 dc.b %01111100 dc.b %00000100 dc.b %00011000 dc.b %00000100 dc.b %01111100 dc.b %00000000 dc.b 7 ; n dc.b %00000000 dc.b %01111100 dc.b %00000100 dc.b %00000100 dc.b %00000100 dc.b %01111000 dc.b %00000000 dc.b 7 ; o dc.b %00000000 dc.b %00111000 dc.b %01000100 dc.b %01000100 dc.b %01000100 dc.b %00111000 dc.b %00000000 dc.b 7 ; p dc.b %00000000 dc.b %11111100 dc.b %00100100 dc.b %00100100 dc.b %00100100 dc.b %00011000 dc.b %00000000 dc.b 7 ; q dc.b %00000000 dc.b %00011000 dc.b %00100100 dc.b %00100100 dc.b %00100100 dc.b %11111100 dc.b %00000000 dc.b 7 ; r dc.b %00000000 dc.b %01111100 dc.b %00001000 dc.b %00000100 dc.b %00000100 dc.b %00000100 dc.b %00000000 dc.b 7 ; s dc.b %00000000 dc.b %01001000 dc.b %01010100 dc.b %01010100 dc.b %01010100 dc.b %00100100 dc.b %00000000 dc.b 7 ; t dc.b %00000000 dc.b %00000100 dc.b %00111111 dc.b %01000100 dc.b %01000100 dc.b %00100000 dc.b %00000000 dc.b 7 ; u dc.b %00000000 dc.b %00111100 dc.b %01000000 dc.b %01000000 dc.b %00100000 dc.b %01111100 dc.b %00000000 dc.b 7 ; v dc.b %00000000 dc.b %00011100 dc.b %00100000 dc.b %01000000 dc.b %00100000 dc.b %00011100 dc.b %00000000 dc.b 7 ; w dc.b %00000000 dc.b %01111100 dc.b %01000000 dc.b %00110000 dc.b %01000000 dc.b %01111100 dc.b %00000000 dc.b 7 ; x dc.b %00000000 dc.b %01000100 dc.b %00101000 dc.b %00010000 dc.b %00101000 dc.b %01000100 dc.b %00000000 dc.b 7 ; y dc.b %00000000 dc.b %00011100 dc.b %10100000 dc.b %10100000 dc.b %10100000 dc.b %01111100 dc.b %00000000 dc.b 7 ; z dc.b %00000000 dc.b %01000100 dc.b %01100100 dc.b %01010100 dc.b %01001100 dc.b %01000100 dc.b %00000000 dc.b 7 ; { dc.b %00000000 dc.b %00001000 dc.b %00111110 dc.b %01110111 dc.b %01000001 dc.b %01000001 dc.b %00000000 dc.b 3 ; | dc.b %00000000 dc.b %11111111 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b %00000000 dc.b 7 ; } dc.b %00000000 dc.b %01000001 dc.b %01000001 dc.b %01110111 dc.b %00111110 dc.b %00001000 dc.b %00000000 dc.b 7 ; ~ dc.b %00000000 dc.b %00000010 dc.b %00000001 dc.b %00000011 dc.b %00000010 dc.b %00000001 dc.b %00000000 dc.b 7 ; (del) dc.b %00000000 dc.b %01010100 dc.b %00101000 dc.b %01010100 dc.b %00101000 dc.b %01010100 dc.b %00000000 END ENDP END