





































































































































































































































































































































































































































































































































































setbaud 1,9600,8,n,1
setp    0x7f02,0x02
mode_reco



setl	11,2
call	init_b0
call	init_b1
call	init_b2
call	init_b3
call	init_b4
call	init_b5
compd   "init ",s14,195
jz      skip_init


movd    "000000201100",s14,242
call    dbs_tln_init
skip_init:
movd    "init ",s14,195
movd    "000 ",s12,200
movd	"000 ",s12,210
movd    "                    ",s14,200
movd    "                    >/n",s14,220

setrts	off
sett	10
wait	tf_sign
movd    " 4200eAHL V2.0 (4200ah20.DW3) by J. Hoerhager AOHE/n",s7,0
out	s7,0,c4



error_main:
setp    0x7f02,0x02
mode_reco
movd    " 4200eAHL V2.0 Modul 3 Ready/n",s7,100
out	s7,100,c4



main:
sett	100

main_1:
setl	11,1
setrts	on
wait	ans_sign,tf_sign,im_sign
case	ans_sign,test_im_sign




setl	11,2
readb	s3,0,2
jnz	process_ticket		
readb   s3,0,3   
jnz     process_ahl
readb   s3,0,4        
jnz     mess_send
jmp     main_1



mess_send:
wrs     s3,0,150
movd    "/l/n",s3,0
wrs     s3,0,10

jmp     main_send_sig



process_ahl:

out	s3,0,c4

compd   "1",s14,242
jnz     ahl_in1
movd    " RdB:    /n",s10,0
movs    s3,0,s10,5,100
writeb  s10,0,4
sendsig ans_sign,c3
ahl_in1:
compd	"I",s3,0
jz	ahl_interogation
compd	"A",s3,0
jz	ahl_incheck
compd	"M",s3,0
jz	ahl_modifikation
compd	"D",s3,0
jz	ahl_outcheck
movd	"R     INV  J/n",s7,0
movs	s3,1,s7,1,5
compd   "1",s14,242
jnz     ahl_in2
movd    "WrB:    /n",s10,0
movs    s7,0,s10,5,100
writeb  s10,0,4
sendsig ans_sign,c3
ahl_in2:
writeb	s7,0,5
sendsig ans_sign,c2	
jmp	main_send_sig

process_ticket:

out	s3,0,c4

compd   "1",s14,246
jnz     dhs_out1
movd    "    /n",s10,0
movs    s3,0,s10,0,160
compd   "1",s14,247
jnz     test_p2
movs    s10,123,s10,106,16
movd    "/n",s10,122
jmp     proto_end
test_p2:
proto_end:
writeb  s10,0,4
sendsig ans_sign,c3
dhs_out1:

compd	"/n",s3,0          
jz     main_send_sig

jr	s12,200
jmp	state_0 	
jmp	state_1 	
jmp	state_2
jmp	state_3
jmp	state_4
jmp	state_5
jmp	state_6
jmp	state_7
jmp	state_8
jmp	state_9
jmp	state_10	
jmp	state_11	
jmp	state_12	
jmp	state_13	
jmp	state_14	
jmp	state_15	
jmp	state_16	
jmp	state_17	
jmp	state_18
jmp	state_19
jmp	state_20	


state_0:

movd	" State_0_modul_3/n",s7,200
out	s7,200,c4

movd	"000 ",s12,200
compd	"-----",s3,0
jz	head_line1

compd	"^L/n",s3,0
jz	main_send_sig





compd	" ????? A???? -->",s3,0
jz	smdr_r31_out
compd	" ????? A???? |->",s3,0
jz	smdr_r31_out
compd	" ????? A???? CS?",s3,0
jz	smdr_r31_out

compd	" ????? A???? <--",s3,0
jz	smdr_r31_in
compd	" ????? A???? <-|",s3,0
jz	smdr_r31_in

compd	" ????? A????     ZI",s3,0
jz	termin_r31

compd	" ????? A????    ",s3,0
jz	room_r31_state


jmp	main_send_sig



state_1:
state_2:
state_3:
state_4:
state_5:
state_6:
state_7:
state_8:
state_9:
state_18:
state_19:
jmp	main_send_sig




termin_r31:
call	r31terminruf
jmp	main_send_sig



room_r31_state:
compd   "Zusatzkosten",s3,60
jz	smdr_r31_out



call	r31data_entry
jmp	main_send_sig




