user: 下面的汇编指令对应的C源代码是什么：

```asm
<tst_screen>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  lea    D725(%rip),%rdi
  call   <sm@plt>
  mov    $0xa0,%ebx
L213:
  mov    $0x2a,%edi
  call   <putchar@plt>
  sub    $0x1,%ebx
  jne    L213
  lea    D725(%rip),%rdi
  call   <rm@plt>
  mov    $0x1,%esi
  mov    $0x3,%edi
  call   <cup@plt>
  mov    $0xa0,%ebx
L53:
  mov    $0x2a,%edi
  call   <putchar@plt>
  sub    $0x1,%ebx
  jne    L53
  lea    D725(%rip),%rdi
  call   <sm@plt>
  mov    $0x1,%esi
  mov    $0x5,%edi
  call   <cup@plt>
  lea    D305(%rip),%rdi
  call   <println@plt>
  lea    D425(%rip),%rdi
  call   <println@plt>
  lea    D129(%rip),%rdi
  call   <println@plt>
  mov    $0x0,%eax
  call   <holdit@plt>
  mov    $0x2,%edi
  call   <ed@plt>
  mov    $0x3,%edi
  call   <tbc@plt>
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  mov    $0x1a,%ebx
L280:
  mov    $0x3,%edi
  call   <cuf@plt>
  mov    $0x0,%eax
  call   <hts@plt>
  sub    $0x1,%ebx
  jne    L280
  mov    $0x4,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  mov    $0xd,%ebx
L307:
  mov    $0x0,%edi
  call   <tbc@plt>
  mov    $0x6,%edi
  call   <cuf@plt>
  sub    $0x1,%ebx
  jne    L307
  mov    $0x7,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  mov    $0x1,%edi
  call   <tbc@plt>
  mov    $0x2,%edi
  call   <tbc@plt>
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  mov    $0xd,%ebx
  lea    D479(%rip),%rbp
L196:
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  sub    $0x1,%ebx
  jne    L196
  mov    $0x2,%esi
  mov    $0x2,%edi
  call   <cup@plt>
  mov    $0xd,%ebx
  lea    D577(%rip),%rbp
L285:
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  sub    $0x1,%ebx
  jne    L285
  mov    $0x1,%esi
  mov    $0x4,%edi
  call   <cup@plt>
  lea    D46(%rip),%rdi
  call   <println@plt>
  lea    D170(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <holdit@plt>
  mov    $0x0,%r13d
  lea    D765(%rip),%r14
  lea    D504(%rip),%r12
  jmp    L210
L194:
  lea    D92(%rip),%rdi
  call   <sm@plt>
L171:
  mov    %r14,%rdi
  call   <sm@plt>
  mov    $0x2,%edi
  call   <ed@plt>
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  mov    $0x3,%edi
  call   <tbc@plt>
  mov    $0x11,%ebx
L28:
  mov    $0x8,%edi
  call   <cuf@plt>
  mov    $0x0,%eax
  call   <hts@plt>
  sub    $0x1,%ebx
  jne    L28
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  mov    $0xd,%ebx
L132:
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  sub    $0x1,%ebx
  jne    L132
  lea    D694(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  test   %r13d,%r13d
  lea    D458(%rip),%rbp
  lea    D26(%rip),%rax
  cmove  %rax,%rbp
  mov    $0x3,%ebx
  lea    D349(%rip),%r15
L243:
  mov    %ebx,%esi
  mov    %ebx,%edi
  call   <cup@plt>
  mov    %rbp,%rsi
  mov    %r15,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    $0x1,%ebx
  cmp    $0x15,%ebx
  jne    L243
  mov    $0x0,%eax
  call   <holdit@plt>
  mov    %r14,%rdi
  call   <rm@plt>
  mov    $0x2,%edi
  call   <ed@plt>
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  mov    $0x8,%ebx
L158:
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  sub    $0x1,%ebx
  jne    L158
  mov    $0x3,%ebx
  lea    D857(%rip),%r15
L336:
  mov    %ebx,%esi
  mov    %ebx,%edi
  call   <cup@plt>
  mov    %rbp,%rsi
  mov    %r15,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    $0x1,%ebx
  cmp    $0x15,%ebx
  jne    L336
  mov    $0x0,%eax
  call   <holdit@plt>
  add    $0x1,%r13d
  cmp    $0x2,%r13d
  je     L115
L210:
  test   %r13d,%r13d
  je     L194
  lea    D92(%rip),%rdi
  call   <rm@plt>
  jmp    L171
L115:
  mov    $0x2,%edi
  call   <ed@plt>
  lea    D212(%rip),%rdi
  call   <sm@plt>
  mov    $0xffffffff,%r15d
  jmp    L74
L32:
  lea    D492(%rip),%rdi
  call   <rm@plt>
  jmp    L48
L228:
  mov    $0x18,%edi
  call   <cud@plt>
  jmp    L183
L142:
  test   %r15d,%r15d
  lea    D749(%rip),%rsi
  cmovne %r13,%rsi
  mov    %ebx,%r8d
  mov    %r14d,%ecx
  lea    D574(%rip),%rdx
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L181
L287:
  sub    $0x1,%ebp
  cmp    $0xfffffffe,%ebp
  je     L288
L326:
  test   %ebp,%ebp
  je     L228
  mov    $0x18,%edi
  call   <cuu@plt>
L183:
  test   %ebp,%ebp
  lea    D574(%rip),%rax
  lea    D344(%rip),%rdx
  cmovne %rdx,%rax
  mov    %rax,0x8(%rsp)
  mov    $0x1,%ebx
  lea    D477(%rip),%r12
  lea    D222(%rip),%r13
  jmp    L2
L288:
  mov    $0x0,%eax
  call   <holdit@plt>
  subl   $0xb,0x10(%rsp)
  mov    0x10(%rsp),%eax
  cmp    $0xfffffff6,%eax
  je     L345
L256:
  mov    $0x19,%esi
  mov    0x10(%rsp),%ebx
  sub    %ebx,%esi
  mov    %ebx,%edi
  call   <decstbm@plt>
  mov    $0x2,%edi
  call   <ed@plt>
  mov    %ebx,%eax
  neg    %eax
  lea    0x1a(%rax,%rax,1),%r14d
  mov    $0x0,%ebp
  jmp    L326
L345:
  add    $0x1,%r15d
  cmp    $0x1,%r15d
  je     L357
L74:
  test   %r15d,%r15d
  je     L32
  lea    D492(%rip),%rdi
  call   <sm@plt>
L48:
  movl   $0xc,0x10(%rsp)
  jmp    L256
L357:
  mov    $0x2,%edi
  call   <ed@plt>
  mov    $0x18,%esi
  mov    $0x17,%edi
  call   <decstbm@plt>
  lea    D730(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  lea    D18(%rip),%rsi
  lea    D466(%rip),%rbx
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <holdit@plt>
  mov    $0x2,%edi
  call   <ed@plt>
  lea    D212(%rip),%rdi
  call   <rm@plt>
  mov    $0x1,%esi
  mov    $0x18,%edi
  call   <cup@plt>
  lea    D1(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  lea    D154(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <holdit@plt>
  mov    $0x18,%esi
  mov    $0x1,%edi
  call   <decstbm@plt>
  mov    $0x2,%edi
  call   <ed@plt>
  mov    $0x14,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  lea    D191(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x4,%edi
  call   <cup@plt>
  lea    D807(%rip),%rdi
  call   <sgr@plt>
  lea    D826(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x28,%esi
  mov    $0x4,%edi
  call   <cup@plt>
  lea    D158(%rip),%rdi
  call   <sgr@plt>
  lea    D613(%rip),%rbp
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x6,%esi
  mov    $0x6,%edi
  call   <cup@plt>
  lea    D319(%rip),%rdi
  call   <sgr@plt>
  lea    D145(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x2d,%esi
  mov    $0x6,%edi
  call   <cup@plt>
  lea    D21(%rip),%rdi
  call   <sgr@plt>
  lea    D288(%rip),%rdi
  call   <sgr@plt>
  lea    D634(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  lea    D136(%rip),%rdi
  call   <sgr@plt>
  lea    D14(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x28,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  lea    D306(%rip),%rdi
  call   <sgr@plt>
  lea    D526(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x6,%esi
  mov    $0xa,%edi
  call   <cup@plt>
  lea    D249(%rip),%rdi
  call   <sgr@plt>
  lea    D594(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x2d,%esi
  mov    $0xa,%edi
  call   <cup@plt>
  lea    D232(%rip),%rdi
  call   <sgr@plt>
  lea    D215(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0xc,%edi
  call   <cup@plt>
  lea    D823(%rip),%rdi
  call   <sgr@plt>
  lea    D640(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x28,%esi
  mov    $0xc,%edi
  call   <cup@plt>
  lea    D240(%rip),%rdi
  call   <sgr@plt>
  lea    D276(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x6,%esi
  mov    $0xe,%edi
  call   <cup@plt>
  lea    D799(%rip),%rdi
  call   <sgr@plt>
  lea    D219(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x2d,%esi
  mov    $0xe,%edi
  call   <cup@plt>
  lea    D330(%rip),%rdi
  call   <sgr@plt>
  lea    D554(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x10,%edi
  call   <cup@plt>
  lea    D88(%rip),%rdi
  call   <sgr@plt>
  lea    D384(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x28,%esi
  mov    $0x10,%edi
  call   <cup@plt>
  lea    D379(%rip),%rdi
  call   <sgr@plt>
  lea    D746(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x6,%esi
  mov    $0x12,%edi
  call   <cup@plt>
  lea    D571(%rip),%rdi
  call   <sgr@plt>
  lea    D95(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x2d,%esi
  mov    $0x12,%edi
  call   <cup@plt>
  lea    D711(%rip),%rdi
  call   <sgr@plt>
  lea    D245(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D235(%rip),%rdi
  call   <sgr@plt>
  lea    D92(%rip),%rbx
  mov    %rbx,%rdi
  call   <rm@plt>
  mov    $0x1,%esi
  mov    $0x17,%edi
  call   <cup@plt>
  mov    $0x0,%edi
  call   <el@plt>
  lea    D335(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <holdit@plt>
  mov    %rbx,%rdi
  call   <sm@plt>
  mov    $0x1,%esi
  mov    $0x17,%edi
  call   <cup@plt>
  mov    $0x0,%edi
  call   <el@plt>
  lea    D318(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <holdit@plt>
  mov    %rbx,%rdi
  call   <rm@plt>
  mov    $0x2,%edi
  call   <ed@plt>
  mov    $0xc,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  lea    D207(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x18,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x24,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  lea    D124(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x30,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  lea    D365(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x3c,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  lea    D448(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0xa,%edi
  call   <cup@plt>
  lea    D407(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0xc,%edi
  call   <cup@plt>
  lea    D5(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0xe,%edi
  call   <cup@plt>
  lea    D280(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x10,%edi
  call   <cup@plt>
  lea    D653(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D745(%rip),%r13
  movq   $0x1,0x18(%rsp)
  lea    D655(%rip),%r15
  jmp    L13
L231:
  mov    $0x30,%esi
  mov    $0x0,%edi
  call   <scs@plt>
L73:
  mov    $0x5,%ebx
L294:
  movsbl 0x0(%r13),%ebp
  mov    %ebp,%edi
  call   <putchar@plt>
  sub    $0x1,%ebx
  jne    L294
  mov    $0x0,%eax
  call   <decsc@plt>
  mov    0x8(%rsp),%esi
  mov    0x14(%rsp),%edi
  call   <cup@plt>
  lea    D235(%rip),%rdi
  call   <sgr@plt>
  mov    $0x42,%esi
  mov    $0x0,%edi
  call   <scs@plt>
  mov    $0x41,%edi
  call   <putchar@plt>
  mov    $0x0,%eax
  call   <decrc@plt>
  mov    $0x5,%ebx
L72:
  mov    %ebp,%edi
  call   <putchar@plt>
  sub    $0x1,%ebx
  jne    L72
  add    $0x1,%r12
  cmp    $0x6,%r12
  je     L366
L16:
  mov    %r12d,0x8(%rsp)
  lea    (%r12,%r12,2),%esi
  shl    $0x2,%esi
  mov    0x10(%rsp),%edi
  call   <cup@plt>
  mov    (%r15,%r12,8),%rdi
  call   <sgr@plt>
  test   %r14d,%r14d
  jne    L231
  mov    $0x42,%esi
  mov    $0x0,%edi
  call   <scs@plt>
  jmp    L73
L366:
  addq   $0x1,0x18(%rsp)
  mov    0x18(%rsp),%rax
  add    $0x1,%r13
  cmp    $0x5,%rax
  je     L386
L13:
  mov    0x18(%rsp),%rax
  lea    -0x1(%rax),%r14d
  lea    0x8(%rax,%rax,1),%ecx
  mov    %ecx,0x10(%rsp)
  mov    $0x1,%r12d
  and    $0xfffffffd,%r14d
  mov    %eax,0x14(%rsp)
  jmp    L16
L269:
  mov    %ebx,%r8d
  mov    %r14d,%ecx
  lea    D344(%rip),%rdx
  mov    %r13,%rsi
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L325:
  mov    $0x0,%eax
  call   <ri@plt>
  mov    $0x0,%eax
  call   <ri@plt>
L181:
  add    $0x1,%ebx
  cmp    $0x1f,%ebx
  je     L287
L2:
  test   %ebp,%ebp
  je     L142
  test   %r15d,%r15d
  jne    L269
  mov    %ebx,%r8d
  mov    %r14d,%ecx
  mov    0x8(%rsp),%rdx
  lea    D749(%rip),%rsi
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L325
L386:
  lea    D807(%rip),%rdi
  call   <sgr@plt>
  mov    $0x42,%esi
  mov    $0x0,%edi
  call   <scs@plt>
  mov    $0x1,%esi
  mov    $0x15,%edi
  call   <cup@plt>
  lea    D537(%rip),%rdi
  call   <println@plt>
  lea    D734(%rip),%rdi
  call   <println@plt>
  lea    D248(%rip),%rdi
  call   <println@plt>
  mov    $0x0,%eax
  call   <holdit@plt>
  mov    $0x0,%eax
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D725
type: string
name: disassemble_data
arguments: data_label: D305
type: string
name: disassemble_data
arguments: data_label: D425
type: string
name: disassemble_data
arguments: data_label: D129
type: string
name: disassemble_data
arguments: data_label: D479
type: string
name: disassemble_data
arguments: data_label: D577
type: string
name: disassemble_data
arguments: data_label: D46
type: string
name: disassemble_data
arguments: data_label: D170
type: string
name: disassemble_data
arguments: data_label: D765
type: string
name: disassemble_data
arguments: data_label: D504
type: string
name: disassemble_data
arguments: data_label: D92
type: string
name: disassemble_data
arguments: data_label: D694
type: string
name: disassemble_data
arguments: data_label: D458
type: string
name: disassemble_data
arguments: data_label: D26
type: string
name: disassemble_data
arguments: data_label: D349
type: string
name: disassemble_data
arguments: data_label: D857
type: string
name: disassemble_data
arguments: data_label: D212
type: string
name: disassemble_data
arguments: data_label: D492
type: string
name: disassemble_data
arguments: data_label: D749
type: string
name: disassemble_data
arguments: data_label: D574
type: string
name: disassemble_data
arguments: data_label: D344
type: string
name: disassemble_data
arguments: data_label: D477
type: string
name: disassemble_data
arguments: data_label: D222
type: string
name: disassemble_data
arguments: data_label: D730
type: string
name: disassemble_data
arguments: data_label: D18
type: string
name: disassemble_data
arguments: data_label: D466
type: string
name: disassemble_data
arguments: data_label: D1
type: string
name: disassemble_data
arguments: data_label: D154
type: string
name: disassemble_data
arguments: data_label: D191
type: string
name: disassemble_data
arguments: data_label: D807
type: string
name: disassemble_data
arguments: data_label: D826
type: string
name: disassemble_data
arguments: data_label: D158
type: string
name: disassemble_data
arguments: data_label: D613
type: string
name: disassemble_data
arguments: data_label: D319
type: string
name: disassemble_data
arguments: data_label: D145
type: string
name: disassemble_data
arguments: data_label: D21
type: string
name: disassemble_data
arguments: data_label: D288
type: string
name: disassemble_data
arguments: data_label: D634
type: string
name: disassemble_data
arguments: data_label: D136
type: string
name: disassemble_data
arguments: data_label: D14
type: string
name: disassemble_data
arguments: data_label: D306
type: string
name: disassemble_data
arguments: data_label: D526
type: string
name: disassemble_data
arguments: data_label: D249
type: string
name: disassemble_data
arguments: data_label: D594
type: string
name: disassemble_data
arguments: data_label: D232
type: string
name: disassemble_data
arguments: data_label: D215
type: string
name: disassemble_data
arguments: data_label: D823
type: string
name: disassemble_data
arguments: data_label: D640
type: string
name: disassemble_data
arguments: data_label: D240
type: string
name: disassemble_data
arguments: data_label: D276
type: string
name: disassemble_data
arguments: data_label: D799
type: string
name: disassemble_data
arguments: data_label: D219
type: string
name: disassemble_data
arguments: data_label: D330
type: string
name: disassemble_data
arguments: data_label: D554
type: string
name: disassemble_data
arguments: data_label: D88
type: string
name: disassemble_data
arguments: data_label: D384
type: string
name: disassemble_data
arguments: data_label: D379
type: string
name: disassemble_data
arguments: data_label: D746
type: string
name: disassemble_data
arguments: data_label: D571
type: string
name: disassemble_data
arguments: data_label: D95
type: string
name: disassemble_data
arguments: data_label: D711
type: string
name: disassemble_data
arguments: data_label: D245
type: string
name: disassemble_data
arguments: data_label: D235
type: string
name: disassemble_data
arguments: data_label: D335
type: string
name: disassemble_data
arguments: data_label: D318
type: string
name: disassemble_data
arguments: data_label: D207
type: string
name: disassemble_data
arguments: data_label: D124
type: string
name: disassemble_data
arguments: data_label: D365
type: string
name: disassemble_data
arguments: data_label: D448
type: string
name: disassemble_data
arguments: data_label: D407
type: string
name: disassemble_data
arguments: data_label: D5
type: string
name: disassemble_data
arguments: data_label: D280
type: string
name: disassemble_data
arguments: data_label: D653
type: string
name: disassemble_data
arguments: data_label: D745
type: string
name: disassemble_data
arguments: data_label: D537
type: string
name: disassemble_data
arguments: data_label: D734
type: string
name: disassemble_data
arguments: data_label: D248
type: string

tool: D725: ?7

tool: D305: This should be three identical lines of *'s completely filling

tool: D425: the top of the screen without any empty lines between.

tool: D129: (Test of WRAP AROUND mode setting.)

tool: D479: 	*

tool: D577:      *

tool: D46: Test of TAB setting/resetting. These two lines

tool: D170: should look the same. 

tool: D765: ?3

tool: D504: 1234567890

tool: D92: ?5

tool: D694: 12

tool: D458: dark

tool: D26: light

tool: D349: This is 132 column mode, %s background.

tool: D857: This is 80 column mode, %s background.

tool: D212: ?6

tool: D492: ?4

tool: D749: Jump

tool: D574: up

tool: D344: down

tool: D477: %s scroll %s region %d Line %d


tool: D222: Soft

tool: D730: 
Origin mode test. This line should be at the bottom of the screen.

tool: D18: This line should be the one above the bottom of the screeen. 

tool: D466: %s

tool: D1: Origin mode test. This line should be at the bottom of the screen.

tool: D154: This line should be at the top if the screen. 

tool: D191: Graphic rendition test pattern:

tool: D807: 0

tool: D826: vanilla

tool: D158: 0;1

tool: D613: bold

tool: D319: ;4

tool: D145: underline

tool: D21: ;1

tool: D288: 4

tool: D634: bold underline

tool: D136: 0;5

tool: D14: blink

tool: D306: 0;5;1

tool: D526: bold blink

tool: D249: 0;4;5

tool: D594: underline blink

tool: D232: 0;1;4;5

tool: D215: bold underline blink

tool: D823: 1;4;5;0;7

tool: D640: negative

tool: D240: 0;1;7

tool: D276: bold negative

tool: D799: 0;4;7

tool: D219: underline negative

tool: D330: 0;1;4;7

tool: D554: bold underline negative

tool: D88: 1;4;;5;7

tool: D384: blink negative

tool: D379: 0;1;5;7

tool: D746: bold blink negative

tool: D571: 0;4;5;7

tool: D95: underline blink negative

tool: D711: 0;1;4;5;7

tool: D245: bold underline blink negative

tool: 

tool: D335: Dark background. 

tool: D318: Light background. 

tool: D207: normal

tool: D124: underscored

tool: D365: blinking

tool: D448: reversed

tool: D407: stars:

tool: D5: line:

tool: D280: x'es:

tool: D653: diamonds:

tool: D745: *qx`

