/* Diese Bibliothek ist fuer den KC85/4 mit Floppy geschrieben. Es werden die Funktionen aus dem 'Handbuch fuer den Programmierer' Seite 74 realisiert. Uwe Felgentreu / O-5210 Arnstadt / Am Fuerstenberg 46 / 15. Oktober 91 weiterbearbeitet: ML-Soft, 06.02.1994 ------------------------------------------------------------------------------- Funktionen: PSET(xx,y) PRES(xx,y) GFARB(f) LINE(xx1,y1,xx2,y2) CIRCL(xx,y,r) WINDOW(n) SOUND(t1,v1,t2,v2,l,z) TFARB(f,h) IBM() ASCII() WININI(n,x1,y1,x2,y2) GCLS() INK(f) BACK(h) BSMODE() READ1(aa) READN(aa) WRITE1(aa,b) WRITEN(aa,nn) GOSUB(aa) CAOSBS(b) USOUT2(b) USOUT3(b) CAOSP(n) PCEXIT() ZSATZ(s) PAGEMOD(s) KBDMOD(s) IRMEB(s) IRMHI() IRMLO() MSWITCH(m,s) PTEST(xx,y) FKEY(n) LOCATE(x,y) CURSOR(s) BEEP() HOME() CUU() CUO() CUL() CUR() CLS() OLDFARB() OLDINK() OLDBACK() FEN(sa,se,za,ze,v,h) RAHMEN(xa,xe,ya,ye,r) D_RAHMEN(xa,xe,ya,ye,r) FEN_S(sa,se,za,ze,v,h,s) F_RAHMEN(sa,se,za,ze,r) FEN_R(sa,se,za,ze,v,h,r) FEN_RS(sa,se,za,ze,v,h,r,s) TIMESE() TIMEMI() TIMEST() TIMESET(st,mi,se) DATE(puffer) Legende: xx.......X-Koordinate 0...319 y........Y-Koordinate 0...255 oder 0...31 x........X-Koordinate 0...39 f........Farbe 0...15 h........Farbe 0...7 s........Steuerbyte 0...255 n........Nummerbyte 0...255 m........Modulschacht 0...255 b........Byte 0...255 aa.......Adresse 0...2^16-1 nn.......Anzahl 0...2^16-1 r........Radius 0...255 st.......Stunde 0...23 mi.......Minute 0...59 se.......Sekunde 0...59 t1,t2....Takt-CTC 0...255 v1,v2....Vorteiler-CTC 0...255 l........Lautstaerke 0...255 z........Tondauer 0...255 --------------------------------------------------------------- ** BIOS-Ausgaben: */ f1esc(xx,y) /* BIOS-Ausgabe Adresse, Byte */ unsigned xx; int y; { bios(4,xx%256); bios(4,xx/256); bios(4,y); } f2esc(f) /* BIOS-Ausgabe Datenbyte */ int f; { bios(4,f); } f3esc(xx1,y1,xx2,y2) /* BIOS-Ausgabe 2 mal Wort, Byte */ int xx1,y1,xx2,y2; { f1esc(xx1,y1); f1esc(xx2,y2); } f4esc(xx,y,r) /* BIOS-Ausgabe Wort, Byte, Byte */ int xx,y,r; { f1esc(xx,y); bios(4,r); } f5esc(n,x1,y1,x2,y2) /* BIOS-Ausgabe 5 Datenbytes */ int n,x1,y1,x2,y2; { bios(4,n); bios(4,x1); bios(4,y1); bios(4,x2); bios(4,y2); } f6esc(f,h) /* BIOS-Ausgabe 2 Datenbytes */ int f,h; { bios(4,f); bios(4,h); } f7esc(xx) /* BIOS-Ausgebe Adresse */ unsigned xx; { bios(4,xx%256); bios(4,xx/256); } fn(n) /* Aufruf ESCape-Funktion */ int n; { bios(4,27); bios(4,n); } /* ESCape-Funktionen: */ pset(x,y) int x,y; { fn(65); f1esc(x%320,y); } pres(x,y) int x,y; { fn(66); f1esc(x%320,y); } gfarb(f) int f; { fn(67); f2esc(f%16); } line(x1,y1,x2,y2) int x1,y1,x2,y2; { fn(68); f3esc(x1%320,y1,x2%320,y2); } circl(x,y,r) int x,y,r; { fn(69); f4esc(x%320,y,r); } window(n) int n; { fn(70); f2esc(n%10); } sound(t1,v1,t2,v2,l,z) int t1,v1,t2,v2,l,z; { fn(71); f5esc(t1,v1,t2,v2,l); f2esc(z); } tfarb(f,h) int f,h; { fn(72); f6esc(f%16,h%8); } int ibm() { int cc; char c; fn(74); cc=0; do { cc++; c=peek(0xffb6)&16; } while((cc<30000)&&(c==0)); return((c>>4)-1); } ascii() { fn(75); } winini(n,x1,y1,x2,y2) int n,x1,y1,x2,y2; { x1%=256; y1%=256; x2%=256; y2%=256; if(x1+x2<=40) { if(y1+y2<=32) { fn(76); f5esc(n,x1,y1,x2,y2); } } } gcls() { fn(77); } ink(f) int f; { fn(78); f2esc(f%16); } back(h) int h; { fn(79); f2esc(h%8); } bsmode(s) int s; { s/=40; if(s%2 != (peek(0xffb6)&1)) { fn(80); } } int read1(aa) unsigned aa; { char *mempuf,*memanf; mempuf=0xfe00; memanf=0xffae; *memanf=255; fn(81); f7esc(aa); do {} while(*memanf!=0); return(*mempuf); } readn(aa,n) unsigned aa; int n; { fn(82); f1esc(aa,n); } write1(aa,b) unsigned aa; int b; { fn(83); f1esc(aa,b); } writen(aa,nn) unsigned aa,nn; { fn(84); f7esc(aa); f7esc(nn); } gosub(aa) unsigned aa; { fn(85); f7esc(aa); } caosbs(b) int b; { fn(86); f2esc(b); } usout2(b) int b; { fn(87); f2esc(b); } usout3(b) int b; { fn(88); f2esc(b); } caosp(n) int n; { if(n<=0x50) { fn(91); f2esc(n); } } pcexit() { fn(92); } zsatz(s) int s; { if(s%2 != (peek(0xffb6)&2)>>1) { fn(93); } } pagemod(s) int s; { if(s%2 != (peek(0xffb6)&8)>>3) { fn(94); } } kbdmod(s) int s; { if(s%2 != (peek(0xffb6)&4)>>2) { fn(95); } } irmeb(s) int s; { fn(96); f2esc(s); } irmhi() { fn(97); } irmlo() { fn(98); } mswitch(m,s) int m,s; { fn(99); f6esc(m,s); } int ptest(xx,y) int xx,y; { char *memanf; memanf=0xffae; *memanf=255; write1(0xb7d5,y); fn(100); f7esc(xx%320); do {} while(*memanf==255); return(*memanf); } fkey(n) int n; { fn(101); f2esc(n%16); } /* zusaetzliche Funktionen aus MicroDOS: */ locate(x,y) int x,y; { bios(4,27); bios(4,128+x); bios(4,128+y); } cursor(s) int s; { bdos(2,(peek(0xffb6)&16?3:0x83)-s%2); } invers(s) int s; { bdos(2,(peek(0xffb6)&16?4:0x84)+s%2); } beep() { bdos(2,7); } home() { bdos(2,1); } cuu() { bdos(2,10); } cuo() { bdos(2,26); } cul() { bdos(2,8); } cur() { bdos(2,21); } cls() { bdos(2,12); } int oldfarb() { return(read1(0xb7a3)); } int oldink() { return((oldfarb(0xb7a3)%128)>>3); } int oldback() { return(oldfarb(0xb7a3)&7); } /* Funktionen fuer Fenstertechnik: */ fen(sa,se,za,ze,v,h) int sa,se,za,ze,v,h; { winini(0,sa,za,(se-sa)+1,(ze-za)+1); window(0); tfarb(v,h); caosbs(12); } rahmen(xa,xe,ya,ye,r) int xa,xe,ya,ye,r; { gfarb(r); line(xa,ya,xa,ye); line(xa,ye,xe,ye); line(xe,ye,xe,ya); line(xe,ya,xa,ya); } d_rahmen(xa,xe,ya,ye,r) int xa,xe,ya,ye,r; { rahmen(xa+3,xe+4,ya-4,ye-5,r); rahmen(xa+1,xe+6,ya-2,ye-7,r); } fen_s(sa,se,za,ze,v,h,s) int sa,se,za,ze,v,h,s; { fen(sa+1,se+1,za+1,ze+1,v,s); fen(sa,se,za,ze,v,h); } f_rahmen(sa,se,za,ze,r) int sa,se,za,ze,r; { d_rahmen(sa*8,se*8,256-(za*8),256-(ze*8),r); } fen_r(sa,se,za,ze,v,h,r) int sa,se,za,ze,v,h,r; { fen(sa,se,za,ze,v,h); f_rahmen(sa,se,za,ze,r); } fen_rs(sa,se,za,ze,v,h,r,s) int sa,se,za,ze,v,h,r,s; { fen_s(sa,se,za,ze,v,h,s); f_rahmen(sa,se,za,ze,r); } /* ENDE */