head_line1:
compd	"---/n",s3,58
jnz     main_send_sig





movd	" State_010_modul_3/n",s7,200
out	s7,200,c4

movd	"010 ",s12,200      
movd	"                                                                              /n",s8,0
movd	"                                                                              /n",s8,70
main_send_sig:
sendsig ans_sign,c3
jmp	main




state_10:
compd	"  |/n",s3,58
jnz	state_0
movd    "011 ",s12,200
jmp	main_send_sig



state_11:
compd	"  |/n",s3,58
jnz	state_0


movd	"012 ",s12,200
movs	s3,23,s8,26,2
movs	s3,26,s8,27,2
movs	s3,10,s8,30,2
movs	s3,15,s8,34,4

movd	"01",s8,32
compd	"Jan",s3,6
jz	main_send_sig

movd	"02",s8,32
compd	"Feb",s3,6
jz	main_send_sig

movd	"03",s8,32
compd	"Mae",s3,6
jz	main_send_sig

movd	"04",s8,32
compd	"Apr",s3,6
jz	main_send_sig

movd	"05",s8,32
compd	"Mai",s3,6
jz	main_send_sig

movd	"06",s8,32
compd	"Jun",s3,6
jz	main_send_sig

movd	"07",s8,32
compd	"Jul",s3,6
jz	main_send_sig

movd	"08",s8,32
compd	"Aug",s3,6
jz	main_send_sig

movd	"09",s8,32
compd	"Sep",s3,6
jz	main_send_sig

movd	"10",s8,32
compd	"Okt",s3,6
jz	main_send_sig

movd	"11",s8,32
compd	"Nov",s3,6
jz	main_send_sig

movd	"12",s8,32
compd	"Dez",s3,6
jz	main_send_sig

jmp	main_send_sig



state_12:
compd	"  |/n",s3,58
jnz	state_0
movd	"013 ",s12,200
jmp	main_send_sig



state_13:
compd	"  |/n",s3,58
jnz	state_0
compd	"| Name :",s3,0
jnz	test_st_17		

movs	s3,34,s8,6,20

movd	"014 ",s12,200
jmp	main_send_sig

test_st_17:
compd	"| Telefonzelle",s3,0
jnz	state_0
movd	"017 ",s12,200
jmp	main_send_sig

state_17:
compd	"---/n",s3,58
jnz	main_send_sig
movd	"000 ",s12,200
jmp	main_send_sig





state_14:
compd	"  |/n",s3,58
jnz	state_0
compd	"| Zimmernummer :",s3,0
jnz	state_0

movs	s3,34,s8,1,4

movd	"015",s12,200
jmp	main_send_sig






state_15:
compd	"  |/n",s3,58
jnz	state_0

compd	"| Sprache",s3,0
jnz	test_checkout

movs	s3,34,s8,42,1

movd	"016",s12,200
jmp	main_send_sig

test_checkout:
compd	"| Vorkasse :",s3,0
jnz	test_anzahl

movs	s3,34,s8,61,7
jmp	main_send_sig

test_anzahl:
compd	"| Anzahl der",s3,0
jnz	test_empty_line

movs	s3,34,s8,38,3

movd	"020 ",s12,200
jmp	main_send_sig

test_empty_line:
compd	"| ?   ",s3,0
jz     sk_e10_state
compd	"! ?   ",s3,0
jnz	state_0
sk_e10_state:

jmp	main_send_sig





state_16:
compd	"---/n",s3,58
jz	state_16skip

compd	"| Passwort",s3,0
jnz	st16_n1

movs	s3,34,s8,43,4

jmp	main_send_sig
st16_n1:
compd	"| Durch",s3,0
jnz	st16_n2

movs	s3,34,s8,47,4

jmp	main_send_sig
st16_n2:
compd	"| Anzahl",s3,0
jnz	st16_n3

movs	s3,34,s8,38,3

jmp	main_send_sig
st16_n3:
compd	"| Ruhe",s3,0
jnz	st16_n4

movs	s3,34,s8,52,1

jmp	main_send_sig
st16_n4:
compd	"| Nachr",s3,0
jnz	st16_n5

movs	s3,34,s8,53,1

jmp	main_send_sig
st16_n5:
compd	"| Vork",s3,0
jnz	st16_n6

movs	s3,34,s8,61,7

jmp	main_send_sig
st16_n6:
compd	"| Gespr",s3,0
jnz	st16_n7

movs	s3,34,s8,71,7

