Topic : TOS - das Betriebssystem
Author :
Version : tos.hyp (5. März 2013)
Subject : Programmieren/Atari
Nodes : 3001
Index Size : 93602
HCP-Version : 5
Compiled on : Atari
@charset : atarist
@lang :
@default : Titel
@help :
@options : +g -i -s +x +zz -t4
@width : 70
View Ref-File7.10.27 Bindings für v_opnprn TOS
C: int16_t v_opnprn( int16_t base_handle, PRN_SETTINGS
*settings, int16_t *work_out );
Umsetzung:
int16_t v_opnprn( int16_t base_handle, PRN_SETTINGS *settings,
int16_t *work_out )
{
int16 work_in[16];
int16 i;
vdi_pb.intin = (int *) work_in;
vdi_pb.intout = (int *) work_out;
vdi_pb.ptsout = (int *) work_out + 45;
work_in[0] = settings->driver_id; /* Treibernummer */
for ( i = 1; i < 10; i++ )
work_in[i] = 1;
work_in[10] = 2; /* Rasterkoordinaten benutzen */
work_in[11] = (int16) settings->size_id; /* Seitenformat aus settings benutzen */
*(int8 **) &work_in[12] = settings->device; /* Ausgabekanal aus settings benutzen */
*(PRN_SETTINGS **) &work_in[14] = settings; /* Druckereinstellung */
contrl[0] = 1; /* Funktionsnummer */
contrl[1] = 0;
contrl[3] = 16; /* erweiterte Parameteranzahl */
contrl[6] = base_handle;
vdi( &vdi_pb ); /* Treiber öffnen */
vdi_pb.intin = (int *) intin; /* Zeiger zurücksetzen */
vdi_pb.intout = (int *) intout;
vdi_pb.ptsout = (int *) ptsout;
return( contrl[6] );
}
GEM-Arrays:
Adresse Feldelement Belegung
contrl contrl[0] 1 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 6 # Einträge in ptsout
contrl+6 contrl[3] 16 # Einträge in intin
contrl+8 contrl[4] 45 # Einträge in intout
contrl+10 contrl[5] 1 # Unterfunktion
contrl+12 contrl[6] base_handle
intin intin[0..19] work_in[0..15]
intout intout[0..44] work_out[0..44]
ptsout ptsout[0..11] work_out[45..56]