IMD 1.18: 20/07/2019 14:31:26   ë,�IBM 2.0pÐý  ß% *ÿPöÍú3ÀŽÐ¼|ŽØ£zÇx!|ûÍsé• |˜÷&|||£|£|¸ ÷&|ÿ»÷ó|è~r³¡|£~}¸pŽÀŽØ».¡|è¶. |.*|þÀ2äP´èÁXr8.( |v.|.÷& |ØëÎÍÐÀÐÀ%u@@‹Èö|€u3À‹~}êp¾É}èëþ.¬$tM´»Íëñ¸PŽÀ.¡|èC»¸èXr,3ÿ¹ &€ &€M Gâô3ÿ¾ß}¹ üó¦u¿ ¾ë}¹ ó¦uþ€}è¦ÿ´ÍùÃ3Ò÷6|þˆ|3Ò÷6|ˆ|£|Ã.‹|±Òæ. 6|‹Ê†é.‹|Íà Non-System disk or disk error Replace and strike any key when ready Disk Boot failure ibmbio com0ibmdos com0Uªýÿÿ@`€  ÿÏ à @`€ Àà! #@%`'€) +À-à/ÿ/3@5`7€9 ;À=à?ðÿAðÿC@E`G€I KÀMðÿÿÿÿQ S@U`WðÿYðÿ[ðÿÿïÿa c@ÿog€i kÀmàoq s@u`w€ÿ� ƒ@ÿo‡€‰ ‹À�à� ‘ “@ •` —€ ÿé©è9ré›éžè.sé�ué‹éŽèç‡ÚЇÚ"‹µ(ˆ±èŒéb÷è·ڊ‡Ú ‹µ(ˆ±èséI÷è�Š Àué2ÀéöЈ‡Úèjé,÷è‘èe*è›é ÷èÐè)è�é÷èXŠCèÔ&è€é÷èIŠ·è)èpéõö‹µ(S±èè½ [uéïéò‹µ(S±èüè…[téÙéÜè5ŠC‡ÚŠ/Cˆè*ÁþÀséˆÅQRSè¿,[Zˆèué CþÍuíY2Àé Y*ÅöÐþÀþÀˆÃ·èŒ(èüé�öèíSRŠCˆÈèÆ+µKŠ< té ˆÈ:ÅuéþÅëéC‡Ú[QŠ/Cè .‡Úˆèè›+‡ÚˆÈÅY[ˆ‡Úsé’ˆè ÀuéÆ CþÈuø‰µ(è[éöèa‡ÚèP‡ÚŠ/CŠ 0 then character_present := false else begin character_present := true; character := reg.ax.byte[low]; dummy.signed := ord(reg.ax.byte[high]); if dummy.signed < 0 then dummy.signed := 256 + dummy.signed; scan_code := dummy.word; end; end {test_kb_buffer}; {--------------------------------------------------------------------} procedure get_kb_shift_status(var kb_flag: byte); var reg: reg_block; dummy: reg_typ; begin reg.ax.byte[high] := chr(ibm_get_kb_shift_status); bios_interrupt(ibm_keyboard_int,reg); dummy.signed := ord(reg.ax.byte[low]); if dummy.signed < 0 then dummy.signed := 256 + dummy.signed; kb_flag := dummy.word; end {get_kb_shift_status}; {--------------------------------------------------------------------} {--------------------------------------------------------------------} {----------------------------------------} {procedures for temporary rs232 interface} {----------------------------------------} procedure temp_rs232_init(params: byte; module_number: integer); var reg: reg_block; dummy: reg_typ; begin reg.ax.byte[high] := chr(ms_temp_rs232_init); dummy.word := params; reg.ax.byte[low] := chr(dummy.signed); reg.dx.signed := module_number;  bios_interrupt(ms_temp_rs232_int,reg); end {temp_rs232_init}; procedure temp_rs232_send_char(character: char; module_number: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_temp_rs232_send_char); reg.ax.byte[low] := character; reg.dx.signed := module_number; bios_interrupt(ms_temp_rs232_int,reg); end {temp_rs232_send_char}; procedure temp_rs232_rcv_char(var character: char; module_number: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_temp_rs232_rcv_char); reg.dx.signed := module_number; bios_interrupt(ms_temp_rs232_int,reg); character := reg.ax.byte[low]; end {temp_rs232_rcv_char}; procedure temp_rs232_get_status(var port_status: word; module_number: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_temp_rs232_get_status); reg.dx.signed := module_number; bios_interrupt(ms_temp_rs232_int,reg); port_status := reg.ax.word; end {temp_rs232_get_status}; {--------------------------------------------------------------------} {--------------------------------------------------------------------} {---------------------------------------------} {procedures for Mindset unique io entry points} {---------------------------------------------} procedure set_display_device(tv_monitor: byte); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_set_display_device); reg.ax.byte[low] := chr(tv_monitor); {0=tv, 1=monitor} bios_interrupt(ms_io_int,reg); end {set_display_device}; {--------------------------------------------------------------------} procedure set_ext_sync(mode: byte); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_set_ext_sync); reg.ax.byte[low] := chr(mode); bios_interrupt(ms_io_int,reg); end {set_ext_sync}; {--------------------------------------------------------------  ------} procedure set_display_int(scan_line: integer; diagnostic_mark: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_set_display_int); reg.ax.byte[low] := chr(scan_line); reg.bx.byte[low] := chr(diagnostic_mark); bios_interrupt(ms_io_int,reg); end {set_display_int}; {--------------------------------------------------------------------} procedure joystick_io(var a_switch: byte; var b_switch: byte; var a_x: integer; var a_y: integer; var b_x: integer; var b_y: integer); var reg: reg_block; dummy: reg_typ; begin reg.ax.byte[high] := chr(ms_joystick_io); bios_interrupt(ms_io_int,reg); dummy.signed := ord(reg.ax.byte[low]); if dummy.signed < 0 then dummy.signed := 256 + dummy.signed; a_switch := dummy.word; dummy.signed := ord(reg.ax.byte[high]); if dummy.signed < 0 then dummy.signed := 256 + dummy.signed; b_switch := dummy.word; a_x := reg.bx.signed;  a_y := reg.cx.signed; b_x := reg.dx.signed; b_y := reg.si.signed; end {joystick_io}; {--------------------------------------------------------------------} procedure rs232_write_char(character: char; module_number: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_rs232_write_char); reg.ax.byte[low] := character; reg.dx.signed := module_number; bios_interrupt(ms_io_int,reg); end {rs232_write_char}; {--------------------------------------------------------------------} procedure rs232_read_char(var character: char; var comm_status: byte; module_number: integer); var reg: reg_block; dummy: reg_typ; begin reg.ax.byte[high] := chr(ms_rs232_read_char); reg.dx.signed := module_number; bios_interrupt(ms_io_int,reg); dummy.signed := ord(reg.ax.byte[high]); if dummy.signed < 0 then dummy.signed := 256 + dummy.signed;  comm_status := dummy.word; character := reg.ax.byte[low]; end {rs232_read_char}; {--------------------------------------------------------------------} procedure rs232_write_string(string_offset: word; string_segment: word; character_count: integer; module_number: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_rs232_write_string); reg.bx.word := string_offset;  reg.cx.signed := character_count; reg.dx.signed := module_number; reg.es.word := string_segment; bios_interrupt(ms_io_int,reg); end {rs232_write_string}; {--------------------------------------------------------------------} procedure rs232_get_buffer_status(var buffer_status: byte; var avail_words_input: integer; var avail_words_output: integer; module_number: integer);  var reg: reg_block; dummy: reg_typ; begin reg.ax.byte[high] := chr(ms_rs232_get_buffer_status); reg.dx.signed := module_number; bios_interrupt(ms_io_int,reg); dummy.signed := ord(reg.ax.byte[high]); if dummy.signed < 0 then dummy.signed := 256 + dummy.signed; buffer_status := dummy.word; avail_words_input := reg.bx.signed; avail_words_output := reg.cx.signed; end {rs232_get_buffer_status}; {--------------------------------------------------------------------} procedure rs232_set_input_buffer(buffer_offset: word; buffer_segment: word; size_in_words: integer; module_number: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_rs232_set_input_buffer); reg.bx.word := buffer_offset; reg.cx.signed := size_in_words; reg.dx.signed := module_number; reg.es.word := buffer_segment; bios_interrupt(ms_io_int,reg); end {rs232_set_input_buffer}; {--------------------------------------------------------------------} procedure rs232_set_output_buffer(buffer_offset: word; buffer_segment: word; size_in_words: integer; module_number: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_rs232_set_output_buffer); reg.bx.word := buffer_offset; reg.cx.signed := size_in_wor  ds; reg.dx.signed := module_number; reg.es.word := buffer_segment; bios_interrupt(ms_io_int,reg); end {rs232_set_output_buffer}; {--------------------------------------------------------------------} procedure rs232_set_comm_controls(rts_dtr: byte; tx_rs_interrupts: byte; module_number: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_rs232_set_comm_controls); reg.ax.byte[low] := chr(rts_dtr); reg.bx.byte[low] := chr(tx_rs_interrupts); reg.dx.signed := module_number; bios_interrupt(ms_io_int,reg); end {rs232_set_comm_controls}; {--------------------------------------------------------------------} procedure rs232_get_comm_controls(var rts_dtr: byte; var tx_rs_interrupts: byte; module_number: integer); var reg: reg_block; dummy: reg_typ; begin reg.ax.byte[high] := chr(ms_rs232_get_comm_controls); reg.dx.signed := module_number; bios_interrupt(ms_io_int,reg); dummy.signed := ord(reg.ax.byte[low]); if dummy.signed < 0 then dummy.signed := 256 + dummy.signed; rts_dtr := dummy.word; dummy.signed := ord(reg.bx.byte[low]); if dummy.signed < 0 then dummy.signed := 256 + dummy.signed; tx_rs_interrupts := dummy.word; end {rs232_get_comm_controls}; {--------------------------------------------------------------------} procedure rs232_get_modem_status(var modem_status: byte; module_number: integer); var reg: reg_block; dummy: reg_typ; begin reg.ax.byte[high] := chr(ms_rs232_get_modem_status); reg.dx.signed := module_number; bios_interrupt(ms_io_int,reg); dummy.signed := ord(reg.ax.byte[low]); if dummy.signed < 0 then dummy.signed := 256 + dummy.signed; modem_status := dummy.word; end {rs232_get_modem_status}; {--------------------------------------------------------------------} {--------------------------------------------------------------------} {------------------------------------------------} {procedures for Mindset unique video entry points} {------------------------------------------------} procedure set_screen_mode(mode: byte); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_set_screen_mode); reg.ax.byte[low] := chr(mode); bios_interrupt(mindset_video_int,reg); end {set_screen_mode}; {--------------------------------------------------------------------} procedure get_screen_mode(var mode: byte; var flags: word; var bits_per_pixel: integer); var reg: reg_block; dummy: reg_typ; begin reg.ax.byte[high] := chr(ms_get_screen_mode); bios_interrupt(mindset_video_int,reg); dummy.signed := ord(reg.ax.byte[low]); if dummy.signed < 0 then dummy.signed := 256 + dummy.signed; mode := dummy.word; flags := reg.bx.word; bits_per_pixel := reg.cx.signed; end {get_screen_mode}; {--------------------------------------------------------------------} {--------------------------------------------------------------------} procedure set_transfer_mode(mode: byte; logical: byte); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_set_transfer_mode); reg.bx.byte[high] := chr(mode); reg.bx.byte[low] := chr(logical); bios_interrupt(mindset_video_int,reg); end {set_transfer_mode}; {--------------------------------------------------------------------} procedure get_transfer_mode(var mode: byte; var logical: byte); var reg: reg_block; dummy: reg_typ; begin reg.ax.byte[high] := chr(ms_get_transfer_mode); bios_interrupt(mindset_video_int,reg); dummy.signed := ord(reg.bx.byte[high]); if dummy.signed < 0 then dummy.signed := 256 + dummy.signed; mode := dummy.word; dummy.signed := ord(reg.bx.byte[low]); if dummy.signed < 0 then dummy.signed := 256 + dummy.signed; logical := dummy.word; end {get_transfer_mode}; {--------------------------------------------------------------------} procedure set_dest_buffer(buffer_offset_addr: word; buffer_segment_addr: word; width: integer; lines: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_set_dest_buffer); reg.bx.word := buffer_offset_addr; reg.es.word := buffer_segment_addr; reg.cx.signed := width; reg.dx.signed := lines; b  ios_interrupt(mindset_video_int,reg); end {set_transfer_mode}; {--------------------------------------------------------------------} procedure get_dest_buffer(var buffer_offset_addr: word; var buffer_segment_addr: word; var width: integer; var lines: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_get_dest_buffer); bios_interrupt(mindset_video_int,reg); buffer_offset_addr := reg.bx.word; buffer_segment_addr := reg.es.word; width := reg.cx.signed; lines := reg.dx.signed; end {get_transfer_mode}; {--------------------------------------------------------------------} procedure set_write_mask(mask: word); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_set_write_mask); reg.bx.word := mask; bios_interrupt(mindset_video_int,reg); end {set_write_mask}; {--------------------------------------------------------------------} procedure get_write_mask(var mask: word); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_get_write_mask); bios_interrupt(mindset_video_int,reg); mask := reg.bx.word; end {get_write_mask}; {--------------------------------------------------------------------} procedure blt_copy(blt_id: byte; n_blts: integer; modes: integer; xorg: integer; yorg: integer; data_offset: word; data_segment: word); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_blt_copy); reg.ax.byte[low] := chr(blt_id); reg.cx.signed := n_blts; reg.dx.signed := modes; reg.si.signed := xorg; reg.di.signed := yorg; reg.bx.word := data_offset; reg.es.word := data_segment; bios_interrupt(mindset_video_int,reg); end {blt_copy}; {--------------------------------------------------------------------} procedure blt_copy_word(blt_id: byte; n_blts: integer; xorg: integer; yorg: integer; data_offset: word; data_segment: word); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_blt_copy_word); reg.ax.byte[low] := chr(blt_id); reg.cx.signed := n_blts; reg.si.signed := xorg; reg.di.signed := yorg; reg.bx.word := data_offset; reg.es.word := data_segment; bios_interrupt(mindset_video_int,reg); end {blt_copy_word}; {--------------------------------------------------------------------} procedure set_palette(border_index: byte; offset: integer; nwords: integer; data_offset: word; data_segment: word); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_set_palette); reg.ax.byte[low] := chr(border_index); reg.cx.signed := nwords; reg.dx.signed := offset; reg.bx.word := data_offset; reg.es.word := data_segment; bios_interrupt(mindset_video_int,reg); end {set_palette}; {--------------------------------------------------------------------} procedure get_palette(var border_index: byte; offset: integer;  nwords: integer; data_offset: word; data_segment: word); var reg: reg_block; dummy: reg_typ; begin reg.ax.byte[high] := chr(ms_get_palette); reg.cx.signed := nwords; reg.dx.signed := offset; reg.bx.word := data_offset; reg.es.word := data_segment; bios_interrupt(mindset_video_int,reg); dummy.signed := ord(reg.ax.byte[low]); if dummy.signed < 0 then dummy.signed := 256 + dummy.signed; border_index := dummy.word; end {get_palette}; {--------------------------------------------------------------------} procedure blt_polypoint(blt_id: byte; n_points: integer; color_index: byte; xorg: integer; yorg: integer; data_offset: word; data_segment: word); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_blt_polypoint); reg.ax.byte[low] := chr(blt_id); reg.cx.signed := n_points; reg.dx.byte[high] := chr(color_index); reg.si.signed := xorg; reg.di.signed := yorg;  reg.bx.word := data_offset; reg.es.word := data_segment; bios_interrupt(mindset_video_int,reg); end {blt_polypoint}; {--------------------------------------------------------------------} procedure blt_polyline(blt_id: byte; n_points: integer; color_index: byte; mode: polyline_mode; xorg: integer; yorg: integer; data_offset: word; data_segment: word); var reg: reg_block; begin reg.ax.byte[high] := chr(  ms_blt_polyline); reg.ax.byte[low] := chr(blt_id); reg.cx.signed := n_points; reg.dx.byte[high] := chr(color_index); if (mode = chained) then reg.dx.byte[low] := chr(0) else reg.dx.byte[low] := chr(1); reg.si.signed := xorg; reg.di.signed := yorg; reg.bx.word := data_offset; reg.es.word := data_segment; bios_interrupt(mindset_video_int,reg); end {blt_polyline}; {--------------------------------------------------------------------} procedure blt_polygon(blt_id: byte; n_points: integer; even_color_index: byte; odd_color_index: byte; xorg: integer; yorg: integer; data_offset: word; data_segment: word); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_blt_polygon); reg.ax.byte[low] := chr(blt_id); reg.cx.signed := n_points; reg.dx.byte[high] := chr(even_color_index); reg.dx.byte[low] := chr(odd_color_index); reg.si.signed := xorg; reg.di.signed := yorg; reg.bx.word := data_offset; reg.es.word := data_segment; bios_interrupt(mindset_video_int,reg); end {blt_polygon}; {--------------------------------------------------------------------} procedure blt_ellipses(blt_id: byte; interior: interior_style; n_points: integer; even_color_index: byte; odd_color_index: byte; xorg: integer; yorg: integer; data_offset: word; data_segment: word); var  reg: reg_block; begin if (interior = filled) then reg.ax.byte[high] := chr(ms_blt_ellipses_filled) else reg.ax.byte[high] := chr(ms_blt_ellipses_arcs); reg.ax.byte[low] := chr(blt_id); reg.cx.signed := n_points; reg.dx.byte[high] := chr(even_color_index); reg.dx.byte[low] := chr(odd_color_index); reg.si.signed := xorg; reg.di.signed := yorg; reg.bx.word := data_offset; reg.es.word := data_segment; bios_interrupt(mindset_video_int,reg); end {blt_ellipses}; {--------------------------------------------------------------------} procedure set_clip_rectangle(xleft: integer; xright: integer; ytop: integer; ybottom: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_set_clip_rectangle); reg.si.signed := xleft; reg.di.signed := xright; reg.cx.signed := ytop; reg.dx.signed := ybottom; bios_interrupt(mindset_video_int,reg); end {set_clip_rectangle}; {--------------------------------------------------------------------} procedure get_clip_rectangle(var xleft: integer; var xright: integer; var ytop: integer; var ybottom: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_get_clip_rectangle); bios_interrupt(mindset_video_int,reg); xleft := reg.si.signed; xright := reg.di.signed; ytop := reg.cx.signed; ybottom := reg.dx.signed; end {get_clip_rectangle}; {--------------------------------------------------------------------} procedure set_collision_pattern(polarity: collision_polarity; pattern: byte; mask: byte); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_set_collision_pattern); if (polarity = collide_on) then reg.ax.byte[low] := chr(0) else reg.ax.byte[low] := chr(1); reg.bx.byte[high] := chr(mask); reg.bx.byte[low] := chr(pattern); bios_interrupt(mindset_video_int,reg); end {set_collision_pattern}; {--------------------------------------------------------------------} procedure get_collision_pattern(var polarity: collision_polarity; var pattern: byte; var mask: byte); var reg: reg_block; dummy: reg_typ; begin reg.ax.byte[high] := chr(ms_get_collision_pattern); bios_interrupt(mindset_video_int,reg); if (reg.ax.byte[low] = chr(0)) then polarity := collide_on else polarity := collide_on_all_except; dummy.signed := ord(reg.bx.byte[high]); if dummy.signed < 0 then dummy.signed := 256 + dummy.signed; mask := dummy.word; dummy.signed := ord(reg.bx.byte[low]); if dummy.signed < 0 then dummy.signed := 256 + dummy.signed; pattern := dummy.word; end {get_collision_pattern}; {--------------------------------------------------------------------} procedure set_collclip_detect(mode: byte; address_offset: word; address_segment: word); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_set_collclip_detect);    reg.ax.byte[low] := chr(mode); reg.bx.word := address_offset; reg.es.word := address_segment; bios_interrupt(mindset_video_int,reg); end {set_collclip_detect}; {--------------------------------------------------------------------} procedure get_collclip_detect(var mode: byte; var address_offset: word; var address_segment: word); var reg: reg_block; dummy: reg_typ; begin reg.ax.byte[high] := chr(ms_get_collclip_detect); bios_interrupt(mindset_video_int,reg); dummy.signed := ord(reg.ax.byte[low]); if dummy.signed < 0 then dummy.signed := 256 + dummy.signed; mode := dummy.word; address_offset := reg.bx.word; address_segment := reg.es.word; end {get_collclip_detect}; {--------------------------------------------------------------------} procedure set_display_int_addr(address_offset: word; address_segment: word); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_set_display_int_addr); reg.bx.word := address_offset; reg.es.word := address_segment; bios_interrupt(mindset_video_int,reg); end {set_display_int_addr}; {--------------------------------------------------------------------} procedure get_display_int_addr(var address_offset: word; var address_segment: word); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_get_display_int_addr); bios_interrupt(mindset_video_int,reg); address_offset := reg.bx.word; address_segment := reg.es.word; end {get_display_int_addr}; {--------------------------------------------------------------------} procedure get_buffer_info(var fb1_segment_addr: word; var fb2_segment_addr: word; var fb_byte_size: integer; var char_80_segment_addr: word); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_get_buffer_info); bios_interrupt(mindset_video_int,reg); fb1_segment_addr := reg.bx.word; fb2_segment_addr := reg.dx.word; fb_byte_size := reg.cx.signed; char_80_segment_addr := reg.si.word; end {get_buffer_info}; {--------------------------------------------------------------------} procedure switch_active_buffer; var reg: reg_block; begin reg.ax.byte[high] := chr(ms_switch_active_buffer); bios_interrupt(mindset_video_int,reg); end {switch_active_buffer}; {--------------------------------------------------------------------} procedure blt_wait(var blt_id: byte; var collisions: word;  var clips: word); var reg: reg_block; dummy: reg_typ; begin reg.ax.byte[high] := chr(ms_blt_wait); bios_interrupt(mindset_video_int,reg); dummy.signed := ord(reg.ax.byte[low]); if dummy.signed < 0 then dummy.signed := 256 + dummy.signed; blt_id := dummy.word; collisions := reg.bx.word; clips := reg.cx.word; end {blt_wait}; {--------------------------------------------------------------------} procedure save_blter(mode: byte; data_offset: word; data_segment: word; var data_size: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_save_blter); reg.ax.byte[low] := chr(mode); reg.bx.word := data_offset; reg.es.word := data_segment; bios_interrupt(mindset_video_int,reg); reg.ax.signed := data_size; end {save_blter}; {--------------------------------------------------------------------} procedure restore_blter(data_offset: word; data_segment: word); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_restore_blter); reg.bx.word := data_offset; reg.es.word := data_segment; bios_interrupt(mindset_video_int,reg); end {restore_blter}; {--------------------------------------------------------------------} procedure fill_dest_buffer(fill_data: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_fill_dest_buffer); reg.bx.signed := fill_data; bios_interrupt(mindset_video_int,reg); end {fill_dest_buffer}; {--------------------------------------------------------------------} procedure set_font_pointer(address_offset: word; address_segment: word); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_set_font_pointer); reg.bx.word := address_offset; reg.es.word := address_segment; bios_interrupt(mindset_video_int,reg); end {set_font_pointer}; {--------------------------------------------------------------------} procedure get_font_pointer(var address_of  fset: word; var address_segment: word); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_get_font_pointer); bios_interrupt(mindset_video_int,reg); address_offset := reg.bx.word; address_segment := reg.es.word; end {get_font_pointer}; {--------------------------------------------------------------------} procedure blt_string(blt_id: byte; n_strings: byte; n_ignore: byte; direction: byte; mask: byte; xorg: integer;  yorg: integer; data_offset: word; data_segment: word); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_blt_string); reg.ax.byte[low] := chr(blt_id); reg.cx.byte[high] := chr(n_strings); reg.cx.byte[low] := chr(n_ignore); reg.dx.byte[high] := chr(direction); reg.dx.byte[low] := chr(mask); reg.si.signed := xorg; reg.di.signed := yorg; reg.bx.word := data_offset; reg.es.word := data_segment; bios_interrupt(mindset_video_int,reg); end {blt_string}; {--------------------------------------------------------------------} procedure set_link_mode(mode: byte); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_set_param_block_mode); reg.ax.byte[low] := chr(mode); bios_interrupt(mindset_video_int,reg); end {set_link_mode}; {--------------------------------------------------------------------} procedure get_link_mode(var mode: byte); var reg: reg_block; dummy: reg_typ; begin reg.ax.byte[high] := chr(ms_get_param_block_mode); bios_interrupt(mindset_video_int,reg); dummy.signed := ord(reg.ax.byte[low]); if dummy.signed < 0 then dummy.signed := 256 + dummy.signed; mode := dummy.word; end {get_link_mode}; {--------------------------------------------------------------------} procedure get_gcp_status(var gcp_idle: integer; var system_fly: integer; var collision_detected: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_get_blter_status); bios_interrupt(mindset_video_int,reg); gcp_idle := reg.bx.signed AND 16#0001; system_fly := reg.bx.signed AND 16#0002; collision_detected := reg.bx.signed AND 16#0004; end {get_gcp_status}; {--------------------------------------------------------------------} procedure get_char_bitmap(var normal_font: integer; var extras_font: integer; var segment: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_get_char_bitmap); bios_interrupt(mindset_video_int,reg); normal_font := reg.si.signed; extras_font := reg.di.signed; segment := reg.es.signed; end {get_char_bitmap}; {--------------------------------------------------------------------} procedure get_gcp_memory(var memory_flag: integer; var first_segment: integer; var last_segment: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ms_get_gcp_memory); bios_interrupt(mindset_video_int,reg); memory_flag := reg.ax.signed AND 16#0001; first_segment := reg.si.signed; last_segment := reg.di.signed; end {get_gcp_memory}; {--------------------------------------------------------------------} end {module bios_calls}. BIOS0 CST ç!K4"COPYRT PAS F!T'COPYRT ASM b!VBIOS CST ÒcÓX€"åIOS BAK WcÓ|9BIOS PAS fmÓf—BIOS EXT ¡mÓa€9åIOS LST ämÓ­{ ********************************************************* * Copyright 1983 Mindset Corp. This program * * is an unpublished work of authorship protected * * by the copyright laws of the United States. * * This program is also the confidential, * * proprietary information of Mindset Corp. and * * is not to be copied, used or altered in any * * way without the express permission of Mindset * * Corp. * ********************************************************* ********************************************************* * This program is designated a Mindset Utility as * * defined in the Mindset Corp. Development Software * * License Agreement. * ****************************  ***************************** } {External declarations for bios calls} {------------------} {Utility procedures} {------------------} procedure get_word_addr(vars variable: word; var address_offset: word; var address_segment: word); extern; procedure get_integer_addr(vars variable: integer; var address_offset: word; var address_segment: word); extern; procedure get_char_addr(vars variable: char; var address_offset: word; var address_segment: word); extern; procedure get_external_procedure_addr(procedure proc; var address_offset: word; var address_segment: word); extern; {------------------------------------------------} {procedures for IBM compatible video entry points} {------------------------------------------------} procedure set_ibm_mode(mode: byte); extern; procedure set_cursor_position(page: byte; row: byte; column: byte); extern; procedure read_cursor_position(page: byte; var row: byte; var column: byte; var cursor_start: byte; var cursor_end: byte); extern; procedure write_dot(row: integer; column: integer; color: byte); extern; procedure read_dot(row: integer; column: integer; var color: byte); extern; procedure write_teletype(page: byte; character: char; color: byte); extern; procedure write_char_only(page: byte; character: char;  count: integer; color: byte); extern; {---------------------------------------------------} {procedures for IBM compatible keyboard entry points} {---------------------------------------------------} procedure get_kb_char(var character: char; var scan_code: byte); extern; procedure test_kb_buffer(var character_present: boolean; var character: char;  var scan_code: byte); extern; procedure get_kb_shift_status(var kb_flag: byte); extern; {----------------------------------------} {procedures for temporary rs232 interface} {----------------------------------------} procedure temp_rs232_init(params: byte; module_number: integer); extern; procedure temp_rs232_send_char(character: char; module_number: integer); extern; procedure temp_rs232_rcv_char(var character: char; module_number: integer); extern; procedure temp_rs232_get_status(var port_status: word; module_number: integer); extern; {---------------------------------------------} {procedures for IBM compatible rs232 interface} {---------------------------------------------} procedure rs232_init(params: byte; module_number: integer); extern;  procedure rs232_send_char(character: char; module_number: integer); extern; procedure rs232_rcv_char(var character: char; module_number: integer); extern; procedure rs232_get_status(var port_status: word; module_number: integer); extern; {---------------------------------------------} {procedures for Mindset unique io entry points} {---------------------------------------------} procedure set_display_device(tv_monitor: byte); extern; procedure set_ext_sync(mode: byte); extern; procedure set_display_int(scan_line: integer; diagnostic_mark: integer); extern; procedure joystick_io(var a_switch: byte; var b_switch: byte; var a_x: integer; var a_y: integer; var b_x: integer; var b_y: integer); extern; procedur  e rs232_write_char(character: char; module_number: integer); extern; procedure rs232_read_char(var character: char; var comm_status: byte; module_number: integer); extern; procedure rs232_write_string(string_offset: word; string_segment: word; character_count: integer; module_number: integer); extern; procedure rs232_get_buffer_status(var buffer_status: byte; var avail_words_input: integer; var avail_words_output: integer; module_number: integer); extern; procedure rs232_set_input_buffer(buffer_offset: word; buffer_segment: word; size_in_words: integer; module_number: integer); extern; procedure rs232_set_output_buffer(buffer_offset: word; buffer_segment: word; size_in_words: integer; module_number: integer); extern; procedure rs232_set_comm_controls(rts_dtr: byte; tx_rs_interrupts: byte; module_number: integer); extern; procedure rs232_get_comm_controls(var rts_dtr: byte; var tx_rs_interrupts: byte; module_number: integer); extern; procedure rs232_get_modem_status(var modem_status: byte; module_number: integer); extern; {------------------------------------------------} {procedures for Mindset unique video entry points} {------------------------------------------------} procedure set_screen_mode(mode: byte); extern; procedure get_screen_mode(var mode: byte; var flags: word; var bits_per_pixel: integer); extern; procedure set_transfer_mode(mode: byte; logical: byte); extern; procedure get_transfer_mode(var mode: byte; var logical: byte); extern; procedure set_dest_buffer(buffer_offset_addr: word; buffer_segment_addr: word;  width: integer; lines: integer); extern; procedure get_dest_buffer(var buffer_offset_addr: word; var buffer_segment_addr: word; var width: integer; var lines: integer); extern; procedure set_write_mask(mask: word); extern; procedure get_write_mask(var mask: word); extern; procedure blt_copy(blt_id: byte; n_blts: integer; modes: integer; xorg: integer; yorg: integer; data_offset: word; data_segment: word); extern; procedure blt_copy_word(blt_id: byte; n_blts: integer; xorg: integer; yorg: integer; data_offset: word; data_segment: word); extern;  procedure set_palette(border_index: byte; offset: integer; nwords: integer; data_offset: word; data_segment: word); extern; procedure get_palette(var border_index: byte; offset: integer; nwords: integer; data_offset: word; data_segment: word); extern; procedure blt_polypoint(blt_id: byte; n_points: integer; color_index: byte; xorg: integer; yorg: integer; data_offset: word; data_segment: word); extern; procedure blt_polyline(blt_id: byte; n_points: integer; color_index: byte; mode: polyline_mode;    xorg: integer; yorg: integer; data_offset: word; data_segment: word); extern; procedure blt_polygon(blt_id: byte; n_points: integer; even_color_index: byte; odd_color_index: byte; xorg: integer; yorg: integer; data_offset: word;  data_segment: word); extern; procedure blt_ellipses(blt_id: byte; interior: interior_style; n_points: integer; even_color_index: byte; odd_color_index: byte; xorg: integer; yorg: integer; data_offset: word; data_segment: word); extern; procedure set_clip_rectangle(xleft: integer; xright: integer; ytop: integer; ybottom: integer); extern; procedure get_clip_rectangle(var xleft: integer; var xright: integer; var ytop: integer; var ybottom: integer); extern; procedure set_collision_pattern(polarity: collision_polarity;  pattern: byte; mask: byte); extern; procedure get_collision_pattern(var polarity: collision_polarity; var pattern: byte; var mask: byte); extern; procedure set_collclip_detect(mode: byte; address_offset: word; address_segment: word); extern; procedure get_collclip_detect(var mode: byte;  var address_offset: word; var address_segment: word); extern; procedure set_display_int_addr(address_offset: word; address_segment: word); extern; procedure get_display_int_addr(var address_offset: word; var address_segment: word); extern; procedure get_buffer_info(var fb1_segment_addr: word; var fb2_segment_addr: word;  var fb_byte_size: integer; var char_80_segment_addr: integer); extern; procedure switch_active_buffer; extern; procedure blt_wait(var blt_id: byte; var collisions: word; var clips: word); extern; procedure save_blter(mode: byte; data_offset: word; data_segment: word; var data_size: integer); extern;  procedure restore_blter(data_offset: word; data_segment: word); extern; procedure fill_dest_buffer(fill_data: integer); extern; procedure set_font_pointer(address_offset: word; address_segment: word); extern; procedure get_font_pointer(var address_offset: word; var address_segment: word); extern; procedure blt_string(blt_id: byte; n_strings: byte;  n_ignore: byte; direction: byte; mask: byte; xorg: integer; yorg: integer; data_offset: word; data_segment: word); extern; procedure set_link_mode(mode: byte); extern; procedure get_link_mode(var mode: byte); extern; procedure get_gcp_status(var gcp_idle: integer; var system_fly: integer; var collision_detected: integer); extern; procedure get_char_bitmap(var normal_font: integer; var extras_font: integer; var segment: integer); extern; procedure get_gcp_memory(var memory_flag: integer; var first_segment: integer; var last_segment: integer); extern; {end of bios external declarations} åIOS BAK WcÓ|9BIOS PAS fmÓf—BIOS EXT ¡mÓa€9åIOS LST ämÓ­  ö { ********************************************************* * Copyright 1983 Mindset Corp. This program * * is an unpublished work of authorship protected * * by the copyright laws of the United States. * * This program is also the confidential, * * proprietary information of Mindset Corp. and * * is not to be copied, used or altered in any * * way without the express permission of Mindset * * Corp. * ********************************************************* ********************************************************* * This program is designated a Mindset Utility as * * defined in the Mindset Corp. Development Software * * License Agreement. * ********************************************************* } {---Type declarations for bios calls---} pinteger = word; byte_position = (low,high); two_chars = packed array [byte_position] of char; polyline_mode = (chained, paired); interior_style = (hollow, filled); collision_polarity = (collide_on, collide_on_all_except); reg_typ = packed record case integer of 0: (signed: integer); 1: (word: pinteger); 2: (byte: two_chars); end; reg_block = packed record ax,bx,cx,dx,si,di,es,flags: reg_typ; end; {end of bios type definitions} @e€ g€i kÀmàoq s@u`w€y { ‹À�à� ‘ “@ •` —à ™  ›À �ð  ¡ ÿO ÿo §€ ©  «À ¯ ± ÿO µ` ·€ ÿÿ#A%a'�)¡+Á-á/1!ÿ€ BIOS_CALLSoˆ MS PASCALøˆ �PASCAL:–QHIMEMCOMMONCOMMQQCONSTCOMADSDATASTACKMEMORYHEAPCODE BIOS_CALLSDGROUP#˜@› U˜D  ˜T ó˜H í˜H ˜H ˜X ø˜H š ÿÿÿÿÿÿ6Ž{ò�òGET_GCP_MEMORYVGET_CHAR_BITMAPGET_GCP_STATUSß GET_LINK_MODE¥ SET_LINK_MODE€ BLT_STRING+GET_FONT_POINTERüSET_FONT_POINTERÑFILL_DEST_BUFFER¬ RESTORE_BLTER� SAVE_BLTERHBLT_WAITþ SWITCH_ACTIVE_BUFFERá GET_BUFFER_INFO¢ GET_DISPLAY_INT_ADDRs SET_DISPLAY_INT_ADDRH GET_COLLCLIP_DETECTþ SET_COLLCLIP_DETECTÍ GET_COLLISION_PATTERNd SET_COLLISION_PATTERN) GET_CLIP_RECTANGLEê SET_CLIP_RECTANGLE³ BLT_ELLIPSESX BLT_POLYGON BLT_POLYLINE° BLT_POLYPOINTg GET_PALETTE SET_PALETTEØ BLT_COPY_WORD• BLT_COPYL GET_WRITE_MASK% SET_WRITE_MASK GET_DEST_BUFFERÁSET_DEST_BUFFERŠGET_TRANSFER_MODE5SET_TRANSFER_MODE GET_SCREEN_MODEÀSET_SCREEN_MODE›RS232_GET_MODEM_STATUS[RS232_GET_COMM_CONTROLSRS232_SET_COMM_CONTROLSÏRS232_SET_OUTPUT_BUFFER˜RS232_SET_INPUT_BUFFERaRS232_GET_BUFFER_STATUSRS232_WRITE_STRINGÚRS232_READ_CHAR’RS232_WRITE_CHARg JOYSTICK_IOòSET_DISPLAY_INTÇ SET_EXT_SYNC¢SET_DISPLAY_DEVICE}q�žTEMP_RS232_GET_STATUSPTEMP_RS232_RCV_CHAR#TEMP_RS232_SEND_CHARøTEMP_RS232_INITÅGET_KB_SHIFT_STATUS‹TEST_KB_BUFFER3 GET_KB_CHARñRS232_GET_STATUSÄRS232_RCV_CHAR—RS232_SEND_CHARl RS232_INIT9WRITE_CHAR_ONLYWRITE_TELETYPEÑREAD_DOT‹ WRITE_DOTZREAD_CURSOR_POSITIONÉSET_CURSOR_POSITION˜ SET_IBM_MODEs GET_CHAR_ADDRMGET_INTEGER_ADDR' BIOS_CALLS� GET_WORD_ADDRæŒBIOS_INTERRUPTûœ D BW¹ BIOS.PAS ˆ  G *U‹ì�ìÄ^ ‰^üŒFþ‹Fü‹v‰‹Fþ‹v‰‹å]ʳz GET_WORD_ADDR&`ã|ƒ *'U‹ì�ìÄ^ ‰^üŒFþ‹Fü‹v‰‹Fþ‹v‰‹å]Ê�zGET_INTEGER_ADDR'&`å|ƒ *MU‹ì�ìÄ^ ‰^üŒFþ‹Fü‹v‰‹Fþ‹v‰‹å]Êgz GET_CHAR_ADDRM&`µ|ƒ )sU‹ì�ìÆFñ‹FˆFð¸P�FðPš‹å]ÊlœÌV!z SET_IBM_MODEs%`Â|  ƒ 5˜U‹ì�ìÆFñ‹F ˆFó‹FˆF÷‹FˆFö¸P�FðPš‹å]ÊõœÌ'VzSET_CURSOR_POSITION˜1`-|ƒ •ÉU‹ì�ìÆFñ‹FˆFó¸P�FðPš‹F÷2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fö2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fõ2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹Fô2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]Ê <œÌV!z READ_CURSOR_POSITIONÉ‘`j|ƒ 5ZU‹ì�ìÆFñ ‹FˆFð‹F ‰Fö‹F‰Fô¸P�FðPš‹å]Ê,œÌ'Vz WRITE_DOTZ1`ª|ƒ <‹U‹ì�ìÆFñ ‹F ‰Fö‹F‰Fô¸P�FðPš‹Fð2ä‰Fîƒ~î}�FîhœÌ!V”Ë89:;!D.E7F?GGPTQ]ReSm_z`~a„b’mŸn£o©p¯qµrÃЀÔ�Ú‚èƒð„û…† ‡ˆ‰&Š1‹9ŒA�LŽTša›eœk�qžwŸ…¬’­–®œ¯¢°°±¸® Ã‹Fî‹vˆ‹å]ÊšzREAD_DOT‹F`Õ|ƒ 5ÑU‹ì�ìÆFñ‹FˆFð‹F ˆFó‹FˆFò¸P�FðPš‹å]ʺœÌ'VzWRITE_TELETYPEÑ1`¤|ƒ ;U‹ì�ìÆFñ ‹F ˆFð‹F ˆFó‹FˆFò‹F‰Fô¸P�FðPš‹å]ÊäœÌ-VzWRITE_CHAR_ONLY7`|ƒ 79U‹ì�ìÆFñ‹F2ä‰Fî‹FîˆFð‹F‰Fö¸P�FðPš‹å]Ê^œÌ)Vz RS232_INIT93`È|ƒ /lU‹ì�ìÆFñ‹FˆFð‹F‰Fö¸P�FðPš‹å]ÊÆœÌ!VzRS232_SEND_CHARl+` |ƒ 1—U‹ì�ìÆFñ‹F‰Fö¸P�FðPš‹Fð‹vˆ‹å]ÊÙœÌV!zRS232_RCV_CHAR—-`4|ƒ 1ÄU‹ì�ìÆFñ‹F‰Fö¸P�FðPš‹Fð‹v‰‹å]ʪœÌV!zRS232_GET_STATUSÄ-`H|ƒ FñU‹ì�ìÆFñ¸P�FðPš‹Fð‹vˆ‹Fñ2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊöœÌV'z GET_KB_CHARñB`…|ƒ C3U‹ì�ìÆFñ¸P�FðPš‹Fþ%@t‹v Æë)‹v Æ‹Fð‹vˆ‹Fñ2ä‰FîZœÌV'”˲ó˾ؿÜÀâÁèÂîÃüÐ Ñ ÒÓÔÕ%Ö3ê@ëDìLíRîXïføsùwú}ûƒü‘ž¢¨¶ ¾ËÏÕãë)ø*ü+ ,-.%/-;:<>=L>TA\BbCj4 rƒ~î}�Fî‹Fî‹vˆ‹å]Ê·zTEST_KB_BUFFER3X`*|ƒ >‹U‹ì�ìÆFñ¸P�FðPš‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ʺœÌV'zGET_KB_SHIFT_STATUS‹:`?|ƒ 7ÅU‹ì�ìÆFñ‹F2ä‰Fî‹FîˆFð‹F‰Fö¸íP�FðPš‹å]ÊøœÌ)VzTEMP_RS232_INITÅ3`œ|ƒ /øU‹ì�ìÆFñ‹FˆFð‹F‰Fö¸íP�FðPš‹å]Ê`œÌ!Vz TEMP_RS232_SEND_CHARø+`ô|ƒ 1#U‹ì�ìÆFñ‹F‰Fö¸íP�FðPš‹Fð‹vˆ‹å]ÊrœÌV!zTEMP_RS232_RCV_CHAR#-`|ƒ 1PU‹ì�ìÆFñ‹F‰Fö¸íP�FðPš‹Fð‹v‰‹å]ÊCœÌV!z!TEMP_RS232_GET_STATUSP-`|ƒ )}U‹ì�ìÆFñ‹FˆFð¸îP�FðPš‹å]Ê~œÌV!zSET_DISPLAY_DEVICE}%`ß|ƒ )¢U‹ì�ìÆFñ‹FˆFð¸îP�FðPš‹å]ÊUœÌV!z SET_EXT_SYNC¢%`^|ƒ /ÇU‹ì�ìÆFñ‹FˆFð‹FˆFò¸îP�FðPš‹å]ÊŽœÌ!VzSET_DISPLAY_INTÇ+`Z|ƒ @òU‹ì�ìÆFñ¸îP�FðPš‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹Fñ2ä‰FîUœÌV'”ËDrE}F…G…Q’R–S¤T¬U·V¿hÌiÐjØkÞlämòvÿwx yzƒ*„.…4†B‡J�W‘[’a“o”w§„¨ˆ©Žªœ´©µ­¶³·ÁÃÎÄÒÅØÆÞÇì×ùØýÙ ÚÛÜ& =.ƒ~î}�Fî‹Fî‹vˆ‹Fò‹v ‰‹Fô‹v ‰‹Fö‹v‰‹Fø‹v‰‹å]Ê Wz JOYSTICK_IOòu`1|ƒ /gU‹ì�ìÆFñ(‹FˆFð‹F‰Fö¸îP�FðPš‹å]ÊÇœÌ!VzRS232_WRITE_CHARg+`¿|ƒ L’U‹ì�ìÆFñ)‹F‰Fö¸îP�FðPš‹Fñ2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹Fð‹v ˆ‹å]Ê©œÌV!zRS232_READ_CHAR’H`è|ƒ ;ÚU‹ì�ìÆFñ*‹F ‰Fò‹F‰Fô‹F‰Fö‹F ‰Fü¸îP�FðPš‹å]ÊùœÌ-VzRS232_WRITE_STRINGÚ7`ƒ|ƒ TU‹ì�ìÆFñ+‹F‰Fö¸îP�FðPš‹Fñ2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fò‹v ‰‹Fô‹v‰‹å]Ê»œÌV!z#RS232_GET_BUFFER_STATUSP`­|ƒ ;aU‹ì�ìÆFñ,‹F ‰Fò‹F‰Fô‹F‰Fö‹F ‰Fü¸îP�FðPš‹å]ÊoœÌ-Vz"RS232_SET_INPUT_BUFFERa7`À|ƒ ;˜U‹ì�ìÆFñ-‹F ‰Fò‹F‰Fô‹F‰Fö‹F ‰Fü¸îP�FðPš‹å]Ê7œÌ-Vz#RS232_SET_OUTPUT_BUFFER˜7`&|ƒ  ÏU‹ì�ì6”ËÝ.Þ9ßAàIáQâYãaïnðrñxò~óŒ™�£±¹ÄÌÔáåëñ÷ý +,-".0/80C1K2S3[AhBlCrDxE~F„G’UŸV£W©X¯YµZ»[ÉÞ .ÖÆFñ.‹F ˆFð‹FˆFò‹F‰Fö¸îP�FðPš‹å]ÊþœÌ Vz#RS232_SET_COMM_CONTROLSÏ1`|ƒ _U‹ì�ìÆFñ/‹F‰Fö¸îP�FðPš‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fò2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊfœÌV!z#RS232_GET_COMM_CONTROLS[`°|ƒ D[U‹ì�ìÆFñ0‹F‰Fö¸îP�FðPš‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]Ê:œÌV!z"RS232_GET_MODEM_STATUS[@`¼|ƒ )›U‹ì�ìÆFñ‹FˆFð¸ïP�FðPš‹å]Ê^œÌV!zSET_SCREEN_MODE›%`¥|ƒ NÀU‹ì�ìÆFñ¸ïP�FðPš‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fò‹v‰‹Fô‹v‰‹å]ÊßœÌV'zGET_SCREEN_MODEÀJ`g|ƒ / U‹ì�ìÆFñ‹FˆFó‹FˆFò¸ïP�FðPš‹å]ÊHœÌ!VzSET_TRANSFER_MODE +`†|ƒ Y5U‹ì�ìÆFñ¸ïP�FðPš‹Fó2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹Fò2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊœÌV'zGET_TRANSFER_MODE5U`=|ƒ   ŠU‹ì�ìÆFñt”ËhÖiÚjàkælìmú{| }~'€2�:‚BƒM„U‘b’f“l”z•‚–�—•©¢ª¦«¬¬º¸Ç¹ËºÙ»á¼ì½ô¾ü¿ÌÍÎÏ!Ð/Û<Ü@ÝNÞVßaàiáqâ|ã„ð‘= 0•‹F ‰Fò‹F ‰Fü‹F‰Fô‹F‰Fö¸ïP�FðPš‹å]ʵœÌ"VzSET_DEST_BUFFERŠ7`ž|ƒ CÁU‹ì�ìÆFñ¸ïP�FðPš‹Fò‹v ‰‹Fü‹v ‰‹Fô‹v‰‹Fö‹v‰‹å]Ê/œÌV'zGET_DEST_BUFFERÁ?`k|ƒ ) U‹ì�ìÆFñ‹F‰Fò¸ïP�FðPš‹å]ÊîœÌV!zSET_WRITE_MASK %`n|ƒ +% U‹ì�ìÆFñ¸ïP�FðPš‹Fò‹v‰‹å]ÊœÌV'zGET_WRITE_MASK% '`S|ƒ ML U‹ì�ìÆFñ‹FˆFð‹F‰Fô‹F‰Fö‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš‹å]Ê›œÌ?VýzBLT_COPYL I`ï|ƒ G• U‹ì�ìÆFñ ‹FˆFð‹F‰Fô‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš‹å]Ê œÌ9Vz BLT_COPY_WORD• C`|ƒ AØ U‹ì�ìÆFñ ‹FˆFð‹F ‰Fô‹F ‰Fö‹F‰Fò‹F‰Fü¸ïP�FðPš‹å]Ê qœÌ3V z SET_PALETTEØ =`‹|ƒ  U‹ì�ìÆFñ ‹F ‰Fô:”Ëñ•ò›ó¡ô§õ­ö»ÈÌÚâêòú     , 0 > !F 1S 2W 3] 4c 5i 6o 7u 8{ 9� :� Iœ J  K¦ L¬ M² N¸ O¾ PÄ QÒ _ß `ã aé bï cõ dû e f t u ^ E& ‹F ‰Fö‹F‰Fò‹F‰Fü¸ïP�FðPš‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]Ê ”œÌV z GET_PALETTE R`D|ƒ Mg U‹ì�ìÆFñ ‹FˆFð‹F‰Fô‹FˆF÷‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš‹å]Ê{œÌ?Výz BLT_POLYPOINTg I`6|ƒ ]° U‹ì�ìÆFñ ‹FˆFð‹F‰Fô‹FˆF÷€~uÆFöëÆFö‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš‹å]ÊžœÌOVíz BLT_POLYLINE° Y`A|ƒ S  U‹ì�ìÆFñ‹FˆFð‹F‰Fô‹FˆF÷‹FˆFö‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš‹å]ÊœÌEV÷z BLT_POLYGON O`7|ƒ 9X U‹ì�ì€~uÆFñëÆFñ‹FˆFð‹F‰Fô‹FˆF÷‹FˆFö‹F ‰Fø–”Ëv& w, x2 y8 zF {N |Y }a �n Žr �x �~ ‘„ ’Š “� ”– •œ –ª §· ¨» ©Á ªÇ «Í ¬Ó ®Ù ¯Ý °ã ±é ²ï ³õ ´ Å Æ Ç È É& Ê, Ë2 Ì8 Í> ÎD ÏR á_ âe äk åo æu ç{ è� é‡ þ *� ‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš‹å]ÊRœÌV z BLT_ELLIPSESX [`¡|ƒ ;³ U‹ì�ìÆFñ‹F ‰Fø‹F ‰Fú‹F‰Fô‹F‰Fö¸ïP�FðPš‹å]Ê+œÌ-VzSET_CLIP_RECTANGLE³ 7`™|ƒ Cê U‹ì�ìÆFñ¸ïP�FðPš‹Fø‹v ‰‹Fú‹v ‰‹Fô‹v‰‹Fö‹v‰‹å]ÊïœÌV'zGET_CLIP_RECTANGLEê ?`f|ƒ ?) U‹ì�ìÆFñ€~ uÆFðëÆFð‹FˆFó‹FˆFò¸ïP�FðPš‹å]ʘœÌ1V z!SET_COLLISION_PATTERN) ;` |ƒ md U‹ì�ìÆFñ¸ïP�FðPš€~ðu‹v Æë‹v Æ‹Fó2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹Fò2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]Ê œÌV'z!GET_COLLISION_PATTERNd i`®|ƒ 5Í U‹ì�ìÆFñ‹F ˆFð‹F‰Fò‹F‰Fü¸ïP�FðPš‹å]ÊÁœÌ'VzSET_COLLCLIP_DETECTÍ 1`4|ƒ 8þ U‹ì�ìÆFñ¸ïP�FðPš‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹v ˆëœÌV'”Ëê� ë“ ì™ íŸ î­ ûº ü¾ ýÄ þÊ ÿÐ Ö ä ñ õ     # 0 4 !: #@ $D %J &P '^ 3k 4o 5} 6ƒ 8‹ 9‘ :™ ;¤ <¬ =´ >¿ ?Ç KÔ LØ MÞ Nä Oê Pø \ ] ^ _ `* \ 2 ‹Fò‹v‰‹Fü‹v‰‹å]ʯzGET_COLLCLIP_DETECTþ J`ö|ƒ /H U‹ì�ìÆFñ‹F‰Fò‹F‰Fü¸ïP�FðPš‹å]ÊíœÌ!Vz SET_DISPLAY_INT_ADDRH +`L|ƒ 3s U‹ì�ìÆFñ¸ïP�FðPš‹Fò‹v‰‹Fü‹v‰‹å]Ê?œÌV'z GET_DISPLAY_INT_ADDRs /`)|ƒ C¢ U‹ì�ìÆFñ¸ïP�FðPš‹Fò‹v ‰‹Fö‹v ‰‹Fô‹v‰‹Fø‹v‰‹å]ÊDœÌV'zGET_BUFFER_INFO¢ ?`‰|ƒ !á U‹ì�ìÆFñ¸ïP�FðPš‹å]ËŸœÌV'z SWITCH_ACTIVE_BUFFERá `à|ƒ Nþ U‹ì�ìÆFñ¸ïP�FðPš‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fò‹v‰‹Fô‹v‰‹å]Ê„œÌV'zBLT_WAITþ J`>|ƒ =HU‹ì�ìÆFñ‹F ˆFð‹F ‰Fò‹F‰Fü¸ïP�FðPš‹v‹‰Fð‹å]ÊÙœÌ'Vz SAVE_BLTERH9`o|ƒ /�U‹ì�ìÆFñ‹F‰Fò‹F‰Fü¸ïP�FðPš‹å]Ê¥œÌ!Vz RESTORE_BLTER�+`I|ƒ )¬U‹ì�ìÆFñ‹F‰Fò¸ïP�FðPš‹å]Ê%œÌV!zFILL_DEST_BUFFER¬%`K|ƒ ÑU‹ì�ìÆFñ‹F‰Fò‹F‰FüÄ”Ëa2 b: cB nO oS pY q_ rm |z }~ ~Œ ” €œ �© Ž­ �» �à ‘Ë ’Ó “Û �è žì Ÿú ¬­ ®¯°*±2²:³BÀOÁSÂYÃ_ÄeÅsÆ{ЈьҒӘԦ޳߷à½áËìØíÜîâô è¸ïP�FðPš‹å]ÊôœÌ V2zSET_FONT_POINTERÑ+`í|ƒ 3üU‹ì�ìÆFñ ¸ïP�FðPš‹Fò‹v‰‹Fü‹v‰‹å]Ê¥œÌV'zGET_FONT_POINTERü/`Ê|ƒ Y+U‹ì�ìÆFñ!‹FˆFð‹FˆFõ‹FˆFô‹FˆF÷‹FˆFö‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš‹å]Ê;œÌKVñz BLT_STRING+U`^|ƒ )€U‹ì�ìÆFñ"‹FˆFð¸ïP�FðPš‹å]ÊOœÌV!z SET_LINK_MODE€%`N|ƒ >¥U‹ì�ìÆFñ#¸ïP�FðPš‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊšœÌV'z GET_LINK_MODE¥:` |ƒ DßU‹ì�ìÆFñ$¸ïP�FðPš‹Fò%‹v ‰‹Fò%‹v‰‹Fò%‹v‰‹å]ÊãœÌV'zGET_GCP_STATUSß@`s|ƒ ;U‹ì�ìÆFñ%¸ïP�FðPš‹Fø‹v ‰‹Fú‹v  ‰‹Fü‹v‰‹å]ÊœÌV'zGET_CHAR_BITMAP7`|ƒ >VU‹ì�ìÆFñ&¸ïP�FðPš‹Fð%‹v ‰‹Fø‹v‰‹Fú‹v‰‹å]ʳœÌV'zGET_GCP_MEMORYV:` |ƒ �U‹ì�ì‹å]ËÛz BIOS_CALLS� `_|ƒ”¿ïèðöúûüýþ%26<BHNTZ`flz%‡&‹'‘(Ÿ3¬4°5¾6Æ7Ñ8ÙDæEêFøGHIU&V*W8X@YHZPf]gahoizj‚kŠEŠt#A%a'�)¡+Á-á/1!ÿöH ŒêP2 T'COPYRT ASM b!VBIOS CST ÒcÓX€"åIOS BAK WcÓ|9BIOS PAS fmÓf—BIOS EXT ¡mÓa€9åIOS LST ämÓ­ö€ASM86_BIOS_PASCAL_INTERFACEj– ASM86_CODECODEf˜h¦MŒ-COLL_CLIP_INT_HANDLERDISPLAY_INT_HANDLER  ªU‹ìŠF .¢Ž^ ‹~ŽE ‹‹]‹M‹U‹u‹} ÍœW‹~�E �EŒE ‰‰]‰M‰U‰u]ÊU‹ìV‹v ‹‹^‰‹D‹^‰^]Ê.ŒË�PSQRVWU.Žš]_^ZY[XËPSQRVWU.Žš]_^ZY[XËþœ'Ä &ÄfjÄxjÌ{&Ä•j̘&H�BIOS_INTERRUPTó�COLL_CLIP_INT_ENTRY‰Í�DISPLAY_INT_ENTRYl‰�"GET_EXTERNAL_PROCEDURE_ADDRHÆ�SAVE_DS_REGISTERcüŠta€9åIOS LST ämÓ­öTITLE (ASM86 ROUTINES TO INTERFACE BIOS TO MS-DOS PASCAL) ; ********************************************************* ; * Copyright 1983 Mindset Corp. This program * ; * is an unpublished work of authorship protected * ; * by the copyright laws of the United States. * ; * This program is also the confidential, * ; * proprietary information of Mindset Corp. and * ; * is not to be copied, used or altered in any * ; * way without the express permission of Mindset * ; * Corp. * ; ********************************************************* ; ********************************************************* ; * This program is designated a Mindset Utility as * ; * defined in the Mindset Corp. Development Software * ; * License Agreement.  * ; ********************************************************* NAME ASM86_BIOS_PASCAL_INTERFACE PUBLIC BIOS_INTERRUPT PUBLIC GET_EXTERNAL_PROCEDURE_ADDR PUBLIC SAVE_DS_REGISTER PUBLIC DISPLAY_INT_ENTRY PUBLIC COLL_CLIP_INT_ENTRY ;THESE EXTERNALS MUST BE DECLARED OUTSIDE OF A SEGMENT BLOCK EXTRN DISPLAY_INT_HANDLER:FAR EXTRN COLL_CLIP_INT_HANDLER:FAR ASSUME CS:ASM86_CODE ASM86_CODE SEGMENT PUBLIC 'CODE' BIOS_INTERRUPT PROC FAR ;-------------------- BIOS_INTERRUPT    ------------------------------------------ ; ; BIOS_INTERRUPT IS AN ASM86 ROUTINE WHICH MAY BE CALLED FROM PASCAL ; USING THE FOLLOWING DECLARATION: ; ; PROCEDURE BIOS_INTERRUPT (INT_VECTOR: INTEGER; ; VAR REGISTERS: REG_BLOCK); ; ; WHERE REG_BLOCK DEFINES A BLOCK OF 8 WORDS REPRESENTING ; THE REGISTERS AX, BX, CX, DX, SI, DI, ES, AND FLAGS, ; AND INT_VECTOR IS THE SOFTWARE INTERRUPT NUMBER. ; ; THIS ROUTINE LOADS THE VALUES FOUND IN REG_BLOCK INTO ; THE REAL REGISTERS, EXECUTES THE SOFTWARE INTERRUPT, ; LOADS THE RETURNED VALUES OF THE REAL REGISTERS BACK ; INTO REG_BLOCK AND RETURNS TO THE CALLER. ; ;------------------------------------------------------------------------------ STACK_DEF STRUC ;DEFINES STACK CONFIGURATION OLD_BP DW ? ;SAVE CALLER'S BP REGISTER OLD_DS DW ? ;SAVE CALLER'S DS REGISTER RETURN DD ? ;RETURN ADDRESS REG_BLOCK_OFF DW ? ;ADDRESS OFFSET TO REG_BLOCK REG_BLOCK_SEG DW ? ;ADDRESS SEGMENT FOR REG_BLOCK INT_VECTOR DW ? ;IMMEDIATE DATA CONTAINING INTERRUPT NUMBER STACK_DEF ENDS ;DEFINE POINTERS TO USER'S REG_BLOCK AREA REG_AX EQU WORD PTR DS:[DI+ 0] REG_BX EQU WORD PTR DS:[DI+ 2] REG_CX EQU WORD PTR DS:[DI+ 4] REG_DX EQU WORD PTR DS:[DI+ 6] REG_SI EQU WORD PTR DS:[DI+ 8] REG_DI EQU WORD PTR DS:[DI+10] REG_ES EQU WORD PTR DS:[DI+12] REG_FLAGS EQU WORD PTR DS:[DI+14] ;SAVE CALLER'S REGISTERS PUSH DS PUSH BP MOV BP,SP ;PATCH THE CODE TO GET THE PROPER INTERRUPT NUMBER BELOW MOV AL,BYTE PTR [BP].INT_VECTOR MOV CS:[INTERRUPT_NUMBER],AL ;POINT TO REG_BLOCK MOV DS,[BP].REG_BLOCK_SEG MOV DI,[BP].REG_BLOCK_OFF ;LOAD REG_BLOCK VALUES INTO REGISTERS ; WE WILL NOT LOAD FLAGS FROM THE REGISTER BLOCK MOV ES,REG_ES MOV AX,REG_AX MOV BX,REG_BX MOV CX,REG_CX MOV DX,REG_DX MOV SI,REG_SI MOV DI,REG_DI ;EXECUTE THE APPROPRIATE SOFTWARE INTERRUPT INTERRUPT_NUMBER EQU ($ + 1) ;ADDRESS OF BYTE TO MODIFY INT 0 ;0 MODIFIED BY ABOVE MOV ;PUT RETURN VALUES OF REGISTERS BACK INTO REG_BLOCK LOAD_REG_BLOCK: PUSHF ;SAVE THE FLAGS PUSH DI ;SAVE DI SO WE CAN USE IT AS POINTER MOV DI,[BP].REG_BLOCK_OFF ;USE DI AS POINTER TO REG_BLOCK POP REG_DI ;PUT SAVED (DI) INTO REG_BLOCK POP REG_FLAGS ;PUT SAVED FLAGS INTO REG_BLOCK MOV REG_ES,ES ;NOW MOVE IN THE REST OF THE REGS MOV REG_AX,AX MOV REG_BX,BX MOV REG_CX,CX MOV REG_DX,DX MOV REG_SI,SI EOJ: POP BP POP DS RET 6 ;RETURN AND POP STACK ARGS BIOS_INTERRUPT ENDP PAGE GET_EXTERNAL_PROCEDURE_ADDR PROC FAR ;-------------------- GET_EXTERNAL_PROCEDURE_ADDR -------------------------------------- ; ; GET_EXTERNAL_PROCEDURE_ADDR IS AN ASM86 ROUTINE WHICH MAY BE CALLED ; FROM PASCAL USING THE FOLLOWING DECLARATION: ; ; PROCEDURE GET_EXTERNAL_PROCEDURE_ADDR(PROCEDURE PROC [EXTERNAL]; ; VAR ADDRESS_OFFSET: PINTEGER; ; VAR ADDRESS_SEGMENT: PINTEGER); ; ; GET_EXTERNAL_PROCEDURE_ADDR RETURNS THE POSITIVE INTEGER ; OFFSET/SEGMENT ADDRESS OF THE PROCEDURE. ; ;------------------------------------------------------------------------------ STACK_DEF3 STRUC ;DEFINES STACK CONFIGURATION ;VALID FOR MSDOS PASCAL OLD_BP3 DW ? ;SAVE CALLER'S BP REGISTER RETURN3 DD ? ;RETURN ADDRESS ADDR_SEG_OFF3 DW ? ;OFFSET OF ADDRESS_SEGMENT ADDR_OFF_OFF3 DW ? ;OFFSET OF ADDRESS_OFFSET PROC_FRAME DW ? ;OFFSET OF ADDRESS OF PROC FRAME PROC_ADDR DW ? ;OFFSET OF ADDRESS OF PROCEDURE ADDRESS STACK_DEF3 ENDS ;SAVE CALLER'S REGISTERS PUSH BP MOV BP,SP ;MOVE IN OFFSET ADDRESS PUSH SI  MOV SI,[BP].PROC_ADDR ;SI POINTS TO OFFSET MOV AX,DS:[SI] ;AX CONTAINS OFFSET ITSELF MOV BX,[BP].ADDR_OFF_OFF3 MOV DS:[BX],AX ;MOVE IN SEGMENT ADDRESS MOV AX,DS:[SI+2] ;AX CONTAINS SEGMENT ITSELF MOV BX,[BP].ADDR_SEG_OFF3 MOV DS:[BX],AX POP SI POP BP RET 8 ;RETURN AND POP STACK ARGS GET_EXTERNAL_PROCEDURE_ADDR ENDP PAGE SAVE_DS_REGISTER PROC FAR ;----------------- SAVE_DS_REGISTER ----------------------------------- ; THIS ROUTINE SAVES PASCAL'S DEFAULT DS REGISTER, SO THAT IT CAN BE ; LOADED BY THE INTERRUPT ENTRY ROUTINES BELOW BEFORE CALLING THE ; USER'S PASCAL INTERRUPT HANDLER. ; THIS ROUTINE IS CALLED WITHOUT PARAMETERS FROM PASCAL. ;---------------------------------------------------------------------- MOV CS:SAVE_DS,DS RET EVEN SAVE_DS DW 0 SAVE_DS_REGISTER ENDP PAGE DISPLAY_INT_ENTRY PROC FAR ;--------------- DISPLAY_INT_ENTRY ------------------------------ ; THIS ROUTINE IS TO BE USED AS THE ENTRY PROCEDURE TO BE ; PASSED TO SET_D  ISPLAY_INT_ADDR. ALL IT DOES IS SAVE THE ; REGISTERS, LOAD DS WITH THE VALUE PREVIOUSLY STORED BY ; CALLING SAVE_DS_REGISTER ABOVE, AND CALL THE PASCAL PROCEDURE ; NAMED DISPLAY_INT_HANDLER. ;---------------------------------------------------------------- PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI PUSH BP PUSH DS PUSH ES MOV DS,CS:SAVE_DS CALL DISPLAY_INT_HANDLER POP ES POP DS POP BP POP DI POP SI POP DX POP CX POP BX POP AX RET DISPLAY_INT_ENTRY ENDP PAGE COLL_CLIP_INT_ENTRY PROC FAR ;--------------- COLL_CLIP_INT_ENTRY ------------------------------ ; THIS ROUTINE IS TO BE USED AS THE ENTRY PROCEDURE TO BE ; PASSED TO SET_COLLCLIP_DETECT. ALL IT DOES IS SAVE THE ; REGISTERS, LOAD DS WITH THE VALUE PREVIOUSLY STORED BY ; CALLING SAVE_DS_REGISTER ABOVE, AND CALL THE PASCAL PROCEDURE ; NAMED COLL_CLIP_INT_HANDLER. ;---------------------------------------------------------------- PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI PUSH BP PUSH DS PUSH ES ;THIS CALL IS INCOMPLETE. WE NEED TO PUSH (IN PASCAL ORDER) ;THE PARAMETERS BLT_ID, N, AND CC_FLAGS SO THE USER CAN ;KNOW WHAT HAPPENED. MOV DS,CS:SAVE_DS CALL COLL_CLIP_INT_HANDLER POP ES POP DS POP BP POP DI POP SI POP DX POP CX POP BX POP AX RET COLL_CLIP_INT_ENTRY ENDP ASM86_CODE ENDS END  module_number: integer); var reg: reg_block; begin reg.ax.byte[high] := chr(ibm_rs232_get_status); reg.dx.signed := module_nö { ********************************************************* * Copyright 1983 Mindset Corp. This program * * is an unpublished work of authorship protected * * by the copyright laws of the United States. * * This program is also the confidential, * * proprietary information of Mindset Corp. and * * is not to be copied, used or altered in any * * way without the express permission of Mindset * * Corp. * ********************************************************* ********************************************************* * This program is designated a Mindset Utility as * * defined in the Mindset Corp. Development Software * * License Agreement. * ********************************************************* } Àðÿ! #@%`'€) +À-à/1 3@5`7€9 ;À=à?AðÿÿOE`G€I ÿÏMàOQ SðÿUðÿWðÿY [À]à_ÿ/c@e€ g€i kÀmàoq s@u`w€y { ‹À�à� ‘ “@ •` —à ™  ›À �ð  ¡ ÿO ÿo §€ ©  «À ¯ ± ÿO µ` ·€ ÿÿ#A%a'�)¡+Á-á/1!ÿö ; ********************************************************* ; * Copyright 1983 Mindset Corp. This program * ; * is an unpublished work of authorship protected * ; * by the copyright laws of the United States. * ; * This program is also the confidential, * ; * proprietary information of Mindset Corp. and * ; * is not to be copied, used or altered in any * ; * way without    the express permission of Mindset * ; * Corp. * ; ********************************************************* ; ********************************************************* ; * This program is designated a Mindset Utility as * ; * defined in the Mindset Corp. Development Software * ; * License Agreement. * ; ********************************************************* ************* } Àðÿ! #@%`'€) +À-à/1 3@5`7€9 ;À=à?AðÿÿOE`G€I ÿÏMàOQ SðÿUðÿWðÿY [À]à_ÿ/c@e€ g€i kÀmàoq s@u`w€y { ‹À�à� ‘ “@ •` —à ™  ›À �ð  ¡ ÿO ÿo §€ ©  «À ¯ ± ÿO µ` ·€ ÿÿ#A%a'�)¡+Á-á/1!ÿöpas1 %1,%1,,; pas2 link %1 bios pasifc,%1,,; del %1.map del %1.obj del %1.lst %1 À=à?A C@E`G€I KÀMàOQ S@U`W€Y [À]à_a c@e`g€i kÀmàoq ÿÿÿÿow€ÿ¯{ðÿÿï� ÿÿÿ…`ÿÿÿ‰ ‹ �à� ™ ÿO —ðÿÿß ÿÿÿÀ ©à Ÿðÿ¡ £@ ¥` §€ ¡ &¯@ µ` ÿ€ ÿpÝà ßá ã@å`ùðÿé ëÀíàïñ ó@õ`ÿ ûÀ0!p�  Á áÿ"$%q(‘*±ÿÏ-á/3!7A5aÿ�ÿö{ POINT.PAS - program to display a single white point at screen coords } { (100,100). The program may be terminated by pressing any } { key after the point has been displayed. } program point(input,output); type POINTS = array[0 .. 1] of word; { data descriptor for blt_polypoint } {$include:'bios.typ'} { MINDSET register definitions } var kb_scan: byte; { variable used to get keyboard scan} kb_char: char; { variable used to get keyboard char} data_offset: word; { BX for variable in get_word_addr } data_segment: word; { ES for variable in get_word_addr } color_index: byte; { defines color palette index } x_org: integer; { x-coordinate of point to display } y_org: integer; { y-coordinate of point to display } point: POINTS; { variable array for display point } ptr_point: ADS OF word; { get PASCAL pointer to array point } {$include:'bios.ext'} { MINDSET BIOS procedure definitions} {**************************** P O I N T . P A S ****************************} begin { start of main POINT.PAS program } ptr_point := ADS point; { get pointer to array point } point[0] := 0; { value of 0,0 in data descriptor } point[1] := 0; { means end of data (only one point)} color_index := 1; { palette index = 1 --> white point } x_org := 100; { x-coord = 100 pixels from top-left} y_org := 100; { y-coord = 100 pixels from top-left} set_screen_mode(2); { MINDSET mode 320x200x16 color mode} get_word_addr(ptr_point^,data_offset,data_segment); { get ES:BX for point array } blt_polypoint(0,1,color_index,x_org,y_org,data_offset,data_segment); { MINDSET BIOS call to display point} get_kb_char(kb_char,kb_scan); { wait for user to press any key } set_screen_mode(3); { MINDSET mode 640x200 for 80 column} set_ibm_mode(2); { set IBM character mode with cursor} end. { end of POINT.PAS program }   { COLOR0.PAS - program to display MINDSET basic (eg. RGB) color palette } { Pressing any key will exit the program. } program color0(input,output); const COLOR = 15; { 0-15 colors in MINDSET RGB palette} type COLORS = { ascending order of colors by RGB } (BLACK, DKBLUE, DKGREEN, DKCYAN, DKRED, DKMAGENTA, DKYELLOW, DKWHITE, DKGRAY, BLUE, GREEN, CYAN, RED, MAGENTA, YELLOW, WHITE); POINTS = array [0..1] of word; { definition of (x,y) point } {$include:'bios.typ'} { MINDSET register definitions } var kb_scan: byte; { variable used to get keyboard scan} kb_char: char; { variable used to get keyboard char} data_offset: word; { BX for variable in get_word_addr } data_segment: word; { ES for variable in get_word_addr } ptr_palette: ADS OF word; { basic color palette for MINDSET } palette: array [0..COLOR] of word; { MINDSET basic COLORS palette } even_color: byte; { even numbered pixel color } odd_color: byte; { odd numbered pixel color } x,y: integer; { loop variables for x_ & y_org } x_org: integer; { x-coordinate of point to display } y_org: integer; { y-coordinate of point to display } ptr_square: ADS OF word; { pointer to square definition } square: array [0..3] of POINTS; { definition of square POINTS array } ptr_outline: ADS OF word; { pointer to outline array } outline: array [0..6] of POINTS;  { definition of outline array } {$include:'bios.ext'} { MINDSET BIOS procedure definitions} {*************************** C O L O R 0 . P A S ***************************} begin { start of main COLOR0.PAS program } ptr_square := ADS square; { set pointer to square } { store corner points of square } square[0][0] := 00; { square point [0] at (00,00) } square[0][1] := 00; { square point [0] at (00,00) } square[1][0] := 40; { square point [1] at (40,00) } square[1][1] := 00; { square point [1] at (40,00) } square[2][0] := 40; { square point [2] at (40,60) } square[2][1] := 50; { square point [2] at (40,50) } square[3][0] := 00; { square point [3] at (00,50) } square[3][1] := 50; { square point [3] at (00,50) } ptr_outline := ADS outline; { set pointer to outline } outline[0][0] := 000; { outline point [0] at (000,000) } outline[0][1] := 000; { outline point [0] at (000,000) } outline[1][0] := 319; { outline point [1] at (319,000) } outline[1][1] := 000; { outline point [1] at (319,000) } outline[2][0] := 319; { outline point [2] at (319,100) } outline[2][1] := 100; { outline point [2] at (319,100) } outline[3][0] := 000; { outline point [3] at (000,100) } outline[3][1] := 100; { outline point [3] at (000,100) } outline[4][0] := 000; { outline point [4] at (000,000) } outline[4][1] := 000; { outline point [4] at (000,000) } outline[5][0] := 000; { outline point [5] at (000,050) } outline[5][1] := 050; { outline point [5] at (000,050) } outline[6][0] := 319; { outline point [6] at (319,050) } outline[6][1] := 050; { outline point [6] at (319,050) } ptr_palette := ADS palette; { set up pointer to palette } { store MINDSET RGB palette values } palette[ord(BLACK)] := 16#0000; palette[ord(DKBLUE)] := 16#1000; palette[ord(DKGREEN)] := 16#2000; palette[ord(DKCYAN)] := 16#3000; palette[ord(DKRED)] := 16#4000; palette[ord(DKMAGENTA)] := 16#5000; palette[ord(DKYELLOW)] := 16#6000; palette[ord(DKWHITE)] := 16#7000; palette[ord(DKGRAY)] := 16#8000; palette[ord(BLUE)] := 16#9000; palette[ord(GREEN)] := 16#A000; palette[ord(CYAN)] := 16#B000; palette[ord(RED)] := 16#C000; palette[ord(MAGENTA)] := 16#D000; palette[ord(YELLOW)] := 16#E000; palette[ord(WHITE)] := 16#F000; set_screen_mode(2); { MINDSET mode 320x200x16 color mode} fill_dest_buffer(ord(BLACK)); { erase screen by writing all BLACK } get_word_addr(ptr_palette^,data_offset,data_segment); { get ES:BX for palette } set_palette(ord(BLACK),ord(BLACK),COLOR,data_offset,data_segment); { set MINDSET palette on machine } get_word_addr(ptr_square^,data_offset,data_segment); { get ES:BX for square } even_color := ord(BLACK); { even numbered pixels initially } odd_color := ord(BLACK); { odd numbered pixels initially } x_o   rg := 40; { set up x & y increment values } y_org := 50; { draw 16 colors in boxes on display} for y := 0 to 1 do { two rows of eight colors each } for x := 0 to 7 do begin blt_polygon(0,4,even_color,odd_color,x*x_org,y*y_org, data_offset,data_segment); { data_offset & segment for square } even_color := even_color + 1; odd_color := odd_color + 1; end; x_org := 0; { start outline display at (0,0) } y_org := 0; get_word_addr(ptr_outline^,data_offset,data_segment); { get ES:BX for outline } blt_polyline(0,7,ord(WHITE),chained,x_org,y_org, data_offset,data_segment); { outline palette with white lines } get_kb_char(kb_char,kb_scan); { wait for user to press any key } set_screen_mode(3); { MINDSET mode 640x200 for 80 column} set_ibm_mode(2); { set IBM character mode with cursor} end. { end of COLOR0.PAS program } öMZø'(`ÿÿÐh-) y ':Qd²ñ(1˜#É#î#‹#¶##9#l#—#¼#é##R#ª#ø###H#u#¢#Ç#ò##’#·##6#˜#Ï##%#€#À#ß#5#T#Á#à#% #D #• #Ø # #L #° # #X #³ #ê # #d #ƒ #þ # #s #’ #Á ###y#¬#Ñ#ü##€#¥#Ä#þ#>#u#$8Y8a8q8y8Â8à8:8p8‡8È8à8 8)8.8œ8×8è888L8‰8»8É8Ý8 8+8B8N8l8†8‹8Ÿ8â8ô8ü88838\8y8~8’8¡8µ8Æ8Ú8÷88 8#8.8:8H8_8Ú888 848k8p8„8ž8°8À8ö88&858Q8e8Á8Ö8â8 8 8% 8m 8u 8z 8Ž 8³ 8¸ 8Ì 8× 8ü 8 8 8l 8| 8› 8© 8½ 8Î 8â 8õ 8 8 88 8H 8X 8… 8Š 8ž 8ª 8¿ 8Ù 8ì 8ô 8ù 8 8) 8: 8L 8^ 8g 8p 8u 8‡ 8˜ 8© 8® 8Ë 8APY»¿÷ü 6wÏX…¥ O_wŽ9LyÆÌº ? M – ž Í  • à ÷ &òUòdòoòÜþæþðþúþþþ&þ/þ8þAþJþSþïþ;3x3�3ž333SGòQ Q?QGQ[QbQgQ€Q…Qi³i¸iØii�iiii.i3i`�³ ³$³)³U‹ì�ìš 8»Pö‰LöŒNöÇPöÇRöÇTö(ÇVöÇXö(ÇZö2Ç\öÇ^ö2»dö‰`öŒböÇdöÇföÇhö?ÇjöÇlö?ÇnödÇpöÇrödÇtöÇvöÇxöÇzö2Ç|ö?Ç~ö2» ö‰öŒöÇ öÇ"öÇ$ö Ç&ö0Ç(ö@Ç*öPÇ,ö`Ç.öpÇ0ö€Ç2ö�Ç4ö Ç6ö°Ç8öÀÇ:öÐÇ<öàÇ>öð¸Pš£#3ÀPš´#ÄöS¸öP¸öPš #3ÀP3ÀP¸Pÿ6öÿ6öšà #ÄLöS¸öP¸öPš #Æ@öÆBöÇHö(ÇJö2ÇFöÇDö3ÀP¸Pÿ6@öÿ6Bö¡Hö÷.DöP¡Jö÷.FöPÿ6öÿ6öš #ÿ@öÿBö¡Dö@£Dö=uÀ¡Fö@£Fö=u®ÇHöÇJöÄ`öS¸öP¸öPš #3ÀP¹Q¹QPÿ6Höÿ6Jöÿ6öÿ6öš¸ #¸öP¸öPšù#¸Pš£#¸Pš{#‹å]ËU‹ì�ìÄ^ ‰^üŒFþ‹Fü‹v‰‹Fþ‹v‰‹å]ÊU‹ì�ìÄ^ ‰^üŒFþ‹Fü‹v‰‹Fþ‹v‰‹å]ÊU‹ì�ìÄ^ ‰^üŒFþ‹Fü‹v‰‹Fþ‹v‰‹å]ÊU‹ì�ìÆFñ‹FˆFð¸P�FðPš.‹å]ÊU‹ì�ìÆFñ‹F ˆFó‹FˆF÷‹FˆFö¸P�FðPš.‹å]ÊU‹ì�ìÆFñ‹FˆFó¸P�FðPš.‹F÷2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fö2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fõ2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹Fô2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]Ê U‹ì�ìÆFñ ‹FˆFð‹F ‰Fö‹F‰Fô¸P�FðPš.‹å]ÊU‹ì�ìÆFñ ‹F ‰Fö‹F‰Fô¸P�FðPš.‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊU‹ì�ìÆFñ‹FˆFð‹F ˆFó‹FˆFò¸P�FðPš.‹å]ÊU‹ì�ìÆFñ ‹F ˆFð‹F ˆFó‹FˆFò‹F‰Fô¸P�FðPš.‹å]ÊU‹ì�ìÆFñ‹F2ä‰Fî‹FîˆFð‹F‰Fö¸P�FðPš.‹å]ÊU‹ì�ìÆFñ‹FˆFð‹F‰Fö¸P�FðPš.‹å]ÊU‹ì�ìÆFñ‹F‰Fö¸P�FðPš.‹Fð‹vˆ‹å]ÊU‹ì�ìÆFñ‹F‰Fö¸P�FðPš.‹Fð‹v‰‹å]ÊU‹ì�ìÆFñ¸P�FðPš.‹Fð‹vˆ‹Fñ2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊU‹ì�ìÆFñ¸P�FðPš.‹Fþ%@t‹v Æë)‹v Æ‹Fð‹vˆ‹Fñ2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊU‹ì�ìÆFñ¸P�FðPš.‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊU‹ì  �ìÆFñ‹F2ä‰Fî‹FîˆFð‹F‰Fö¸íP�FðPš.‹å]ÊU‹ì�ìÆFñ‹FˆFð‹F‰Fö¸íP�FðPš.‹å]ÊU‹ì�ìÆFñ‹F‰Fö¸íP�FðPš.‹Fð‹vˆ‹å]ÊU‹ì�ìÆFñ‹F‰Fö¸íP�FðPš.‹Fð‹v‰‹å]ÊU‹ì�ìÆFñ‹FˆFð¸îP�FðPš.‹å]ÊU‹ì�ìÆFñ‹FˆFð¸îP�FðPš.‹å]ÊU‹ì�ìÆFñ‹FˆFð‹FˆFò¸îP�FðPš.‹å]ÊU‹ì�ìÆFñ¸îP�FðPš.‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹Fñ2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹Fò‹v ‰‹Fô‹v ‰‹Fö‹v‰‹Fø‹v‰‹å]Ê U‹ì�ìÆFñ(‹FˆFð‹F‰Fö¸îP�FðPš.‹å]ÊU‹ì�ìÆFñ)‹F‰Fö¸îP�FðPš.‹Fñ2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹Fð‹v ˆ‹å]ÊU‹ì�ìÆFñ*‹F ‰Fò‹F‰Fô‹F‰Fö‹F ‰Fü¸îP�FðPš.‹å]ÊU‹ì�ìÆFñ+‹F‰Fö¸îP�FðPš.‹Fñ2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fò‹v ‰‹Fô‹v‰‹å]ÊU‹ì�ìÆFñ,‹F ‰Fò‹F‰Fô‹F‰Fö‹F ‰Fü¸îP�FðPš.‹å]ÊU‹ì�ìÆFñ-‹F ‰Fò‹F‰Fô‹F‰Fö‹F ‰Fü¸îP�FðPš.‹å]ÊU‹ì�ìÆFñ.‹F ˆFð‹FˆFò‹F‰Fö¸îP�FðPš.‹å]ÊU‹ì�ìÆFñ/‹F‰Fö¸îP�FðPš.‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fò2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊU‹ì�ìÆFñ0‹F‰Fö¸îP�FðPš.‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊU‹ì�ìÆFñ‹FˆFð¸ïP�FðPš.‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš.‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fò‹v‰‹Fô‹v‰‹å]ÊU‹ì�ìÆFñ‹FˆFó‹FˆFò¸ïP�FðPš.‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš.‹Fó2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹Fò2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊU‹ì�ìÆFñ‹F ‰Fò‹F ‰Fü‹F‰Fô‹F‰Fö¸ïP�FðPš.‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš.‹Fò‹v ‰‹Fü‹v ‰‹Fô‹v‰‹Fö‹v‰‹å]ÊU‹ì�ìÆFñ‹F‰Fò¸ïP�FðPš.‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš.‹Fò‹v‰‹å]ÊU‹ì�ìÆFñ‹FˆFð‹F‰Fô‹F‰Fö‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš.‹å]ÊU‹ì�ìÆFñ ‹FˆFð‹F‰Fô‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš.‹å]Ê U‹ì�ìÆFñ ‹FˆFð‹F ‰Fô‹F ‰Fö‹F‰Fò‹F‰Fü¸ïP�FðPš.‹å]Ê U‹ì�ìÆFñ ‹F ‰Fô‹F ‰Fö‹F‰Fò‹F‰Fü¸ïP�FðPš.‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]Ê U‹ì�ìÆFñ ‹FˆFð‹F‰Fô‹FˆF÷‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš.‹å]ÊU‹ì�ìÆFñ ‹FˆFð‹F‰Fô‹FˆF÷€~uÆFöëÆFö‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš.‹å]ÊU‹ì�ìÆFñ‹FˆFð‹F‰Fô‹FˆF÷‹FˆFö‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš.‹å]ÊU‹ì�ì€~uÆFñëÆFñ‹FˆFð‹F‰Fô‹FˆF÷‹FˆFö‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš.‹å]ÊU‹ì�ìÆFñ‹F ‰Fø‹F ‰Fú‹F‰Fô‹F‰Fö¸ïP�FðPš.‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš.‹Fø‹v ‰‹Fú‹v ‰‹Fô‹v‰‹Fö‹v‰‹å]ÊU‹ì�ìÆFñ€~ uÆFðëÆFð‹FˆFó‹FˆFò¸ïP�FðPš.‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš.€~ðu‹v Æë‹v Æ‹Fó2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹Fò2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊU‹ì�ìÆFñ‹F ˆFð‹F‰Fò‹F‰Fü¸ïP�FðPš.‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš.‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fò‹v‰‹Fü‹v‰‹å]ÊU‹ì�ìÆFñ‹F‰Fò‹F‰Fü¸ïP�FðPš.‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš.‹Fò‹v‰‹Fü‹v‰‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš.‹Fò‹v ‰‹Fö‹v ‰‹Fô‹v‰‹Fø‹v‰‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš.‹å]ËU‹ì�ìÆFñ¸ïP�FðPš.‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fò‹v‰‹Fô‹v‰‹å]ÊU‹ì�ìÆFñ‹F ˆFð‹F ‰Fò‹F‰Fü¸ïP�FðPš.‹v‹‰Fð‹å]ÊU‹ì�ìÆFñ‹F‰Fò‹F‰Fü¸ïP�FðPš.‹å]ÊU‹ì�ìÆFñ‹F‰Fò¸ïP�FðPš.‹å]ÊU‹ì�ìÆFñ‹F‰Fò‹F‰Fü¸ïP�FðPš.‹å]ÊU‹ì�ìÆFñ ¸ïP�FðPš.‹Fò‹v‰‹Fü‹v‰‹å]ÊU‹ì�ìÆFñ!‹FˆFð‹FˆFõ‹FˆFô‹FˆF÷‹FˆFö‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš.‹å]ÊU‹ì�ìÆFñ"‹FˆFð¸ïP�FðPš.‹å]ÊU‹ì�ìÆFñ#¸ïP�FðPš.‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊU‹ì�ìÆFñ$¸ïP�FðPš.‹Fò%‹v ‰‹Fò%‹v‰‹Fò%‹v‰‹å]ÊU‹ì�ìÆFñ%¸ïP�FðPš.‹Fø‹v ‰‹Fú‹v‰‹Fü‹v‰‹å]ÊU‹ì�ìÆFñ&¸ïP�FðPš.‹Fð%‹v ‰‹Fø‹v‰‹Fú‹v‰‹å]ÊU‹ì�ì‹å]ËU‹ìŠF .¢&Ž^ ‹~ŽE ‹‹]‹M‹U‹u‹} ÍœW‹~�E �EŒE ‰‰]‰M‰U‰u]ÊU‹ìV‹v ‹‹^‰‹D‹^‰^]Ê.ŒjË�PSQRVWU.ŽjÌ]_^ZY[XËPSQRVWU.ŽjÌ]_^ZY[XËèª ‹v‹DÑèréµöFt –Pš.ëS‹v€|uB‹D Ñès;‹D$Ñèr4‹DÑèr-€|u–P–‹D +DPš@8ÿvšq #Àu ÿv¸ Pš¶ ÿvšj‹v€|uÆD‹vÆDV裉Fþ¡¦ü;Ft‹vþ‹~‹E‰Dë ‹v‹D£¦ü‹vÇD–Pš{8‹vÆDÆ‹å]ÂèÝ ¸Pšþ‹v€|u‹F4ˆD‹v€|uaö”üuZ‹DÑèr ÇDNÆD ëH‹v‹D:Fu ÇDPÆDë2‹v‹D‹ÎV‰FüšÎ8:Füu‹v€|u‹DÑès ‹vÇDOÆD‹v€|¸u@ˆFþš-þ‹Fþ‹å]Êè6 ¸Pšþ‹v€|ué–‹Ñèsé�‹D2ä–ÑæÑæÑæÑæ‹„�û2䉆þþ�Æ‘û–P�†ÿPÿ¶þþš?þ¸‘ûP�†ÿ†þþP¡�û2äPš?þ¡�û2ä†þþ@‰†þþÿv¸ÿ+†þþ@P�†ÿ†þþPšê†þþHˆ†ÿ¸ÿP�†ÿP‹vÿtÿtš¥iš-þ‹å]Êè{ ¡¦ü‰Fü¡¦ü;Ft‹vü‹D;Ft‰Füëð‹Fü‰Fþ‹Fþ‹å]ÂèI ‹v‹DˆDÆD$ÇDÇDÇDÇDÆD!ÇD–Pš‡‹v‹DˆD€|¸u@ˆD‹DÑès ¡¦ü‰D‰6¦ü‹å]Âèæ ¸ Pšþÿv ÿv ÿvÿvš¤‹v ‹D$Ñèr‹D Ñèr1‹v ÇD‹D Ñès‹tÆ ‹v �|ÿÿtÿDë ‹v ÇDÿDë ‹v ‹D"Dš-þ‹å]Êèq ¸Pšþƒ~vrÇFþ‹FÑèÑèÑèÑè‰Fü‹Fü;Fþr'‹v€|uÿFþ–P¸P¸÷þPšM ‹v‹D"DëÑ‹F%‰Fþƒ~þv!‹v€|u–Pÿvþ¸÷þPšM ‹v‹D"Dš-þ‹å]ÊèภPšþ‹v €|u‹DF ;D v ÇDWÆDëÿv ÿv ÿvÿvšM ‹F ‹v D‹v €|¸u@ˆFþš-þ‹Fþ‹å]Êè{¸ Pšþÿv¸PšÔ8Ñès,öFtÿv‹v ‹2äPF–PšÑ8ë‹v‹FL‰DÆD   ÿvš{8š-þ‹å]Ê è¸ Pšþ‹v ‹DÑès ÇDLÆDë@‹v ƒ~ ¸u@Ä^&‹ ɺuB"ˆD‹DÑès –Pš:Gëÿv ÿv Ä^SšHÿv š{8š-þ‹å]Ê訸Pšþ‹v€|uS‹DÑès@‹D!Ñèr–PšG‹v‹D Ñès&‹DÑès‹DÑèr–P¹Q–‹DPšË8‹vÆDë ‹vÇDMÆDÿvš{8š-þ‹å]Êè+¸Pšþÿv¸Pèiúš-þ‹å]Êè¸Pšþÿv‹vÿtèDúš-þ‹å]Êèã¸Pšþ‹v‹DÑèr ÇDQÆDëÿvš 8‹v‹D%ˆFþ–Pš{8š-þ‹Fþ‹å]Ê蚸Pšþÿv3ÀPšÔ8Ñèrÿvš{8‹v‹D$ˆFþš-þ‹Fþ‹å]Êè^¸Pšþ‹v€|t騋DÑèr ÇDRÆDé•‹v€|u‹DÑèrÆDÆD%‹v‹DÑèr ÇDTÆDëh‹v‹D%Ñès ÇDSÆDëS‹v‹D Ñèr–P–ÿt ‹DPšË8ë7‹v‹DÑèsÆDë'ÿv¸P‹v‹DPšË8‹v‹D%Ñès ÇDSÆDÿvš{8š-þ‹å]Ê艸Pšþ‹v ÇDÆDÇDÆDÆDÆD‹F‰D ÆDÆ‹FˆD –PšGš-þ‹å]Êè9¸Pšþö”üt ¾�ü‹4€LþÆ”üš-þ‹å]Ëè ¸Pšþö”üu¸‚Pš1Q£�üÇ–üÆ”ü‹F£˜ü‹F£šü¡–ü;’üw[ÿvÿv¸€Pÿ6�üš¹ #Àu‹6�ü€<t ‹2䣖üë,ÿvÿvš 3¸P¸ ÿPš 3¸P¡�ü@PšP3£–üÇ’üƒ>–ü¸u@¢¼öš-þ‹å]ÊèX¸Pšþ‹v€|té“‹DÑèr ÇDUÆD逋v€|uÆD‹v‹DÑès ÇDVÆDë^‹v‹D Ñès–P¹Q–‹DPšÑ8ëAÿv‹vÿt ‹DPšÑ8Ñès*ÿvšq ‹v�|ÿÿtÿDë ‹vÇDÿD‹vÇDÿvš{8š-þ‹å]Ê蘸Pšþÿv3ÀPè×ö‹vÆD%ÆDÆDÆD–Pè ù‹v‹DÑès‹D Ñèr€|t–P–ÿt ‹DPšË8ÿvš{8š-þ‹å]Êè/¸Pšþÿv3ÀPènö‹vÆD%ÆDÆD–Pè»øÿvš{8š-þ‹å]Êèñ¸Pšþÿv3ÀPšÔ8Ñès#‹v‹D$Ñèr€|u–P¹Q–‹DPšË8ëÝ‹vÆD–Pš{8š-þ‹å]Ê蘋v‹DÑèr ÇD`ÆD ëj‹v€|t ÇDaÆDëV‹v‹DÑèr-‹D$Ñèr&‹D Ñès–P–‹D +DPš@8‹v€|u–Pšq ‹vÇDÆD$€|u –Pÿvÿvš7 ‹vÆD–Pš{8‹å]Âè¸Pšþÿvÿv3ÀPèNÿš-þ‹å]ÊèÛ¸Pšþÿv ‹FP‹FPè'ÿš-þ‹å]Êè´¸Pšþÿv¸PšÔ8ÑèsY‹v€|u‹D$Ñèr–P–‹D +DPš@8‹v€|u–Pšq #Àu ÿv¸ Pš¶ ‹v�|ÿÿtÿDë ‹vÇDÿD‹vÆD$ÇD–Pš{8š-þ‹å]Êè¸Pšþÿv¸PšÔ8Ñès>‹v‹D$Ñèr–Pšý 8‹v€|u$€|u –P¸1Pš¶ ëÿv¸P¸ ÿPšÑ8ÿvš{8š-þ‹å]Êè°¸PšþÇ’üÆ”ü¸˜öP¸ÿP¸Pš(8¸ùP¸ÿP¸Pš(8¸˜öP¸P¸ôüPšH¸ùP¸P¸üüPšH¸ùPš‚ 8¸˜öPš 8š-þ‹å]Ëè6¸Pšþ¸ùP¸PP¸Pš(8¸˜öP¸PP¸Pš(8š-þ‹å]Ë^.‹ FFU‹ì+ér;.¼üwVš¼þ‹åéÿæNot Enough Memory$º´ Í!.Œ.ÿ.ºõÑê¹€+ÊÑêÑêÑêB&¡‹è-€rÑ3Û+Âs+Ø+Ó¸€ôŽØŒÎü¾o+ðÑæÑæÑæÑæ�þðþsTƒÆëòЎ¾þÿ‹þýó¥üŽÚúŽÒ¼öû‰&ºüƒ.ºüÑãÑãÑãÑ㉴ü‰¶üǃɸü�À‰¼ü‰Äü�ê€ô�€‰Àü‰.Âü3í‰.¾ü‰.ªü‰. ü‰.¤ü‰.¦ü‰.¨ü‰.Æüƒ>ÞþtÿÞþš½3šEšš Ešƒòš²3ƒ>âþtÿâþ´L ÆüÍ!ÇÌüÿ.Ìü^_ZXŠà‹ÈüWVUÍ!‰Èü‰Êü]ËU‹ì�ì¸P‹FvPš.‹v‹D?Ñès¸"PƒÆL–Pš."Àt ‹v‹F‰DÆD‹vÆD?€|¸u@ˆFþ‹Fþ‹å]ÊU‹ì�ìÿv¸ðPš Ñèré�‹vÇD@�|mÿÿuÇDmë‹vÿDm‹v�|mÿÿu ÇDñÆDë\‹v‹DÑèr€|uL¸!P‹FLPš.2ä£ýƒ>ýu‹v€|t ‹D\%ÿ‰DB‹vƒ>ý¸t@ƒ>ý¹tA"ÁˆD%‹v€|¸u@‹L"L%‘4"ȈNþ‹Fþ‹å]ÊU‹ì�ì‹v‹D Ñès€|u‹DÑèr –P¸ Pš¶ ‹v‹DÑèr#€|u‹D Ñès€|<t–P¸P¸?ÿPšM ‹v€|té•€|<t錖P¸èPš ‹v‹DÑèrw€|uq‹Dm£ý‹Do¢ý‹D\‹ÐD@þ‰Dm‹D^£ý;Tmsƒýÿ‹v¡ýˆDoŠÄ2äˆDpÆDZÆD[ÇÈü¸(PƒÆL–Pš.‹v¡ý‰Dm¡ýˆDoÆDpÆDZÆD[‹å]ÊU‹ì�ìÇFþ‹v€|<u¸PƒÆL–Pš.¸P‹FLPš.‹Fþ‹å]ÊU‹ì�ìÿvš1‹v€|<u¸PƒÆL–Pš.‹v‹D2ä‰Fþ‹Fþ‹å]ÊU‹ì�ì‹v ÇD"‹D% DrˆD%ÆDr‹D%Ñèrƒ~ uÇFþé ‹v ‹D ÑèréDÆD$‹v ‹D";F réÿ‹D@;DBrJ€|<u1¸ PƒÆt–Pš.¸P¸ Pš.‹v ‹Du2ä—þÆEv ÇD@ëÿv šfÑèr‹v ÆDv‹v ‹F +D"£ ý‹DB+D@; ýs£ ý‹v ‹D@vÆP‹D"Ä^ØS¸ ýPšþ¢ý¡ ý‹v D"‹L@€>ýºtB’2äÁЉT@€>ý uÆD$€|<u‹DB‰D@ë5€>ýu+‹v ‹DD" À¹uAˆL%‹D%4ˆDrÆD$‹D2ä‰Fþéñéóþ‹v ‹D$Ñès&€|<u ‹D@;DBu–Pšf‹v ‹|@þ€}v uÿD@é°‹v €|<t2‹v ‹D";F s%‹Ð‹D=2äP¸ÿP‰Vüš.Ä^^ü&ˆ‹v ÿD"ëÐëu‹v ‹D";F sj‹D@;DBr–PšfÑèr‹v ÆD%ÇD"ëI‹v ‹F +D"£ ý‹DB+D@; ýs£ ý‹v ‹D@vÆP‹D"Ä^ØSÿ6 ýš—þ¡ ý‹v D"D@ë‹‹v ‹D2ä‰Fþ‹Fþ‹å]ÊU‹ì�ì‹v ‹D&2ä;F s‰F ‹F ‰Füƒ~ür,Ç"ý¡"ýF –‹D&2ä‹"ýIÄ^Ù&ˆ¡"ý@£"ýH;FüuÚ‹F ‰Fþ‹Fþ‹å]ÊU‹ì�ì‹v NÄ^&‹< u ƒ~ vƒF ÿëæ‹v ƒ~ ¸v@ˆDs‹DsÑèsÆD&ë ‹v ‹F ˆD&‹v ‹D&2ä‰Fþƒ~þrFÇ$ý¡$ýF –‹>$ýOÄ^&‹ˆD&&‹2äP¸P¸ÔüPšñþÑèr‹v ÆDs¡$ý@£$ýH;FþuÀ‹å]ÊU‹ì�ì‹vÆDÜ‹vÿDú‹v‹t‹D&2ä‹~;Eú|Buú€|&.t9€|&:t3‹~‹Ö‹v‹DÜ2ä@ˆEÜ‹v�DÜ‹~‹È‹EÜ2ä–ñ‹ú‹E&ˆ‹vÿDúë«‹v‹t‹D&2ä‹~;Eú|‹Ö‹vUú‹ú‹E&ˆDöë‹vÆDö‹å]ÂU‹ì�ì&ÇFþ‹v‹DsÑès ÇDïÆDé‹FLP¸$P3ÀPšyþ‹vÆDtÇFúUè ÿ‹vÆD<€~ö:¸t@ˆFüöFüuX‹FÜ2ä‰FÚƒ~Úr(Ç(ý‹6(ý€zÜar ‹BÜ2äàÿˆBÜ¡(ý@£(ýH;FÚuÞ€~Üu€~ÝAr‹v‹FÝ2äÀÿˆDLÆFüUè®þ‹FÜ2ä#Àt=~‹vÇDíÆDéRÇ&ý‹FÜ2ä;&ý|¡&ýF–‹>&ý‹C܈DLë ¡&ýF–ÆDL ¡&ý@£&ý= uË€~ÜvéìÇ&ý‹FÜ2ä;&ý|#‹6&ý€zÜ`s‹B܈Bñë‹6&ý‹BÜ2äàÿˆBñë‹6&ýÆBñ ¡&ý@£&ý=u¾¹�vò¿ÿüó¦t¹�vò¿ÿüó¦u,‹v‹D Ñès ÆD=ÆD>ë ‹vÆD=ÆD>‹vÆDÆD<ëX¹�vò¿ÿüó¦u‹vÆD=ÆD>ÆDÆD<ë3¹�vò¿%  ÿüó¦t¹�vò¿+ÿüó¦u‹vÆD=ÆD>ÆDÆD<€~ö.uUèWý‹FÜ2ä=~‹vÇDêÆDéÿëÆFÜÇ&ý‹FÜ2ä;&ý|¡&ýF–‹>&ý‹C܈DTë ¡&ýF–ÆDT ¡&ý@£&ý=uË‹v€|<u[‹DÑèr€|t¸P‹FLPš.<v:‹v‹DÑèsÇDìÆD é~ë"¸P‹FLPš.<v‹vÇDëÆDëZ‹vÆDZÆD[€|u€|<t ÇDóÆD‹vÆD?ÇDmÿÿÆD$‹D4ˆD%ÇDBÆDrÆDÆD!ÇD@ÆD ‹D2ä‰Fþ‹Fþ‹å]ÊU‹ì�ì‹v€|t锋D Ñèr銻1ÿ‰*ýŒ,ý‹^2ÿë-Ç.ýëDÇ.ýë<Ç.ý»5ÿ‰*ýŒ,ýë'Ç.ýëƒû1wóƒë+rîÑã.ÿ§% ç ï ÷ ‹v€|u–Pÿ6.ýÿ6,ýÿ6*ýšM ‹vÆD$‹vÆD ‹v‹D2ä‰Fþ‹Fþ‹å]ÊU‹ì�ì‹v‹D Ñès€|t–P¸P¸=ÿPšM ‰Fþë ‹vÆD ÇFþ‹vÆD$‹Fþ‹å]ÊU‹ì�ìÇ0ý€¡Îü£2ý‹vÄ0ý&‹ À¹tA‘2ä&‹‘2ä+ÁˆÇFþ‹2ä;FwötýtÇFþë8‹v‹2ä‰Füƒ~ü|(Ç4ý¡4ýF–‹>4ýGÄ0ý&‹ˆ¡4ý@£4ýH;FüuÞÆtý‹Fþ‹å]ÊU‹ì�ì‹v ÆD$‹F ‰D"€|<tH€|>ÿué¾ë;‹F ‰Füƒ~ür/Ç6ý‹v ‹D>2äP‹66ýNÄ^&‹2äPš.¡6ý@£6ýH;Füu×ëtÇ6ý¡6ý;F sf‹v ‹D@;DBr –PšfÑèrëN‹F +6ý£8ý‹v ‹DB+D@;8ýs£8ýÄ^6ýS‹v ‹D@vÆPÿ68ýš—þ‹v ÆD?¡8ýD@6ýë’‹v ‹D2ä‰Fþ‹Fþ‹å]ÊU‹ì�ì‹v ‹F‰D‹N‰L#ÀtƒFÿë ÇFÿÿƒFÿ‹FŠÄ2ä À¹uAÿvÿv‹v ‹D ‹Ð‹D 2äÑàÐR¸<ýP¸>ýP‰Nüš³"FüÑèré´�>>ý€ré©¡<ý%ÿ£@ý¡<ý¹ Óè‹>ý¹Óâ £:ý‹v ‹Dm;:ýtG–P¸òPš ‹v ¡:ý‰Dm¸!PƒÆL–Pš.2ä£>ý‹v ƒ>>ý¸t@ƒ>>ý¹tA"ÁˆDrë‹v ‹D%‹L@;@ýºsB"ˆDr‹v ¡@ý‰D@‹Dr‹LB;L@ºwB ˆDrë‹v ÆDr‹v ÆD%‹D2ä‰Fþ‹Fþ‹å]ÊU‹ì�ì‹å]ËU‹ì�ì‹vƒ<tm‹4‹DÑèsÆD‹v‹Pš.ëG‹v‹4‹D Ñès0‹D$Ñèr)‹DÑèr"€|u€|u–Pšq ‹v‹P¸ Pš¶ ‹v‹Pšj‹v‹<‹E‰ë‹‹å]ÂU‹ì�츦üPUèoÿ¸¨üPUègÿ‹å]ËU‹ì�ì‹å]ËU‹ì�ì‹å]ËU]ƒ>ªüu!‹Ü‹_÷ÛÝ�F£ªü‹Gþ£¬ü‹‹_£®ü‰°üÊU]�F;ªürǪüËU‹ìŒØŽÀ‹v ‹~‹NüÑéó¥s¤]ÊU‹ìŒØŽÀ‹v ‹~‹NñNùOýó¤ü]ÊU‹ìŒØŽÀ‹~ ‹N‹FŠàüÑéó«sª]ÊU‹ì‹FŽØ‹v ‹F ŽÀ‹~‹NüÑéó¥s¤]Ê U‹ì‹FŽØ‹v ‹F ŽÀ‹~‹NñNùOýó¤ü]Ê U‹ì‹F ŽÀ‹~ ‹N‹FŠàüÑéó«sª]ÊU‹ì‹F F‹n‰F¸r@]ÊU‹ì‹F ÷f‹n‰F¸r@]ÊU‹ì‹F F‹n‰F¸p�~€t@]ÊU‹ì‹F ÷n‹n‰F¸p�~€t@]ÊU‹ìŽ^‹^¸ð‡H÷Ø]ÊU‹ìŽF‹^&Ç]Ê;>´ür;>¸üs ‹Eþ;Èv‹ÈAÑéŒØŽÀüó¥ËXƒ>ªüu[X‰&ªü‰.¬ü£®ü‰°ü‹&ºüšÙ�XX[PSê.�XX[PSê$�XX[PSê�XX[PSêü�‹.²üMMX‹å][YZQSÿàèìÿš�Ëèãÿš8�ËèÚÿšý�ËèÑÿšÏ�ËèÈÿš �Ëè¿ÿš�Ëè¶ÿš�ËU‹ì‹v‹nŒÇ3ÀŽÆ&ŠVEŽÇ&8uCâï¸]ÊU‹ì‹v‹nŒÇ3ÀŽÆ&ŠVEŽÇ&8rw Câíë�¸]ÊU‹ì‹v‹nŒÇŽÆ&ŠFEŽÇ&ˆCâñ]Ê&ŠCˆGâ÷ËZ^+á+á;&¼ür‹ü&‹CC‰GGâõVRËRVPê¼þU‹ì‹v ÑîÑîÑî;vwv‹N €áþÁŠ,Òå¸r3À]ÊU‹ì‹^‹Ó‹‹^‹~ ‹v‹n ŽÆ&ŠFE< t<t ŽÇ&ˆCâé3Àë �2ä‹Ú‹+щ]Ê U‹ì�ìƒ~ t0‹F H‰FþÇxý¸P‹6xýÄ^&‹2äPš.¡xý@£xýH;FþuÝ‹å]ÊU‹ì�ì„�~ €w ‹F ˆ†|ÿëƆ|ÿ€¸ P�†|ÿPš.�†~ÿPÿvÿv‹†}ÿ2äPš—þ¸P¸yÿPš 3‹†}ÿ2ä‰Fþ‹Fþ‹å]ÊU‹ì�ì‹å]ËU‹ì�ì¿Ôü¾Fÿ¹üó¥¿ôü¾gÿü¥¥¥¥¿üü¾qÿü¥¥¥¥‹å]ËU‹ì�ì¸P¸ Pš.¸P¸ Pš.‹å]ËU‹ì�ì‹å]ËU‹ì�ì‹å]ËU‹ì�ì‹å]ËU‹ì�ì‹å]ËU‹ì�ì‹vÆD!‹å]ÊU‹ì�ì‹v�Æz–‹v‰DÆDsÆD&‹å]ÊU‹ì�ì¸�ÿP‹F&P¸ Pš?þ¡¢ý£¦ýÿ¢ýǤý¡¤ýF–¹ ¡¦ý3Ò÷ñƒÂ0ˆT&¡¦ý3Ò÷ñ£¦ý¡¤ýH£¤ý=uÓ‹å]ÊU‹ì�ì‹å]ËU‹ì�ìǼýÇÂý‹F@%þÿ‰F¡¶ü;¸ür韋6¶ü‹£Àý¡¸ü+¶ü;ÀýwÇFþéÜ¡Àý%u¡Àý£¾ýǼýë_ƒ>¼ýt¡Àý¾ý@£¾ý¡¼ý£¶üë¡ÀýH£¾ý¡¾ý;Fs¡¶ü£¼ýë.¡¶ü@@‰Fþ‹F‹6¶ü‰‹FþF£¶ü¡¾ý;Fv +FH‹6¶ü‰ëg¡¾ý¶ü@@£¶ü¡¸ü;¶üuOƒ>ÂýuÇFþëDƒ>¼ýtÿ6¼ý噴ü£¶üƒ>Âýu ‹F@@P噴ü;¶üu¡´ü£¶üÿÂýǼýéúþ‹Fþ‹å]ÊU‹ì�ì¸PšþÿvšQ‰Fþƒ~þsƒ~þušã�ëší�š-þ‹Fþ‹å]ÊU‹ì�ì¸Pšþš-þ‹å]ËU‹ì�ìÿvÿvš 3‹å]ÂU‹ì�ìƒ>Èýu�~ø¾“ÿü¥¥¥ë �~ø¾™ÿü¥¥¥ÇFþƒ~t/‹vþ‹F3Ò÷6ÈýƒÂ0ˆR÷€z÷9v ‹B÷2äˆB÷‹F3Ò÷6Èý‰F‹FþH‰Fþu¸P�FøPÿvènÿ‹å]ÂU‹ì�ì¸ Pšþšð3¸ P¸ŸÿPUèGÿ‹v ‹2äPF–PUè8ÿšð3¸ P¸©ÿPUè'ÿÇÈý ÿvUè3ÿƒ~t¸ P¸·ÿPUèÿÇÈýÿvUèÿšð3ƒ> ütqƒ>¢üt¸P¸ÁÿPUèÜþÇÈý ÿ6¢üUèçþ¸P¸ÉÿPUèÂþ‹6 ü‹t‹D2äP‹6 ü‹DPUè¦þ¸P¸ÏÿPUèšþ‹6 ü‹4‹2äP‹6 ü‹@PUèƒþšð3ƒ>ªützÇÈý¸P¸ÕÿPUèeþÿ6°üUèvþ¸P¸ÛÿPUèQþÿ6®üUèbþ¸P¸ÝÿPUè=þ»¢ü‰^üŒFþŒÃ“PUèCþ¸P¸åÿPUèþÿ6¬üUè/þ¸P¸íÿPUè þÿ6ªüUèþšð3šš-þ‹å]ÊU‹ì�ì¸Pšþš-þ‹å]Ë�too small€unsigned€divide by zero€REAL€long integer€math overflow€SIN or COS€argument€range€EXP€SQRT€of€LN€TRUNC/ROUND€TAN€ARCSIN or ARCCOS€> 1.0€negative€to€power€math underflow€stack€no room in€is invalid€allocator interrupted€heap€non-positive€3 »øé#4 »éd#» éÈ(»é5 5» éû6 5»*éñe#5»4éçÉ(5»>éÝfCNW»HéÒg]NW»SéÇhaf“N»^é»iifëN»jé¯jlNW»v餃xN»�附|f#�»Œé�…“#œ#Ÿ»˜é€T-œ“Ÿ»¥ët�ê(œ“Ÿ»²ëh�†#œ“Ÿ»¾ë[�‡#¥»ËëQ�´:»ÕëG�ºæ»ßë=�æÅ»éë3�æÐ»óë)�»Ðý²ˆëJ�»þ²‰ëB�»þ²Šë:�»6þ²‹ë2�»Jþ²Œë*�¿‰þ.ŠC.Š2ä¾ð° üª.¬<€rùté‹Ç»ˆþ+ÃHˆŠ˜PS¶�ÂÐR3ÀPš¥iËU‹ì�ì¸ Pšþƒ~ t‹F ŠÄ2ä"ÀtéÛ‹F 2ä2ä‹N2í‘2ä‰Fð÷á‰Fü‹FŠÄ2ä2ä‰Fî÷á‰Fú‹F 2ä2ä÷á‰Fø‹F ŠÄ2ä2ä‹È÷fð‰Fö‘÷fî‰Fô‹FüŠÄ2ä2ä‹Nú2í‘2äÈ‹Fö2ä2äȉNò‹Vò2ö‹Fü2äŠâ‹v‰‹FòŠÄ2ä2ä‹NúŠÍ2í‘2äÈ‹Fø2ä2äÈ‹FöŠÄ2ä2äÈ‹F   ô2ä2äÈ‹v‰ ‹v‹ŠÄ2ä‹NøŠÍ2íÁ‹NôŠÍ2íÈ É¸u@ˆFþëÆFþš-þ‹Fþ‹å]Ê U‹ì�ì¸Pšþš-þ‹å]ËU‹ì�ì‹F£¸ü¡¸ü€£¼ü‹å]ÊU‹ì�ì�^ü‰^üŒFþ‹Fü+¸ü‰Fú�~ú€v@�Fú€þ�~s �~úvÇF‹Fú;Fv ¡¸ü‰Fü‹FHÄ^ü&‰‹F¸ü¡¸ü€£¼ü‹å]ÊU‹ì�ì‹å]ËBW COLOR0.PAS BW BIOS.PAS BW error in file Hard data Device name Operation File systemDevice offline Lost file File name Device fullUnknown deviceFile not foundProtected file File in use File not open Data format Line too longBW4 filuxm.pas BW misy.pas BW conuxm.pas BW miso.pas BW pasuxm.pas BW heah.pas BW1REAL Indefinite (uninitialized or previous error)Missing Arithmetic ProcessorREAL Denormal DetectedREAL Precision Loss=REAL Arithmetic Processor Instruction Illegal or not Emulated= BWBW mishm.pas  :  USERCON LINELPT1PRN     _ÆÿêÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøUSER USER PAS00000.$$$ 0000 0 ? Error: Error Code , Status  Line  In  Of PC =:; SS =, FP =, SP =ö{ COLOR0.PA1 - program to display MINDSET extended palette consisting of } { 2-color dithering of the 16 basic palette colors. } program color1(input,output); const COLOR = 15; { 0-15 colors in MINDSET RGB palette} type COLORS = { ascending order of colors by RGB } (BLACK, DKBLUE, DKGREEN, DKCYAN, DKRED, DKMAGENTA, DKYELLOW, DKWHITE, DKGRAY, BLUE, GREEN, CYAN, RED, MAGENTA, YELLOW, WHITE); POINTS = array [0..1] of word; { definition of (x,y) point } {$include:'bios.typ'} { MINDSET register definitions } var kb_scan: byte; { variable used to get keyboard scan} kb_char: char; { variable used to get keyboard char} data_offset: word; { BX for variable in get_word_addr } data_segment: word; { ES for variable in get_word_addr } ptr_palette: ADS OF word; { basic color palette for MINDSET } palette: array [0..COLOR] of word; { MINDSET basic COLORS palette } even_color: byte  ; { even numbered pixel color } odd_color: byte; { odd numbered pixel color } x,y: integer; { loop variables for x_ & y_org } x_org: integer; { x-coordinate of point to display } y_org: integer; { y-coordinate of point to display } ptr_square: ADS OF word; { pointer to square definition } square: array [0..4] of POINTS; { definition of square POINTS array } {$include:'bios.ext'} { MINDSET BIOS procedure definitions} {*************************** C O L O R 1 . P A S ***************************} begin { start of main COLOR1.PAS program } ptr_square := ADS square; { set pointer to square } { store corner points of square } square[0][0] := 00; { square point [0] at (00,00) } square[0][1] := 00; { square point [0] at (00,00) } square[1][0] := 19; { square point [1] at (19,00) } square[1][1] := 00; { square point [1] at (19,00) } square[2][0] := 19; { square point [2] at (19,12) } square[2][1] := 12; { square point [2] at (19,12) } square[3][0] := 00; { square point [3] at (00,12) } square[3][1] := 12; { square point [3] at (00,12) } ptr_palette := ADS palette; { set up pointer to palette } { store MINDSET RGB palette values } palette[ord(BLACK)] := 16#0000; palette[ord(DKBLUE)] := 16#1000; palette[ord(DKGREEN)] := 16#2000; palette[ord(DKCYAN)] := 16#3000; palette[ord(DKRED)] := 16#4000; palette[ord(DKMAGENTA)] := 16#5000; palette[ord(DKYELLOW)] := 16#6000; palette[ord(DKWHITE)] := 16#7000; palette[ord(DKGRAY)] := 16#8000; palette[ord(BLUE)] := 16#9000; palette[ord(GREEN)] := 16#A000; palette[ord(CYAN)] := 16#B000; palette[ord(RED)] := 16#C000; palette[ord(MAGENTA)] := 16#D000; palette[ord(YELLOW)] := 16#E000; palette[ord(WHITE)] := 16#F000; set_screen_mode(2); { MINDSET mode 320x200x16 color mode} fill_dest_buffer(ord(BLACK)); { erase screen by writing all BLACK }  get_word_addr(ptr_palette^,data_offset,data_segment); { get ES:BX for palette } set_palette(ord(BLACK),ord(BLACK),COLOR,data_offset,data_segment); { set MINDSET palette on machine } get_word_addr(ptr_square^,data_offset,data_segment); { get ES:BX for square } even_color := ord(BLACK); { even numbered pixels initially } odd_color := ord(BLACK); { odd numbered pixels initially } x_org := 18; { draw 16 color palette bar at top } x := 18; { x increment for color bar } y_org := 00; { starting at (x,y) = (18,00) } for even_color := 0 to 15 do blt_polygon(0,4,even_color,even_color, x_org+(x*ord(even_color)),y_org, data_offset,data_segment); x_org := 00; { draw 16 color palette bar at left } y_org := 11; { starting at (x,y) = (00,11) } y := 11; { y increment for color bar } for odd_color := 0 to 15 do blt_polygon(0,4,odd_color,odd_color, x_org,y_org+(y*ord(odd_color)), data_offset,data_segment); x_org := 18; { draw 2-color dithered colors } y_org := 11; x := 18; { size of each color block is } y := 11; { 18x11 pixels } { draw 16 colors in boxes on display} for even_color := 0 to 15 do { make columns/rows same even/odd } for odd_color := 0 to 15 do blt_polygon(0,4,even_color,odd_color, x_org+(x*ord(even_color)), y_org+(y*ord(odd_color)), data_offset,data_segment); { data_offset & segment for square } { store corner points of outline } square[0][0] := 18; { square point [0] at (18,11) } square[0][1] := 11; { square point [0] at (18,11) } square[1][0] := 306; { square point [1] at (306,11) } square[1][1] := 11; { square point [1] at (306,11) } square[2][0] := 306; { square point [2] at (306,187) } square[2][1] := 187; { square point [2] at (306,187) } square[3][0] := 18; { square point [3] at (18,187) } square[3][1] := 187; { square point [3] at (18,187) } square[4][0] := 18; { square point [4] at (18,11) } square[4][1] := 11; { square point [4] at (18,11) } blt_polyline(0,5,ord(WHITE),chained,0,0,data_offset,data_segment); { data_offset & segment for outline } get_kb_char(kb_char,kb_scan); { wait for user to press any key } set_screen_mode(3); { MINDSET mode 640x200 for 80 column} set_ibm_mode(2); { set IBM character mo  de with cursor} end. { end of COLOR1.PAS program } NULF OBJ hv s€NULE6 OBJ hv t€FINK &g uä PASKEY Y>a>q>y>Â>à>:>p>‡>È>à> >)>.>œ>×>è>8>L>‰>»>É>Ý> >+>B>N>l>†>‹>Ÿ>â>ô>ü>>>3>\>y>~>’>¡>µ>Æ>Ú>÷>> >#>.>:>H>_>Ú>>> >4>k>p>„>ž>°>À>ö>>&>5>Q>e>Á>Ö>â> > >% >m >u >z >Ž >³ >¸ >Ì >× >ü > > >l >| >› >© >½ >Î >â >õ > > >8 >H >X >… >Š >ž >ª >¿ >Ù >ì >ô >ù > >) >: >L >^ >g >p >u >‡ >˜ >© >® >Ë >A P Y » ¿ ÷ ü       6 w Ï X … ¥   O _ w Ž   9   L y Æ Ì º  ? M – ž Í  • à ÷ &øUødøoøÜæðú&/8AJSï;9x9�9ž999SMòW W?WGW[WbWgW€W…Wo³o¸oØoo�oooo.o3o`“¹ ¹$¹)¹U‹ì�ìš >»pö‰löŒnöÇpöÇröÇtöÇvöÇxöÇzö Ç|öÇ~ö »@ö‰<öŒ>öÇ@öÇBöÇDö ÇFö0ÇHö@ÇJöPÇLö`ÇNöpÇPö€ÇRö�ÇTö ÇVö°ÇXöÀÇZöÐÇ\öàÇ^öð¸Pš§)3ÀPš¸)Ä<öS¸8öP¸:öPš )3ÀP3ÀP¸Pÿ68öÿ6:öšä )ÄlöS¸8öP¸:öPš )Æ`öÆböÇhöÇdöÇjöÆ`ö3ÀP¸Pÿ6`öÿ6`ö¡`ö2ä÷.döhöPÿ6jöÿ68öÿ6:öš )¡`ö@£`ö<uÇÇhöÇjö Çfö Æbö3ÀP¸Pÿ6böÿ6böÿ6hö¡bö2ä÷.föjöPÿ68öÿ6:öš )¡bö@£bö<uÇÇhöÇjö ÇdöÇfö Æ`öÆbö3ÀP¸Pÿ6`öÿ6bö¡`ö2ä÷.döhöP¡bö2ä÷.föjöPÿ68öÿ6:öš )¡bö@£bö<u½¡`ö@£`ö<u­ÇpöÇrö Çtö3Çvö Çxö3Çzö¼Ç|öÇ~ö¼Ç€öÇ‚ö 3ÀP¹Q¹QP3ÀPPÿ68öÿ6:öš¼ )¸6öP¸4öPšý)¸Pš§)¸Pš)‹å]ËU‹ì�ìÄ^ ‰^üŒFþ‹Fü‹v‰‹Fþ‹v‰‹å]ÊU‹ì�ìÄ^ ‰^üŒFþ‹Fü‹v‰‹Fþ‹v‰‹å]ÊU‹ì�ìÄ^ ‰^üŒFþ‹Fü‹v‰‹Fþ‹v‰‹å]ÊU‹ì�ìÆFñ‹FˆFð¸P�FðPš4‹å]ÊU‹ì�ìÆFñ‹F ˆFó‹FˆF÷‹FˆFö¸P�FðPš4‹å]ÊU‹ì�ìÆFñ‹FˆFó¸P�FðPš4‹F÷2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fö2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fõ2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹Fô2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]Ê U‹ì�ìÆFñ   ‹FˆFð‹F ‰Fö‹F‰Fô¸P�FðPš4‹å]ÊU‹ì�ìÆFñ ‹F ‰Fö‹F‰Fô¸P�FðPš4‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊU‹ì�ìÆFñ‹FˆFð‹F ˆFó‹FˆFò¸P�FðPš4‹å]ÊU‹ì�ìÆFñ ‹F ˆFð‹F ˆFó‹FˆFò‹F‰Fô¸P�FðPš4‹å]ÊU‹ì�ìÆFñ‹F2ä‰Fî‹FîˆFð‹F‰Fö¸P�FðPš4‹å]ÊU‹ì�ìÆFñ‹FˆFð‹F‰Fö¸P�FðPš4‹å]ÊU‹ì�ìÆFñ‹F‰Fö¸P�FðPš4‹Fð‹vˆ‹å]ÊU‹ì�ìÆFñ‹F‰Fö¸P�FðPš4‹Fð‹v‰‹å]ÊU‹ì�ìÆFñ¸P�FðPš4‹Fð‹vˆ‹Fñ2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊU‹ì�ìÆFñ¸P�FðPš4‹Fþ%@t‹v Æë)‹v Æ‹Fð‹vˆ‹Fñ2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊU‹ì�ìÆFñ¸P�FðPš4‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊU‹ì�ìÆFñ‹F2ä‰Fî‹FîˆFð‹F‰Fö¸íP�FðPš4‹å]ÊU‹ì�ìÆFñ‹FˆFð‹F‰Fö¸íP�FðPš4‹å]ÊU‹ì�ìÆFñ‹F‰Fö¸íP�FðPš4‹Fð‹vˆ‹å]ÊU‹ì�ìÆFñ‹F‰Fö¸íP�FðPš4‹Fð‹v‰‹å]ÊU‹ì�ìÆFñ‹FˆFð¸îP�FðPš4‹å]ÊU‹ì�ìÆFñ‹FˆFð¸îP�FðPš4‹å]ÊU‹ì�ìÆFñ‹FˆFð‹FˆFò¸îP�FðPš4‹å]ÊU‹ì�ìÆFñ¸îP�FðPš4‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹Fñ2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹Fò‹v ‰‹Fô‹v ‰‹Fö‹v‰‹Fø‹v‰‹å]Ê U‹ì�ìÆFñ(‹FˆFð‹F‰Fö¸îP�FðPš4‹å]ÊU‹ì�ìÆFñ)‹F‰Fö¸îP�FðPš4‹Fñ2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹Fð‹v ˆ‹å]ÊU‹ì�ìÆFñ*‹F ‰Fò‹F‰Fô‹F‰Fö‹F ‰Fü¸îP�FðPš4‹å]ÊU‹ì�ìÆFñ+‹F‰Fö¸îP�FðPš4‹Fñ2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fò‹v ‰‹Fô‹v‰‹å]ÊU‹ì�ìÆFñ,‹F ‰Fò‹F‰Fô‹F‰Fö‹F ‰Fü¸îP�FðPš4‹å]ÊU‹ì�ìÆFñ-‹F ‰Fò‹F‰Fô‹F‰Fö‹F ‰Fü¸îP�FðPš4‹å]ÊU‹ì�ìÆFñ.‹F ˆFð‹FˆFò‹F‰Fö¸îP�FðPš4‹å]ÊU‹ì�ìÆFñ/‹F‰Fö¸îP�FðPš4‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fò2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊU‹ì�ìÆFñ0‹F‰Fö¸îP�FðPš4‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊU‹ì�ìÆFñ‹FˆFð¸ïP�FðPš4‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš4‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fò‹v‰‹Fô‹v‰‹å]ÊU‹ì�ìÆFñ‹FˆFó‹FˆFò¸ïP�FðPš4‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš4‹Fó2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹Fò2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊU‹ì�ìÆFñ‹F ‰Fò‹F ‰Fü‹F‰Fô‹F‰Fö¸ïP�FðPš4‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš4‹Fò‹v ‰‹Fü‹v ‰‹Fô‹v‰‹Fö‹v‰‹å]ÊU‹ì�ìÆFñ‹F‰Fò¸ïP�FðPš4‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš4‹Fò‹v‰‹å]ÊU‹ì�ìÆFñ‹FˆFð‹F‰Fô‹F‰Fö‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš4‹å]ÊU‹ì�ìÆFñ ‹FˆFð‹F‰Fô‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš4‹å]Ê U‹ì�ìÆFñ ‹FˆFð‹F ‰Fô‹F ‰Fö‹F‰Fò‹F‰Fü¸ïP�FðPš4‹å]Ê U‹ì�ìÆFñ ‹F ‰Fô‹F ‰Fö‹F‰Fò‹F‰Fü¸ïP�FðPš4‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]Ê U‹ì�ìÆFñ ‹FˆFð‹F‰Fô‹FˆF÷‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš4‹å]ÊU‹ì�ìÆFñ ‹FˆFð‹F‰Fô‹FˆF÷€~uÆFöëÆFö‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš4‹å]ÊU‹ì�ìÆFñ‹FˆFð‹F‰Fô‹FˆF÷‹FˆFö‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš4‹å]ÊU‹ì�ì€~uÆFñëÆFñ‹FˆFð‹F‰Fô‹FˆF÷‹FˆFö‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš4‹å]ÊU‹ì�ìÆFñ‹F ‰Fø‹F ‰Fú‹F‰Fô‹F‰Fö¸ïP�FðPš4‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš4‹Fø‹v ‰‹Fú‹v ‰‹Fô‹v‰‹Fö‹v‰‹å]ÊU‹ì�ìÆFñ€~ uÆFðëÆFð‹FˆFó‹FˆFò¸ïP�FðPš4‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš4€~ðu‹v Æë‹v Æ‹Fó2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹Fò2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊU‹ì�ìÆFñ‹F ˆFð‹F‰Fò‹F‰Fü¸ïP�FðPš4‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš4‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fò‹v‰‹Fü‹v‰‹å]ÊU‹ì�ìÆFñ‹F‰Fò‹F‰Fü¸ïP�FðPš4‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš4‹Fò‹v‰‹Fü‹v‰‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš4‹Fò‹v ‰‹Fö‹v ‰‹Fô‹v‰‹Fø‹v‰‹å]ÊU‹ì�ìÆFñ¸ïP�FðPš4‹å]ËU‹ì�ìÆFñ¸ïP�FðPš4‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹v ˆ‹Fò‹v‰‹Fô‹v‰‹å]ÊU‹ì�ìÆFñ‹F ˆFð‹F ‰Fò‹F‰Fü¸ïP�FðPš4‹v‹‰Fð‹å]ÊU‹ì�ìÆFñ‹F‰Fò‹F‰Fü¸ïP�FðPš4‹å]ÊU‹ì�ìÆFñ‹F‰Fò¸ïP�FðPš4‹å]ÊU‹ì�ìÆFñ‹F‰Fò‹F‰Fü¸ïP�FðPš4‹å]ÊU‹ì�ìÆFñ ¸ïP�FðPš4‹Fò‹v‰‹Fü‹v‰‹å]ÊU‹ì�ìÆFñ!‹FˆFð‹FˆFõ‹FˆFô‹FˆF÷‹FˆFö‹F ‰Fø‹F ‰Fú‹F‰Fò‹F‰Fü¸ïP�FðPš4‹å]ÊU‹ì�ìÆFñ"‹FˆFð¸ïP�FðPš4‹å]ÊU‹ì�ìÆFñ#¸ïP�FðPš4‹Fð2ä‰Fîƒ~î}�Fî‹Fî‹vˆ‹å]ÊU‹ì�ìÆFñ$¸ïP�FðPš4‹Fò%‹v ‰‹Fò%‹v‰‹Fò%‹v‰‹å]ÊU‹ì�ìÆFñ%¸ïP�FðPš4‹Fø‹v ‰‹Fú‹v‰‹Fü‹v‰‹å]ÊU‹ì�ìÆFñ&¸ïP�FðPš4‹Fð%‹v ‰‹Fø‹v‰‹Fú‹v‰‹å]ÊU‹ì�ì‹å]ËU‹ìŠF .¢&Ž^ ‹~ŽE ‹‹]‹M‹U‹u‹} ÍœW‹~�E �EŒE ‰‰]‰M‰U‰u]ÊU‹ìV‹v ‹‹^‰‹D‹^‰^]Ê.ŒjË�PSQRVWU.ŽjÌ]_^ZY[XËPSQRVWU.ŽjÌ]_^ZY[XËèª ‹v‹DÑèréµöFt –Pš. ëS‹v€|uB‹D Ñès;‹D$Ñèr4‹DÑèr-€|u–P–‹D +DPš@>ÿvšq #Àu ÿv¸ Pš¶ ÿvšj ‹v€|uÆD‹vÆDV裉Fþ¡¦ü;Ft‹vþ‹~‹E‰Dë ‹v‹D£¦ü‹vÇD–Pš{>‹vÆDÆ‹å]ÂèÝ ¸Pš‹v€|u‹F4ˆD‹v€|uaö˜üuZ‹DÑèr ÇDNÆD ëH‹v‹D:Fu ÇDPÆDë2‹v‹D‹ÎV‰FüšÎ>:Füu‹v€|u‹DÑès ‹vÇDOÆD‹v€|¸u@ˆFþš-‹Fþ‹å]Êè6 ¸Pš‹v€|ué–‹Ñèsé�‹D2ä–ÑæÑæÑæÑæ‹„”û2䉆þþ�Æ•û–P�†ÿPÿ¶þþš?¸•ûP�†ÿ†þþP¡”û2äPš?¡”û2ä†þþ@‰†þþÿv¸ÿ+†þþ@P�†ÿ†þþPšê †þþHˆ†ÿ¸ÿP�†ÿP‹v  ÿtÿtš¥oš-‹å]Êè{ ¡¦ü‰Fü¡¦ü;Ft‹vü‹D;Ft‰Füëð‹Fü‰Fþ‹Fþ‹å]ÂèI ‹v‹DˆDÆD$ÇDÇDÇDÇDÆD!ÇD–Pš‡ ‹v‹DˆD€|¸u@ˆD‹DÑès ¡¦ü‰D‰6¦ü‹å]Âèæ ¸ Pšÿv ÿv ÿvÿv𤠋v ‹D$Ñèr‹D Ñèr1‹v ÇD‹D Ñès‹tÆ ‹v �|ÿÿtÿDë ‹v ÇDÿDë ‹v ‹D"Dš-‹å]Êèq ¸Pšƒ~vrÇFþ‹FÑèÑèÑèÑè‰Fü‹Fü;Fþr'‹v€|uÿFþ–P¸P¸÷þPšM ‹v‹D"DëÑ‹F%‰Fþƒ~þv!‹v€|u–Pÿvþ¸÷þPšM ‹v‹D"Dš-‹å]ÊèภPš‹v €|u‹DF ;D v ÇDWÆDëÿv ÿv ÿvÿvšM ‹F ‹v D‹v €|¸u@ˆFþš-‹Fþ‹å]Êè{¸ Pšÿv¸PšÔ>Ñès,öFtÿv‹v ‹2äPF–PšÑ>ë‹v‹FL‰DÆDÿvš{>š-‹å]Ê è¸ Pš‹v ‹DÑès ÇDLÆDë@‹v ƒ~ ¸u@Ä^&‹ ɺuB"ˆD‹DÑès –Pš:Mëÿv ÿv Ä^SšH ÿv š{>š-‹å]Ê訸Pš‹v€|uS‹DÑès@‹D!Ñèr–PšM‹v‹D Ñès&‹DÑès‹DÑèr–P¹Q–‹DPšË>‹vÆDë ‹vÇDMÆDÿvš{>š-‹å]Êè+¸Pšÿv¸Pèiúš-‹å]Êè¸Pšÿv‹vÿtèDúš-‹å]Êèã¸Pš‹v‹DÑèr ÇDQÆDëÿvš >‹v‹D%ˆFþ–Pš{>š-‹Fþ‹å]Ê蚸Pšÿv3ÀPšÔ>Ñèrÿvš{>‹v‹D$ˆFþš-‹Fþ‹å]Êè^¸Pš‹v€|t騋DÑèr ÇDRÆDé•‹v€|u‹DÑèrÆDÆD%‹v‹DÑèr ÇDTÆDëh‹v‹D%Ñès ÇDSÆDëS‹v‹D Ñèr–P–ÿt ‹DPšË>ë7‹v‹DÑèsÆDë'ÿv¸P‹v‹DPšË>‹v‹D%Ñès ÇDSÆDÿvš{>š-‹å]Ê艸Pš‹v ÇDÆDÇDÆDÆDÆD‹F‰D ÆDÆ‹FˆD –PšMš-‹å]Êè9¸Pšö˜üt ¾”ü‹4€LþƘüš-‹å]Ëè ¸Pšö˜üu¸‚Pš1W£”üÇšüƘü‹F£œü‹F£žü¡šü;–üw[ÿvÿv¸€Pÿ6”üš¹ #Àu‹6”ü€<t ‹2䣚üë,ÿvÿvš 9¸P¸ ÿPš 9¸P¡”ü@PšP9£šüÇ–üƒ>šü¸u@¢Àöš-‹å]ÊèX¸Pš‹v€|té“‹DÑèr ÇDUÆD逋v€|uÆD‹v‹DÑès ÇDVÆDë^‹v‹D Ñès–P¹Q–‹DPšÑ>ëAÿv‹vÿt ‹DPšÑ>Ñès*ÿvšq ‹v�|ÿÿtÿDë ‹vÇDÿD‹vÇDÿvš{>š-‹å]Ê蘸Pšÿv3ÀPè×ö‹vÆD%ÆDÆDÆD–Pè ù‹v‹DÑès‹D Ñèr€|t–P–ÿt ‹DPšË>ÿvš{>š-‹å]Êè/¸Pšÿv3ÀPènö‹vÆD%ÆDÆD–Pè»øÿvš{>š-‹å]Êèñ¸Pšÿv3ÀPšÔ>Ñès#‹v‹D$Ñèr€|u–P¹Q–‹DPšË>ëÝ‹vÆD–Pš{>š-‹å]Ê蘋v‹DÑèr ÇD`ÆD ëj‹v€|t ÇDaÆDëV‹v‹DÑèr-‹D$Ñèr&‹D Ñès–P–‹D +DPš@>‹v€|u–Pšq ‹vÇDÆD$€|u –Pÿvÿvš7 ‹vÆD–Pš{>‹å]Âè¸Pšÿvÿv3ÀPèNÿš-‹å]ÊèÛ¸Pšÿv ‹FP‹FPè'ÿš-‹å]Êè´¸Pšÿv¸PšÔ>ÑèsY‹v€|u‹D$Ñèr–P–‹D +DPš@>‹v€|u–Pšq #Àu ÿv¸ Pš¶ ‹v�|ÿÿtÿDë ‹vÇDÿD‹vÆD$ÇD–Pš{>š-‹å]Êè¸Pšÿv¸PšÔ>Ñès>‹v‹D$Ñèr–Pšý >‹v€|u$€|u –P¸1Pš¶ ëÿv¸P¸ ÿPšÑ>ÿvš{>š-‹å]Êè°¸PšÇ–üƘü¸œöP¸ÿP¸Pš(>¸ùP¸ÿP¸Pš(>¸œöP¸P¸ôüPšH ¸ùP¸P¸üüPšH ¸ùPš‚ >¸œöPš >š-‹å]Ëè6¸Pš¸ùP¸PP¸Pš(>¸œöP¸PP¸Pš(>š-‹å]Ë^.‹ FFU‹ì+ér;.¼üwVš¼‹åéÿæNot Enough Memory$º´ Í!.Œ.ÿ.º õÑê¹€+ÊÑêÑêÑêB&¡‹è-„rÑ3Û+Âs+Ø+Ó¸„ôŽØŒÎü¾s+ðÑæÑæÑæÑæ�þðþsTƒÆëòЎ¾þÿ‹þýó¥üŽÚúŽÒ¼ öû‰&ºüƒ.ºüÑãÑãÑãÑ㉴ü‰¶üǃɸü�À‰¼ü‰Äü�ê„ô�„‰Àü‰.Âü3í‰.¾ü‰.ªü‰. ü‰.¤ü‰.¦ü‰.¨ü‰.Æüƒ>ÞþtÿÞþš½9šKšš Kšƒøš²9ƒ>âþtÿâþ´L ÆüÍ!ÇÌüÿ.Ìü^_ZXŠà‹ÈüWVUÍ!‰Èü‰Êü]ËU‹ì�ì¸P‹FvPš. ‹v‹D?Ñès¸"PƒÆL–Pš. "Àt ‹v‹F‰DÆD‹vÆD?€|¸u@ˆFþ‹Fþ‹å]ÊU‹ì�ìÿv¸ðPš Ñèré�‹vÇD@�|mÿÿuÇDmë‹vÿDm‹v�|mÿÿu ÇDñÆDë\‹v‹DÑèr€|uL¸!P‹FLPš. 2ä£ýƒ>ýu‹v€|t ‹D\%ÿ‰DB‹vƒ>ý¸t@ƒ>ý¹tA"ÁˆD%‹v€|¸u@‹L"L%‘4"ȈNþ‹Fþ‹å]ÊU‹ì�ì‹v‹D Ñès€|u‹DÑèr –P¸ Pš¶ ‹v‹DÑèr#€|u‹D Ñès€|<t–P¸P¸?ÿPšM ‹v€|té•€|<t錖P¸èPš ‹v‹DÑèrw€|uq‹Dm£ý‹Do¢ý‹D\‹ÐD@þ‰Dm‹D^£ý;Tmsƒýÿ‹v¡ýˆDoŠÄ2äˆDpÆDZÆD[ÇÈü¸(PƒÆL–Pš. ‹v¡ý‰Dm¡ýˆDoÆDpÆDZÆD[‹å]ÊU‹ì�ìÇFþ‹v€|<u¸PƒÆL–Pš. ¸P‹FLPš. ‹Fþ‹å]ÊU‹ì�ìÿvš1 ‹v€|<u¸PƒÆL–Pš. ‹v‹D2ä‰Fþ‹Fþ‹å]ÊU‹ì�ì‹v ÇD"‹D% DrˆD%ÆDr‹D%Ñèrƒ~ uÇFþé ‹v ‹D ÑèréDÆD$‹v ‹D";F réÿ‹D@;DBrJ€|<u1¸ PƒÆt–Pš. ¸P¸ Pš. ‹v ‹Du2ä—þÆEv ÇD@ëÿv šf Ñèr‹v ÆDv‹v ‹F +D"£ ý‹DB+D@; ýs£ ý‹v ‹D@vÆP‹D"Ä^ØS¸ ýPš¢ý¡ ý‹v D"‹L@€>ýºtB’2äÁЉT@€>ý uÆD$€|<u‹DB‰D@ë5€>ýu+‹v ‹DD" À¹uAˆL%‹D%4ˆDrÆD$‹D2ä‰Fþéñéóþ‹v ‹D$Ñès&€|<u ‹D@;DBu–Pšf ‹v ‹|@þ€}v uÿD@é°‹v €|<t2‹v ‹D";F s%‹Ð‹D=2äP¸ÿP‰Vüš. Ä^^ü&ˆ‹v ÿD"ëÐëu‹v ‹D";F sj‹D@;DBr–Pšf Ñèr‹v ÆD%ÇD"ëI‹v ‹F +D"£ ý‹DB+D@; ýs£ ý‹v ‹D@vÆP‹D"Ä^ØSÿ6 ýš—¡ ý‹v D"D@ë‹‹v ‹D2ä‰Fþ‹Fþ‹å]ÊU‹ì�ì‹v ‹D&2ä;F s‰F ‹F ‰Füƒ~ür,Ç"ý¡"ýF –‹D&2ä‹"ýIÄ^Ù&ˆ¡"ý@£"ýH;FüuÚ‹F ‰Fþ‹Fþ‹å]ÊU‹ì�ì‹v NÄ^&‹< u ƒ~ vƒF ÿëæ‹v ƒ~ ¸v@ˆDs‹DsÑèsÆD&ë ‹v ‹F ˆD&‹v ‹D&2ä‰Fþƒ~þrFÇ$ý¡$ýF –‹>$ýOÄ^&‹ˆD&&‹2äP¸P¸ÔüPšñÑèr‹v ÆDs¡$ý@£$ýH;FþuÀ‹å]ÊU‹ì�ì‹vÆDÜ‹vÿDú  ‹v‹t‹D&2ä‹~;Eú|Buú€|&.t9€|&:t3‹~‹Ö‹v‹DÜ2ä@ˆEÜ‹v�DÜ‹~‹È‹EÜ2ä–ñ‹ú‹E&ˆ‹vÿDúë«‹v‹t‹D&2ä‹~;Eú|‹Ö‹vUú‹ú‹E&ˆDöë‹vÆDö‹å]ÂU‹ì�ì&ÇFþ‹v‹DsÑès ÇDïÆDé‹FLP¸$P3ÀPšy‹vÆDtÇFúUè ÿ‹vÆD<€~ö:¸t@ˆFüöFüuX‹FÜ2ä‰FÚƒ~Úr(Ç(ý‹6(ý€zÜar ‹BÜ2äàÿˆBÜ¡(ý@£(ýH;FÚuÞ€~Üu€~ÝAr‹v‹FÝ2äÀÿˆDLÆFüUè®þ‹FÜ2ä#Àt=~‹vÇDíÆDéRÇ&ý‹FÜ2ä;&ý|¡&ýF–‹>&ý‹C܈DLë ¡&ýF–ÆDL ¡&ý@£&ý= uË€~ÜvéìÇ&ý‹FÜ2ä;&ý|#‹6&ý€zÜ`s‹B܈Bñë‹6&ý‹BÜ2äàÿˆBñë‹6&ýÆBñ ¡&ý@£&ý=u¾¹�vò¿ÿüó¦t¹�vò¿ÿüó¦u,‹v‹D Ñès ÆD=ÆD>ë ‹vÆD=ÆD>‹vÆDÆD<ëX¹�vò¿ÿüó¦u‹vÆD=ÆD>ÆDÆD<ë3¹�vò¿%ÿüó¦t¹�vò¿+ÿüó¦u‹vÆD=ÆD>ÆDÆD<€~ö.uUèWý‹FÜ2ä=~‹vÇDêÆDéÿëÆFÜÇ&ý‹FÜ2ä;&ý|¡&ýF–‹>&ý‹C܈DTë ¡&ýF–ÆDT ¡&ý@£&ý=uË‹v€|<u[‹DÑèr€|t¸P‹FLPš. <v:‹v‹DÑèsÇDìÆD é~ë"¸P‹FLPš. <v‹vÇDëÆDëZ‹vÆDZÆD[€|u€|<t ÇDóÆD‹vÆD?ÇDmÿÿÆD$‹D4ˆD%ÇDBÆDrÆDÆD!ÇD@ÆD ‹D2ä‰Fþ‹Fþ‹å]ÊU‹ì�ì‹v€|t锋D Ñèr銻1ÿ‰*ýŒ,ý‹^2ÿë-Ç.ýëDÇ.ýë<Ç.ý»5ÿ‰*ýŒ,ýë'Ç.ýëƒû1wóƒë+rîÑã.ÿ§% ç ï ÷ ‹v€|u–Pÿ6.ýÿ6,ýÿ6*ýšM ‹vÆD$‹vÆD ‹v‹D2ä‰Fþ‹Fþ‹å]ÊU‹ì�ì‹v‹D Ñès€|t–P¸P¸=ÿPšM ‰Fþë ‹vÆD ÇFþ‹vÆD$‹Fþ‹å]ÊU‹ì�ìÇ0ý€¡Îü£2ý‹vÄ0ý&‹ À¹tA‘2ä&‹‘2ä+ÁˆÇFþ‹2ä;FwötýtÇFþë8‹v‹2ä‰Füƒ~ü|(Ç4ý¡4ýF–‹>4ýGÄ0ý&‹ˆ¡4ý@£4ýH;FüuÞÆtý‹Fþ‹å]ÊU‹ì�ì‹v ÆD$‹F ‰D"€|<tH€|>ÿué¾ë;‹F ‰Füƒ~ür/Ç6ý‹v ‹D>2äP‹66ýNÄ^&‹2äPš. ¡6ý@£6ýH;Füu×ëtÇ6ý¡6ý;F sf‹v ‹D@;DBr –Pšf ÑèrëN‹F +6ý£8ý‹v ‹DB+D@;8ýs£8ýÄ^6ýS‹v ‹D@vÆPÿ68ýš—‹v ÆD?¡8ýD@6ýë’‹v ‹D2ä‰Fþ‹Fþ‹å]ÊU‹ì�ì‹v ‹F‰D‹N‰L#ÀtƒFÿë ÇFÿÿƒFÿ‹FŠÄ2ä À¹uAÿvÿv‹v ‹D ‹Ð‹D 2äÑàÐR¸<ýP¸>ýP‰Nüš¹"FüÑèré´�>>ý€ré©¡<ý%ÿ£@ý¡<ý¹ Óè‹>ý¹Óâ £:ý‹v ‹Dm;:ýtG–P¸òPš ‹v ¡:ý‰Dm¸!PƒÆL–Pš. 2ä£>ý‹v ƒ>>ý¸t@ƒ>>ý¹tA"ÁˆDrë‹v ‹D%‹L@;@ýºsB"ˆDr‹v ¡@ý‰D@‹Dr‹LB;L@ºwB ˆDrë‹v ÆDr‹v ÆD%‹D2ä‰Fþ‹Fþ‹å]ÊU‹ì�ì‹å]ËU‹ì�ì‹vƒ<tm‹4‹DÑèsÆD‹v‹Pš. ëG‹v‹4‹D Ñès0‹D$Ñèr)‹DÑèr"€|u€|u–Pšq ‹v‹P¸ Pš¶ ‹v‹Pšj ‹v‹<‹E‰ë‹‹å]ÂU‹ì�츦üPUèoÿ¸¨üPUègÿ‹å]ËU‹ì�ì‹å]ËU‹ì�ì‹å]ËU]ƒ>ªüu!‹Ü‹_÷ÛÝ�F£ªü‹Gþ£¬ü‹‹_£®ü‰°üÊU]�F;ªürǪüËU‹ìŒØŽÀ‹v ‹~‹NüÑéó¥s¤]ÊU‹ìŒØŽÀ‹v ‹~‹NñNùOýó¤ü]ÊU‹ìŒØŽÀ‹~ ‹N‹FŠàüÑéó«sª]ÊU‹ì‹FŽØ‹v ‹F ŽÀ‹~‹NüÑéó¥s¤]Ê U‹ì‹FŽØ‹v ‹F ŽÀ‹~‹NñNùOýó¤ü]Ê U‹ì‹F ŽÀ‹~ ‹N‹FŠàüÑéó«sª]ÊU‹ì‹F F‹n‰F¸r@]ÊU‹ì‹F ÷f‹n‰F¸r@]ÊU‹ì‹F F‹n‰F¸p�~€t@]ÊU‹ì‹F ÷n‹n‰F¸p�~€t@]ÊU‹ìŽ^‹^¸ð‡H÷Ø]ÊU‹ìŽF‹^&Ç]Ê;>´ür;>¸üs ‹Eþ;Èv‹ÈAÑéŒØŽÀüó¥ËXƒ>ªüu[X‰&ªü‰.¬ü£®ü‰°ü‹&ºüšÙ“XX[PSê.“XX[PSê$“XX[PSê“XX[PSêü“‹.²üMMX‹å][YZQSÿàèìÿš“Ëèãÿš8“ËèÚÿšý“ËèÑÿšÏ“ËèÈÿš “Ëè¿ÿš“Ëè¶ÿš“ËU‹ì‹v‹nŒÇ3ÀŽÆ&ŠVEŽÇ&8uCâï¸]ÊU‹ì‹v‹nŒÇ3ÀŽÆ&ŠVEŽÇ&8rw Câíë�¸]ÊU‹ì‹v‹nŒÇŽÆ&ŠFEŽÇ&ˆCâñ]Ê&ŠCˆGâ÷ËZ^+á+á;&¼ür‹ü&‹CC‰GGâõVRËRVPê¼U‹ì‹v ÑîÑîÑî;vwv‹N €áþÁŠ,Òå¸r3À]ÊU‹ì‹^‹Ó‹‹^‹~ ‹v‹n ŽÆ&ŠFE< t<t ŽÇ&ˆCâé3Àë �2ä‹Ú‹+щ]Ê U‹ì�ìƒ~ t0‹F H‰FþÇxý¸P‹6xýÄ^&‹2äPš. ¡xý@£xýH;FþuÝ‹å]ÊU‹ì�ì„�~ €w ‹F ˆ†|ÿëƆ|ÿ€¸ P�†|ÿPš. �†~ÿPÿvÿv‹†}ÿ2äPš—¸P¸yÿPš 9‹†}ÿ2ä‰Fþ‹Fþ‹å]ÊU‹ì�ì‹å]ËU‹ì�ì¿Ôü¾Fÿ¹üó¥¿ôü¾gÿü¥¥¥¥¿üü¾qÿü¥¥¥¥‹å]ËU‹ì�ì¸P¸ Pš. ¸P¸ Pš. ‹å]ËU‹ì�ì‹å]ËU‹ì�ì‹å]ËU‹ì�ì‹å]ËU‹ì�ì‹å]ËU‹ì�ì‹vÆD!‹å]ÊU‹ì�ì‹v�Æz–‹v‰DÆDsÆD&‹å]ÊU‹ì�ì¸�ÿP‹F&P¸ Pš?¡¢ý£¦ýÿ¢ýǤý¡¤ýF–¹ ¡¦ý3Ò÷ñƒÂ0ˆT&¡¦ý3Ò÷ñ£¦ý¡¤ýH£¤ý=uÓ‹å]ÊU‹ì�ì‹å]ËU‹ì�ìǼýÇÂý‹F@%þÿ‰F¡¶ü;¸ür韋6¶ü‹£Àý¡¸ü+¶ü;ÀýwÇFþéÜ¡Àý%u¡Àý£¾ýǼýë_ƒ>¼ýt¡Àý¾ý@£¾ý¡¼ý£¶üë¡ÀýH£¾ý¡¾ý;Fs¡¶ü£¼ýë.¡¶ü@@‰Fþ‹F‹6¶ü‰‹FþF£¶ü¡¾ý;Fv +FH‹6¶ü‰ëg¡¾ý¶ü@@£¶ü¡¸ü;¶üuOƒ>ÂýuÇFþëDƒ>¼ýtÿ6¼ýšÌ¡¸ü£¶üƒ>Âýu ‹F@@PšÌ¡¸ü;¶üu¡´ü£¶üÿÂýǼýéúþ‹Fþ‹å]ÊU‹ì�ì¸PšÿvšW‰Fþƒ~þsƒ~þušã“ëší“š-‹Fþ‹å]ÊU‹ì�ì¸Pšš-‹å]ËU‹ì�ìÿvÿvš 9‹å]ÂU‹ì�ìƒ>Èýu�~ø¾“ÿü¥¥¥ë �~ø¾™ÿü¥¥¥ÇFþƒ~t/‹vþ‹F3Ò÷6ÈýƒÂ0ˆR÷€z÷9v ‹B÷2äˆB÷‹F3Ò÷6Èý‰F‹FþH‰Fþu¸P�FøPÿvènÿ‹å]ÂU‹ì�ì¸ Pššð9¸ P¸ŸÿPUèGÿ‹v ‹2äPF–PUè8ÿšð9¸ P¸©ÿPUè'ÿÇÈý ÿvUè3ÿƒ~t¸ P¸·ÿPUèÿÇÈýÿvUèÿšð9ƒ> ütqƒ>¢üt¸P¸ÁÿPUèÜþÇÈý ÿ6¢üUèçþ¸P¸ÉÿPUèÂþ‹6 ü‹t‹D2äP‹6 ü‹DPUè¦þ¸P¸ÏÿPUèšþ‹6 ü‹4‹2äP‹6 ü‹@PUèƒþšð9ƒ>ªützÇÈý¸P¸ÕÿPUèeþÿ6°üUèvþ¸P¸ÛÿPUèQþÿ6®üUèbþ¸P¸ÝÿPUè=þ»¢ü‰^üŒFþŒÃ“PUèCþ¸P¸åÿPUèþÿ6¬üUè/þ¸P¸íÿPUè þÿ6ªüUèþšð9š š-‹å]ÊU‹ì�ì¸Pšš-‹å]Ë�too small€unsigned€divide by zero€REAL€long integer€math overflow€SIN or COS€argument€range€EXP€SQRT€of€LN€TRUNC/ROUND€TAN€ARCSIN or ARCCOS€> 1.0€negative€to€power€math underflow€stack€no room in€is invalid€  allocator interrupted€heap€non-positive€3 »øé#4 »éd#» éÈ(»é5 5» éû6 5»*éñe#5»4éçÉ(5»>éÝfCNW»HéÒg]NW»SéÇhaf“N»^é»iifëN»jé¯jlNW»v餃xN»�附|f#�»Œé�…“#œ#Ÿ»˜é€T-œ“Ÿ»¥ët�ê(œ“Ÿ»²ëh�†#œ“Ÿ»¾ë[�‡#¥»ËëQ�´:»ÕëG�ºæ»ßë=�æÅ»éë3�æÐ»óë)�»Ðý²ˆëJ�»þ²‰ëB�»þ²Šë:�»6þ²‹ë2�»Jþ²Œë*�¿‰þ.ŠC.Š2ä¾ð° üª.¬<€rùté‹Ç»ˆþ+ÃHˆŠ˜PS¶�ÂÐR3ÀPš¥oËU‹ì�ì¸ Pšƒ~ t‹F ŠÄ2ä"ÀtéÛ‹F 2ä2ä‹N2í‘2ä‰Fð÷á‰Fü‹FŠÄ2ä2ä‰Fî÷á‰Fú‹F 2ä2ä÷á‰Fø‹F ŠÄ2ä2ä‹È÷fð‰Fö‘÷fî‰Fô‹FüŠÄ2ä2ä‹Nú2í‘2äÈ‹Fö2ä2äȉNò‹Vò2ö‹Fü2äŠâ‹v‰‹FòŠÄ2ä2ä‹NúŠÍ2í‘2äÈ‹Fø2ä2äÈ‹FöŠÄ2ä2äÈ‹Fô2ä2äÈ‹v‰ ‹v‹ŠÄ2ä‹NøŠÍ2íÁ‹NôŠÍ2íÈ É¸u@ˆFþëÆFþš-‹Fþ‹å]Ê U‹ì�ì¸Pšš-‹å]ËU‹ì�ì‹F£¸ü¡¸ü€£¼ü‹å]ÊU‹ì�ì�^ü‰^üŒFþ‹Fü+¸ü‰Fú�~ú€v@�Fú€þ�~s �~úvÇF‹Fú;Fv ¡¸ü‰Fü‹FHÄ^ü&‰‹F¸ü¡¸ü€£¼ü‹å]ÊU‹ì�ì‹å]ËBW COLOR1.PAS BW BIOS.PAS BW error in file Hard data Device name Operation File systemDevice offline Lost file File name Device fullUnknown deviceFile not foundProtected file File in use File not open Data format Line too longBW4 filuxm.pas BW misy.pas BW conuxm.pas BW miso.pas BW pasuxm.pas BW heah.pas BW1REAL Indefinite (uninitialized or previous error)Missing Arithmetic ProcessorREAL Denormal DetectedREAL Precision Loss=REAL Arithmetic Processor Instruction Illegal or not Emulated= BWBW mishm.pas  :  USERCON LINELPT1PRN     _ÆÿêÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøUSER USER PAS00000.$$$ 0000 0 ? Error: Error Code , Status  Line  In  Of PC =:; SS =, FP =, SP =ö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö  ööööööööö   ööööööööö!  ööööööööö!  ööööööööö"  ööööööööö"  ööööööööö#  ööööööööö#  ööööööööö$  ööööööööö$  ööööööööö%  ööööööööö%  ööööööööö&  ööööööööö&  ööööööööö'  ööööööööö'  ööööööööö