jmp	main_send_sig
st16_n7:
compd   "| Amts",s3,0
jnz     st16_n8

movs    s3,34,s8,54,1

jmp	main_send_sig
st16_n8:
jmp	main_send_sig
state_16skip:









movs    s8,1,s14,200,5
call    to_left
movs    s14,220,s15,0,5
call	find_ext
jnz	else_inotfound


compd   "I",s14,5
jnz	else_iextstate

call	send_m_mess
jmp	eif_iextstate

else_iextstate:
call	send_a_mess
movd    "I",s14,5
acall	write_dbs

eif_iextstate:

jmp	eif_onotfound

else_inotfound:
call	find_free
jnz	skip_idef
movd	"     I /n",s14,0
movs    s8,1,s14,200,5
call    to_left
movs    s14,220,s14,0,5
acall	write_dbs
skip_idef:
call	send_a_mess

eif_inotfound:
movd	"000 ",s12,200
jmp	main_send_sig












state_20:


compd	"---/n",s3,58
jz	state_20skip
compd	"| Gesamt",s3,0
jnz	st20_n1

movs	s3,34,s8,71,7
jmp	main_send_sig
st20_n1:
compd	"| Soll",s3,0
jnz	st20_n2

movs	s3,34,s8,81,7
jmp	main_send_sig
st20_n2:
compd	"| Gutha",s3,0
jnz	st20_n3

movs	s3,34,s8,91,7
jmp	main_send_sig
st20_n3:
jmp	main_send_sig
state_20skip:









movs    s8,1,s14,200,5
call    to_left
movs    s14,220,s15,0,5
call	find_ext
jnz	else_onotfound



compd   "T",s14,6
jnz	else_osub_t

call	send_t_mess
movd    " ",s14,6
acall	write_dbs
jmp	eif_osub_t

else_osub_t:
compd   "I",s14,5
jnz	else_oextstate

call	send_t_mess
call	send_d_mess
movd    "O",s14,5
acall	write_dbs
jmp	eif_oextstate

else_oextstate:
call	send_t_mess
call	send_d_mess
movd    "O",s14,5
acall	write_dbs

eif_oextstate:

eif_osub_t:

jmp	eif_onotfound

else_onotfound:
call	find_free
jnz	skip_odef
movd	"     O /n",s14,0
movs    s8,1,s14,200,5
call    to_left
movs    s14,220,s14,0,5
acall	write_dbs
skip_odef:
call	send_t_mess
call	send_d_mess

eif_onotfound:
movd	"000 ",s12,200
jmp	main_send_sig



send_t_mess:
movd    "Tnnnnnccccsssssssssdddddddddbbbbbbbbb/n",s7,0
movs    s8,1,s14,200,5
call    to_right
movs    s14,235,s7,1,5
movs    s8,38,s14,200,4
call    to_right
movs    s14,236,s7,6,4
movs    s8,71,s14,200,9
call    up_to_space
movs    s14,220,s7,10,9
movs    s8,61,s14,200,9
call    up_to_space
movs    s14,220,s7,19,9
compd   "0",s8,81
jnz     open_soll
movs    s8,91,s14,200,9
call    up_to_space
movs    s14,220,s7,28,9
jmp     send_buffer

open_soll:
movs    s8,81,s14,200,9
call    up_to_space
movd    "-",s7,28
movs    s14,220,s7,29,8



send_buffer:
buffst                  
jnz     send_1_b
movd    "Delete FIFO:  /n",s10,0
buffrd  s10,13

compd   "1",s14,245
jnz     fifo_old1
writeb  s10,0,4
sendsig ans_sign,c3
fifo_old1:
out     s10,0,c4

jmp     send_buffer     
send_1_b:
compd   "1",s14,243
jnz     ahl_out1
movd    "WrB:    /n",s10,0
movs    s7,0,s10,5,100
writeb  s10,0,4
sendsig ans_sign,c3
ahl_out1:

buffwr  s7,0

out     s7,0,c4
ret


send_d_mess:
movd    "Dnnnnn/n",s7,0
movs    s8,1,s14,200,5
call    to_right
movs    s14,235,s7,1,5
jmp     send_buffer


send_a_mess:

movd    "Annnnn nnnnnnnnnnnnnnnnnnnnl    pppp  dddddddddm     d/n",s7,0
movs    s8,1,s14,200,5
call    to_right
movs    s14,235,s7,1,5
movs    s8,6,s7,7,20