tool: D537: Test of the SAVE/RESTORE CURSOR feature. There should

tool: D734: be ten characters of each flavour, and a rectangle

tool: D248: of 5 x 4 A's filling the top left of the screen.

assistant: ```c
tst_screen() {
  int i, j, cset, row, col, down, soft, background;
  static char *tststr = "*qx`";
  static char *attr[5] = {";0", ";1", ";4", ";5", ";7"};
  cup(1, 1);
  sm("?7");
  for (col = 1; col <= 160; col++)
    printf("*");
  rm("?7");
  cup(3, 1);
  for (col = 1; col <= 160; col++)
    printf("*");
  sm("?7");
  cup(5, 1);
  println("This should be three identical lines of *'s completely filling");
  println("the top of the screen without any empty lines between.");
  println("(Test of WRAP AROUND mode setting.)");
  holdit();
  ed(2);
  tbc(3);
  cup(1, 1);
  for (col = 1; col <= 78; col += 3) {
    cuf(3);
    hts();
  }
  cup(1, 4);
  for (col = 4; col <= 78; col += 6) {
    tbc(0);
    cuf(6);
  }
  cup(1, 7);
  tbc(1);
  tbc(2);
  cup(1, 1);
  for (col = 1; col <= 78; col += 6)
    printf("\t*");
  cup(2, 2);
  for (col = 2; col <= 78; col += 6)
    printf("     *");
  cup(4, 1);
  println("Test of TAB setting/resetting. These two lines");
  printf("should look the same. ");
  holdit();
  for (background = 0; background <= 1; background++) {
    if (background)
      rm("?5");
    else
      sm("?5");
    sm("?3");
    ed(2);
    cup(1, 1);
    tbc(3);
    for (col = 1; col <= 132; col += 8) {
      cuf(8);
      hts();
    }
    cup(1, 1);
    for (col = 1; col <= 130; col += 10)
      printf("1234567890");
    printf("12");
    for (row = 3; row <= 20; row++) {
      cup(row, row);
      printf("This is 132 column mode, %s background.", background ? "dark" : "light");
    }
    holdit();
    rm("?3");
    ed(2);
    cup(1, 1);
    for (col = 1; col <= 80; col += 10)
      printf("1234567890");
    for (row = 3; row <= 20; row++) {
      cup(row, row);
      printf("This is 80 column mode, %s background.", background ? "dark" : "light");
    }
    holdit();
  }
  ed(2);
  sm("?6");
  for (soft = -1; soft <= 0; soft++) {
    if (soft)
      sm("?4");
    else
      rm("?4");
    for (row = 12; row >= 1; row -= 11) {
      decstbm(row, 24 - row + 1);
      ed(2);
      for (down = 0; down >= -1; down--) {
        if (down)
          cuu(24);
        else
          cud(24);
        for (i = 1; i <= 30; i++) {
          printf("%s scroll %s region %d Line %d\n", soft ? "Soft" : "Jump", down ? "down" : "up", 2 * (13 - row), i);
          if (down) {
            ri();
            ri();
          }
        }
      }
      holdit();
    }
  }
  ed(2);
  decstbm(23, 24);
  printf("\nOrigin mode test. This line should be at the bottom of the screen.");
  cup(1, 1);
  printf("%s", "This line should be the one above the bottom of the screeen. ");
  holdit();
  ed(2);
  rm("?6");
  cup(24, 1);
  printf("Origin mode test. This line should be at the bottom of the screen.");
  cup(1, 1);
  printf("%s", "This line should be at the top if the screen. ");
  holdit();
  decstbm(1, 24);
  ed(2);
  cup(1, 20);
  printf("Graphic rendition test pattern:");
  cup(4, 1);
  sgr("0");
  printf("vanilla");
  cup(4, 40);
  sgr("0;1");
  printf("bold");
  cup(6, 6);
  sgr(";4");
  printf("underline");
  cup(6, 45);
  sgr(";1");
  sgr("4");
  printf("bold underline");
  cup(8, 1);
  sgr("0;5");
  printf("blink");
  cup(8, 40);
  sgr("0;5;1");
  printf("bold blink");
  cup(10, 6);
  sgr("0;4;5");
  printf("underline blink");
  cup(10, 45);
  sgr("0;1;4;5");
  printf("bold underline blink");
  cup(12, 1);
  sgr("1;4;5;0;7");
  printf("negative");
  cup(12, 40);
  sgr("0;1;7");
  printf("bold negative");
  cup(14, 6);
  sgr("0;4;7");
  printf("underline negative");
  cup(14, 45);
  sgr("0;1;4;7");
  printf("bold underline negative");
  cup(16, 1);
  sgr("1;4;;5;7");
  printf("blink negative");
  cup(16, 40);
  sgr("0;1;5;7");
  printf("bold blink negative");
  cup(18, 6);
  sgr("0;4;5;7");
  printf("underline blink negative");
  cup(18, 45);
  sgr("0;1;4;5;7");
  printf("bold underline blink negative");
  sgr("");
  rm("?5");
  cup(23, 1);
  el(0);
  printf("Dark background. ");
  holdit();
  sm("?5");
  cup(23, 1);
  el(0);
  printf("Light background. ");
  holdit();
  rm("?5");
  ed(2);
  cup(8, 12);
  printf("normal");
  cup(8, 24);
  printf("bold");
  cup(8, 36);
  printf("underscored");
  cup(8, 48);
  printf("blinking");
  cup(8, 60);
  printf("reversed");
  cup(10, 1);
  printf("stars:");
  cup(12, 1);
  printf("line:");
  cup(14, 1);
  printf("x'es:");
  cup(16, 1);
  printf("diamonds:");
  for (cset = 0; cset <= 3; cset++) {
    for (i = 0; i <= 4; i++) {
      cup(10 + 2 * cset, 12 + 12 * i);
      sgr(attr[i]);
      if (cset == 0 || cset == 2)
        scs(0, 'B');
      else
        scs(0, '0');
      for (j = 0; j <= 4; j++) {
        printf("%c", tststr[cset]);
      }
      decsc();
      cup(cset + 1, i + 1);
      sgr("");
      scs(0, 'B');
      printf("A");
      decrc();
      for (j = 0; j <= 4; j++) {
        printf("%c", tststr[cset]);
      }
    }
  }
  sgr("0");
  scs(0, 'B');
  cup(21, 1);
  println("Test of the SAVE/RESTORE CURSOR feature. There should");
  println("be ten characters of each flavour, and a rectangle");
  println("of 5 x 4 A's filling the top left of the screen.");
  holdit();
}
```