movd    "1",s7,27
compd   "Deu",s8,42
jz      lang_end
movd    "2",s7,27
compd   "Eng",s8,42
jz      lang_end
movd    "3",s7,27
compd   "Fr",s8,42
jz      lang_end
movd    "4",s7,27
compd   "It",s8,42
jz      lang_end
movd    " ",s7,27
lang_end:

movs    s8,43,s7,32,4
movs    s8,61,s14,200,9
call    up_to_space
movs    s14,220,s7,38,9

movd    "0",s7,53
compd   "aus",s8,52
jz      dnd_end
movd    "1",s7,53
compd   "ein",s8,52
jz      dnd_end
movd    " ",s7,53
dnd_end:

movd    "0",s7,47
compd   "nein",s8,53
jz      mess_end
movd    "1",s7,47
compd   "ja",s8,53
jz      mess_end
movd    " ",s7,47
mess_end:

jmp     send_buffer


send_m_mess:




movd    "Mnnnnn nnnnnnnnnnnnnnnnnnnnl    pppp  dddddddddm     d/n",s7,0
movs    s8,1,s14,200,5
call    to_right
movs    s14,235,s7,1,5
movs    s8,6,s7,7,20

movd    "1",s7,27
compd   "Deu",s8,42
jz      lang_mend
movd    "2",s7,27
compd   "Eng",s8,42
jz      lang_mend
movd    "3",s7,27
compd   "Fr",s8,42
jz      lang_mend
movd    "4",s7,27
compd   "It",s8,42
jz      lang_mend
movd    " ",s7,27
lang_mend:

movs    s8,43,s7,32,4
movs    s8,61,s14,200,9
call    up_to_space
movs    s14,220,s7,38,9

movd    "0",s7,53
compd   "aus",s8,52
jz      dnd_mend
movd    "1",s7,53
compd   "ein",s8,52
jz      dnd_mend
movd    " ",s7,53
dnd_mend:

movd    "0",s7,47
compd   "nein",s8,53
jz      mess_mend
movd    "1",s7,47
compd   "ja",s8,53
jz      mess_mend
movd    " ",s7,47
mess_mend:

jmp     send_buffer






smdr_r31_out:
call	r31outgoing_call
jmp	main_send_sig




smdr_r31_in:
call	r31incomming_call
jmp	main_send_sig






r31terminruf:
compd "PROG",s3,60
jz    r31wakeup_w
compd "GEL",s3,60
jz    r31wakeup_q
compd "UNB",s3,60
jz    r31wakeup_n
compd "BEST",s3,60
jz    r31wakeup_a
ret



r31ext_replace:
replace "A ",s3,7,5
movs    s3,7,s14,200,5
call    to_right
movs    s14,235,s7,1,5
ret


r31wakeup_a:


movd  "P     W  c                     /n",s7,0
call  r31ext_replace
movd  "A",s7,9




movs  s3,30,s7,17,2
movs  s3,33,s7,19,2
movs  s3,21,s7,11,2
movs  s3,24,s7,13,2
movs  s3,27,s7,15,2

jmp     send_buffer




r31wakeup_n:

movd  "P     W  c                     /n",s7,0
call  r31ext_replace
movd  "N",s7,9
compd   "F",s3,74       
jz      skip_busy_noanswer
movd    "B",s7,9      
skip_busy_noanswer:



movs  s3,30,s7,17,2
movs  s3,33,s7,19,2
movs  s3,21,s7,11,2
movs  s3,24,s7,13,2
movs  s3,27,s7,15,2

jmp     send_buffer




r31wakeup_w:

movd  "P     W  c                     /n",s7,0
call  r31ext_replace
movd  "P",s7,9



movs  s3,30,s7,17,2
movs  s3,33,s7,19,2
movs  s3,21,s7,11,2
movs  s3,24,s7,13,2
movs  s3,27,s7,15,2



movs  s3,36,s7,26,2
movs  s3,39,s7,28,2

jmp     send_buffer





r31wakeup_q:

movd  "P     W  c                     /n",s7,0
call  r31ext_replace
movd  "C",s7,9



movs  s3,30,s7,17,2
movs  s3,33,s7,19,2
movs  s3,21,s7,11,2
movs  s3,24,s7,13,2
movs  s3,27,s7,15,2

jmp     send_buffer




r31data_entry:
compd   "0",s14,248
jz      r31_do_data_entry
compd   "1",s14,248
jz      rstate_t1
rstate_t2:
movd    "C          /n",s7,0
call    r31ext_replace
movs    s3,83,s7,6,3
movs    s3,82,s7,10,1
replace "- ",s7,6,4

jmp     send_buffer

rstate_t1:
movd    "C          /n",s7,0
call  r31ext_replace
movs  s3,82,s7,6,4
replace "- ",s7,6,4

jmp     send_buffer

r31_do_data_entry:

movd  "P     4200                      /n",s7,0
call  r31ext_replace
movs  s3,82,s7,11,4
replace "- ",s7,11,4

jmp     send_buffer






r31outgoing_call:



movd    "J        00     DDMMYYhhmm mmmss00000000  00                    /n",s7,0
call    r31ext_replace




movs  s3,60,s7,44,20
replace ". ",s7,44,20
replace "- ",s7,44,20




compd   "0",s14,250
jz      out_cost

movd    "        ",s7,32
movd    "        ",s15,210
movs    s3,45,s15,210,4
movd    "0 ",s15,220
acall   add
movs    s15,230,s7,32,8
jmp     out_sw_end
out_cost:
movs    s3,95,s7,32,8
out_sw_end:




movs  s3,30,s7,22,2
movs  s3,33,s7,24,2




movs  s3,21,s7,16,2
movs  s3,24,s7,18,2
movs  s3,27,s7,20,2




movs    s3,42,s7,30,2
movd    "        ",s15,210
movs    s3,36,s15,210,2
movd    "60 ",s15,220
acall   mul
movs    s15,230,s15,220,8
movs    s3,39,s15,210,2
acall   add

movs    s15,235,s7,27,3
compd   "00000???",s15,230
jz	smdr_dur_end
movd    "999999",s7,27
smdr_dur_end:









movs    s3,18,s7,42,2
compd   "0",s14,251               
jz      skip_business
compd   "....",s3,106  
jz      skip_business
movs    s3,106,s7,40,4
replace ".0",s7,40,4
skip_business:










jmp     send_buffer




r31incomming_call:



movd    "J        00     DDMMYYhhmm mmmss00000000  00                    /n",s7,0
call    r31ext_replace
movd    "4",s7,10




movs  s3,60,s7,44,20
replace ". ",s7,44,20
replace "- ",s7,44,20




movs    s3,95,s7,32,8




movs  s3,30,s7,22,2
movs  s3,33,s7,24,2




movs  s3,21,s7,16,2
movs  s3,24,s7,18,2
movs  s3,27,s7,20,2




movs    s3,42,s7,30,2
movd    "        ",s15,210
movs    s3,36,s15,210,2
movd    "60 ",s15,220
acall   mul
movs    s15,230,s15,220,8
movs    s3,39,s15,210,2
acall   add
acall   cut_lz
movs    s15,235,s7,27,3
compd	"     ???",s15,230
jz      smdr_indur_end
movd    "999999",s7,27
smdr_indur_end:









movs    s3,18,s7,42,2










jmp     send_buffer




test_im_sign:
case	im_sign,test_tf_sign
setl	11,2



in	s7,100
movd	"Okay wait/n",s7,0
out	s7,0,c4




compd   "init default",s7,100
jz      go_init_def
compd   "init ext_dbs",s7,100
jz	go_init_tln
compd	"init buffers",s7,100
jz	go_buff_init



compd	"disp ext_dbs",s7,100
jz	go_tln_display
compd	"disp config",s7,100
jz	go_cfg_display

movd	" command not found/n",s7,100
out	s7,100,c4


main_message:
movd    " 4200eAHL V2.0 Modul 3 Ready/n",s7,100
anss	s7,100
jmp	main


test_tf_sign:
setl	11,2
jmp	main










go_buff_init:
call	init_b0
call	init_b1
call	init_b2
call	init_b3
call	init_b4
jmp	main_message

go_init_tln:
call	dbs_tln_init
jmp	main_message

go_init_def:
movd    "noin",s14,195
jmp     main_message
go_tln_display:
call	tln_display
jmp	main_message

go_cfg_display:
call	cfg_display
jmp	main_message



z_ret:
setc	2,1
decc	2
ret


nz_ret:
setc	2,0
decc	2
ret






init_b0:
setp	0XD300,0x70	
setp	0XD301,0x00		

setp	0Xd302,0x04	
setp	0XD303,0x00		

setp	0Xd304,0x04	
setp	0XD305,0x00		

setp	0Xd306,0x70	
setp	0XD307,0x00		

setp	0Xd308,0x04	
setp	0XD309,0x00		

setp	0Xd30A,0x70	
setp	0XD30B,0x00		

setp	0Xd30C,0x04	
setp	0XD30D,0x00		

setp	0XD30E,0x00 	

ret






init_b1:
setp	0Xd310,0x74	
setp	0Xd311,0x00		

setp	0Xd312,0x04	
setp	0Xd313,0x00		

setp	0Xd314,0x04	
setp	0Xd315,0x00		

setp	0Xd316,0x74	
setp	0Xd317,0x00		

setp	0Xd318,0x04	
setp	0Xd319,0x00		

setp	0Xd31A,0x74	
setp	0Xd31B,0x00		

setp	0Xd31C,0x04	
setp	0Xd31D,0x00		

setp	0Xd31E,0x00 	

ret






init_b2:
setp	0Xd320,0x10	
setp	0Xd321,0x00		

setp	0Xd322,0x60	
setp	0Xd323,0x00		

setp	0Xd324,0x60	
setp	0Xd325,0x00		

setp	0Xd326,0x10	
setp	0Xd327,0x00		

setp	0Xd328,0x60	
setp	0Xd329,0x00		

setp	0Xd32A,0x10	
setp	0Xd32B,0x00		

setp	0Xd32C,0x60	
setp	0Xd32D,0x00		

setp	0Xd32E,0x01 	

ret






init_b3:
setp	0Xd330,0x10	
setp	0Xd331,0x00		

setp	0Xd332,0x60	
setp	0Xd333,0x00		

setp	0Xd334,0x60	
setp	0Xd335,0x00		

setp	0Xd336,0x10	
setp	0Xd337,0x00		

setp	0Xd338,0x60	
setp	0Xd339,0x00		

setp	0Xd33A,0x10	
setp	0Xd33B,0x00		

setp	0Xd33C,0x60	
setp	0Xd33D,0x00		

setp	0Xd33E,0x02 	

ret






init_b4:
setp	0Xd340,0x30	
setp	0Xd341,0x00		

setp	0Xd342,0x40	
setp	0Xd343,0x00		

setp	0Xd344,0x40	
setp	0Xd345,0x00		

setp	0Xd346,0x30	
setp	0Xd347,0x00		

setp	0Xd348,0x40	
setp	0Xd349,0x00		

setp	0Xd34A,0x30	
setp	0Xd34B,0x00		

setp	0Xd34C,0x40	
setp	0Xd34D,0x00		

setp	0Xd34E,0x03 	

ret






init_b5:
setp	0Xd350,0x70	
setp	0Xd351,0x00		

setp	0Xd352,0x04	
setp	0Xd353,0x00		

setp	0Xd354,0x04	
setp	0Xd355,0x00		

setp	0Xd356,0x70	
setp	0Xd357,0x00		

setp	0Xd358,0x04	
setp	0Xd359,0x00		

setp	0Xd35A,0x70	
setp	0Xd35B,0x00		

setp	0Xd35C,0x04	
setp	0Xd35D,0x00		

setp	0Xd35E,0x02 	

ret





































cfg_display:
ret



tln_display:
movd	"3 ",s15,100
acall	pfirst_dbs
movd	" Extension table /n",s7,0
out	s7,0,c4
movd	"                 /n",s14,0

tln_ldisplay:
acall	read_dbs
compd   "     ",s14,0
jz	tln_skipdisplay
compd   "    D",s14,0
jz	tln_skipdisplay
movd    "/n",s14,7
out	s14,0,c4
tln_skipdisplay:
acall	pnext_dbs
jz	tln_ldisplay

tln_edisplay:
movd	" END OF TABLE/n",s7,0
out    s7,0,c4

ret











dbs_tln_init:
movd	"3 28672 150 4 5 1 1 1  ",s15,100
acall	open_dbs
movd	"       /n",s14,0
acall	init_dbs
acall	pfirst_dbs

ret




find_ext:
movd	"3 0  ",s15,100
acall	pfirst_dbs
acall	find_dbs
jnz	nz_ret
acall	read_dbs
jmp z_ret






find_free:
movd	"3 0  ",s15,100
movd	"    ?",s15,0
acall	pfirst_dbs
acall	find_dbs
ret








to_right:

movd    "                    >/n",s14,220

setc    12,20   
setc	10,219	
setc	11,239	
lto_right:
compd   " ",s14,c10
jnz	mto_right
decc	10
decc	12
jnz	lto_right

movd    "                    ",s14,200

ret

mto_right:
movs	s14,c10,s14,c11,1
decc	10
decc	11
decc	12
jnz     mto_right

movd    "                    ",s14,200

ret







to_left:

movd    "                    >/n",s14,220
setc	12,20	
setc	10,200	
setc	11,220	
lto_left:
compd   " ",s14,c10
jnz	mto_left
incc	10
decc	12
jnz	lto_left

movd    "                    ",s14,200
ret

mto_left:
movs	s14,c10,s14,c11,1
incc	10
incc	11
decc	12
jnz     mto_left

movd    "                    ",s14,200
ret









up_to_space:

movd    "                    >/n",s14,220
setc	12,20	
setc	10,200	
setc	11,220	
lup_to_space:
compd   " ",s14,c10
jnz     mup_to_space
incc	10
decc	12
jnz     lup_to_space

movd    "                    ",s14,200
ret

mup_to_space:
movs    s14,c10,s14,c11,1
incc    10
incc    11
decc    12
jz      eup_to_space
compd   " ",s14,c10
jnz     mup_to_space
eup_to_space:

movd    "                    ",s14,200
ret




ahl_interogation:
movs    s3,1,s14,200,5
call    to_left
movs    s14,220,s15,0,5
call    find_ext
jnz     no_ext_intero
compd   "I",s14,5
jnz     no_in_intero
movs    s14,220,s3,1,5
movd    "T",s14,6
acall   write_dbs
writeb  s3,0,0         
sendsig ans_sign,c0
call    c0_wait_answer
jz      err_reply


send_reply:
writeb  s7,0,5
out     s7,0,c4
sendsig ans_sign,c2	
jmp	main_send_sig

no_in_intero:
movd    "RnnnnnINV RA/n",s7,0
movs    s3,1,s7,1,5
jmp     send_reply

no_ext_intero:
movd    "RnnnnnINV RG/n",s7,0
movs    s3,1,s7,1,5
jmp     send_reply

err_reply:
movd    "RerrorINV EE/n",s7,0
jmp     send_reply



ahl_incheck:
movs    s3,1,s14,200,5
call    to_left
movs    s14,220,s15,0,5
call    find_ext
jnz     no_ext_arrive
compd   "I",s14,5


movs    s14,220,s3,1,5
writeb  s3,0,0         
sendsig ans_sign,c0
call    c0_wait_answer
jz      err_reply


movs    s3,1,s14,200,5
call    to_left
movs    s14,220,s15,0,5
call    find_ext

compd   "INV ",s7,6
jnz     in_arrive_save
compd   "U",s7,11
jnz     testin_s
movd    "G",s7,11
movd    "    D",s14,0
acall   write_dbs
jmp     send_reply

testin_s:
compd   "S",s7,11
jnz     testin_a
movd    "G",s7,11
movd    "S",s14,5
acall   write_dbs
jmp     send_reply

testin_a:
movd    "A",s7,11
movd    "I",s14,5
acall   write_dbs
jmp     send_reply

in_arrive_save:
movd    "I",s14,5
acall   write_dbs
jmp     send_reply

no_in_arrive:
movd    "RnnnnnINV JA/n",s7,0
movs    s3,1,s7,1,5
jmp     send_reply

no_ext_arrive:
movs    s14,220,s3,1,5
writeb  s3,0,0         
sendsig ans_sign,c0
call    c0_wait_answer
jz      err_reply


movs    s3,1,s14,200,5
call    to_left
movs    s14,220,s15,0,5
call    find_ext

compd   "INV ",s7,6
jnz     sin_arrive_save

compd   "U",s7,11
jnz     stestin_s
movd    "G",s7,11
jmp     send_reply

stestin_s:
compd   "S",s7,11
jnz     stestin_a
movd    "G",s7,11

call    find_free
jnz     send_reply
movs    s7,1,s14,200,5
call    to_left
movs    s14,220,s14,0,5
movd    "S /n",s14,5
acall   write_dbs
jmp     send_reply

stestin_a:
movd    "A",s7,11

sin_arrive_save:
call    find_free
jnz     send_reply
movs    s7,1,s14,200,5
call    to_left
movs    s14,220,s14,0,5
movd    "I /n",s14,5
acall   write_dbs
jmp     send_reply



ahl_modifikation:
movs    s3,1,s14,200,5
call    to_left
movs    s14,220,s15,0,5
call    find_ext
jnz     no_ext_modify
compd   "I",s14,5


movs    s14,220,s3,1,5
writeb  s3,0,0         
sendsig ans_sign,c0
call    c0_wait_answer
jz      err_reply


movs    s3,1,s14,200,5
call    to_left
movs    s14,220,s15,0,5
call    find_ext

compd   "INV ",s7,6
jnz     in_modify_save
compd   "U",s7,11
jnz     testmodif_s
movd    "G",s7,11
movd    "    D",s14,0
acall   write_dbs
jmp     send_reply

testmodif_s:
compd   "S",s7,11
jnz     testmodif_a
movd    "G",s7,11
movd    "S",s14,5
acall   write_dbs
jmp     send_reply

testmodif_a:
movd    "A",s7,11
movd    "O",s14,5
acall   write_dbs
jmp     send_reply

in_modify_save:
jmp     send_reply

no_in_modify:
compd   "O",s14,5
jnz     modify_glob_err
movd    "RnnnnnINV NA/n",s7,0
movs    s3,1,s7,1,5
jmp     send_reply

modify_glob_err:
movd    "RnnnnnINV NG/n",s7,0
movs    s3,1,s7,1,5
jmp     send_reply

no_ext_modify:
movs    s14,220,s3,1,5
writeb  s3,0,0         
sendsig ans_sign,c0
call    c0_wait_answer
jz      err_reply




jmp     send_reply



ahl_outcheck:
movs    s3,1,s14,200,5
call    to_left
movs    s14,220,s15,0,5
call    find_ext
jnz     no_ext_outcheck

movs    s14,220,s3,1,5
writeb  s3,0,0         
sendsig ans_sign,c0
call    c0_wait_answer
jz      err_reply


movs    s3,1,s14,200,5
call    to_left
movs    s14,220,s15,0,5
call    find_ext

compd   "INV ",s7,6
jnz     outcheck_save
compd   "U",s7,11
jnz     testout_s
movd    "G",s7,11
movd    "    D",s14,0
acall   write_dbs
jmp     send_reply

testout_s:
compd   "S",s7,11
jnz     testout_a
movd    "G",s7,11
movd    "S",s14,5
acall   write_dbs
jmp     send_reply

testout_a:
movd    "A",s7,11
movd    "O",s14,5
acall   write_dbs
jmp     send_reply

outcheck_save:
movd    "O",s14,5
acall   write_dbs
jmp     send_reply

no_ext_outcheck:
movs    s14,220,s3,1,5
writeb  s3,0,0         
sendsig ans_sign,c0
call    c0_wait_answer
jz      err_reply


movs    s3,1,s14,200,5
call    to_left
movs    s14,220,s15,0,5
call    find_ext

compd   "INV ",s7,6
jnz     sin_outcheck_save

compd   "U",s7,11
jnz     stestout_s
movd    "G",s7,11
jmp     send_reply

stestout_s:
compd   "S",s7,11
jnz     stestout_a
movd    "G",s7,11

call    find_free
jnz     send_reply
movs    s7,1,s14,200,5
call    to_left
movs    s14,220,s14,0,5
movd    "S /n",s14,5
acall   write_dbs
jmp     send_reply

stestout_a:
movd    "A",s7,11

sin_outcheck_save:
call    find_free
jnz     send_reply
movs    s7,1,s14,200,5
call    to_left
movs    s14,220,s14,0,5
movd    "O /n",s14,5
acall   write_dbs
jmp     send_reply




c0_wait_answer:
sett    250
wait    ans_sign,tf_sign
case    ans_sign,test_c0tf_sign
readb   s7,0,1
jz      c0_wait_answer
ret
test_c0tf_sign:
case    tf_sign,c0_wait_answer
c1_wait_answer:
sett    250
wait    ans_sign,tf_sign
case    ans_sign,test_c1tf_sign
readb   s7,0,1
jz      c1_wait_answer
ret
test_c1tf_sign:
case    tf_sign,c1_wait_answer
c2_wait_answer:
sett    250
wait    ans_sign,tf_sign
case    ans_sign,test_c2tf_sign
readb   s7,0,1
jz      c2_wait_answer
ret
test_c2tf_sign:
case    tf_sign,c2_wait_answer
jmp     z_ret

zzz:
end

